aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Documentation/ABI/testing/debugfs-pktcdvd6
-rw-r--r--Documentation/ABI/testing/sysfs-firmware-acpi8
-rw-r--r--Documentation/DocBook/Makefile11
-rw-r--r--Documentation/block/biodoc.txt19
-rw-r--r--Documentation/cgroups/cpuacct.txt18
-rw-r--r--Documentation/cgroups/memory.txt55
-rw-r--r--Documentation/cgroups/resource_counter.txt27
-rw-r--r--Documentation/driver-model/platform.txt59
-rw-r--r--Documentation/feature-removal-schedule.txt9
-rw-r--r--Documentation/filesystems/caching/cachefiles.txt8
-rw-r--r--Documentation/filesystems/pohmelfs/design_notes.txt5
-rw-r--r--Documentation/filesystems/pohmelfs/info.txt21
-rw-r--r--Documentation/filesystems/vfs.txt3
-rw-r--r--Documentation/infiniband/ipoib.txt45
-rw-r--r--Documentation/input/rotary-encoder.txt101
-rw-r--r--Documentation/kbuild/makefiles.txt93
-rw-r--r--Documentation/kernel-parameters.txt78
-rw-r--r--Documentation/laptops/thinkpad-acpi.txt4
-rw-r--r--Documentation/lguest/.gitignore1
-rw-r--r--Documentation/lguest/lguest.txt11
-rw-r--r--Documentation/networking/bonding.txt2
-rw-r--r--Documentation/powerpc/booting-without-of.txt89
-rw-r--r--Documentation/powerpc/dts-bindings/fsl/i2c.txt46
-rw-r--r--Documentation/powerpc/dts-bindings/mtd-physmap.txt80
-rw-r--r--Documentation/sound/alsa/HD-Audio.txt4
-rw-r--r--Documentation/sparse.txt8
-rw-r--r--Documentation/spi/spi-summary6
-rw-r--r--Documentation/sysctl/net.txt2
-rw-r--r--Documentation/tomoyo.txt55
-rw-r--r--Documentation/trace/ftrace.txt (renamed from Documentation/ftrace.txt)0
-rw-r--r--Documentation/trace/kmemtrace.txt (renamed from Documentation/vm/kmemtrace.txt)0
-rw-r--r--Documentation/trace/mmiotrace.txt (renamed from Documentation/tracers/mmiotrace.txt)0
-rw-r--r--Documentation/trace/tracepoints.txt (renamed from Documentation/tracepoints.txt)0
-rw-r--r--Documentation/vm/00-INDEX2
-rw-r--r--Documentation/vm/active_mm.txt83
-rw-r--r--Documentation/vm/unevictable-lru.txt1041
-rw-r--r--MAINTAINERS1733
-rw-r--r--Makefile19
-rw-r--r--arch/Kconfig3
-rw-r--r--arch/alpha/include/asm/percpu.h2
-rw-r--r--arch/alpha/kernel/head.S3
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S2
-rw-r--r--arch/arm/common/vic.c9
-rw-r--r--arch/arm/configs/magician_defconfig6
-rw-r--r--arch/arm/configs/mx1_defconfig (renamed from arch/arm/configs/pcm037_defconfig)534
-rw-r--r--arch/arm/configs/mx27_defconfig (renamed from arch/arm/configs/pcm038_defconfig)354
-rw-r--r--arch/arm/configs/mx3_defconfig (renamed from arch/arm/configs/mx31litekit_defconfig)783
-rw-r--r--arch/arm/configs/s3c2410_defconfig1112
-rw-r--r--arch/arm/include/asm/sizes.h1
-rw-r--r--arch/arm/include/asm/tlb.h25
-rw-r--r--arch/arm/include/asm/unistd.h2
-rw-r--r--arch/arm/kernel/calls.S2
-rw-r--r--arch/arm/kernel/sys_oabi-compat.c20
-rw-r--r--arch/arm/mach-at91/at91rm9200_time.c2
-rw-r--r--arch/arm/mach-at91/at91sam926x_time.c2
-rw-r--r--arch/arm/mach-at91/include/mach/board.h2
-rw-r--r--arch/arm/mach-davinci/time.c2
-rw-r--r--arch/arm/mach-ep93xx/core.c2
-rw-r--r--arch/arm/mach-imx/include/mach/gpio.h1
-rw-r--r--arch/arm/mach-imx/time.c2
-rw-r--r--arch/arm/mach-ixp4xx/common.c2
-rw-r--r--arch/arm/mach-kirkwood/common.c1
-rw-r--r--arch/arm/mach-kirkwood/include/mach/bridge-regs.h42
-rw-r--r--arch/arm/mach-kirkwood/include/mach/debug-macro.S2
-rw-r--r--arch/arm/mach-kirkwood/include/mach/entry-macro.S2
-rw-r--r--arch/arm/mach-kirkwood/include/mach/kirkwood.h53
-rw-r--r--arch/arm/mach-kirkwood/include/mach/system.h3
-rw-r--r--arch/arm/mach-kirkwood/irq.c1
-rw-r--r--arch/arm/mach-loki/addr-map.c1
-rw-r--r--arch/arm/mach-loki/include/mach/bridge-regs.h33
-rw-r--r--arch/arm/mach-loki/include/mach/entry-macro.S2
-rw-r--r--arch/arm/mach-loki/include/mach/loki.h14
-rw-r--r--arch/arm/mach-loki/include/mach/system.h3
-rw-r--r--arch/arm/mach-loki/irq.c1
-rw-r--r--arch/arm/mach-msm/timer.c4
-rw-r--r--arch/arm/mach-mv78xx0/common.c1
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/bridge-regs.h39
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/entry-macro.S2
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/mv78xx0.h42
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/system.h3
-rw-r--r--arch/arm/mach-mv78xx0/irq.c2
-rw-r--r--arch/arm/mach-mx1/mx1ads.c6
-rw-r--r--arch/arm/mach-mx2/clock_imx21.c8
-rw-r--r--arch/arm/mach-mx3/Kconfig2
-rw-r--r--arch/arm/mach-mx3/mx31ads.c4
-rw-r--r--arch/arm/mach-mx3/pcm037.c4
-rw-r--r--arch/arm/mach-mx3/qong.c28
-rw-r--r--arch/arm/mach-netx/time.c2
-rw-r--r--arch/arm/mach-ns9xxx/time-ns9360.c2
-rw-r--r--arch/arm/mach-omap1/clock.c21
-rw-r--r--arch/arm/mach-omap1/time.c2
-rw-r--r--arch/arm/mach-omap2/timer-gp.c2
-rw-r--r--arch/arm/mach-omap2/usb-musb.c8
-rw-r--r--arch/arm/mach-orion5x/addr-map.c2
-rw-r--r--arch/arm/mach-orion5x/include/mach/bridge-regs.h41
-rw-r--r--arch/arm/mach-orion5x/include/mach/entry-macro.S2
-rw-r--r--arch/arm/mach-orion5x/include/mach/orion5x.h68
-rw-r--r--arch/arm/mach-orion5x/include/mach/system.h3
-rw-r--r--arch/arm/mach-orion5x/irq.c2
-rw-r--r--arch/arm/mach-orion5x/mss2-setup.c1
-rw-r--r--arch/arm/mach-orion5x/pci.c1
-rw-r--r--arch/arm/mach-pxa/Kconfig9
-rw-r--r--arch/arm/mach-pxa/Makefile1
-rw-r--r--arch/arm/mach-pxa/cm-x2xx.c2
-rw-r--r--arch/arm/mach-pxa/colibri-pxa300.c11
-rw-r--r--arch/arm/mach-pxa/colibri-pxa320.c10
-rw-r--r--arch/arm/mach-pxa/colibri-pxa3xx.c35
-rw-r--r--arch/arm/mach-pxa/csb701.c5
-rw-r--r--arch/arm/mach-pxa/e740.c2
-rw-r--r--arch/arm/mach-pxa/e750.c2
-rw-r--r--arch/arm/mach-pxa/e800.c2
-rw-r--r--arch/arm/mach-pxa/em-x270.c90
-rw-r--r--arch/arm/mach-pxa/generic.h3
-rw-r--r--arch/arm/mach-pxa/include/mach/audio.h10
-rw-r--r--arch/arm/mach-pxa/include/mach/colibri.h11
-rw-r--r--arch/arm/mach-pxa/include/mach/magician.h4
-rw-r--r--arch/arm/mach-pxa/include/mach/palmasoc.h7
-rw-r--r--arch/arm/mach-pxa/include/mach/palmld.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/palmt5.h2
-rw-r--r--arch/arm/mach-pxa/include/mach/palmte2.h68
-rw-r--r--arch/arm/mach-pxa/include/mach/palmtx.h3
-rw-r--r--arch/arm/mach-pxa/magician.c84
-rw-r--r--arch/arm/mach-pxa/mioa701.c10
-rw-r--r--arch/arm/mach-pxa/palmld.c54
-rw-r--r--arch/arm/mach-pxa/palmt5.c64
-rw-r--r--arch/arm/mach-pxa/palmte2.c466
-rw-r--r--arch/arm/mach-pxa/palmtx.c69
-rw-r--r--arch/arm/mach-pxa/pcm990-baseboard.c6
-rw-r--r--arch/arm/mach-pxa/time.c2
-rw-r--r--arch/arm/mach-pxa/tosa.c2
-rw-r--r--arch/arm/mach-realview/core.c2
-rw-r--r--arch/arm/mach-s3c2412/mach-jive.c5
-rw-r--r--arch/arm/mach-s3c2440/mach-anubis.c2
-rw-r--r--arch/arm/mach-s3c2440/mach-osiris.c1
-rw-r--r--arch/arm/mach-s3c6410/mach-smdk6410.c4
-rw-r--r--arch/arm/mach-versatile/core.c2
-rw-r--r--arch/arm/mm/mmu.c11
-rw-r--r--arch/arm/plat-mxc/include/mach/imx-uart.h2
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx3.h48
-rw-r--r--arch/arm/plat-mxc/include/mach/irqs.h2
-rw-r--r--arch/arm/plat-mxc/include/mach/mx21.h3
-rw-r--r--arch/arm/plat-mxc/irq.c14
-rw-r--r--arch/arm/plat-mxc/time.c2
-rw-r--r--arch/arm/plat-omap/common.c4
-rw-r--r--arch/arm/plat-orion/time.c4
-rw-r--r--arch/arm/plat-s3c/gpio-config.c3
-rw-r--r--arch/arm/plat-s3c/include/plat/devs.h1
-rw-r--r--arch/arm/plat-s3c24xx/adc.c19
-rw-r--r--arch/arm/plat-s3c24xx/gpiolib.c2
-rw-r--r--arch/avr32/kernel/time.c2
-rw-r--r--arch/blackfin/kernel/time-ts.c12
-rw-r--r--arch/frv/include/asm/Kbuild (renamed from include/asm-frv/Kbuild)0
-rw-r--r--arch/frv/include/asm/atomic.h (renamed from include/asm-frv/atomic.h)0
-rw-r--r--arch/frv/include/asm/auxvec.h (renamed from include/asm-frv/auxvec.h)0
-rw-r--r--arch/frv/include/asm/ax88796.h (renamed from include/asm-frv/ax88796.h)0
-rw-r--r--arch/frv/include/asm/bitops.h (renamed from include/asm-frv/bitops.h)0
-rw-r--r--arch/frv/include/asm/bug.h (renamed from include/asm-frv/bug.h)0
-rw-r--r--arch/frv/include/asm/bugs.h (renamed from include/asm-frv/bugs.h)0
-rw-r--r--arch/frv/include/asm/busctl-regs.h (renamed from include/asm-frv/busctl-regs.h)0
-rw-r--r--arch/frv/include/asm/byteorder.h (renamed from include/asm-frv/byteorder.h)0
-rw-r--r--arch/frv/include/asm/cache.h (renamed from include/asm-frv/cache.h)0
-rw-r--r--arch/frv/include/asm/cacheflush.h (renamed from include/asm-frv/cacheflush.h)0
-rw-r--r--arch/frv/include/asm/checksum.h (renamed from include/asm-frv/checksum.h)0
-rw-r--r--arch/frv/include/asm/cpu-irqs.h (renamed from include/asm-frv/cpu-irqs.h)0
-rw-r--r--arch/frv/include/asm/cpumask.h (renamed from include/asm-frv/cpumask.h)0
-rw-r--r--arch/frv/include/asm/cputime.h (renamed from include/asm-frv/cputime.h)0
-rw-r--r--arch/frv/include/asm/current.h (renamed from include/asm-frv/current.h)0
-rw-r--r--arch/frv/include/asm/delay.h (renamed from include/asm-frv/delay.h)0
-rw-r--r--arch/frv/include/asm/device.h (renamed from include/asm-frv/device.h)0
-rw-r--r--arch/frv/include/asm/div64.h (renamed from include/asm-frv/div64.h)0
-rw-r--r--arch/frv/include/asm/dm9000.h (renamed from include/asm-frv/dm9000.h)0
-rw-r--r--arch/frv/include/asm/dma-mapping.h (renamed from include/asm-frv/dma-mapping.h)0
-rw-r--r--arch/frv/include/asm/dma.h (renamed from include/asm-frv/dma.h)0
-rw-r--r--arch/frv/include/asm/elf.h (renamed from include/asm-frv/elf.h)0
-rw-r--r--arch/frv/include/asm/emergency-restart.h (renamed from include/asm-frv/emergency-restart.h)0
-rw-r--r--arch/frv/include/asm/errno.h (renamed from include/asm-frv/errno.h)0
-rw-r--r--arch/frv/include/asm/fb.h (renamed from include/asm-frv/fb.h)0
-rw-r--r--arch/frv/include/asm/fcntl.h (renamed from include/asm-frv/fcntl.h)0
-rw-r--r--arch/frv/include/asm/fpu.h (renamed from include/asm-frv/fpu.h)0
-rw-r--r--arch/frv/include/asm/ftrace.h (renamed from include/asm-frv/ftrace.h)0
-rw-r--r--arch/frv/include/asm/futex.h (renamed from include/asm-frv/futex.h)0
-rw-r--r--arch/frv/include/asm/gdb-stub.h (renamed from include/asm-frv/gdb-stub.h)0
-rw-r--r--arch/frv/include/asm/gpio-regs.h (renamed from include/asm-frv/gpio-regs.h)0
-rw-r--r--arch/frv/include/asm/hardirq.h (renamed from include/asm-frv/hardirq.h)0
-rw-r--r--arch/frv/include/asm/highmem.h (renamed from include/asm-frv/highmem.h)0
-rw-r--r--arch/frv/include/asm/hw_irq.h (renamed from include/asm-frv/hw_irq.h)0
-rw-r--r--arch/frv/include/asm/init.h (renamed from include/asm-frv/init.h)0
-rw-r--r--arch/frv/include/asm/io.h (renamed from include/asm-frv/io.h)0
-rw-r--r--arch/frv/include/asm/ioctl.h (renamed from include/asm-frv/ioctl.h)0
-rw-r--r--arch/frv/include/asm/ioctls.h (renamed from include/asm-frv/ioctls.h)0
-rw-r--r--arch/frv/include/asm/ipcbuf.h (renamed from include/asm-frv/ipcbuf.h)0
-rw-r--r--arch/frv/include/asm/irc-regs.h (renamed from include/asm-frv/irc-regs.h)0
-rw-r--r--arch/frv/include/asm/irq.h (renamed from include/asm-frv/irq.h)0
-rw-r--r--arch/frv/include/asm/irq_regs.h (renamed from include/asm-frv/irq_regs.h)0
-rw-r--r--arch/frv/include/asm/kdebug.h (renamed from include/asm-frv/kdebug.h)0
-rw-r--r--arch/frv/include/asm/kmap_types.h (renamed from include/asm-frv/kmap_types.h)0
-rw-r--r--arch/frv/include/asm/linkage.h (renamed from include/asm-frv/linkage.h)0
-rw-r--r--arch/frv/include/asm/local.h (renamed from include/asm-frv/local.h)0
-rw-r--r--arch/frv/include/asm/math-emu.h (renamed from include/asm-frv/math-emu.h)0
-rw-r--r--arch/frv/include/asm/mb-regs.h (renamed from include/asm-frv/mb-regs.h)0
-rw-r--r--arch/frv/include/asm/mb86943a.h (renamed from include/asm-frv/mb86943a.h)0
-rw-r--r--arch/frv/include/asm/mb93091-fpga-irqs.h (renamed from include/asm-frv/mb93091-fpga-irqs.h)0
-rw-r--r--arch/frv/include/asm/mb93093-fpga-irqs.h (renamed from include/asm-frv/mb93093-fpga-irqs.h)0
-rw-r--r--arch/frv/include/asm/mb93493-irqs.h (renamed from include/asm-frv/mb93493-irqs.h)0
-rw-r--r--arch/frv/include/asm/mb93493-regs.h (renamed from include/asm-frv/mb93493-regs.h)0
-rw-r--r--arch/frv/include/asm/mc146818rtc.h (renamed from include/asm-frv/mc146818rtc.h)0
-rw-r--r--arch/frv/include/asm/mem-layout.h (renamed from include/asm-frv/mem-layout.h)0
-rw-r--r--arch/frv/include/asm/mman.h (renamed from include/asm-frv/mman.h)0
-rw-r--r--arch/frv/include/asm/mmu.h (renamed from include/asm-frv/mmu.h)0
-rw-r--r--arch/frv/include/asm/mmu_context.h (renamed from include/asm-frv/mmu_context.h)0
-rw-r--r--arch/frv/include/asm/module.h (renamed from include/asm-frv/module.h)0
-rw-r--r--arch/frv/include/asm/msgbuf.h (renamed from include/asm-frv/msgbuf.h)0
-rw-r--r--arch/frv/include/asm/mutex.h (renamed from include/asm-frv/mutex.h)0
-rw-r--r--arch/frv/include/asm/page.h (renamed from include/asm-frv/page.h)0
-rw-r--r--arch/frv/include/asm/param.h (renamed from include/asm-frv/param.h)0
-rw-r--r--arch/frv/include/asm/pci.h (renamed from include/asm-frv/pci.h)0
-rw-r--r--arch/frv/include/asm/percpu.h (renamed from include/asm-frv/percpu.h)0
-rw-r--r--arch/frv/include/asm/pgalloc.h (renamed from include/asm-frv/pgalloc.h)0
-rw-r--r--arch/frv/include/asm/pgtable.h (renamed from include/asm-frv/pgtable.h)6
-rw-r--r--arch/frv/include/asm/poll.h (renamed from include/asm-frv/poll.h)0
-rw-r--r--arch/frv/include/asm/posix_types.h (renamed from include/asm-frv/posix_types.h)0
-rw-r--r--arch/frv/include/asm/processor.h (renamed from include/asm-frv/processor.h)0
-rw-r--r--arch/frv/include/asm/ptrace.h (renamed from include/asm-frv/ptrace.h)0
-rw-r--r--arch/frv/include/asm/registers.h (renamed from include/asm-frv/registers.h)0
-rw-r--r--arch/frv/include/asm/resource.h (renamed from include/asm-frv/resource.h)0
-rw-r--r--arch/frv/include/asm/scatterlist.h (renamed from include/asm-frv/scatterlist.h)0
-rw-r--r--arch/frv/include/asm/sections.h (renamed from include/asm-frv/sections.h)0
-rw-r--r--arch/frv/include/asm/segment.h (renamed from include/asm-frv/segment.h)0
-rw-r--r--arch/frv/include/asm/sembuf.h (renamed from include/asm-frv/sembuf.h)0
-rw-r--r--arch/frv/include/asm/serial-regs.h (renamed from include/asm-frv/serial-regs.h)0
-rw-r--r--arch/frv/include/asm/serial.h (renamed from include/asm-frv/serial.h)0
-rw-r--r--arch/frv/include/asm/setup.h (renamed from include/asm-frv/setup.h)0
-rw-r--r--arch/frv/include/asm/shmbuf.h (renamed from include/asm-frv/shmbuf.h)0
-rw-r--r--arch/frv/include/asm/shmparam.h (renamed from include/asm-frv/shmparam.h)0
-rw-r--r--arch/frv/include/asm/sigcontext.h (renamed from include/asm-frv/sigcontext.h)0
-rw-r--r--arch/frv/include/asm/siginfo.h (renamed from include/asm-frv/siginfo.h)0
-rw-r--r--arch/frv/include/asm/signal.h (renamed from include/asm-frv/signal.h)0
-rw-r--r--arch/frv/include/asm/smp.h (renamed from include/asm-frv/smp.h)0
-rw-r--r--arch/frv/include/asm/socket.h (renamed from include/asm-frv/socket.h)0
-rw-r--r--arch/frv/include/asm/sockios.h (renamed from include/asm-frv/sockios.h)0
-rw-r--r--arch/frv/include/asm/spinlock.h (renamed from include/asm-frv/spinlock.h)0
-rw-r--r--arch/frv/include/asm/spr-regs.h (renamed from include/asm-frv/spr-regs.h)0
-rw-r--r--arch/frv/include/asm/stat.h (renamed from include/asm-frv/stat.h)0
-rw-r--r--arch/frv/include/asm/statfs.h (renamed from include/asm-frv/statfs.h)0
-rw-r--r--arch/frv/include/asm/string.h (renamed from include/asm-frv/string.h)0
-rw-r--r--arch/frv/include/asm/suspend.h (renamed from include/asm-frv/suspend.h)0
-rw-r--r--arch/frv/include/asm/swab.h (renamed from include/asm-frv/swab.h)0
-rw-r--r--arch/frv/include/asm/system.h (renamed from include/asm-frv/system.h)0
-rw-r--r--arch/frv/include/asm/termbits.h (renamed from include/asm-frv/termbits.h)0
-rw-r--r--arch/frv/include/asm/termios.h (renamed from include/asm-frv/termios.h)0
-rw-r--r--arch/frv/include/asm/thread_info.h (renamed from include/asm-frv/thread_info.h)6
-rw-r--r--arch/frv/include/asm/timer-regs.h (renamed from include/asm-frv/timer-regs.h)0
-rw-r--r--arch/frv/include/asm/timex.h (renamed from include/asm-frv/timex.h)0
-rw-r--r--arch/frv/include/asm/tlb.h (renamed from include/asm-frv/tlb.h)0
-rw-r--r--arch/frv/include/asm/tlbflush.h (renamed from include/asm-frv/tlbflush.h)0
-rw-r--r--arch/frv/include/asm/topology.h (renamed from include/asm-frv/topology.h)0
-rw-r--r--arch/frv/include/asm/types.h (renamed from include/asm-frv/types.h)0
-rw-r--r--arch/frv/include/asm/uaccess.h (renamed from include/asm-frv/uaccess.h)0
-rw-r--r--arch/frv/include/asm/ucontext.h (renamed from include/asm-frv/ucontext.h)0
-rw-r--r--arch/frv/include/asm/unaligned.h (renamed from include/asm-frv/unaligned.h)0
-rw-r--r--arch/frv/include/asm/unistd.h (renamed from include/asm-frv/unistd.h)0
-rw-r--r--arch/frv/include/asm/user.h (renamed from include/asm-frv/user.h)0
-rw-r--r--arch/frv/include/asm/vga.h (renamed from include/asm-frv/vga.h)0
-rw-r--r--arch/frv/include/asm/virtconvert.h (renamed from include/asm-frv/virtconvert.h)0
-rw-r--r--arch/frv/include/asm/xor.h (renamed from include/asm-frv/xor.h)0
-rw-r--r--arch/frv/kernel/head.S3
-rw-r--r--arch/frv/kernel/setup.c1
-rw-r--r--arch/frv/kernel/vmlinux.lds.S2
-rw-r--r--arch/frv/mb93090-mb00/pci-vdk.c63
-rw-r--r--arch/h8300/include/asm/timer.h (renamed from include/asm-h8300/timer.h)0
-rw-r--r--arch/ia64/include/asm/paravirt_privop.h2
-rw-r--r--arch/ia64/include/asm/smp.h2
-rw-r--r--arch/ia64/include/asm/unistd.h4
-rw-r--r--arch/ia64/kernel/cyclone.c2
-rw-r--r--arch/ia64/kernel/entry.S2
-rw-r--r--arch/ia64/kernel/pci-swiotlb.c2
-rw-r--r--arch/ia64/kernel/smp.c14
-rw-r--r--arch/ia64/kernel/time.c4
-rw-r--r--arch/ia64/kvm/kvm-ia64.c14
-rw-r--r--arch/ia64/sn/kernel/sn2/timer.c2
-rw-r--r--arch/m32r/include/asm/Kbuild (renamed from include/asm-m32r/Kbuild)0
-rw-r--r--arch/m32r/include/asm/addrspace.h (renamed from include/asm-m32r/addrspace.h)0
-rw-r--r--arch/m32r/include/asm/assembler.h (renamed from include/asm-m32r/assembler.h)0
-rw-r--r--arch/m32r/include/asm/atomic.h (renamed from include/asm-m32r/atomic.h)0
-rw-r--r--arch/m32r/include/asm/auxvec.h (renamed from include/asm-m32r/auxvec.h)0
-rw-r--r--arch/m32r/include/asm/bitops.h (renamed from include/asm-m32r/bitops.h)0
-rw-r--r--arch/m32r/include/asm/bug.h (renamed from include/asm-m32r/bug.h)0
-rw-r--r--arch/m32r/include/asm/bugs.h (renamed from include/asm-m32r/bugs.h)0
-rw-r--r--arch/m32r/include/asm/byteorder.h (renamed from include/asm-m32r/byteorder.h)0
-rw-r--r--arch/m32r/include/asm/cache.h (renamed from include/asm-m32r/cache.h)0
-rw-r--r--arch/m32r/include/asm/cachectl.h (renamed from include/asm-m32r/cachectl.h)0
-rw-r--r--arch/m32r/include/asm/cacheflush.h (renamed from include/asm-m32r/cacheflush.h)0
-rw-r--r--arch/m32r/include/asm/checksum.h (renamed from include/asm-m32r/checksum.h)0
-rw-r--r--arch/m32r/include/asm/cputime.h (renamed from include/asm-m32r/cputime.h)0
-rw-r--r--arch/m32r/include/asm/current.h (renamed from include/asm-m32r/current.h)0
-rw-r--r--arch/m32r/include/asm/delay.h (renamed from include/asm-m32r/delay.h)0
-rw-r--r--arch/m32r/include/asm/device.h (renamed from include/asm-m32r/device.h)0
-rw-r--r--arch/m32r/include/asm/div64.h (renamed from include/asm-m32r/div64.h)0
-rw-r--r--arch/m32r/include/asm/dma.h (renamed from include/asm-m32r/dma.h)0
-rw-r--r--arch/m32r/include/asm/elf.h (renamed from include/asm-m32r/elf.h)0
-rw-r--r--arch/m32r/include/asm/emergency-restart.h (renamed from include/asm-m32r/emergency-restart.h)0
-rw-r--r--arch/m32r/include/asm/errno.h (renamed from include/asm-m32r/errno.h)0
-rw-r--r--arch/m32r/include/asm/fb.h (renamed from include/asm-m32r/fb.h)0
-rw-r--r--arch/m32r/include/asm/fcntl.h (renamed from include/asm-m32r/fcntl.h)0
-rw-r--r--arch/m32r/include/asm/flat.h (renamed from include/asm-m32r/flat.h)0
-rw-r--r--arch/m32r/include/asm/ftrace.h (renamed from include/asm-m32r/ftrace.h)0
-rw-r--r--arch/m32r/include/asm/futex.h (renamed from include/asm-m32r/futex.h)0
-rw-r--r--arch/m32r/include/asm/hardirq.h (renamed from include/asm-m32r/hardirq.h)0
-rw-r--r--arch/m32r/include/asm/hw_irq.h (renamed from include/asm-m32r/hw_irq.h)0
-rw-r--r--arch/m32r/include/asm/io.h (renamed from include/asm-m32r/io.h)0
-rw-r--r--arch/m32r/include/asm/ioctl.h (renamed from include/asm-m32r/ioctl.h)0
-rw-r--r--arch/m32r/include/asm/ioctls.h (renamed from include/asm-m32r/ioctls.h)0
-rw-r--r--arch/m32r/include/asm/ipcbuf.h (renamed from include/asm-m32r/ipcbuf.h)0
-rw-r--r--arch/m32r/include/asm/irq.h (renamed from include/asm-m32r/irq.h)0
-rw-r--r--arch/m32r/include/asm/irq_regs.h (renamed from include/asm-m32r/irq_regs.h)0
-rw-r--r--arch/m32r/include/asm/kdebug.h (renamed from include/asm-m32r/kdebug.h)0
-rw-r--r--arch/m32r/include/asm/kmap_types.h (renamed from include/asm-m32r/kmap_types.h)0
-rw-r--r--arch/m32r/include/asm/linkage.h (renamed from include/asm-m32r/linkage.h)0
-rw-r--r--arch/m32r/include/asm/local.h (renamed from include/asm-m32r/local.h)0
-rw-r--r--arch/m32r/include/asm/m32102.h (renamed from include/asm-m32r/m32102.h)0
-rw-r--r--arch/m32r/include/asm/m32104ut/m32104ut_pld.h (renamed from include/asm-m32r/m32104ut/m32104ut_pld.h)0
-rw-r--r--arch/m32r/include/asm/m32700ut/m32700ut_lan.h (renamed from include/asm-m32r/m32700ut/m32700ut_lan.h)0
-rw-r--r--arch/m32r/include/asm/m32700ut/m32700ut_lcd.h (renamed from include/asm-m32r/m32700ut/m32700ut_lcd.h)0
-rw-r--r--arch/m32r/include/asm/m32700ut/m32700ut_pld.h (renamed from include/asm-m32r/m32700ut/m32700ut_pld.h)0
-rw-r--r--arch/m32r/include/asm/m32r.h (renamed from include/asm-m32r/m32r.h)0
-rw-r--r--arch/m32r/include/asm/m32r_mp_fpga.h (renamed from include/asm-m32r/m32r_mp_fpga.h)0
-rw-r--r--arch/m32r/include/asm/mappi2/mappi2_pld.h (renamed from include/asm-m32r/mappi2/mappi2_pld.h)0
-rw-r--r--arch/m32r/include/asm/mappi3/mappi3_pld.h (renamed from include/asm-m32r/mappi3/mappi3_pld.h)0
-rw-r--r--arch/m32r/include/asm/mc146818rtc.h (renamed from include/asm-m32r/mc146818rtc.h)0
-rw-r--r--arch/m32r/include/asm/mman.h (renamed from include/asm-m32r/mman.h)0
-rw-r--r--arch/m32r/include/asm/mmu.h (renamed from include/asm-m32r/mmu.h)0
-rw-r--r--arch/m32r/include/asm/mmu_context.h (renamed from include/asm-m32r/mmu_context.h)0
-rw-r--r--arch/m32r/include/asm/mmzone.h (renamed from include/asm-m32r/mmzone.h)0
-rw-r--r--arch/m32r/include/asm/module.h (renamed from include/asm-m32r/module.h)0
-rw-r--r--arch/m32r/include/asm/msgbuf.h (renamed from include/asm-m32r/msgbuf.h)0
-rw-r--r--arch/m32r/include/asm/mutex.h (renamed from include/asm-m32r/mutex.h)0
-rw-r--r--arch/m32r/include/asm/opsput/opsput_lan.h (renamed from include/asm-m32r/opsput/opsput_lan.h)0
-rw-r--r--arch/m32r/include/asm/opsput/opsput_lcd.h (renamed from include/asm-m32r/opsput/opsput_lcd.h)0
-rw-r--r--arch/m32r/include/asm/opsput/opsput_pld.h (renamed from include/asm-m32r/opsput/opsput_pld.h)0
-rw-r--r--arch/m32r/include/asm/page.h (renamed from include/asm-m32r/page.h)0
-rw-r--r--arch/m32r/include/asm/param.h (renamed from include/asm-m32r/param.h)0
-rw-r--r--arch/m32r/include/asm/pci.h (renamed from include/asm-m32r/pci.h)0
-rw-r--r--arch/m32r/include/asm/percpu.h (renamed from include/asm-m32r/percpu.h)0
-rw-r--r--arch/m32r/include/asm/pgalloc.h (renamed from include/asm-m32r/pgalloc.h)0
-rw-r--r--arch/m32r/include/asm/pgtable-2level.h (renamed from include/asm-m32r/pgtable-2level.h)0
-rw-r--r--arch/m32r/include/asm/pgtable.h (renamed from include/asm-m32r/pgtable.h)0
-rw-r--r--arch/m32r/include/asm/poll.h (renamed from include/asm-m32r/poll.h)0
-rw-r--r--arch/m32r/include/asm/posix_types.h (renamed from include/asm-m32r/posix_types.h)0
-rw-r--r--arch/m32r/include/asm/processor.h (renamed from include/asm-m32r/processor.h)0
-rw-r--r--arch/m32r/include/asm/ptrace.h (renamed from include/asm-m32r/ptrace.h)0
-rw-r--r--arch/m32r/include/asm/resource.h (renamed from include/asm-m32r/resource.h)0
-rw-r--r--arch/m32r/include/asm/rtc.h (renamed from include/asm-m32r/rtc.h)0
-rw-r--r--arch/m32r/include/asm/s1d13806.h (renamed from include/asm-m32r/s1d13806.h)0
-rw-r--r--arch/m32r/include/asm/scatterlist.h (renamed from include/asm-m32r/scatterlist.h)0
-rw-r--r--arch/m32r/include/asm/sections.h (renamed from include/asm-m32r/sections.h)0
-rw-r--r--arch/m32r/include/asm/segment.h (renamed from include/asm-m32r/segment.h)0
-rw-r--r--arch/m32r/include/asm/sembuf.h (renamed from include/asm-m32r/sembuf.h)0
-rw-r--r--arch/m32r/include/asm/serial.h (renamed from include/asm-m32r/serial.h)0
-rw-r--r--arch/m32r/include/asm/setup.h (renamed from include/asm-m32r/setup.h)0
-rw-r--r--arch/m32r/include/asm/shmbuf.h (renamed from include/asm-m32r/shmbuf.h)0
-rw-r--r--arch/m32r/include/asm/shmparam.h (renamed from include/asm-m32r/shmparam.h)0
-rw-r--r--arch/m32r/include/asm/sigcontext.h (renamed from include/asm-m32r/sigcontext.h)0
-rw-r--r--arch/m32r/include/asm/siginfo.h (renamed from include/asm-m32r/siginfo.h)0
-rw-r--r--arch/m32r/include/asm/signal.h (renamed from include/asm-m32r/signal.h)0
-rw-r--r--arch/m32r/include/asm/smp.h (renamed from include/asm-m32r/smp.h)0
-rw-r--r--arch/m32r/include/asm/socket.h (renamed from include/asm-m32r/socket.h)0
-rw-r--r--arch/m32r/include/asm/sockios.h (renamed from include/asm-m32r/sockios.h)0
-rw-r--r--arch/m32r/include/asm/spinlock.h (renamed from include/asm-m32r/spinlock.h)0
-rw-r--r--arch/m32r/include/asm/spinlock_types.h (renamed from include/asm-m32r/spinlock_types.h)0
-rw-r--r--arch/m32r/include/asm/stat.h (renamed from include/asm-m32r/stat.h)0
-rw-r--r--arch/m32r/include/asm/statfs.h (renamed from include/asm-m32r/statfs.h)0
-rw-r--r--arch/m32r/include/asm/string.h (renamed from include/asm-m32r/string.h)0
-rw-r--r--arch/m32r/include/asm/swab.h (renamed from include/asm-m32r/swab.h)0
-rw-r--r--arch/m32r/include/asm/syscall.h (renamed from include/asm-m32r/syscall.h)0
-rw-r--r--arch/m32r/include/asm/system.h (renamed from include/asm-m32r/system.h)0
-rw-r--r--arch/m32r/include/asm/termbits.h (renamed from include/asm-m32r/termbits.h)0
-rw-r--r--arch/m32r/include/asm/termios.h (renamed from include/asm-m32r/termios.h)0
-rw-r--r--arch/m32r/include/asm/thread_info.h (renamed from include/asm-m32r/thread_info.h)0
-rw-r--r--arch/m32r/include/asm/timex.h (renamed from include/asm-m32r/timex.h)0
-rw-r--r--arch/m32r/include/asm/tlb.h (renamed from include/asm-m32r/tlb.h)0
-rw-r--r--arch/m32r/include/asm/tlbflush.h (renamed from include/asm-m32r/tlbflush.h)0
-rw-r--r--arch/m32r/include/asm/topology.h (renamed from include/asm-m32r/topology.h)0
-rw-r--r--arch/m32r/include/asm/types.h (renamed from include/asm-m32r/types.h)0
-rw-r--r--arch/m32r/include/asm/uaccess.h (renamed from include/asm-m32r/uaccess.h)0
-rw-r--r--arch/m32r/include/asm/ucontext.h (renamed from include/asm-m32r/ucontext.h)0
-rw-r--r--arch/m32r/include/asm/unaligned.h (renamed from include/asm-m32r/unaligned.h)0
-rw-r--r--arch/m32r/include/asm/unistd.h (renamed from include/asm-m32r/unistd.h)0
-rw-r--r--arch/m32r/include/asm/user.h (renamed from include/asm-m32r/user.h)0
-rw-r--r--arch/m32r/include/asm/vga.h (renamed from include/asm-m32r/vga.h)0
-rw-r--r--arch/m32r/include/asm/xor.h (renamed from include/asm-m32r/xor.h)0
-rw-r--r--arch/m32r/kernel/head.S2
-rw-r--r--arch/m32r/kernel/vmlinux.lds.S2
-rw-r--r--arch/m68k/configs/amiga_defconfig163
-rw-r--r--arch/m68k/configs/apollo_defconfig120
-rw-r--r--arch/m68k/configs/atari_defconfig155
-rw-r--r--arch/m68k/configs/bvme6000_defconfig119
-rw-r--r--arch/m68k/configs/hp300_defconfig120
-rw-r--r--arch/m68k/configs/mac_defconfig125
-rw-r--r--arch/m68k/configs/multi_defconfig157
-rw-r--r--arch/m68k/configs/mvme147_defconfig119
-rw-r--r--arch/m68k/configs/mvme16x_defconfig119
-rw-r--r--arch/m68k/configs/q40_defconfig122
-rw-r--r--arch/m68k/configs/sun3_defconfig120
-rw-r--r--arch/m68k/configs/sun3x_defconfig120
-rw-r--r--arch/m68k/include/asm/unistd.h4
-rw-r--r--arch/m68k/kernel/entry.S2
-rw-r--r--arch/m68k/kernel/head.S2
-rw-r--r--arch/m68k/kernel/sun3-head.S2
-rw-r--r--arch/m68k/kernel/vmlinux-std.lds2
-rw-r--r--arch/m68k/kernel/vmlinux-sun3.lds2
-rw-r--r--arch/m68knommu/Kconfig1
-rw-r--r--arch/m68knommu/configs/m5208evb_defconfig163
-rw-r--r--arch/m68knommu/configs/m5249evb_defconfig268
-rw-r--r--arch/m68knommu/configs/m5272c3_defconfig (renamed from arch/arm/configs/imx27ads_defconfig)597
-rw-r--r--arch/m68knommu/configs/m5275evb_defconfig167
-rw-r--r--arch/m68knommu/configs/m5307c3_defconfig231
-rw-r--r--arch/m68knommu/configs/m5407c3_defconfig179
-rw-r--r--arch/m68knommu/kernel/asm-offsets.c6
-rw-r--r--arch/m68knommu/kernel/dma.c37
-rw-r--r--arch/m68knommu/kernel/syscalltable.S2
-rw-r--r--arch/m68knommu/kernel/vmlinux.lds.S2
-rw-r--r--arch/m68knommu/platform/527x/config.c5
-rw-r--r--arch/m68knommu/platform/68328/timers.c2
-rw-r--r--arch/m68knommu/platform/coldfire/dma_timer.c2
-rw-r--r--arch/m68knommu/platform/coldfire/pit.c2
-rw-r--r--arch/m68knommu/platform/coldfire/timers.c2
-rw-r--r--arch/microblaze/Kconfig141
-rw-r--r--arch/microblaze/Kconfig.debug26
-rw-r--r--arch/microblaze/Makefile67
-rw-r--r--arch/microblaze/boot/Makefile17
-rw-r--r--arch/microblaze/configs/nommu_defconfig (renamed from arch/arm/configs/mx31ads_defconfig)561
-rw-r--r--arch/microblaze/include/asm/Kbuild26
-rw-r--r--arch/microblaze/include/asm/atomic.h123
-rw-r--r--arch/microblaze/include/asm/auxvec.h1
-rw-r--r--arch/microblaze/include/asm/bitops.h27
-rw-r--r--arch/microblaze/include/asm/bug.h15
-rw-r--r--arch/microblaze/include/asm/bugs.h17
-rw-r--r--arch/microblaze/include/asm/byteorder.h6
-rw-r--r--arch/microblaze/include/asm/cache.h40
-rw-r--r--arch/microblaze/include/asm/cacheflush.h85
-rw-r--r--arch/microblaze/include/asm/checksum.h98
-rw-r--r--arch/microblaze/include/asm/clinkage.h1
-rw-r--r--arch/microblaze/include/asm/cpuinfo.h102
-rw-r--r--arch/microblaze/include/asm/cputable.h1
-rw-r--r--arch/microblaze/include/asm/cputime.h (renamed from include/asm-mn10300/cputime.h)0
-rw-r--r--arch/microblaze/include/asm/current.h21
-rw-r--r--arch/microblaze/include/asm/delay.h72
-rw-r--r--arch/microblaze/include/asm/device.h21
-rw-r--r--arch/microblaze/include/asm/div64.h1
-rw-r--r--arch/microblaze/include/asm/dma-mapping.h129
-rw-r--r--arch/microblaze/include/asm/dma.h16
-rw-r--r--arch/microblaze/include/asm/elf.h30
-rw-r--r--arch/microblaze/include/asm/emergency-restart.h (renamed from include/asm-mn10300/emergency-restart.h)0
-rw-r--r--arch/microblaze/include/asm/entry.h37
-rw-r--r--arch/microblaze/include/asm/errno.h (renamed from include/asm-mn10300/errno.h)0
-rw-r--r--arch/microblaze/include/asm/exceptions.h99
-rw-r--r--arch/microblaze/include/asm/fcntl.h (renamed from include/asm-mn10300/fcntl.h)0
-rw-r--r--arch/microblaze/include/asm/flat.h90
-rw-r--r--arch/microblaze/include/asm/ftrace.h1
-rw-r--r--arch/microblaze/include/asm/futex.h (renamed from include/asm-mn10300/futex.h)0
-rw-r--r--arch/microblaze/include/asm/gpio.h56
-rw-r--r--arch/microblaze/include/asm/hardirq.h29
-rw-r--r--arch/microblaze/include/asm/hw_irq.h1
-rw-r--r--arch/microblaze/include/asm/io.h208
-rw-r--r--arch/microblaze/include/asm/ioctl.h (renamed from include/asm-mn10300/ioctl.h)0
-rw-r--r--arch/microblaze/include/asm/ioctls.h91
-rw-r--r--arch/microblaze/include/asm/ipc.h (renamed from include/asm-mn10300/ipc.h)0
-rw-r--r--arch/microblaze/include/asm/ipcbuf.h36
-rw-r--r--arch/microblaze/include/asm/irq.h47
-rw-r--r--arch/microblaze/include/asm/irq_regs.h1
-rw-r--r--arch/microblaze/include/asm/irqflags.h123
-rw-r--r--arch/microblaze/include/asm/kdebug.h1
-rw-r--r--arch/microblaze/include/asm/kmap_types.h29
-rw-r--r--arch/microblaze/include/asm/linkage.h15
-rw-r--r--arch/microblaze/include/asm/lmb.h17
-rw-r--r--arch/microblaze/include/asm/local.h (renamed from include/asm-mn10300/local.h)0
-rw-r--r--arch/microblaze/include/asm/mman.h25
-rw-r--r--arch/microblaze/include/asm/mmu.h19
-rw-r--r--arch/microblaze/include/asm/mmu_context.h21
-rw-r--r--arch/microblaze/include/asm/module.h37
-rw-r--r--arch/microblaze/include/asm/msgbuf.h31
-rw-r--r--arch/microblaze/include/asm/mutex.h1
-rw-r--r--arch/microblaze/include/asm/namei.h22
-rw-r--r--arch/microblaze/include/asm/of_device.h45
-rw-r--r--arch/microblaze/include/asm/of_platform.h64
-rw-r--r--arch/microblaze/include/asm/page.h140
-rw-r--r--arch/microblaze/include/asm/param.h30
-rw-r--r--arch/microblaze/include/asm/pci-bridge.h1
-rw-r--r--arch/microblaze/include/asm/pci.h1
-rw-r--r--arch/microblaze/include/asm/percpu.h (renamed from include/asm-mn10300/percpu.h)0
-rw-r--r--arch/microblaze/include/asm/pgalloc.h14
-rw-r--r--arch/microblaze/include/asm/pgtable.h54
-rw-r--r--arch/microblaze/include/asm/poll.h (renamed from include/asm-mn10300/poll.h)0
-rw-r--r--arch/microblaze/include/asm/posix_types.h73
-rw-r--r--arch/microblaze/include/asm/processor.h88
-rw-r--r--arch/microblaze/include/asm/prom.h313
-rw-r--r--arch/microblaze/include/asm/ptrace.h68
-rw-r--r--arch/microblaze/include/asm/pvr.h209
-rw-r--r--arch/microblaze/include/asm/registers.h33
-rw-r--r--arch/microblaze/include/asm/resource.h (renamed from include/asm-mn10300/resource.h)0
-rw-r--r--arch/microblaze/include/asm/scatterlist.h28
-rw-r--r--arch/microblaze/include/asm/sections.h25
-rw-r--r--arch/microblaze/include/asm/segment.h43
-rw-r--r--arch/microblaze/include/asm/selfmod.h24
-rw-r--r--arch/microblaze/include/asm/sembuf.h34
-rw-r--r--arch/microblaze/include/asm/serial.h14
-rw-r--r--arch/microblaze/include/asm/setup.h44
-rw-r--r--arch/microblaze/include/asm/shmbuf.h42
-rw-r--r--arch/microblaze/include/asm/shmparam.h6
-rw-r--r--arch/microblaze/include/asm/sigcontext.h20
-rw-r--r--arch/microblaze/include/asm/siginfo.h15
-rw-r--r--arch/microblaze/include/asm/signal.h165
-rw-r--r--arch/microblaze/include/asm/socket.h69
-rw-r--r--arch/microblaze/include/asm/sockios.h23
-rw-r--r--arch/microblaze/include/asm/stat.h73
-rw-r--r--arch/microblaze/include/asm/statfs.h (renamed from include/asm-mn10300/statfs.h)0
-rw-r--r--arch/microblaze/include/asm/string.h24
-rw-r--r--arch/microblaze/include/asm/swab.h8
-rw-r--r--arch/microblaze/include/asm/syscalls.h45
-rw-r--r--arch/microblaze/include/asm/system.h91
-rw-r--r--arch/microblaze/include/asm/termbits.h203
-rw-r--r--arch/microblaze/include/asm/termios.h88
-rw-r--r--arch/microblaze/include/asm/thread_info.h159
-rw-r--r--arch/microblaze/include/asm/timex.h18
-rw-r--r--arch/microblaze/include/asm/tlb.h16
-rw-r--r--arch/microblaze/include/asm/tlbflush.h20
-rw-r--r--arch/microblaze/include/asm/topology.h11
-rw-r--r--arch/microblaze/include/asm/types.h38
-rw-r--r--arch/microblaze/include/asm/uaccess.h134
-rw-r--r--arch/microblaze/include/asm/ucontext.h22
-rw-r--r--arch/microblaze/include/asm/unaligned.h22
-rw-r--r--arch/microblaze/include/asm/unistd.h423
-rw-r--r--arch/microblaze/include/asm/user.h1
-rw-r--r--arch/microblaze/include/asm/vga.h1
-rw-r--r--arch/microblaze/include/asm/xor.h (renamed from include/asm-mn10300/xor.h)0
-rw-r--r--arch/microblaze/kernel/Makefile19
-rw-r--r--arch/microblaze/kernel/asm-offsets.c115
-rw-r--r--arch/microblaze/kernel/cpu/Makefile8
-rw-r--r--arch/microblaze/kernel/cpu/cache.c255
-rw-r--r--arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c106
-rw-r--r--arch/microblaze/kernel/cpu/cpuinfo-static.c144
-rw-r--r--arch/microblaze/kernel/cpu/cpuinfo.c86
-rw-r--r--arch/microblaze/kernel/cpu/mb.c148
-rw-r--r--arch/microblaze/kernel/cpu/pvr.c81
-rw-r--r--arch/microblaze/kernel/early_printk.c107
-rw-r--r--arch/microblaze/kernel/entry-nommu.S596
-rw-r--r--arch/microblaze/kernel/exceptions.c124
-rw-r--r--arch/microblaze/kernel/head.S56
-rw-r--r--arch/microblaze/kernel/heartbeat.c67
-rw-r--r--arch/microblaze/kernel/hw_exception_handler.S458
-rw-r--r--arch/microblaze/kernel/init_task.c29
-rw-r--r--arch/microblaze/kernel/intc.c172
-rw-r--r--arch/microblaze/kernel/irq.c104
-rw-r--r--arch/microblaze/kernel/microblaze_ksyms.c47
-rw-r--r--arch/microblaze/kernel/module.c151
-rw-r--r--arch/microblaze/kernel/of_device.c113
-rw-r--r--arch/microblaze/kernel/of_platform.c201
-rw-r--r--arch/microblaze/kernel/process.c190
-rw-r--r--arch/microblaze/kernel/prom.c1146
-rw-r--r--arch/microblaze/kernel/prom_parse.c1025
-rw-r--r--arch/microblaze/kernel/ptrace.c181
-rw-r--r--arch/microblaze/kernel/selfmod.c81
-rw-r--r--arch/microblaze/kernel/setup.c199
-rw-r--r--arch/microblaze/kernel/signal.c543
-rw-r--r--arch/microblaze/kernel/sys_microblaze.c225
-rw-r--r--arch/microblaze/kernel/syscall_table.S367
-rw-r--r--arch/microblaze/kernel/timer.c262
-rw-r--r--arch/microblaze/kernel/traps.c107
-rw-r--r--arch/microblaze/kernel/vmlinux.lds.S163
-rw-r--r--arch/microblaze/lib/Makefile13
-rw-r--r--arch/microblaze/lib/checksum.c163
-rw-r--r--arch/microblaze/lib/fastcopy.S662
-rw-r--r--arch/microblaze/lib/memcpy.c161
-rw-r--r--arch/microblaze/lib/memmove.c175
-rw-r--r--arch/microblaze/lib/memset.c82
-rw-r--r--arch/microblaze/lib/uaccess.c41
-rw-r--r--arch/microblaze/mm/Makefile5
-rw-r--r--arch/microblaze/mm/init.c201
-rw-r--r--arch/microblaze/platform/Kconfig.platform85
-rw-r--r--arch/microblaze/platform/Makefile6
-rw-r--r--arch/microblaze/platform/generic/Kconfig.auto62
-rw-r--r--arch/microblaze/platform/generic/Makefile3
-rw-r--r--arch/microblaze/platform/generic/system.dts332
-rw-r--r--arch/microblaze/platform/platform.c31
-rw-r--r--arch/mips/include/asm/mach-rc32434/gpio.h3
-rw-r--r--arch/mips/kernel/cevt-txx9.c2
-rw-r--r--arch/mips/kernel/csrc-bcm1480.c2
-rw-r--r--arch/mips/kernel/csrc-ioasic.c6
-rw-r--r--arch/mips/kernel/csrc-r4k.c2
-rw-r--r--arch/mips/kernel/csrc-sb1250.c2
-rw-r--r--arch/mips/kernel/i8253.c2
-rw-r--r--arch/mips/nxp/pnx8550/common/time.c2
-rw-r--r--arch/mips/rb532/devices.c19
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c2
-rw-r--r--arch/mn10300/Kconfig2
-rw-r--r--arch/mn10300/Makefile40
-rw-r--r--arch/mn10300/configs/asb2303_defconfig160
-rw-r--r--arch/mn10300/include/asm/Kbuild (renamed from include/asm-mn10300/Kbuild)0
-rw-r--r--arch/mn10300/include/asm/atomic.h (renamed from include/asm-mn10300/atomic.h)0
-rw-r--r--arch/mn10300/include/asm/auxvec.h (renamed from include/asm-mn10300/auxvec.h)0
-rw-r--r--arch/mn10300/include/asm/bitops.h (renamed from include/asm-mn10300/bitops.h)0
-rw-r--r--arch/mn10300/include/asm/bug.h (renamed from include/asm-mn10300/bug.h)10
-rw-r--r--arch/mn10300/include/asm/bugs.h (renamed from include/asm-mn10300/bugs.h)0
-rw-r--r--arch/mn10300/include/asm/busctl-regs.h (renamed from include/asm-mn10300/busctl-regs.h)0
-rw-r--r--arch/mn10300/include/asm/byteorder.h (renamed from include/asm-mn10300/byteorder.h)0
-rw-r--r--arch/mn10300/include/asm/cache.h (renamed from include/asm-mn10300/cache.h)2
-rw-r--r--arch/mn10300/include/asm/cacheflush.h (renamed from include/asm-mn10300/cacheflush.h)0
-rw-r--r--arch/mn10300/include/asm/checksum.h (renamed from include/asm-mn10300/checksum.h)0
-rw-r--r--arch/mn10300/include/asm/cpu-regs.h (renamed from include/asm-mn10300/cpu-regs.h)0
-rw-r--r--arch/mn10300/include/asm/cputime.h1
-rw-r--r--arch/mn10300/include/asm/current.h (renamed from include/asm-mn10300/current.h)0
-rw-r--r--arch/mn10300/include/asm/delay.h (renamed from include/asm-mn10300/delay.h)0
-rw-r--r--arch/mn10300/include/asm/device.h (renamed from include/asm-mn10300/device.h)0
-rw-r--r--arch/mn10300/include/asm/div64.h (renamed from include/asm-mn10300/div64.h)0
-rw-r--r--arch/mn10300/include/asm/dma-mapping.h (renamed from include/asm-mn10300/dma-mapping.h)0
-rw-r--r--arch/mn10300/include/asm/dma.h (renamed from include/asm-mn10300/dma.h)0
-rw-r--r--arch/mn10300/include/asm/dmactl-regs.h (renamed from include/asm-mn10300/dmactl-regs.h)0
-rw-r--r--arch/mn10300/include/asm/elf.h (renamed from include/asm-mn10300/elf.h)0
-rw-r--r--arch/mn10300/include/asm/emergency-restart.h1
-rw-r--r--arch/mn10300/include/asm/errno.h1
-rw-r--r--arch/mn10300/include/asm/exceptions.h (renamed from include/asm-mn10300/exceptions.h)0
-rw-r--r--arch/mn10300/include/asm/fb.h (renamed from include/asm-mn10300/fb.h)0
-rw-r--r--arch/mn10300/include/asm/fcntl.h1
-rw-r--r--arch/mn10300/include/asm/fpu.h (renamed from include/asm-mn10300/fpu.h)0
-rw-r--r--arch/mn10300/include/asm/frame.inc (renamed from include/asm-mn10300/frame.inc)0
-rw-r--r--arch/mn10300/include/asm/ftrace.h (renamed from include/asm-mn10300/ftrace.h)0
-rw-r--r--arch/mn10300/include/asm/futex.h1
-rw-r--r--arch/mn10300/include/asm/gdb-stub.h (renamed from include/asm-mn10300/gdb-stub.h)0
-rw-r--r--arch/mn10300/include/asm/hardirq.h (renamed from include/asm-mn10300/hardirq.h)0
-rw-r--r--arch/mn10300/include/asm/highmem.h (renamed from include/asm-mn10300/highmem.h)0
-rw-r--r--arch/mn10300/include/asm/hw_irq.h (renamed from include/asm-mn10300/hw_irq.h)0
-rw-r--r--arch/mn10300/include/asm/intctl-regs.h (renamed from include/asm-mn10300/intctl-regs.h)0
-rw-r--r--arch/mn10300/include/asm/io.h (renamed from include/asm-mn10300/io.h)0
-rw-r--r--arch/mn10300/include/asm/ioctl.h1
-rw-r--r--arch/mn10300/include/asm/ioctls.h (renamed from include/asm-mn10300/ioctls.h)0
-rw-r--r--arch/mn10300/include/asm/ipc.h1
-rw-r--r--arch/mn10300/include/asm/ipcbuf.h (renamed from include/asm-mn10300/ipcbuf.h)0
-rw-r--r--arch/mn10300/include/asm/irq.h (renamed from include/asm-mn10300/irq.h)2
-rw-r--r--arch/mn10300/include/asm/irq_regs.h (renamed from include/asm-mn10300/irq_regs.h)0
-rw-r--r--arch/mn10300/include/asm/kdebug.h (renamed from include/asm-mn10300/kdebug.h)0
-rw-r--r--arch/mn10300/include/asm/kmap_types.h (renamed from include/asm-mn10300/kmap_types.h)0
-rw-r--r--arch/mn10300/include/asm/kprobes.h (renamed from include/asm-mn10300/kprobes.h)0
-rw-r--r--arch/mn10300/include/asm/linkage.h (renamed from include/asm-mn10300/linkage.h)0
-rw-r--r--arch/mn10300/include/asm/local.h1
-rw-r--r--arch/mn10300/include/asm/mc146818rtc.h (renamed from include/asm-mn10300/mc146818rtc.h)0
-rw-r--r--arch/mn10300/include/asm/mman.h (renamed from include/asm-mn10300/mman.h)0
-rw-r--r--arch/mn10300/include/asm/mmu.h (renamed from include/asm-mn10300/mmu.h)0
-rw-r--r--arch/mn10300/include/asm/mmu_context.h (renamed from include/asm-mn10300/mmu_context.h)0
-rw-r--r--arch/mn10300/include/asm/module.h (renamed from include/asm-mn10300/module.h)0
-rw-r--r--arch/mn10300/include/asm/msgbuf.h (renamed from include/asm-mn10300/msgbuf.h)0
-rw-r--r--arch/mn10300/include/asm/mutex.h (renamed from include/asm-mn10300/mutex.h)0
-rw-r--r--arch/mn10300/include/asm/nmi.h (renamed from include/asm-mn10300/nmi.h)0
-rw-r--r--arch/mn10300/include/asm/page.h (renamed from include/asm-mn10300/page.h)0
-rw-r--r--arch/mn10300/include/asm/page_offset.h (renamed from include/asm-mn10300/page_offset.h)0
-rw-r--r--arch/mn10300/include/asm/param.h (renamed from include/asm-mn10300/param.h)0
-rw-r--r--arch/mn10300/include/asm/pci.h (renamed from include/asm-mn10300/pci.h)0
-rw-r--r--arch/mn10300/include/asm/percpu.h1
-rw-r--r--arch/mn10300/include/asm/pgalloc.h (renamed from include/asm-mn10300/pgalloc.h)0
-rw-r--r--arch/mn10300/include/asm/pgtable.h (renamed from include/asm-mn10300/pgtable.h)0
-rw-r--r--arch/mn10300/include/asm/pio-regs.h (renamed from include/asm-mn10300/pio-regs.h)0
-rw-r--r--arch/mn10300/include/asm/poll.h1
-rw-r--r--arch/mn10300/include/asm/posix_types.h (renamed from include/asm-mn10300/posix_types.h)0
-rw-r--r--arch/mn10300/include/asm/processor.h (renamed from include/asm-mn10300/processor.h)0
-rw-r--r--arch/mn10300/include/asm/ptrace.h (renamed from include/asm-mn10300/ptrace.h)0
-rw-r--r--arch/mn10300/include/asm/reset-regs.h (renamed from include/asm-mn10300/reset-regs.h)0
-rw-r--r--arch/mn10300/include/asm/resource.h1
-rw-r--r--arch/mn10300/include/asm/rtc-regs.h (renamed from include/asm-mn10300/rtc-regs.h)0
-rw-r--r--arch/mn10300/include/asm/rtc.h (renamed from include/asm-mn10300/rtc.h)0
-rw-r--r--arch/mn10300/include/asm/scatterlist.h (renamed from include/asm-mn10300/scatterlist.h)0
-rw-r--r--arch/mn10300/include/asm/sections.h (renamed from include/asm-mn10300/sections.h)0
-rw-r--r--arch/mn10300/include/asm/sembuf.h (renamed from include/asm-mn10300/sembuf.h)0
-rw-r--r--arch/mn10300/include/asm/serial-regs.h (renamed from include/asm-mn10300/serial-regs.h)0
-rw-r--r--arch/mn10300/include/asm/serial.h (renamed from include/asm-mn10300/serial.h)2
-rw-r--r--arch/mn10300/include/asm/setup.h (renamed from include/asm-mn10300/setup.h)0
-rw-r--r--arch/mn10300/include/asm/shmbuf.h (renamed from include/asm-mn10300/shmbuf.h)0
-rw-r--r--arch/mn10300/include/asm/shmparam.h (renamed from include/asm-mn10300/shmparam.h)0
-rw-r--r--arch/mn10300/include/asm/sigcontext.h (renamed from include/asm-mn10300/sigcontext.h)0
-rw-r--r--arch/mn10300/include/asm/siginfo.h (renamed from include/asm-mn10300/siginfo.h)0
-rw-r--r--arch/mn10300/include/asm/signal.h (renamed from include/asm-mn10300/signal.h)0
-rw-r--r--arch/mn10300/include/asm/smp.h (renamed from include/asm-mn10300/smp.h)0
-rw-r--r--arch/mn10300/include/asm/socket.h (renamed from include/asm-mn10300/socket.h)0
-rw-r--r--arch/mn10300/include/asm/sockios.h (renamed from include/asm-mn10300/sockios.h)0
-rw-r--r--arch/mn10300/include/asm/spinlock.h (renamed from include/asm-mn10300/spinlock.h)0
-rw-r--r--arch/mn10300/include/asm/stat.h (renamed from include/asm-mn10300/stat.h)0
-rw-r--r--arch/mn10300/include/asm/statfs.h1
-rw-r--r--arch/mn10300/include/asm/string.h (renamed from include/asm-mn10300/string.h)0
-rw-r--r--arch/mn10300/include/asm/swab.h (renamed from include/asm-mn10300/swab.h)0
-rw-r--r--arch/mn10300/include/asm/system.h (renamed from include/asm-mn10300/system.h)0
-rw-r--r--arch/mn10300/include/asm/termbits.h (renamed from include/asm-mn10300/termbits.h)0
-rw-r--r--arch/mn10300/include/asm/termios.h (renamed from include/asm-mn10300/termios.h)0
-rw-r--r--arch/mn10300/include/asm/thread_info.h (renamed from include/asm-mn10300/thread_info.h)0
-rw-r--r--arch/mn10300/include/asm/timer-regs.h (renamed from include/asm-mn10300/timer-regs.h)0
-rw-r--r--arch/mn10300/include/asm/timex.h (renamed from include/asm-mn10300/timex.h)2
-rw-r--r--arch/mn10300/include/asm/tlb.h (renamed from include/asm-mn10300/tlb.h)0
-rw-r--r--arch/mn10300/include/asm/tlbflush.h (renamed from include/asm-mn10300/tlbflush.h)0
-rw-r--r--arch/mn10300/include/asm/topology.h (renamed from include/asm-mn10300/topology.h)0
-rw-r--r--arch/mn10300/include/asm/types.h (renamed from include/asm-mn10300/types.h)0
-rw-r--r--arch/mn10300/include/asm/uaccess.h (renamed from include/asm-mn10300/uaccess.h)0
-rw-r--r--arch/mn10300/include/asm/ucontext.h (renamed from include/asm-mn10300/ucontext.h)0
-rw-r--r--arch/mn10300/include/asm/unaligned.h (renamed from include/asm-mn10300/unaligned.h)0
-rw-r--r--arch/mn10300/include/asm/unistd.h (renamed from include/asm-mn10300/unistd.h)2
-rw-r--r--arch/mn10300/include/asm/user.h (renamed from include/asm-mn10300/user.h)0
-rw-r--r--arch/mn10300/include/asm/vga.h (renamed from include/asm-mn10300/vga.h)0
-rw-r--r--arch/mn10300/include/asm/xor.h1
-rw-r--r--arch/mn10300/kernel/entry.S4
-rw-r--r--arch/mn10300/kernel/gdb-io-serial-low.S2
-rw-r--r--arch/mn10300/kernel/gdb-io-serial.c2
-rw-r--r--arch/mn10300/kernel/gdb-io-ttysm-low.S2
-rw-r--r--arch/mn10300/kernel/gdb-io-ttysm.c2
-rw-r--r--arch/mn10300/kernel/gdb-stub.c4
-rw-r--r--arch/mn10300/kernel/head.S5
-rw-r--r--arch/mn10300/kernel/irq.c2
-rw-r--r--arch/mn10300/kernel/mn10300-serial-low.S4
-rw-r--r--arch/mn10300/kernel/mn10300-serial.c2
-rw-r--r--arch/mn10300/kernel/mn10300-watchdog.c2
-rw-r--r--arch/mn10300/kernel/setup.c6
-rw-r--r--arch/mn10300/kernel/traps.c2
-rw-r--r--arch/mn10300/kernel/vmlinux.lds.S5
-rw-r--r--arch/mn10300/oprofile/Kconfig23
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/cache.h (renamed from include/asm-mn10300/proc-mn103e010/cache.h)0
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/clock.h (renamed from include/asm-mn10300/proc-mn103e010/clock.h)2
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/irq.h (renamed from include/asm-mn10300/proc-mn103e010/irq.h)0
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/proc.h (renamed from include/asm-mn10300/proc-mn103e010/proc.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/clock.h (renamed from include/asm-mn10300/unit-asb2303/clock.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/leds.h (renamed from include/asm-mn10300/unit-asb2303/leds.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/serial.h (renamed from include/asm-mn10300/unit-asb2303/serial.h)2
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/smc91111.h (renamed from include/asm-mn10300/unit-asb2303/smc91111.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/timex.h (renamed from include/asm-mn10300/unit-asb2303/timex.h)2
-rw-r--r--arch/mn10300/unit-asb2303/leds.c2
-rw-r--r--arch/mn10300/unit-asb2303/smc91111.c2
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/clock.h (renamed from include/asm-mn10300/unit-asb2305/clock.h)0
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/leds.h (renamed from include/asm-mn10300/unit-asb2305/leds.h)0
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/serial.h (renamed from include/asm-mn10300/unit-asb2305/serial.h)2
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/timex.h (renamed from include/asm-mn10300/unit-asb2305/timex.h)2
-rw-r--r--arch/mn10300/unit-asb2305/leds.c2
-rw-r--r--arch/mn10300/unit-asb2305/unit-init.c2
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts39
-rw-r--r--arch/powerpc/boot/dts/tqm8540.dts4
-rw-r--r--arch/powerpc/boot/dts/tqm8541.dts4
-rw-r--r--arch/powerpc/boot/dts/tqm8548-bigflash.dts8
-rw-r--r--arch/powerpc/boot/dts/tqm8548.dts8
-rw-r--r--arch/powerpc/boot/dts/tqm8555.dts4
-rw-r--r--arch/powerpc/boot/dts/tqm8560.dts4
-rw-r--r--arch/powerpc/configs/52xx/cm5200_defconfig69
-rw-r--r--arch/powerpc/configs/52xx/lite5200b_defconfig74
-rw-r--r--arch/powerpc/configs/52xx/motionpro_defconfig77
-rw-r--r--arch/powerpc/configs/52xx/pcm030_defconfig69
-rw-r--r--arch/powerpc/configs/52xx/tqm5200_defconfig76
-rw-r--r--arch/powerpc/configs/85xx/mpc8536_ds_defconfig1802
-rw-r--r--arch/powerpc/configs/85xx/mpc8544_ds_defconfig1802
-rw-r--r--arch/powerpc/configs/85xx/mpc8568mds_defconfig1309
-rw-r--r--arch/powerpc/configs/85xx/tqm8548_defconfig164
-rw-r--r--arch/powerpc/configs/mpc5200_defconfig188
-rw-r--r--arch/powerpc/configs/mpc85xx_defconfig252
-rw-r--r--arch/powerpc/configs/mpc85xx_smp_defconfig (renamed from arch/powerpc/configs/85xx/mpc8572_ds_defconfig)343
-rw-r--r--arch/powerpc/include/asm/elf.h3
-rw-r--r--arch/powerpc/include/asm/futex.h12
-rw-r--r--arch/powerpc/include/asm/mmu.h6
-rw-r--r--arch/powerpc/include/asm/parport.h2
-rw-r--r--arch/powerpc/include/asm/ppc-opcode.h13
-rw-r--r--arch/powerpc/kernel/cputable.c2
-rw-r--r--arch/powerpc/kernel/head_32.S3
-rw-r--r--arch/powerpc/kernel/head_40x.S3
-rw-r--r--arch/powerpc/kernel/head_44x.S3
-rw-r--r--arch/powerpc/kernel/head_8xx.S3
-rw-r--r--arch/powerpc/kernel/head_fsl_booke.S3
-rw-r--r--arch/powerpc/kernel/prom_parse.c11
-rw-r--r--arch/powerpc/kernel/time.c8
-rw-r--r--arch/powerpc/kernel/vmlinux.lds.S2
-rw-r--r--arch/powerpc/mm/hash_utils_64.c2
-rw-r--r--arch/powerpc/mm/tlb_nohash.c1
-rw-r--r--arch/powerpc/mm/tlb_nohash_low.S14
-rw-r--r--arch/powerpc/platforms/fsl_uli1575.c5
-rw-r--r--arch/powerpc/platforms/pasemi/setup.c4
-rw-r--r--arch/powerpc/platforms/ps3/os-area.c2
-rw-r--r--arch/powerpc/platforms/pseries/dtl.c1
-rw-r--r--arch/powerpc/platforms/pseries/eeh_driver.c2
-rw-r--r--arch/powerpc/sysdev/fsl_rio.c28
-rw-r--r--arch/s390/Kconfig1
-rw-r--r--arch/s390/appldata/appldata_base.c34
-rw-r--r--arch/s390/appldata/appldata_mem.c2
-rw-r--r--arch/s390/defconfig63
-rw-r--r--arch/s390/include/asm/cpuid.h25
-rw-r--r--arch/s390/include/asm/cputime.h4
-rw-r--r--arch/s390/include/asm/kvm_host.h1
-rw-r--r--arch/s390/include/asm/lowcore.h12
-rw-r--r--arch/s390/include/asm/processor.h17
-rw-r--r--arch/s390/include/asm/ptrace.h2
-rw-r--r--arch/s390/include/asm/setup.h24
-rw-r--r--arch/s390/include/asm/thread_info.h3
-rw-r--r--arch/s390/include/asm/timer.h1
-rw-r--r--arch/s390/include/asm/timex.h5
-rw-r--r--arch/s390/include/asm/unistd.h4
-rw-r--r--arch/s390/kernel/asm-offsets.c2
-rw-r--r--arch/s390/kernel/compat_linux.c18
-rw-r--r--arch/s390/kernel/compat_wrapper.S18
-rw-r--r--arch/s390/kernel/early.c19
-rw-r--r--arch/s390/kernel/entry.S13
-rw-r--r--arch/s390/kernel/entry64.S13
-rw-r--r--arch/s390/kernel/head.S18
-rw-r--r--arch/s390/kernel/ipl.c1
-rw-r--r--arch/s390/kernel/nmi.c5
-rw-r--r--arch/s390/kernel/setup.c12
-rw-r--r--arch/s390/kernel/smp.c4
-rw-r--r--arch/s390/kernel/syscalls.S2
-rw-r--r--arch/s390/kernel/time.c79
-rw-r--r--arch/s390/kernel/vmlinux.lds.S4
-rw-r--r--arch/s390/kernel/vtime.c83
-rw-r--r--arch/sh/Kconfig18
-rw-r--r--arch/sh/boards/board-ap325rxa.c1
-rw-r--r--arch/sh/boards/board-urquell.c30
-rw-r--r--arch/sh/drivers/pci/ops-sh7785lcr.c5
-rw-r--r--arch/sh/drivers/pci/pci-sh7780.h2
-rw-r--r--arch/sh/drivers/pci/pci.c3
-rw-r--r--arch/sh/include/asm/dma-mapping.h36
-rw-r--r--arch/sh/include/asm/scatterlist.h11
-rw-r--r--arch/sh/include/asm/topology.h7
-rw-r--r--arch/sh/include/asm/unistd_32.h4
-rw-r--r--arch/sh/include/asm/unistd_64.h4
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7722.c1
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7723.c1
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7786.c14
-rw-r--r--arch/sh/kernel/head_32.S3
-rw-r--r--arch/sh/kernel/head_64.S5
-rw-r--r--arch/sh/kernel/sys_sh.c9
-rw-r--r--arch/sh/kernel/syscalls_32.S2
-rw-r--r--arch/sh/kernel/syscalls_64.S2
-rw-r--r--arch/sh/kernel/time_32.c2
-rw-r--r--arch/sh/kernel/timers/timer-tmu.c2
-rw-r--r--arch/sh/kernel/vmlinux_32.lds.S2
-rw-r--r--arch/sh/kernel/vmlinux_64.lds.S2
-rw-r--r--arch/sh/mm/consistent.c31
-rw-r--r--arch/sparc/configs/sparc32_defconfig98
-rw-r--r--arch/sparc/configs/sparc64_defconfig182
-rw-r--r--arch/sparc/include/asm/atomic_32.h2
-rw-r--r--arch/sparc/include/asm/parport.h5
-rw-r--r--arch/sparc/include/asm/unistd.h4
-rw-r--r--arch/sparc/kernel/head_32.S2
-rw-r--r--arch/sparc/kernel/ldc.c6
-rw-r--r--arch/sparc/kernel/of_device_32.c21
-rw-r--r--arch/sparc/kernel/of_device_64.c24
-rw-r--r--arch/sparc/kernel/pci_fire.c4
-rw-r--r--arch/sparc/kernel/pci_psycho.c8
-rw-r--r--arch/sparc/kernel/pci_sabre.c8
-rw-r--r--arch/sparc/kernel/pci_sun4v.c14
-rw-r--r--arch/sparc/kernel/power.c2
-rw-r--r--arch/sparc/kernel/smp_64.c4
-rw-r--r--arch/sparc/kernel/sys_sparc32.c19
-rw-r--r--arch/sparc/kernel/systbls_32.S2
-rw-r--r--arch/sparc/kernel/systbls_64.S4
-rw-r--r--arch/sparc/kernel/time_64.c7
-rw-r--r--arch/sparc/kernel/vmlinux.lds.S2
-rw-r--r--arch/sparc/mm/init_64.c8
-rw-r--r--arch/um/Kconfig.rest2
-rw-r--r--arch/um/kernel/time.c2
-rw-r--r--arch/x86/Kconfig7
-rw-r--r--arch/x86/Kconfig.cpu1
-rw-r--r--arch/x86/boot/video-vga.c33
-rw-r--r--arch/x86/ia32/sys_ia32.c19
-rw-r--r--[-rwxr-xr-x]arch/x86/include/asm/cpu_debug.h0
-rw-r--r--arch/x86/include/asm/cpufeature.h1
-rw-r--r--arch/x86/include/asm/desc.h2
-rw-r--r--arch/x86/include/asm/fixmap.h4
-rw-r--r--arch/x86/include/asm/hardirq.h2
-rw-r--r--arch/x86/include/asm/io.h6
-rw-r--r--arch/x86/include/asm/lguest_hcall.h2
-rw-r--r--arch/x86/include/asm/paravirt.h4
-rw-r--r--arch/x86/include/asm/pat.h4
-rw-r--r--arch/x86/include/asm/processor.h12
-rw-r--r--arch/x86/include/asm/required-features.h2
-rw-r--r--arch/x86/include/asm/sigcontext.h6
-rw-r--r--arch/x86/include/asm/tlbflush.h2
-rw-r--r--arch/x86/include/asm/uv/uv_mmrs.h5
-rw-r--r--arch/x86/include/asm/xen/page.h3
-rw-r--r--arch/x86/include/asm/xsave.h3
-rw-r--r--arch/x86/kernel/apic/apic.c6
-rw-r--r--arch/x86/kernel/apic/apic_flat_64.c4
-rw-r--r--arch/x86/kernel/apic/io_apic.c5
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c16
-rw-r--r--arch/x86/kernel/bios_uv.c3
-rw-r--r--arch/x86/kernel/cpu/addon_cpuid_features.c1
-rw-r--r--[-rwxr-xr-x]arch/x86/kernel/cpu/cpu_debug.c0
-rw-r--r--arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c101
-rw-r--r--arch/x86/kernel/cpu/cpufreq/longhaul.c1
-rw-r--r--arch/x86/kernel/ftrace.c2
-rw-r--r--arch/x86/kernel/hpet.c6
-rw-r--r--arch/x86/kernel/i8253.c2
-rw-r--r--arch/x86/kernel/irq.c2
-rw-r--r--arch/x86/kernel/kvmclock.c7
-rw-r--r--arch/x86/kernel/microcode_core.c35
-rw-r--r--arch/x86/kernel/mpparse.c7
-rw-r--r--arch/x86/kernel/pci-swiotlb.c2
-rw-r--r--arch/x86/kernel/ptrace.c3
-rw-r--r--arch/x86/kernel/reboot.c8
-rw-r--r--arch/x86/kernel/tlb_uv.c189
-rw-r--r--arch/x86/kernel/tsc.c2
-rw-r--r--arch/x86/kernel/uv_sysfs.c4
-rw-r--r--arch/x86/kernel/vmiclock_32.c2
-rw-r--r--arch/x86/kernel/xsave.c2
-rw-r--r--arch/x86/kvm/mmu.c2
-rw-r--r--arch/x86/kvm/x86.c8
-rw-r--r--arch/x86/lguest/boot.c18
-rw-r--r--arch/x86/mm/gup.c16
-rw-r--r--arch/x86/mm/ioremap.c33
-rw-r--r--arch/x86/mm/pageattr.c127
-rw-r--r--arch/x86/mm/pat.c191
-rw-r--r--arch/x86/mm/pgtable.c3
-rw-r--r--arch/x86/xen/enlighten.c89
-rw-r--r--arch/x86/xen/mmu.c118
-rw-r--r--arch/x86/xen/mmu.h3
-rw-r--r--arch/x86/xen/smp.c4
-rw-r--r--arch/x86/xen/time.c7
-rw-r--r--arch/x86/xen/xen-ops.h2
-rw-r--r--arch/xtensa/kernel/head.S3
-rw-r--r--arch/xtensa/kernel/vmlinux.lds.S4
-rw-r--r--block/as-iosched.c116
-rw-r--r--block/blk-barrier.c3
-rw-r--r--block/blk-core.c6
-rw-r--r--block/blk-merge.c5
-rw-r--r--block/blk-settings.c20
-rw-r--r--block/blk-sysfs.c4
-rw-r--r--block/blk-timeout.c13
-rw-r--r--block/blk.h11
-rw-r--r--block/cfq-iosched.c300
-rw-r--r--block/elevator.c8
-rw-r--r--block/genhd.c12
-rw-r--r--block/ioctl.c2
-rw-r--r--block/scsi_ioctl.c19
-rw-r--r--drivers/acpi/acpica/hwsleep.c43
-rw-r--r--drivers/acpi/acpica/hwvalid.c85
-rw-r--r--drivers/acpi/acpica/rscreate.c27
-rw-r--r--drivers/acpi/button.c140
-rw-r--r--drivers/acpi/ec.c1
-rw-r--r--drivers/acpi/osl.c4
-rw-r--r--drivers/acpi/proc.c13
-rw-r--r--drivers/acpi/processor_idle.c31
-rw-r--r--drivers/acpi/scan.c31
-rw-r--r--drivers/acpi/sleep.c35
-rw-r--r--drivers/acpi/sleep.h3
-rw-r--r--drivers/acpi/system.c11
-rw-r--r--drivers/acpi/thermal.c70
-rw-r--r--drivers/acpi/video.c81
-rw-r--r--drivers/acpi/wakeup.c30
-rw-r--r--drivers/ata/ahci.c57
-rw-r--r--drivers/ata/libata-core.c29
-rw-r--r--drivers/ata/libata-scsi.c30
-rw-r--r--drivers/ata/libata-sff.c27
-rw-r--r--drivers/ata/pata_hpt37x.c22
-rw-r--r--drivers/ata/pata_legacy.c37
-rw-r--r--drivers/ata/pata_ninja32.c4
-rw-r--r--drivers/ata/pata_via.c74
-rw-r--r--drivers/ata/sata_mv.c58
-rw-r--r--drivers/ata/sata_via.c2
-rw-r--r--drivers/atm/solos-pci.c2
-rw-r--r--drivers/base/base.h2
-rw-r--r--drivers/base/core.c6
-rw-r--r--drivers/base/dd.c1
-rw-r--r--drivers/base/platform.c239
-rw-r--r--drivers/block/brd.c5
-rw-r--r--drivers/block/cciss.c2
-rw-r--r--drivers/block/ub.c20
-rw-r--r--drivers/block/umem.c1
-rw-r--r--drivers/block/xsysace.c12
-rw-r--r--drivers/char/agp/generic.c4
-rw-r--r--drivers/char/agp/intel-agp.c3
-rw-r--r--drivers/char/hpet.c2
-rw-r--r--drivers/char/hw_random/virtio-rng.c4
-rw-r--r--drivers/char/ipmi/ipmi_msghandler.c211
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c150
-rw-r--r--drivers/char/mem.c27
-rw-r--r--drivers/char/sysrq.c1
-rw-r--r--drivers/char/vt.c2
-rw-r--r--drivers/clocksource/acpi_pm.c12
-rw-r--r--drivers/clocksource/cyclone.c2
-rw-r--r--drivers/clocksource/scx200_hrt.c2
-rw-r--r--drivers/clocksource/tcb_clksrc.c2
-rw-r--r--drivers/edac/edac_core.h12
-rw-r--r--drivers/edac/edac_device.c2
-rw-r--r--drivers/edac/edac_mc.c2
-rw-r--r--drivers/edac/edac_pci.c2
-rw-r--r--drivers/edac/mpc85xx_edac.c2
-rw-r--r--drivers/gpu/drm/drm_stub.c11
-rw-r--r--drivers/gpu/drm/drm_sysfs.c1
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h7
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c187
-rw-r--r--drivers/gpu/drm/i915/i915_gem_debugfs.c93
-rw-r--r--drivers/gpu/drm/i915/i915_gem_tiling.c111
-rw-r--r--drivers/gpu/drm/i915/i915_opregion.c9
-rw-r--r--drivers/gpu/drm/i915/intel_display.c2
-rw-r--r--drivers/gpu/drm/i915/intel_fb.c4
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c23
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c22
-rw-r--r--drivers/gpu/drm/via/via_dma.c12
-rw-r--r--drivers/hwmon/Kconfig10
-rw-r--r--drivers/hwmon/Makefile1
-rw-r--r--drivers/hwmon/hp_accel.c1
-rw-r--r--drivers/hwmon/sht15.c692
-rw-r--r--drivers/i2c/algos/i2c-algo-pca.c2
-rw-r--r--drivers/i2c/busses/Kconfig6
-rw-r--r--drivers/i2c/i2c-core.c3
-rw-r--r--drivers/ide/at91_ide.c91
-rw-r--r--drivers/ide/cs5536.c1
-rw-r--r--drivers/ide/falconide.c13
-rw-r--r--drivers/ide/hpt366.c14
-rw-r--r--drivers/ide/ide-acpi.c5
-rw-r--r--drivers/ide/ide-atapi.c38
-rw-r--r--drivers/ide/ide-cd.c290
-rw-r--r--drivers/ide/ide-disk.c70
-rw-r--r--drivers/ide/ide-disk_proc.c6
-rw-r--r--drivers/ide/ide-dma-sff.c9
-rw-r--r--drivers/ide/ide-gd.c17
-rw-r--r--drivers/ide/ide-h8300.c101
-rw-r--r--drivers/ide/ide-io-std.c75
-rw-r--r--drivers/ide/ide-io.c24
-rw-r--r--drivers/ide/ide-ioctls.c14
-rw-r--r--drivers/ide/ide-iops.c20
-rw-r--r--drivers/ide/ide-lib.c28
-rw-r--r--drivers/ide/ide-park.c3
-rw-r--r--drivers/ide/ide-pm.c3
-rw-r--r--drivers/ide/ide-probe.c18
-rw-r--r--drivers/ide/ide-proc.c4
-rw-r--r--drivers/ide/ide-taskfile.c97
-rw-r--r--drivers/ide/ns87415.c34
-rw-r--r--drivers/ide/palm_bk3710.c93
-rw-r--r--drivers/ide/pmac.c2
-rw-r--r--drivers/ide/q40ide.c14
-rw-r--r--drivers/ide/scc_pata.c71
-rw-r--r--drivers/ide/tx4938ide.c89
-rw-r--r--drivers/ide/tx4939ide.c110
-rw-r--r--drivers/infiniband/core/cma.c45
-rw-r--r--drivers/infiniband/hw/cxgb3/cxio_hal.c10
-rw-r--r--drivers/infiniband/hw/cxgb3/cxio_hal.h6
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch.c11
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch.h5
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.c116
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.h3
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_qp.c4
-rw-r--r--drivers/infiniband/hw/mlx4/main.c3
-rw-r--r--drivers/infiniband/hw/nes/nes.h4
-rw-r--r--drivers/infiniband/hw/nes/nes_cm.c22
-rw-r--r--drivers/infiniband/hw/nes/nes_cm.h1
-rw-r--r--drivers/infiniband/hw/nes/nes_hw.c389
-rw-r--r--drivers/infiniband/hw/nes/nes_hw.h2
-rw-r--r--drivers/infiniband/hw/nes/nes_nic.c52
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_vlan.c25
-rw-r--r--drivers/input/gameport/gameport.c14
-rw-r--r--drivers/input/input.c14
-rw-r--r--drivers/input/keyboard/atkbd.c155
-rw-r--r--drivers/input/keyboard/bf54x-keys.c6
-rw-r--r--drivers/input/keyboard/hilkbd.c140
-rw-r--r--drivers/input/misc/Kconfig25
-rw-r--r--drivers/input/misc/Makefile28
-rw-r--r--drivers/input/misc/ati_remote2.c277
-rw-r--r--drivers/input/misc/rb532_button.c120
-rw-r--r--drivers/input/misc/rotary_encoder.c221
-rw-r--r--drivers/input/mouse/Kconfig11
-rw-r--r--drivers/input/mouse/Makefile9
-rw-r--r--drivers/input/mouse/hgpk.c2
-rw-r--r--drivers/input/mouse/maplemouse.c147
-rw-r--r--drivers/input/mouse/pc110pad.c6
-rw-r--r--drivers/input/serio/hp_sdc.c24
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h36
-rw-r--r--drivers/input/serio/i8042.c37
-rw-r--r--drivers/input/touchscreen/Kconfig58
-rw-r--r--drivers/input/touchscreen/Makefile3
-rw-r--r--drivers/input/touchscreen/ad7877.c844
-rw-r--r--drivers/input/touchscreen/ad7879.c781
-rw-r--r--drivers/input/touchscreen/ads7846.c12
-rw-r--r--drivers/input/touchscreen/da9034-ts.c29
-rw-r--r--drivers/input/touchscreen/mainstone-wm97xx.c10
-rw-r--r--drivers/input/touchscreen/ucb1400_ts.c5
-rw-r--r--drivers/input/touchscreen/wm97xx-core.c16
-rw-r--r--drivers/input/touchscreen/zylonite-wm97xx.c240
-rw-r--r--drivers/isdn/hisax/st5481_usb.c9
-rw-r--r--drivers/leds/leds-gpio.c2
-rw-r--r--drivers/lguest/lg.h3
-rw-r--r--drivers/lguest/segments.c13
-rw-r--r--drivers/lguest/x86/core.c9
-rw-r--r--drivers/macintosh/Kconfig2
-rw-r--r--drivers/macintosh/mediabay.c3
-rw-r--r--drivers/md/bitmap.c7
-rw-r--r--drivers/md/dm-bio-list.h117
-rw-r--r--drivers/md/dm-delay.c2
-rw-r--r--drivers/md/dm-ioctl.c21
-rw-r--r--drivers/md/dm-kcopyd.c23
-rw-r--r--drivers/md/dm-linear.c1
-rw-r--r--drivers/md/dm-mpath.c1
-rw-r--r--drivers/md/dm-raid1.c1
-rw-r--r--drivers/md/dm-region-hash.c1
-rw-r--r--drivers/md/dm-snap.c1
-rw-r--r--drivers/md/dm-table.c59
-rw-r--r--drivers/md/dm.c200
-rw-r--r--drivers/md/dm.h1
-rw-r--r--drivers/md/md.c41
-rw-r--r--drivers/md/md.h21
-rw-r--r--drivers/md/raid1.c1
-rw-r--r--drivers/md/raid10.c1
-rw-r--r--drivers/md/raid5.c7
-rw-r--r--drivers/media/dvb/ttpci/Kconfig23
-rw-r--r--drivers/media/dvb/ttpci/Makefile9
-rw-r--r--drivers/media/dvb/ttpci/av7110.c16
-rw-r--r--drivers/media/dvb/ttpci/av7110_hw.c35
-rw-r--r--drivers/media/dvb/ttpci/av7110_hw.h3
-rw-r--r--drivers/media/dvb/ttpci/fdump.c44
-rw-r--r--drivers/media/radio/radio-si470x.c2
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c1
-rw-r--r--drivers/media/video/pwc/pwc-ctrl.c238
-rw-r--r--drivers/message/fusion/mptbase.c2
-rw-r--r--drivers/misc/eeprom/at24.c8
-rw-r--r--drivers/misc/eeprom/at25.c5
-rw-r--r--drivers/misc/sgi-gru/grufile.c2
-rw-r--r--drivers/misc/sgi-xp/xp_main.c12
-rw-r--r--drivers/misc/sgi-xp/xpc.h254
-rw-r--r--drivers/misc/sgi-xp/xpc_channel.c138
-rw-r--r--drivers/misc/sgi-xp/xpc_main.c128
-rw-r--r--drivers/misc/sgi-xp/xpc_partition.c20
-rw-r--r--drivers/misc/sgi-xp/xpc_sn2.c164
-rw-r--r--drivers/misc/sgi-xp/xpc_uv.c257
-rw-r--r--drivers/mmc/core/mmc.c2
-rw-r--r--drivers/mmc/core/sd.c21
-rw-r--r--drivers/mmc/host/imxmmc.c19
-rw-r--r--drivers/mmc/host/mmc_spi.c188
-rw-r--r--drivers/mmc/host/omap_hsmmc.c7
-rw-r--r--drivers/mmc/host/sdhci-pci.c2
-rw-r--r--drivers/mmc/host/sdhci.c2
-rw-r--r--drivers/mmc/host/wbsd.c2
-rw-r--r--drivers/mtd/nand/cafe_nand.c2
-rw-r--r--drivers/net/8139too.c10
-rw-r--r--drivers/net/Kconfig27
-rw-r--r--drivers/net/Makefile1
-rw-r--r--drivers/net/a2065.c17
-rw-r--r--drivers/net/ariadne.c19
-rw-r--r--drivers/net/arm/am79c961a.c24
-rw-r--r--drivers/net/arm/at91_ether.c32
-rw-r--r--drivers/net/arm/ep93xx_eth.c21
-rw-r--r--drivers/net/arm/ether1.c19
-rw-r--r--drivers/net/arm/ether3.c19
-rw-r--r--drivers/net/atarilance.c18
-rw-r--r--drivers/net/atl1c/atl1c_main.c4
-rw-r--r--drivers/net/au1000_eth.c23
-rw-r--r--drivers/net/benet/be_ethtool.c4
-rw-r--r--drivers/net/benet/be_main.c4
-rw-r--r--drivers/net/bfin_mac.c24
-rw-r--r--drivers/net/bnx2.c26
-rw-r--r--drivers/net/bonding/bond_alb.c2
-rw-r--r--drivers/net/bonding/bond_main.c5
-rw-r--r--drivers/net/bonding/bond_sysfs.c14
-rw-r--r--drivers/net/cris/eth_v10.c30
-rw-r--r--drivers/net/cxgb3/cxgb3_main.c44
-rw-r--r--drivers/net/cxgb3/t3_hw.c11
-rw-r--r--drivers/net/declance.c17
-rw-r--r--drivers/net/e1000/e1000_main.c52
-rw-r--r--drivers/net/e1000e/netdev.c67
-rw-r--r--drivers/net/ehea/ehea_main.c4
-rw-r--r--drivers/net/eql.c2
-rw-r--r--drivers/net/fec.c1
-rw-r--r--drivers/net/forcedeth.c4
-rw-r--r--drivers/net/fs_enet/fs_enet-main.c27
-rw-r--r--drivers/net/gianfar.c2
-rw-r--r--drivers/net/ibm_newemac/core.c41
-rw-r--r--drivers/net/igb/e1000_mac.c2
-rw-r--r--drivers/net/igb/e1000_mac.h1
-rw-r--r--drivers/net/igb/e1000_mbx.c17
-rw-r--r--drivers/net/igb/e1000_mbx.h2
-rw-r--r--drivers/net/igb/igb_main.c166
-rw-r--r--drivers/net/igbvf/Makefile38
-rw-r--r--drivers/net/igbvf/defines.h125
-rw-r--r--drivers/net/igbvf/ethtool.c540
-rw-r--r--drivers/net/igbvf/igbvf.h332
-rw-r--r--drivers/net/igbvf/mbx.c350
-rw-r--r--drivers/net/igbvf/mbx.h75
-rw-r--r--drivers/net/igbvf/netdev.c2922
-rw-r--r--drivers/net/igbvf/regs.h108
-rw-r--r--drivers/net/igbvf/vf.c398
-rw-r--r--drivers/net/igbvf/vf.h264
-rw-r--r--drivers/net/ioc3-eth.c22
-rw-r--r--drivers/net/isa-skeleton.c20
-rw-r--r--drivers/net/ixgbe/ixgbe_82598.c59
-rw-r--r--drivers/net/ixgbe/ixgbe_82599.c40
-rw-r--r--drivers/net/ixgbe/ixgbe_common.c55
-rw-r--r--drivers/net/ixgbe/ixgbe_common.h3
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb_82599.c28
-rw-r--r--drivers/net/ixgbe/ixgbe_ethtool.c24
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c111
-rw-r--r--drivers/net/jme.c8
-rw-r--r--drivers/net/mac89x0.c18
-rw-r--r--drivers/net/macb.c47
-rw-r--r--drivers/net/macsonic.c19
-rw-r--r--drivers/net/macvlan.c9
-rw-r--r--drivers/net/mlx4/en_main.c5
-rw-r--r--drivers/net/mlx4/en_netdev.c21
-rw-r--r--drivers/net/mlx4/en_port.c45
-rw-r--r--drivers/net/mlx4/en_resources.c6
-rw-r--r--drivers/net/mlx4/en_rx.c12
-rw-r--r--drivers/net/mlx4/en_tx.c1
-rw-r--r--drivers/net/mlx4/mlx4_en.h1
-rw-r--r--drivers/net/mlx4/port.c5
-rw-r--r--drivers/net/mv643xx_eth.c4
-rw-r--r--drivers/net/myri10ge/myri10ge.c1
-rw-r--r--drivers/net/niu.c3
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c2
-rw-r--r--drivers/net/phy/fixed.c5
-rw-r--r--drivers/net/phy/marvell.c54
-rw-r--r--drivers/net/phy/phy.c14
-rw-r--r--drivers/net/ps3_gelic_wireless.c3
-rw-r--r--drivers/net/r6040.c1
-rw-r--r--drivers/net/sfc/efx.c7
-rw-r--r--drivers/net/sfc/falcon.c4
-rw-r--r--drivers/net/sh_eth.c21
-rw-r--r--drivers/net/skge.c4
-rw-r--r--drivers/net/smc91x.h2
-rw-r--r--drivers/net/smsc911x.c2
-rw-r--r--drivers/net/sun3_82586.c19
-rw-r--r--drivers/net/tc35815.c27
-rw-r--r--drivers/net/tg3.c17
-rw-r--r--drivers/net/tsi108_eth.c20
-rw-r--r--drivers/net/tun.c52
-rw-r--r--drivers/net/ucc_geth.c3
-rw-r--r--drivers/net/usb/pegasus.c1
-rw-r--r--drivers/net/via-velocity.c4
-rw-r--r--drivers/net/wireless/airo.c2
-rw-r--r--drivers/net/wireless/ar9170/hw.h8
-rw-r--r--drivers/net/wireless/ar9170/usb.c114
-rw-r--r--drivers/net/wireless/at76c50x-usb.c2
-rw-r--r--drivers/net/wireless/ath9k/pci.c4
-rw-r--r--drivers/net/wireless/ath9k/recv.c4
-rw-r--r--drivers/net/wireless/atmel.c1
-rw-r--r--drivers/net/wireless/b43/dma.c50
-rw-r--r--drivers/net/wireless/b43/main.c5
-rw-r--r--drivers/net/wireless/b43/phy_common.c16
-rw-r--r--drivers/net/wireless/b43/phy_common.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c11
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-csr.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-tx.c99
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c152
-rw-r--r--drivers/net/wireless/libertas/rx.c2
-rw-r--r--drivers/net/wireless/mwl8k.c7
-rw-r--r--drivers/net/wireless/orinoco/hw.c8
-rw-r--r--drivers/net/wireless/p54/p54.h12
-rw-r--r--drivers/net/wireless/p54/p54common.c2
-rw-r--r--drivers/net/wireless/p54/p54pci.c4
-rw-r--r--drivers/net/wireless/p54/p54spi.c25
-rw-r--r--drivers/net/wireless/p54/p54usb.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00pci.c18
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c18
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c2
-rw-r--r--drivers/net/xtsonic.c19
-rw-r--r--drivers/parisc/superio.c3
-rw-r--r--drivers/pci/dmar.c11
-rw-r--r--drivers/pci/intel-iommu.c4
-rw-r--r--drivers/pcmcia/pxa2xx_sharpsl.c3
-rw-r--r--drivers/platform/x86/fujitsu-laptop.c60
-rw-r--r--drivers/platform/x86/panasonic-laptop.c28
-rw-r--r--drivers/platform/x86/sony-laptop.c57
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c81
-rw-r--r--drivers/platform/x86/wmi.c15
-rw-r--r--drivers/power/pcf50633-charger.c88
-rw-r--r--drivers/power/pda_power.c89
-rw-r--r--drivers/rtc/Kconfig2
-rw-r--r--drivers/rtc/rtc-cmos.c20
-rw-r--r--drivers/rtc/rtc-sh.c67
-rw-r--r--drivers/s390/block/dasd.c37
-rw-r--r--drivers/s390/block/dasd_eckd.c16
-rw-r--r--drivers/s390/char/tape.h2
-rw-r--r--drivers/s390/char/tape_34xx.c8
-rw-r--r--drivers/s390/char/tape_3590.c8
-rw-r--r--drivers/s390/char/tape_core.c5
-rw-r--r--drivers/s390/cio/qdio_main.c43
-rw-r--r--drivers/sbus/char/jsflash.c15
-rw-r--r--drivers/sbus/char/uctrl.c7
-rw-r--r--drivers/scsi/3w-9xxx.c8
-rw-r--r--drivers/scsi/a4000t.c2
-rw-r--r--drivers/scsi/aacraid/aachba.c2
-rw-r--r--drivers/scsi/lpfc/lpfc_scsi.c2
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_base.c10
-rw-r--r--drivers/scsi/qla1280.c4
-rw-r--r--drivers/scsi/scsi_priv.h3
-rw-r--r--drivers/scsi/scsi_scan.c2
-rw-r--r--drivers/scsi/scsi_wait_scan.c13
-rw-r--r--drivers/serial/8250_pci.c2
-rw-r--r--drivers/serial/Kconfig4
-rw-r--r--drivers/serial/bfin_5xx.c6
-rw-r--r--drivers/serial/max3100.c927
-rw-r--r--drivers/serial/samsung.c4
-rw-r--r--drivers/serial/sunsu.c2
-rw-r--r--drivers/sh/intc.c35
-rw-r--r--drivers/spi/pxa2xx_spi.c15
-rw-r--r--drivers/spi/spi.c22
-rw-r--r--drivers/staging/android/binder.c201
-rw-r--r--drivers/staging/at76_usb/at76_usb.c20
-rw-r--r--drivers/staging/b3dfg/b3dfg.c2
-rw-r--r--drivers/staging/epl/VirtualEthernetLinux.c17
-rw-r--r--drivers/staging/et131x/et131x_netdev.c23
-rw-r--r--drivers/staging/go7007/go7007-driver.c26
-rw-r--r--drivers/staging/go7007/go7007-i2c.c83
-rw-r--r--drivers/staging/go7007/go7007-priv.h1
-rw-r--r--drivers/staging/go7007/go7007-usb.c14
-rw-r--r--drivers/staging/go7007/s2250-board.c71
-rw-r--r--drivers/staging/go7007/wis-i2c.h9
-rw-r--r--drivers/staging/go7007/wis-ov7640.c56
-rw-r--r--drivers/staging/go7007/wis-saa7113.c60
-rw-r--r--drivers/staging/go7007/wis-saa7115.c60
-rw-r--r--drivers/staging/go7007/wis-sony-tuner.c62
-rw-r--r--drivers/staging/go7007/wis-tw2804.c57
-rw-r--r--drivers/staging/go7007/wis-tw9903.c60
-rw-r--r--drivers/staging/go7007/wis-uda1342.c52
-rw-r--r--drivers/staging/line6/audio.c9
-rw-r--r--drivers/staging/otus/usbdrv.c47
-rw-r--r--drivers/staging/otus/zdusb.c3
-rw-r--r--drivers/staging/otus/zdusb.h4
-rw-r--r--drivers/staging/pohmelfs/config.c61
-rw-r--r--drivers/staging/pohmelfs/dir.c24
-rw-r--r--drivers/staging/pohmelfs/inode.c137
-rw-r--r--drivers/staging/pohmelfs/lock.c3
-rw-r--r--drivers/staging/pohmelfs/net.c72
-rw-r--r--drivers/staging/pohmelfs/netfs.h21
-rw-r--r--drivers/staging/pohmelfs/trans.c33
-rw-r--r--drivers/staging/rt2860/rt_main_dev.c25
-rw-r--r--drivers/staging/rt2870/rt2870.h1
-rw-r--r--drivers/staging/rt2870/rt_main_dev.c28
-rw-r--r--drivers/staging/rt3070/rt_main_dev.c29
-rw-r--r--drivers/staging/slicoss/README31
-rw-r--r--drivers/staging/slicoss/slicoss.c25
-rw-r--r--drivers/staging/stlc45xx/Kconfig2
-rw-r--r--drivers/staging/sxg/sxg.c127
-rw-r--r--drivers/staging/uc2322/aten2011.c28
-rw-r--r--drivers/staging/wlan-ng/p80211netdev.c20
-rw-r--r--drivers/uio/uio_cif.c1
-rw-r--r--drivers/usb/class/cdc-acm.c4
-rw-r--r--drivers/usb/class/cdc-wdm.c27
-rw-r--r--drivers/usb/core/buffer.c2
-rw-r--r--drivers/usb/core/devio.c2
-rw-r--r--drivers/usb/core/hcd.c26
-rw-r--r--drivers/usb/core/hcd.h14
-rw-r--r--drivers/usb/core/message.c58
-rw-r--r--drivers/usb/core/usb.c2
-rw-r--r--drivers/usb/gadget/ci13xxx_udc.c5
-rw-r--r--drivers/usb/gadget/file_storage.c20
-rw-r--r--drivers/usb/gadget/omap_udc.c3
-rw-r--r--drivers/usb/gadget/u_ether.c8
-rw-r--r--drivers/usb/host/ehci-sched.c2
-rw-r--r--drivers/usb/host/ohci-at91.c4
-rw-r--r--drivers/usb/host/whci/asl.c15
-rw-r--r--drivers/usb/host/whci/hcd.c23
-rw-r--r--drivers/usb/host/whci/pzl.c16
-rw-r--r--drivers/usb/host/whci/qset.c24
-rw-r--r--drivers/usb/host/whci/whcd.h1
-rw-r--r--drivers/usb/host/whci/whci-hc.h1
-rw-r--r--drivers/usb/musb/cppi_dma.c23
-rw-r--r--drivers/usb/musb/musb_core.c14
-rw-r--r--drivers/usb/musb/musb_gadget.c33
-rw-r--r--drivers/usb/musb/musb_host.c406
-rw-r--r--drivers/usb/musb/musbhsdma.c66
-rw-r--r--drivers/usb/musb/omap2430.c1
-rw-r--r--drivers/usb/musb/tusb6010.c1
-rw-r--r--drivers/usb/musb/tusb6010.h1
-rw-r--r--drivers/usb/otg/nop-usb-xceiv.c4
-rw-r--r--drivers/usb/otg/otg.c3
-rw-r--r--drivers/usb/serial/cyberjack.c7
-rw-r--r--drivers/usb/serial/cypress_m8.c4
-rw-r--r--drivers/usb/serial/empeg.c6
-rw-r--r--drivers/usb/serial/ftdi_sio.c1
-rw-r--r--drivers/usb/serial/ftdi_sio.h7
-rw-r--r--drivers/usb/serial/garmin_gps.c8
-rw-r--r--drivers/usb/serial/generic.c6
-rw-r--r--drivers/usb/serial/io_edgeport.c8
-rw-r--r--drivers/usb/serial/io_ti.c8
-rw-r--r--drivers/usb/serial/ipaq.c6
-rw-r--r--drivers/usb/serial/ipw.c3
-rw-r--r--drivers/usb/serial/iuu_phoenix.c1
-rw-r--r--drivers/usb/serial/kobil_sct.c6
-rw-r--r--drivers/usb/serial/mos7720.c7
-rw-r--r--drivers/usb/serial/mos7840.c43
-rw-r--r--drivers/usb/serial/moto_modem.c1
-rw-r--r--drivers/usb/serial/opticon.c8
-rw-r--r--drivers/usb/serial/option.c8
-rw-r--r--drivers/usb/serial/qcserial.c21
-rw-r--r--drivers/usb/serial/sierra.c24
-rw-r--r--drivers/usb/serial/ti_usb_3410_5052.c40
-rw-r--r--drivers/usb/serial/usb-serial.c104
-rw-r--r--drivers/usb/serial/visor.c8
-rw-r--r--drivers/usb/storage/Makefile3
-rw-r--r--drivers/usb/storage/transport.c4
-rw-r--r--drivers/usb/storage/unusual_devs.h20
-rw-r--r--drivers/usb/wusbcore/devconnect.c21
-rw-r--r--drivers/usb/wusbcore/wusbhc.c32
-rw-r--r--drivers/video/asiliantfb.c1
-rw-r--r--drivers/video/aty/radeon_base.c4
-rw-r--r--drivers/video/backlight/backlight.c3
-rw-r--r--drivers/video/backlight/lcd.c3
-rw-r--r--drivers/video/cirrusfb.c4
-rw-r--r--drivers/video/console/fbcon.c55
-rw-r--r--drivers/video/efifb.c7
-rw-r--r--drivers/video/fbmem.c19
-rw-r--r--drivers/video/intelfb/intelfb.h2
-rw-r--r--drivers/video/intelfb/intelfb_i2c.c1
-rw-r--r--drivers/video/intelfb/intelfbdrv.c1
-rw-r--r--drivers/video/intelfb/intelfbhw.c5
-rw-r--r--drivers/video/pxafb.c16
-rw-r--r--drivers/video/s3fb.c6
-rw-r--r--drivers/video/sa1100fb.c15
-rw-r--r--drivers/video/sa1100fb.h7
-rw-r--r--drivers/video/sis/sis_main.c2
-rw-r--r--drivers/video/skeletonfb.c8
-rw-r--r--drivers/video/uvesafb.c35
-rw-r--r--drivers/video/vfb.c11
-rw-r--r--drivers/virtio/virtio_balloon.c3
-rw-r--r--drivers/watchdog/Kconfig2
-rw-r--r--drivers/watchdog/Makefile2
-rw-r--r--drivers/watchdog/at91rm9200_wdt.c6
-rw-r--r--drivers/watchdog/i6300esb.c155
-rw-r--r--drivers/watchdog/ks8695_wdt.c6
-rw-r--r--drivers/watchdog/omap_wdt.c6
-rw-r--r--drivers/watchdog/orion5x_wdt.c58
-rw-r--r--drivers/xen/cpu_hotplug.c40
-rw-r--r--drivers/xen/manage.c5
-rw-r--r--firmware/.gitignore1
-rw-r--r--firmware/Makefile31
-rw-r--r--firmware/README.AddingFirmware34
-rw-r--r--firmware/WHENCE102
-rw-r--r--firmware/av7110/Boot.S109
-rw-r--r--firmware/av7110/bootcode.bin.ihex15
-rw-r--r--firmware/cis/LA-PCM.cis.ihex20
-rw-r--r--firmware/ihex2fw.c (renamed from scripts/ihex2fw.c)0
-rw-r--r--firmware/slicoss/gbdownload.sys.ihex6148
-rw-r--r--firmware/slicoss/gbrcvucode.sys.ihex162
-rw-r--r--firmware/slicoss/oasisdbgdownload.sys.ihex5124
-rw-r--r--firmware/slicoss/oasisdownload.sys.ihex5124
-rw-r--r--firmware/slicoss/oasisrcvucode.sys.ihex162
-rw-r--r--firmware/sxg/saharadbgdownloadB.sys.ihex3937
-rw-r--r--firmware/sxg/saharadownloadB.sys.ihex3385
-rw-r--r--firmware/yamaha/yss225_registers.bin.ihex998
-rw-r--r--fs/afs/file.c2
-rw-r--r--fs/afs/netdevices.c3
-rw-r--r--fs/autofs/dirhash.c34
-rw-r--r--fs/autofs4/dev-ioctl.c12
-rw-r--r--fs/befs/super.c1
-rw-r--r--fs/bio.c122
-rw-r--r--fs/btrfs/async-thread.c60
-rw-r--r--fs/btrfs/async-thread.h2
-rw-r--r--fs/btrfs/ctree.c17
-rw-r--r--fs/btrfs/disk-io.c9
-rw-r--r--fs/btrfs/extent_io.c86
-rw-r--r--fs/btrfs/file.c6
-rw-r--r--fs/btrfs/inode.c36
-rw-r--r--fs/btrfs/ioctl.c49
-rw-r--r--fs/btrfs/ordered-data.c2
-rw-r--r--fs/btrfs/super.c13
-rw-r--r--fs/btrfs/volumes.c124
-rw-r--r--fs/btrfs/volumes.h13
-rw-r--r--fs/buffer.c69
-rw-r--r--fs/cifs/CHANGES3
-rw-r--r--fs/cifs/cifs_spnego.c2
-rw-r--r--fs/cifs/cifsfs.c48
-rw-r--r--fs/cifs/cifsglob.h3
-rw-r--r--fs/cifs/cifspdu.h8
-rw-r--r--fs/cifs/cifssmb.c6
-rw-r--r--fs/cifs/connect.c205
-rw-r--r--fs/cifs/dir.c145
-rw-r--r--fs/cifs/dns_resolve.c2
-rw-r--r--fs/cifs/file.c127
-rw-r--r--fs/cifs/inode.c77
-rw-r--r--fs/cifs/readdir.c6
-rw-r--r--fs/cifs/sess.c47
-rw-r--r--fs/compat.c48
-rw-r--r--fs/compat_ioctl.c7
-rw-r--r--fs/dcache.c1
-rw-r--r--fs/direct-io.c2
-rw-r--r--fs/ecryptfs/crypto.c21
-rw-r--r--fs/ecryptfs/ecryptfs_kernel.h1
-rw-r--r--fs/ecryptfs/inode.c37
-rw-r--r--fs/ecryptfs/main.c14
-rw-r--r--fs/ecryptfs/messaging.c82
-rw-r--r--fs/ecryptfs/miscdev.c43
-rw-r--r--fs/ecryptfs/mmap.c11
-rw-r--r--fs/ecryptfs/read_write.c32
-rw-r--r--fs/ecryptfs/super.c7
-rw-r--r--fs/exec.c25
-rw-r--r--fs/ext2/inode.c44
-rw-r--r--fs/ext3/inode.c23
-rw-r--r--fs/ext4/extents.c20
-rw-r--r--fs/ext4/ialloc.c6
-rw-r--r--fs/ext4/inode.c8
-rw-r--r--fs/ext4/super.c9
-rw-r--r--fs/fat/Kconfig3
-rw-r--r--fs/filesystems.c2
-rw-r--r--fs/fuse/file.c8
-rw-r--r--fs/gfs2/glock.c10
-rw-r--r--fs/gfs2/glops.c6
-rw-r--r--fs/gfs2/inode.c8
-rw-r--r--fs/gfs2/inode.h14
-rw-r--r--fs/gfs2/ops_file.c12
-rw-r--r--fs/gfs2/ops_fstype.c5
-rw-r--r--fs/gfs2/ops_inode.c1
-rw-r--r--fs/gfs2/quota.c4
-rw-r--r--fs/gfs2/rgrp.c13
-rw-r--r--fs/hfs/inode.c4
-rw-r--r--fs/hfs/mdb.c1
-rw-r--r--fs/hugetlbfs/inode.c3
-rw-r--r--fs/inode.c36
-rw-r--r--fs/jbd/commit.c2
-rw-r--r--fs/jbd/revoke.c44
-rw-r--r--fs/jbd2/commit.c3
-rw-r--r--fs/jbd2/revoke.c21
-rw-r--r--fs/namei.c2
-rw-r--r--fs/namespace.c7
-rw-r--r--fs/ncpfs/ioctl.c21
-rw-r--r--fs/nfs/nfs3xdr.c3
-rw-r--r--fs/nfsd/nfs4recover.c46
-rw-r--r--fs/nfsd/vfs.c34
-rw-r--r--fs/nilfs2/bmap.c5
-rw-r--r--fs/nilfs2/nilfs.h5
-rw-r--r--fs/nilfs2/recovery.c20
-rw-r--r--fs/nilfs2/sufile.c290
-rw-r--r--fs/nilfs2/sufile.h79
-rw-r--r--fs/nilfs2/super.c7
-rw-r--r--fs/nilfs2/the_nilfs.c4
-rw-r--r--fs/ocfs2/file.c94
-rw-r--r--fs/pipe.c42
-rw-r--r--fs/proc/base.c4
-rw-r--r--fs/proc/stat.c5
-rw-r--r--fs/proc/task_nommu.c2
-rw-r--r--fs/romfs/internal.h4
-rw-r--r--fs/romfs/storage.c68
-rw-r--r--fs/romfs/super.c4
-rw-r--r--fs/splice.c370
-rw-r--r--fs/stat.c137
-rw-r--r--fs/sysfs/bin.c13
-rw-r--r--fs/sysfs/file.c16
-rw-r--r--fs/xattr.c10
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.c38
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.h1
-rw-r--r--fs/xfs/linux-2.6/xfs_buf.c9
-rw-r--r--fs/xfs/linux-2.6/xfs_fs_subr.c14
-rw-r--r--fs/xfs/linux-2.6/xfs_ioctl.c23
-rw-r--r--fs/xfs/linux-2.6/xfs_ioctl32.c12
-rw-r--r--fs/xfs/linux-2.6/xfs_lrw.c18
-rw-r--r--fs/xfs/linux-2.6/xfs_sync.c78
-rw-r--r--fs/xfs/linux-2.6/xfs_sync.h9
-rw-r--r--fs/xfs/xfs_iget.c23
-rw-r--r--fs/xfs/xfs_iomap.c61
-rw-r--r--fs/xfs/xfs_iomap.h3
-rw-r--r--fs/xfs/xfs_log.c78
-rw-r--r--fs/xfs/xfs_mount.h2
-rw-r--r--fs/xfs/xfs_vnodeops.c7
-rw-r--r--include/acpi/acpi_bus.h1
-rw-r--r--include/acpi/processor.h1
-rw-r--r--include/asm-arm/.gitignore2
-rw-r--r--include/asm-generic/bug.h2
-rw-r--r--include/asm-generic/percpu.h71
-rw-r--r--include/asm-generic/siginfo.h2
-rw-r--r--include/asm-generic/vmlinux.lds.h4
-rw-r--r--include/asm-mn10300/.gitignore2
-rw-r--r--include/drm/drm_pciids.h2
-rw-r--r--include/drm/i915_drm.h3
-rw-r--r--include/linux/acpi.h1
-rw-r--r--include/linux/bio.h110
-rw-r--r--include/linux/bitops.h19
-rw-r--r--include/linux/blkdev.h3
-rw-r--r--include/linux/buffer_head.h3
-rw-r--r--include/linux/capability.h23
-rw-r--r--include/linux/clocksource.h37
-rw-r--r--include/linux/debug_locks.h8
-rw-r--r--include/linux/device-mapper.h1
-rw-r--r--include/linux/device.h1
-rw-r--r--include/linux/dynamic_debug.h2
-rw-r--r--include/linux/fb.h8
-rw-r--r--include/linux/fiemap.h2
-rw-r--r--include/linux/fs.h69
-rw-r--r--include/linux/fsl_devices.h8
-rw-r--r--include/linux/ftrace.h31
-rw-r--r--include/linux/genhd.h1
-rw-r--r--include/linux/i2c.h2
-rw-r--r--include/linux/ide.h151
-rw-r--r--include/linux/init.h5
-rw-r--r--include/linux/init_task.h13
-rw-r--r--include/linux/ipmi.h2
-rw-r--r--include/linux/ipmi_msgdefs.h8
-rw-r--r--include/linux/irq.h14
-rw-r--r--include/linux/jbd.h3
-rw-r--r--include/linux/jbd2.h3
-rw-r--r--include/linux/kernel.h9
-rw-r--r--include/linux/kmod.h2
-rw-r--r--include/linux/kvm.h2
-rw-r--r--include/linux/libata.h8
-rw-r--r--include/linux/memcontrol.h2
-rw-r--r--include/linux/mfd/pcf50633/core.h2
-rw-r--r--include/linux/mfd/pcf50633/mbc.h1
-rw-r--r--include/linux/pci_ids.h2
-rw-r--r--include/linux/pda_power.h2
-rw-r--r--include/linux/percpu-defs.h84
-rw-r--r--include/linux/percpu.h96
-rw-r--r--include/linux/phy.h6
-rw-r--r--include/linux/pipe_fs_i.h5
-rw-r--r--include/linux/pktcdvd.h1
-rw-r--r--include/linux/platform_device.h42
-rw-r--r--include/linux/rcutree.h3
-rw-r--r--include/linux/reiserfs_fs_sb.h2
-rw-r--r--include/linux/rotary_encoder.h13
-rw-r--r--include/linux/sched.h3
-rw-r--r--include/linux/seccomp.h2
-rw-r--r--include/linux/section-names.h6
-rw-r--r--include/linux/serial_max3100.h52
-rw-r--r--include/linux/sht15.h24
-rw-r--r--include/linux/slow-work.h2
-rw-r--r--include/linux/spi/ad7879.h35
-rw-r--r--include/linux/spi/ads7846.h1
-rw-r--r--include/linux/spi/spi.h7
-rw-r--r--include/linux/splice.h12
-rw-r--r--include/linux/stringify.h4
-rw-r--r--include/linux/suspend.h36
-rw-r--r--include/linux/syscalls.h4
-rw-r--r--include/linux/usb.h9
-rw-r--r--include/linux/usb/musb.h5
-rw-r--r--include/linux/usb/serial.h7
-rw-r--r--include/net/netfilter/nf_conntrack_expect.h5
-rw-r--r--include/net/netfilter/nf_nat.h1
-rw-r--r--include/net/udp.h2
-rw-r--r--include/scsi/scsi_scan.h11
-rw-r--r--include/sound/jack.h2
-rw-r--r--include/sound/pcm.h3
-rw-r--r--include/sound/pxa2xx-lib.h15
-rw-r--r--include/trace/syscall.h35
-rw-r--r--include/video/cyblafb.h175
-rw-r--r--init/Kconfig8
-rw-r--r--init/initramfs.c5
-rw-r--r--init/main.c7
-rw-r--r--ipc/mq_sysctl.c2
-rw-r--r--kernel/audit_tree.c3
-rw-r--r--kernel/fork.c13
-rw-r--r--kernel/futex.c7
-rw-r--r--kernel/irq/numa_migrate.c1
-rw-r--r--kernel/kthread.c26
-rw-r--r--kernel/module.c3
-rw-r--r--kernel/mutex.c3
-rw-r--r--kernel/panic.c12
-rw-r--r--kernel/posix-cpu-timers.c9
-rw-r--r--kernel/power/disk.c45
-rw-r--r--kernel/power/main.c24
-rw-r--r--kernel/power/swap.c2
-rw-r--r--kernel/power/user.c9
-rw-r--r--kernel/ptrace.c23
-rw-r--r--kernel/rcupdate.c18
-rw-r--r--kernel/rcutree.c19
-rw-r--r--kernel/rcutree_trace.c14
-rw-r--r--kernel/resource.c46
-rw-r--r--kernel/sched.c164
-rw-r--r--kernel/sched_cpupri.c5
-rw-r--r--kernel/sched_rt.c15
-rw-r--r--kernel/slow-work.c4
-rw-r--r--kernel/softirq.c4
-rw-r--r--kernel/sys.c24
-rw-r--r--kernel/sysctl.c20
-rw-r--r--kernel/time/clocksource.c8
-rw-r--r--kernel/time/jiffies.c2
-rw-r--r--kernel/time/timekeeping.c12
-rw-r--r--kernel/timer.c7
-rw-r--r--kernel/trace/Kconfig4
-rw-r--r--kernel/trace/blktrace.c10
-rw-r--r--kernel/trace/trace.c36
-rw-r--r--kernel/trace/trace_branch.c8
-rw-r--r--kernel/trace/trace_events.c12
-rw-r--r--kernel/trace/trace_events_filter.c14
-rw-r--r--kernel/trace/trace_events_stage_2.h4
-rw-r--r--kernel/trace/trace_power.c7
-rw-r--r--kernel/trace/trace_syscalls.c2
-rw-r--r--kernel/workqueue.c36
-rw-r--r--lib/Kconfig.debug8
-rw-r--r--lib/Makefile2
-rw-r--r--lib/debug_locks.c2
-rw-r--r--lib/kobject.c3
-rw-r--r--lib/kobject_uevent.c4
-rw-r--r--lib/scatterlist.c9
-rw-r--r--lib/vsprintf.c16
-rw-r--r--mm/Kconfig2
-rw-r--r--mm/filemap.c5
-rw-r--r--mm/memcontrol.c2
-rw-r--r--mm/mmap.c2
-rw-r--r--mm/shmem.c27
-rw-r--r--mm/util.c16
-rw-r--r--mm/vmscan.c17
-rw-r--r--net/802/tr.c3
-rw-r--r--net/8021q/vlan_core.c4
-rw-r--r--net/8021q/vlan_dev.c3
-rw-r--r--net/ax25/ax25_uid.c12
-rw-r--r--net/bluetooth/hci_event.c38
-rw-r--r--net/bluetooth/rfcomm/core.c2
-rw-r--r--net/can/af_can.c4
-rw-r--r--net/core/dev.c22
-rw-r--r--net/ipv4/netfilter/nf_nat_core.c3
-rw-r--r--net/ipv4/tcp.c6
-rw-r--r--net/ipv4/tcp_input.c3
-rw-r--r--net/ipv4/tcp_output.c2
-rw-r--r--net/ipv4/udp.c3
-rw-r--r--net/ipv6/ipv6_sockglue.c4
-rw-r--r--net/ipv6/netfilter/ip6_tables.c2
-rw-r--r--net/ipv6/udp.c6
-rw-r--r--net/iucv/af_iucv.c24
-rw-r--r--net/mac80211/Kconfig7
-rw-r--r--net/mac80211/main.c2
-rw-r--r--net/mac80211/mlme.c38
-rw-r--r--net/mac80211/pm.c15
-rw-r--r--net/mac80211/rx.c15
-rw-r--r--net/mac80211/wext.c43
-rw-r--r--net/netfilter/Kconfig2
-rw-r--r--net/netfilter/nf_conntrack_expect.c30
-rw-r--r--net/netfilter/nf_conntrack_helper.c2
-rw-r--r--net/netfilter/nf_conntrack_netlink.c14
-rw-r--r--net/netfilter/nf_log.c4
-rw-r--r--net/netfilter/nfnetlink.c2
-rw-r--r--net/netlabel/netlabel_addrlist.c26
-rw-r--r--net/netrom/af_netrom.c6
-rw-r--r--net/packet/af_packet.c5
-rw-r--r--net/rds/rds.h2
-rw-r--r--net/rose/af_rose.c10
-rw-r--r--net/sched/em_meta.c6
-rw-r--r--net/sched/sch_netem.c8
-rw-r--r--net/wireless/core.h2
-rw-r--r--net/wireless/nl80211.c4
-rw-r--r--net/wireless/reg.c5
-rw-r--r--net/wireless/scan.c40
-rw-r--r--scripts/.gitignore1
-rw-r--r--scripts/Makefile3
-rw-r--r--scripts/Makefile.build3
-rw-r--r--scripts/Makefile.headersinst2
-rw-r--r--scripts/Makefile.lib9
-rw-r--r--scripts/gen_initramfs_list.sh2
-rwxr-xr-xscripts/get_maintainer.pl515
-rwxr-xr-xscripts/headerdep.pl2
-rw-r--r--scripts/kconfig/kxgettext.c4
-rw-r--r--scripts/mod/modpost.c4
-rwxr-xr-xscripts/setlocalversion2
-rw-r--r--security/commoncap.c1
-rw-r--r--security/keys/request_key.c9
-rw-r--r--security/smack/smack_lsm.c11
-rw-r--r--security/tomoyo/common.c6
-rw-r--r--security/tomoyo/common.h2
-rw-r--r--security/tomoyo/domain.c2
-rw-r--r--security/tomoyo/file.c2
-rw-r--r--security/tomoyo/realpath.c2
-rw-r--r--security/tomoyo/realpath.h2
-rw-r--r--security/tomoyo/tomoyo.c2
-rw-r--r--security/tomoyo/tomoyo.h2
-rw-r--r--sound/aoa/codecs/onyx.c76
-rw-r--r--sound/aoa/codecs/tas.c66
-rw-r--r--sound/arm/pxa2xx-ac97-lib.c2
-rw-r--r--sound/core/control.c35
-rw-r--r--sound/core/jack.c3
-rw-r--r--sound/core/pcm_compat.c11
-rw-r--r--sound/core/pcm_lib.c47
-rw-r--r--sound/core/pcm_native.c93
-rw-r--r--sound/core/seq/seq_compat.c9
-rw-r--r--sound/core/timer.c11
-rw-r--r--sound/isa/Kconfig10
-rw-r--r--sound/isa/sb/sb16_csp.c19
-rw-r--r--sound/isa/wavefront/wavefront_fx.c30
-rw-r--r--sound/isa/wavefront/wavefront_synth.c11
-rw-r--r--sound/isa/wavefront/yss225.c2739
-rw-r--r--sound/pci/ac97/ac97_codec.c2
-rw-r--r--sound/pci/atiixp.c6
-rw-r--r--sound/pci/emu10k1/emufx.c41
-rw-r--r--sound/pci/emu10k1/io.c2
-rw-r--r--sound/pci/hda/hda_codec.c14
-rw-r--r--sound/pci/hda/hda_intel.c47
-rw-r--r--sound/pci/hda/patch_analog.c53
-rw-r--r--sound/pci/hda/patch_conexant.c21
-rw-r--r--sound/pci/hda/patch_realtek.c111
-rw-r--r--sound/pci/hda/patch_sigmatel.c37
-rw-r--r--sound/pci/intel8x0.c105
-rw-r--r--sound/ppc/keywest.c82
-rw-r--r--sound/soc/codecs/Makefile1
-rw-r--r--sound/soc/codecs/wm8580.c16
-rw-r--r--sound/soc/codecs/wm9705.c2
-rw-r--r--sound/soc/omap/n810.c4
-rw-r--r--sound/soc/omap/omap-mcbsp.c12
-rw-r--r--sound/soc/omap/omap-mcbsp.h3
-rw-r--r--sound/soc/omap/omap-pcm.c5
-rw-r--r--sound/soc/omap/omap-pcm.h3
-rw-r--r--sound/soc/omap/osk5912.c4
-rw-r--r--sound/soc/pxa/magician.c2
-rw-r--r--sound/soc/pxa/palm27x.c27
-rw-r--r--sound/soc/pxa/pxa-ssp.c37
-rw-r--r--sound/soc/s3c24xx/Kconfig6
-rw-r--r--sound/soc/s3c24xx/jive_wm8750.c12
-rw-r--r--sound/soc/s3c24xx/s3c-i2s-v2.c21
-rw-r--r--sound/soc/s3c24xx/s3c2412-i2s.c2
-rw-r--r--sound/sparc/cs4231.c28
-rw-r--r--sound/usb/usx2y/us122l.c22
-rw-r--r--sound/usb/usx2y/usX2Yhwdep.c13
-rw-r--r--sound/usb/usx2y/usb_stream.c67
-rw-r--r--virt/kvm/kvm_main.c11
1797 files changed, 49556 insertions, 46080 deletions
diff --git a/.gitignore b/.gitignore
index 869e1a3b64b6..51bd99d6a260 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,6 +49,7 @@ include/linux/compile.h
49include/linux/version.h 49include/linux/version.h
50include/linux/utsrelease.h 50include/linux/utsrelease.h
51include/linux/bounds.h 51include/linux/bounds.h
52include/generated
52 53
53# stgit generated dirs 54# stgit generated dirs
54patches-* 55patches-*
diff --git a/Documentation/ABI/testing/debugfs-pktcdvd b/Documentation/ABI/testing/debugfs-pktcdvd
index bf9c16b64c34..cf11736acb76 100644
--- a/Documentation/ABI/testing/debugfs-pktcdvd
+++ b/Documentation/ABI/testing/debugfs-pktcdvd
@@ -1,4 +1,4 @@
1What: /debug/pktcdvd/pktcdvd[0-7] 1What: /sys/kernel/debug/pktcdvd/pktcdvd[0-7]
2Date: Oct. 2006 2Date: Oct. 2006
3KernelVersion: 2.6.20 3KernelVersion: 2.6.20
4Contact: Thomas Maier <balagi@justmail.de> 4Contact: Thomas Maier <balagi@justmail.de>
@@ -10,10 +10,10 @@ debugfs interface
10The pktcdvd module (packet writing driver) creates 10The pktcdvd module (packet writing driver) creates
11these files in debugfs: 11these files in debugfs:
12 12
13/debug/pktcdvd/pktcdvd[0-7]/ 13/sys/kernel/debug/pktcdvd/pktcdvd[0-7]/
14 info (0444) Lots of driver statistics and infos. 14 info (0444) Lots of driver statistics and infos.
15 15
16Example: 16Example:
17------- 17-------
18 18
19cat /debug/pktcdvd/pktcdvd0/info 19cat /sys/kernel/debug/pktcdvd/pktcdvd0/info
diff --git a/Documentation/ABI/testing/sysfs-firmware-acpi b/Documentation/ABI/testing/sysfs-firmware-acpi
index e8ffc70ffe12..4f9ba3c2fca7 100644
--- a/Documentation/ABI/testing/sysfs-firmware-acpi
+++ b/Documentation/ABI/testing/sysfs-firmware-acpi
@@ -69,9 +69,13 @@ Description:
69 gpe1F: 0 invalid 69 gpe1F: 0 invalid
70 gpe_all: 1192 70 gpe_all: 1192
71 sci: 1194 71 sci: 1194
72 sci_not: 0
72 73
73 sci - The total number of times the ACPI SCI 74 sci - The number of times the ACPI SCI
74 has claimed an interrupt. 75 has been called and claimed an interrupt.
76
77 sci_not - The number of times the ACPI SCI
78 has been called and NOT claimed an interrupt.
75 79
76 gpe_all - count of SCI caused by GPEs. 80 gpe_all - count of SCI caused by GPEs.
77 81
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index a3a83d38f96f..8918a32c6b3a 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -31,7 +31,7 @@ PS_METHOD = $(prefer-db2x)
31 31
32### 32###
33# The targets that may be used. 33# The targets that may be used.
34PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs 34PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs
35 35
36BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) 36BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
37xmldocs: $(BOOKS) 37xmldocs: $(BOOKS)
@@ -213,11 +213,12 @@ silent_gen_xml = :
213dochelp: 213dochelp:
214 @echo ' Linux kernel internal documentation in different formats:' 214 @echo ' Linux kernel internal documentation in different formats:'
215 @echo ' htmldocs - HTML' 215 @echo ' htmldocs - HTML'
216 @echo ' installmandocs - install man pages generated by mandocs'
217 @echo ' mandocs - man pages'
218 @echo ' pdfdocs - PDF' 216 @echo ' pdfdocs - PDF'
219 @echo ' psdocs - Postscript' 217 @echo ' psdocs - Postscript'
220 @echo ' xmldocs - XML DocBook' 218 @echo ' xmldocs - XML DocBook'
219 @echo ' mandocs - man pages'
220 @echo ' installmandocs - install man pages generated by mandocs'
221 @echo ' cleandocs - clean all generated DocBook files'
221 222
222### 223###
223# Temporary files left by various tools 224# Temporary files left by various tools
@@ -235,6 +236,10 @@ clean-files := $(DOCBOOKS) \
235 236
236clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man 237clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
237 238
239cleandocs:
240 $(Q)rm -f $(call objectify, $(clean-files))
241 $(Q)rm -rf $(call objectify, $(clean-dirs))
242
238# Declare the contents of the .PHONY variable as phony. We keep that 243# Declare the contents of the .PHONY variable as phony. We keep that
239# information in a variable se we can use it in if_changed and friends. 244# information in a variable se we can use it in if_changed and friends.
240 245
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index ecad6ee75705..6fab97ea7e6b 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
@@ -1040,23 +1040,21 @@ Front merges are handled by the binary trees in AS and deadline schedulers.
1040iii. Plugging the queue to batch requests in anticipation of opportunities for 1040iii. Plugging the queue to batch requests in anticipation of opportunities for
1041 merge/sort optimizations 1041 merge/sort optimizations
1042 1042
1043This is just the same as in 2.4 so far, though per-device unplugging
1044support is anticipated for 2.5. Also with a priority-based i/o scheduler,
1045such decisions could be based on request priorities.
1046
1047Plugging is an approach that the current i/o scheduling algorithm resorts to so 1043Plugging is an approach that the current i/o scheduling algorithm resorts to so
1048that it collects up enough requests in the queue to be able to take 1044that it collects up enough requests in the queue to be able to take
1049advantage of the sorting/merging logic in the elevator. If the 1045advantage of the sorting/merging logic in the elevator. If the
1050queue is empty when a request comes in, then it plugs the request queue 1046queue is empty when a request comes in, then it plugs the request queue
1051(sort of like plugging the bottom of a vessel to get fluid to build up) 1047(sort of like plugging the bath tub of a vessel to get fluid to build up)
1052till it fills up with a few more requests, before starting to service 1048till it fills up with a few more requests, before starting to service
1053the requests. This provides an opportunity to merge/sort the requests before 1049the requests. This provides an opportunity to merge/sort the requests before
1054passing them down to the device. There are various conditions when the queue is 1050passing them down to the device. There are various conditions when the queue is
1055unplugged (to open up the flow again), either through a scheduled task or 1051unplugged (to open up the flow again), either through a scheduled task or
1056could be on demand. For example wait_on_buffer sets the unplugging going 1052could be on demand. For example wait_on_buffer sets the unplugging going
1057(by running tq_disk) so the read gets satisfied soon. So in the read case, 1053through sync_buffer() running blk_run_address_space(mapping). Or the caller
1058the queue gets explicitly unplugged as part of waiting for completion, 1054can do it explicity through blk_unplug(bdev). So in the read case,
1059in fact all queues get unplugged as a side-effect. 1055the queue gets explicitly unplugged as part of waiting for completion on that
1056buffer. For page driven IO, the address space ->sync_page() takes care of
1057doing the blk_run_address_space().
1060 1058
1061Aside: 1059Aside:
1062 This is kind of controversial territory, as it's not clear if plugging is 1060 This is kind of controversial territory, as it's not clear if plugging is
@@ -1067,11 +1065,6 @@ Aside:
1067 multi-page bios being queued in one shot, we may not need to wait to merge 1065 multi-page bios being queued in one shot, we may not need to wait to merge
1068 a big request from the broken up pieces coming by. 1066 a big request from the broken up pieces coming by.
1069 1067
1070 Per-queue granularity unplugging (still a Todo) may help reduce some of the
1071 concerns with just a single tq_disk flush approach. Something like
1072 blk_kick_queue() to unplug a specific queue (right away ?)
1073 or optionally, all queues, is in the plan.
1074
10754.4 I/O contexts 10684.4 I/O contexts
1076I/O contexts provide a dynamically allocated per process data area. They may 1069I/O contexts provide a dynamically allocated per process data area. They may
1077be used in I/O schedulers, and in the block layer (could be used for IO statis, 1070be used in I/O schedulers, and in the block layer (could be used for IO statis,
diff --git a/Documentation/cgroups/cpuacct.txt b/Documentation/cgroups/cpuacct.txt
index bb775fbe43d7..8b930946c52a 100644
--- a/Documentation/cgroups/cpuacct.txt
+++ b/Documentation/cgroups/cpuacct.txt
@@ -30,3 +30,21 @@ The above steps create a new group g1 and move the current shell
30process (bash) into it. CPU time consumed by this bash and its children 30process (bash) into it. CPU time consumed by this bash and its children
31can be obtained from g1/cpuacct.usage and the same is accumulated in 31can be obtained from g1/cpuacct.usage and the same is accumulated in
32/cgroups/cpuacct.usage also. 32/cgroups/cpuacct.usage also.
33
34cpuacct.stat file lists a few statistics which further divide the
35CPU time obtained by the cgroup into user and system times. Currently
36the following statistics are supported:
37
38user: Time spent by tasks of the cgroup in user mode.
39system: Time spent by tasks of the cgroup in kernel mode.
40
41user and system are in USER_HZ unit.
42
43cpuacct controller uses percpu_counter interface to collect user and
44system times. This has two side effects:
45
46- It is theoretically possible to see wrong values for user and system times.
47 This is because percpu_counter_read() on 32bit systems isn't safe
48 against concurrent writes.
49- It is possible to see slightly outdated values for user and system times
50 due to the batch processing nature of percpu_counter.
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
index a98a7fe7aabb..1a608877b14e 100644
--- a/Documentation/cgroups/memory.txt
+++ b/Documentation/cgroups/memory.txt
@@ -6,15 +6,14 @@ used here with the memory controller that is used in hardware.
6 6
7Salient features 7Salient features
8 8
9a. Enable control of both RSS (mapped) and Page Cache (unmapped) pages 9a. Enable control of Anonymous, Page Cache (mapped and unmapped) and
10 Swap Cache memory pages.
10b. The infrastructure allows easy addition of other types of memory to control 11b. The infrastructure allows easy addition of other types of memory to control
11c. Provides *zero overhead* for non memory controller users 12c. Provides *zero overhead* for non memory controller users
12d. Provides a double LRU: global memory pressure causes reclaim from the 13d. Provides a double LRU: global memory pressure causes reclaim from the
13 global LRU; a cgroup on hitting a limit, reclaims from the per 14 global LRU; a cgroup on hitting a limit, reclaims from the per
14 cgroup LRU 15 cgroup LRU
15 16
16NOTE: Swap Cache (unmapped) is not accounted now.
17
18Benefits and Purpose of the memory controller 17Benefits and Purpose of the memory controller
19 18
20The memory controller isolates the memory behaviour of a group of tasks 19The memory controller isolates the memory behaviour of a group of tasks
@@ -290,34 +289,44 @@ will be charged as a new owner of it.
290 moved to the parent. If you want to avoid that, force_empty will be useful. 289 moved to the parent. If you want to avoid that, force_empty will be useful.
291 290
2925.2 stat file 2915.2 stat file
293 memory.stat file includes following statistics (now) 292
294 cache - # of pages from page-cache and shmem. 293memory.stat file includes following statistics
295 rss - # of pages from anonymous memory. 294
296 pgpgin - # of event of charging 295cache - # of bytes of page cache memory.
297 pgpgout - # of event of uncharging 296rss - # of bytes of anonymous and swap cache memory.
298 active_anon - # of pages on active lru of anon, shmem. 297pgpgin - # of pages paged in (equivalent to # of charging events).
299 inactive_anon - # of pages on active lru of anon, shmem 298pgpgout - # of pages paged out (equivalent to # of uncharging events).
300 active_file - # of pages on active lru of file-cache 299active_anon - # of bytes of anonymous and swap cache memory on active
301 inactive_file - # of pages on inactive lru of file cache 300 lru list.
302 unevictable - # of pages cannot be reclaimed.(mlocked etc) 301inactive_anon - # of bytes of anonymous memory and swap cache memory on
303 302 inactive lru list.
304 Below is depend on CONFIG_DEBUG_VM. 303active_file - # of bytes of file-backed memory on active lru list.
305 inactive_ratio - VM internal parameter. (see mm/page_alloc.c) 304inactive_file - # of bytes of file-backed memory on inactive lru list.
306 recent_rotated_anon - VM internal parameter. (see mm/vmscan.c) 305unevictable - # of bytes of memory that cannot be reclaimed (mlocked etc).
307 recent_rotated_file - VM internal parameter. (see mm/vmscan.c) 306
308 recent_scanned_anon - VM internal parameter. (see mm/vmscan.c) 307The following additional stats are dependent on CONFIG_DEBUG_VM.
309 recent_scanned_file - VM internal parameter. (see mm/vmscan.c) 308
310 309inactive_ratio - VM internal parameter. (see mm/page_alloc.c)
311 Memo: 310recent_rotated_anon - VM internal parameter. (see mm/vmscan.c)
311recent_rotated_file - VM internal parameter. (see mm/vmscan.c)
312recent_scanned_anon - VM internal parameter. (see mm/vmscan.c)
313recent_scanned_file - VM internal parameter. (see mm/vmscan.c)
314
315Memo:
312 recent_rotated means recent frequency of lru rotation. 316 recent_rotated means recent frequency of lru rotation.
313 recent_scanned means recent # of scans to lru. 317 recent_scanned means recent # of scans to lru.
314 showing for better debug please see the code for meanings. 318 showing for better debug please see the code for meanings.
315 319
320Note:
321 Only anonymous and swap cache memory is listed as part of 'rss' stat.
322 This should not be confused with the true 'resident set size' or the
323 amount of physical memory used by the cgroup. Per-cgroup rss
324 accounting is not done yet.
316 325
3175.3 swappiness 3265.3 swappiness
318 Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only. 327 Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only.
319 328
320 Following cgroup's swapiness can't be changed. 329 Following cgroups' swapiness can't be changed.
321 - root cgroup (uses /proc/sys/vm/swappiness). 330 - root cgroup (uses /proc/sys/vm/swappiness).
322 - a cgroup which uses hierarchy and it has child cgroup. 331 - a cgroup which uses hierarchy and it has child cgroup.
323 - a cgroup which uses hierarchy and not the root of hierarchy. 332 - a cgroup which uses hierarchy and not the root of hierarchy.
diff --git a/Documentation/cgroups/resource_counter.txt b/Documentation/cgroups/resource_counter.txt
index f196ac1d7d25..95b24d766eab 100644
--- a/Documentation/cgroups/resource_counter.txt
+++ b/Documentation/cgroups/resource_counter.txt
@@ -47,13 +47,18 @@ to work with it.
47 47
482. Basic accounting routines 482. Basic accounting routines
49 49
50 a. void res_counter_init(struct res_counter *rc) 50 a. void res_counter_init(struct res_counter *rc,
51 struct res_counter *rc_parent)
51 52
52 Initializes the resource counter. As usual, should be the first 53 Initializes the resource counter. As usual, should be the first
53 routine called for a new counter. 54 routine called for a new counter.
54 55
55 b. int res_counter_charge[_locked] 56 The struct res_counter *parent can be used to define a hierarchical
56 (struct res_counter *rc, unsigned long val) 57 child -> parent relationship directly in the res_counter structure,
58 NULL can be used to define no relationship.
59
60 c. int res_counter_charge(struct res_counter *rc, unsigned long val,
61 struct res_counter **limit_fail_at)
57 62
58 When a resource is about to be allocated it has to be accounted 63 When a resource is about to be allocated it has to be accounted
59 with the appropriate resource counter (controller should determine 64 with the appropriate resource counter (controller should determine
@@ -67,15 +72,25 @@ to work with it.
67 * if the charging is performed first, then it should be uncharged 72 * if the charging is performed first, then it should be uncharged
68 on error path (if the one is called). 73 on error path (if the one is called).
69 74
70 c. void res_counter_uncharge[_locked] 75 If the charging fails and a hierarchical dependency exists, the
76 limit_fail_at parameter is set to the particular res_counter element
77 where the charging failed.
78
79 d. int res_counter_charge_locked
80 (struct res_counter *rc, unsigned long val)
81
82 The same as res_counter_charge(), but it must not acquire/release the
83 res_counter->lock internally (it must be called with res_counter->lock
84 held).
85
86 e. void res_counter_uncharge[_locked]
71 (struct res_counter *rc, unsigned long val) 87 (struct res_counter *rc, unsigned long val)
72 88
73 When a resource is released (freed) it should be de-accounted 89 When a resource is released (freed) it should be de-accounted
74 from the resource counter it was accounted to. This is called 90 from the resource counter it was accounted to. This is called
75 "uncharging". 91 "uncharging".
76 92
77 The _locked routines imply that the res_counter->lock is taken. 93 The _locked routines imply that the res_counter->lock is taken.
78
79 94
80 2.1 Other accounting routines 95 2.1 Other accounting routines
81 96
diff --git a/Documentation/driver-model/platform.txt b/Documentation/driver-model/platform.txt
index 83009fdcbbc8..2e2c2ea90ceb 100644
--- a/Documentation/driver-model/platform.txt
+++ b/Documentation/driver-model/platform.txt
@@ -169,3 +169,62 @@ three different ways to find such a match:
169 be probed later if another device registers. (Which is OK, since 169 be probed later if another device registers. (Which is OK, since
170 this interface is only for use with non-hotpluggable devices.) 170 this interface is only for use with non-hotpluggable devices.)
171 171
172
173Early Platform Devices and Drivers
174~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
175The early platform interfaces provide platform data to platform device
176drivers early on during the system boot. The code is built on top of the
177early_param() command line parsing and can be executed very early on.
178
179Example: "earlyprintk" class early serial console in 6 steps
180
1811. Registering early platform device data
182~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
183The architecture code registers platform device data using the function
184early_platform_add_devices(). In the case of early serial console this
185should be hardware configuration for the serial port. Devices registered
186at this point will later on be matched against early platform drivers.
187
1882. Parsing kernel command line
189~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
190The architecture code calls parse_early_param() to parse the kernel
191command line. This will execute all matching early_param() callbacks.
192User specified early platform devices will be registered at this point.
193For the early serial console case the user can specify port on the
194kernel command line as "earlyprintk=serial.0" where "earlyprintk" is
195the class string, "serial" is the name of the platfrom driver and
1960 is the platform device id. If the id is -1 then the dot and the
197id can be omitted.
198
1993. Installing early platform drivers belonging to a certain class
200~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
201The architecture code may optionally force registration of all early
202platform drivers belonging to a certain class using the function
203early_platform_driver_register_all(). User specified devices from
204step 2 have priority over these. This step is omitted by the serial
205driver example since the early serial driver code should be disabled
206unless the user has specified port on the kernel command line.
207
2084. Early platform driver registration
209~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
210Compiled-in platform drivers making use of early_platform_init() are
211automatically registered during step 2 or 3. The serial driver example
212should use early_platform_init("earlyprintk", &platform_driver).
213
2145. Probing of early platform drivers belonging to a certain class
215~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
216The architecture code calls early_platform_driver_probe() to match
217registered early platform devices associated with a certain class with
218registered early platform drivers. Matched devices will get probed().
219This step can be executed at any point during the early boot. As soon
220as possible may be good for the serial port case.
221
2226. Inside the early platform driver probe()
223~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
224The driver code needs to take special care during early boot, especially
225when it comes to memory allocation and interrupt registration. The code
226in the probe() function can use is_early_platform_device() to check if
227it is called at early platform device or at the regular platform device
228time. The early serial driver performs register_console() at this point.
229
230For further information, see <linux/platform_device.h>.
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 7e2af10e8264..de491a3e2313 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -428,3 +428,12 @@ Why: In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to
428 After a reasonable transition period, we will remove the legacy 428 After a reasonable transition period, we will remove the legacy
429 fakephp interface. 429 fakephp interface.
430Who: Alex Chiang <achiang@hp.com> 430Who: Alex Chiang <achiang@hp.com>
431
432---------------------------
433
434What: i2c-voodoo3 driver
435When: October 2009
436Why: Superseded by tdfxfb. I2C/DDC support used to live in a separate
437 driver but this caused driver conflicts.
438Who: Jean Delvare <khali@linux-fr.org>
439 Krzysztof Helt <krzysztof.h1@wp.pl>
diff --git a/Documentation/filesystems/caching/cachefiles.txt b/Documentation/filesystems/caching/cachefiles.txt
index c78a49b7bba6..748a1ae49e12 100644
--- a/Documentation/filesystems/caching/cachefiles.txt
+++ b/Documentation/filesystems/caching/cachefiles.txt
@@ -407,7 +407,7 @@ A NOTE ON SECURITY
407================== 407==================
408 408
409CacheFiles makes use of the split security in the task_struct. It allocates 409CacheFiles makes use of the split security in the task_struct. It allocates
410its own task_security structure, and redirects current->act_as to point to it 410its own task_security structure, and redirects current->cred to point to it
411when it acts on behalf of another process, in that process's context. 411when it acts on behalf of another process, in that process's context.
412 412
413The reason it does this is that it calls vfs_mkdir() and suchlike rather than 413The reason it does this is that it calls vfs_mkdir() and suchlike rather than
@@ -429,9 +429,9 @@ This means it may lose signals or ptrace events for example, and affects what
429the process looks like in /proc. 429the process looks like in /proc.
430 430
431So CacheFiles makes use of a logical split in the security between the 431So CacheFiles makes use of a logical split in the security between the
432objective security (task->sec) and the subjective security (task->act_as). The 432objective security (task->real_cred) and the subjective security (task->cred).
433objective security holds the intrinsic security properties of a process and is 433The objective security holds the intrinsic security properties of a process and
434never overridden. This is what appears in /proc, and is what is used when a 434is never overridden. This is what appears in /proc, and is what is used when a
435process is the target of an operation by some other process (SIGKILL for 435process is the target of an operation by some other process (SIGKILL for
436example). 436example).
437 437
diff --git a/Documentation/filesystems/pohmelfs/design_notes.txt b/Documentation/filesystems/pohmelfs/design_notes.txt
index 6d6db60d567d..dcf833587162 100644
--- a/Documentation/filesystems/pohmelfs/design_notes.txt
+++ b/Documentation/filesystems/pohmelfs/design_notes.txt
@@ -56,9 +56,10 @@ workloads and can fully utilize the bandwidth to the servers when doing bulk
56data transfers. 56data transfers.
57 57
58POHMELFS clients operate with a working set of servers and are capable of balancing read-only 58POHMELFS clients operate with a working set of servers and are capable of balancing read-only
59operations (like lookups or directory listings) between them. 59operations (like lookups or directory listings) between them according to IO priorities.
60Administrators can add or remove servers from the set at run-time via special commands (described 60Administrators can add or remove servers from the set at run-time via special commands (described
61in Documentation/pohmelfs/info.txt file). Writes are replicated to all servers. 61in Documentation/pohmelfs/info.txt file). Writes are replicated to all servers, which are connected
62with write permission turned on. IO priority and permissions can be changed in run-time.
62 63
63POHMELFS is capable of full data channel encryption and/or strong crypto hashing. 64POHMELFS is capable of full data channel encryption and/or strong crypto hashing.
64One can select any kernel supported cipher, encryption mode, hash type and operation mode 65One can select any kernel supported cipher, encryption mode, hash type and operation mode
diff --git a/Documentation/filesystems/pohmelfs/info.txt b/Documentation/filesystems/pohmelfs/info.txt
index 4e3d50157083..db2e41393626 100644
--- a/Documentation/filesystems/pohmelfs/info.txt
+++ b/Documentation/filesystems/pohmelfs/info.txt
@@ -1,6 +1,8 @@
1POHMELFS usage information. 1POHMELFS usage information.
2 2
3Mount options: 3Mount options.
4All but index, number of crypto threads and maximum IO size can changed via remount.
5
4idx=%u 6idx=%u
5 Each mountpoint is associated with a special index via this option. 7 Each mountpoint is associated with a special index via this option.
6 Administrator can add or remove servers from the given index, so all mounts, 8 Administrator can add or remove servers from the given index, so all mounts,
@@ -52,16 +54,27 @@ mcache_timeout=%u
52 54
53Usage examples. 55Usage examples.
54 56
55Add (or remove if it already exists) server server1.net:1025 into the working set with index $idx 57Add server server1.net:1025 into the working set with index $idx
56with appropriate hash algorithm and key file and cipher algorithm, mode and key file: 58with appropriate hash algorithm and key file and cipher algorithm, mode and key file:
57$cfg -a server1.net -p 1025 -i $idx -K $hash_key -k $cipher_key 59$cfg A add -a server1.net -p 1025 -i $idx -K $hash_key -k $cipher_key
58 60
59Mount filesystem with given index $idx to /mnt mountpoint. 61Mount filesystem with given index $idx to /mnt mountpoint.
60Client will connect to all servers specified in the working set via previous command: 62Client will connect to all servers specified in the working set via previous command:
61mount -t pohmel -o idx=$idx q /mnt 63mount -t pohmel -o idx=$idx q /mnt
62 64
63One can add or remove servers from working set after mounting too. 65Change permissions to read-only (-I 1 option, '-I 2' - write-only, 3 - rw):
66$cfg A modify -a server1.net -p 1025 -i $idx -I 1
67
68Change IO priority to 123 (node with the highest priority gets read requests).
69$cfg A modify -a server1.net -p 1025 -i $idx -P 123
64 70
71One can check currect status of all connections in the mountstats file:
72# cat /proc/$PID/mountstats
73...
74device none mounted on /mnt with fstype pohmel
75idx addr(:port) socket_type protocol active priority permissions
760 server1.net:1026 1 6 1 250 1
770 server2.net:1025 1 6 1 123 3
65 78
66Server installation. 79Server installation.
67 80
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index deeeed0faa8f..f49eecf2e573 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -277,8 +277,7 @@ or bottom half).
277 unfreeze_fs: called when VFS is unlocking a filesystem and making it writable 277 unfreeze_fs: called when VFS is unlocking a filesystem and making it writable
278 again. 278 again.
279 279
280 statfs: called when the VFS needs to get filesystem statistics. This 280 statfs: called when the VFS needs to get filesystem statistics.
281 is called with the kernel lock held
282 281
283 remount_fs: called when the filesystem is remounted. This is called 282 remount_fs: called when the filesystem is remounted. This is called
284 with the kernel lock held 283 with the kernel lock held
diff --git a/Documentation/infiniband/ipoib.txt b/Documentation/infiniband/ipoib.txt
index 864ff3283780..6d40f00b358c 100644
--- a/Documentation/infiniband/ipoib.txt
+++ b/Documentation/infiniband/ipoib.txt
@@ -24,6 +24,49 @@ Partitions and P_Keys
24 The P_Key for any interface is given by the "pkey" file, and the 24 The P_Key for any interface is given by the "pkey" file, and the
25 main interface for a subinterface is in "parent." 25 main interface for a subinterface is in "parent."
26 26
27Datagram vs Connected modes
28
29 The IPoIB driver supports two modes of operation: datagram and
30 connected. The mode is set and read through an interface's
31 /sys/class/net/<intf name>/mode file.
32
33 In datagram mode, the IB UD (Unreliable Datagram) transport is used
34 and so the interface MTU has is equal to the IB L2 MTU minus the
35 IPoIB encapsulation header (4 bytes). For example, in a typical IB
36 fabric with a 2K MTU, the IPoIB MTU will be 2048 - 4 = 2044 bytes.
37
38 In connected mode, the IB RC (Reliable Connected) transport is used.
39 Connected mode is to takes advantage of the connected nature of the
40 IB transport and allows an MTU up to the maximal IP packet size of
41 64K, which reduces the number of IP packets needed for handling
42 large UDP datagrams, TCP segments, etc and increases the performance
43 for large messages.
44
45 In connected mode, the interface's UD QP is still used for multicast
46 and communication with peers that don't support connected mode. In
47 this case, RX emulation of ICMP PMTU packets is used to cause the
48 networking stack to use the smaller UD MTU for these neighbours.
49
50Stateless offloads
51
52 If the IB HW supports IPoIB stateless offloads, IPoIB advertises
53 TCP/IP checksum and/or Large Send (LSO) offloading capability to the
54 network stack.
55
56 Large Receive (LRO) offloading is also implemented and may be turned
57 on/off using ethtool calls. Currently LRO is supported only for
58 checksum offload capable devices.
59
60 Stateless offloads are supported only in datagram mode.
61
62Interrupt moderation
63
64 If the underlying IB device supports CQ event moderation, one can
65 use ethtool to set interrupt mitigation parameters and thus reduce
66 the overhead incurred by handling interrupts. The main code path of
67 IPoIB doesn't use events for TX completion signaling so only RX
68 moderation is supported.
69
27Debugging Information 70Debugging Information
28 71
29 By compiling the IPoIB driver with CONFIG_INFINIBAND_IPOIB_DEBUG set 72 By compiling the IPoIB driver with CONFIG_INFINIBAND_IPOIB_DEBUG set
@@ -55,3 +98,5 @@ References
55 http://ietf.org/rfc/rfc4391.txt 98 http://ietf.org/rfc/rfc4391.txt
56 IP over InfiniBand (IPoIB) Architecture (RFC 4392) 99 IP over InfiniBand (IPoIB) Architecture (RFC 4392)
57 http://ietf.org/rfc/rfc4392.txt 100 http://ietf.org/rfc/rfc4392.txt
101 IP over InfiniBand: Connected Mode (RFC 4755)
102 http://ietf.org/rfc/rfc4755.txt
diff --git a/Documentation/input/rotary-encoder.txt b/Documentation/input/rotary-encoder.txt
new file mode 100644
index 000000000000..435102a26d96
--- /dev/null
+++ b/Documentation/input/rotary-encoder.txt
@@ -0,0 +1,101 @@
1rotary-encoder - a generic driver for GPIO connected devices
2Daniel Mack <daniel@caiaq.de>, Feb 2009
3
40. Function
5-----------
6
7Rotary encoders are devices which are connected to the CPU or other
8peripherals with two wires. The outputs are phase-shifted by 90 degrees
9and by triggering on falling and rising edges, the turn direction can
10be determined.
11
12The phase diagram of these two outputs look like this:
13
14 _____ _____ _____
15 | | | | | |
16 Channel A ____| |_____| |_____| |____
17
18 : : : : : : : : : : : :
19 __ _____ _____ _____
20 | | | | | | |
21 Channel B |_____| |_____| |_____| |__
22
23 : : : : : : : : : : : :
24 Event a b c d a b c d a b c d
25
26 |<-------->|
27 one step
28
29
30For more information, please see
31 http://en.wikipedia.org/wiki/Rotary_encoder
32
33
341. Events / state machine
35-------------------------
36
37a) Rising edge on channel A, channel B in low state
38 This state is used to recognize a clockwise turn
39
40b) Rising edge on channel B, channel A in high state
41 When entering this state, the encoder is put into 'armed' state,
42 meaning that there it has seen half the way of a one-step transition.
43
44c) Falling edge on channel A, channel B in high state
45 This state is used to recognize a counter-clockwise turn
46
47d) Falling edge on channel B, channel A in low state
48 Parking position. If the encoder enters this state, a full transition
49 should have happend, unless it flipped back on half the way. The
50 'armed' state tells us about that.
51
522. Platform requirements
53------------------------
54
55As there is no hardware dependent call in this driver, the platform it is
56used with must support gpiolib. Another requirement is that IRQs must be
57able to fire on both edges.
58
59
603. Board integration
61--------------------
62
63To use this driver in your system, register a platform_device with the
64name 'rotary-encoder' and associate the IRQs and some specific platform
65data with it.
66
67struct rotary_encoder_platform_data is declared in
68include/linux/rotary-encoder.h and needs to be filled with the number of
69steps the encoder has and can carry information about externally inverted
70signals (because of used invertig buffer or other reasons).
71
72Because GPIO to IRQ mapping is platform specific, this information must
73be given in seperately to the driver. See the example below.
74
75---------<snip>---------
76
77/* board support file example */
78
79#include <linux/input.h>
80#include <linux/rotary_encoder.h>
81
82#define GPIO_ROTARY_A 1
83#define GPIO_ROTARY_B 2
84
85static struct rotary_encoder_platform_data my_rotary_encoder_info = {
86 .steps = 24,
87 .axis = ABS_X,
88 .gpio_a = GPIO_ROTARY_A,
89 .gpio_b = GPIO_ROTARY_B,
90 .inverted_a = 0,
91 .inverted_b = 0,
92};
93
94static struct platform_device rotary_encoder_device = {
95 .name = "rotary-encoder",
96 .id = 0,
97 .dev = {
98 .platform_data = &my_rotary_encoder_info,
99 }
100};
101
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 51104f9194a5..d76cfd8712e1 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -40,10 +40,16 @@ This document describes the Linux kernel Makefiles.
40 --- 6.7 Custom kbuild commands 40 --- 6.7 Custom kbuild commands
41 --- 6.8 Preprocessing linker scripts 41 --- 6.8 Preprocessing linker scripts
42 42
43 === 7 Kbuild Variables 43 === 7 Kbuild syntax for exported headers
44 === 8 Makefile language 44 --- 7.1 header-y
45 === 9 Credits 45 --- 7.2 objhdr-y
46 === 10 TODO 46 --- 7.3 destination-y
47 --- 7.4 unifdef-y (deprecated)
48
49 === 8 Kbuild Variables
50 === 9 Makefile language
51 === 10 Credits
52 === 11 TODO
47 53
48=== 1 Overview 54=== 1 Overview
49 55
@@ -310,6 +316,16 @@ more details, with real examples.
310 #arch/m68k/fpsp040/Makefile 316 #arch/m68k/fpsp040/Makefile
311 ldflags-y := -x 317 ldflags-y := -x
312 318
319 subdir-ccflags-y, subdir-asflags-y
320 The two flags listed above are similar to ccflags-y and as-falgs-y.
321 The difference is that the subdir- variants has effect for the kbuild
322 file where tey are present and all subdirectories.
323 Options specified using subdir-* are added to the commandline before
324 the options specified using the non-subdir variants.
325
326 Example:
327 subdir-ccflags-y := -Werror
328
313 CFLAGS_$@, AFLAGS_$@ 329 CFLAGS_$@, AFLAGS_$@
314 330
315 CFLAGS_$@ and AFLAGS_$@ only apply to commands in current 331 CFLAGS_$@ and AFLAGS_$@ only apply to commands in current
@@ -1143,8 +1159,69 @@ When kbuild executes, the following steps are followed (roughly):
1143 The kbuild infrastructure for *lds file are used in several 1159 The kbuild infrastructure for *lds file are used in several
1144 architecture-specific files. 1160 architecture-specific files.
1145 1161
1162=== 7 Kbuild syntax for exported headers
1163
1164The kernel include a set of headers that is exported to userspace.
1165Many headers can be exported as-is but other headers requires a
1166minimal pre-processing before they are ready for user-space.
1167The pre-processing does:
1168- drop kernel specific annotations
1169- drop include of compiler.h
1170- drop all sections that is kernel internat (guarded by ifdef __KERNEL__)
1171
1172Each relevant directory contain a file name "Kbuild" which specify the
1173headers to be exported.
1174See subsequent chapter for the syntax of the Kbuild file.
1175
1176 --- 7.1 header-y
1177
1178 header-y specify header files to be exported.
1179
1180 Example:
1181 #include/linux/Kbuild
1182 header-y += usb/
1183 header-y += aio_abi.h
1184
1185 The convention is to list one file per line and
1186 preferably in alphabetic order.
1187
1188 header-y also specify which subdirectories to visit.
1189 A subdirectory is identified by a trailing '/' which
1190 can be seen in the example above for the usb subdirectory.
1191
1192 Subdirectories are visited before their parent directories.
1193
1194 --- 7.2 objhdr-y
1195
1196 objhdr-y specifies generated files to be exported.
1197 Generated files are special as they need to be looked
1198 up in another directory when doing 'make O=...' builds.
1199
1200 Example:
1201 #include/linux/Kbuild
1202 objhdr-y += version.h
1203
1204 --- 7.3 destination-y
1205
1206 When an architecture have a set of exported headers that needs to be
1207 exported to a different directory destination-y is used.
1208 destination-y specify the destination directory for all exported
1209 headers in the file where it is present.
1210
1211 Example:
1212 #arch/xtensa/platforms/s6105/include/platform/Kbuild
1213 destination-y := include/linux
1214
1215 In the example above all exported headers in the Kbuild file
1216 will be located in the directory "include/linux" when exported.
1217
1218
1219 --- 7.4 unifdef-y (deprecated)
1220
1221 unifdef-y is deprecated. A direct replacement is header-y.
1222
1146 1223
1147=== 7 Kbuild Variables 1224=== 8 Kbuild Variables
1148 1225
1149The top Makefile exports the following variables: 1226The top Makefile exports the following variables:
1150 1227
@@ -1206,7 +1283,7 @@ The top Makefile exports the following variables:
1206 INSTALL_MOD_STRIP will used as the option(s) to the strip command. 1283 INSTALL_MOD_STRIP will used as the option(s) to the strip command.
1207 1284
1208 1285
1209=== 8 Makefile language 1286=== 9 Makefile language
1210 1287
1211The kernel Makefiles are designed to be run with GNU Make. The Makefiles 1288The kernel Makefiles are designed to be run with GNU Make. The Makefiles
1212use only the documented features of GNU Make, but they do use many 1289use only the documented features of GNU Make, but they do use many
@@ -1225,14 +1302,14 @@ time the left-hand side is used.
1225There are some cases where "=" is appropriate. Usually, though, ":=" 1302There are some cases where "=" is appropriate. Usually, though, ":="
1226is the right choice. 1303is the right choice.
1227 1304
1228=== 9 Credits 1305=== 10 Credits
1229 1306
1230Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net> 1307Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
1231Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> 1308Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
1232Updates by Sam Ravnborg <sam@ravnborg.org> 1309Updates by Sam Ravnborg <sam@ravnborg.org>
1233Language QA by Jan Engelhardt <jengelh@gmx.de> 1310Language QA by Jan Engelhardt <jengelh@gmx.de>
1234 1311
1235=== 10 TODO 1312=== 11 TODO
1236 1313
1237- Describe how kbuild supports shipped files with _shipped. 1314- Describe how kbuild supports shipped files with _shipped.
1238- Generating offset header files. 1315- Generating offset header files.
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 6172e4360f60..600cdd72900c 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -134,7 +134,7 @@ and is between 256 and 4096 characters. It is defined in the file
134./include/asm/setup.h as COMMAND_LINE_SIZE. 134./include/asm/setup.h as COMMAND_LINE_SIZE.
135 135
136 136
137 acpi= [HW,ACPI,X86-64,i386] 137 acpi= [HW,ACPI,X86]
138 Advanced Configuration and Power Interface 138 Advanced Configuration and Power Interface
139 Format: { force | off | ht | strict | noirq | rsdt } 139 Format: { force | off | ht | strict | noirq | rsdt }
140 force -- enable ACPI if default was off 140 force -- enable ACPI if default was off
@@ -218,7 +218,7 @@ and is between 256 and 4096 characters. It is defined in the file
218 acpi_osi="!string2" # remove built-in string2 218 acpi_osi="!string2" # remove built-in string2
219 acpi_osi= # disable all strings 219 acpi_osi= # disable all strings
220 220
221 acpi_pm_good [X86-32,X86-64] 221 acpi_pm_good [X86]
222 Override the pmtimer bug detection: force the kernel 222 Override the pmtimer bug detection: force the kernel
223 to assume that this machine's pmtimer latches its value 223 to assume that this machine's pmtimer latches its value
224 and always returns good values. 224 and always returns good values.
@@ -231,6 +231,35 @@ and is between 256 and 4096 characters. It is defined in the file
231 power state again in power transition. 231 power state again in power transition.
232 1 : disable the power state check 232 1 : disable the power state check
233 233
234 acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
235 Format: { level | edge | high | low }
236
237 acpi_serialize [HW,ACPI] force serialization of AML methods
238
239 acpi_skip_timer_override [HW,ACPI]
240 Recognize and ignore IRQ0/pin2 Interrupt Override.
241 For broken nForce2 BIOS resulting in XT-PIC timer.
242
243 acpi_sleep= [HW,ACPI] Sleep options
244 Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig,
245 old_ordering, s4_nonvs }
246 See Documentation/power/video.txt for information on
247 s3_bios and s3_mode.
248 s3_beep is for debugging; it makes the PC's speaker beep
249 as soon as the kernel's real-mode entry point is called.
250 s4_nohwsig prevents ACPI hardware signature from being
251 used during resume from hibernation.
252 old_ordering causes the ACPI 1.0 ordering of the _PTS
253 control method, with respect to putting devices into
254 low power states, to be enforced (the ACPI 2.0 ordering
255 of _PTS is used by default).
256 s4_nonvs prevents the kernel from saving/restoring the
257 ACPI NVS memory during hibernation.
258
259 acpi_use_timer_override [HW,ACPI]
260 Use timer override. For some broken Nvidia NF5 boards
261 that require a timer override, but don't have HPET
262
234 acpi_enforce_resources= [ACPI] 263 acpi_enforce_resources= [ACPI]
235 { strict | lax | no } 264 { strict | lax | no }
236 Check for resource conflicts between native drivers 265 Check for resource conflicts between native drivers
@@ -250,6 +279,9 @@ and is between 256 and 4096 characters. It is defined in the file
250 ad1848= [HW,OSS] 279 ad1848= [HW,OSS]
251 Format: <io>,<irq>,<dma>,<dma2>,<type> 280 Format: <io>,<irq>,<dma>,<dma2>,<type>
252 281
282 add_efi_memmap [EFI; X86] Include EFI memory map in
283 kernel's map of available physical RAM.
284
253 advansys= [HW,SCSI] 285 advansys= [HW,SCSI]
254 See header of drivers/scsi/advansys.c. 286 See header of drivers/scsi/advansys.c.
255 287
@@ -459,7 +491,7 @@ and is between 256 and 4096 characters. It is defined in the file
459 Also note the kernel might malfunction if you disable 491 Also note the kernel might malfunction if you disable
460 some critical bits. 492 some critical bits.
461 493
462 code_bytes [IA32/X86_64] How many bytes of object code to print 494 code_bytes [X86] How many bytes of object code to print
463 in an oops report. 495 in an oops report.
464 Range: 0 - 8192 496 Range: 0 - 8192
465 Default: 64 497 Default: 64
@@ -592,7 +624,7 @@ and is between 256 and 4096 characters. It is defined in the file
592 MTRR settings. This parameter disables that behavior, 624 MTRR settings. This parameter disables that behavior,
593 possibly causing your machine to run very slowly. 625 possibly causing your machine to run very slowly.
594 626
595 disable_timer_pin_1 [i386,x86-64] 627 disable_timer_pin_1 [X86]
596 Disable PIN 1 of APIC timer 628 Disable PIN 1 of APIC timer
597 Can be useful to work around chipset bugs. 629 Can be useful to work around chipset bugs.
598 630
@@ -624,7 +656,7 @@ and is between 256 and 4096 characters. It is defined in the file
624 UART at the specified I/O port or MMIO address. 656 UART at the specified I/O port or MMIO address.
625 The options are the same as for ttyS, above. 657 The options are the same as for ttyS, above.
626 658
627 earlyprintk= [X86-32,X86-64,SH,BLACKFIN] 659 earlyprintk= [X86,SH,BLACKFIN]
628 earlyprintk=vga 660 earlyprintk=vga
629 earlyprintk=serial[,ttySn[,baudrate]] 661 earlyprintk=serial[,ttySn[,baudrate]]
630 earlyprintk=dbgp 662 earlyprintk=dbgp
@@ -659,7 +691,7 @@ and is between 256 and 4096 characters. It is defined in the file
659 See Documentation/block/as-iosched.txt and 691 See Documentation/block/as-iosched.txt and
660 Documentation/block/deadline-iosched.txt for details. 692 Documentation/block/deadline-iosched.txt for details.
661 693
662 elfcorehdr= [IA64,PPC,SH,X86-32,X86_64] 694 elfcorehdr= [IA64,PPC,SH,X86]
663 Specifies physical address of start of kernel core 695 Specifies physical address of start of kernel core
664 image elf header. Generally kexec loader will 696 image elf header. Generally kexec loader will
665 pass this option to capture kernel. 697 pass this option to capture kernel.
@@ -938,7 +970,7 @@ and is between 256 and 4096 characters. It is defined in the file
938 See comment before marvel_specify_io7 in 970 See comment before marvel_specify_io7 in
939 arch/alpha/kernel/core_marvel.c. 971 arch/alpha/kernel/core_marvel.c.
940 972
941 io_delay= [X86-32,X86-64] I/O delay method 973 io_delay= [X86] I/O delay method
942 0x80 974 0x80
943 Standard port 0x80 based delay 975 Standard port 0x80 based delay
944 0xed 976 0xed
@@ -1000,7 +1032,7 @@ and is between 256 and 4096 characters. It is defined in the file
1000 1032
1001 keepinitrd [HW,ARM] 1033 keepinitrd [HW,ARM]
1002 1034
1003 kernelcore=nn[KMG] [KNL,X86-32,IA-64,PPC,X86-64] This parameter 1035 kernelcore=nn[KMG] [KNL,X86,IA-64,PPC] This parameter
1004 specifies the amount of memory usable by the kernel 1036 specifies the amount of memory usable by the kernel
1005 for non-movable allocations. The requested amount is 1037 for non-movable allocations. The requested amount is
1006 spread evenly throughout all nodes in the system. The 1038 spread evenly throughout all nodes in the system. The
@@ -1034,7 +1066,7 @@ and is between 256 and 4096 characters. It is defined in the file
1034 Configure the RouterBoard 532 series on-chip 1066 Configure the RouterBoard 532 series on-chip
1035 Ethernet adapter MAC address. 1067 Ethernet adapter MAC address.
1036 1068
1037 kstack=N [X86-32,X86-64] Print N words from the kernel stack 1069 kstack=N [X86] Print N words from the kernel stack
1038 in oops dumps. 1070 in oops dumps.
1039 1071
1040 l2cr= [PPC] 1072 l2cr= [PPC]
@@ -1044,7 +1076,7 @@ and is between 256 and 4096 characters. It is defined in the file
1044 lapic [X86-32,APIC] Enable the local APIC even if BIOS 1076 lapic [X86-32,APIC] Enable the local APIC even if BIOS
1045 disabled it. 1077 disabled it.
1046 1078
1047 lapic_timer_c2_ok [X86-32,x86-64,APIC] trust the local apic timer 1079 lapic_timer_c2_ok [X86,APIC] trust the local apic timer
1048 in C2 power state. 1080 in C2 power state.
1049 1081
1050 libata.dma= [LIBATA] DMA control 1082 libata.dma= [LIBATA] DMA control
@@ -1229,7 +1261,7 @@ and is between 256 and 4096 characters. It is defined in the file
1229 [KNL,SH] Allow user to override the default size for 1261 [KNL,SH] Allow user to override the default size for
1230 per-device physically contiguous DMA buffers. 1262 per-device physically contiguous DMA buffers.
1231 1263
1232 memmap=exactmap [KNL,X86-32,X86_64] Enable setting of an exact 1264 memmap=exactmap [KNL,X86] Enable setting of an exact
1233 E820 memory map, as specified by the user. 1265 E820 memory map, as specified by the user.
1234 Such memmap=exactmap lines can be constructed based on 1266 Such memmap=exactmap lines can be constructed based on
1235 BIOS output or other requirements. See the memmap=nn@ss 1267 BIOS output or other requirements. See the memmap=nn@ss
@@ -1320,7 +1352,7 @@ and is between 256 and 4096 characters. It is defined in the file
1320 mousedev.yres= [MOUSE] Vertical screen resolution, used for devices 1352 mousedev.yres= [MOUSE] Vertical screen resolution, used for devices
1321 reporting absolute coordinates, such as tablets 1353 reporting absolute coordinates, such as tablets
1322 1354
1323 movablecore=nn[KMG] [KNL,X86-32,IA-64,PPC,X86-64] This parameter 1355 movablecore=nn[KMG] [KNL,X86,IA-64,PPC] This parameter
1324 is similar to kernelcore except it specifies the 1356 is similar to kernelcore except it specifies the
1325 amount of memory used for migratable allocations. 1357 amount of memory used for migratable allocations.
1326 If both kernelcore and movablecore is specified, 1358 If both kernelcore and movablecore is specified,
@@ -1422,7 +1454,7 @@ and is between 256 and 4096 characters. It is defined in the file
1422 when a NMI is triggered. 1454 when a NMI is triggered.
1423 Format: [state][,regs][,debounce][,die] 1455 Format: [state][,regs][,debounce][,die]
1424 1456
1425 nmi_watchdog= [KNL,BUGS=X86-32,X86-64] Debugging features for SMP kernels 1457 nmi_watchdog= [KNL,BUGS=X86] Debugging features for SMP kernels
1426 Format: [panic,][num] 1458 Format: [panic,][num]
1427 Valid num: 0,1,2 1459 Valid num: 0,1,2
1428 0 - turn nmi_watchdog off 1460 0 - turn nmi_watchdog off
@@ -1475,11 +1507,11 @@ and is between 256 and 4096 characters. It is defined in the file
1475 1507
1476 nodsp [SH] Disable hardware DSP at boot time. 1508 nodsp [SH] Disable hardware DSP at boot time.
1477 1509
1478 noefi [X86-32,X86-64] Disable EFI runtime services support. 1510 noefi [X86] Disable EFI runtime services support.
1479 1511
1480 noexec [IA-64] 1512 noexec [IA-64]
1481 1513
1482 noexec [X86-32,X86-64] 1514 noexec [X86]
1483 On X86-32 available only on PAE configured kernels. 1515 On X86-32 available only on PAE configured kernels.
1484 noexec=on: enable non-executable mappings (default) 1516 noexec=on: enable non-executable mappings (default)
1485 noexec=off: disable non-executable mappings 1517 noexec=off: disable non-executable mappings
@@ -1525,7 +1557,7 @@ and is between 256 and 4096 characters. It is defined in the file
1525 noirqdebug [X86-32] Disables the code which attempts to detect and 1557 noirqdebug [X86-32] Disables the code which attempts to detect and
1526 disable unhandled interrupt sources. 1558 disable unhandled interrupt sources.
1527 1559
1528 no_timer_check [X86-32,X86_64,APIC] Disables the code which tests for 1560 no_timer_check [X86,APIC] Disables the code which tests for
1529 broken timer IRQ sources. 1561 broken timer IRQ sources.
1530 1562
1531 noisapnp [ISAPNP] Disables ISA PnP code. 1563 noisapnp [ISAPNP] Disables ISA PnP code.
@@ -1689,7 +1721,7 @@ and is between 256 and 4096 characters. It is defined in the file
1689 disable the use of PCIE advanced error reporting. 1721 disable the use of PCIE advanced error reporting.
1690 nodomains [PCI] Disable support for multiple PCI 1722 nodomains [PCI] Disable support for multiple PCI
1691 root domains (aka PCI segments, in ACPI-speak). 1723 root domains (aka PCI segments, in ACPI-speak).
1692 nommconf [X86-32,X86_64] Disable use of MMCONFIG for PCI 1724 nommconf [X86] Disable use of MMCONFIG for PCI
1693 Configuration 1725 Configuration
1694 nomsi [MSI] If the PCI_MSI kernel config parameter is 1726 nomsi [MSI] If the PCI_MSI kernel config parameter is
1695 enabled, this kernel boot option can be used to 1727 enabled, this kernel boot option can be used to
@@ -1838,6 +1870,12 @@ and is between 256 and 4096 characters. It is defined in the file
1838 autoconfiguration. 1870 autoconfiguration.
1839 Ranges are in pairs (memory base and size). 1871 Ranges are in pairs (memory base and size).
1840 1872
1873 ports= [IP_VS_FTP] IPVS ftp helper module
1874 Default is 21.
1875 Up to 8 (IP_VS_APP_MAX_PORTS) ports
1876 may be specified.
1877 Format: <port>,<port>....
1878
1841 print-fatal-signals= 1879 print-fatal-signals=
1842 [KNL] debug: print fatal signals 1880 [KNL] debug: print fatal signals
1843 print-fatal-signals=1: print segfault info to 1881 print-fatal-signals=1: print segfault info to
@@ -2380,7 +2418,7 @@ and is between 256 and 4096 characters. It is defined in the file
2380 reported either. 2418 reported either.
2381 2419
2382 unknown_nmi_panic 2420 unknown_nmi_panic
2383 [X86-32,X86-64] 2421 [X86]
2384 Set unknown_nmi_panic=1 early on boot. 2422 Set unknown_nmi_panic=1 early on boot.
2385 2423
2386 usbcore.autosuspend= 2424 usbcore.autosuspend=
@@ -2447,12 +2485,12 @@ and is between 256 and 4096 characters. It is defined in the file
2447 medium is write-protected). 2485 medium is write-protected).
2448 Example: quirks=0419:aaf5:rl,0421:0433:rc 2486 Example: quirks=0419:aaf5:rl,0421:0433:rc
2449 2487
2450 vdso= [X86-32,SH,x86-64] 2488 vdso= [X86,SH]
2451 vdso=2: enable compat VDSO (default with COMPAT_VDSO) 2489 vdso=2: enable compat VDSO (default with COMPAT_VDSO)
2452 vdso=1: enable VDSO (default) 2490 vdso=1: enable VDSO (default)
2453 vdso=0: disable VDSO mapping 2491 vdso=0: disable VDSO mapping
2454 2492
2455 vdso32= [X86-32,X86-64] 2493 vdso32= [X86]
2456 vdso32=2: enable compat VDSO (default with COMPAT_VDSO) 2494 vdso32=2: enable compat VDSO (default with COMPAT_VDSO)
2457 vdso32=1: enable 32-bit VDSO (default) 2495 vdso32=1: enable 32-bit VDSO (default)
2458 vdso32=0: disable 32-bit VDSO mapping 2496 vdso32=0: disable 32-bit VDSO mapping
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 3d7650768bb5..e7e9a69069e1 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -1,7 +1,7 @@
1 ThinkPad ACPI Extras Driver 1 ThinkPad ACPI Extras Driver
2 2
3 Version 0.22 3 Version 0.23
4 November 23rd, 2008 4 April 10th, 2009
5 5
6 Borislav Deianov <borislav@users.sf.net> 6 Borislav Deianov <borislav@users.sf.net>
7 Henrique de Moraes Holschuh <hmh@hmh.eng.br> 7 Henrique de Moraes Holschuh <hmh@hmh.eng.br>
diff --git a/Documentation/lguest/.gitignore b/Documentation/lguest/.gitignore
new file mode 100644
index 000000000000..115587fd5f65
--- /dev/null
+++ b/Documentation/lguest/.gitignore
@@ -0,0 +1 @@
lguest
diff --git a/Documentation/lguest/lguest.txt b/Documentation/lguest/lguest.txt
index 29510dc51510..28c747362f95 100644
--- a/Documentation/lguest/lguest.txt
+++ b/Documentation/lguest/lguest.txt
@@ -3,11 +3,11 @@
3 /, /` - or, A Young Coder's Illustrated Hypervisor 3 /, /` - or, A Young Coder's Illustrated Hypervisor
4 \\"--\\ http://lguest.ozlabs.org 4 \\"--\\ http://lguest.ozlabs.org
5 5
6Lguest is designed to be a minimal hypervisor for the Linux kernel, for 6Lguest is designed to be a minimal 32-bit x86 hypervisor for the Linux kernel,
7Linux developers and users to experiment with virtualization with the 7for Linux developers and users to experiment with virtualization with the
8minimum of complexity. Nonetheless, it should have sufficient 8minimum of complexity. Nonetheless, it should have sufficient features to
9features to make it useful for specific tasks, and, of course, you are 9make it useful for specific tasks, and, of course, you are encouraged to fork
10encouraged to fork and enhance it (see drivers/lguest/README). 10and enhance it (see drivers/lguest/README).
11 11
12Features: 12Features:
13 13
@@ -37,6 +37,7 @@ Running Lguest:
37 "Paravirtualized guest support" = Y 37 "Paravirtualized guest support" = Y
38 "Lguest guest support" = Y 38 "Lguest guest support" = Y
39 "High Memory Support" = off/4GB 39 "High Memory Support" = off/4GB
40 "PAE (Physical Address Extension) Support" = N
40 "Alignment value to which kernel should be aligned" = 0x100000 41 "Alignment value to which kernel should be aligned" = 0x100000
41 (CONFIG_PARAVIRT=y, CONFIG_LGUEST_GUEST=y, CONFIG_HIGHMEM64G=n and 42 (CONFIG_PARAVIRT=y, CONFIG_LGUEST_GUEST=y, CONFIG_HIGHMEM64G=n and
42 CONFIG_PHYSICAL_ALIGN=0x100000) 43 CONFIG_PHYSICAL_ALIGN=0x100000)
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index 5ede7473b425..08762750f121 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -1242,7 +1242,7 @@ monitoring is enabled, and vice-versa.
1242To add ARP targets: 1242To add ARP targets:
1243# echo +192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target 1243# echo +192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
1244# echo +192.168.0.101 > /sys/class/net/bond0/bonding/arp_ip_target 1244# echo +192.168.0.101 > /sys/class/net/bond0/bonding/arp_ip_target
1245 NOTE: up to 10 target addresses may be specified. 1245 NOTE: up to 16 target addresses may be specified.
1246 1246
1247To remove an ARP target: 1247To remove an ARP target:
1248# echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target 1248# echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 0ab0230cbcb0..d16b7a1c3793 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -43,12 +43,11 @@ Table of Contents
43 2) Representing devices without a current OF specification 43 2) Representing devices without a current OF specification
44 a) PHY nodes 44 a) PHY nodes
45 b) Interrupt controllers 45 b) Interrupt controllers
46 c) CFI or JEDEC memory-mapped NOR flash 46 c) 4xx/Axon EMAC ethernet nodes
47 d) 4xx/Axon EMAC ethernet nodes 47 d) Xilinx IP cores
48 e) Xilinx IP cores 48 e) USB EHCI controllers
49 f) USB EHCI controllers 49 f) MDIO on GPIOs
50 g) MDIO on GPIOs 50 g) SPI busses
51 h) SPI busses
52 51
53 VII - Marvell Discovery mv64[345]6x System Controller chips 52 VII - Marvell Discovery mv64[345]6x System Controller chips
54 1) The /system-controller node 53 1) The /system-controller node
@@ -999,7 +998,7 @@ compatibility.
999 translation of SOC addresses for memory mapped SOC registers. 998 translation of SOC addresses for memory mapped SOC registers.
1000 - bus-frequency: Contains the bus frequency for the SOC node. 999 - bus-frequency: Contains the bus frequency for the SOC node.
1001 Typically, the value of this field is filled in by the boot 1000 Typically, the value of this field is filled in by the boot
1002 loader. 1001 loader.
1003 1002
1004 1003
1005 Recommended properties: 1004 Recommended properties:
@@ -1287,71 +1286,7 @@ platforms are moved over to use the flattened-device-tree model.
1287 device_type = "open-pic"; 1286 device_type = "open-pic";
1288 }; 1287 };
1289 1288
1290 c) CFI or JEDEC memory-mapped NOR flash 1289 c) 4xx/Axon EMAC ethernet nodes
1291
1292 Flash chips (Memory Technology Devices) are often used for solid state
1293 file systems on embedded devices.
1294
1295 - compatible : should contain the specific model of flash chip(s)
1296 used, if known, followed by either "cfi-flash" or "jedec-flash"
1297 - reg : Address range of the flash chip
1298 - bank-width : Width (in bytes) of the flash bank. Equal to the
1299 device width times the number of interleaved chips.
1300 - device-width : (optional) Width of a single flash chip. If
1301 omitted, assumed to be equal to 'bank-width'.
1302 - #address-cells, #size-cells : Must be present if the flash has
1303 sub-nodes representing partitions (see below). In this case
1304 both #address-cells and #size-cells must be equal to 1.
1305
1306 For JEDEC compatible devices, the following additional properties
1307 are defined:
1308
1309 - vendor-id : Contains the flash chip's vendor id (1 byte).
1310 - device-id : Contains the flash chip's device id (1 byte).
1311
1312 In addition to the information on the flash bank itself, the
1313 device tree may optionally contain additional information
1314 describing partitions of the flash address space. This can be
1315 used on platforms which have strong conventions about which
1316 portions of the flash are used for what purposes, but which don't
1317 use an on-flash partition table such as RedBoot.
1318
1319 Each partition is represented as a sub-node of the flash device.
1320 Each node's name represents the name of the corresponding
1321 partition of the flash device.
1322
1323 Flash partitions
1324 - reg : The partition's offset and size within the flash bank.
1325 - label : (optional) The label / name for this flash partition.
1326 If omitted, the label is taken from the node name (excluding
1327 the unit address).
1328 - read-only : (optional) This parameter, if present, is a hint to
1329 Linux that this flash partition should only be mounted
1330 read-only. This is usually used for flash partitions
1331 containing early-boot firmware images or data which should not
1332 be clobbered.
1333
1334 Example:
1335
1336 flash@ff000000 {
1337 compatible = "amd,am29lv128ml", "cfi-flash";
1338 reg = <ff000000 01000000>;
1339 bank-width = <4>;
1340 device-width = <1>;
1341 #address-cells = <1>;
1342 #size-cells = <1>;
1343 fs@0 {
1344 label = "fs";
1345 reg = <0 f80000>;
1346 };
1347 firmware@f80000 {
1348 label ="firmware";
1349 reg = <f80000 80000>;
1350 read-only;
1351 };
1352 };
1353
1354 d) 4xx/Axon EMAC ethernet nodes
1355 1290
1356 The EMAC ethernet controller in IBM and AMCC 4xx chips, and also 1291 The EMAC ethernet controller in IBM and AMCC 4xx chips, and also
1357 the Axon bridge. To operate this needs to interact with a ths 1292 the Axon bridge. To operate this needs to interact with a ths
@@ -1499,7 +1434,7 @@ platforms are moved over to use the flattened-device-tree model.
1499 available. 1434 available.
1500 For Axon: 0x0000012a 1435 For Axon: 0x0000012a
1501 1436
1502 e) Xilinx IP cores 1437 d) Xilinx IP cores
1503 1438
1504 The Xilinx EDK toolchain ships with a set of IP cores (devices) for use 1439 The Xilinx EDK toolchain ships with a set of IP cores (devices) for use
1505 in Xilinx Spartan and Virtex FPGAs. The devices cover the whole range 1440 in Xilinx Spartan and Virtex FPGAs. The devices cover the whole range
@@ -1761,7 +1696,7 @@ platforms are moved over to use the flattened-device-tree model.
1761 listed above, nodes for these devices should include a phy-handle 1696 listed above, nodes for these devices should include a phy-handle
1762 property, and may include other common network device properties 1697 property, and may include other common network device properties
1763 like local-mac-address. 1698 like local-mac-address.
1764 1699
1765 iv) Xilinx Uartlite 1700 iv) Xilinx Uartlite
1766 1701
1767 Xilinx uartlite devices are simple fixed speed serial ports. 1702 Xilinx uartlite devices are simple fixed speed serial ports.
@@ -1793,7 +1728,7 @@ platforms are moved over to use the flattened-device-tree model.
1793 - reg-offset : A value of 3 is required 1728 - reg-offset : A value of 3 is required
1794 - reg-shift : A value of 2 is required 1729 - reg-shift : A value of 2 is required
1795 1730
1796 f) USB EHCI controllers 1731 e) USB EHCI controllers
1797 1732
1798 Required properties: 1733 Required properties:
1799 - compatible : should be "usb-ehci". 1734 - compatible : should be "usb-ehci".
@@ -1819,7 +1754,7 @@ platforms are moved over to use the flattened-device-tree model.
1819 big-endian; 1754 big-endian;
1820 }; 1755 };
1821 1756
1822 g) MDIO on GPIOs 1757 f) MDIO on GPIOs
1823 1758
1824 Currently defined compatibles: 1759 Currently defined compatibles:
1825 - virtual,gpio-mdio 1760 - virtual,gpio-mdio
@@ -1839,7 +1774,7 @@ platforms are moved over to use the flattened-device-tree model.
1839 &qe_pio_c 6>; 1774 &qe_pio_c 6>;
1840 }; 1775 };
1841 1776
1842 h) SPI (Serial Peripheral Interface) busses 1777 g) SPI (Serial Peripheral Interface) busses
1843 1778
1844 SPI busses can be described with a node for the SPI master device 1779 SPI busses can be described with a node for the SPI master device
1845 and a set of child nodes for each SPI slave on the bus. For this 1780 and a set of child nodes for each SPI slave on the bus. For this
diff --git a/Documentation/powerpc/dts-bindings/fsl/i2c.txt b/Documentation/powerpc/dts-bindings/fsl/i2c.txt
index d0ab33e21fe6..b6d2e21474f9 100644
--- a/Documentation/powerpc/dts-bindings/fsl/i2c.txt
+++ b/Documentation/powerpc/dts-bindings/fsl/i2c.txt
@@ -7,8 +7,10 @@ Required properties :
7 7
8Recommended properties : 8Recommended properties :
9 9
10 - compatible : Should be "fsl-i2c" for parts compatible with 10 - compatible : compatibility list with 2 entries, the first should
11 Freescale I2C specifications. 11 be "fsl,CHIP-i2c" where CHIP is the name of a compatible processor,
12 e.g. mpc8313, mpc8543, mpc8544, mpc5200 or mpc5200b. The second one
13 should be "fsl-i2c".
12 - interrupts : <a b> where a is the interrupt number and b is a 14 - interrupts : <a b> where a is the interrupt number and b is a
13 field that represents an encoding of the sense and level 15 field that represents an encoding of the sense and level
14 information for the interrupt. This should be encoded based on 16 information for the interrupt. This should be encoded based on
@@ -16,17 +18,31 @@ Recommended properties :
16 controller you have. 18 controller you have.
17 - interrupt-parent : the phandle for the interrupt controller that 19 - interrupt-parent : the phandle for the interrupt controller that
18 services interrupts for this device. 20 services interrupts for this device.
19 - dfsrr : boolean; if defined, indicates that this I2C device has 21 - fsl,preserve-clocking : boolean; if defined, the clock settings
20 a digital filter sampling rate register 22 from the bootloader are preserved (not touched).
21 - fsl5200-clocking : boolean; if defined, indicated that this device 23 - clock-frequency : desired I2C bus clock frequency in Hz.
22 uses the FSL 5200 clocking mechanism. 24
23 25Examples :
24Example : 26
25 i2c@3000 { 27 i2c@3d00 {
26 interrupt-parent = <40000>; 28 #address-cells = <1>;
27 interrupts = <1b 3>; 29 #size-cells = <0>;
28 reg = <3000 18>; 30 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
29 device_type = "i2c"; 31 cell-index = <0>;
30 compatible = "fsl-i2c"; 32 reg = <0x3d00 0x40>;
31 dfsrr; 33 interrupts = <2 15 0>;
34 interrupt-parent = <&mpc5200_pic>;
35 fsl,preserve-clocking;
32 }; 36 };
37
38 i2c@3100 {
39 #address-cells = <1>;
40 #size-cells = <0>;
41 cell-index = <1>;
42 compatible = "fsl,mpc8544-i2c", "fsl-i2c";
43 reg = <0x3100 0x100>;
44 interrupts = <43 2>;
45 interrupt-parent = <&mpic>;
46 clock-frequency = <400000>;
47 };
48
diff --git a/Documentation/powerpc/dts-bindings/mtd-physmap.txt b/Documentation/powerpc/dts-bindings/mtd-physmap.txt
new file mode 100644
index 000000000000..667c9bde8699
--- /dev/null
+++ b/Documentation/powerpc/dts-bindings/mtd-physmap.txt
@@ -0,0 +1,80 @@
1CFI or JEDEC memory-mapped NOR flash
2
3Flash chips (Memory Technology Devices) are often used for solid state
4file systems on embedded devices.
5
6 - compatible : should contain the specific model of flash chip(s)
7 used, if known, followed by either "cfi-flash" or "jedec-flash"
8 - reg : Address range(s) of the flash chip(s)
9 It's possible to (optionally) define multiple "reg" tuples so that
10 non-identical NOR chips can be described in one flash node.
11 - bank-width : Width (in bytes) of the flash bank. Equal to the
12 device width times the number of interleaved chips.
13 - device-width : (optional) Width of a single flash chip. If
14 omitted, assumed to be equal to 'bank-width'.
15 - #address-cells, #size-cells : Must be present if the flash has
16 sub-nodes representing partitions (see below). In this case
17 both #address-cells and #size-cells must be equal to 1.
18
19For JEDEC compatible devices, the following additional properties
20are defined:
21
22 - vendor-id : Contains the flash chip's vendor id (1 byte).
23 - device-id : Contains the flash chip's device id (1 byte).
24
25In addition to the information on the flash bank itself, the
26device tree may optionally contain additional information
27describing partitions of the flash address space. This can be
28used on platforms which have strong conventions about which
29portions of the flash are used for what purposes, but which don't
30use an on-flash partition table such as RedBoot.
31
32Each partition is represented as a sub-node of the flash device.
33Each node's name represents the name of the corresponding
34partition of the flash device.
35
36Flash partitions
37 - reg : The partition's offset and size within the flash bank.
38 - label : (optional) The label / name for this flash partition.
39 If omitted, the label is taken from the node name (excluding
40 the unit address).
41 - read-only : (optional) This parameter, if present, is a hint to
42 Linux that this flash partition should only be mounted
43 read-only. This is usually used for flash partitions
44 containing early-boot firmware images or data which should not
45 be clobbered.
46
47Example:
48
49 flash@ff000000 {
50 compatible = "amd,am29lv128ml", "cfi-flash";
51 reg = <ff000000 01000000>;
52 bank-width = <4>;
53 device-width = <1>;
54 #address-cells = <1>;
55 #size-cells = <1>;
56 fs@0 {
57 label = "fs";
58 reg = <0 f80000>;
59 };
60 firmware@f80000 {
61 label ="firmware";
62 reg = <f80000 80000>;
63 read-only;
64 };
65 };
66
67Here an example with multiple "reg" tuples:
68
69 flash@f0000000,0 {
70 #address-cells = <1>;
71 #size-cells = <1>;
72 compatible = "intel,PC48F4400P0VB", "cfi-flash";
73 reg = <0 0x00000000 0x02000000
74 0 0x02000000 0x02000000>;
75 bank-width = <2>;
76 partition@0 {
77 label = "test-part1";
78 reg = <0 0x04000000>;
79 };
80 };
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt
index c5948f2f9a25..88b7433d2f11 100644
--- a/Documentation/sound/alsa/HD-Audio.txt
+++ b/Documentation/sound/alsa/HD-Audio.txt
@@ -169,7 +169,7 @@ PCI SSID look-up.
169What `model` option values are available depends on the codec chip. 169What `model` option values are available depends on the codec chip.
170Check your codec chip from the codec proc file (see "Codec Proc-File" 170Check your codec chip from the codec proc file (see "Codec Proc-File"
171section below). It will show the vendor/product name of your codec 171section below). It will show the vendor/product name of your codec
172chip. Then, see Documentation/sound/alsa/HD-Audio-Modelstxt file, 172chip. Then, see Documentation/sound/alsa/HD-Audio-Models.txt file,
173the section of HD-audio driver. You can find a list of codecs 173the section of HD-audio driver. You can find a list of codecs
174and `model` options belonging to each codec. For example, for Realtek 174and `model` options belonging to each codec. For example, for Realtek
175ALC262 codec chip, pass `model=ultra` for devices that are compatible 175ALC262 codec chip, pass `model=ultra` for devices that are compatible
@@ -177,7 +177,7 @@ with Samsung Q1 Ultra.
177 177
178Thus, the first thing you can do for any brand-new, unsupported and 178Thus, the first thing you can do for any brand-new, unsupported and
179non-working HD-audio hardware is to check HD-audio codec and several 179non-working HD-audio hardware is to check HD-audio codec and several
180different `model` option values. If you have a luck, some of them 180different `model` option values. If you have any luck, some of them
181might suit with your device well. 181might suit with your device well.
182 182
183Some codecs such as ALC880 have a special model option `model=test`. 183Some codecs such as ALC880 have a special model option `model=test`.
diff --git a/Documentation/sparse.txt b/Documentation/sparse.txt
index 42f43fa59f24..34c76a55bc04 100644
--- a/Documentation/sparse.txt
+++ b/Documentation/sparse.txt
@@ -42,6 +42,14 @@ sure that bitwise types don't get mixed up (little-endian vs big-endian
42vs cpu-endian vs whatever), and there the constant "0" really _is_ 42vs cpu-endian vs whatever), and there the constant "0" really _is_
43special. 43special.
44 44
45__bitwise__ - to be used for relatively compact stuff (gfp_t, etc.) that
46is mostly warning-free and is supposed to stay that way. Warnings will
47be generated without __CHECK_ENDIAN__.
48
49__bitwise - noisy stuff; in particular, __le*/__be* are that. We really
50don't want to drown in noise unless we'd explicitly asked for it.
51
52
45Getting sparse 53Getting sparse
46~~~~~~~~~~~~~~ 54~~~~~~~~~~~~~~
47 55
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary
index 0f5122eb282b..4a02d2508bc8 100644
--- a/Documentation/spi/spi-summary
+++ b/Documentation/spi/spi-summary
@@ -511,10 +511,16 @@ SPI MASTER METHODS
511 This sets up the device clock rate, SPI mode, and word sizes. 511 This sets up the device clock rate, SPI mode, and word sizes.
512 Drivers may change the defaults provided by board_info, and then 512 Drivers may change the defaults provided by board_info, and then
513 call spi_setup(spi) to invoke this routine. It may sleep. 513 call spi_setup(spi) to invoke this routine. It may sleep.
514
514 Unless each SPI slave has its own configuration registers, don't 515 Unless each SPI slave has its own configuration registers, don't
515 change them right away ... otherwise drivers could corrupt I/O 516 change them right away ... otherwise drivers could corrupt I/O
516 that's in progress for other SPI devices. 517 that's in progress for other SPI devices.
517 518
519 ** BUG ALERT: for some reason the first version of
520 ** many spi_master drivers seems to get this wrong.
521 ** When you code setup(), ASSUME that the controller
522 ** is actively processing transfers for another device.
523
518 master->transfer(struct spi_device *spi, struct spi_message *message) 524 master->transfer(struct spi_device *spi, struct spi_message *message)
519 This must not sleep. Its responsibility is arrange that the 525 This must not sleep. Its responsibility is arrange that the
520 transfer happens and its complete() callback is issued. The two 526 transfer happens and its complete() callback is issued. The two
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt
index a34d55b65441..df38ef046f8d 100644
--- a/Documentation/sysctl/net.txt
+++ b/Documentation/sysctl/net.txt
@@ -95,7 +95,7 @@ of struct cmsghdr structures with appended data.
95 95
96There is only one file in this directory. 96There is only one file in this directory.
97unix_dgram_qlen limits the max number of datagrams queued in Unix domain 97unix_dgram_qlen limits the max number of datagrams queued in Unix domain
98socket's buffer. It will not take effect unless PF_UNIX flag is spicified. 98socket's buffer. It will not take effect unless PF_UNIX flag is specified.
99 99
100 100
1013. /proc/sys/net/ipv4 - IPV4 settings 1013. /proc/sys/net/ipv4 - IPV4 settings
diff --git a/Documentation/tomoyo.txt b/Documentation/tomoyo.txt
new file mode 100644
index 000000000000..b3a232cae7f8
--- /dev/null
+++ b/Documentation/tomoyo.txt
@@ -0,0 +1,55 @@
1--- What is TOMOYO? ---
2
3TOMOYO is a name-based MAC extension (LSM module) for the Linux kernel.
4
5LiveCD-based tutorials are available at
6http://tomoyo.sourceforge.jp/en/1.6.x/1st-step/ubuntu8.04-live/
7http://tomoyo.sourceforge.jp/en/1.6.x/1st-step/centos5-live/ .
8Though these tutorials use non-LSM version of TOMOYO, they are useful for you
9to know what TOMOYO is.
10
11--- How to enable TOMOYO? ---
12
13Build the kernel with CONFIG_SECURITY_TOMOYO=y and pass "security=tomoyo" on
14kernel's command line.
15
16Please see http://tomoyo.sourceforge.jp/en/2.2.x/ for details.
17
18--- Where is documentation? ---
19
20User <-> Kernel interface documentation is available at
21http://tomoyo.sourceforge.jp/en/2.2.x/policy-reference.html .
22
23Materials we prepared for seminars and symposiums are available at
24http://sourceforge.jp/projects/tomoyo/docs/?category_id=532&language_id=1 .
25Below lists are chosen from three aspects.
26
27What is TOMOYO?
28 TOMOYO Linux Overview
29 http://sourceforge.jp/projects/tomoyo/docs/lca2009-takeda.pdf
30 TOMOYO Linux: pragmatic and manageable security for Linux
31 http://sourceforge.jp/projects/tomoyo/docs/freedomhectaipei-tomoyo.pdf
32 TOMOYO Linux: A Practical Method to Understand and Protect Your Own Linux Box
33 http://sourceforge.jp/projects/tomoyo/docs/PacSec2007-en-no-demo.pdf
34
35What can TOMOYO do?
36 Deep inside TOMOYO Linux
37 http://sourceforge.jp/projects/tomoyo/docs/lca2009-kumaneko.pdf
38 The role of "pathname based access control" in security.
39 http://sourceforge.jp/projects/tomoyo/docs/lfj2008-bof.pdf
40
41History of TOMOYO?
42 Realities of Mainlining
43 http://sourceforge.jp/projects/tomoyo/docs/lfj2008.pdf
44
45--- What is future plan? ---
46
47We believe that inode based security and name based security are complementary
48and both should be used together. But unfortunately, so far, we cannot enable
49multiple LSM modules at the same time. We feel sorry that you have to give up
50SELinux/SMACK/AppArmor etc. when you want to use TOMOYO.
51
52We hope that LSM becomes stackable in future. Meanwhile, you can use non-LSM
53version of TOMOYO, available at http://tomoyo.sourceforge.jp/en/1.6.x/ .
54LSM version of TOMOYO is a subset of non-LSM version of TOMOYO. We are planning
55to port non-LSM version's functionalities to LSM versions.
diff --git a/Documentation/ftrace.txt b/Documentation/trace/ftrace.txt
index fd9a3e693813..fd9a3e693813 100644
--- a/Documentation/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
diff --git a/Documentation/vm/kmemtrace.txt b/Documentation/trace/kmemtrace.txt
index a956d9b7f943..a956d9b7f943 100644
--- a/Documentation/vm/kmemtrace.txt
+++ b/Documentation/trace/kmemtrace.txt
diff --git a/Documentation/tracers/mmiotrace.txt b/Documentation/trace/mmiotrace.txt
index 5731c67abc55..5731c67abc55 100644
--- a/Documentation/tracers/mmiotrace.txt
+++ b/Documentation/trace/mmiotrace.txt
diff --git a/Documentation/tracepoints.txt b/Documentation/trace/tracepoints.txt
index c0e1ceed75a4..c0e1ceed75a4 100644
--- a/Documentation/tracepoints.txt
+++ b/Documentation/trace/tracepoints.txt
diff --git a/Documentation/vm/00-INDEX b/Documentation/vm/00-INDEX
index 2131b00b63f6..2f77ced35df7 100644
--- a/Documentation/vm/00-INDEX
+++ b/Documentation/vm/00-INDEX
@@ -1,5 +1,7 @@
100-INDEX 100-INDEX
2 - this file. 2 - this file.
3active_mm.txt
4 - An explanation from Linus about tsk->active_mm vs tsk->mm.
3balance 5balance
4 - various information on memory balancing. 6 - various information on memory balancing.
5hugetlbpage.txt 7hugetlbpage.txt
diff --git a/Documentation/vm/active_mm.txt b/Documentation/vm/active_mm.txt
new file mode 100644
index 000000000000..4ee1f643d897
--- /dev/null
+++ b/Documentation/vm/active_mm.txt
@@ -0,0 +1,83 @@
1List: linux-kernel
2Subject: Re: active_mm
3From: Linus Torvalds <torvalds () transmeta ! com>
4Date: 1999-07-30 21:36:24
5
6Cc'd to linux-kernel, because I don't write explanations all that often,
7and when I do I feel better about more people reading them.
8
9On Fri, 30 Jul 1999, David Mosberger wrote:
10>
11> Is there a brief description someplace on how "mm" vs. "active_mm" in
12> the task_struct are supposed to be used? (My apologies if this was
13> discussed on the mailing lists---I just returned from vacation and
14> wasn't able to follow linux-kernel for a while).
15
16Basically, the new setup is:
17
18 - we have "real address spaces" and "anonymous address spaces". The
19 difference is that an anonymous address space doesn't care about the
20 user-level page tables at all, so when we do a context switch into an
21 anonymous address space we just leave the previous address space
22 active.
23
24 The obvious use for a "anonymous address space" is any thread that
25 doesn't need any user mappings - all kernel threads basically fall into
26 this category, but even "real" threads can temporarily say that for
27 some amount of time they are not going to be interested in user space,
28 and that the scheduler might as well try to avoid wasting time on
29 switching the VM state around. Currently only the old-style bdflush
30 sync does that.
31
32 - "tsk->mm" points to the "real address space". For an anonymous process,
33 tsk->mm will be NULL, for the logical reason that an anonymous process
34 really doesn't _have_ a real address space at all.
35
36 - however, we obviously need to keep track of which address space we
37 "stole" for such an anonymous user. For that, we have "tsk->active_mm",
38 which shows what the currently active address space is.
39
40 The rule is that for a process with a real address space (ie tsk->mm is
41 non-NULL) the active_mm obviously always has to be the same as the real
42 one.
43
44 For a anonymous process, tsk->mm == NULL, and tsk->active_mm is the
45 "borrowed" mm while the anonymous process is running. When the
46 anonymous process gets scheduled away, the borrowed address space is
47 returned and cleared.
48
49To support all that, the "struct mm_struct" now has two counters: a
50"mm_users" counter that is how many "real address space users" there are,
51and a "mm_count" counter that is the number of "lazy" users (ie anonymous
52users) plus one if there are any real users.
53
54Usually there is at least one real user, but it could be that the real
55user exited on another CPU while a lazy user was still active, so you do
56actually get cases where you have a address space that is _only_ used by
57lazy users. That is often a short-lived state, because once that thread
58gets scheduled away in favour of a real thread, the "zombie" mm gets
59released because "mm_users" becomes zero.
60
61Also, a new rule is that _nobody_ ever has "init_mm" as a real MM any
62more. "init_mm" should be considered just a "lazy context when no other
63context is available", and in fact it is mainly used just at bootup when
64no real VM has yet been created. So code that used to check
65
66 if (current->mm == &init_mm)
67
68should generally just do
69
70 if (!current->mm)
71
72instead (which makes more sense anyway - the test is basically one of "do
73we have a user context", and is generally done by the page fault handler
74and things like that).
75
76Anyway, I put a pre-patch-2.3.13-1 on ftp.kernel.org just a moment ago,
77because it slightly changes the interfaces to accomodate the alpha (who
78would have thought it, but the alpha actually ends up having one of the
79ugliest context switch codes - unlike the other architectures where the MM
80and register state is separate, the alpha PALcode joins the two, and you
81need to switch both together).
82
83(From http://marc.info/?l=linux-kernel&m=93337278602211&w=2)
diff --git a/Documentation/vm/unevictable-lru.txt b/Documentation/vm/unevictable-lru.txt
index 0706a7282a8c..2d70d0d95108 100644
--- a/Documentation/vm/unevictable-lru.txt
+++ b/Documentation/vm/unevictable-lru.txt
@@ -1,588 +1,691 @@
1 1 ==============================
2This document describes the Linux memory management "Unevictable LRU" 2 UNEVICTABLE LRU INFRASTRUCTURE
3infrastructure and the use of this infrastructure to manage several types 3 ==============================
4of "unevictable" pages. The document attempts to provide the overall 4
5rationale behind this mechanism and the rationale for some of the design 5========
6decisions that drove the implementation. The latter design rationale is 6CONTENTS
7discussed in the context of an implementation description. Admittedly, one 7========
8can obtain the implementation details--the "what does it do?"--by reading the 8
9code. One hopes that the descriptions below add value by provide the answer 9 (*) The Unevictable LRU
10to "why does it do that?". 10
11 11 - The unevictable page list.
12Unevictable LRU Infrastructure: 12 - Memory control group interaction.
13 13 - Marking address spaces unevictable.
14The Unevictable LRU adds an additional LRU list to track unevictable pages 14 - Detecting Unevictable Pages.
15and to hide these pages from vmscan. This mechanism is based on a patch by 15 - vmscan's handling of unevictable pages.
16Larry Woodman of Red Hat to address several scalability problems with page 16
17 (*) mlock()'d pages.
18
19 - History.
20 - Basic management.
21 - mlock()/mlockall() system call handling.
22 - Filtering special vmas.
23 - munlock()/munlockall() system call handling.
24 - Migrating mlocked pages.
25 - mmap(MAP_LOCKED) system call handling.
26 - munmap()/exit()/exec() system call handling.
27 - try_to_unmap().
28 - try_to_munlock() reverse map scan.
29 - Page reclaim in shrink_*_list().
30
31
32============
33INTRODUCTION
34============
35
36This document describes the Linux memory manager's "Unevictable LRU"
37infrastructure and the use of this to manage several types of "unevictable"
38pages.
39
40The document attempts to provide the overall rationale behind this mechanism
41and the rationale for some of the design decisions that drove the
42implementation. The latter design rationale is discussed in the context of an
43implementation description. Admittedly, one can obtain the implementation
44details - the "what does it do?" - by reading the code. One hopes that the
45descriptions below add value by provide the answer to "why does it do that?".
46
47
48===================
49THE UNEVICTABLE LRU
50===================
51
52The Unevictable LRU facility adds an additional LRU list to track unevictable
53pages and to hide these pages from vmscan. This mechanism is based on a patch
54by Larry Woodman of Red Hat to address several scalability problems with page
17reclaim in Linux. The problems have been observed at customer sites on large 55reclaim in Linux. The problems have been observed at customer sites on large
18memory x86_64 systems. For example, a non-numal x86_64 platform with 128GB 56memory x86_64 systems.
19of main memory will have over 32 million 4k pages in a single zone. When a 57
20large fraction of these pages are not evictable for any reason [see below], 58To illustrate this with an example, a non-NUMA x86_64 platform with 128GB of
21vmscan will spend a lot of time scanning the LRU lists looking for the small 59main memory will have over 32 million 4k pages in a single zone. When a large
22fraction of pages that are evictable. This can result in a situation where 60fraction of these pages are not evictable for any reason [see below], vmscan
23all cpus are spending 100% of their time in vmscan for hours or days on end, 61will spend a lot of time scanning the LRU lists looking for the small fraction
24with the system completely unresponsive. 62of pages that are evictable. This can result in a situation where all CPUs are
25 63spending 100% of their time in vmscan for hours or days on end, with the system
26The Unevictable LRU infrastructure addresses the following classes of 64completely unresponsive.
27unevictable pages: 65
28 66The unevictable list addresses the following classes of unevictable pages:
29+ page owned by ramfs 67
30+ page mapped into SHM_LOCKed shared memory regions 68 (*) Those owned by ramfs.
31+ page mapped into VM_LOCKED [mlock()ed] vmas 69
32 70 (*) Those mapped into SHM_LOCK'd shared memory regions.
33The infrastructure might be able to handle other conditions that make pages 71
72 (*) Those mapped into VM_LOCKED [mlock()ed] VMAs.
73
74The infrastructure may also be able to handle other conditions that make pages
34unevictable, either by definition or by circumstance, in the future. 75unevictable, either by definition or by circumstance, in the future.
35 76
36 77
37The Unevictable LRU List 78THE UNEVICTABLE PAGE LIST
79-------------------------
38 80
39The Unevictable LRU infrastructure consists of an additional, per-zone, LRU list 81The Unevictable LRU infrastructure consists of an additional, per-zone, LRU list
40called the "unevictable" list and an associated page flag, PG_unevictable, to 82called the "unevictable" list and an associated page flag, PG_unevictable, to
41indicate that the page is being managed on the unevictable list. The 83indicate that the page is being managed on the unevictable list.
42PG_unevictable flag is analogous to, and mutually exclusive with, the PG_active 84
43flag in that it indicates on which LRU list a page resides when PG_lru is set. 85The PG_unevictable flag is analogous to, and mutually exclusive with, the
44The unevictable LRU list is source configurable based on the UNEVICTABLE_LRU 86PG_active flag in that it indicates on which LRU list a page resides when
45Kconfig option. 87PG_lru is set. The unevictable list is compile-time configurable based on the
88UNEVICTABLE_LRU Kconfig option.
46 89
47The Unevictable LRU infrastructure maintains unevictable pages on an additional 90The Unevictable LRU infrastructure maintains unevictable pages on an additional
48LRU list for a few reasons: 91LRU list for a few reasons:
49 92
501) We get to "treat unevictable pages just like we treat other pages in the 93 (1) We get to "treat unevictable pages just like we treat other pages in the
51 system, which means we get to use the same code to manipulate them, the 94 system - which means we get to use the same code to manipulate them, the
52 same code to isolate them (for migrate, etc.), the same code to keep track 95 same code to isolate them (for migrate, etc.), the same code to keep track
53 of the statistics, etc..." [Rik van Riel] 96 of the statistics, etc..." [Rik van Riel]
97
98 (2) We want to be able to migrate unevictable pages between nodes for memory
99 defragmentation, workload management and memory hotplug. The linux kernel
100 can only migrate pages that it can successfully isolate from the LRU
101 lists. If we were to maintain pages elsewhere than on an LRU-like list,
102 where they can be found by isolate_lru_page(), we would prevent their
103 migration, unless we reworked migration code to find the unevictable pages
104 itself.
54 105
552) We want to be able to migrate unevictable pages between nodes--for memory
56 defragmentation, workload management and memory hotplug. The linux kernel
57 can only migrate pages that it can successfully isolate from the lru lists.
58 If we were to maintain pages elsewise than on an lru-like list, where they
59 can be found by isolate_lru_page(), we would prevent their migration, unless
60 we reworked migration code to find the unevictable pages.
61 106
107The unevictable list does not differentiate between file-backed and anonymous,
108swap-backed pages. This differentiation is only important while the pages are,
109in fact, evictable.
62 110
63The unevictable LRU list does not differentiate between file backed and swap 111The unevictable list benefits from the "arrayification" of the per-zone LRU
64backed [anon] pages. This differentiation is only important while the pages 112lists and statistics originally proposed and posted by Christoph Lameter.
65are, in fact, evictable.
66 113
67The unevictable LRU list benefits from the "arrayification" of the per-zone 114The unevictable list does not use the LRU pagevec mechanism. Rather,
68LRU lists and statistics originally proposed and posted by Christoph Lameter. 115unevictable pages are placed directly on the page's zone's unevictable list
116under the zone lru_lock. This allows us to prevent the stranding of pages on
117the unevictable list when one task has the page isolated from the LRU and other
118tasks are changing the "evictability" state of the page.
69 119
70The unevictable list does not use the lru pagevec mechanism. Rather,
71unevictable pages are placed directly on the page's zone's unevictable
72list under the zone lru_lock. The reason for this is to prevent stranding
73of pages on the unevictable list when one task has the page isolated from the
74lru and other tasks are changing the "evictability" state of the page.
75 120
121MEMORY CONTROL GROUP INTERACTION
122--------------------------------
76 123
77Unevictable LRU and Memory Controller Interaction 124The unevictable LRU facility interacts with the memory control group [aka
125memory controller; see Documentation/cgroups/memory.txt] by extending the
126lru_list enum.
127
128The memory controller data structure automatically gets a per-zone unevictable
129list as a result of the "arrayification" of the per-zone LRU lists (one per
130lru_list enum element). The memory controller tracks the movement of pages to
131and from the unevictable list.
78 132
79The memory controller data structure automatically gets a per zone unevictable
80lru list as a result of the "arrayification" of the per-zone LRU lists. The
81memory controller tracks the movement of pages to and from the unevictable list.
82When a memory control group comes under memory pressure, the controller will 133When a memory control group comes under memory pressure, the controller will
83not attempt to reclaim pages on the unevictable list. This has a couple of 134not attempt to reclaim pages on the unevictable list. This has a couple of
84effects. Because the pages are "hidden" from reclaim on the unevictable list, 135effects:
85the reclaim process can be more efficient, dealing only with pages that have 136
86a chance of being reclaimed. On the other hand, if too many of the pages 137 (1) Because the pages are "hidden" from reclaim on the unevictable list, the
87charged to the control group are unevictable, the evictable portion of the 138 reclaim process can be more efficient, dealing only with pages that have a
88working set of the tasks in the control group may not fit into the available 139 chance of being reclaimed.
89memory. This can cause the control group to thrash or to oom-kill tasks. 140
90 141 (2) On the other hand, if too many of the pages charged to the control group
91 142 are unevictable, the evictable portion of the working set of the tasks in
92Unevictable LRU: Detecting Unevictable Pages 143 the control group may not fit into the available memory. This can cause
93 144 the control group to thrash or to OOM-kill tasks.
94The function page_evictable(page, vma) in vmscan.c determines whether a 145
95page is evictable or not. For ramfs pages and pages in SHM_LOCKed regions, 146
96page_evictable() tests a new address space flag, AS_UNEVICTABLE, in the page's 147MARKING ADDRESS SPACES UNEVICTABLE
97address space using a wrapper function. Wrapper functions are used to set, 148----------------------------------
98clear and test the flag to reduce the requirement for #ifdef's throughout the 149
99source code. AS_UNEVICTABLE is set on ramfs inode/mapping when it is created. 150For facilities such as ramfs none of the pages attached to the address space
100This flag remains for the life of the inode. 151may be evicted. To prevent eviction of any such pages, the AS_UNEVICTABLE
101 152address space flag is provided, and this can be manipulated by a filesystem
102For shared memory regions, AS_UNEVICTABLE is set when an application 153using a number of wrapper functions:
103successfully SHM_LOCKs the region and is removed when the region is 154
104SHM_UNLOCKed. Note that shmctl(SHM_LOCK, ...) does not populate the page 155 (*) void mapping_set_unevictable(struct address_space *mapping);
105tables for the region as does, for example, mlock(). So, we make no special 156
106effort to push any pages in the SHM_LOCKed region to the unevictable list. 157 Mark the address space as being completely unevictable.
107Vmscan will do this when/if it encounters the pages during reclaim. On 158
108SHM_UNLOCK, shmctl() scans the pages in the region and "rescues" them from the 159 (*) void mapping_clear_unevictable(struct address_space *mapping);
109unevictable list if no other condition keeps them unevictable. If a SHM_LOCKed 160
110region is destroyed, the pages are also "rescued" from the unevictable list in 161 Mark the address space as being evictable.
111the process of freeing them. 162
112 163 (*) int mapping_unevictable(struct address_space *mapping);
113page_evictable() detects mlock()ed pages by testing an additional page flag, 164
114PG_mlocked via the PageMlocked() wrapper. If the page is NOT mlocked, and a 165 Query the address space, and return true if it is completely
115non-NULL vma is supplied, page_evictable() will check whether the vma is 166 unevictable.
167
168These are currently used in two places in the kernel:
169
170 (1) By ramfs to mark the address spaces of its inodes when they are created,
171 and this mark remains for the life of the inode.
172
173 (2) By SYSV SHM to mark SHM_LOCK'd address spaces until SHM_UNLOCK is called.
174
175 Note that SHM_LOCK is not required to page in the locked pages if they're
176 swapped out; the application must touch the pages manually if it wants to
177 ensure they're in memory.
178
179
180DETECTING UNEVICTABLE PAGES
181---------------------------
182
183The function page_evictable() in vmscan.c determines whether a page is
184evictable or not using the query function outlined above [see section "Marking
185address spaces unevictable"] to check the AS_UNEVICTABLE flag.
186
187For address spaces that are so marked after being populated (as SHM regions
188might be), the lock action (eg: SHM_LOCK) can be lazy, and need not populate
189the page tables for the region as does, for example, mlock(), nor need it make
190any special effort to push any pages in the SHM_LOCK'd area to the unevictable
191list. Instead, vmscan will do this if and when it encounters the pages during
192a reclamation scan.
193
194On an unlock action (such as SHM_UNLOCK), the unlocker (eg: shmctl()) must scan
195the pages in the region and "rescue" them from the unevictable list if no other
196condition is keeping them unevictable. If an unevictable region is destroyed,
197the pages are also "rescued" from the unevictable list in the process of
198freeing them.
199
200page_evictable() also checks for mlocked pages by testing an additional page
201flag, PG_mlocked (as wrapped by PageMlocked()). If the page is NOT mlocked,
202and a non-NULL VMA is supplied, page_evictable() will check whether the VMA is
116VM_LOCKED via is_mlocked_vma(). is_mlocked_vma() will SetPageMlocked() and 203VM_LOCKED via is_mlocked_vma(). is_mlocked_vma() will SetPageMlocked() and
117update the appropriate statistics if the vma is VM_LOCKED. This method allows 204update the appropriate statistics if the vma is VM_LOCKED. This method allows
118efficient "culling" of pages in the fault path that are being faulted in to 205efficient "culling" of pages in the fault path that are being faulted in to
119VM_LOCKED vmas. 206VM_LOCKED VMAs.
120 207
121 208
122Unevictable Pages and Vmscan [shrink_*_list()] 209VMSCAN'S HANDLING OF UNEVICTABLE PAGES
210--------------------------------------
123 211
124If unevictable pages are culled in the fault path, or moved to the unevictable 212If unevictable pages are culled in the fault path, or moved to the unevictable
125list at mlock() or mmap() time, vmscan will never encounter the pages until 213list at mlock() or mmap() time, vmscan will not encounter the pages until they
126they have become evictable again, for example, via munlock() and have been 214have become evictable again (via munlock() for example) and have been "rescued"
127"rescued" from the unevictable list. However, there may be situations where we 215from the unevictable list. However, there may be situations where we decide,
128decide, for the sake of expediency, to leave a unevictable page on one of the 216for the sake of expediency, to leave a unevictable page on one of the regular
129regular active/inactive LRU lists for vmscan to deal with. Vmscan checks for 217active/inactive LRU lists for vmscan to deal with. vmscan checks for such
130such pages in all of the shrink_{active|inactive|page}_list() functions and 218pages in all of the shrink_{active|inactive|page}_list() functions and will
131will "cull" such pages that it encounters--that is, it diverts those pages to 219"cull" such pages that it encounters: that is, it diverts those pages to the
132the unevictable list for the zone being scanned. 220unevictable list for the zone being scanned.
133 221
134There may be situations where a page is mapped into a VM_LOCKED vma, but the 222There may be situations where a page is mapped into a VM_LOCKED VMA, but the
135page is not marked as PageMlocked. Such pages will make it all the way to 223page is not marked as PG_mlocked. Such pages will make it all the way to
136shrink_page_list() where they will be detected when vmscan walks the reverse 224shrink_page_list() where they will be detected when vmscan walks the reverse
137map in try_to_unmap(). If try_to_unmap() returns SWAP_MLOCK, shrink_page_list() 225map in try_to_unmap(). If try_to_unmap() returns SWAP_MLOCK,
138will cull the page at that point. 226shrink_page_list() will cull the page at that point.
139 227
140To "cull" an unevictable page, vmscan simply puts the page back on the lru 228To "cull" an unevictable page, vmscan simply puts the page back on the LRU list
141list using putback_lru_page()--the inverse operation to isolate_lru_page()-- 229using putback_lru_page() - the inverse operation to isolate_lru_page() - after
142after dropping the page lock. Because the condition which makes the page 230dropping the page lock. Because the condition which makes the page unevictable
143unevictable may change once the page is unlocked, putback_lru_page() will 231may change once the page is unlocked, putback_lru_page() will recheck the
144recheck the unevictable state of a page that it places on the unevictable lru 232unevictable state of a page that it places on the unevictable list. If the
145list. If the page has become unevictable, putback_lru_page() removes it from 233page has become unevictable, putback_lru_page() removes it from the list and
146the list and retries, including the page_unevictable() test. Because such a 234retries, including the page_unevictable() test. Because such a race is a rare
147race is a rare event and movement of pages onto the unevictable list should be 235event and movement of pages onto the unevictable list should be rare, these
148rare, these extra evictabilty checks should not occur in the majority of calls 236extra evictabilty checks should not occur in the majority of calls to
149to putback_lru_page(). 237putback_lru_page().
150 238
151 239
152Mlocked Page: Prior Work 240=============
241MLOCKED PAGES
242=============
153 243
154The "Unevictable Mlocked Pages" infrastructure is based on work originally 244The unevictable page list is also useful for mlock(), in addition to ramfs and
245SYSV SHM. Note that mlock() is only available in CONFIG_MMU=y situations; in
246NOMMU situations, all mappings are effectively mlocked.
247
248
249HISTORY
250-------
251
252The "Unevictable mlocked Pages" infrastructure is based on work originally
155posted by Nick Piggin in an RFC patch entitled "mm: mlocked pages off LRU". 253posted by Nick Piggin in an RFC patch entitled "mm: mlocked pages off LRU".
156Nick posted his patch as an alternative to a patch posted by Christoph 254Nick posted his patch as an alternative to a patch posted by Christoph Lameter
157Lameter to achieve the same objective--hiding mlocked pages from vmscan. 255to achieve the same objective: hiding mlocked pages from vmscan.
158In Nick's patch, he used one of the struct page lru list link fields as a count 256
159of VM_LOCKED vmas that map the page. This use of the link field for a count 257In Nick's patch, he used one of the struct page LRU list link fields as a count
160prevented the management of the pages on an LRU list. Thus, mlocked pages were 258of VM_LOCKED VMAs that map the page. This use of the link field for a count
161not migratable as isolate_lru_page() could not find them and the lru list link 259prevented the management of the pages on an LRU list, and thus mlocked pages
162field was not available to the migration subsystem. Nick resolved this by 260were not migratable as isolate_lru_page() could not find them, and the LRU list
163putting mlocked pages back on the lru list before attempting to isolate them, 261link field was not available to the migration subsystem.
164thus abandoning the count of VM_LOCKED vmas. When Nick's patch was integrated 262
165with the Unevictable LRU work, the count was replaced by walking the reverse 263Nick resolved this by putting mlocked pages back on the lru list before
166map to determine whether any VM_LOCKED vmas mapped the page. More on this 264attempting to isolate them, thus abandoning the count of VM_LOCKED VMAs. When
167below. 265Nick's patch was integrated with the Unevictable LRU work, the count was
168 266replaced by walking the reverse map to determine whether any VM_LOCKED VMAs
169 267mapped the page. More on this below.
170Mlocked Pages: Basic Management 268
171 269
172Mlocked pages--pages mapped into a VM_LOCKED vma--represent one class of 270BASIC MANAGEMENT
173unevictable pages. When such a page has been "noticed" by the memory 271----------------
174management subsystem, the page is marked with the PG_mlocked [PageMlocked()] 272
175flag. A PageMlocked() page will be placed on the unevictable LRU list when 273mlocked pages - pages mapped into a VM_LOCKED VMA - are a class of unevictable
176it is added to the LRU. Pages can be "noticed" by memory management in 274pages. When such a page has been "noticed" by the memory management subsystem,
177several places: 275the page is marked with the PG_mlocked flag. This can be manipulated using the
178 276PageMlocked() functions.
1791) in the mlock()/mlockall() system call handlers. 277
1802) in the mmap() system call handler when mmap()ing a region with the 278A PG_mlocked page will be placed on the unevictable list when it is added to
181 MAP_LOCKED flag, or mmap()ing a region in a task that has called 279the LRU. Such pages can be "noticed" by memory management in several places:
182 mlockall() with the MCL_FUTURE flag. Both of these conditions result 280
183 in the VM_LOCKED flag being set for the vma. 281 (1) in the mlock()/mlockall() system call handlers;
1843) in the fault path, if mlocked pages are "culled" in the fault path, 282
185 and when a VM_LOCKED stack segment is expanded. 283 (2) in the mmap() system call handler when mmapping a region with the
1864) as mentioned above, in vmscan:shrink_page_list() when attempting to 284 MAP_LOCKED flag;
187 reclaim a page in a VM_LOCKED vma via try_to_unmap(). 285
188 286 (3) mmapping a region in a task that has called mlockall() with the MCL_FUTURE
189Mlocked pages become unlocked and rescued from the unevictable list when: 287 flag
190 288
1911) mapped in a range unlocked via the munlock()/munlockall() system calls. 289 (4) in the fault path, if mlocked pages are "culled" in the fault path,
1922) munmapped() out of the last VM_LOCKED vma that maps the page, including 290 and when a VM_LOCKED stack segment is expanded; or
193 unmapping at task exit. 291
1943) when the page is truncated from the last VM_LOCKED vma of an mmap()ed file. 292 (5) as mentioned above, in vmscan:shrink_page_list() when attempting to
1954) before a page is COWed in a VM_LOCKED vma. 293 reclaim a page in a VM_LOCKED VMA via try_to_unmap()
196 294
197 295all of which result in the VM_LOCKED flag being set for the VMA if it doesn't
198Mlocked Pages: mlock()/mlockall() System Call Handling 296already have it set.
297
298mlocked pages become unlocked and rescued from the unevictable list when:
299
300 (1) mapped in a range unlocked via the munlock()/munlockall() system calls;
301
302 (2) munmap()'d out of the last VM_LOCKED VMA that maps the page, including
303 unmapping at task exit;
304
305 (3) when the page is truncated from the last VM_LOCKED VMA of an mmapped file;
306 or
307
308 (4) before a page is COW'd in a VM_LOCKED VMA.
309
310
311mlock()/mlockall() SYSTEM CALL HANDLING
312---------------------------------------
199 313
200Both [do_]mlock() and [do_]mlockall() system call handlers call mlock_fixup() 314Both [do_]mlock() and [do_]mlockall() system call handlers call mlock_fixup()
201for each vma in the range specified by the call. In the case of mlockall(), 315for each VMA in the range specified by the call. In the case of mlockall(),
202this is the entire active address space of the task. Note that mlock_fixup() 316this is the entire active address space of the task. Note that mlock_fixup()
203is used for both mlock()ing and munlock()ing a range of memory. A call to 317is used for both mlocking and munlocking a range of memory. A call to mlock()
204mlock() an already VM_LOCKED vma, or to munlock() a vma that is not VM_LOCKED 318an already VM_LOCKED VMA, or to munlock() a VMA that is not VM_LOCKED is
205is treated as a no-op--mlock_fixup() simply returns. 319treated as a no-op, and mlock_fixup() simply returns.
206 320
207If the vma passes some filtering described in "Mlocked Pages: Filtering Vmas" 321If the VMA passes some filtering as described in "Filtering Special Vmas"
208below, mlock_fixup() will attempt to merge the vma with its neighbors or split 322below, mlock_fixup() will attempt to merge the VMA with its neighbors or split
209off a subset of the vma if the range does not cover the entire vma. Once the 323off a subset of the VMA if the range does not cover the entire VMA. Once the
210vma has been merged or split or neither, mlock_fixup() will call 324VMA has been merged or split or neither, mlock_fixup() will call
211__mlock_vma_pages_range() to fault in the pages via get_user_pages() and 325__mlock_vma_pages_range() to fault in the pages via get_user_pages() and to
212to mark the pages as mlocked via mlock_vma_page(). 326mark the pages as mlocked via mlock_vma_page().
213 327
214Note that the vma being mlocked might be mapped with PROT_NONE. In this case, 328Note that the VMA being mlocked might be mapped with PROT_NONE. In this case,
215get_user_pages() will be unable to fault in the pages. That's OK. If pages 329get_user_pages() will be unable to fault in the pages. That's okay. If pages
216do end up getting faulted into this VM_LOCKED vma, we'll handle them in the 330do end up getting faulted into this VM_LOCKED VMA, we'll handle them in the
217fault path or in vmscan. 331fault path or in vmscan.
218 332
219Also note that a page returned by get_user_pages() could be truncated or 333Also note that a page returned by get_user_pages() could be truncated or
220migrated out from under us, while we're trying to mlock it. To detect 334migrated out from under us, while we're trying to mlock it. To detect this,
221this, __mlock_vma_pages_range() tests the page_mapping after acquiring 335__mlock_vma_pages_range() checks page_mapping() after acquiring the page lock.
222the page lock. If the page is still associated with its mapping, we'll 336If the page is still associated with its mapping, we'll go ahead and call
223go ahead and call mlock_vma_page(). If the mapping is gone, we just 337mlock_vma_page(). If the mapping is gone, we just unlock the page and move on.
224unlock the page and move on. Worse case, this results in page mapped 338In the worst case, this will result in a page mapped in a VM_LOCKED VMA
225in a VM_LOCKED vma remaining on a normal LRU list without being 339remaining on a normal LRU list without being PageMlocked(). Again, vmscan will
226PageMlocked(). Again, vmscan will detect and cull such pages. 340detect and cull such pages.
227 341
228mlock_vma_page(), called with the page locked [N.B., not "mlocked"], will 342mlock_vma_page() will call TestSetPageMlocked() for each page returned by
229TestSetPageMlocked() for each page returned by get_user_pages(). We use 343get_user_pages(). We use TestSetPageMlocked() because the page might already
230TestSetPageMlocked() because the page might already be mlocked by another 344be mlocked by another task/VMA and we don't want to do extra work. We
231task/vma and we don't want to do extra work. We especially do not want to 345especially do not want to count an mlocked page more than once in the
232count an mlocked page more than once in the statistics. If the page was 346statistics. If the page was already mlocked, mlock_vma_page() need do nothing
233already mlocked, mlock_vma_page() is done. 347more.
234 348
235If the page was NOT already mlocked, mlock_vma_page() attempts to isolate the 349If the page was NOT already mlocked, mlock_vma_page() attempts to isolate the
236page from the LRU, as it is likely on the appropriate active or inactive list 350page from the LRU, as it is likely on the appropriate active or inactive list
237at that time. If the isolate_lru_page() succeeds, mlock_vma_page() will 351at that time. If the isolate_lru_page() succeeds, mlock_vma_page() will put
238putback the page--putback_lru_page()--which will notice that the page is now 352back the page - by calling putback_lru_page() - which will notice that the page
239mlocked and divert the page to the zone's unevictable LRU list. If 353is now mlocked and divert the page to the zone's unevictable list. If
240mlock_vma_page() is unable to isolate the page from the LRU, vmscan will handle 354mlock_vma_page() is unable to isolate the page from the LRU, vmscan will handle
241it later if/when it attempts to reclaim the page. 355it later if and when it attempts to reclaim the page.
242 356
243 357
244Mlocked Pages: Filtering Special Vmas 358FILTERING SPECIAL VMAS
359----------------------
245 360
246mlock_fixup() filters several classes of "special" vmas: 361mlock_fixup() filters several classes of "special" VMAs:
247 362
2481) vmas with VM_IO|VM_PFNMAP set are skipped entirely. The pages behind 3631) VMAs with VM_IO or VM_PFNMAP set are skipped entirely. The pages behind
249 these mappings are inherently pinned, so we don't need to mark them as 364 these mappings are inherently pinned, so we don't need to mark them as
250 mlocked. In any case, most of the pages have no struct page in which to 365 mlocked. In any case, most of the pages have no struct page in which to so
251 so mark the page. Because of this, get_user_pages() will fail for these 366 mark the page. Because of this, get_user_pages() will fail for these VMAs,
252 vmas, so there is no sense in attempting to visit them. 367 so there is no sense in attempting to visit them.
253 368
2542) vmas mapping hugetlbfs page are already effectively pinned into memory. 3692) VMAs mapping hugetlbfs page are already effectively pinned into memory. We
255 We don't need nor want to mlock() these pages. However, to preserve the 370 neither need nor want to mlock() these pages. However, to preserve the
256 prior behavior of mlock()--before the unevictable/mlock changes-- 371 prior behavior of mlock() - before the unevictable/mlock changes -
257 mlock_fixup() will call make_pages_present() in the hugetlbfs vma range 372 mlock_fixup() will call make_pages_present() in the hugetlbfs VMA range to
258 to allocate the huge pages and populate the ptes. 373 allocate the huge pages and populate the ptes.
259 374
2603) vmas with VM_DONTEXPAND|VM_RESERVED are generally user space mappings of 3753) VMAs with VM_DONTEXPAND or VM_RESERVED are generally userspace mappings of
261 kernel pages, such as the vdso page, relay channel pages, etc. These pages 376 kernel pages, such as the VDSO page, relay channel pages, etc. These pages
262 are inherently unevictable and are not managed on the LRU lists. 377 are inherently unevictable and are not managed on the LRU lists.
263 mlock_fixup() treats these vmas the same as hugetlbfs vmas. It calls 378 mlock_fixup() treats these VMAs the same as hugetlbfs VMAs. It calls
264 make_pages_present() to populate the ptes. 379 make_pages_present() to populate the ptes.
265 380
266Note that for all of these special vmas, mlock_fixup() does not set the 381Note that for all of these special VMAs, mlock_fixup() does not set the
267VM_LOCKED flag. Therefore, we won't have to deal with them later during 382VM_LOCKED flag. Therefore, we won't have to deal with them later during
268munlock() or munmap()--for example, at task exit. Neither does mlock_fixup() 383munlock(), munmap() or task exit. Neither does mlock_fixup() account these
269account these vmas against the task's "locked_vm". 384VMAs against the task's "locked_vm".
270 385
271Mlocked Pages: Downgrading the Mmap Semaphore. 386
272 387munlock()/munlockall() SYSTEM CALL HANDLING
273mlock_fixup() must be called with the mmap semaphore held for write, because 388-------------------------------------------
274it may have to merge or split vmas. However, mlocking a large region of 389
275memory can take a long time--especially if vmscan must reclaim pages to 390The munlock() and munlockall() system calls are handled by the same functions -
276satisfy the regions requirements. Faulting in a large region with the mmap 391do_mlock[all]() - as the mlock() and mlockall() system calls with the unlock vs
277semaphore held for write can hold off other faults on the address space, in 392lock operation indicated by an argument. So, these system calls are also
278the case of a multi-threaded task. It can also hold off scans of the task's 393handled by mlock_fixup(). Again, if called for an already munlocked VMA,
279address space via /proc. While testing under heavy load, it was observed that 394mlock_fixup() simply returns. Because of the VMA filtering discussed above,
280the ps(1) command could be held off for many minutes while a large segment was 395VM_LOCKED will not be set in any "special" VMAs. So, these VMAs will be
281mlock()ed down.
282
283To address this issue, and to make the system more responsive during mlock()ing
284of large segments, mlock_fixup() downgrades the mmap semaphore to read mode
285during the call to __mlock_vma_pages_range(). This works fine. However, the
286callers of mlock_fixup() expect the semaphore to be returned in write mode.
287So, mlock_fixup() "upgrades" the semphore to write mode. Linux does not
288support an atomic upgrade_sem() call, so mlock_fixup() must drop the semaphore
289and reacquire it in write mode. In a multi-threaded task, it is possible for
290the task memory map to change while the semaphore is dropped. Therefore,
291mlock_fixup() looks up the vma at the range start address after reacquiring
292the semaphore in write mode and verifies that it still covers the original
293range. If not, mlock_fixup() returns an error [-EAGAIN]. All callers of
294mlock_fixup() have been changed to deal with this new error condition.
295
296Note: when munlocking a region, all of the pages should already be resident--
297unless we have racing threads mlocking() and munlocking() regions. So,
298unlocking should not have to wait for page allocations nor faults of any kind.
299Therefore mlock_fixup() does not downgrade the semaphore for munlock().
300
301
302Mlocked Pages: munlock()/munlockall() System Call Handling
303
304The munlock() and munlockall() system calls are handled by the same functions--
305do_mlock[all]()--as the mlock() and mlockall() system calls with the unlock
306vs lock operation indicated by an argument. So, these system calls are also
307handled by mlock_fixup(). Again, if called for an already munlock()ed vma,
308mlock_fixup() simply returns. Because of the vma filtering discussed above,
309VM_LOCKED will not be set in any "special" vmas. So, these vmas will be
310ignored for munlock. 396ignored for munlock.
311 397
312If the vma is VM_LOCKED, mlock_fixup() again attempts to merge or split off 398If the VMA is VM_LOCKED, mlock_fixup() again attempts to merge or split off the
313the specified range. The range is then munlocked via the function 399specified range. The range is then munlocked via the function
314__mlock_vma_pages_range()--the same function used to mlock a vma range-- 400__mlock_vma_pages_range() - the same function used to mlock a VMA range -
315passing a flag to indicate that munlock() is being performed. 401passing a flag to indicate that munlock() is being performed.
316 402
317Because the vma access protections could have been changed to PROT_NONE after 403Because the VMA access protections could have been changed to PROT_NONE after
318faulting in and mlocking pages, get_user_pages() was unreliable for visiting 404faulting in and mlocking pages, get_user_pages() was unreliable for visiting
319these pages for munlocking. Because we don't want to leave pages mlocked(), 405these pages for munlocking. Because we don't want to leave pages mlocked,
320get_user_pages() was enhanced to accept a flag to ignore the permissions when 406get_user_pages() was enhanced to accept a flag to ignore the permissions when
321fetching the pages--all of which should be resident as a result of previous 407fetching the pages - all of which should be resident as a result of previous
322mlock()ing. 408mlocking.
323 409
324For munlock(), __mlock_vma_pages_range() unlocks individual pages by calling 410For munlock(), __mlock_vma_pages_range() unlocks individual pages by calling
325munlock_vma_page(). munlock_vma_page() unconditionally clears the PG_mlocked 411munlock_vma_page(). munlock_vma_page() unconditionally clears the PG_mlocked
326flag using TestClearPageMlocked(). As with mlock_vma_page(), munlock_vma_page() 412flag using TestClearPageMlocked(). As with mlock_vma_page(),
327use the Test*PageMlocked() function to handle the case where the page might 413munlock_vma_page() use the Test*PageMlocked() function to handle the case where
328have already been unlocked by another task. If the page was mlocked, 414the page might have already been unlocked by another task. If the page was
329munlock_vma_page() updates that zone statistics for the number of mlocked 415mlocked, munlock_vma_page() updates that zone statistics for the number of
330pages. Note, however, that at this point we haven't checked whether the page 416mlocked pages. Note, however, that at this point we haven't checked whether
331is mapped by other VM_LOCKED vmas. 417the page is mapped by other VM_LOCKED VMAs.
332 418
333We can't call try_to_munlock(), the function that walks the reverse map to check 419We can't call try_to_munlock(), the function that walks the reverse map to
334for other VM_LOCKED vmas, without first isolating the page from the LRU. 420check for other VM_LOCKED VMAs, without first isolating the page from the LRU.
335try_to_munlock() is a variant of try_to_unmap() and thus requires that the page 421try_to_munlock() is a variant of try_to_unmap() and thus requires that the page
336not be on an lru list. [More on these below.] However, the call to 422not be on an LRU list [more on these below]. However, the call to
337isolate_lru_page() could fail, in which case we couldn't try_to_munlock(). 423isolate_lru_page() could fail, in which case we couldn't try_to_munlock(). So,
338So, we go ahead and clear PG_mlocked up front, as this might be the only chance 424we go ahead and clear PG_mlocked up front, as this might be the only chance we
339we have. If we can successfully isolate the page, we go ahead and 425have. If we can successfully isolate the page, we go ahead and
340try_to_munlock(), which will restore the PG_mlocked flag and update the zone 426try_to_munlock(), which will restore the PG_mlocked flag and update the zone
341page statistics if it finds another vma holding the page mlocked. If we fail 427page statistics if it finds another VMA holding the page mlocked. If we fail
342to isolate the page, we'll have left a potentially mlocked page on the LRU. 428to isolate the page, we'll have left a potentially mlocked page on the LRU.
343This is fine, because we'll catch it later when/if vmscan tries to reclaim the 429This is fine, because we'll catch it later if and if vmscan tries to reclaim
344page. This should be relatively rare. 430the page. This should be relatively rare.
345 431
346Mlocked Pages: Migrating Them... 432
347 433MIGRATING MLOCKED PAGES
348A page that is being migrated has been isolated from the lru lists and is 434-----------------------
349held locked across unmapping of the page, updating the page's mapping 435
350[address_space] entry and copying the contents and state, until the 436A page that is being migrated has been isolated from the LRU lists and is held
351page table entry has been replaced with an entry that refers to the new 437locked across unmapping of the page, updating the page's address space entry
352page. Linux supports migration of mlocked pages and other unevictable 438and copying the contents and state, until the page table entry has been
353pages. This involves simply moving the PageMlocked and PageUnevictable states 439replaced with an entry that refers to the new page. Linux supports migration
354from the old page to the new page. 440of mlocked pages and other unevictable pages. This involves simply moving the
355 441PG_mlocked and PG_unevictable states from the old page to the new page.
356Note that page migration can race with mlocking or munlocking of the same 442
357page. This has been discussed from the mlock/munlock perspective in the 443Note that page migration can race with mlocking or munlocking of the same page.
358respective sections above. Both processes [migration, m[un]locking], hold 444This has been discussed from the mlock/munlock perspective in the respective
359the page locked. This provides the first level of synchronization. Page 445sections above. Both processes (migration and m[un]locking) hold the page
360migration zeros out the page_mapping of the old page before unlocking it, 446locked. This provides the first level of synchronization. Page migration
361so m[un]lock can skip these pages by testing the page mapping under page 447zeros out the page_mapping of the old page before unlocking it, so m[un]lock
362lock. 448can skip these pages by testing the page mapping under page lock.
363 449
364When completing page migration, we place the new and old pages back onto the 450To complete page migration, we place the new and old pages back onto the LRU
365lru after dropping the page lock. The "unneeded" page--old page on success, 451after dropping the page lock. The "unneeded" page - old page on success, new
366new page on failure--will be freed when the reference count held by the 452page on failure - will be freed when the reference count held by the migration
367migration process is released. To ensure that we don't strand pages on the 453process is released. To ensure that we don't strand pages on the unevictable
368unevictable list because of a race between munlock and migration, page 454list because of a race between munlock and migration, page migration uses the
369migration uses the putback_lru_page() function to add migrated pages back to 455putback_lru_page() function to add migrated pages back to the LRU.
370the lru. 456
371 457
372 458mmap(MAP_LOCKED) SYSTEM CALL HANDLING
373Mlocked Pages: mmap(MAP_LOCKED) System Call Handling 459-------------------------------------
374 460
375In addition the the mlock()/mlockall() system calls, an application can request 461In addition the the mlock()/mlockall() system calls, an application can request
376that a region of memory be mlocked using the MAP_LOCKED flag with the mmap() 462that a region of memory be mlocked supplying the MAP_LOCKED flag to the mmap()
377call. Furthermore, any mmap() call or brk() call that expands the heap by a 463call. Furthermore, any mmap() call or brk() call that expands the heap by a
378task that has previously called mlockall() with the MCL_FUTURE flag will result 464task that has previously called mlockall() with the MCL_FUTURE flag will result
379in the newly mapped memory being mlocked. Before the unevictable/mlock changes, 465in the newly mapped memory being mlocked. Before the unevictable/mlock
380the kernel simply called make_pages_present() to allocate pages and populate 466changes, the kernel simply called make_pages_present() to allocate pages and
381the page table. 467populate the page table.
382 468
383To mlock a range of memory under the unevictable/mlock infrastructure, the 469To mlock a range of memory under the unevictable/mlock infrastructure, the
384mmap() handler and task address space expansion functions call 470mmap() handler and task address space expansion functions call
385mlock_vma_pages_range() specifying the vma and the address range to mlock. 471mlock_vma_pages_range() specifying the vma and the address range to mlock.
386mlock_vma_pages_range() filters vmas like mlock_fixup(), as described above in 472mlock_vma_pages_range() filters VMAs like mlock_fixup(), as described above in
387"Mlocked Pages: Filtering Vmas". It will clear the VM_LOCKED flag, which will 473"Filtering Special VMAs". It will clear the VM_LOCKED flag, which will have
388have already been set by the caller, in filtered vmas. Thus these vma's need 474already been set by the caller, in filtered VMAs. Thus these VMA's need not be
389not be visited for munlock when the region is unmapped. 475visited for munlock when the region is unmapped.
390 476
391For "normal" vmas, mlock_vma_pages_range() calls __mlock_vma_pages_range() to 477For "normal" VMAs, mlock_vma_pages_range() calls __mlock_vma_pages_range() to
392fault/allocate the pages and mlock them. Again, like mlock_fixup(), 478fault/allocate the pages and mlock them. Again, like mlock_fixup(),
393mlock_vma_pages_range() downgrades the mmap semaphore to read mode before 479mlock_vma_pages_range() downgrades the mmap semaphore to read mode before
394attempting to fault/allocate and mlock the pages; and "upgrades" the semaphore 480attempting to fault/allocate and mlock the pages and "upgrades" the semaphore
395back to write mode before returning. 481back to write mode before returning.
396 482
397The callers of mlock_vma_pages_range() will have already added the memory 483The callers of mlock_vma_pages_range() will have already added the memory range
398range to be mlocked to the task's "locked_vm". To account for filtered vmas, 484to be mlocked to the task's "locked_vm". To account for filtered VMAs,
399mlock_vma_pages_range() returns the number of pages NOT mlocked. All of the 485mlock_vma_pages_range() returns the number of pages NOT mlocked. All of the
400callers then subtract a non-negative return value from the task's locked_vm. 486callers then subtract a non-negative return value from the task's locked_vm. A
401A negative return value represent an error--for example, from get_user_pages() 487negative return value represent an error - for example, from get_user_pages()
402attempting to fault in a vma with PROT_NONE access. In this case, we leave 488attempting to fault in a VMA with PROT_NONE access. In this case, we leave the
403the memory range accounted as locked_vm, as the protections could be changed 489memory range accounted as locked_vm, as the protections could be changed later
404later and pages allocated into that region. 490and pages allocated into that region.
405 491
406 492
407Mlocked Pages: munmap()/exit()/exec() System Call Handling 493munmap()/exit()/exec() SYSTEM CALL HANDLING
494-------------------------------------------
408 495
409When unmapping an mlocked region of memory, whether by an explicit call to 496When unmapping an mlocked region of memory, whether by an explicit call to
410munmap() or via an internal unmap from exit() or exec() processing, we must 497munmap() or via an internal unmap from exit() or exec() processing, we must
411munlock the pages if we're removing the last VM_LOCKED vma that maps the pages. 498munlock the pages if we're removing the last VM_LOCKED VMA that maps the pages.
412Before the unevictable/mlock changes, mlocking did not mark the pages in any 499Before the unevictable/mlock changes, mlocking did not mark the pages in any
413way, so unmapping them required no processing. 500way, so unmapping them required no processing.
414 501
415To munlock a range of memory under the unevictable/mlock infrastructure, the 502To munlock a range of memory under the unevictable/mlock infrastructure, the
416munmap() hander and task address space tear down function call 503munmap() handler and task address space call tear down function
417munlock_vma_pages_all(). The name reflects the observation that one always 504munlock_vma_pages_all(). The name reflects the observation that one always
418specifies the entire vma range when munlock()ing during unmap of a region. 505specifies the entire VMA range when munlock()ing during unmap of a region.
419Because of the vma filtering when mlocking() regions, only "normal" vmas that 506Because of the VMA filtering when mlocking() regions, only "normal" VMAs that
420actually contain mlocked pages will be passed to munlock_vma_pages_all(). 507actually contain mlocked pages will be passed to munlock_vma_pages_all().
421 508
422munlock_vma_pages_all() clears the VM_LOCKED vma flag and, like mlock_fixup() 509munlock_vma_pages_all() clears the VM_LOCKED VMA flag and, like mlock_fixup()
423for the munlock case, calls __munlock_vma_pages_range() to walk the page table 510for the munlock case, calls __munlock_vma_pages_range() to walk the page table
424for the vma's memory range and munlock_vma_page() each resident page mapped by 511for the VMA's memory range and munlock_vma_page() each resident page mapped by
425the vma. This effectively munlocks the page, only if this is the last 512the VMA. This effectively munlocks the page, only if this is the last
426VM_LOCKED vma that maps the page. 513VM_LOCKED VMA that maps the page.
427
428 514
429Mlocked Page: try_to_unmap()
430 515
431[Note: the code changes represented by this section are really quite small 516try_to_unmap()
432compared to the text to describe what happening and why, and to discuss the 517--------------
433implications.]
434 518
435Pages can, of course, be mapped into multiple vmas. Some of these vmas may 519Pages can, of course, be mapped into multiple VMAs. Some of these VMAs may
436have VM_LOCKED flag set. It is possible for a page mapped into one or more 520have VM_LOCKED flag set. It is possible for a page mapped into one or more
437VM_LOCKED vmas not to have the PG_mlocked flag set and therefore reside on one 521VM_LOCKED VMAs not to have the PG_mlocked flag set and therefore reside on one
438of the active or inactive LRU lists. This could happen if, for example, a 522of the active or inactive LRU lists. This could happen if, for example, a task
439task in the process of munlock()ing the page could not isolate the page from 523in the process of munlocking the page could not isolate the page from the LRU.
440the LRU. As a result, vmscan/shrink_page_list() might encounter such a page 524As a result, vmscan/shrink_page_list() might encounter such a page as described
441as described in "Unevictable Pages and Vmscan [shrink_*_list()]". To 525in section "vmscan's handling of unevictable pages". To handle this situation,
442handle this situation, try_to_unmap() has been enhanced to check for VM_LOCKED 526try_to_unmap() checks for VM_LOCKED VMAs while it is walking a page's reverse
443vmas while it is walking a page's reverse map. 527map.
444 528
445try_to_unmap() is always called, by either vmscan for reclaim or for page 529try_to_unmap() is always called, by either vmscan for reclaim or for page
446migration, with the argument page locked and isolated from the LRU. BUG_ON() 530migration, with the argument page locked and isolated from the LRU. Separate
447assertions enforce this requirement. Separate functions handle anonymous and 531functions handle anonymous and mapped file pages, as these types of pages have
448mapped file pages, as these types of pages have different reverse map 532different reverse map mechanisms.
449mechanisms. 533
450 534 (*) try_to_unmap_anon()
451 try_to_unmap_anon() 535
452 536 To unmap anonymous pages, each VMA in the list anchored in the anon_vma
453To unmap anonymous pages, each vma in the list anchored in the anon_vma must be 537 must be visited - at least until a VM_LOCKED VMA is encountered. If the
454visited--at least until a VM_LOCKED vma is encountered. If the page is being 538 page is being unmapped for migration, VM_LOCKED VMAs do not stop the
455unmapped for migration, VM_LOCKED vmas do not stop the process because mlocked 539 process because mlocked pages are migratable. However, for reclaim, if
456pages are migratable. However, for reclaim, if the page is mapped into a 540 the page is mapped into a VM_LOCKED VMA, the scan stops.
457VM_LOCKED vma, the scan stops. try_to_unmap() attempts to acquire the mmap 541
458semphore of the mm_struct to which the vma belongs in read mode. If this is 542 try_to_unmap_anon() attempts to acquire in read mode the mmap semphore of
459successful, try_to_unmap() will mlock the page via mlock_vma_page()--we 543 the mm_struct to which the VMA belongs. If this is successful, it will
460wouldn't have gotten to try_to_unmap() if the page were already mlocked--and 544 mlock the page via mlock_vma_page() - we wouldn't have gotten to
461will return SWAP_MLOCK, indicating that the page is unevictable. If the 545 try_to_unmap_anon() if the page were already mlocked - and will return
462mmap semaphore cannot be acquired, we are not sure whether the page is really 546 SWAP_MLOCK, indicating that the page is unevictable.
463unevictable or not. In this case, try_to_unmap() will return SWAP_AGAIN. 547
464 548 If the mmap semaphore cannot be acquired, we are not sure whether the page
465 try_to_unmap_file() -- linear mappings 549 is really unevictable or not. In this case, try_to_unmap_anon() will
466 550 return SWAP_AGAIN.
467Unmapping of a mapped file page works the same, except that the scan visits 551
468all vmas that maps the page's index/page offset in the page's mapping's 552 (*) try_to_unmap_file() - linear mappings
469reverse map priority search tree. It must also visit each vma in the page's 553
470mapping's non-linear list, if the list is non-empty. As for anonymous pages, 554 Unmapping of a mapped file page works the same as for anonymous mappings,
471on encountering a VM_LOCKED vma for a mapped file page, try_to_unmap() will 555 except that the scan visits all VMAs that map the page's index/page offset
472attempt to acquire the associated mm_struct's mmap semaphore to mlock the page, 556 in the page's mapping's reverse map priority search tree. It also visits
473returning SWAP_MLOCK if this is successful, and SWAP_AGAIN, if not. 557 each VMA in the page's mapping's non-linear list, if the list is
474 558 non-empty.
475 try_to_unmap_file() -- non-linear mappings 559
476 560 As for anonymous pages, on encountering a VM_LOCKED VMA for a mapped file
477If a page's mapping contains a non-empty non-linear mapping vma list, then 561 page, try_to_unmap_file() will attempt to acquire the associated
478try_to_un{map|lock}() must also visit each vma in that list to determine 562 mm_struct's mmap semaphore to mlock the page, returning SWAP_MLOCK if this
479whether the page is mapped in a VM_LOCKED vma. Again, the scan must visit 563 is successful, and SWAP_AGAIN, if not.
480all vmas in the non-linear list to ensure that the pages is not/should not be 564
481mlocked. If a VM_LOCKED vma is found in the list, the scan could terminate. 565 (*) try_to_unmap_file() - non-linear mappings
482However, there is no easy way to determine whether the page is actually mapped 566
483in a given vma--either for unmapping or testing whether the VM_LOCKED vma 567 If a page's mapping contains a non-empty non-linear mapping VMA list, then
484actually pins the page. 568 try_to_un{map|lock}() must also visit each VMA in that list to determine
485 569 whether the page is mapped in a VM_LOCKED VMA. Again, the scan must visit
486So, try_to_unmap_file() handles non-linear mappings by scanning a certain 570 all VMAs in the non-linear list to ensure that the pages is not/should not
487number of pages--a "cluster"--in each non-linear vma associated with the page's 571 be mlocked.
488mapping, for each file mapped page that vmscan tries to unmap. If this happens 572
489to unmap the page we're trying to unmap, try_to_unmap() will notice this on 573 If a VM_LOCKED VMA is found in the list, the scan could terminate.
490return--(page_mapcount(page) == 0)--and return SWAP_SUCCESS. Otherwise, it 574 However, there is no easy way to determine whether the page is actually
491will return SWAP_AGAIN, causing vmscan to recirculate this page. We take 575 mapped in a given VMA - either for unmapping or testing whether the
492advantage of the cluster scan in try_to_unmap_cluster() as follows: 576 VM_LOCKED VMA actually pins the page.
493 577
494For each non-linear vma, try_to_unmap_cluster() attempts to acquire the mmap 578 try_to_unmap_file() handles non-linear mappings by scanning a certain
495semaphore of the associated mm_struct for read without blocking. If this 579 number of pages - a "cluster" - in each non-linear VMA associated with the
496attempt is successful and the vma is VM_LOCKED, try_to_unmap_cluster() will 580 page's mapping, for each file mapped page that vmscan tries to unmap. If
497retain the mmap semaphore for the scan; otherwise it drops it here. Then, 581 this happens to unmap the page we're trying to unmap, try_to_unmap() will
498for each page in the cluster, if we're holding the mmap semaphore for a locked 582 notice this on return (page_mapcount(page) will be 0) and return
499vma, try_to_unmap_cluster() calls mlock_vma_page() to mlock the page. This 583 SWAP_SUCCESS. Otherwise, it will return SWAP_AGAIN, causing vmscan to
500call is a no-op if the page is already locked, but will mlock any pages in 584 recirculate this page. We take advantage of the cluster scan in
501the non-linear mapping that happen to be unlocked. If one of the pages so 585 try_to_unmap_cluster() as follows:
502mlocked is the page passed in to try_to_unmap(), try_to_unmap_cluster() will 586
503return SWAP_MLOCK, rather than the default SWAP_AGAIN. This will allow vmscan 587 For each non-linear VMA, try_to_unmap_cluster() attempts to acquire the
504to cull the page, rather than recirculating it on the inactive list. Again, 588 mmap semaphore of the associated mm_struct for read without blocking.
505if try_to_unmap_cluster() cannot acquire the vma's mmap sem, it returns 589
506SWAP_AGAIN, indicating that the page is mapped by a VM_LOCKED vma, but 590 If this attempt is successful and the VMA is VM_LOCKED,
507couldn't be mlocked. 591 try_to_unmap_cluster() will retain the mmap semaphore for the scan;
508 592 otherwise it drops it here.
509 593
510Mlocked pages: try_to_munlock() Reverse Map Scan 594 Then, for each page in the cluster, if we're holding the mmap semaphore
511 595 for a locked VMA, try_to_unmap_cluster() calls mlock_vma_page() to
512TODO/FIXME: a better name might be page_mlocked()--analogous to the 596 mlock the page. This call is a no-op if the page is already locked,
513page_referenced() reverse map walker. 597 but will mlock any pages in the non-linear mapping that happen to be
514 598 unlocked.
515When munlock_vma_page()--see "Mlocked Pages: munlock()/munlockall() 599
516System Call Handling" above--tries to munlock a page, it needs to 600 If one of the pages so mlocked is the page passed in to try_to_unmap(),
517determine whether or not the page is mapped by any VM_LOCKED vma, without 601 try_to_unmap_cluster() will return SWAP_MLOCK, rather than the default
518actually attempting to unmap all ptes from the page. For this purpose, the 602 SWAP_AGAIN. This will allow vmscan to cull the page, rather than
519unevictable/mlock infrastructure introduced a variant of try_to_unmap() called 603 recirculating it on the inactive list.
520try_to_munlock(). 604
605 Again, if try_to_unmap_cluster() cannot acquire the VMA's mmap sem, it
606 returns SWAP_AGAIN, indicating that the page is mapped by a VM_LOCKED
607 VMA, but couldn't be mlocked.
608
609
610try_to_munlock() REVERSE MAP SCAN
611---------------------------------
612
613 [!] TODO/FIXME: a better name might be page_mlocked() - analogous to the
614 page_referenced() reverse map walker.
615
616When munlock_vma_page() [see section "munlock()/munlockall() System Call
617Handling" above] tries to munlock a page, it needs to determine whether or not
618the page is mapped by any VM_LOCKED VMA without actually attempting to unmap
619all PTEs from the page. For this purpose, the unevictable/mlock infrastructure
620introduced a variant of try_to_unmap() called try_to_munlock().
521 621
522try_to_munlock() calls the same functions as try_to_unmap() for anonymous and 622try_to_munlock() calls the same functions as try_to_unmap() for anonymous and
523mapped file pages with an additional argument specifing unlock versus unmap 623mapped file pages with an additional argument specifing unlock versus unmap
524processing. Again, these functions walk the respective reverse maps looking 624processing. Again, these functions walk the respective reverse maps looking
525for VM_LOCKED vmas. When such a vma is found for anonymous pages and file 625for VM_LOCKED VMAs. When such a VMA is found for anonymous pages and file
526pages mapped in linear VMAs, as in the try_to_unmap() case, the functions 626pages mapped in linear VMAs, as in the try_to_unmap() case, the functions
527attempt to acquire the associated mmap semphore, mlock the page via 627attempt to acquire the associated mmap semphore, mlock the page via
528mlock_vma_page() and return SWAP_MLOCK. This effectively undoes the 628mlock_vma_page() and return SWAP_MLOCK. This effectively undoes the
529pre-clearing of the page's PG_mlocked done by munlock_vma_page. 629pre-clearing of the page's PG_mlocked done by munlock_vma_page.
530 630
531If try_to_unmap() is unable to acquire a VM_LOCKED vma's associated mmap 631If try_to_unmap() is unable to acquire a VM_LOCKED VMA's associated mmap
532semaphore, it will return SWAP_AGAIN. This will allow shrink_page_list() 632semaphore, it will return SWAP_AGAIN. This will allow shrink_page_list() to
533to recycle the page on the inactive list and hope that it has better luck 633recycle the page on the inactive list and hope that it has better luck with the
534with the page next time. 634page next time.
535 635
536For file pages mapped into non-linear vmas, the try_to_munlock() logic works 636For file pages mapped into non-linear VMAs, the try_to_munlock() logic works
537slightly differently. On encountering a VM_LOCKED non-linear vma that might 637slightly differently. On encountering a VM_LOCKED non-linear VMA that might
538map the page, try_to_munlock() returns SWAP_AGAIN without actually mlocking 638map the page, try_to_munlock() returns SWAP_AGAIN without actually mlocking the
539the page. munlock_vma_page() will just leave the page unlocked and let 639page. munlock_vma_page() will just leave the page unlocked and let vmscan deal
540vmscan deal with it--the usual fallback position. 640with it - the usual fallback position.
541 641
542Note that try_to_munlock()'s reverse map walk must visit every vma in a pages' 642Note that try_to_munlock()'s reverse map walk must visit every VMA in a page's
543reverse map to determine that a page is NOT mapped into any VM_LOCKED vma. 643reverse map to determine that a page is NOT mapped into any VM_LOCKED VMA.
544However, the scan can terminate when it encounters a VM_LOCKED vma and can 644However, the scan can terminate when it encounters a VM_LOCKED VMA and can
545successfully acquire the vma's mmap semphore for read and mlock the page. 645successfully acquire the VMA's mmap semphore for read and mlock the page.
546Although try_to_munlock() can be called many [very many!] times when 646Although try_to_munlock() might be called a great many times when munlocking a
547munlock()ing a large region or tearing down a large address space that has been 647large region or tearing down a large address space that has been mlocked via
548mlocked via mlockall(), overall this is a fairly rare event. 648mlockall(), overall this is a fairly rare event.
549 649
550Mlocked Page: Page Reclaim in shrink_*_list() 650
551 651PAGE RECLAIM IN shrink_*_list()
552shrink_active_list() culls any obviously unevictable pages--i.e., 652-------------------------------
553!page_evictable(page, NULL)--diverting these to the unevictable lru 653
554list. However, shrink_active_list() only sees unevictable pages that 654shrink_active_list() culls any obviously unevictable pages - i.e.
555made it onto the active/inactive lru lists. Note that these pages do not 655!page_evictable(page, NULL) - diverting these to the unevictable list.
556have PageUnevictable set--otherwise, they would be on the unevictable list and 656However, shrink_active_list() only sees unevictable pages that made it onto the
557shrink_active_list would never see them. 657active/inactive lru lists. Note that these pages do not have PageUnevictable
658set - otherwise they would be on the unevictable list and shrink_active_list
659would never see them.
558 660
559Some examples of these unevictable pages on the LRU lists are: 661Some examples of these unevictable pages on the LRU lists are:
560 662
5611) ramfs pages that have been placed on the lru lists when first allocated. 663 (1) ramfs pages that have been placed on the LRU lists when first allocated.
664
665 (2) SHM_LOCK'd shared memory pages. shmctl(SHM_LOCK) does not attempt to
666 allocate or fault in the pages in the shared memory region. This happens
667 when an application accesses the page the first time after SHM_LOCK'ing
668 the segment.
562 669
5632) SHM_LOCKed shared memory pages. shmctl(SHM_LOCK) does not attempt to 670 (3) mlocked pages that could not be isolated from the LRU and moved to the
564 allocate or fault in the pages in the shared memory region. This happens 671 unevictable list in mlock_vma_page().
565 when an application accesses the page the first time after SHM_LOCKing
566 the segment.
567 672
5683) Mlocked pages that could not be isolated from the lru and moved to the 673 (4) Pages mapped into multiple VM_LOCKED VMAs, but try_to_munlock() couldn't
569 unevictable list in mlock_vma_page(). 674 acquire the VMA's mmap semaphore to test the flags and set PageMlocked.
675 munlock_vma_page() was forced to let the page back on to the normal LRU
676 list for vmscan to handle.
570 677
5713) Pages mapped into multiple VM_LOCKED vmas, but try_to_munlock() couldn't 678shrink_inactive_list() also diverts any unevictable pages that it finds on the
572 acquire the vma's mmap semaphore to test the flags and set PageMlocked. 679inactive lists to the appropriate zone's unevictable list.
573 munlock_vma_page() was forced to let the page back on to the normal
574 LRU list for vmscan to handle.
575 680
576shrink_inactive_list() also culls any unevictable pages that it finds on 681shrink_inactive_list() should only see SHM_LOCK'd pages that became SHM_LOCK'd
577the inactive lists, again diverting them to the appropriate zone's unevictable 682after shrink_active_list() had moved them to the inactive list, or pages mapped
578lru list. shrink_inactive_list() should only see SHM_LOCKed pages that became 683into VM_LOCKED VMAs that munlock_vma_page() couldn't isolate from the LRU to
579SHM_LOCKed after shrink_active_list() had moved them to the inactive list, or 684recheck via try_to_munlock(). shrink_inactive_list() won't notice the latter,
580pages mapped into VM_LOCKED vmas that munlock_vma_page() couldn't isolate from 685but will pass on to shrink_page_list().
581the lru to recheck via try_to_munlock(). shrink_inactive_list() won't notice
582the latter, but will pass on to shrink_page_list().
583 686
584shrink_page_list() again culls obviously unevictable pages that it could 687shrink_page_list() again culls obviously unevictable pages that it could
585encounter for similar reason to shrink_inactive_list(). Pages mapped into 688encounter for similar reason to shrink_inactive_list(). Pages mapped into
586VM_LOCKED vmas but without PG_mlocked set will make it all the way to 689VM_LOCKED VMAs but without PG_mlocked set will make it all the way to
587try_to_unmap(). shrink_page_list() will divert them to the unevictable list 690try_to_unmap(). shrink_page_list() will divert them to the unevictable list
588when try_to_unmap() returns SWAP_MLOCK, as discussed above. 691when try_to_unmap() returns SWAP_MLOCK, as discussed above.
diff --git a/MAINTAINERS b/MAINTAINERS
index c3b215970f7b..ef03abed595a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -72,7 +72,6 @@ M: Mail patches to
72L: Mailing list that is relevant to this area 72L: Mailing list that is relevant to this area
73W: Web-page with status/info 73W: Web-page with status/info
74T: SCM tree type and location. Type is one of: git, hg, quilt. 74T: SCM tree type and location. Type is one of: git, hg, quilt.
75F: Applicable files and/or directories
76S: Status, one of the following: 75S: Status, one of the following:
77 76
78 Supported: Someone is actually paid to look after this. 77 Supported: Someone is actually paid to look after this.
@@ -85,23 +84,40 @@ S: Status, one of the following:
85 it has been replaced by a better system and you 84 it has been replaced by a better system and you
86 should be using that. 85 should be using that.
87 86
87F: Files and directories with wildcard patterns.
88 A trailing slash includes all files and subdirectory files.
89 F: drivers/net/ all files in and below drivers/net
90 F: drivers/net/* all files in drivers/net, but not below
91 F: */net/* all files in "any top level directory"/net
92 One pattern per line. Multiple F: lines acceptable.
93X: Files and directories that are NOT maintained, same rules as F:
94 Files exclusions are tested before file matches.
95 Can be useful for excluding a specific subdirectory, for instance:
96 F: net/
97 X: net/ipv6/
98 matches all files in and below net excluding net/ipv6/
99
883C505 NETWORK DRIVER 1003C505 NETWORK DRIVER
89P: Philip Blundell 101P: Philip Blundell
90M: philb@gnu.org 102M: philb@gnu.org
91L: netdev@vger.kernel.org 103L: netdev@vger.kernel.org
92S: Maintained 104S: Maintained
105F: drivers/net/3c505*
93 106
943C59X NETWORK DRIVER 1073C59X NETWORK DRIVER
95P: Steffen Klassert 108P: Steffen Klassert
96M: klassert@mathematik.tu-chemnitz.de 109M: klassert@mathematik.tu-chemnitz.de
97L: netdev@vger.kernel.org 110L: netdev@vger.kernel.org
98S: Maintained 111S: Maintained
112F: Documentation/networking/vortex.txt
113F: drivers/net/3c59x.c
99 114
1003CR990 NETWORK DRIVER 1153CR990 NETWORK DRIVER
101P: David Dillow 116P: David Dillow
102M: dave@thedillows.org 117M: dave@thedillows.org
103L: netdev@vger.kernel.org 118L: netdev@vger.kernel.org
104S: Maintained 119S: Maintained
120F: drivers/net/typhoon*
105 121
1063W-9XXX SATA-RAID CONTROLLER DRIVER 1223W-9XXX SATA-RAID CONTROLLER DRIVER
107P: Adam Radford 123P: Adam Radford
@@ -109,6 +125,7 @@ M: linuxraid@amcc.com
109L: linux-scsi@vger.kernel.org 125L: linux-scsi@vger.kernel.org
110W: http://www.amcc.com 126W: http://www.amcc.com
111S: Supported 127S: Supported
128F: drivers/scsi/3w-9xxx*
112 129
1133W-XXXX ATA-RAID CONTROLLER DRIVER 1303W-XXXX ATA-RAID CONTROLLER DRIVER
114P: Adam Radford 131P: Adam Radford
@@ -116,35 +133,43 @@ M: linuxraid@amcc.com
116L: linux-scsi@vger.kernel.org 133L: linux-scsi@vger.kernel.org
117W: http://www.amcc.com 134W: http://www.amcc.com
118S: Supported 135S: Supported
136F: drivers/scsi/3w-xxxx*
119 137
12053C700 AND 53C700-66 SCSI DRIVER 13853C700 AND 53C700-66 SCSI DRIVER
121P: James E.J. Bottomley 139P: James E.J. Bottomley
122M: James.Bottomley@HansenPartnership.com 140M: James.Bottomley@HansenPartnership.com
123L: linux-scsi@vger.kernel.org 141L: linux-scsi@vger.kernel.org
124S: Maintained 142S: Maintained
143F: drivers/scsi/53c700*
125 144
1266PACK NETWORK DRIVER FOR AX.25 1456PACK NETWORK DRIVER FOR AX.25
127P: Andreas Koensgen 146P: Andreas Koensgen
128M: ajk@iehk.rwth-aachen.de 147M: ajk@iehk.rwth-aachen.de
129L: linux-hams@vger.kernel.org 148L: linux-hams@vger.kernel.org
130S: Maintained 149S: Maintained
150F: drivers/net/hamradio/6pack.c
131 151
1328169 10/100/1000 GIGABIT ETHERNET DRIVER 1528169 10/100/1000 GIGABIT ETHERNET DRIVER
133P: Francois Romieu 153P: Francois Romieu
134M: romieu@fr.zoreil.com 154M: romieu@fr.zoreil.com
135L: netdev@vger.kernel.org 155L: netdev@vger.kernel.org
136S: Maintained 156S: Maintained
157F: drivers/net/r8169.c
137 158
1388250/16?50 (AND CLONE UARTS) SERIAL DRIVER 1598250/16?50 (AND CLONE UARTS) SERIAL DRIVER
139L: linux-serial@vger.kernel.org 160L: linux-serial@vger.kernel.org
140W: http://serial.sourceforge.net 161W: http://serial.sourceforge.net
141S: Orphan 162S: Orphan
163F: drivers/serial/8250*
164F: include/linux/serial_8250.h
142 165
1438390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.] 1668390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
144P: Paul Gortmaker 167P: Paul Gortmaker
145M: p_gortmaker@yahoo.com 168M: p_gortmaker@yahoo.com
146L: netdev@vger.kernel.org 169L: netdev@vger.kernel.org
147S: Maintained 170S: Maintained
171F: drivers/net/*8390*
172F: drivers/net/ax88796.c
148 173
1499P FILE SYSTEM 1749P FILE SYSTEM
150P: Eric Van Hensbergen 175P: Eric Van Hensbergen
@@ -155,14 +180,17 @@ P: Latchesar Ionkov
155M: lucho@ionkov.net 180M: lucho@ionkov.net
156L: v9fs-developer@lists.sourceforge.net 181L: v9fs-developer@lists.sourceforge.net
157W: http://swik.net/v9fs 182W: http://swik.net/v9fs
158T: git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git 183T: git git://git.kernel.org/pub/scm/linux/kernel/ericvh/v9fs.git
159S: Maintained 184S: Maintained
185F: Documentation/filesystems/9p.txt
186F: fs/9p/
160 187
161A2232 SERIAL BOARD DRIVER 188A2232 SERIAL BOARD DRIVER
162P: Enver Haase 189P: Enver Haase
163M: A2232@gmx.net 190M: A2232@gmx.net
164L: linux-m68k@lists.linux-m68k.org 191L: linux-m68k@lists.linux-m68k.org
165S: Maintained 192S: Maintained
193F: drivers/char/ser_a2232*
166 194
167AACRAID SCSI RAID DRIVER 195AACRAID SCSI RAID DRIVER
168P: Adaptec OEM Raid Solutions 196P: Adaptec OEM Raid Solutions
@@ -170,24 +198,29 @@ M: aacraid@adaptec.com
170L: linux-scsi@vger.kernel.org 198L: linux-scsi@vger.kernel.org
171W: http://www.adaptec.com/ 199W: http://www.adaptec.com/
172S: Supported 200S: Supported
201F: Documentation/scsi/aacraid.txt
202F: drivers/scsi/aacraid/
173 203
174ABIT UGURU 1,2 HARDWARE MONITOR DRIVER 204ABIT UGURU 1,2 HARDWARE MONITOR DRIVER
175P: Hans de Goede 205P: Hans de Goede
176M: j.w.r.degoede@hhs.nl 206M: j.w.r.degoede@hhs.nl
177L: lm-sensors@lm-sensors.org 207L: lm-sensors@lm-sensors.org
178S: Maintained 208S: Maintained
209F: drivers/hwmon/abituguru.c
179 210
180ABIT UGURU 3 HARDWARE MONITOR DRIVER 211ABIT UGURU 3 HARDWARE MONITOR DRIVER
181P: Alistair John Strachan 212P: Alistair John Strachan
182M: alistair@devzero.co.uk 213M: alistair@devzero.co.uk
183L: lm-sensors@lm-sensors.org 214L: lm-sensors@lm-sensors.org
184S: Maintained 215S: Maintained
216F: drivers/hwmon/abituguru3.c
185 217
186ACENIC DRIVER 218ACENIC DRIVER
187P: Jes Sorensen 219P: Jes Sorensen
188M: jes@trained-monkey.org 220M: jes@trained-monkey.org
189L: linux-acenic@sunsite.dk 221L: linux-acenic@sunsite.dk
190S: Maintained 222S: Maintained
223F: drivers/net/acenic*
191 224
192ACER WMI LAPTOP EXTRAS 225ACER WMI LAPTOP EXTRAS
193P: Carlos Corbacho 226P: Carlos Corbacho
@@ -195,14 +228,18 @@ M: carlos@strangeworlds.co.uk
195L: aceracpi@googlegroups.com (subscribers-only) 228L: aceracpi@googlegroups.com (subscribers-only)
196W: http://code.google.com/p/aceracpi 229W: http://code.google.com/p/aceracpi
197S: Maintained 230S: Maintained
231F: drivers/platform/x86/acer-wmi.c
198 232
199ACPI 233ACPI
200P: Len Brown 234P: Len Brown
201M: lenb@kernel.org 235M: lenb@kernel.org
202L: linux-acpi@vger.kernel.org 236L: linux-acpi@vger.kernel.org
203W: http://www.lesswatts.org/projects/acpi/ 237W: http://www.lesswatts.org/projects/acpi/
204T: git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git 238T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
205S: Supported 239S: Supported
240F: drivers/acpi/
241F: drivers/pnp/pnpacpi/
242F: include/linux/acpi.h
206 243
207ACPI BATTERY DRIVERS 244ACPI BATTERY DRIVERS
208P: Alexey Starikovskiy 245P: Alexey Starikovskiy
@@ -210,6 +247,8 @@ M: astarikovskiy@suse.de
210L: linux-acpi@vger.kernel.org 247L: linux-acpi@vger.kernel.org
211W: http://www.lesswatts.org/projects/acpi/ 248W: http://www.lesswatts.org/projects/acpi/
212S: Supported 249S: Supported
250F: drivers/acpi/battery.c
251F: drivers/acpi/*sbs*
213 252
214ACPI EC DRIVER 253ACPI EC DRIVER
215P: Alexey Starikovskiy 254P: Alexey Starikovskiy
@@ -217,6 +256,7 @@ M: astarikovskiy@suse.de
217L: linux-acpi@vger.kernel.org 256L: linux-acpi@vger.kernel.org
218W: http://www.lesswatts.org/projects/acpi/ 257W: http://www.lesswatts.org/projects/acpi/
219S: Supported 258S: Supported
259F: drivers/acpi/ec.c
220 260
221ACPI FAN DRIVER 261ACPI FAN DRIVER
222P: Zhang Rui 262P: Zhang Rui
@@ -224,12 +264,14 @@ M: rui.zhang@intel.com
224L: linux-acpi@vger.kernel.org 264L: linux-acpi@vger.kernel.org
225W: http://www.lesswatts.org/projects/acpi/ 265W: http://www.lesswatts.org/projects/acpi/
226S: Supported 266S: Supported
267F: drivers/acpi/fan.c
227 268
228ACPI PCI HOTPLUG DRIVER 269ACPI PCI HOTPLUG DRIVER
229P: Kristen Carlson Accardi 270P: Kristen Carlson Accardi
230M: kristen.c.accardi@intel.com 271M: kristen.c.accardi@intel.com
231L: linux-pci@vger.kernel.org 272L: linux-pci@vger.kernel.org
232S: Supported 273S: Supported
274F: drivers/pci/hotplug/acpi*
233 275
234ACPI THERMAL DRIVER 276ACPI THERMAL DRIVER
235P: Zhang Rui 277P: Zhang Rui
@@ -237,6 +279,7 @@ M: rui.zhang@intel.com
237L: linux-acpi@vger.kernel.org 279L: linux-acpi@vger.kernel.org
238W: http://www.lesswatts.org/projects/acpi/ 280W: http://www.lesswatts.org/projects/acpi/
239S: Supported 281S: Supported
282F: drivers/acpi/*thermal*
240 283
241ACPI VIDEO DRIVER 284ACPI VIDEO DRIVER
242P: Zhang Rui 285P: Zhang Rui
@@ -244,6 +287,7 @@ M: rui.zhang@intel.com
244L: linux-acpi@vger.kernel.org 287L: linux-acpi@vger.kernel.org
245W: http://www.lesswatts.org/projects/acpi/ 288W: http://www.lesswatts.org/projects/acpi/
246S: Supported 289S: Supported
290F: drivers/acpi/video.c
247 291
248ACPI WMI DRIVER 292ACPI WMI DRIVER
249P: Carlos Corbacho 293P: Carlos Corbacho
@@ -251,6 +295,7 @@ M: carlos@strangeworlds.co.uk
251L: linux-acpi@vger.kernel.org 295L: linux-acpi@vger.kernel.org
252W: http://www.lesswatts.org/projects/acpi/ 296W: http://www.lesswatts.org/projects/acpi/
253S: Maintained 297S: Maintained
298F: drivers/platform/x86/wmi.c
254 299
255AD1889 ALSA SOUND DRIVER 300AD1889 ALSA SOUND DRIVER
256P: Kyle McMartin 301P: Kyle McMartin
@@ -260,77 +305,99 @@ M: T-Bone@parisc-linux.org
260W: http://wiki.parisc-linux.org/AD1889 305W: http://wiki.parisc-linux.org/AD1889
261L: linux-parisc@vger.kernel.org 306L: linux-parisc@vger.kernel.org
262S: Maintained 307S: Maintained
308F: sound/pci/ad1889.*
263 309
264ADM1025 HARDWARE MONITOR DRIVER 310ADM1025 HARDWARE MONITOR DRIVER
265P: Jean Delvare 311P: Jean Delvare
266M: khali@linux-fr.org 312M: khali@linux-fr.org
267L: lm-sensors@lm-sensors.org 313L: lm-sensors@lm-sensors.org
268S: Maintained 314S: Maintained
315F: Documentation/hwmon/adm1025
316F: drivers/hwmon/adm1025.c
269 317
270ADM1029 HARDWARE MONITOR DRIVER 318ADM1029 HARDWARE MONITOR DRIVER
271P: Corentin Labbe 319P: Corentin Labbe
272M: corentin.labbe@geomatys.fr 320M: corentin.labbe@geomatys.fr
273L: lm-sensors@lm-sensors.org 321L: lm-sensors@lm-sensors.org
274S: Maintained 322S: Maintained
323F: drivers/hwmon/adm1029.c
275 324
276ADM8211 WIRELESS DRIVER 325ADM8211 WIRELESS DRIVER
277P: Michael Wu 326P: Michael Wu
278M: flamingice@sourmilk.net 327M: flamingice@sourmilk.net
279L: linux-wireless@vger.kernel.org 328L: linux-wireless@vger.kernel.org
280W: http://linuxwireless.org/ 329W: http://linuxwireless.org/
281T: git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git 330T: git git://git.kernel.org/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
282S: Maintained 331S: Maintained
332F: drivers/net/wireless/adm8211.*
283 333
284ADT746X FAN DRIVER 334ADT746X FAN DRIVER
285P: Colin Leroy 335P: Colin Leroy
286M: colin@colino.net 336M: colin@colino.net
287S: Maintained 337S: Maintained
338F: drivers/macintosh/therm_adt746x.c
288 339
289ADVANSYS SCSI DRIVER 340ADVANSYS SCSI DRIVER
290P: Matthew Wilcox 341P: Matthew Wilcox
291M: matthew@wil.cx 342M: matthew@wil.cx
292L: linux-scsi@vger.kernel.org 343L: linux-scsi@vger.kernel.org
293S: Maintained 344S: Maintained
345F: Documentation/scsi/advansys.txt
346F: drivers/scsi/advansys.c
294 347
295AEDSP16 DRIVER 348AEDSP16 DRIVER
296P: Riccardo Facchetti 349P: Riccardo Facchetti
297M: fizban@tin.it 350M: fizban@tin.it
298S: Maintained 351S: Maintained
352F: sound/oss/aedsp16.c
299 353
300AFFS FILE SYSTEM 354AFFS FILE SYSTEM
301P: Roman Zippel 355P: Roman Zippel
302M: zippel@linux-m68k.org 356M: zippel@linux-m68k.org
303S: Maintained 357S: Maintained
358F: Documentation/filesystems/affs.txt
359F: fs/affs/
304 360
305AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN 361AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN
306P: David Howells 362P: David Howells
307M: dhowells@redhat.com 363M: dhowells@redhat.com
308L: linux-afs@lists.infradead.org 364L: linux-afs@lists.infradead.org
309S: Supported 365S: Supported
366F: fs/afs/
367F: include/net/af_rxrpc.h
368F: net/rxrpc/af_rxrpc.c
310 369
311AGPGART DRIVER 370AGPGART DRIVER
312P: David Airlie 371P: David Airlie
313M: airlied@linux.ie 372M: airlied@linux.ie
314T: git kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git 373T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
315S: Maintained 374S: Maintained
375F: drivers/char/agp/
376F: include/linux/agp*
316 377
317AHA152X SCSI DRIVER 378AHA152X SCSI DRIVER
318P: Juergen E. Fischer 379P: Juergen E. Fischer
319M: Juergen Fischer <fischer@norbit.de> 380M: fischer@norbit.de
320L: linux-scsi@vger.kernel.org 381L: linux-scsi@vger.kernel.org
321S: Maintained 382S: Maintained
383F: drivers/scsi/aha152x*
384F: drivers/scsi/pcmcia/aha152x*
322 385
323AIC7XXX / AIC79XX SCSI DRIVER 386AIC7XXX / AIC79XX SCSI DRIVER
324P: Hannes Reinecke 387P: Hannes Reinecke
325M: hare@suse.de 388M: hare@suse.de
326L: linux-scsi@vger.kernel.org 389L: linux-scsi@vger.kernel.org
327S: Maintained 390S: Maintained
391F: drivers/scsi/aic7xxx/
392F: drivers/scsi/aic7xxx_old/
328 393
329AIO 394AIO
330P: Benjamin LaHaise 395P: Benjamin LaHaise
331M: bcrl@kvack.org 396M: bcrl@kvack.org
332L: linux-aio@kvack.org 397L: linux-aio@kvack.org
333S: Supported 398S: Supported
399F: fs/aio.c
400F: include/linux/*aio*.h
334 401
335ALCATEL SPEEDTOUCH USB DRIVER 402ALCATEL SPEEDTOUCH USB DRIVER
336P: Duncan Sands 403P: Duncan Sands
@@ -338,17 +405,22 @@ M: duncan.sands@free.fr
338L: linux-usb@vger.kernel.org 405L: linux-usb@vger.kernel.org
339W: http://www.linux-usb.org/SpeedTouch/ 406W: http://www.linux-usb.org/SpeedTouch/
340S: Maintained 407S: Maintained
408F: drivers/usb/atm/speedtch.c
409F: drivers/usb/atm/usbatm.c
341 410
342ALCHEMY AU1XX0 MMC DRIVER 411ALCHEMY AU1XX0 MMC DRIVER
343P: Manuel Lauss 412P: Manuel Lauss
344M: manuel.lauss@gmail.com 413M: manuel.lauss@gmail.com
345S: Maintained 414S: Maintained
415F: drivers/mmc/host/au1xmmc.c
346 416
347ALI1563 I2C DRIVER 417ALI1563 I2C DRIVER
348P: Rudolf Marek 418P: Rudolf Marek
349M: r.marek@assembler.cz 419M: r.marek@assembler.cz
350L: linux-i2c@vger.kernel.org 420L: linux-i2c@vger.kernel.org
351S: Maintained 421S: Maintained
422F: Documentation/i2c/busses/i2c-ali1563
423F: drivers/i2c/busses/i2c-ali1563.c
352 424
353ALPHA PORT 425ALPHA PORT
354P: Richard Henderson 426P: Richard Henderson
@@ -358,31 +430,41 @@ P: Ivan Kokshaysky
358M: ink@jurassic.park.msu.ru 430M: ink@jurassic.park.msu.ru
359S: Maintained for 2.4; PCI support for 2.6. 431S: Maintained for 2.4; PCI support for 2.6.
360L: linux-alpha@vger.kernel.org 432L: linux-alpha@vger.kernel.org
433F: arch/alpha/
361 434
362AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER 435AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
363P: Thomas Dahlmann 436P: Thomas Dahlmann
364M: thomas.dahlmann@amd.com 437M: thomas.dahlmann@amd.com
365L: linux-geode@lists.infradead.org (moderated for non-subscribers) 438L: linux-geode@lists.infradead.org (moderated for non-subscribers)
366S: Supported 439S: Supported
440F: drivers/usb/gadget/amd5536udc.*
367 441
368AMD GEODE PROCESSOR/CHIPSET SUPPORT 442AMD GEODE PROCESSOR/CHIPSET SUPPORT
369P: Jordan Crouse 443P: Jordan Crouse
370L: linux-geode@lists.infradead.org (moderated for non-subscribers) 444L: linux-geode@lists.infradead.org (moderated for non-subscribers)
371W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html 445W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
372S: Supported 446S: Supported
447F: arch/x86/kernel/geode_32.c
448F: drivers/char/hw_random/geode-rng.c
449F: drivers/crypto/geode*
450F: drivers/video/geode/
451F: arch/x86/include/asm/geode.h
373 452
374AMD IOMMU (AMD-VI) 453AMD IOMMU (AMD-VI)
375P: Joerg Roedel 454P: Joerg Roedel
376M: joerg.roedel@amd.com 455M: joerg.roedel@amd.com
377L: iommu@lists.linux-foundation.org 456L: iommu@lists.linux-foundation.org
378T: git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git 457T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
379S: Supported 458S: Supported
459F: arch/x86/kernel/amd_iommu*.c
460F: arch/x86/include/asm/amd_iommu*.h
380 461
381AMD MICROCODE UPDATE SUPPORT 462AMD MICROCODE UPDATE SUPPORT
382P: Andreas Herrmann 463P: Andreas Herrmann
383M: andeas.herrmann3@amd.com 464M: andreas.herrmann3@amd.com
384L: amd64-microcode@amd64.org 465L: amd64-microcode@amd64.org
385S: Supported 466S: Supported
467F: arch/x86/kernel/microcode_amd.c
386 468
387AMS (Apple Motion Sensor) DRIVER 469AMS (Apple Motion Sensor) DRIVER
388P: Stelian Pop 470P: Stelian Pop
@@ -390,6 +472,7 @@ M: stelian@popies.net
390P: Michael Hanselmann 472P: Michael Hanselmann
391M: linux-kernel@hansmi.ch 473M: linux-kernel@hansmi.ch
392S: Supported 474S: Supported
475F: drivers/hwmon/ams/
393 476
394AMSO1100 RNIC DRIVER 477AMSO1100 RNIC DRIVER
395P: Tom Tucker 478P: Tom Tucker
@@ -398,6 +481,7 @@ P: Steve Wise
398M: swise@opengridcomputing.com 481M: swise@opengridcomputing.com
399L: general@lists.openfabrics.org 482L: general@lists.openfabrics.org
400S: Maintained 483S: Maintained
484F: drivers/infiniband/hw/amso1100/
401 485
402AOA (Apple Onboard Audio) ALSA DRIVER 486AOA (Apple Onboard Audio) ALSA DRIVER
403P: Johannes Berg 487P: Johannes Berg
@@ -405,6 +489,7 @@ M: johannes@sipsolutions.net
405L: linuxppc-dev@ozlabs.org 489L: linuxppc-dev@ozlabs.org
406L: alsa-devel@alsa-project.org (subscribers-only) 490L: alsa-devel@alsa-project.org (subscribers-only)
407S: Maintained 491S: Maintained
492F: sound/aoa/
408 493
409APM DRIVER 494APM DRIVER
410P: Stephen Rothwell 495P: Stephen Rothwell
@@ -412,48 +497,71 @@ M: sfr@canb.auug.org.au
412L: linux-laptop@vger.kernel.org 497L: linux-laptop@vger.kernel.org
413W: http://www.canb.auug.org.au/~sfr/ 498W: http://www.canb.auug.org.au/~sfr/
414S: Supported 499S: Supported
500F: arch/x86/kernel/apm_32.c
501F: include/linux/apm_bios.h
415 502
416APPLE BCM5974 MULTITOUCH DRIVER 503APPLE BCM5974 MULTITOUCH DRIVER
417P: Henrik Rydberg 504P: Henrik Rydberg
418M: rydberg@euromail.se 505M: rydberg@euromail.se
419L: linux-input@vger.kernel.org 506L: linux-input@vger.kernel.org
420S: Maintained 507S: Maintained
508F: drivers/input/mouse/bcm5974.c
421 509
422APPLE SMC DRIVER 510APPLE SMC DRIVER
423P: Nicolas Boichat 511P: Nicolas Boichat
424M: nicolas@boichat.ch 512M: nicolas@boichat.ch
425L: mactel-linux-devel@lists.sourceforge.net 513L: mactel-linux-devel@lists.sourceforge.net
426S: Maintained 514S: Maintained
515F: drivers/hwmon/applesmc.c
427 516
428APPLETALK NETWORK LAYER 517APPLETALK NETWORK LAYER
429P: Arnaldo Carvalho de Melo 518P: Arnaldo Carvalho de Melo
430M: acme@ghostprotocols.net 519M: acme@ghostprotocols.net
431S: Maintained 520S: Maintained
521F: drivers/net/appletalk/
522F: net/appletalk/
432 523
433APPLETOUCH TOUCHPAD DRIVER 524APPLETOUCH TOUCHPAD DRIVER
434P: Johannes Berg 525P: Johannes Berg
435M: johannes@sipsolutions.net 526M: johannes@sipsolutions.net
436L: linux-input@vger.kernel.org 527L: linux-input@vger.kernel.org
437S: Maintained 528S: Maintained
529F: Documentation/input/appletouch.txt
530F: drivers/input/mouse/appletouch.c
438 531
439ARC FRAMEBUFFER DRIVER 532ARC FRAMEBUFFER DRIVER
440P: Jaya Kumar 533P: Jaya Kumar
441M: jayalk@intworks.biz 534M: jayalk@intworks.biz
442S: Maintained 535S: Maintained
536F: drivers/video/arcfb.c
537F: drivers/video/fb_defio.c
443 538
444ARM MFM AND FLOPPY DRIVERS 539ARM MFM AND FLOPPY DRIVERS
445P: Ian Molton 540P: Ian Molton
446M: spyro@f2s.com 541M: spyro@f2s.com
447S: Maintained 542S: Maintained
543F: arch/arm/lib/floppydma.S
544F: arch/arm/include/asm/floppy.h
545
546ARM PORT
547P: Russell King
548M: linux@arm.linux.org.uk
549L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
550W: http://www.arm.linux.org.uk/
551S: Maintained
552F: arch/arm/
448 553
449ARM PRIMECELL MMCI PL180/1 DRIVER 554ARM PRIMECELL MMCI PL180/1 DRIVER
450S: Orphan 555S: Orphan
556F: drivers/mmc/host/mmci.*
451 557
452ARM/ADI ROADRUNNER MACHINE SUPPORT 558ARM/ADI ROADRUNNER MACHINE SUPPORT
453P: Lennert Buytenhek 559P: Lennert Buytenhek
454M: kernel@wantstofly.org 560M: kernel@wantstofly.org
455L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 561L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
456S: Maintained 562S: Maintained
563F: arch/arm/mach-ixp23xx/
564F: arch/arm/mach-ixp23xx/include/mach/
457 565
458ARM/ADS SPHERE MACHINE SUPPORT 566ARM/ADS SPHERE MACHINE SUPPORT
459P: Lennert Buytenhek 567P: Lennert Buytenhek
@@ -492,6 +600,13 @@ M: kernel@wantstofly.org
492L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 600L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
493S: Maintained 601S: Maintained
494 602
603ARM/CLKDEV SUPPORT
604P: Russell King
605M: linux@arm.linux.org.uk
606L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
607F: arch/arm/common/clkdev.c
608F: arch/arm/include/asm/clkdev.h
609
495ARM/COMPULAB CM-X270/EM-X270 and CM-X300 MACHINE SUPPORT 610ARM/COMPULAB CM-X270/EM-X270 and CM-X300 MACHINE SUPPORT
496P: Mike Rapoport 611P: Mike Rapoport
497M: mike@compulab.co.il 612M: mike@compulab.co.il
@@ -507,9 +622,18 @@ ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
507P: Paulius Zaleckas 622P: Paulius Zaleckas
508M: paulius.zaleckas@teltonika.lt 623M: paulius.zaleckas@teltonika.lt
509L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 624L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
510T: git gitorious.org/linux-gemini/mainline.git 625T: git git://gitorious.org/linux-gemini/mainline.git
511S: Maintained 626S: Maintained
512 627
628ARM/EBSA110 MACHINE SUPPORT
629P: Russell King
630M: linux@arm.linux.org.uk
631L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
632W: http://www.arm.linux.org.uk/
633S: Maintained
634F: arch/arm/mach-ebsa110/
635F: drivers/net/arm/am79c961a.*
636
513ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6) 637ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
514P: Daniel Ribeiro 638P: Daniel Ribeiro
515M: drwyrm@gmail.com 639M: drwyrm@gmail.com
@@ -527,6 +651,15 @@ M: paulius.zaleckas@teltonika.lt
527L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 651L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
528S: Maintained 652S: Maintained
529 653
654ARM/FOOTBRIDGE ARCHITECTURE
655P: Russell King
656M: linux@arm.linux.org.uk
657L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
658W: http://www.arm.linux.org.uk/
659S: Maintained
660F: arch/arm/include/asm/hardware/dec21285.h
661F: arch/arm/mach-footbridge/
662
530ARM/FREESCALE IMX / MXC ARM ARCHITECTURE 663ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
531P: Sascha Hauer 664P: Sascha Hauer
532M: kernel@pengutronix.de 665M: kernel@pengutronix.de
@@ -636,17 +769,17 @@ P: Dirk Opfer
636M: dirk@opfer-online.de 769M: dirk@opfer-online.de
637S: Maintained 770S: Maintained
638 771
639ARM/PALMTX,PALMT5,PALMLD SUPPORT 772ARM/PALMTX,PALMT5,PALMLD,PALMTE2 SUPPORT
640P: Marek Vasut 773P: Marek Vasut
641M: marek.vasut@gmail.com 774M: marek.vasut@gmail.com
642W: http://hackndev.com 775W: http://hackndev.com
643S: Maintained 776S: Maintained
644 777
645ARM/PALMZ72 SUPPORT 778ARM/PALMZ72 SUPPORT
646P: Sergey Lapin 779P: Sergey Lapin
647M: slapin@ossfans.org 780M: slapin@ossfans.org
648W: http://hackndev.com 781W: http://hackndev.com
649S: Maintained 782S: Maintained
650 783
651ARM/PLEB SUPPORT 784ARM/PLEB SUPPORT
652P: Peter Chubb 785P: Peter Chubb
@@ -667,19 +800,27 @@ M: kernel@wantstofly.org
667L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 800L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
668S: Maintained 801S: Maintained
669 802
803ARM/RISCPC ARCHITECTURE
804P: Russell King
805M: linux@arm.linux.org.uk
806L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
807W: http://www.arm.linux.org.uk/
808S: Maintained
809F: arch/arm/common/time-acorn.c
810F: arch/arm/include/asm/hardware/entry-macro-iomd.S
811F: arch/arm/include/asm/hardware/ioc.h
812F: arch/arm/include/asm/hardware/iomd.h
813F: arch/arm/include/asm/hardware/memc.h
814F: arch/arm/mach-rpc/
815F: drivers/net/arm/ether*
816F: drivers/scsi/arm/
817
670ARM/SHARK MACHINE SUPPORT 818ARM/SHARK MACHINE SUPPORT
671P: Alexander Schulz 819P: Alexander Schulz
672M: alex@shark-linux.de 820M: alex@shark-linux.de
673W: http://www.shark-linux.de/shark.html 821W: http://www.shark-linux.de/shark.html
674S: Maintained 822S: Maintained
675 823
676ARM/STRONGARM110 PORT
677P: Russell King
678M: rmk@arm.linux.org.uk
679L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
680W: http://www.arm.linux.org.uk/
681S: Maintained
682
683ARM/S3C2410 ARM ARCHITECTURE 824ARM/S3C2410 ARM ARCHITECTURE
684P: Ben Dooks 825P: Ben Dooks
685M: ben-linux@fluff.org 826M: ben-linux@fluff.org
@@ -707,16 +848,25 @@ L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
707S: Maintained 848S: Maintained
708 849
709ARM/NUVOTON W90X900 ARM ARCHITECTURE 850ARM/NUVOTON W90X900 ARM ARCHITECTURE
710P: Wan ZongShun 851P: Wan ZongShun
711M: mcuos.com@gmail.com 852M: mcuos.com@gmail.com
712L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 853L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
713W: http://www.mcuos.com 854W: http://www.mcuos.com
714S: Maintained 855S: Maintained
856
857ARM/VFP SUPPORT
858P: Russell King
859M: linux@arm.linux.org.uk
860L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
861W: http://www.arm.linux.org.uk/
862S: Maintained
863F: arch/arm/vfp/
715 864
716ARPD SUPPORT 865ARPD SUPPORT
717P: Jonathan Layes 866P: Jonathan Layes
718L: netdev@vger.kernel.org 867L: netdev@vger.kernel.org
719S: Maintained 868S: Maintained
869F: net/ipv4/arp.c
720 870
721ASUS ACPI EXTRAS DRIVER 871ASUS ACPI EXTRAS DRIVER
722P: Corentin Chary 872P: Corentin Chary
@@ -727,12 +877,15 @@ L: acpi4asus-user@lists.sourceforge.net
727W: http://sourceforge.net/projects/acpi4asus 877W: http://sourceforge.net/projects/acpi4asus
728W: http://xf.iksaif.net/acpi4asus 878W: http://xf.iksaif.net/acpi4asus
729S: Maintained 879S: Maintained
880F: arch/x86/kernel/acpi/boot.c
881F: drivers/platform/x86/asus_acpi.c
730 882
731ASUS ASB100 HARDWARE MONITOR DRIVER 883ASUS ASB100 HARDWARE MONITOR DRIVER
732P: Mark M. Hoffman 884P: Mark M. Hoffman
733M: mhoffman@lightlink.com 885M: mhoffman@lightlink.com
734L: lm-sensors@lm-sensors.org 886L: lm-sensors@lm-sensors.org
735S: Maintained 887S: Maintained
888F: drivers/hwmon/asb100.c
736 889
737ASUS LAPTOP EXTRAS DRIVER 890ASUS LAPTOP EXTRAS DRIVER
738P: Corentin Chary 891P: Corentin Chary
@@ -741,6 +894,7 @@ L: acpi4asus-user@lists.sourceforge.net
741W: http://sourceforge.net/projects/acpi4asus 894W: http://sourceforge.net/projects/acpi4asus
742W: http://xf.iksaif.net/acpi4asus 895W: http://xf.iksaif.net/acpi4asus
743S: Maintained 896S: Maintained
897F: drivers/platform/x86/asus-laptop.c
744 898
745ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API 899ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
746P: Dan Williams 900P: Dan Williams
@@ -750,12 +904,19 @@ M: maciej.sosnowski@intel.com
750L: linux-kernel@vger.kernel.org 904L: linux-kernel@vger.kernel.org
751W: http://sourceforge.net/projects/xscaleiop 905W: http://sourceforge.net/projects/xscaleiop
752S: Supported 906S: Supported
907F: Documentation/crypto/async-tx-api.txt
908F: crypto/async_tx/
909F: drivers/dma/
910F: include/linux/dmaengine.h
911F: include/linux/async_tx.h
753 912
754ATA OVER ETHERNET (AOE) DRIVER 913ATA OVER ETHERNET (AOE) DRIVER
755P: Ed L. Cashin 914P: Ed L. Cashin
756M: ecashin@coraid.com 915M: ecashin@coraid.com
757W: http://www.coraid.com/support/linux 916W: http://www.coraid.com/support/linux
758S: Supported 917S: Supported
918F: Documentation/aoe/
919F: drivers/block/aoe/
759 920
760ATHEROS ATH5K WIRELESS DRIVER 921ATHEROS ATH5K WIRELESS DRIVER
761P: Jiri Slaby 922P: Jiri Slaby
@@ -769,6 +930,7 @@ M: me@bobcopeland.com
769L: linux-wireless@vger.kernel.org 930L: linux-wireless@vger.kernel.org
770L: ath5k-devel@lists.ath5k.org 931L: ath5k-devel@lists.ath5k.org
771S: Maintained 932S: Maintained
933F: drivers/net/wireless/ath5k/
772 934
773ATHEROS ATH9K WIRELESS DRIVER 935ATHEROS ATH9K WIRELESS DRIVER
774P: Luis R. Rodriguez 936P: Luis R. Rodriguez
@@ -778,6 +940,7 @@ M: jmalinen@atheros.com
778L: linux-wireless@vger.kernel.org 940L: linux-wireless@vger.kernel.org
779L: ath9k-devel@lists.ath9k.org 941L: ath9k-devel@lists.ath9k.org
780S: Supported 942S: Supported
943F: drivers/net/wireless/ath9k/
781 944
782ATHEROS AR9170 WIRELESS DRIVER 945ATHEROS AR9170 WIRELESS DRIVER
783P: Christian Lamparter 946P: Christian Lamparter
@@ -791,6 +954,7 @@ ATI_REMOTE2 DRIVER
791P: Ville Syrjala 954P: Ville Syrjala
792M: syrjala@sci.fi 955M: syrjala@sci.fi
793S: Maintained 956S: Maintained
957F: drivers/input/misc/ati_remote2.c
794 958
795ATLX ETHERNET DRIVERS 959ATLX ETHERNET DRIVERS
796P: Jay Cliburn 960P: Jay Cliburn
@@ -803,6 +967,7 @@ L: atl1-devel@lists.sourceforge.net
803W: http://sourceforge.net/projects/atl1 967W: http://sourceforge.net/projects/atl1
804W: http://atl1.sourceforge.net 968W: http://atl1.sourceforge.net
805S: Maintained 969S: Maintained
970F: drivers/net/atlx/
806 971
807ATM 972ATM
808P: Chas Williams 973P: Chas Williams
@@ -811,6 +976,8 @@ L: linux-atm-general@lists.sourceforge.net (subscribers-only)
811L: netdev@vger.kernel.org 976L: netdev@vger.kernel.org
812W: http://linux-atm.sourceforge.net 977W: http://linux-atm.sourceforge.net
813S: Maintained 978S: Maintained
979F: drivers/atm/
980F: include/linux/atm*
814 981
815ATMEL AT91 MCI DRIVER 982ATMEL AT91 MCI DRIVER
816P: Nicolas Ferre 983P: Nicolas Ferre
@@ -819,28 +986,34 @@ L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
819W: http://www.atmel.com/products/AT91/ 986W: http://www.atmel.com/products/AT91/
820W: http://www.at91.com/ 987W: http://www.at91.com/
821S: Maintained 988S: Maintained
989F: drivers/mmc/host/at91_mci.c
822 990
823ATMEL AT91 / AT32 SERIAL DRIVER 991ATMEL AT91 / AT32 SERIAL DRIVER
824P: Haavard Skinnemoen 992P: Haavard Skinnemoen
825M: hskinnemoen@atmel.com 993M: hskinnemoen@atmel.com
826L: linux-kernel@vger.kernel.org 994L: linux-kernel@vger.kernel.org
827S: Supported 995S: Supported
996F: drivers/serial/atmel_serial.c
828 997
829ATMEL LCDFB DRIVER 998ATMEL LCDFB DRIVER
830P: Nicolas Ferre 999P: Nicolas Ferre
831M: nicolas.ferre@atmel.com 1000M: nicolas.ferre@atmel.com
832L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 1001L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
833S: Maintained 1002S: Maintained
1003F: drivers/video/atmel_lcdfb.c
1004F: include/video/atmel_lcdc.h
834 1005
835ATMEL MACB ETHERNET DRIVER 1006ATMEL MACB ETHERNET DRIVER
836P: Haavard Skinnemoen 1007P: Haavard Skinnemoen
837M: hskinnemoen@atmel.com 1008M: hskinnemoen@atmel.com
838S: Supported 1009S: Supported
1010F: drivers/net/macb.*
839 1011
840ATMEL SPI DRIVER 1012ATMEL SPI DRIVER
841P: Haavard Skinnemoen 1013P: Haavard Skinnemoen
842M: hskinnemoen@atmel.com 1014M: hskinnemoen@atmel.com
843S: Supported 1015S: Supported
1016F: drivers/spi/atmel_spi.*
844 1017
845ATMEL USBA UDC DRIVER 1018ATMEL USBA UDC DRIVER
846P: Haavard Skinnemoen 1019P: Haavard Skinnemoen
@@ -848,6 +1021,7 @@ M: hskinnemoen@atmel.com
848L: kernel@avr32linux.org 1021L: kernel@avr32linux.org
849W: http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver 1022W: http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
850S: Supported 1023S: Supported
1024F: drivers/usb/gadget/atmel_usba_udc.*
851 1025
852ATMEL WIRELESS DRIVER 1026ATMEL WIRELESS DRIVER
853P: Simon Kelley 1027P: Simon Kelley
@@ -856,6 +1030,7 @@ L: linux-wireless@vger.kernel.org
856W: http://www.thekelleys.org.uk/atmel 1030W: http://www.thekelleys.org.uk/atmel
857W: http://atmelwlandriver.sourceforge.net/ 1031W: http://atmelwlandriver.sourceforge.net/
858S: Maintained 1032S: Maintained
1033F: drivers/net/wireless/atmel*
859 1034
860AUDIT SUBSYSTEM 1035AUDIT SUBSYSTEM
861P: Al Viro 1036P: Al Viro
@@ -864,8 +1039,10 @@ P: Eric Paris
864M: eparis@redhat.com 1039M: eparis@redhat.com
865L: linux-audit@redhat.com (subscribers-only) 1040L: linux-audit@redhat.com (subscribers-only)
866W: http://people.redhat.com/sgrubb/audit/ 1041W: http://people.redhat.com/sgrubb/audit/
867T: git git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git 1042T: git git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git
868S: Maintained 1043S: Maintained
1044F: include/linux/audit.h
1045F: kernel/audit*
869 1046
870AUXILIARY DISPLAY DRIVERS 1047AUXILIARY DISPLAY DRIVERS
871P: Miguel Ojeda Sandonis 1048P: Miguel Ojeda Sandonis
@@ -874,6 +1051,8 @@ L: linux-kernel@vger.kernel.org
874W: http://miguelojeda.es/auxdisplay.htm 1051W: http://miguelojeda.es/auxdisplay.htm
875W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 1052W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
876S: Maintained 1053S: Maintained
1054F: drivers/auxdisplay/
1055F: include/linux/cfag12864b.h
877 1056
878AVR32 ARCHITECTURE 1057AVR32 ARCHITECTURE
879P: Haavard Skinnemoen 1058P: Haavard Skinnemoen
@@ -882,11 +1061,13 @@ W: http://www.atmel.com/products/AVR32/
882W: http://avr32linux.org/ 1061W: http://avr32linux.org/
883W: http://avrfreaks.net/ 1062W: http://avrfreaks.net/
884S: Supported 1063S: Supported
1064F: arch/avr32/
885 1065
886AVR32/AT32AP MACHINE SUPPORT 1066AVR32/AT32AP MACHINE SUPPORT
887P: Haavard Skinnemoen 1067P: Haavard Skinnemoen
888M: hskinnemoen@atmel.com 1068M: hskinnemoen@atmel.com
889S: Supported 1069S: Supported
1070F: arch/avr32/mach-at32ap/
890 1071
891AX.25 NETWORK LAYER 1072AX.25 NETWORK LAYER
892P: Ralf Baechle 1073P: Ralf Baechle
@@ -894,6 +1075,9 @@ M: ralf@linux-mips.org
894L: linux-hams@vger.kernel.org 1075L: linux-hams@vger.kernel.org
895W: http://www.linux-ax25.org/ 1076W: http://www.linux-ax25.org/
896S: Maintained 1077S: Maintained
1078F: include/linux/ax25.h
1079F: include/net/ax25.h
1080F: net/ax25/
897 1081
898B43 WIRELESS DRIVER 1082B43 WIRELESS DRIVER
899P: Michael Buesch 1083P: Michael Buesch
@@ -903,6 +1087,7 @@ M: stefano.brivio@polimi.it
903L: linux-wireless@vger.kernel.org 1087L: linux-wireless@vger.kernel.org
904W: http://linuxwireless.org/en/users/Drivers/b43 1088W: http://linuxwireless.org/en/users/Drivers/b43
905S: Maintained 1089S: Maintained
1090F: drivers/net/wireless/b43/
906 1091
907B43LEGACY WIRELESS DRIVER 1092B43LEGACY WIRELESS DRIVER
908P: Larry Finger 1093P: Larry Finger
@@ -912,11 +1097,14 @@ M: stefano.brivio@polimi.it
912L: linux-wireless@vger.kernel.org 1097L: linux-wireless@vger.kernel.org
913W: http://linuxwireless.org/en/users/Drivers/b43 1098W: http://linuxwireless.org/en/users/Drivers/b43
914S: Maintained 1099S: Maintained
1100F: drivers/net/wireless/b43legacy/
915 1101
916BACKLIGHT CLASS/SUBSYSTEM 1102BACKLIGHT CLASS/SUBSYSTEM
917P: Richard Purdie 1103P: Richard Purdie
918M: rpurdie@rpsys.net 1104M: rpurdie@rpsys.net
919S: Maintained 1105S: Maintained
1106F: drivers/video/backlight/
1107F: include/linux/backlight.h
920 1108
921BAYCOM/HDLCDRV DRIVERS FOR AX.25 1109BAYCOM/HDLCDRV DRIVERS FOR AX.25
922P: Thomas Sailer 1110P: Thomas Sailer
@@ -924,18 +1112,24 @@ M: t.sailer@alumni.ethz.ch
924L: linux-hams@vger.kernel.org 1112L: linux-hams@vger.kernel.org
925W: http://www.baycom.org/~tom/ham/ham.html 1113W: http://www.baycom.org/~tom/ham/ham.html
926S: Maintained 1114S: Maintained
1115F: drivers/net/hamradio/baycom*
927 1116
928BEFS FILE SYSTEM 1117BEFS FILE SYSTEM
929P: Sergey S. Kostyliov 1118P: Sergey S. Kostyliov
930M: rathamahata@php4.ru 1119M: rathamahata@php4.ru
931L: linux-kernel@vger.kernel.org 1120L: linux-kernel@vger.kernel.org
932S: Maintained 1121S: Maintained
1122F: Documentation/filesystems/befs.txt
1123F: fs/befs/
933 1124
934BFS FILE SYSTEM 1125BFS FILE SYSTEM
935P: Tigran A. Aivazian 1126P: Tigran A. Aivazian
936M: tigran@aivazian.fsnet.co.uk 1127M: tigran@aivazian.fsnet.co.uk
937L: linux-kernel@vger.kernel.org 1128L: linux-kernel@vger.kernel.org
938S: Maintained 1129S: Maintained
1130F: Documentation/filesystems/bfs.txt
1131F: fs/bfs/
1132F: include/linux/bfs_fs.h
939 1133
940BLACKFIN ARCHITECTURE 1134BLACKFIN ARCHITECTURE
941P: Bryan Wu 1135P: Bryan Wu
@@ -943,6 +1137,7 @@ M: cooloney@kernel.org
943L: uclinux-dist-devel@blackfin.uclinux.org 1137L: uclinux-dist-devel@blackfin.uclinux.org
944W: http://blackfin.uclinux.org 1138W: http://blackfin.uclinux.org
945S: Supported 1139S: Supported
1140F: arch/blackfin/
946 1141
947BLACKFIN EMAC DRIVER 1142BLACKFIN EMAC DRIVER
948P: Bryan Wu 1143P: Bryan Wu
@@ -950,6 +1145,7 @@ M: cooloney@kernel.org
950L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1145L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
951W: http://blackfin.uclinux.org 1146W: http://blackfin.uclinux.org
952S: Supported 1147S: Supported
1148F: drivers/net/bfin_mac.*
953 1149
954BLACKFIN RTC DRIVER 1150BLACKFIN RTC DRIVER
955P: Mike Frysinger 1151P: Mike Frysinger
@@ -957,6 +1153,7 @@ M: vapier.adi@gmail.com
957L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1153L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
958W: http://blackfin.uclinux.org 1154W: http://blackfin.uclinux.org
959S: Supported 1155S: Supported
1156F: drivers/rtc/rtc-bfin.c
960 1157
961BLACKFIN SERIAL DRIVER 1158BLACKFIN SERIAL DRIVER
962P: Sonic Zhang 1159P: Sonic Zhang
@@ -964,6 +1161,7 @@ M: sonic.zhang@analog.com
964L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1161L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
965W: http://blackfin.uclinux.org 1162W: http://blackfin.uclinux.org
966S: Supported 1163S: Supported
1164F: drivers/serial/bfin_5xx.c
967 1165
968BLACKFIN WATCHDOG DRIVER 1166BLACKFIN WATCHDOG DRIVER
969P: Mike Frysinger 1167P: Mike Frysinger
@@ -971,6 +1169,7 @@ M: vapier.adi@gmail.com
971L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1169L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
972W: http://blackfin.uclinux.org 1170W: http://blackfin.uclinux.org
973S: Supported 1171S: Supported
1172F: drivers/watchdog/bfin_wdt.c
974 1173
975BLACKFIN I2C TWI DRIVER 1174BLACKFIN I2C TWI DRIVER
976P: Sonic Zhang 1175P: Sonic Zhang
@@ -978,19 +1177,22 @@ M: sonic.zhang@analog.com
978L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1177L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
979W: http://blackfin.uclinux.org/ 1178W: http://blackfin.uclinux.org/
980S: Supported 1179S: Supported
1180F: drivers/i2c/busses/i2c-bfin-twi.c
981 1181
982BLOCK LAYER 1182BLOCK LAYER
983P: Jens Axboe 1183P: Jens Axboe
984M: axboe@kernel.dk 1184M: axboe@kernel.dk
985L: linux-kernel@vger.kernel.org 1185L: linux-kernel@vger.kernel.org
986T: git kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git 1186T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
987S: Maintained 1187S: Maintained
1188F: block/
988 1189
989BLOCK2MTD DRIVER 1190BLOCK2MTD DRIVER
990P: Joern Engel 1191P: Joern Engel
991M: joern@lazybastard.org 1192M: joern@lazybastard.org
992L: linux-mtd@lists.infradead.org 1193L: linux-mtd@lists.infradead.org
993S: Maintained 1194S: Maintained
1195F: drivers/mtd/devices/block2mtd.c
994 1196
995BLUETOOTH DRIVERS 1197BLUETOOTH DRIVERS
996P: Marcel Holtmann 1198P: Marcel Holtmann
@@ -998,14 +1200,17 @@ M: marcel@holtmann.org
998L: linux-bluetooth@vger.kernel.org 1200L: linux-bluetooth@vger.kernel.org
999W: http://www.bluez.org/ 1201W: http://www.bluez.org/
1000S: Maintained 1202S: Maintained
1203F: drivers/bluetooth/
1001 1204
1002BLUETOOTH SUBSYSTEM 1205BLUETOOTH SUBSYSTEM
1003P: Marcel Holtmann 1206P: Marcel Holtmann
1004M: marcel@holtmann.org 1207M: marcel@holtmann.org
1005L: linux-bluetooth@vger.kernel.org 1208L: linux-bluetooth@vger.kernel.org
1006W: http://www.bluez.org/ 1209W: http://www.bluez.org/
1007T: git kernel.org:/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git 1210T: git git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git
1008S: Maintained 1211S: Maintained
1212F: net/bluetooth/
1213F: include/net/bluetooth/
1009 1214
1010BONDING DRIVER 1215BONDING DRIVER
1011P: Jay Vosburgh 1216P: Jay Vosburgh
@@ -1013,24 +1218,30 @@ M: fubar@us.ibm.com
1013L: bonding-devel@lists.sourceforge.net 1218L: bonding-devel@lists.sourceforge.net
1014W: http://sourceforge.net/projects/bonding/ 1219W: http://sourceforge.net/projects/bonding/
1015S: Supported 1220S: Supported
1221F: drivers/net/bonding/
1222F: include/linux/if_bonding.h
1016 1223
1017BROADCOM B44 10/100 ETHERNET DRIVER 1224BROADCOM B44 10/100 ETHERNET DRIVER
1018P: Gary Zambrano 1225P: Gary Zambrano
1019M: zambrano@broadcom.com 1226M: zambrano@broadcom.com
1020L: netdev@vger.kernel.org 1227L: netdev@vger.kernel.org
1021S: Supported 1228S: Supported
1229F: drivers/net/b44.*
1022 1230
1023BROADCOM BNX2 GIGABIT ETHERNET DRIVER 1231BROADCOM BNX2 GIGABIT ETHERNET DRIVER
1024P: Michael Chan 1232P: Michael Chan
1025M: mchan@broadcom.com 1233M: mchan@broadcom.com
1026L: netdev@vger.kernel.org 1234L: netdev@vger.kernel.org
1027S: Supported 1235S: Supported
1236F: drivers/net/bnx2.*
1237F: drivers/net/bnx2_*
1028 1238
1029BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER 1239BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
1030P: Eilon Greenstein 1240P: Eilon Greenstein
1031M: eilong@broadcom.com 1241M: eilong@broadcom.com
1032L: netdev@vger.kernel.org 1242L: netdev@vger.kernel.org
1033S: Supported 1243S: Supported
1244F: drivers/net/bnx2x*
1034 1245
1035BROADCOM TG3 GIGABIT ETHERNET DRIVER 1246BROADCOM TG3 GIGABIT ETHERNET DRIVER
1036P: Matt Carlson 1247P: Matt Carlson
@@ -1039,41 +1250,59 @@ P: Michael Chan
1039M: mchan@broadcom.com 1250M: mchan@broadcom.com
1040L: netdev@vger.kernel.org 1251L: netdev@vger.kernel.org
1041S: Supported 1252S: Supported
1253F: drivers/net/tg3.*
1042 1254
1043BSG (block layer generic sg v4 driver) 1255BSG (block layer generic sg v4 driver)
1044P: FUJITA Tomonori 1256P: FUJITA Tomonori
1045M: fujita.tomonori@lab.ntt.co.jp 1257M: fujita.tomonori@lab.ntt.co.jp
1046L: linux-scsi@vger.kernel.org 1258L: linux-scsi@vger.kernel.org
1047S: Supported 1259S: Supported
1260F: block/bsg.c
1261F: include/linux/bsg.h
1048 1262
1049BT8XXGPIO DRIVER 1263BT8XXGPIO DRIVER
1050P: Michael Buesch 1264P: Michael Buesch
1051M: mb@bu3sch.de 1265M: mb@bu3sch.de
1052W: http://bu3sch.de/btgpio.php 1266W: http://bu3sch.de/btgpio.php
1053S: Maintained 1267S: Maintained
1268F: drivers/gpio/bt8xxgpio.c
1054 1269
1055BTRFS FILE SYSTEM 1270BTRFS FILE SYSTEM
1056P: Chris Mason 1271P: Chris Mason
1057M: chris.mason@oracle.com 1272M: chris.mason@oracle.com
1058L: linux-btrfs@vger.kernel.org 1273L: linux-btrfs@vger.kernel.org
1059W: http://btrfs.wiki.kernel.org/ 1274W: http://btrfs.wiki.kernel.org/
1060T: git kernel.org:/pub/scm/linux/kernel/git/mason/btrfs-unstable.git 1275T: git git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
1061S: Maintained 1276S: Maintained
1277F: Documentation/filesystems/btrfs.txt
1278F: fs/btrfs/
1062 1279
1063BTTV VIDEO4LINUX DRIVER 1280BTTV VIDEO4LINUX DRIVER
1064P: Mauro Carvalho Chehab 1281P: Mauro Carvalho Chehab
1065M: mchehab@infradead.org 1282M: mchehab@infradead.org
1066L: linux-media@vger.kernel.org 1283L: linux-media@vger.kernel.org
1067W: http://linuxtv.org 1284W: http://linuxtv.org
1068T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 1285T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1069S: Maintained 1286S: Maintained
1287F: Documentation/video4linux/bttv/
1288F: drivers/media/video/bt8xx/bttv*
1289
1290CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS
1291P: David Howells
1292M: dhowells@redhat.com
1293L: linux-cachefs@redhat.com
1294S: Supported
1295F: Documentation/filesystems/caching/cachefiles.txt
1296F: fs/cachefiles/
1070 1297
1071CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER 1298CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
1072P: Jonathan Corbet 1299P: Jonathan Corbet
1073M: corbet@lwn.net 1300M: corbet@lwn.net
1074L: linux-media@vger.kernel.org 1301L: linux-media@vger.kernel.org
1075T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 1302T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1076S: Maintained 1303S: Maintained
1304F: Documentation/video4linux/cafe_ccic
1305F: drivers/media/video/cafe_ccic*
1077 1306
1078CALGARY x86-64 IOMMU 1307CALGARY x86-64 IOMMU
1079P: Muli Ben-Yehuda 1308P: Muli Ben-Yehuda
@@ -1083,6 +1312,10 @@ M: jdmason@kudzu.us
1083L: linux-kernel@vger.kernel.org 1312L: linux-kernel@vger.kernel.org
1084L: discuss@x86-64.org 1313L: discuss@x86-64.org
1085S: Maintained 1314S: Maintained
1315F: arch/x86/kernel/pci-calgary_64.c
1316F: arch/x86/kernel/tce_64.c
1317F: arch/x86/include/asm/calgary.h
1318F: arch/x86/include/asm/tce.h
1086 1319
1087CAN NETWORK LAYER 1320CAN NETWORK LAYER
1088P: Urs Thuermann 1321P: Urs Thuermann
@@ -1092,6 +1325,9 @@ M: oliver.hartkopp@volkswagen.de
1092L: socketcan-core@lists.berlios.de (subscribers-only) 1325L: socketcan-core@lists.berlios.de (subscribers-only)
1093W: http://developer.berlios.de/projects/socketcan/ 1326W: http://developer.berlios.de/projects/socketcan/
1094S: Maintained 1327S: Maintained
1328F: drivers/net/can/
1329F: include/linux/can/
1330F: include/linux/can.h
1095 1331
1096CELL BROADBAND ENGINE ARCHITECTURE 1332CELL BROADBAND ENGINE ARCHITECTURE
1097P: Arnd Bergmann 1333P: Arnd Bergmann
@@ -1100,12 +1336,20 @@ L: linuxppc-dev@ozlabs.org
1100L: cbe-oss-dev@ozlabs.org 1336L: cbe-oss-dev@ozlabs.org
1101W: http://www.ibm.com/developerworks/power/cell/ 1337W: http://www.ibm.com/developerworks/power/cell/
1102S: Supported 1338S: Supported
1339F: arch/powerpc/include/asm/cell*.h
1340F: arch/powerpc/include/asm/spu*.h
1341F: arch/powerpc/oprofile/*cell*
1342F: arch/powerpc/platforms/cell/
1103 1343
1104CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM: 1344CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
1105P: David Vrabel 1345P: David Vrabel
1106M: david.vrabel@csr.com 1346M: david.vrabel@csr.com
1107L: linux-usb@vger.kernel.org 1347L: linux-usb@vger.kernel.org
1108S: Supported 1348S: Supported
1349F: Documentation/usb/WUSB-Design-overview.txt
1350F: Documentation/usb/wusb-cbaf
1351F: drivers/usb/wusbcore/
1352F: include/linux/usb/wusb*
1109 1353
1110CFAG12864B LCD DRIVER 1354CFAG12864B LCD DRIVER
1111P: Miguel Ojeda Sandonis 1355P: Miguel Ojeda Sandonis
@@ -1114,6 +1358,8 @@ L: linux-kernel@vger.kernel.org
1114W: http://miguelojeda.es/auxdisplay.htm 1358W: http://miguelojeda.es/auxdisplay.htm
1115W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 1359W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
1116S: Maintained 1360S: Maintained
1361F: drivers/auxdisplay/cfag12864b.c
1362F: include/linux/cfag12864b.h
1117 1363
1118CFAG12864BFB LCD FRAMEBUFFER DRIVER 1364CFAG12864BFB LCD FRAMEBUFFER DRIVER
1119P: Miguel Ojeda Sandonis 1365P: Miguel Ojeda Sandonis
@@ -1122,18 +1368,25 @@ L: linux-kernel@vger.kernel.org
1122W: http://miguelojeda.es/auxdisplay.htm 1368W: http://miguelojeda.es/auxdisplay.htm
1123W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 1369W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
1124S: Maintained 1370S: Maintained
1371F: drivers/auxdisplay/cfag12864bfb.c
1372F: include/linux/cfag12864b.h
1125 1373
1126CFG80211 and NL80211 1374CFG80211 and NL80211
1127P: Johannes Berg 1375P: Johannes Berg
1128M: johannes@sipsolutions.net 1376M: johannes@sipsolutions.net
1129L: linux-wireless@vger.kernel.org 1377L: linux-wireless@vger.kernel.org
1130S: Maintained 1378S: Maintained
1379F: include/linux/nl80211.h
1380F: include/net/cfg80211.h
1381F: net/wireless/*
1382X: net/wireless/wext*
1131 1383
1132CHECKPATCH 1384CHECKPATCH
1133P: Andy Whitcroft 1385P: Andy Whitcroft
1134M: apw@canonical.com 1386M: apw@canonical.com
1135L: linux-kernel@vger.kernel.org 1387L: linux-kernel@vger.kernel.org
1136S: Supported 1388S: Supported
1389F: scripts/checkpatch.pl
1137 1390
1138CISCO 10G ETHERNET DRIVER 1391CISCO 10G ETHERNET DRIVER
1139P: Scott Feldman 1392P: Scott Feldman
@@ -1141,24 +1394,28 @@ M: scofeldm@cisco.com
1141P: Joe Eykholt 1394P: Joe Eykholt
1142M: jeykholt@cisco.com 1395M: jeykholt@cisco.com
1143S: Supported 1396S: Supported
1397F: drivers/net/enic/
1144 1398
1145CIRRUS LOGIC EP93XX ETHERNET DRIVER 1399CIRRUS LOGIC EP93XX ETHERNET DRIVER
1146P: Lennert Buytenhek 1400P: Lennert Buytenhek
1147M: kernel@wantstofly.org 1401M: kernel@wantstofly.org
1148L: netdev@vger.kernel.org 1402L: netdev@vger.kernel.org
1149S: Maintained 1403S: Maintained
1404F: drivers/net/arm/ep93xx_eth.c
1150 1405
1151CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER 1406CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER
1152P: Lennert Buytenhek 1407P: Lennert Buytenhek
1153M: kernel@wantstofly.org 1408M: kernel@wantstofly.org
1154L: linux-usb@vger.kernel.org 1409L: linux-usb@vger.kernel.org
1155S: Maintained 1410S: Maintained
1411F: drivers/usb/host/ohci-ep93xx.c
1156 1412
1157CIRRUS LOGIC CS4270 SOUND DRIVER 1413CIRRUS LOGIC CS4270 SOUND DRIVER
1158P: Timur Tabi 1414P: Timur Tabi
1159M: timur@freescale.com 1415M: timur@freescale.com
1160L: alsa-devel@alsa-project.org 1416L: alsa-devel@alsa-project.org
1161S: Supported 1417S: Supported
1418F: sound/soc/codecs/cs4270*
1162 1419
1163CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER 1420CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
1164P: Cirrus Logic Corporation (kernel 2.2 driver) 1421P: Cirrus Logic Corporation (kernel 2.2 driver)
@@ -1166,6 +1423,13 @@ M: Cirrus Logic Corporation, Thomas Woller <twoller@crystal.cirrus.com>
1166P: Nils Faerber (port to kernel 2.4) 1423P: Nils Faerber (port to kernel 2.4)
1167M: Nils Faerber <nils@kernelconcepts.de> 1424M: Nils Faerber <nils@kernelconcepts.de>
1168S: Maintained 1425S: Maintained
1426F: Documentation/input/cs461x.txt
1427F: sound/pci/cs46xx/
1428
1429CLK API
1430P: Russell King
1431M: linux@arm.linux.org.uk
1432F: include/linux/clk.h
1169 1433
1170CODA FILE SYSTEM 1434CODA FILE SYSTEM
1171P: Jan Harkes 1435P: Jan Harkes
@@ -1174,6 +1438,9 @@ M: coda@cs.cmu.edu
1174L: codalist@coda.cs.cmu.edu 1438L: codalist@coda.cs.cmu.edu
1175W: http://www.coda.cs.cmu.edu/ 1439W: http://www.coda.cs.cmu.edu/
1176S: Maintained 1440S: Maintained
1441F: Documentation/filesystems/coda.txt
1442F: fs/coda/
1443F: include/linux/coda*.h
1177 1444
1178COMMON INTERNET FILE SYSTEM (CIFS) 1445COMMON INTERNET FILE SYSTEM (CIFS)
1179P: Steve French 1446P: Steve French
@@ -1181,8 +1448,10 @@ M: sfrench@samba.org
1181L: linux-cifs-client@lists.samba.org 1448L: linux-cifs-client@lists.samba.org
1182L: samba-technical@lists.samba.org 1449L: samba-technical@lists.samba.org
1183W: http://linux-cifs.samba.org/ 1450W: http://linux-cifs.samba.org/
1184T: git kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git 1451T: git git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
1185S: Supported 1452S: Supported
1453F: Documentation/filesystems/cifs.txt
1454F: fs/cifs/
1186 1455
1187COMPACTPCI HOTPLUG CORE 1456COMPACTPCI HOTPLUG CORE
1188P: Scott Murray 1457P: Scott Murray
@@ -1190,6 +1459,7 @@ M: scottm@somanetworks.com
1190M: scott@spiteful.org 1459M: scott@spiteful.org
1191L: linux-pci@vger.kernel.org 1460L: linux-pci@vger.kernel.org
1192S: Supported 1461S: Supported
1462F: drivers/pci/hotplug/cpci_hotplug*
1193 1463
1194COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER 1464COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER
1195P: Scott Murray 1465P: Scott Murray
@@ -1197,6 +1467,7 @@ M: scottm@somanetworks.com
1197M: scott@spiteful.org 1467M: scott@spiteful.org
1198L: linux-pci@vger.kernel.org 1468L: linux-pci@vger.kernel.org
1199S: Supported 1469S: Supported
1470F: drivers/pci/hotplug/cpcihp_zt5550.*
1200 1471
1201COMPACTPCI HOTPLUG GENERIC DRIVER 1472COMPACTPCI HOTPLUG GENERIC DRIVER
1202P: Scott Murray 1473P: Scott Murray
@@ -1204,17 +1475,21 @@ M: scottm@somanetworks.com
1204M: scott@spiteful.org 1475M: scott@spiteful.org
1205L: linux-pci@vger.kernel.org 1476L: linux-pci@vger.kernel.org
1206S: Supported 1477S: Supported
1478F: drivers/pci/hotplug/cpcihp_generic.c
1207 1479
1208COMPAL LAPTOP SUPPORT 1480COMPAL LAPTOP SUPPORT
1209P: Cezary Jackiewicz 1481P: Cezary Jackiewicz
1210M: cezary.jackiewicz@gmail.com 1482M: cezary.jackiewicz@gmail.com
1211S: Maintained 1483S: Maintained
1484F: drivers/platform/x86/compal-laptop.c
1212 1485
1213COMPUTONE INTELLIPORT MULTIPORT CARD 1486COMPUTONE INTELLIPORT MULTIPORT CARD
1214P: Michael H. Warfield 1487P: Michael H. Warfield
1215M: mhw@wittsend.com 1488M: mhw@wittsend.com
1216W: http://www.wittsend.com/computone.html 1489W: http://www.wittsend.com/computone.html
1217S: Maintained 1490S: Maintained
1491F: Documentation/serial/computone.txt
1492F: drivers/char/ip2/
1218 1493
1219CONEXANT ACCESSRUNNER USB DRIVER 1494CONEXANT ACCESSRUNNER USB DRIVER
1220P: Simon Arlott 1495P: Simon Arlott
@@ -1222,12 +1497,15 @@ M: cxacru@fire.lp0.eu
1222L: accessrunner-general@lists.sourceforge.net 1497L: accessrunner-general@lists.sourceforge.net
1223W: http://accessrunner.sourceforge.net/ 1498W: http://accessrunner.sourceforge.net/
1224S: Maintained 1499S: Maintained
1500F: drivers/usb/atm/cxacru.c
1225 1501
1226CONFIGFS 1502CONFIGFS
1227P: Joel Becker 1503P: Joel Becker
1228M: joel.becker@oracle.com 1504M: joel.becker@oracle.com
1229L: linux-kernel@vger.kernel.org 1505L: linux-kernel@vger.kernel.org
1230S: Supported 1506S: Supported
1507F: fs/configfs/
1508F: include/linux/configfs.h
1231 1509
1232CONTROL GROUPS (CGROUPS) 1510CONTROL GROUPS (CGROUPS)
1233P: Paul Menage 1511P: Paul Menage
@@ -1236,31 +1514,41 @@ P: Li Zefan
1236M: lizf@cn.fujitsu.com 1514M: lizf@cn.fujitsu.com
1237L: containers@lists.linux-foundation.org 1515L: containers@lists.linux-foundation.org
1238S: Maintained 1516S: Maintained
1517F: include/linux/cgroup*
1518F: kernel/cgroup*
1239 1519
1240CORETEMP HARDWARE MONITORING DRIVER 1520CORETEMP HARDWARE MONITORING DRIVER
1241P: Rudolf Marek 1521P: Rudolf Marek
1242M: r.marek@assembler.cz 1522M: r.marek@assembler.cz
1243L: lm-sensors@lm-sensors.org 1523L: lm-sensors@lm-sensors.org
1244S: Maintained 1524S: Maintained
1525F: Documentation/hwmon/coretemp
1526F: drivers/hwmon/coretemp.c
1245 1527
1246COSA/SRP SYNC SERIAL DRIVER 1528COSA/SRP SYNC SERIAL DRIVER
1247P: Jan "Yenya" Kasprzak 1529P: Jan "Yenya" Kasprzak
1248M: kas@fi.muni.cz 1530M: kas@fi.muni.cz
1249W: http://www.fi.muni.cz/~kas/cosa/ 1531W: http://www.fi.muni.cz/~kas/cosa/
1250S: Maintained 1532S: Maintained
1533F: drivers/net/wan/cosa*
1251 1534
1252CPU FREQUENCY DRIVERS 1535CPU FREQUENCY DRIVERS
1253P: Dave Jones 1536P: Dave Jones
1254M: davej@redhat.com 1537M: davej@redhat.com
1255L: cpufreq@vger.kernel.org 1538L: cpufreq@vger.kernel.org
1256W: http://www.codemonkey.org.uk/projects/cpufreq/ 1539W: http://www.codemonkey.org.uk/projects/cpufreq/
1257T: git kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git 1540T: git git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
1258S: Maintained 1541S: Maintained
1542F: arch/x86/kernel/cpu/cpufreq/
1543F: drivers/cpufreq/
1544F: include/linux/cpufreq.h
1259 1545
1260CPUID/MSR DRIVER 1546CPUID/MSR DRIVER
1261P: H. Peter Anvin 1547P: H. Peter Anvin
1262M: hpa@zytor.com 1548M: hpa@zytor.com
1263S: Maintained 1549S: Maintained
1550F: arch/x86/kernel/cpuid.c
1551F: arch/x86/kernel/msr.c
1264 1552
1265CPUSETS 1553CPUSETS
1266P: Paul Menage 1554P: Paul Menage
@@ -1269,10 +1557,15 @@ L: linux-kernel@vger.kernel.org
1269W: http://www.bullopensource.org/cpuset/ 1557W: http://www.bullopensource.org/cpuset/
1270W: http://oss.sgi.com/projects/cpusets/ 1558W: http://oss.sgi.com/projects/cpusets/
1271S: Supported 1559S: Supported
1560F: Documentation/cgroups/cpusets.txt
1561F: include/linux/cpuset.h
1562F: kernel/cpuset.c
1272 1563
1273CRAMFS FILESYSTEM 1564CRAMFS FILESYSTEM
1274W: http://sourceforge.net/projects/cramfs/ 1565W: http://sourceforge.net/projects/cramfs/
1275S: Orphan 1566S: Orphan
1567F: Documentation/filesystems/cramfs.txt
1568F: fs/cramfs/
1276 1569
1277CRIS PORT 1570CRIS PORT
1278P: Mikael Starvik 1571P: Mikael Starvik
@@ -1282,6 +1575,7 @@ M: jesper.nilsson@axis.com
1282L: dev-etrax@axis.com 1575L: dev-etrax@axis.com
1283W: http://developer.axis.com 1576W: http://developer.axis.com
1284S: Maintained 1577S: Maintained
1578F: arch/cris/
1285 1579
1286CRYPTO API 1580CRYPTO API
1287P: Herbert Xu 1581P: Herbert Xu
@@ -1289,8 +1583,13 @@ M: herbert@gondor.apana.org.au
1289P: David S. Miller 1583P: David S. Miller
1290M: davem@davemloft.net 1584M: davem@davemloft.net
1291L: linux-crypto@vger.kernel.org 1585L: linux-crypto@vger.kernel.org
1292T: git kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6.git 1586T: git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
1293S: Maintained 1587S: Maintained
1588F: Documentation/crypto/
1589F: arch/*/crypto/
1590F: crypto/
1591F: drivers/crypto/
1592F: include/crypto/
1294 1593
1295CRYPTOGRAPHIC RANDOM NUMBER GENERATOR 1594CRYPTOGRAPHIC RANDOM NUMBER GENERATOR
1296P: Neil Horman 1595P: Neil Horman
@@ -1302,16 +1601,21 @@ CS5535 Audio ALSA driver
1302P: Jaya Kumar 1601P: Jaya Kumar
1303M: jayakumar.alsa@gmail.com 1602M: jayakumar.alsa@gmail.com
1304S: Maintained 1603S: Maintained
1604F: sound/pci/cs5535audio/
1305 1605
1306CX18 VIDEO4LINUX DRIVER 1606CX18 VIDEO4LINUX DRIVER
1307P: Hans Verkuil, Andy Walls 1607P: Hans Verkuil
1308M: hverkuil@xs4all.nl, awalls@radix.net 1608M: hverkuil@xs4all.nl
1609P: Andy Walls
1610M: awalls@radix.net
1309L: ivtv-devel@ivtvdriver.org 1611L: ivtv-devel@ivtvdriver.org
1310L: ivtv-users@ivtvdriver.org 1612L: ivtv-users@ivtvdriver.org
1311L: linux-media@vger.kernel.org 1613L: linux-media@vger.kernel.org
1312T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 1614T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1313W: http://linuxtv.org 1615W: http://linuxtv.org
1314S: Maintained 1616S: Maintained
1617F: Documentation/video4linux/cx18.txt
1618F: drivers/media/video/cx18/
1315 1619
1316CXGB3 ETHERNET DRIVER (CXGB3) 1620CXGB3 ETHERNET DRIVER (CXGB3)
1317P: Divy Le Ray 1621P: Divy Le Ray
@@ -1319,6 +1623,7 @@ M: divy@chelsio.com
1319L: netdev@vger.kernel.org 1623L: netdev@vger.kernel.org
1320W: http://www.chelsio.com 1624W: http://www.chelsio.com
1321S: Supported 1625S: Supported
1626F: drivers/net/cxgb3/
1322 1627
1323CXGB3 IWARP RNIC DRIVER (IW_CXGB3) 1628CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
1324P: Steve Wise 1629P: Steve Wise
@@ -1326,32 +1631,33 @@ M: swise@chelsio.com
1326L: general@lists.openfabrics.org 1631L: general@lists.openfabrics.org
1327W: http://www.openfabrics.org 1632W: http://www.openfabrics.org
1328S: Supported 1633S: Supported
1634F: drivers/infiniband/hw/cxgb3/
1329 1635
1330CYBERPRO FB DRIVER 1636CYBERPRO FB DRIVER
1331P: Russell King 1637P: Russell King
1332M: rmk@arm.linux.org.uk 1638M: linux@arm.linux.org.uk
1639L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
1333W: http://www.arm.linux.org.uk/ 1640W: http://www.arm.linux.org.uk/
1334S: Maintained 1641S: Maintained
1335 1642F: drivers/video/cyber2000fb.*
1336CYBLAFB FRAMEBUFFER DRIVER
1337P: Knut Petersen
1338M: Knut_Petersen@t-online.de
1339L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
1340S: Maintained
1341 1643
1342CYCLADES 2X SYNC CARD DRIVER 1644CYCLADES 2X SYNC CARD DRIVER
1343P: Arnaldo Carvalho de Melo 1645P: Arnaldo Carvalho de Melo
1344M: acme@ghostprotocols.net 1646M: acme@ghostprotocols.net
1345W: http://oops.ghostprotocols.net:81/blog 1647W: http://oops.ghostprotocols.net:81/blog
1346S: Maintained 1648S: Maintained
1649F: drivers/net/wan/cycx*
1347 1650
1348CYCLADES ASYNC MUX DRIVER 1651CYCLADES ASYNC MUX DRIVER
1349W: http://www.cyclades.com/ 1652W: http://www.cyclades.com/
1350S: Orphan 1653S: Orphan
1654F: drivers/char/cyclades.c
1655F: include/linux/cyclades.h
1351 1656
1352CYCLADES PC300 DRIVER 1657CYCLADES PC300 DRIVER
1353W: http://www.cyclades.com/ 1658W: http://www.cyclades.com/
1354S: Orphan 1659S: Orphan
1660F: drivers/net/wan/pc300*
1355 1661
1356DAMA SLAVE for AX.25 1662DAMA SLAVE for AX.25
1357P: Joerg Reuter 1663P: Joerg Reuter
@@ -1360,12 +1666,21 @@ W: http://yaina.de/jreuter/
1360W: http://www.qsl.net/dl1bke/ 1666W: http://www.qsl.net/dl1bke/
1361L: linux-hams@vger.kernel.org 1667L: linux-hams@vger.kernel.org
1362S: Maintained 1668S: Maintained
1669F: net/ax25/af_ax25.c
1670F: net/ax25/ax25_dev.c
1671F: net/ax25/ax25_ds_*
1672F: net/ax25/ax25_in.c
1673F: net/ax25/ax25_out.c
1674F: net/ax25/ax25_timer.c
1675F: net/ax25/sysctl_net_ax25.c
1363 1676
1364DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER 1677DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
1365P: Tobias Ringstrom 1678P: Tobias Ringstrom
1366M: tori@unhappy.mine.nu 1679M: tori@unhappy.mine.nu
1367L: netdev@vger.kernel.org 1680L: netdev@vger.kernel.org
1368S: Maintained 1681S: Maintained
1682F: Documentation/networking/dmfe.txt
1683F: drivers/net/tulip/dmfe.c
1369 1684
1370DC390/AM53C974 SCSI driver 1685DC390/AM53C974 SCSI driver
1371P: Kurt Garloff 1686P: Kurt Garloff
@@ -1374,6 +1689,7 @@ W: http://www.garloff.de/kurt/linux/dc390/
1374P: Guennadi Liakhovetski 1689P: Guennadi Liakhovetski
1375M: g.liakhovetski@gmx.de 1690M: g.liakhovetski@gmx.de
1376S: Maintained 1691S: Maintained
1692F: drivers/scsi/tmscsim.*
1377 1693
1378DC395x SCSI driver 1694DC395x SCSI driver
1379P: Oliver Neukum 1695P: Oliver Neukum
@@ -1386,6 +1702,8 @@ W: http://twibble.org/dist/dc395x/
1386L: dc395x@twibble.org 1702L: dc395x@twibble.org
1387L: http://lists.twibble.org/mailman/listinfo/dc395x/ 1703L: http://lists.twibble.org/mailman/listinfo/dc395x/
1388S: Maintained 1704S: Maintained
1705F: Documentation/scsi/dc395x.txt
1706F: drivers/scsi/dc395x.*
1389 1707
1390DCCP PROTOCOL 1708DCCP PROTOCOL
1391P: Arnaldo Carvalho de Melo 1709P: Arnaldo Carvalho de Melo
@@ -1393,6 +1711,9 @@ M: acme@ghostprotocols.net
1393L: dccp@vger.kernel.org 1711L: dccp@vger.kernel.org
1394W: http://linux-net.osdl.org/index.php/DCCP 1712W: http://linux-net.osdl.org/index.php/DCCP
1395S: Maintained 1713S: Maintained
1714F: include/linux/dccp.h
1715F: include/linux/tfrc.h
1716F: net/dccp/
1396 1717
1397DECnet NETWORK LAYER 1718DECnet NETWORK LAYER
1398P: Christine Caulfield 1719P: Christine Caulfield
@@ -1400,27 +1721,35 @@ M: christine.caulfield@googlemail.com
1400W: http://linux-decnet.sourceforge.net 1721W: http://linux-decnet.sourceforge.net
1401L: linux-decnet-user@lists.sourceforge.net 1722L: linux-decnet-user@lists.sourceforge.net
1402S: Maintained 1723S: Maintained
1724F: Documentation/networking/decnet.txt
1725F: net/decnet/
1403 1726
1404DEFXX FDDI NETWORK DRIVER 1727DEFXX FDDI NETWORK DRIVER
1405P: Maciej W. Rozycki 1728P: Maciej W. Rozycki
1406M: macro@linux-mips.org 1729M: macro@linux-mips.org
1407S: Maintained 1730S: Maintained
1731F: drivers/net/defxx.*
1408 1732
1409DELL LAPTOP DRIVER 1733DELL LAPTOP DRIVER
1410P: Matthew Garrett 1734P: Matthew Garrett
1411M: mjg59@srcf.ucam.org 1735M: mjg59@srcf.ucam.org
1412S: Maintained 1736S: Maintained
1737F: drivers/platform/x86/dell-laptop.c
1413 1738
1414DELL LAPTOP SMM DRIVER 1739DELL LAPTOP SMM DRIVER
1415P: Massimo Dal Zotto 1740P: Massimo Dal Zotto
1416M: dz@debian.org 1741M: dz@debian.org
1417W: http://www.debian.org/~dz/i8k/ 1742W: http://www.debian.org/~dz/i8k/
1418S: Maintained 1743S: Maintained
1744F: drivers/char/i8k.c
1745F: include/linux/i8k.h
1419 1746
1420DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas) 1747DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas)
1421P: Doug Warzecha 1748P: Doug Warzecha
1422M: Douglas_Warzecha@dell.com 1749M: Douglas_Warzecha@dell.com
1423S: Maintained 1750S: Maintained
1751F: Documentation/dcdbas.txt
1752F: drivers/firmware/dcdbas.*
1424 1753
1425DELL WMI EXTRAS DRIVER 1754DELL WMI EXTRAS DRIVER
1426P: Matthew Garrett 1755P: Matthew Garrett
@@ -1439,6 +1768,10 @@ P: Alasdair Kergon
1439L: dm-devel@redhat.com 1768L: dm-devel@redhat.com
1440W: http://sources.redhat.com/dm 1769W: http://sources.redhat.com/dm
1441S: Maintained 1770S: Maintained
1771F: Documentation/device-mapper/
1772F: drivers/md/dm*
1773F: include/linux/device-mapper.h
1774F: include/linux/dm-*.h
1442 1775
1443DIGI INTL. EPCA DRIVER 1776DIGI INTL. EPCA DRIVER
1444P: Digi International, Inc 1777P: Digi International, Inc
@@ -1446,12 +1779,18 @@ M: Eng.Linux@digi.com
1446L: Eng.Linux@digi.com 1779L: Eng.Linux@digi.com
1447W: http://www.digi.com 1780W: http://www.digi.com
1448S: Orphan 1781S: Orphan
1782F: Documentation/serial/digiepca.txt
1783F: drivers/char/epca*
1784F: drivers/char/digi*
1449 1785
1450DIRECTORY NOTIFICATION (DNOTIFY) 1786DIRECTORY NOTIFICATION (DNOTIFY)
1451P: Stephen Rothwell 1787P: Stephen Rothwell
1452M: sfr@canb.auug.org.au 1788M: sfr@canb.auug.org.au
1453L: linux-kernel@vger.kernel.org 1789L: linux-kernel@vger.kernel.org
1454S: Supported 1790S: Supported
1791F: Documentation/filesystems/dnotify.txt
1792F: fs/notify/dnotify/
1793F: include/linux/dnotify.h
1455 1794
1456DISK GEOMETRY AND PARTITION HANDLING 1795DISK GEOMETRY AND PARTITION HANDLING
1457P: Andries Brouwer 1796P: Andries Brouwer
@@ -1466,6 +1805,9 @@ P: Jan Kara
1466M: jack@suse.cz 1805M: jack@suse.cz
1467L: linux-kernel@vger.kernel.org 1806L: linux-kernel@vger.kernel.org
1468S: Maintained 1807S: Maintained
1808F: Documentation/filesystems/quota.txt
1809F: fs/quota/
1810F: include/linux/quota*.h
1469 1811
1470DISTRIBUTED LOCK MANAGER (DLM) 1812DISTRIBUTED LOCK MANAGER (DLM)
1471P: Christine Caulfield 1813P: Christine Caulfield
@@ -1474,8 +1816,9 @@ P: David Teigland
1474M: teigland@redhat.com 1816M: teigland@redhat.com
1475L: cluster-devel@redhat.com 1817L: cluster-devel@redhat.com
1476W: http://sources.redhat.com/cluster/ 1818W: http://sources.redhat.com/cluster/
1477T: git kernel.org:/pub/scm/linux/kernel/git/teigland/dlm.git 1819T: git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git
1478S: Supported 1820S: Supported
1821F: fs/dlm/
1479 1822
1480DMA GENERIC OFFLOAD ENGINE SUBSYSTEM 1823DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
1481P: Maciej Sosnowski 1824P: Maciej Sosnowski
@@ -1484,12 +1827,16 @@ P: Dan Williams
1484M: dan.j.williams@intel.com 1827M: dan.j.williams@intel.com
1485L: linux-kernel@vger.kernel.org 1828L: linux-kernel@vger.kernel.org
1486S: Supported 1829S: Supported
1830F: drivers/dma/
1831F: include/linux/dma*
1487 1832
1488DME1737 HARDWARE MONITOR DRIVER 1833DME1737 HARDWARE MONITOR DRIVER
1489P: Juerg Haefliger 1834P: Juerg Haefliger
1490M: juergh@gmail.com 1835M: juergh@gmail.com
1491L: lm-sensors@lm-sensors.org 1836L: lm-sensors@lm-sensors.org
1492S: Maintained 1837S: Maintained
1838F: Documentation/hwmon/dme1737
1839F: drivers/hwmon/dme1737.c
1493 1840
1494DOCBOOK FOR DOCUMENTATION 1841DOCBOOK FOR DOCUMENTATION
1495P: Randy Dunlap 1842P: Randy Dunlap
@@ -1501,18 +1848,22 @@ P: Shaohua Li
1501M: shaohua.li@intel.com 1848M: shaohua.li@intel.com
1502L: linux-acpi@vger.kernel.org 1849L: linux-acpi@vger.kernel.org
1503S: Supported 1850S: Supported
1851F: drivers/acpi/dock.c
1504 1852
1505DOCUMENTATION (/Documentation directory) 1853DOCUMENTATION
1506P: Randy Dunlap 1854P: Randy Dunlap
1507M: rdunlap@xenotime.net 1855M: rdunlap@xenotime.net
1508L: linux-doc@vger.kernel.org 1856L: linux-doc@vger.kernel.org
1509S: Maintained 1857S: Maintained
1858F: Documentation/
1510 1859
1511DOUBLETALK DRIVER 1860DOUBLETALK DRIVER
1512P: James R. Van Zandt 1861P: James R. Van Zandt
1513M: jrv@vanzandt.mv.com 1862M: jrv@vanzandt.mv.com
1514L: blinux-list@redhat.com 1863L: blinux-list@redhat.com
1515S: Maintained 1864S: Maintained
1865F: drivers/char/dtlk.c
1866F: include/linux/dtlk.h
1516 1867
1517DPT_I2O SCSI RAID DRIVER 1868DPT_I2O SCSI RAID DRIVER
1518P: Adaptec OEM Raid Solutions 1869P: Adaptec OEM Raid Solutions
@@ -1520,6 +1871,8 @@ M: aacraid@adaptec.com
1520L: linux-scsi@vger.kernel.org 1871L: linux-scsi@vger.kernel.org
1521W: http://www.adaptec.com/ 1872W: http://www.adaptec.com/
1522S: Maintained 1873S: Maintained
1874F: drivers/scsi/dpt*
1875F: drivers/scsi/dpt/
1523 1876
1524DRIVER CORE, KOBJECTS, AND SYSFS 1877DRIVER CORE, KOBJECTS, AND SYSFS
1525P: Greg Kroah-Hartman 1878P: Greg Kroah-Hartman
@@ -1527,48 +1880,55 @@ M: gregkh@suse.de
1527L: linux-kernel@vger.kernel.org 1880L: linux-kernel@vger.kernel.org
1528T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 1881T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
1529S: Supported 1882S: Supported
1883F: Documentation/kobject.txt
1884F: drivers/base/
1885F: fs/sysfs/
1886F: include/linux/kobj*
1887F: lib/kobj*
1530 1888
1531DRM DRIVERS 1889DRM DRIVERS
1532P: David Airlie 1890P: David Airlie
1533M: airlied@linux.ie 1891M: airlied@linux.ie
1534L: dri-devel@lists.sourceforge.net 1892L: dri-devel@lists.sourceforge.net
1535T: git kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git 1893T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
1536S: Maintained 1894S: Maintained
1895F: drivers/gpu/drm/
1537 1896
1538DSCC4 DRIVER 1897DSCC4 DRIVER
1539P: Francois Romieu 1898P: Francois Romieu
1540M: romieu@fr.zoreil.com 1899M: romieu@fr.zoreil.com
1541L: netdev@vger.kernel.org 1900L: netdev@vger.kernel.org
1542S: Maintained 1901S: Maintained
1543 1902F: drivers/net/wan/dscc4.c
1544DVB SUBSYSTEM AND DRIVERS
1545P: LinuxTV.org Project
1546M: linux-media@vger.kernel.org
1547W: http://linuxtv.org/
1548T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1549S: Maintained
1550 1903
1551DZ DECSTATION DZ11 SERIAL DRIVER 1904DZ DECSTATION DZ11 SERIAL DRIVER
1552P: Maciej W. Rozycki 1905P: Maciej W. Rozycki
1553M: macro@linux-mips.org 1906M: macro@linux-mips.org
1554S: Maintained 1907S: Maintained
1908F: drivers/serial/dz.*
1555 1909
1556EATA-DMA SCSI DRIVER 1910EATA-DMA SCSI DRIVER
1557P: Michael Neuffer 1911P: Michael Neuffer
1558L: linux-eata@i-connect.net, linux-scsi@vger.kernel.org 1912M: mike@i-Connect.Net
1913L: linux-eata@i-connect.net
1914L: linux-scsi@vger.kernel.org
1559S: Maintained 1915S: Maintained
1916F: drivers/scsi/eata*
1560 1917
1561EATA ISA/EISA/PCI SCSI DRIVER 1918EATA ISA/EISA/PCI SCSI DRIVER
1562P: Dario Ballabio 1919P: Dario Ballabio
1563M: ballabio_dario@emc.com 1920M: ballabio_dario@emc.com
1564L: linux-scsi@vger.kernel.org 1921L: linux-scsi@vger.kernel.org
1565S: Maintained 1922S: Maintained
1923F: drivers/scsi/eata.c
1566 1924
1567EATA-PIO SCSI DRIVER 1925EATA-PIO SCSI DRIVER
1568P: Michael Neuffer 1926P: Michael Neuffer
1569M: mike@i-Connect.Net 1927M: mike@i-Connect.Net
1570L: linux-eata@i-connect.net, linux-scsi@vger.kernel.org 1928L: linux-eata@i-connect.net
1929L: linux-scsi@vger.kernel.org
1571S: Maintained 1930S: Maintained
1931F: drivers/scsi/eata_pio.*
1572 1932
1573EBTABLES 1933EBTABLES
1574P: Bart De Schuymer 1934P: Bart De Schuymer
@@ -1577,87 +1937,105 @@ L: ebtables-user@lists.sourceforge.net
1577L: ebtables-devel@lists.sourceforge.net 1937L: ebtables-devel@lists.sourceforge.net
1578W: http://ebtables.sourceforge.net/ 1938W: http://ebtables.sourceforge.net/
1579S: Maintained 1939S: Maintained
1940F: include/linux/netfilter_bridge/ebt_*.h
1941F: net/bridge/netfilter/ebt*.c
1580 1942
1581ECRYPT FILE SYSTEM 1943ECRYPT FILE SYSTEM
1582P: Tyler Hicks, Dustin Kirkland 1944P: Tyler Hicks
1583M: tyhicks@linux.vnet.ibm.com, kirkland@canonical.com 1945M: tyhicks@linux.vnet.ibm.com
1946M: Dustin Kirkland
1947P: kirkland@canonical.com
1584L: ecryptfs-devel@lists.launchpad.net 1948L: ecryptfs-devel@lists.launchpad.net
1585W: https://launchpad.net/ecryptfs 1949W: https://launchpad.net/ecryptfs
1586S: Supported 1950S: Supported
1951F: Documentation/filesystems/ecryptfs.txt
1952F: fs/ecryptfs/
1587 1953
1588EDAC-CORE 1954EDAC-CORE
1589P: Doug Thompson 1955P: Doug Thompson
1590M: dougthompson@xmission.com 1956M: dougthompson@xmission.com
1591L: bluesmoke-devel@lists.sourceforge.net 1957L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1592W: bluesmoke.sourceforge.net 1958W: bluesmoke.sourceforge.net
1593S: Supported 1959S: Supported
1960F: Documentation/edac.txt
1961F: drivers/edac/edac_*
1962F: include/linux/edac.h
1594 1963
1595EDAC-E752X 1964EDAC-E752X
1596P: Mark Gross 1965P: Mark Gross
1597P: Doug Thompson 1966P: Doug Thompson
1598M: mark.gross@intel.com 1967M: mark.gross@intel.com
1599M: dougthompson@xmission.com 1968M: dougthompson@xmission.com
1600L: bluesmoke-devel@lists.sourceforge.net 1969L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1601W: bluesmoke.sourceforge.net 1970W: bluesmoke.sourceforge.net
1602S: Maintained 1971S: Maintained
1972F: drivers/edac/e752x_edac.c
1603 1973
1604EDAC-E7XXX 1974EDAC-E7XXX
1605P: Doug Thompson 1975P: Doug Thompson
1606M: dougthompson@xmission.com 1976M: dougthompson@xmission.com
1607L: bluesmoke-devel@lists.sourceforge.net 1977L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1608W: bluesmoke.sourceforge.net 1978W: bluesmoke.sourceforge.net
1609S: Maintained 1979S: Maintained
1980F: drivers/edac/e7xxx_edac.c
1610 1981
1611EDAC-I82443BXGX 1982EDAC-I82443BXGX
1612P: Tim Small 1983P: Tim Small
1613M: tim@buttersideup.com 1984M: tim@buttersideup.com
1614L: bluesmoke-devel@lists.sourceforge.net 1985L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1615W: bluesmoke.sourceforge.net 1986W: bluesmoke.sourceforge.net
1616S: Maintained 1987S: Maintained
1988F: drivers/edac/i82443bxgx_edac.c
1617 1989
1618EDAC-I3000 1990EDAC-I3000
1619P: Jason Uhlenkott 1991P: Jason Uhlenkott
1620M: juhlenko@akamai.com 1992M: juhlenko@akamai.com
1621L: bluesmoke-devel@lists.sourceforge.net 1993L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1622W: bluesmoke.sourceforge.net 1994W: bluesmoke.sourceforge.net
1623S: Maintained 1995S: Maintained
1996F: drivers/edac/i3000_edac.c
1624 1997
1625EDAC-I5000 1998EDAC-I5000
1626P: Doug Thompson 1999P: Doug Thompson
1627M: dougthompson@xmission.com 2000M: dougthompson@xmission.com
1628L: bluesmoke-devel@lists.sourceforge.net 2001L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1629W: bluesmoke.sourceforge.net 2002W: bluesmoke.sourceforge.net
1630S: Maintained 2003S: Maintained
2004F: drivers/edac/i5000_edac.c
1631 2005
1632EDAC-I5400 2006EDAC-I5400
1633P: Mauro Carvalho Chehab 2007P: Mauro Carvalho Chehab
1634M: mchehab@redhat.com 2008M: mchehab@redhat.com
1635L: bluesmoke-devel@lists.sourceforge.net 2009L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1636W: bluesmoke.sourceforge.net 2010W: bluesmoke.sourceforge.net
1637S: Maintained 2011S: Maintained
2012F: drivers/edac/i5400_edac.c
1638 2013
1639EDAC-I82975X 2014EDAC-I82975X
1640P: Ranganathan Desikan 2015P: Ranganathan Desikan
1641P: Arvind R. 2016P: Arvind R.
1642M: rdesikan@jetzbroadband.com 2017M: rdesikan@jetzbroadband.com
1643M: arvind@acarlab.com 2018M: arvind@acarlab.com
1644L: bluesmoke-devel@lists.sourceforge.net 2019L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1645W: bluesmoke.sourceforge.net 2020W: bluesmoke.sourceforge.net
1646S: Maintained 2021S: Maintained
2022F: drivers/edac/i82975x_edac.c
1647 2023
1648EDAC-PASEMI 2024EDAC-PASEMI
1649P: Egor Martovetsky 2025P: Egor Martovetsky
1650M: egor@pasemi.com 2026M: egor@pasemi.com
1651L: bluesmoke-devel@lists.sourceforge.net 2027L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1652W: bluesmoke.sourceforge.net 2028W: bluesmoke.sourceforge.net
1653S: Maintained 2029S: Maintained
2030F: drivers/edac/pasemi_edac.c
1654 2031
1655EDAC-R82600 2032EDAC-R82600
1656P: Tim Small 2033P: Tim Small
1657M: tim@buttersideup.com 2034M: tim@buttersideup.com
1658L: bluesmoke-devel@lists.sourceforge.net 2035L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
1659W: bluesmoke.sourceforge.net 2036W: bluesmoke.sourceforge.net
1660S: Maintained 2037S: Maintained
2038F: drivers/edac/r82600_edac.c
1661 2039
1662EEEPC LAPTOP EXTRAS DRIVER 2040EEEPC LAPTOP EXTRAS DRIVER
1663P: Corentin Chary 2041P: Corentin Chary
@@ -1665,10 +2043,12 @@ M: corentincj@iksaif.net
1665L: acpi4asus-user@lists.sourceforge.net 2043L: acpi4asus-user@lists.sourceforge.net
1666W: http://sourceforge.net/projects/acpi4asus 2044W: http://sourceforge.net/projects/acpi4asus
1667S: Maintained 2045S: Maintained
2046F: drivers/platform/x86/eeepc-laptop.c
1668 2047
1669EFS FILESYSTEM 2048EFS FILESYSTEM
1670W: http://aeschi.ch.eu.org/efs/ 2049W: http://aeschi.ch.eu.org/efs/
1671S: Orphan 2050S: Orphan
2051F: fs/efs/
1672 2052
1673EHCA (IBM GX bus InfiniBand adapter) DRIVER 2053EHCA (IBM GX bus InfiniBand adapter) DRIVER
1674P: Hoang-Nam Nguyen 2054P: Hoang-Nam Nguyen
@@ -1677,10 +2057,13 @@ P: Christoph Raisch
1677M: raisch@de.ibm.com 2057M: raisch@de.ibm.com
1678L: general@lists.openfabrics.org 2058L: general@lists.openfabrics.org
1679S: Supported 2059S: Supported
2060F: drivers/infiniband/hw/ehca/
1680 2061
1681EMBEDDED LINUX 2062EMBEDDED LINUX
1682P: Paul Gortmaker 2063P: Paul Gortmaker
1683M: paul.gortmaker@windriver.com 2064M: paul.gortmaker@windriver.com
2065P: Matt Mackall
2066M: mpm@selenic.com
1684P: David Woodhouse 2067P: David Woodhouse
1685M: dwmw2@infradead.org 2068M: dwmw2@infradead.org
1686L: linux-embedded@vger.kernel.org 2069L: linux-embedded@vger.kernel.org
@@ -1692,22 +2075,29 @@ M: james.smart@emulex.com
1692L: linux-scsi@vger.kernel.org 2075L: linux-scsi@vger.kernel.org
1693W: http://sourceforge.net/projects/lpfcxxxx 2076W: http://sourceforge.net/projects/lpfcxxxx
1694S: Supported 2077S: Supported
2078F: drivers/scsi/lpfc/
1695 2079
1696EPSON 1355 FRAMEBUFFER DRIVER 2080EPSON 1355 FRAMEBUFFER DRIVER
1697P: Christopher Hoover 2081P: Christopher Hoover
1698M: ch@murgatroid.com, ch@hpl.hp.com 2082M: ch@murgatroid.com
2083P: Christopher Hoover
2084M: ch@hpl.hp.com
1699S: Maintained 2085S: Maintained
2086F: drivers/video/epson1355fb.c
1700 2087
1701EPSON S1D13XXX FRAMEBUFFER DRIVER 2088EPSON S1D13XXX FRAMEBUFFER DRIVER
1702P: Kristoffer Ericson 2089P: Kristoffer Ericson
1703M: kristoffer.ericson@gmail.com 2090M: kristoffer.ericson@gmail.com
1704S: Maintained 2091S: Maintained
2092F: drivers/video/s1d13xxxfb.c
2093F: include/video/s1d13xxxfb.h
1705 2094
1706ETHEREXPRESS-16 NETWORK DRIVER 2095ETHEREXPRESS-16 NETWORK DRIVER
1707P: Philip Blundell 2096P: Philip Blundell
1708M: philb@gnu.org 2097M: philb@gnu.org
1709L: netdev@vger.kernel.org 2098L: netdev@vger.kernel.org
1710S: Maintained 2099S: Maintained
2100F: drivers/net/eexpress.*
1711 2101
1712ETHERNET BRIDGE 2102ETHERNET BRIDGE
1713P: Stephen Hemminger 2103P: Stephen Hemminger
@@ -1715,87 +2105,126 @@ M: shemminger@linux-foundation.org
1715L: bridge@lists.linux-foundation.org 2105L: bridge@lists.linux-foundation.org
1716W: http://www.linux-foundation.org/en/Net:Bridge 2106W: http://www.linux-foundation.org/en/Net:Bridge
1717S: Maintained 2107S: Maintained
2108F: include/linux/netfilter_bridge/
2109F: net/bridge/
1718 2110
1719ETHERTEAM 16I DRIVER 2111ETHERTEAM 16I DRIVER
1720P: Mika Kuoppala 2112P: Mika Kuoppala
1721M: miku@iki.fi 2113M: miku@iki.fi
1722S: Maintained 2114S: Maintained
2115F: drivers/net/eth16i.c
1723 2116
1724EXT2 FILE SYSTEM 2117EXT2 FILE SYSTEM
1725L: linux-ext4@vger.kernel.org 2118L: linux-ext4@vger.kernel.org
1726S: Maintained 2119S: Maintained
2120F: Documentation/filesystems/ext2.txt
2121F: fs/ext2/
2122F: include/linux/ext2*
1727 2123
1728EXT3 FILE SYSTEM 2124EXT3 FILE SYSTEM
1729P: Stephen Tweedie, Andrew Morton 2125P: Stephen Tweedie
1730M: sct@redhat.com, akpm@linux-foundation.org, adilger@sun.com 2126M: sct@redhat.com
2127P: Andrew Morton
2128M: akpm@linux-foundation.org
2129P: Andreas Dilger
2130M: adilger@sun.com
1731L: linux-ext4@vger.kernel.org 2131L: linux-ext4@vger.kernel.org
1732S: Maintained 2132S: Maintained
2133F: Documentation/filesystems/ext3.txt
2134F: fs/ext3/
2135F: include/linux/ext3*
1733 2136
1734EXT4 FILE SYSTEM 2137EXT4 FILE SYSTEM
1735P: Theodore Ts'o 2138P: Theodore Ts'o
1736M: tytso@mit.edu, adilger@sun.com 2139M: tytso@mit.edu
2140P: Andreas Dilger
2141M: adilger@sun.com
1737L: linux-ext4@vger.kernel.org 2142L: linux-ext4@vger.kernel.org
1738W: http://ext4.wiki.kernel.org 2143W: http://ext4.wiki.kernel.org
1739S: Maintained 2144S: Maintained
2145F: Documentation/filesystems/ext4.txt
2146F: fs/ext4/
1740 2147
1741F71805F HARDWARE MONITORING DRIVER 2148F71805F HARDWARE MONITORING DRIVER
1742P: Jean Delvare 2149P: Jean Delvare
1743M: khali@linux-fr.org 2150M: khali@linux-fr.org
1744L: lm-sensors@lm-sensors.org 2151L: lm-sensors@lm-sensors.org
1745S: Maintained 2152S: Maintained
2153F: Documentation/hwmon/f71805f
2154F: drivers/hwmon/f71805f.c
1746 2155
1747FARSYNC SYNCHRONOUS DRIVER 2156FARSYNC SYNCHRONOUS DRIVER
1748P: Kevin Curtis 2157P: Kevin Curtis
1749M: kevin.curtis@farsite.co.uk 2158M: kevin.curtis@farsite.co.uk
1750W: http://www.farsite.co.uk/ 2159W: http://www.farsite.co.uk/
1751S: Supported 2160S: Supported
2161F: drivers/net/wan/farsync.*
1752 2162
1753FAULT INJECTION SUPPORT 2163FAULT INJECTION SUPPORT
1754P: Akinobu Mita 2164P: Akinobu Mita
1755M: akinobu.mita@gmail.com 2165M: akinobu.mita@gmail.com
1756S: Supported 2166S: Supported
2167F: Documentation/fault-injection/
2168F: lib/fault-inject.c
1757 2169
1758FILE LOCKING (flock() and fcntl()/lockf()) 2170FILE LOCKING (flock() and fcntl()/lockf())
1759P: Matthew Wilcox 2171P: Matthew Wilcox
1760M: matthew@wil.cx 2172M: matthew@wil.cx
1761L: linux-fsdevel@vger.kernel.org 2173L: linux-fsdevel@vger.kernel.org
1762S: Maintained 2174S: Maintained
2175F: include/linux/fcntl.h
2176F: include/linux/fs.h
2177F: fs/fcntl.c
2178F: fs/locks.c
1763 2179
1764FILESYSTEMS (VFS and infrastructure) 2180FILESYSTEMS (VFS and infrastructure)
1765P: Alexander Viro 2181P: Alexander Viro
1766M: viro@zeniv.linux.org.uk 2182M: viro@zeniv.linux.org.uk
1767L: linux-fsdevel@vger.kernel.org 2183L: linux-fsdevel@vger.kernel.org
1768S: Maintained 2184S: Maintained
2185F: fs/*
1769 2186
1770FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER 2187FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
1771P: Riku Voipio 2188P: Riku Voipio
1772M: riku.vipio@iki.fi 2189M: riku.vipio@iki.fi
1773L: lm-sensors@lm-sensors.org 2190L: lm-sensors@lm-sensors.org
1774S: Maintained 2191S: Maintained
2192F: drivers/hwmon/f75375s.c
2193F: include/linux/f75375s.h
1775 2194
1776FIREWIRE SUBSYSTEM (drivers/firewire, <linux/firewire*.h>) 2195FIREWIRE SUBSYSTEM
1777P: Kristian Hoegsberg, Stefan Richter 2196P: Kristian Hoegsberg
1778M: krh@redhat.com, stefanr@s5r6.in-berlin.de 2197M: krh@redhat.com
2198P: Stefan Richter
2199M: stefanr@s5r6.in-berlin.de
1779L: linux1394-devel@lists.sourceforge.net 2200L: linux1394-devel@lists.sourceforge.net
1780W: http://www.linux1394.org/ 2201W: http://www.linux1394.org/
1781T: git kernel.org:/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git 2202T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
1782S: Maintained 2203S: Maintained
2204F: drivers/firewire/
2205F: include/linux/firewire*.h
1783 2206
1784FIRMWARE LOADER (request_firmware) 2207FIRMWARE LOADER (request_firmware)
1785L: linux-kernel@vger.kernel.org 2208L: linux-kernel@vger.kernel.org
1786S: Orphan 2209S: Orphan
2210F: Documentation/firmware_class/
2211F: drivers/base/firmware*.c
2212F: include/linux/firmware.h
1787 2213
1788FPU EMULATOR 2214FPU EMULATOR
1789P: Bill Metzenthen 2215P: Bill Metzenthen
1790M: billm@suburbia.net 2216M: billm@melbpc.org.au
1791W: http://suburbia.net/~billm/floating-point/emulator/ 2217W: http://floatingpoint.sourceforge.net/emulator/index.html
1792S: Maintained 2218S: Maintained
2219F: arch/x86/math-emu/
1793 2220
1794FRAME RELAY DLCI/FRAD (Sangoma drivers too) 2221FRAME RELAY DLCI/FRAD (Sangoma drivers too)
1795P: Mike McLagan 2222P: Mike McLagan
1796M: mike.mclagan@linux.org 2223M: mike.mclagan@linux.org
1797L: netdev@vger.kernel.org 2224L: netdev@vger.kernel.org
1798S: Maintained 2225S: Maintained
2226F: drivers/net/wan/dlci.c
2227F: drivers/net/wan/sdla.c
1799 2228
1800FRAMEBUFFER LAYER 2229FRAMEBUFFER LAYER
1801P: Antonino Daplas 2230P: Antonino Daplas
@@ -1803,6 +2232,9 @@ M: adaplas@gmail.com
1803L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2232L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
1804W: http://linux-fbdev.sourceforge.net/ 2233W: http://linux-fbdev.sourceforge.net/
1805S: Maintained 2234S: Maintained
2235F: Documentation/fb/
2236F: drivers/video/fb*
2237F: include/linux/fb.h
1806 2238
1807FREESCALE DMA DRIVER 2239FREESCALE DMA DRIVER
1808P: Li Yang 2240P: Li Yang
@@ -1812,6 +2244,7 @@ M: zw@zh-kernel.org
1812L: linuxppc-embedded@ozlabs.org 2244L: linuxppc-embedded@ozlabs.org
1813L: linux-kernel@vger.kernel.org 2245L: linux-kernel@vger.kernel.org
1814S: Maintained 2246S: Maintained
2247F: drivers/dma/fsldma.*
1815 2248
1816FREESCALE I2C CPM DRIVER 2249FREESCALE I2C CPM DRIVER
1817P: Jochen Friedrich 2250P: Jochen Friedrich
@@ -1819,6 +2252,7 @@ M: jochen@scram.de
1819L: linuxppc-dev@ozlabs.org 2252L: linuxppc-dev@ozlabs.org
1820L: linux-i2c@vger.kernel.org 2253L: linux-i2c@vger.kernel.org
1821S: Maintained 2254S: Maintained
2255F: drivers/i2c/busses/i2c-cpm.c
1822 2256
1823FREESCALE IMX / MXC FRAMEBUFFER DRIVER 2257FREESCALE IMX / MXC FRAMEBUFFER DRIVER
1824P: Sascha Hauer 2258P: Sascha Hauer
@@ -1826,6 +2260,8 @@ M: kernel@pengutronix.de
1826L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2260L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
1827L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 2261L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
1828S: Maintained 2262S: Maintained
2263F: arch/arm/plat-mxc/include/mach/imxfb.h
2264F: drivers/video/imxfb.c
1829 2265
1830FREESCALE SOC FS_ENET DRIVER 2266FREESCALE SOC FS_ENET DRIVER
1831P: Pantelis Antoniou 2267P: Pantelis Antoniou
@@ -1835,12 +2271,16 @@ M: vbordug@ru.mvista.com
1835L: linuxppc-dev@ozlabs.org 2271L: linuxppc-dev@ozlabs.org
1836L: netdev@vger.kernel.org 2272L: netdev@vger.kernel.org
1837S: Maintained 2273S: Maintained
2274F: drivers/net/fs_enet/
2275F: include/linux/fs_enet_pd.h
1838 2276
1839FREESCALE QUICC ENGINE LIBRARY 2277FREESCALE QUICC ENGINE LIBRARY
1840P: Timur Tabi 2278P: Timur Tabi
1841M: timur@freescale.com 2279M: timur@freescale.com
1842L: linuxppc-dev@ozlabs.org 2280L: linuxppc-dev@ozlabs.org
1843S: Supported 2281S: Supported
2282F: arch/powerpc/sysdev/qe_lib/
2283F: arch/powerpc/include/asm/*qe.h
1844 2284
1845FREESCALE HIGHSPEED USB DEVICE DRIVER 2285FREESCALE HIGHSPEED USB DEVICE DRIVER
1846P: Li Yang 2286P: Li Yang
@@ -1848,6 +2288,7 @@ M: leoli@freescale.com
1848L: linux-usb@vger.kernel.org 2288L: linux-usb@vger.kernel.org
1849L: linuxppc-dev@ozlabs.org 2289L: linuxppc-dev@ozlabs.org
1850S: Maintained 2290S: Maintained
2291F: drivers/usb/gadget/fsl_usb2_udc.c
1851 2292
1852FREESCALE QUICC ENGINE UCC ETHERNET DRIVER 2293FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
1853P: Li Yang 2294P: Li Yang
@@ -1855,12 +2296,14 @@ M: leoli@freescale.com
1855L: netdev@vger.kernel.org 2296L: netdev@vger.kernel.org
1856L: linuxppc-dev@ozlabs.org 2297L: linuxppc-dev@ozlabs.org
1857S: Maintained 2298S: Maintained
2299F: drivers/net/ucc_geth*
1858 2300
1859FREESCALE QUICC ENGINE UCC UART DRIVER 2301FREESCALE QUICC ENGINE UCC UART DRIVER
1860P: Timur Tabi 2302P: Timur Tabi
1861M: timur@freescale.com 2303M: timur@freescale.com
1862L: linuxppc-dev@ozlabs.org 2304L: linuxppc-dev@ozlabs.org
1863S: Supported 2305S: Supported
2306F: drivers/serial/ucc_uart.c
1864 2307
1865FREESCALE SOC SOUND DRIVERS 2308FREESCALE SOC SOUND DRIVERS
1866P: Timur Tabi 2309P: Timur Tabi
@@ -1868,12 +2311,15 @@ M: timur@freescale.com
1868L: alsa-devel@alsa-project.org 2311L: alsa-devel@alsa-project.org
1869L: linuxppc-dev@ozlabs.org 2312L: linuxppc-dev@ozlabs.org
1870S: Supported 2313S: Supported
2314F: sound/soc/fsl/fsl*
2315F: sound/soc/fsl/mpc8610_hpcd.c
1871 2316
1872FREEVXFS FILESYSTEM 2317FREEVXFS FILESYSTEM
1873P: Christoph Hellwig 2318P: Christoph Hellwig
1874M: hch@infradead.org 2319M: hch@infradead.org
1875W: ftp://ftp.openlinux.org/pub/people/hch/vxfs 2320W: ftp://ftp.openlinux.org/pub/people/hch/vxfs
1876S: Maintained 2321S: Maintained
2322F: fs/freevxfs/
1877 2323
1878FREEZER 2324FREEZER
1879P: Pavel Machek 2325P: Pavel Machek
@@ -1882,22 +2328,41 @@ P: Rafael J. Wysocki
1882M: rjw@sisk.pl 2328M: rjw@sisk.pl
1883L: linux-pm@lists.linux-foundation.org 2329L: linux-pm@lists.linux-foundation.org
1884S: Supported 2330S: Supported
2331F: Documentation/power/freezing-of-tasks.txt
2332F: include/linux/freezer.h
2333F: kernel/freezer.c
2334
2335FS-CACHE: LOCAL CACHING FOR NETWORK FILESYSTEMS
2336P: David Howells
2337M: dhowells@redhat.com
2338L: linux-cachefs@redhat.com
2339S: Supported
2340F: Documentation/filesystems/caching/
2341F: fs/fscache/
2342F: include/linux/fscache*.h
1885 2343
1886FTRACE 2344FTRACE
1887P: Steven Rostedt 2345P: Steven Rostedt
1888M: rostedt@goodmis.org 2346M: rostedt@goodmis.org
1889S: Maintained 2347S: Maintained
2348F: Documentation/ftrace.txt
2349F: arch/*/*/*/ftrace.h
2350F: arch/*/kernel/ftrace.c
2351F: include/*/ftrace.h
2352F: kernel/trace/
1890 2353
1891FUJITSU FR-V (FRV) PORT 2354FUJITSU FR-V (FRV) PORT
1892P: David Howells 2355P: David Howells
1893M: dhowells@redhat.com 2356M: dhowells@redhat.com
1894S: Maintained 2357S: Maintained
2358F: arch/frv/
1895 2359
1896FUJITSU LAPTOP EXTRAS 2360FUJITSU LAPTOP EXTRAS
1897P: Jonathan Woithe 2361P: Jonathan Woithe
1898M: jwoithe@physics.adelaide.edu.au 2362M: jwoithe@physics.adelaide.edu.au
1899L: linux-acpi@vger.kernel.org 2363L: linux-acpi@vger.kernel.org
1900S: Maintained 2364S: Maintained
2365F: drivers/platform/x86/fujitsu-laptop.c
1901 2366
1902FUSE: FILESYSTEM IN USERSPACE 2367FUSE: FILESYSTEM IN USERSPACE
1903P: Miklos Szeredi 2368P: Miklos Szeredi
@@ -1905,12 +2370,15 @@ M: miklos@szeredi.hu
1905L: fuse-devel@lists.sourceforge.net 2370L: fuse-devel@lists.sourceforge.net
1906W: http://fuse.sourceforge.net/ 2371W: http://fuse.sourceforge.net/
1907S: Maintained 2372S: Maintained
2373F: fs/fuse/
2374F: include/linux/fuse.h
1908 2375
1909FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit) 2376FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
1910P: Rik Faith 2377P: Rik Faith
1911M: faith@cs.unc.edu 2378M: faith@cs.unc.edu
1912L: linux-scsi@vger.kernel.org 2379L: linux-scsi@vger.kernel.org
1913S: Odd Fixes (e.g., new signatures) 2380S: Odd Fixes (e.g., new signatures)
2381F: drivers/scsi/fdomain.*
1914 2382
1915GDT SCSI DISK ARRAY CONTROLLER DRIVER 2383GDT SCSI DISK ARRAY CONTROLLER DRIVER
1916P: Achim Leubner 2384P: Achim Leubner
@@ -1918,26 +2386,39 @@ M: achim_leubner@adaptec.com
1918L: linux-scsi@vger.kernel.org 2386L: linux-scsi@vger.kernel.org
1919W: http://www.icp-vortex.com/ 2387W: http://www.icp-vortex.com/
1920S: Supported 2388S: Supported
2389F: drivers/scsi/gdt*
1921 2390
1922GENERIC GPIO I2C DRIVER 2391GENERIC GPIO I2C DRIVER
1923P: Haavard Skinnemoen 2392P: Haavard Skinnemoen
1924M: hskinnemoen@atmel.com 2393M: hskinnemoen@atmel.com
1925S: Supported 2394S: Supported
2395F: drivers/i2c/busses/i2c-gpio.c
2396F: include/linux/i2c-gpio.h
1926 2397
1927GENERIC HDLC (WAN) DRIVERS 2398GENERIC HDLC (WAN) DRIVERS
1928P: Krzysztof Halasa 2399P: Krzysztof Halasa
1929M: khc@pm.waw.pl 2400M: khc@pm.waw.pl
1930W: http://www.kernel.org/pub/linux/utils/net/hdlc/ 2401W: http://www.kernel.org/pub/linux/utils/net/hdlc/
1931S: Maintained 2402S: Maintained
2403F: drivers/net/wan/c101.c
2404F: drivers/net/wan/hd6457*
2405F: drivers/net/wan/hdlc*
2406F: drivers/net/wan/n2.c
2407F: drivers/net/wan/pc300too.c
2408F: drivers/net/wan/pci200syn.c
2409F: drivers/net/wan/wanxl*
1932 2410
1933GFS2 FILE SYSTEM 2411GFS2 FILE SYSTEM
1934P: Steven Whitehouse 2412P: Steven Whitehouse
1935M: swhiteho@redhat.com 2413M: swhiteho@redhat.com
1936L: cluster-devel@redhat.com 2414L: cluster-devel@redhat.com
1937W: http://sources.redhat.com/cluster/ 2415W: http://sources.redhat.com/cluster/
1938T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git 2416T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
1939T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git 2417T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
1940S: Supported 2418S: Supported
2419F: Documentation/filesystems/gfs2*.txt
2420F: fs/gfs2/
2421F: include/linux/gfs2_ondisk.h
1941 2422
1942GIGASET ISDN DRIVERS 2423GIGASET ISDN DRIVERS
1943P: Hansjoerg Lipp 2424P: Hansjoerg Lipp
@@ -1947,6 +2428,9 @@ M: tilman@imap.cc
1947L: gigaset307x-common@lists.sourceforge.net 2428L: gigaset307x-common@lists.sourceforge.net
1948W: http://gigaset307x.sourceforge.net/ 2429W: http://gigaset307x.sourceforge.net/
1949S: Maintained 2430S: Maintained
2431F: Documentation/isdn/README.gigaset
2432F: drivers/isdn/gigaset/
2433F: include/linux/gigaset_dev.h
1950 2434
1951HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER 2435HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
1952P: Frank Seidel 2436P: Frank Seidel
@@ -1954,6 +2438,7 @@ M: frank@f-seidel.de
1954L: lm-sensors@lm-sensors.org 2438L: lm-sensors@lm-sensors.org
1955W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/ 2439W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
1956S: Maintained 2440S: Maintained
2441F: drivers/hwmon/hdaps.c
1957 2442
1958HYPERVISOR VIRTUAL CONSOLE DRIVER 2443HYPERVISOR VIRTUAL CONSOLE DRIVER
1959L: linuxppc-dev@ozlabs.org 2444L: linuxppc-dev@ozlabs.org
@@ -1965,51 +2450,61 @@ GSPCA FINEPIX SUBDRIVER
1965P: Frank Zago 2450P: Frank Zago
1966M: frank@zago.net 2451M: frank@zago.net
1967L: linux-media@vger.kernel.org 2452L: linux-media@vger.kernel.org
1968T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2453T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1969S: Maintained 2454S: Maintained
2455F: drivers/media/video/gspca/finepix.c
1970 2456
1971GSPCA M5602 SUBDRIVER 2457GSPCA M5602 SUBDRIVER
1972P: Erik Andren 2458P: Erik Andren
1973M: erik.andren@gmail.com 2459M: erik.andren@gmail.com
1974L: linux-media@vger.kernel.org 2460L: linux-media@vger.kernel.org
1975T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2461T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1976S: Maintained 2462S: Maintained
2463F: drivers/media/video/gspca/m5602/
1977 2464
1978GSPCA PAC207 SONIXB SUBDRIVER 2465GSPCA PAC207 SONIXB SUBDRIVER
1979P: Hans de Goede 2466P: Hans de Goede
1980M: hdegoede@redhat.com 2467M: hdegoede@redhat.com
1981L: linux-media@vger.kernel.org 2468L: linux-media@vger.kernel.org
1982T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2469T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1983S: Maintained 2470S: Maintained
2471F: drivers/media/video/gspca/pac207.c
1984 2472
1985GSPCA T613 SUBDRIVER 2473GSPCA T613 SUBDRIVER
1986P: Leandro Costantino 2474P: Leandro Costantino
1987M: lcostantino@gmail.com 2475M: lcostantino@gmail.com
1988L: linux-media@vger.kernel.org 2476L: linux-media@vger.kernel.org
1989T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2477T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1990S: Maintained 2478S: Maintained
2479F: drivers/media/video/gspca/t613.c
1991 2480
1992GSPCA USB WEBCAM DRIVER 2481GSPCA USB WEBCAM DRIVER
1993P: Jean-Francois Moine 2482P: Jean-Francois Moine
1994M: moinejf@free.fr 2483M: moinejf@free.fr
1995W: http://moinejf.free.fr 2484W: http://moinejf.free.fr
1996L: linux-media@vger.kernel.org 2485L: linux-media@vger.kernel.org
1997T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2486T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1998S: Maintained 2487S: Maintained
2488F: drivers/media/video/gspca/
1999 2489
2000HARDWARE MONITORING 2490HARDWARE MONITORING
2001L: lm-sensors@lm-sensors.org 2491L: lm-sensors@lm-sensors.org
2002W: http://www.lm-sensors.org/ 2492W: http://www.lm-sensors.org/
2003S: Orphan 2493S: Orphan
2494F: drivers/hwmon/
2004 2495
2005HARDWARE RANDOM NUMBER GENERATOR CORE 2496HARDWARE RANDOM NUMBER GENERATOR CORE
2006S: Orphan 2497S: Orphan
2498F: Documentation/hw_random.txt
2499F: drivers/char/hw_random/
2500F: include/linux/hw_random.h
2007 2501
2008HARMONY SOUND DRIVER 2502HARMONY SOUND DRIVER
2009P: Kyle McMartin 2503P: Kyle McMartin
2010M: kyle@mcmartin.ca 2504M: kyle@mcmartin.ca
2011L: linux-parisc@vger.kernel.org 2505L: linux-parisc@vger.kernel.org
2012S: Maintained 2506S: Maintained
2507F: sound/parisc/harmony.*
2013 2508
2014HAYES ESP SERIAL DRIVER 2509HAYES ESP SERIAL DRIVER
2015P: Andrew J. Robinson 2510P: Andrew J. Robinson
@@ -2017,30 +2512,33 @@ M: arobinso@nyx.net
2017L: linux-kernel@vger.kernel.org 2512L: linux-kernel@vger.kernel.org
2018W: http://www.nyx.net/~arobinso 2513W: http://www.nyx.net/~arobinso
2019S: Maintained 2514S: Maintained
2020 2515F: Documentation/serial/hayes-esp.txt
2021HEWLETT-PACKARD FIBRE CHANNEL 64-bit/66MHz PCI non-intelligent HBA 2516F: drivers/char/esp.c
2022P: Chirag Kantharia
2023M: chirag.kantharia@hp.com
2024L: iss_storagedev@hp.com
2025S: Maintained
2026 2517
2027HEWLETT-PACKARD SMART2 RAID DRIVER 2518HEWLETT-PACKARD SMART2 RAID DRIVER
2028P: Chirag Kantharia 2519P: Chirag Kantharia
2029M: chirag.kantharia@hp.com 2520M: chirag.kantharia@hp.com
2030L: iss_storagedev@hp.com 2521L: iss_storagedev@hp.com
2031S: Maintained 2522S: Maintained
2523F: Documentation/blockdev/cpqarray.txt
2524F: drivers/block/cpqarray.*
2032 2525
2033HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss) 2526HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss)
2034P: Mike Miller 2527P: Mike Miller
2035M: mike.miller@hp.com 2528M: mike.miller@hp.com
2036L: iss_storagedev@hp.com 2529L: iss_storagedev@hp.com
2037S: Supported 2530S: Supported
2531F: Documentation/blockdev/cciss.txt
2532F: drivers/block/cciss*
2533F: include/linux/cciss_ioctl.h
2038 2534
2039HFS FILESYSTEM 2535HFS FILESYSTEM
2040P: Roman Zippel 2536P: Roman Zippel
2041M: zippel@linux-m68k.org 2537M: zippel@linux-m68k.org
2042L: linux-kernel@vger.kernel.org 2538L: linux-kernel@vger.kernel.org
2043S: Maintained 2539S: Maintained
2540F: Documentation/filesystems/hfs.txt
2541F: fs/hfs/
2044 2542
2045HGA FRAMEBUFFER DRIVER 2543HGA FRAMEBUFFER DRIVER
2046P: Ferenc Bakonyi 2544P: Ferenc Bakonyi
@@ -2048,6 +2546,7 @@ M: fero@drama.obuda.kando.hu
2048L: linux-nvidia@lists.surfsouth.com 2546L: linux-nvidia@lists.surfsouth.com
2049W: http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml 2547W: http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml
2050S: Maintained 2548S: Maintained
2549F: drivers/video/hgafb.c
2051 2550
2052HIBERNATION (aka Software Suspend, aka swsusp) 2551HIBERNATION (aka Software Suspend, aka swsusp)
2053P: Pavel Machek 2552P: Pavel Machek
@@ -2056,19 +2555,31 @@ P: Rafael J. Wysocki
2056M: rjw@sisk.pl 2555M: rjw@sisk.pl
2057L: linux-pm@lists.linux-foundation.org 2556L: linux-pm@lists.linux-foundation.org
2058S: Supported 2557S: Supported
2558F: arch/x86/power/
2559F: drivers/base/power/
2560F: kernel/power/
2561F: include/linux/suspend.h
2562F: include/linux/freezer.h
2563F: include/linux/pm.h
2564F: arch/*/include/asm/suspend*.h
2059 2565
2060HID CORE LAYER 2566HID CORE LAYER
2061P: Jiri Kosina 2567P: Jiri Kosina
2062M: jkosina@suse.cz 2568M: jkosina@suse.cz
2063L: linux-input@vger.kernel.org 2569L: linux-input@vger.kernel.org
2064T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git 2570T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
2065S: Maintained 2571S: Maintained
2572F: drivers/hid/
2573F: include/linux/hid*
2066 2574
2067HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS 2575HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS
2068P: Thomas Gleixner 2576P: Thomas Gleixner
2069M: tglx@linutronix.de 2577M: tglx@linutronix.de
2070L: linux-kernel@vger.kernel.org 2578L: linux-kernel@vger.kernel.org
2071S: Maintained 2579S: Maintained
2580F: Documentation/timers/
2581F: kernel/hrtimer.c
2582F: include/linux/hrtimer.h
2072 2583
2073HIGH-SPEED SCC DRIVER FOR AX.25 2584HIGH-SPEED SCC DRIVER FOR AX.25
2074P: Klaus Kudielka 2585P: Klaus Kudielka
@@ -2076,18 +2587,25 @@ M: klaus.kudielka@ieee.org
2076L: linux-hams@vger.kernel.org 2587L: linux-hams@vger.kernel.org
2077W: http://www.nt.tuwien.ac.at/~kkudielk/Linux/ 2588W: http://www.nt.tuwien.ac.at/~kkudielk/Linux/
2078S: Maintained 2589S: Maintained
2590F: drivers/net/hamradio/dmascc.c
2591F: drivers/net/hamradio/scc.c
2079 2592
2080HIGHPOINT ROCKETRAID 3xxx RAID DRIVER 2593HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
2081P: HighPoint Linux Team 2594P: HighPoint Linux Team
2082M: linux@highpoint-tech.com 2595M: linux@highpoint-tech.com
2083W: http://www.highpoint-tech.com 2596W: http://www.highpoint-tech.com
2084S: Supported 2597S: Supported
2598F: Documentation/scsi/hptiop.txt
2599F: drivers/scsi/hptiop.c
2085 2600
2086HIPPI 2601HIPPI
2087P: Jes Sorensen 2602P: Jes Sorensen
2088M: jes@trained-monkey.org 2603M: jes@trained-monkey.org
2089L: linux-hippi@sunsite.dk 2604L: linux-hippi@sunsite.dk
2090S: Maintained 2605S: Maintained
2606F: include/linux/hippidevice.h
2607F: include/linux/if_hippi.h
2608F: net/802/hippi.c
2091 2609
2092HOST AP DRIVER 2610HOST AP DRIVER
2093P: Jouni Malinen 2611P: Jouni Malinen
@@ -2096,65 +2614,79 @@ L: hostap@shmoo.com (subscribers-only)
2096L: linux-wireless@vger.kernel.org 2614L: linux-wireless@vger.kernel.org
2097W: http://hostap.epitest.fi/ 2615W: http://hostap.epitest.fi/
2098S: Maintained 2616S: Maintained
2617F: drivers/net/wireless/hostap/
2099 2618
2100HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER 2619HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
2101P: Carlos Corbacho 2620P: Carlos Corbacho
2102M: carlos@strangeworlds.co.uk 2621M: carlos@strangeworlds.co.uk
2103S: Odd Fixes 2622S: Odd Fixes
2623F: drivers/platform/x86/tc1100-wmi.c
2104 2624
2105HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series 2625HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
2106P: Jaroslav Kysela 2626P: Jaroslav Kysela
2107M: perex@perex.cz 2627M: perex@perex.cz
2108S: Maintained 2628S: Maintained
2629F: drivers/net/hp100.*
2109 2630
2110HPET: High Precision Event Timers driver (drivers/char/hpet.c) 2631HPET: High Precision Event Timers driver
2111P: Clemens Ladisch 2632P: Clemens Ladisch
2112M: clemens@ladisch.de 2633M: clemens@ladisch.de
2113S: Maintained 2634S: Maintained
2635F: Documentation/timers/hpet.txt
2636F: drivers/char/hpet.c
2637F: include/linux/hpet.h
2114 2638
2115HPET: i386 2639HPET: i386
2116P: Venkatesh Pallipadi (Venki) 2640P: Venkatesh Pallipadi (Venki)
2117M: venkatesh.pallipadi@intel.com 2641M: venkatesh.pallipadi@intel.com
2118S: Maintained 2642S: Maintained
2643F: arch/x86/kernel/hpet.c
2644F: arch/x86/include/asm/hpet.h
2119 2645
2120HPET: x86_64 2646HPET: x86_64
2121P: Vojtech Pavlik 2647P: Vojtech Pavlik
2122M: vojtech@suse.cz 2648M: vojtech@suse.cz
2123S: Maintained 2649S: Maintained
2124 2650
2125HPET: ACPI hpet.c 2651HPET: ACPI
2126P: Bob Picco 2652P: Bob Picco
2127M: bob.picco@hp.com 2653M: bob.picco@hp.com
2128S: Maintained 2654S: Maintained
2655F: drivers/char/hpet.c
2129 2656
2130HPFS FILESYSTEM 2657HPFS FILESYSTEM
2131P: Mikulas Patocka 2658P: Mikulas Patocka
2132M: mikulas@artax.karlin.mff.cuni.cz 2659M: mikulas@artax.karlin.mff.cuni.cz
2133W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi 2660W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
2134S: Maintained 2661S: Maintained
2662F: fs/hpfs/
2135 2663
2136HSO 3G Modem Driver (hso.c) 2664HSO 3G MODEM DRIVER
2137P: Denis Joseph Barrow 2665P: Jan Dumon
2138M: d.barow@option.com 2666M: j.dumon@option.com
2139W: http://www.pharscape.org 2667W: http://www.pharscape.org
2140S: Maintained 2668S: Maintained
2669F: drivers/net/usb/hso.c
2141 2670
2142HTCPEN TOUCHSCREEN DRIVER 2671HTCPEN TOUCHSCREEN DRIVER
2143P: Pau Oliva Fora 2672P: Pau Oliva Fora
2144M: pof@eslack.org 2673M: pof@eslack.org
2145L: linux-input@vger.kernel.org 2674L: linux-input@vger.kernel.org
2146S: Maintained 2675S: Maintained
2676F: drivers/input/touchscreen/htcpen.c
2147 2677
2148HUGETLB FILESYSTEM 2678HUGETLB FILESYSTEM
2149P: William Irwin 2679P: William Irwin
2150M: wli@holomorphy.com 2680M: wli@holomorphy.com
2151S: Maintained 2681S: Maintained
2682F: fs/hugetlbfs/
2152 2683
2153I2C/SMBUS STUB DRIVER 2684I2C/SMBUS STUB DRIVER
2154P: Mark M. Hoffman 2685P: Mark M. Hoffman
2155M: mhoffman@lightlink.com 2686M: mhoffman@lightlink.com
2156L: linux-i2c@vger.kernel.org 2687L: linux-i2c@vger.kernel.org
2157S: Maintained 2688S: Maintained
2689F: drivers/i2c/busses/i2c-stub.c
2158 2690
2159I2C SUBSYSTEM 2691I2C SUBSYSTEM
2160P: Jean Delvare (PC drivers, core) 2692P: Jean Delvare (PC drivers, core)
@@ -2165,24 +2697,31 @@ L: linux-i2c@vger.kernel.org
2165W: http://i2c.wiki.kernel.org/ 2697W: http://i2c.wiki.kernel.org/
2166T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/ 2698T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/
2167S: Maintained 2699S: Maintained
2700F: Documentation/i2c/
2701F: drivers/i2c/
2702F: include/linux/i2c.h
2703F: include/linux/i2c-dev.h
2704F: include/linux/i2c-id.h
2168 2705
2169I2C-TINY-USB DRIVER 2706I2C-TINY-USB DRIVER
2170P: Till Harbaum 2707P: Till Harbaum
2171M: till@harbaum.org 2708M: till@harbaum.org
2172L: linux-i2c@vger.kernel.org 2709L: linux-i2c@vger.kernel.org
2173T: http://www.harbaum.org/till/i2c_tiny_usb 2710W: http://www.harbaum.org/till/i2c_tiny_usb
2174S: Maintained 2711S: Maintained
2712F: drivers/i2c/busses/i2c-tiny-usb.c
2175 2713
2176i386 BOOT CODE 2714i386 BOOT CODE
2177P: H. Peter Anvin 2715P: H. Peter Anvin
2178M: hpa@zytor.com 2716M: hpa@zytor.com
2179L: Linux-Kernel@vger.kernel.org 2717L: Linux-Kernel@vger.kernel.org
2180S: Maintained 2718S: Maintained
2719F: arch/x86/boot/
2181 2720
2182i386 SETUP CODE / CPU ERRATA WORKAROUNDS 2721i386 SETUP CODE / CPU ERRATA WORKAROUNDS
2183P: H. Peter Anvin 2722P: H. Peter Anvin
2184M: hpa@zytor.com 2723M: hpa@zytor.com
2185T: git.kernel.org:/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git 2724T: git git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git
2186S: Maintained 2725S: Maintained
2187 2726
2188IA64 (Itanium) PLATFORM 2727IA64 (Itanium) PLATFORM
@@ -2190,19 +2729,22 @@ P: Tony Luck
2190M: tony.luck@intel.com 2729M: tony.luck@intel.com
2191L: linux-ia64@vger.kernel.org 2730L: linux-ia64@vger.kernel.org
2192W: http://www.ia64-linux.org/ 2731W: http://www.ia64-linux.org/
2193T: git kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git 2732T: git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
2194S: Maintained 2733S: Maintained
2734F: arch/ia64/
2195 2735
2196IBM MCA SCSI SUBSYSTEM DRIVER 2736IBM MCA SCSI SUBSYSTEM DRIVER
2197P: Michael Lang 2737P: Michael Lang
2198M: langa2@kph.uni-mainz.de 2738M: langa2@kph.uni-mainz.de
2199W: http://www.uni-mainz.de/~langm000/linux.html 2739W: http://www.uni-mainz.de/~langm000/linux.html
2200S: Maintained 2740S: Maintained
2741F: drivers/scsi/ibmmca.c
2201 2742
2202IBM Power Linux RAID adapter 2743IBM Power Linux RAID adapter
2203P: Brian King 2744P: Brian King
2204M: brking@us.ibm.com 2745M: brking@us.ibm.com
2205S: Supported 2746S: Supported
2747F: drivers/scsi/ipr.*
2206 2748
2207IBM ServeRAID RAID DRIVER 2749IBM ServeRAID RAID DRIVER
2208P: Jack Hammer 2750P: Jack Hammer
@@ -2210,52 +2752,63 @@ P: Dave Jeffery
2210M: ipslinux@adaptec.com 2752M: ipslinux@adaptec.com
2211W: http://www.developer.ibm.com/welcome/netfinity/serveraid.html 2753W: http://www.developer.ibm.com/welcome/netfinity/serveraid.html
2212S: Supported 2754S: Supported
2755F: drivers/scsi/ips.*
2213 2756
2214IDE SUBSYSTEM 2757IDE SUBSYSTEM
2215P: Bartlomiej Zolnierkiewicz 2758P: Bartlomiej Zolnierkiewicz
2216M: bzolnier@gmail.com 2759M: bzolnier@gmail.com
2217L: linux-ide@vger.kernel.org 2760L: linux-ide@vger.kernel.org
2218T: quilt kernel.org/pub/linux/kernel/people/bart/pata-2.6/ 2761T: git git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6.git
2219S: Maintained 2762S: Maintained
2763F: Documentation/ide/
2764F: drivers/ide/
2765F: include/linux/ide.h
2220 2766
2221IDE/ATAPI DRIVERS 2767IDE/ATAPI DRIVERS
2222P: Borislav Petkov 2768P: Borislav Petkov
2223M: petkovbb@gmail.com 2769M: petkovbb@gmail.com
2224L: linux-ide@vger.kernel.org 2770L: linux-ide@vger.kernel.org
2225S: Maintained 2771S: Maintained
2772F: Documentation/cdrom/ide-cd
2773F: drivers/ide/ide-cd*
2226 2774
2227IDLE-I7300 2775IDLE-I7300
2228P: Andy Henroid 2776P: Andy Henroid
2229M: andrew.d.henroid@intel.com 2777M: andrew.d.henroid@intel.com
2230L: linux-pm@lists.linux-foundation.org 2778L: linux-pm@lists.linux-foundation.org
2231S: Supported 2779S: Supported
2780F: drivers/idle/i7300_idle.c
2232 2781
2233IEEE 1394 SUBSYSTEM (drivers/ieee1394) 2782IEEE 1394 SUBSYSTEM
2234P: Ben Collins 2783P: Ben Collins
2235M: ben.collins@ubuntu.com 2784M: ben.collins@ubuntu.com
2236P: Stefan Richter 2785P: Stefan Richter
2237M: stefanr@s5r6.in-berlin.de 2786M: stefanr@s5r6.in-berlin.de
2238L: linux1394-devel@lists.sourceforge.net 2787L: linux1394-devel@lists.sourceforge.net
2239W: http://www.linux1394.org/ 2788W: http://www.linux1394.org/
2240T: git kernel.org:/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git 2789T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
2241S: Maintained 2790S: Maintained
2791F: drivers/ieee1394/
2242 2792
2243IEEE 1394 RAW I/O DRIVER (raw1394) 2793IEEE 1394 RAW I/O DRIVER
2244P: Dan Dennedy 2794P: Dan Dennedy
2245M: dan@dennedy.org 2795M: dan@dennedy.org
2246P: Stefan Richter 2796P: Stefan Richter
2247M: stefanr@s5r6.in-berlin.de 2797M: stefanr@s5r6.in-berlin.de
2248L: linux1394-devel@lists.sourceforge.net 2798L: linux1394-devel@lists.sourceforge.net
2249S: Maintained 2799S: Maintained
2800F: drivers/ieee1394/raw1394*
2250 2801
2251INTEGRITY MEASUREMENT ARCHITECTURE (IMA) 2802INTEGRITY MEASUREMENT ARCHITECTURE (IMA)
2252P: Mimi Zohar 2803P: Mimi Zohar
2253M: zohar@us.ibm.com 2804M: zohar@us.ibm.com
2254S: Supported 2805S: Supported
2806F: security/integrity/ima/
2255 2807
2256IMS TWINTURBO FRAMEBUFFER DRIVER 2808IMS TWINTURBO FRAMEBUFFER DRIVER
2257L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2809L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2258S: Orphan 2810S: Orphan
2811F: drivers/video/imsttfb.c
2259 2812
2260INFINIBAND SUBSYSTEM 2813INFINIBAND SUBSYSTEM
2261P: Roland Dreier 2814P: Roland Dreier
@@ -2266,8 +2819,11 @@ P: Hal Rosenstock
2266M: hal.rosenstock@gmail.com 2819M: hal.rosenstock@gmail.com
2267L: general@lists.openfabrics.org (moderated for non-subscribers) 2820L: general@lists.openfabrics.org (moderated for non-subscribers)
2268W: http://www.openib.org/ 2821W: http://www.openib.org/
2269T: git kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git 2822T: git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git
2270S: Supported 2823S: Supported
2824F: Documentation/infiniband/
2825F: drivers/infiniband/
2826F: include/linux/if_infiniband.h
2271 2827
2272INOTIFY 2828INOTIFY
2273P: John McCutchan 2829P: John McCutchan
@@ -2276,26 +2832,33 @@ P: Robert Love
2276M: rlove@rlove.org 2832M: rlove@rlove.org
2277L: linux-kernel@vger.kernel.org 2833L: linux-kernel@vger.kernel.org
2278S: Maintained 2834S: Maintained
2835F: Documentation/filesystems/inotify.txt
2836F: fs/notify/inotify/
2837F: include/linux/inotify.h
2279 2838
2280INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS 2839INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
2281P: Dmitry Torokhov 2840P: Dmitry Torokhov
2282M: dmitry.torokhov@gmail.com 2841M: dmitry.torokhov@gmail.com
2283M: dtor@mail.ru 2842M: dtor@mail.ru
2284L: linux-input@vger.kernel.org 2843L: linux-input@vger.kernel.org
2285T: git kernel.org:/pub/scm/linux/kernel/git/dtor/input.git 2844T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
2286S: Maintained 2845S: Maintained
2846F: drivers/input/
2287 2847
2288INTEL FRAMEBUFFER DRIVER (excluding 810 and 815) 2848INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
2289P: Sylvain Meyer 2849P: Sylvain Meyer
2290M: sylvain.meyer@worldonline.fr 2850M: sylvain.meyer@worldonline.fr
2291L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2851L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2292S: Maintained 2852S: Maintained
2853F: Documentation/fb/intelfb.txt
2854F: drivers/video/intelfb/
2293 2855
2294INTEL 810/815 FRAMEBUFFER DRIVER 2856INTEL 810/815 FRAMEBUFFER DRIVER
2295P: Antonino Daplas 2857P: Antonino Daplas
2296M: adaplas@gmail.com 2858M: adaplas@gmail.com
2297L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2859L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2298S: Maintained 2860S: Maintained
2861F: drivers/video/i810/
2299 2862
2300INTEL MENLOW THERMAL DRIVER 2863INTEL MENLOW THERMAL DRIVER
2301P: Sujith Thomas 2864P: Sujith Thomas
@@ -2303,46 +2866,61 @@ M: sujith.thomas@intel.com
2303L: linux-acpi@vger.kernel.org 2866L: linux-acpi@vger.kernel.org
2304W: http://www.lesswatts.org/projects/acpi/ 2867W: http://www.lesswatts.org/projects/acpi/
2305S: Supported 2868S: Supported
2869F: drivers/platform/x86/intel_menlow.c
2306 2870
2307INTEL IA32 MICROCODE UPDATE SUPPORT 2871INTEL IA32 MICROCODE UPDATE SUPPORT
2308P: Tigran Aivazian 2872P: Tigran Aivazian
2309M: tigran@aivazian.fsnet.co.uk 2873M: tigran@aivazian.fsnet.co.uk
2310S: Maintained 2874S: Maintained
2875F: arch/x86/kernel/microcode_core.c
2876F: arch/x86/kernel/microcode_intel.c
2311 2877
2312INTEL I/OAT DMA DRIVER 2878INTEL I/OAT DMA DRIVER
2313P: Maciej Sosnowski 2879P: Maciej Sosnowski
2314M: maciej.sosnowski@intel.com 2880M: maciej.sosnowski@intel.com
2315L: linux-kernel@vger.kernel.org 2881L: linux-kernel@vger.kernel.org
2316S: Supported 2882S: Supported
2883F: drivers/dma/ioat*
2317 2884
2318INTEL IOMMU (VT-d) 2885INTEL IOMMU (VT-d)
2319P: David Woodhouse 2886P: David Woodhouse
2320M: dwmw2@infradead.org 2887M: dwmw2@infradead.org
2321L: iommu@lists.linux-foundation.org 2888L: iommu@lists.linux-foundation.org
2322T: git://git.infradead.org/iommu-2.6.git 2889T: git git://git.infradead.org/iommu-2.6.git
2323S: Supported 2890S: Supported
2891F: drivers/pci/intel-iommu.c
2892F: include/linux/intel-iommu.h
2324 2893
2325INTEL IOP-ADMA DMA DRIVER 2894INTEL IOP-ADMA DMA DRIVER
2326P: Dan Williams 2895P: Dan Williams
2327M: dan.j.williams@intel.com 2896M: dan.j.williams@intel.com
2328L: linux-kernel@vger.kernel.org 2897L: linux-kernel@vger.kernel.org
2329S: Supported 2898S: Supported
2899F: drivers/dma/iop-adma.c
2330 2900
2331INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT 2901INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
2332P: Krzysztof Halasa 2902P: Krzysztof Halasa
2333M: khc@pm.waw.pl 2903M: khc@pm.waw.pl
2334S: Maintained 2904S: Maintained
2905F: arch/arm/mach-ixp4xx/include/mach/qmgr.h
2906F: arch/arm/mach-ixp4xx/include/mach/npe.h
2907F: arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
2908F: arch/arm/mach-ixp4xx/ixp4xx_npe.c
2909F: drivers/net/arm/ixp4xx_eth.c
2910F: drivers/net/wan/ixp4xx_hss.c
2335 2911
2336INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT 2912INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
2337P: Deepak Saxena 2913P: Deepak Saxena
2338M: dsaxena@plexity.net 2914M: dsaxena@plexity.net
2339S: Maintained 2915S: Maintained
2916F: drivers/char/hw_random/ixp4xx-rng.c
2340 2917
2341INTEL IXP2000 ETHERNET DRIVER 2918INTEL IXP2000 ETHERNET DRIVER
2342P: Lennert Buytenhek 2919P: Lennert Buytenhek
2343M: kernel@wantstofly.org 2920M: kernel@wantstofly.org
2344L: netdev@vger.kernel.org 2921L: netdev@vger.kernel.org
2345S: Maintained 2922S: Maintained
2923F: drivers/net/ixp2000/
2346 2924
2347INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe) 2925INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe)
2348P: Jeff Kirsher 2926P: Jeff Kirsher
@@ -2358,6 +2936,12 @@ M: john.ronciak@intel.com
2358L: e1000-devel@lists.sourceforge.net 2936L: e1000-devel@lists.sourceforge.net
2359W: http://e1000.sourceforge.net/ 2937W: http://e1000.sourceforge.net/
2360S: Supported 2938S: Supported
2939F: drivers/net/e100.c
2940F: drivers/net/e1000/
2941F: drivers/net/e1000e/
2942F: drivers/net/igb/
2943F: drivers/net/ixgb/
2944F: drivers/net/ixgbe/
2361 2945
2362INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT 2946INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
2363P: Zhu Yi 2947P: Zhu Yi
@@ -2371,6 +2955,8 @@ L: ipw2100-devel@lists.sourceforge.net
2371W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel 2955W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
2372W: http://ipw2100.sourceforge.net 2956W: http://ipw2100.sourceforge.net
2373S: Supported 2957S: Supported
2958F: Documentation/networking/README.ipw2100
2959F: drivers/net/wireless/ipw2x00/ipw2100.*
2374 2960
2375INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT 2961INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
2376P: Zhu Yi 2962P: Zhu Yi
@@ -2384,6 +2970,8 @@ L: ipw2100-devel@lists.sourceforge.net
2384W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel 2970W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
2385W: http://ipw2200.sourceforge.net 2971W: http://ipw2200.sourceforge.net
2386S: Supported 2972S: Supported
2973F: Documentation/networking/README.ipw2200
2974F: drivers/net/wireless/ipw2x00/ipw2200.*
2387 2975
2388INTEL WIRELESS WIMAX CONNECTION 2400 2976INTEL WIRELESS WIMAX CONNECTION 2400
2389P: Inaky Perez-Gonzalez 2977P: Inaky Perez-Gonzalez
@@ -2392,6 +2980,9 @@ M: linux-wimax@intel.com
2392L: wimax@linuxwimax.org 2980L: wimax@linuxwimax.org
2393S: Supported 2981S: Supported
2394W: http://linuxwimax.org 2982W: http://linuxwimax.org
2983F: Documentation/wimax/README.i2400m
2984F: drivers/net/wimax/i2400m/
2985F: include/linux/wimax/i2400m.h
2395 2986
2396INTEL WIRELESS WIFI LINK (iwlwifi) 2987INTEL WIRELESS WIFI LINK (iwlwifi)
2397P: Zhu Yi 2988P: Zhu Yi
@@ -2401,25 +2992,29 @@ M: reinette.chatre@intel.com
2401L: linux-wireless@vger.kernel.org 2992L: linux-wireless@vger.kernel.org
2402L: ipw3945-devel@lists.sourceforge.net 2993L: ipw3945-devel@lists.sourceforge.net
2403W: http://intellinuxwireless.org 2994W: http://intellinuxwireless.org
2404T: git kernel.org:/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git 2995T: git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
2405S: Supported 2996S: Supported
2997F: drivers/net/wireless/iwlwifi/
2406 2998
2407IOC3 ETHERNET DRIVER 2999IOC3 ETHERNET DRIVER
2408P: Ralf Baechle 3000P: Ralf Baechle
2409M: ralf@linux-mips.org 3001M: ralf@linux-mips.org
2410L: linux-mips@linux-mips.org 3002L: linux-mips@linux-mips.org
2411S: Maintained 3003S: Maintained
3004F: drivers/net/ioc3-eth.c
2412 3005
2413IOC3 SERIAL DRIVER 3006IOC3 SERIAL DRIVER
2414P: Pat Gefre 3007P: Pat Gefre
2415M: pfg@sgi.com 3008M: pfg@sgi.com
2416L: linux-mips@linux-mips.org 3009L: linux-mips@linux-mips.org
2417S: Maintained 3010S: Maintained
3011F: drivers/serial/ioc3_serial.c
2418 3012
2419IP MASQUERADING 3013IP MASQUERADING
2420P: Juanjo Ciarlante 3014P: Juanjo Ciarlante
2421M: jjciarla@raiz.uncu.edu.ar 3015M: jjciarla@raiz.uncu.edu.ar
2422S: Maintained 3016S: Maintained
3017F: net/ipv4/netfilter/ipt_MASQUERADE.c
2423 3018
2424IP1000A 10/100/1000 GIGABIT ETHERNET DRIVER 3019IP1000A 10/100/1000 GIGABIT ETHERNET DRIVER
2425P: Francois Romieu 3020P: Francois Romieu
@@ -2430,6 +3025,7 @@ P: Jesse Huang
2430M: jesse@icplus.com.tw 3025M: jesse@icplus.com.tw
2431L: netdev@vger.kernel.org 3026L: netdev@vger.kernel.org
2432S: Maintained 3027S: Maintained
3028F: drivers/net/ipg.c
2433 3029
2434IPATH DRIVER 3030IPATH DRIVER
2435P: Ralph Campbell 3031P: Ralph Campbell
@@ -2437,6 +3033,7 @@ M: infinipath@qlogic.com
2437L: general@lists.openfabrics.org 3033L: general@lists.openfabrics.org
2438T: git git://git.qlogic.com/ipath-linux-2.6 3034T: git git://git.qlogic.com/ipath-linux-2.6
2439S: Supported 3035S: Supported
3036F: drivers/infiniband/hw/ipath/
2440 3037
2441IPMI SUBSYSTEM 3038IPMI SUBSYSTEM
2442P: Corey Minyard 3039P: Corey Minyard
@@ -2444,6 +3041,9 @@ M: minyard@acm.org
2444L: openipmi-developer@lists.sourceforge.net 3041L: openipmi-developer@lists.sourceforge.net
2445W: http://openipmi.sourceforge.net/ 3042W: http://openipmi.sourceforge.net/
2446S: Supported 3043S: Supported
3044F: Documentation/IPMI.txt
3045F: drivers/char/ipmi/
3046F: include/linux/ipmi*
2447 3047
2448IPS SCSI RAID DRIVER 3048IPS SCSI RAID DRIVER
2449P: Adaptec OEM Raid Solutions 3049P: Adaptec OEM Raid Solutions
@@ -2451,6 +3051,7 @@ M: aacraid@adaptec.com
2451L: linux-scsi@vger.kernel.org 3051L: linux-scsi@vger.kernel.org
2452W: http://www.adaptec.com/ 3052W: http://www.adaptec.com/
2453S: Maintained 3053S: Maintained
3054F: drivers/scsi/ips*
2454 3055
2455IPVS 3056IPVS
2456P: Wensong Zhang 3057P: Wensong Zhang
@@ -2462,6 +3063,8 @@ M: ja@ssi.bg
2462L: netdev@vger.kernel.org 3063L: netdev@vger.kernel.org
2463L: lvs-devel@vger.kernel.org 3064L: lvs-devel@vger.kernel.org
2464S: Maintained 3065S: Maintained
3066F: Documentation/networking/ipvs-sysctl.txt
3067F: net/netfilter/ipvs/
2465 3068
2466IPWIRELESS DRIVER 3069IPWIRELESS DRIVER
2467P: Jiri Kosina 3070P: Jiri Kosina
@@ -2469,13 +3072,17 @@ M: jkosina@suse.cz
2469P: David Sterba 3072P: David Sterba
2470M: dsterba@suse.cz 3073M: dsterba@suse.cz
2471S: Maintained 3074S: Maintained
2472T: git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git 3075T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git
3076F: drivers/char/pcmcia/ipwireless/
2473 3077
2474IPX NETWORK LAYER 3078IPX NETWORK LAYER
2475P: Arnaldo Carvalho de Melo 3079P: Arnaldo Carvalho de Melo
2476M: acme@ghostprotocols.net 3080M: acme@ghostprotocols.net
2477L: netdev@vger.kernel.org 3081L: netdev@vger.kernel.org
2478S: Maintained 3082S: Maintained
3083F: include/linux/ipx.h
3084F: include/net/ipx.h
3085F: net/ipx/
2479 3086
2480IRDA SUBSYSTEM 3087IRDA SUBSYSTEM
2481P: Samuel Ortiz 3088P: Samuel Ortiz
@@ -2483,27 +3090,40 @@ M: samuel@sortiz.org
2483L: irda-users@lists.sourceforge.net (subscribers-only) 3090L: irda-users@lists.sourceforge.net (subscribers-only)
2484W: http://irda.sourceforge.net/ 3091W: http://irda.sourceforge.net/
2485S: Maintained 3092S: Maintained
3093F: Documentation/networking/irda.txt
3094F: drivers/net/irda/
3095F: include/net/irda/
3096F: net/irda/
2486 3097
2487ISAPNP 3098ISAPNP
2488P: Jaroslav Kysela 3099P: Jaroslav Kysela
2489M: perex@perex.cz 3100M: perex@perex.cz
2490S: Maintained 3101S: Maintained
3102F: Documentation/isapnp.txt
3103F: drivers/pnp/isapnp/
3104F: include/linux/isapnp.h
2491 3105
2492ISCSI 3106ISCSI
2493P: Mike Christie 3107P: Mike Christie
2494M: michaelc@cs.wisc.edu 3108M: michaelc@cs.wisc.edu
2495L: open-iscsi@googlegroups.com 3109L: open-iscsi@googlegroups.com
2496W: www.open-iscsi.org 3110W: www.open-iscsi.org
2497T: git kernel.org:/pub/scm/linux/kernel/mnc/linux-2.6-iscsi.git 3111T: git git://git.kernel.org/pub/scm/linux/kernel/git/mnc/linux-2.6-iscsi.git
2498S: Maintained 3112S: Maintained
3113F: drivers/scsi/*iscsi*
3114F: include/scsi/*iscsi*
2499 3115
2500ISDN SUBSYSTEM 3116ISDN SUBSYSTEM
2501P: Karsten Keil 3117P: Karsten Keil
2502M: isdn@linux-pingi.de 3118M: isdn@linux-pingi.de
2503L: isdn4linux@listserv.isdn4linux.de (subscribers-only) 3119L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
2504W: http://www.isdn4linux.de 3120W: http://www.isdn4linux.de
2505T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git 3121T: git git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/isdn-2.6.git
2506S: Maintained 3122S: Maintained
3123F: Documentation/isdn/
3124F: drivers/isdn/
3125F: include/linux/isdn.h
3126F: include/linux/isdn/
2507 3127
2508ISDN SUBSYSTEM (Eicon active card driver) 3128ISDN SUBSYSTEM (Eicon active card driver)
2509P: Armin Schindler 3129P: Armin Schindler
@@ -2511,6 +3131,7 @@ M: mac@melware.de
2511L: isdn4linux@listserv.isdn4linux.de (subscribers-only) 3131L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
2512W: http://www.melware.de 3132W: http://www.melware.de
2513S: Maintained 3133S: Maintained
3134F: drivers/isdn/hardware/eicon/
2514 3135
2515IVTV VIDEO4LINUX DRIVER 3136IVTV VIDEO4LINUX DRIVER
2516P: Hans Verkuil 3137P: Hans Verkuil
@@ -2518,23 +3139,29 @@ M: hverkuil@xs4all.nl
2518L: ivtv-devel@ivtvdriver.org 3139L: ivtv-devel@ivtvdriver.org
2519L: ivtv-users@ivtvdriver.org 3140L: ivtv-users@ivtvdriver.org
2520L: linux-media@vger.kernel.org 3141L: linux-media@vger.kernel.org
2521T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 3142T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
2522W: http://www.ivtvdriver.org 3143W: http://www.ivtvdriver.org
2523S: Maintained 3144S: Maintained
3145F: Documentation/video4linux/*.ivtv
3146F: drivers/media/video/ivtv/
3147F: include/linux/ivtv*
2524 3148
2525JFS FILESYSTEM 3149JFS FILESYSTEM
2526P: Dave Kleikamp 3150P: Dave Kleikamp
2527M: shaggy@austin.ibm.com 3151M: shaggy@austin.ibm.com
2528L: jfs-discussion@lists.sourceforge.net 3152L: jfs-discussion@lists.sourceforge.net
2529W: http://jfs.sourceforge.net/ 3153W: http://jfs.sourceforge.net/
2530T: git kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git 3154T: git git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git
2531S: Supported 3155S: Supported
3156F: Documentation/filesystems/jfs.txt
3157F: fs/jfs/
2532 3158
2533JME NETWORK DRIVER 3159JME NETWORK DRIVER
2534P: Guo-Fu Tseng 3160P: Guo-Fu Tseng
2535M: cooldavid@cooldavid.org 3161M: cooldavid@cooldavid.org
2536L: netdev@vger.kernel.org 3162L: netdev@vger.kernel.org
2537S: Maintained 3163S: Maintained
3164F: drivers/net/jme.*
2538 3165
2539JOURNALLING FLASH FILE SYSTEM V2 (JFFS2) 3166JOURNALLING FLASH FILE SYSTEM V2 (JFFS2)
2540P: David Woodhouse 3167P: David Woodhouse
@@ -2542,24 +3169,36 @@ M: dwmw2@infradead.org
2542L: linux-mtd@lists.infradead.org 3169L: linux-mtd@lists.infradead.org
2543W: http://www.linux-mtd.infradead.org/doc/jffs2.html 3170W: http://www.linux-mtd.infradead.org/doc/jffs2.html
2544S: Maintained 3171S: Maintained
3172F: fs/jffs2/
3173F: include/linux/jffs2.h
3174F: include/mtd/jffs2-user.h
2545 3175
2546JOURNALLING LAYER FOR BLOCK DEVICES (JBD) 3176JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
2547P: Stephen Tweedie, Andrew Morton 3177P: Stephen Tweedie
2548M: sct@redhat.com, akpm@linux-foundation.org 3178M: sct@redhat.com
3179P: Andrew Morton
3180M: akpm@linux-foundation.org
2549L: linux-ext4@vger.kernel.org 3181L: linux-ext4@vger.kernel.org
2550S: Maintained 3182S: Maintained
3183F: fs/jbd*/
3184F: include/linux/ext*jbd*.h
3185F: include/linux/jbd*.h
2551 3186
2552K8TEMP HARDWARE MONITORING DRIVER 3187K8TEMP HARDWARE MONITORING DRIVER
2553P: Rudolf Marek 3188P: Rudolf Marek
2554M: r.marek@assembler.cz 3189M: r.marek@assembler.cz
2555L: lm-sensors@lm-sensors.org 3190L: lm-sensors@lm-sensors.org
2556S: Maintained 3191S: Maintained
3192F: Documentation/hwmon/k8temp
3193F: drivers/hwmon/k8temp.c
2557 3194
2558KCONFIG 3195KCONFIG
2559P: Roman Zippel 3196P: Roman Zippel
2560M: zippel@linux-m68k.org 3197M: zippel@linux-m68k.org
2561L: linux-kbuild@vger.kernel.org 3198L: linux-kbuild@vger.kernel.org
2562S: Maintained 3199S: Maintained
3200F: Documentation/kbuild/kconfig-language.txt
3201F: scripts/kconfig/
2563 3202
2564KDUMP 3203KDUMP
2565P: Vivek Goyal 3204P: Vivek Goyal
@@ -2570,26 +3209,32 @@ L: kexec@lists.infradead.org
2570L: linux-kernel@vger.kernel.org 3209L: linux-kernel@vger.kernel.org
2571W: http://lse.sourceforge.net/kdump/ 3210W: http://lse.sourceforge.net/kdump/
2572S: Maintained 3211S: Maintained
3212F: Documentation/kdump/
2573 3213
2574KERNEL AUTOMOUNTER (AUTOFS) 3214KERNEL AUTOMOUNTER (AUTOFS)
2575P: H. Peter Anvin 3215P: H. Peter Anvin
2576M: hpa@zytor.com 3216M: hpa@zytor.com
2577L: autofs@linux.kernel.org 3217L: autofs@linux.kernel.org
2578S: Odd Fixes 3218S: Odd Fixes
3219F: fs/autofs/
2579 3220
2580KERNEL AUTOMOUNTER v4 (AUTOFS4) 3221KERNEL AUTOMOUNTER v4 (AUTOFS4)
2581P: Ian Kent 3222P: Ian Kent
2582M: raven@themaw.net 3223M: raven@themaw.net
2583L: autofs@linux.kernel.org 3224L: autofs@linux.kernel.org
2584S: Maintained 3225S: Maintained
3226F: fs/autofs4/
2585 3227
2586KERNEL BUILD (kbuild: Makefile, scripts/Makefile.*) 3228KERNEL BUILD
2587P: Sam Ravnborg 3229P: Sam Ravnborg
2588M: sam@ravnborg.org 3230M: sam@ravnborg.org
2589T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-next.git 3231T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next.git
2590T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-fixes.git 3232T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes.git
2591L: linux-kbuild@vger.kernel.org 3233L: linux-kbuild@vger.kernel.org
2592S: Maintained 3234S: Maintained
3235F: Documentation/kbuild/
3236F: Makefile
3237F: scripts/Makefile.*
2593 3238
2594KERNEL JANITORS 3239KERNEL JANITORS
2595P: Several 3240P: Several
@@ -2605,6 +3250,13 @@ M: neilb@suse.de
2605L: linux-nfs@vger.kernel.org 3250L: linux-nfs@vger.kernel.org
2606W: http://nfs.sourceforge.net/ 3251W: http://nfs.sourceforge.net/
2607S: Supported 3252S: Supported
3253F: fs/nfsd/
3254F: include/linux/nfsd/
3255F: fs/lockd/
3256F: fs/nfs_common/
3257F: net/sunrpc/
3258F: include/linux/lockd/
3259F: include/linux/sunrpc/
2608 3260
2609KERNEL VIRTUAL MACHINE (KVM) 3261KERNEL VIRTUAL MACHINE (KVM)
2610P: Avi Kivity 3262P: Avi Kivity
@@ -2612,6 +3264,11 @@ M: avi@redhat.com
2612L: kvm@vger.kernel.org 3264L: kvm@vger.kernel.org
2613W: http://kvm.qumranet.com 3265W: http://kvm.qumranet.com
2614S: Supported 3266S: Supported
3267F: Documentation/*/kvm.txt
3268F: arch/*/kvm/
3269F: arch/*/include/asm/kvm*
3270F: include/linux/kvm*
3271F: virt/kvm/
2615 3272
2616KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V 3273KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V
2617P: Joerg Roedel 3274P: Joerg Roedel
@@ -2619,6 +3276,9 @@ M: joerg.roedel@amd.com
2619L: kvm@vger.kernel.org 3276L: kvm@vger.kernel.org
2620W: http://kvm.qumranet.com 3277W: http://kvm.qumranet.com
2621S: Supported 3278S: Supported
3279F: arch/x86/include/asm/svm.h
3280F: arch/x86/kvm/kvm_svm.h
3281F: arch/x86/kvm/svm.c
2622 3282
2623KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC 3283KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
2624P: Hollis Blanchard 3284P: Hollis Blanchard
@@ -2626,6 +3286,8 @@ M: hollisb@us.ibm.com
2626L: kvm-ppc@vger.kernel.org 3286L: kvm-ppc@vger.kernel.org
2627W: http://kvm.qumranet.com 3287W: http://kvm.qumranet.com
2628S: Supported 3288S: Supported
3289F: arch/powerpc/include/asm/kvm*
3290F: arch/powerpc/kvm/
2629 3291
2630KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64) 3292KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64)
2631P: Xiantao Zhang 3293P: Xiantao Zhang
@@ -2633,6 +3295,9 @@ M: xiantao.zhang@intel.com
2633L: kvm-ia64@vger.kernel.org 3295L: kvm-ia64@vger.kernel.org
2634W: http://kvm.qumranet.com 3296W: http://kvm.qumranet.com
2635S: Supported 3297S: Supported
3298F: Documentation/ia64/kvm.txt
3299F: arch/ia64/include/asm/kvm*
3300F: arch/ia64/kvm/
2636 3301
2637KERNEL VIRTUAL MACHINE for s390 (KVM/s390) 3302KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
2638P: Carsten Otte 3303P: Carsten Otte
@@ -2643,6 +3308,9 @@ M: linux390@de.ibm.com
2643L: linux-s390@vger.kernel.org 3308L: linux-s390@vger.kernel.org
2644W: http://www.ibm.com/developerworks/linux/linux390/ 3309W: http://www.ibm.com/developerworks/linux/linux390/
2645S: Supported 3310S: Supported
3311F: Documentation/s390/kvm.txt
3312F: arch/s390/include/asm/kvm*
3313F: arch/s390/kvm/
2646 3314
2647KEXEC 3315KEXEC
2648P: Eric Biederman 3316P: Eric Biederman
@@ -2651,18 +3319,28 @@ W: http://ftp.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
2651L: linux-kernel@vger.kernel.org 3319L: linux-kernel@vger.kernel.org
2652L: kexec@lists.infradead.org 3320L: kexec@lists.infradead.org
2653S: Maintained 3321S: Maintained
3322F: include/linux/kexec.h
3323F: kernel/kexec.c
2654 3324
2655KGDB 3325KGDB
2656P: Jason Wessel 3326P: Jason Wessel
2657M: jason.wessel@windriver.com 3327M: jason.wessel@windriver.com
2658L: kgdb-bugreport@lists.sourceforge.net 3328L: kgdb-bugreport@lists.sourceforge.net
2659S: Maintained 3329S: Maintained
3330F: Documentation/DocBook/kgdb.tmpl
3331F: drivers/misc/kgdbts.c
3332F: drivers/serial/kgdboc.c
3333F: include/linux/kgdb.h
3334F: kernel/kgdb.c
2660 3335
2661KMEMTRACE 3336KMEMTRACE
2662P: Eduard - Gabriel Munteanu 3337P: Eduard - Gabriel Munteanu
2663M: eduard.munteanu@linux360.ro 3338M: eduard.munteanu@linux360.ro
2664L: linux-kernel@vger.kernel.org 3339L: linux-kernel@vger.kernel.org
2665S: Maintained 3340S: Maintained
3341F: Documentation/trace/kmemtrace.txt
3342F: include/trace/kmemtrace.h
3343F: kernel/trace/kmemtrace.c
2666 3344
2667KPROBES 3345KPROBES
2668P: Ananth N Mavinakayanahalli 3346P: Ananth N Mavinakayanahalli
@@ -2675,6 +3353,9 @@ P: Masami Hiramatsu
2675M: mhiramat@redhat.com 3353M: mhiramat@redhat.com
2676L: linux-kernel@vger.kernel.org 3354L: linux-kernel@vger.kernel.org
2677S: Maintained 3355S: Maintained
3356F: Documentation/kprobes.txt
3357F: include/linux/kprobes.h
3358F: kernel/kprobes.c
2678 3359
2679KS0108 LCD CONTROLLER DRIVER 3360KS0108 LCD CONTROLLER DRIVER
2680P: Miguel Ojeda Sandonis 3361P: Miguel Ojeda Sandonis
@@ -2683,21 +3364,31 @@ L: linux-kernel@vger.kernel.org
2683W: http://miguelojeda.es/auxdisplay.htm 3364W: http://miguelojeda.es/auxdisplay.htm
2684W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 3365W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
2685S: Maintained 3366S: Maintained
3367F: Documentation/auxdisplay/ks0108
3368F: drivers/auxdisplay/ks0108.c
3369F: include/linux/ks0108.h
2686 3370
2687LAPB module 3371LAPB module
2688L: linux-x25@vger.kernel.org 3372L: linux-x25@vger.kernel.org
2689S: Orphan 3373S: Orphan
3374F: Documentation/networking/lapb-module.txt
3375F: include/*/lapb.h
3376F: net/lapb/
2690 3377
2691LASI 53c700 driver for PARISC 3378LASI 53c700 driver for PARISC
2692P: James E.J. Bottomley 3379P: James E.J. Bottomley
2693M: James.Bottomley@HansenPartnership.com 3380M: James.Bottomley@HansenPartnership.com
2694L: linux-scsi@vger.kernel.org 3381L: linux-scsi@vger.kernel.org
2695S: Maintained 3382S: Maintained
3383F: Documentation/scsi/53c700.txt
3384F: drivers/scsi/53c700*
2696 3385
2697LED SUBSYSTEM 3386LED SUBSYSTEM
2698P: Richard Purdie 3387P: Richard Purdie
2699M: rpurdie@rpsys.net 3388M: rpurdie@rpsys.net
2700S: Maintained 3389S: Maintained
3390F: drivers/leds/
3391F: include/linux/leds.h
2701 3392
2702LEGO USB Tower driver 3393LEGO USB Tower driver
2703P: Juergen Stuber 3394P: Juergen Stuber
@@ -2705,6 +3396,7 @@ M: starblue@users.sourceforge.net
2705L: legousb-devel@lists.sourceforge.net 3396L: legousb-devel@lists.sourceforge.net
2706W: http://legousb.sourceforge.net/ 3397W: http://legousb.sourceforge.net/
2707S: Maintained 3398S: Maintained
3399F: drivers/usb/misc/legousbtower.c
2708 3400
2709LGUEST 3401LGUEST
2710P: Rusty Russell 3402P: Rusty Russell
@@ -2712,6 +3404,11 @@ M: rusty@rustcorp.com.au
2712L: lguest@ozlabs.org 3404L: lguest@ozlabs.org
2713W: http://lguest.ozlabs.org/ 3405W: http://lguest.ozlabs.org/
2714S: Maintained 3406S: Maintained
3407F: Documentation/lguest/
3408F: arch/x86/lguest/
3409F: drivers/lguest/
3410F: include/linux/lguest*.h
3411F: arch/x86/include/asm/lguest*.h
2715 3412
2716LINUX FOR IBM pSERIES (RS/6000) 3413LINUX FOR IBM pSERIES (RS/6000)
2717P: Paul Mackerras 3414P: Paul Mackerras
@@ -2719,12 +3416,6 @@ M: paulus@au.ibm.com
2719W: http://www.ibm.com/linux/ltc/projects/ppc 3416W: http://www.ibm.com/linux/ltc/projects/ppc
2720S: Supported 3417S: Supported
2721 3418
2722LINUX FOR NCR VOYAGER
2723P: James Bottomley
2724M: James.Bottomley@HansenPartnership.com
2725W: http://www.hansenpartnership.com/voyager
2726S: Maintained
2727
2728LINUX FOR POWERPC (32-BIT AND 64-BIT) 3419LINUX FOR POWERPC (32-BIT AND 64-BIT)
2729P: Benjamin Herrenschmidt 3420P: Benjamin Herrenschmidt
2730M: benh@kernel.crashing.org 3421M: benh@kernel.crashing.org
@@ -2732,7 +3423,7 @@ P: Paul Mackerras
2732M: paulus@samba.org 3423M: paulus@samba.org
2733W: http://www.penguinppc.org/ 3424W: http://www.penguinppc.org/
2734L: linuxppc-dev@ozlabs.org 3425L: linuxppc-dev@ozlabs.org
2735T: git kernel.org:/pub/scm/linux/kernel/git/benh/powerpc.git 3426T: git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
2736S: Supported 3427S: Supported
2737 3428
2738LINUX FOR POWER MACINTOSH 3429LINUX FOR POWER MACINTOSH
@@ -2757,7 +3448,7 @@ P: Matt Porter
2757M: mporter@kernel.crashing.org 3448M: mporter@kernel.crashing.org
2758W: http://www.penguinppc.org/ 3449W: http://www.penguinppc.org/
2759L: linuxppc-dev@ozlabs.org 3450L: linuxppc-dev@ozlabs.org
2760T: git kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc.git 3451T: git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc.git
2761S: Maintained 3452S: Maintained
2762 3453
2763LINUX FOR POWERPC EMBEDDED XILINX VIRTEX 3454LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
@@ -2794,30 +3485,39 @@ LINUX SECURITY MODULE (LSM) FRAMEWORK
2794P: Chris Wright 3485P: Chris Wright
2795M: chrisw@sous-sol.org 3486M: chrisw@sous-sol.org
2796L: linux-security-module@vger.kernel.org 3487L: linux-security-module@vger.kernel.org
2797T: git kernel.org:/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git 3488T: git git://git.kernel.org/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git
2798S: Supported 3489S: Supported
2799 3490
2800LLC (802.2) 3491LLC (802.2)
2801P: Arnaldo Carvalho de Melo 3492P: Arnaldo Carvalho de Melo
2802M: acme@ghostprotocols.net 3493M: acme@ghostprotocols.net
2803S: Maintained 3494S: Maintained
3495F: include/linux/llc.h
3496F: include/net/llc*
3497F: net/llc/
2804 3498
2805LIS3LV02D ACCELEROMETER DRIVER 3499LIS3LV02D ACCELEROMETER DRIVER
2806P: Eric Piel 3500P: Eric Piel
2807M: eric.piel@tremplin-utc.net 3501M: eric.piel@tremplin-utc.net
2808S: Maintained 3502S: Maintained
3503F: Documentation/hwmon/lis3lv02d
3504F: drivers/hwmon/lis3lv02d.*
2809 3505
2810LM83 HARDWARE MONITOR DRIVER 3506LM83 HARDWARE MONITOR DRIVER
2811P: Jean Delvare 3507P: Jean Delvare
2812M: khali@linux-fr.org 3508M: khali@linux-fr.org
2813L: lm-sensors@lm-sensors.org 3509L: lm-sensors@lm-sensors.org
2814S: Maintained 3510S: Maintained
3511F: Documentation/hwmon/lm83
3512F: drivers/hwmon/lm83.c
2815 3513
2816LM90 HARDWARE MONITOR DRIVER 3514LM90 HARDWARE MONITOR DRIVER
2817P: Jean Delvare 3515P: Jean Delvare
2818M: khali@linux-fr.org 3516M: khali@linux-fr.org
2819L: lm-sensors@lm-sensors.org 3517L: lm-sensors@lm-sensors.org
2820S: Maintained 3518S: Maintained
3519F: Documentation/hwmon/lm90
3520F: drivers/hwmon/lm90.c
2821 3521
2822LOCKDEP AND LOCKSTAT 3522LOCKDEP AND LOCKSTAT
2823P: Peter Zijlstra 3523P: Peter Zijlstra
@@ -2825,8 +3525,12 @@ M: peterz@infradead.org
2825P: Ingo Molnar 3525P: Ingo Molnar
2826M: mingo@redhat.com 3526M: mingo@redhat.com
2827L: linux-kernel@vger.kernel.org 3527L: linux-kernel@vger.kernel.org
2828T: git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git 3528T: git git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git
2829S: Maintained 3529S: Maintained
3530F: Documentation/lockdep*.txt
3531F: Documentation/lockstat.txt
3532F: include/linux/lockdep.h
3533F: kernel/lockdep*
2830 3534
2831LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks) 3535LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks)
2832P: Richard Russon (FlatCap) 3536P: Richard Russon (FlatCap)
@@ -2834,6 +3538,8 @@ M: ldm@flatcap.org
2834L: linux-ntfs-dev@lists.sourceforge.net 3538L: linux-ntfs-dev@lists.sourceforge.net
2835W: http://www.linux-ntfs.org/content/view/19/37/ 3539W: http://www.linux-ntfs.org/content/view/19/37/
2836S: Maintained 3540S: Maintained
3541F: Documentation/ldm.txt
3542F: fs/partitions/ldm.*
2837 3543
2838LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI) 3544LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
2839P: Eric Moore 3545P: Eric Moore
@@ -2843,12 +3549,14 @@ L: DL-MPTFusionLinux@lsi.com
2843L: linux-scsi@vger.kernel.org 3549L: linux-scsi@vger.kernel.org
2844W: http://www.lsilogic.com/support 3550W: http://www.lsilogic.com/support
2845S: Supported 3551S: Supported
3552F: drivers/message/fusion/
2846 3553
2847LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers 3554LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers
2848P: Matthew Wilcox 3555P: Matthew Wilcox
2849M: matthew@wil.cx 3556M: matthew@wil.cx
2850L: linux-scsi@vger.kernel.org 3557L: linux-scsi@vger.kernel.org
2851S: Maintained 3558S: Maintained
3559F: drivers/scsi/sym53c8xx_2/
2852 3560
2853LTP (Linux Test Project) 3561LTP (Linux Test Project)
2854P: Subrata Modak 3562P: Subrata Modak
@@ -2857,7 +3565,7 @@ P: Mike Frysinger
2857M: vapier@gentoo.org 3565M: vapier@gentoo.org
2858L: ltp-list@lists.sourceforge.net (subscribers-only) 3566L: ltp-list@lists.sourceforge.net (subscribers-only)
2859W: http://ltp.sourceforge.net/ 3567W: http://ltp.sourceforge.net/
2860T: git kernel.org/pub/scm/linux/kernel/git/galak/ltp.git 3568T: git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
2861S: Maintained 3569S: Maintained
2862 3570
2863M32R ARCHITECTURE 3571M32R ARCHITECTURE
@@ -2867,6 +3575,8 @@ L: linux-m32r@ml.linux-m32r.org
2867L: linux-m32r-ja@ml.linux-m32r.org (in Japanese) 3575L: linux-m32r-ja@ml.linux-m32r.org (in Japanese)
2868W: http://www.linux-m32r.org/ 3576W: http://www.linux-m32r.org/
2869S: Maintained 3577S: Maintained
3578F: arch/m32r/
3579F: include/asm-m32r/
2870 3580
2871M68K ARCHITECTURE 3581M68K ARCHITECTURE
2872P: Geert Uytterhoeven 3582P: Geert Uytterhoeven
@@ -2875,8 +3585,10 @@ P: Roman Zippel
2875M: zippel@linux-m68k.org 3585M: zippel@linux-m68k.org
2876L: linux-m68k@lists.linux-m68k.org 3586L: linux-m68k@lists.linux-m68k.org
2877W: http://www.linux-m68k.org/ 3587W: http://www.linux-m68k.org/
2878T: git git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git 3588T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git
2879S: Maintained 3589S: Maintained
3590F: arch/m68k/
3591F: drivers/zorro/
2880 3592
2881M68K ON APPLE MACINTOSH 3593M68K ON APPLE MACINTOSH
2882P: Joshua Thompson 3594P: Joshua Thompson
@@ -2884,20 +3596,25 @@ M: funaho@jurai.org
2884W: http://www.mac.linux-m68k.org/ 3596W: http://www.mac.linux-m68k.org/
2885L: linux-m68k@lists.linux-m68k.org 3597L: linux-m68k@lists.linux-m68k.org
2886S: Maintained 3598S: Maintained
3599F: arch/m68k/mac/
2887 3600
2888M68K ON HP9000/300 3601M68K ON HP9000/300
2889P: Philip Blundell 3602P: Philip Blundell
2890M: philb@gnu.org 3603M: philb@gnu.org
2891W: http://www.tazenda.demon.co.uk/phil/linux-hp 3604W: http://www.tazenda.demon.co.uk/phil/linux-hp
2892S: Maintained 3605S: Maintained
3606F: arch/m68k/hp300/
2893 3607
2894MAC80211 3608MAC80211
2895P: Johannes Berg 3609P: Johannes Berg
2896M: johannes@sipsolutions.net 3610M: johannes@sipsolutions.net
2897L: linux-wireless@vger.kernel.org 3611L: linux-wireless@vger.kernel.org
2898W: http://linuxwireless.org/ 3612W: http://linuxwireless.org/
2899T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git 3613T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
2900S: Maintained 3614S: Maintained
3615F: Documentation/networking/mac80211-injection.txt
3616F: include/net/mac80211.h
3617F: net/mac80211/
2901 3618
2902MAC80211 PID RATE CONTROL 3619MAC80211 PID RATE CONTROL
2903P: Stefano Brivio 3620P: Stefano Brivio
@@ -2906,14 +3623,17 @@ P: Mattias Nissler
2906M: mattias.nissler@gmx.de 3623M: mattias.nissler@gmx.de
2907L: linux-wireless@vger.kernel.org 3624L: linux-wireless@vger.kernel.org
2908W: http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/PID 3625W: http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/PID
2909T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git 3626T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
2910S: Maintained 3627S: Maintained
3628F: net/mac80211/rc80211_pid*
2911 3629
2912MACVLAN DRIVER 3630MACVLAN DRIVER
2913P: Patrick McHardy 3631P: Patrick McHardy
2914M: kaber@trash.net 3632M: kaber@trash.net
2915L: netdev@vger.kernel.org 3633L: netdev@vger.kernel.org
2916S: Maintained 3634S: Maintained
3635F: drivers/net/macvlan.c
3636F: include/linux/if_macvlan.h
2917 3637
2918MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7 3638MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7
2919P: Michael Kerrisk 3639P: Michael Kerrisk
@@ -2927,12 +3647,15 @@ P: Dan Williams
2927M: dcbw@redhat.com 3647M: dcbw@redhat.com
2928L: libertas-dev@lists.infradead.org 3648L: libertas-dev@lists.infradead.org
2929S: Maintained 3649S: Maintained
3650F: drivers/net/wireless/libertas/
2930 3651
2931MARVELL MV643XX ETHERNET DRIVER 3652MARVELL MV643XX ETHERNET DRIVER
2932P: Lennert Buytenhek 3653P: Lennert Buytenhek
2933M: buytenh@marvell.com 3654M: buytenh@marvell.com
2934L: netdev@vger.kernel.org 3655L: netdev@vger.kernel.org
2935S: Supported 3656S: Supported
3657F: drivers/net/mv643xx_eth.*
3658F: include/linux/mv643xx.h
2936 3659
2937MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER 3660MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
2938P: Nicolas Pitre 3661P: Nicolas Pitre
@@ -2953,12 +3676,31 @@ P: Petr Vandrovec
2953M: vandrove@vc.cvut.cz 3676M: vandrove@vc.cvut.cz
2954L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 3677L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2955S: Maintained 3678S: Maintained
3679F: drivers/video/matrox/matroxfb_*
3680F: include/linux/matroxfb.h
2956 3681
2957MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER 3682MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
2958P: Hans J. Koch 3683P: Hans J. Koch
2959M: hjk@linutronix.de 3684M: hjk@linutronix.de
2960L: lm-sensors@lm-sensors.org 3685L: lm-sensors@lm-sensors.org
2961S: Maintained 3686S: Maintained
3687F: Documentation/hwmon/max6650
3688F: drivers/hwmon/max6650.c
3689
3690MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
3691P: Mauro Carvalho Chehab
3692M: mchehab@infradead.org
3693P: LinuxTV.org Project
3694L: linux-media@vger.kernel.org
3695W: http://linuxtv.org
3696T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3697S: Maintained
3698F: Documentation/dvb/
3699F: Documentation/video4linux/
3700F: drivers/media/
3701F: include/media/
3702F: include/linux/dvb/
3703F: include/linux/videodev*.h
2962 3704
2963MEGARAID SCSI DRIVERS 3705MEGARAID SCSI DRIVERS
2964P: Neela Syam Kolli 3706P: Neela Syam Kolli
@@ -2966,12 +3708,17 @@ M: megaraidlinux@lsi.com
2966L: linux-scsi@vger.kernel.org 3708L: linux-scsi@vger.kernel.org
2967W: http://megaraid.lsilogic.com 3709W: http://megaraid.lsilogic.com
2968S: Maintained 3710S: Maintained
3711F: Documentation/scsi/megaraid.txt
3712F: drivers/scsi/megaraid.*
3713F: drivers/scsi/megaraid/
2969 3714
2970MEMORY MANAGEMENT 3715MEMORY MANAGEMENT
2971L: linux-mm@kvack.org 3716L: linux-mm@kvack.org
2972L: linux-kernel@vger.kernel.org 3717L: linux-kernel@vger.kernel.org
2973W: http://www.linux-mm.org 3718W: http://www.linux-mm.org
2974S: Maintained 3719S: Maintained
3720F: include/linux/mm.h
3721F: mm/
2975 3722
2976MEMORY RESOURCE CONTROLLER 3723MEMORY RESOURCE CONTROLLER
2977P: Balbir Singh 3724P: Balbir Singh
@@ -2983,6 +3730,7 @@ M: kamezawa.hiroyu@jp.fujitsu.com
2983L: linux-mm@kvack.org 3730L: linux-mm@kvack.org
2984L: linux-kernel@vger.kernel.org 3731L: linux-kernel@vger.kernel.org
2985S: Maintained 3732S: Maintained
3733F: mm/memcontrol.c
2986 3734
2987MEMORY TECHNOLOGY DEVICES (MTD) 3735MEMORY TECHNOLOGY DEVICES (MTD)
2988P: David Woodhouse 3736P: David Woodhouse
@@ -2991,55 +3739,84 @@ W: http://www.linux-mtd.infradead.org/
2991L: linux-mtd@lists.infradead.org 3739L: linux-mtd@lists.infradead.org
2992T: git git://git.infradead.org/mtd-2.6.git 3740T: git git://git.infradead.org/mtd-2.6.git
2993S: Maintained 3741S: Maintained
3742F: drivers/mtd/
3743F: include/linux/mtd/
3744F: include/mtd/
3745
3746MICROBLAZE ARCHITECTURE
3747P: Michal Simek
3748M: monstr@monstr.eu
3749L: microblaze-uclinux@itee.uq.edu.au
3750W: http://www.monstr.eu/fdt/
3751T: git git://git.monstr.eu/linux-2.6-microblaze.git
3752S: Supported
3753F: arch/microblaze/
2994 3754
2995MICROTEK X6 SCANNER 3755MICROTEK X6 SCANNER
2996P: Oliver Neukum 3756P: Oliver Neukum
2997M: oliver@neukum.name 3757M: oliver@neukum.name
2998S: Maintained 3758S: Maintained
3759F: drivers/usb/image/microtek.*
2999 3760
3000MIPS 3761MIPS
3001P: Ralf Baechle 3762P: Ralf Baechle
3002M: ralf@linux-mips.org 3763M: ralf@linux-mips.org
3003W: http://www.linux-mips.org/ 3764W: http://www.linux-mips.org/
3004L: linux-mips@linux-mips.org 3765L: linux-mips@linux-mips.org
3005T: git www.linux-mips.org:/pub/scm/linux.git 3766T: git git://git.linux-mips.org/pub/scm/linux.git
3006S: Supported 3767S: Supported
3768F: Documentation/mips/
3769F: arch/mips/
3007 3770
3008MISCELLANEOUS MCA-SUPPORT 3771MISCELLANEOUS MCA-SUPPORT
3009P: James Bottomley 3772P: James Bottomley
3010M: James.Bottomley@HansenPartnership.com 3773M: James.Bottomley@HansenPartnership.com
3011L: linux-kernel@vger.kernel.org 3774L: linux-kernel@vger.kernel.org
3012S: Maintained 3775S: Maintained
3776F: Documentation/ia64/mca.txt
3777F: Documentation/mca.txt
3778F: drivers/mca/
3779F: include/linux/mca*
3013 3780
3014MODULE SUPPORT 3781MODULE SUPPORT
3015P: Rusty Russell 3782P: Rusty Russell
3016M: rusty@rustcorp.com.au 3783M: rusty@rustcorp.com.au
3017L: linux-kernel@vger.kernel.org 3784L: linux-kernel@vger.kernel.org
3018S: Maintained 3785S: Maintained
3786F: include/linux/module.h
3787F: kernel/module.c
3019 3788
3020MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER 3789MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER
3021P: Stelian Pop 3790P: Stelian Pop
3022M: stelian@popies.net 3791M: stelian@popies.net
3023W: http://popies.net/meye/ 3792W: http://popies.net/meye/
3024S: Maintained 3793S: Maintained
3794F: Documentation/video4linux/meye.txt
3795F: drivers/media/video/meye.*
3796F: include/linux/meye.h
3025 3797
3026MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER 3798MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER
3027P: Pavel Pisa 3799P: Pavel Pisa
3028M: ppisa@pikron.com 3800M: ppisa@pikron.com
3029L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 3801L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3030S: Maintained 3802S: Maintained
3803F: drivers/mmc/host/imxmmc.*
3031 3804
3032MOUSE AND MISC DEVICES [GENERAL] 3805MOUSE AND MISC DEVICES [GENERAL]
3033P: Alessandro Rubini 3806P: Alessandro Rubini
3034M: rubini@ipvvis.unipv.it 3807M: rubini@ipvvis.unipv.it
3035L: linux-kernel@vger.kernel.org 3808L: linux-kernel@vger.kernel.org
3036S: Maintained 3809S: Maintained
3810F: drivers/input/mouse/
3811F: include/linux/gpio_mouse.h
3037 3812
3038MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD 3813MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
3039P: Jiri Slaby 3814P: Jiri Slaby
3040M: jirislaby@gmail.com 3815M: jirislaby@gmail.com
3041L: linux-kernel@vger.kernel.org 3816L: linux-kernel@vger.kernel.org
3042S: Maintained 3817S: Maintained
3818F: Documentation/serial/moxa-smartio
3819F: drivers/char/mxser.*
3043 3820
3044MSI LAPTOP SUPPORT 3821MSI LAPTOP SUPPORT
3045P: Lennart Poettering 3822P: Lennart Poettering
@@ -3047,43 +3824,54 @@ M: mzxreary@0pointer.de
3047W: https://tango.0pointer.de/mailman/listinfo/s270-linux 3824W: https://tango.0pointer.de/mailman/listinfo/s270-linux
3048W: http://0pointer.de/lennart/tchibo.html 3825W: http://0pointer.de/lennart/tchibo.html
3049S: Maintained 3826S: Maintained
3827F: drivers/platform/x86/msi-laptop.c
3050 3828
3051MULTIFUNCTION DEVICES (MFD) 3829MULTIFUNCTION DEVICES (MFD)
3052P: Samuel Ortiz 3830P: Samuel Ortiz
3053M: sameo@linux.intel.com 3831M: sameo@linux.intel.com
3054L: linux-kernel@vger.kernel.org 3832L: linux-kernel@vger.kernel.org
3055T: git kernel.org:/pub/scm/linux/kernel/git/sameo/mfd-2.6.git 3833T: git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git
3056S: Supported 3834S: Supported
3835F: drivers/mfd/
3057 3836
3058MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM 3837MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
3059P: Pierre Ossman 3838P: Pierre Ossman
3060M: drzeus-mmc@drzeus.cx 3839M: pierre@ossman.eu
3061L: linux-kernel@vger.kernel.org 3840L: linux-kernel@vger.kernel.org
3062S: Maintained 3841S: Maintained
3842F: drivers/mmc/
3843F: include/linux/mmc/
3063 3844
3064MULTIMEDIA CARD (MMC) ETC. OVER SPI 3845MULTIMEDIA CARD (MMC) ETC. OVER SPI
3065P: David Brownell 3846P: David Brownell
3066M: dbrownell@users.sourceforge.net 3847M: dbrownell@users.sourceforge.net
3067L: linux-kernel@vger.kernel.org 3848L: linux-kernel@vger.kernel.org
3068S: Odd Fixes 3849S: Odd Fixes
3850F: drivers/mmc/host/mmc_spi.c
3851F: include/linux/spi/mmc_spi.h
3069 3852
3070MULTISOUND SOUND DRIVER 3853MULTISOUND SOUND DRIVER
3071P: Andrew Veliath 3854P: Andrew Veliath
3072M: andrewtv@usa.net 3855M: andrewtv@usa.net
3073S: Maintained 3856S: Maintained
3857F: Documentation/sound/oss/MultiSound
3858F: sound/oss/msnd*
3074 3859
3075MULTITECH MULTIPORT CARD (ISICOM) 3860MULTITECH MULTIPORT CARD (ISICOM)
3076P: Jiri Slaby 3861P: Jiri Slaby
3077M: jirislaby@gmail.com 3862M: jirislaby@gmail.com
3078L: linux-kernel@vger.kernel.org 3863L: linux-kernel@vger.kernel.org
3079S: Maintained 3864S: Maintained
3865F: drivers/char/isicom.c
3866F: include/linux/isicom.h
3080 3867
3081MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER 3868MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
3082P: Felipe Balbi 3869P: Felipe Balbi
3083M: felipe.balbi@nokia.com 3870M: felipe.balbi@nokia.com
3084L: linux-usb@vger.kernel.org 3871L: linux-usb@vger.kernel.org
3085T: git gitorious.org:/musb/mainline.git 3872T: git git://gitorious.org/musb/mainline.git
3086S: Maintained 3873S: Maintained
3874F: drivers/usb/musb/
3087 3875
3088MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE) 3876MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
3089P: Andrew Gallatin 3877P: Andrew Gallatin
@@ -3093,23 +3881,27 @@ M: brice@myri.com
3093L: netdev@vger.kernel.org 3881L: netdev@vger.kernel.org
3094W: http://www.myri.com/scs/download-Myri10GE.html 3882W: http://www.myri.com/scs/download-Myri10GE.html
3095S: Supported 3883S: Supported
3884F: drivers/net/myri10ge/
3096 3885
3097NATSEMI ETHERNET DRIVER (DP8381x) 3886NATSEMI ETHERNET DRIVER (DP8381x)
3098P: Tim Hockin 3887P: Tim Hockin
3099M: thockin@hockin.org 3888M: thockin@hockin.org
3100S: Maintained 3889S: Maintained
3890F: drivers/net/natsemi.c
3101 3891
3102NCP FILESYSTEM 3892NCP FILESYSTEM
3103P: Petr Vandrovec 3893P: Petr Vandrovec
3104M: vandrove@vc.cvut.cz 3894M: vandrove@vc.cvut.cz
3105L: linware@sh.cvut.cz 3895L: linware@sh.cvut.cz
3106S: Maintained 3896S: Maintained
3897F: fs/ncpfs/
3107 3898
3108NCR DUAL 700 SCSI DRIVER (MICROCHANNEL) 3899NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
3109P: James E.J. Bottomley 3900P: James E.J. Bottomley
3110M: James.Bottomley@HansenPartnership.com 3901M: James.Bottomley@HansenPartnership.com
3111L: linux-scsi@vger.kernel.org 3902L: linux-scsi@vger.kernel.org
3112S: Maintained 3903S: Maintained
3904F: drivers/scsi/NCR_D700.*
3113 3905
3114NETEFFECT IWARP RNIC DRIVER (IW_NES) 3906NETEFFECT IWARP RNIC DRIVER (IW_NES)
3115P: Faisal Latif 3907P: Faisal Latif
@@ -3126,6 +3918,7 @@ P: Stephen Hemminger
3126M: shemminger@linux-foundation.org 3918M: shemminger@linux-foundation.org
3127L: netem@lists.linux-foundation.org 3919L: netem@lists.linux-foundation.org
3128S: Maintained 3920S: Maintained
3921F: net/sched/sch_netem.c
3129 3922
3130NETERION (S2IO) 10GbE DRIVER (xframe/vxge) 3923NETERION (S2IO) 10GbE DRIVER (xframe/vxge)
3131P: Ramkrishna Vepa 3924P: Ramkrishna Vepa
@@ -3142,6 +3935,8 @@ L: netdev@vger.kernel.org
3142W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/Linux?Anonymous 3935W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/Linux?Anonymous
3143W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/X3100Linux?Anonymous 3936W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/X3100Linux?Anonymous
3144S: Supported 3937S: Supported
3938F: Documentation/networking/s2io.txt
3939F: drivers/net/s2io*
3145 3940
3146NETFILTER/IPTABLES/IPCHAINS 3941NETFILTER/IPTABLES/IPCHAINS
3147P: Rusty Russell 3942P: Rusty Russell
@@ -3157,6 +3952,12 @@ L: coreteam@netfilter.org
3157W: http://www.netfilter.org/ 3952W: http://www.netfilter.org/
3158W: http://www.iptables.org/ 3953W: http://www.iptables.org/
3159S: Supported 3954S: Supported
3955F: include/linux/netfilter*
3956F: include/linux/netfilter/
3957F: include/net/netfilter/
3958F: net/*/netfilter.c
3959F: net/*/netfilter/
3960F: net/netfilter/
3160 3961
3161NETLABEL 3962NETLABEL
3162P: Paul Moore 3963P: Paul Moore
@@ -3164,6 +3965,9 @@ M: paul.moore@hp.com
3164W: http://netlabel.sf.net 3965W: http://netlabel.sf.net
3165L: netdev@vger.kernel.org 3966L: netdev@vger.kernel.org
3166S: Supported 3967S: Supported
3968F: Documentation/netlabel/
3969F: include/net/netlabel.h
3970F: net/netlabel/
3167 3971
3168NETROM NETWORK LAYER 3972NETROM NETWORK LAYER
3169P: Ralf Baechle 3973P: Ralf Baechle
@@ -3171,25 +3975,27 @@ M: ralf@linux-mips.org
3171L: linux-hams@vger.kernel.org 3975L: linux-hams@vger.kernel.org
3172W: http://www.linux-ax25.org/ 3976W: http://www.linux-ax25.org/
3173S: Maintained 3977S: Maintained
3978F: include/linux/netrom.h
3979F: include/net/netrom.h
3980F: net/netrom/
3174 3981
3175NETWORK BLOCK DEVICE (NBD) 3982NETWORK BLOCK DEVICE (NBD)
3176P: Paul Clements 3983P: Paul Clements
3177M: Paul.Clements@steeleye.com 3984M: Paul.Clements@steeleye.com
3178S: Maintained 3985S: Maintained
3179 3986F: Documentation/blockdev/nbd.txt
3180NETWORK DEVICE DRIVERS 3987F: drivers/block/nbd.c
3181P: Jeff Garzik 3988F: include/linux/nbd.h
3182M: jgarzik@pobox.com
3183L: netdev@vger.kernel.org
3184T: git kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
3185S: Maintained
3186 3989
3187NETWORKING [GENERAL] 3990NETWORKING [GENERAL]
3188P: Networking Team 3991P: David S. Miller
3189M: netdev@vger.kernel.org 3992M: davem@davemloft.net
3190L: netdev@vger.kernel.org 3993L: netdev@vger.kernel.org
3191W: http://linux-net.osdl.org/ 3994W: http://www.linuxfoundation.org/en/Net
3995T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
3192S: Maintained 3996S: Maintained
3997F: net/
3998F: include/net/
3193 3999
3194NETWORKING [IPv4/IPv6] 4000NETWORKING [IPv4/IPv6]
3195P: David S. Miller 4001P: David S. Miller
@@ -3205,8 +4011,11 @@ M: yoshfuji@linux-ipv6.org
3205P: Patrick McHardy 4011P: Patrick McHardy
3206M: kaber@trash.net 4012M: kaber@trash.net
3207L: netdev@vger.kernel.org 4013L: netdev@vger.kernel.org
3208T: git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git 4014T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
3209S: Maintained 4015S: Maintained
4016F: net/ipv4/
4017F: net/ipv6/
4018F: include/net/ip*
3210 4019
3211NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK) 4020NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
3212P: Paul Moore 4021P: Paul Moore
@@ -3218,8 +4027,18 @@ NETWORKING [WIRELESS]
3218P: John W. Linville 4027P: John W. Linville
3219M: linville@tuxdriver.com 4028M: linville@tuxdriver.com
3220L: linux-wireless@vger.kernel.org 4029L: linux-wireless@vger.kernel.org
3221T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git 4030T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
3222S: Maintained 4031S: Maintained
4032F: net/wireless/
4033F: include/net/ieee80211*
4034F: include/net/wireless.h
4035
4036NETWORKING DRIVERS
4037L: netdev@vger.kernel.org
4038W: http://www.linuxfoundation.org/en/Net
4039T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
4040S: Odd Fixes
4041F: drivers/net/
3223 4042
3224NETXEN (1/10) GbE SUPPORT 4043NETXEN (1/10) GbE SUPPORT
3225P: Dhananjay Phadke 4044P: Dhananjay Phadke
@@ -3227,6 +4046,7 @@ M: dhananjay@netxen.com
3227L: netdev@vger.kernel.org 4046L: netdev@vger.kernel.org
3228W: http://www.netxen.com 4047W: http://www.netxen.com
3229S: Supported 4048S: Supported
4049F: drivers/net/netxen/
3230 4050
3231NFS, SUNRPC, AND LOCKD CLIENTS 4051NFS, SUNRPC, AND LOCKD CLIENTS
3232P: Trond Myklebust 4052P: Trond Myklebust
@@ -3235,6 +4055,13 @@ L: linux-nfs@vger.kernel.org
3235W: http://client.linux-nfs.org 4055W: http://client.linux-nfs.org
3236T: git git://git.linux-nfs.org/pub/linux/nfs-2.6.git 4056T: git git://git.linux-nfs.org/pub/linux/nfs-2.6.git
3237S: Maintained 4057S: Maintained
4058F: fs/lockd/
4059F: fs/nfs/
4060F: fs/nfs_common/
4061F: net/sunrpc/
4062F: include/linux/lockd/
4063F: include/linux/nfs*
4064F: include/linux/sunrpc/
3238 4065
3239NI5010 NETWORK DRIVER 4066NI5010 NETWORK DRIVER
3240P: Jan-Pascal van Best 4067P: Jan-Pascal van Best
@@ -3243,6 +4070,7 @@ P: Andreas Mohr
3243M: andi@lisas.de 4070M: andi@lisas.de
3244L: netdev@vger.kernel.org 4071L: netdev@vger.kernel.org
3245S: Maintained 4072S: Maintained
4073F: drivers/net/ni5010.*
3246 4074
3247NILFS2 FILESYSTEM 4075NILFS2 FILESYSTEM
3248P: KONISHI Ryusuke 4076P: KONISHI Ryusuke
@@ -3250,12 +4078,17 @@ M: konishi.ryusuke@lab.ntt.co.jp
3250L: users@nilfs.org 4078L: users@nilfs.org
3251W: http://www.nilfs.org/en/ 4079W: http://www.nilfs.org/en/
3252S: Supported 4080S: Supported
4081F: Documentation/filesystems/nilfs2.txt
4082F: fs/nilfs2/
4083F: include/linux/nilfs2_fs.h
3253 4084
3254NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER 4085NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
3255P: YOKOTA Hiroshi 4086P: YOKOTA Hiroshi
3256M: yokota@netlab.is.tsukuba.ac.jp 4087M: yokota@netlab.is.tsukuba.ac.jp
3257W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ 4088W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
3258S: Maintained 4089S: Maintained
4090F: Documentation/scsi/NinjaSCSI.txt
4091F: drivers/scsi/pcmcia/nsp_*
3259 4092
3260NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER 4093NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER
3261P: GOTO Masanori 4094P: GOTO Masanori
@@ -3264,6 +4097,8 @@ P: YOKOTA Hiroshi
3264M: yokota@netlab.is.tsukuba.ac.jp 4097M: yokota@netlab.is.tsukuba.ac.jp
3265W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ 4098W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
3266S: Maintained 4099S: Maintained
4100F: Documentation/scsi/NinjaSCSI.txt
4101F: drivers/scsi/nsp32*
3267 4102
3268NTFS FILESYSTEM 4103NTFS FILESYSTEM
3269P: Anton Altaparmakov 4104P: Anton Altaparmakov
@@ -3271,43 +4106,55 @@ M: aia21@cantab.net
3271L: linux-ntfs-dev@lists.sourceforge.net 4106L: linux-ntfs-dev@lists.sourceforge.net
3272L: linux-kernel@vger.kernel.org 4107L: linux-kernel@vger.kernel.org
3273W: http://www.linux-ntfs.org/ 4108W: http://www.linux-ntfs.org/
3274T: git kernel.org:/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git 4109T: git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git
3275S: Maintained 4110S: Maintained
4111F: Documentation/filesystems/ntfs.txt
4112F: fs/ntfs/
3276 4113
3277NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER 4114NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
3278P: Antonino Daplas 4115P: Antonino Daplas
3279M: adaplas@gmail.com 4116M: adaplas@gmail.com
3280L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4117L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3281S: Maintained 4118S: Maintained
4119F: drivers/video/riva/
4120F: drivers/video/nvidia/
3282 4121
3283OMFS FILESYSTEM 4122OMFS FILESYSTEM
3284P: Bob Copeland 4123P: Bob Copeland
3285M: me@bobcopeland.com 4124M: me@bobcopeland.com
3286L: linux-karma-devel@lists.sourceforge.net 4125L: linux-karma-devel@lists.sourceforge.net
3287S: Maintained 4126S: Maintained
4127F: Documentation/filesystems/omfs.txt
4128F: fs/omfs/
3288 4129
3289OMNIKEY CARDMAN 4000 DRIVER 4130OMNIKEY CARDMAN 4000 DRIVER
3290P: Harald Welte 4131P: Harald Welte
3291M: laforge@gnumonks.org 4132M: laforge@gnumonks.org
3292S: Maintained 4133S: Maintained
4134F: drivers/char/pcmcia/cm4000_cs.c
4135F: include/linux/cm4000_cs.h
3293 4136
3294OMNIKEY CARDMAN 4040 DRIVER 4137OMNIKEY CARDMAN 4040 DRIVER
3295P: Harald Welte 4138P: Harald Welte
3296M: laforge@gnumonks.org 4139M: laforge@gnumonks.org
3297S: Maintained 4140S: Maintained
4141F: drivers/char/pcmcia/cm4040_cs.*
3298 4142
3299OMNIVISION OV7670 SENSOR DRIVER 4143OMNIVISION OV7670 SENSOR DRIVER
3300P: Jonathan Corbet 4144P: Jonathan Corbet
3301M: corbet@lwn.net 4145M: corbet@lwn.net
3302L: linux-media@vger.kernel.org 4146L: linux-media@vger.kernel.org
3303T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 4147T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3304S: Maintained 4148S: Maintained
4149F: drivers/media/video/ov7670.c
3305 4150
3306ONENAND FLASH DRIVER 4151ONENAND FLASH DRIVER
3307P: Kyungmin Park 4152P: Kyungmin Park
3308M: kyungmin.park@samsung.com 4153M: kyungmin.park@samsung.com
3309L: linux-mtd@lists.infradead.org 4154L: linux-mtd@lists.infradead.org
3310S: Maintained 4155S: Maintained
4156F: drivers/mtd/onenand/
4157F: include/linux/mtd/onenand*.h
3311 4158
3312ONSTREAM SCSI TAPE DRIVER 4159ONSTREAM SCSI TAPE DRIVER
3313P: Willem Riede 4160P: Willem Riede
@@ -3315,18 +4162,25 @@ M: osst@riede.org
3315L: osst-users@lists.sourceforge.net 4162L: osst-users@lists.sourceforge.net
3316L: linux-scsi@vger.kernel.org 4163L: linux-scsi@vger.kernel.org
3317S: Maintained 4164S: Maintained
4165F: drivers/scsi/osst*
4166F: drivers/scsi/st*
3318 4167
3319OPENCORES I2C BUS DRIVER 4168OPENCORES I2C BUS DRIVER
3320P: Peter Korsgaard 4169P: Peter Korsgaard
3321M: jacmet@sunsite.dk 4170M: jacmet@sunsite.dk
3322L: linux-i2c@vger.kernel.org 4171L: linux-i2c@vger.kernel.org
3323S: Maintained 4172S: Maintained
4173F: Documentation/i2c/busses/i2c-ocores
4174F: drivers/i2c/busses/i2c-ocores.c
3324 4175
3325OPROFILE 4176OPROFILE
3326P: Robert Richter 4177P: Robert Richter
3327M: robert.richter@amd.com 4178M: robert.richter@amd.com
3328L: oprofile-list@lists.sf.net 4179L: oprofile-list@lists.sf.net
3329S: Maintained 4180S: Maintained
4181F: arch/*/oprofile/
4182F: drivers/oprofile/
4183F: include/linux/oprofile.h
3330 4184
3331ORACLE CLUSTER FILESYSTEM 2 (OCFS2) 4185ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
3332P: Mark Fasheh 4186P: Mark Fasheh
@@ -3337,6 +4191,9 @@ L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
3337W: http://oss.oracle.com/projects/ocfs2/ 4191W: http://oss.oracle.com/projects/ocfs2/
3338T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git 4192T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git
3339S: Supported 4193S: Supported
4194F: Documentation/filesystems/ocfs2.txt
4195F: Documentation/filesystems/dlmfs.txt
4196F: fs/ocfs2/
3340 4197
3341ORINOCO DRIVER 4198ORINOCO DRIVER
3342P: Pavel Roskin 4199P: Pavel Roskin
@@ -3348,6 +4205,7 @@ L: orinoco-users@lists.sourceforge.net
3348L: orinoco-devel@lists.sourceforge.net 4205L: orinoco-devel@lists.sourceforge.net
3349W: http://www.nongnu.org/orinoco/ 4206W: http://www.nongnu.org/orinoco/
3350S: Maintained 4207S: Maintained
4208F: drivers/net/wireless/orinoco/
3351 4209
3352OSD LIBRARY 4210OSD LIBRARY
3353P: Boaz Harrosh 4211P: Boaz Harrosh
@@ -3356,7 +4214,7 @@ P: Benny Halevy
3356M: bhalevy@panasas.com 4214M: bhalevy@panasas.com
3357L: osd-dev@open-osd.org 4215L: osd-dev@open-osd.org
3358W: http://open-osd.org 4216W: http://open-osd.org
3359T: git://git.open-osd.org/open-osd.git 4217T: git git://git.open-osd.org/open-osd.git
3360S: Maintained 4218S: Maintained
3361 4219
3362P54 WIRELESS DRIVER 4220P54 WIRELESS DRIVER
@@ -3364,25 +4222,29 @@ P: Michael Wu
3364M: flamingice@sourmilk.net 4222M: flamingice@sourmilk.net
3365L: linux-wireless@vger.kernel.org 4223L: linux-wireless@vger.kernel.org
3366W: http://prism54.org 4224W: http://prism54.org
3367T: git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git 4225T: git git://git.kernel.org/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
3368S: Maintained 4226S: Maintained
4227F: drivers/net/wireless/p54/
3369 4228
3370PA SEMI ETHERNET DRIVER 4229PA SEMI ETHERNET DRIVER
3371P: Olof Johansson 4230P: Olof Johansson
3372M: olof@lixom.net 4231M: olof@lixom.net
3373L: netdev@vger.kernel.org 4232L: netdev@vger.kernel.org
3374S: Maintained 4233S: Maintained
4234F: drivers/net/pasemi_mac.*
3375 4235
3376PA SEMI SMBUS DRIVER 4236PA SEMI SMBUS DRIVER
3377P: Olof Johansson 4237P: Olof Johansson
3378M: olof@lixom.net 4238M: olof@lixom.net
3379L: linux-i2c@vger.kernel.org 4239L: linux-i2c@vger.kernel.org
3380S: Maintained 4240S: Maintained
4241F: drivers/i2c/busses/i2c-pasemi.c
3381 4242
3382PANASONIC LAPTOP ACPI EXTRAS DRIVER 4243PANASONIC LAPTOP ACPI EXTRAS DRIVER
3383P: Harald Welte 4244P: Harald Welte
3384M: laforge@gnumonks.org 4245M: laforge@gnumonks.org
3385S: Maintained 4246S: Maintained
4247F: drivers/platform/x86/panasonic-laptop.c
3386 4248
3387PANASONIC MN10300/AM33 PORT 4249PANASONIC MN10300/AM33 PORT
3388P: David Howells 4250P: David Howells
@@ -3392,10 +4254,16 @@ M: yasutake.koichi@jp.panasonic.com
3392L: linux-am33-list@redhat.com (moderated for non-subscribers) 4254L: linux-am33-list@redhat.com (moderated for non-subscribers)
3393W: ftp://ftp.redhat.com/pub/redhat/gnupro/AM33/ 4255W: ftp://ftp.redhat.com/pub/redhat/gnupro/AM33/
3394S: Maintained 4256S: Maintained
4257F: Documentation/mn10300/
4258F: arch/mn10300/
3395 4259
3396PARALLEL PORT SUPPORT 4260PARALLEL PORT SUPPORT
3397L: linux-parport@lists.infradead.org (subscribers-only) 4261L: linux-parport@lists.infradead.org (subscribers-only)
3398S: Orphan 4262S: Orphan
4263F: drivers/parport/
4264F: include/linux/parport*.h
4265F: drivers/char/ppdev.c
4266F: include/linux/ppdev.h
3399 4267
3400PARAVIRT_OPS INTERFACE 4268PARAVIRT_OPS INTERFACE
3401P: Jeremy Fitzhardinge 4269P: Jeremy Fitzhardinge
@@ -3409,6 +4277,9 @@ M: rusty@rustcorp.com.au
3409L: virtualization@lists.osdl.org 4277L: virtualization@lists.osdl.org
3410L: linux-kernel@vger.kernel.org 4278L: linux-kernel@vger.kernel.org
3411S: Supported 4279S: Supported
4280F: Documentation/ia64/paravirt_ops.txt
4281F: arch/*/kernel/paravirt*
4282F: arch/*/include/asm/paravirt.h
3412 4283
3413PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES 4284PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
3414P: Tim Waugh 4285P: Tim Waugh
@@ -3416,6 +4287,8 @@ M: tim@cyberelk.net
3416L: linux-parport@lists.infradead.org (subscribers-only) 4287L: linux-parport@lists.infradead.org (subscribers-only)
3417W: http://www.torque.net/linux-pp.html 4288W: http://www.torque.net/linux-pp.html
3418S: Maintained 4289S: Maintained
4290F: Documentation/blockdev/paride.txt
4291F: drivers/block/paride/
3419 4292
3420PARISC ARCHITECTURE 4293PARISC ARCHITECTURE
3421P: Kyle McMartin 4294P: Kyle McMartin
@@ -3424,24 +4297,31 @@ P: Helge Deller
3424M: deller@gmx.de 4297M: deller@gmx.de
3425L: linux-parisc@vger.kernel.org 4298L: linux-parisc@vger.kernel.org
3426W: http://www.parisc-linux.org/ 4299W: http://www.parisc-linux.org/
3427T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git 4300T: git git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
3428S: Maintained 4301S: Maintained
4302F: arch/parisc/
4303F: drivers/parisc/
3429 4304
3430PC87360 HARDWARE MONITORING DRIVER 4305PC87360 HARDWARE MONITORING DRIVER
3431P: Jim Cromie 4306P: Jim Cromie
3432M: jim.cromie@gmail.com 4307M: jim.cromie@gmail.com
3433L: lm-sensors@lm-sensors.org 4308L: lm-sensors@lm-sensors.org
3434S: Maintained 4309S: Maintained
4310F: Documentation/hwmon/pc87360
4311F: drivers/hwmon/pc87360.c
3435 4312
3436PC8736x GPIO DRIVER 4313PC8736x GPIO DRIVER
3437P: Jim Cromie 4314P: Jim Cromie
3438M: jim.cromie@gmail.com 4315M: jim.cromie@gmail.com
3439S: Maintained 4316S: Maintained
4317F: drivers/char/pc8736x_gpio.c
3440 4318
3441PCA9532 LED DRIVER 4319PCA9532 LED DRIVER
3442P: Riku Voipio 4320P: Riku Voipio
3443M: riku.voipio@iki.fi 4321M: riku.voipio@iki.fi
3444S: Maintained 4322S: Maintained
4323F: drivers/leds/leds-pca9532.c
4324F: include/linux/leds-pca9532.h
3445 4325
3446PCI ERROR RECOVERY 4326PCI ERROR RECOVERY
3447P: Linas Vepstas 4327P: Linas Vepstas
@@ -3449,63 +4329,82 @@ M: linas@austin.ibm.com
3449L: linux-kernel@vger.kernel.org 4329L: linux-kernel@vger.kernel.org
3450L: linux-pci@vger.kernel.org 4330L: linux-pci@vger.kernel.org
3451S: Supported 4331S: Supported
4332F: Documentation/PCI/pci-error-recovery.txt
4333F: Documentation/powerpc/eeh-pci-error-recovery.txt
3452 4334
3453PCI SUBSYSTEM 4335PCI SUBSYSTEM
3454P: Jesse Barnes 4336P: Jesse Barnes
3455M: jbarnes@virtuousgeek.org 4337M: jbarnes@virtuousgeek.org
3456L: linux-kernel@vger.kernel.org 4338L: linux-kernel@vger.kernel.org
3457L: linux-pci@vger.kernel.org 4339L: linux-pci@vger.kernel.org
3458T: git kernel.org:/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git 4340T: git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git
3459S: Supported 4341S: Supported
4342F: Documentation/PCI/
4343F: drivers/pci/
4344F: include/linux/pci*
3460 4345
3461PCIE HOTPLUG DRIVER 4346PCIE HOTPLUG DRIVER
3462P: Kristen Carlson Accardi 4347P: Kristen Carlson Accardi
3463M: kristen.c.accardi@intel.com 4348M: kristen.c.accardi@intel.com
3464L: linux-pci@vger.kernel.org 4349L: linux-pci@vger.kernel.org
3465S: Supported 4350S: Supported
4351F: drivers/pci/pcie/
3466 4352
3467PCMCIA SUBSYSTEM 4353PCMCIA SUBSYSTEM
3468P: Linux PCMCIA Team 4354P: Linux PCMCIA Team
3469L: linux-pcmcia@lists.infradead.org 4355L: linux-pcmcia@lists.infradead.org
3470W: http://lists.infradead.org/mailman/listinfo/linux-pcmcia 4356W: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
3471T: git kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git 4357T: git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
3472S: Maintained 4358S: Maintained
4359F: Documentation/pcmcia/
4360F: drivers/pcmcia/
4361F: include/pcmcia/
3473 4362
3474PCNET32 NETWORK DRIVER 4363PCNET32 NETWORK DRIVER
3475P: Don Fry 4364P: Don Fry
3476M: pcnet32@verizon.net 4365M: pcnet32@verizon.net
3477L: netdev@vger.kernel.org 4366L: netdev@vger.kernel.org
3478S: Maintained 4367S: Maintained
4368F: drivers/net/pcnet32.c
3479 4369
3480PER-TASK DELAY ACCOUNTING 4370PER-TASK DELAY ACCOUNTING
3481P: Balbir Singh 4371P: Balbir Singh
3482M: balbir@linux.vnet.ibm.com 4372M: balbir@linux.vnet.ibm.com
3483L: linux-kernel@vger.kernel.org 4373L: linux-kernel@vger.kernel.org
3484S: Maintained 4374S: Maintained
4375F: include/linux/delayacct.h
4376F: kernel/delayacct.c
3485 4377
3486PERSONALITY HANDLING 4378PERSONALITY HANDLING
3487P: Christoph Hellwig 4379P: Christoph Hellwig
3488M: hch@infradead.org 4380M: hch@infradead.org
3489L: linux-abi-devel@lists.sourceforge.net 4381L: linux-abi-devel@lists.sourceforge.net
3490S: Maintained 4382S: Maintained
4383F: include/linux/personality.h
3491 4384
3492PHRAM MTD DRIVER 4385PHRAM MTD DRIVER
3493P: Joern Engel 4386P: Joern Engel
3494M: joern@lazybastard.org 4387M: joern@lazybastard.org
3495L: linux-mtd@lists.infradead.org 4388L: linux-mtd@lists.infradead.org
3496S: Maintained 4389S: Maintained
4390F: drivers/mtd/devices/phram.c
3497 4391
3498PKTCDVD DRIVER 4392PKTCDVD DRIVER
3499P: Peter Osterlund 4393P: Peter Osterlund
3500M: petero2@telia.com 4394M: petero2@telia.com
3501L: linux-kernel@vger.kernel.org 4395L: linux-kernel@vger.kernel.org
3502S: Maintained 4396S: Maintained
4397F: drivers/block/pktcdvd.c
4398F: include/linux/pktcdvd.h
3503 4399
3504POSIX CLOCKS and TIMERS 4400POSIX CLOCKS and TIMERS
3505P: Thomas Gleixner 4401P: Thomas Gleixner
3506M: tglx@linutronix.de 4402M: tglx@linutronix.de
3507L: linux-kernel@vger.kernel.org 4403L: linux-kernel@vger.kernel.org
3508S: Supported 4404S: Supported
4405F: fs/timerfd.c
4406F: include/linux/timer*
4407F: kernel/*timer*
3509 4408
3510POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS 4409POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
3511P: Anton Vorontsov 4410P: Anton Vorontsov
@@ -3513,8 +4412,10 @@ M: cbou@mail.ru
3513P: David Woodhouse 4412P: David Woodhouse
3514M: dwmw2@infradead.org 4413M: dwmw2@infradead.org
3515L: linux-kernel@vger.kernel.org 4414L: linux-kernel@vger.kernel.org
3516T: git git.infradead.org/battery-2.6.git 4415T: git git://git.infradead.org/battery-2.6.git
3517S: Maintained 4416S: Maintained
4417F: include/linux/power_supply.h
4418F: drivers/power/power_supply*
3518 4419
3519PNP SUPPORT 4420PNP SUPPORT
3520P: Adam Belay 4421P: Adam Belay
@@ -3522,33 +4423,42 @@ M: abelay@mit.edu
3522P: Bjorn Helgaas 4423P: Bjorn Helgaas
3523M: bjorn.helgaas@hp.com 4424M: bjorn.helgaas@hp.com
3524S: Maintained 4425S: Maintained
4426F: drivers/pnp/
3525 4427
3526PNXxxxx I2C DRIVER 4428PNXxxxx I2C DRIVER
3527P: Vitaly Wool 4429P: Vitaly Wool
3528M: vitalywool@gmail.com 4430M: vitalywool@gmail.com
3529L: linux-i2c@vger.kernel.org 4431L: linux-i2c@vger.kernel.org
3530S: Maintained 4432S: Maintained
4433F: drivers/i2c/busses/i2c-pnx.c
3531 4434
3532PPP PROTOCOL DRIVERS AND COMPRESSORS 4435PPP PROTOCOL DRIVERS AND COMPRESSORS
3533P: Paul Mackerras 4436P: Paul Mackerras
3534M: paulus@samba.org 4437M: paulus@samba.org
3535L: linux-ppp@vger.kernel.org 4438L: linux-ppp@vger.kernel.org
3536S: Maintained 4439S: Maintained
4440F: drivers/net/ppp_*
3537 4441
3538PPP OVER ATM (RFC 2364) 4442PPP OVER ATM (RFC 2364)
3539P: Mitchell Blank Jr 4443P: Mitchell Blank Jr
3540M: mitch@sfgoth.com 4444M: mitch@sfgoth.com
3541S: Maintained 4445S: Maintained
4446F: net/atm/pppoatm.c
4447F: include/linux/atmppp.h
3542 4448
3543PPP OVER ETHERNET 4449PPP OVER ETHERNET
3544P: Michal Ostrowski 4450P: Michal Ostrowski
3545M: mostrows@earthlink.net 4451M: mostrows@earthlink.net
3546S: Maintained 4452S: Maintained
4453F: drivers/net/pppoe.c
4454F: drivers/net/pppox.c
3547 4455
3548PPP OVER L2TP 4456PPP OVER L2TP
3549P: James Chapman 4457P: James Chapman
3550M: jchapman@katalix.com 4458M: jchapman@katalix.com
3551S: Maintained 4459S: Maintained
4460F: drivers/net/pppol2tp.c
4461F: include/linux/if_pppol2tp.h
3552 4462
3553PREEMPTIBLE KERNEL 4463PREEMPTIBLE KERNEL
3554P: Robert Love 4464P: Robert Love
@@ -3557,6 +4467,8 @@ L: linux-kernel@vger.kernel.org
3557L: kpreempt-tech@lists.sourceforge.net 4467L: kpreempt-tech@lists.sourceforge.net
3558W: ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel 4468W: ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
3559S: Supported 4469S: Supported
4470F: Documentation/preempt-locking.txt
4471F: include/linux/preempt.h
3560 4472
3561PRISM54 WIRELESS DRIVER 4473PRISM54 WIRELESS DRIVER
3562P: Luis R. Rodriguez 4474P: Luis R. Rodriguez
@@ -3564,6 +4476,7 @@ M: mcgrof@gmail.com
3564L: linux-wireless@vger.kernel.org 4476L: linux-wireless@vger.kernel.org
3565W: http://prism54.org 4477W: http://prism54.org
3566S: Maintained 4478S: Maintained
4479F: drivers/net/wireless/prism54/
3567 4480
3568PROMISE DC4030 CACHING DISK CONTROLLER DRIVER 4481PROMISE DC4030 CACHING DISK CONTROLLER DRIVER
3569P: Peter Denison 4482P: Peter Denison
@@ -3576,6 +4489,7 @@ P: Mikael Pettersson
3576M: mikpe@it.uu.se 4489M: mikpe@it.uu.se
3577L: linux-ide@vger.kernel.org 4490L: linux-ide@vger.kernel.org
3578S: Maintained 4491S: Maintained
4492F: drivers/ata/sata_promise.*
3579 4493
3580PS3 NETWORK SUPPORT 4494PS3 NETWORK SUPPORT
3581P: Masakazu Mokuno 4495P: Masakazu Mokuno
@@ -3583,6 +4497,7 @@ M: mokuno@sm.sony.co.jp
3583L: netdev@vger.kernel.org 4497L: netdev@vger.kernel.org
3584L: cbe-oss-dev@ozlabs.org 4498L: cbe-oss-dev@ozlabs.org
3585S: Supported 4499S: Supported
4500F: drivers/net/ps3_gelic_net.*
3586 4501
3587PS3 PLATFORM SUPPORT 4502PS3 PLATFORM SUPPORT
3588P: Geoff Levand 4503P: Geoff Levand
@@ -3590,6 +4505,15 @@ M: geoffrey.levand@am.sony.com
3590L: linuxppc-dev@ozlabs.org 4505L: linuxppc-dev@ozlabs.org
3591L: cbe-oss-dev@ozlabs.org 4506L: cbe-oss-dev@ozlabs.org
3592S: Supported 4507S: Supported
4508F: arch/powerpc/boot/ps3*
4509F: arch/powerpc/include/asm/lv1call.h
4510F: arch/powerpc/include/asm/ps3*.h
4511F: arch/powerpc/platforms/ps3/
4512F: drivers/*/ps3*
4513F: drivers/ps3/
4514F: drivers/rtc/rtc-ps3.c
4515F: drivers/usb/host/*ps3.c
4516F: sound/ppc/snd_ps3*
3593 4517
3594PS3VRAM DRIVER 4518PS3VRAM DRIVER
3595P: Jim Paris 4519P: Jim Paris
@@ -3603,8 +4527,10 @@ M: isely@pobox.com
3603L: pvrusb2@isely.net (subscribers-only) 4527L: pvrusb2@isely.net (subscribers-only)
3604L: linux-media@vger.kernel.org 4528L: linux-media@vger.kernel.org
3605W: http://www.isely.net/pvrusb2/ 4529W: http://www.isely.net/pvrusb2/
3606T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 4530T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3607S: Maintained 4531S: Maintained
4532F: Documentation/video4linux/README.pvrusb2
4533F: drivers/media/video/pvrusb2/
3608 4534
3609PXA2xx/PXA3xx SUPPORT 4535PXA2xx/PXA3xx SUPPORT
3610P: Eric Miao 4536P: Eric Miao
@@ -3613,6 +4539,12 @@ P: Russell King
3613M: linux@arm.linux.org.uk 4539M: linux@arm.linux.org.uk
3614L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4540L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3615S: Maintained 4541S: Maintained
4542F: arch/arm/mach-pxa/
4543F: drivers/pcmcia/pxa2xx*
4544F: drivers/spi/pxa2xx*
4545F: drivers/usb/gadget/pxa2*
4546F: include/sound/pxa2xx-lib.h
4547F: sound/soc/pxa/pxa2xx*
3616 4548
3617PXA168 SUPPORT 4549PXA168 SUPPORT
3618P: Eric Miao 4550P: Eric Miao
@@ -3620,14 +4552,14 @@ M: eric.miao@marvell.com
3620P: Jason Chagas 4552P: Jason Chagas
3621M: jason.chagas@marvell.com 4553M: jason.chagas@marvell.com
3622L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4554L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3623T: git kernel.org:/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git 4555T: git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
3624S: Supported 4556S: Supported
3625 4557
3626PXA910 SUPPORT 4558PXA910 SUPPORT
3627P: Eric Miao 4559P: Eric Miao
3628M: eric.miao@marvell.com 4560M: eric.miao@marvell.com
3629L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4561L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3630T: git kernel.org:/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git 4562T: git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
3631S: Supported 4563S: Supported
3632 4564
3633PXA MMCI DRIVER 4565PXA MMCI DRIVER
@@ -3644,12 +4576,16 @@ P: Andrew Vasquez
3644M: linux-driver@qlogic.com 4576M: linux-driver@qlogic.com
3645L: linux-scsi@vger.kernel.org 4577L: linux-scsi@vger.kernel.org
3646S: Supported 4578S: Supported
4579F: Documentation/scsi/LICENSE.qla2xxx
4580F: drivers/scsi/qla2xxx/
3647 4581
3648QLOGIC QLA3XXX NETWORK DRIVER 4582QLOGIC QLA3XXX NETWORK DRIVER
3649P: Ron Mercer 4583P: Ron Mercer
3650M: linux-driver@qlogic.com 4584M: linux-driver@qlogic.com
3651L: netdev@vger.kernel.org 4585L: netdev@vger.kernel.org
3652S: Supported 4586S: Supported
4587F: Documentation/networking/LICENSE.qla3xxx
4588F: drivers/net/qla3xxx.*
3653 4589
3654QLOGIC QLGE 10Gb ETHERNET DRIVER 4590QLOGIC QLGE 10Gb ETHERNET DRIVER
3655P: Ron Mercer 4591P: Ron Mercer
@@ -3657,6 +4593,7 @@ M: linux-driver@qlogic.com
3657M: ron.mercer@qlogic.com 4593M: ron.mercer@qlogic.com
3658L: netdev@vger.kernel.org 4594L: netdev@vger.kernel.org
3659S: Supported 4595S: Supported
4596F: drivers/net/qlge/
3660 4597
3661QNX4 FILESYSTEM 4598QNX4 FILESYSTEM
3662P: Anders Larsen 4599P: Anders Larsen
@@ -3664,18 +4601,24 @@ M: al@alarsen.net
3664L: linux-kernel@vger.kernel.org 4601L: linux-kernel@vger.kernel.org
3665W: http://www.alarsen.net/linux/qnx4fs/ 4602W: http://www.alarsen.net/linux/qnx4fs/
3666S: Maintained 4603S: Maintained
4604F: fs/qnx4/
4605F: include/linux/qnx4_fs.h
4606F: include/linux/qnxtypes.h
3667 4607
3668RADEON FRAMEBUFFER DISPLAY DRIVER 4608RADEON FRAMEBUFFER DISPLAY DRIVER
3669P: Benjamin Herrenschmidt 4609P: Benjamin Herrenschmidt
3670M: benh@kernel.crashing.org 4610M: benh@kernel.crashing.org
3671L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4611L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3672S: Maintained 4612S: Maintained
4613F: drivers/video/aty/radeon*
4614F: include/linux/radeonfb.h
3673 4615
3674RAGE128 FRAMEBUFFER DISPLAY DRIVER 4616RAGE128 FRAMEBUFFER DISPLAY DRIVER
3675P: Paul Mackerras 4617P: Paul Mackerras
3676M: paulus@samba.org 4618M: paulus@samba.org
3677L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4619L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3678S: Maintained 4620S: Maintained
4621F: drivers/video/aty/aty128fb.c
3679 4622
3680RALINK RT2X00 WIRELESS LAN DRIVER 4623RALINK RT2X00 WIRELESS LAN DRIVER
3681P: rt2x00 project 4624P: rt2x00 project
@@ -3683,36 +4626,43 @@ L: linux-wireless@vger.kernel.org
3683L: users@rt2x00.serialmonkey.com 4626L: users@rt2x00.serialmonkey.com
3684W: http://rt2x00.serialmonkey.com/ 4627W: http://rt2x00.serialmonkey.com/
3685S: Maintained 4628S: Maintained
3686T: git kernel.org:/pub/scm/linux/kernel/git/ivd/rt2x00.git 4629T: git git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git
3687F: drivers/net/wireless/rt2x00/ 4630F: drivers/net/wireless/rt2x00/
3688 4631
3689RAMDISK RAM BLOCK DEVICE DRIVER 4632RAMDISK RAM BLOCK DEVICE DRIVER
3690P: Nick Piggin 4633P: Nick Piggin
3691M: npiggin@suse.de 4634M: npiggin@suse.de
3692S: Maintained 4635S: Maintained
4636F: Documentation/blockdev/ramdisk.txt
4637F: drivers/block/brd.c
3693 4638
3694RANDOM NUMBER DRIVER 4639RANDOM NUMBER DRIVER
3695P: Matt Mackall 4640P: Matt Mackall
3696M: mpm@selenic.com 4641M: mpm@selenic.com
3697S: Maintained 4642S: Maintained
4643F: drivers/char/random.c
3698 4644
3699RAPIDIO SUBSYSTEM 4645RAPIDIO SUBSYSTEM
3700P: Matt Porter 4646P: Matt Porter
3701M: mporter@kernel.crashing.org 4647M: mporter@kernel.crashing.org
3702L: linux-kernel@vger.kernel.org 4648L: linux-kernel@vger.kernel.org
3703S: Maintained 4649S: Maintained
4650F: drivers/rapidio/
3704 4651
3705RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER 4652RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
3706P: Corey Thomas 4653P: Corey Thomas
3707M: coreythomas@charter.net 4654M: coreythomas@charter.net
3708L: linux-wireless@vger.kernel.org 4655L: linux-wireless@vger.kernel.org
3709S: Maintained 4656S: Maintained
4657F: drivers/net/wireless/ray*
3710 4658
3711RCUTORTURE MODULE 4659RCUTORTURE MODULE
3712P: Josh Triplett 4660P: Josh Triplett
3713M: josh@freedesktop.org 4661M: josh@freedesktop.org
3714L: linux-kernel@vger.kernel.org 4662L: linux-kernel@vger.kernel.org
3715S: Maintained 4663S: Maintained
4664F: Documentation/RCU/torture.txt
4665F: kernel/rcutorture.c
3716 4666
3717RDC R-321X SoC 4667RDC R-321X SoC
3718P: Florian Fainelli 4668P: Florian Fainelli
@@ -3725,12 +4675,14 @@ P: Florian Fainelli
3725M: florian.fainelli@telecomint.eu 4675M: florian.fainelli@telecomint.eu
3726L: netdev@vger.kernel.org 4676L: netdev@vger.kernel.org
3727S: Maintained 4677S: Maintained
4678F: drivers/net/r6040.c
3728 4679
3729RDS - RELIABLE DATAGRAM SOCKETS 4680RDS - RELIABLE DATAGRAM SOCKETS
3730P: Andy Grover 4681P: Andy Grover
3731M: andy.grover@oracle.com 4682M: andy.grover@oracle.com
3732L: rds-devel@oss.oracle.com 4683L: rds-devel@oss.oracle.com
3733S: Supported 4684S: Supported
4685F: net/rds/
3734 4686
3735READ-COPY UPDATE (RCU) 4687READ-COPY UPDATE (RCU)
3736P: Dipankar Sarma 4688P: Dipankar Sarma
@@ -3738,37 +4690,54 @@ M: dipankar@in.ibm.com
3738W: http://www.rdrop.com/users/paulmck/rclock/ 4690W: http://www.rdrop.com/users/paulmck/rclock/
3739L: linux-kernel@vger.kernel.org 4691L: linux-kernel@vger.kernel.org
3740S: Supported 4692S: Supported
4693F: Documentation/RCU/rcu.txt
4694F: Documentation/RCU/rcuref.txt
4695F: include/linux/rcupdate.h
4696F: include/linux/srcu.h
4697F: kernel/rcupdate.c
3741 4698
3742REAL TIME CLOCK DRIVER 4699REAL TIME CLOCK DRIVER
3743P: Paul Gortmaker 4700P: Paul Gortmaker
3744M: p_gortmaker@yahoo.com 4701M: p_gortmaker@yahoo.com
3745L: linux-kernel@vger.kernel.org 4702L: linux-kernel@vger.kernel.org
3746S: Maintained 4703S: Maintained
4704F: Documentation/rtc.txt
4705F: drivers/rtc/
4706F: include/linux/rtc.h
3747 4707
3748REAL TIME CLOCK (RTC) SUBSYSTEM 4708REAL TIME CLOCK (RTC) SUBSYSTEM
3749P: Alessandro Zummo 4709P: Alessandro Zummo
3750M: a.zummo@towertech.it 4710M: a.zummo@towertech.it
3751L: rtc-linux@googlegroups.com 4711L: rtc-linux@googlegroups.com
3752S: Maintained 4712S: Maintained
4713F: Documentation/rtc.txt
4714F: drivers/rtc/
4715F: include/linux/rtc.h
3753 4716
3754REISERFS FILE SYSTEM 4717REISERFS FILE SYSTEM
3755L: reiserfs-devel@vger.kernel.org 4718L: reiserfs-devel@vger.kernel.org
3756S: Supported 4719S: Supported
4720F: fs/reiserfs/
3757 4721
3758RFKILL 4722RFKILL
3759P: Ivo van Doorn 4723P: Ivo van Doorn
3760M: IvDoorn@gmail.com 4724M: IvDoorn@gmail.com
3761L: netdev@vger.kernel.org 4725L: netdev@vger.kernel.org
3762S: Maintained 4726S: Maintained
3763F: net/rfkill 4727F Documentation/rfkill.txt
4728F: net/rfkill/
3764 4729
3765RISCOM8 DRIVER 4730RISCOM8 DRIVER
3766S: Orphan 4731S: Orphan
4732F: Documentation/serial/riscom8.txt
4733F: drivers/char/riscom8*
3767 4734
3768ROCKETPORT DRIVER 4735ROCKETPORT DRIVER
3769P: Comtrol Corp. 4736P: Comtrol Corp.
3770W: http://www.comtrol.com 4737W: http://www.comtrol.com
3771S: Maintained 4738S: Maintained
4739F: Documentation/serial/rocket.txt
4740F: drivers/char/rocket*
3772 4741
3773ROSE NETWORK LAYER 4742ROSE NETWORK LAYER
3774P: Ralf Baechle 4743P: Ralf Baechle
@@ -3776,32 +4745,38 @@ M: ralf@linux-mips.org
3776L: linux-hams@vger.kernel.org 4745L: linux-hams@vger.kernel.org
3777W: http://www.linux-ax25.org/ 4746W: http://www.linux-ax25.org/
3778S: Maintained 4747S: Maintained
4748F: include/linux/rose.h
4749F: include/net/rose.h
4750F: net/rose/
3779 4751
3780RTL8180 WIRELESS DRIVER 4752RTL8180 WIRELESS DRIVER
3781P: John W. Linville 4753P: John W. Linville
3782M: linville@tuxdriver.com 4754M: linville@tuxdriver.com
3783L: linux-wireless@vger.kernel.org 4755L: linux-wireless@vger.kernel.org
3784W: http://linuxwireless.org/ 4756W: http://linuxwireless.org/
3785T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git 4757T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
3786S: Maintained 4758S: Maintained
4759F: drivers/net/wireless/rtl818*
3787 4760
3788RTL8187 WIRELESS DRIVER 4761RTL8187 WIRELESS DRIVER
3789P: Herton Ronaldo Krzesinski 4762P: Herton Ronaldo Krzesinski
3790M: herton@mandriva.com.br 4763M: herton@mandriva.com.br
3791P: Hin-Tak Leung 4764P: Hin-Tak Leung
3792M htl10@users.sourceforge.net 4765M: htl10@users.sourceforge.net
3793P: Larry Finger 4766P: Larry Finger
3794M: Larry.Finger@lwfinger.net 4767M: Larry.Finger@lwfinger.net
3795L: linux-wireless@vger.kernel.org 4768L: linux-wireless@vger.kernel.org
3796W: http://linuxwireless.org/ 4769W: http://linuxwireless.org/
3797T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git 4770T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
3798S: Maintained 4771S: Maintained
4772F: drivers/net/wireless/rtl818x/rtl8187*
3799 4773
3800S3 SAVAGE FRAMEBUFFER DRIVER 4774S3 SAVAGE FRAMEBUFFER DRIVER
3801P: Antonino Daplas 4775P: Antonino Daplas
3802M: adaplas@gmail.com 4776M: adaplas@gmail.com
3803L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4777L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3804S: Maintained 4778S: Maintained
4779F: drivers/video/savage/
3805 4780
3806S390 4781S390
3807P: Martin Schwidefsky 4782P: Martin Schwidefsky
@@ -3812,6 +4787,7 @@ M: linux390@de.ibm.com
3812L: linux-s390@vger.kernel.org 4787L: linux-s390@vger.kernel.org
3813W: http://www.ibm.com/developerworks/linux/linux390/ 4788W: http://www.ibm.com/developerworks/linux/linux390/
3814S: Supported 4789S: Supported
4790F: arch/s390/
3815 4791
3816S390 NETWORK DRIVERS 4792S390 NETWORK DRIVERS
3817P: Ursula Braun 4793P: Ursula Braun
@@ -3822,6 +4798,7 @@ M: linux390@de.ibm.com
3822L: linux-s390@vger.kernel.org 4798L: linux-s390@vger.kernel.org
3823W: http://www.ibm.com/developerworks/linux/linux390/ 4799W: http://www.ibm.com/developerworks/linux/linux390/
3824S: Supported 4800S: Supported
4801F: drivers/s390/net/
3825 4802
3826S390 ZCRYPT DRIVER 4803S390 ZCRYPT DRIVER
3827P: Felix Beck 4804P: Felix Beck
@@ -3831,6 +4808,7 @@ M: ralph.wuerthner@de.ibm.com
3831M: linux390@de.ibm.com 4808M: linux390@de.ibm.com
3832L: linux-s390@vger.kernel.org 4809L: linux-s390@vger.kernel.org
3833S: Supported 4810S: Supported
4811F: drivers/s390/crypto/
3834 4812
3835S390 ZFCP DRIVER 4813S390 ZFCP DRIVER
3836P: Christof Schmitt 4814P: Christof Schmitt
@@ -3841,6 +4819,8 @@ M: linux390@de.ibm.com
3841L: linux-s390@vger.kernel.org 4819L: linux-s390@vger.kernel.org
3842W: http://www.ibm.com/developerworks/linux/linux390/ 4820W: http://www.ibm.com/developerworks/linux/linux390/
3843S: Supported 4821S: Supported
4822F: Documentation/s390/zfcpdump.txt
4823F: drivers/s390/scsi/zfcp_*
3844 4824
3845S390 IUCV NETWORK LAYER 4825S390 IUCV NETWORK LAYER
3846P: Ursula Braun 4826P: Ursula Braun
@@ -3849,6 +4829,9 @@ M: linux390@de.ibm.com
3849L: linux-s390@vger.kernel.org 4829L: linux-s390@vger.kernel.org
3850W: http://www.ibm.com/developerworks/linux/linux390/ 4830W: http://www.ibm.com/developerworks/linux/linux390/
3851S: Supported 4831S: Supported
4832F: drivers/s390/net/*iucv*
4833F: include/net/iucv/
4834F: net/iucv/
3852 4835
3853S3C24XX SD/MMC Driver 4836S3C24XX SD/MMC Driver
3854P: Ben Dooks 4837P: Ben Dooks
@@ -3856,27 +4839,34 @@ M: ben-linux@fluff.org
3856L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4839L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3857L: linux-kernel@vger.kernel.org 4840L: linux-kernel@vger.kernel.org
3858S: Supported 4841S: Supported
4842F: drivers/mmc/host/s3cmci.*
3859 4843
3860SAA7146 VIDEO4LINUX-2 DRIVER 4844SAA7146 VIDEO4LINUX-2 DRIVER
3861P: Michael Hunold 4845P: Michael Hunold
3862M: michael@mihu.de 4846M: michael@mihu.de
3863L: linux-media@vger.kernel.org 4847L: linux-media@vger.kernel.org
3864T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 4848T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3865W: http://www.mihu.de/linux/saa7146 4849W: http://www.mihu.de/linux/saa7146
3866S: Maintained 4850S: Maintained
4851F: drivers/media/common/saa7146*
4852F: drivers/media/video/*7146*
4853F: include/media/*7146*
3867 4854
3868SC1200 WDT DRIVER 4855SC1200 WDT DRIVER
3869P: Zwane Mwaikambo 4856P: Zwane Mwaikambo
3870M: zwane@arm.linux.org.uk 4857M: zwane@arm.linux.org.uk
3871S: Maintained 4858S: Maintained
4859F: drivers/watchdog/sc1200wdt.c
3872 4860
3873SCHEDULER 4861SCHEDULER
3874P: Ingo Molnar 4862P: Ingo Molnar
3875M: mingo@elte.hu 4863M: mingo@elte.hu
3876P: Robert Love [the preemptible kernel bits] 4864P: Peter Zijlstra
3877M: rml@tech9.net 4865M: peterz@infradead.org
3878L: linux-kernel@vger.kernel.org 4866L: linux-kernel@vger.kernel.org
3879S: Maintained 4867S: Maintained
4868F: kernel/sched*
4869F: include/linux/sched.h
3880 4870
3881SCSI CDROM DRIVER 4871SCSI CDROM DRIVER
3882P: Jens Axboe 4872P: Jens Axboe
@@ -3884,6 +4874,7 @@ M: axboe@kernel.dk
3884L: linux-scsi@vger.kernel.org 4874L: linux-scsi@vger.kernel.org
3885W: http://www.kernel.dk 4875W: http://www.kernel.dk
3886S: Maintained 4876S: Maintained
4877F: drivers/scsi/sr*
3887 4878
3888SCSI SG DRIVER 4879SCSI SG DRIVER
3889P: Doug Gilbert 4880P: Doug Gilbert
@@ -3891,21 +4882,27 @@ M: dgilbert@interlog.com
3891L: linux-scsi@vger.kernel.org 4882L: linux-scsi@vger.kernel.org
3892W: http://www.torque.net/sg 4883W: http://www.torque.net/sg
3893S: Maintained 4884S: Maintained
4885F: drivers/scsi/sg.c
4886F: include/scsi/sg.h
3894 4887
3895SCSI SUBSYSTEM 4888SCSI SUBSYSTEM
3896P: James E.J. Bottomley 4889P: James E.J. Bottomley
3897M: James.Bottomley@HansenPartnership.com 4890M: James.Bottomley@HansenPartnership.com
3898L: linux-scsi@vger.kernel.org 4891L: linux-scsi@vger.kernel.org
3899T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git 4892T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
3900T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git 4893T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
3901T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git 4894T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git
3902S: Maintained 4895S: Maintained
4896F: drivers/scsi/
4897F: include/scsi/
3903 4898
3904SCSI TAPE DRIVER 4899SCSI TAPE DRIVER
3905P: Kai Mäkisara 4900P: Kai Mäkisara
3906M: Kai.Makisara@kolumbus.fi 4901M: Kai.Makisara@kolumbus.fi
3907L: linux-scsi@vger.kernel.org 4902L: linux-scsi@vger.kernel.org
3908S: Maintained 4903S: Maintained
4904F: Documentation/scsi/st.txt
4905F: drivers/scsi/st*
3909 4906
3910SCTP PROTOCOL 4907SCTP PROTOCOL
3911P: Vlad Yasevich 4908P: Vlad Yasevich
@@ -3915,31 +4912,45 @@ M: sri@us.ibm.com
3915L: linux-sctp@vger.kernel.org 4912L: linux-sctp@vger.kernel.org
3916W: http://lksctp.sourceforge.net 4913W: http://lksctp.sourceforge.net
3917S: Supported 4914S: Supported
4915F: Documentation/networking/sctp.txt
4916F: include/linux/sctp.h
4917F: include/net/sctp/
4918F: net/sctp/
3918 4919
3919SCx200 CPU SUPPORT 4920SCx200 CPU SUPPORT
3920P: Jim Cromie 4921P: Jim Cromie
3921M: jim.cromie@gmail.com 4922M: jim.cromie@gmail.com
3922S: Odd Fixes 4923S: Odd Fixes
4924F: Documentation/i2c/busses/scx200_acb
4925F: arch/x86/kernel/scx200_32.c
4926F: drivers/watchdog/scx200_wdt.c
4927F: drivers/i2c/busses/scx200*
4928F: drivers/mtd/maps/scx200_docflash.c
4929F: include/linux/scx200.h
3923 4930
3924SCx200 GPIO DRIVER 4931SCx200 GPIO DRIVER
3925P: Jim Cromie 4932P: Jim Cromie
3926M: jim.cromie@gmail.com 4933M: jim.cromie@gmail.com
3927S: Maintained 4934S: Maintained
4935F: drivers/char/scx200_gpio.c
4936F: include/linux/scx200_gpio.h
3928 4937
3929SCx200 HRT CLOCKSOURCE DRIVER 4938SCx200 HRT CLOCKSOURCE DRIVER
3930P: Jim Cromie 4939P: Jim Cromie
3931M: jim.cromie@gmail.com 4940M: jim.cromie@gmail.com
3932S: Maintained 4941S: Maintained
4942F: drivers/clocksource/scx200_hrt.c
3933 4943
3934SDRICOH_CS MMC/SD HOST CONTROLLER INTERFACE DRIVER 4944SDRICOH_CS MMC/SD HOST CONTROLLER INTERFACE DRIVER
3935P: Sascha Sommer 4945P: Sascha Sommer
3936M: saschasommer@freenet.de 4946M: saschasommer@freenet.de
3937L: sdricohcs-devel@lists.sourceforge.net (subscribers-only) 4947L: sdricohcs-devel@lists.sourceforge.net (subscribers-only)
3938S: Maintained 4948S: Maintained
4949F: drivers/mmc/host/sdricoh_cs.c
3939 4950
3940SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER 4951SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
3941P: Pierre Ossman 4952P: Pierre Ossman
3942M: drzeus-sdhci@drzeus.cx 4953M: pierre@ossman.eu
3943L: sdhci-devel@lists.ossman.eu 4954L: sdhci-devel@lists.ossman.eu
3944S: Maintained 4955S: Maintained
3945 4956
@@ -3949,16 +4960,17 @@ M: avorontsov@ru.mvista.com
3949L: linuxppc-dev@ozlabs.org 4960L: linuxppc-dev@ozlabs.org
3950L: sdhci-devel@lists.ossman.eu 4961L: sdhci-devel@lists.ossman.eu
3951S: Maintained 4962S: Maintained
4963F: drivers/mmc/host/sdhci.*
3952 4964
3953SECURITY SUBSYSTEM 4965SECURITY SUBSYSTEM
3954F: security/
3955P: James Morris 4966P: James Morris
3956M: jmorris@namei.org 4967M: jmorris@namei.org
3957L: linux-kernel@vger.kernel.org 4968L: linux-kernel@vger.kernel.org
3958L: linux-security-module@vger.kernel.org (suggested Cc:) 4969L: linux-security-module@vger.kernel.org (suggested Cc:)
3959T: git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git 4970T: git git://www.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
3960W: http://security.wiki.kernel.org/ 4971W: http://security.wiki.kernel.org/
3961S: Supported 4972S: Supported
4973F: security/
3962 4974
3963SECURITY CONTACT 4975SECURITY CONTACT
3964P: Security Officers 4976P: Security Officers
@@ -3973,31 +4985,39 @@ M: jmorris@namei.org
3973P: Eric Paris 4985P: Eric Paris
3974M: eparis@parisplace.org 4986M: eparis@parisplace.org
3975L: linux-kernel@vger.kernel.org (kernel issues) 4987L: linux-kernel@vger.kernel.org (kernel issues)
3976L: selinux@tycho.nsa.gov (subscribers-only, general discussion) 4988L: selinux@tycho.nsa.gov (subscribers-only, general discussion)
3977W: http://selinuxproject.org 4989W: http://selinuxproject.org
3978T: git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git 4990T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
3979S: Supported 4991S: Supported
4992F: include/linux/selinux*
4993F: security/selinux/
3980 4994
3981SENSABLE PHANTOM 4995SENSABLE PHANTOM
3982P: Jiri Slaby 4996P: Jiri Slaby
3983M: jirislaby@gmail.com 4997M: jirislaby@gmail.com
3984S: Maintained 4998S: Maintained
4999F: drivers/misc/phantom.c
5000F: include/linux/phantom.h
3985 5001
3986SERIAL ATA (SATA) SUBSYSTEM 5002SERIAL ATA (SATA) SUBSYSTEM
3987P: Jeff Garzik 5003P: Jeff Garzik
3988M: jgarzik@pobox.com 5004M: jgarzik@pobox.com
3989L: linux-ide@vger.kernel.org 5005L: linux-ide@vger.kernel.org
3990T: git kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git 5006T: git git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
3991S: Supported 5007S: Supported
5008F: drivers/ata/
5009F: include/linux/ata.h
5010F: include/linux/libata.h
3992 5011
3993SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER 5012SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
3994P: Sathya Perla 5013P: Sathya Perla
3995M: sathyap@serverengines.com 5014M: sathyap@serverengines.com
3996P: Subbu Seetharaman 5015P: Subbu Seetharaman
3997M: subbus@serverengines.com 5016M: subbus@serverengines.com
3998L: netdev@vger.kernel.org 5017L: netdev@vger.kernel.org
3999W: http://www.serverengines.com 5018W: http://www.serverengines.com
4000S: Supported 5019S: Supported
5020F: drivers/net/benet/
4001 5021
4002SFC NETWORK DRIVER 5022SFC NETWORK DRIVER
4003P: Steve Hodgson 5023P: Steve Hodgson
@@ -4005,17 +5025,22 @@ P: Ben Hutchings
4005P: Robert Stonehouse 5025P: Robert Stonehouse
4006M: linux-net-drivers@solarflare.com 5026M: linux-net-drivers@solarflare.com
4007S: Supported 5027S: Supported
5028F: drivers/net/sfc/
4008 5029
4009SGI GRU DRIVER 5030SGI GRU DRIVER
4010P: Jack Steiner 5031P: Jack Steiner
4011M: steiner@sgi.com 5032M: steiner@sgi.com
4012S: Maintained 5033S: Maintained
5034F: drivers/misc/sgi-gru/
4013 5035
4014SGI SN-IA64 (Altix) SERIAL CONSOLE DRIVER 5036SGI SN-IA64 (Altix) SERIAL CONSOLE DRIVER
4015P: Pat Gefre 5037P: Pat Gefre
4016M: pfg@sgi.com 5038M: pfg@sgi.com
4017L: linux-ia64@vger.kernel.org 5039L: linux-ia64@vger.kernel.org
4018S: Supported 5040S: Supported
5041F: Documentation/ia64/serial.txt
5042F: drivers/serial/ioc?_serial.c
5043F: include/linux/ioc?.h
4019 5044
4020SGI VISUAL WORKSTATION 320 AND 540 5045SGI VISUAL WORKSTATION 320 AND 540
4021P: Andrey Panin 5046P: Andrey Panin
@@ -4023,11 +5048,13 @@ M: pazke@donpac.ru
4023L: linux-visws-devel@lists.sf.net 5048L: linux-visws-devel@lists.sf.net
4024W: http://linux-visws.sf.net 5049W: http://linux-visws.sf.net
4025S: Maintained for 2.6. 5050S: Maintained for 2.6.
5051F: Documentation/sgi-visws.txt
4026 5052
4027SGI XP/XPC/XPNET DRIVER 5053SGI XP/XPC/XPNET DRIVER
4028P: Dean Nelson 5054P: Robin Holt
4029M: dcn@sgi.com 5055M: holt@sgi.com
4030S: Maintained 5056S: Maintained
5057F: drivers/misc/sgi-xp/
4031 5058
4032SHARP LH SUPPORT (LH7952X & LH7A40X) 5059SHARP LH SUPPORT (LH7952X & LH7A40X)
4033P: Marc Singer 5060P: Marc Singer
@@ -4035,12 +5062,18 @@ M: elf@buici.com
4035W: http://projects.buici.com/arm 5062W: http://projects.buici.com/arm
4036L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 5063L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
4037S: Maintained 5064S: Maintained
5065F: Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen
5066F: arch/arm/mach-lh7a40x/
5067F: drivers/serial/serial_lh7a40x.c
5068F: drivers/usb/gadget/lh7a40*
5069F: drivers/usb/host/ohci-lh7a40*
4038 5070
4039SHPC HOTPLUG DRIVER 5071SHPC HOTPLUG DRIVER
4040P: Kristen Carlson Accardi 5072P: Kristen Carlson Accardi
4041M: kristen.c.accardi@intel.com 5073M: kristen.c.accardi@intel.com
4042L: linux-pci@vger.kernel.org 5074L: linux-pci@vger.kernel.org
4043S: Supported 5075S: Supported
5076F: drivers/pci/hotplug/shpchp*
4044 5077
4045SIMTEC EB110ATX (Chalice CATS) 5078SIMTEC EB110ATX (Chalice CATS)
4046P: Ben Dooks 5079P: Ben Dooks
@@ -4048,6 +5081,7 @@ P: Vincent Sanders
4048M: support@simtec.co.uk 5081M: support@simtec.co.uk
4049W: http://www.simtec.co.uk/products/EB110ATX/ 5082W: http://www.simtec.co.uk/products/EB110ATX/
4050S: Supported 5083S: Supported
5084F: arch/arm/mach-ebsa110/
4051 5085
4052SIMTEC EB2410ITX (BAST) 5086SIMTEC EB2410ITX (BAST)
4053P: Ben Dooks 5087P: Ben Dooks
@@ -4055,12 +5089,16 @@ P: Vincent Sanders
4055M: support@simtec.co.uk 5089M: support@simtec.co.uk
4056W: http://www.simtec.co.uk/products/EB2410ITX/ 5090W: http://www.simtec.co.uk/products/EB2410ITX/
4057S: Supported 5091S: Supported
5092F: arch/arm/mach-s3c2410/
5093F: drivers/*/*s3c2410*
5094F: drivers/*/*/*s3c2410*
4058 5095
4059SIS 190 ETHERNET DRIVER 5096SIS 190 ETHERNET DRIVER
4060P: Francois Romieu 5097P: Francois Romieu
4061M: romieu@fr.zoreil.com 5098M: romieu@fr.zoreil.com
4062L: netdev@vger.kernel.org 5099L: netdev@vger.kernel.org
4063S: Maintained 5100S: Maintained
5101F: drivers/net/sis190.c
4064 5102
4065SIS 900/7016 FAST ETHERNET DRIVER 5103SIS 900/7016 FAST ETHERNET DRIVER
4066P: Daniele Venzano 5104P: Daniele Venzano
@@ -4068,30 +5106,39 @@ M: venza@brownhat.org
4068W: http://www.brownhat.org/sis900.html 5106W: http://www.brownhat.org/sis900.html
4069L: netdev@vger.kernel.org 5107L: netdev@vger.kernel.org
4070S: Maintained 5108S: Maintained
5109F: drivers/net/sis900.*
4071 5110
4072SIS 96X I2C/SMBUS DRIVER 5111SIS 96X I2C/SMBUS DRIVER
4073P: Mark M. Hoffman 5112P: Mark M. Hoffman
4074M: mhoffman@lightlink.com 5113M: mhoffman@lightlink.com
4075L: linux-i2c@vger.kernel.org 5114L: linux-i2c@vger.kernel.org
4076S: Maintained 5115S: Maintained
5116F: Documentation/i2c/busses/i2c-sis96x
5117F: drivers/i2c/busses/i2c-sis96x.c
4077 5118
4078SIS FRAMEBUFFER DRIVER 5119SIS FRAMEBUFFER DRIVER
4079P: Thomas Winischhofer 5120P: Thomas Winischhofer
4080M: thomas@winischhofer.net 5121M: thomas@winischhofer.net
4081W: http://www.winischhofer.net/linuxsisvga.shtml 5122W: http://www.winischhofer.net/linuxsisvga.shtml
4082S: Maintained 5123S: Maintained
5124F: Documentation/fb/sisfb.txt
5125F: drivers/video/sis/
5126F: include/video/sisfb.h
4083 5127
4084SIS USB2VGA DRIVER 5128SIS USB2VGA DRIVER
4085P: Thomas Winischhofer 5129P: Thomas Winischhofer
4086M: thomas@winischhofer.net 5130M: thomas@winischhofer.net
4087W: http://www.winischhofer.at/linuxsisusbvga.shtml 5131W: http://www.winischhofer.at/linuxsisusbvga.shtml
4088S: Maintained 5132S: Maintained
5133F: drivers/usb/misc/sisusbvga/
4089 5134
4090SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS 5135SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
4091P: Stephen Hemminger 5136P: Stephen Hemminger
4092M: shemminger@linux-foundation.org 5137M: shemminger@linux-foundation.org
4093L: netdev@vger.kernel.org 5138L: netdev@vger.kernel.org
4094S: Maintained 5139S: Maintained
5140F: drivers/net/skge.*
5141F: drivers/net/sky2.*
4095 5142
4096SLAB ALLOCATOR 5143SLAB ALLOCATOR
4097P: Christoph Lameter 5144P: Christoph Lameter
@@ -4102,34 +5149,43 @@ P: Matt Mackall
4102M: mpm@selenic.com 5149M: mpm@selenic.com
4103L: linux-mm@kvack.org 5150L: linux-mm@kvack.org
4104S: Maintained 5151S: Maintained
5152F: include/linux/sl?b*.h
5153F: mm/sl?b.c
4105 5154
4106SMC91x ETHERNET DRIVER 5155SMC91x ETHERNET DRIVER
4107P: Nicolas Pitre 5156P: Nicolas Pitre
4108M: nico@cam.org 5157M: nico@cam.org
4109S: Maintained 5158S: Maintained
5159F: drivers/net/smc91x.*
4110 5160
4111SMSC47B397 HARDWARE MONITOR DRIVER 5161SMSC47B397 HARDWARE MONITOR DRIVER
4112P: Mark M. Hoffman 5162P: Mark M. Hoffman
4113M: mhoffman@lightlink.com 5163M: mhoffman@lightlink.com
4114L: lm-sensors@lm-sensors.org 5164L: lm-sensors@lm-sensors.org
4115S: Maintained 5165S: Maintained
5166F: Documentation/hwmon/smsc47b397
5167F: drivers/hwmon/smsc47b397.c
4116 5168
4117SMSC911x ETHERNET DRIVER 5169SMSC911x ETHERNET DRIVER
4118P: Steve Glendinning 5170P: Steve Glendinning
4119M: steve.glendinning@smsc.com 5171M: steve.glendinning@smsc.com
4120L: netdev@vger.kernel.org 5172L: netdev@vger.kernel.org
4121S: Supported 5173S: Supported
5174F: include/linux/smsc911x.h
5175F: drivers/net/smsc911x.*
4122 5176
4123SMSC9420 PCI ETHERNET DRIVER 5177SMSC9420 PCI ETHERNET DRIVER
4124P: Steve Glendinning 5178P: Steve Glendinning
4125M: steve.glendinning@smsc.com 5179M: steve.glendinning@smsc.com
4126L: netdev@vger.kernel.org 5180L: netdev@vger.kernel.org
4127S: Supported 5181S: Supported
5182F: drivers/net/smsc9420.*
4128 5183
4129SMX UIO Interface 5184SMX UIO Interface
4130P: Ben Nizette 5185P: Ben Nizette
4131M: bn@niasdigital.com 5186M: bn@niasdigital.com
4132S: Maintained 5187S: Maintained
5188F: drivers/uio/uio_smx.c
4133 5189
4134SN-IA64 (Itanium) SUB-PLATFORM 5190SN-IA64 (Itanium) SUB-PLATFORM
4135P: Jes Sorensen 5191P: Jes Sorensen
@@ -4138,36 +5194,45 @@ L: linux-altix@sgi.com
4138L: linux-ia64@vger.kernel.org 5194L: linux-ia64@vger.kernel.org
4139W: http://www.sgi.com/altix 5195W: http://www.sgi.com/altix
4140S: Maintained 5196S: Maintained
5197F: arch/ia64/sn/
4141 5198
4142SOC-CAMERA V4L2 SUBSYSTEM 5199SOC-CAMERA V4L2 SUBSYSTEM
4143P: Guennadi Liakhovetski 5200P: Guennadi Liakhovetski
4144M: g.liakhovetski@gmx.de 5201M: g.liakhovetski@gmx.de
4145L: linux-media@vger.kernel.org 5202L: linux-media@vger.kernel.org
4146T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5203T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4147S: Maintained 5204S: Maintained
5205F: include/media/v4l2*
5206F: drivers/media/video/v4l2*
4148 5207
4149SOEKRIS NET48XX LED SUPPORT 5208SOEKRIS NET48XX LED SUPPORT
4150P: Chris Boot 5209P: Chris Boot
4151M: bootc@bootc.net 5210M: bootc@bootc.net
4152S: Maintained 5211S: Maintained
5212F: drivers/leds/leds-net48xx.c
4153 5213
4154SOFTWARE RAID (Multiple Disks) SUPPORT 5214SOFTWARE RAID (Multiple Disks) SUPPORT
4155P: Neil Brown 5215P: Neil Brown
4156M: neilb@suse.de 5216M: neilb@suse.de
4157L: linux-raid@vger.kernel.org 5217L: linux-raid@vger.kernel.org
4158S: Supported 5218S: Supported
5219F: drivers/md/
5220F: include/linux/raid/
4159 5221
4160SONIC NETWORK DRIVER 5222SONIC NETWORK DRIVER
4161P: Thomas Bogendoerfer 5223P: Thomas Bogendoerfer
4162M: tsbogend@alpha.franken.de 5224M: tsbogend@alpha.franken.de
4163L: netdev@vger.kernel.org 5225L: netdev@vger.kernel.org
4164S: Maintained 5226S: Maintained
5227F: drivers/net/sonic.*
4165 5228
4166SONICS SILICON BACKPLANE DRIVER (SSB) 5229SONICS SILICON BACKPLANE DRIVER (SSB)
4167P: Michael Buesch 5230P: Michael Buesch
4168M: mb@bu3sch.de 5231M: mb@bu3sch.de
4169L: netdev@vger.kernel.org 5232L: netdev@vger.kernel.org
4170S: Maintained 5233S: Maintained
5234F: drivers/ssb/
5235F: include/linux/ssb/
4171 5236
4172SONY VAIO CONTROL DEVICE DRIVER 5237SONY VAIO CONTROL DEVICE DRIVER
4173P: Mattia Dongili 5238P: Mattia Dongili
@@ -4175,6 +5240,10 @@ M: malattia@linux.it
4175L: linux-acpi@vger.kernel.org 5240L: linux-acpi@vger.kernel.org
4176W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers 5241W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers
4177S: Maintained 5242S: Maintained
5243F: Documentation/laptops/sony-laptop.txt
5244F: drivers/char/sonypi.c
5245F: drivers/platform/x86/sony-laptop.c
5246F: include/linux/sony-laptop.h
4178 5247
4179SONY MEMORYSTICK CARD SUPPORT 5248SONY MEMORYSTICK CARD SUPPORT
4180P: Alex Dubov 5249P: Alex Dubov
@@ -4182,6 +5251,7 @@ M: oakad@yahoo.com
4182L: linux-kernel@vger.kernel.org 5251L: linux-kernel@vger.kernel.org
4183W: http://tifmxx.berlios.de/ 5252W: http://tifmxx.berlios.de/
4184S: Maintained 5253S: Maintained
5254F: drivers/memstick/host/tifm_ms.c
4185 5255
4186SOUND 5256SOUND
4187P: Jaroslav Kysela 5257P: Jaroslav Kysela
@@ -4189,37 +5259,50 @@ M: perex@perex.cz
4189P: Takashi Iwai 5259P: Takashi Iwai
4190M: tiwai@suse.de 5260M: tiwai@suse.de
4191L: alsa-devel@alsa-project.org (subscribers-only) 5261L: alsa-devel@alsa-project.org (subscribers-only)
5262W: http://www.alsa-project.org/
5263T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
5264T: git git://git.alsa-project.org/alsa-kernel.git
4192S: Maintained 5265S: Maintained
5266F: Documentation/sound/
5267F: include/sound/
5268F: sound/
4193 5269
4194SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC) 5270SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
4195P: Liam Girdwood 5271P: Liam Girdwood
4196M: lrg@slimlogic.co.uk 5272M: lrg@slimlogic.co.uk
4197P: Mark Brown 5273P: Mark Brown
4198M: broonie@opensource.wolfsonmicro.com 5274M: broonie@opensource.wolfsonmicro.com
4199T: git opensource.wolfsonmicro.com/linux-2.6-asoc 5275T: git git://opensource.wolfsonmicro.com/linux-2.6-asoc
4200L: alsa-devel@alsa-project.org (subscribers-only) 5276L: alsa-devel@alsa-project.org (subscribers-only)
4201W: http://alsa-project.org/main/index.php/ASoC 5277W: http://alsa-project.org/main/index.php/ASoC
4202S: Supported 5278S: Supported
5279F: sound/soc/
4203 5280
4204SPARC + UltraSPARC (sparc/sparc64) 5281SPARC + UltraSPARC (sparc/sparc64)
4205P: David S. Miller 5282P: David S. Miller
4206M: davem@davemloft.net 5283M: davem@davemloft.net
4207L: sparclinux@vger.kernel.org 5284L: sparclinux@vger.kernel.org
4208T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git 5285T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6.git
4209T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git 5286T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
4210S: Maintained 5287S: Maintained
5288F: arch/sparc/
4211 5289
4212SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER 5290SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
4213P: Roger Wolff 5291P: Roger Wolff
4214M: R.E.Wolff@BitWizard.nl 5292M: R.E.Wolff@BitWizard.nl
4215L: linux-kernel@vger.kernel.org ? 5293L: linux-kernel@vger.kernel.org
4216S: Supported 5294S: Supported
5295F: Documentation/serial/specialix.txt
5296F: drivers/char/specialix*
4217 5297
4218SPI SUBSYSTEM 5298SPI SUBSYSTEM
4219P: David Brownell 5299P: David Brownell
4220M: dbrownell@users.sourceforge.net 5300M: dbrownell@users.sourceforge.net
4221L: spi-devel-general@lists.sourceforge.net 5301L: spi-devel-general@lists.sourceforge.net
4222S: Maintained 5302S: Maintained
5303F: Documentation/spi/
5304F: drivers/spi/
5305F: include/linux/spi/
4223 5306
4224SPIDERNET NETWORK DRIVER for CELL 5307SPIDERNET NETWORK DRIVER for CELL
4225P: Ishizaki Kou 5308P: Ishizaki Kou
@@ -4228,6 +5311,8 @@ P: Jens Osterkamp
4228M: jens@de.ibm.com 5311M: jens@de.ibm.com
4229L: netdev@vger.kernel.org 5312L: netdev@vger.kernel.org
4230S: Supported 5313S: Supported
5314F: Documentation/networking/spider_net.txt
5315F: drivers/net/spider_net*
4231 5316
4232SPU FILE SYSTEM 5317SPU FILE SYSTEM
4233P: Jeremy Kerr 5318P: Jeremy Kerr
@@ -4236,6 +5321,8 @@ L: linuxppc-dev@ozlabs.org
4236L: cbe-oss-dev@ozlabs.org 5321L: cbe-oss-dev@ozlabs.org
4237W: http://www.ibm.com/developerworks/power/cell/ 5322W: http://www.ibm.com/developerworks/power/cell/
4238S: Supported 5323S: Supported
5324F: Documentation/filesystems/spufs.txt
5325F: arch/powerpc/platforms/cell/spufs/
4239 5326
4240SQUASHFS FILE SYSTEM 5327SQUASHFS FILE SYSTEM
4241P: Phillip Lougher 5328P: Phillip Lougher
@@ -4243,12 +5330,15 @@ M: phillip@lougher.demon.co.uk
4243L: squashfs-devel@lists.sourceforge.net (subscribers-only) 5330L: squashfs-devel@lists.sourceforge.net (subscribers-only)
4244W: http://squashfs.org.uk 5331W: http://squashfs.org.uk
4245S: Maintained 5332S: Maintained
5333F: Documentation/filesystems/squashfs.txt
5334F: fs/squashfs/
4246 5335
4247SRM (Alpha) environment access 5336SRM (Alpha) environment access
4248P: Jan-Benedict Glaw 5337P: Jan-Benedict Glaw
4249M: jbglaw@lug-owl.de 5338M: jbglaw@lug-owl.de
4250L: linux-kernel@vger.kernel.org 5339L: linux-kernel@vger.kernel.org
4251S: Maintained 5340S: Maintained
5341F: arch/alpha/kernel/srm_env.c
4252 5342
4253STABLE BRANCH 5343STABLE BRANCH
4254P: Greg Kroah-Hartman 5344P: Greg Kroah-Hartman
@@ -4264,35 +5354,46 @@ M: gregkh@suse.de
4264L: linux-kernel@vger.kernel.org 5354L: linux-kernel@vger.kernel.org
4265T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 5355T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
4266S: Maintained 5356S: Maintained
5357F: drivers/staging/
4267 5358
4268STARFIRE/DURALAN NETWORK DRIVER 5359STARFIRE/DURALAN NETWORK DRIVER
4269P: Ion Badulescu 5360P: Ion Badulescu
4270M: ionut@cs.columbia.edu 5361M: ionut@cs.columbia.edu
4271S: Maintained 5362S: Maintained
5363F: drivers/net/starfire*
4272 5364
4273STARMODE RADIO IP (STRIP) PROTOCOL DRIVER 5365STARMODE RADIO IP (STRIP) PROTOCOL DRIVER
4274W: http://mosquitonet.Stanford.EDU/strip.html 5366W: http://mosquitonet.Stanford.EDU/strip.html
4275S: Orphan 5367S: Orphan
5368F: drivers/net/wireless/strip.c
5369F: include/linux/if_strip.h
4276 5370
4277STRADIS MPEG-2 DECODER DRIVER 5371STRADIS MPEG-2 DECODER DRIVER
4278P: Nathan Laredo 5372P: Nathan Laredo
4279M: laredo@gnu.org 5373M: laredo@gnu.org
4280W: http://www.stradis.com/ 5374W: http://www.stradis.com/
4281S: Maintained 5375S: Maintained
5376F: drivers/media/video/stradis.c
4282 5377
4283SUN3/3X 5378SUN3/3X
4284P: Sam Creasey 5379P: Sam Creasey
4285M: sammy@sammy.net 5380M: sammy@sammy.net
4286W: http://sammy.net/sun3/ 5381W: http://sammy.net/sun3/
4287S: Maintained 5382S: Maintained
5383F: arch/m68k/kernel/*sun3*
5384F: arch/m68k/sun3*/
5385F: arch/m68k/include/asm/sun3*
4288 5386
4289SUPERH 5387SUPERH
4290P: Paul Mundt 5388P: Paul Mundt
4291M: lethal@linux-sh.org 5389M: lethal@linux-sh.org
4292L: linux-sh@vger.kernel.org 5390L: linux-sh@vger.kernel.org
4293W: http://www.linux-sh.org 5391W: http://www.linux-sh.org
4294T: git kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.git 5392T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git
4295S: Supported 5393S: Supported
5394F: Documentation/sh/
5395F: arch/sh/
5396F: drivers/sh/
4296 5397
4297SUSPEND TO RAM 5398SUSPEND TO RAM
4298P: Len Brown 5399P: Len Brown
@@ -4303,29 +5404,47 @@ P: Rafael J. Wysocki
4303M: rjw@sisk.pl 5404M: rjw@sisk.pl
4304L: linux-pm@lists.linux-foundation.org 5405L: linux-pm@lists.linux-foundation.org
4305S: Supported 5406S: Supported
5407F: Documentation/power/
5408F: arch/x86/kernel/acpi/
5409F: drivers/base/power/
5410F: kernel/power/
5411F: include/linux/suspend.h
5412F: include/linux/freezer.h
5413F: include/linux/pm.h
4306 5414
4307SVGA HANDLING 5415SVGA HANDLING
4308P: Martin Mares 5416P: Martin Mares
4309M: mj@ucw.cz 5417M: mj@ucw.cz
4310L: linux-video@atrey.karlin.mff.cuni.cz 5418L: linux-video@atrey.karlin.mff.cuni.cz
4311S: Maintained 5419S: Maintained
5420F: Documentation/svga.txt
5421F: arch/x86/boot/video*
4312 5422
4313SYSV FILESYSTEM 5423SYSV FILESYSTEM
4314P: Christoph Hellwig 5424P: Christoph Hellwig
4315M: hch@infradead.org 5425M: hch@infradead.org
4316S: Maintained 5426S: Maintained
5427F: Documentation/filesystems/sysv-fs.txt
5428F: fs/sysv/
5429F: include/linux/sysv_fs.h
4317 5430
4318TASKSTATS STATISTICS INTERFACE 5431TASKSTATS STATISTICS INTERFACE
4319P: Balbir Singh 5432P: Balbir Singh
4320M: balbir@linux.vnet.ibm.com 5433M: balbir@linux.vnet.ibm.com
4321L: linux-kernel@vger.kernel.org 5434L: linux-kernel@vger.kernel.org
4322S: Maintained 5435S: Maintained
5436F: Documentation/accounting/taskstats*
5437F: include/linux/taskstats*
5438F: kernel/taskstats.c
4323 5439
4324TC CLASSIFIER 5440TC CLASSIFIER
4325P: Jamal Hadi Salim 5441P: Jamal Hadi Salim
4326M: hadi@cyberus.ca 5442M: hadi@cyberus.ca
4327L: netdev@vger.kernel.org 5443L: netdev@vger.kernel.org
4328S: Maintained 5444S: Maintained
5445F: include/linux/pkt_cls.h
5446F: include/net/pkt_cls.h
5447F: net/sched/
4329 5448
4330TCP LOW PRIORITY MODULE 5449TCP LOW PRIORITY MODULE
4331P: Wong Hoi Sing, Edison 5450P: Wong Hoi Sing, Edison
@@ -4334,6 +5453,7 @@ P: Hung Hing Lun, Mike
4334M: hlhung3i@gmail.com 5453M: hlhung3i@gmail.com
4335W: http://tcp-lp-mod.sourceforge.net/ 5454W: http://tcp-lp-mod.sourceforge.net/
4336S: Maintained 5455S: Maintained
5456F: net/ipv4/tcp_lp.c
4337 5457
4338TEHUTI ETHERNET DRIVER 5458TEHUTI ETHERNET DRIVER
4339P: Alexander Indenbaum 5459P: Alexander Indenbaum
@@ -4342,16 +5462,19 @@ P: Andy Gospodarek
4342M: andy@greyhouse.net 5462M: andy@greyhouse.net
4343L: netdev@vger.kernel.org 5463L: netdev@vger.kernel.org
4344S: Supported 5464S: Supported
5465F: drivers/net/tehuti*
4345 5466
4346Telecom Clock Driver for MCPL0010 5467Telecom Clock Driver for MCPL0010
4347P: Mark Gross 5468P: Mark Gross
4348M: mark.gross@intel.com 5469M: mark.gross@intel.com
4349S: Supported 5470S: Supported
5471F: drivers/char/tlclk.c
4350 5472
4351TENSILICA XTENSA PORT (xtensa) 5473TENSILICA XTENSA PORT (xtensa)
4352P: Chris Zankel 5474P: Chris Zankel
4353M: chris@zankel.net 5475M: chris@zankel.net
4354S: Maintained 5476S: Maintained
5477F: arch/xtensa/
4355 5478
4356THINKPAD ACPI EXTRAS DRIVER 5479THINKPAD ACPI EXTRAS DRIVER
4357P: Henrique de Moraes Holschuh 5480P: Henrique de Moraes Holschuh
@@ -4359,13 +5482,17 @@ M: ibm-acpi@hmh.eng.br
4359L: ibm-acpi-devel@lists.sourceforge.net 5482L: ibm-acpi-devel@lists.sourceforge.net
4360W: http://ibm-acpi.sourceforge.net 5483W: http://ibm-acpi.sourceforge.net
4361W: http://thinkwiki.org/wiki/Ibm-acpi 5484W: http://thinkwiki.org/wiki/Ibm-acpi
4362T: git repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git 5485T: git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
4363S: Maintained 5486S: Maintained
5487F: drivers/platform/x86/thinkpad_acpi.c
4364 5488
4365TI FLASH MEDIA INTERFACE DRIVER 5489TI FLASH MEDIA INTERFACE DRIVER
4366P: Alex Dubov 5490P: Alex Dubov
4367M: oakad@yahoo.com 5491M: oakad@yahoo.com
4368S: Maintained 5492S: Maintained
5493F: drivers/misc/tifm*
5494F: drivers/mmc/host/tifm_sd.c
5495F: include/linux/tifm.h
4369 5496
4370TI OMAP MMC INTERFACE DRIVER 5497TI OMAP MMC INTERFACE DRIVER
4371P: Carlos Aguiar, Anderson Briglia and Syed Khasim 5498P: Carlos Aguiar, Anderson Briglia and Syed Khasim
@@ -4373,11 +5500,13 @@ M: linux-omap@vger.kernel.org
4373W: http://linux.omap.com 5500W: http://linux.omap.com
4374W: http://www.muru.com/linux/omap/ 5501W: http://www.muru.com/linux/omap/
4375S: Maintained 5502S: Maintained
5503F: drivers/mmc/host/omap.c
4376 5504
4377TI OMAP RANDOM NUMBER GENERATOR SUPPORT 5505TI OMAP RANDOM NUMBER GENERATOR SUPPORT
4378P: Deepak Saxena 5506P: Deepak Saxena
4379M: dsaxena@plexity.net 5507M: dsaxena@plexity.net
4380S: Maintained 5508S: Maintained
5509F: drivers/char/hw_random/omap-rng.c
4381 5510
4382TIPC NETWORK LAYER 5511TIPC NETWORK LAYER
4383P: Per Liden 5512P: Per Liden
@@ -4389,8 +5518,11 @@ M: allan.stephens@windriver.com
4389L: tipc-discussion@lists.sourceforge.net 5518L: tipc-discussion@lists.sourceforge.net
4390W: http://tipc.sourceforge.net/ 5519W: http://tipc.sourceforge.net/
4391W: http://tipc.cslab.ericsson.net/ 5520W: http://tipc.cslab.ericsson.net/
4392T: git tipc.cslab.ericsson.net:/pub/git/tipc.git 5521T: git git://tipc.cslab.ericsson.net/pub/git/tipc.git
4393S: Maintained 5522S: Maintained
5523F: include/linux/tipc*.h
5524F: include/net/tipc/
5525F: net/tipc/
4394 5526
4395TLAN NETWORK DRIVER 5527TLAN NETWORK DRIVER
4396P: Samuel Chessman 5528P: Samuel Chessman
@@ -4398,6 +5530,8 @@ M: chessman@tux.org
4398L: tlan-devel@lists.sourceforge.net (subscribers-only) 5530L: tlan-devel@lists.sourceforge.net (subscribers-only)
4399W: http://sourceforge.net/projects/tlan/ 5531W: http://sourceforge.net/projects/tlan/
4400S: Maintained 5532S: Maintained
5533F: Documentation/networking/tlan.txt
5534F: drivers/net/tlan.*
4401 5535
4402TOMOYO SECURITY MODULE 5536TOMOYO SECURITY MODULE
4403P: Kentaro Takeda 5537P: Kentaro Takeda
@@ -4411,9 +5545,11 @@ L: tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese)
4411W: http://tomoyo.sourceforge.jp/ 5545W: http://tomoyo.sourceforge.jp/
4412T: quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.2.x/tomoyo-lsm/patches/ 5546T: quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.2.x/tomoyo-lsm/patches/
4413S: Maintained 5547S: Maintained
5548F: security/tomoyo/
4414 5549
4415TOSHIBA ACPI EXTRAS DRIVER 5550TOSHIBA ACPI EXTRAS DRIVER
4416S: Orphan 5551S: Orphan
5552F: drivers/platform/x86/toshiba_acpi.c
4417 5553
4418TOSHIBA SMM DRIVER 5554TOSHIBA SMM DRIVER
4419P: Jonathan Buzzard 5555P: Jonathan Buzzard
@@ -4421,11 +5557,14 @@ M: jonathan@buzzard.org.uk
4421L: tlinux-users@tce.toshiba-dme.co.jp 5557L: tlinux-users@tce.toshiba-dme.co.jp
4422W: http://www.buzzard.org.uk/toshiba/ 5558W: http://www.buzzard.org.uk/toshiba/
4423S: Maintained 5559S: Maintained
5560F: drivers/char/toshiba.c
5561F: include/linux/toshiba.h
4424 5562
4425TMIO MMC DRIVER 5563TMIO MMC DRIVER
4426P: Ian Molton 5564P: Ian Molton
4427M: ian@mnementh.co.uk 5565M: ian@mnementh.co.uk
4428S: Maintained 5566S: Maintained
5567F: drivers/mmc/host/tmio_mmc.*
4429 5568
4430TPM DEVICE DRIVER 5569TPM DEVICE DRIVER
4431P: Debora Velarde 5570P: Debora Velarde
@@ -4438,12 +5577,13 @@ M: m.selhorst@sirrix.com
4438W: http://www.sirrix.com 5577W: http://www.sirrix.com
4439L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers) 5578L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
4440S: Maintained 5579S: Maintained
5580F: drivers/char/tpm/
4441 5581
4442TRIVIAL PATCHES 5582TRIVIAL PATCHES
4443P: Jiri Kosina 5583P: Jiri Kosina
4444M: trivial@kernel.org 5584M: trivial@kernel.org
4445L: linux-kernel@vger.kernel.org 5585L: linux-kernel@vger.kernel.org
4446T: git kernel.org:/pub/scm/linux/kernel/git/jikos/trivial.git 5586T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
4447S: Maintained 5587S: Maintained
4448 5588
4449TTY LAYER 5589TTY LAYER
@@ -4459,6 +5599,7 @@ P: Kyle McMartin
4459M: kyle@mcmartin.ca 5599M: kyle@mcmartin.ca
4460L: netdev@vger.kernel.org 5600L: netdev@vger.kernel.org
4461S: Maintained 5601S: Maintained
5602F: drivers/net/tulip/
4462 5603
4463TUN/TAP driver 5604TUN/TAP driver
4464P: Maxim Krasnyansky 5605P: Maxim Krasnyansky
@@ -4466,17 +5607,22 @@ M: maxk@qualcomm.com
4466L: vtun@office.satix.net 5607L: vtun@office.satix.net
4467W: http://vtun.sourceforge.net/tun 5608W: http://vtun.sourceforge.net/tun
4468S: Maintained 5609S: Maintained
5610F: Documentation/networking/tuntap.txt
5611F: arch/um/os-Linux/drivers/
4469 5612
4470TURBOCHANNEL SUBSYSTEM 5613TURBOCHANNEL SUBSYSTEM
4471P: Maciej W. Rozycki 5614P: Maciej W. Rozycki
4472M: macro@linux-mips.org 5615M: macro@linux-mips.org
4473S: Maintained 5616S: Maintained
5617F: drivers/tc/
5618F: include/linux/tc.h
4474 5619
4475U14-34F SCSI DRIVER 5620U14-34F SCSI DRIVER
4476P: Dario Ballabio 5621P: Dario Ballabio
4477M: ballabio_dario@emc.com 5622M: ballabio_dario@emc.com
4478L: linux-scsi@vger.kernel.org 5623L: linux-scsi@vger.kernel.org
4479S: Maintained 5624S: Maintained
5625F: drivers/scsi/u14-34f.c
4480 5626
4481UBI FILE SYSTEM (UBIFS) 5627UBI FILE SYSTEM (UBIFS)
4482P: Artem Bityutskiy 5628P: Artem Bityutskiy
@@ -4487,6 +5633,8 @@ L: linux-mtd@lists.infradead.org
4487T: git git://git.infradead.org/ubifs-2.6.git 5633T: git git://git.infradead.org/ubifs-2.6.git
4488W: http://www.linux-mtd.infradead.org/doc/ubifs.html 5634W: http://www.linux-mtd.infradead.org/doc/ubifs.html
4489S: Maintained 5635S: Maintained
5636F: Documentation/filesystems/ubifs.txt
5637F: fs/ubifs/
4490 5638
4491UCLINUX (AND M68KNOMMU) 5639UCLINUX (AND M68KNOMMU)
4492P: Greg Ungerer 5640P: Greg Ungerer
@@ -4494,8 +5642,9 @@ M: gerg@uclinux.org
4494W: http://www.uclinux.org/ 5642W: http://www.uclinux.org/
4495L: uclinux-dev@uclinux.org (subscribers-only) 5643L: uclinux-dev@uclinux.org (subscribers-only)
4496S: Maintained 5644S: Maintained
5645F: arch/m68knommu/
4497 5646
4498UCLINUX FOR RENESAS H8/300 5647UCLINUX FOR RENESAS H8/300 (H8300)
4499P: Yoshinori Sato 5648P: Yoshinori Sato
4500M: ysato@users.sourceforge.jp 5649M: ysato@users.sourceforge.jp
4501W: http://uclinux-h8.sourceforge.jp/ 5650W: http://uclinux-h8.sourceforge.jp/
@@ -4506,18 +5655,25 @@ P: Jan Kara
4506M: jack@suse.cz 5655M: jack@suse.cz
4507W: http://linux-udf.sourceforge.net 5656W: http://linux-udf.sourceforge.net
4508S: Maintained 5657S: Maintained
5658F: Documentation/filesystems/udf.txt
5659F: fs/udf/
4509 5660
4510UFS FILESYSTEM 5661UFS FILESYSTEM
4511P: Evgeniy Dushistov 5662P: Evgeniy Dushistov
4512M: dushistov@mail.ru 5663M: dushistov@mail.ru
4513L: linux-kernel@vger.kernel.org 5664L: linux-kernel@vger.kernel.org
4514S: Maintained 5665S: Maintained
5666F: Documentation/filesystems/ufs.txt
5667F: fs/ufs/
4515 5668
4516ULTRA-WIDEBAND (UWB) SUBSYSTEM: 5669ULTRA-WIDEBAND (UWB) SUBSYSTEM:
4517P: David Vrabel 5670P: David Vrabel
4518M: david.vrabel@csr.com 5671M: david.vrabel@csr.com
4519L: linux-usb@vger.kernel.org 5672L: linux-usb@vger.kernel.org
4520S: Supported 5673S: Supported
5674F: drivers/uwb/*
5675F: include/linux/uwb.h
5676F: include/linux/uwb/
4521 5677
4522UNIFORM CDROM DRIVER 5678UNIFORM CDROM DRIVER
4523P: Jens Axboe 5679P: Jens Axboe
@@ -4525,6 +5681,9 @@ M: axboe@kernel.dk
4525L: linux-kernel@vger.kernel.org 5681L: linux-kernel@vger.kernel.org
4526W: http://www.kernel.dk 5682W: http://www.kernel.dk
4527S: Maintained 5683S: Maintained
5684F: Documentation/cdrom/
5685F: drivers/cdrom/cdrom.c
5686F: include/linux/cdrom.h
4528 5687
4529UNSORTED BLOCK IMAGES (UBI) 5688UNSORTED BLOCK IMAGES (UBI)
4530P: Artem Bityutskiy 5689P: Artem Bityutskiy
@@ -4533,12 +5692,17 @@ W: http://www.linux-mtd.infradead.org/
4533L: linux-mtd@lists.infradead.org 5692L: linux-mtd@lists.infradead.org
4534T: git git://git.infradead.org/ubi-2.6.git 5693T: git git://git.infradead.org/ubi-2.6.git
4535S: Maintained 5694S: Maintained
5695F: drivers/mtd/ubi/
5696F: include/linux/mtd/ubi.h
5697F: include/mtd/ubi-user.h
4536 5698
4537USB ACM DRIVER 5699USB ACM DRIVER
4538P: Oliver Neukum 5700P: Oliver Neukum
4539M: oliver@neukum.name 5701M: oliver@neukum.name
4540L: linux-usb@vger.kernel.org 5702L: linux-usb@vger.kernel.org
4541S: Maintained 5703S: Maintained
5704F: Documentation/usb/acm.txt
5705F: drivers/usb/class/cdc-acm.*
4542 5706
4543USB BLOCK DRIVER (UB ub) 5707USB BLOCK DRIVER (UB ub)
4544P: Pete Zaitcev 5708P: Pete Zaitcev
@@ -4546,6 +5710,7 @@ M: zaitcev@redhat.com
4546L: linux-kernel@vger.kernel.org 5710L: linux-kernel@vger.kernel.org
4547L: linux-usb@vger.kernel.org 5711L: linux-usb@vger.kernel.org
4548S: Supported 5712S: Supported
5713F: drivers/block/ub.c
4549 5714
4550USB CDC ETHERNET DRIVER 5715USB CDC ETHERNET DRIVER
4551P: Greg Kroah-Hartman 5716P: Greg Kroah-Hartman
@@ -4553,12 +5718,15 @@ M: greg@kroah.com
4553L: linux-usb@vger.kernel.org 5718L: linux-usb@vger.kernel.org
4554S: Maintained 5719S: Maintained
4555W: http://www.kroah.com/linux-usb/ 5720W: http://www.kroah.com/linux-usb/
5721F: drivers/net/usb/cdc_*.c
5722F: include/linux/usb/cdc.h
4556 5723
4557USB CYPRESS C67X00 DRIVER 5724USB CYPRESS C67X00 DRIVER
4558P: Peter Korsgaard 5725P: Peter Korsgaard
4559M: jacmet@sunsite.dk 5726M: jacmet@sunsite.dk
4560L: linux-usb@vger.kernel.org 5727L: linux-usb@vger.kernel.org
4561S: Maintained 5728S: Maintained
5729F: drivers/usb/c67x00/
4562 5730
4563USB DAVICOM DM9601 DRIVER 5731USB DAVICOM DM9601 DRIVER
4564P: Peter Korsgaard 5732P: Peter Korsgaard
@@ -4566,6 +5734,7 @@ M: jacmet@sunsite.dk
4566L: netdev@vger.kernel.org 5734L: netdev@vger.kernel.org
4567W: http://www.linux-usb.org/usbnet 5735W: http://www.linux-usb.org/usbnet
4568S: Maintained 5736S: Maintained
5737F: drivers/net/usb/dm9601.c
4569 5738
4570USB DIAMOND RIO500 DRIVER 5739USB DIAMOND RIO500 DRIVER
4571P: Cesar Miquel 5740P: Cesar Miquel
@@ -4573,21 +5742,25 @@ M: miquel@df.uba.ar
4573L: rio500-users@lists.sourceforge.net 5742L: rio500-users@lists.sourceforge.net
4574W: http://rio500.sourceforge.net 5743W: http://rio500.sourceforge.net
4575S: Maintained 5744S: Maintained
5745F: drivers/usb/misc/rio500*
4576 5746
4577USB EHCI DRIVER 5747USB EHCI DRIVER
4578P: David Brownell 5748P: David Brownell
4579M: dbrownell@users.sourceforge.net 5749M: dbrownell@users.sourceforge.net
4580L: linux-usb@vger.kernel.org 5750L: linux-usb@vger.kernel.org
4581S: Odd Fixes 5751S: Odd Fixes
5752F: Documentation/usb/ehci.txt
5753F: drivers/usb/host/ehci*
4582 5754
4583USB ET61X[12]51 DRIVER 5755USB ET61X[12]51 DRIVER
4584P: Luca Risolia 5756P: Luca Risolia
4585M: luca.risolia@studio.unibo.it 5757M: luca.risolia@studio.unibo.it
4586L: linux-usb@vger.kernel.org 5758L: linux-usb@vger.kernel.org
4587L: linux-media@vger.kernel.org 5759L: linux-media@vger.kernel.org
4588T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5760T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4589W: http://www.linux-projects.org 5761W: http://www.linux-projects.org
4590S: Maintained 5762S: Maintained
5763F: drivers/media/video/et61x251/
4591 5764
4592USB GADGET/PERIPHERAL SUBSYSTEM 5765USB GADGET/PERIPHERAL SUBSYSTEM
4593P: David Brownell 5766P: David Brownell
@@ -4595,25 +5768,32 @@ M: dbrownell@users.sourceforge.net
4595L: linux-usb@vger.kernel.org 5768L: linux-usb@vger.kernel.org
4596W: http://www.linux-usb.org/gadget 5769W: http://www.linux-usb.org/gadget
4597S: Maintained 5770S: Maintained
5771F: drivers/usb/gadget/
5772F: include/linux/usb/gadget*
4598 5773
4599USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...) 5774USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
4600P: Jiri Kosina 5775P: Jiri Kosina
4601M: jkosina@suse.cz 5776M: jkosina@suse.cz
4602L: linux-usb@vger.kernel.org 5777L: linux-usb@vger.kernel.org
4603T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git 5778T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
4604S: Maintained 5779S: Maintained
5780F: Documentation/usb/hiddev.txt
5781F: drivers/hid/usbhid/
4605 5782
4606USB ISP116X DRIVER 5783USB ISP116X DRIVER
4607P: Olav Kongas 5784P: Olav Kongas
4608M: ok@artecdesign.ee 5785M: ok@artecdesign.ee
4609L: linux-usb@vger.kernel.org 5786L: linux-usb@vger.kernel.org
4610S: Maintained 5787S: Maintained
5788F: drivers/usb/host/isp116x*
5789F: include/linux/usb/isp116x.h
4611 5790
4612USB KAWASAKI LSI DRIVER 5791USB KAWASAKI LSI DRIVER
4613P: Oliver Neukum 5792P: Oliver Neukum
4614M: oliver@neukum.name 5793M: oliver@neukum.name
4615L: linux-usb@vger.kernel.org 5794L: linux-usb@vger.kernel.org
4616S: Maintained 5795S: Maintained
5796F: drivers/usb/serial/kl5kusb105.*
4617 5797
4618USB MASS STORAGE DRIVER 5798USB MASS STORAGE DRIVER
4619P: Matthew Dharm 5799P: Matthew Dharm
@@ -4622,18 +5802,22 @@ L: linux-usb@vger.kernel.org
4622L: usb-storage@lists.one-eyed-alien.net 5802L: usb-storage@lists.one-eyed-alien.net
4623S: Maintained 5803S: Maintained
4624W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ 5804W: http://www.one-eyed-alien.net/~mdharm/linux-usb/
5805F: drivers/usb/storage/
4625 5806
4626USB OHCI DRIVER 5807USB OHCI DRIVER
4627P: David Brownell 5808P: David Brownell
4628M: dbrownell@users.sourceforge.net 5809M: dbrownell@users.sourceforge.net
4629L: linux-usb@vger.kernel.org 5810L: linux-usb@vger.kernel.org
4630S: Odd Fixes 5811S: Odd Fixes
5812F: Documentation/usb/ohci.txt
5813F: drivers/usb/host/ohci*
4631 5814
4632USB OPTION-CARD DRIVER 5815USB OPTION-CARD DRIVER
4633P: Matthias Urlichs 5816P: Matthias Urlichs
4634M: smurf@smurf.noris.de 5817M: smurf@smurf.noris.de
4635L: linux-usb@vger.kernel.org 5818L: linux-usb@vger.kernel.org
4636S: Maintained 5819S: Maintained
5820F: drivers/usb/serial/option.c
4637 5821
4638USB OV511 DRIVER 5822USB OV511 DRIVER
4639P: Mark McClelland 5823P: Mark McClelland
@@ -4641,6 +5825,7 @@ M: mmcclell@bigfoot.com
4641L: linux-usb@vger.kernel.org 5825L: linux-usb@vger.kernel.org
4642W: http://alpha.dyndns.org/ov511/ 5826W: http://alpha.dyndns.org/ov511/
4643S: Maintained 5827S: Maintained
5828F: drivers/media/video/ov511.*
4644 5829
4645USB PEGASUS DRIVER 5830USB PEGASUS DRIVER
4646P: Petko Manolov 5831P: Petko Manolov
@@ -4649,12 +5834,14 @@ L: linux-usb@vger.kernel.org
4649L: netdev@vger.kernel.org 5834L: netdev@vger.kernel.org
4650W: http://pegasus2.sourceforge.net/ 5835W: http://pegasus2.sourceforge.net/
4651S: Maintained 5836S: Maintained
5837F: drivers/net/usb/pegasus.*
4652 5838
4653USB PRINTER DRIVER (usblp) 5839USB PRINTER DRIVER (usblp)
4654P: Pete Zaitcev 5840P: Pete Zaitcev
4655M: zaitcev@redhat.com 5841M: zaitcev@redhat.com
4656L: linux-usb@vger.kernel.org 5842L: linux-usb@vger.kernel.org
4657S: Supported 5843S: Supported
5844F: drivers/usb/class/usblp.c
4658 5845
4659USB RTL8150 DRIVER 5846USB RTL8150 DRIVER
4660P: Petko Manolov 5847P: Petko Manolov
@@ -4663,6 +5850,7 @@ L: linux-usb@vger.kernel.org
4663L: netdev@vger.kernel.org 5850L: netdev@vger.kernel.org
4664W: http://pegasus2.sourceforge.net/ 5851W: http://pegasus2.sourceforge.net/
4665S: Maintained 5852S: Maintained
5853F: drivers/net/usb/rtl8150.c
4666 5854
4667USB SE401 DRIVER 5855USB SE401 DRIVER
4668P: Jeroen Vreeken 5856P: Jeroen Vreeken
@@ -4670,12 +5858,15 @@ M: pe1rxq@amsat.org
4670L: linux-usb@vger.kernel.org 5858L: linux-usb@vger.kernel.org
4671W: http://www.chello.nl/~j.vreeken/se401/ 5859W: http://www.chello.nl/~j.vreeken/se401/
4672S: Maintained 5860S: Maintained
5861F: Documentation/video4linux/se401.txt
5862F: drivers/media/video/se401.*
4673 5863
4674USB SERIAL BELKIN F5U103 DRIVER 5864USB SERIAL BELKIN F5U103 DRIVER
4675P: William Greathouse 5865P: William Greathouse
4676M: wgreathouse@smva.com 5866M: wgreathouse@smva.com
4677L: linux-usb@vger.kernel.org 5867L: linux-usb@vger.kernel.org
4678S: Maintained 5868S: Maintained
5869F: drivers/usb/serial/belkin_sa.*
4679 5870
4680USB SERIAL CYPRESS M8 DRIVER 5871USB SERIAL CYPRESS M8 DRIVER
4681P: Lonnie Mendez 5872P: Lonnie Mendez
@@ -4684,12 +5875,14 @@ L: linux-usb@vger.kernel.org
4684S: Maintained 5875S: Maintained
4685W: http://geocities.com/i0xox0i 5876W: http://geocities.com/i0xox0i
4686W: http://firstlight.net/cvs 5877W: http://firstlight.net/cvs
5878F: drivers/usb/serial/cypress_m8.*
4687 5879
4688USB SERIAL CYBERJACK DRIVER 5880USB SERIAL CYBERJACK DRIVER
4689P: Matthias Bruestle and Harald Welte 5881P: Matthias Bruestle and Harald Welte
4690M: support@reiner-sct.com 5882M: support@reiner-sct.com
4691W: http://www.reiner-sct.de/support/treiber_cyberjack.php 5883W: http://www.reiner-sct.de/support/treiber_cyberjack.php
4692S: Maintained 5884S: Maintained
5885F: drivers/usb/serial/cyberjack.c
4693 5886
4694USB SERIAL DIGI ACCELEPORT DRIVER 5887USB SERIAL DIGI ACCELEPORT DRIVER
4695P: Peter Berger and Al Borchers 5888P: Peter Berger and Al Borchers
@@ -4697,18 +5890,24 @@ M: pberger@brimson.com
4697M: alborchers@steinerpoint.com 5890M: alborchers@steinerpoint.com
4698L: linux-usb@vger.kernel.org 5891L: linux-usb@vger.kernel.org
4699S: Maintained 5892S: Maintained
5893F: drivers/usb/serial/digi_acceleport.c
4700 5894
4701USB SERIAL DRIVER 5895USB SERIAL DRIVER
4702P: Greg Kroah-Hartman 5896P: Greg Kroah-Hartman
4703M: gregkh@suse.de 5897M: gregkh@suse.de
4704L: linux-usb@vger.kernel.org 5898L: linux-usb@vger.kernel.org
4705S: Supported 5899S: Supported
5900F: Documentation/usb/usb-serial.txt
5901F: drivers/usb/serial/generic.c
5902F: drivers/usb/serial/usb-serial.c
5903F: include/linux/usb/serial.h
4706 5904
4707USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER 5905USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
4708P: Gary Brubaker 5906P: Gary Brubaker
4709M: xavyer@ix.netcom.com 5907M: xavyer@ix.netcom.com
4710L: linux-usb@vger.kernel.org 5908L: linux-usb@vger.kernel.org
4711S: Maintained 5909S: Maintained
5910F: drivers/usb/serial/empeg.c
4712 5911
4713USB SERIAL KEYSPAN DRIVER 5912USB SERIAL KEYSPAN DRIVER
4714P: Greg Kroah-Hartman 5913P: Greg Kroah-Hartman
@@ -4716,6 +5915,7 @@ M: greg@kroah.com
4716L: linux-usb@vger.kernel.org 5915L: linux-usb@vger.kernel.org
4717W: http://www.kroah.com/linux/ 5916W: http://www.kroah.com/linux/
4718S: Maintained 5917S: Maintained
5918F: drivers/usb/serial/*keyspan*
4719 5919
4720USB SERIAL WHITEHEAT DRIVER 5920USB SERIAL WHITEHEAT DRIVER
4721P: Support Department 5921P: Support Department
@@ -4723,21 +5923,25 @@ M: support@connecttech.com
4723L: linux-usb@vger.kernel.org 5923L: linux-usb@vger.kernel.org
4724W: http://www.connecttech.com 5924W: http://www.connecttech.com
4725S: Supported 5925S: Supported
5926F: drivers/usb/serial/whiteheat*
4726 5927
4727USB SMSC95XX ETHERNET DRIVER 5928USB SMSC95XX ETHERNET DRIVER
4728P: Steve Glendinning 5929P: Steve Glendinning
4729M: steve.glendinning@smsc.com 5930M: steve.glendinning@smsc.com
4730L: netdev@vger.kernel.org 5931L: netdev@vger.kernel.org
4731S: Supported 5932S: Supported
5933F: drivers/net/usb/smsc95xx.*
4732 5934
4733USB SN9C1xx DRIVER 5935USB SN9C1xx DRIVER
4734P: Luca Risolia 5936P: Luca Risolia
4735M: luca.risolia@studio.unibo.it 5937M: luca.risolia@studio.unibo.it
4736L: linux-usb@vger.kernel.org 5938L: linux-usb@vger.kernel.org
4737L: linux-media@vger.kernel.org 5939L: linux-media@vger.kernel.org
4738T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5940T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4739W: http://www.linux-projects.org 5941W: http://www.linux-projects.org
4740S: Maintained 5942S: Maintained
5943F: Documentation/video4linux/sn9c102.txt
5944F: drivers/media/video/sn9c102/
4741 5945
4742USB SUBSYSTEM 5946USB SUBSYSTEM
4743P: Greg Kroah-Hartman 5947P: Greg Kroah-Hartman
@@ -4746,12 +5950,18 @@ L: linux-usb@vger.kernel.org
4746W: http://www.linux-usb.org 5950W: http://www.linux-usb.org
4747T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 5951T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
4748S: Supported 5952S: Supported
5953F: Documentation/usb/
5954F: drivers/net/usb/
5955F: drivers/usb/
5956F: include/linux/usb.h
5957F: include/linux/usb/
4749 5958
4750USB UHCI DRIVER 5959USB UHCI DRIVER
4751P: Alan Stern 5960P: Alan Stern
4752M: stern@rowland.harvard.edu 5961M: stern@rowland.harvard.edu
4753L: linux-usb@vger.kernel.org 5962L: linux-usb@vger.kernel.org
4754S: Maintained 5963S: Maintained
5964F: drivers/usb/host/uhci*
4755 5965
4756USB "USBNET" DRIVER FRAMEWORK 5966USB "USBNET" DRIVER FRAMEWORK
4757P: David Brownell 5967P: David Brownell
@@ -4759,39 +5969,47 @@ M: dbrownell@users.sourceforge.net
4759L: netdev@vger.kernel.org 5969L: netdev@vger.kernel.org
4760W: http://www.linux-usb.org/usbnet 5970W: http://www.linux-usb.org/usbnet
4761S: Maintained 5971S: Maintained
5972F: drivers/net/usb/usbnet.c
5973F: include/linux/usb/usbnet.h
4762 5974
4763USB VIDEO CLASS 5975USB VIDEO CLASS
4764P: Laurent Pinchart 5976P: Laurent Pinchart
4765M: laurent.pinchart@skynet.be 5977M: laurent.pinchart@skynet.be
4766L: linux-uvc-devel@lists.berlios.de (subscribers-only) 5978L: linux-uvc-devel@lists.berlios.de (subscribers-only)
4767L: linux-media@vger.kernel.org 5979L: linux-media@vger.kernel.org
4768T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5980T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4769W: http://linux-uvc.berlios.de 5981W: http://linux-uvc.berlios.de
4770S: Maintained 5982S: Maintained
5983F: drivers/media/video/uvc/
4771 5984
4772USB W996[87]CF DRIVER 5985USB W996[87]CF DRIVER
4773P: Luca Risolia 5986P: Luca Risolia
4774M: luca.risolia@studio.unibo.it 5987M: luca.risolia@studio.unibo.it
4775L: linux-usb@vger.kernel.org 5988L: linux-usb@vger.kernel.org
4776L: linux-media@vger.kernel.org 5989L: linux-media@vger.kernel.org
4777T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5990T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4778W: http://www.linux-projects.org 5991W: http://www.linux-projects.org
4779S: Maintained 5992S: Maintained
5993F: Documentation/video4linux/w9968cf.txt
5994F: drivers/media/video/w996*
4780 5995
4781USB WIRELESS RNDIS DRIVER (rndis_wlan) 5996USB WIRELESS RNDIS DRIVER (rndis_wlan)
4782P: Jussi Kivilinna 5997P: Jussi Kivilinna
4783M: jussi.kivilinna@mbnet.fi 5998M: jussi.kivilinna@mbnet.fi
4784L: linux-wireless@vger.kernel.org 5999L: linux-wireless@vger.kernel.org
4785S: Maintained 6000S: Maintained
6001F: drivers/net/wireless/rndis_wlan.c
4786 6002
4787USB ZC0301 DRIVER 6003USB ZC0301 DRIVER
4788P: Luca Risolia 6004P: Luca Risolia
4789M: luca.risolia@studio.unibo.it 6005M: luca.risolia@studio.unibo.it
4790L: linux-usb@vger.kernel.org 6006L: linux-usb@vger.kernel.org
4791L: linux-media@vger.kernel.org 6007L: linux-media@vger.kernel.org
4792T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 6008T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4793W: http://www.linux-projects.org 6009W: http://www.linux-projects.org
4794S: Maintained 6010S: Maintained
6011F: Documentation/video4linux/zc0301.txt
6012F: drivers/media/video/zc0301/
4795 6013
4796USB ZD1201 DRIVER 6014USB ZD1201 DRIVER
4797P: Jeroen Vreeken 6015P: Jeroen Vreeken
@@ -4799,15 +6017,18 @@ M: pe1rxq@amsat.org
4799L: linux-usb@vger.kernel.org 6017L: linux-usb@vger.kernel.org
4800W: http://linux-lc100020.sourceforge.net 6018W: http://linux-lc100020.sourceforge.net
4801S: Maintained 6019S: Maintained
6020F: drivers/net/wireless/zd1201.*
4802 6021
4803USB ZR364XX DRIVER 6022USB ZR364XX DRIVER
4804P: Antoine Jacquet 6023P: Antoine Jacquet
4805M: royale@zerezo.com 6024M: royale@zerezo.com
4806L: linux-usb@vger.kernel.org 6025L: linux-usb@vger.kernel.org
4807L: linux-media@vger.kernel.org 6026L: linux-media@vger.kernel.org
4808T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 6027T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4809W: http://royale.zerezo.com/zr364xx/ 6028W: http://royale.zerezo.com/zr364xx/
4810S: Maintained 6029S: Maintained
6030F: Documentation/video4linux/zr364xx.txt
6031F: drivers/media/video/zr364xx.c
4811 6032
4812USER-MODE LINUX (UML) 6033USER-MODE LINUX (UML)
4813P: Jeff Dike 6034P: Jeff Dike
@@ -4816,6 +6037,10 @@ L: user-mode-linux-devel@lists.sourceforge.net
4816L: user-mode-linux-user@lists.sourceforge.net 6037L: user-mode-linux-user@lists.sourceforge.net
4817W: http://user-mode-linux.sourceforge.net 6038W: http://user-mode-linux.sourceforge.net
4818S: Maintained 6039S: Maintained
6040F: Documentation/uml/
6041F: arch/um/
6042F: fs/hostfs/
6043F: fs/hppfs/
4819 6044
4820USERSPACE I/O (UIO) 6045USERSPACE I/O (UIO)
4821P: Hans J. Koch 6046P: Hans J. Koch
@@ -4824,13 +6049,16 @@ P: Greg Kroah-Hartman
4824M: gregkh@suse.de 6049M: gregkh@suse.de
4825L: linux-kernel@vger.kernel.org 6050L: linux-kernel@vger.kernel.org
4826S: Maintained 6051S: Maintained
6052F: Documentation/DocBook/uio-howto.tmpl
6053F: drivers/uio/
6054F: include/linux/uio*.h
4827 6055
4828UTIL-LINUX-NG PACKAGE 6056UTIL-LINUX-NG PACKAGE
4829P: Karel Zak 6057P: Karel Zak
4830M: kzak@redhat.com 6058M: kzak@redhat.com
4831L: util-linux-ng@vger.kernel.org 6059L: util-linux-ng@vger.kernel.org
4832W: http://kernel.org/~kzak/util-linux-ng/ 6060W: http://kernel.org/~kzak/util-linux-ng/
4833T: git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git 6061T: git git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
4834S: Maintained 6062S: Maintained
4835 6063
4836UVESAFB DRIVER 6064UVESAFB DRIVER
@@ -4839,23 +6067,30 @@ M: spock@gentoo.org
4839L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 6067L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
4840W: http://dev.gentoo.org/~spock/projects/uvesafb/ 6068W: http://dev.gentoo.org/~spock/projects/uvesafb/
4841S: Maintained 6069S: Maintained
6070F: Documentation/fb/uvesafb.txt
6071F: drivers/video/uvesafb.*
4842 6072
4843VFAT/FAT/MSDOS FILESYSTEM 6073VFAT/FAT/MSDOS FILESYSTEM
4844P: OGAWA Hirofumi 6074P: OGAWA Hirofumi
4845M: hirofumi@mail.parknet.co.jp 6075M: hirofumi@mail.parknet.co.jp
4846L: linux-kernel@vger.kernel.org 6076L: linux-kernel@vger.kernel.org
4847S: Maintained 6077S: Maintained
6078F: Documentation/filesystems/vfat.txt
6079F: fs/fat/
4848 6080
4849VIA RHINE NETWORK DRIVER 6081VIA RHINE NETWORK DRIVER
4850P: Roger Luethi 6082P: Roger Luethi
4851M: rl@hellgate.ch 6083M: rl@hellgate.ch
4852S: Maintained 6084S: Maintained
6085F: drivers/net/via-rhine.c
4853 6086
4854VIAPRO SMBUS DRIVER 6087VIAPRO SMBUS DRIVER
4855P: Jean Delvare 6088P: Jean Delvare
4856M: khali@linux-fr.org 6089M: khali@linux-fr.org
4857L: linux-i2c@vger.kernel.org 6090L: linux-i2c@vger.kernel.org
4858S: Maintained 6091S: Maintained
6092F: Documentation/i2c/busses/i2c-viapro
6093F: drivers/i2c/busses/i2c-viapro.c
4859 6094
4860VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER 6095VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
4861P: Joseph Chan 6096P: Joseph Chan
@@ -4864,26 +6099,23 @@ P: Scott Fang
4864M: ScottFang@viatech.com.cn 6099M: ScottFang@viatech.com.cn
4865L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 6100L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
4866S: Maintained 6101S: Maintained
6102F: drivers/video/via/
4867 6103
4868VIA VELOCITY NETWORK DRIVER 6104VIA VELOCITY NETWORK DRIVER
4869P: Francois Romieu 6105P: Francois Romieu
4870M: romieu@fr.zoreil.com 6106M: romieu@fr.zoreil.com
4871L: netdev@vger.kernel.org 6107L: netdev@vger.kernel.org
4872S: Maintained 6108S: Maintained
4873 6109F: drivers/net/via-velocity.*
4874VIDEO FOR LINUX (V4L)
4875P: Mauro Carvalho Chehab
4876M: mchehab@infradead.org
4877L: linux-media@vger.kernel.org
4878W: http://linuxtv.org
4879T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4880S: Maintained
4881 6110
4882VLAN (802.1Q) 6111VLAN (802.1Q)
4883P: Patrick McHardy 6112P: Patrick McHardy
4884M: kaber@trash.net 6113M: kaber@trash.net
4885L: netdev@vger.kernel.org 6114L: netdev@vger.kernel.org
4886S: Maintained 6115S: Maintained
6116F: drivers/net/macvlan.c
6117F: include/linux/if_*vlan.h
6118F: net/8021q/
4887 6119
4888VOLTAGE AND CURRENT REGULATOR FRAMEWORK 6120VOLTAGE AND CURRENT REGULATOR FRAMEWORK
4889P: Liam Girdwood 6121P: Liam Girdwood
@@ -4892,49 +6124,64 @@ P: Mark Brown
4892M: broonie@opensource.wolfsonmicro.com 6124M: broonie@opensource.wolfsonmicro.com
4893W: http://opensource.wolfsonmicro.com/node/15 6125W: http://opensource.wolfsonmicro.com/node/15
4894W: http://www.slimlogic.co.uk/?p=48 6126W: http://www.slimlogic.co.uk/?p=48
4895T: git kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6.git 6127T: git git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6.git
4896S: Supported 6128S: Supported
6129F: drivers/regulator/
6130F: include/linux/regulator/
4897 6131
4898VT1211 HARDWARE MONITOR DRIVER 6132VT1211 HARDWARE MONITOR DRIVER
4899P: Juerg Haefliger 6133P: Juerg Haefliger
4900M: juergh@gmail.com 6134M: juergh@gmail.com
4901L: lm-sensors@lm-sensors.org 6135L: lm-sensors@lm-sensors.org
4902S: Maintained 6136S: Maintained
6137F: Documentation/hwmon/vt1211
6138F: drivers/hwmon/vt1211.c
4903 6139
4904VT8231 HARDWARE MONITOR DRIVER 6140VT8231 HARDWARE MONITOR DRIVER
4905P: Roger Lucas 6141P: Roger Lucas
4906M: vt8231@hiddenengine.co.uk 6142M: vt8231@hiddenengine.co.uk
4907L: lm-sensors@lm-sensors.org 6143L: lm-sensors@lm-sensors.org
4908S: Maintained 6144S: Maintained
6145F: drivers/hwmon/vt8231.c
4909 6146
4910W1 DALLAS'S 1-WIRE BUS 6147W1 DALLAS'S 1-WIRE BUS
4911P: Evgeniy Polyakov 6148P: Evgeniy Polyakov
4912M: johnpol@2ka.mipt.ru 6149M: johnpol@2ka.mipt.ru
4913S: Maintained 6150S: Maintained
6151F: Documentation/w1/
6152F: drivers/w1/
4914 6153
4915W83791D HARDWARE MONITORING DRIVER 6154W83791D HARDWARE MONITORING DRIVER
4916P: Marc Hulsman 6155P: Marc Hulsman
4917M: m.hulsman@tudelft.nl 6156M: m.hulsman@tudelft.nl
4918L: lm-sensors@lm-sensors.org 6157L: lm-sensors@lm-sensors.org
4919S: Maintained 6158S: Maintained
6159F: Documentation/hwmon/w83791d
6160F: drivers/hwmon/w83791d.c
4920 6161
4921W83793 HARDWARE MONITORING DRIVER 6162W83793 HARDWARE MONITORING DRIVER
4922P: Rudolf Marek 6163P: Rudolf Marek
4923M: r.marek@assembler.cz 6164M: r.marek@assembler.cz
4924L: lm-sensors@lm-sensors.org 6165L: lm-sensors@lm-sensors.org
4925S: Maintained 6166S: Maintained
6167F: Documentation/hwmon/w83793
6168F: drivers/hwmon/w83793.c
4926 6169
4927W83L51xD SD/MMC CARD INTERFACE DRIVER 6170W83L51xD SD/MMC CARD INTERFACE DRIVER
4928P: Pierre Ossman 6171P: Pierre Ossman
4929M: drzeus-wbsd@drzeus.cx 6172M: pierre@ossman.eu
4930L: linux-kernel@vger.kernel.org 6173L: linux-kernel@vger.kernel.org
4931S: Maintained 6174S: Maintained
6175F: drivers/mmc/host/wbsd.*
4932 6176
4933WATCHDOG DEVICE DRIVERS 6177WATCHDOG DEVICE DRIVERS
4934P: Wim Van Sebroeck 6178P: Wim Van Sebroeck
4935M: wim@iguana.be 6179M: wim@iguana.be
4936T: git kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog.git 6180T: git git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog.git
4937S: Maintained 6181S: Maintained
6182F: Documentation/watchdog/
6183F: drivers/watchdog/
6184F: include/linux/watchdog.h
4938 6185
4939WAVELAN NETWORK DRIVER & WIRELESS EXTENSIONS 6186WAVELAN NETWORK DRIVER & WIRELESS EXTENSIONS
4940P: Jean Tourrilhes 6187P: Jean Tourrilhes
@@ -4942,12 +6189,15 @@ M: jt@hpl.hp.com
4942L: linux-wireless@vger.kernel.org 6189L: linux-wireless@vger.kernel.org
4943W: http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/ 6190W: http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
4944S: Maintained 6191S: Maintained
6192F: Documentation/networking/wavelan.txt
6193F: drivers/net/wireless/wavelan*
4945 6194
4946WD7000 SCSI DRIVER 6195WD7000 SCSI DRIVER
4947P: Miroslav Zagorac 6196P: Miroslav Zagorac
4948M: zaga@fly.cc.fer.hr 6197M: zaga@fly.cc.fer.hr
4949L: linux-scsi@vger.kernel.org 6198L: linux-scsi@vger.kernel.org
4950S: Maintained 6199S: Maintained
6200F: drivers/scsi/wd7000.c
4951 6201
4952WIMAX STACK 6202WIMAX STACK
4953P: Inaky Perez-Gonzalez 6203P: Inaky Perez-Gonzalez
@@ -4961,11 +6211,14 @@ WIMEDIA LLC PROTOCOL (WLP) SUBSYSTEM
4961P: David Vrabel 6211P: David Vrabel
4962M: david.vrabel@csr.com 6212M: david.vrabel@csr.com
4963S: Maintained 6213S: Maintained
6214F: include/linux/wlp.h
6215F: drivers/uwb/wlp/
4964 6216
4965WISTRON LAPTOP BUTTON DRIVER 6217WISTRON LAPTOP BUTTON DRIVER
4966P: Miloslav Trmac 6218P: Miloslav Trmac
4967M: mitr@volny.cz 6219M: mitr@volny.cz
4968S: Maintained 6220S: Maintained
6221F: drivers/input/misc/wistron_btns.c
4969 6222
4970WL3501 WIRELESS PCMCIA CARD DRIVER 6223WL3501 WIRELESS PCMCIA CARD DRIVER
4971P: Arnaldo Carvalho de Melo 6224P: Arnaldo Carvalho de Melo
@@ -4973,6 +6226,7 @@ M: acme@ghostprotocols.net
4973L: linux-wireless@vger.kernel.org 6226L: linux-wireless@vger.kernel.org
4974W: http://oops.ghostprotocols.net:81/blog 6227W: http://oops.ghostprotocols.net:81/blog
4975S: Maintained 6228S: Maintained
6229F: drivers/net/wireless/wl3501*
4976 6230
4977WM97XX TOUCHSCREEN DRIVERS 6231WM97XX TOUCHSCREEN DRIVERS
4978P: Mark Brown 6232P: Mark Brown
@@ -4983,12 +6237,17 @@ L: linux-input@vger.kernel.org
4983T: git git://opensource.wolfsonmicro.com/linux-2.6-touch 6237T: git git://opensource.wolfsonmicro.com/linux-2.6-touch
4984W: http://opensource.wolfsonmicro.com/node/7 6238W: http://opensource.wolfsonmicro.com/node/7
4985S: Supported 6239S: Supported
6240F: drivers/input/touchscreen/*wm97*
6241F: include/linux/wm97xx.h
4986 6242
4987X.25 NETWORK LAYER 6243X.25 NETWORK LAYER
4988P: Henner Eisen 6244P: Henner Eisen
4989M: eis@baty.hanse.de 6245M: eis@baty.hanse.de
4990L: linux-x25@vger.kernel.org 6246L: linux-x25@vger.kernel.org
4991S: Maintained 6247S: Maintained
6248F: Documentation/networking/x25*
6249F: include/net/x25*
6250F: net/x25/
4992 6251
4993X86 ARCHITECTURE (32-BIT AND 64-BIT) 6252X86 ARCHITECTURE (32-BIT AND 64-BIT)
4994P: Thomas Gleixner 6253P: Thomas Gleixner
@@ -4999,8 +6258,10 @@ P: H. Peter Anvin
4999M: hpa@zytor.com 6258M: hpa@zytor.com
5000M: x86@kernel.org 6259M: x86@kernel.org
5001L: linux-kernel@vger.kernel.org 6260L: linux-kernel@vger.kernel.org
5002T: git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git 6261T: git git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
5003S: Maintained 6262S: Maintained
6263F: Documentation/x86/
6264F: arch/x86/
5004 6265
5005XEN HYPERVISOR INTERFACE 6266XEN HYPERVISOR INTERFACE
5006P: Jeremy Fitzhardinge 6267P: Jeremy Fitzhardinge
@@ -5010,6 +6271,11 @@ M: chrisw@sous-sol.org
5010L: virtualization@lists.osdl.org 6271L: virtualization@lists.osdl.org
5011L: xen-devel@lists.xensource.com 6272L: xen-devel@lists.xensource.com
5012S: Supported 6273S: Supported
6274F: arch/x86/xen/
6275F: drivers/*/xen-*front.c
6276F: drivers/xen/
6277F: arch/x86/include/asm/xen/
6278F: include/xen/
5013 6279
5014XFS FILESYSTEM 6280XFS FILESYSTEM
5015P: Silicon Graphics Inc 6281P: Silicon Graphics Inc
@@ -5018,8 +6284,10 @@ M: felixb@sgi.com
5018M: xfs-masters@oss.sgi.com 6284M: xfs-masters@oss.sgi.com
5019L: xfs@oss.sgi.com 6285L: xfs@oss.sgi.com
5020W: http://oss.sgi.com/projects/xfs 6286W: http://oss.sgi.com/projects/xfs
5021T: git://oss.sgi.com/xfs/xfs.git 6287T: git git://oss.sgi.com/xfs/xfs.git
5022S: Supported 6288S: Supported
6289F: Documentation/filesystems/xfs.txt
6290F: fs/xfs/
5023 6291
5024XILINX SYSTEMACE DRIVER 6292XILINX SYSTEMACE DRIVER
5025P: Grant Likely 6293P: Grant Likely
@@ -5027,24 +6295,30 @@ M: grant.likely@secretlab.ca
5027W: http://www.secretlab.ca/ 6295W: http://www.secretlab.ca/
5028L: linux-kernel@vger.kernel.org 6296L: linux-kernel@vger.kernel.org
5029S: Maintained 6297S: Maintained
6298F: drivers/block/xsysace.c
5030 6299
5031XILINX UARTLITE SERIAL DRIVER 6300XILINX UARTLITE SERIAL DRIVER
5032P: Peter Korsgaard 6301P: Peter Korsgaard
5033M: jacmet@sunsite.dk 6302M: jacmet@sunsite.dk
5034L: linux-serial@vger.kernel.org 6303L: linux-serial@vger.kernel.org
5035S: Maintained 6304S: Maintained
6305F: drivers/serial/uartlite.c
5036 6306
5037YAM DRIVER FOR AX.25 6307YAM DRIVER FOR AX.25
5038P: Jean-Paul Roubelat 6308P: Jean-Paul Roubelat
5039M: jpr@f6fbb.org 6309M: jpr@f6fbb.org
5040L: linux-hams@vger.kernel.org 6310L: linux-hams@vger.kernel.org
5041S: Maintained 6311S: Maintained
6312F: drivers/net/hamradio/yam*
6313F: include/linux/yam.h
5042 6314
5043YEALINK PHONE DRIVER 6315YEALINK PHONE DRIVER
5044P: Henk Vergonet 6316P: Henk Vergonet
5045M: Henk.Vergonet@gmail.com 6317M: Henk.Vergonet@gmail.com
5046L: usbb2k-api-dev@nongnu.org 6318L: usbb2k-api-dev@nongnu.org
5047S: Maintained 6319S: Maintained
6320F: Documentation/input/yealink.txt
6321F: drivers/input/misc/yealink.*
5048 6322
5049Z8530 DRIVER FOR AX.25 6323Z8530 DRIVER FOR AX.25
5050P: Joerg Reuter 6324P: Joerg Reuter
@@ -5053,6 +6327,9 @@ W: http://yaina.de/jreuter/
5053W: http://www.qsl.net/dl1bke/ 6327W: http://www.qsl.net/dl1bke/
5054L: linux-hams@vger.kernel.org 6328L: linux-hams@vger.kernel.org
5055S: Maintained 6329S: Maintained
6330F: Documentation/networking/z8530drv.txt
6331F: drivers/net/hamradio/*scc.c
6332F: drivers/net/hamradio/z8530.h
5056 6333
5057ZD1211RW WIRELESS DRIVER 6334ZD1211RW WIRELESS DRIVER
5058P: Daniel Drake 6335P: Daniel Drake
@@ -5063,6 +6340,7 @@ W: http://zd1211.ath.cx/wiki/DriverRewrite
5063L: linux-wireless@vger.kernel.org 6340L: linux-wireless@vger.kernel.org
5064L: zd1211-devs@lists.sourceforge.net (subscribers-only) 6341L: zd1211-devs@lists.sourceforge.net (subscribers-only)
5065S: Maintained 6342S: Maintained
6343F: drivers/net/wireless/zd1211rw/
5066 6344
5067ZR36067 VIDEO FOR LINUX DRIVER 6345ZR36067 VIDEO FOR LINUX DRIVER
5068L: mjpeg-users@lists.sourceforge.net 6346L: mjpeg-users@lists.sourceforge.net
@@ -5070,12 +6348,15 @@ L: linux-media@vger.kernel.org
5070W: http://mjpeg.sourceforge.net/driver-zoran/ 6348W: http://mjpeg.sourceforge.net/driver-zoran/
5071T: Mercurial http://linuxtv.org/hg/v4l-dvb 6349T: Mercurial http://linuxtv.org/hg/v4l-dvb
5072S: Odd Fixes 6350S: Odd Fixes
6351F: drivers/media/video/zoran/
5073 6352
5074ZS DECSTATION Z85C30 SERIAL DRIVER 6353ZS DECSTATION Z85C30 SERIAL DRIVER
5075P: Maciej W. Rozycki 6354P: Maciej W. Rozycki
5076M: macro@linux-mips.org 6355M: macro@linux-mips.org
5077S: Maintained 6356S: Maintained
6357F: drivers/serial/zs.*
5078 6358
5079THE REST 6359THE REST
5080P: Linus Torvalds 6360P: Linus Torvalds
6361T: git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
5081S: Buried alive in reporters 6362S: Buried alive in reporters
diff --git a/Makefile b/Makefile
index e5ad5fd96177..9e5dc8f0ef47 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 30 3SUBLEVEL = 30
4EXTRAVERSION = -rc1 4EXTRAVERSION = -rc3
5NAME = Temporary Tasmanian Devil 5NAME = Temporary Tasmanian Devil
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -169,7 +169,7 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
169 -e s/arm.*/arm/ -e s/sa110/arm/ \ 169 -e s/arm.*/arm/ -e s/sa110/arm/ \
170 -e s/s390x/s390/ -e s/parisc64/parisc/ \ 170 -e s/s390x/s390/ -e s/parisc64/parisc/ \
171 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ 171 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
172 -e s/sh.*/sh/ ) 172 -e s/sh[234].*/sh/ )
173 173
174# Cross compiling and selecting different set of gcc/bin-utils 174# Cross compiling and selecting different set of gcc/bin-utils
175# --------------------------------------------------------------------------- 175# ---------------------------------------------------------------------------
@@ -210,6 +210,11 @@ ifeq ($(ARCH),sparc64)
210 SRCARCH := sparc 210 SRCARCH := sparc
211endif 211endif
212 212
213# Additional ARCH settings for sh
214ifeq ($(ARCH),sh64)
215 SRCARCH := sh
216endif
217
213# Where to locate arch specific headers 218# Where to locate arch specific headers
214hdr-arch := $(SRCARCH) 219hdr-arch := $(SRCARCH)
215 220
@@ -567,7 +572,7 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
567# disable pointer signed / unsigned warnings in gcc 4.0 572# disable pointer signed / unsigned warnings in gcc 4.0
568KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) 573KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
569 574
570# disable invalid "can't wrap" optimzations for signed / pointers 575# disable invalid "can't wrap" optimizations for signed / pointers
571KBUILD_CFLAGS += $(call cc-option,-fwrapv) 576KBUILD_CFLAGS += $(call cc-option,-fwrapv)
572 577
573# revert to pre-gcc-4.4 behaviour of .eh_frame 578# revert to pre-gcc-4.4 behaviour of .eh_frame
@@ -597,6 +602,10 @@ LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
597LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID) 602LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
598LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID) 603LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID)
599 604
605ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
606LDFLAGS_vmlinux += -X
607endif
608
600# Default kernel image to build when no specific target is given. 609# Default kernel image to build when no specific target is given.
601# KBUILD_IMAGE may be overruled on the command line or 610# KBUILD_IMAGE may be overruled on the command line or
602# set in the environment 611# set in the environment
@@ -1191,7 +1200,7 @@ CLEAN_FILES += vmlinux System.map \
1191 .tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map 1200 .tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map
1192 1201
1193# Directories & files removed with 'make mrproper' 1202# Directories & files removed with 'make mrproper'
1194MRPROPER_DIRS += include/config include2 usr/include 1203MRPROPER_DIRS += include/config include2 usr/include include/generated
1195MRPROPER_FILES += .config .config.old include/asm .version .old_version \ 1204MRPROPER_FILES += .config .config.old include/asm .version .old_version \
1196 include/linux/autoconf.h include/linux/version.h \ 1205 include/linux/autoconf.h include/linux/version.h \
1197 include/linux/utsrelease.h \ 1206 include/linux/utsrelease.h \
@@ -1587,5 +1596,5 @@ PHONY += FORCE
1587FORCE: 1596FORCE:
1588 1597
1589# Declare the contents of the .PHONY variable as phony. We keep that 1598# Declare the contents of the .PHONY variable as phony. We keep that
1590# information in a variable se we can use it in if_changed and friends. 1599# information in a variable so we can use it in if_changed and friends.
1591.PHONY: $(PHONY) 1600.PHONY: $(PHONY)
diff --git a/arch/Kconfig b/arch/Kconfig
index dc81b34c5d82..78a35e9dc104 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -109,3 +109,6 @@ config HAVE_CLK
109 109
110config HAVE_DMA_API_DEBUG 110config HAVE_DMA_API_DEBUG
111 bool 111 bool
112
113config HAVE_DEFAULT_NO_SPIN_MUTEXES
114 bool
diff --git a/arch/alpha/include/asm/percpu.h b/arch/alpha/include/asm/percpu.h
index 3495e8e00d70..e9e0bb5a23bf 100644
--- a/arch/alpha/include/asm/percpu.h
+++ b/arch/alpha/include/asm/percpu.h
@@ -73,6 +73,6 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
73 73
74#endif /* SMP */ 74#endif /* SMP */
75 75
76#define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu_var(name) 76#include <asm-generic/percpu.h>
77 77
78#endif /* __ALPHA_PERCPU_H */ 78#endif /* __ALPHA_PERCPU_H */
diff --git a/arch/alpha/kernel/head.S b/arch/alpha/kernel/head.S
index 7ac1f1372c36..4bdd1d2ff353 100644
--- a/arch/alpha/kernel/head.S
+++ b/arch/alpha/kernel/head.S
@@ -7,10 +7,11 @@
7 * the kernel global pointer and jump to the kernel entry-point. 7 * the kernel global pointer and jump to the kernel entry-point.
8 */ 8 */
9 9
10#include <linux/init.h>
10#include <asm/system.h> 11#include <asm/system.h>
11#include <asm/asm-offsets.h> 12#include <asm/asm-offsets.h>
12 13
13.section .text.head, "ax" 14__HEAD
14.globl swapper_pg_dir 15.globl swapper_pg_dir
15.globl _stext 16.globl _stext
16swapper_pg_dir=SWAPPER_PGD 17swapper_pg_dir=SWAPPER_PGD
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index ef37fc1acaea..b9d6568e5f7f 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -16,7 +16,7 @@ SECTIONS
16 16
17 _text = .; /* Text and read-only data */ 17 _text = .; /* Text and read-only data */
18 .text : { 18 .text : {
19 *(.text.head) 19 HEAD_TEXT
20 TEXT_TEXT 20 TEXT_TEXT
21 SCHED_TEXT 21 SCHED_TEXT
22 LOCK_TEXT 22 LOCK_TEXT
diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c
index ecf0bfbab107..b2a781d9ce05 100644
--- a/arch/arm/common/vic.c
+++ b/arch/arm/common/vic.c
@@ -85,12 +85,11 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,
85 writel(32, base + VIC_PL190_DEF_VECT_ADDR); 85 writel(32, base + VIC_PL190_DEF_VECT_ADDR);
86 86
87 for (i = 0; i < 32; i++) { 87 for (i = 0; i < 32; i++) {
88 unsigned int irq = irq_start + i;
89
90 set_irq_chip(irq, &vic_chip);
91 set_irq_chip_data(irq, base);
92
93 if (vic_sources & (1 << i)) { 88 if (vic_sources & (1 << i)) {
89 unsigned int irq = irq_start + i;
90
91 set_irq_chip(irq, &vic_chip);
92 set_irq_chip_data(irq, base);
94 set_irq_handler(irq, handle_level_irq); 93 set_irq_handler(irq, handle_level_irq);
95 set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 94 set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
96 } 95 }
diff --git a/arch/arm/configs/magician_defconfig b/arch/arm/configs/magician_defconfig
index 82428c2f234c..f56837f69ca7 100644
--- a/arch/arm/configs/magician_defconfig
+++ b/arch/arm/configs/magician_defconfig
@@ -1183,7 +1183,11 @@ CONFIG_RTC_INTF_DEV=y
1183CONFIG_RTC_DRV_SA1100=y 1183CONFIG_RTC_DRV_SA1100=y
1184# CONFIG_RTC_DRV_PXA is not set 1184# CONFIG_RTC_DRV_PXA is not set
1185# CONFIG_DMADEVICES is not set 1185# CONFIG_DMADEVICES is not set
1186# CONFIG_REGULATOR is not set 1186CONFIG_REGULATOR=y
1187# CONFIG_REGULATOR_DEBUG is not set
1188# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
1189# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
1190CONFIG_REGULATOR_BQ24022=y
1187# CONFIG_UIO is not set 1191# CONFIG_UIO is not set
1188# CONFIG_STAGING is not set 1192# CONFIG_STAGING is not set
1189 1193
diff --git a/arch/arm/configs/pcm037_defconfig b/arch/arm/configs/mx1_defconfig
index 6e37c77c4760..0200d67e30ba 100644
--- a/arch/arm/configs/pcm037_defconfig
+++ b/arch/arm/configs/mx1_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.26-rc6 3# Linux kernel version: 2.6.30-rc1
4# Wed Jun 25 11:52:42 2008 4# Wed Apr 8 11:11:33 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -12,6 +12,7 @@ CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set 12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y 14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 16CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y 17CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y 18CONFIG_HARDIRQS_SW_RESEND=y
@@ -21,9 +22,8 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y 23CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 24CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_ZONE_DMA=y
26CONFIG_ARCH_MTD_XIP=y 25CONFIG_ARCH_MTD_XIP=y
26CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
27CONFIG_VECTORS_BASE=0xffff0000 27CONFIG_VECTORS_BASE=0xffff0000
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
29 29
@@ -43,15 +43,24 @@ CONFIG_SYSVIPC_SYSCTL=y
43# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
44# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_CLASSIC_RCU=y
51# CONFIG_TREE_RCU is not set
52# CONFIG_PREEMPT_RCU is not set
53# CONFIG_TREE_RCU_TRACE is not set
54# CONFIG_PREEMPT_RCU_TRACE is not set
46CONFIG_IKCONFIG=y 55CONFIG_IKCONFIG=y
47CONFIG_IKCONFIG_PROC=y 56CONFIG_IKCONFIG_PROC=y
48CONFIG_LOG_BUF_SHIFT=14 57CONFIG_LOG_BUF_SHIFT=14
49# CONFIG_CGROUPS is not set
50CONFIG_GROUP_SCHED=y 58CONFIG_GROUP_SCHED=y
51CONFIG_FAIR_GROUP_SCHED=y 59CONFIG_FAIR_GROUP_SCHED=y
52# CONFIG_RT_GROUP_SCHED is not set 60# CONFIG_RT_GROUP_SCHED is not set
53CONFIG_USER_SCHED=y 61CONFIG_USER_SCHED=y
54# CONFIG_CGROUP_SCHED is not set 62# CONFIG_CGROUP_SCHED is not set
63# CONFIG_CGROUPS is not set
55CONFIG_SYSFS_DEPRECATED=y 64CONFIG_SYSFS_DEPRECATED=y
56CONFIG_SYSFS_DEPRECATED_V2=y 65CONFIG_SYSFS_DEPRECATED_V2=y
57# CONFIG_RELAY is not set 66# CONFIG_RELAY is not set
@@ -59,26 +68,26 @@ CONFIG_SYSFS_DEPRECATED_V2=y
59# CONFIG_BLK_DEV_INITRD is not set 68# CONFIG_BLK_DEV_INITRD is not set
60CONFIG_CC_OPTIMIZE_FOR_SIZE=y 69CONFIG_CC_OPTIMIZE_FOR_SIZE=y
61CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
71CONFIG_ANON_INODES=y
62CONFIG_EMBEDDED=y 72CONFIG_EMBEDDED=y
63CONFIG_UID16=y 73CONFIG_UID16=y
64CONFIG_SYSCTL_SYSCALL=y 74CONFIG_SYSCTL_SYSCALL=y
65CONFIG_SYSCTL_SYSCALL_CHECK=y
66CONFIG_KALLSYMS=y 75CONFIG_KALLSYMS=y
67# CONFIG_KALLSYMS_EXTRA_PASS is not set 76# CONFIG_KALLSYMS_EXTRA_PASS is not set
68CONFIG_HOTPLUG=y 77CONFIG_HOTPLUG=y
69CONFIG_PRINTK=y 78CONFIG_PRINTK=y
70CONFIG_BUG=y 79CONFIG_BUG=y
71CONFIG_ELF_CORE=y 80CONFIG_ELF_CORE=y
72CONFIG_COMPAT_BRK=y
73CONFIG_BASE_FULL=y 81CONFIG_BASE_FULL=y
74CONFIG_FUTEX=y 82CONFIG_FUTEX=y
75CONFIG_ANON_INODES=y
76CONFIG_EPOLL=y 83CONFIG_EPOLL=y
77CONFIG_SIGNALFD=y 84CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y 85CONFIG_TIMERFD=y
79CONFIG_EVENTFD=y 86CONFIG_EVENTFD=y
80CONFIG_SHMEM=y 87CONFIG_SHMEM=y
88CONFIG_AIO=y
81CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_COMPAT_BRK=y
82CONFIG_SLAB=y 91CONFIG_SLAB=y
83# CONFIG_SLUB is not set 92# CONFIG_SLUB is not set
84# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
@@ -88,11 +97,10 @@ CONFIG_HAVE_OPROFILE=y
88# CONFIG_KPROBES is not set 97# CONFIG_KPROBES is not set
89CONFIG_HAVE_KPROBES=y 98CONFIG_HAVE_KPROBES=y
90CONFIG_HAVE_KRETPROBES=y 99CONFIG_HAVE_KRETPROBES=y
91# CONFIG_HAVE_DMA_ATTRS is not set 100# CONFIG_SLOW_WORK is not set
92CONFIG_PROC_PAGE_MONITOR=y 101CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 102CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 103CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set
96CONFIG_BASE_SMALL=0 104CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 105CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set 106# CONFIG_MODULE_FORCE_LOAD is not set
@@ -100,12 +108,10 @@ CONFIG_MODULE_UNLOAD=y
100CONFIG_MODULE_FORCE_UNLOAD=y 108CONFIG_MODULE_FORCE_UNLOAD=y
101CONFIG_MODVERSIONS=y 109CONFIG_MODVERSIONS=y
102# CONFIG_MODULE_SRCVERSION_ALL is not set 110# CONFIG_MODULE_SRCVERSION_ALL is not set
103CONFIG_KMOD=y
104CONFIG_BLOCK=y 111CONFIG_BLOCK=y
105# CONFIG_LBD is not set 112# CONFIG_LBD is not set
106# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 113# CONFIG_BLK_DEV_BSG is not set
114# CONFIG_BLK_DEV_INTEGRITY is not set
109 115
110# 116#
111# IO Schedulers 117# IO Schedulers
@@ -119,7 +125,7 @@ CONFIG_IOSCHED_CFQ=y
119CONFIG_DEFAULT_CFQ=y 125CONFIG_DEFAULT_CFQ=y
120# CONFIG_DEFAULT_NOOP is not set 126# CONFIG_DEFAULT_NOOP is not set
121CONFIG_DEFAULT_IOSCHED="cfq" 127CONFIG_DEFAULT_IOSCHED="cfq"
122CONFIG_CLASSIC_RCU=y 128CONFIG_FREEZER=y
123 129
124# 130#
125# System Type 131# System Type
@@ -129,11 +135,10 @@ CONFIG_CLASSIC_RCU=y
129# CONFIG_ARCH_REALVIEW is not set 135# CONFIG_ARCH_REALVIEW is not set
130# CONFIG_ARCH_VERSATILE is not set 136# CONFIG_ARCH_VERSATILE is not set
131# CONFIG_ARCH_AT91 is not set 137# CONFIG_ARCH_AT91 is not set
132# CONFIG_ARCH_CLPS7500 is not set
133# CONFIG_ARCH_CLPS711X is not set 138# CONFIG_ARCH_CLPS711X is not set
134# CONFIG_ARCH_CO285 is not set
135# CONFIG_ARCH_EBSA110 is not set 139# CONFIG_ARCH_EBSA110 is not set
136# CONFIG_ARCH_EP93XX is not set 140# CONFIG_ARCH_EP93XX is not set
141# CONFIG_ARCH_GEMINI is not set
137# CONFIG_ARCH_FOOTBRIDGE is not set 142# CONFIG_ARCH_FOOTBRIDGE is not set
138# CONFIG_ARCH_NETX is not set 143# CONFIG_ARCH_NETX is not set
139# CONFIG_ARCH_H720X is not set 144# CONFIG_ARCH_H720X is not set
@@ -145,54 +150,55 @@ CONFIG_CLASSIC_RCU=y
145# CONFIG_ARCH_IXP2000 is not set 150# CONFIG_ARCH_IXP2000 is not set
146# CONFIG_ARCH_IXP4XX is not set 151# CONFIG_ARCH_IXP4XX is not set
147# CONFIG_ARCH_L7200 is not set 152# CONFIG_ARCH_L7200 is not set
153# CONFIG_ARCH_KIRKWOOD is not set
148# CONFIG_ARCH_KS8695 is not set 154# CONFIG_ARCH_KS8695 is not set
149# CONFIG_ARCH_NS9XXX is not set 155# CONFIG_ARCH_NS9XXX is not set
156# CONFIG_ARCH_LOKI is not set
157# CONFIG_ARCH_MV78XX0 is not set
150CONFIG_ARCH_MXC=y 158CONFIG_ARCH_MXC=y
151# CONFIG_ARCH_ORION5X is not set 159# CONFIG_ARCH_ORION5X is not set
152# CONFIG_ARCH_PNX4008 is not set 160# CONFIG_ARCH_PNX4008 is not set
153# CONFIG_ARCH_PXA is not set 161# CONFIG_ARCH_PXA is not set
162# CONFIG_ARCH_MMP is not set
154# CONFIG_ARCH_RPC is not set 163# CONFIG_ARCH_RPC is not set
155# CONFIG_ARCH_SA1100 is not set 164# CONFIG_ARCH_SA1100 is not set
156# CONFIG_ARCH_S3C2410 is not set 165# CONFIG_ARCH_S3C2410 is not set
166# CONFIG_ARCH_S3C64XX is not set
157# CONFIG_ARCH_SHARK is not set 167# CONFIG_ARCH_SHARK is not set
158# CONFIG_ARCH_LH7A40X is not set 168# CONFIG_ARCH_LH7A40X is not set
159# CONFIG_ARCH_DAVINCI is not set 169# CONFIG_ARCH_DAVINCI is not set
160# CONFIG_ARCH_OMAP is not set 170# CONFIG_ARCH_OMAP is not set
161# CONFIG_ARCH_MSM7X00A is not set 171# CONFIG_ARCH_MSM is not set
162 172# CONFIG_ARCH_W90X900 is not set
163# 173CONFIG_ARCH_MX1ADS=y
164# Boot options
165#
166
167#
168# Power management
169#
170 174
171# 175#
172# Freescale MXC Implementations 176# Freescale MXC Implementations
173# 177#
174CONFIG_ARCH_MX3=y 178CONFIG_ARCH_MX1=y
179# CONFIG_ARCH_MX2 is not set
180# CONFIG_ARCH_MX3 is not set
175 181
176# 182#
177# MX3 Options 183# MX1 platforms:
178# 184#
179# CONFIG_MACH_MX31ADS is not set 185CONFIG_MACH_MXLADS=y
180CONFIG_MACH_PCM037=y 186CONFIG_MACH_SCB9328=y
187CONFIG_MXC_IRQ_PRIOR=y
188# CONFIG_MXC_PWM is not set
181 189
182# 190#
183# Processor Type 191# Processor Type
184# 192#
185CONFIG_CPU_32=y 193CONFIG_CPU_32=y
186CONFIG_CPU_V6=y 194CONFIG_CPU_ARM920T=y
187# CONFIG_CPU_32v6K is not set 195CONFIG_CPU_32v4T=y
188CONFIG_CPU_32v6=y 196CONFIG_CPU_ABRT_EV4T=y
189CONFIG_CPU_ABRT_EV6=y
190CONFIG_CPU_PABRT_NOIFAR=y 197CONFIG_CPU_PABRT_NOIFAR=y
191CONFIG_CPU_CACHE_V6=y 198CONFIG_CPU_CACHE_V4WT=y
192CONFIG_CPU_CACHE_VIPT=y 199CONFIG_CPU_CACHE_VIVT=y
193CONFIG_CPU_COPY_V6=y 200CONFIG_CPU_COPY_V4WB=y
194CONFIG_CPU_TLB_V6=y 201CONFIG_CPU_TLB_V4WBI=y
195CONFIG_CPU_HAS_ASID=y
196CONFIG_CPU_CP15=y 202CONFIG_CPU_CP15=y
197CONFIG_CPU_CP15_MMU=y 203CONFIG_CPU_CP15_MMU=y
198 204
@@ -202,7 +208,7 @@ CONFIG_CPU_CP15_MMU=y
202CONFIG_ARM_THUMB=y 208CONFIG_ARM_THUMB=y
203# CONFIG_CPU_ICACHE_DISABLE is not set 209# CONFIG_CPU_ICACHE_DISABLE is not set
204# CONFIG_CPU_DCACHE_DISABLE is not set 210# CONFIG_CPU_DCACHE_DISABLE is not set
205# CONFIG_CPU_BPREDICT_DISABLE is not set 211# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
206# CONFIG_OUTER_CACHE is not set 212# CONFIG_OUTER_CACHE is not set
207 213
208# 214#
@@ -219,25 +225,32 @@ CONFIG_TICK_ONESHOT=y
219CONFIG_NO_HZ=y 225CONFIG_NO_HZ=y
220CONFIG_HIGH_RES_TIMERS=y 226CONFIG_HIGH_RES_TIMERS=y
221CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 227CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
228CONFIG_VMSPLIT_3G=y
229# CONFIG_VMSPLIT_2G is not set
230# CONFIG_VMSPLIT_1G is not set
231CONFIG_PAGE_OFFSET=0xC0000000
222CONFIG_PREEMPT=y 232CONFIG_PREEMPT=y
223CONFIG_HZ=100 233CONFIG_HZ=100
224CONFIG_AEABI=y 234CONFIG_AEABI=y
225# CONFIG_OABI_COMPAT is not set 235CONFIG_OABI_COMPAT=y
226# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 236CONFIG_ARCH_FLATMEM_HAS_HOLES=y
237# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
238# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
239# CONFIG_HIGHMEM is not set
227CONFIG_SELECT_MEMORY_MODEL=y 240CONFIG_SELECT_MEMORY_MODEL=y
228CONFIG_FLATMEM_MANUAL=y 241CONFIG_FLATMEM_MANUAL=y
229# CONFIG_DISCONTIGMEM_MANUAL is not set 242# CONFIG_DISCONTIGMEM_MANUAL is not set
230# CONFIG_SPARSEMEM_MANUAL is not set 243# CONFIG_SPARSEMEM_MANUAL is not set
231CONFIG_FLATMEM=y 244CONFIG_FLATMEM=y
232CONFIG_FLAT_NODE_MEM_MAP=y 245CONFIG_FLAT_NODE_MEM_MAP=y
233# CONFIG_SPARSEMEM_STATIC is not set
234# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
235CONFIG_PAGEFLAGS_EXTENDED=y 246CONFIG_PAGEFLAGS_EXTENDED=y
236CONFIG_SPLIT_PTLOCK_CPUS=4 247CONFIG_SPLIT_PTLOCK_CPUS=4096
237# CONFIG_RESOURCES_64BIT is not set 248# CONFIG_PHYS_ADDR_T_64BIT is not set
238CONFIG_ZONE_DMA_FLAG=1 249CONFIG_ZONE_DMA_FLAG=0
239CONFIG_BOUNCE=y
240CONFIG_VIRT_TO_BUS=y 250CONFIG_VIRT_TO_BUS=y
251CONFIG_UNEVICTABLE_LRU=y
252CONFIG_HAVE_MLOCK=y
253CONFIG_HAVE_MLOCKED_PAGE_BIT=y
241CONFIG_ALIGNMENT_TRAP=y 254CONFIG_ALIGNMENT_TRAP=y
242 255
243# 256#
@@ -250,30 +263,41 @@ CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw ip=off"
250# CONFIG_KEXEC is not set 263# CONFIG_KEXEC is not set
251 264
252# 265#
266# CPU Power Management
267#
268# CONFIG_CPU_IDLE is not set
269
270#
253# Floating point emulation 271# Floating point emulation
254# 272#
255 273
256# 274#
257# At least one emulation must be selected 275# At least one emulation must be selected
258# 276#
259CONFIG_VFP=y 277# CONFIG_FPE_NWFPE is not set
278# CONFIG_FPE_FASTFPE is not set
260 279
261# 280#
262# Userspace binary formats 281# Userspace binary formats
263# 282#
264CONFIG_BINFMT_ELF=y 283CONFIG_BINFMT_ELF=y
284# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
285CONFIG_HAVE_AOUT=y
265# CONFIG_BINFMT_AOUT is not set 286# CONFIG_BINFMT_AOUT is not set
266# CONFIG_BINFMT_MISC is not set 287# CONFIG_BINFMT_MISC is not set
267 288
268# 289#
269# Power management options 290# Power management options
270# 291#
271# CONFIG_PM is not set 292CONFIG_PM=y
293CONFIG_PM_DEBUG=y
294# CONFIG_PM_VERBOSE is not set
295CONFIG_CAN_PM_TRACE=y
296CONFIG_PM_SLEEP=y
297CONFIG_SUSPEND=y
298CONFIG_SUSPEND_FREEZER=y
299# CONFIG_APM_EMULATION is not set
272CONFIG_ARCH_SUSPEND_POSSIBLE=y 300CONFIG_ARCH_SUSPEND_POSSIBLE=y
273
274#
275# Networking
276#
277CONFIG_NET=y 301CONFIG_NET=y
278 302
279# 303#
@@ -317,6 +341,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
317# CONFIG_TIPC is not set 341# CONFIG_TIPC is not set
318# CONFIG_ATM is not set 342# CONFIG_ATM is not set
319# CONFIG_BRIDGE is not set 343# CONFIG_BRIDGE is not set
344# CONFIG_NET_DSA is not set
320# CONFIG_VLAN_8021Q is not set 345# CONFIG_VLAN_8021Q is not set
321# CONFIG_DECNET is not set 346# CONFIG_DECNET is not set
322# CONFIG_LLC2 is not set 347# CONFIG_LLC2 is not set
@@ -326,7 +351,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
326# CONFIG_LAPB is not set 351# CONFIG_LAPB is not set
327# CONFIG_ECONET is not set 352# CONFIG_ECONET is not set
328# CONFIG_WAN_ROUTER is not set 353# CONFIG_WAN_ROUTER is not set
354# CONFIG_PHONET is not set
329# CONFIG_NET_SCHED is not set 355# CONFIG_NET_SCHED is not set
356# CONFIG_DCB is not set
330 357
331# 358#
332# Network testing 359# Network testing
@@ -337,14 +364,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
337# CONFIG_IRDA is not set 364# CONFIG_IRDA is not set
338# CONFIG_BT is not set 365# CONFIG_BT is not set
339# CONFIG_AF_RXRPC is not set 366# CONFIG_AF_RXRPC is not set
340 367# CONFIG_WIRELESS is not set
341# 368# CONFIG_WIMAX is not set
342# Wireless
343#
344# CONFIG_CFG80211 is not set
345# CONFIG_WIRELESS_EXT is not set
346# CONFIG_MAC80211 is not set
347# CONFIG_IEEE80211 is not set
348# CONFIG_RFKILL is not set 369# CONFIG_RFKILL is not set
349# CONFIG_NET_9P is not set 370# CONFIG_NET_9P is not set
350 371
@@ -359,12 +380,15 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
359CONFIG_STANDALONE=y 380CONFIG_STANDALONE=y
360CONFIG_PREVENT_FIRMWARE_BUILD=y 381CONFIG_PREVENT_FIRMWARE_BUILD=y
361CONFIG_FW_LOADER=m 382CONFIG_FW_LOADER=m
383CONFIG_FIRMWARE_IN_KERNEL=y
384CONFIG_EXTRA_FIRMWARE=""
362# CONFIG_SYS_HYPERVISOR is not set 385# CONFIG_SYS_HYPERVISOR is not set
363# CONFIG_CONNECTOR is not set 386# CONFIG_CONNECTOR is not set
364CONFIG_MTD=y 387CONFIG_MTD=y
365# CONFIG_MTD_DEBUG is not set 388# CONFIG_MTD_DEBUG is not set
366# CONFIG_MTD_CONCAT is not set 389# CONFIG_MTD_CONCAT is not set
367CONFIG_MTD_PARTITIONS=y 390CONFIG_MTD_PARTITIONS=y
391# CONFIG_MTD_TESTS is not set
368# CONFIG_MTD_REDBOOT_PARTS is not set 392# CONFIG_MTD_REDBOOT_PARTS is not set
369CONFIG_MTD_CMDLINE_PARTS=y 393CONFIG_MTD_CMDLINE_PARTS=y
370# CONFIG_MTD_AFS_PARTS is not set 394# CONFIG_MTD_AFS_PARTS is not set
@@ -390,9 +414,6 @@ CONFIG_MTD_CFI=y
390# CONFIG_MTD_JEDECPROBE is not set 414# CONFIG_MTD_JEDECPROBE is not set
391CONFIG_MTD_GEN_PROBE=y 415CONFIG_MTD_GEN_PROBE=y
392# CONFIG_MTD_CFI_ADV_OPTIONS is not set 416# CONFIG_MTD_CFI_ADV_OPTIONS is not set
393# CONFIG_MTD_CFI_NOSWAP is not set
394# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
395# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
396CONFIG_MTD_MAP_BANK_WIDTH_1=y 417CONFIG_MTD_MAP_BANK_WIDTH_1=y
397CONFIG_MTD_MAP_BANK_WIDTH_2=y 418CONFIG_MTD_MAP_BANK_WIDTH_2=y
398CONFIG_MTD_MAP_BANK_WIDTH_4=y 419CONFIG_MTD_MAP_BANK_WIDTH_4=y
@@ -406,6 +427,7 @@ CONFIG_MTD_CFI_I2=y
406# CONFIG_MTD_CFI_INTELEXT is not set 427# CONFIG_MTD_CFI_INTELEXT is not set
407# CONFIG_MTD_CFI_AMDSTD is not set 428# CONFIG_MTD_CFI_AMDSTD is not set
408# CONFIG_MTD_CFI_STAA is not set 429# CONFIG_MTD_CFI_STAA is not set
430CONFIG_MTD_CFI_UTIL=y
409# CONFIG_MTD_RAM is not set 431# CONFIG_MTD_RAM is not set
410# CONFIG_MTD_ROM is not set 432# CONFIG_MTD_ROM is not set
411# CONFIG_MTD_ABSENT is not set 433# CONFIG_MTD_ABSENT is not set
@@ -415,9 +437,7 @@ CONFIG_MTD_CFI_I2=y
415# 437#
416# CONFIG_MTD_COMPLEX_MAPPINGS is not set 438# CONFIG_MTD_COMPLEX_MAPPINGS is not set
417CONFIG_MTD_PHYSMAP=y 439CONFIG_MTD_PHYSMAP=y
418CONFIG_MTD_PHYSMAP_START=0x0 440# CONFIG_MTD_PHYSMAP_COMPAT is not set
419CONFIG_MTD_PHYSMAP_LEN=0
420CONFIG_MTD_PHYSMAP_BANKWIDTH=2
421# CONFIG_MTD_ARM_INTEGRATOR is not set 441# CONFIG_MTD_ARM_INTEGRATOR is not set
422# CONFIG_MTD_PLATRAM is not set 442# CONFIG_MTD_PLATRAM is not set
423 443
@@ -439,6 +459,11 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
439# CONFIG_MTD_ONENAND is not set 459# CONFIG_MTD_ONENAND is not set
440 460
441# 461#
462# LPDDR flash memory drivers
463#
464# CONFIG_MTD_LPDDR is not set
465
466#
442# UBI - Unsorted block images 467# UBI - Unsorted block images
443# 468#
444# CONFIG_MTD_UBI is not set 469# CONFIG_MTD_UBI is not set
@@ -458,7 +483,7 @@ CONFIG_HAVE_IDE=y
458# CONFIG_ATA is not set 483# CONFIG_ATA is not set
459# CONFIG_MD is not set 484# CONFIG_MD is not set
460CONFIG_NETDEVICES=y 485CONFIG_NETDEVICES=y
461# CONFIG_NETDEVICES_MULTIQUEUE is not set 486CONFIG_COMPAT_NET_DEV_OPS=y
462# CONFIG_DUMMY is not set 487# CONFIG_DUMMY is not set
463# CONFIG_BONDING is not set 488# CONFIG_BONDING is not set
464# CONFIG_MACVLAN is not set 489# CONFIG_MACVLAN is not set
@@ -488,14 +513,21 @@ CONFIG_SMSC_PHY=y
488CONFIG_NET_ETHERNET=y 513CONFIG_NET_ETHERNET=y
489CONFIG_MII=y 514CONFIG_MII=y
490# CONFIG_AX88796 is not set 515# CONFIG_AX88796 is not set
491CONFIG_SMC91X=y 516# CONFIG_SMC91X is not set
492# CONFIG_DM9000 is not set 517CONFIG_DM9000=y
518CONFIG_DM9000_DEBUGLEVEL=4
519# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
520# CONFIG_ETHOC is not set
493# CONFIG_SMC911X is not set 521# CONFIG_SMC911X is not set
494CONFIG_SMSC911X=y 522# CONFIG_SMSC911X is not set
523# CONFIG_DNET is not set
495# CONFIG_IBM_NEW_EMAC_ZMII is not set 524# CONFIG_IBM_NEW_EMAC_ZMII is not set
496# CONFIG_IBM_NEW_EMAC_RGMII is not set 525# CONFIG_IBM_NEW_EMAC_RGMII is not set
497# CONFIG_IBM_NEW_EMAC_TAH is not set 526# CONFIG_IBM_NEW_EMAC_TAH is not set
498# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 527# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
528# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
529# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
530# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
499# CONFIG_B44 is not set 531# CONFIG_B44 is not set
500# CONFIG_NETDEV_1000 is not set 532# CONFIG_NETDEV_1000 is not set
501# CONFIG_NETDEV_10000 is not set 533# CONFIG_NETDEV_10000 is not set
@@ -505,7 +537,10 @@ CONFIG_SMSC911X=y
505# 537#
506# CONFIG_WLAN_PRE80211 is not set 538# CONFIG_WLAN_PRE80211 is not set
507# CONFIG_WLAN_80211 is not set 539# CONFIG_WLAN_80211 is not set
508# CONFIG_IWLWIFI_LEDS is not set 540
541#
542# Enable WiMAX (Networking options) to see the WiMAX drivers
543#
509# CONFIG_WAN is not set 544# CONFIG_WAN is not set
510# CONFIG_PPP is not set 545# CONFIG_PPP is not set
511# CONFIG_SLIP is not set 546# CONFIG_SLIP is not set
@@ -545,46 +580,124 @@ CONFIG_SERIAL_IMX_CONSOLE=y
545CONFIG_SERIAL_CORE=y 580CONFIG_SERIAL_CORE=y
546CONFIG_SERIAL_CORE_CONSOLE=y 581CONFIG_SERIAL_CORE_CONSOLE=y
547CONFIG_UNIX98_PTYS=y 582CONFIG_UNIX98_PTYS=y
583# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
548# CONFIG_LEGACY_PTYS is not set 584# CONFIG_LEGACY_PTYS is not set
549# CONFIG_IPMI_HANDLER is not set 585# CONFIG_IPMI_HANDLER is not set
550# CONFIG_HW_RANDOM is not set 586# CONFIG_HW_RANDOM is not set
551# CONFIG_NVRAM is not set
552# CONFIG_R3964 is not set 587# CONFIG_R3964 is not set
553# CONFIG_RAW_DRIVER is not set 588# CONFIG_RAW_DRIVER is not set
554# CONFIG_TCG_TPM is not set 589# CONFIG_TCG_TPM is not set
555# CONFIG_I2C is not set 590CONFIG_I2C=y
591CONFIG_I2C_BOARDINFO=y
592CONFIG_I2C_CHARDEV=y
593CONFIG_I2C_HELPER_AUTO=y
594
595#
596# I2C Hardware Bus support
597#
598
599#
600# I2C system bus drivers (mostly embedded / system-on-chip)
601#
602# CONFIG_I2C_GPIO is not set
603CONFIG_I2C_IMX=y
604# CONFIG_I2C_OCORES is not set
605# CONFIG_I2C_SIMTEC is not set
606
607#
608# External I2C/SMBus adapter drivers
609#
610# CONFIG_I2C_PARPORT_LIGHT is not set
611# CONFIG_I2C_TAOS_EVM is not set
612
613#
614# Other I2C/SMBus bus drivers
615#
616# CONFIG_I2C_PCA_PLATFORM is not set
617# CONFIG_I2C_STUB is not set
618
619#
620# Miscellaneous I2C Chip support
621#
622# CONFIG_DS1682 is not set
623# CONFIG_SENSORS_PCF8574 is not set
624# CONFIG_PCF8575 is not set
625# CONFIG_SENSORS_PCA9539 is not set
626# CONFIG_SENSORS_MAX6875 is not set
627# CONFIG_SENSORS_TSL2550 is not set
628# CONFIG_I2C_DEBUG_CORE is not set
629# CONFIG_I2C_DEBUG_ALGO is not set
630# CONFIG_I2C_DEBUG_BUS is not set
631# CONFIG_I2C_DEBUG_CHIP is not set
556# CONFIG_SPI is not set 632# CONFIG_SPI is not set
557CONFIG_HAVE_GPIO_LIB=y 633CONFIG_ARCH_REQUIRE_GPIOLIB=y
634CONFIG_GPIOLIB=y
635# CONFIG_GPIO_SYSFS is not set
558 636
559# 637#
560# GPIO Support 638# Memory mapped GPIO expanders:
561# 639#
562 640
563# 641#
564# I2C GPIO expanders: 642# I2C GPIO expanders:
565# 643#
644# CONFIG_GPIO_MAX732X is not set
645# CONFIG_GPIO_PCA953X is not set
646# CONFIG_GPIO_PCF857X is not set
647
648#
649# PCI GPIO expanders:
650#
566 651
567# 652#
568# SPI GPIO expanders: 653# SPI GPIO expanders:
569# 654#
570# CONFIG_W1 is not set 655CONFIG_W1=y
656
657#
658# 1-wire Bus Masters
659#
660# CONFIG_W1_MASTER_DS2482 is not set
661CONFIG_W1_MASTER_MXC=y
662# CONFIG_W1_MASTER_GPIO is not set
663
664#
665# 1-wire Slaves
666#
667CONFIG_W1_SLAVE_THERM=y
668# CONFIG_W1_SLAVE_SMEM is not set
669# CONFIG_W1_SLAVE_DS2431 is not set
670# CONFIG_W1_SLAVE_DS2433 is not set
671# CONFIG_W1_SLAVE_DS2760 is not set
672# CONFIG_W1_SLAVE_BQ27000 is not set
571# CONFIG_POWER_SUPPLY is not set 673# CONFIG_POWER_SUPPLY is not set
572# CONFIG_HWMON is not set 674# CONFIG_HWMON is not set
675# CONFIG_THERMAL is not set
676# CONFIG_THERMAL_HWMON is not set
573# CONFIG_WATCHDOG is not set 677# CONFIG_WATCHDOG is not set
678CONFIG_SSB_POSSIBLE=y
574 679
575# 680#
576# Sonics Silicon Backplane 681# Sonics Silicon Backplane
577# 682#
578CONFIG_SSB_POSSIBLE=y
579# CONFIG_SSB is not set 683# CONFIG_SSB is not set
580 684
581# 685#
582# Multifunction device drivers 686# Multifunction device drivers
583# 687#
688# CONFIG_MFD_CORE is not set
584# CONFIG_MFD_SM501 is not set 689# CONFIG_MFD_SM501 is not set
585# CONFIG_MFD_ASIC3 is not set 690# CONFIG_MFD_ASIC3 is not set
586# CONFIG_HTC_EGPIO is not set 691# CONFIG_HTC_EGPIO is not set
587# CONFIG_HTC_PASIC3 is not set 692# CONFIG_HTC_PASIC3 is not set
693# CONFIG_TPS65010 is not set
694# CONFIG_TWL4030_CORE is not set
695# CONFIG_MFD_TMIO is not set
696# CONFIG_MFD_TC6393XB is not set
697# CONFIG_PMIC_DA903X is not set
698# CONFIG_MFD_WM8400 is not set
699# CONFIG_MFD_WM8350_I2C is not set
700# CONFIG_MFD_PCF50633 is not set
588 701
589# 702#
590# Multimedia devices 703# Multimedia devices
@@ -607,36 +720,131 @@ CONFIG_SSB_POSSIBLE=y
607# 720#
608# CONFIG_VGASTATE is not set 721# CONFIG_VGASTATE is not set
609# CONFIG_VIDEO_OUTPUT_CONTROL is not set 722# CONFIG_VIDEO_OUTPUT_CONTROL is not set
610# CONFIG_FB is not set 723CONFIG_FB=y
724# CONFIG_FIRMWARE_EDID is not set
725# CONFIG_FB_DDC is not set
726# CONFIG_FB_BOOT_VESA_SUPPORT is not set
727# CONFIG_FB_CFB_FILLRECT is not set
728# CONFIG_FB_CFB_COPYAREA is not set
729# CONFIG_FB_CFB_IMAGEBLIT is not set
730# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
731# CONFIG_FB_SYS_FILLRECT is not set
732# CONFIG_FB_SYS_COPYAREA is not set
733# CONFIG_FB_SYS_IMAGEBLIT is not set
734# CONFIG_FB_FOREIGN_ENDIAN is not set
735# CONFIG_FB_SYS_FOPS is not set
736# CONFIG_FB_SVGALIB is not set
737# CONFIG_FB_MACMODES is not set
738# CONFIG_FB_BACKLIGHT is not set
739# CONFIG_FB_MODE_HELPERS is not set
740# CONFIG_FB_TILEBLITTING is not set
741
742#
743# Frame buffer hardware drivers
744#
745# CONFIG_FB_S1D13XXX is not set
746# CONFIG_FB_VIRTUAL is not set
747# CONFIG_FB_METRONOME is not set
748# CONFIG_FB_MB862XX is not set
749# CONFIG_FB_BROADSHEET is not set
611# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 750# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
612 751
613# 752#
614# Display device support 753# Display device support
615# 754#
616# CONFIG_DISPLAY_SUPPORT is not set 755# CONFIG_DISPLAY_SUPPORT is not set
756# CONFIG_LOGO is not set
757# CONFIG_SOUND is not set
758CONFIG_USB_SUPPORT=y
759CONFIG_USB_ARCH_HAS_HCD=y
760# CONFIG_USB_ARCH_HAS_OHCI is not set
761# CONFIG_USB_ARCH_HAS_EHCI is not set
762# CONFIG_USB is not set
763# CONFIG_USB_OTG_WHITELIST is not set
764# CONFIG_USB_OTG_BLACKLIST_HUB is not set
765# CONFIG_USB_GADGET_MUSB_HDRC is not set
617 766
618# 767#
619# Sound 768# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
769#
770CONFIG_USB_GADGET=y
771# CONFIG_USB_GADGET_DEBUG_FILES is not set
772CONFIG_USB_GADGET_VBUS_DRAW=2
773CONFIG_USB_GADGET_SELECTED=y
774# CONFIG_USB_GADGET_AT91 is not set
775# CONFIG_USB_GADGET_ATMEL_USBA is not set
776# CONFIG_USB_GADGET_FSL_USB2 is not set
777# CONFIG_USB_GADGET_LH7A40X is not set
778# CONFIG_USB_GADGET_OMAP is not set
779# CONFIG_USB_GADGET_PXA25X is not set
780# CONFIG_USB_GADGET_PXA27X is not set
781# CONFIG_USB_GADGET_S3C2410 is not set
782CONFIG_USB_GADGET_IMX=y
783CONFIG_USB_IMX=y
784# CONFIG_USB_GADGET_M66592 is not set
785# CONFIG_USB_GADGET_AMD5536UDC is not set
786# CONFIG_USB_GADGET_FSL_QE is not set
787# CONFIG_USB_GADGET_CI13XXX is not set
788# CONFIG_USB_GADGET_NET2280 is not set
789# CONFIG_USB_GADGET_GOKU is not set
790# CONFIG_USB_GADGET_DUMMY_HCD is not set
791# CONFIG_USB_GADGET_DUALSPEED is not set
792# CONFIG_USB_ZERO is not set
793CONFIG_USB_ETH=y
794CONFIG_USB_ETH_RNDIS=y
795# CONFIG_USB_GADGETFS is not set
796# CONFIG_USB_FILE_STORAGE is not set
797# CONFIG_USB_G_SERIAL is not set
798# CONFIG_USB_MIDI_GADGET is not set
799# CONFIG_USB_G_PRINTER is not set
800# CONFIG_USB_CDC_COMPOSITE is not set
801
620# 802#
621# CONFIG_SOUND is not set 803# OTG and related infrastructure
622# CONFIG_USB_SUPPORT is not set 804#
623# CONFIG_MMC is not set 805# CONFIG_USB_GPIO_VBUS is not set
806# CONFIG_NOP_USB_XCEIV is not set
807CONFIG_MMC=y
808# CONFIG_MMC_DEBUG is not set
809# CONFIG_MMC_UNSAFE_RESUME is not set
810
811#
812# MMC/SD/SDIO Card Drivers
813#
814CONFIG_MMC_BLOCK=y
815CONFIG_MMC_BLOCK_BOUNCE=y
816# CONFIG_SDIO_UART is not set
817# CONFIG_MMC_TEST is not set
818
819#
820# MMC/SD/SDIO Host Controller Drivers
821#
822# CONFIG_MMC_SDHCI is not set
823CONFIG_MMC_MXC=y
824# CONFIG_MEMSTICK is not set
825# CONFIG_ACCESSIBILITY is not set
624# CONFIG_NEW_LEDS is not set 826# CONFIG_NEW_LEDS is not set
625CONFIG_RTC_LIB=y 827CONFIG_RTC_LIB=y
626# CONFIG_RTC_CLASS is not set 828# CONFIG_RTC_CLASS is not set
829# CONFIG_DMADEVICES is not set
830# CONFIG_AUXDISPLAY is not set
831# CONFIG_REGULATOR is not set
627# CONFIG_UIO is not set 832# CONFIG_UIO is not set
833# CONFIG_STAGING is not set
628 834
629# 835#
630# File systems 836# File systems
631# 837#
632# CONFIG_EXT2_FS is not set 838# CONFIG_EXT2_FS is not set
633# CONFIG_EXT3_FS is not set 839# CONFIG_EXT3_FS is not set
634# CONFIG_EXT4DEV_FS is not set 840# CONFIG_EXT4_FS is not set
635# CONFIG_REISERFS_FS is not set 841# CONFIG_REISERFS_FS is not set
636# CONFIG_JFS_FS is not set 842# CONFIG_JFS_FS is not set
637# CONFIG_FS_POSIX_ACL is not set 843# CONFIG_FS_POSIX_ACL is not set
844CONFIG_FILE_LOCKING=y
638# CONFIG_XFS_FS is not set 845# CONFIG_XFS_FS is not set
639# CONFIG_OCFS2_FS is not set 846# CONFIG_OCFS2_FS is not set
847# CONFIG_BTRFS_FS is not set
640# CONFIG_DNOTIFY is not set 848# CONFIG_DNOTIFY is not set
641CONFIG_INOTIFY=y 849CONFIG_INOTIFY=y
642CONFIG_INOTIFY_USER=y 850CONFIG_INOTIFY_USER=y
@@ -646,6 +854,11 @@ CONFIG_INOTIFY_USER=y
646# CONFIG_FUSE_FS is not set 854# CONFIG_FUSE_FS is not set
647 855
648# 856#
857# Caches
858#
859# CONFIG_FSCACHE is not set
860
861#
649# CD-ROM/DVD Filesystems 862# CD-ROM/DVD Filesystems
650# 863#
651# CONFIG_ISO9660_FS is not set 864# CONFIG_ISO9660_FS is not set
@@ -663,15 +876,13 @@ CONFIG_INOTIFY_USER=y
663# 876#
664CONFIG_PROC_FS=y 877CONFIG_PROC_FS=y
665CONFIG_PROC_SYSCTL=y 878CONFIG_PROC_SYSCTL=y
879CONFIG_PROC_PAGE_MONITOR=y
666CONFIG_SYSFS=y 880CONFIG_SYSFS=y
667CONFIG_TMPFS=y 881CONFIG_TMPFS=y
668# CONFIG_TMPFS_POSIX_ACL is not set 882# CONFIG_TMPFS_POSIX_ACL is not set
669# CONFIG_HUGETLB_PAGE is not set 883# CONFIG_HUGETLB_PAGE is not set
670# CONFIG_CONFIGFS_FS is not set 884# CONFIG_CONFIGFS_FS is not set
671 885CONFIG_MISC_FILESYSTEMS=y
672#
673# Miscellaneous filesystems
674#
675# CONFIG_ADFS_FS is not set 886# CONFIG_ADFS_FS is not set
676# CONFIG_AFFS_FS is not set 887# CONFIG_AFFS_FS is not set
677# CONFIG_HFS_FS is not set 888# CONFIG_HFS_FS is not set
@@ -691,24 +902,29 @@ CONFIG_JFFS2_ZLIB=y
691CONFIG_JFFS2_RTIME=y 902CONFIG_JFFS2_RTIME=y
692# CONFIG_JFFS2_RUBIN is not set 903# CONFIG_JFFS2_RUBIN is not set
693# CONFIG_CRAMFS is not set 904# CONFIG_CRAMFS is not set
905# CONFIG_SQUASHFS is not set
694# CONFIG_VXFS_FS is not set 906# CONFIG_VXFS_FS is not set
695# CONFIG_MINIX_FS is not set 907# CONFIG_MINIX_FS is not set
908# CONFIG_OMFS_FS is not set
696# CONFIG_HPFS_FS is not set 909# CONFIG_HPFS_FS is not set
697# CONFIG_QNX4FS_FS is not set 910# CONFIG_QNX4FS_FS is not set
698# CONFIG_ROMFS_FS is not set 911# CONFIG_ROMFS_FS is not set
699# CONFIG_SYSV_FS is not set 912# CONFIG_SYSV_FS is not set
700# CONFIG_UFS_FS is not set 913# CONFIG_UFS_FS is not set
914# CONFIG_NILFS2_FS is not set
701CONFIG_NETWORK_FILESYSTEMS=y 915CONFIG_NETWORK_FILESYSTEMS=y
702CONFIG_NFS_FS=y 916CONFIG_NFS_FS=y
703# CONFIG_NFS_V3 is not set 917CONFIG_NFS_V3=y
704# CONFIG_NFS_V4 is not set 918# CONFIG_NFS_V3_ACL is not set
705# CONFIG_NFSD is not set 919CONFIG_NFS_V4=y
706CONFIG_ROOT_NFS=y 920CONFIG_ROOT_NFS=y
921# CONFIG_NFSD is not set
707CONFIG_LOCKD=y 922CONFIG_LOCKD=y
923CONFIG_LOCKD_V4=y
708CONFIG_NFS_COMMON=y 924CONFIG_NFS_COMMON=y
709CONFIG_SUNRPC=y 925CONFIG_SUNRPC=y
710# CONFIG_SUNRPC_BIND34 is not set 926CONFIG_SUNRPC_GSS=y
711# CONFIG_RPCSEC_GSS_KRB5 is not set 927CONFIG_RPCSEC_GSS_KRB5=y
712# CONFIG_RPCSEC_GSS_SPKM3 is not set 928# CONFIG_RPCSEC_GSS_SPKM3 is not set
713# CONFIG_SMB_FS is not set 929# CONFIG_SMB_FS is not set
714# CONFIG_CIFS is not set 930# CONFIG_CIFS is not set
@@ -737,8 +953,31 @@ CONFIG_FRAME_WARN=1024
737# CONFIG_HEADERS_CHECK is not set 953# CONFIG_HEADERS_CHECK is not set
738# CONFIG_DEBUG_KERNEL is not set 954# CONFIG_DEBUG_KERNEL is not set
739# CONFIG_DEBUG_BUGVERBOSE is not set 955# CONFIG_DEBUG_BUGVERBOSE is not set
740CONFIG_FRAME_POINTER=y 956# CONFIG_DEBUG_MEMORY_INIT is not set
957# CONFIG_RCU_CPU_STALL_DETECTOR is not set
958# CONFIG_LATENCYTOP is not set
959CONFIG_SYSCTL_SYSCALL_CHECK=y
960CONFIG_HAVE_FUNCTION_TRACER=y
961CONFIG_TRACING_SUPPORT=y
962
963#
964# Tracers
965#
966# CONFIG_FUNCTION_TRACER is not set
967# CONFIG_IRQSOFF_TRACER is not set
968# CONFIG_PREEMPT_TRACER is not set
969# CONFIG_SCHED_TRACER is not set
970# CONFIG_CONTEXT_SWITCH_TRACER is not set
971# CONFIG_EVENT_TRACER is not set
972# CONFIG_BOOT_TRACER is not set
973# CONFIG_TRACE_BRANCH_PROFILING is not set
974# CONFIG_STACK_TRACER is not set
975# CONFIG_KMEMTRACE is not set
976# CONFIG_WORKQUEUE_TRACER is not set
977# CONFIG_BLK_DEV_IO_TRACE is not set
741# CONFIG_SAMPLES is not set 978# CONFIG_SAMPLES is not set
979CONFIG_HAVE_ARCH_KGDB=y
980CONFIG_ARM_UNWIND=y
742# CONFIG_DEBUG_USER is not set 981# CONFIG_DEBUG_USER is not set
743 982
744# 983#
@@ -746,24 +985,121 @@ CONFIG_FRAME_POINTER=y
746# 985#
747# CONFIG_KEYS is not set 986# CONFIG_KEYS is not set
748# CONFIG_SECURITY is not set 987# CONFIG_SECURITY is not set
988# CONFIG_SECURITYFS is not set
749# CONFIG_SECURITY_FILE_CAPABILITIES is not set 989# CONFIG_SECURITY_FILE_CAPABILITIES is not set
750# CONFIG_CRYPTO is not set 990CONFIG_CRYPTO=y
991
992#
993# Crypto core or helper
994#
995# CONFIG_CRYPTO_FIPS is not set
996CONFIG_CRYPTO_ALGAPI=y
997CONFIG_CRYPTO_ALGAPI2=y
998CONFIG_CRYPTO_AEAD2=y
999CONFIG_CRYPTO_BLKCIPHER=y
1000CONFIG_CRYPTO_BLKCIPHER2=y
1001CONFIG_CRYPTO_HASH=y
1002CONFIG_CRYPTO_HASH2=y
1003CONFIG_CRYPTO_RNG2=y
1004CONFIG_CRYPTO_PCOMP=y
1005CONFIG_CRYPTO_MANAGER=y
1006CONFIG_CRYPTO_MANAGER2=y
1007# CONFIG_CRYPTO_GF128MUL is not set
1008# CONFIG_CRYPTO_NULL is not set
1009CONFIG_CRYPTO_WORKQUEUE=y
1010# CONFIG_CRYPTO_CRYPTD is not set
1011# CONFIG_CRYPTO_AUTHENC is not set
1012# CONFIG_CRYPTO_TEST is not set
1013
1014#
1015# Authenticated Encryption with Associated Data
1016#
1017# CONFIG_CRYPTO_CCM is not set
1018# CONFIG_CRYPTO_GCM is not set
1019# CONFIG_CRYPTO_SEQIV is not set
1020
1021#
1022# Block modes
1023#
1024CONFIG_CRYPTO_CBC=y
1025# CONFIG_CRYPTO_CTR is not set
1026# CONFIG_CRYPTO_CTS is not set
1027# CONFIG_CRYPTO_ECB is not set
1028# CONFIG_CRYPTO_LRW is not set
1029# CONFIG_CRYPTO_PCBC is not set
1030# CONFIG_CRYPTO_XTS is not set
1031
1032#
1033# Hash modes
1034#
1035# CONFIG_CRYPTO_HMAC is not set
1036# CONFIG_CRYPTO_XCBC is not set
1037
1038#
1039# Digest
1040#
1041# CONFIG_CRYPTO_CRC32C is not set
1042# CONFIG_CRYPTO_MD4 is not set
1043CONFIG_CRYPTO_MD5=y
1044# CONFIG_CRYPTO_MICHAEL_MIC is not set
1045# CONFIG_CRYPTO_RMD128 is not set
1046# CONFIG_CRYPTO_RMD160 is not set
1047# CONFIG_CRYPTO_RMD256 is not set
1048# CONFIG_CRYPTO_RMD320 is not set
1049# CONFIG_CRYPTO_SHA1 is not set
1050# CONFIG_CRYPTO_SHA256 is not set
1051# CONFIG_CRYPTO_SHA512 is not set
1052# CONFIG_CRYPTO_TGR192 is not set
1053# CONFIG_CRYPTO_WP512 is not set
1054
1055#
1056# Ciphers
1057#
1058# CONFIG_CRYPTO_AES is not set
1059# CONFIG_CRYPTO_ANUBIS is not set
1060# CONFIG_CRYPTO_ARC4 is not set
1061# CONFIG_CRYPTO_BLOWFISH is not set
1062# CONFIG_CRYPTO_CAMELLIA is not set
1063# CONFIG_CRYPTO_CAST5 is not set
1064# CONFIG_CRYPTO_CAST6 is not set
1065CONFIG_CRYPTO_DES=y
1066# CONFIG_CRYPTO_FCRYPT is not set
1067# CONFIG_CRYPTO_KHAZAD is not set
1068# CONFIG_CRYPTO_SALSA20 is not set
1069# CONFIG_CRYPTO_SEED is not set
1070# CONFIG_CRYPTO_SERPENT is not set
1071# CONFIG_CRYPTO_TEA is not set
1072# CONFIG_CRYPTO_TWOFISH is not set
1073
1074#
1075# Compression
1076#
1077# CONFIG_CRYPTO_DEFLATE is not set
1078# CONFIG_CRYPTO_ZLIB is not set
1079# CONFIG_CRYPTO_LZO is not set
1080
1081#
1082# Random Number Generation
1083#
1084# CONFIG_CRYPTO_ANSI_CPRNG is not set
1085CONFIG_CRYPTO_HW=y
1086# CONFIG_BINARY_PRINTF is not set
751 1087
752# 1088#
753# Library routines 1089# Library routines
754# 1090#
755CONFIG_BITREVERSE=y 1091CONFIG_BITREVERSE=y
756# CONFIG_GENERIC_FIND_FIRST_BIT is not set 1092CONFIG_GENERIC_FIND_LAST_BIT=y
757# CONFIG_GENERIC_FIND_NEXT_BIT is not set
758# CONFIG_CRC_CCITT is not set 1093# CONFIG_CRC_CCITT is not set
759# CONFIG_CRC16 is not set 1094# CONFIG_CRC16 is not set
1095# CONFIG_CRC_T10DIF is not set
760# CONFIG_CRC_ITU_T is not set 1096# CONFIG_CRC_ITU_T is not set
761CONFIG_CRC32=y 1097CONFIG_CRC32=y
762# CONFIG_CRC7 is not set 1098# CONFIG_CRC7 is not set
763# CONFIG_LIBCRC32C is not set 1099# CONFIG_LIBCRC32C is not set
764CONFIG_ZLIB_INFLATE=y 1100CONFIG_ZLIB_INFLATE=y
765CONFIG_ZLIB_DEFLATE=y 1101CONFIG_ZLIB_DEFLATE=y
766CONFIG_PLIST=y
767CONFIG_HAS_IOMEM=y 1102CONFIG_HAS_IOMEM=y
768CONFIG_HAS_IOPORT=y 1103CONFIG_HAS_IOPORT=y
769CONFIG_HAS_DMA=y 1104CONFIG_HAS_DMA=y
1105CONFIG_NLATTR=y
diff --git a/arch/arm/configs/pcm038_defconfig b/arch/arm/configs/mx27_defconfig
index 41429a00f58c..083516cd0d7f 100644
--- a/arch/arm/configs/pcm038_defconfig
+++ b/arch/arm/configs/mx27_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.26-rc6 3# Linux kernel version: 2.6.30-rc1
4# Fri Jun 20 16:38:36 2008 4# Wed Apr 8 10:18:06 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -12,6 +12,7 @@ CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set 12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y 14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 16CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y 17CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y 18CONFIG_HARDIRQS_SW_RESEND=y
@@ -21,9 +22,8 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y 23CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 24CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_ZONE_DMA=y
26CONFIG_ARCH_MTD_XIP=y 25CONFIG_ARCH_MTD_XIP=y
26CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
27CONFIG_VECTORS_BASE=0xffff0000 27CONFIG_VECTORS_BASE=0xffff0000
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
29 29
@@ -40,47 +40,58 @@ CONFIG_LOCALVERSION_AUTO=y
40CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
41CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
42CONFIG_POSIX_MQUEUE=y 42CONFIG_POSIX_MQUEUE=y
43CONFIG_POSIX_MQUEUE_SYSCTL=y
43# CONFIG_BSD_PROCESS_ACCT is not set 44# CONFIG_BSD_PROCESS_ACCT is not set
44# CONFIG_TASKSTATS is not set 45# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set 46# CONFIG_AUDIT is not set
47
48#
49# RCU Subsystem
50#
51CONFIG_CLASSIC_RCU=y
52# CONFIG_TREE_RCU is not set
53# CONFIG_PREEMPT_RCU is not set
54# CONFIG_TREE_RCU_TRACE is not set
55# CONFIG_PREEMPT_RCU_TRACE is not set
46# CONFIG_IKCONFIG is not set 56# CONFIG_IKCONFIG is not set
47CONFIG_LOG_BUF_SHIFT=14 57CONFIG_LOG_BUF_SHIFT=14
48# CONFIG_CGROUPS is not set
49CONFIG_GROUP_SCHED=y 58CONFIG_GROUP_SCHED=y
50CONFIG_FAIR_GROUP_SCHED=y 59CONFIG_FAIR_GROUP_SCHED=y
51CONFIG_RT_GROUP_SCHED=y 60CONFIG_RT_GROUP_SCHED=y
52CONFIG_USER_SCHED=y 61CONFIG_USER_SCHED=y
53# CONFIG_CGROUP_SCHED is not set 62# CONFIG_CGROUP_SCHED is not set
63# CONFIG_CGROUPS is not set
54# CONFIG_SYSFS_DEPRECATED_V2 is not set 64# CONFIG_SYSFS_DEPRECATED_V2 is not set
55# CONFIG_RELAY is not set 65# CONFIG_RELAY is not set
56# CONFIG_NAMESPACES is not set 66# CONFIG_NAMESPACES is not set
57# CONFIG_BLK_DEV_INITRD is not set 67# CONFIG_BLK_DEV_INITRD is not set
58# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 68# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
59CONFIG_SYSCTL=y 69CONFIG_SYSCTL=y
70CONFIG_ANON_INODES=y
60CONFIG_EMBEDDED=y 71CONFIG_EMBEDDED=y
61CONFIG_UID16=y 72CONFIG_UID16=y
62CONFIG_SYSCTL_SYSCALL=y 73CONFIG_SYSCTL_SYSCALL=y
63CONFIG_SYSCTL_SYSCALL_CHECK=y
64CONFIG_KALLSYMS=y 74CONFIG_KALLSYMS=y
65CONFIG_KALLSYMS_EXTRA_PASS=y 75CONFIG_KALLSYMS_EXTRA_PASS=y
66CONFIG_HOTPLUG=y 76CONFIG_HOTPLUG=y
67CONFIG_PRINTK=y 77CONFIG_PRINTK=y
68CONFIG_BUG=y 78CONFIG_BUG=y
69CONFIG_ELF_CORE=y 79CONFIG_ELF_CORE=y
70# CONFIG_COMPAT_BRK is not set
71CONFIG_BASE_FULL=y 80CONFIG_BASE_FULL=y
72CONFIG_FUTEX=y 81CONFIG_FUTEX=y
73CONFIG_ANON_INODES=y
74CONFIG_EPOLL=y 82CONFIG_EPOLL=y
75CONFIG_SIGNALFD=y 83CONFIG_SIGNALFD=y
76CONFIG_TIMERFD=y 84CONFIG_TIMERFD=y
77CONFIG_EVENTFD=y 85CONFIG_EVENTFD=y
78CONFIG_SHMEM=y 86CONFIG_SHMEM=y
87CONFIG_AIO=y
79CONFIG_VM_EVENT_COUNTERS=y 88CONFIG_VM_EVENT_COUNTERS=y
89# CONFIG_COMPAT_BRK is not set
80CONFIG_SLAB=y 90CONFIG_SLAB=y
81# CONFIG_SLUB is not set 91# CONFIG_SLUB is not set
82# CONFIG_SLOB is not set 92# CONFIG_SLOB is not set
83CONFIG_PROFILING=y 93CONFIG_PROFILING=y
94CONFIG_TRACEPOINTS=y
84CONFIG_MARKERS=y 95CONFIG_MARKERS=y
85CONFIG_OPROFILE=y 96CONFIG_OPROFILE=y
86CONFIG_HAVE_OPROFILE=y 97CONFIG_HAVE_OPROFILE=y
@@ -88,11 +99,10 @@ CONFIG_KPROBES=y
88CONFIG_KRETPROBES=y 99CONFIG_KRETPROBES=y
89CONFIG_HAVE_KPROBES=y 100CONFIG_HAVE_KPROBES=y
90CONFIG_HAVE_KRETPROBES=y 101CONFIG_HAVE_KRETPROBES=y
91# CONFIG_HAVE_DMA_ATTRS is not set 102# CONFIG_SLOW_WORK is not set
92# CONFIG_PROC_PAGE_MONITOR is not set 103CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 104CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 105CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set
96CONFIG_BASE_SMALL=0 106CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 107CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set 108# CONFIG_MODULE_FORCE_LOAD is not set
@@ -100,12 +110,10 @@ CONFIG_MODULE_UNLOAD=y
100# CONFIG_MODULE_FORCE_UNLOAD is not set 110# CONFIG_MODULE_FORCE_UNLOAD is not set
101# CONFIG_MODVERSIONS is not set 111# CONFIG_MODVERSIONS is not set
102# CONFIG_MODULE_SRCVERSION_ALL is not set 112# CONFIG_MODULE_SRCVERSION_ALL is not set
103# CONFIG_KMOD is not set
104CONFIG_BLOCK=y 113CONFIG_BLOCK=y
105# CONFIG_LBD is not set 114# CONFIG_LBD is not set
106# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 115# CONFIG_BLK_DEV_BSG is not set
116# CONFIG_BLK_DEV_INTEGRITY is not set
109 117
110# 118#
111# IO Schedulers 119# IO Schedulers
@@ -119,7 +127,7 @@ CONFIG_IOSCHED_NOOP=y
119# CONFIG_DEFAULT_CFQ is not set 127# CONFIG_DEFAULT_CFQ is not set
120CONFIG_DEFAULT_NOOP=y 128CONFIG_DEFAULT_NOOP=y
121CONFIG_DEFAULT_IOSCHED="noop" 129CONFIG_DEFAULT_IOSCHED="noop"
122CONFIG_CLASSIC_RCU=y 130CONFIG_FREEZER=y
123 131
124# 132#
125# System Type 133# System Type
@@ -129,11 +137,10 @@ CONFIG_CLASSIC_RCU=y
129# CONFIG_ARCH_REALVIEW is not set 137# CONFIG_ARCH_REALVIEW is not set
130# CONFIG_ARCH_VERSATILE is not set 138# CONFIG_ARCH_VERSATILE is not set
131# CONFIG_ARCH_AT91 is not set 139# CONFIG_ARCH_AT91 is not set
132# CONFIG_ARCH_CLPS7500 is not set
133# CONFIG_ARCH_CLPS711X is not set 140# CONFIG_ARCH_CLPS711X is not set
134# CONFIG_ARCH_CO285 is not set
135# CONFIG_ARCH_EBSA110 is not set 141# CONFIG_ARCH_EBSA110 is not set
136# CONFIG_ARCH_EP93XX is not set 142# CONFIG_ARCH_EP93XX is not set
143# CONFIG_ARCH_GEMINI is not set
137# CONFIG_ARCH_FOOTBRIDGE is not set 144# CONFIG_ARCH_FOOTBRIDGE is not set
138# CONFIG_ARCH_NETX is not set 145# CONFIG_ARCH_NETX is not set
139# CONFIG_ARCH_H720X is not set 146# CONFIG_ARCH_H720X is not set
@@ -145,46 +152,44 @@ CONFIG_CLASSIC_RCU=y
145# CONFIG_ARCH_IXP2000 is not set 152# CONFIG_ARCH_IXP2000 is not set
146# CONFIG_ARCH_IXP4XX is not set 153# CONFIG_ARCH_IXP4XX is not set
147# CONFIG_ARCH_L7200 is not set 154# CONFIG_ARCH_L7200 is not set
155# CONFIG_ARCH_KIRKWOOD is not set
148# CONFIG_ARCH_KS8695 is not set 156# CONFIG_ARCH_KS8695 is not set
149# CONFIG_ARCH_NS9XXX is not set 157# CONFIG_ARCH_NS9XXX is not set
158# CONFIG_ARCH_LOKI is not set
159# CONFIG_ARCH_MV78XX0 is not set
150CONFIG_ARCH_MXC=y 160CONFIG_ARCH_MXC=y
151# CONFIG_ARCH_ORION5X is not set 161# CONFIG_ARCH_ORION5X is not set
152# CONFIG_ARCH_PNX4008 is not set 162# CONFIG_ARCH_PNX4008 is not set
153# CONFIG_ARCH_PXA is not set 163# CONFIG_ARCH_PXA is not set
164# CONFIG_ARCH_MMP is not set
154# CONFIG_ARCH_RPC is not set 165# CONFIG_ARCH_RPC is not set
155# CONFIG_ARCH_SA1100 is not set 166# CONFIG_ARCH_SA1100 is not set
156# CONFIG_ARCH_S3C2410 is not set 167# CONFIG_ARCH_S3C2410 is not set
168# CONFIG_ARCH_S3C64XX is not set
157# CONFIG_ARCH_SHARK is not set 169# CONFIG_ARCH_SHARK is not set
158# CONFIG_ARCH_LH7A40X is not set 170# CONFIG_ARCH_LH7A40X is not set
159# CONFIG_ARCH_DAVINCI is not set 171# CONFIG_ARCH_DAVINCI is not set
160# CONFIG_ARCH_OMAP is not set 172# CONFIG_ARCH_OMAP is not set
161# CONFIG_ARCH_MSM7X00A is not set 173# CONFIG_ARCH_MSM is not set
162 174# CONFIG_ARCH_W90X900 is not set
163#
164# Boot options
165#
166
167#
168# Power management
169#
170 175
171# 176#
172# Freescale MXC Implementations 177# Freescale MXC Implementations
173# 178#
179# CONFIG_ARCH_MX1 is not set
174CONFIG_ARCH_MX2=y 180CONFIG_ARCH_MX2=y
175# CONFIG_ARCH_MX3 is not set 181# CONFIG_ARCH_MX3 is not set
176 182# CONFIG_MACH_MX21 is not set
177#
178# MX2 family CPU support
179#
180CONFIG_MACH_MX27=y 183CONFIG_MACH_MX27=y
181 184
182# 185#
183# MX2 Platforms 186# MX2 platforms:
184# 187#
185# CONFIG_MACH_MX27ADS is not set 188CONFIG_MACH_MX27ADS=y
186CONFIG_MACH_PCM038=y 189CONFIG_MACH_PCM038=y
187CONFIG_MACH_PCM970_BASEBOARD=y 190CONFIG_MACH_PCM970_BASEBOARD=y
191CONFIG_MXC_IRQ_PRIOR=y
192CONFIG_MXC_PWM=y
188 193
189# 194#
190# Processor Type 195# Processor Type
@@ -209,6 +214,7 @@ CONFIG_ARM_THUMB=y
209# CONFIG_CPU_DCACHE_WRITETHROUGH is not set 214# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
210# CONFIG_CPU_CACHE_ROUND_ROBIN is not set 215# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
211# CONFIG_OUTER_CACHE is not set 216# CONFIG_OUTER_CACHE is not set
217CONFIG_COMMON_CLKDEV=y
212 218
213# 219#
214# Bus support 220# Bus support
@@ -224,25 +230,32 @@ CONFIG_TICK_ONESHOT=y
224CONFIG_NO_HZ=y 230CONFIG_NO_HZ=y
225CONFIG_HIGH_RES_TIMERS=y 231CONFIG_HIGH_RES_TIMERS=y
226CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 232CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
233CONFIG_VMSPLIT_3G=y
234# CONFIG_VMSPLIT_2G is not set
235# CONFIG_VMSPLIT_1G is not set
236CONFIG_PAGE_OFFSET=0xC0000000
227CONFIG_PREEMPT=y 237CONFIG_PREEMPT=y
228CONFIG_HZ=100 238CONFIG_HZ=100
229CONFIG_AEABI=y 239CONFIG_AEABI=y
230# CONFIG_OABI_COMPAT is not set 240CONFIG_OABI_COMPAT=y
231# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 241CONFIG_ARCH_FLATMEM_HAS_HOLES=y
242# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
243# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
244# CONFIG_HIGHMEM is not set
232CONFIG_SELECT_MEMORY_MODEL=y 245CONFIG_SELECT_MEMORY_MODEL=y
233CONFIG_FLATMEM_MANUAL=y 246CONFIG_FLATMEM_MANUAL=y
234# CONFIG_DISCONTIGMEM_MANUAL is not set 247# CONFIG_DISCONTIGMEM_MANUAL is not set
235# CONFIG_SPARSEMEM_MANUAL is not set 248# CONFIG_SPARSEMEM_MANUAL is not set
236CONFIG_FLATMEM=y 249CONFIG_FLATMEM=y
237CONFIG_FLAT_NODE_MEM_MAP=y 250CONFIG_FLAT_NODE_MEM_MAP=y
238# CONFIG_SPARSEMEM_STATIC is not set
239# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
240CONFIG_PAGEFLAGS_EXTENDED=y 251CONFIG_PAGEFLAGS_EXTENDED=y
241CONFIG_SPLIT_PTLOCK_CPUS=4096 252CONFIG_SPLIT_PTLOCK_CPUS=4096
242# CONFIG_RESOURCES_64BIT is not set 253# CONFIG_PHYS_ADDR_T_64BIT is not set
243CONFIG_ZONE_DMA_FLAG=1 254CONFIG_ZONE_DMA_FLAG=0
244CONFIG_BOUNCE=y
245CONFIG_VIRT_TO_BUS=y 255CONFIG_VIRT_TO_BUS=y
256CONFIG_UNEVICTABLE_LRU=y
257CONFIG_HAVE_MLOCK=y
258CONFIG_HAVE_MLOCKED_PAGE_BIT=y
246CONFIG_ALIGNMENT_TRAP=y 259CONFIG_ALIGNMENT_TRAP=y
247 260
248# 261#
@@ -255,30 +268,44 @@ CONFIG_CMDLINE=""
255# CONFIG_KEXEC is not set 268# CONFIG_KEXEC is not set
256 269
257# 270#
271# CPU Power Management
272#
273# CONFIG_CPU_IDLE is not set
274
275#
258# Floating point emulation 276# Floating point emulation
259# 277#
260 278
261# 279#
262# At least one emulation must be selected 280# At least one emulation must be selected
263# 281#
282CONFIG_FPE_NWFPE=y
283CONFIG_FPE_NWFPE_XP=y
284# CONFIG_FPE_FASTFPE is not set
264# CONFIG_VFP is not set 285# CONFIG_VFP is not set
265 286
266# 287#
267# Userspace binary formats 288# Userspace binary formats
268# 289#
269CONFIG_BINFMT_ELF=y 290CONFIG_BINFMT_ELF=y
291# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
292CONFIG_HAVE_AOUT=y
270# CONFIG_BINFMT_AOUT is not set 293# CONFIG_BINFMT_AOUT is not set
271# CONFIG_BINFMT_MISC is not set 294# CONFIG_BINFMT_MISC is not set
272 295
273# 296#
274# Power management options 297# Power management options
275# 298#
276# CONFIG_PM is not set 299CONFIG_PM=y
300CONFIG_PM_DEBUG=y
301# CONFIG_PM_VERBOSE is not set
302CONFIG_CAN_PM_TRACE=y
303CONFIG_PM_SLEEP=y
304CONFIG_SUSPEND=y
305# CONFIG_PM_TEST_SUSPEND is not set
306CONFIG_SUSPEND_FREEZER=y
307# CONFIG_APM_EMULATION is not set
277CONFIG_ARCH_SUSPEND_POSSIBLE=y 308CONFIG_ARCH_SUSPEND_POSSIBLE=y
278
279#
280# Networking
281#
282CONFIG_NET=y 309CONFIG_NET=y
283 310
284# 311#
@@ -293,7 +320,7 @@ CONFIG_IP_MULTICAST=y
293# CONFIG_IP_ADVANCED_ROUTER is not set 320# CONFIG_IP_ADVANCED_ROUTER is not set
294CONFIG_IP_FIB_HASH=y 321CONFIG_IP_FIB_HASH=y
295CONFIG_IP_PNP=y 322CONFIG_IP_PNP=y
296# CONFIG_IP_PNP_DHCP is not set 323CONFIG_IP_PNP_DHCP=y
297# CONFIG_IP_PNP_BOOTP is not set 324# CONFIG_IP_PNP_BOOTP is not set
298# CONFIG_IP_PNP_RARP is not set 325# CONFIG_IP_PNP_RARP is not set
299# CONFIG_NET_IPIP is not set 326# CONFIG_NET_IPIP is not set
@@ -323,6 +350,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
323# CONFIG_TIPC is not set 350# CONFIG_TIPC is not set
324# CONFIG_ATM is not set 351# CONFIG_ATM is not set
325# CONFIG_BRIDGE is not set 352# CONFIG_BRIDGE is not set
353# CONFIG_NET_DSA is not set
326# CONFIG_VLAN_8021Q is not set 354# CONFIG_VLAN_8021Q is not set
327# CONFIG_DECNET is not set 355# CONFIG_DECNET is not set
328# CONFIG_LLC2 is not set 356# CONFIG_LLC2 is not set
@@ -332,26 +360,23 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
332# CONFIG_LAPB is not set 360# CONFIG_LAPB is not set
333# CONFIG_ECONET is not set 361# CONFIG_ECONET is not set
334# CONFIG_WAN_ROUTER is not set 362# CONFIG_WAN_ROUTER is not set
363# CONFIG_PHONET is not set
335# CONFIG_NET_SCHED is not set 364# CONFIG_NET_SCHED is not set
365# CONFIG_DCB is not set
336 366
337# 367#
338# Network testing 368# Network testing
339# 369#
340# CONFIG_NET_PKTGEN is not set 370# CONFIG_NET_PKTGEN is not set
341# CONFIG_NET_TCPPROBE is not set 371# CONFIG_NET_TCPPROBE is not set
372# CONFIG_NET_DROP_MONITOR is not set
342# CONFIG_HAMRADIO is not set 373# CONFIG_HAMRADIO is not set
343# CONFIG_CAN is not set 374# CONFIG_CAN is not set
344# CONFIG_IRDA is not set 375# CONFIG_IRDA is not set
345# CONFIG_BT is not set 376# CONFIG_BT is not set
346# CONFIG_AF_RXRPC is not set 377# CONFIG_AF_RXRPC is not set
347 378# CONFIG_WIRELESS is not set
348# 379# CONFIG_WIMAX is not set
349# Wireless
350#
351# CONFIG_CFG80211 is not set
352# CONFIG_WIRELESS_EXT is not set
353# CONFIG_MAC80211 is not set
354# CONFIG_IEEE80211 is not set
355# CONFIG_RFKILL is not set 380# CONFIG_RFKILL is not set
356# CONFIG_NET_9P is not set 381# CONFIG_NET_9P is not set
357 382
@@ -366,12 +391,15 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
366CONFIG_STANDALONE=y 391CONFIG_STANDALONE=y
367CONFIG_PREVENT_FIRMWARE_BUILD=y 392CONFIG_PREVENT_FIRMWARE_BUILD=y
368CONFIG_FW_LOADER=y 393CONFIG_FW_LOADER=y
394CONFIG_FIRMWARE_IN_KERNEL=y
395CONFIG_EXTRA_FIRMWARE=""
369# CONFIG_SYS_HYPERVISOR is not set 396# CONFIG_SYS_HYPERVISOR is not set
370# CONFIG_CONNECTOR is not set 397# CONFIG_CONNECTOR is not set
371CONFIG_MTD=y 398CONFIG_MTD=y
372# CONFIG_MTD_DEBUG is not set 399# CONFIG_MTD_DEBUG is not set
373# CONFIG_MTD_CONCAT is not set 400# CONFIG_MTD_CONCAT is not set
374CONFIG_MTD_PARTITIONS=y 401CONFIG_MTD_PARTITIONS=y
402# CONFIG_MTD_TESTS is not set
375# CONFIG_MTD_REDBOOT_PARTS is not set 403# CONFIG_MTD_REDBOOT_PARTS is not set
376CONFIG_MTD_CMDLINE_PARTS=y 404CONFIG_MTD_CMDLINE_PARTS=y
377# CONFIG_MTD_AFS_PARTS is not set 405# CONFIG_MTD_AFS_PARTS is not set
@@ -426,9 +454,7 @@ CONFIG_MTD_CFI_UTIL=y
426# 454#
427# CONFIG_MTD_COMPLEX_MAPPINGS is not set 455# CONFIG_MTD_COMPLEX_MAPPINGS is not set
428CONFIG_MTD_PHYSMAP=y 456CONFIG_MTD_PHYSMAP=y
429CONFIG_MTD_PHYSMAP_START=0x00000000 457# CONFIG_MTD_PHYSMAP_COMPAT is not set
430CONFIG_MTD_PHYSMAP_LEN=0x0
431CONFIG_MTD_PHYSMAP_BANKWIDTH=2
432# CONFIG_MTD_ARM_INTEGRATOR is not set 458# CONFIG_MTD_ARM_INTEGRATOR is not set
433# CONFIG_MTD_PLATRAM is not set 459# CONFIG_MTD_PLATRAM is not set
434 460
@@ -452,6 +478,11 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
452# CONFIG_MTD_ONENAND is not set 478# CONFIG_MTD_ONENAND is not set
453 479
454# 480#
481# LPDDR flash memory drivers
482#
483# CONFIG_MTD_LPDDR is not set
484
485#
455# UBI - Unsorted block images 486# UBI - Unsorted block images
456# 487#
457# CONFIG_MTD_UBI is not set 488# CONFIG_MTD_UBI is not set
@@ -477,7 +508,7 @@ CONFIG_HAVE_IDE=y
477# CONFIG_ATA is not set 508# CONFIG_ATA is not set
478# CONFIG_MD is not set 509# CONFIG_MD is not set
479CONFIG_NETDEVICES=y 510CONFIG_NETDEVICES=y
480# CONFIG_NETDEVICES_MULTIQUEUE is not set 511CONFIG_COMPAT_NET_DEV_OPS=y
481# CONFIG_DUMMY is not set 512# CONFIG_DUMMY is not set
482# CONFIG_BONDING is not set 513# CONFIG_BONDING is not set
483# CONFIG_MACVLAN is not set 514# CONFIG_MACVLAN is not set
@@ -491,12 +522,20 @@ CONFIG_NET_ETHERNET=y
491# CONFIG_SMC91X is not set 522# CONFIG_SMC91X is not set
492# CONFIG_DM9000 is not set 523# CONFIG_DM9000 is not set
493# CONFIG_ENC28J60 is not set 524# CONFIG_ENC28J60 is not set
525# CONFIG_ETHOC is not set
526# CONFIG_SMC911X is not set
527# CONFIG_SMSC911X is not set
528# CONFIG_DNET is not set
494# CONFIG_IBM_NEW_EMAC_ZMII is not set 529# CONFIG_IBM_NEW_EMAC_ZMII is not set
495# CONFIG_IBM_NEW_EMAC_RGMII is not set 530# CONFIG_IBM_NEW_EMAC_RGMII is not set
496# CONFIG_IBM_NEW_EMAC_TAH is not set 531# CONFIG_IBM_NEW_EMAC_TAH is not set
497# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 532# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
533# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
534# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
535# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
498# CONFIG_B44 is not set 536# CONFIG_B44 is not set
499CONFIG_FEC_OLD=y 537CONFIG_FEC=y
538# CONFIG_FEC2 is not set
500# CONFIG_NETDEV_1000 is not set 539# CONFIG_NETDEV_1000 is not set
501# CONFIG_NETDEV_10000 is not set 540# CONFIG_NETDEV_10000 is not set
502 541
@@ -505,7 +544,10 @@ CONFIG_FEC_OLD=y
505# 544#
506# CONFIG_WLAN_PRE80211 is not set 545# CONFIG_WLAN_PRE80211 is not set
507# CONFIG_WLAN_80211 is not set 546# CONFIG_WLAN_80211 is not set
508# CONFIG_IWLWIFI_LEDS is not set 547
548#
549# Enable WiMAX (Networking options) to see the WiMAX drivers
550#
509# CONFIG_WAN is not set 551# CONFIG_WAN is not set
510# CONFIG_PPP is not set 552# CONFIG_PPP is not set
511# CONFIG_SLIP is not set 553# CONFIG_SLIP is not set
@@ -541,12 +583,15 @@ CONFIG_INPUT_TOUCHSCREEN=y
541# CONFIG_TOUCHSCREEN_FUJITSU is not set 583# CONFIG_TOUCHSCREEN_FUJITSU is not set
542# CONFIG_TOUCHSCREEN_GUNZE is not set 584# CONFIG_TOUCHSCREEN_GUNZE is not set
543# CONFIG_TOUCHSCREEN_ELO is not set 585# CONFIG_TOUCHSCREEN_ELO is not set
586# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
544# CONFIG_TOUCHSCREEN_MTOUCH is not set 587# CONFIG_TOUCHSCREEN_MTOUCH is not set
588# CONFIG_TOUCHSCREEN_INEXIO is not set
545# CONFIG_TOUCHSCREEN_MK712 is not set 589# CONFIG_TOUCHSCREEN_MK712 is not set
546# CONFIG_TOUCHSCREEN_PENMOUNT is not set 590# CONFIG_TOUCHSCREEN_PENMOUNT is not set
547# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set 591# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
548# CONFIG_TOUCHSCREEN_TOUCHWIN is not set 592# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
549# CONFIG_TOUCHSCREEN_UCB1400 is not set 593# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
594# CONFIG_TOUCHSCREEN_TSC2007 is not set
550# CONFIG_INPUT_MISC is not set 595# CONFIG_INPUT_MISC is not set
551 596
552# 597#
@@ -559,6 +604,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
559# Character devices 604# Character devices
560# 605#
561CONFIG_VT=y 606CONFIG_VT=y
607CONFIG_CONSOLE_TRANSLATIONS=y
562CONFIG_VT_CONSOLE=y 608CONFIG_VT_CONSOLE=y
563CONFIG_HW_CONSOLE=y 609CONFIG_HW_CONSOLE=y
564# CONFIG_VT_HW_CONSOLE_BINDING is not set 610# CONFIG_VT_HW_CONSOLE_BINDING is not set
@@ -573,42 +619,55 @@ CONFIG_DEVKMEM=y
573# 619#
574# Non-8250 serial port support 620# Non-8250 serial port support
575# 621#
622# CONFIG_SERIAL_MAX3100 is not set
576CONFIG_SERIAL_IMX=y 623CONFIG_SERIAL_IMX=y
577CONFIG_SERIAL_IMX_CONSOLE=y 624CONFIG_SERIAL_IMX_CONSOLE=y
578CONFIG_SERIAL_CORE=y 625CONFIG_SERIAL_CORE=y
579CONFIG_SERIAL_CORE_CONSOLE=y 626CONFIG_SERIAL_CORE_CONSOLE=y
580CONFIG_UNIX98_PTYS=y 627CONFIG_UNIX98_PTYS=y
628# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
581# CONFIG_LEGACY_PTYS is not set 629# CONFIG_LEGACY_PTYS is not set
582# CONFIG_IPMI_HANDLER is not set 630# CONFIG_IPMI_HANDLER is not set
583# CONFIG_HW_RANDOM is not set 631# CONFIG_HW_RANDOM is not set
584# CONFIG_NVRAM is not set
585# CONFIG_R3964 is not set 632# CONFIG_R3964 is not set
586# CONFIG_RAW_DRIVER is not set 633# CONFIG_RAW_DRIVER is not set
587# CONFIG_TCG_TPM is not set 634# CONFIG_TCG_TPM is not set
588CONFIG_I2C=y 635CONFIG_I2C=y
589CONFIG_I2C_BOARDINFO=y 636CONFIG_I2C_BOARDINFO=y
590# CONFIG_I2C_CHARDEV is not set 637CONFIG_I2C_CHARDEV=y
638CONFIG_I2C_HELPER_AUTO=y
591 639
592# 640#
593# I2C Hardware Bus support 641# I2C Hardware Bus support
594# 642#
643
644#
645# I2C system bus drivers (mostly embedded / system-on-chip)
646#
595# CONFIG_I2C_GPIO is not set 647# CONFIG_I2C_GPIO is not set
648CONFIG_I2C_IMX=y
596# CONFIG_I2C_OCORES is not set 649# CONFIG_I2C_OCORES is not set
597# CONFIG_I2C_PARPORT_LIGHT is not set
598# CONFIG_I2C_SIMTEC is not set 650# CONFIG_I2C_SIMTEC is not set
651
652#
653# External I2C/SMBus adapter drivers
654#
655# CONFIG_I2C_PARPORT_LIGHT is not set
599# CONFIG_I2C_TAOS_EVM is not set 656# CONFIG_I2C_TAOS_EVM is not set
600# CONFIG_I2C_STUB is not set 657
658#
659# Other I2C/SMBus bus drivers
660#
601# CONFIG_I2C_PCA_PLATFORM is not set 661# CONFIG_I2C_PCA_PLATFORM is not set
662# CONFIG_I2C_STUB is not set
602 663
603# 664#
604# Miscellaneous I2C Chip support 665# Miscellaneous I2C Chip support
605# 666#
606# CONFIG_DS1682 is not set 667# CONFIG_DS1682 is not set
607# CONFIG_EEPROM_LEGACY is not set
608# CONFIG_SENSORS_PCF8574 is not set 668# CONFIG_SENSORS_PCF8574 is not set
609# CONFIG_PCF8575 is not set 669# CONFIG_PCF8575 is not set
610# CONFIG_SENSORS_PCF8591 is not set 670# CONFIG_SENSORS_PCA9539 is not set
611# CONFIG_TPS65010 is not set
612# CONFIG_SENSORS_MAX6875 is not set 671# CONFIG_SENSORS_MAX6875 is not set
613# CONFIG_SENSORS_TSL2550 is not set 672# CONFIG_SENSORS_TSL2550 is not set
614# CONFIG_I2C_DEBUG_CORE is not set 673# CONFIG_I2C_DEBUG_CORE is not set
@@ -622,47 +681,83 @@ CONFIG_SPI_MASTER=y
622# SPI Master Controller Drivers 681# SPI Master Controller Drivers
623# 682#
624CONFIG_SPI_BITBANG=y 683CONFIG_SPI_BITBANG=y
684# CONFIG_SPI_GPIO is not set
625 685
626# 686#
627# SPI Protocol Masters 687# SPI Protocol Masters
628# 688#
629# CONFIG_EEPROM_AT25 is not set
630# CONFIG_SPI_SPIDEV is not set 689# CONFIG_SPI_SPIDEV is not set
631# CONFIG_SPI_TLE62X0 is not set 690# CONFIG_SPI_TLE62X0 is not set
632CONFIG_HAVE_GPIO_LIB=y 691CONFIG_ARCH_REQUIRE_GPIOLIB=y
692CONFIG_GPIOLIB=y
693# CONFIG_GPIO_SYSFS is not set
633 694
634# 695#
635# GPIO Support 696# Memory mapped GPIO expanders:
636# 697#
637 698
638# 699#
639# I2C GPIO expanders: 700# I2C GPIO expanders:
640# 701#
702# CONFIG_GPIO_MAX732X is not set
641# CONFIG_GPIO_PCA953X is not set 703# CONFIG_GPIO_PCA953X is not set
642# CONFIG_GPIO_PCF857X is not set 704# CONFIG_GPIO_PCF857X is not set
643 705
644# 706#
707# PCI GPIO expanders:
708#
709
710#
645# SPI GPIO expanders: 711# SPI GPIO expanders:
646# 712#
713# CONFIG_GPIO_MAX7301 is not set
647# CONFIG_GPIO_MCP23S08 is not set 714# CONFIG_GPIO_MCP23S08 is not set
648# CONFIG_W1 is not set 715CONFIG_W1=y
716
717#
718# 1-wire Bus Masters
719#
720# CONFIG_W1_MASTER_DS2482 is not set
721CONFIG_W1_MASTER_MXC=y
722# CONFIG_W1_MASTER_GPIO is not set
723
724#
725# 1-wire Slaves
726#
727CONFIG_W1_SLAVE_THERM=y
728# CONFIG_W1_SLAVE_SMEM is not set
729# CONFIG_W1_SLAVE_DS2431 is not set
730# CONFIG_W1_SLAVE_DS2433 is not set
731# CONFIG_W1_SLAVE_DS2760 is not set
732# CONFIG_W1_SLAVE_BQ27000 is not set
649# CONFIG_POWER_SUPPLY is not set 733# CONFIG_POWER_SUPPLY is not set
650# CONFIG_HWMON is not set 734# CONFIG_HWMON is not set
735# CONFIG_THERMAL is not set
736# CONFIG_THERMAL_HWMON is not set
651# CONFIG_WATCHDOG is not set 737# CONFIG_WATCHDOG is not set
738CONFIG_SSB_POSSIBLE=y
652 739
653# 740#
654# Sonics Silicon Backplane 741# Sonics Silicon Backplane
655# 742#
656CONFIG_SSB_POSSIBLE=y
657# CONFIG_SSB is not set 743# CONFIG_SSB is not set
658 744
659# 745#
660# Multifunction device drivers 746# Multifunction device drivers
661# 747#
748# CONFIG_MFD_CORE is not set
662# CONFIG_MFD_SM501 is not set 749# CONFIG_MFD_SM501 is not set
663# CONFIG_MFD_ASIC3 is not set 750# CONFIG_MFD_ASIC3 is not set
664# CONFIG_HTC_EGPIO is not set 751# CONFIG_HTC_EGPIO is not set
665# CONFIG_HTC_PASIC3 is not set 752# CONFIG_HTC_PASIC3 is not set
753# CONFIG_TPS65010 is not set
754# CONFIG_TWL4030_CORE is not set
755# CONFIG_MFD_TMIO is not set
756# CONFIG_MFD_TC6393XB is not set
757# CONFIG_PMIC_DA903X is not set
758# CONFIG_MFD_WM8400 is not set
759# CONFIG_MFD_WM8350_I2C is not set
760# CONFIG_MFD_PCF50633 is not set
666 761
667# 762#
668# Multimedia devices 763# Multimedia devices
@@ -683,7 +778,7 @@ CONFIG_VIDEO_MEDIA=y
683# 778#
684# CONFIG_MEDIA_ATTACH is not set 779# CONFIG_MEDIA_ATTACH is not set
685CONFIG_MEDIA_TUNER=y 780CONFIG_MEDIA_TUNER=y
686# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set 781# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
687CONFIG_MEDIA_TUNER_SIMPLE=y 782CONFIG_MEDIA_TUNER_SIMPLE=y
688CONFIG_MEDIA_TUNER_TDA8290=y 783CONFIG_MEDIA_TUNER_TDA8290=y
689CONFIG_MEDIA_TUNER_TDA9887=y 784CONFIG_MEDIA_TUNER_TDA9887=y
@@ -692,16 +787,17 @@ CONFIG_MEDIA_TUNER_TEA5767=y
692CONFIG_MEDIA_TUNER_MT20XX=y 787CONFIG_MEDIA_TUNER_MT20XX=y
693CONFIG_MEDIA_TUNER_XC2028=y 788CONFIG_MEDIA_TUNER_XC2028=y
694CONFIG_MEDIA_TUNER_XC5000=y 789CONFIG_MEDIA_TUNER_XC5000=y
790CONFIG_MEDIA_TUNER_MC44S803=y
695CONFIG_VIDEO_V4L2=y 791CONFIG_VIDEO_V4L2=y
696CONFIG_VIDEO_V4L1=y 792CONFIG_VIDEO_V4L1=y
697CONFIG_VIDEO_CAPTURE_DRIVERS=y 793CONFIG_VIDEO_CAPTURE_DRIVERS=y
698# CONFIG_VIDEO_ADV_DEBUG is not set 794# CONFIG_VIDEO_ADV_DEBUG is not set
795# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
699CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 796CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
700# CONFIG_VIDEO_VIVI is not set 797# CONFIG_VIDEO_VIVI is not set
701# CONFIG_VIDEO_CPIA is not set 798# CONFIG_VIDEO_CPIA is not set
702# CONFIG_VIDEO_SAA5246A is not set 799# CONFIG_VIDEO_SAA5246A is not set
703# CONFIG_VIDEO_SAA5249 is not set 800# CONFIG_VIDEO_SAA5249 is not set
704# CONFIG_TUNER_3036 is not set
705# CONFIG_SOC_CAMERA is not set 801# CONFIG_SOC_CAMERA is not set
706# CONFIG_RADIO_ADAPTERS is not set 802# CONFIG_RADIO_ADAPTERS is not set
707# CONFIG_DAB is not set 803# CONFIG_DAB is not set
@@ -714,9 +810,10 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
714CONFIG_FB=y 810CONFIG_FB=y
715# CONFIG_FIRMWARE_EDID is not set 811# CONFIG_FIRMWARE_EDID is not set
716# CONFIG_FB_DDC is not set 812# CONFIG_FB_DDC is not set
717# CONFIG_FB_CFB_FILLRECT is not set 813# CONFIG_FB_BOOT_VESA_SUPPORT is not set
718# CONFIG_FB_CFB_COPYAREA is not set 814CONFIG_FB_CFB_FILLRECT=y
719# CONFIG_FB_CFB_IMAGEBLIT is not set 815CONFIG_FB_CFB_COPYAREA=y
816CONFIG_FB_CFB_IMAGEBLIT=y
720# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 817# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
721# CONFIG_FB_SYS_FILLRECT is not set 818# CONFIG_FB_SYS_FILLRECT is not set
722# CONFIG_FB_SYS_COPYAREA is not set 819# CONFIG_FB_SYS_COPYAREA is not set
@@ -732,8 +829,12 @@ CONFIG_FB=y
732# 829#
733# Frame buffer hardware drivers 830# Frame buffer hardware drivers
734# 831#
832CONFIG_FB_IMX=y
735# CONFIG_FB_S1D13XXX is not set 833# CONFIG_FB_S1D13XXX is not set
736# CONFIG_FB_VIRTUAL is not set 834# CONFIG_FB_VIRTUAL is not set
835# CONFIG_FB_METRONOME is not set
836# CONFIG_FB_MB862XX is not set
837# CONFIG_FB_BROADSHEET is not set
737# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 838# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
738 839
739# 840#
@@ -761,14 +862,29 @@ CONFIG_FONT_8x8=y
761# CONFIG_FONT_SUN12x22 is not set 862# CONFIG_FONT_SUN12x22 is not set
762# CONFIG_FONT_10x18 is not set 863# CONFIG_FONT_10x18 is not set
763# CONFIG_LOGO is not set 864# CONFIG_LOGO is not set
764
765#
766# Sound
767#
768# CONFIG_SOUND is not set 865# CONFIG_SOUND is not set
769# CONFIG_HID_SUPPORT is not set 866# CONFIG_HID_SUPPORT is not set
770# CONFIG_USB_SUPPORT is not set 867# CONFIG_USB_SUPPORT is not set
771# CONFIG_MMC is not set 868CONFIG_MMC=y
869# CONFIG_MMC_DEBUG is not set
870# CONFIG_MMC_UNSAFE_RESUME is not set
871
872#
873# MMC/SD/SDIO Card Drivers
874#
875CONFIG_MMC_BLOCK=y
876CONFIG_MMC_BLOCK_BOUNCE=y
877# CONFIG_SDIO_UART is not set
878# CONFIG_MMC_TEST is not set
879
880#
881# MMC/SD/SDIO Host Controller Drivers
882#
883# CONFIG_MMC_SDHCI is not set
884CONFIG_MMC_MXC=y
885# CONFIG_MMC_SPI is not set
886# CONFIG_MEMSTICK is not set
887# CONFIG_ACCESSIBILITY is not set
772# CONFIG_NEW_LEDS is not set 888# CONFIG_NEW_LEDS is not set
773CONFIG_RTC_LIB=y 889CONFIG_RTC_LIB=y
774CONFIG_RTC_CLASS=y 890CONFIG_RTC_CLASS=y
@@ -800,42 +916,56 @@ CONFIG_RTC_DRV_PCF8563=y
800# CONFIG_RTC_DRV_M41T80 is not set 916# CONFIG_RTC_DRV_M41T80 is not set
801# CONFIG_RTC_DRV_S35390A is not set 917# CONFIG_RTC_DRV_S35390A is not set
802# CONFIG_RTC_DRV_FM3130 is not set 918# CONFIG_RTC_DRV_FM3130 is not set
919# CONFIG_RTC_DRV_RX8581 is not set
803 920
804# 921#
805# SPI RTC drivers 922# SPI RTC drivers
806# 923#
924# CONFIG_RTC_DRV_M41T94 is not set
925# CONFIG_RTC_DRV_DS1305 is not set
926# CONFIG_RTC_DRV_DS1390 is not set
807# CONFIG_RTC_DRV_MAX6902 is not set 927# CONFIG_RTC_DRV_MAX6902 is not set
808# CONFIG_RTC_DRV_R9701 is not set 928# CONFIG_RTC_DRV_R9701 is not set
809# CONFIG_RTC_DRV_RS5C348 is not set 929# CONFIG_RTC_DRV_RS5C348 is not set
930# CONFIG_RTC_DRV_DS3234 is not set
810 931
811# 932#
812# Platform RTC drivers 933# Platform RTC drivers
813# 934#
814# CONFIG_RTC_DRV_CMOS is not set 935# CONFIG_RTC_DRV_CMOS is not set
936# CONFIG_RTC_DRV_DS1286 is not set
815# CONFIG_RTC_DRV_DS1511 is not set 937# CONFIG_RTC_DRV_DS1511 is not set
816# CONFIG_RTC_DRV_DS1553 is not set 938# CONFIG_RTC_DRV_DS1553 is not set
817# CONFIG_RTC_DRV_DS1742 is not set 939# CONFIG_RTC_DRV_DS1742 is not set
818# CONFIG_RTC_DRV_STK17TA8 is not set 940# CONFIG_RTC_DRV_STK17TA8 is not set
819# CONFIG_RTC_DRV_M48T86 is not set 941# CONFIG_RTC_DRV_M48T86 is not set
942# CONFIG_RTC_DRV_M48T35 is not set
820# CONFIG_RTC_DRV_M48T59 is not set 943# CONFIG_RTC_DRV_M48T59 is not set
944# CONFIG_RTC_DRV_BQ4802 is not set
821# CONFIG_RTC_DRV_V3020 is not set 945# CONFIG_RTC_DRV_V3020 is not set
822 946
823# 947#
824# on-CPU RTC drivers 948# on-CPU RTC drivers
825# 949#
950# CONFIG_DMADEVICES is not set
951# CONFIG_AUXDISPLAY is not set
952# CONFIG_REGULATOR is not set
826# CONFIG_UIO is not set 953# CONFIG_UIO is not set
954# CONFIG_STAGING is not set
827 955
828# 956#
829# File systems 957# File systems
830# 958#
831# CONFIG_EXT2_FS is not set 959# CONFIG_EXT2_FS is not set
832# CONFIG_EXT3_FS is not set 960# CONFIG_EXT3_FS is not set
833# CONFIG_EXT4DEV_FS is not set 961# CONFIG_EXT4_FS is not set
834# CONFIG_REISERFS_FS is not set 962# CONFIG_REISERFS_FS is not set
835# CONFIG_JFS_FS is not set 963# CONFIG_JFS_FS is not set
836# CONFIG_FS_POSIX_ACL is not set 964# CONFIG_FS_POSIX_ACL is not set
965CONFIG_FILE_LOCKING=y
837# CONFIG_XFS_FS is not set 966# CONFIG_XFS_FS is not set
838# CONFIG_OCFS2_FS is not set 967# CONFIG_OCFS2_FS is not set
968# CONFIG_BTRFS_FS is not set
839# CONFIG_DNOTIFY is not set 969# CONFIG_DNOTIFY is not set
840# CONFIG_INOTIFY is not set 970# CONFIG_INOTIFY is not set
841# CONFIG_QUOTA is not set 971# CONFIG_QUOTA is not set
@@ -844,6 +974,11 @@ CONFIG_RTC_DRV_PCF8563=y
844# CONFIG_FUSE_FS is not set 974# CONFIG_FUSE_FS is not set
845 975
846# 976#
977# Caches
978#
979# CONFIG_FSCACHE is not set
980
981#
847# CD-ROM/DVD Filesystems 982# CD-ROM/DVD Filesystems
848# 983#
849# CONFIG_ISO9660_FS is not set 984# CONFIG_ISO9660_FS is not set
@@ -861,15 +996,13 @@ CONFIG_RTC_DRV_PCF8563=y
861# 996#
862CONFIG_PROC_FS=y 997CONFIG_PROC_FS=y
863CONFIG_PROC_SYSCTL=y 998CONFIG_PROC_SYSCTL=y
999# CONFIG_PROC_PAGE_MONITOR is not set
864CONFIG_SYSFS=y 1000CONFIG_SYSFS=y
865CONFIG_TMPFS=y 1001CONFIG_TMPFS=y
866# CONFIG_TMPFS_POSIX_ACL is not set 1002# CONFIG_TMPFS_POSIX_ACL is not set
867# CONFIG_HUGETLB_PAGE is not set 1003# CONFIG_HUGETLB_PAGE is not set
868# CONFIG_CONFIGFS_FS is not set 1004# CONFIG_CONFIGFS_FS is not set
869 1005CONFIG_MISC_FILESYSTEMS=y
870#
871# Miscellaneous filesystems
872#
873# CONFIG_ADFS_FS is not set 1006# CONFIG_ADFS_FS is not set
874# CONFIG_AFFS_FS is not set 1007# CONFIG_AFFS_FS is not set
875# CONFIG_HFS_FS is not set 1008# CONFIG_HFS_FS is not set
@@ -889,25 +1022,27 @@ CONFIG_JFFS2_ZLIB=y
889CONFIG_JFFS2_RTIME=y 1022CONFIG_JFFS2_RTIME=y
890# CONFIG_JFFS2_RUBIN is not set 1023# CONFIG_JFFS2_RUBIN is not set
891# CONFIG_CRAMFS is not set 1024# CONFIG_CRAMFS is not set
1025# CONFIG_SQUASHFS is not set
892# CONFIG_VXFS_FS is not set 1026# CONFIG_VXFS_FS is not set
893# CONFIG_MINIX_FS is not set 1027# CONFIG_MINIX_FS is not set
1028# CONFIG_OMFS_FS is not set
894# CONFIG_HPFS_FS is not set 1029# CONFIG_HPFS_FS is not set
895# CONFIG_QNX4FS_FS is not set 1030# CONFIG_QNX4FS_FS is not set
896# CONFIG_ROMFS_FS is not set 1031# CONFIG_ROMFS_FS is not set
897# CONFIG_SYSV_FS is not set 1032# CONFIG_SYSV_FS is not set
898# CONFIG_UFS_FS is not set 1033# CONFIG_UFS_FS is not set
1034# CONFIG_NILFS2_FS is not set
899CONFIG_NETWORK_FILESYSTEMS=y 1035CONFIG_NETWORK_FILESYSTEMS=y
900CONFIG_NFS_FS=y 1036CONFIG_NFS_FS=y
901CONFIG_NFS_V3=y 1037CONFIG_NFS_V3=y
902# CONFIG_NFS_V3_ACL is not set 1038# CONFIG_NFS_V3_ACL is not set
903# CONFIG_NFS_V4 is not set 1039# CONFIG_NFS_V4 is not set
904# CONFIG_NFSD is not set
905CONFIG_ROOT_NFS=y 1040CONFIG_ROOT_NFS=y
1041# CONFIG_NFSD is not set
906CONFIG_LOCKD=y 1042CONFIG_LOCKD=y
907CONFIG_LOCKD_V4=y 1043CONFIG_LOCKD_V4=y
908CONFIG_NFS_COMMON=y 1044CONFIG_NFS_COMMON=y
909CONFIG_SUNRPC=y 1045CONFIG_SUNRPC=y
910# CONFIG_SUNRPC_BIND34 is not set
911# CONFIG_RPCSEC_GSS_KRB5 is not set 1046# CONFIG_RPCSEC_GSS_KRB5 is not set
912# CONFIG_RPCSEC_GSS_SPKM3 is not set 1047# CONFIG_RPCSEC_GSS_SPKM3 is not set
913# CONFIG_SMB_FS is not set 1048# CONFIG_SMB_FS is not set
@@ -972,12 +1107,41 @@ CONFIG_ENABLE_MUST_CHECK=y
972CONFIG_FRAME_WARN=1024 1107CONFIG_FRAME_WARN=1024
973# CONFIG_MAGIC_SYSRQ is not set 1108# CONFIG_MAGIC_SYSRQ is not set
974# CONFIG_UNUSED_SYMBOLS is not set 1109# CONFIG_UNUSED_SYMBOLS is not set
975# CONFIG_DEBUG_FS is not set 1110CONFIG_DEBUG_FS=y
976# CONFIG_HEADERS_CHECK is not set 1111# CONFIG_HEADERS_CHECK is not set
977# CONFIG_DEBUG_KERNEL is not set 1112# CONFIG_DEBUG_KERNEL is not set
1113CONFIG_STACKTRACE=y
978# CONFIG_DEBUG_BUGVERBOSE is not set 1114# CONFIG_DEBUG_BUGVERBOSE is not set
979CONFIG_FRAME_POINTER=y 1115# CONFIG_DEBUG_MEMORY_INIT is not set
1116# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1117# CONFIG_LATENCYTOP is not set
1118CONFIG_SYSCTL_SYSCALL_CHECK=y
1119CONFIG_NOP_TRACER=y
1120CONFIG_HAVE_FUNCTION_TRACER=y
1121CONFIG_RING_BUFFER=y
1122CONFIG_TRACING=y
1123CONFIG_TRACING_SUPPORT=y
1124
1125#
1126# Tracers
1127#
1128# CONFIG_FUNCTION_TRACER is not set
1129# CONFIG_IRQSOFF_TRACER is not set
1130# CONFIG_PREEMPT_TRACER is not set
1131# CONFIG_SCHED_TRACER is not set
1132# CONFIG_CONTEXT_SWITCH_TRACER is not set
1133# CONFIG_EVENT_TRACER is not set
1134# CONFIG_BOOT_TRACER is not set
1135# CONFIG_TRACE_BRANCH_PROFILING is not set
1136# CONFIG_STACK_TRACER is not set
1137# CONFIG_KMEMTRACE is not set
1138# CONFIG_WORKQUEUE_TRACER is not set
1139# CONFIG_BLK_DEV_IO_TRACE is not set
1140# CONFIG_FTRACE_STARTUP_TEST is not set
1141# CONFIG_DYNAMIC_DEBUG is not set
980# CONFIG_SAMPLES is not set 1142# CONFIG_SAMPLES is not set
1143CONFIG_HAVE_ARCH_KGDB=y
1144CONFIG_ARM_UNWIND=y
981# CONFIG_DEBUG_USER is not set 1145# CONFIG_DEBUG_USER is not set
982 1146
983# 1147#
@@ -985,24 +1149,26 @@ CONFIG_FRAME_POINTER=y
985# 1149#
986# CONFIG_KEYS is not set 1150# CONFIG_KEYS is not set
987# CONFIG_SECURITY is not set 1151# CONFIG_SECURITY is not set
1152# CONFIG_SECURITYFS is not set
988# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1153# CONFIG_SECURITY_FILE_CAPABILITIES is not set
989# CONFIG_CRYPTO is not set 1154# CONFIG_CRYPTO is not set
1155CONFIG_BINARY_PRINTF=y
990 1156
991# 1157#
992# Library routines 1158# Library routines
993# 1159#
994CONFIG_BITREVERSE=y 1160CONFIG_BITREVERSE=y
995# CONFIG_GENERIC_FIND_FIRST_BIT is not set 1161CONFIG_GENERIC_FIND_LAST_BIT=y
996# CONFIG_GENERIC_FIND_NEXT_BIT is not set
997# CONFIG_CRC_CCITT is not set 1162# CONFIG_CRC_CCITT is not set
998# CONFIG_CRC16 is not set 1163# CONFIG_CRC16 is not set
1164# CONFIG_CRC_T10DIF is not set
999# CONFIG_CRC_ITU_T is not set 1165# CONFIG_CRC_ITU_T is not set
1000CONFIG_CRC32=y 1166CONFIG_CRC32=y
1001# CONFIG_CRC7 is not set 1167# CONFIG_CRC7 is not set
1002# CONFIG_LIBCRC32C is not set 1168# CONFIG_LIBCRC32C is not set
1003CONFIG_ZLIB_INFLATE=y 1169CONFIG_ZLIB_INFLATE=y
1004CONFIG_ZLIB_DEFLATE=y 1170CONFIG_ZLIB_DEFLATE=y
1005CONFIG_PLIST=y
1006CONFIG_HAS_IOMEM=y 1171CONFIG_HAS_IOMEM=y
1007CONFIG_HAS_IOPORT=y 1172CONFIG_HAS_IOPORT=y
1008CONFIG_HAS_DMA=y 1173CONFIG_HAS_DMA=y
1174CONFIG_NLATTR=y
diff --git a/arch/arm/configs/mx31litekit_defconfig b/arch/arm/configs/mx3_defconfig
index 4f41c4135685..72a8201a5370 100644
--- a/arch/arm/configs/mx31litekit_defconfig
+++ b/arch/arm/configs/mx3_defconfig
@@ -1,17 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc5 3# Linux kernel version: 2.6.30-rc1
4# Fri Jun 13 14:23:39 2008 4# Wed Apr 8 11:06:37 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8# CONFIG_GENERIC_GPIO is not set 8CONFIG_GENERIC_GPIO=y
9# CONFIG_GENERIC_TIME is not set 9CONFIG_GENERIC_TIME=y
10# CONFIG_GENERIC_CLOCKEVENTS is not set 10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y 11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set 12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y 14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 16CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y 17CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y 18CONFIG_HARDIRQS_SW_RESEND=y
@@ -21,9 +22,8 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y 23CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 24CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_ZONE_DMA=y
26CONFIG_ARCH_MTD_XIP=y 25CONFIG_ARCH_MTD_XIP=y
26CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
27CONFIG_VECTORS_BASE=0xffff0000 27CONFIG_VECTORS_BASE=0xffff0000
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
29 29
@@ -43,11 +43,24 @@ CONFIG_SYSVIPC_SYSCTL=y
43# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
44# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_CLASSIC_RCU=y
51# CONFIG_TREE_RCU is not set
52# CONFIG_PREEMPT_RCU is not set
53# CONFIG_TREE_RCU_TRACE is not set
54# CONFIG_PREEMPT_RCU_TRACE is not set
46CONFIG_IKCONFIG=y 55CONFIG_IKCONFIG=y
47CONFIG_IKCONFIG_PROC=y 56CONFIG_IKCONFIG_PROC=y
48CONFIG_LOG_BUF_SHIFT=14 57CONFIG_LOG_BUF_SHIFT=14
58CONFIG_GROUP_SCHED=y
59CONFIG_FAIR_GROUP_SCHED=y
60# CONFIG_RT_GROUP_SCHED is not set
61CONFIG_USER_SCHED=y
62# CONFIG_CGROUP_SCHED is not set
49# CONFIG_CGROUPS is not set 63# CONFIG_CGROUPS is not set
50# CONFIG_GROUP_SCHED is not set
51CONFIG_SYSFS_DEPRECATED=y 64CONFIG_SYSFS_DEPRECATED=y
52CONFIG_SYSFS_DEPRECATED_V2=y 65CONFIG_SYSFS_DEPRECATED_V2=y
53# CONFIG_RELAY is not set 66# CONFIG_RELAY is not set
@@ -55,27 +68,26 @@ CONFIG_SYSFS_DEPRECATED_V2=y
55# CONFIG_BLK_DEV_INITRD is not set 68# CONFIG_BLK_DEV_INITRD is not set
56CONFIG_CC_OPTIMIZE_FOR_SIZE=y 69CONFIG_CC_OPTIMIZE_FOR_SIZE=y
57CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
71CONFIG_ANON_INODES=y
58CONFIG_EMBEDDED=y 72CONFIG_EMBEDDED=y
59CONFIG_UID16=y 73CONFIG_UID16=y
60CONFIG_SYSCTL_SYSCALL=y 74CONFIG_SYSCTL_SYSCALL=y
61CONFIG_SYSCTL_SYSCALL_CHECK=y
62CONFIG_KALLSYMS=y 75CONFIG_KALLSYMS=y
63# CONFIG_KALLSYMS_ALL is not set
64# CONFIG_KALLSYMS_EXTRA_PASS is not set 76# CONFIG_KALLSYMS_EXTRA_PASS is not set
65CONFIG_HOTPLUG=y 77CONFIG_HOTPLUG=y
66CONFIG_PRINTK=y 78CONFIG_PRINTK=y
67CONFIG_BUG=y 79CONFIG_BUG=y
68CONFIG_ELF_CORE=y 80CONFIG_ELF_CORE=y
69CONFIG_COMPAT_BRK=y
70CONFIG_BASE_FULL=y 81CONFIG_BASE_FULL=y
71CONFIG_FUTEX=y 82CONFIG_FUTEX=y
72CONFIG_ANON_INODES=y
73CONFIG_EPOLL=y 83CONFIG_EPOLL=y
74CONFIG_SIGNALFD=y 84CONFIG_SIGNALFD=y
75CONFIG_TIMERFD=y 85CONFIG_TIMERFD=y
76CONFIG_EVENTFD=y 86CONFIG_EVENTFD=y
77CONFIG_SHMEM=y 87CONFIG_SHMEM=y
88CONFIG_AIO=y
78CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_COMPAT_BRK=y
79CONFIG_SLAB=y 91CONFIG_SLAB=y
80# CONFIG_SLUB is not set 92# CONFIG_SLUB is not set
81# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
@@ -85,11 +97,10 @@ CONFIG_HAVE_OPROFILE=y
85# CONFIG_KPROBES is not set 97# CONFIG_KPROBES is not set
86CONFIG_HAVE_KPROBES=y 98CONFIG_HAVE_KPROBES=y
87CONFIG_HAVE_KRETPROBES=y 99CONFIG_HAVE_KRETPROBES=y
88# CONFIG_HAVE_DMA_ATTRS is not set 100# CONFIG_SLOW_WORK is not set
89CONFIG_PROC_PAGE_MONITOR=y 101CONFIG_HAVE_GENERIC_DMA_COHERENT=y
90CONFIG_SLABINFO=y 102CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y 103CONFIG_RT_MUTEXES=y
92# CONFIG_TINY_SHMEM is not set
93CONFIG_BASE_SMALL=0 104CONFIG_BASE_SMALL=0
94CONFIG_MODULES=y 105CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set 106# CONFIG_MODULE_FORCE_LOAD is not set
@@ -97,12 +108,10 @@ CONFIG_MODULE_UNLOAD=y
97CONFIG_MODULE_FORCE_UNLOAD=y 108CONFIG_MODULE_FORCE_UNLOAD=y
98CONFIG_MODVERSIONS=y 109CONFIG_MODVERSIONS=y
99# CONFIG_MODULE_SRCVERSION_ALL is not set 110# CONFIG_MODULE_SRCVERSION_ALL is not set
100CONFIG_KMOD=y
101CONFIG_BLOCK=y 111CONFIG_BLOCK=y
102# CONFIG_LBD is not set 112# CONFIG_LBD is not set
103# CONFIG_BLK_DEV_IO_TRACE is not set
104# CONFIG_LSF is not set
105# CONFIG_BLK_DEV_BSG is not set 113# CONFIG_BLK_DEV_BSG is not set
114# CONFIG_BLK_DEV_INTEGRITY is not set
106 115
107# 116#
108# IO Schedulers 117# IO Schedulers
@@ -116,7 +125,7 @@ CONFIG_IOSCHED_CFQ=y
116CONFIG_DEFAULT_CFQ=y 125CONFIG_DEFAULT_CFQ=y
117# CONFIG_DEFAULT_NOOP is not set 126# CONFIG_DEFAULT_NOOP is not set
118CONFIG_DEFAULT_IOSCHED="cfq" 127CONFIG_DEFAULT_IOSCHED="cfq"
119CONFIG_CLASSIC_RCU=y 128CONFIG_FREEZER=y
120 129
121# 130#
122# System Type 131# System Type
@@ -126,11 +135,10 @@ CONFIG_CLASSIC_RCU=y
126# CONFIG_ARCH_REALVIEW is not set 135# CONFIG_ARCH_REALVIEW is not set
127# CONFIG_ARCH_VERSATILE is not set 136# CONFIG_ARCH_VERSATILE is not set
128# CONFIG_ARCH_AT91 is not set 137# CONFIG_ARCH_AT91 is not set
129# CONFIG_ARCH_CLPS7500 is not set
130# CONFIG_ARCH_CLPS711X is not set 138# CONFIG_ARCH_CLPS711X is not set
131# CONFIG_ARCH_CO285 is not set
132# CONFIG_ARCH_EBSA110 is not set 139# CONFIG_ARCH_EBSA110 is not set
133# CONFIG_ARCH_EP93XX is not set 140# CONFIG_ARCH_EP93XX is not set
141# CONFIG_ARCH_GEMINI is not set
134# CONFIG_ARCH_FOOTBRIDGE is not set 142# CONFIG_ARCH_FOOTBRIDGE is not set
135# CONFIG_ARCH_NETX is not set 143# CONFIG_ARCH_NETX is not set
136# CONFIG_ARCH_H720X is not set 144# CONFIG_ARCH_H720X is not set
@@ -142,46 +150,54 @@ CONFIG_CLASSIC_RCU=y
142# CONFIG_ARCH_IXP2000 is not set 150# CONFIG_ARCH_IXP2000 is not set
143# CONFIG_ARCH_IXP4XX is not set 151# CONFIG_ARCH_IXP4XX is not set
144# CONFIG_ARCH_L7200 is not set 152# CONFIG_ARCH_L7200 is not set
153# CONFIG_ARCH_KIRKWOOD is not set
145# CONFIG_ARCH_KS8695 is not set 154# CONFIG_ARCH_KS8695 is not set
146# CONFIG_ARCH_NS9XXX is not set 155# CONFIG_ARCH_NS9XXX is not set
156# CONFIG_ARCH_LOKI is not set
157# CONFIG_ARCH_MV78XX0 is not set
147CONFIG_ARCH_MXC=y 158CONFIG_ARCH_MXC=y
148# CONFIG_ARCH_ORION5X is not set 159# CONFIG_ARCH_ORION5X is not set
149# CONFIG_ARCH_PNX4008 is not set 160# CONFIG_ARCH_PNX4008 is not set
150# CONFIG_ARCH_PXA is not set 161# CONFIG_ARCH_PXA is not set
162# CONFIG_ARCH_MMP is not set
151# CONFIG_ARCH_RPC is not set 163# CONFIG_ARCH_RPC is not set
152# CONFIG_ARCH_SA1100 is not set 164# CONFIG_ARCH_SA1100 is not set
153# CONFIG_ARCH_S3C2410 is not set 165# CONFIG_ARCH_S3C2410 is not set
166# CONFIG_ARCH_S3C64XX is not set
154# CONFIG_ARCH_SHARK is not set 167# CONFIG_ARCH_SHARK is not set
155# CONFIG_ARCH_LH7A40X is not set 168# CONFIG_ARCH_LH7A40X is not set
156# CONFIG_ARCH_DAVINCI is not set 169# CONFIG_ARCH_DAVINCI is not set
157# CONFIG_ARCH_OMAP is not set 170# CONFIG_ARCH_OMAP is not set
158# CONFIG_ARCH_MSM7X00A is not set 171# CONFIG_ARCH_MSM is not set
159 172# CONFIG_ARCH_W90X900 is not set
160#
161# Boot options
162#
163
164#
165# Power management
166#
167 173
168# 174#
169# Freescale MXC Implementations 175# Freescale MXC Implementations
170# 176#
177# CONFIG_ARCH_MX1 is not set
178# CONFIG_ARCH_MX2 is not set
171CONFIG_ARCH_MX3=y 179CONFIG_ARCH_MX3=y
180CONFIG_ARCH_MX31=y
172 181
173# 182#
174# MX3 Options 183# MX3 platforms:
175# 184#
176# CONFIG_MACH_MX31ADS is not set 185CONFIG_MACH_MX31ADS=y
186CONFIG_MACH_MX31ADS_WM1133_EV1=y
187CONFIG_MACH_PCM037=y
177CONFIG_MACH_MX31LITE=y 188CONFIG_MACH_MX31LITE=y
189CONFIG_MACH_MX31_3DS=y
190CONFIG_MACH_MX31MOBOARD=y
191CONFIG_MACH_QONG=y
192CONFIG_MXC_IRQ_PRIOR=y
193CONFIG_MXC_PWM=y
178 194
179# 195#
180# Processor Type 196# Processor Type
181# 197#
182CONFIG_CPU_32=y 198CONFIG_CPU_32=y
183CONFIG_CPU_V6=y 199CONFIG_CPU_V6=y
184# CONFIG_CPU_32v6K is not set 200CONFIG_CPU_32v6K=y
185CONFIG_CPU_32v6=y 201CONFIG_CPU_32v6=y
186CONFIG_CPU_ABRT_EV6=y 202CONFIG_CPU_ABRT_EV6=y
187CONFIG_CPU_PABRT_NOIFAR=y 203CONFIG_CPU_PABRT_NOIFAR=y
@@ -200,45 +216,50 @@ CONFIG_ARM_THUMB=y
200# CONFIG_CPU_ICACHE_DISABLE is not set 216# CONFIG_CPU_ICACHE_DISABLE is not set
201# CONFIG_CPU_DCACHE_DISABLE is not set 217# CONFIG_CPU_DCACHE_DISABLE is not set
202# CONFIG_CPU_BPREDICT_DISABLE is not set 218# CONFIG_CPU_BPREDICT_DISABLE is not set
203# CONFIG_OUTER_CACHE is not set 219CONFIG_OUTER_CACHE=y
220CONFIG_CACHE_L2X0=y
221CONFIG_COMMON_CLKDEV=y
204 222
205# 223#
206# Bus support 224# Bus support
207# 225#
208# CONFIG_PCI_SYSCALL is not set 226# CONFIG_PCI_SYSCALL is not set
209# CONFIG_ARCH_SUPPORTS_MSI is not set 227# CONFIG_ARCH_SUPPORTS_MSI is not set
210CONFIG_PCCARD=m 228# CONFIG_PCCARD is not set
211# CONFIG_PCMCIA_DEBUG is not set
212# CONFIG_PCMCIA is not set
213
214#
215# PC-card bridges
216#
217 229
218# 230#
219# Kernel Features 231# Kernel Features
220# 232#
221# CONFIG_TICK_ONESHOT is not set 233CONFIG_TICK_ONESHOT=y
234CONFIG_NO_HZ=y
235CONFIG_HIGH_RES_TIMERS=y
236CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
237CONFIG_VMSPLIT_3G=y
238# CONFIG_VMSPLIT_2G is not set
239# CONFIG_VMSPLIT_1G is not set
240CONFIG_PAGE_OFFSET=0xC0000000
222CONFIG_PREEMPT=y 241CONFIG_PREEMPT=y
223# CONFIG_NO_IDLE_HZ is not set
224CONFIG_HZ=100 242CONFIG_HZ=100
225CONFIG_AEABI=y 243CONFIG_AEABI=y
226# CONFIG_OABI_COMPAT is not set 244CONFIG_OABI_COMPAT=y
227# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 245CONFIG_ARCH_FLATMEM_HAS_HOLES=y
246# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
247# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
248# CONFIG_HIGHMEM is not set
228CONFIG_SELECT_MEMORY_MODEL=y 249CONFIG_SELECT_MEMORY_MODEL=y
229CONFIG_FLATMEM_MANUAL=y 250CONFIG_FLATMEM_MANUAL=y
230# CONFIG_DISCONTIGMEM_MANUAL is not set 251# CONFIG_DISCONTIGMEM_MANUAL is not set
231# CONFIG_SPARSEMEM_MANUAL is not set 252# CONFIG_SPARSEMEM_MANUAL is not set
232CONFIG_FLATMEM=y 253CONFIG_FLATMEM=y
233CONFIG_FLAT_NODE_MEM_MAP=y 254CONFIG_FLAT_NODE_MEM_MAP=y
234# CONFIG_SPARSEMEM_STATIC is not set
235# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
236CONFIG_PAGEFLAGS_EXTENDED=y 255CONFIG_PAGEFLAGS_EXTENDED=y
237CONFIG_SPLIT_PTLOCK_CPUS=4 256CONFIG_SPLIT_PTLOCK_CPUS=4
238# CONFIG_RESOURCES_64BIT is not set 257# CONFIG_PHYS_ADDR_T_64BIT is not set
239CONFIG_ZONE_DMA_FLAG=1 258CONFIG_ZONE_DMA_FLAG=0
240CONFIG_BOUNCE=y
241CONFIG_VIRT_TO_BUS=y 259CONFIG_VIRT_TO_BUS=y
260CONFIG_UNEVICTABLE_LRU=y
261CONFIG_HAVE_MLOCK=y
262CONFIG_HAVE_MLOCKED_PAGE_BIT=y
242CONFIG_ALIGNMENT_TRAP=y 263CONFIG_ALIGNMENT_TRAP=y
243 264
244# 265#
@@ -251,33 +272,42 @@ CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw ip=off"
251# CONFIG_KEXEC is not set 272# CONFIG_KEXEC is not set
252 273
253# 274#
275# CPU Power Management
276#
277# CONFIG_CPU_IDLE is not set
278
279#
254# Floating point emulation 280# Floating point emulation
255# 281#
256 282
257# 283#
258# At least one emulation must be selected 284# At least one emulation must be selected
259# 285#
286# CONFIG_FPE_NWFPE is not set
287# CONFIG_FPE_FASTFPE is not set
260CONFIG_VFP=y 288CONFIG_VFP=y
261 289
262# 290#
263# Userspace binary formats 291# Userspace binary formats
264# 292#
265CONFIG_BINFMT_ELF=y 293CONFIG_BINFMT_ELF=y
266CONFIG_BINFMT_AOUT=y 294# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
295CONFIG_HAVE_AOUT=y
296# CONFIG_BINFMT_AOUT is not set
267# CONFIG_BINFMT_MISC is not set 297# CONFIG_BINFMT_MISC is not set
268 298
269# 299#
270# Power management options 300# Power management options
271# 301#
272CONFIG_PM=y 302CONFIG_PM=y
273# CONFIG_PM_DEBUG is not set 303CONFIG_PM_DEBUG=y
274# CONFIG_SUSPEND is not set 304# CONFIG_PM_VERBOSE is not set
305CONFIG_CAN_PM_TRACE=y
306CONFIG_PM_SLEEP=y
307CONFIG_SUSPEND=y
308CONFIG_SUSPEND_FREEZER=y
275# CONFIG_APM_EMULATION is not set 309# CONFIG_APM_EMULATION is not set
276CONFIG_ARCH_SUSPEND_POSSIBLE=y 310CONFIG_ARCH_SUSPEND_POSSIBLE=y
277
278#
279# Networking
280#
281CONFIG_NET=y 311CONFIG_NET=y
282 312
283# 313#
@@ -286,11 +316,6 @@ CONFIG_NET=y
286CONFIG_PACKET=y 316CONFIG_PACKET=y
287# CONFIG_PACKET_MMAP is not set 317# CONFIG_PACKET_MMAP is not set
288CONFIG_UNIX=y 318CONFIG_UNIX=y
289CONFIG_XFRM=y
290# CONFIG_XFRM_USER is not set
291# CONFIG_XFRM_SUB_POLICY is not set
292# CONFIG_XFRM_MIGRATE is not set
293# CONFIG_XFRM_STATISTICS is not set
294# CONFIG_NET_KEY is not set 319# CONFIG_NET_KEY is not set
295CONFIG_INET=y 320CONFIG_INET=y
296# CONFIG_IP_MULTICAST is not set 321# CONFIG_IP_MULTICAST is not set
@@ -309,12 +334,11 @@ CONFIG_IP_PNP_DHCP=y
309# CONFIG_INET_IPCOMP is not set 334# CONFIG_INET_IPCOMP is not set
310# CONFIG_INET_XFRM_TUNNEL is not set 335# CONFIG_INET_XFRM_TUNNEL is not set
311# CONFIG_INET_TUNNEL is not set 336# CONFIG_INET_TUNNEL is not set
312CONFIG_INET_XFRM_MODE_TRANSPORT=y 337# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
313CONFIG_INET_XFRM_MODE_TUNNEL=y 338# CONFIG_INET_XFRM_MODE_TUNNEL is not set
314CONFIG_INET_XFRM_MODE_BEET=y 339# CONFIG_INET_XFRM_MODE_BEET is not set
315# CONFIG_INET_LRO is not set 340# CONFIG_INET_LRO is not set
316CONFIG_INET_DIAG=y 341# CONFIG_INET_DIAG is not set
317CONFIG_INET_TCP_DIAG=y
318# CONFIG_TCP_CONG_ADVANCED is not set 342# CONFIG_TCP_CONG_ADVANCED is not set
319CONFIG_TCP_CONG_CUBIC=y 343CONFIG_TCP_CONG_CUBIC=y
320CONFIG_DEFAULT_TCP_CONG="cubic" 344CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -327,6 +351,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
327# CONFIG_TIPC is not set 351# CONFIG_TIPC is not set
328# CONFIG_ATM is not set 352# CONFIG_ATM is not set
329# CONFIG_BRIDGE is not set 353# CONFIG_BRIDGE is not set
354# CONFIG_NET_DSA is not set
330# CONFIG_VLAN_8021Q is not set 355# CONFIG_VLAN_8021Q is not set
331# CONFIG_DECNET is not set 356# CONFIG_DECNET is not set
332# CONFIG_LLC2 is not set 357# CONFIG_LLC2 is not set
@@ -336,7 +361,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
336# CONFIG_LAPB is not set 361# CONFIG_LAPB is not set
337# CONFIG_ECONET is not set 362# CONFIG_ECONET is not set
338# CONFIG_WAN_ROUTER is not set 363# CONFIG_WAN_ROUTER is not set
364# CONFIG_PHONET is not set
339# CONFIG_NET_SCHED is not set 365# CONFIG_NET_SCHED is not set
366# CONFIG_DCB is not set
340 367
341# 368#
342# Network testing 369# Network testing
@@ -347,14 +374,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
347# CONFIG_IRDA is not set 374# CONFIG_IRDA is not set
348# CONFIG_BT is not set 375# CONFIG_BT is not set
349# CONFIG_AF_RXRPC is not set 376# CONFIG_AF_RXRPC is not set
350 377# CONFIG_WIRELESS is not set
351# 378# CONFIG_WIMAX is not set
352# Wireless
353#
354# CONFIG_CFG80211 is not set
355# CONFIG_WIRELESS_EXT is not set
356# CONFIG_MAC80211 is not set
357# CONFIG_IEEE80211 is not set
358# CONFIG_RFKILL is not set 379# CONFIG_RFKILL is not set
359# CONFIG_NET_9P is not set 380# CONFIG_NET_9P is not set
360 381
@@ -369,18 +390,16 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
369CONFIG_STANDALONE=y 390CONFIG_STANDALONE=y
370CONFIG_PREVENT_FIRMWARE_BUILD=y 391CONFIG_PREVENT_FIRMWARE_BUILD=y
371CONFIG_FW_LOADER=m 392CONFIG_FW_LOADER=m
372# CONFIG_DEBUG_DRIVER is not set 393CONFIG_FIRMWARE_IN_KERNEL=y
373# CONFIG_DEBUG_DEVRES is not set 394CONFIG_EXTRA_FIRMWARE=""
374# CONFIG_SYS_HYPERVISOR is not set 395# CONFIG_SYS_HYPERVISOR is not set
375# CONFIG_CONNECTOR is not set 396# CONFIG_CONNECTOR is not set
376CONFIG_MTD=y 397CONFIG_MTD=y
377# CONFIG_MTD_DEBUG is not set 398# CONFIG_MTD_DEBUG is not set
378# CONFIG_MTD_CONCAT is not set 399# CONFIG_MTD_CONCAT is not set
379CONFIG_MTD_PARTITIONS=y 400CONFIG_MTD_PARTITIONS=y
380CONFIG_MTD_REDBOOT_PARTS=y 401# CONFIG_MTD_TESTS is not set
381CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 402# CONFIG_MTD_REDBOOT_PARTS is not set
382# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
383# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
384CONFIG_MTD_CMDLINE_PARTS=y 403CONFIG_MTD_CMDLINE_PARTS=y
385# CONFIG_MTD_AFS_PARTS is not set 404# CONFIG_MTD_AFS_PARTS is not set
386# CONFIG_MTD_AR7_PARTS is not set 405# CONFIG_MTD_AR7_PARTS is not set
@@ -404,36 +423,31 @@ CONFIG_MTD_BLOCK=y
404CONFIG_MTD_CFI=y 423CONFIG_MTD_CFI=y
405# CONFIG_MTD_JEDECPROBE is not set 424# CONFIG_MTD_JEDECPROBE is not set
406CONFIG_MTD_GEN_PROBE=y 425CONFIG_MTD_GEN_PROBE=y
407CONFIG_MTD_CFI_ADV_OPTIONS=y 426# CONFIG_MTD_CFI_ADV_OPTIONS is not set
408CONFIG_MTD_CFI_NOSWAP=y 427CONFIG_MTD_MAP_BANK_WIDTH_1=y
409# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
410# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
411CONFIG_MTD_CFI_GEOMETRY=y
412# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
413CONFIG_MTD_MAP_BANK_WIDTH_2=y 428CONFIG_MTD_MAP_BANK_WIDTH_2=y
414# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set 429CONFIG_MTD_MAP_BANK_WIDTH_4=y
415# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set 430# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
416# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set 431# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
417# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 432# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
418CONFIG_MTD_CFI_I1=y 433CONFIG_MTD_CFI_I1=y
419# CONFIG_MTD_CFI_I2 is not set 434CONFIG_MTD_CFI_I2=y
420# CONFIG_MTD_CFI_I4 is not set 435# CONFIG_MTD_CFI_I4 is not set
421# CONFIG_MTD_CFI_I8 is not set 436# CONFIG_MTD_CFI_I8 is not set
422# CONFIG_MTD_OTP is not set
423# CONFIG_MTD_CFI_INTELEXT is not set 437# CONFIG_MTD_CFI_INTELEXT is not set
424CONFIG_MTD_CFI_AMDSTD=y 438# CONFIG_MTD_CFI_AMDSTD is not set
425# CONFIG_MTD_CFI_STAA is not set 439# CONFIG_MTD_CFI_STAA is not set
426CONFIG_MTD_CFI_UTIL=y 440CONFIG_MTD_CFI_UTIL=y
427CONFIG_MTD_RAM=y 441# CONFIG_MTD_RAM is not set
428# CONFIG_MTD_ROM is not set 442# CONFIG_MTD_ROM is not set
429# CONFIG_MTD_ABSENT is not set 443# CONFIG_MTD_ABSENT is not set
430# CONFIG_MTD_XIP is not set
431 444
432# 445#
433# Mapping drivers for chip access 446# Mapping drivers for chip access
434# 447#
435# CONFIG_MTD_COMPLEX_MAPPINGS is not set 448# CONFIG_MTD_COMPLEX_MAPPINGS is not set
436# CONFIG_MTD_PHYSMAP is not set 449CONFIG_MTD_PHYSMAP=y
450# CONFIG_MTD_PHYSMAP_COMPAT is not set
437# CONFIG_MTD_ARM_INTEGRATOR is not set 451# CONFIG_MTD_ARM_INTEGRATOR is not set
438# CONFIG_MTD_PLATRAM is not set 452# CONFIG_MTD_PLATRAM is not set
439 453
@@ -451,18 +465,15 @@ CONFIG_MTD_RAM=y
451# CONFIG_MTD_DOC2000 is not set 465# CONFIG_MTD_DOC2000 is not set
452# CONFIG_MTD_DOC2001 is not set 466# CONFIG_MTD_DOC2001 is not set
453# CONFIG_MTD_DOC2001PLUS is not set 467# CONFIG_MTD_DOC2001PLUS is not set
454CONFIG_MTD_NAND=y 468# CONFIG_MTD_NAND is not set
455# CONFIG_MTD_NAND_VERIFY_WRITE is not set
456# CONFIG_MTD_NAND_ECC_SMC is not set
457# CONFIG_MTD_NAND_MUSEUM_IDS is not set
458CONFIG_MTD_NAND_IDS=y
459# CONFIG_MTD_NAND_DISKONCHIP is not set
460# CONFIG_MTD_NAND_NANDSIM is not set
461# CONFIG_MTD_NAND_PLATFORM is not set
462# CONFIG_MTD_ALAUDA is not set
463# CONFIG_MTD_ONENAND is not set 469# CONFIG_MTD_ONENAND is not set
464 470
465# 471#
472# LPDDR flash memory drivers
473#
474# CONFIG_MTD_LPDDR is not set
475
476#
466# UBI - Unsorted block images 477# UBI - Unsorted block images
467# 478#
468# CONFIG_MTD_UBI is not set 479# CONFIG_MTD_UBI is not set
@@ -476,63 +487,58 @@ CONFIG_HAVE_IDE=y
476# SCSI device support 487# SCSI device support
477# 488#
478# CONFIG_RAID_ATTRS is not set 489# CONFIG_RAID_ATTRS is not set
479CONFIG_SCSI=y 490# CONFIG_SCSI is not set
480CONFIG_SCSI_DMA=y 491# CONFIG_SCSI_DMA is not set
481# CONFIG_SCSI_TGT is not set
482# CONFIG_SCSI_NETLINK is not set 492# CONFIG_SCSI_NETLINK is not set
483CONFIG_SCSI_PROC_FS=y
484
485#
486# SCSI support type (disk, tape, CD-ROM)
487#
488CONFIG_BLK_DEV_SD=y
489# CONFIG_CHR_DEV_ST is not set
490# CONFIG_CHR_DEV_OSST is not set
491# CONFIG_BLK_DEV_SR is not set
492# CONFIG_CHR_DEV_SG is not set
493# CONFIG_CHR_DEV_SCH is not set
494
495#
496# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
497#
498CONFIG_SCSI_MULTI_LUN=y
499# CONFIG_SCSI_CONSTANTS is not set
500# CONFIG_SCSI_LOGGING is not set
501# CONFIG_SCSI_SCAN_ASYNC is not set
502CONFIG_SCSI_WAIT_SCAN=m
503
504#
505# SCSI Transports
506#
507# CONFIG_SCSI_SPI_ATTRS is not set
508# CONFIG_SCSI_FC_ATTRS is not set
509# CONFIG_SCSI_ISCSI_ATTRS is not set
510# CONFIG_SCSI_SAS_LIBSAS is not set
511# CONFIG_SCSI_SRP_ATTRS is not set
512CONFIG_SCSI_LOWLEVEL=y
513# CONFIG_ISCSI_TCP is not set
514# CONFIG_SCSI_DEBUG is not set
515# CONFIG_ATA is not set 493# CONFIG_ATA is not set
516# CONFIG_MD is not set 494# CONFIG_MD is not set
517CONFIG_NETDEVICES=y 495CONFIG_NETDEVICES=y
518# CONFIG_NETDEVICES_MULTIQUEUE is not set 496CONFIG_COMPAT_NET_DEV_OPS=y
519# CONFIG_DUMMY is not set 497# CONFIG_DUMMY is not set
520# CONFIG_BONDING is not set 498# CONFIG_BONDING is not set
521# CONFIG_MACVLAN is not set 499# CONFIG_MACVLAN is not set
522# CONFIG_EQUALIZER is not set 500# CONFIG_EQUALIZER is not set
523# CONFIG_TUN is not set 501# CONFIG_TUN is not set
524# CONFIG_VETH is not set 502# CONFIG_VETH is not set
525# CONFIG_PHYLIB is not set 503CONFIG_PHYLIB=y
504
505#
506# MII PHY device drivers
507#
508# CONFIG_MARVELL_PHY is not set
509# CONFIG_DAVICOM_PHY is not set
510# CONFIG_QSEMI_PHY is not set
511# CONFIG_LXT_PHY is not set
512# CONFIG_CICADA_PHY is not set
513# CONFIG_VITESSE_PHY is not set
514CONFIG_SMSC_PHY=y
515# CONFIG_BROADCOM_PHY is not set
516# CONFIG_ICPLUS_PHY is not set
517# CONFIG_REALTEK_PHY is not set
518# CONFIG_NATIONAL_PHY is not set
519# CONFIG_STE10XP is not set
520# CONFIG_LSI_ET1011C_PHY is not set
521# CONFIG_FIXED_PHY is not set
522# CONFIG_MDIO_BITBANG is not set
526CONFIG_NET_ETHERNET=y 523CONFIG_NET_ETHERNET=y
527CONFIG_MII=y 524CONFIG_MII=y
528# CONFIG_AX88796 is not set 525# CONFIG_AX88796 is not set
529# CONFIG_SMC91X is not set 526# CONFIG_SMC91X is not set
530# CONFIG_DM9000 is not set 527# CONFIG_DM9000 is not set
528# CONFIG_ETHOC is not set
529# CONFIG_SMC911X is not set
530CONFIG_SMSC911X=y
531# CONFIG_DNET is not set
531# CONFIG_IBM_NEW_EMAC_ZMII is not set 532# CONFIG_IBM_NEW_EMAC_ZMII is not set
532# CONFIG_IBM_NEW_EMAC_RGMII is not set 533# CONFIG_IBM_NEW_EMAC_RGMII is not set
533# CONFIG_IBM_NEW_EMAC_TAH is not set 534# CONFIG_IBM_NEW_EMAC_TAH is not set
534# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 535# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
536# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
537# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
538# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
535# CONFIG_B44 is not set 539# CONFIG_B44 is not set
540CONFIG_CS89x0=y
541CONFIG_CS89x0_NONISA_IRQ=y
536# CONFIG_NETDEV_1000 is not set 542# CONFIG_NETDEV_1000 is not set
537# CONFIG_NETDEV_10000 is not set 543# CONFIG_NETDEV_10000 is not set
538 544
@@ -541,16 +547,10 @@ CONFIG_MII=y
541# 547#
542# CONFIG_WLAN_PRE80211 is not set 548# CONFIG_WLAN_PRE80211 is not set
543# CONFIG_WLAN_80211 is not set 549# CONFIG_WLAN_80211 is not set
544# CONFIG_IWLWIFI_LEDS is not set
545 550
546# 551#
547# USB Network Adapters 552# Enable WiMAX (Networking options) to see the WiMAX drivers
548# 553#
549# CONFIG_USB_CATC is not set
550# CONFIG_USB_KAWETH is not set
551# CONFIG_USB_PEGASUS is not set
552# CONFIG_USB_RTL8150 is not set
553# CONFIG_USB_USBNET is not set
554# CONFIG_WAN is not set 554# CONFIG_WAN is not set
555# CONFIG_PPP is not set 555# CONFIG_PPP is not set
556# CONFIG_SLIP is not set 556# CONFIG_SLIP is not set
@@ -562,43 +562,7 @@ CONFIG_MII=y
562# 562#
563# Input device support 563# Input device support
564# 564#
565CONFIG_INPUT=y 565# CONFIG_INPUT is not set
566# CONFIG_INPUT_FF_MEMLESS is not set
567# CONFIG_INPUT_POLLDEV is not set
568
569#
570# Userland interfaces
571#
572# CONFIG_INPUT_MOUSEDEV is not set
573# CONFIG_INPUT_JOYDEV is not set
574CONFIG_INPUT_EVDEV=y
575# CONFIG_INPUT_EVBUG is not set
576
577#
578# Input Device Drivers
579#
580CONFIG_INPUT_KEYBOARD=y
581# CONFIG_KEYBOARD_ATKBD is not set
582# CONFIG_KEYBOARD_SUNKBD is not set
583# CONFIG_KEYBOARD_LKKBD is not set
584# CONFIG_KEYBOARD_XTKBD is not set
585# CONFIG_KEYBOARD_NEWTON is not set
586# CONFIG_KEYBOARD_STOWAWAY is not set
587# CONFIG_INPUT_MOUSE is not set
588# CONFIG_INPUT_JOYSTICK is not set
589# CONFIG_INPUT_TABLET is not set
590CONFIG_INPUT_TOUCHSCREEN=y
591# CONFIG_TOUCHSCREEN_FUJITSU is not set
592# CONFIG_TOUCHSCREEN_GUNZE is not set
593# CONFIG_TOUCHSCREEN_ELO is not set
594# CONFIG_TOUCHSCREEN_MTOUCH is not set
595# CONFIG_TOUCHSCREEN_MK712 is not set
596# CONFIG_TOUCHSCREEN_PENMOUNT is not set
597# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
598# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
599# CONFIG_TOUCHSCREEN_UCB1400 is not set
600# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
601# CONFIG_INPUT_MISC is not set
602 566
603# 567#
604# Hardware I/O ports 568# Hardware I/O ports
@@ -609,10 +573,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
609# 573#
610# Character devices 574# Character devices
611# 575#
612CONFIG_VT=y 576# CONFIG_VT is not set
613CONFIG_VT_CONSOLE=y
614CONFIG_HW_CONSOLE=y
615# CONFIG_VT_HW_CONSOLE_BINDING is not set
616CONFIG_DEVKMEM=y 577CONFIG_DEVKMEM=y
617# CONFIG_SERIAL_NONSTANDARD is not set 578# CONFIG_SERIAL_NONSTANDARD is not set
618 579
@@ -624,45 +585,132 @@ CONFIG_DEVKMEM=y
624# 585#
625# Non-8250 serial port support 586# Non-8250 serial port support
626# 587#
588CONFIG_SERIAL_IMX=y
589CONFIG_SERIAL_IMX_CONSOLE=y
590CONFIG_SERIAL_CORE=y
591CONFIG_SERIAL_CORE_CONSOLE=y
627CONFIG_UNIX98_PTYS=y 592CONFIG_UNIX98_PTYS=y
628CONFIG_LEGACY_PTYS=y 593# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
629CONFIG_LEGACY_PTY_COUNT=256 594# CONFIG_LEGACY_PTYS is not set
630# CONFIG_IPMI_HANDLER is not set 595# CONFIG_IPMI_HANDLER is not set
631CONFIG_HW_RANDOM=y 596# CONFIG_HW_RANDOM is not set
632# CONFIG_NVRAM is not set
633# CONFIG_R3964 is not set 597# CONFIG_R3964 is not set
634# CONFIG_RAW_DRIVER is not set 598# CONFIG_RAW_DRIVER is not set
635# CONFIG_TCG_TPM is not set 599# CONFIG_TCG_TPM is not set
636# CONFIG_I2C is not set 600CONFIG_I2C=y
601CONFIG_I2C_BOARDINFO=y
602CONFIG_I2C_CHARDEV=y
603CONFIG_I2C_HELPER_AUTO=y
604
605#
606# I2C Hardware Bus support
607#
608
609#
610# I2C system bus drivers (mostly embedded / system-on-chip)
611#
612# CONFIG_I2C_GPIO is not set
613CONFIG_I2C_IMX=y
614# CONFIG_I2C_OCORES is not set
615# CONFIG_I2C_SIMTEC is not set
616
617#
618# External I2C/SMBus adapter drivers
619#
620# CONFIG_I2C_PARPORT_LIGHT is not set
621# CONFIG_I2C_TAOS_EVM is not set
622
623#
624# Other I2C/SMBus bus drivers
625#
626# CONFIG_I2C_PCA_PLATFORM is not set
627# CONFIG_I2C_STUB is not set
628
629#
630# Miscellaneous I2C Chip support
631#
632# CONFIG_DS1682 is not set
633# CONFIG_SENSORS_PCF8574 is not set
634# CONFIG_PCF8575 is not set
635# CONFIG_SENSORS_PCA9539 is not set
636# CONFIG_SENSORS_MAX6875 is not set
637# CONFIG_SENSORS_TSL2550 is not set
638# CONFIG_I2C_DEBUG_CORE is not set
639# CONFIG_I2C_DEBUG_ALGO is not set
640# CONFIG_I2C_DEBUG_BUS is not set
641# CONFIG_I2C_DEBUG_CHIP is not set
637# CONFIG_SPI is not set 642# CONFIG_SPI is not set
638# CONFIG_W1 is not set 643CONFIG_ARCH_REQUIRE_GPIOLIB=y
639# CONFIG_POWER_SUPPLY is not set 644CONFIG_GPIOLIB=y
640# CONFIG_HWMON is not set 645# CONFIG_GPIO_SYSFS is not set
641CONFIG_WATCHDOG=y
642CONFIG_WATCHDOG_NOWAYOUT=y
643 646
644# 647#
645# Watchdog Device Drivers 648# Memory mapped GPIO expanders:
646# 649#
647# CONFIG_SOFT_WATCHDOG is not set
648 650
649# 651#
650# USB-based Watchdog Cards 652# I2C GPIO expanders:
651# 653#
652# CONFIG_USBPCWATCHDOG is not set 654# CONFIG_GPIO_MAX732X is not set
655# CONFIG_GPIO_PCA953X is not set
656# CONFIG_GPIO_PCF857X is not set
653 657
654# 658#
655# Sonics Silicon Backplane 659# PCI GPIO expanders:
656# 660#
661
662#
663# SPI GPIO expanders:
664#
665CONFIG_W1=y
666
667#
668# 1-wire Bus Masters
669#
670# CONFIG_W1_MASTER_DS2482 is not set
671CONFIG_W1_MASTER_MXC=y
672# CONFIG_W1_MASTER_GPIO is not set
673
674#
675# 1-wire Slaves
676#
677CONFIG_W1_SLAVE_THERM=y
678# CONFIG_W1_SLAVE_SMEM is not set
679# CONFIG_W1_SLAVE_DS2431 is not set
680# CONFIG_W1_SLAVE_DS2433 is not set
681# CONFIG_W1_SLAVE_DS2760 is not set
682# CONFIG_W1_SLAVE_BQ27000 is not set
683# CONFIG_POWER_SUPPLY is not set
684# CONFIG_HWMON is not set
685# CONFIG_THERMAL is not set
686# CONFIG_THERMAL_HWMON is not set
687# CONFIG_WATCHDOG is not set
657CONFIG_SSB_POSSIBLE=y 688CONFIG_SSB_POSSIBLE=y
689
690#
691# Sonics Silicon Backplane
692#
658# CONFIG_SSB is not set 693# CONFIG_SSB is not set
659 694
660# 695#
661# Multifunction device drivers 696# Multifunction device drivers
662# 697#
698# CONFIG_MFD_CORE is not set
663# CONFIG_MFD_SM501 is not set 699# CONFIG_MFD_SM501 is not set
664# CONFIG_MFD_ASIC3 is not set 700# CONFIG_MFD_ASIC3 is not set
701# CONFIG_HTC_EGPIO is not set
665# CONFIG_HTC_PASIC3 is not set 702# CONFIG_HTC_PASIC3 is not set
703# CONFIG_TPS65010 is not set
704# CONFIG_TWL4030_CORE is not set
705# CONFIG_MFD_TMIO is not set
706# CONFIG_MFD_TC6393XB is not set
707# CONFIG_PMIC_DA903X is not set
708# CONFIG_MFD_WM8400 is not set
709CONFIG_MFD_WM8350=y
710CONFIG_MFD_WM8350_CONFIG_MODE_0=y
711CONFIG_MFD_WM8352_CONFIG_MODE_0=y
712CONFIG_MFD_WM8350_I2C=y
713# CONFIG_MFD_PCF50633 is not set
666 714
667# 715#
668# Multimedia devices 716# Multimedia devices
@@ -673,7 +721,7 @@ CONFIG_SSB_POSSIBLE=y
673# 721#
674CONFIG_VIDEO_DEV=y 722CONFIG_VIDEO_DEV=y
675CONFIG_VIDEO_V4L2_COMMON=y 723CONFIG_VIDEO_V4L2_COMMON=y
676CONFIG_VIDEO_ALLOW_V4L1=y 724# CONFIG_VIDEO_ALLOW_V4L1 is not set
677CONFIG_VIDEO_V4L1_COMPAT=y 725CONFIG_VIDEO_V4L1_COMPAT=y
678# CONFIG_DVB_CORE is not set 726# CONFIG_DVB_CORE is not set
679CONFIG_VIDEO_MEDIA=y 727CONFIG_VIDEO_MEDIA=y
@@ -682,34 +730,38 @@ CONFIG_VIDEO_MEDIA=y
682# Multimedia drivers 730# Multimedia drivers
683# 731#
684# CONFIG_MEDIA_ATTACH is not set 732# CONFIG_MEDIA_ATTACH is not set
733CONFIG_MEDIA_TUNER=y
734# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
735CONFIG_MEDIA_TUNER_SIMPLE=y
736CONFIG_MEDIA_TUNER_TDA8290=y
737CONFIG_MEDIA_TUNER_TDA9887=y
738CONFIG_MEDIA_TUNER_TEA5761=y
739CONFIG_MEDIA_TUNER_TEA5767=y
740CONFIG_MEDIA_TUNER_MT20XX=y
741CONFIG_MEDIA_TUNER_XC2028=y
742CONFIG_MEDIA_TUNER_XC5000=y
743CONFIG_MEDIA_TUNER_MC44S803=y
685CONFIG_VIDEO_V4L2=y 744CONFIG_VIDEO_V4L2=y
686CONFIG_VIDEO_V4L1=y 745CONFIG_VIDEOBUF_GEN=y
746CONFIG_VIDEOBUF_DMA_CONTIG=y
687CONFIG_VIDEO_CAPTURE_DRIVERS=y 747CONFIG_VIDEO_CAPTURE_DRIVERS=y
688# CONFIG_VIDEO_ADV_DEBUG is not set 748# CONFIG_VIDEO_ADV_DEBUG is not set
749# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
689CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 750CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
690# CONFIG_VIDEO_VIVI is not set 751# CONFIG_VIDEO_VIVI is not set
691# CONFIG_VIDEO_CPIA is not set 752# CONFIG_VIDEO_SAA5246A is not set
692# CONFIG_VIDEO_CPIA2 is not set 753# CONFIG_VIDEO_SAA5249 is not set
693CONFIG_V4L_USB_DRIVERS=y 754CONFIG_SOC_CAMERA=y
694# CONFIG_USB_VICAM is not set 755CONFIG_SOC_CAMERA_MT9M001=y
695# CONFIG_USB_IBMCAM is not set 756CONFIG_SOC_CAMERA_MT9M111=y
696# CONFIG_USB_KONICAWC is not set 757CONFIG_SOC_CAMERA_MT9T031=y
697# CONFIG_USB_QUICKCAM_MESSENGER is not set 758CONFIG_SOC_CAMERA_MT9V022=y
698# CONFIG_USB_ET61X251 is not set 759CONFIG_SOC_CAMERA_TW9910=y
699# CONFIG_USB_OV511 is not set 760# CONFIG_SOC_CAMERA_PLATFORM is not set
700# CONFIG_USB_SE401 is not set 761# CONFIG_SOC_CAMERA_OV772X is not set
701# CONFIG_USB_SN9C102 is not set 762CONFIG_VIDEO_MX3=y
702# CONFIG_USB_STV680 is not set 763# CONFIG_RADIO_ADAPTERS is not set
703# CONFIG_USB_ZC0301 is not set 764# CONFIG_DAB is not set
704# CONFIG_USB_PWC is not set
705# CONFIG_USB_ZR364XX is not set
706# CONFIG_USB_STKWEBCAM is not set
707# CONFIG_SOC_CAMERA is not set
708CONFIG_RADIO_ADAPTERS=y
709# CONFIG_USB_DSBR is not set
710# CONFIG_USB_SI470X is not set
711CONFIG_DAB=y
712# CONFIG_USB_DABUSB is not set
713 765
714# 766#
715# Graphics support 767# Graphics support
@@ -719,9 +771,10 @@ CONFIG_DAB=y
719CONFIG_FB=y 771CONFIG_FB=y
720# CONFIG_FIRMWARE_EDID is not set 772# CONFIG_FIRMWARE_EDID is not set
721# CONFIG_FB_DDC is not set 773# CONFIG_FB_DDC is not set
722# CONFIG_FB_CFB_FILLRECT is not set 774# CONFIG_FB_BOOT_VESA_SUPPORT is not set
723# CONFIG_FB_CFB_COPYAREA is not set 775CONFIG_FB_CFB_FILLRECT=y
724# CONFIG_FB_CFB_IMAGEBLIT is not set 776CONFIG_FB_CFB_COPYAREA=y
777CONFIG_FB_CFB_IMAGEBLIT=y
725# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 778# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
726# CONFIG_FB_SYS_FILLRECT is not set 779# CONFIG_FB_SYS_FILLRECT is not set
727# CONFIG_FB_SYS_COPYAREA is not set 780# CONFIG_FB_SYS_COPYAREA is not set
@@ -739,131 +792,79 @@ CONFIG_FB=y
739# 792#
740# CONFIG_FB_S1D13XXX is not set 793# CONFIG_FB_S1D13XXX is not set
741# CONFIG_FB_VIRTUAL is not set 794# CONFIG_FB_VIRTUAL is not set
795# CONFIG_FB_METRONOME is not set
796# CONFIG_FB_MB862XX is not set
797CONFIG_FB_MX3=y
798# CONFIG_FB_BROADSHEET is not set
742# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 799# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
743 800
744# 801#
745# Display device support 802# Display device support
746# 803#
747# CONFIG_DISPLAY_SUPPORT is not set 804# CONFIG_DISPLAY_SUPPORT is not set
748 805# CONFIG_LOGO is not set
749#
750# Console display driver support
751#
752# CONFIG_VGA_CONSOLE is not set
753CONFIG_DUMMY_CONSOLE=y
754CONFIG_FRAMEBUFFER_CONSOLE=y
755# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
756# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
757# CONFIG_FONTS is not set
758CONFIG_FONT_8x8=y
759CONFIG_FONT_8x16=y
760CONFIG_LOGO=y
761# CONFIG_LOGO_LINUX_MONO is not set
762# CONFIG_LOGO_LINUX_VGA16 is not set
763CONFIG_LOGO_LINUX_CLUT224=y
764
765#
766# Sound
767#
768# CONFIG_SOUND is not set 806# CONFIG_SOUND is not set
769# CONFIG_HID_SUPPORT is not set 807# CONFIG_USB_SUPPORT is not set
770CONFIG_USB_SUPPORT=y 808CONFIG_MMC=y
771CONFIG_USB_ARCH_HAS_HCD=y 809# CONFIG_MMC_DEBUG is not set
772# CONFIG_USB_ARCH_HAS_OHCI is not set 810# CONFIG_MMC_UNSAFE_RESUME is not set
773# CONFIG_USB_ARCH_HAS_EHCI is not set
774CONFIG_USB=y
775# CONFIG_USB_DEBUG is not set
776# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
777 811
778# 812#
779# Miscellaneous USB options 813# MMC/SD/SDIO Card Drivers
780# 814#
781# CONFIG_USB_DEVICEFS is not set 815CONFIG_MMC_BLOCK=y
782CONFIG_USB_DEVICE_CLASS=y 816CONFIG_MMC_BLOCK_BOUNCE=y
783# CONFIG_USB_DYNAMIC_MINORS is not set 817# CONFIG_SDIO_UART is not set
784# CONFIG_USB_SUSPEND is not set 818# CONFIG_MMC_TEST is not set
785# CONFIG_USB_OTG is not set
786# CONFIG_USB_OTG_WHITELIST is not set
787# CONFIG_USB_OTG_BLACKLIST_HUB is not set
788 819
789# 820#
790# USB Host Controller Drivers 821# MMC/SD/SDIO Host Controller Drivers
791# 822#
792# CONFIG_USB_C67X00_HCD is not set 823# CONFIG_MMC_SDHCI is not set
793# CONFIG_USB_ISP116X_HCD is not set 824CONFIG_MMC_MXC=y
794# CONFIG_USB_ISP1760_HCD is not set 825# CONFIG_MEMSTICK is not set
795# CONFIG_USB_SL811_HCD is not set 826# CONFIG_ACCESSIBILITY is not set
796# CONFIG_USB_R8A66597_HCD is not set 827# CONFIG_NEW_LEDS is not set
797 828CONFIG_RTC_LIB=y
798# 829# CONFIG_RTC_CLASS is not set
799# USB Device Class drivers 830CONFIG_DMADEVICES=y
800#
801# CONFIG_USB_ACM is not set
802# CONFIG_USB_PRINTER is not set
803# CONFIG_USB_WDM is not set
804
805#
806# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
807#
808
809#
810# may also be needed; see USB_STORAGE Help for more information
811#
812# CONFIG_USB_STORAGE is not set
813# CONFIG_USB_LIBUSUAL is not set
814
815#
816# USB Imaging devices
817#
818# CONFIG_USB_MDC800 is not set
819# CONFIG_USB_MICROTEK is not set
820CONFIG_USB_MON=y
821 831
822# 832#
823# USB port drivers 833# DMA Devices
824# 834#
825# CONFIG_USB_SERIAL is not set 835CONFIG_MX3_IPU=y
836CONFIG_MX3_IPU_IRQS=4
837CONFIG_DMA_ENGINE=y
826 838
827# 839#
828# USB Miscellaneous drivers 840# DMA Clients
829# 841#
830# CONFIG_USB_EMI62 is not set 842# CONFIG_NET_DMA is not set
831# CONFIG_USB_EMI26 is not set 843# CONFIG_ASYNC_TX_DMA is not set
832# CONFIG_USB_ADUTUX is not set 844# CONFIG_DMATEST is not set
833# CONFIG_USB_AUERSWALD is not set 845# CONFIG_AUXDISPLAY is not set
834# CONFIG_USB_RIO500 is not set 846CONFIG_REGULATOR=y
835# CONFIG_USB_LEGOTOWER is not set 847# CONFIG_REGULATOR_DEBUG is not set
836# CONFIG_USB_LCD is not set 848# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
837# CONFIG_USB_BERRY_CHARGE is not set 849# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
838# CONFIG_USB_LED is not set 850# CONFIG_REGULATOR_BQ24022 is not set
839# CONFIG_USB_CYPRESS_CY7C63 is not set 851CONFIG_REGULATOR_WM8350=y
840# CONFIG_USB_CYTHERM is not set
841# CONFIG_USB_PHIDGET is not set
842# CONFIG_USB_IDMOUSE is not set
843# CONFIG_USB_FTDI_ELAN is not set
844# CONFIG_USB_APPLEDISPLAY is not set
845# CONFIG_USB_LD is not set
846# CONFIG_USB_TRANCEVIBRATOR is not set
847# CONFIG_USB_IOWARRIOR is not set
848# CONFIG_USB_ISIGHTFW is not set
849# CONFIG_USB_GADGET is not set
850# CONFIG_MMC is not set
851# CONFIG_NEW_LEDS is not set
852CONFIG_RTC_LIB=y
853# CONFIG_RTC_CLASS is not set
854# CONFIG_UIO is not set 852# CONFIG_UIO is not set
853# CONFIG_STAGING is not set
855 854
856# 855#
857# File systems 856# File systems
858# 857#
859# CONFIG_EXT2_FS is not set 858# CONFIG_EXT2_FS is not set
860# CONFIG_EXT3_FS is not set 859# CONFIG_EXT3_FS is not set
861# CONFIG_EXT4DEV_FS is not set 860# CONFIG_EXT4_FS is not set
862# CONFIG_REISERFS_FS is not set 861# CONFIG_REISERFS_FS is not set
863# CONFIG_JFS_FS is not set 862# CONFIG_JFS_FS is not set
864# CONFIG_FS_POSIX_ACL is not set 863# CONFIG_FS_POSIX_ACL is not set
864CONFIG_FILE_LOCKING=y
865# CONFIG_XFS_FS is not set 865# CONFIG_XFS_FS is not set
866# CONFIG_OCFS2_FS is not set 866# CONFIG_OCFS2_FS is not set
867# CONFIG_BTRFS_FS is not set
867# CONFIG_DNOTIFY is not set 868# CONFIG_DNOTIFY is not set
868CONFIG_INOTIFY=y 869CONFIG_INOTIFY=y
869CONFIG_INOTIFY_USER=y 870CONFIG_INOTIFY_USER=y
@@ -873,6 +874,11 @@ CONFIG_INOTIFY_USER=y
873# CONFIG_FUSE_FS is not set 874# CONFIG_FUSE_FS is not set
874 875
875# 876#
877# Caches
878#
879# CONFIG_FSCACHE is not set
880
881#
876# CD-ROM/DVD Filesystems 882# CD-ROM/DVD Filesystems
877# 883#
878# CONFIG_ISO9660_FS is not set 884# CONFIG_ISO9660_FS is not set
@@ -890,15 +896,13 @@ CONFIG_INOTIFY_USER=y
890# 896#
891CONFIG_PROC_FS=y 897CONFIG_PROC_FS=y
892CONFIG_PROC_SYSCTL=y 898CONFIG_PROC_SYSCTL=y
899CONFIG_PROC_PAGE_MONITOR=y
893CONFIG_SYSFS=y 900CONFIG_SYSFS=y
894CONFIG_TMPFS=y 901CONFIG_TMPFS=y
895# CONFIG_TMPFS_POSIX_ACL is not set 902# CONFIG_TMPFS_POSIX_ACL is not set
896# CONFIG_HUGETLB_PAGE is not set 903# CONFIG_HUGETLB_PAGE is not set
897# CONFIG_CONFIGFS_FS is not set 904# CONFIG_CONFIGFS_FS is not set
898 905CONFIG_MISC_FILESYSTEMS=y
899#
900# Miscellaneous filesystems
901#
902# CONFIG_ADFS_FS is not set 906# CONFIG_ADFS_FS is not set
903# CONFIG_AFFS_FS is not set 907# CONFIG_AFFS_FS is not set
904# CONFIG_HFS_FS is not set 908# CONFIG_HFS_FS is not set
@@ -917,25 +921,30 @@ CONFIG_JFFS2_ZLIB=y
917# CONFIG_JFFS2_LZO is not set 921# CONFIG_JFFS2_LZO is not set
918CONFIG_JFFS2_RTIME=y 922CONFIG_JFFS2_RTIME=y
919# CONFIG_JFFS2_RUBIN is not set 923# CONFIG_JFFS2_RUBIN is not set
920CONFIG_CRAMFS=y 924# CONFIG_CRAMFS is not set
925# CONFIG_SQUASHFS is not set
921# CONFIG_VXFS_FS is not set 926# CONFIG_VXFS_FS is not set
922# CONFIG_MINIX_FS is not set 927# CONFIG_MINIX_FS is not set
928# CONFIG_OMFS_FS is not set
923# CONFIG_HPFS_FS is not set 929# CONFIG_HPFS_FS is not set
924# CONFIG_QNX4FS_FS is not set 930# CONFIG_QNX4FS_FS is not set
925# CONFIG_ROMFS_FS is not set 931# CONFIG_ROMFS_FS is not set
926# CONFIG_SYSV_FS is not set 932# CONFIG_SYSV_FS is not set
927# CONFIG_UFS_FS is not set 933# CONFIG_UFS_FS is not set
934# CONFIG_NILFS2_FS is not set
928CONFIG_NETWORK_FILESYSTEMS=y 935CONFIG_NETWORK_FILESYSTEMS=y
929CONFIG_NFS_FS=y 936CONFIG_NFS_FS=y
930# CONFIG_NFS_V3 is not set 937CONFIG_NFS_V3=y
931# CONFIG_NFS_V4 is not set 938# CONFIG_NFS_V3_ACL is not set
932# CONFIG_NFSD is not set 939CONFIG_NFS_V4=y
933CONFIG_ROOT_NFS=y 940CONFIG_ROOT_NFS=y
941# CONFIG_NFSD is not set
934CONFIG_LOCKD=y 942CONFIG_LOCKD=y
943CONFIG_LOCKD_V4=y
935CONFIG_NFS_COMMON=y 944CONFIG_NFS_COMMON=y
936CONFIG_SUNRPC=y 945CONFIG_SUNRPC=y
937# CONFIG_SUNRPC_BIND34 is not set 946CONFIG_SUNRPC_GSS=y
938# CONFIG_RPCSEC_GSS_KRB5 is not set 947CONFIG_RPCSEC_GSS_KRB5=y
939# CONFIG_RPCSEC_GSS_SPKM3 is not set 948# CONFIG_RPCSEC_GSS_SPKM3 is not set
940# CONFIG_SMB_FS is not set 949# CONFIG_SMB_FS is not set
941# CONFIG_CIFS is not set 950# CONFIG_CIFS is not set
@@ -954,65 +963,70 @@ CONFIG_MSDOS_PARTITION=y
954# 963#
955# Kernel hacking 964# Kernel hacking
956# 965#
957CONFIG_PRINTK_TIME=y 966# CONFIG_PRINTK_TIME is not set
958CONFIG_ENABLE_WARN_DEPRECATED=y 967# CONFIG_ENABLE_WARN_DEPRECATED is not set
959CONFIG_ENABLE_MUST_CHECK=y 968# CONFIG_ENABLE_MUST_CHECK is not set
960CONFIG_FRAME_WARN=1024 969CONFIG_FRAME_WARN=1024
961# CONFIG_MAGIC_SYSRQ is not set 970# CONFIG_MAGIC_SYSRQ is not set
962# CONFIG_UNUSED_SYMBOLS is not set 971# CONFIG_UNUSED_SYMBOLS is not set
963# CONFIG_DEBUG_FS is not set 972# CONFIG_DEBUG_FS is not set
964# CONFIG_HEADERS_CHECK is not set 973# CONFIG_HEADERS_CHECK is not set
965CONFIG_DEBUG_KERNEL=y 974# CONFIG_DEBUG_KERNEL is not set
966# CONFIG_DEBUG_SHIRQ is not set 975# CONFIG_DEBUG_BUGVERBOSE is not set
967CONFIG_DETECT_SOFTLOCKUP=y 976# CONFIG_DEBUG_MEMORY_INIT is not set
968CONFIG_SCHED_DEBUG=y 977# CONFIG_RCU_CPU_STALL_DETECTOR is not set
969# CONFIG_SCHEDSTATS is not set 978# CONFIG_LATENCYTOP is not set
970# CONFIG_TIMER_STATS is not set 979CONFIG_SYSCTL_SYSCALL_CHECK=y
971# CONFIG_DEBUG_OBJECTS is not set 980CONFIG_HAVE_FUNCTION_TRACER=y
972# CONFIG_DEBUG_SLAB is not set 981CONFIG_TRACING_SUPPORT=y
973CONFIG_DEBUG_PREEMPT=y 982
974# CONFIG_DEBUG_RT_MUTEXES is not set 983#
975# CONFIG_RT_MUTEX_TESTER is not set 984# Tracers
976# CONFIG_DEBUG_SPINLOCK is not set 985#
977# CONFIG_DEBUG_MUTEXES is not set 986# CONFIG_FUNCTION_TRACER is not set
978# CONFIG_DEBUG_LOCK_ALLOC is not set 987# CONFIG_IRQSOFF_TRACER is not set
979# CONFIG_PROVE_LOCKING is not set 988# CONFIG_PREEMPT_TRACER is not set
980# CONFIG_LOCK_STAT is not set 989# CONFIG_SCHED_TRACER is not set
981# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 990# CONFIG_CONTEXT_SWITCH_TRACER is not set
982# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 991# CONFIG_EVENT_TRACER is not set
983# CONFIG_DEBUG_KOBJECT is not set 992# CONFIG_BOOT_TRACER is not set
984CONFIG_DEBUG_BUGVERBOSE=y 993# CONFIG_TRACE_BRANCH_PROFILING is not set
985# CONFIG_DEBUG_INFO is not set 994# CONFIG_STACK_TRACER is not set
986# CONFIG_DEBUG_VM is not set 995# CONFIG_KMEMTRACE is not set
987# CONFIG_DEBUG_WRITECOUNT is not set 996# CONFIG_WORKQUEUE_TRACER is not set
988# CONFIG_DEBUG_LIST is not set 997# CONFIG_BLK_DEV_IO_TRACE is not set
989# CONFIG_DEBUG_SG is not set
990CONFIG_FRAME_POINTER=y
991# CONFIG_BOOT_PRINTK_DELAY is not set
992# CONFIG_RCU_TORTURE_TEST is not set
993# CONFIG_BACKTRACE_SELF_TEST is not set
994# CONFIG_FAULT_INJECTION is not set
995# CONFIG_SAMPLES is not set 998# CONFIG_SAMPLES is not set
999CONFIG_HAVE_ARCH_KGDB=y
1000CONFIG_ARM_UNWIND=y
996# CONFIG_DEBUG_USER is not set 1001# CONFIG_DEBUG_USER is not set
997CONFIG_DEBUG_ERRORS=y
998# CONFIG_DEBUG_STACK_USAGE is not set
999CONFIG_DEBUG_LL=y
1000# CONFIG_DEBUG_ICEDCC is not set
1001 1002
1002# 1003#
1003# Security options 1004# Security options
1004# 1005#
1005# CONFIG_KEYS is not set 1006# CONFIG_KEYS is not set
1006# CONFIG_SECURITY is not set 1007# CONFIG_SECURITY is not set
1008# CONFIG_SECURITYFS is not set
1007# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1009# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1008CONFIG_CRYPTO=y 1010CONFIG_CRYPTO=y
1009 1011
1010# 1012#
1011# Crypto core or helper 1013# Crypto core or helper
1012# 1014#
1013# CONFIG_CRYPTO_MANAGER is not set 1015# CONFIG_CRYPTO_FIPS is not set
1016CONFIG_CRYPTO_ALGAPI=y
1017CONFIG_CRYPTO_ALGAPI2=y
1018CONFIG_CRYPTO_AEAD2=y
1019CONFIG_CRYPTO_BLKCIPHER=y
1020CONFIG_CRYPTO_BLKCIPHER2=y
1021CONFIG_CRYPTO_HASH=y
1022CONFIG_CRYPTO_HASH2=y
1023CONFIG_CRYPTO_RNG2=y
1024CONFIG_CRYPTO_PCOMP=y
1025CONFIG_CRYPTO_MANAGER=y
1026CONFIG_CRYPTO_MANAGER2=y
1014# CONFIG_CRYPTO_GF128MUL is not set 1027# CONFIG_CRYPTO_GF128MUL is not set
1015# CONFIG_CRYPTO_NULL is not set 1028# CONFIG_CRYPTO_NULL is not set
1029CONFIG_CRYPTO_WORKQUEUE=y
1016# CONFIG_CRYPTO_CRYPTD is not set 1030# CONFIG_CRYPTO_CRYPTD is not set
1017# CONFIG_CRYPTO_AUTHENC is not set 1031# CONFIG_CRYPTO_AUTHENC is not set
1018# CONFIG_CRYPTO_TEST is not set 1032# CONFIG_CRYPTO_TEST is not set
@@ -1027,7 +1041,7 @@ CONFIG_CRYPTO=y
1027# 1041#
1028# Block modes 1042# Block modes
1029# 1043#
1030# CONFIG_CRYPTO_CBC is not set 1044CONFIG_CRYPTO_CBC=y
1031# CONFIG_CRYPTO_CTR is not set 1045# CONFIG_CRYPTO_CTR is not set
1032# CONFIG_CRYPTO_CTS is not set 1046# CONFIG_CRYPTO_CTS is not set
1033# CONFIG_CRYPTO_ECB is not set 1047# CONFIG_CRYPTO_ECB is not set
@@ -1046,8 +1060,12 @@ CONFIG_CRYPTO=y
1046# 1060#
1047# CONFIG_CRYPTO_CRC32C is not set 1061# CONFIG_CRYPTO_CRC32C is not set
1048# CONFIG_CRYPTO_MD4 is not set 1062# CONFIG_CRYPTO_MD4 is not set
1049# CONFIG_CRYPTO_MD5 is not set 1063CONFIG_CRYPTO_MD5=y
1050# CONFIG_CRYPTO_MICHAEL_MIC is not set 1064# CONFIG_CRYPTO_MICHAEL_MIC is not set
1065# CONFIG_CRYPTO_RMD128 is not set
1066# CONFIG_CRYPTO_RMD160 is not set
1067# CONFIG_CRYPTO_RMD256 is not set
1068# CONFIG_CRYPTO_RMD320 is not set
1051# CONFIG_CRYPTO_SHA1 is not set 1069# CONFIG_CRYPTO_SHA1 is not set
1052# CONFIG_CRYPTO_SHA256 is not set 1070# CONFIG_CRYPTO_SHA256 is not set
1053# CONFIG_CRYPTO_SHA512 is not set 1071# CONFIG_CRYPTO_SHA512 is not set
@@ -1064,7 +1082,7 @@ CONFIG_CRYPTO=y
1064# CONFIG_CRYPTO_CAMELLIA is not set 1082# CONFIG_CRYPTO_CAMELLIA is not set
1065# CONFIG_CRYPTO_CAST5 is not set 1083# CONFIG_CRYPTO_CAST5 is not set
1066# CONFIG_CRYPTO_CAST6 is not set 1084# CONFIG_CRYPTO_CAST6 is not set
1067# CONFIG_CRYPTO_DES is not set 1085CONFIG_CRYPTO_DES=y
1068# CONFIG_CRYPTO_FCRYPT is not set 1086# CONFIG_CRYPTO_FCRYPT is not set
1069# CONFIG_CRYPTO_KHAZAD is not set 1087# CONFIG_CRYPTO_KHAZAD is not set
1070# CONFIG_CRYPTO_SALSA20 is not set 1088# CONFIG_CRYPTO_SALSA20 is not set
@@ -1077,24 +1095,31 @@ CONFIG_CRYPTO=y
1077# Compression 1095# Compression
1078# 1096#
1079# CONFIG_CRYPTO_DEFLATE is not set 1097# CONFIG_CRYPTO_DEFLATE is not set
1098# CONFIG_CRYPTO_ZLIB is not set
1080# CONFIG_CRYPTO_LZO is not set 1099# CONFIG_CRYPTO_LZO is not set
1100
1101#
1102# Random Number Generation
1103#
1104# CONFIG_CRYPTO_ANSI_CPRNG is not set
1081CONFIG_CRYPTO_HW=y 1105CONFIG_CRYPTO_HW=y
1106# CONFIG_BINARY_PRINTF is not set
1082 1107
1083# 1108#
1084# Library routines 1109# Library routines
1085# 1110#
1086CONFIG_BITREVERSE=y 1111CONFIG_BITREVERSE=y
1087# CONFIG_GENERIC_FIND_FIRST_BIT is not set 1112CONFIG_GENERIC_FIND_LAST_BIT=y
1088# CONFIG_GENERIC_FIND_NEXT_BIT is not set 1113# CONFIG_CRC_CCITT is not set
1089CONFIG_CRC_CCITT=m
1090# CONFIG_CRC16 is not set 1114# CONFIG_CRC16 is not set
1115# CONFIG_CRC_T10DIF is not set
1091# CONFIG_CRC_ITU_T is not set 1116# CONFIG_CRC_ITU_T is not set
1092CONFIG_CRC32=y 1117CONFIG_CRC32=y
1093# CONFIG_CRC7 is not set 1118# CONFIG_CRC7 is not set
1094# CONFIG_LIBCRC32C is not set 1119# CONFIG_LIBCRC32C is not set
1095CONFIG_ZLIB_INFLATE=y 1120CONFIG_ZLIB_INFLATE=y
1096CONFIG_ZLIB_DEFLATE=y 1121CONFIG_ZLIB_DEFLATE=y
1097CONFIG_PLIST=y
1098CONFIG_HAS_IOMEM=y 1122CONFIG_HAS_IOMEM=y
1099CONFIG_HAS_IOPORT=y 1123CONFIG_HAS_IOPORT=y
1100CONFIG_HAS_DMA=y 1124CONFIG_HAS_DMA=y
1125CONFIG_NLATTR=y
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig
index 65a583ee5df8..2d58b8fe59be 100644
--- a/arch/arm/configs/s3c2410_defconfig
+++ b/arch/arm/configs/s3c2410_defconfig
@@ -1,9 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc8 3# Linux kernel version: 2.6.30-rc2
4# Mon Jul 7 16:59:23 2008
5# 4#
6CONFIG_ARM=y 5CONFIG_ARM=y
6CONFIG_HAVE_PWM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y 8CONFIG_GENERIC_GPIO=y
9# CONFIG_GENERIC_TIME is not set 9# CONFIG_GENERIC_TIME is not set
@@ -12,6 +12,7 @@ CONFIG_MMU=y
12CONFIG_NO_IOPORT=y 12CONFIG_NO_IOPORT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y 14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 16CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y 17CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y 18CONFIG_HARDIRQS_SW_RESEND=y
@@ -21,8 +22,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y 23CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 24CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y 25CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
25CONFIG_ZONE_DMA=y
26CONFIG_VECTORS_BASE=0xffff0000 26CONFIG_VECTORS_BASE=0xffff0000
27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
28 28
@@ -41,11 +41,20 @@ CONFIG_SYSVIPC_SYSCTL=y
41# CONFIG_BSD_PROCESS_ACCT is not set 41# CONFIG_BSD_PROCESS_ACCT is not set
42# CONFIG_TASKSTATS is not set 42# CONFIG_TASKSTATS is not set
43# CONFIG_AUDIT is not set 43# CONFIG_AUDIT is not set
44
45#
46# RCU Subsystem
47#
48CONFIG_CLASSIC_RCU=y
49# CONFIG_TREE_RCU is not set
50# CONFIG_PREEMPT_RCU is not set
51# CONFIG_TREE_RCU_TRACE is not set
52# CONFIG_PREEMPT_RCU_TRACE is not set
44CONFIG_IKCONFIG=m 53CONFIG_IKCONFIG=m
45CONFIG_IKCONFIG_PROC=y 54CONFIG_IKCONFIG_PROC=y
46CONFIG_LOG_BUF_SHIFT=16 55CONFIG_LOG_BUF_SHIFT=16
47# CONFIG_CGROUPS is not set
48# CONFIG_GROUP_SCHED is not set 56# CONFIG_GROUP_SCHED is not set
57# CONFIG_CGROUPS is not set
49CONFIG_SYSFS_DEPRECATED=y 58CONFIG_SYSFS_DEPRECATED=y
50CONFIG_SYSFS_DEPRECATED_V2=y 59CONFIG_SYSFS_DEPRECATED_V2=y
51# CONFIG_RELAY is not set 60# CONFIG_RELAY is not set
@@ -54,31 +63,36 @@ CONFIG_NAMESPACES=y
54# CONFIG_IPC_NS is not set 63# CONFIG_IPC_NS is not set
55# CONFIG_USER_NS is not set 64# CONFIG_USER_NS is not set
56# CONFIG_PID_NS is not set 65# CONFIG_PID_NS is not set
66# CONFIG_NET_NS is not set
57CONFIG_BLK_DEV_INITRD=y 67CONFIG_BLK_DEV_INITRD=y
58CONFIG_INITRAMFS_SOURCE="" 68CONFIG_INITRAMFS_SOURCE=""
69CONFIG_RD_GZIP=y
70CONFIG_RD_BZIP2=y
71CONFIG_RD_LZMA=y
59CONFIG_CC_OPTIMIZE_FOR_SIZE=y 72CONFIG_CC_OPTIMIZE_FOR_SIZE=y
60CONFIG_SYSCTL=y 73CONFIG_SYSCTL=y
74CONFIG_ANON_INODES=y
61# CONFIG_EMBEDDED is not set 75# CONFIG_EMBEDDED is not set
62CONFIG_UID16=y 76CONFIG_UID16=y
63CONFIG_SYSCTL_SYSCALL=y 77CONFIG_SYSCTL_SYSCALL=y
64CONFIG_SYSCTL_SYSCALL_CHECK=y
65CONFIG_KALLSYMS=y 78CONFIG_KALLSYMS=y
66# CONFIG_KALLSYMS_ALL is not set 79# CONFIG_KALLSYMS_ALL is not set
67# CONFIG_KALLSYMS_EXTRA_PASS is not set 80# CONFIG_KALLSYMS_EXTRA_PASS is not set
81# CONFIG_STRIP_ASM_SYMS is not set
68CONFIG_HOTPLUG=y 82CONFIG_HOTPLUG=y
69CONFIG_PRINTK=y 83CONFIG_PRINTK=y
70CONFIG_BUG=y 84CONFIG_BUG=y
71CONFIG_ELF_CORE=y 85CONFIG_ELF_CORE=y
72CONFIG_COMPAT_BRK=y
73CONFIG_BASE_FULL=y 86CONFIG_BASE_FULL=y
74CONFIG_FUTEX=y 87CONFIG_FUTEX=y
75CONFIG_ANON_INODES=y
76CONFIG_EPOLL=y 88CONFIG_EPOLL=y
77CONFIG_SIGNALFD=y 89CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y 90CONFIG_TIMERFD=y
79CONFIG_EVENTFD=y 91CONFIG_EVENTFD=y
80CONFIG_SHMEM=y 92CONFIG_SHMEM=y
93CONFIG_AIO=y
81CONFIG_VM_EVENT_COUNTERS=y 94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_COMPAT_BRK=y
82CONFIG_SLAB=y 96CONFIG_SLAB=y
83# CONFIG_SLUB is not set 97# CONFIG_SLUB is not set
84# CONFIG_SLOB is not set 98# CONFIG_SLOB is not set
@@ -88,11 +102,11 @@ CONFIG_HAVE_OPROFILE=y
88# CONFIG_KPROBES is not set 102# CONFIG_KPROBES is not set
89CONFIG_HAVE_KPROBES=y 103CONFIG_HAVE_KPROBES=y
90CONFIG_HAVE_KRETPROBES=y 104CONFIG_HAVE_KRETPROBES=y
91# CONFIG_HAVE_DMA_ATTRS is not set 105CONFIG_HAVE_CLK=y
92CONFIG_PROC_PAGE_MONITOR=y 106# CONFIG_SLOW_WORK is not set
107CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 109CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set
96CONFIG_BASE_SMALL=0 110CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 111CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set 112# CONFIG_MODULE_FORCE_LOAD is not set
@@ -100,12 +114,10 @@ CONFIG_MODULE_UNLOAD=y
100# CONFIG_MODULE_FORCE_UNLOAD is not set 114# CONFIG_MODULE_FORCE_UNLOAD is not set
101# CONFIG_MODVERSIONS is not set 115# CONFIG_MODVERSIONS is not set
102# CONFIG_MODULE_SRCVERSION_ALL is not set 116# CONFIG_MODULE_SRCVERSION_ALL is not set
103CONFIG_KMOD=y
104CONFIG_BLOCK=y 117CONFIG_BLOCK=y
105# CONFIG_LBD is not set 118# CONFIG_LBD is not set
106# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 119# CONFIG_BLK_DEV_BSG is not set
120# CONFIG_BLK_DEV_INTEGRITY is not set
109 121
110# 122#
111# IO Schedulers 123# IO Schedulers
@@ -119,7 +131,7 @@ CONFIG_DEFAULT_AS=y
119# CONFIG_DEFAULT_CFQ is not set 131# CONFIG_DEFAULT_CFQ is not set
120# CONFIG_DEFAULT_NOOP is not set 132# CONFIG_DEFAULT_NOOP is not set
121CONFIG_DEFAULT_IOSCHED="anticipatory" 133CONFIG_DEFAULT_IOSCHED="anticipatory"
122CONFIG_CLASSIC_RCU=y 134CONFIG_FREEZER=y
123 135
124# 136#
125# System Type 137# System Type
@@ -129,11 +141,10 @@ CONFIG_CLASSIC_RCU=y
129# CONFIG_ARCH_REALVIEW is not set 141# CONFIG_ARCH_REALVIEW is not set
130# CONFIG_ARCH_VERSATILE is not set 142# CONFIG_ARCH_VERSATILE is not set
131# CONFIG_ARCH_AT91 is not set 143# CONFIG_ARCH_AT91 is not set
132# CONFIG_ARCH_CLPS7500 is not set
133# CONFIG_ARCH_CLPS711X is not set 144# CONFIG_ARCH_CLPS711X is not set
134# CONFIG_ARCH_CO285 is not set
135# CONFIG_ARCH_EBSA110 is not set 145# CONFIG_ARCH_EBSA110 is not set
136# CONFIG_ARCH_EP93XX is not set 146# CONFIG_ARCH_EP93XX is not set
147# CONFIG_ARCH_GEMINI is not set
137# CONFIG_ARCH_FOOTBRIDGE is not set 148# CONFIG_ARCH_FOOTBRIDGE is not set
138# CONFIG_ARCH_NETX is not set 149# CONFIG_ARCH_NETX is not set
139# CONFIG_ARCH_H720X is not set 150# CONFIG_ARCH_H720X is not set
@@ -145,26 +156,38 @@ CONFIG_CLASSIC_RCU=y
145# CONFIG_ARCH_IXP2000 is not set 156# CONFIG_ARCH_IXP2000 is not set
146# CONFIG_ARCH_IXP4XX is not set 157# CONFIG_ARCH_IXP4XX is not set
147# CONFIG_ARCH_L7200 is not set 158# CONFIG_ARCH_L7200 is not set
159# CONFIG_ARCH_KIRKWOOD is not set
148# CONFIG_ARCH_KS8695 is not set 160# CONFIG_ARCH_KS8695 is not set
149# CONFIG_ARCH_NS9XXX is not set 161# CONFIG_ARCH_NS9XXX is not set
162# CONFIG_ARCH_LOKI is not set
163# CONFIG_ARCH_MV78XX0 is not set
150# CONFIG_ARCH_MXC is not set 164# CONFIG_ARCH_MXC is not set
151# CONFIG_ARCH_ORION5X is not set 165# CONFIG_ARCH_ORION5X is not set
152# CONFIG_ARCH_PNX4008 is not set 166# CONFIG_ARCH_PNX4008 is not set
153# CONFIG_ARCH_PXA is not set 167# CONFIG_ARCH_PXA is not set
168# CONFIG_ARCH_MMP is not set
154# CONFIG_ARCH_RPC is not set 169# CONFIG_ARCH_RPC is not set
155# CONFIG_ARCH_SA1100 is not set 170# CONFIG_ARCH_SA1100 is not set
156CONFIG_ARCH_S3C2410=y 171CONFIG_ARCH_S3C2410=y
172# CONFIG_ARCH_S3C64XX is not set
157# CONFIG_ARCH_SHARK is not set 173# CONFIG_ARCH_SHARK is not set
158# CONFIG_ARCH_LH7A40X is not set 174# CONFIG_ARCH_LH7A40X is not set
159# CONFIG_ARCH_DAVINCI is not set 175# CONFIG_ARCH_DAVINCI is not set
160# CONFIG_ARCH_OMAP is not set 176# CONFIG_ARCH_OMAP is not set
161# CONFIG_ARCH_MSM7X00A is not set 177# CONFIG_ARCH_MSM is not set
178# CONFIG_ARCH_W90X900 is not set
162CONFIG_PLAT_S3C24XX=y 179CONFIG_PLAT_S3C24XX=y
180CONFIG_S3C2410_CLOCK=y
181CONFIG_S3C24XX_DCLK=y
163CONFIG_CPU_S3C244X=y 182CONFIG_CPU_S3C244X=y
164# CONFIG_S3C24XX_PWM is not set 183CONFIG_S3C24XX_PWM=y
184CONFIG_S3C24XX_GPIO_EXTRA=128
185CONFIG_S3C24XX_GPIO_EXTRA64=y
186CONFIG_S3C24XX_GPIO_EXTRA128=y
165CONFIG_PM_SIMTEC=y 187CONFIG_PM_SIMTEC=y
166CONFIG_S3C2410_DMA=y 188CONFIG_S3C2410_DMA=y
167# CONFIG_S3C2410_DMA_DEBUG is not set 189# CONFIG_S3C2410_DMA_DEBUG is not set
190CONFIG_S3C24XX_ADC=y
168CONFIG_MACH_SMDK=y 191CONFIG_MACH_SMDK=y
169CONFIG_PLAT_S3C=y 192CONFIG_PLAT_S3C=y
170CONFIG_CPU_LLSERIAL_S3C2410=y 193CONFIG_CPU_LLSERIAL_S3C2410=y
@@ -174,7 +197,8 @@ CONFIG_CPU_LLSERIAL_S3C2440=y
174# Boot options 197# Boot options
175# 198#
176# CONFIG_S3C_BOOT_WATCHDOG is not set 199# CONFIG_S3C_BOOT_WATCHDOG is not set
177# CONFIG_S3C_BOOT_ERROR_RESET is not set 200CONFIG_S3C_BOOT_ERROR_RESET=y
201CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
178 202
179# 203#
180# Power management 204# Power management
@@ -182,6 +206,8 @@ CONFIG_CPU_LLSERIAL_S3C2440=y
182# CONFIG_S3C2410_PM_DEBUG is not set 206# CONFIG_S3C2410_PM_DEBUG is not set
183# CONFIG_S3C2410_PM_CHECK is not set 207# CONFIG_S3C2410_PM_CHECK is not set
184CONFIG_S3C_LOWLEVEL_UART_PORT=0 208CONFIG_S3C_LOWLEVEL_UART_PORT=0
209CONFIG_S3C_GPIO_SPACE=0
210CONFIG_S3C_DEV_HSMMC=y
185 211
186# 212#
187# S3C2400 Machines 213# S3C2400 Machines
@@ -190,7 +216,6 @@ CONFIG_CPU_S3C2410=y
190CONFIG_CPU_S3C2410_DMA=y 216CONFIG_CPU_S3C2410_DMA=y
191CONFIG_S3C2410_PM=y 217CONFIG_S3C2410_PM=y
192CONFIG_S3C2410_GPIO=y 218CONFIG_S3C2410_GPIO=y
193CONFIG_S3C2410_CLOCK=y
194CONFIG_SIMTEC_NOR=y 219CONFIG_SIMTEC_NOR=y
195CONFIG_MACH_BAST_IDE=y 220CONFIG_MACH_BAST_IDE=y
196 221
@@ -205,7 +230,7 @@ CONFIG_ARCH_BAST=y
205CONFIG_MACH_OTOM=y 230CONFIG_MACH_OTOM=y
206CONFIG_MACH_AML_M5900=y 231CONFIG_MACH_AML_M5900=y
207CONFIG_BAST_PC104_IRQ=y 232CONFIG_BAST_PC104_IRQ=y
208# CONFIG_MACH_TCT_HAMMER is not set 233CONFIG_MACH_TCT_HAMMER=y
209CONFIG_MACH_VR1000=y 234CONFIG_MACH_VR1000=y
210CONFIG_MACH_QT2410=y 235CONFIG_MACH_QT2410=y
211CONFIG_CPU_S3C2412=y 236CONFIG_CPU_S3C2412=y
@@ -215,10 +240,11 @@ CONFIG_S3C2412_PM=y
215# 240#
216# S3C2412 Machines 241# S3C2412 Machines
217# 242#
218# CONFIG_MACH_JIVE is not set 243CONFIG_MACH_JIVE=y
244# CONFIG_MACH_JIVE_SHOW_BOOTLOADER is not set
219CONFIG_MACH_SMDK2413=y 245CONFIG_MACH_SMDK2413=y
220CONFIG_MACH_S3C2413=y 246CONFIG_MACH_S3C2413=y
221# CONFIG_MACH_SMDK2412 is not set 247CONFIG_MACH_SMDK2412=y
222CONFIG_MACH_VSTMS=y 248CONFIG_MACH_VSTMS=y
223CONFIG_CPU_S3C2440=y 249CONFIG_CPU_S3C2440=y
224CONFIG_S3C2440_DMA=y 250CONFIG_S3C2440_DMA=y
@@ -232,7 +258,7 @@ CONFIG_MACH_RX3715=y
232CONFIG_ARCH_S3C2440=y 258CONFIG_ARCH_S3C2440=y
233CONFIG_MACH_NEXCODER_2440=y 259CONFIG_MACH_NEXCODER_2440=y
234CONFIG_SMDK2440_CPU2440=y 260CONFIG_SMDK2440_CPU2440=y
235# CONFIG_MACH_AT2440EVB is not set 261CONFIG_MACH_AT2440EVB=y
236CONFIG_CPU_S3C2442=y 262CONFIG_CPU_S3C2442=y
237 263
238# 264#
@@ -286,25 +312,31 @@ CONFIG_ISA=y
286# 312#
287# Kernel Features 313# Kernel Features
288# 314#
289# CONFIG_TICK_ONESHOT is not set 315CONFIG_VMSPLIT_3G=y
316# CONFIG_VMSPLIT_2G is not set
317# CONFIG_VMSPLIT_1G is not set
318CONFIG_PAGE_OFFSET=0xC0000000
290# CONFIG_PREEMPT is not set 319# CONFIG_PREEMPT is not set
291CONFIG_HZ=200 320CONFIG_HZ=200
292# CONFIG_AEABI is not set 321# CONFIG_AEABI is not set
293# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 322CONFIG_ARCH_FLATMEM_HAS_HOLES=y
323# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
324# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
325# CONFIG_HIGHMEM is not set
294CONFIG_SELECT_MEMORY_MODEL=y 326CONFIG_SELECT_MEMORY_MODEL=y
295CONFIG_FLATMEM_MANUAL=y 327CONFIG_FLATMEM_MANUAL=y
296# CONFIG_DISCONTIGMEM_MANUAL is not set 328# CONFIG_DISCONTIGMEM_MANUAL is not set
297# CONFIG_SPARSEMEM_MANUAL is not set 329# CONFIG_SPARSEMEM_MANUAL is not set
298CONFIG_FLATMEM=y 330CONFIG_FLATMEM=y
299CONFIG_FLAT_NODE_MEM_MAP=y 331CONFIG_FLAT_NODE_MEM_MAP=y
300# CONFIG_SPARSEMEM_STATIC is not set
301# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
302CONFIG_PAGEFLAGS_EXTENDED=y 332CONFIG_PAGEFLAGS_EXTENDED=y
303CONFIG_SPLIT_PTLOCK_CPUS=4096 333CONFIG_SPLIT_PTLOCK_CPUS=4096
304# CONFIG_RESOURCES_64BIT is not set 334# CONFIG_PHYS_ADDR_T_64BIT is not set
305CONFIG_ZONE_DMA_FLAG=1 335CONFIG_ZONE_DMA_FLAG=0
306CONFIG_BOUNCE=y
307CONFIG_VIRT_TO_BUS=y 336CONFIG_VIRT_TO_BUS=y
337CONFIG_UNEVICTABLE_LRU=y
338CONFIG_HAVE_MLOCK=y
339CONFIG_HAVE_MLOCKED_PAGE_BIT=y
308CONFIG_ALIGNMENT_TRAP=y 340CONFIG_ALIGNMENT_TRAP=y
309 341
310# 342#
@@ -317,6 +349,11 @@ CONFIG_CMDLINE="root=/dev/hda1 ro init=/bin/bash console=ttySAC0"
317# CONFIG_KEXEC is not set 349# CONFIG_KEXEC is not set
318 350
319# 351#
352# CPU Power Management
353#
354# CONFIG_CPU_IDLE is not set
355
356#
320# Floating point emulation 357# Floating point emulation
321# 358#
322 359
@@ -332,6 +369,8 @@ CONFIG_FPE_NWFPE_XP=y
332# Userspace binary formats 369# Userspace binary formats
333# 370#
334CONFIG_BINFMT_ELF=y 371CONFIG_BINFMT_ELF=y
372# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
373CONFIG_HAVE_AOUT=y
335CONFIG_BINFMT_AOUT=y 374CONFIG_BINFMT_AOUT=y
336# CONFIG_BINFMT_MISC is not set 375# CONFIG_BINFMT_MISC is not set
337# CONFIG_ARTHUR is not set 376# CONFIG_ARTHUR is not set
@@ -346,10 +385,6 @@ CONFIG_SUSPEND=y
346CONFIG_SUSPEND_FREEZER=y 385CONFIG_SUSPEND_FREEZER=y
347CONFIG_APM_EMULATION=m 386CONFIG_APM_EMULATION=m
348CONFIG_ARCH_SUSPEND_POSSIBLE=y 387CONFIG_ARCH_SUSPEND_POSSIBLE=y
349
350#
351# Networking
352#
353CONFIG_NET=y 388CONFIG_NET=y
354 389
355# 390#
@@ -359,11 +394,13 @@ CONFIG_PACKET=y
359# CONFIG_PACKET_MMAP is not set 394# CONFIG_PACKET_MMAP is not set
360CONFIG_UNIX=y 395CONFIG_UNIX=y
361CONFIG_XFRM=y 396CONFIG_XFRM=y
362# CONFIG_XFRM_USER is not set 397CONFIG_XFRM_USER=m
363# CONFIG_XFRM_SUB_POLICY is not set 398# CONFIG_XFRM_SUB_POLICY is not set
364# CONFIG_XFRM_MIGRATE is not set 399# CONFIG_XFRM_MIGRATE is not set
365# CONFIG_XFRM_STATISTICS is not set 400# CONFIG_XFRM_STATISTICS is not set
366# CONFIG_NET_KEY is not set 401CONFIG_XFRM_IPCOMP=m
402CONFIG_NET_KEY=m
403# CONFIG_NET_KEY_MIGRATE is not set
367CONFIG_INET=y 404CONFIG_INET=y
368CONFIG_IP_MULTICAST=y 405CONFIG_IP_MULTICAST=y
369# CONFIG_IP_ADVANCED_ROUTER is not set 406# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -372,15 +409,16 @@ CONFIG_IP_PNP=y
372CONFIG_IP_PNP_DHCP=y 409CONFIG_IP_PNP_DHCP=y
373CONFIG_IP_PNP_BOOTP=y 410CONFIG_IP_PNP_BOOTP=y
374# CONFIG_IP_PNP_RARP is not set 411# CONFIG_IP_PNP_RARP is not set
375# CONFIG_NET_IPIP is not set 412CONFIG_NET_IPIP=m
376# CONFIG_NET_IPGRE is not set 413CONFIG_NET_IPGRE=m
414# CONFIG_NET_IPGRE_BROADCAST is not set
377# CONFIG_IP_MROUTE is not set 415# CONFIG_IP_MROUTE is not set
378# CONFIG_ARPD is not set 416# CONFIG_ARPD is not set
379# CONFIG_SYN_COOKIES is not set 417# CONFIG_SYN_COOKIES is not set
380# CONFIG_INET_AH is not set 418CONFIG_INET_AH=m
381# CONFIG_INET_ESP is not set 419CONFIG_INET_ESP=m
382# CONFIG_INET_IPCOMP is not set 420CONFIG_INET_IPCOMP=m
383# CONFIG_INET_XFRM_TUNNEL is not set 421CONFIG_INET_XFRM_TUNNEL=m
384CONFIG_INET_TUNNEL=m 422CONFIG_INET_TUNNEL=m
385CONFIG_INET_XFRM_MODE_TRANSPORT=y 423CONFIG_INET_XFRM_MODE_TRANSPORT=y
386CONFIG_INET_XFRM_MODE_TUNNEL=y 424CONFIG_INET_XFRM_MODE_TUNNEL=y
@@ -388,8 +426,25 @@ CONFIG_INET_XFRM_MODE_BEET=y
388# CONFIG_INET_LRO is not set 426# CONFIG_INET_LRO is not set
389CONFIG_INET_DIAG=y 427CONFIG_INET_DIAG=y
390CONFIG_INET_TCP_DIAG=y 428CONFIG_INET_TCP_DIAG=y
391# CONFIG_TCP_CONG_ADVANCED is not set 429CONFIG_TCP_CONG_ADVANCED=y
430CONFIG_TCP_CONG_BIC=m
392CONFIG_TCP_CONG_CUBIC=y 431CONFIG_TCP_CONG_CUBIC=y
432CONFIG_TCP_CONG_WESTWOOD=m
433CONFIG_TCP_CONG_HTCP=m
434CONFIG_TCP_CONG_HSTCP=m
435CONFIG_TCP_CONG_HYBLA=m
436CONFIG_TCP_CONG_VEGAS=m
437CONFIG_TCP_CONG_SCALABLE=m
438CONFIG_TCP_CONG_LP=m
439CONFIG_TCP_CONG_VENO=m
440CONFIG_TCP_CONG_YEAH=m
441CONFIG_TCP_CONG_ILLINOIS=m
442# CONFIG_DEFAULT_BIC is not set
443CONFIG_DEFAULT_CUBIC=y
444# CONFIG_DEFAULT_HTCP is not set
445# CONFIG_DEFAULT_VEGAS is not set
446# CONFIG_DEFAULT_WESTWOOD is not set
447# CONFIG_DEFAULT_RENO is not set
393CONFIG_DEFAULT_TCP_CONG="cubic" 448CONFIG_DEFAULT_TCP_CONG="cubic"
394# CONFIG_TCP_MD5SIG is not set 449# CONFIG_TCP_MD5SIG is not set
395CONFIG_IPV6=m 450CONFIG_IPV6=m
@@ -413,12 +468,181 @@ CONFIG_IPV6_TUNNEL=m
413# CONFIG_IPV6_MULTIPLE_TABLES is not set 468# CONFIG_IPV6_MULTIPLE_TABLES is not set
414# CONFIG_IPV6_MROUTE is not set 469# CONFIG_IPV6_MROUTE is not set
415# CONFIG_NETWORK_SECMARK is not set 470# CONFIG_NETWORK_SECMARK is not set
416# CONFIG_NETFILTER is not set 471CONFIG_NETFILTER=y
472# CONFIG_NETFILTER_DEBUG is not set
473CONFIG_NETFILTER_ADVANCED=y
474
475#
476# Core Netfilter Configuration
477#
478CONFIG_NETFILTER_NETLINK=m
479CONFIG_NETFILTER_NETLINK_QUEUE=m
480CONFIG_NETFILTER_NETLINK_LOG=m
481CONFIG_NF_CONNTRACK=m
482CONFIG_NF_CT_ACCT=y
483CONFIG_NF_CONNTRACK_MARK=y
484CONFIG_NF_CONNTRACK_EVENTS=y
485CONFIG_NF_CT_PROTO_DCCP=m
486CONFIG_NF_CT_PROTO_GRE=m
487CONFIG_NF_CT_PROTO_SCTP=m
488CONFIG_NF_CT_PROTO_UDPLITE=m
489CONFIG_NF_CONNTRACK_AMANDA=m
490CONFIG_NF_CONNTRACK_FTP=m
491CONFIG_NF_CONNTRACK_H323=m
492CONFIG_NF_CONNTRACK_IRC=m
493CONFIG_NF_CONNTRACK_NETBIOS_NS=m
494CONFIG_NF_CONNTRACK_PPTP=m
495CONFIG_NF_CONNTRACK_SANE=m
496CONFIG_NF_CONNTRACK_SIP=m
497CONFIG_NF_CONNTRACK_TFTP=m
498CONFIG_NF_CT_NETLINK=m
499# CONFIG_NETFILTER_TPROXY is not set
500CONFIG_NETFILTER_XTABLES=m
501CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
502CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
503# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
504CONFIG_NETFILTER_XT_TARGET_HL=m
505CONFIG_NETFILTER_XT_TARGET_LED=m
506CONFIG_NETFILTER_XT_TARGET_MARK=m
507CONFIG_NETFILTER_XT_TARGET_NFLOG=m
508CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
509# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
510CONFIG_NETFILTER_XT_TARGET_RATEEST=m
511# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
512CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
513# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
514CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
515CONFIG_NETFILTER_XT_MATCH_COMMENT=m
516CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
517CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
518CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
519CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
520CONFIG_NETFILTER_XT_MATCH_DCCP=m
521CONFIG_NETFILTER_XT_MATCH_DSCP=m
522CONFIG_NETFILTER_XT_MATCH_ESP=m
523CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
524CONFIG_NETFILTER_XT_MATCH_HELPER=m
525CONFIG_NETFILTER_XT_MATCH_HL=m
526CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
527CONFIG_NETFILTER_XT_MATCH_LENGTH=m
528CONFIG_NETFILTER_XT_MATCH_LIMIT=m
529CONFIG_NETFILTER_XT_MATCH_MAC=m
530CONFIG_NETFILTER_XT_MATCH_MARK=m
531CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
532CONFIG_NETFILTER_XT_MATCH_OWNER=m
533CONFIG_NETFILTER_XT_MATCH_POLICY=m
534CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
535CONFIG_NETFILTER_XT_MATCH_QUOTA=m
536CONFIG_NETFILTER_XT_MATCH_RATEEST=m
537CONFIG_NETFILTER_XT_MATCH_REALM=m
538CONFIG_NETFILTER_XT_MATCH_RECENT=m
539# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
540CONFIG_NETFILTER_XT_MATCH_SCTP=m
541CONFIG_NETFILTER_XT_MATCH_STATE=m
542CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
543CONFIG_NETFILTER_XT_MATCH_STRING=m
544CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
545CONFIG_NETFILTER_XT_MATCH_TIME=m
546CONFIG_NETFILTER_XT_MATCH_U32=m
547CONFIG_IP_VS=m
548# CONFIG_IP_VS_IPV6 is not set
549# CONFIG_IP_VS_DEBUG is not set
550CONFIG_IP_VS_TAB_BITS=12
551
552#
553# IPVS transport protocol load balancing support
554#
555# CONFIG_IP_VS_PROTO_TCP is not set
556# CONFIG_IP_VS_PROTO_UDP is not set
557# CONFIG_IP_VS_PROTO_ESP is not set
558# CONFIG_IP_VS_PROTO_AH is not set
559
560#
561# IPVS scheduler
562#
563# CONFIG_IP_VS_RR is not set
564# CONFIG_IP_VS_WRR is not set
565# CONFIG_IP_VS_LC is not set
566# CONFIG_IP_VS_WLC is not set
567# CONFIG_IP_VS_LBLC is not set
568# CONFIG_IP_VS_LBLCR is not set
569# CONFIG_IP_VS_DH is not set
570# CONFIG_IP_VS_SH is not set
571# CONFIG_IP_VS_SED is not set
572# CONFIG_IP_VS_NQ is not set
573
574#
575# IPVS application helper
576#
577
578#
579# IP: Netfilter Configuration
580#
581CONFIG_NF_DEFRAG_IPV4=m
582CONFIG_NF_CONNTRACK_IPV4=m
583CONFIG_NF_CONNTRACK_PROC_COMPAT=y
584CONFIG_IP_NF_QUEUE=m
585CONFIG_IP_NF_IPTABLES=m
586CONFIG_IP_NF_MATCH_ADDRTYPE=m
587CONFIG_IP_NF_MATCH_AH=m
588CONFIG_IP_NF_MATCH_ECN=m
589CONFIG_IP_NF_MATCH_TTL=m
590CONFIG_IP_NF_FILTER=m
591CONFIG_IP_NF_TARGET_REJECT=m
592CONFIG_IP_NF_TARGET_LOG=m
593CONFIG_IP_NF_TARGET_ULOG=m
594CONFIG_NF_NAT=m
595CONFIG_NF_NAT_NEEDED=y
596CONFIG_IP_NF_TARGET_MASQUERADE=m
597CONFIG_IP_NF_TARGET_NETMAP=m
598CONFIG_IP_NF_TARGET_REDIRECT=m
599CONFIG_NF_NAT_SNMP_BASIC=m
600CONFIG_NF_NAT_PROTO_DCCP=m
601CONFIG_NF_NAT_PROTO_GRE=m
602CONFIG_NF_NAT_PROTO_UDPLITE=m
603CONFIG_NF_NAT_PROTO_SCTP=m
604CONFIG_NF_NAT_FTP=m
605CONFIG_NF_NAT_IRC=m
606CONFIG_NF_NAT_TFTP=m
607CONFIG_NF_NAT_AMANDA=m
608CONFIG_NF_NAT_PPTP=m
609CONFIG_NF_NAT_H323=m
610CONFIG_NF_NAT_SIP=m
611CONFIG_IP_NF_MANGLE=m
612CONFIG_IP_NF_TARGET_CLUSTERIP=m
613CONFIG_IP_NF_TARGET_ECN=m
614CONFIG_IP_NF_TARGET_TTL=m
615CONFIG_IP_NF_RAW=m
616CONFIG_IP_NF_ARPTABLES=m
617CONFIG_IP_NF_ARPFILTER=m
618CONFIG_IP_NF_ARP_MANGLE=m
619
620#
621# IPv6: Netfilter Configuration
622#
623CONFIG_NF_CONNTRACK_IPV6=m
624CONFIG_IP6_NF_QUEUE=m
625CONFIG_IP6_NF_IPTABLES=m
626CONFIG_IP6_NF_MATCH_AH=m
627CONFIG_IP6_NF_MATCH_EUI64=m
628CONFIG_IP6_NF_MATCH_FRAG=m
629CONFIG_IP6_NF_MATCH_OPTS=m
630CONFIG_IP6_NF_MATCH_HL=m
631CONFIG_IP6_NF_MATCH_IPV6HEADER=m
632CONFIG_IP6_NF_MATCH_MH=m
633CONFIG_IP6_NF_MATCH_RT=m
634CONFIG_IP6_NF_TARGET_HL=m
635CONFIG_IP6_NF_TARGET_LOG=m
636CONFIG_IP6_NF_FILTER=m
637CONFIG_IP6_NF_TARGET_REJECT=m
638CONFIG_IP6_NF_MANGLE=m
639CONFIG_IP6_NF_RAW=m
417# CONFIG_IP_DCCP is not set 640# CONFIG_IP_DCCP is not set
418# CONFIG_IP_SCTP is not set 641# CONFIG_IP_SCTP is not set
419# CONFIG_TIPC is not set 642# CONFIG_TIPC is not set
420# CONFIG_ATM is not set 643# CONFIG_ATM is not set
421# CONFIG_BRIDGE is not set 644# CONFIG_BRIDGE is not set
645# CONFIG_NET_DSA is not set
422# CONFIG_VLAN_8021Q is not set 646# CONFIG_VLAN_8021Q is not set
423# CONFIG_DECNET is not set 647# CONFIG_DECNET is not set
424# CONFIG_LLC2 is not set 648# CONFIG_LLC2 is not set
@@ -428,8 +652,10 @@ CONFIG_IPV6_TUNNEL=m
428# CONFIG_LAPB is not set 652# CONFIG_LAPB is not set
429# CONFIG_ECONET is not set 653# CONFIG_ECONET is not set
430# CONFIG_WAN_ROUTER is not set 654# CONFIG_WAN_ROUTER is not set
655# CONFIG_PHONET is not set
431# CONFIG_NET_SCHED is not set 656# CONFIG_NET_SCHED is not set
432CONFIG_NET_SCH_FIFO=y 657CONFIG_NET_CLS_ROUTE=y
658# CONFIG_DCB is not set
433 659
434# 660#
435# Network testing 661# Network testing
@@ -451,8 +677,8 @@ CONFIG_BT_HIDP=m
451# 677#
452# Bluetooth device drivers 678# Bluetooth device drivers
453# 679#
454CONFIG_BT_HCIUSB=m 680# CONFIG_BT_HCIBTUSB is not set
455CONFIG_BT_HCIUSB_SCO=y 681# CONFIG_BT_HCIBTSDIO is not set
456CONFIG_BT_HCIUART=m 682CONFIG_BT_HCIUART=m
457CONFIG_BT_HCIUART_H4=y 683CONFIG_BT_HCIUART_H4=y
458CONFIG_BT_HCIUART_BCSP=y 684CONFIG_BT_HCIUART_BCSP=y
@@ -462,35 +688,26 @@ CONFIG_BT_HCIBPA10X=m
462CONFIG_BT_HCIBFUSB=m 688CONFIG_BT_HCIBFUSB=m
463CONFIG_BT_HCIVHCI=m 689CONFIG_BT_HCIVHCI=m
464# CONFIG_AF_RXRPC is not set 690# CONFIG_AF_RXRPC is not set
465 691CONFIG_WIRELESS=y
466#
467# Wireless
468#
469CONFIG_CFG80211=m 692CONFIG_CFG80211=m
470CONFIG_NL80211=y 693# CONFIG_CFG80211_REG_DEBUG is not set
694# CONFIG_WIRELESS_OLD_REGULATORY is not set
471CONFIG_WIRELESS_EXT=y 695CONFIG_WIRELESS_EXT=y
696CONFIG_WIRELESS_EXT_SYSFS=y
697# CONFIG_LIB80211 is not set
472CONFIG_MAC80211=m 698CONFIG_MAC80211=m
473 699
474# 700#
475# Rate control algorithm selection 701# Rate control algorithm selection
476# 702#
477CONFIG_MAC80211_RC_DEFAULT_PID=y 703CONFIG_MAC80211_RC_MINSTREL=y
478# CONFIG_MAC80211_RC_DEFAULT_NONE is not set 704# CONFIG_MAC80211_RC_DEFAULT_PID is not set
479 705CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
480# 706CONFIG_MAC80211_RC_DEFAULT="minstrel"
481# Selecting 'y' for an algorithm will
482#
483
484#
485# build the algorithm into mac80211.
486#
487CONFIG_MAC80211_RC_DEFAULT="pid"
488CONFIG_MAC80211_RC_PID=y
489CONFIG_MAC80211_MESH=y 707CONFIG_MAC80211_MESH=y
490CONFIG_MAC80211_LEDS=y 708CONFIG_MAC80211_LEDS=y
491# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set 709# CONFIG_MAC80211_DEBUG_MENU is not set
492# CONFIG_MAC80211_DEBUG is not set 710# CONFIG_WIMAX is not set
493# CONFIG_IEEE80211 is not set
494# CONFIG_RFKILL is not set 711# CONFIG_RFKILL is not set
495# CONFIG_NET_9P is not set 712# CONFIG_NET_9P is not set
496 713
@@ -504,7 +721,9 @@ CONFIG_MAC80211_LEDS=y
504CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 721CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
505CONFIG_STANDALONE=y 722CONFIG_STANDALONE=y
506CONFIG_PREVENT_FIRMWARE_BUILD=y 723CONFIG_PREVENT_FIRMWARE_BUILD=y
507CONFIG_FW_LOADER=m 724CONFIG_FW_LOADER=y
725CONFIG_FIRMWARE_IN_KERNEL=y
726CONFIG_EXTRA_FIRMWARE=""
508# CONFIG_DEBUG_DRIVER is not set 727# CONFIG_DEBUG_DRIVER is not set
509# CONFIG_DEBUG_DEVRES is not set 728# CONFIG_DEBUG_DEVRES is not set
510# CONFIG_SYS_HYPERVISOR is not set 729# CONFIG_SYS_HYPERVISOR is not set
@@ -513,6 +732,7 @@ CONFIG_MTD=y
513# CONFIG_MTD_DEBUG is not set 732# CONFIG_MTD_DEBUG is not set
514# CONFIG_MTD_CONCAT is not set 733# CONFIG_MTD_CONCAT is not set
515CONFIG_MTD_PARTITIONS=y 734CONFIG_MTD_PARTITIONS=y
735# CONFIG_MTD_TESTS is not set
516CONFIG_MTD_REDBOOT_PARTS=y 736CONFIG_MTD_REDBOOT_PARTS=y
517CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 737CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
518CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y 738CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
@@ -545,7 +765,7 @@ CONFIG_MTD_MAP_BANK_WIDTH_1=y
545CONFIG_MTD_MAP_BANK_WIDTH_2=y 765CONFIG_MTD_MAP_BANK_WIDTH_2=y
546CONFIG_MTD_MAP_BANK_WIDTH_4=y 766CONFIG_MTD_MAP_BANK_WIDTH_4=y
547# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set 767# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
548CONFIG_MTD_MAP_BANK_WIDTH_16=y 768# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
549# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 769# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
550CONFIG_MTD_CFI_I1=y 770CONFIG_MTD_CFI_I1=y
551CONFIG_MTD_CFI_I2=y 771CONFIG_MTD_CFI_I2=y
@@ -566,8 +786,6 @@ CONFIG_MTD_ROM=y
566# CONFIG_MTD_PHYSMAP is not set 786# CONFIG_MTD_PHYSMAP is not set
567# CONFIG_MTD_ARM_INTEGRATOR is not set 787# CONFIG_MTD_ARM_INTEGRATOR is not set
568# CONFIG_MTD_IMPA7 is not set 788# CONFIG_MTD_IMPA7 is not set
569CONFIG_MTD_BAST=y
570CONFIG_MTD_BAST_MAXSIZE=4
571# CONFIG_MTD_PLATRAM is not set 789# CONFIG_MTD_PLATRAM is not set
572 790
573# 791#
@@ -590,6 +808,7 @@ CONFIG_MTD_NAND=y
590# CONFIG_MTD_NAND_VERIFY_WRITE is not set 808# CONFIG_MTD_NAND_VERIFY_WRITE is not set
591# CONFIG_MTD_NAND_ECC_SMC is not set 809# CONFIG_MTD_NAND_ECC_SMC is not set
592# CONFIG_MTD_NAND_MUSEUM_IDS is not set 810# CONFIG_MTD_NAND_MUSEUM_IDS is not set
811# CONFIG_MTD_NAND_GPIO is not set
593CONFIG_MTD_NAND_IDS=y 812CONFIG_MTD_NAND_IDS=y
594CONFIG_MTD_NAND_S3C2410=y 813CONFIG_MTD_NAND_S3C2410=y
595# CONFIG_MTD_NAND_S3C2410_DEBUG is not set 814# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
@@ -602,6 +821,11 @@ CONFIG_MTD_NAND_S3C2410=y
602# CONFIG_MTD_ONENAND is not set 821# CONFIG_MTD_ONENAND is not set
603 822
604# 823#
824# LPDDR flash memory drivers
825#
826# CONFIG_MTD_LPDDR is not set
827
828#
605# UBI - Unsorted block images 829# UBI - Unsorted block images
606# 830#
607# CONFIG_MTD_UBI is not set 831# CONFIG_MTD_UBI is not set
@@ -620,7 +844,7 @@ CONFIG_BLK_DEV=y
620CONFIG_BLK_DEV_LOOP=y 844CONFIG_BLK_DEV_LOOP=y
621# CONFIG_BLK_DEV_CRYPTOLOOP is not set 845# CONFIG_BLK_DEV_CRYPTOLOOP is not set
622CONFIG_BLK_DEV_NBD=m 846CONFIG_BLK_DEV_NBD=m
623# CONFIG_BLK_DEV_UB is not set 847CONFIG_BLK_DEV_UB=m
624CONFIG_BLK_DEV_RAM=y 848CONFIG_BLK_DEV_RAM=y
625CONFIG_BLK_DEV_RAM_COUNT=16 849CONFIG_BLK_DEV_RAM_COUNT=16
626CONFIG_BLK_DEV_RAM_SIZE=4096 850CONFIG_BLK_DEV_RAM_SIZE=4096
@@ -628,32 +852,40 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
628# CONFIG_CDROM_PKTCDVD is not set 852# CONFIG_CDROM_PKTCDVD is not set
629CONFIG_ATA_OVER_ETH=m 853CONFIG_ATA_OVER_ETH=m
630CONFIG_MISC_DEVICES=y 854CONFIG_MISC_DEVICES=y
631# CONFIG_EEPROM_93CX6 is not set 855# CONFIG_ICS932S401 is not set
632# CONFIG_ENCLOSURE_SERVICES is not set 856# CONFIG_ENCLOSURE_SERVICES is not set
857# CONFIG_ISL29003 is not set
858# CONFIG_C2PORT is not set
859
860#
861# EEPROM support
862#
863CONFIG_EEPROM_AT24=m
864CONFIG_EEPROM_AT25=m
865CONFIG_EEPROM_LEGACY=m
866CONFIG_EEPROM_93CX6=m
633CONFIG_HAVE_IDE=y 867CONFIG_HAVE_IDE=y
634CONFIG_IDE=y 868CONFIG_IDE=y
635CONFIG_BLK_DEV_IDE=y
636 869
637# 870#
638# Please see Documentation/ide/ide.txt for help/info on IDE drives 871# Please see Documentation/ide/ide.txt for help/info on IDE drives
639# 872#
873CONFIG_IDE_ATAPI=y
640# CONFIG_BLK_DEV_IDE_SATA is not set 874# CONFIG_BLK_DEV_IDE_SATA is not set
641CONFIG_BLK_DEV_IDEDISK=y 875CONFIG_IDE_GD=y
642# CONFIG_IDEDISK_MULTI_MODE is not set 876CONFIG_IDE_GD_ATA=y
877# CONFIG_IDE_GD_ATAPI is not set
643CONFIG_BLK_DEV_IDECD=y 878CONFIG_BLK_DEV_IDECD=y
644CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 879CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
645CONFIG_BLK_DEV_IDETAPE=m 880CONFIG_BLK_DEV_IDETAPE=m
646CONFIG_BLK_DEV_IDEFLOPPY=m
647# CONFIG_BLK_DEV_IDESCSI is not set
648# CONFIG_IDE_TASK_IOCTL is not set 881# CONFIG_IDE_TASK_IOCTL is not set
649CONFIG_IDE_PROC_FS=y 882CONFIG_IDE_PROC_FS=y
650 883
651# 884#
652# IDE chipset support/bugfixes 885# IDE chipset support/bugfixes
653# 886#
654# CONFIG_BLK_DEV_PLATFORM is not set 887CONFIG_BLK_DEV_PLATFORM=y
655# CONFIG_BLK_DEV_IDEDMA is not set 888# CONFIG_BLK_DEV_IDEDMA is not set
656# CONFIG_BLK_DEV_HD is not set
657 889
658# 890#
659# SCSI device support 891# SCSI device support
@@ -699,6 +931,8 @@ CONFIG_SCSI_LOWLEVEL=y
699# CONFIG_SCSI_AIC7XXX_OLD is not set 931# CONFIG_SCSI_AIC7XXX_OLD is not set
700# CONFIG_SCSI_ADVANSYS is not set 932# CONFIG_SCSI_ADVANSYS is not set
701# CONFIG_SCSI_IN2000 is not set 933# CONFIG_SCSI_IN2000 is not set
934# CONFIG_LIBFC is not set
935# CONFIG_LIBFCOE is not set
702# CONFIG_SCSI_DTC3280 is not set 936# CONFIG_SCSI_DTC3280 is not set
703# CONFIG_SCSI_FUTURE_DOMAIN is not set 937# CONFIG_SCSI_FUTURE_DOMAIN is not set
704# CONFIG_SCSI_GENERIC_NCR5380 is not set 938# CONFIG_SCSI_GENERIC_NCR5380 is not set
@@ -711,11 +945,13 @@ CONFIG_SCSI_LOWLEVEL=y
711# CONFIG_SCSI_SYM53C416 is not set 945# CONFIG_SCSI_SYM53C416 is not set
712# CONFIG_SCSI_T128 is not set 946# CONFIG_SCSI_T128 is not set
713# CONFIG_SCSI_DEBUG is not set 947# CONFIG_SCSI_DEBUG is not set
948# CONFIG_SCSI_DH is not set
949# CONFIG_SCSI_OSD_INITIATOR is not set
714# CONFIG_ATA is not set 950# CONFIG_ATA is not set
715CONFIG_HAVE_PATA_PLATFORM=y 951CONFIG_HAVE_PATA_PLATFORM=y
716# CONFIG_MD is not set 952# CONFIG_MD is not set
717CONFIG_NETDEVICES=y 953CONFIG_NETDEVICES=y
718# CONFIG_NETDEVICES_MULTIQUEUE is not set 954CONFIG_COMPAT_NET_DEV_OPS=y
719# CONFIG_DUMMY is not set 955# CONFIG_DUMMY is not set
720# CONFIG_BONDING is not set 956# CONFIG_BONDING is not set
721# CONFIG_MACVLAN is not set 957# CONFIG_MACVLAN is not set
@@ -731,9 +967,14 @@ CONFIG_MII=y
731# CONFIG_NET_VENDOR_SMC is not set 967# CONFIG_NET_VENDOR_SMC is not set
732# CONFIG_SMC91X is not set 968# CONFIG_SMC91X is not set
733CONFIG_DM9000=y 969CONFIG_DM9000=y
734# CONFIG_ENC28J60 is not set
735CONFIG_DM9000_DEBUGLEVEL=4 970CONFIG_DM9000_DEBUGLEVEL=4
971# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
972# CONFIG_ENC28J60 is not set
973# CONFIG_ETHOC is not set
974# CONFIG_SMC911X is not set
975# CONFIG_SMSC911X is not set
736# CONFIG_NET_VENDOR_RACAL is not set 976# CONFIG_NET_VENDOR_RACAL is not set
977# CONFIG_DNET is not set
737# CONFIG_AT1700 is not set 978# CONFIG_AT1700 is not set
738# CONFIG_DEPCA is not set 979# CONFIG_DEPCA is not set
739# CONFIG_HP100 is not set 980# CONFIG_HP100 is not set
@@ -742,11 +983,14 @@ CONFIG_DM9000_DEBUGLEVEL=4
742# CONFIG_IBM_NEW_EMAC_RGMII is not set 983# CONFIG_IBM_NEW_EMAC_RGMII is not set
743# CONFIG_IBM_NEW_EMAC_TAH is not set 984# CONFIG_IBM_NEW_EMAC_TAH is not set
744# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 985# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
986# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
987# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
988# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
745# CONFIG_NET_PCI is not set 989# CONFIG_NET_PCI is not set
746# CONFIG_B44 is not set 990# CONFIG_B44 is not set
991# CONFIG_CS89x0 is not set
747# CONFIG_NET_POCKET is not set 992# CONFIG_NET_POCKET is not set
748CONFIG_NETDEV_1000=y 993CONFIG_NETDEV_1000=y
749# CONFIG_E1000E_ENABLED is not set
750CONFIG_NETDEV_10000=y 994CONFIG_NETDEV_10000=y
751# CONFIG_TR is not set 995# CONFIG_TR is not set
752 996
@@ -755,7 +999,10 @@ CONFIG_NETDEV_10000=y
755# 999#
756# CONFIG_WLAN_PRE80211 is not set 1000# CONFIG_WLAN_PRE80211 is not set
757# CONFIG_WLAN_80211 is not set 1001# CONFIG_WLAN_80211 is not set
758# CONFIG_IWLWIFI_LEDS is not set 1002
1003#
1004# Enable WiMAX (Networking options) to see the WiMAX drivers
1005#
759 1006
760# 1007#
761# USB Network Adapters 1008# USB Network Adapters
@@ -778,7 +1025,7 @@ CONFIG_NETDEV_10000=y
778# Input device support 1025# Input device support
779# 1026#
780CONFIG_INPUT=y 1027CONFIG_INPUT=y
781# CONFIG_INPUT_FF_MEMLESS is not set 1028CONFIG_INPUT_FF_MEMLESS=m
782# CONFIG_INPUT_POLLDEV is not set 1029# CONFIG_INPUT_POLLDEV is not set
783 1030
784# 1031#
@@ -789,7 +1036,7 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
789CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 1036CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
790CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 1037CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
791# CONFIG_INPUT_JOYDEV is not set 1038# CONFIG_INPUT_JOYDEV is not set
792# CONFIG_INPUT_EVDEV is not set 1039CONFIG_INPUT_EVDEV=y
793# CONFIG_INPUT_EVBUG is not set 1040# CONFIG_INPUT_EVBUG is not set
794 1041
795# 1042#
@@ -808,20 +1055,88 @@ CONFIG_MOUSE_PS2=y
808CONFIG_MOUSE_PS2_ALPS=y 1055CONFIG_MOUSE_PS2_ALPS=y
809CONFIG_MOUSE_PS2_LOGIPS2PP=y 1056CONFIG_MOUSE_PS2_LOGIPS2PP=y
810CONFIG_MOUSE_PS2_SYNAPTICS=y 1057CONFIG_MOUSE_PS2_SYNAPTICS=y
811CONFIG_MOUSE_PS2_LIFEBOOK=y
812CONFIG_MOUSE_PS2_TRACKPOINT=y 1058CONFIG_MOUSE_PS2_TRACKPOINT=y
1059# CONFIG_MOUSE_PS2_ELANTECH is not set
813# CONFIG_MOUSE_PS2_TOUCHKIT is not set 1060# CONFIG_MOUSE_PS2_TOUCHKIT is not set
814# CONFIG_MOUSE_SERIAL is not set 1061# CONFIG_MOUSE_SERIAL is not set
815# CONFIG_MOUSE_APPLETOUCH is not set 1062CONFIG_MOUSE_APPLETOUCH=m
1063CONFIG_MOUSE_BCM5974=m
816# CONFIG_MOUSE_INPORT is not set 1064# CONFIG_MOUSE_INPORT is not set
817# CONFIG_MOUSE_LOGIBM is not set 1065# CONFIG_MOUSE_LOGIBM is not set
818# CONFIG_MOUSE_PC110PAD is not set 1066# CONFIG_MOUSE_PC110PAD is not set
819# CONFIG_MOUSE_VSXXXAA is not set 1067# CONFIG_MOUSE_VSXXXAA is not set
820# CONFIG_MOUSE_GPIO is not set 1068# CONFIG_MOUSE_GPIO is not set
821# CONFIG_INPUT_JOYSTICK is not set 1069CONFIG_INPUT_JOYSTICK=y
1070CONFIG_JOYSTICK_ANALOG=m
1071CONFIG_JOYSTICK_A3D=m
1072CONFIG_JOYSTICK_ADI=m
1073CONFIG_JOYSTICK_COBRA=m
1074CONFIG_JOYSTICK_GF2K=m
1075CONFIG_JOYSTICK_GRIP=m
1076CONFIG_JOYSTICK_GRIP_MP=m
1077CONFIG_JOYSTICK_GUILLEMOT=m
1078CONFIG_JOYSTICK_INTERACT=m
1079CONFIG_JOYSTICK_SIDEWINDER=m
1080CONFIG_JOYSTICK_TMDC=m
1081CONFIG_JOYSTICK_IFORCE=m
1082# CONFIG_JOYSTICK_IFORCE_USB is not set
1083# CONFIG_JOYSTICK_IFORCE_232 is not set
1084# CONFIG_JOYSTICK_WARRIOR is not set
1085CONFIG_JOYSTICK_MAGELLAN=m
1086CONFIG_JOYSTICK_SPACEORB=m
1087CONFIG_JOYSTICK_SPACEBALL=m
1088CONFIG_JOYSTICK_STINGER=m
1089CONFIG_JOYSTICK_TWIDJOY=m
1090CONFIG_JOYSTICK_ZHENHUA=m
1091CONFIG_JOYSTICK_DB9=m
1092CONFIG_JOYSTICK_GAMECON=m
1093CONFIG_JOYSTICK_TURBOGRAFX=m
1094CONFIG_JOYSTICK_JOYDUMP=m
1095CONFIG_JOYSTICK_XPAD=m
1096CONFIG_JOYSTICK_XPAD_FF=y
1097CONFIG_JOYSTICK_XPAD_LEDS=y
822# CONFIG_INPUT_TABLET is not set 1098# CONFIG_INPUT_TABLET is not set
823# CONFIG_INPUT_TOUCHSCREEN is not set 1099CONFIG_INPUT_TOUCHSCREEN=y
824# CONFIG_INPUT_MISC is not set 1100# CONFIG_TOUCHSCREEN_ADS7846 is not set
1101# CONFIG_TOUCHSCREEN_AD7877 is not set
1102# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
1103# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
1104# CONFIG_TOUCHSCREEN_AD7879 is not set
1105# CONFIG_TOUCHSCREEN_FUJITSU is not set
1106# CONFIG_TOUCHSCREEN_GUNZE is not set
1107# CONFIG_TOUCHSCREEN_ELO is not set
1108# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
1109# CONFIG_TOUCHSCREEN_MTOUCH is not set
1110# CONFIG_TOUCHSCREEN_INEXIO is not set
1111# CONFIG_TOUCHSCREEN_MK712 is not set
1112# CONFIG_TOUCHSCREEN_HTCPEN is not set
1113# CONFIG_TOUCHSCREEN_PENMOUNT is not set
1114# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
1115# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
1116# CONFIG_TOUCHSCREEN_WM97XX is not set
1117CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
1118CONFIG_TOUCHSCREEN_USB_EGALAX=y
1119CONFIG_TOUCHSCREEN_USB_PANJIT=y
1120CONFIG_TOUCHSCREEN_USB_3M=y
1121CONFIG_TOUCHSCREEN_USB_ITM=y
1122CONFIG_TOUCHSCREEN_USB_ETURBO=y
1123CONFIG_TOUCHSCREEN_USB_GUNZE=y
1124CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
1125CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
1126CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
1127CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
1128CONFIG_TOUCHSCREEN_USB_GOTOP=y
1129# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
1130# CONFIG_TOUCHSCREEN_TSC2007 is not set
1131CONFIG_INPUT_MISC=y
1132CONFIG_INPUT_ATI_REMOTE=m
1133CONFIG_INPUT_ATI_REMOTE2=m
1134CONFIG_INPUT_KEYSPAN_REMOTE=m
1135CONFIG_INPUT_POWERMATE=m
1136CONFIG_INPUT_YEALINK=m
1137CONFIG_INPUT_CM109=m
1138CONFIG_INPUT_UINPUT=m
1139CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
825 1140
826# 1141#
827# Hardware I/O ports 1142# Hardware I/O ports
@@ -831,12 +1146,15 @@ CONFIG_SERIO_SERPORT=y
831# CONFIG_SERIO_PARKBD is not set 1146# CONFIG_SERIO_PARKBD is not set
832CONFIG_SERIO_LIBPS2=y 1147CONFIG_SERIO_LIBPS2=y
833# CONFIG_SERIO_RAW is not set 1148# CONFIG_SERIO_RAW is not set
834# CONFIG_GAMEPORT is not set 1149CONFIG_GAMEPORT=m
1150# CONFIG_GAMEPORT_NS558 is not set
1151# CONFIG_GAMEPORT_L4 is not set
835 1152
836# 1153#
837# Character devices 1154# Character devices
838# 1155#
839CONFIG_VT=y 1156CONFIG_VT=y
1157CONFIG_CONSOLE_TRANSLATIONS=y
840CONFIG_VT_CONSOLE=y 1158CONFIG_VT_CONSOLE=y
841CONFIG_HW_CONSOLE=y 1159CONFIG_HW_CONSOLE=y
842# CONFIG_VT_HW_CONSOLE_BINDING is not set 1160# CONFIG_VT_HW_CONSOLE_BINDING is not set
@@ -877,14 +1195,17 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
877# Non-8250 serial port support 1195# Non-8250 serial port support
878# 1196#
879CONFIG_SERIAL_SAMSUNG=y 1197CONFIG_SERIAL_SAMSUNG=y
1198CONFIG_SERIAL_SAMSUNG_UARTS=4
880# CONFIG_SERIAL_SAMSUNG_DEBUG is not set 1199# CONFIG_SERIAL_SAMSUNG_DEBUG is not set
881CONFIG_SERIAL_SAMSUNG_CONSOLE=y 1200CONFIG_SERIAL_SAMSUNG_CONSOLE=y
882CONFIG_SERIAL_S3C2410=y 1201CONFIG_SERIAL_S3C2410=y
883CONFIG_SERIAL_S3C2412=y 1202CONFIG_SERIAL_S3C2412=y
884CONFIG_SERIAL_S3C2440=y 1203CONFIG_SERIAL_S3C2440=y
1204# CONFIG_SERIAL_MAX3100 is not set
885CONFIG_SERIAL_CORE=y 1205CONFIG_SERIAL_CORE=y
886CONFIG_SERIAL_CORE_CONSOLE=y 1206CONFIG_SERIAL_CORE_CONSOLE=y
887CONFIG_UNIX98_PTYS=y 1207CONFIG_UNIX98_PTYS=y
1208# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
888CONFIG_LEGACY_PTYS=y 1209CONFIG_LEGACY_PTYS=y
889CONFIG_LEGACY_PTY_COUNT=256 1210CONFIG_LEGACY_PTY_COUNT=256
890CONFIG_PRINTER=y 1211CONFIG_PRINTER=y
@@ -892,7 +1213,7 @@ CONFIG_PRINTER=y
892CONFIG_PPDEV=y 1213CONFIG_PPDEV=y
893# CONFIG_IPMI_HANDLER is not set 1214# CONFIG_IPMI_HANDLER is not set
894CONFIG_HW_RANDOM=y 1215CONFIG_HW_RANDOM=y
895# CONFIG_NVRAM is not set 1216# CONFIG_HW_RANDOM_TIMERIOMEM is not set
896# CONFIG_DTLK is not set 1217# CONFIG_DTLK is not set
897# CONFIG_R3964 is not set 1218# CONFIG_R3964 is not set
898# CONFIG_RAW_DRIVER is not set 1219# CONFIG_RAW_DRIVER is not set
@@ -901,33 +1222,44 @@ CONFIG_DEVPORT=y
901CONFIG_I2C=y 1222CONFIG_I2C=y
902CONFIG_I2C_BOARDINFO=y 1223CONFIG_I2C_BOARDINFO=y
903CONFIG_I2C_CHARDEV=m 1224CONFIG_I2C_CHARDEV=m
1225CONFIG_I2C_HELPER_AUTO=y
904CONFIG_I2C_ALGOBIT=y 1226CONFIG_I2C_ALGOBIT=y
905 1227
906# 1228#
907# I2C Hardware Bus support 1229# I2C Hardware Bus support
908# 1230#
909# CONFIG_I2C_ELEKTOR is not set 1231
1232#
1233# I2C system bus drivers (mostly embedded / system-on-chip)
1234#
910# CONFIG_I2C_GPIO is not set 1235# CONFIG_I2C_GPIO is not set
911# CONFIG_I2C_OCORES is not set 1236# CONFIG_I2C_OCORES is not set
912# CONFIG_I2C_PARPORT is not set
913# CONFIG_I2C_PARPORT_LIGHT is not set
914CONFIG_I2C_S3C2410=y 1237CONFIG_I2C_S3C2410=y
915CONFIG_I2C_SIMTEC=y 1238CONFIG_I2C_SIMTEC=y
1239
1240#
1241# External I2C/SMBus adapter drivers
1242#
1243# CONFIG_I2C_PARPORT is not set
1244# CONFIG_I2C_PARPORT_LIGHT is not set
916# CONFIG_I2C_TAOS_EVM is not set 1245# CONFIG_I2C_TAOS_EVM is not set
917# CONFIG_I2C_STUB is not set
918# CONFIG_I2C_TINY_USB is not set 1246# CONFIG_I2C_TINY_USB is not set
1247
1248#
1249# Other I2C/SMBus bus drivers
1250#
1251# CONFIG_I2C_ELEKTOR is not set
919# CONFIG_I2C_PCA_ISA is not set 1252# CONFIG_I2C_PCA_ISA is not set
920# CONFIG_I2C_PCA_PLATFORM is not set 1253# CONFIG_I2C_PCA_PLATFORM is not set
1254# CONFIG_I2C_STUB is not set
921 1255
922# 1256#
923# Miscellaneous I2C Chip support 1257# Miscellaneous I2C Chip support
924# 1258#
925# CONFIG_DS1682 is not set 1259# CONFIG_DS1682 is not set
926CONFIG_EEPROM_LEGACY=m
927# CONFIG_SENSORS_PCF8574 is not set 1260# CONFIG_SENSORS_PCF8574 is not set
928# CONFIG_PCF8575 is not set 1261# CONFIG_PCF8575 is not set
929# CONFIG_SENSORS_PCF8591 is not set 1262# CONFIG_SENSORS_PCA9539 is not set
930# CONFIG_TPS65010 is not set
931# CONFIG_SENSORS_MAX6875 is not set 1263# CONFIG_SENSORS_MAX6875 is not set
932# CONFIG_SENSORS_TSL2550 is not set 1264# CONFIG_SENSORS_TSL2550 is not set
933# CONFIG_I2C_DEBUG_CORE is not set 1265# CONFIG_I2C_DEBUG_CORE is not set
@@ -943,6 +1275,7 @@ CONFIG_SPI_MASTER=y
943# 1275#
944CONFIG_SPI_BITBANG=m 1276CONFIG_SPI_BITBANG=m
945# CONFIG_SPI_BUTTERFLY is not set 1277# CONFIG_SPI_BUTTERFLY is not set
1278CONFIG_SPI_GPIO=m
946# CONFIG_SPI_LM70_LLP is not set 1279# CONFIG_SPI_LM70_LLP is not set
947CONFIG_SPI_S3C24XX=m 1280CONFIG_SPI_S3C24XX=m
948CONFIG_SPI_S3C24XX_GPIO=m 1281CONFIG_SPI_S3C24XX_GPIO=m
@@ -950,44 +1283,56 @@ CONFIG_SPI_S3C24XX_GPIO=m
950# 1283#
951# SPI Protocol Masters 1284# SPI Protocol Masters
952# 1285#
953# CONFIG_EEPROM_AT25 is not set 1286CONFIG_SPI_SPIDEV=m
954# CONFIG_SPI_SPIDEV is not set 1287CONFIG_SPI_TLE62X0=m
955# CONFIG_SPI_TLE62X0 is not set 1288CONFIG_ARCH_REQUIRE_GPIOLIB=y
956CONFIG_HAVE_GPIO_LIB=y 1289CONFIG_GPIOLIB=y
1290# CONFIG_DEBUG_GPIO is not set
1291# CONFIG_GPIO_SYSFS is not set
957 1292
958# 1293#
959# GPIO Support 1294# Memory mapped GPIO expanders:
960# 1295#
961# CONFIG_DEBUG_GPIO is not set
962 1296
963# 1297#
964# I2C GPIO expanders: 1298# I2C GPIO expanders:
965# 1299#
1300# CONFIG_GPIO_MAX732X is not set
966# CONFIG_GPIO_PCA953X is not set 1301# CONFIG_GPIO_PCA953X is not set
967# CONFIG_GPIO_PCF857X is not set 1302# CONFIG_GPIO_PCF857X is not set
968 1303
969# 1304#
1305# PCI GPIO expanders:
1306#
1307
1308#
970# SPI GPIO expanders: 1309# SPI GPIO expanders:
971# 1310#
1311# CONFIG_GPIO_MAX7301 is not set
972# CONFIG_GPIO_MCP23S08 is not set 1312# CONFIG_GPIO_MCP23S08 is not set
973# CONFIG_W1 is not set 1313# CONFIG_W1 is not set
974# CONFIG_POWER_SUPPLY is not set 1314# CONFIG_POWER_SUPPLY is not set
975CONFIG_HWMON=y 1315CONFIG_HWMON=y
976CONFIG_HWMON_VID=m 1316CONFIG_HWMON_VID=m
1317# CONFIG_SENSORS_AD7414 is not set
977# CONFIG_SENSORS_AD7418 is not set 1318# CONFIG_SENSORS_AD7418 is not set
1319# CONFIG_SENSORS_ADCXX is not set
978# CONFIG_SENSORS_ADM1021 is not set 1320# CONFIG_SENSORS_ADM1021 is not set
979# CONFIG_SENSORS_ADM1025 is not set 1321# CONFIG_SENSORS_ADM1025 is not set
980# CONFIG_SENSORS_ADM1026 is not set 1322# CONFIG_SENSORS_ADM1026 is not set
981# CONFIG_SENSORS_ADM1029 is not set 1323# CONFIG_SENSORS_ADM1029 is not set
982# CONFIG_SENSORS_ADM1031 is not set 1324# CONFIG_SENSORS_ADM1031 is not set
983# CONFIG_SENSORS_ADM9240 is not set 1325# CONFIG_SENSORS_ADM9240 is not set
1326# CONFIG_SENSORS_ADT7462 is not set
984# CONFIG_SENSORS_ADT7470 is not set 1327# CONFIG_SENSORS_ADT7470 is not set
985# CONFIG_SENSORS_ADT7473 is not set 1328# CONFIG_SENSORS_ADT7473 is not set
1329# CONFIG_SENSORS_ADT7475 is not set
986# CONFIG_SENSORS_ATXP1 is not set 1330# CONFIG_SENSORS_ATXP1 is not set
987# CONFIG_SENSORS_DS1621 is not set 1331# CONFIG_SENSORS_DS1621 is not set
988# CONFIG_SENSORS_F71805F is not set 1332# CONFIG_SENSORS_F71805F is not set
989# CONFIG_SENSORS_F71882FG is not set 1333# CONFIG_SENSORS_F71882FG is not set
990# CONFIG_SENSORS_F75375S is not set 1334# CONFIG_SENSORS_F75375S is not set
1335# CONFIG_SENSORS_G760A is not set
991# CONFIG_SENSORS_GL518SM is not set 1336# CONFIG_SENSORS_GL518SM is not set
992# CONFIG_SENSORS_GL520SM is not set 1337# CONFIG_SENSORS_GL520SM is not set
993# CONFIG_SENSORS_IT87 is not set 1338# CONFIG_SENSORS_IT87 is not set
@@ -1003,10 +1348,16 @@ CONFIG_SENSORS_LM85=m
1003# CONFIG_SENSORS_LM90 is not set 1348# CONFIG_SENSORS_LM90 is not set
1004# CONFIG_SENSORS_LM92 is not set 1349# CONFIG_SENSORS_LM92 is not set
1005# CONFIG_SENSORS_LM93 is not set 1350# CONFIG_SENSORS_LM93 is not set
1351# CONFIG_SENSORS_LTC4215 is not set
1352# CONFIG_SENSORS_LTC4245 is not set
1353# CONFIG_SENSORS_LM95241 is not set
1354# CONFIG_SENSORS_MAX1111 is not set
1006# CONFIG_SENSORS_MAX1619 is not set 1355# CONFIG_SENSORS_MAX1619 is not set
1007# CONFIG_SENSORS_MAX6650 is not set 1356# CONFIG_SENSORS_MAX6650 is not set
1008# CONFIG_SENSORS_PC87360 is not set 1357# CONFIG_SENSORS_PC87360 is not set
1009# CONFIG_SENSORS_PC87427 is not set 1358# CONFIG_SENSORS_PC87427 is not set
1359# CONFIG_SENSORS_PCF8591 is not set
1360# CONFIG_SENSORS_SHT15 is not set
1010# CONFIG_SENSORS_DME1737 is not set 1361# CONFIG_SENSORS_DME1737 is not set
1011# CONFIG_SENSORS_SMSC47M1 is not set 1362# CONFIG_SENSORS_SMSC47M1 is not set
1012# CONFIG_SENSORS_SMSC47M192 is not set 1363# CONFIG_SENSORS_SMSC47M192 is not set
@@ -1022,7 +1373,10 @@ CONFIG_SENSORS_LM85=m
1022# CONFIG_SENSORS_W83L786NG is not set 1373# CONFIG_SENSORS_W83L786NG is not set
1023# CONFIG_SENSORS_W83627HF is not set 1374# CONFIG_SENSORS_W83627HF is not set
1024# CONFIG_SENSORS_W83627EHF is not set 1375# CONFIG_SENSORS_W83627EHF is not set
1376# CONFIG_SENSORS_LIS3_SPI is not set
1025# CONFIG_HWMON_DEBUG_CHIP is not set 1377# CONFIG_HWMON_DEBUG_CHIP is not set
1378# CONFIG_THERMAL is not set
1379# CONFIG_THERMAL_HWMON is not set
1026CONFIG_WATCHDOG=y 1380CONFIG_WATCHDOG=y
1027# CONFIG_WATCHDOG_NOWAYOUT is not set 1381# CONFIG_WATCHDOG_NOWAYOUT is not set
1028 1382
@@ -1043,20 +1397,33 @@ CONFIG_S3C2410_WATCHDOG=y
1043# USB-based Watchdog Cards 1397# USB-based Watchdog Cards
1044# 1398#
1045# CONFIG_USBPCWATCHDOG is not set 1399# CONFIG_USBPCWATCHDOG is not set
1400CONFIG_SSB_POSSIBLE=y
1046 1401
1047# 1402#
1048# Sonics Silicon Backplane 1403# Sonics Silicon Backplane
1049# 1404#
1050CONFIG_SSB_POSSIBLE=y
1051# CONFIG_SSB is not set 1405# CONFIG_SSB is not set
1052 1406
1053# 1407#
1054# Multifunction device drivers 1408# Multifunction device drivers
1055# 1409#
1410# CONFIG_MFD_CORE is not set
1056CONFIG_MFD_SM501=y 1411CONFIG_MFD_SM501=y
1412# CONFIG_MFD_SM501_GPIO is not set
1057# CONFIG_MFD_ASIC3 is not set 1413# CONFIG_MFD_ASIC3 is not set
1058# CONFIG_HTC_EGPIO is not set 1414# CONFIG_HTC_EGPIO is not set
1059# CONFIG_HTC_PASIC3 is not set 1415# CONFIG_HTC_PASIC3 is not set
1416# CONFIG_UCB1400_CORE is not set
1417# CONFIG_TPS65010 is not set
1418# CONFIG_TWL4030_CORE is not set
1419# CONFIG_MFD_TMIO is not set
1420# CONFIG_MFD_T7L66XB is not set
1421# CONFIG_MFD_TC6387XB is not set
1422# CONFIG_MFD_TC6393XB is not set
1423# CONFIG_PMIC_DA903X is not set
1424# CONFIG_MFD_WM8400 is not set
1425# CONFIG_MFD_WM8350_I2C is not set
1426# CONFIG_MFD_PCF50633 is not set
1060 1427
1061# 1428#
1062# Multimedia devices 1429# Multimedia devices
@@ -1065,14 +1432,189 @@ CONFIG_MFD_SM501=y
1065# 1432#
1066# Multimedia core support 1433# Multimedia core support
1067# 1434#
1068# CONFIG_VIDEO_DEV is not set 1435CONFIG_VIDEO_DEV=m
1069# CONFIG_DVB_CORE is not set 1436CONFIG_VIDEO_V4L2_COMMON=m
1070# CONFIG_VIDEO_MEDIA is not set 1437CONFIG_VIDEO_ALLOW_V4L1=y
1438CONFIG_VIDEO_V4L1_COMPAT=y
1439CONFIG_DVB_CORE=m
1440CONFIG_VIDEO_MEDIA=m
1071 1441
1072# 1442#
1073# Multimedia drivers 1443# Multimedia drivers
1074# 1444#
1075# CONFIG_DAB is not set 1445CONFIG_MEDIA_ATTACH=y
1446CONFIG_MEDIA_TUNER=m
1447# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
1448CONFIG_MEDIA_TUNER_SIMPLE=m
1449CONFIG_MEDIA_TUNER_TDA8290=m
1450CONFIG_MEDIA_TUNER_TDA827X=m
1451CONFIG_MEDIA_TUNER_TDA18271=m
1452CONFIG_MEDIA_TUNER_TDA9887=m
1453CONFIG_MEDIA_TUNER_TEA5761=m
1454CONFIG_MEDIA_TUNER_TEA5767=m
1455CONFIG_MEDIA_TUNER_MT20XX=m
1456CONFIG_MEDIA_TUNER_MT2060=m
1457CONFIG_MEDIA_TUNER_MT2266=m
1458CONFIG_MEDIA_TUNER_QT1010=m
1459CONFIG_MEDIA_TUNER_XC2028=m
1460CONFIG_MEDIA_TUNER_XC5000=m
1461CONFIG_MEDIA_TUNER_MXL5005S=m
1462CONFIG_MEDIA_TUNER_MXL5007T=m
1463CONFIG_MEDIA_TUNER_MC44S803=m
1464CONFIG_VIDEO_V4L2=m
1465CONFIG_VIDEO_V4L1=m
1466CONFIG_VIDEOBUF_GEN=m
1467CONFIG_VIDEOBUF_VMALLOC=m
1468CONFIG_VIDEO_TVEEPROM=m
1469CONFIG_VIDEO_CAPTURE_DRIVERS=y
1470# CONFIG_VIDEO_ADV_DEBUG is not set
1471# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
1472CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
1473CONFIG_VIDEO_VIVI=m
1474CONFIG_VIDEO_PMS=m
1475CONFIG_VIDEO_BWQCAM=m
1476CONFIG_VIDEO_CQCAM=m
1477CONFIG_VIDEO_W9966=m
1478CONFIG_VIDEO_CPIA=m
1479CONFIG_VIDEO_CPIA_PP=m
1480CONFIG_VIDEO_CPIA_USB=m
1481CONFIG_VIDEO_CPIA2=m
1482CONFIG_VIDEO_SAA5246A=m
1483CONFIG_VIDEO_SAA5249=m
1484CONFIG_VIDEO_AU0828=m
1485# CONFIG_SOC_CAMERA is not set
1486CONFIG_V4L_USB_DRIVERS=y
1487# CONFIG_USB_VIDEO_CLASS is not set
1488CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
1489CONFIG_USB_GSPCA=m
1490# CONFIG_USB_M5602 is not set
1491# CONFIG_USB_STV06XX is not set
1492# CONFIG_USB_GSPCA_CONEX is not set
1493# CONFIG_USB_GSPCA_ETOMS is not set
1494# CONFIG_USB_GSPCA_FINEPIX is not set
1495# CONFIG_USB_GSPCA_MARS is not set
1496# CONFIG_USB_GSPCA_MR97310A is not set
1497# CONFIG_USB_GSPCA_OV519 is not set
1498# CONFIG_USB_GSPCA_OV534 is not set
1499# CONFIG_USB_GSPCA_PAC207 is not set
1500# CONFIG_USB_GSPCA_PAC7311 is not set
1501# CONFIG_USB_GSPCA_SONIXB is not set
1502# CONFIG_USB_GSPCA_SONIXJ is not set
1503# CONFIG_USB_GSPCA_SPCA500 is not set
1504# CONFIG_USB_GSPCA_SPCA501 is not set
1505# CONFIG_USB_GSPCA_SPCA505 is not set
1506# CONFIG_USB_GSPCA_SPCA506 is not set
1507# CONFIG_USB_GSPCA_SPCA508 is not set
1508# CONFIG_USB_GSPCA_SPCA561 is not set
1509# CONFIG_USB_GSPCA_SQ905 is not set
1510# CONFIG_USB_GSPCA_SQ905C is not set
1511# CONFIG_USB_GSPCA_STK014 is not set
1512# CONFIG_USB_GSPCA_SUNPLUS is not set
1513# CONFIG_USB_GSPCA_T613 is not set
1514# CONFIG_USB_GSPCA_TV8532 is not set
1515# CONFIG_USB_GSPCA_VC032X is not set
1516# CONFIG_USB_GSPCA_ZC3XX is not set
1517# CONFIG_VIDEO_PVRUSB2 is not set
1518# CONFIG_VIDEO_HDPVR is not set
1519# CONFIG_VIDEO_EM28XX is not set
1520# CONFIG_VIDEO_CX231XX is not set
1521# CONFIG_VIDEO_USBVISION is not set
1522# CONFIG_USB_VICAM is not set
1523# CONFIG_USB_IBMCAM is not set
1524# CONFIG_USB_KONICAWC is not set
1525# CONFIG_USB_QUICKCAM_MESSENGER is not set
1526# CONFIG_USB_ET61X251 is not set
1527# CONFIG_VIDEO_OVCAMCHIP is not set
1528# CONFIG_USB_OV511 is not set
1529# CONFIG_USB_SE401 is not set
1530# CONFIG_USB_SN9C102 is not set
1531# CONFIG_USB_STV680 is not set
1532# CONFIG_USB_ZC0301 is not set
1533# CONFIG_USB_PWC is not set
1534CONFIG_USB_PWC_INPUT_EVDEV=y
1535# CONFIG_USB_ZR364XX is not set
1536# CONFIG_USB_STKWEBCAM is not set
1537# CONFIG_USB_S2255 is not set
1538CONFIG_RADIO_ADAPTERS=y
1539CONFIG_RADIO_CADET=m
1540CONFIG_RADIO_RTRACK=m
1541CONFIG_RADIO_RTRACK2=m
1542CONFIG_RADIO_AZTECH=m
1543CONFIG_RADIO_GEMTEK=m
1544CONFIG_RADIO_SF16FMI=m
1545CONFIG_RADIO_SF16FMR2=m
1546CONFIG_RADIO_TERRATEC=m
1547CONFIG_RADIO_TRUST=m
1548CONFIG_RADIO_TYPHOON=m
1549CONFIG_RADIO_TYPHOON_PROC_FS=y
1550CONFIG_RADIO_ZOLTRIX=m
1551CONFIG_USB_DSBR=m
1552CONFIG_USB_SI470X=m
1553CONFIG_USB_MR800=m
1554CONFIG_RADIO_TEA5764=m
1555CONFIG_DVB_DYNAMIC_MINORS=y
1556CONFIG_DVB_CAPTURE_DRIVERS=y
1557# CONFIG_TTPCI_EEPROM is not set
1558
1559#
1560# Supported USB Adapters
1561#
1562CONFIG_DVB_USB=m
1563# CONFIG_DVB_USB_DEBUG is not set
1564# CONFIG_DVB_USB_A800 is not set
1565CONFIG_DVB_USB_DIBUSB_MB=m
1566# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
1567CONFIG_DVB_USB_DIBUSB_MC=m
1568CONFIG_DVB_USB_DIB0700=m
1569CONFIG_DVB_USB_UMT_010=m
1570CONFIG_DVB_USB_CXUSB=m
1571CONFIG_DVB_USB_M920X=m
1572# CONFIG_DVB_USB_GL861 is not set
1573# CONFIG_DVB_USB_AU6610 is not set
1574# CONFIG_DVB_USB_DIGITV is not set
1575# CONFIG_DVB_USB_VP7045 is not set
1576# CONFIG_DVB_USB_VP702X is not set
1577# CONFIG_DVB_USB_GP8PSK is not set
1578# CONFIG_DVB_USB_NOVA_T_USB2 is not set
1579# CONFIG_DVB_USB_TTUSB2 is not set
1580# CONFIG_DVB_USB_DTT200U is not set
1581# CONFIG_DVB_USB_OPERA1 is not set
1582CONFIG_DVB_USB_AF9005=m
1583# CONFIG_DVB_USB_AF9005_REMOTE is not set
1584# CONFIG_DVB_USB_DW2102 is not set
1585# CONFIG_DVB_USB_CINERGY_T2 is not set
1586# CONFIG_DVB_USB_ANYSEE is not set
1587# CONFIG_DVB_USB_DTV5100 is not set
1588# CONFIG_DVB_USB_AF9015 is not set
1589# CONFIG_DVB_USB_CE6230 is not set
1590# CONFIG_DVB_SIANO_SMS1XXX is not set
1591
1592#
1593# Supported FlexCopII (B2C2) Adapters
1594#
1595# CONFIG_DVB_B2C2_FLEXCOP is not set
1596
1597#
1598# Supported DVB Frontends
1599#
1600# CONFIG_DVB_FE_CUSTOMISE is not set
1601CONFIG_DVB_CX22702=m
1602CONFIG_DVB_TDA1004X=m
1603CONFIG_DVB_MT352=m
1604CONFIG_DVB_ZL10353=m
1605CONFIG_DVB_DIB3000MB=m
1606CONFIG_DVB_DIB3000MC=m
1607CONFIG_DVB_DIB7000M=m
1608CONFIG_DVB_DIB7000P=m
1609CONFIG_DVB_LGDT330X=m
1610CONFIG_DVB_LGDT3305=m
1611CONFIG_DVB_AU8522=m
1612CONFIG_DVB_S5H1411=m
1613CONFIG_DVB_PLL=m
1614CONFIG_DVB_TUNER_DIB0070=m
1615CONFIG_DVB_LGS8GL5=m
1616CONFIG_DAB=y
1617CONFIG_USB_DABUSB=m
1076 1618
1077# 1619#
1078# Graphics support 1620# Graphics support
@@ -1082,6 +1624,7 @@ CONFIG_MFD_SM501=y
1082CONFIG_FB=y 1624CONFIG_FB=y
1083CONFIG_FIRMWARE_EDID=y 1625CONFIG_FIRMWARE_EDID=y
1084# CONFIG_FB_DDC is not set 1626# CONFIG_FB_DDC is not set
1627# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1085CONFIG_FB_CFB_FILLRECT=y 1628CONFIG_FB_CFB_FILLRECT=y
1086CONFIG_FB_CFB_COPYAREA=y 1629CONFIG_FB_CFB_COPYAREA=y
1087CONFIG_FB_CFB_IMAGEBLIT=y 1630CONFIG_FB_CFB_IMAGEBLIT=y
@@ -1105,7 +1648,19 @@ CONFIG_FB_S3C2410=y
1105# CONFIG_FB_S3C2410_DEBUG is not set 1648# CONFIG_FB_S3C2410_DEBUG is not set
1106CONFIG_FB_SM501=y 1649CONFIG_FB_SM501=y
1107# CONFIG_FB_VIRTUAL is not set 1650# CONFIG_FB_VIRTUAL is not set
1108# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1651# CONFIG_FB_METRONOME is not set
1652# CONFIG_FB_MB862XX is not set
1653# CONFIG_FB_BROADSHEET is not set
1654CONFIG_BACKLIGHT_LCD_SUPPORT=y
1655CONFIG_LCD_CLASS_DEVICE=m
1656# CONFIG_LCD_LTV350QV is not set
1657# CONFIG_LCD_ILI9320 is not set
1658# CONFIG_LCD_TDO24M is not set
1659# CONFIG_LCD_VGG2432A4 is not set
1660# CONFIG_LCD_PLATFORM is not set
1661CONFIG_BACKLIGHT_CLASS_DEVICE=m
1662CONFIG_BACKLIGHT_GENERIC=m
1663CONFIG_BACKLIGHT_PWM=m
1109 1664
1110# 1665#
1111# Display device support 1666# Display device support
@@ -1125,11 +1680,54 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
1125CONFIG_FONT_8x8=y 1680CONFIG_FONT_8x8=y
1126CONFIG_FONT_8x16=y 1681CONFIG_FONT_8x16=y
1127# CONFIG_LOGO is not set 1682# CONFIG_LOGO is not set
1128 1683CONFIG_SOUND=y
1129# 1684CONFIG_SOUND_OSS_CORE=y
1130# Sound 1685CONFIG_SND=y
1131# 1686CONFIG_SND_TIMER=y
1132# CONFIG_SOUND is not set 1687CONFIG_SND_PCM=y
1688CONFIG_SND_HWDEP=m
1689CONFIG_SND_RAWMIDI=m
1690CONFIG_SND_JACK=y
1691CONFIG_SND_SEQUENCER=m
1692# CONFIG_SND_SEQ_DUMMY is not set
1693CONFIG_SND_OSSEMUL=y
1694CONFIG_SND_MIXER_OSS=m
1695CONFIG_SND_PCM_OSS=m
1696CONFIG_SND_PCM_OSS_PLUGINS=y
1697CONFIG_SND_SEQUENCER_OSS=y
1698# CONFIG_SND_DYNAMIC_MINORS is not set
1699CONFIG_SND_SUPPORT_OLD_API=y
1700CONFIG_SND_VERBOSE_PROCFS=y
1701CONFIG_SND_VERBOSE_PRINTK=y
1702# CONFIG_SND_DEBUG is not set
1703CONFIG_SND_VMASTER=y
1704CONFIG_SND_AC97_CODEC=m
1705# CONFIG_SND_DRIVERS is not set
1706# CONFIG_SND_ARM is not set
1707# CONFIG_SND_SPI is not set
1708CONFIG_SND_USB=y
1709CONFIG_SND_USB_AUDIO=m
1710CONFIG_SND_USB_CAIAQ=m
1711# CONFIG_SND_USB_CAIAQ_INPUT is not set
1712CONFIG_SND_SOC=y
1713CONFIG_SND_SOC_AC97_BUS=y
1714CONFIG_SND_S3C24XX_SOC=y
1715CONFIG_SND_S3C24XX_SOC_I2S=m
1716CONFIG_SND_S3C_I2SV2_SOC=m
1717CONFIG_SND_S3C2412_SOC_I2S=m
1718CONFIG_SND_S3C2443_SOC_AC97=m
1719CONFIG_SND_S3C24XX_SOC_JIVE_WM8750=m
1720CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m
1721CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650=m
1722CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X=m
1723CONFIG_SND_SOC_I2C_AND_SPI=y
1724# CONFIG_SND_SOC_ALL_CODECS is not set
1725CONFIG_SND_SOC_AC97_CODEC=m
1726CONFIG_SND_SOC_L3=m
1727CONFIG_SND_SOC_UDA134X=m
1728CONFIG_SND_SOC_WM8750=m
1729# CONFIG_SOUND_PRIME is not set
1730CONFIG_AC97_BUS=y
1133CONFIG_HID_SUPPORT=y 1731CONFIG_HID_SUPPORT=y
1134CONFIG_HID=y 1732CONFIG_HID=y
1135# CONFIG_HID_DEBUG is not set 1733# CONFIG_HID_DEBUG is not set
@@ -1139,12 +1737,12 @@ CONFIG_HID=y
1139# USB Input Devices 1737# USB Input Devices
1140# 1738#
1141# CONFIG_USB_HID is not set 1739# CONFIG_USB_HID is not set
1740# CONFIG_HID_PID is not set
1142 1741
1143# 1742#
1144# USB HID Boot Protocol drivers 1743# Special HID drivers
1145# 1744#
1146# CONFIG_USB_KBD is not set 1745CONFIG_HID_APPLE=m
1147# CONFIG_USB_MOUSE is not set
1148CONFIG_USB_SUPPORT=y 1746CONFIG_USB_SUPPORT=y
1149CONFIG_USB_ARCH_HAS_HCD=y 1747CONFIG_USB_ARCH_HAS_HCD=y
1150CONFIG_USB_ARCH_HAS_OHCI=y 1748CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1161,19 +1759,26 @@ CONFIG_USB_DEVICE_CLASS=y
1161# CONFIG_USB_DYNAMIC_MINORS is not set 1759# CONFIG_USB_DYNAMIC_MINORS is not set
1162# CONFIG_USB_SUSPEND is not set 1760# CONFIG_USB_SUSPEND is not set
1163# CONFIG_USB_OTG is not set 1761# CONFIG_USB_OTG is not set
1762CONFIG_USB_MON=y
1763# CONFIG_USB_WUSB is not set
1764# CONFIG_USB_WUSB_CBAF is not set
1164 1765
1165# 1766#
1166# USB Host Controller Drivers 1767# USB Host Controller Drivers
1167# 1768#
1168# CONFIG_USB_C67X00_HCD is not set 1769# CONFIG_USB_C67X00_HCD is not set
1770# CONFIG_USB_OXU210HP_HCD is not set
1169# CONFIG_USB_ISP116X_HCD is not set 1771# CONFIG_USB_ISP116X_HCD is not set
1170# CONFIG_USB_ISP1760_HCD is not set 1772# CONFIG_USB_ISP1760_HCD is not set
1171CONFIG_USB_OHCI_HCD=y 1773CONFIG_USB_OHCI_HCD=y
1172# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1774# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1173# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1775# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1174CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1776CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1777# CONFIG_USB_U132_HCD is not set
1175# CONFIG_USB_SL811_HCD is not set 1778# CONFIG_USB_SL811_HCD is not set
1176# CONFIG_USB_R8A66597_HCD is not set 1779# CONFIG_USB_R8A66597_HCD is not set
1780# CONFIG_USB_HWA_HCD is not set
1781# CONFIG_USB_MUSB_HDRC is not set
1177 1782
1178# 1783#
1179# USB Device Class drivers 1784# USB Device Class drivers
@@ -1181,53 +1786,51 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1181CONFIG_USB_ACM=m 1786CONFIG_USB_ACM=m
1182CONFIG_USB_PRINTER=m 1787CONFIG_USB_PRINTER=m
1183CONFIG_USB_WDM=m 1788CONFIG_USB_WDM=m
1789# CONFIG_USB_TMC is not set
1184 1790
1185# 1791#
1186# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1792# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1187# 1793#
1188 1794
1189# 1795#
1190# may also be needed; see USB_STORAGE Help for more information 1796# also be needed; see USB_STORAGE Help for more info
1191# 1797#
1192CONFIG_USB_STORAGE=m 1798CONFIG_USB_STORAGE=m
1193# CONFIG_USB_STORAGE_DEBUG is not set 1799# CONFIG_USB_STORAGE_DEBUG is not set
1194# CONFIG_USB_STORAGE_DATAFAB is not set 1800CONFIG_USB_STORAGE_DATAFAB=m
1195# CONFIG_USB_STORAGE_FREECOM is not set 1801CONFIG_USB_STORAGE_FREECOM=m
1196# CONFIG_USB_STORAGE_ISD200 is not set 1802CONFIG_USB_STORAGE_ISD200=m
1197# CONFIG_USB_STORAGE_DPCM is not set 1803CONFIG_USB_STORAGE_USBAT=m
1198# CONFIG_USB_STORAGE_USBAT is not set 1804CONFIG_USB_STORAGE_SDDR09=m
1199# CONFIG_USB_STORAGE_SDDR09 is not set 1805CONFIG_USB_STORAGE_SDDR55=m
1200# CONFIG_USB_STORAGE_SDDR55 is not set 1806CONFIG_USB_STORAGE_JUMPSHOT=m
1201# CONFIG_USB_STORAGE_JUMPSHOT is not set 1807CONFIG_USB_STORAGE_ALAUDA=m
1202# CONFIG_USB_STORAGE_ALAUDA is not set 1808CONFIG_USB_STORAGE_ONETOUCH=m
1203# CONFIG_USB_STORAGE_ONETOUCH is not set 1809CONFIG_USB_STORAGE_KARMA=m
1204# CONFIG_USB_STORAGE_KARMA is not set 1810CONFIG_USB_STORAGE_CYPRESS_ATACB=m
1205# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1206CONFIG_USB_LIBUSUAL=y 1811CONFIG_USB_LIBUSUAL=y
1207 1812
1208# 1813#
1209# USB Imaging devices 1814# USB Imaging devices
1210# 1815#
1211# CONFIG_USB_MDC800 is not set 1816CONFIG_USB_MDC800=m
1212# CONFIG_USB_MICROTEK is not set 1817CONFIG_USB_MICROTEK=m
1213CONFIG_USB_MON=y
1214 1818
1215# 1819#
1216# USB port drivers 1820# USB port drivers
1217# 1821#
1218# CONFIG_USB_USS720 is not set 1822CONFIG_USB_USS720=m
1219CONFIG_USB_SERIAL=y 1823CONFIG_USB_SERIAL=y
1220# CONFIG_USB_SERIAL_CONSOLE is not set 1824# CONFIG_USB_SERIAL_CONSOLE is not set
1221# CONFIG_USB_EZUSB is not set 1825# CONFIG_USB_EZUSB is not set
1222CONFIG_USB_SERIAL_GENERIC=y 1826CONFIG_USB_SERIAL_GENERIC=y
1223# CONFIG_USB_SERIAL_AIRCABLE is not set 1827# CONFIG_USB_SERIAL_AIRCABLE is not set
1224# CONFIG_USB_SERIAL_AIRPRIME is not set
1225# CONFIG_USB_SERIAL_ARK3116 is not set 1828# CONFIG_USB_SERIAL_ARK3116 is not set
1226# CONFIG_USB_SERIAL_BELKIN is not set 1829# CONFIG_USB_SERIAL_BELKIN is not set
1227# CONFIG_USB_SERIAL_CH341 is not set 1830# CONFIG_USB_SERIAL_CH341 is not set
1228# CONFIG_USB_SERIAL_WHITEHEAT is not set 1831# CONFIG_USB_SERIAL_WHITEHEAT is not set
1229# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set 1832# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
1230# CONFIG_USB_SERIAL_CP2101 is not set 1833# CONFIG_USB_SERIAL_CP210X is not set
1231# CONFIG_USB_SERIAL_CYPRESS_M8 is not set 1834# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
1232# CONFIG_USB_SERIAL_EMPEG is not set 1835# CONFIG_USB_SERIAL_EMPEG is not set
1233CONFIG_USB_SERIAL_FTDI_SIO=y 1836CONFIG_USB_SERIAL_FTDI_SIO=y
@@ -1251,42 +1854,71 @@ CONFIG_USB_SERIAL_FTDI_SIO=y
1251CONFIG_USB_SERIAL_NAVMAN=m 1854CONFIG_USB_SERIAL_NAVMAN=m
1252CONFIG_USB_SERIAL_PL2303=y 1855CONFIG_USB_SERIAL_PL2303=y
1253# CONFIG_USB_SERIAL_OTI6858 is not set 1856# CONFIG_USB_SERIAL_OTI6858 is not set
1857# CONFIG_USB_SERIAL_QUALCOMM is not set
1254# CONFIG_USB_SERIAL_SPCP8X5 is not set 1858# CONFIG_USB_SERIAL_SPCP8X5 is not set
1255# CONFIG_USB_SERIAL_HP4X is not set 1859# CONFIG_USB_SERIAL_HP4X is not set
1256# CONFIG_USB_SERIAL_SAFE is not set 1860# CONFIG_USB_SERIAL_SAFE is not set
1861# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
1257# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set 1862# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
1863# CONFIG_USB_SERIAL_SYMBOL is not set
1258# CONFIG_USB_SERIAL_TI is not set 1864# CONFIG_USB_SERIAL_TI is not set
1259# CONFIG_USB_SERIAL_CYBERJACK is not set 1865# CONFIG_USB_SERIAL_CYBERJACK is not set
1260# CONFIG_USB_SERIAL_XIRCOM is not set 1866# CONFIG_USB_SERIAL_XIRCOM is not set
1261CONFIG_USB_SERIAL_OPTION=m 1867CONFIG_USB_SERIAL_OPTION=m
1262# CONFIG_USB_SERIAL_OMNINET is not set 1868# CONFIG_USB_SERIAL_OMNINET is not set
1869# CONFIG_USB_SERIAL_OPTICON is not set
1263# CONFIG_USB_SERIAL_DEBUG is not set 1870# CONFIG_USB_SERIAL_DEBUG is not set
1264 1871
1265# 1872#
1266# USB Miscellaneous drivers 1873# USB Miscellaneous drivers
1267# 1874#
1268# CONFIG_USB_EMI62 is not set 1875CONFIG_USB_EMI62=m
1269# CONFIG_USB_EMI26 is not set 1876CONFIG_USB_EMI26=m
1270# CONFIG_USB_ADUTUX is not set 1877CONFIG_USB_ADUTUX=m
1271# CONFIG_USB_AUERSWALD is not set 1878CONFIG_USB_SEVSEG=m
1272# CONFIG_USB_RIO500 is not set 1879CONFIG_USB_RIO500=m
1273# CONFIG_USB_LEGOTOWER is not set 1880CONFIG_USB_LEGOTOWER=m
1274# CONFIG_USB_LCD is not set 1881CONFIG_USB_LCD=m
1275# CONFIG_USB_BERRY_CHARGE is not set 1882CONFIG_USB_BERRY_CHARGE=m
1276CONFIG_USB_LED=m 1883CONFIG_USB_LED=m
1277# CONFIG_USB_CYPRESS_CY7C63 is not set 1884CONFIG_USB_CYPRESS_CY7C63=m
1278# CONFIG_USB_CYTHERM is not set 1885CONFIG_USB_CYTHERM=m
1279# CONFIG_USB_PHIDGET is not set 1886CONFIG_USB_IDMOUSE=m
1280# CONFIG_USB_IDMOUSE is not set 1887CONFIG_USB_FTDI_ELAN=m
1281# CONFIG_USB_FTDI_ELAN is not set 1888CONFIG_USB_APPLEDISPLAY=m
1282# CONFIG_USB_APPLEDISPLAY is not set
1283CONFIG_USB_LD=m 1889CONFIG_USB_LD=m
1284# CONFIG_USB_TRANCEVIBRATOR is not set 1890CONFIG_USB_TRANCEVIBRATOR=m
1285# CONFIG_USB_IOWARRIOR is not set 1891CONFIG_USB_IOWARRIOR=m
1286# CONFIG_USB_TEST is not set 1892CONFIG_USB_TEST=m
1287# CONFIG_USB_ISIGHTFW is not set 1893# CONFIG_USB_ISIGHTFW is not set
1894# CONFIG_USB_VST is not set
1288# CONFIG_USB_GADGET is not set 1895# CONFIG_USB_GADGET is not set
1289# CONFIG_MMC is not set 1896
1897#
1898# OTG and related infrastructure
1899#
1900# CONFIG_USB_GPIO_VBUS is not set
1901# CONFIG_NOP_USB_XCEIV is not set
1902CONFIG_MMC=y
1903# CONFIG_MMC_DEBUG is not set
1904# CONFIG_MMC_UNSAFE_RESUME is not set
1905
1906#
1907# MMC/SD/SDIO Card Drivers
1908#
1909CONFIG_MMC_BLOCK=y
1910CONFIG_MMC_BLOCK_BOUNCE=y
1911CONFIG_SDIO_UART=m
1912CONFIG_MMC_TEST=m
1913
1914#
1915# MMC/SD/SDIO Host Controller Drivers
1916#
1917CONFIG_MMC_SDHCI=m
1918CONFIG_MMC_SPI=m
1919CONFIG_MMC_S3C=y
1920# CONFIG_MEMSTICK is not set
1921# CONFIG_ACCESSIBILITY is not set
1290CONFIG_NEW_LEDS=y 1922CONFIG_NEW_LEDS=y
1291CONFIG_LEDS_CLASS=m 1923CONFIG_LEDS_CLASS=m
1292 1924
@@ -1295,7 +1927,14 @@ CONFIG_LEDS_CLASS=m
1295# 1927#
1296CONFIG_LEDS_S3C24XX=m 1928CONFIG_LEDS_S3C24XX=m
1297CONFIG_LEDS_H1940=m 1929CONFIG_LEDS_H1940=m
1298# CONFIG_LEDS_GPIO is not set 1930CONFIG_LEDS_PCA9532=m
1931CONFIG_LEDS_GPIO=m
1932CONFIG_LEDS_GPIO_PLATFORM=y
1933CONFIG_LEDS_LP5521=m
1934CONFIG_LEDS_PCA955X=m
1935CONFIG_LEDS_DAC124S085=m
1936CONFIG_LEDS_PWM=m
1937CONFIG_LEDS_BD2802=m
1299 1938
1300# 1939#
1301# LED Triggers 1940# LED Triggers
@@ -1304,7 +1943,13 @@ CONFIG_LEDS_TRIGGERS=y
1304CONFIG_LEDS_TRIGGER_TIMER=m 1943CONFIG_LEDS_TRIGGER_TIMER=m
1305# CONFIG_LEDS_TRIGGER_IDE_DISK is not set 1944# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
1306CONFIG_LEDS_TRIGGER_HEARTBEAT=m 1945CONFIG_LEDS_TRIGGER_HEARTBEAT=m
1307# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 1946CONFIG_LEDS_TRIGGER_BACKLIGHT=m
1947CONFIG_LEDS_TRIGGER_GPIO=m
1948CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
1949
1950#
1951# iptables trigger is under Netfilter config (LED target)
1952#
1308CONFIG_RTC_LIB=y 1953CONFIG_RTC_LIB=y
1309CONFIG_RTC_CLASS=y 1954CONFIG_RTC_CLASS=y
1310CONFIG_RTC_HCTOSYS=y 1955CONFIG_RTC_HCTOSYS=y
@@ -1335,31 +1980,43 @@ CONFIG_RTC_INTF_DEV=y
1335# CONFIG_RTC_DRV_M41T80 is not set 1980# CONFIG_RTC_DRV_M41T80 is not set
1336# CONFIG_RTC_DRV_S35390A is not set 1981# CONFIG_RTC_DRV_S35390A is not set
1337# CONFIG_RTC_DRV_FM3130 is not set 1982# CONFIG_RTC_DRV_FM3130 is not set
1983# CONFIG_RTC_DRV_RX8581 is not set
1338 1984
1339# 1985#
1340# SPI RTC drivers 1986# SPI RTC drivers
1341# 1987#
1988# CONFIG_RTC_DRV_M41T94 is not set
1989# CONFIG_RTC_DRV_DS1305 is not set
1990# CONFIG_RTC_DRV_DS1390 is not set
1342# CONFIG_RTC_DRV_MAX6902 is not set 1991# CONFIG_RTC_DRV_MAX6902 is not set
1343# CONFIG_RTC_DRV_R9701 is not set 1992# CONFIG_RTC_DRV_R9701 is not set
1344# CONFIG_RTC_DRV_RS5C348 is not set 1993# CONFIG_RTC_DRV_RS5C348 is not set
1994# CONFIG_RTC_DRV_DS3234 is not set
1345 1995
1346# 1996#
1347# Platform RTC drivers 1997# Platform RTC drivers
1348# 1998#
1349# CONFIG_RTC_DRV_CMOS is not set 1999# CONFIG_RTC_DRV_CMOS is not set
2000# CONFIG_RTC_DRV_DS1286 is not set
1350# CONFIG_RTC_DRV_DS1511 is not set 2001# CONFIG_RTC_DRV_DS1511 is not set
1351# CONFIG_RTC_DRV_DS1553 is not set 2002# CONFIG_RTC_DRV_DS1553 is not set
1352# CONFIG_RTC_DRV_DS1742 is not set 2003# CONFIG_RTC_DRV_DS1742 is not set
1353# CONFIG_RTC_DRV_STK17TA8 is not set 2004# CONFIG_RTC_DRV_STK17TA8 is not set
1354# CONFIG_RTC_DRV_M48T86 is not set 2005# CONFIG_RTC_DRV_M48T86 is not set
2006# CONFIG_RTC_DRV_M48T35 is not set
1355# CONFIG_RTC_DRV_M48T59 is not set 2007# CONFIG_RTC_DRV_M48T59 is not set
2008# CONFIG_RTC_DRV_BQ4802 is not set
1356# CONFIG_RTC_DRV_V3020 is not set 2009# CONFIG_RTC_DRV_V3020 is not set
1357 2010
1358# 2011#
1359# on-CPU RTC drivers 2012# on-CPU RTC drivers
1360# 2013#
1361CONFIG_RTC_DRV_S3C=y 2014CONFIG_RTC_DRV_S3C=y
2015# CONFIG_DMADEVICES is not set
2016# CONFIG_AUXDISPLAY is not set
2017# CONFIG_REGULATOR is not set
1362# CONFIG_UIO is not set 2018# CONFIG_UIO is not set
2019# CONFIG_STAGING is not set
1363 2020
1364# 2021#
1365# File systems 2022# File systems
@@ -1370,27 +2027,40 @@ CONFIG_EXT2_FS_POSIX_ACL=y
1370CONFIG_EXT2_FS_SECURITY=y 2027CONFIG_EXT2_FS_SECURITY=y
1371# CONFIG_EXT2_FS_XIP is not set 2028# CONFIG_EXT2_FS_XIP is not set
1372CONFIG_EXT3_FS=y 2029CONFIG_EXT3_FS=y
2030# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1373CONFIG_EXT3_FS_XATTR=y 2031CONFIG_EXT3_FS_XATTR=y
1374CONFIG_EXT3_FS_POSIX_ACL=y 2032CONFIG_EXT3_FS_POSIX_ACL=y
1375# CONFIG_EXT3_FS_SECURITY is not set 2033# CONFIG_EXT3_FS_SECURITY is not set
1376# CONFIG_EXT4DEV_FS is not set 2034CONFIG_EXT4_FS=m
2035# CONFIG_EXT4DEV_COMPAT is not set
2036CONFIG_EXT4_FS_XATTR=y
2037CONFIG_EXT4_FS_POSIX_ACL=y
2038# CONFIG_EXT4_FS_SECURITY is not set
1377CONFIG_JBD=y 2039CONFIG_JBD=y
2040CONFIG_JBD2=m
1378CONFIG_FS_MBCACHE=y 2041CONFIG_FS_MBCACHE=y
1379# CONFIG_REISERFS_FS is not set 2042# CONFIG_REISERFS_FS is not set
1380# CONFIG_JFS_FS is not set 2043# CONFIG_JFS_FS is not set
1381CONFIG_FS_POSIX_ACL=y 2044CONFIG_FS_POSIX_ACL=y
2045CONFIG_FILE_LOCKING=y
1382# CONFIG_XFS_FS is not set 2046# CONFIG_XFS_FS is not set
1383# CONFIG_OCFS2_FS is not set 2047# CONFIG_OCFS2_FS is not set
2048# CONFIG_BTRFS_FS is not set
1384CONFIG_DNOTIFY=y 2049CONFIG_DNOTIFY=y
1385CONFIG_INOTIFY=y 2050CONFIG_INOTIFY=y
1386CONFIG_INOTIFY_USER=y 2051CONFIG_INOTIFY_USER=y
1387# CONFIG_QUOTA is not set 2052# CONFIG_QUOTA is not set
1388# CONFIG_AUTOFS_FS is not set 2053CONFIG_AUTOFS_FS=m
1389# CONFIG_AUTOFS4_FS is not set 2054CONFIG_AUTOFS4_FS=m
1390# CONFIG_FUSE_FS is not set 2055CONFIG_FUSE_FS=m
1391CONFIG_GENERIC_ACL=y 2056CONFIG_GENERIC_ACL=y
1392 2057
1393# 2058#
2059# Caches
2060#
2061# CONFIG_FSCACHE is not set
2062
2063#
1394# CD-ROM/DVD Filesystems 2064# CD-ROM/DVD Filesystems
1395# 2065#
1396CONFIG_ISO9660_FS=y 2066CONFIG_ISO9660_FS=y
@@ -1416,15 +2086,13 @@ CONFIG_NTFS_FS=m
1416# 2086#
1417CONFIG_PROC_FS=y 2087CONFIG_PROC_FS=y
1418CONFIG_PROC_SYSCTL=y 2088CONFIG_PROC_SYSCTL=y
2089CONFIG_PROC_PAGE_MONITOR=y
1419CONFIG_SYSFS=y 2090CONFIG_SYSFS=y
1420CONFIG_TMPFS=y 2091CONFIG_TMPFS=y
1421CONFIG_TMPFS_POSIX_ACL=y 2092CONFIG_TMPFS_POSIX_ACL=y
1422# CONFIG_HUGETLB_PAGE is not set 2093# CONFIG_HUGETLB_PAGE is not set
1423CONFIG_CONFIGFS_FS=m 2094CONFIG_CONFIGFS_FS=m
1424 2095CONFIG_MISC_FILESYSTEMS=y
1425#
1426# Miscellaneous filesystems
1427#
1428# CONFIG_ADFS_FS is not set 2096# CONFIG_ADFS_FS is not set
1429# CONFIG_AFFS_FS is not set 2097# CONFIG_AFFS_FS is not set
1430# CONFIG_HFS_FS is not set 2098# CONFIG_HFS_FS is not set
@@ -1444,27 +2112,49 @@ CONFIG_JFFS2_ZLIB=y
1444CONFIG_JFFS2_RTIME=y 2112CONFIG_JFFS2_RTIME=y
1445# CONFIG_JFFS2_RUBIN is not set 2113# CONFIG_JFFS2_RUBIN is not set
1446CONFIG_CRAMFS=y 2114CONFIG_CRAMFS=y
2115CONFIG_SQUASHFS=m
2116# CONFIG_SQUASHFS_EMBEDDED is not set
2117CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
1447# CONFIG_VXFS_FS is not set 2118# CONFIG_VXFS_FS is not set
1448# CONFIG_MINIX_FS is not set 2119# CONFIG_MINIX_FS is not set
2120# CONFIG_OMFS_FS is not set
1449# CONFIG_HPFS_FS is not set 2121# CONFIG_HPFS_FS is not set
1450# CONFIG_QNX4FS_FS is not set 2122# CONFIG_QNX4FS_FS is not set
1451CONFIG_ROMFS_FS=y 2123CONFIG_ROMFS_FS=y
2124CONFIG_ROMFS_BACKED_BY_BLOCK=y
2125# CONFIG_ROMFS_BACKED_BY_MTD is not set
2126# CONFIG_ROMFS_BACKED_BY_BOTH is not set
2127CONFIG_ROMFS_ON_BLOCK=y
1452# CONFIG_SYSV_FS is not set 2128# CONFIG_SYSV_FS is not set
1453# CONFIG_UFS_FS is not set 2129# CONFIG_UFS_FS is not set
2130# CONFIG_NILFS2_FS is not set
1454CONFIG_NETWORK_FILESYSTEMS=y 2131CONFIG_NETWORK_FILESYSTEMS=y
1455CONFIG_NFS_FS=y 2132CONFIG_NFS_FS=y
1456# CONFIG_NFS_V3 is not set 2133CONFIG_NFS_V3=y
2134CONFIG_NFS_V3_ACL=y
1457# CONFIG_NFS_V4 is not set 2135# CONFIG_NFS_V4 is not set
1458# CONFIG_NFSD is not set
1459CONFIG_ROOT_NFS=y 2136CONFIG_ROOT_NFS=y
2137CONFIG_NFSD=m
2138CONFIG_NFSD_V2_ACL=y
2139CONFIG_NFSD_V3=y
2140CONFIG_NFSD_V3_ACL=y
2141CONFIG_NFSD_V4=y
1460CONFIG_LOCKD=y 2142CONFIG_LOCKD=y
2143CONFIG_LOCKD_V4=y
2144CONFIG_EXPORTFS=m
2145CONFIG_NFS_ACL_SUPPORT=y
1461CONFIG_NFS_COMMON=y 2146CONFIG_NFS_COMMON=y
1462CONFIG_SUNRPC=y 2147CONFIG_SUNRPC=y
1463# CONFIG_SUNRPC_BIND34 is not set 2148CONFIG_SUNRPC_GSS=m
1464# CONFIG_RPCSEC_GSS_KRB5 is not set 2149CONFIG_RPCSEC_GSS_KRB5=m
1465# CONFIG_RPCSEC_GSS_SPKM3 is not set 2150# CONFIG_RPCSEC_GSS_SPKM3 is not set
1466# CONFIG_SMB_FS is not set 2151# CONFIG_SMB_FS is not set
1467# CONFIG_CIFS is not set 2152CONFIG_CIFS=m
2153# CONFIG_CIFS_STATS is not set
2154# CONFIG_CIFS_WEAK_PW_HASH is not set
2155# CONFIG_CIFS_XATTR is not set
2156# CONFIG_CIFS_DEBUG2 is not set
2157# CONFIG_CIFS_EXPERIMENTAL is not set
1468# CONFIG_NCP_FS is not set 2158# CONFIG_NCP_FS is not set
1469# CONFIG_CODA_FS is not set 2159# CONFIG_CODA_FS is not set
1470# CONFIG_AFS_FS is not set 2160# CONFIG_AFS_FS is not set
@@ -1546,6 +2236,11 @@ CONFIG_MAGIC_SYSRQ=y
1546CONFIG_DEBUG_KERNEL=y 2236CONFIG_DEBUG_KERNEL=y
1547# CONFIG_DEBUG_SHIRQ is not set 2237# CONFIG_DEBUG_SHIRQ is not set
1548CONFIG_DETECT_SOFTLOCKUP=y 2238CONFIG_DETECT_SOFTLOCKUP=y
2239# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
2240CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
2241CONFIG_DETECT_HUNG_TASK=y
2242# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
2243CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1549CONFIG_SCHED_DEBUG=y 2244CONFIG_SCHED_DEBUG=y
1550# CONFIG_SCHEDSTATS is not set 2245# CONFIG_SCHEDSTATS is not set
1551# CONFIG_TIMER_STATS is not set 2246# CONFIG_TIMER_STATS is not set
@@ -1565,14 +2260,39 @@ CONFIG_DEBUG_BUGVERBOSE=y
1565CONFIG_DEBUG_INFO=y 2260CONFIG_DEBUG_INFO=y
1566# CONFIG_DEBUG_VM is not set 2261# CONFIG_DEBUG_VM is not set
1567# CONFIG_DEBUG_WRITECOUNT is not set 2262# CONFIG_DEBUG_WRITECOUNT is not set
2263CONFIG_DEBUG_MEMORY_INIT=y
1568# CONFIG_DEBUG_LIST is not set 2264# CONFIG_DEBUG_LIST is not set
1569# CONFIG_DEBUG_SG is not set 2265# CONFIG_DEBUG_SG is not set
2266# CONFIG_DEBUG_NOTIFIERS is not set
1570CONFIG_FRAME_POINTER=y 2267CONFIG_FRAME_POINTER=y
1571# CONFIG_BOOT_PRINTK_DELAY is not set 2268# CONFIG_BOOT_PRINTK_DELAY is not set
1572# CONFIG_RCU_TORTURE_TEST is not set 2269# CONFIG_RCU_TORTURE_TEST is not set
2270# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1573# CONFIG_BACKTRACE_SELF_TEST is not set 2271# CONFIG_BACKTRACE_SELF_TEST is not set
2272# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1574# CONFIG_FAULT_INJECTION is not set 2273# CONFIG_FAULT_INJECTION is not set
2274# CONFIG_LATENCYTOP is not set
2275CONFIG_SYSCTL_SYSCALL_CHECK=y
2276# CONFIG_PAGE_POISONING is not set
2277CONFIG_HAVE_FUNCTION_TRACER=y
2278CONFIG_TRACING_SUPPORT=y
2279
2280#
2281# Tracers
2282#
2283# CONFIG_FUNCTION_TRACER is not set
2284# CONFIG_SCHED_TRACER is not set
2285# CONFIG_CONTEXT_SWITCH_TRACER is not set
2286# CONFIG_EVENT_TRACER is not set
2287# CONFIG_BOOT_TRACER is not set
2288# CONFIG_TRACE_BRANCH_PROFILING is not set
2289# CONFIG_STACK_TRACER is not set
2290# CONFIG_KMEMTRACE is not set
2291# CONFIG_WORKQUEUE_TRACER is not set
2292# CONFIG_BLK_DEV_IO_TRACE is not set
1575# CONFIG_SAMPLES is not set 2293# CONFIG_SAMPLES is not set
2294CONFIG_HAVE_ARCH_KGDB=y
2295# CONFIG_KGDB is not set
1576CONFIG_DEBUG_USER=y 2296CONFIG_DEBUG_USER=y
1577CONFIG_DEBUG_ERRORS=y 2297CONFIG_DEBUG_ERRORS=y
1578# CONFIG_DEBUG_STACK_USAGE is not set 2298# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1586,19 +2306,29 @@ CONFIG_DEBUG_S3C_UART=0
1586# 2306#
1587# CONFIG_KEYS is not set 2307# CONFIG_KEYS is not set
1588# CONFIG_SECURITY is not set 2308# CONFIG_SECURITY is not set
2309# CONFIG_SECURITYFS is not set
1589# CONFIG_SECURITY_FILE_CAPABILITIES is not set 2310# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1590CONFIG_CRYPTO=y 2311CONFIG_CRYPTO=y
1591 2312
1592# 2313#
1593# Crypto core or helper 2314# Crypto core or helper
1594# 2315#
2316# CONFIG_CRYPTO_FIPS is not set
1595CONFIG_CRYPTO_ALGAPI=m 2317CONFIG_CRYPTO_ALGAPI=m
2318CONFIG_CRYPTO_ALGAPI2=m
1596CONFIG_CRYPTO_AEAD=m 2319CONFIG_CRYPTO_AEAD=m
2320CONFIG_CRYPTO_AEAD2=m
1597CONFIG_CRYPTO_BLKCIPHER=m 2321CONFIG_CRYPTO_BLKCIPHER=m
2322CONFIG_CRYPTO_BLKCIPHER2=m
1598CONFIG_CRYPTO_HASH=m 2323CONFIG_CRYPTO_HASH=m
2324CONFIG_CRYPTO_HASH2=m
2325CONFIG_CRYPTO_RNG2=m
2326CONFIG_CRYPTO_PCOMP=m
1599CONFIG_CRYPTO_MANAGER=m 2327CONFIG_CRYPTO_MANAGER=m
2328CONFIG_CRYPTO_MANAGER2=m
1600# CONFIG_CRYPTO_GF128MUL is not set 2329# CONFIG_CRYPTO_GF128MUL is not set
1601# CONFIG_CRYPTO_NULL is not set 2330# CONFIG_CRYPTO_NULL is not set
2331CONFIG_CRYPTO_WORKQUEUE=m
1602# CONFIG_CRYPTO_CRYPTD is not set 2332# CONFIG_CRYPTO_CRYPTD is not set
1603CONFIG_CRYPTO_AUTHENC=m 2333CONFIG_CRYPTO_AUTHENC=m
1604# CONFIG_CRYPTO_TEST is not set 2334# CONFIG_CRYPTO_TEST is not set
@@ -1630,10 +2360,14 @@ CONFIG_CRYPTO_HMAC=m
1630# 2360#
1631# Digest 2361# Digest
1632# 2362#
1633# CONFIG_CRYPTO_CRC32C is not set 2363CONFIG_CRYPTO_CRC32C=m
1634# CONFIG_CRYPTO_MD4 is not set 2364# CONFIG_CRYPTO_MD4 is not set
1635CONFIG_CRYPTO_MD5=m 2365CONFIG_CRYPTO_MD5=m
1636# CONFIG_CRYPTO_MICHAEL_MIC is not set 2366# CONFIG_CRYPTO_MICHAEL_MIC is not set
2367# CONFIG_CRYPTO_RMD128 is not set
2368# CONFIG_CRYPTO_RMD160 is not set
2369# CONFIG_CRYPTO_RMD256 is not set
2370# CONFIG_CRYPTO_RMD320 is not set
1637CONFIG_CRYPTO_SHA1=m 2371CONFIG_CRYPTO_SHA1=m
1638# CONFIG_CRYPTO_SHA256 is not set 2372# CONFIG_CRYPTO_SHA256 is not set
1639# CONFIG_CRYPTO_SHA512 is not set 2373# CONFIG_CRYPTO_SHA512 is not set
@@ -1663,23 +2397,37 @@ CONFIG_CRYPTO_DES=m
1663# Compression 2397# Compression
1664# 2398#
1665CONFIG_CRYPTO_DEFLATE=m 2399CONFIG_CRYPTO_DEFLATE=m
2400# CONFIG_CRYPTO_ZLIB is not set
1666# CONFIG_CRYPTO_LZO is not set 2401# CONFIG_CRYPTO_LZO is not set
2402
2403#
2404# Random Number Generation
2405#
2406# CONFIG_CRYPTO_ANSI_CPRNG is not set
1667CONFIG_CRYPTO_HW=y 2407CONFIG_CRYPTO_HW=y
2408# CONFIG_BINARY_PRINTF is not set
1668 2409
1669# 2410#
1670# Library routines 2411# Library routines
1671# 2412#
1672CONFIG_BITREVERSE=y 2413CONFIG_BITREVERSE=y
1673# CONFIG_GENERIC_FIND_FIRST_BIT is not set 2414CONFIG_GENERIC_FIND_LAST_BIT=y
1674# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1675# CONFIG_CRC_CCITT is not set 2415# CONFIG_CRC_CCITT is not set
1676# CONFIG_CRC16 is not set 2416CONFIG_CRC16=m
2417# CONFIG_CRC_T10DIF is not set
1677CONFIG_CRC_ITU_T=m 2418CONFIG_CRC_ITU_T=m
1678CONFIG_CRC32=y 2419CONFIG_CRC32=y
1679# CONFIG_CRC7 is not set 2420CONFIG_CRC7=m
1680# CONFIG_LIBCRC32C is not set 2421CONFIG_LIBCRC32C=m
1681CONFIG_ZLIB_INFLATE=y 2422CONFIG_ZLIB_INFLATE=y
1682CONFIG_ZLIB_DEFLATE=y 2423CONFIG_ZLIB_DEFLATE=y
1683CONFIG_PLIST=y 2424CONFIG_DECOMPRESS_GZIP=y
2425CONFIG_DECOMPRESS_BZIP2=y
2426CONFIG_DECOMPRESS_LZMA=y
2427CONFIG_TEXTSEARCH=y
2428CONFIG_TEXTSEARCH_KMP=m
2429CONFIG_TEXTSEARCH_BM=m
2430CONFIG_TEXTSEARCH_FSM=m
1684CONFIG_HAS_IOMEM=y 2431CONFIG_HAS_IOMEM=y
1685CONFIG_HAS_DMA=y 2432CONFIG_HAS_DMA=y
2433CONFIG_NLATTR=y
diff --git a/arch/arm/include/asm/sizes.h b/arch/arm/include/asm/sizes.h
index c10d1aa4b487..ada93a8fc2ef 100644
--- a/arch/arm/include/asm/sizes.h
+++ b/arch/arm/include/asm/sizes.h
@@ -32,6 +32,7 @@
32#define SZ_4K 0x00001000 32#define SZ_4K 0x00001000
33#define SZ_8K 0x00002000 33#define SZ_8K 0x00002000
34#define SZ_16K 0x00004000 34#define SZ_16K 0x00004000
35#define SZ_32K 0x00008000
35#define SZ_64K 0x00010000 36#define SZ_64K 0x00010000
36#define SZ_128K 0x00020000 37#define SZ_128K 0x00020000
37#define SZ_256K 0x00040000 38#define SZ_256K 0x00040000
diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h
index 857f1dfac794..321c83e43a1e 100644
--- a/arch/arm/include/asm/tlb.h
+++ b/arch/arm/include/asm/tlb.h
@@ -36,6 +36,8 @@
36struct mmu_gather { 36struct mmu_gather {
37 struct mm_struct *mm; 37 struct mm_struct *mm;
38 unsigned int fullmm; 38 unsigned int fullmm;
39 unsigned long range_start;
40 unsigned long range_end;
39}; 41};
40 42
41DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); 43DECLARE_PER_CPU(struct mmu_gather, mmu_gathers);
@@ -63,7 +65,19 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end)
63 put_cpu_var(mmu_gathers); 65 put_cpu_var(mmu_gathers);
64} 66}
65 67
66#define tlb_remove_tlb_entry(tlb,ptep,address) do { } while (0) 68/*
69 * Memorize the range for the TLB flush.
70 */
71static inline void
72tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *ptep, unsigned long addr)
73{
74 if (!tlb->fullmm) {
75 if (addr < tlb->range_start)
76 tlb->range_start = addr;
77 if (addr + PAGE_SIZE > tlb->range_end)
78 tlb->range_end = addr + PAGE_SIZE;
79 }
80}
67 81
68/* 82/*
69 * In the case of tlb vma handling, we can optimise these away in the 83 * In the case of tlb vma handling, we can optimise these away in the
@@ -73,15 +87,18 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end)
73static inline void 87static inline void
74tlb_start_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) 88tlb_start_vma(struct mmu_gather *tlb, struct vm_area_struct *vma)
75{ 89{
76 if (!tlb->fullmm) 90 if (!tlb->fullmm) {
77 flush_cache_range(vma, vma->vm_start, vma->vm_end); 91 flush_cache_range(vma, vma->vm_start, vma->vm_end);
92 tlb->range_start = TASK_SIZE;
93 tlb->range_end = 0;
94 }
78} 95}
79 96
80static inline void 97static inline void
81tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) 98tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma)
82{ 99{
83 if (!tlb->fullmm) 100 if (!tlb->fullmm && tlb->range_end > 0)
84 flush_tlb_range(vma, vma->vm_start, vma->vm_end); 101 flush_tlb_range(vma, tlb->range_start, tlb->range_end);
85} 102}
86 103
87#define tlb_remove_page(tlb,page) free_page_and_swap_cache(page) 104#define tlb_remove_page(tlb,page) free_page_and_swap_cache(page)
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 010618487cf1..94cc58ef61ae 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -387,6 +387,8 @@
387#define __NR_dup3 (__NR_SYSCALL_BASE+358) 387#define __NR_dup3 (__NR_SYSCALL_BASE+358)
388#define __NR_pipe2 (__NR_SYSCALL_BASE+359) 388#define __NR_pipe2 (__NR_SYSCALL_BASE+359)
389#define __NR_inotify_init1 (__NR_SYSCALL_BASE+360) 389#define __NR_inotify_init1 (__NR_SYSCALL_BASE+360)
390#define __NR_preadv (__NR_SYSCALL_BASE+361)
391#define __NR_pwritev (__NR_SYSCALL_BASE+362)
390 392
391/* 393/*
392 * The following SWIs are ARM private. 394 * The following SWIs are ARM private.
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
index 9ca8d13f05f7..1680e9e9c831 100644
--- a/arch/arm/kernel/calls.S
+++ b/arch/arm/kernel/calls.S
@@ -370,6 +370,8 @@
370 CALL(sys_dup3) 370 CALL(sys_dup3)
371 CALL(sys_pipe2) 371 CALL(sys_pipe2)
372/* 360 */ CALL(sys_inotify_init1) 372/* 360 */ CALL(sys_inotify_init1)
373 CALL(sys_preadv)
374 CALL(sys_pwritev)
373#ifndef syscalls_counted 375#ifndef syscalls_counted
374.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls 376.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
375#define syscalls_counted 377#define syscalls_counted
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
index 42623db7f870..d59a0cd537f0 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -83,6 +83,7 @@
83#include <linux/net.h> 83#include <linux/net.h>
84#include <linux/ipc.h> 84#include <linux/ipc.h>
85#include <linux/uaccess.h> 85#include <linux/uaccess.h>
86#include <linux/slab.h>
86 87
87struct oldabi_stat64 { 88struct oldabi_stat64 {
88 unsigned long long st_dev; 89 unsigned long long st_dev;
@@ -176,21 +177,12 @@ asmlinkage long sys_oabi_fstatat64(int dfd,
176 int flag) 177 int flag)
177{ 178{
178 struct kstat stat; 179 struct kstat stat;
179 int error = -EINVAL; 180 int error;
180 181
181 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) 182 error = vfs_fstatat(dfd, filename, &stat, flag);
182 goto out; 183 if (error)
183 184 return error;
184 if (flag & AT_SYMLINK_NOFOLLOW) 185 return cp_oldabi_stat64(&stat, statbuf);
185 error = vfs_lstat_fd(dfd, filename, &stat);
186 else
187 error = vfs_stat_fd(dfd, filename, &stat);
188
189 if (!error)
190 error = cp_oldabi_stat64(&stat, statbuf);
191
192out:
193 return error;
194} 186}
195 187
196struct oabi_flock64 { 188struct oabi_flock64 {
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
index 1ff1bda0a894..309f3511aa20 100644
--- a/arch/arm/mach-at91/at91rm9200_time.c
+++ b/arch/arm/mach-at91/at91rm9200_time.c
@@ -85,7 +85,7 @@ static struct irqaction at91rm9200_timer_irq = {
85 .handler = at91rm9200_timer_interrupt 85 .handler = at91rm9200_timer_interrupt
86}; 86};
87 87
88static cycle_t read_clk32k(void) 88static cycle_t read_clk32k(struct clocksource *cs)
89{ 89{
90 return read_CRTR(); 90 return read_CRTR();
91} 91}
diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
index b63e1d5f1bad..4bd56aee4370 100644
--- a/arch/arm/mach-at91/at91sam926x_time.c
+++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -31,7 +31,7 @@ static u32 pit_cnt; /* access only w/system irq blocked */
31 * Clocksource: just a monotonic counter of MCK/16 cycles. 31 * Clocksource: just a monotonic counter of MCK/16 cycles.
32 * We don't care whether or not PIT irqs are enabled. 32 * We don't care whether or not PIT irqs are enabled.
33 */ 33 */
34static cycle_t read_pit_clk(void) 34static cycle_t read_pit_clk(struct clocksource *cs)
35{ 35{
36 unsigned long flags; 36 unsigned long flags;
37 u32 elapsed; 37 u32 elapsed;
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index 793fe7b25f36..e6afff849b85 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -87,7 +87,7 @@ extern void __init at91_add_device_eth(struct at91_eth_data *data);
87 /* USB Host */ 87 /* USB Host */
88struct at91_usbh_data { 88struct at91_usbh_data {
89 u8 ports; /* number of ports on root hub */ 89 u8 ports; /* number of ports on root hub */
90 u8 vbus_pin[]; /* port power-control pin */ 90 u8 vbus_pin[2]; /* port power-control pin */
91}; 91};
92extern void __init at91_add_device_usbh(struct at91_usbh_data *data); 92extern void __init at91_add_device_usbh(struct at91_usbh_data *data);
93 93
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index f8bcd29d17a6..6c227d4ba998 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -238,7 +238,7 @@ static void __init timer_init(void)
238/* 238/*
239 * clocksource 239 * clocksource
240 */ 240 */
241static cycle_t read_cycles(void) 241static cycle_t read_cycles(struct clocksource *cs)
242{ 242{
243 struct timer_s *t = &timers[TID_CLOCKSOURCE]; 243 struct timer_s *t = &timers[TID_CLOCKSOURCE];
244 244
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 6d9152de6074..ae24486f858a 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -100,7 +100,7 @@ static unsigned int last_jiffy_time;
100 100
101#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ) 101#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ)
102 102
103static int ep93xx_timer_interrupt(int irq, void *dev_id) 103static irqreturn_t ep93xx_timer_interrupt(int irq, void *dev_id)
104{ 104{
105 __raw_writel(1, EP93XX_TIMER1_CLEAR); 105 __raw_writel(1, EP93XX_TIMER1_CLEAR);
106 while ((signed long) 106 while ((signed long)
diff --git a/arch/arm/mach-imx/include/mach/gpio.h b/arch/arm/mach-imx/include/mach/gpio.h
index 502d5aa2c093..6c2942f82922 100644
--- a/arch/arm/mach-imx/include/mach/gpio.h
+++ b/arch/arm/mach-imx/include/mach/gpio.h
@@ -1,6 +1,7 @@
1#ifndef _IMX_GPIO_H 1#ifndef _IMX_GPIO_H
2 2
3#include <linux/kernel.h> 3#include <linux/kernel.h>
4#include <mach/hardware.h>
4#include <mach/imx-regs.h> 5#include <mach/imx-regs.h>
5 6
6#define IMX_GPIO_ALLOC_MODE_NORMAL 0 7#define IMX_GPIO_ALLOC_MODE_NORMAL 0
diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
index aff0ebcfa847..5aef18b599e5 100644
--- a/arch/arm/mach-imx/time.c
+++ b/arch/arm/mach-imx/time.c
@@ -73,7 +73,7 @@ static void __init imx_timer_hardware_init(void)
73 IMX_TCTL(TIMER_BASE) = TCTL_FRR | TCTL_CLK_PCLK1 | TCTL_TEN; 73 IMX_TCTL(TIMER_BASE) = TCTL_FRR | TCTL_CLK_PCLK1 | TCTL_TEN;
74} 74}
75 75
76cycle_t imx_get_cycles(void) 76cycle_t imx_get_cycles(struct clocksource *cs)
77{ 77{
78 return IMX_TCN(TIMER_BASE); 78 return IMX_TCN(TIMER_BASE);
79} 79}
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index f4656d2ac8a8..1e93dfee7543 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -401,7 +401,7 @@ void __init ixp4xx_sys_init(void)
401/* 401/*
402 * clocksource 402 * clocksource
403 */ 403 */
404cycle_t ixp4xx_get_cycles(void) 404cycle_t ixp4xx_get_cycles(struct clocksource *cs)
405{ 405{
406 return *IXP4XX_OSTS; 406 return *IXP4XX_OSTS;
407} 407}
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index 16dc9ea08393..eeb00240d784 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -23,6 +23,7 @@
23#include <asm/mach/map.h> 23#include <asm/mach/map.h>
24#include <asm/mach/time.h> 24#include <asm/mach/time.h>
25#include <mach/kirkwood.h> 25#include <mach/kirkwood.h>
26#include <mach/bridge-regs.h>
26#include <plat/cache-feroceon-l2.h> 27#include <plat/cache-feroceon-l2.h>
27#include <plat/ehci-orion.h> 28#include <plat/ehci-orion.h>
28#include <plat/mvsdio.h> 29#include <plat/mvsdio.h>
diff --git a/arch/arm/mach-kirkwood/include/mach/bridge-regs.h b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
new file mode 100644
index 000000000000..4f7029f521cc
--- /dev/null
+++ b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
@@ -0,0 +1,42 @@
1/*
2 * arch/arm/mach-kirkwood/include/mach/bridge-regs.h
3 *
4 * Mbus-L to Mbus Bridge Registers
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#ifndef __ASM_ARCH_BRIDGE_REGS_H
12#define __ASM_ARCH_BRIDGE_REGS_H
13
14#include <mach/kirkwood.h>
15
16#define CPU_CONTROL (BRIDGE_VIRT_BASE | 0x0104)
17#define CPU_RESET 0x00000002
18
19#define RSTOUTn_MASK (BRIDGE_VIRT_BASE | 0x0108)
20#define SOFT_RESET_OUT_EN 0x00000004
21
22#define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c)
23#define SOFT_RESET 0x00000001
24
25#define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110)
26#define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114)
27#define BRIDGE_INT_TIMER0 0x0002
28#define BRIDGE_INT_TIMER1 0x0004
29#define BRIDGE_INT_TIMER1_CLR (~0x0004)
30
31#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200)
32#define IRQ_CAUSE_LOW_OFF 0x0000
33#define IRQ_MASK_LOW_OFF 0x0004
34#define IRQ_CAUSE_HIGH_OFF 0x0010
35#define IRQ_MASK_HIGH_OFF 0x0014
36
37#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
38
39#define L2_CONFIG_REG (BRIDGE_VIRT_BASE | 0x0128)
40#define L2_WRITETHROUGH 0x00000010
41
42#endif
diff --git a/arch/arm/mach-kirkwood/include/mach/debug-macro.S b/arch/arm/mach-kirkwood/include/mach/debug-macro.S
index c0cc5b5c82ac..a4a55c199d77 100644
--- a/arch/arm/mach-kirkwood/include/mach/debug-macro.S
+++ b/arch/arm/mach-kirkwood/include/mach/debug-macro.S
@@ -6,7 +6,7 @@
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7*/ 7*/
8 8
9#include <mach/kirkwood.h> 9#include <mach/bridge-regs.h>
10 10
11 .macro addruart,rx 11 .macro addruart,rx
12 mrc p15, 0, \rx, c1, c0 12 mrc p15, 0, \rx, c1, c0
diff --git a/arch/arm/mach-kirkwood/include/mach/entry-macro.S b/arch/arm/mach-kirkwood/include/mach/entry-macro.S
index 83e0cba77b36..8939d36f893c 100644
--- a/arch/arm/mach-kirkwood/include/mach/entry-macro.S
+++ b/arch/arm/mach-kirkwood/include/mach/entry-macro.S
@@ -8,7 +8,7 @@
8 * warranty of any kind, whether express or implied. 8 * warranty of any kind, whether express or implied.
9 */ 9 */
10 10
11#include <mach/kirkwood.h> 11#include <mach/bridge-regs.h>
12 12
13 .macro disable_fiq 13 .macro disable_fiq
14 .endm 14 .endm
diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
index 38c986853590..b3e13958821d 100644
--- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h
+++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
@@ -44,44 +44,6 @@
44#define KIRKWOOD_PCIE_MEM_SIZE SZ_128M 44#define KIRKWOOD_PCIE_MEM_SIZE SZ_128M
45 45
46/* 46/*
47 * MBUS bridge registers.
48 */
49#define BRIDGE_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x20000)
50#define CPU_CONTROL (BRIDGE_VIRT_BASE | 0x0104)
51#define CPU_RESET 0x00000002
52#define RSTOUTn_MASK (BRIDGE_VIRT_BASE | 0x0108)
53#define SOFT_RESET_OUT_EN 0x00000004
54#define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c)
55#define SOFT_RESET 0x00000001
56#define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110)
57#define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114)
58#define BRIDGE_INT_TIMER0 0x0002
59#define BRIDGE_INT_TIMER1 0x0004
60#define BRIDGE_INT_TIMER1_CLR (~0x0004)
61#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200)
62#define IRQ_CAUSE_LOW_OFF 0x0000
63#define IRQ_MASK_LOW_OFF 0x0004
64#define IRQ_CAUSE_HIGH_OFF 0x0010
65#define IRQ_MASK_HIGH_OFF 0x0014
66#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
67#define L2_CONFIG_REG (BRIDGE_VIRT_BASE | 0x0128)
68#define L2_WRITETHROUGH 0x00000010
69
70/*
71 * Supported devices and revisions.
72 */
73#define MV88F6281_DEV_ID 0x6281
74#define MV88F6281_REV_Z0 0
75#define MV88F6281_REV_A0 2
76
77#define MV88F6192_DEV_ID 0x6192
78#define MV88F6192_REV_Z0 0
79#define MV88F6192_REV_A0 2
80
81#define MV88F6180_DEV_ID 0x6180
82#define MV88F6180_REV_A0 2
83
84/*
85 * Register Map 47 * Register Map
86 */ 48 */
87#define DDR_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x00000) 49#define DDR_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x00000)
@@ -99,6 +61,8 @@
99#define UART1_PHYS_BASE (DEV_BUS_PHYS_BASE | 0x2100) 61#define UART1_PHYS_BASE (DEV_BUS_PHYS_BASE | 0x2100)
100#define UART1_VIRT_BASE (DEV_BUS_VIRT_BASE | 0x2100) 62#define UART1_VIRT_BASE (DEV_BUS_VIRT_BASE | 0x2100)
101 63
64#define BRIDGE_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x20000)
65
102#define PCIE_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x40000) 66#define PCIE_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x40000)
103 67
104#define USB_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x50000) 68#define USB_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x50000)
@@ -119,5 +83,18 @@
119 83
120#define SDIO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x90000) 84#define SDIO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x90000)
121 85
86/*
87 * Supported devices and revisions.
88 */
89#define MV88F6281_DEV_ID 0x6281
90#define MV88F6281_REV_Z0 0
91#define MV88F6281_REV_A0 2
92
93#define MV88F6192_DEV_ID 0x6192
94#define MV88F6192_REV_Z0 0
95#define MV88F6192_REV_A0 2
96
97#define MV88F6180_DEV_ID 0x6180
98#define MV88F6180_REV_A0 2
122 99
123#endif 100#endif
diff --git a/arch/arm/mach-kirkwood/include/mach/system.h b/arch/arm/mach-kirkwood/include/mach/system.h
index 23a1914c1da8..7568e95d279b 100644
--- a/arch/arm/mach-kirkwood/include/mach/system.h
+++ b/arch/arm/mach-kirkwood/include/mach/system.h
@@ -9,8 +9,7 @@
9#ifndef __ASM_ARCH_SYSTEM_H 9#ifndef __ASM_ARCH_SYSTEM_H
10#define __ASM_ARCH_SYSTEM_H 10#define __ASM_ARCH_SYSTEM_H
11 11
12#include <mach/hardware.h> 12#include <mach/bridge-regs.h>
13#include <mach/kirkwood.h>
14 13
15static inline void arch_idle(void) 14static inline void arch_idle(void)
16{ 15{
diff --git a/arch/arm/mach-kirkwood/irq.c b/arch/arm/mach-kirkwood/irq.c
index 06083b23bb44..28020abf49e1 100644
--- a/arch/arm/mach-kirkwood/irq.c
+++ b/arch/arm/mach-kirkwood/irq.c
@@ -12,6 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/irq.h> 13#include <linux/irq.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <mach/bridge-regs.h>
15#include <plat/irq.h> 16#include <plat/irq.h>
16#include <asm/gpio.h> 17#include <asm/gpio.h>
17#include "common.h" 18#include "common.h"
diff --git a/arch/arm/mach-loki/addr-map.c b/arch/arm/mach-loki/addr-map.c
index 0332d8f5c18c..b9537c97beba 100644
--- a/arch/arm/mach-loki/addr-map.c
+++ b/arch/arm/mach-loki/addr-map.c
@@ -38,6 +38,7 @@
38/* 38/*
39 * CPU Address Decode Windows registers 39 * CPU Address Decode Windows registers
40 */ 40 */
41#define BRIDGE_REG(x) (BRIDGE_VIRT_BASE | (x))
41#define CPU_WIN_CTRL(n) BRIDGE_REG(0x000 | ((n) << 4)) 42#define CPU_WIN_CTRL(n) BRIDGE_REG(0x000 | ((n) << 4))
42#define CPU_WIN_BASE(n) BRIDGE_REG(0x004 | ((n) << 4)) 43#define CPU_WIN_BASE(n) BRIDGE_REG(0x004 | ((n) << 4))
43#define CPU_WIN_REMAP_LO(n) BRIDGE_REG(0x008 | ((n) << 4)) 44#define CPU_WIN_REMAP_LO(n) BRIDGE_REG(0x008 | ((n) << 4))
diff --git a/arch/arm/mach-loki/include/mach/bridge-regs.h b/arch/arm/mach-loki/include/mach/bridge-regs.h
new file mode 100644
index 000000000000..a3fabf70044f
--- /dev/null
+++ b/arch/arm/mach-loki/include/mach/bridge-regs.h
@@ -0,0 +1,33 @@
1/*
2 * arch/arm/mach-loki/include/mach/bridge-regs.h
3 *
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
7 */
8
9#ifndef __ASM_ARCH_BRIDGE_REGS_H
10#define __ASM_ARCH_BRIDGE_REGS_H
11
12#include <mach/loki.h>
13
14#define RSTOUTn_MASK (BRIDGE_VIRT_BASE | 0x0108)
15#define SOFT_RESET_OUT_EN 0x00000004
16
17#define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c)
18#define SOFT_RESET 0x00000001
19
20#define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110)
21
22#define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114)
23#define BRIDGE_INT_TIMER0 0x0002
24#define BRIDGE_INT_TIMER1 0x0004
25#define BRIDGE_INT_TIMER1_CLR 0x0004
26
27#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200)
28#define IRQ_CAUSE_OFF 0x0000
29#define IRQ_MASK_OFF 0x0004
30
31#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
32
33#endif
diff --git a/arch/arm/mach-loki/include/mach/entry-macro.S b/arch/arm/mach-loki/include/mach/entry-macro.S
index 332af38ec13c..bc917ed3a62d 100644
--- a/arch/arm/mach-loki/include/mach/entry-macro.S
+++ b/arch/arm/mach-loki/include/mach/entry-macro.S
@@ -8,7 +8,7 @@
8 * warranty of any kind, whether express or implied. 8 * warranty of any kind, whether express or implied.
9 */ 9 */
10 10
11#include <mach/loki.h> 11#include <mach/bridge-regs.h>
12 12
13 .macro disable_fiq 13 .macro disable_fiq
14 .endm 14 .endm
diff --git a/arch/arm/mach-loki/include/mach/loki.h b/arch/arm/mach-loki/include/mach/loki.h
index c00af6ba5578..bfca7c265f43 100644
--- a/arch/arm/mach-loki/include/mach/loki.h
+++ b/arch/arm/mach-loki/include/mach/loki.h
@@ -58,20 +58,6 @@
58#define UART1_VIRT_BASE (DEV_BUS_VIRT_BASE | 0x2100) 58#define UART1_VIRT_BASE (DEV_BUS_VIRT_BASE | 0x2100)
59 59
60#define BRIDGE_VIRT_BASE (LOKI_REGS_VIRT_BASE | 0x20000) 60#define BRIDGE_VIRT_BASE (LOKI_REGS_VIRT_BASE | 0x20000)
61#define BRIDGE_REG(x) (BRIDGE_VIRT_BASE | (x))
62#define RSTOUTn_MASK (BRIDGE_VIRT_BASE | 0x0108)
63#define SOFT_RESET_OUT_EN 0x00000004
64#define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c)
65#define SOFT_RESET 0x00000001
66#define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110)
67#define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114)
68#define BRIDGE_INT_TIMER0 0x0002
69#define BRIDGE_INT_TIMER1 0x0004
70#define BRIDGE_INT_TIMER1_CLR 0x0004
71#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200)
72#define IRQ_CAUSE_OFF 0x0000
73#define IRQ_MASK_OFF 0x0004
74#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
75 61
76#define PCIE0_VIRT_BASE (LOKI_REGS_VIRT_BASE | 0x30000) 62#define PCIE0_VIRT_BASE (LOKI_REGS_VIRT_BASE | 0x30000)
77 63
diff --git a/arch/arm/mach-loki/include/mach/system.h b/arch/arm/mach-loki/include/mach/system.h
index c1de36fe9b37..71895199a534 100644
--- a/arch/arm/mach-loki/include/mach/system.h
+++ b/arch/arm/mach-loki/include/mach/system.h
@@ -9,8 +9,7 @@
9#ifndef __ASM_ARCH_SYSTEM_H 9#ifndef __ASM_ARCH_SYSTEM_H
10#define __ASM_ARCH_SYSTEM_H 10#define __ASM_ARCH_SYSTEM_H
11 11
12#include <mach/hardware.h> 12#include <mach/bridge-regs.h>
13#include <mach/loki.h>
14 13
15static inline void arch_idle(void) 14static inline void arch_idle(void)
16{ 15{
diff --git a/arch/arm/mach-loki/irq.c b/arch/arm/mach-loki/irq.c
index e1f97338d5b7..76b211bfcca2 100644
--- a/arch/arm/mach-loki/irq.c
+++ b/arch/arm/mach-loki/irq.c
@@ -12,6 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/irq.h> 13#include <linux/irq.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <mach/bridge-regs.h>
15#include <plat/irq.h> 16#include <plat/irq.h>
16#include "common.h" 17#include "common.h"
17 18
diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c
index 444d9c0f5ca6..4855b8ca5101 100644
--- a/arch/arm/mach-msm/timer.c
+++ b/arch/arm/mach-msm/timer.c
@@ -57,12 +57,12 @@ static irqreturn_t msm_timer_interrupt(int irq, void *dev_id)
57 return IRQ_HANDLED; 57 return IRQ_HANDLED;
58} 58}
59 59
60static cycle_t msm_gpt_read(void) 60static cycle_t msm_gpt_read(struct clocksource *cs)
61{ 61{
62 return readl(MSM_GPT_BASE + TIMER_COUNT_VAL); 62 return readl(MSM_GPT_BASE + TIMER_COUNT_VAL);
63} 63}
64 64
65static cycle_t msm_dgt_read(void) 65static cycle_t msm_dgt_read(struct clocksource *cs)
66{ 66{
67 return readl(MSM_DGT_BASE + TIMER_COUNT_VAL) >> MSM_DGT_SHIFT; 67 return readl(MSM_DGT_BASE + TIMER_COUNT_VAL) >> MSM_DGT_SHIFT;
68} 68}
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index a575daaa62d1..9ba595083dab 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -20,6 +20,7 @@
20#include <asm/mach/map.h> 20#include <asm/mach/map.h>
21#include <asm/mach/time.h> 21#include <asm/mach/time.h>
22#include <mach/mv78xx0.h> 22#include <mach/mv78xx0.h>
23#include <mach/bridge-regs.h>
23#include <plat/cache-feroceon-l2.h> 24#include <plat/cache-feroceon-l2.h>
24#include <plat/ehci-orion.h> 25#include <plat/ehci-orion.h>
25#include <plat/orion_nand.h> 26#include <plat/orion_nand.h>
diff --git a/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h b/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
new file mode 100644
index 000000000000..2d14c4fe294d
--- /dev/null
+++ b/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
@@ -0,0 +1,39 @@
1/*
2 * arch/arm/mach-mv78xx0/include/mach/bridge-regs.h
3 *
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
7 */
8
9#ifndef __ASM_ARCH_BRIDGE_REGS_H
10#define __ASM_ARCH_BRIDGE_REGS_H
11
12#include <mach/mv78xx0.h>
13
14#define CPU_CONTROL (BRIDGE_VIRT_BASE | 0x0104)
15#define L2_WRITETHROUGH 0x00020000
16
17#define RSTOUTn_MASK (BRIDGE_VIRT_BASE | 0x0108)
18#define SOFT_RESET_OUT_EN 0x00000004
19
20#define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c)
21#define SOFT_RESET 0x00000001
22
23#define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110)
24#define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114)
25#define BRIDGE_INT_TIMER0 0x0002
26#define BRIDGE_INT_TIMER1 0x0004
27#define BRIDGE_INT_TIMER1_CLR (~0x0004)
28
29#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200)
30#define IRQ_CAUSE_ERR_OFF 0x0000
31#define IRQ_CAUSE_LOW_OFF 0x0004
32#define IRQ_CAUSE_HIGH_OFF 0x0008
33#define IRQ_MASK_ERR_OFF 0x000c
34#define IRQ_MASK_LOW_OFF 0x0010
35#define IRQ_MASK_HIGH_OFF 0x0014
36
37#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
38
39#endif
diff --git a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S b/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
index fbfb2693ce6c..66ae2d29e773 100644
--- a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
+++ b/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
@@ -8,7 +8,7 @@
8 * warranty of any kind, whether express or implied. 8 * warranty of any kind, whether express or implied.
9 */ 9 */
10 10
11#include <mach/mv78xx0.h> 11#include <mach/bridge-regs.h>
12 12
13 .macro disable_fiq 13 .macro disable_fiq
14 .endm 14 .endm
diff --git a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
index 582cffc733ad..d715b92b0908 100644
--- a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
+++ b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
@@ -59,37 +59,6 @@
59 * Core-specific peripheral registers. 59 * Core-specific peripheral registers.
60 */ 60 */
61#define BRIDGE_VIRT_BASE (MV78XX0_CORE_REGS_VIRT_BASE) 61#define BRIDGE_VIRT_BASE (MV78XX0_CORE_REGS_VIRT_BASE)
62#define CPU_CONTROL (BRIDGE_VIRT_BASE | 0x0104)
63#define L2_WRITETHROUGH 0x00020000
64#define RSTOUTn_MASK (BRIDGE_VIRT_BASE | 0x0108)
65#define SOFT_RESET_OUT_EN 0x00000004
66#define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c)
67#define SOFT_RESET 0x00000001
68#define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110)
69#define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114)
70#define BRIDGE_INT_TIMER0 0x0002
71#define BRIDGE_INT_TIMER1 0x0004
72#define BRIDGE_INT_TIMER1_CLR (~0x0004)
73#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200)
74#define IRQ_CAUSE_ERR_OFF 0x0000
75#define IRQ_CAUSE_LOW_OFF 0x0004
76#define IRQ_CAUSE_HIGH_OFF 0x0008
77#define IRQ_MASK_ERR_OFF 0x000c
78#define IRQ_MASK_LOW_OFF 0x0010
79#define IRQ_MASK_HIGH_OFF 0x0014
80#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
81
82/*
83 * Supported devices and revisions.
84 */
85#define MV78X00_Z0_DEV_ID 0x6381
86#define MV78X00_REV_Z0 1
87
88#define MV78100_DEV_ID 0x7810
89#define MV78100_REV_A0 1
90
91#define MV78200_DEV_ID 0x7820
92#define MV78200_REV_A0 1
93 62
94/* 63/*
95 * Register Map 64 * Register Map
@@ -135,5 +104,16 @@
135 104
136#define SATA_PHYS_BASE (MV78XX0_REGS_PHYS_BASE | 0xa0000) 105#define SATA_PHYS_BASE (MV78XX0_REGS_PHYS_BASE | 0xa0000)
137 106
107/*
108 * Supported devices and revisions.
109 */
110#define MV78X00_Z0_DEV_ID 0x6381
111#define MV78X00_REV_Z0 1
112
113#define MV78100_DEV_ID 0x7810
114#define MV78100_REV_A0 1
115
116#define MV78200_DEV_ID 0x7820
117#define MV78200_REV_A0 1
138 118
139#endif 119#endif
diff --git a/arch/arm/mach-mv78xx0/include/mach/system.h b/arch/arm/mach-mv78xx0/include/mach/system.h
index 1d6350b22d0b..66e7ce4e90bd 100644
--- a/arch/arm/mach-mv78xx0/include/mach/system.h
+++ b/arch/arm/mach-mv78xx0/include/mach/system.h
@@ -9,8 +9,7 @@
9#ifndef __ASM_ARCH_SYSTEM_H 9#ifndef __ASM_ARCH_SYSTEM_H
10#define __ASM_ARCH_SYSTEM_H 10#define __ASM_ARCH_SYSTEM_H
11 11
12#include <mach/hardware.h> 12#include <mach/bridge-regs.h>
13#include <mach/mv78xx0.h>
14 13
15static inline void arch_idle(void) 14static inline void arch_idle(void)
16{ 15{
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c
index 30b7e4bcdbc7..f289b0ea7dcf 100644
--- a/arch/arm/mach-mv78xx0/irq.c
+++ b/arch/arm/mach-mv78xx0/irq.c
@@ -13,7 +13,7 @@
13#include <linux/pci.h> 13#include <linux/pci.h>
14#include <linux/irq.h> 14#include <linux/irq.h>
15#include <asm/gpio.h> 15#include <asm/gpio.h>
16#include <mach/mv78xx0.h> 16#include <mach/bridge-regs.h>
17#include <plat/irq.h> 17#include <plat/irq.h>
18#include "common.h" 18#include "common.h"
19 19
diff --git a/arch/arm/mach-mx1/mx1ads.c b/arch/arm/mach-mx1/mx1ads.c
index 7ae229bc1b79..e54057fb855b 100644
--- a/arch/arm/mach-mx1/mx1ads.c
+++ b/arch/arm/mach-mx1/mx1ads.c
@@ -28,9 +28,7 @@
28#include <mach/common.h> 28#include <mach/common.h>
29#include <mach/imx-uart.h> 29#include <mach/imx-uart.h>
30#include <mach/irqs.h> 30#include <mach/irqs.h>
31#ifdef CONFIG_I2C_IMX
32#include <mach/i2c.h> 31#include <mach/i2c.h>
33#endif
34#include <mach/iomux.h> 32#include <mach/iomux.h>
35#include "devices.h" 33#include "devices.h"
36 34
@@ -114,7 +112,6 @@ static struct platform_device flash_device = {
114 * I2C 112 * I2C
115 */ 113 */
116 114
117#ifdef CONFIG_I2C_IMX
118static int i2c_pins[] = { 115static int i2c_pins[] = {
119 PA15_PF_I2C_SDA, 116 PA15_PF_I2C_SDA,
120 PA16_PF_I2C_SCL, 117 PA16_PF_I2C_SCL,
@@ -157,7 +154,6 @@ static struct i2c_board_info mx1ads_i2c_devices[] = {
157 .platform_data = &pcf857x_data[1], 154 .platform_data = &pcf857x_data[1],
158 }, 155 },
159}; 156};
160#endif
161 157
162/* 158/*
163 * Board init 159 * Board init
@@ -172,12 +168,10 @@ static void __init mx1ads_init(void)
172 mxc_register_device(&flash_device, &mx1ads_flash_data); 168 mxc_register_device(&flash_device, &mx1ads_flash_data);
173 169
174 /* I2C */ 170 /* I2C */
175#ifdef CONFIG_I2C_IMX
176 i2c_register_board_info(0, mx1ads_i2c_devices, 171 i2c_register_board_info(0, mx1ads_i2c_devices,
177 ARRAY_SIZE(mx1ads_i2c_devices)); 172 ARRAY_SIZE(mx1ads_i2c_devices));
178 173
179 mxc_register_device(&imx_i2c_device, &mx1ads_i2c_data); 174 mxc_register_device(&imx_i2c_device, &mx1ads_i2c_data);
180#endif
181} 175}
182 176
183static void __init mx1ads_timer_init(void) 177static void __init mx1ads_timer_init(void)
diff --git a/arch/arm/mach-mx2/clock_imx21.c b/arch/arm/mach-mx2/clock_imx21.c
index 2dee5c87614c..999d013e06e3 100644
--- a/arch/arm/mach-mx2/clock_imx21.c
+++ b/arch/arm/mach-mx2/clock_imx21.c
@@ -919,19 +919,19 @@ static struct clk_lookup lookups[] __initdata = {
919 _REGISTER_CLOCK(NULL, "cspi1", cspi_clk[0]) 919 _REGISTER_CLOCK(NULL, "cspi1", cspi_clk[0])
920 _REGISTER_CLOCK(NULL, "cspi2", cspi_clk[1]) 920 _REGISTER_CLOCK(NULL, "cspi2", cspi_clk[1])
921 _REGISTER_CLOCK(NULL, "cspi3", cspi_clk[2]) 921 _REGISTER_CLOCK(NULL, "cspi3", cspi_clk[2])
922 _REGISTER_CLOCK(NULL, "lcdc", lcdc_clk[0]) 922 _REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk[0])
923 _REGISTER_CLOCK(NULL, "csi", csi_clk[0]) 923 _REGISTER_CLOCK(NULL, "csi", csi_clk[0])
924 _REGISTER_CLOCK(NULL, "usb", usb_clk[0]) 924 _REGISTER_CLOCK(NULL, "usb", usb_clk[0])
925 _REGISTER_CLOCK(NULL, "ssi1", ssi_clk[0]) 925 _REGISTER_CLOCK(NULL, "ssi1", ssi_clk[0])
926 _REGISTER_CLOCK(NULL, "ssi2", ssi_clk[1]) 926 _REGISTER_CLOCK(NULL, "ssi2", ssi_clk[1])
927 _REGISTER_CLOCK(NULL, "nfc", nfc_clk) 927 _REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk)
928 _REGISTER_CLOCK(NULL, "dma", dma_clk[0]) 928 _REGISTER_CLOCK(NULL, "dma", dma_clk[0])
929 _REGISTER_CLOCK(NULL, "brom", brom_clk) 929 _REGISTER_CLOCK(NULL, "brom", brom_clk)
930 _REGISTER_CLOCK(NULL, "emma", emma_clk[0]) 930 _REGISTER_CLOCK(NULL, "emma", emma_clk[0])
931 _REGISTER_CLOCK(NULL, "slcdc", slcdc_clk[0]) 931 _REGISTER_CLOCK(NULL, "slcdc", slcdc_clk[0])
932 _REGISTER_CLOCK(NULL, "wdog", wdog_clk) 932 _REGISTER_CLOCK("imx-wdt.0", NULL, wdog_clk)
933 _REGISTER_CLOCK(NULL, "gpio", gpio_clk) 933 _REGISTER_CLOCK(NULL, "gpio", gpio_clk)
934 _REGISTER_CLOCK(NULL, "i2c", i2c_clk) 934 _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk)
935 _REGISTER_CLOCK("mxc-keypad", NULL, kpp_clk) 935 _REGISTER_CLOCK("mxc-keypad", NULL, kpp_clk)
936 _REGISTER_CLOCK(NULL, "owire", owire_clk) 936 _REGISTER_CLOCK(NULL, "owire", owire_clk)
937 _REGISTER_CLOCK(NULL, "rtc", rtc_clk) 937 _REGISTER_CLOCK(NULL, "rtc", rtc_clk)
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig
index d6235583e979..194b8428bba4 100644
--- a/arch/arm/mach-mx3/Kconfig
+++ b/arch/arm/mach-mx3/Kconfig
@@ -19,6 +19,8 @@ config MACH_MX31ADS
19config MACH_MX31ADS_WM1133_EV1 19config MACH_MX31ADS_WM1133_EV1
20 bool "Support Wolfson Microelectronics 1133-EV1 module" 20 bool "Support Wolfson Microelectronics 1133-EV1 module"
21 depends on MACH_MX31ADS 21 depends on MACH_MX31ADS
22 depends on MFD_WM8350_I2C
23 depends on REGULATOR_WM8350
22 select MFD_WM8350_CONFIG_MODE_0 24 select MFD_WM8350_CONFIG_MODE_0
23 select MFD_WM8352_CONFIG_MODE_0 25 select MFD_WM8352_CONFIG_MODE_0
24 help 26 help
diff --git a/arch/arm/mach-mx3/mx31ads.c b/arch/arm/mach-mx3/mx31ads.c
index 83e5e8e1276f..a6d6efefa6aa 100644
--- a/arch/arm/mach-mx3/mx31ads.c
+++ b/arch/arm/mach-mx3/mx31ads.c
@@ -102,7 +102,7 @@ static struct imxuart_platform_data uart_pdata = {
102 .flags = IMXUART_HAVE_RTSCTS, 102 .flags = IMXUART_HAVE_RTSCTS,
103}; 103};
104 104
105static int uart_pins[] = { 105static unsigned int uart_pins[] = {
106 MX31_PIN_CTS1__CTS1, 106 MX31_PIN_CTS1__CTS1,
107 MX31_PIN_RTS1__RTS1, 107 MX31_PIN_RTS1__RTS1,
108 MX31_PIN_TXD1__TXD1, 108 MX31_PIN_TXD1__TXD1,
@@ -452,6 +452,8 @@ static int mx31_wm8350_init(struct wm8350 *wm8350)
452 452
453 wm8350->codec.platform_data = &imx32ads_wm8350_setup; 453 wm8350->codec.platform_data = &imx32ads_wm8350_setup;
454 454
455 regulator_has_full_constraints();
456
455 return 0; 457 return 0;
456} 458}
457 459
diff --git a/arch/arm/mach-mx3/pcm037.c b/arch/arm/mach-mx3/pcm037.c
index c3648eff5137..b5227d837b2f 100644
--- a/arch/arm/mach-mx3/pcm037.c
+++ b/arch/arm/mach-mx3/pcm037.c
@@ -226,10 +226,10 @@ static void __init mxc_board_init(void)
226 mxc_iomux_setup_pin(MX31_PIN_BATT_LINE__OWIRE, "batt-0wire"); 226 mxc_iomux_setup_pin(MX31_PIN_BATT_LINE__OWIRE, "batt-0wire");
227 mxc_register_device(&mxc_w1_master_device, NULL); 227 mxc_register_device(&mxc_w1_master_device, NULL);
228 228
229 /* SMSC9215 IRQ pin */ 229 /* LAN9217 IRQ pin */
230 if (!mxc_iomux_setup_pin(IOMUX_MODE(MX31_PIN_GPIO3_1, IOMUX_CONFIG_GPIO), 230 if (!mxc_iomux_setup_pin(IOMUX_MODE(MX31_PIN_GPIO3_1, IOMUX_CONFIG_GPIO),
231 "pcm037-eth")) 231 "pcm037-eth"))
232 gpio_direction_input(MX31_PIN_GPIO3_1); 232 gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
233 233
234#ifdef CONFIG_I2C_IMX 234#ifdef CONFIG_I2C_IMX
235 i2c_register_board_info(1, pcm037_i2c_devices, 235 i2c_register_board_info(1, pcm037_i2c_devices,
diff --git a/arch/arm/mach-mx3/qong.c b/arch/arm/mach-mx3/qong.c
index 6c4283cec6f4..5a01e48fd8f1 100644
--- a/arch/arm/mach-mx3/qong.c
+++ b/arch/arm/mach-mx3/qong.c
@@ -251,32 +251,6 @@ static void __init qong_init_fpga(void)
251} 251}
252 252
253/* 253/*
254 * This structure defines the MX31 memory map.
255 */
256static struct map_desc qong_io_desc[] __initdata = {
257 {
258 .virtual = AIPS1_BASE_ADDR_VIRT,
259 .pfn = __phys_to_pfn(AIPS1_BASE_ADDR),
260 .length = AIPS1_SIZE,
261 .type = MT_DEVICE_NONSHARED
262 }, {
263 .virtual = AIPS2_BASE_ADDR_VIRT,
264 .pfn = __phys_to_pfn(AIPS2_BASE_ADDR),
265 .length = AIPS2_SIZE,
266 .type = MT_DEVICE_NONSHARED
267 }
268};
269
270/*
271 * Set up static virtual mappings.
272 */
273static void __init qong_map_io(void)
274{
275 mxc_map_io();
276 iotable_init(qong_io_desc, ARRAY_SIZE(qong_io_desc));
277}
278
279/*
280 * Board specific initialization. 254 * Board specific initialization.
281 */ 255 */
282static void __init mxc_board_init(void) 256static void __init mxc_board_init(void)
@@ -305,7 +279,7 @@ MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")
305 .phys_io = AIPS1_BASE_ADDR, 279 .phys_io = AIPS1_BASE_ADDR,
306 .io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc, 280 .io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc,
307 .boot_params = PHYS_OFFSET + 0x100, 281 .boot_params = PHYS_OFFSET + 0x100,
308 .map_io = qong_map_io, 282 .map_io = mxc_map_io,
309 .init_irq = mxc_init_irq, 283 .init_irq = mxc_init_irq,
310 .init_machine = mxc_board_init, 284 .init_machine = mxc_board_init,
311 .timer = &qong_timer, 285 .timer = &qong_timer,
diff --git a/arch/arm/mach-netx/time.c b/arch/arm/mach-netx/time.c
index f201fddb594f..82801dbf0579 100644
--- a/arch/arm/mach-netx/time.c
+++ b/arch/arm/mach-netx/time.c
@@ -104,7 +104,7 @@ static struct irqaction netx_timer_irq = {
104 .handler = netx_timer_interrupt, 104 .handler = netx_timer_interrupt,
105}; 105};
106 106
107cycle_t netx_get_cycles(void) 107cycle_t netx_get_cycles(struct clocksource *cs)
108{ 108{
109 return readl(NETX_GPIO_COUNTER_CURRENT(TIMER_CLOCKSOURCE)); 109 return readl(NETX_GPIO_COUNTER_CURRENT(TIMER_CLOCKSOURCE));
110} 110}
diff --git a/arch/arm/mach-ns9xxx/time-ns9360.c b/arch/arm/mach-ns9xxx/time-ns9360.c
index 41df69721769..77281260358a 100644
--- a/arch/arm/mach-ns9xxx/time-ns9360.c
+++ b/arch/arm/mach-ns9xxx/time-ns9360.c
@@ -25,7 +25,7 @@
25#define TIMER_CLOCKEVENT 1 25#define TIMER_CLOCKEVENT 1
26static u32 latch; 26static u32 latch;
27 27
28static cycle_t ns9360_clocksource_read(void) 28static cycle_t ns9360_clocksource_read(struct clocksource *cs)
29{ 29{
30 return __raw_readl(SYS_TR(TIMER_CLOCKSOURCE)); 30 return __raw_readl(SYS_TR(TIMER_CLOCKSOURCE));
31} 31}
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
index dafe4f71d15f..336e51dc6127 100644
--- a/arch/arm/mach-omap1/clock.c
+++ b/arch/arm/mach-omap1/clock.c
@@ -590,27 +590,28 @@ static void omap1_init_ext_clk(struct clk * clk)
590static int omap1_clk_enable(struct clk *clk) 590static int omap1_clk_enable(struct clk *clk)
591{ 591{
592 int ret = 0; 592 int ret = 0;
593
593 if (clk->usecount++ == 0) { 594 if (clk->usecount++ == 0) {
594 if (likely(clk->parent)) { 595 if (clk->parent) {
595 ret = omap1_clk_enable(clk->parent); 596 ret = omap1_clk_enable(clk->parent);
596 597 if (ret)
597 if (unlikely(ret != 0)) { 598 goto err;
598 clk->usecount--;
599 return ret;
600 }
601 599
602 if (clk->flags & CLOCK_NO_IDLE_PARENT) 600 if (clk->flags & CLOCK_NO_IDLE_PARENT)
603 omap1_clk_deny_idle(clk->parent); 601 omap1_clk_deny_idle(clk->parent);
604 } 602 }
605 603
606 ret = clk->ops->enable(clk); 604 ret = clk->ops->enable(clk);
607 605 if (ret) {
608 if (unlikely(ret != 0) && clk->parent) { 606 if (clk->parent)
609 omap1_clk_disable(clk->parent); 607 omap1_clk_disable(clk->parent);
610 clk->usecount--; 608 goto err;
611 } 609 }
612 } 610 }
611 return ret;
613 612
613err:
614 clk->usecount--;
614 return ret; 615 return ret;
615} 616}
616 617
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 495a32c287b4..4d56408d3cff 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -198,7 +198,7 @@ static struct irqaction omap_mpu_timer2_irq = {
198 .handler = omap_mpu_timer2_interrupt, 198 .handler = omap_mpu_timer2_interrupt,
199}; 199};
200 200
201static cycle_t mpu_read(void) 201static cycle_t mpu_read(struct clocksource *cs)
202{ 202{
203 return ~omap_mpu_timer_read(1); 203 return ~omap_mpu_timer_read(1);
204} 204}
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index 9fc13a2cc3f4..1cb2c0909c2b 100644
--- a/arch/arm/mach-omap2/timer-gp.c
+++ b/arch/arm/mach-omap2/timer-gp.c
@@ -138,7 +138,7 @@ static inline void __init omap2_gp_clocksource_init(void) {}
138 * clocksource 138 * clocksource
139 */ 139 */
140static struct omap_dm_timer *gpt_clocksource; 140static struct omap_dm_timer *gpt_clocksource;
141static cycle_t clocksource_read_cycles(void) 141static cycle_t clocksource_read_cycles(struct clocksource *cs)
142{ 142{
143 return (cycle_t)omap_dm_timer_read_counter(gpt_clocksource); 143 return (cycle_t)omap_dm_timer_read_counter(gpt_clocksource);
144} 144}
diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c
index fc74e913c415..34a56a136efd 100644
--- a/arch/arm/mach-omap2/usb-musb.c
+++ b/arch/arm/mach-omap2/usb-musb.c
@@ -131,14 +131,14 @@ static struct musb_hdrc_platform_data musb_plat = {
131 .power = 50, /* up to 100 mA */ 131 .power = 50, /* up to 100 mA */
132}; 132};
133 133
134static u64 musb_dmamask = DMA_32BIT_MASK; 134static u64 musb_dmamask = DMA_BIT_MASK(32);
135 135
136static struct platform_device musb_device = { 136static struct platform_device musb_device = {
137 .name = "musb_hdrc", 137 .name = "musb_hdrc",
138 .id = -1, 138 .id = -1,
139 .dev = { 139 .dev = {
140 .dma_mask = &musb_dmamask, 140 .dma_mask = &musb_dmamask,
141 .coherent_dma_mask = DMA_32BIT_MASK, 141 .coherent_dma_mask = DMA_BIT_MASK(32),
142 .platform_data = &musb_plat, 142 .platform_data = &musb_plat,
143 }, 143 },
144 .num_resources = ARRAY_SIZE(musb_resources), 144 .num_resources = ARRAY_SIZE(musb_resources),
@@ -146,14 +146,14 @@ static struct platform_device musb_device = {
146}; 146};
147 147
148#ifdef CONFIG_NOP_USB_XCEIV 148#ifdef CONFIG_NOP_USB_XCEIV
149static u64 nop_xceiv_dmamask = DMA_32BIT_MASK; 149static u64 nop_xceiv_dmamask = DMA_BIT_MASK(32);
150 150
151static struct platform_device nop_xceiv_device = { 151static struct platform_device nop_xceiv_device = {
152 .name = "nop_usb_xceiv", 152 .name = "nop_usb_xceiv",
153 .id = -1, 153 .id = -1,
154 .dev = { 154 .dev = {
155 .dma_mask = &nop_xceiv_dmamask, 155 .dma_mask = &nop_xceiv_dmamask,
156 .coherent_dma_mask = DMA_32BIT_MASK, 156 .coherent_dma_mask = DMA_BIT_MASK(32),
157 .platform_data = NULL, 157 .platform_data = NULL,
158 }, 158 },
159}; 159};
diff --git a/arch/arm/mach-orion5x/addr-map.c b/arch/arm/mach-orion5x/addr-map.c
index 719957e05d9e..c14d12137276 100644
--- a/arch/arm/mach-orion5x/addr-map.c
+++ b/arch/arm/mach-orion5x/addr-map.c
@@ -57,12 +57,14 @@
57/* 57/*
58 * Helpers to get DDR bank info 58 * Helpers to get DDR bank info
59 */ 59 */
60#define ORION5X_DDR_REG(x) (ORION5X_DDR_VIRT_BASE | (x))
60#define DDR_BASE_CS(n) ORION5X_DDR_REG(0x1500 + ((n) << 3)) 61#define DDR_BASE_CS(n) ORION5X_DDR_REG(0x1500 + ((n) << 3))
61#define DDR_SIZE_CS(n) ORION5X_DDR_REG(0x1504 + ((n) << 3)) 62#define DDR_SIZE_CS(n) ORION5X_DDR_REG(0x1504 + ((n) << 3))
62 63
63/* 64/*
64 * CPU Address Decode Windows registers 65 * CPU Address Decode Windows registers
65 */ 66 */
67#define ORION5X_BRIDGE_REG(x) (ORION5X_BRIDGE_VIRT_BASE | (x))
66#define CPU_WIN_CTRL(n) ORION5X_BRIDGE_REG(0x000 | ((n) << 4)) 68#define CPU_WIN_CTRL(n) ORION5X_BRIDGE_REG(0x000 | ((n) << 4))
67#define CPU_WIN_BASE(n) ORION5X_BRIDGE_REG(0x004 | ((n) << 4)) 69#define CPU_WIN_BASE(n) ORION5X_BRIDGE_REG(0x004 | ((n) << 4))
68#define CPU_WIN_REMAP_LO(n) ORION5X_BRIDGE_REG(0x008 | ((n) << 4)) 70#define CPU_WIN_REMAP_LO(n) ORION5X_BRIDGE_REG(0x008 | ((n) << 4))
diff --git a/arch/arm/mach-orion5x/include/mach/bridge-regs.h b/arch/arm/mach-orion5x/include/mach/bridge-regs.h
new file mode 100644
index 000000000000..be896e59d3e7
--- /dev/null
+++ b/arch/arm/mach-orion5x/include/mach/bridge-regs.h
@@ -0,0 +1,41 @@
1/*
2 * arch/arm/mach-orion5x/include/mach/bridge-regs.h
3 *
4 * Orion CPU Bridge Registers
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#ifndef __ASM_ARCH_BRIDGE_REGS_H
12#define __ASM_ARCH_BRIDGE_REGS_H
13
14#include <mach/orion5x.h>
15
16#define CPU_CONF (ORION5X_BRIDGE_VIRT_BASE | 0x100)
17
18#define CPU_CTRL (ORION5X_BRIDGE_VIRT_BASE | 0x104)
19
20#define CPU_RESET_MASK (ORION5X_BRIDGE_VIRT_BASE | 0x108)
21#define WDT_RESET 0x0002
22
23#define CPU_SOFT_RESET (ORION5X_BRIDGE_VIRT_BASE | 0x10c)
24
25#define POWER_MNG_CTRL_REG (ORION5X_BRIDGE_VIRT_BASE | 0x11C)
26
27#define BRIDGE_CAUSE (ORION5X_BRIDGE_VIRT_BASE | 0x110)
28#define WDT_INT_REQ 0x0008
29
30#define BRIDGE_MASK (ORION5X_BRIDGE_VIRT_BASE | 0x114)
31#define BRIDGE_INT_TIMER0 0x0002
32#define BRIDGE_INT_TIMER1 0x0004
33#define BRIDGE_INT_TIMER1_CLR (~0x0004)
34
35#define MAIN_IRQ_CAUSE (ORION5X_BRIDGE_VIRT_BASE | 0x200)
36
37#define MAIN_IRQ_MASK (ORION5X_BRIDGE_VIRT_BASE | 0x204)
38
39#define TIMER_VIRT_BASE (ORION5X_BRIDGE_VIRT_BASE | 0x300)
40
41#endif
diff --git a/arch/arm/mach-orion5x/include/mach/entry-macro.S b/arch/arm/mach-orion5x/include/mach/entry-macro.S
index 4351937035cd..d658992e5401 100644
--- a/arch/arm/mach-orion5x/include/mach/entry-macro.S
+++ b/arch/arm/mach-orion5x/include/mach/entry-macro.S
@@ -8,7 +8,7 @@
8 * warranty of any kind, whether express or implied. 8 * warranty of any kind, whether express or implied.
9 */ 9 */
10 10
11#include <mach/orion5x.h> 11#include <mach/bridge-regs.h>
12 12
13 .macro disable_fiq 13 .macro disable_fiq
14 .endm 14 .endm
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h
index 67bda31406dd..377a773ae53f 100644
--- a/arch/arm/mach-orion5x/include/mach/orion5x.h
+++ b/arch/arm/mach-orion5x/include/mach/orion5x.h
@@ -61,30 +61,10 @@
61#define ORION5X_PCI_MEM_SIZE SZ_128M 61#define ORION5X_PCI_MEM_SIZE SZ_128M
62 62
63/******************************************************************************* 63/*******************************************************************************
64 * Supported Devices & Revisions
65 ******************************************************************************/
66/* Orion-1 (88F5181) and Orion-VoIP (88F5181L) */
67#define MV88F5181_DEV_ID 0x5181
68#define MV88F5181_REV_B1 3
69#define MV88F5181L_REV_A0 8
70#define MV88F5181L_REV_A1 9
71/* Orion-NAS (88F5182) */
72#define MV88F5182_DEV_ID 0x5182
73#define MV88F5182_REV_A2 2
74/* Orion-2 (88F5281) */
75#define MV88F5281_DEV_ID 0x5281
76#define MV88F5281_REV_D0 4
77#define MV88F5281_REV_D1 5
78#define MV88F5281_REV_D2 6
79/* Orion-1-90 (88F6183) */
80#define MV88F6183_DEV_ID 0x6183
81#define MV88F6183_REV_B0 3
82
83/*******************************************************************************
84 * Orion Registers Map 64 * Orion Registers Map
85 ******************************************************************************/ 65 ******************************************************************************/
66
86#define ORION5X_DDR_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x00000) 67#define ORION5X_DDR_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x00000)
87#define ORION5X_DDR_REG(x) (ORION5X_DDR_VIRT_BASE | (x))
88 68
89#define ORION5X_DEV_BUS_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x10000) 69#define ORION5X_DEV_BUS_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x10000)
90#define ORION5X_DEV_BUS_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x10000) 70#define ORION5X_DEV_BUS_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x10000)
@@ -97,34 +77,25 @@
97#define UART1_VIRT_BASE (ORION5X_DEV_BUS_VIRT_BASE | 0x2100) 77#define UART1_VIRT_BASE (ORION5X_DEV_BUS_VIRT_BASE | 0x2100)
98 78
99#define ORION5X_BRIDGE_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x20000) 79#define ORION5X_BRIDGE_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x20000)
100#define ORION5X_BRIDGE_REG(x) (ORION5X_BRIDGE_VIRT_BASE | (x))
101#define TIMER_VIRT_BASE (ORION5X_BRIDGE_VIRT_BASE | 0x300)
102 80
103#define ORION5X_PCI_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x30000) 81#define ORION5X_PCI_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x30000)
104#define ORION5X_PCI_REG(x) (ORION5X_PCI_VIRT_BASE | (x))
105 82
106#define ORION5X_PCIE_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x40000) 83#define ORION5X_PCIE_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x40000)
107#define ORION5X_PCIE_REG(x) (ORION5X_PCIE_VIRT_BASE | (x))
108 84
109#define ORION5X_USB0_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x50000) 85#define ORION5X_USB0_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x50000)
110#define ORION5X_USB0_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x50000) 86#define ORION5X_USB0_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x50000)
111#define ORION5X_USB0_REG(x) (ORION5X_USB0_VIRT_BASE | (x))
112 87
113#define ORION5X_XOR_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x60900) 88#define ORION5X_XOR_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x60900)
114#define ORION5X_XOR_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x60900) 89#define ORION5X_XOR_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x60900)
115#define ORION5X_XOR_REG(x) (ORION5X_XOR_VIRT_BASE | (x))
116 90
117#define ORION5X_ETH_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x70000) 91#define ORION5X_ETH_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x70000)
118#define ORION5X_ETH_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x70000) 92#define ORION5X_ETH_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x70000)
119#define ORION5X_ETH_REG(x) (ORION5X_ETH_VIRT_BASE | (x))
120 93
121#define ORION5X_SATA_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x80000) 94#define ORION5X_SATA_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x80000)
122#define ORION5X_SATA_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x80000) 95#define ORION5X_SATA_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x80000)
123#define ORION5X_SATA_REG(x) (ORION5X_SATA_VIRT_BASE | (x))
124 96
125#define ORION5X_USB1_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0xa0000) 97#define ORION5X_USB1_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0xa0000)
126#define ORION5X_USB1_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0xa0000) 98#define ORION5X_USB1_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0xa0000)
127#define ORION5X_USB1_REG(x) (ORION5X_USB1_VIRT_BASE | (x))
128 99
129/******************************************************************************* 100/*******************************************************************************
130 * Device Bus Registers 101 * Device Bus Registers
@@ -142,23 +113,24 @@
142#define DEV_BUS_INT_CAUSE ORION5X_DEV_BUS_REG(0x4d0) 113#define DEV_BUS_INT_CAUSE ORION5X_DEV_BUS_REG(0x4d0)
143#define DEV_BUS_INT_MASK ORION5X_DEV_BUS_REG(0x4d4) 114#define DEV_BUS_INT_MASK ORION5X_DEV_BUS_REG(0x4d4)
144 115
145/*************************************************************************** 116/*******************************************************************************
146 * Orion CPU Bridge Registers 117 * Supported Devices & Revisions
147 **************************************************************************/ 118 ******************************************************************************/
148#define CPU_CONF ORION5X_BRIDGE_REG(0x100) 119/* Orion-1 (88F5181) and Orion-VoIP (88F5181L) */
149#define CPU_CTRL ORION5X_BRIDGE_REG(0x104) 120#define MV88F5181_DEV_ID 0x5181
150#define CPU_RESET_MASK ORION5X_BRIDGE_REG(0x108) 121#define MV88F5181_REV_B1 3
151#define WDT_RESET 0x0002 122#define MV88F5181L_REV_A0 8
152#define CPU_SOFT_RESET ORION5X_BRIDGE_REG(0x10c) 123#define MV88F5181L_REV_A1 9
153#define POWER_MNG_CTRL_REG ORION5X_BRIDGE_REG(0x11C) 124/* Orion-NAS (88F5182) */
154#define BRIDGE_CAUSE ORION5X_BRIDGE_REG(0x110) 125#define MV88F5182_DEV_ID 0x5182
155#define WDT_INT_REQ 0x0008 126#define MV88F5182_REV_A2 2
156#define BRIDGE_MASK ORION5X_BRIDGE_REG(0x114) 127/* Orion-2 (88F5281) */
157#define BRIDGE_INT_TIMER0 0x0002 128#define MV88F5281_DEV_ID 0x5281
158#define BRIDGE_INT_TIMER1 0x0004 129#define MV88F5281_REV_D0 4
159#define BRIDGE_INT_TIMER1_CLR (~0x0004) 130#define MV88F5281_REV_D1 5
160#define MAIN_IRQ_CAUSE ORION5X_BRIDGE_REG(0x200) 131#define MV88F5281_REV_D2 6
161#define MAIN_IRQ_MASK ORION5X_BRIDGE_REG(0x204) 132/* Orion-1-90 (88F6183) */
162 133#define MV88F6183_DEV_ID 0x6183
134#define MV88F6183_REV_B0 3
163 135
164#endif 136#endif
diff --git a/arch/arm/mach-orion5x/include/mach/system.h b/arch/arm/mach-orion5x/include/mach/system.h
index 9b8db1dcfa83..e912490fff23 100644
--- a/arch/arm/mach-orion5x/include/mach/system.h
+++ b/arch/arm/mach-orion5x/include/mach/system.h
@@ -11,8 +11,7 @@
11#ifndef __ASM_ARCH_SYSTEM_H 11#ifndef __ASM_ARCH_SYSTEM_H
12#define __ASM_ARCH_SYSTEM_H 12#define __ASM_ARCH_SYSTEM_H
13 13
14#include <mach/hardware.h> 14#include <mach/bridge-regs.h>
15#include <mach/orion5x.h>
16 15
17static inline void arch_idle(void) 16static inline void arch_idle(void)
18{ 17{
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
index e03f7b45cb0d..d7512b925a85 100644
--- a/arch/arm/mach-orion5x/irq.c
+++ b/arch/arm/mach-orion5x/irq.c
@@ -15,7 +15,7 @@
15#include <linux/irq.h> 15#include <linux/irq.h>
16#include <linux/io.h> 16#include <linux/io.h>
17#include <asm/gpio.h> 17#include <asm/gpio.h>
18#include <mach/orion5x.h> 18#include <mach/bridge-regs.h>
19#include <plat/irq.h> 19#include <plat/irq.h>
20#include "common.h" 20#include "common.h"
21 21
diff --git a/arch/arm/mach-orion5x/mss2-setup.c b/arch/arm/mach-orion5x/mss2-setup.c
index 68acca98e638..41e6d5033d54 100644
--- a/arch/arm/mach-orion5x/mss2-setup.c
+++ b/arch/arm/mach-orion5x/mss2-setup.c
@@ -26,6 +26,7 @@
26#include <asm/mach/arch.h> 26#include <asm/mach/arch.h>
27#include <asm/mach/pci.h> 27#include <asm/mach/pci.h>
28#include <mach/orion5x.h> 28#include <mach/orion5x.h>
29#include <mach/bridge-regs.h>
29#include "common.h" 30#include "common.h"
30#include "mpp.h" 31#include "mpp.h"
31 32
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
index d0a785a3b880..36dc5413cc97 100644
--- a/arch/arm/mach-orion5x/pci.c
+++ b/arch/arm/mach-orion5x/pci.c
@@ -196,6 +196,7 @@ static int __init pcie_setup(struct pci_sys_data *sys)
196/***************************************************************************** 196/*****************************************************************************
197 * PCI controller 197 * PCI controller
198 ****************************************************************************/ 198 ****************************************************************************/
199#define ORION5X_PCI_REG(x) (ORION5X_PCI_VIRT_BASE | (x))
199#define PCI_MODE ORION5X_PCI_REG(0xd00) 200#define PCI_MODE ORION5X_PCI_REG(0xd00)
200#define PCI_CMD ORION5X_PCI_REG(0xc00) 201#define PCI_CMD ORION5X_PCI_REG(0xc00)
201#define PCI_P2P_CONF ORION5X_PCI_REG(0x1d14) 202#define PCI_P2P_CONF ORION5X_PCI_REG(0x1d14)
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 96a2006cb597..3e66d9099eab 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -343,6 +343,15 @@ config ARCH_PXA_PALM
343 bool "PXA based Palm PDAs" 343 bool "PXA based Palm PDAs"
344 select HAVE_PWM 344 select HAVE_PWM
345 345
346config MACH_PALMTE2
347 bool "Palm Tungsten|E2"
348 default y
349 depends on ARCH_PXA_PALM
350 select PXA25x
351 help
352 Say Y here if you intend to run this kernel on a Palm Tungsten|E2
353 handheld computer.
354
346config MACH_PALMT5 355config MACH_PALMT5
347 bool "Palm Tungsten|T5" 356 bool "Palm Tungsten|T5"
348 default y 357 default y
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index c80e1bac4945..682dbf4e14b0 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -57,6 +57,7 @@ obj-$(CONFIG_MACH_E740) += e740.o
57obj-$(CONFIG_MACH_E750) += e750.o 57obj-$(CONFIG_MACH_E750) += e750.o
58obj-$(CONFIG_MACH_E400) += e400.o 58obj-$(CONFIG_MACH_E400) += e400.o
59obj-$(CONFIG_MACH_E800) += e800.o 59obj-$(CONFIG_MACH_E800) += e800.o
60obj-$(CONFIG_MACH_PALMTE2) += palmte2.o
60obj-$(CONFIG_MACH_PALMT5) += palmt5.o 61obj-$(CONFIG_MACH_PALMT5) += palmt5.o
61obj-$(CONFIG_MACH_PALMTX) += palmtx.o 62obj-$(CONFIG_MACH_PALMTX) += palmtx.o
62obj-$(CONFIG_MACH_PALMLD) += palmld.o 63obj-$(CONFIG_MACH_PALMLD) += palmld.o
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c
index 117b5435f8d5..b50ef39eabfc 100644
--- a/arch/arm/mach-pxa/cm-x2xx.c
+++ b/arch/arm/mach-pxa/cm-x2xx.c
@@ -121,7 +121,7 @@ static inline void cmx2xx_init_dm9000(void) {}
121/* UCB1400 touchscreen controller */ 121/* UCB1400 touchscreen controller */
122#if defined(CONFIG_TOUCHSCREEN_UCB1400) || defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) 122#if defined(CONFIG_TOUCHSCREEN_UCB1400) || defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE)
123static struct platform_device cmx2xx_ts_device = { 123static struct platform_device cmx2xx_ts_device = {
124 .name = "ucb1400_ts", 124 .name = "ucb1400_core",
125 .id = -1, 125 .id = -1,
126}; 126};
127 127
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c
index 10c2eaf93230..7c9c34c19ae2 100644
--- a/arch/arm/mach-pxa/colibri-pxa300.c
+++ b/arch/arm/mach-pxa/colibri-pxa300.c
@@ -15,7 +15,7 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/gpio.h> 17#include <linux/gpio.h>
18#include <net/ax88796.h> 18#include <linux/interrupt.h>
19 19
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/sizes.h> 21#include <asm/sizes.h>
@@ -32,12 +32,13 @@
32 32
33#if defined(CONFIG_AX88796) 33#if defined(CONFIG_AX88796)
34#define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO26_GPIO) 34#define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO26_GPIO)
35
35/* 36/*
36 * Asix AX88796 Ethernet 37 * Asix AX88796 Ethernet
37 */ 38 */
38static struct ax_plat_data colibri_asix_platdata = { 39static struct ax_plat_data colibri_asix_platdata = {
39 .flags = AXFLG_MAC_FROMDEV, 40 .flags = 0, /* defined later */
40 .wordlength = 2 41 .wordlength = 2,
41}; 42};
42 43
43static struct resource colibri_asix_resource[] = { 44static struct resource colibri_asix_resource[] = {
@@ -49,7 +50,7 @@ static struct resource colibri_asix_resource[] = {
49 [1] = { 50 [1] = {
50 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 51 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
51 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 52 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
52 .flags = IORESOURCE_IRQ 53 .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
53 } 54 }
54}; 55};
55 56
@@ -70,8 +71,8 @@ static mfp_cfg_t colibri_pxa300_eth_pin_config[] __initdata = {
70 71
71static void __init colibri_pxa300_init_eth(void) 72static void __init colibri_pxa300_init_eth(void)
72{ 73{
74 colibri_pxa3xx_init_eth(&colibri_asix_platdata);
73 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_eth_pin_config)); 75 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_eth_pin_config));
74 set_irq_type(gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), IRQ_TYPE_EDGE_FALLING);
75 platform_device_register(&asix_device); 76 platform_device_register(&asix_device);
76} 77}
77#else 78#else
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
index 55b74a7a6151..a18d37b3c5e6 100644
--- a/arch/arm/mach-pxa/colibri-pxa320.c
+++ b/arch/arm/mach-pxa/colibri-pxa320.c
@@ -15,7 +15,7 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/gpio.h> 17#include <linux/gpio.h>
18#include <net/ax88796.h> 18#include <linux/interrupt.h>
19 19
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/sizes.h> 21#include <asm/sizes.h>
@@ -38,8 +38,8 @@
38 * Asix AX88796 Ethernet 38 * Asix AX88796 Ethernet
39 */ 39 */
40static struct ax_plat_data colibri_asix_platdata = { 40static struct ax_plat_data colibri_asix_platdata = {
41 .flags = AXFLG_MAC_FROMDEV, 41 .flags = 0, /* defined later */
42 .wordlength = 2 42 .wordlength = 2,
43}; 43};
44 44
45static struct resource colibri_asix_resource[] = { 45static struct resource colibri_asix_resource[] = {
@@ -51,7 +51,7 @@ static struct resource colibri_asix_resource[] = {
51 [1] = { 51 [1] = {
52 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 52 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
53 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 53 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
54 .flags = IORESOURCE_IRQ 54 .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
55 } 55 }
56}; 56};
57 57
@@ -72,8 +72,8 @@ static mfp_cfg_t colibri_pxa320_eth_pin_config[] __initdata = {
72 72
73static void __init colibri_pxa320_init_eth(void) 73static void __init colibri_pxa320_init_eth(void)
74{ 74{
75 colibri_pxa3xx_init_eth(&colibri_asix_platdata);
75 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_eth_pin_config)); 76 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_eth_pin_config));
76 set_irq_type(gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), IRQ_TYPE_EDGE_FALLING);
77 platform_device_register(&asix_device); 77 platform_device_register(&asix_device);
78} 78}
79#else 79#else
diff --git a/arch/arm/mach-pxa/colibri-pxa3xx.c b/arch/arm/mach-pxa/colibri-pxa3xx.c
index 12d0afc54aa5..ea34e34f8cd8 100644
--- a/arch/arm/mach-pxa/colibri-pxa3xx.c
+++ b/arch/arm/mach-pxa/colibri-pxa3xx.c
@@ -14,6 +14,7 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/platform_device.h> 15#include <linux/platform_device.h>
16#include <linux/gpio.h> 16#include <linux/gpio.h>
17#include <linux/etherdevice.h>
17#include <asm/mach-types.h> 18#include <asm/mach-types.h>
18#include <mach/hardware.h> 19#include <mach/hardware.h>
19#include <asm/sizes.h> 20#include <asm/sizes.h>
@@ -28,6 +29,40 @@
28#include "generic.h" 29#include "generic.h"
29#include "devices.h" 30#include "devices.h"
30 31
32#if defined(CONFIG_AX88796)
33#define ETHER_ADDR_LEN 6
34static u8 ether_mac_addr[ETHER_ADDR_LEN];
35
36void __init colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data)
37{
38 int i;
39 u64 serial = ((u64) system_serial_high << 32) | system_serial_low;
40
41 /*
42 * If the bootloader passed in a serial boot tag, which contains a
43 * valid ethernet MAC, pass it to the interface. Toradex ships the
44 * modules with their own bootloader which provides a valid MAC
45 * this way.
46 */
47
48 for (i = 0; i < ETHER_ADDR_LEN; i++) {
49 ether_mac_addr[i] = serial & 0xff;
50 serial >>= 8;
51 }
52
53 if (is_valid_ether_addr(ether_mac_addr)) {
54 plat_data->flags |= AXFLG_MAC_FROMPLATFORM;
55 plat_data->mac_addr = ether_mac_addr;
56 printk(KERN_INFO "%s(): taking MAC from serial boot tag\n",
57 __func__);
58 } else {
59 plat_data->flags |= AXFLG_MAC_FROMDEV;
60 printk(KERN_INFO "%s(): no valid serial boot tag found, "
61 "taking MAC from device\n", __func__);
62 }
63}
64#endif
65
31#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) 66#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
32static int mmc_detect_pin; 67static int mmc_detect_pin;
33 68
diff --git a/arch/arm/mach-pxa/csb701.c b/arch/arm/mach-pxa/csb701.c
index 4a2a2952c374..5a221a49ea4d 100644
--- a/arch/arm/mach-pxa/csb701.c
+++ b/arch/arm/mach-pxa/csb701.c
@@ -5,6 +5,8 @@
5#include <linux/input.h> 5#include <linux/input.h>
6#include <linux/leds.h> 6#include <linux/leds.h>
7 7
8#include <asm/mach-types.h>
9
8static struct gpio_keys_button csb701_buttons[] = { 10static struct gpio_keys_button csb701_buttons[] = {
9 { 11 {
10 .code = 0x7, 12 .code = 0x7,
@@ -54,6 +56,9 @@ static struct platform_device *devices[] __initdata = {
54 56
55static int __init csb701_init(void) 57static int __init csb701_init(void)
56{ 58{
59 if (!machine_is_csb726())
60 return -ENODEV;
61
57 return platform_add_devices(devices, ARRAY_SIZE(devices)); 62 return platform_add_devices(devices, ARRAY_SIZE(devices));
58} 63}
59 64
diff --git a/arch/arm/mach-pxa/e740.c b/arch/arm/mach-pxa/e740.c
index 07500a04fd8c..a36fc17f671d 100644
--- a/arch/arm/mach-pxa/e740.c
+++ b/arch/arm/mach-pxa/e740.c
@@ -29,6 +29,7 @@
29#include <mach/udc.h> 29#include <mach/udc.h>
30#include <mach/irda.h> 30#include <mach/irda.h>
31#include <mach/irqs.h> 31#include <mach/irqs.h>
32#include <mach/audio.h>
32 33
33#include "generic.h" 34#include "generic.h"
34#include "eseries.h" 35#include "eseries.h"
@@ -197,6 +198,7 @@ static void __init e740_init(void)
197 eseries_get_tmio_gpios(); 198 eseries_get_tmio_gpios();
198 platform_add_devices(devices, ARRAY_SIZE(devices)); 199 platform_add_devices(devices, ARRAY_SIZE(devices));
199 pxa_set_udc_info(&e7xx_udc_mach_info); 200 pxa_set_udc_info(&e7xx_udc_mach_info);
201 pxa_set_ac97_info(NULL);
200 e7xx_irda_init(); 202 e7xx_irda_init();
201 pxa_set_ficp_info(&e7xx_ficp_platform_data); 203 pxa_set_ficp_info(&e7xx_ficp_platform_data);
202} 204}
diff --git a/arch/arm/mach-pxa/e750.c b/arch/arm/mach-pxa/e750.c
index 6126c04e02bc..1d00110590e5 100644
--- a/arch/arm/mach-pxa/e750.c
+++ b/arch/arm/mach-pxa/e750.c
@@ -28,6 +28,7 @@
28#include <mach/udc.h> 28#include <mach/udc.h>
29#include <mach/irda.h> 29#include <mach/irda.h>
30#include <mach/irqs.h> 30#include <mach/irqs.h>
31#include <mach/audio.h>
31 32
32#include "generic.h" 33#include "generic.h"
33#include "eseries.h" 34#include "eseries.h"
@@ -198,6 +199,7 @@ static void __init e750_init(void)
198 eseries_get_tmio_gpios(); 199 eseries_get_tmio_gpios();
199 platform_add_devices(devices, ARRAY_SIZE(devices)); 200 platform_add_devices(devices, ARRAY_SIZE(devices));
200 pxa_set_udc_info(&e7xx_udc_mach_info); 201 pxa_set_udc_info(&e7xx_udc_mach_info);
202 pxa_set_ac97_info(NULL);
201 e7xx_irda_init(); 203 e7xx_irda_init();
202 pxa_set_ficp_info(&e7xx_ficp_platform_data); 204 pxa_set_ficp_info(&e7xx_ficp_platform_data);
203} 205}
diff --git a/arch/arm/mach-pxa/e800.c b/arch/arm/mach-pxa/e800.c
index 74ab09812a72..9866c7b9e784 100644
--- a/arch/arm/mach-pxa/e800.c
+++ b/arch/arm/mach-pxa/e800.c
@@ -27,6 +27,7 @@
27#include <mach/eseries-gpio.h> 27#include <mach/eseries-gpio.h>
28#include <mach/udc.h> 28#include <mach/udc.h>
29#include <mach/irqs.h> 29#include <mach/irqs.h>
30#include <mach/audio.h>
30 31
31#include "generic.h" 32#include "generic.h"
32#include "eseries.h" 33#include "eseries.h"
@@ -199,6 +200,7 @@ static void __init e800_init(void)
199 eseries_get_tmio_gpios(); 200 eseries_get_tmio_gpios();
200 platform_add_devices(devices, ARRAY_SIZE(devices)); 201 platform_add_devices(devices, ARRAY_SIZE(devices));
201 pxa_set_udc_info(&e800_udc_mach_info); 202 pxa_set_udc_info(&e800_udc_mach_info);
203 pxa_set_ac97_info(NULL);
202} 204}
203 205
204MACHINE_START(E800, "Toshiba e800") 206MACHINE_START(E800, "Toshiba e800")
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 920dfb8d36da..bc0f73fbd4ca 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -25,6 +25,7 @@
25#include <linux/regulator/machine.h> 25#include <linux/regulator/machine.h>
26#include <linux/spi/spi.h> 26#include <linux/spi/spi.h>
27#include <linux/spi/tdo24m.h> 27#include <linux/spi/tdo24m.h>
28#include <linux/spi/libertas_spi.h>
28#include <linux/power_supply.h> 29#include <linux/power_supply.h>
29#include <linux/apm-emulation.h> 30#include <linux/apm-emulation.h>
30 31
@@ -62,6 +63,8 @@
62#define GPIO93_CAM_RESET (93) 63#define GPIO93_CAM_RESET (93)
63#define GPIO41_ETHIRQ (41) 64#define GPIO41_ETHIRQ (41)
64#define EM_X270_ETHIRQ IRQ_GPIO(GPIO41_ETHIRQ) 65#define EM_X270_ETHIRQ IRQ_GPIO(GPIO41_ETHIRQ)
66#define GPIO115_WLAN_PWEN (115)
67#define GPIO19_WLAN_STRAP (19)
65 68
66static int mmc_cd; 69static int mmc_cd;
67static int nand_rb; 70static int nand_rb;
@@ -159,8 +162,8 @@ static unsigned long common_pin_config[] = {
159 GPIO57_SSP1_TXD, 162 GPIO57_SSP1_TXD,
160 163
161 /* SSP2 */ 164 /* SSP2 */
162 GPIO19_SSP2_SCLK, 165 GPIO19_GPIO, /* SSP2 clock is used as GPIO for Libertas pin-strap */
163 GPIO14_SSP2_SFRM, 166 GPIO14_GPIO,
164 GPIO89_SSP2_TXD, 167 GPIO89_SSP2_TXD,
165 GPIO88_SSP2_RXD, 168 GPIO88_SSP2_RXD,
166 169
@@ -640,28 +643,95 @@ static struct pxa2xx_spi_master em_x270_spi_info = {
640}; 643};
641 644
642static struct pxa2xx_spi_chip em_x270_tdo24m_chip = { 645static struct pxa2xx_spi_chip em_x270_tdo24m_chip = {
643 .rx_threshold = 1, 646 .rx_threshold = 1,
644 .tx_threshold = 1, 647 .tx_threshold = 1,
648 .gpio_cs = -1,
645}; 649};
646 650
647static struct tdo24m_platform_data em_x270_tdo24m_pdata = { 651static struct tdo24m_platform_data em_x270_tdo24m_pdata = {
648 .model = TDO35S, 652 .model = TDO35S,
649}; 653};
650 654
655static struct pxa2xx_spi_master em_x270_spi_2_info = {
656 .num_chipselect = 1,
657 .enable_dma = 1,
658};
659
660static struct pxa2xx_spi_chip em_x270_libertas_chip = {
661 .rx_threshold = 1,
662 .tx_threshold = 1,
663 .timeout = 1000,
664};
665
666static unsigned long em_x270_libertas_pin_config[] = {
667 /* SSP2 */
668 GPIO19_SSP2_SCLK,
669 GPIO14_GPIO,
670 GPIO89_SSP2_TXD,
671 GPIO88_SSP2_RXD,
672};
673
674static int em_x270_libertas_setup(struct spi_device *spi)
675{
676 int err = gpio_request(GPIO115_WLAN_PWEN, "WLAN PWEN");
677 if (err)
678 return err;
679
680 gpio_direction_output(GPIO19_WLAN_STRAP, 1);
681 mdelay(100);
682
683 pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_libertas_pin_config));
684
685 gpio_direction_output(GPIO115_WLAN_PWEN, 0);
686 mdelay(100);
687 gpio_set_value(GPIO115_WLAN_PWEN, 1);
688 mdelay(100);
689
690 spi->bits_per_word = 16;
691 spi_setup(spi);
692
693 return 0;
694}
695
696static int em_x270_libertas_teardown(struct spi_device *spi)
697{
698 gpio_set_value(GPIO115_WLAN_PWEN, 0);
699 gpio_free(GPIO115_WLAN_PWEN);
700
701 return 0;
702}
703
704struct libertas_spi_platform_data em_x270_libertas_pdata = {
705 .use_dummy_writes = 1,
706 .gpio_cs = 14,
707 .setup = em_x270_libertas_setup,
708 .teardown = em_x270_libertas_teardown,
709};
710
651static struct spi_board_info em_x270_spi_devices[] __initdata = { 711static struct spi_board_info em_x270_spi_devices[] __initdata = {
652 { 712 {
653 .modalias = "tdo24m", 713 .modalias = "tdo24m",
654 .max_speed_hz = 1000000, 714 .max_speed_hz = 1000000,
655 .bus_num = 1, 715 .bus_num = 1,
656 .chip_select = 0, 716 .chip_select = 0,
657 .controller_data = &em_x270_tdo24m_chip, 717 .controller_data = &em_x270_tdo24m_chip,
658 .platform_data = &em_x270_tdo24m_pdata, 718 .platform_data = &em_x270_tdo24m_pdata,
719 },
720 {
721 .modalias = "libertas_spi",
722 .max_speed_hz = 13000000,
723 .bus_num = 2,
724 .irq = IRQ_GPIO(116),
725 .chip_select = 0,
726 .controller_data = &em_x270_libertas_chip,
727 .platform_data = &em_x270_libertas_pdata,
659 }, 728 },
660}; 729};
661 730
662static void __init em_x270_init_spi(void) 731static void __init em_x270_init_spi(void)
663{ 732{
664 pxa2xx_set_spi_info(1, &em_x270_spi_info); 733 pxa2xx_set_spi_info(1, &em_x270_spi_info);
734 pxa2xx_set_spi_info(2, &em_x270_spi_2_info);
665 spi_register_board_info(ARRAY_AND_SIZE(em_x270_spi_devices)); 735 spi_register_board_info(ARRAY_AND_SIZE(em_x270_spi_devices));
666} 736}
667#else 737#else
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h
index 3465268ca716..485fede83d97 100644
--- a/arch/arm/mach-pxa/generic.h
+++ b/arch/arm/mach-pxa/generic.h
@@ -15,6 +15,9 @@ extern struct sys_timer pxa_timer;
15extern void __init pxa_init_irq(int irq_nr, 15extern void __init pxa_init_irq(int irq_nr,
16 int (*set_wake)(unsigned int, unsigned int)); 16 int (*set_wake)(unsigned int, unsigned int));
17extern void __init pxa25x_init_irq(void); 17extern void __init pxa25x_init_irq(void);
18#ifdef CONFIG_CPU_PXA26x
19extern void __init pxa26x_init_irq(void);
20#endif
18extern void __init pxa27x_init_irq(void); 21extern void __init pxa27x_init_irq(void);
19extern void __init pxa3xx_init_irq(void); 22extern void __init pxa3xx_init_irq(void);
20extern void __init pxa_map_io(void); 23extern void __init pxa_map_io(void);
diff --git a/arch/arm/mach-pxa/include/mach/audio.h b/arch/arm/mach-pxa/include/mach/audio.h
index f82f96dd1053..16eb02552d5d 100644
--- a/arch/arm/mach-pxa/include/mach/audio.h
+++ b/arch/arm/mach-pxa/include/mach/audio.h
@@ -4,12 +4,22 @@
4#include <sound/core.h> 4#include <sound/core.h>
5#include <sound/pcm.h> 5#include <sound/pcm.h>
6 6
7/*
8 * @reset_gpio: AC97 reset gpio (normally gpio113 or gpio95)
9 * a -1 value means no gpio will be used for reset
10
11 * reset_gpio should only be specified for pxa27x CPUs where a silicon
12 * bug prevents correct operation of the reset line. If not specified,
13 * the default behaviour on these CPUs is to consider gpio 113 as the
14 * AC97 reset line, which is the default on most boards.
15 */
7typedef struct { 16typedef struct {
8 int (*startup)(struct snd_pcm_substream *, void *); 17 int (*startup)(struct snd_pcm_substream *, void *);
9 void (*shutdown)(struct snd_pcm_substream *, void *); 18 void (*shutdown)(struct snd_pcm_substream *, void *);
10 void (*suspend)(void *); 19 void (*suspend)(void *);
11 void (*resume)(void *); 20 void (*resume)(void *);
12 void *priv; 21 void *priv;
22 int reset_gpio;
13} pxa2xx_audio_ops_t; 23} pxa2xx_audio_ops_t;
14 24
15extern void pxa_set_ac97_info(pxa2xx_audio_ops_t *ops); 25extern void pxa_set_ac97_info(pxa2xx_audio_ops_t *ops);
diff --git a/arch/arm/mach-pxa/include/mach/colibri.h b/arch/arm/mach-pxa/include/mach/colibri.h
index 3f2a01d6a03c..a88d7caff0d1 100644
--- a/arch/arm/mach-pxa/include/mach/colibri.h
+++ b/arch/arm/mach-pxa/include/mach/colibri.h
@@ -1,5 +1,8 @@
1#ifndef _COLIBRI_H_ 1#ifndef _COLIBRI_H_
2#define _COLIBRI_H_ 2#define _COLIBRI_H_
3
4#include <net/ax88796.h>
5
3/* 6/*
4 * common settings for all modules 7 * common settings for all modules
5 */ 8 */
@@ -7,13 +10,17 @@
7#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) 10#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
8extern void colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin); 11extern void colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin);
9#else 12#else
10static inline void colibri_pxa3xx_init_mmc(mfp_cfg_t *, int, int) {} 13static inline void colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin) {}
11#endif 14#endif
12 15
13#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) 16#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
14extern void colibri_pxa3xx_init_lcd(int bl_pin); 17extern void colibri_pxa3xx_init_lcd(int bl_pin);
15#else 18#else
16static inline void colibri_pxa3xx_init_lcd(int) {} 19static inline void colibri_pxa3xx_init_lcd(int bl_pin) {}
20#endif
21
22#if defined(CONFIG_AX88796)
23extern void colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data);
17#endif 24#endif
18 25
19/* physical memory regions */ 26/* physical memory regions */
diff --git a/arch/arm/mach-pxa/include/mach/magician.h b/arch/arm/mach-pxa/include/mach/magician.h
index 82a399f3f9f2..20ef37d4a9a7 100644
--- a/arch/arm/mach-pxa/include/mach/magician.h
+++ b/arch/arm/mach-pxa/include/mach/magician.h
@@ -27,7 +27,7 @@
27#define GPIO22_MAGICIAN_VIBRA_EN 22 27#define GPIO22_MAGICIAN_VIBRA_EN 22
28#define GPIO26_MAGICIAN_GSM_POWER 26 28#define GPIO26_MAGICIAN_GSM_POWER 26
29#define GPIO27_MAGICIAN_USBC_PUEN 27 29#define GPIO27_MAGICIAN_USBC_PUEN 27
30#define GPIO30_MAGICIAN_nCHARGE_EN 30 30#define GPIO30_MAGICIAN_BQ24022_nCHARGE_EN 30
31#define GPIO37_MAGICIAN_KEY_HANGUP 37 31#define GPIO37_MAGICIAN_KEY_HANGUP 37
32#define GPIO38_MAGICIAN_KEY_CONTACTS 38 32#define GPIO38_MAGICIAN_KEY_CONTACTS 38
33#define GPIO40_MAGICIAN_GSM_OUT2 40 33#define GPIO40_MAGICIAN_GSM_OUT2 40
@@ -98,7 +98,7 @@
98#define EGPIO_MAGICIAN_UNKNOWN_WAVEDEV_DLL MAGICIAN_EGPIO(2, 2) 98#define EGPIO_MAGICIAN_UNKNOWN_WAVEDEV_DLL MAGICIAN_EGPIO(2, 2)
99#define EGPIO_MAGICIAN_FLASH_VPP MAGICIAN_EGPIO(2, 3) 99#define EGPIO_MAGICIAN_FLASH_VPP MAGICIAN_EGPIO(2, 3)
100#define EGPIO_MAGICIAN_BL_POWER2 MAGICIAN_EGPIO(2, 4) 100#define EGPIO_MAGICIAN_BL_POWER2 MAGICIAN_EGPIO(2, 4)
101#define EGPIO_MAGICIAN_CHARGE_EN MAGICIAN_EGPIO(2, 5) 101#define EGPIO_MAGICIAN_BQ24022_ISET2 MAGICIAN_EGPIO(2, 5)
102#define EGPIO_MAGICIAN_GSM_POWER MAGICIAN_EGPIO(2, 7) 102#define EGPIO_MAGICIAN_GSM_POWER MAGICIAN_EGPIO(2, 7)
103 103
104/* input */ 104/* input */
diff --git a/arch/arm/mach-pxa/include/mach/palmasoc.h b/arch/arm/mach-pxa/include/mach/palmasoc.h
index 6c4b1f7de20a..58afb30d5298 100644
--- a/arch/arm/mach-pxa/include/mach/palmasoc.h
+++ b/arch/arm/mach-pxa/include/mach/palmasoc.h
@@ -1,13 +1,8 @@
1#ifndef _INCLUDE_PALMASOC_H_ 1#ifndef _INCLUDE_PALMASOC_H_
2#define _INCLUDE_PALMASOC_H_ 2#define _INCLUDE_PALMASOC_H_
3
3struct palm27x_asoc_info { 4struct palm27x_asoc_info {
4 int jack_gpio; 5 int jack_gpio;
5}; 6};
6 7
7#ifdef CONFIG_SND_PXA2XX_SOC_PALM27X
8void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data);
9#else
10static inline void palm27x_asoc_set_pdata(struct palm27x_asoc_info *data) {}
11#endif
12
13#endif 8#endif
diff --git a/arch/arm/mach-pxa/include/mach/palmld.h b/arch/arm/mach-pxa/include/mach/palmld.h
index 7c295a48d784..fb13c82ad6dc 100644
--- a/arch/arm/mach-pxa/include/mach/palmld.h
+++ b/arch/arm/mach-pxa/include/mach/palmld.h
@@ -87,6 +87,7 @@
87#define PALMLD_IDE_SIZE 0x00100000 87#define PALMLD_IDE_SIZE 0x00100000
88 88
89#define PALMLD_PHYS_IO_START 0x40000000 89#define PALMLD_PHYS_IO_START 0x40000000
90#define PALMLD_STR_BASE 0xa0200000
90 91
91/* BATTERY */ 92/* BATTERY */
92#define PALMLD_BAT_MAX_VOLTAGE 4000 /* 4.00V maximum voltage */ 93#define PALMLD_BAT_MAX_VOLTAGE 4000 /* 4.00V maximum voltage */
diff --git a/arch/arm/mach-pxa/include/mach/palmt5.h b/arch/arm/mach-pxa/include/mach/palmt5.h
index 94db2881f048..d15662aba008 100644
--- a/arch/arm/mach-pxa/include/mach/palmt5.h
+++ b/arch/arm/mach-pxa/include/mach/palmt5.h
@@ -37,7 +37,6 @@
37 37
38/* USB */ 38/* USB */
39#define GPIO_NR_PALMT5_USB_DETECT_N 15 39#define GPIO_NR_PALMT5_USB_DETECT_N 15
40#define GPIO_NR_PALMT5_USB_POWER 95
41#define GPIO_NR_PALMT5_USB_PULLUP 93 40#define GPIO_NR_PALMT5_USB_PULLUP 93
42 41
43/* LCD/BACKLIGHT */ 42/* LCD/BACKLIGHT */
@@ -59,6 +58,7 @@
59/* Various addresses */ 58/* Various addresses */
60#define PALMT5_PHYS_RAM_START 0xa0000000 59#define PALMT5_PHYS_RAM_START 0xa0000000
61#define PALMT5_PHYS_IO_START 0x40000000 60#define PALMT5_PHYS_IO_START 0x40000000
61#define PALMT5_STR_BASE 0xa0200000
62 62
63/* TOUCHSCREEN */ 63/* TOUCHSCREEN */
64#define AC97_LINK_FRAME 21 64#define AC97_LINK_FRAME 21
diff --git a/arch/arm/mach-pxa/include/mach/palmte2.h b/arch/arm/mach-pxa/include/mach/palmte2.h
new file mode 100644
index 000000000000..12361341f9d8
--- /dev/null
+++ b/arch/arm/mach-pxa/include/mach/palmte2.h
@@ -0,0 +1,68 @@
1/*
2 * GPIOs and interrupts for Palm Tungsten|E2 Handheld Computer
3 *
4 * Author:
5 * Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 */
12
13#ifndef _INCLUDE_PALMTE2_H_
14#define _INCLUDE_PALMTE2_H_
15
16/** HERE ARE GPIOs **/
17
18/* GPIOs */
19#define GPIO_NR_PALMTE2_POWER_DETECT 9
20#define GPIO_NR_PALMTE2_HOTSYNC_BUTTON_N 4
21#define GPIO_NR_PALMTE2_EARPHONE_DETECT 15
22
23/* SD/MMC */
24#define GPIO_NR_PALMTE2_SD_DETECT_N 10
25#define GPIO_NR_PALMTE2_SD_POWER 55
26#define GPIO_NR_PALMTE2_SD_READONLY 51
27
28/* IRDA - disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */
29#define GPIO_NR_PALMTE2_IR_DISABLE 48
30
31/* USB */
32#define GPIO_NR_PALMTE2_USB_DETECT_N 35
33#define GPIO_NR_PALMTE2_USB_PULLUP 53
34
35/* LCD/BACKLIGHT */
36#define GPIO_NR_PALMTE2_BL_POWER 56
37#define GPIO_NR_PALMTE2_LCD_POWER 37
38
39/* KEYS */
40#define GPIO_NR_PALMTE2_KEY_NOTES 5
41#define GPIO_NR_PALMTE2_KEY_TASKS 7
42#define GPIO_NR_PALMTE2_KEY_CALENDAR 11
43#define GPIO_NR_PALMTE2_KEY_CONTACTS 13
44#define GPIO_NR_PALMTE2_KEY_CENTER 14
45#define GPIO_NR_PALMTE2_KEY_LEFT 19
46#define GPIO_NR_PALMTE2_KEY_RIGHT 20
47#define GPIO_NR_PALMTE2_KEY_DOWN 21
48#define GPIO_NR_PALMTE2_KEY_UP 22
49
50/** HERE ARE INIT VALUES **/
51
52/* BACKLIGHT */
53#define PALMTE2_MAX_INTENSITY 0xFE
54#define PALMTE2_DEFAULT_INTENSITY 0x7E
55#define PALMTE2_LIMIT_MASK 0x7F
56#define PALMTE2_PRESCALER 0x3F
57#define PALMTE2_PERIOD_NS 3500
58
59/* BATTERY */
60#define PALMTE2_BAT_MAX_VOLTAGE 4000 /* 4.00v current voltage */
61#define PALMTE2_BAT_MIN_VOLTAGE 3550 /* 3.55v critical voltage */
62#define PALMTE2_BAT_MAX_CURRENT 0 /* unknokn */
63#define PALMTE2_BAT_MIN_CURRENT 0 /* unknown */
64#define PALMTE2_BAT_MAX_CHARGE 1 /* unknown */
65#define PALMTE2_BAT_MIN_CHARGE 1 /* unknown */
66#define PALMTE2_MAX_LIFE_MINS 360 /* on-life in minutes */
67
68#endif
diff --git a/arch/arm/mach-pxa/include/mach/palmtx.h b/arch/arm/mach-pxa/include/mach/palmtx.h
index 1e8bccbda510..e74082c872e1 100644
--- a/arch/arm/mach-pxa/include/mach/palmtx.h
+++ b/arch/arm/mach-pxa/include/mach/palmtx.h
@@ -38,7 +38,6 @@
38 38
39/* USB */ 39/* USB */
40#define GPIO_NR_PALMTX_USB_DETECT_N 13 40#define GPIO_NR_PALMTX_USB_DETECT_N 13
41#define GPIO_NR_PALMTX_USB_POWER 95
42#define GPIO_NR_PALMTX_USB_PULLUP 93 41#define GPIO_NR_PALMTX_USB_PULLUP 93
43 42
44/* LCD/BACKLIGHT */ 43/* LCD/BACKLIGHT */
@@ -78,6 +77,8 @@
78#define PALMTX_PHYS_RAM_START 0xa0000000 77#define PALMTX_PHYS_RAM_START 0xa0000000
79#define PALMTX_PHYS_IO_START 0x40000000 78#define PALMTX_PHYS_IO_START 0x40000000
80 79
80#define PALMTX_STR_BASE 0xa0200000
81
81#define PALMTX_PHYS_FLASH_START PXA_CS0_PHYS /* ChipSelect 0 */ 82#define PALMTX_PHYS_FLASH_START PXA_CS0_PHYS /* ChipSelect 0 */
82#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS /* ChipSelect 1 */ 83#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS /* ChipSelect 1 */
83 84
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index deeea1c2782b..c899bbd94dc0 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -25,6 +25,8 @@
25#include <linux/mtd/physmap.h> 25#include <linux/mtd/physmap.h>
26#include <linux/pda_power.h> 26#include <linux/pda_power.h>
27#include <linux/pwm_backlight.h> 27#include <linux/pwm_backlight.h>
28#include <linux/regulator/bq24022.h>
29#include <linux/regulator/machine.h>
28#include <linux/usb/gpio_vbus.h> 30#include <linux/usb/gpio_vbus.h>
29 31
30#include <mach/hardware.h> 32#include <mach/hardware.h>
@@ -552,33 +554,7 @@ static struct platform_device gpio_vbus = {
552 554
553static int power_supply_init(struct device *dev) 555static int power_supply_init(struct device *dev)
554{ 556{
555 int ret; 557 return gpio_request(EGPIO_MAGICIAN_CABLE_STATE_AC, "CABLE_STATE_AC");
556
557 ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_AC, "CABLE_STATE_AC");
558 if (ret)
559 goto err_cs_ac;
560 ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_USB, "CABLE_STATE_USB");
561 if (ret)
562 goto err_cs_usb;
563 ret = gpio_request(EGPIO_MAGICIAN_CHARGE_EN, "CHARGE_EN");
564 if (ret)
565 goto err_chg_en;
566 ret = gpio_request(GPIO30_MAGICIAN_nCHARGE_EN, "nCHARGE_EN");
567 if (!ret)
568 ret = gpio_direction_output(GPIO30_MAGICIAN_nCHARGE_EN, 0);
569 if (ret)
570 goto err_nchg_en;
571
572 return 0;
573
574err_nchg_en:
575 gpio_free(EGPIO_MAGICIAN_CHARGE_EN);
576err_chg_en:
577 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB);
578err_cs_usb:
579 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC);
580err_cs_ac:
581 return ret;
582} 558}
583 559
584static int magician_is_ac_online(void) 560static int magician_is_ac_online(void)
@@ -586,22 +562,8 @@ static int magician_is_ac_online(void)
586 return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_AC); 562 return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_AC);
587} 563}
588 564
589static int magician_is_usb_online(void)
590{
591 return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_USB);
592}
593
594static void magician_set_charge(int flags)
595{
596 gpio_set_value(GPIO30_MAGICIAN_nCHARGE_EN, !flags);
597 gpio_set_value(EGPIO_MAGICIAN_CHARGE_EN, flags);
598}
599
600static void power_supply_exit(struct device *dev) 565static void power_supply_exit(struct device *dev)
601{ 566{
602 gpio_free(GPIO30_MAGICIAN_nCHARGE_EN);
603 gpio_free(EGPIO_MAGICIAN_CHARGE_EN);
604 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB);
605 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC); 567 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC);
606} 568}
607 569
@@ -612,8 +574,6 @@ static char *magician_supplicants[] = {
612static struct pda_power_pdata power_supply_info = { 574static struct pda_power_pdata power_supply_info = {
613 .init = power_supply_init, 575 .init = power_supply_init,
614 .is_ac_online = magician_is_ac_online, 576 .is_ac_online = magician_is_ac_online,
615 .is_usb_online = magician_is_usb_online,
616 .set_charge = magician_set_charge,
617 .exit = power_supply_exit, 577 .exit = power_supply_exit,
618 .supplied_to = magician_supplicants, 578 .supplied_to = magician_supplicants,
619 .num_supplicants = ARRAY_SIZE(magician_supplicants), 579 .num_supplicants = ARRAY_SIZE(magician_supplicants),
@@ -646,6 +606,43 @@ static struct platform_device power_supply = {
646 .num_resources = ARRAY_SIZE(power_supply_resources), 606 .num_resources = ARRAY_SIZE(power_supply_resources),
647}; 607};
648 608
609/*
610 * Battery charger
611 */
612
613static struct regulator_consumer_supply bq24022_consumers[] = {
614 {
615 .dev = &gpio_vbus.dev,
616 .supply = "vbus_draw",
617 },
618 {
619 .dev = &power_supply.dev,
620 .supply = "ac_draw",
621 },
622};
623
624static struct regulator_init_data bq24022_init_data = {
625 .constraints = {
626 .max_uA = 500000,
627 .valid_ops_mask = REGULATOR_CHANGE_CURRENT,
628 },
629 .num_consumer_supplies = ARRAY_SIZE(bq24022_consumers),
630 .consumer_supplies = bq24022_consumers,
631};
632
633static struct bq24022_mach_info bq24022_info = {
634 .gpio_nce = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,
635 .gpio_iset2 = EGPIO_MAGICIAN_BQ24022_ISET2,
636 .init_data = &bq24022_init_data,
637};
638
639static struct platform_device bq24022 = {
640 .name = "bq24022",
641 .id = -1,
642 .dev = {
643 .platform_data = &bq24022_info,
644 },
645};
649 646
650/* 647/*
651 * MMC/SD 648 * MMC/SD
@@ -756,6 +753,7 @@ static struct platform_device *devices[] __initdata = {
756 &egpio, 753 &egpio,
757 &backlight, 754 &backlight,
758 &pasic3, 755 &pasic3,
756 &bq24022,
759 &gpio_vbus, 757 &gpio_vbus,
760 &power_supply, 758 &power_supply,
761 &strataflash, 759 &strataflash,
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index 97c93a7a285c..ff8052ce0a05 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -50,6 +50,7 @@
50#include <mach/pxa27x-udc.h> 50#include <mach/pxa27x-udc.h>
51#include <mach/i2c.h> 51#include <mach/i2c.h>
52#include <mach/camera.h> 52#include <mach/camera.h>
53#include <mach/audio.h>
53#include <media/soc_camera.h> 54#include <media/soc_camera.h>
54 55
55#include <mach/mioa701.h> 56#include <mach/mioa701.h>
@@ -741,6 +742,10 @@ struct i2c_pxa_platform_data i2c_pdata = {
741 .fast_mode = 1, 742 .fast_mode = 1,
742}; 743};
743 744
745static pxa2xx_audio_ops_t mioa701_ac97_info = {
746 .reset_gpio = 95,
747};
748
744/* 749/*
745 * Mio global 750 * Mio global
746 */ 751 */
@@ -763,8 +768,6 @@ MIO_PARENT_DEV(mioa701_backlight, "pwm-backlight", &pxa27x_device_pwm0.dev,
763 &mioa701_backlight_data); 768 &mioa701_backlight_data);
764MIO_SIMPLE_DEV(mioa701_led, "leds-gpio", &gpio_led_info) 769MIO_SIMPLE_DEV(mioa701_led, "leds-gpio", &gpio_led_info)
765MIO_SIMPLE_DEV(pxa2xx_pcm, "pxa2xx-pcm", NULL) 770MIO_SIMPLE_DEV(pxa2xx_pcm, "pxa2xx-pcm", NULL)
766MIO_SIMPLE_DEV(pxa2xx_ac97, "pxa2xx-ac97", NULL)
767MIO_PARENT_DEV(mio_wm9713_codec, "wm9713-codec", &pxa2xx_ac97.dev, NULL)
768MIO_SIMPLE_DEV(mioa701_sound, "mioa701-wm9713", NULL) 771MIO_SIMPLE_DEV(mioa701_sound, "mioa701-wm9713", NULL)
769MIO_SIMPLE_DEV(mioa701_board, "mioa701-board", NULL) 772MIO_SIMPLE_DEV(mioa701_board, "mioa701-board", NULL)
770MIO_SIMPLE_DEV(gpio_vbus, "gpio-vbus", &gpio_vbus_data); 773MIO_SIMPLE_DEV(gpio_vbus, "gpio-vbus", &gpio_vbus_data);
@@ -774,8 +777,6 @@ static struct platform_device *devices[] __initdata = {
774 &mioa701_backlight, 777 &mioa701_backlight,
775 &mioa701_led, 778 &mioa701_led,
776 &pxa2xx_pcm, 779 &pxa2xx_pcm,
777 &pxa2xx_ac97,
778 &mio_wm9713_codec,
779 &mioa701_sound, 780 &mioa701_sound,
780 &power_dev, 781 &power_dev,
781 &strataflash, 782 &strataflash,
@@ -818,6 +819,7 @@ static void __init mioa701_machine_init(void)
818 pxa_set_keypad_info(&mioa701_keypad_info); 819 pxa_set_keypad_info(&mioa701_keypad_info);
819 wm97xx_bat_set_pdata(&mioa701_battery_data); 820 wm97xx_bat_set_pdata(&mioa701_battery_data);
820 pxa_set_udc_info(&mioa701_udc_info); 821 pxa_set_udc_info(&mioa701_udc_info);
822 pxa_set_ac97_info(&mioa701_ac97_info);
821 pm_power_off = mioa701_poweroff; 823 pm_power_off = mioa701_poweroff;
822 arm_pm_restart = mioa701_restart; 824 arm_pm_restart = mioa701_restart;
823 platform_add_devices(devices, ARRAY_SIZE(devices)); 825 platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 8587477a9bb7..1cec1806f002 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -24,6 +24,7 @@
24#include <linux/gpio.h> 24#include <linux/gpio.h>
25#include <linux/wm97xx_batt.h> 25#include <linux/wm97xx_batt.h>
26#include <linux/power_supply.h> 26#include <linux/power_supply.h>
27#include <linux/sysdev.h>
27 28
28#include <asm/mach-types.h> 29#include <asm/mach-types.h>
29#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
@@ -68,10 +69,10 @@ static unsigned long palmld_pin_config[] __initdata = {
68 GPIO47_FICP_TXD, 69 GPIO47_FICP_TXD,
69 70
70 /* MATRIX KEYPAD */ 71 /* MATRIX KEYPAD */
71 GPIO100_KP_MKIN_0, 72 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
72 GPIO101_KP_MKIN_1, 73 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
73 GPIO102_KP_MKIN_2, 74 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
74 GPIO97_KP_MKIN_3, 75 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
75 GPIO103_KP_MKOUT_0, 76 GPIO103_KP_MKOUT_0,
76 GPIO104_KP_MKOUT_1, 77 GPIO104_KP_MKOUT_1,
77 GPIO105_KP_MKOUT_2, 78 GPIO105_KP_MKOUT_2,
@@ -476,10 +477,22 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
476/****************************************************************************** 477/******************************************************************************
477 * aSoC audio 478 * aSoC audio
478 ******************************************************************************/ 479 ******************************************************************************/
479static struct palm27x_asoc_info palm27x_asoc_pdata = { 480static struct palm27x_asoc_info palmld_asoc_pdata = {
480 .jack_gpio = GPIO_NR_PALMLD_EARPHONE_DETECT, 481 .jack_gpio = GPIO_NR_PALMLD_EARPHONE_DETECT,
481}; 482};
482 483
484static pxa2xx_audio_ops_t palmld_ac97_pdata = {
485 .reset_gpio = 95,
486};
487
488static struct platform_device palmld_asoc = {
489 .name = "palm27x-asoc",
490 .id = -1,
491 .dev = {
492 .platform_data = &palmld_asoc_pdata,
493 },
494};
495
483/****************************************************************************** 496/******************************************************************************
484 * Framebuffer 497 * Framebuffer
485 ******************************************************************************/ 498 ******************************************************************************/
@@ -507,6 +520,33 @@ static struct pxafb_mach_info palmld_lcd_screen = {
507}; 520};
508 521
509/****************************************************************************** 522/******************************************************************************
523 * Power management - standby
524 ******************************************************************************/
525#ifdef CONFIG_PM
526static u32 *addr __initdata;
527static u32 resume[3] __initdata = {
528 0xe3a00101, /* mov r0, #0x40000000 */
529 0xe380060f, /* orr r0, r0, #0x00f00000 */
530 0xe590f008, /* ldr pc, [r0, #0x08] */
531};
532
533static int __init palmld_pm_init(void)
534{
535 int i;
536
537 /* this is where the bootloader jumps */
538 addr = phys_to_virt(PALMLD_STR_BASE);
539
540 for (i = 0; i < 3; i++)
541 addr[i] = resume[i];
542
543 return 0;
544}
545
546device_initcall(palmld_pm_init);
547#endif
548
549/******************************************************************************
510 * Machine init 550 * Machine init
511 ******************************************************************************/ 551 ******************************************************************************/
512static struct platform_device *devices[] __initdata = { 552static struct platform_device *devices[] __initdata = {
@@ -516,6 +556,7 @@ static struct platform_device *devices[] __initdata = {
516 &palmld_backlight, 556 &palmld_backlight,
517 &palmld_leds, 557 &palmld_leds,
518 &power_supply, 558 &power_supply,
559 &palmld_asoc,
519}; 560};
520 561
521static struct map_desc palmld_io_desc[] __initdata = { 562static struct map_desc palmld_io_desc[] __initdata = {
@@ -545,11 +586,10 @@ static void __init palmld_init(void)
545 586
546 set_pxa_fb_info(&palmld_lcd_screen); 587 set_pxa_fb_info(&palmld_lcd_screen);
547 pxa_set_mci_info(&palmld_mci_platform_data); 588 pxa_set_mci_info(&palmld_mci_platform_data);
548 pxa_set_ac97_info(NULL); 589 pxa_set_ac97_info(&palmld_ac97_pdata);
549 pxa_set_ficp_info(&palmld_ficp_platform_data); 590 pxa_set_ficp_info(&palmld_ficp_platform_data);
550 pxa_set_keypad_info(&palmld_keypad_platform_data); 591 pxa_set_keypad_info(&palmld_keypad_platform_data);
551 wm97xx_bat_set_pdata(&wm97xx_batt_pdata); 592 wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
552 palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
553 593
554 platform_add_devices(devices, ARRAY_SIZE(devices)); 594 platform_add_devices(devices, ARRAY_SIZE(devices));
555} 595}
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 9521c7b33492..30662363907b 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -64,6 +64,7 @@ static unsigned long palmt5_pin_config[] __initdata = {
64 GPIO29_AC97_SDATA_IN_0, 64 GPIO29_AC97_SDATA_IN_0,
65 GPIO30_AC97_SDATA_OUT, 65 GPIO30_AC97_SDATA_OUT,
66 GPIO31_AC97_SYNC, 66 GPIO31_AC97_SYNC,
67 GPIO95_AC97_nRESET,
67 68
68 /* IrDA */ 69 /* IrDA */
69 GPIO40_GPIO, /* ir disable */ 70 GPIO40_GPIO, /* ir disable */
@@ -72,13 +73,13 @@ static unsigned long palmt5_pin_config[] __initdata = {
72 73
73 /* USB */ 74 /* USB */
74 GPIO15_GPIO, /* usb detect */ 75 GPIO15_GPIO, /* usb detect */
75 GPIO95_GPIO, /* usb power */ 76 GPIO93_GPIO, /* usb power */
76 77
77 /* MATRIX KEYPAD */ 78 /* MATRIX KEYPAD */
78 GPIO100_KP_MKIN_0, 79 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
79 GPIO101_KP_MKIN_1, 80 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
80 GPIO102_KP_MKIN_2, 81 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
81 GPIO97_KP_MKIN_3, 82 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
82 GPIO103_KP_MKOUT_0, 83 GPIO103_KP_MKOUT_0,
83 GPIO104_KP_MKOUT_1, 84 GPIO104_KP_MKOUT_1,
84 GPIO105_KP_MKOUT_2, 85 GPIO105_KP_MKOUT_2,
@@ -344,7 +345,7 @@ static struct pxaficp_platform_data palmt5_ficp_platform_data = {
344static struct pxa2xx_udc_mach_info palmt5_udc_info __initdata = { 345static struct pxa2xx_udc_mach_info palmt5_udc_info __initdata = {
345 .gpio_vbus = GPIO_NR_PALMT5_USB_DETECT_N, 346 .gpio_vbus = GPIO_NR_PALMT5_USB_DETECT_N,
346 .gpio_vbus_inverted = 1, 347 .gpio_vbus_inverted = 1,
347 .gpio_pullup = GPIO_NR_PALMT5_USB_POWER, 348 .gpio_pullup = GPIO_NR_PALMT5_USB_PULLUP,
348 .gpio_pullup_inverted = 0, 349 .gpio_pullup_inverted = 0,
349}; 350};
350 351
@@ -419,10 +420,22 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
419/****************************************************************************** 420/******************************************************************************
420 * aSoC audio 421 * aSoC audio
421 ******************************************************************************/ 422 ******************************************************************************/
422static struct palm27x_asoc_info palm27x_asoc_pdata = { 423static struct palm27x_asoc_info palmt5_asoc_pdata = {
423 .jack_gpio = GPIO_NR_PALMT5_EARPHONE_DETECT, 424 .jack_gpio = GPIO_NR_PALMT5_EARPHONE_DETECT,
424}; 425};
425 426
427static pxa2xx_audio_ops_t palmt5_ac97_pdata = {
428 .reset_gpio = 95,
429};
430
431static struct platform_device palmt5_asoc = {
432 .name = "palm27x-asoc",
433 .id = -1,
434 .dev = {
435 .platform_data = &palmt5_asoc_pdata,
436 },
437};
438
426/****************************************************************************** 439/******************************************************************************
427 * Framebuffer 440 * Framebuffer
428 ******************************************************************************/ 441 ******************************************************************************/
@@ -450,6 +463,33 @@ static struct pxafb_mach_info palmt5_lcd_screen = {
450}; 463};
451 464
452/****************************************************************************** 465/******************************************************************************
466 * Power management - standby
467 ******************************************************************************/
468#ifdef CONFIG_PM
469static u32 *addr __initdata;
470static u32 resume[3] __initdata = {
471 0xe3a00101, /* mov r0, #0x40000000 */
472 0xe380060f, /* orr r0, r0, #0x00f00000 */
473 0xe590f008, /* ldr pc, [r0, #0x08] */
474};
475
476static int __init palmt5_pm_init(void)
477{
478 int i;
479
480 /* this is where the bootloader jumps */
481 addr = phys_to_virt(PALMT5_STR_BASE);
482
483 for (i = 0; i < 3; i++)
484 addr[i] = resume[i];
485
486 return 0;
487}
488
489device_initcall(palmt5_pm_init);
490#endif
491
492/******************************************************************************
453 * Machine init 493 * Machine init
454 ******************************************************************************/ 494 ******************************************************************************/
455static struct platform_device *devices[] __initdata = { 495static struct platform_device *devices[] __initdata = {
@@ -458,14 +498,15 @@ static struct platform_device *devices[] __initdata = {
458#endif 498#endif
459 &palmt5_backlight, 499 &palmt5_backlight,
460 &power_supply, 500 &power_supply,
501 &palmt5_asoc,
461}; 502};
462 503
463/* setup udc GPIOs initial state */ 504/* setup udc GPIOs initial state */
464static void __init palmt5_udc_init(void) 505static void __init palmt5_udc_init(void)
465{ 506{
466 if (!gpio_request(GPIO_NR_PALMT5_USB_POWER, "UDC Vbus")) { 507 if (!gpio_request(GPIO_NR_PALMT5_USB_PULLUP, "UDC Vbus")) {
467 gpio_direction_output(GPIO_NR_PALMT5_USB_POWER, 1); 508 gpio_direction_output(GPIO_NR_PALMT5_USB_PULLUP, 1);
468 gpio_free(GPIO_NR_PALMT5_USB_POWER); 509 gpio_free(GPIO_NR_PALMT5_USB_PULLUP);
469 } 510 }
470} 511}
471 512
@@ -476,12 +517,11 @@ static void __init palmt5_init(void)
476 set_pxa_fb_info(&palmt5_lcd_screen); 517 set_pxa_fb_info(&palmt5_lcd_screen);
477 pxa_set_mci_info(&palmt5_mci_platform_data); 518 pxa_set_mci_info(&palmt5_mci_platform_data);
478 palmt5_udc_init(); 519 palmt5_udc_init();
520 pxa_set_ac97_info(&palmt5_ac97_pdata);
479 pxa_set_udc_info(&palmt5_udc_info); 521 pxa_set_udc_info(&palmt5_udc_info);
480 pxa_set_ac97_info(NULL);
481 pxa_set_ficp_info(&palmt5_ficp_platform_data); 522 pxa_set_ficp_info(&palmt5_ficp_platform_data);
482 pxa_set_keypad_info(&palmt5_keypad_platform_data); 523 pxa_set_keypad_info(&palmt5_keypad_platform_data);
483 wm97xx_bat_set_pdata(&wm97xx_batt_pdata); 524 wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
484 palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
485 platform_add_devices(devices, ARRAY_SIZE(devices)); 525 platform_add_devices(devices, ARRAY_SIZE(devices));
486} 526}
487 527
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
new file mode 100644
index 000000000000..43fcf2e86887
--- /dev/null
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -0,0 +1,466 @@
1/*
2 * Hardware definitions for Palm Tungsten|E2
3 *
4 * Author:
5 * Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com>
6 *
7 * Rewrite for mainline:
8 * Marek Vasut <marek.vasut@gmail.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13 *
14 * (find more info at www.hackndev.com)
15 *
16 */
17
18#include <linux/platform_device.h>
19#include <linux/delay.h>
20#include <linux/irq.h>
21#include <linux/gpio_keys.h>
22#include <linux/input.h>
23#include <linux/pda_power.h>
24#include <linux/pwm_backlight.h>
25#include <linux/gpio.h>
26#include <linux/wm97xx_batt.h>
27#include <linux/power_supply.h>
28
29#include <asm/mach-types.h>
30#include <asm/mach/arch.h>
31#include <asm/mach/map.h>
32
33#include <mach/audio.h>
34#include <mach/palmte2.h>
35#include <mach/mmc.h>
36#include <mach/pxafb.h>
37#include <mach/mfp-pxa25x.h>
38#include <mach/irda.h>
39#include <mach/udc.h>
40
41#include "generic.h"
42#include "devices.h"
43
44/******************************************************************************
45 * Pin configuration
46 ******************************************************************************/
47static unsigned long palmte2_pin_config[] __initdata = {
48 /* MMC */
49 GPIO6_MMC_CLK,
50 GPIO8_MMC_CS0,
51 GPIO10_GPIO, /* SD detect */
52 GPIO55_GPIO, /* SD power */
53 GPIO51_GPIO, /* SD r/o switch */
54
55 /* AC97 */
56 GPIO28_AC97_BITCLK,
57 GPIO29_AC97_SDATA_IN_0,
58 GPIO30_AC97_SDATA_OUT,
59 GPIO31_AC97_SYNC,
60
61 /* PWM */
62 GPIO16_PWM0_OUT,
63
64 /* USB */
65 GPIO15_GPIO, /* usb detect */
66 GPIO53_GPIO, /* usb power */
67
68 /* IrDA */
69 GPIO48_GPIO, /* ir disable */
70 GPIO46_FICP_RXD,
71 GPIO47_FICP_TXD,
72
73 /* LCD */
74 GPIO58_LCD_LDD_0,
75 GPIO59_LCD_LDD_1,
76 GPIO60_LCD_LDD_2,
77 GPIO61_LCD_LDD_3,
78 GPIO62_LCD_LDD_4,
79 GPIO63_LCD_LDD_5,
80 GPIO64_LCD_LDD_6,
81 GPIO65_LCD_LDD_7,
82 GPIO66_LCD_LDD_8,
83 GPIO67_LCD_LDD_9,
84 GPIO68_LCD_LDD_10,
85 GPIO69_LCD_LDD_11,
86 GPIO70_LCD_LDD_12,
87 GPIO71_LCD_LDD_13,
88 GPIO72_LCD_LDD_14,
89 GPIO73_LCD_LDD_15,
90 GPIO74_LCD_FCLK,
91 GPIO75_LCD_LCLK,
92 GPIO76_LCD_PCLK,
93 GPIO77_LCD_BIAS,
94
95 /* GPIO KEYS */
96 GPIO5_GPIO, /* notes */
97 GPIO7_GPIO, /* tasks */
98 GPIO11_GPIO, /* calendar */
99 GPIO13_GPIO, /* contacts */
100 GPIO14_GPIO, /* center */
101 GPIO19_GPIO, /* left */
102 GPIO20_GPIO, /* right */
103 GPIO21_GPIO, /* down */
104 GPIO22_GPIO, /* up */
105
106 /* MISC */
107 GPIO1_RST, /* reset */
108 GPIO4_GPIO, /* Hotsync button */
109 GPIO9_GPIO, /* power detect */
110 GPIO37_GPIO, /* LCD power */
111 GPIO56_GPIO, /* Backlight power */
112};
113
114/******************************************************************************
115 * SD/MMC card controller
116 ******************************************************************************/
117static int palmte2_mci_init(struct device *dev,
118 irq_handler_t palmte2_detect_int, void *data)
119{
120 int err = 0;
121
122 /* Setup an interrupt for detecting card insert/remove events */
123 err = gpio_request(GPIO_NR_PALMTE2_SD_DETECT_N, "SD IRQ");
124 if (err)
125 goto err;
126 err = gpio_direction_input(GPIO_NR_PALMTE2_SD_DETECT_N);
127 if (err)
128 goto err2;
129 err = request_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N),
130 palmte2_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
131 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
132 "SD/MMC card detect", data);
133 if (err) {
134 printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
135 __func__);
136 goto err2;
137 }
138
139 err = gpio_request(GPIO_NR_PALMTE2_SD_POWER, "SD_POWER");
140 if (err)
141 goto err3;
142 err = gpio_direction_output(GPIO_NR_PALMTE2_SD_POWER, 0);
143 if (err)
144 goto err4;
145
146 err = gpio_request(GPIO_NR_PALMTE2_SD_READONLY, "SD_READONLY");
147 if (err)
148 goto err4;
149 err = gpio_direction_input(GPIO_NR_PALMTE2_SD_READONLY);
150 if (err)
151 goto err5;
152
153 printk(KERN_DEBUG "%s: irq registered\n", __func__);
154
155 return 0;
156
157err5:
158 gpio_free(GPIO_NR_PALMTE2_SD_READONLY);
159err4:
160 gpio_free(GPIO_NR_PALMTE2_SD_POWER);
161err3:
162 free_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N), data);
163err2:
164 gpio_free(GPIO_NR_PALMTE2_SD_DETECT_N);
165err:
166 return err;
167}
168
169static void palmte2_mci_exit(struct device *dev, void *data)
170{
171 gpio_free(GPIO_NR_PALMTE2_SD_READONLY);
172 gpio_free(GPIO_NR_PALMTE2_SD_POWER);
173 free_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N), data);
174 gpio_free(GPIO_NR_PALMTE2_SD_DETECT_N);
175}
176
177static void palmte2_mci_power(struct device *dev, unsigned int vdd)
178{
179 struct pxamci_platform_data *p_d = dev->platform_data;
180 gpio_set_value(GPIO_NR_PALMTE2_SD_POWER, p_d->ocr_mask & (1 << vdd));
181}
182
183static int palmte2_mci_get_ro(struct device *dev)
184{
185 return gpio_get_value(GPIO_NR_PALMTE2_SD_READONLY);
186}
187
188static struct pxamci_platform_data palmte2_mci_platform_data = {
189 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
190 .setpower = palmte2_mci_power,
191 .get_ro = palmte2_mci_get_ro,
192 .init = palmte2_mci_init,
193 .exit = palmte2_mci_exit,
194};
195
196/******************************************************************************
197 * GPIO keys
198 ******************************************************************************/
199static struct gpio_keys_button palmte2_pxa_buttons[] = {
200 {KEY_F1, GPIO_NR_PALMTE2_KEY_CONTACTS, 1, "Contacts" },
201 {KEY_F2, GPIO_NR_PALMTE2_KEY_CALENDAR, 1, "Calendar" },
202 {KEY_F3, GPIO_NR_PALMTE2_KEY_TASKS, 1, "Tasks" },
203 {KEY_F4, GPIO_NR_PALMTE2_KEY_NOTES, 1, "Notes" },
204 {KEY_ENTER, GPIO_NR_PALMTE2_KEY_CENTER, 1, "Center" },
205 {KEY_LEFT, GPIO_NR_PALMTE2_KEY_LEFT, 1, "Left" },
206 {KEY_RIGHT, GPIO_NR_PALMTE2_KEY_RIGHT, 1, "Right" },
207 {KEY_DOWN, GPIO_NR_PALMTE2_KEY_DOWN, 1, "Down" },
208 {KEY_UP, GPIO_NR_PALMTE2_KEY_UP, 1, "Up" },
209};
210
211static struct gpio_keys_platform_data palmte2_pxa_keys_data = {
212 .buttons = palmte2_pxa_buttons,
213 .nbuttons = ARRAY_SIZE(palmte2_pxa_buttons),
214};
215
216static struct platform_device palmte2_pxa_keys = {
217 .name = "gpio-keys",
218 .id = -1,
219 .dev = {
220 .platform_data = &palmte2_pxa_keys_data,
221 },
222};
223
224/******************************************************************************
225 * Backlight
226 ******************************************************************************/
227static int palmte2_backlight_init(struct device *dev)
228{
229 int ret;
230
231 ret = gpio_request(GPIO_NR_PALMTE2_BL_POWER, "BL POWER");
232 if (ret)
233 goto err;
234 ret = gpio_direction_output(GPIO_NR_PALMTE2_BL_POWER, 0);
235 if (ret)
236 goto err2;
237 ret = gpio_request(GPIO_NR_PALMTE2_LCD_POWER, "LCD POWER");
238 if (ret)
239 goto err2;
240 ret = gpio_direction_output(GPIO_NR_PALMTE2_LCD_POWER, 0);
241 if (ret)
242 goto err3;
243
244 return 0;
245err3:
246 gpio_free(GPIO_NR_PALMTE2_LCD_POWER);
247err2:
248 gpio_free(GPIO_NR_PALMTE2_BL_POWER);
249err:
250 return ret;
251}
252
253static int palmte2_backlight_notify(int brightness)
254{
255 gpio_set_value(GPIO_NR_PALMTE2_BL_POWER, brightness);
256 gpio_set_value(GPIO_NR_PALMTE2_LCD_POWER, brightness);
257 return brightness;
258}
259
260static void palmte2_backlight_exit(struct device *dev)
261{
262 gpio_free(GPIO_NR_PALMTE2_BL_POWER);
263 gpio_free(GPIO_NR_PALMTE2_LCD_POWER);
264}
265
266static struct platform_pwm_backlight_data palmte2_backlight_data = {
267 .pwm_id = 0,
268 .max_brightness = PALMTE2_MAX_INTENSITY,
269 .dft_brightness = PALMTE2_MAX_INTENSITY,
270 .pwm_period_ns = PALMTE2_PERIOD_NS,
271 .init = palmte2_backlight_init,
272 .notify = palmte2_backlight_notify,
273 .exit = palmte2_backlight_exit,
274};
275
276static struct platform_device palmte2_backlight = {
277 .name = "pwm-backlight",
278 .dev = {
279 .parent = &pxa25x_device_pwm0.dev,
280 .platform_data = &palmte2_backlight_data,
281 },
282};
283
284/******************************************************************************
285 * IrDA
286 ******************************************************************************/
287static int palmte2_irda_startup(struct device *dev)
288{
289 int err;
290 err = gpio_request(GPIO_NR_PALMTE2_IR_DISABLE, "IR DISABLE");
291 if (err)
292 goto err;
293 err = gpio_direction_output(GPIO_NR_PALMTE2_IR_DISABLE, 1);
294 if (err)
295 gpio_free(GPIO_NR_PALMTE2_IR_DISABLE);
296err:
297 return err;
298}
299
300static void palmte2_irda_shutdown(struct device *dev)
301{
302 gpio_free(GPIO_NR_PALMTE2_IR_DISABLE);
303}
304
305static void palmte2_irda_transceiver_mode(struct device *dev, int mode)
306{
307 gpio_set_value(GPIO_NR_PALMTE2_IR_DISABLE, mode & IR_OFF);
308 pxa2xx_transceiver_mode(dev, mode);
309}
310
311static struct pxaficp_platform_data palmte2_ficp_platform_data = {
312 .startup = palmte2_irda_startup,
313 .shutdown = palmte2_irda_shutdown,
314 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
315 .transceiver_mode = palmte2_irda_transceiver_mode,
316};
317
318/******************************************************************************
319 * UDC
320 ******************************************************************************/
321static struct pxa2xx_udc_mach_info palmte2_udc_info __initdata = {
322 .gpio_vbus = GPIO_NR_PALMTE2_USB_DETECT_N,
323 .gpio_vbus_inverted = 1,
324 .gpio_pullup = GPIO_NR_PALMTE2_USB_PULLUP,
325 .gpio_pullup_inverted = 0,
326};
327
328/******************************************************************************
329 * Power supply
330 ******************************************************************************/
331static int power_supply_init(struct device *dev)
332{
333 int ret;
334
335 ret = gpio_request(GPIO_NR_PALMTE2_POWER_DETECT, "CABLE_STATE_AC");
336 if (ret)
337 goto err1;
338 ret = gpio_direction_input(GPIO_NR_PALMTE2_POWER_DETECT);
339 if (ret)
340 goto err2;
341
342 return 0;
343
344err2:
345 gpio_free(GPIO_NR_PALMTE2_POWER_DETECT);
346err1:
347 return ret;
348}
349
350static int palmte2_is_ac_online(void)
351{
352 return gpio_get_value(GPIO_NR_PALMTE2_POWER_DETECT);
353}
354
355static void power_supply_exit(struct device *dev)
356{
357 gpio_free(GPIO_NR_PALMTE2_POWER_DETECT);
358}
359
360static char *palmte2_supplicants[] = {
361 "main-battery",
362};
363
364static struct pda_power_pdata power_supply_info = {
365 .init = power_supply_init,
366 .is_ac_online = palmte2_is_ac_online,
367 .exit = power_supply_exit,
368 .supplied_to = palmte2_supplicants,
369 .num_supplicants = ARRAY_SIZE(palmte2_supplicants),
370};
371
372static struct platform_device power_supply = {
373 .name = "pda-power",
374 .id = -1,
375 .dev = {
376 .platform_data = &power_supply_info,
377 },
378};
379
380/******************************************************************************
381 * WM97xx battery
382 ******************************************************************************/
383static struct wm97xx_batt_info wm97xx_batt_pdata = {
384 .batt_aux = WM97XX_AUX_ID3,
385 .temp_aux = WM97XX_AUX_ID2,
386 .charge_gpio = -1,
387 .max_voltage = PALMTE2_BAT_MAX_VOLTAGE,
388 .min_voltage = PALMTE2_BAT_MIN_VOLTAGE,
389 .batt_mult = 1000,
390 .batt_div = 414,
391 .temp_mult = 1,
392 .temp_div = 1,
393 .batt_tech = POWER_SUPPLY_TECHNOLOGY_LIPO,
394 .batt_name = "main-batt",
395};
396
397/******************************************************************************
398 * Framebuffer
399 ******************************************************************************/
400static struct pxafb_mode_info palmte2_lcd_modes[] = {
401{
402 .pixclock = 77757,
403 .xres = 320,
404 .yres = 320,
405 .bpp = 16,
406
407 .left_margin = 28,
408 .right_margin = 7,
409 .upper_margin = 7,
410 .lower_margin = 5,
411
412 .hsync_len = 4,
413 .vsync_len = 1,
414},
415};
416
417static struct pxafb_mach_info palmte2_lcd_screen = {
418 .modes = palmte2_lcd_modes,
419 .num_modes = ARRAY_SIZE(palmte2_lcd_modes),
420 .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL,
421};
422
423/******************************************************************************
424 * Machine init
425 ******************************************************************************/
426static struct platform_device *devices[] __initdata = {
427#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
428 &palmte2_pxa_keys,
429#endif
430 &palmte2_backlight,
431 &power_supply,
432};
433
434/* setup udc GPIOs initial state */
435static void __init palmte2_udc_init(void)
436{
437 if (!gpio_request(GPIO_NR_PALMTE2_USB_PULLUP, "UDC Vbus")) {
438 gpio_direction_output(GPIO_NR_PALMTE2_USB_PULLUP, 1);
439 gpio_free(GPIO_NR_PALMTE2_USB_PULLUP);
440 }
441}
442
443static void __init palmte2_init(void)
444{
445 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmte2_pin_config));
446
447 set_pxa_fb_info(&palmte2_lcd_screen);
448 pxa_set_mci_info(&palmte2_mci_platform_data);
449 palmte2_udc_init();
450 pxa_set_udc_info(&palmte2_udc_info);
451 pxa_set_ac97_info(NULL);
452 pxa_set_ficp_info(&palmte2_ficp_platform_data);
453 wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
454
455 platform_add_devices(devices, ARRAY_SIZE(devices));
456}
457
458MACHINE_START(PALMTE2, "Palm Tungsten|E2")
459 .phys_io = 0x40000000,
460 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
461 .boot_params = 0xa0000100,
462 .map_io = pxa_map_io,
463 .init_irq = pxa25x_init_irq,
464 .timer = &pxa_timer,
465 .init_machine = palmte2_init
466MACHINE_END
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index b490c0924619..e2d44b1a8a9b 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -40,6 +40,7 @@
40#include <mach/irda.h> 40#include <mach/irda.h>
41#include <mach/pxa27x_keypad.h> 41#include <mach/pxa27x_keypad.h>
42#include <mach/udc.h> 42#include <mach/udc.h>
43#include <mach/palmasoc.h>
43 44
44#include "generic.h" 45#include "generic.h"
45#include "devices.h" 46#include "devices.h"
@@ -64,6 +65,7 @@ static unsigned long palmtx_pin_config[] __initdata = {
64 GPIO29_AC97_SDATA_IN_0, 65 GPIO29_AC97_SDATA_IN_0,
65 GPIO30_AC97_SDATA_OUT, 66 GPIO30_AC97_SDATA_OUT,
66 GPIO31_AC97_SYNC, 67 GPIO31_AC97_SYNC,
68 GPIO95_AC97_nRESET,
67 69
68 /* IrDA */ 70 /* IrDA */
69 GPIO40_GPIO, /* ir disable */ 71 GPIO40_GPIO, /* ir disable */
@@ -75,7 +77,7 @@ static unsigned long palmtx_pin_config[] __initdata = {
75 77
76 /* USB */ 78 /* USB */
77 GPIO13_GPIO, /* usb detect */ 79 GPIO13_GPIO, /* usb detect */
78 GPIO95_GPIO, /* usb power */ 80 GPIO93_GPIO, /* usb power */
79 81
80 /* PCMCIA */ 82 /* PCMCIA */
81 GPIO48_nPOE, 83 GPIO48_nPOE,
@@ -93,10 +95,10 @@ static unsigned long palmtx_pin_config[] __initdata = {
93 GPIO116_GPIO, /* wifi ready */ 95 GPIO116_GPIO, /* wifi ready */
94 96
95 /* MATRIX KEYPAD */ 97 /* MATRIX KEYPAD */
96 GPIO100_KP_MKIN_0, 98 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
97 GPIO101_KP_MKIN_1, 99 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
98 GPIO102_KP_MKIN_2, 100 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
99 GPIO97_KP_MKIN_3, 101 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
100 GPIO103_KP_MKOUT_0, 102 GPIO103_KP_MKOUT_0,
101 GPIO104_KP_MKOUT_1, 103 GPIO104_KP_MKOUT_1,
102 GPIO105_KP_MKOUT_2, 104 GPIO105_KP_MKOUT_2,
@@ -359,7 +361,7 @@ static struct pxaficp_platform_data palmtx_ficp_platform_data = {
359static struct pxa2xx_udc_mach_info palmtx_udc_info __initdata = { 361static struct pxa2xx_udc_mach_info palmtx_udc_info __initdata = {
360 .gpio_vbus = GPIO_NR_PALMTX_USB_DETECT_N, 362 .gpio_vbus = GPIO_NR_PALMTX_USB_DETECT_N,
361 .gpio_vbus_inverted = 1, 363 .gpio_vbus_inverted = 1,
362 .gpio_pullup = GPIO_NR_PALMTX_USB_POWER, 364 .gpio_pullup = GPIO_NR_PALMTX_USB_PULLUP,
363 .gpio_pullup_inverted = 0, 365 .gpio_pullup_inverted = 0,
364}; 366};
365 367
@@ -433,6 +435,25 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
433}; 435};
434 436
435/****************************************************************************** 437/******************************************************************************
438 * aSoC audio
439 ******************************************************************************/
440static struct palm27x_asoc_info palmtx_asoc_pdata = {
441 .jack_gpio = GPIO_NR_PALMTX_EARPHONE_DETECT,
442};
443
444static pxa2xx_audio_ops_t palmtx_ac97_pdata = {
445 .reset_gpio = 95,
446};
447
448static struct platform_device palmtx_asoc = {
449 .name = "palm27x-asoc",
450 .id = -1,
451 .dev = {
452 .platform_data = &palmtx_asoc_pdata,
453 },
454};
455
456/******************************************************************************
436 * Framebuffer 457 * Framebuffer
437 ******************************************************************************/ 458 ******************************************************************************/
438static struct pxafb_mode_info palmtx_lcd_modes[] = { 459static struct pxafb_mode_info palmtx_lcd_modes[] = {
@@ -459,6 +480,33 @@ static struct pxafb_mach_info palmtx_lcd_screen = {
459}; 480};
460 481
461/****************************************************************************** 482/******************************************************************************
483 * Power management - standby
484 ******************************************************************************/
485#ifdef CONFIG_PM
486static u32 *addr __initdata;
487static u32 resume[3] __initdata = {
488 0xe3a00101, /* mov r0, #0x40000000 */
489 0xe380060f, /* orr r0, r0, #0x00f00000 */
490 0xe590f008, /* ldr pc, [r0, #0x08] */
491};
492
493static int __init palmtx_pm_init(void)
494{
495 int i;
496
497 /* this is where the bootloader jumps */
498 addr = phys_to_virt(PALMTX_STR_BASE);
499
500 for (i = 0; i < 3; i++)
501 addr[i] = resume[i];
502
503 return 0;
504}
505
506device_initcall(palmtx_pm_init);
507#endif
508
509/******************************************************************************
462 * Machine init 510 * Machine init
463 ******************************************************************************/ 511 ******************************************************************************/
464static struct platform_device *devices[] __initdata = { 512static struct platform_device *devices[] __initdata = {
@@ -467,6 +515,7 @@ static struct platform_device *devices[] __initdata = {
467#endif 515#endif
468 &palmtx_backlight, 516 &palmtx_backlight,
469 &power_supply, 517 &power_supply,
518 &palmtx_asoc,
470}; 519};
471 520
472static struct map_desc palmtx_io_desc[] __initdata = { 521static struct map_desc palmtx_io_desc[] __initdata = {
@@ -487,9 +536,9 @@ static void __init palmtx_map_io(void)
487/* setup udc GPIOs initial state */ 536/* setup udc GPIOs initial state */
488static void __init palmtx_udc_init(void) 537static void __init palmtx_udc_init(void)
489{ 538{
490 if (!gpio_request(GPIO_NR_PALMTX_USB_POWER, "UDC Vbus")) { 539 if (!gpio_request(GPIO_NR_PALMTX_USB_PULLUP, "UDC Vbus")) {
491 gpio_direction_output(GPIO_NR_PALMTX_USB_POWER, 1); 540 gpio_direction_output(GPIO_NR_PALMTX_USB_PULLUP, 1);
492 gpio_free(GPIO_NR_PALMTX_USB_POWER); 541 gpio_free(GPIO_NR_PALMTX_USB_PULLUP);
493 } 542 }
494} 543}
495 544
@@ -501,8 +550,8 @@ static void __init palmtx_init(void)
501 set_pxa_fb_info(&palmtx_lcd_screen); 550 set_pxa_fb_info(&palmtx_lcd_screen);
502 pxa_set_mci_info(&palmtx_mci_platform_data); 551 pxa_set_mci_info(&palmtx_mci_platform_data);
503 palmtx_udc_init(); 552 palmtx_udc_init();
553 pxa_set_ac97_info(&palmtx_ac97_pdata);
504 pxa_set_udc_info(&palmtx_udc_info); 554 pxa_set_udc_info(&palmtx_udc_info);
505 pxa_set_ac97_info(NULL);
506 pxa_set_ficp_info(&palmtx_ficp_platform_data); 555 pxa_set_ficp_info(&palmtx_ficp_platform_data);
507 pxa_set_keypad_info(&palmtx_keypad_platform_data); 556 pxa_set_keypad_info(&palmtx_keypad_platform_data);
508 wm97xx_bat_set_pdata(&wm97xx_batt_pdata); 557 wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 6112740b4ae9..6c12b5a3132f 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -377,7 +377,7 @@ struct pxacamera_platform_data pcm990_pxacamera_platform_data = {
377#include <linux/i2c/pca953x.h> 377#include <linux/i2c/pca953x.h>
378 378
379static struct pca953x_platform_data pca9536_data = { 379static struct pca953x_platform_data pca9536_data = {
380 .gpio_base = NR_BUILTIN_GPIO + 1, 380 .gpio_base = NR_BUILTIN_GPIO,
381}; 381};
382 382
383static int gpio_bus_switch; 383static int gpio_bus_switch;
@@ -405,9 +405,9 @@ static unsigned long pcm990_camera_query_bus_param(struct soc_camera_link *link)
405 int ret; 405 int ret;
406 406
407 if (!gpio_bus_switch) { 407 if (!gpio_bus_switch) {
408 ret = gpio_request(NR_BUILTIN_GPIO + 1, "camera"); 408 ret = gpio_request(NR_BUILTIN_GPIO, "camera");
409 if (!ret) { 409 if (!ret) {
410 gpio_bus_switch = NR_BUILTIN_GPIO + 1; 410 gpio_bus_switch = NR_BUILTIN_GPIO;
411 gpio_direction_output(gpio_bus_switch, 0); 411 gpio_direction_output(gpio_bus_switch, 0);
412 } else 412 } else
413 gpio_bus_switch = -EINVAL; 413 gpio_bus_switch = -EINVAL;
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
index 8eb3830fbb0b..750c448db672 100644
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -125,7 +125,7 @@ static struct clock_event_device ckevt_pxa_osmr0 = {
125 .set_mode = pxa_osmr0_set_mode, 125 .set_mode = pxa_osmr0_set_mode,
126}; 126};
127 127
128static cycle_t pxa_read_oscr(void) 128static cycle_t pxa_read_oscr(struct clocksource *cs)
129{ 129{
130 return OSCR; 130 return OSCR;
131} 131}
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 6e8ade6ae339..afac5b6d3d78 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -45,6 +45,7 @@
45#include <mach/udc.h> 45#include <mach/udc.h>
46#include <mach/tosa_bt.h> 46#include <mach/tosa_bt.h>
47#include <mach/pxa2xx_spi.h> 47#include <mach/pxa2xx_spi.h>
48#include <mach/audio.h>
48 49
49#include <asm/mach/arch.h> 50#include <asm/mach/arch.h>
50#include <mach/tosa.h> 51#include <mach/tosa.h>
@@ -914,6 +915,7 @@ static void __init tosa_init(void)
914 pxa_set_udc_info(&udc_info); 915 pxa_set_udc_info(&udc_info);
915 pxa_set_ficp_info(&tosa_ficp_platform_data); 916 pxa_set_ficp_info(&tosa_ficp_platform_data);
916 pxa_set_i2c_info(NULL); 917 pxa_set_i2c_info(NULL);
918 pxa_set_ac97_info(NULL);
917 platform_scoop_config = &tosa_pcmcia_config; 919 platform_scoop_config = &tosa_pcmcia_config;
918 920
919 pxa2xx_set_spi_info(2, &pxa_ssp_master_info); 921 pxa2xx_set_spi_info(2, &pxa_ssp_master_info);
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index 9ab947c14f26..942e1a7eb9b2 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -715,7 +715,7 @@ static struct irqaction realview_timer_irq = {
715 .handler = realview_timer_interrupt, 715 .handler = realview_timer_interrupt,
716}; 716};
717 717
718static cycle_t realview_get_cycles(void) 718static cycle_t realview_get_cycles(struct clocksource *cs)
719{ 719{
720 return ~readl(timer3_va_base + TIMER_VALUE); 720 return ~readl(timer3_va_base + TIMER_VALUE);
721} 721}
diff --git a/arch/arm/mach-s3c2412/mach-jive.c b/arch/arm/mach-s3c2412/mach-jive.c
index 332bd3263eaf..8f0d37d43b43 100644
--- a/arch/arm/mach-s3c2412/mach-jive.c
+++ b/arch/arm/mach-s3c2412/mach-jive.c
@@ -52,7 +52,6 @@
52#include <plat/cpu.h> 52#include <plat/cpu.h>
53#include <plat/pm.h> 53#include <plat/pm.h>
54#include <plat/udc.h> 54#include <plat/udc.h>
55#include <plat/iic.h>
56 55
57static struct map_desc jive_iodesc[] __initdata = { 56static struct map_desc jive_iodesc[] __initdata = {
58}; 57};
@@ -278,7 +277,7 @@ __setup("mtdset=", jive_mtdset);
278#define LCD_HTOT (LCD_HSYNC + LCD_LEFT_MARGIN + LCD_XRES + LCD_RIGHT_MARGIN) 277#define LCD_HTOT (LCD_HSYNC + LCD_LEFT_MARGIN + LCD_XRES + LCD_RIGHT_MARGIN)
279#define LCD_VTOT (LCD_VSYNC + LCD_LOWER_MARGIN + LCD_YRES + LCD_UPPER_MARGIN) 278#define LCD_VTOT (LCD_VSYNC + LCD_LOWER_MARGIN + LCD_YRES + LCD_UPPER_MARGIN)
280 279
281struct s3c2410fb_display jive_vgg2432a4_display[] = { 280static struct s3c2410fb_display jive_vgg2432a4_display[] = {
282 [0] = { 281 [0] = {
283 .width = LCD_XRES, 282 .width = LCD_XRES,
284 .height = LCD_YRES, 283 .height = LCD_YRES,
@@ -311,7 +310,7 @@ struct s3c2410fb_display jive_vgg2432a4_display[] = {
311#define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2)) 310#define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2))
312#define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2)) 311#define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2))
313 312
314struct s3c2410fb_mach_info jive_lcd_config = { 313static struct s3c2410fb_mach_info jive_lcd_config = {
315 .displays = jive_vgg2432a4_display, 314 .displays = jive_vgg2432a4_display,
316 .num_displays = ARRAY_SIZE(jive_vgg2432a4_display), 315 .num_displays = ARRAY_SIZE(jive_vgg2432a4_display),
317 .default_display = 0, 316 .default_display = 0,
diff --git a/arch/arm/mach-s3c2440/mach-anubis.c b/arch/arm/mach-s3c2440/mach-anubis.c
index b05d56e230a1..9c6abf9fb540 100644
--- a/arch/arm/mach-s3c2440/mach-anubis.c
+++ b/arch/arm/mach-s3c2440/mach-anubis.c
@@ -243,7 +243,7 @@ static struct s3c2410_platform_nand anubis_nand_info = {
243 243
244/* IDE channels */ 244/* IDE channels */
245 245
246struct pata_platform_info anubis_ide_platdata = { 246static struct pata_platform_info anubis_ide_platdata = {
247 .ioport_shift = 5, 247 .ioport_shift = 5,
248}; 248};
249 249
diff --git a/arch/arm/mach-s3c2440/mach-osiris.c b/arch/arm/mach-s3c2440/mach-osiris.c
index 41a00f57e5da..c8a46685ce38 100644
--- a/arch/arm/mach-s3c2440/mach-osiris.c
+++ b/arch/arm/mach-s3c2440/mach-osiris.c
@@ -413,7 +413,6 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")
413 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 413 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
414 .boot_params = S3C2410_SDRAM_PA + 0x100, 414 .boot_params = S3C2410_SDRAM_PA + 0x100,
415 .map_io = osiris_map_io, 415 .map_io = osiris_map_io,
416 .init_machine = osiris_init,
417 .init_irq = s3c24xx_init_irq, 416 .init_irq = s3c24xx_init_irq,
418 .init_machine = osiris_init, 417 .init_machine = osiris_init,
419 .timer = &s3c24xx_timer, 418 .timer = &s3c24xx_timer,
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c
index 25f7935576f8..7f473e47e4f1 100644
--- a/arch/arm/mach-s3c6410/mach-smdk6410.c
+++ b/arch/arm/mach-s3c6410/mach-smdk6410.c
@@ -166,6 +166,10 @@ static void __init smdk6410_machine_init(void)
166 s3c_i2c1_set_platdata(NULL); 166 s3c_i2c1_set_platdata(NULL);
167 s3c_fb_set_platdata(&smdk6410_lcd_pdata); 167 s3c_fb_set_platdata(&smdk6410_lcd_pdata);
168 168
169 gpio_request(S3C64XX_GPN(5), "LCD power");
170 gpio_request(S3C64XX_GPF(13), "LCD power");
171 gpio_request(S3C64XX_GPF(15), "LCD power");
172
169 i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0)); 173 i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
170 i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); 174 i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
171 175
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 565776680d8c..1f929c391af7 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -948,7 +948,7 @@ static struct irqaction versatile_timer_irq = {
948 .handler = versatile_timer_interrupt, 948 .handler = versatile_timer_interrupt,
949}; 949};
950 950
951static cycle_t versatile_get_cycles(void) 951static cycle_t versatile_get_cycles(struct clocksource *cs)
952{ 952{
953 return ~readl(TIMER3_VA_BASE + TIMER_VALUE); 953 return ~readl(TIMER3_VA_BASE + TIMER_VALUE);
954} 954}
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index b438fc4fb77b..e6344ece00ce 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -828,6 +828,17 @@ void __init reserve_node_zero(pg_data_t *pgdat)
828 BOOTMEM_DEFAULT); 828 BOOTMEM_DEFAULT);
829 } 829 }
830 830
831 if (machine_is_palmld() || machine_is_palmtx()) {
832 reserve_bootmem_node(pgdat, 0xa0000000, 0x1000,
833 BOOTMEM_EXCLUSIVE);
834 reserve_bootmem_node(pgdat, 0xa0200000, 0x1000,
835 BOOTMEM_EXCLUSIVE);
836 }
837
838 if (machine_is_palmt5())
839 reserve_bootmem_node(pgdat, 0xa0200000, 0x1000,
840 BOOTMEM_EXCLUSIVE);
841
831#ifdef CONFIG_SA1111 842#ifdef CONFIG_SA1111
832 /* 843 /*
833 * Because of the SA1111 DMA bug, we want to preserve our 844 * Because of the SA1111 DMA bug, we want to preserve our
diff --git a/arch/arm/plat-mxc/include/mach/imx-uart.h b/arch/arm/plat-mxc/include/mach/imx-uart.h
index 83fb72c4048a..599217b2e13f 100644
--- a/arch/arm/plat-mxc/include/mach/imx-uart.h
+++ b/arch/arm/plat-mxc/include/mach/imx-uart.h
@@ -27,6 +27,4 @@ struct imxuart_platform_data {
27 unsigned int flags; 27 unsigned int flags;
28}; 28};
29 29
30int __init imx_init_uart(int uart_no, struct imxuart_platform_data *pdata);
31
32#endif 30#endif
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx3.h b/arch/arm/plat-mxc/include/mach/iomux-mx3.h
index ab838cfe94f9..57e927a1fd3a 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx3.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx3.h
@@ -518,6 +518,8 @@ enum iomux_pins {
518 */ 518 */
519#define MX31_PIN_CSPI3_MOSI__RXD3 IOMUX_MODE(MX31_PIN_CSPI3_MOSI, IOMUX_CONFIG_ALT1) 519#define MX31_PIN_CSPI3_MOSI__RXD3 IOMUX_MODE(MX31_PIN_CSPI3_MOSI, IOMUX_CONFIG_ALT1)
520#define MX31_PIN_CSPI3_MISO__TXD3 IOMUX_MODE(MX31_PIN_CSPI3_MISO, IOMUX_CONFIG_ALT1) 520#define MX31_PIN_CSPI3_MISO__TXD3 IOMUX_MODE(MX31_PIN_CSPI3_MISO, IOMUX_CONFIG_ALT1)
521#define MX31_PIN_CSPI3_SCLK__RTS3 IOMUX_MODE(MX31_PIN_CSPI3_SCLK, IOMUX_CONFIG_ALT1)
522#define MX31_PIN_CSPI3_SPI_RDY__CTS3 IOMUX_MODE(MX31_PIN_CSPI3_SPI_RDY, IOMUX_CONFIG_ALT1)
521#define MX31_PIN_CTS1__CTS1 IOMUX_MODE(MX31_PIN_CTS1, IOMUX_CONFIG_FUNC) 523#define MX31_PIN_CTS1__CTS1 IOMUX_MODE(MX31_PIN_CTS1, IOMUX_CONFIG_FUNC)
522#define MX31_PIN_RTS1__RTS1 IOMUX_MODE(MX31_PIN_RTS1, IOMUX_CONFIG_FUNC) 524#define MX31_PIN_RTS1__RTS1 IOMUX_MODE(MX31_PIN_RTS1, IOMUX_CONFIG_FUNC)
523#define MX31_PIN_TXD1__TXD1 IOMUX_MODE(MX31_PIN_TXD1, IOMUX_CONFIG_FUNC) 525#define MX31_PIN_TXD1__TXD1 IOMUX_MODE(MX31_PIN_TXD1, IOMUX_CONFIG_FUNC)
@@ -558,6 +560,16 @@ enum iomux_pins {
558#define MX31_PIN_SD1_DATA0__SD1_DATA0 IOMUX_MODE(MX31_PIN_SD1_DATA0, IOMUX_CONFIG_FUNC) 560#define MX31_PIN_SD1_DATA0__SD1_DATA0 IOMUX_MODE(MX31_PIN_SD1_DATA0, IOMUX_CONFIG_FUNC)
559#define MX31_PIN_SD1_CLK__SD1_CLK IOMUX_MODE(MX31_PIN_SD1_CLK, IOMUX_CONFIG_FUNC) 561#define MX31_PIN_SD1_CLK__SD1_CLK IOMUX_MODE(MX31_PIN_SD1_CLK, IOMUX_CONFIG_FUNC)
560#define MX31_PIN_SD1_CMD__SD1_CMD IOMUX_MODE(MX31_PIN_SD1_CMD, IOMUX_CONFIG_FUNC) 562#define MX31_PIN_SD1_CMD__SD1_CMD IOMUX_MODE(MX31_PIN_SD1_CMD, IOMUX_CONFIG_FUNC)
563#define MX31_PIN_ATA_CS0__GPIO3_26 IOMUX_MODE(MX31_PIN_ATA_CS0, IOMUX_CONFIG_GPIO)
564#define MX31_PIN_ATA_CS1__GPIO3_27 IOMUX_MODE(MX31_PIN_ATA_CS1, IOMUX_CONFIG_GPIO)
565#define MX31_PIN_PC_PWRON__SD2_DATA3 IOMUX_MODE(MX31_PIN_PC_PWRON, IOMUX_CONFIG_ALT1)
566#define MX31_PIN_PC_VS1__SD2_DATA2 IOMUX_MODE(MX31_PIN_PC_VS1, IOMUX_CONFIG_ALT1)
567#define MX31_PIN_PC_READY__SD2_DATA1 IOMUX_MODE(MX31_PIN_PC_READY, IOMUX_CONFIG_ALT1)
568#define MX31_PIN_PC_WAIT_B__SD2_DATA0 IOMUX_MODE(MX31_PIN_PC_WAIT_B, IOMUX_CONFIG_ALT1)
569#define MX31_PIN_PC_CD2_B__SD2_CLK IOMUX_MODE(MX31_PIN_PC_CD2_B, IOMUX_CONFIG_ALT1)
570#define MX31_PIN_PC_CD1_B__SD2_CMD IOMUX_MODE(MX31_PIN_PC_CD1_B, IOMUX_CONFIG_ALT1)
571#define MX31_PIN_ATA_DIOR__GPIO3_28 IOMUX_MODE(MX31_PIN_ATA_DIOR, IOMUX_CONFIG_GPIO)
572#define MX31_PIN_ATA_DIOW__GPIO3_29 IOMUX_MODE(MX31_PIN_ATA_DIOW, IOMUX_CONFIG_GPIO)
561#define MX31_PIN_LD0__LD0 IOMUX_MODE(MX31_PIN_LD0, IOMUX_CONFIG_FUNC) 573#define MX31_PIN_LD0__LD0 IOMUX_MODE(MX31_PIN_LD0, IOMUX_CONFIG_FUNC)
562#define MX31_PIN_LD1__LD1 IOMUX_MODE(MX31_PIN_LD1, IOMUX_CONFIG_FUNC) 574#define MX31_PIN_LD1__LD1 IOMUX_MODE(MX31_PIN_LD1, IOMUX_CONFIG_FUNC)
563#define MX31_PIN_LD2__LD2 IOMUX_MODE(MX31_PIN_LD2, IOMUX_CONFIG_FUNC) 575#define MX31_PIN_LD2__LD2 IOMUX_MODE(MX31_PIN_LD2, IOMUX_CONFIG_FUNC)
@@ -585,6 +597,42 @@ enum iomux_pins {
585#define MX31_PIN_D3_SPL__D3_SPL IOMUX_MODE(MX31_PIN_D3_SPL, IOMUX_CONFIG_FUNC) 597#define MX31_PIN_D3_SPL__D3_SPL IOMUX_MODE(MX31_PIN_D3_SPL, IOMUX_CONFIG_FUNC)
586#define MX31_PIN_D3_CLS__D3_CLS IOMUX_MODE(MX31_PIN_D3_CLS, IOMUX_CONFIG_FUNC) 598#define MX31_PIN_D3_CLS__D3_CLS IOMUX_MODE(MX31_PIN_D3_CLS, IOMUX_CONFIG_FUNC)
587#define MX31_PIN_LCS0__GPI03_23 IOMUX_MODE(MX31_PIN_LCS0, IOMUX_CONFIG_GPIO) 599#define MX31_PIN_LCS0__GPI03_23 IOMUX_MODE(MX31_PIN_LCS0, IOMUX_CONFIG_GPIO)
600#define MX31_PIN_GPIO1_1__GPIO IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO)
601#define MX31_PIN_I2C_CLK__SCL IOMUX_MODE(MX31_PIN_I2C_CLK, IOMUX_CONFIG_FUNC)
602#define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC)
603#define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2)
604#define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2)
605#define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC)
606#define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC)
607#define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC)
608#define MX31_PIN_CSI_D7__CSI_D7 IOMUX_MODE(MX31_PIN_CSI_D7, IOMUX_CONFIG_FUNC)
609#define MX31_PIN_CSI_D8__CSI_D8 IOMUX_MODE(MX31_PIN_CSI_D8, IOMUX_CONFIG_FUNC)
610#define MX31_PIN_CSI_D9__CSI_D9 IOMUX_MODE(MX31_PIN_CSI_D9, IOMUX_CONFIG_FUNC)
611#define MX31_PIN_CSI_D10__CSI_D10 IOMUX_MODE(MX31_PIN_CSI_D10, IOMUX_CONFIG_FUNC)
612#define MX31_PIN_CSI_D11__CSI_D11 IOMUX_MODE(MX31_PIN_CSI_D11, IOMUX_CONFIG_FUNC)
613#define MX31_PIN_CSI_D12__CSI_D12 IOMUX_MODE(MX31_PIN_CSI_D12, IOMUX_CONFIG_FUNC)
614#define MX31_PIN_CSI_D13__CSI_D13 IOMUX_MODE(MX31_PIN_CSI_D13, IOMUX_CONFIG_FUNC)
615#define MX31_PIN_CSI_D14__CSI_D14 IOMUX_MODE(MX31_PIN_CSI_D14, IOMUX_CONFIG_FUNC)
616#define MX31_PIN_CSI_D15__CSI_D15 IOMUX_MODE(MX31_PIN_CSI_D15, IOMUX_CONFIG_FUNC)
617#define MX31_PIN_CSI_HSYNC__CSI_HSYNC IOMUX_MODE(MX31_PIN_CSI_HSYNC, IOMUX_CONFIG_FUNC)
618#define MX31_PIN_CSI_MCLK__CSI_MCLK IOMUX_MODE(MX31_PIN_CSI_MCLK, IOMUX_CONFIG_FUNC)
619#define MX31_PIN_CSI_PIXCLK__CSI_PIXCLK IOMUX_MODE(MX31_PIN_CSI_PIXCLK, IOMUX_CONFIG_FUNC)
620#define MX31_PIN_CSI_VSYNC__CSI_VSYNC IOMUX_MODE(MX31_PIN_CSI_VSYNC, IOMUX_CONFIG_FUNC)
621#define MX31_PIN_GPIO3_0__GPIO3_0 IOMUX_MODE(MX31_PIN_GPIO3_0, IOMUX_CONFIG_GPIO)
622#define MX31_PIN_GPIO3_1__GPIO3_1 IOMUX_MODE(MX31_PIN_GPIO3_1, IOMUX_CONFIG_GPIO)
623#define MX31_PIN_TXD2__GPIO1_28 IOMUX_MODE(MX31_PIN_TXD2, IOMUX_CONFIG_GPIO)
624#define MX31_PIN_USBOTG_DATA0__USBOTG_DATA0 IOMUX_MODE(MX31_PIN_USBOTG_DATA0, IOMUX_CONFIG_FUNC)
625#define MX31_PIN_USBOTG_DATA1__USBOTG_DATA1 IOMUX_MODE(MX31_PIN_USBOTG_DATA1, IOMUX_CONFIG_FUNC)
626#define MX31_PIN_USBOTG_DATA2__USBOTG_DATA2 IOMUX_MODE(MX31_PIN_USBOTG_DATA2, IOMUX_CONFIG_FUNC)
627#define MX31_PIN_USBOTG_DATA3__USBOTG_DATA3 IOMUX_MODE(MX31_PIN_USBOTG_DATA3, IOMUX_CONFIG_FUNC)
628#define MX31_PIN_USBOTG_DATA4__USBOTG_DATA4 IOMUX_MODE(MX31_PIN_USBOTG_DATA4, IOMUX_CONFIG_FUNC)
629#define MX31_PIN_USBOTG_DATA5__USBOTG_DATA5 IOMUX_MODE(MX31_PIN_USBOTG_DATA5, IOMUX_CONFIG_FUNC)
630#define MX31_PIN_USBOTG_DATA6__USBOTG_DATA6 IOMUX_MODE(MX31_PIN_USBOTG_DATA6, IOMUX_CONFIG_FUNC)
631#define MX31_PIN_USBOTG_DATA7__USBOTG_DATA7 IOMUX_MODE(MX31_PIN_USBOTG_DATA7, IOMUX_CONFIG_FUNC)
632#define MX31_PIN_USBOTG_CLK__USBOTG_CLK IOMUX_MODE(MX31_PIN_USBOTG_CLK, IOMUX_CONFIG_FUNC)
633#define MX31_PIN_USBOTG_DIR__USBOTG_DIR IOMUX_MODE(MX31_PIN_USBOTG_DIR, IOMUX_CONFIG_FUNC)
634#define MX31_PIN_USBOTG_NXT__USBOTG_NXT IOMUX_MODE(MX31_PIN_USBOTG_NXT, IOMUX_CONFIG_FUNC)
635#define MX31_PIN_USBOTG_STP__USBOTG_STP IOMUX_MODE(MX31_PIN_USBOTG_STP, IOMUX_CONFIG_FUNC)
588 636
589/*XXX: The SS0, SS1, SS2, SS3 lines of spi3 are multiplexed by cspi2_ss0, cspi2_ss1, cspi1_ss0 637/*XXX: The SS0, SS1, SS2, SS3 lines of spi3 are multiplexed by cspi2_ss0, cspi2_ss1, cspi1_ss0
590 * cspi1_ss1*/ 638 * cspi1_ss1*/
diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h
index c02b8fc2d821..518a36504b88 100644
--- a/arch/arm/plat-mxc/include/mach/irqs.h
+++ b/arch/arm/plat-mxc/include/mach/irqs.h
@@ -45,7 +45,7 @@
45 45
46#define NR_IRQS (MXC_IPU_IRQ_START + MX3_IPU_IRQS) 46#define NR_IRQS (MXC_IPU_IRQ_START + MX3_IPU_IRQS)
47 47
48extern void imx_irq_set_priority(unsigned char irq, unsigned char prio); 48extern int imx_irq_set_priority(unsigned char irq, unsigned char prio);
49 49
50/* all normal IRQs can be FIQs */ 50/* all normal IRQs can be FIQs */
51#define FIQ_START 0 51#define FIQ_START 0
diff --git a/arch/arm/plat-mxc/include/mach/mx21.h b/arch/arm/plat-mxc/include/mach/mx21.h
index e8c4cf56c24e..8b070a041a99 100644
--- a/arch/arm/plat-mxc/include/mach/mx21.h
+++ b/arch/arm/plat-mxc/include/mach/mx21.h
@@ -54,9 +54,6 @@
54 54
55#define IRAM_BASE_ADDR 0xFFFFE800 /* internal ram */ 55#define IRAM_BASE_ADDR 0xFFFFE800 /* internal ram */
56 56
57/* this CPU supports up to 192 GPIOs (don't forget the baseboard!) */
58#define ARCH_NR_GPIOS (6*32 + 16)
59
60/* fixed interrupt numbers */ 57/* fixed interrupt numbers */
61#define MXC_INT_USBCTRL 58 58#define MXC_INT_USBCTRL 58
62#define MXC_INT_USBCTRL 58 59#define MXC_INT_USBCTRL 58
diff --git a/arch/arm/plat-mxc/irq.c b/arch/arm/plat-mxc/irq.c
index 6e7578a3514b..0fb68a531f55 100644
--- a/arch/arm/plat-mxc/irq.c
+++ b/arch/arm/plat-mxc/irq.c
@@ -50,23 +50,27 @@
50#define IIM_PROD_REV_SH 3 50#define IIM_PROD_REV_SH 3
51#define IIM_PROD_REV_LEN 5 51#define IIM_PROD_REV_LEN 5
52 52
53#ifdef CONFIG_MXC_IRQ_PRIOR 53int imx_irq_set_priority(unsigned char irq, unsigned char prio)
54void imx_irq_set_priority(unsigned char irq, unsigned char prio)
55{ 54{
55#ifdef CONFIG_MXC_IRQ_PRIOR
56 unsigned int temp; 56 unsigned int temp;
57 unsigned int mask = 0x0F << irq % 8 * 4; 57 unsigned int mask = 0x0F << irq % 8 * 4;
58 58
59 if (irq > 63) 59 if (irq >= MXC_INTERNAL_IRQS)
60 return; 60 return -EINVAL;;
61 61
62 temp = __raw_readl(AVIC_NIPRIORITY(irq / 8)); 62 temp = __raw_readl(AVIC_NIPRIORITY(irq / 8));
63 temp &= ~mask; 63 temp &= ~mask;
64 temp |= prio & mask; 64 temp |= prio & mask;
65 65
66 __raw_writel(temp, AVIC_NIPRIORITY(irq / 8)); 66 __raw_writel(temp, AVIC_NIPRIORITY(irq / 8));
67
68 return 0;
69#else
70 return -ENOSYS;
71#endif
67} 72}
68EXPORT_SYMBOL(imx_irq_set_priority); 73EXPORT_SYMBOL(imx_irq_set_priority);
69#endif
70 74
71#ifdef CONFIG_FIQ 75#ifdef CONFIG_FIQ
72int mxc_set_irq_fiq(unsigned int irq, unsigned int type) 76int mxc_set_irq_fiq(unsigned int irq, unsigned int type)
diff --git a/arch/arm/plat-mxc/time.c b/arch/arm/plat-mxc/time.c
index ef1b3cd85bd3..dab3357196fb 100644
--- a/arch/arm/plat-mxc/time.c
+++ b/arch/arm/plat-mxc/time.c
@@ -36,7 +36,7 @@ static enum clock_event_mode clockevent_mode = CLOCK_EVT_MODE_UNUSED;
36 36
37/* clock source */ 37/* clock source */
38 38
39static cycle_t mxc_get_cycles(void) 39static cycle_t mxc_get_cycles(struct clocksource *cs)
40{ 40{
41 return __raw_readl(TIMER_BASE + MXC_TCN); 41 return __raw_readl(TIMER_BASE + MXC_TCN);
42} 42}
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index d1797147732f..433021f3d7cc 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -185,7 +185,7 @@ console_initcall(omap_add_serial_console);
185 185
186#include <linux/clocksource.h> 186#include <linux/clocksource.h>
187 187
188static cycle_t omap_32k_read(void) 188static cycle_t omap_32k_read(struct clocksource *cs)
189{ 189{
190 return omap_readl(TIMER_32K_SYNCHRONIZED); 190 return omap_readl(TIMER_32K_SYNCHRONIZED);
191} 191}
@@ -207,7 +207,7 @@ unsigned long long sched_clock(void)
207{ 207{
208 unsigned long long ret; 208 unsigned long long ret;
209 209
210 ret = (unsigned long long)omap_32k_read(); 210 ret = (unsigned long long)omap_32k_read(&clocksource_32k);
211 ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift; 211 ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
212 return ret; 212 return ret;
213} 213}
diff --git a/arch/arm/plat-orion/time.c b/arch/arm/plat-orion/time.c
index 6fa2923e6dca..de8a001fc3a9 100644
--- a/arch/arm/plat-orion/time.c
+++ b/arch/arm/plat-orion/time.c
@@ -16,7 +16,7 @@
16#include <linux/interrupt.h> 16#include <linux/interrupt.h>
17#include <linux/irq.h> 17#include <linux/irq.h>
18#include <asm/mach/time.h> 18#include <asm/mach/time.h>
19#include <mach/hardware.h> 19#include <mach/bridge-regs.h>
20 20
21/* 21/*
22 * Number of timer ticks per jiffy. 22 * Number of timer ticks per jiffy.
@@ -41,7 +41,7 @@ static u32 ticks_per_jiffy;
41/* 41/*
42 * Clocksource handling. 42 * Clocksource handling.
43 */ 43 */
44static cycle_t orion_clksrc_read(void) 44static cycle_t orion_clksrc_read(struct clocksource *cs)
45{ 45{
46 return 0xffffffff - readl(TIMER0_VAL); 46 return 0xffffffff - readl(TIMER0_VAL);
47} 47}
diff --git a/arch/arm/plat-s3c/gpio-config.c b/arch/arm/plat-s3c/gpio-config.c
index 7642b975a998..08044dec9731 100644
--- a/arch/arm/plat-s3c/gpio-config.c
+++ b/arch/arm/plat-s3c/gpio-config.c
@@ -13,6 +13,7 @@
13*/ 13*/
14 14
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/module.h>
16#include <linux/gpio.h> 17#include <linux/gpio.h>
17#include <linux/io.h> 18#include <linux/io.h>
18 19
@@ -38,6 +39,7 @@ int s3c_gpio_cfgpin(unsigned int pin, unsigned int config)
38 39
39 return ret; 40 return ret;
40} 41}
42EXPORT_SYMBOL(s3c_gpio_cfgpin);
41 43
42int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull) 44int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull)
43{ 45{
@@ -56,6 +58,7 @@ int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull)
56 58
57 return ret; 59 return ret;
58} 60}
61EXPORT_SYMBOL(s3c_gpio_setpull);
59 62
60#ifdef CONFIG_S3C_GPIO_CFG_S3C24XX 63#ifdef CONFIG_S3C_GPIO_CFG_S3C24XX
61int s3c_gpio_setcfg_s3c24xx_banka(struct s3c_gpio_chip *chip, 64int s3c_gpio_setcfg_s3c24xx_banka(struct s3c_gpio_chip *chip,
diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h
index 6b1b5231511c..26f0cec3ac04 100644
--- a/arch/arm/plat-s3c/include/plat/devs.h
+++ b/arch/arm/plat-s3c/include/plat/devs.h
@@ -34,6 +34,7 @@ extern struct platform_device s3c_device_iis;
34extern struct platform_device s3c_device_rtc; 34extern struct platform_device s3c_device_rtc;
35extern struct platform_device s3c_device_adc; 35extern struct platform_device s3c_device_adc;
36extern struct platform_device s3c_device_sdi; 36extern struct platform_device s3c_device_sdi;
37extern struct platform_device s3c_device_hwmon;
37extern struct platform_device s3c_device_hsmmc0; 38extern struct platform_device s3c_device_hsmmc0;
38extern struct platform_device s3c_device_hsmmc1; 39extern struct platform_device s3c_device_hsmmc1;
39extern struct platform_device s3c_device_hsmmc2; 40extern struct platform_device s3c_device_hsmmc2;
diff --git a/arch/arm/plat-s3c24xx/adc.c b/arch/arm/plat-s3c24xx/adc.c
index 9a5c767e0a42..91adfa71c172 100644
--- a/arch/arm/plat-s3c24xx/adc.c
+++ b/arch/arm/plat-s3c24xx/adc.c
@@ -100,7 +100,7 @@ static void s3c_adc_dbgshow(struct adc_device *adc)
100 readl(adc->regs + S3C2410_ADCDLY)); 100 readl(adc->regs + S3C2410_ADCDLY));
101} 101}
102 102
103void s3c_adc_try(struct adc_device *adc) 103static void s3c_adc_try(struct adc_device *adc)
104{ 104{
105 struct s3c_adc_client *next = adc->ts_pend; 105 struct s3c_adc_client *next = adc->ts_pend;
106 106
@@ -190,6 +190,23 @@ EXPORT_SYMBOL_GPL(s3c_adc_register);
190void s3c_adc_release(struct s3c_adc_client *client) 190void s3c_adc_release(struct s3c_adc_client *client)
191{ 191{
192 /* We should really check that nothing is in progress. */ 192 /* We should really check that nothing is in progress. */
193 if (adc_dev->cur == client)
194 adc_dev->cur = NULL;
195 if (adc_dev->ts_pend == client)
196 adc_dev->ts_pend = NULL;
197 else {
198 struct list_head *p, *n;
199 struct s3c_adc_client *tmp;
200
201 list_for_each_safe(p, n, &adc_pending) {
202 tmp = list_entry(p, struct s3c_adc_client, pend);
203 if (tmp == client)
204 list_del(&tmp->pend);
205 }
206 }
207
208 if (adc_dev->cur == NULL)
209 s3c_adc_try(adc_dev);
193 kfree(client); 210 kfree(client);
194} 211}
195EXPORT_SYMBOL_GPL(s3c_adc_release); 212EXPORT_SYMBOL_GPL(s3c_adc_release);
diff --git a/arch/arm/plat-s3c24xx/gpiolib.c b/arch/arm/plat-s3c24xx/gpiolib.c
index 94a341aaa4e4..5c0491bf738b 100644
--- a/arch/arm/plat-s3c24xx/gpiolib.c
+++ b/arch/arm/plat-s3c24xx/gpiolib.c
@@ -19,7 +19,7 @@
19#include <linux/io.h> 19#include <linux/io.h>
20#include <linux/gpio.h> 20#include <linux/gpio.h>
21 21
22#include <plat/gpio-core.h> 22#include <mach/gpio-core.h>
23#include <mach/hardware.h> 23#include <mach/hardware.h>
24#include <asm/irq.h> 24#include <asm/irq.h>
25 25
diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c
index 0ff46bf873b0..f27aa3b259fa 100644
--- a/arch/avr32/kernel/time.c
+++ b/arch/avr32/kernel/time.c
@@ -18,7 +18,7 @@
18#include <mach/pm.h> 18#include <mach/pm.h>
19 19
20 20
21static cycle_t read_cycle_count(void) 21static cycle_t read_cycle_count(struct clocksource *cs)
22{ 22{
23 return (cycle_t)sysreg_read(COUNT); 23 return (cycle_t)sysreg_read(COUNT);
24} 24}
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c
index 0ed2badfd746..27646121280a 100644
--- a/arch/blackfin/kernel/time-ts.c
+++ b/arch/blackfin/kernel/time-ts.c
@@ -58,16 +58,11 @@ static inline unsigned long long cycles_2_ns(cycle_t cyc)
58 return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR; 58 return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR;
59} 59}
60 60
61static cycle_t read_cycles(void) 61static cycle_t read_cycles(struct clocksource *cs)
62{ 62{
63 return __bfin_cycles_off + (get_cycles() << __bfin_cycles_mod); 63 return __bfin_cycles_off + (get_cycles() << __bfin_cycles_mod);
64} 64}
65 65
66unsigned long long sched_clock(void)
67{
68 return cycles_2_ns(read_cycles());
69}
70
71static struct clocksource clocksource_bfin = { 66static struct clocksource clocksource_bfin = {
72 .name = "bfin_cycles", 67 .name = "bfin_cycles",
73 .rating = 350, 68 .rating = 350,
@@ -77,6 +72,11 @@ static struct clocksource clocksource_bfin = {
77 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 72 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
78}; 73};
79 74
75unsigned long long sched_clock(void)
76{
77 return cycles_2_ns(read_cycles(&clocksource_bfin));
78}
79
80static int __init bfin_clocksource_init(void) 80static int __init bfin_clocksource_init(void)
81{ 81{
82 set_cyc2ns_scale(get_cclk() / 1000); 82 set_cyc2ns_scale(get_cclk() / 1000);
diff --git a/include/asm-frv/Kbuild b/arch/frv/include/asm/Kbuild
index 0f8956def738..0f8956def738 100644
--- a/include/asm-frv/Kbuild
+++ b/arch/frv/include/asm/Kbuild
diff --git a/include/asm-frv/atomic.h b/arch/frv/include/asm/atomic.h
index 296c35cfb207..296c35cfb207 100644
--- a/include/asm-frv/atomic.h
+++ b/arch/frv/include/asm/atomic.h
diff --git a/include/asm-frv/auxvec.h b/arch/frv/include/asm/auxvec.h
index 07710778fa10..07710778fa10 100644
--- a/include/asm-frv/auxvec.h
+++ b/arch/frv/include/asm/auxvec.h
diff --git a/include/asm-frv/ax88796.h b/arch/frv/include/asm/ax88796.h
index 637e980393c5..637e980393c5 100644
--- a/include/asm-frv/ax88796.h
+++ b/arch/frv/include/asm/ax88796.h
diff --git a/include/asm-frv/bitops.h b/arch/frv/include/asm/bitops.h
index 287f6f697ce2..287f6f697ce2 100644
--- a/include/asm-frv/bitops.h
+++ b/arch/frv/include/asm/bitops.h
diff --git a/include/asm-frv/bug.h b/arch/frv/include/asm/bug.h
index 6b1b44d71028..6b1b44d71028 100644
--- a/include/asm-frv/bug.h
+++ b/arch/frv/include/asm/bug.h
diff --git a/include/asm-frv/bugs.h b/arch/frv/include/asm/bugs.h
index f2382be2b46c..f2382be2b46c 100644
--- a/include/asm-frv/bugs.h
+++ b/arch/frv/include/asm/bugs.h
diff --git a/include/asm-frv/busctl-regs.h b/arch/frv/include/asm/busctl-regs.h
index bb0ff4816e27..bb0ff4816e27 100644
--- a/include/asm-frv/busctl-regs.h
+++ b/arch/frv/include/asm/busctl-regs.h
diff --git a/include/asm-frv/byteorder.h b/arch/frv/include/asm/byteorder.h
index f29b7593e088..f29b7593e088 100644
--- a/include/asm-frv/byteorder.h
+++ b/arch/frv/include/asm/byteorder.h
diff --git a/include/asm-frv/cache.h b/arch/frv/include/asm/cache.h
index 2797163b8f4f..2797163b8f4f 100644
--- a/include/asm-frv/cache.h
+++ b/arch/frv/include/asm/cache.h
diff --git a/include/asm-frv/cacheflush.h b/arch/frv/include/asm/cacheflush.h
index 432a69e7f3d4..432a69e7f3d4 100644
--- a/include/asm-frv/cacheflush.h
+++ b/arch/frv/include/asm/cacheflush.h
diff --git a/include/asm-frv/checksum.h b/arch/frv/include/asm/checksum.h
index 269da09ff637..269da09ff637 100644
--- a/include/asm-frv/checksum.h
+++ b/arch/frv/include/asm/checksum.h
diff --git a/include/asm-frv/cpu-irqs.h b/arch/frv/include/asm/cpu-irqs.h
index 478f3498fcfe..478f3498fcfe 100644
--- a/include/asm-frv/cpu-irqs.h
+++ b/arch/frv/include/asm/cpu-irqs.h
diff --git a/include/asm-frv/cpumask.h b/arch/frv/include/asm/cpumask.h
index d999c20c84d2..d999c20c84d2 100644
--- a/include/asm-frv/cpumask.h
+++ b/arch/frv/include/asm/cpumask.h
diff --git a/include/asm-frv/cputime.h b/arch/frv/include/asm/cputime.h
index f6c373ad2b80..f6c373ad2b80 100644
--- a/include/asm-frv/cputime.h
+++ b/arch/frv/include/asm/cputime.h
diff --git a/include/asm-frv/current.h b/arch/frv/include/asm/current.h
index 86b027491b08..86b027491b08 100644
--- a/include/asm-frv/current.h
+++ b/arch/frv/include/asm/current.h
diff --git a/include/asm-frv/delay.h b/arch/frv/include/asm/delay.h
index 597b4ebf03b4..597b4ebf03b4 100644
--- a/include/asm-frv/delay.h
+++ b/arch/frv/include/asm/delay.h
diff --git a/include/asm-frv/device.h b/arch/frv/include/asm/device.h
index d8f9872b0e2d..d8f9872b0e2d 100644
--- a/include/asm-frv/device.h
+++ b/arch/frv/include/asm/device.h
diff --git a/include/asm-frv/div64.h b/arch/frv/include/asm/div64.h
index 6cd978cefb28..6cd978cefb28 100644
--- a/include/asm-frv/div64.h
+++ b/arch/frv/include/asm/div64.h
diff --git a/include/asm-frv/dm9000.h b/arch/frv/include/asm/dm9000.h
index f6f48fd9ec6e..f6f48fd9ec6e 100644
--- a/include/asm-frv/dm9000.h
+++ b/arch/frv/include/asm/dm9000.h
diff --git a/include/asm-frv/dma-mapping.h b/arch/frv/include/asm/dma-mapping.h
index b2898877c07b..b2898877c07b 100644
--- a/include/asm-frv/dma-mapping.h
+++ b/arch/frv/include/asm/dma-mapping.h
diff --git a/include/asm-frv/dma.h b/arch/frv/include/asm/dma.h
index 683c47d48a5b..683c47d48a5b 100644
--- a/include/asm-frv/dma.h
+++ b/arch/frv/include/asm/dma.h
diff --git a/include/asm-frv/elf.h b/arch/frv/include/asm/elf.h
index 7279ec07d62e..7279ec07d62e 100644
--- a/include/asm-frv/elf.h
+++ b/arch/frv/include/asm/elf.h
diff --git a/include/asm-frv/emergency-restart.h b/arch/frv/include/asm/emergency-restart.h
index 108d8c48e42e..108d8c48e42e 100644
--- a/include/asm-frv/emergency-restart.h
+++ b/arch/frv/include/asm/emergency-restart.h
diff --git a/include/asm-frv/errno.h b/arch/frv/include/asm/errno.h
index d010795ceefe..d010795ceefe 100644
--- a/include/asm-frv/errno.h
+++ b/arch/frv/include/asm/errno.h
diff --git a/include/asm-frv/fb.h b/arch/frv/include/asm/fb.h
index c7df38030992..c7df38030992 100644
--- a/include/asm-frv/fb.h
+++ b/arch/frv/include/asm/fb.h
diff --git a/include/asm-frv/fcntl.h b/arch/frv/include/asm/fcntl.h
index 46ab12db5739..46ab12db5739 100644
--- a/include/asm-frv/fcntl.h
+++ b/arch/frv/include/asm/fcntl.h
diff --git a/include/asm-frv/fpu.h b/arch/frv/include/asm/fpu.h
index d73c60b56641..d73c60b56641 100644
--- a/include/asm-frv/fpu.h
+++ b/arch/frv/include/asm/fpu.h
diff --git a/include/asm-frv/ftrace.h b/arch/frv/include/asm/ftrace.h
index 40a8c178f10d..40a8c178f10d 100644
--- a/include/asm-frv/ftrace.h
+++ b/arch/frv/include/asm/ftrace.h
diff --git a/include/asm-frv/futex.h b/arch/frv/include/asm/futex.h
index 08b3d1da3583..08b3d1da3583 100644
--- a/include/asm-frv/futex.h
+++ b/arch/frv/include/asm/futex.h
diff --git a/include/asm-frv/gdb-stub.h b/arch/frv/include/asm/gdb-stub.h
index 24f9738670bd..24f9738670bd 100644
--- a/include/asm-frv/gdb-stub.h
+++ b/arch/frv/include/asm/gdb-stub.h
diff --git a/include/asm-frv/gpio-regs.h b/arch/frv/include/asm/gpio-regs.h
index 9edf5d5d4d3f..9edf5d5d4d3f 100644
--- a/include/asm-frv/gpio-regs.h
+++ b/arch/frv/include/asm/gpio-regs.h
diff --git a/include/asm-frv/hardirq.h b/arch/frv/include/asm/hardirq.h
index fc47515822a2..fc47515822a2 100644
--- a/include/asm-frv/hardirq.h
+++ b/arch/frv/include/asm/hardirq.h
diff --git a/include/asm-frv/highmem.h b/arch/frv/include/asm/highmem.h
index 68e4677fb9e7..68e4677fb9e7 100644
--- a/include/asm-frv/highmem.h
+++ b/arch/frv/include/asm/highmem.h
diff --git a/include/asm-frv/hw_irq.h b/arch/frv/include/asm/hw_irq.h
index 522ad37923d8..522ad37923d8 100644
--- a/include/asm-frv/hw_irq.h
+++ b/arch/frv/include/asm/hw_irq.h
diff --git a/include/asm-frv/init.h b/arch/frv/include/asm/init.h
index 8b15838de216..8b15838de216 100644
--- a/include/asm-frv/init.h
+++ b/arch/frv/include/asm/init.h
diff --git a/include/asm-frv/io.h b/arch/frv/include/asm/io.h
index ca7475e73b5e..ca7475e73b5e 100644
--- a/include/asm-frv/io.h
+++ b/arch/frv/include/asm/io.h
diff --git a/include/asm-frv/ioctl.h b/arch/frv/include/asm/ioctl.h
index b279fe06dfe5..b279fe06dfe5 100644
--- a/include/asm-frv/ioctl.h
+++ b/arch/frv/include/asm/ioctl.h
diff --git a/include/asm-frv/ioctls.h b/arch/frv/include/asm/ioctls.h
index d0c30e31fbda..d0c30e31fbda 100644
--- a/include/asm-frv/ioctls.h
+++ b/arch/frv/include/asm/ioctls.h
diff --git a/include/asm-frv/ipcbuf.h b/arch/frv/include/asm/ipcbuf.h
index b546f67e455f..b546f67e455f 100644
--- a/include/asm-frv/ipcbuf.h
+++ b/arch/frv/include/asm/ipcbuf.h
diff --git a/include/asm-frv/irc-regs.h b/arch/frv/include/asm/irc-regs.h
index afa30aeacc82..afa30aeacc82 100644
--- a/include/asm-frv/irc-regs.h
+++ b/arch/frv/include/asm/irc-regs.h
diff --git a/include/asm-frv/irq.h b/arch/frv/include/asm/irq.h
index 3a66ebd754bd..3a66ebd754bd 100644
--- a/include/asm-frv/irq.h
+++ b/arch/frv/include/asm/irq.h
diff --git a/include/asm-frv/irq_regs.h b/arch/frv/include/asm/irq_regs.h
index d22e83289ad1..d22e83289ad1 100644
--- a/include/asm-frv/irq_regs.h
+++ b/arch/frv/include/asm/irq_regs.h
diff --git a/include/asm-frv/kdebug.h b/arch/frv/include/asm/kdebug.h
index 6ece1b037665..6ece1b037665 100644
--- a/include/asm-frv/kdebug.h
+++ b/arch/frv/include/asm/kdebug.h
diff --git a/include/asm-frv/kmap_types.h b/arch/frv/include/asm/kmap_types.h
index f8e16b2a5804..f8e16b2a5804 100644
--- a/include/asm-frv/kmap_types.h
+++ b/arch/frv/include/asm/kmap_types.h
diff --git a/include/asm-frv/linkage.h b/arch/frv/include/asm/linkage.h
index 636c1bced7d4..636c1bced7d4 100644
--- a/include/asm-frv/linkage.h
+++ b/arch/frv/include/asm/linkage.h
diff --git a/include/asm-frv/local.h b/arch/frv/include/asm/local.h
index c27bdf04630e..c27bdf04630e 100644
--- a/include/asm-frv/local.h
+++ b/arch/frv/include/asm/local.h
diff --git a/include/asm-frv/math-emu.h b/arch/frv/include/asm/math-emu.h
index 0c8f731b2180..0c8f731b2180 100644
--- a/include/asm-frv/math-emu.h
+++ b/arch/frv/include/asm/math-emu.h
diff --git a/include/asm-frv/mb-regs.h b/arch/frv/include/asm/mb-regs.h
index 219e5f926f18..219e5f926f18 100644
--- a/include/asm-frv/mb-regs.h
+++ b/arch/frv/include/asm/mb-regs.h
diff --git a/include/asm-frv/mb86943a.h b/arch/frv/include/asm/mb86943a.h
index e87ef924bfb4..e87ef924bfb4 100644
--- a/include/asm-frv/mb86943a.h
+++ b/arch/frv/include/asm/mb86943a.h
diff --git a/include/asm-frv/mb93091-fpga-irqs.h b/arch/frv/include/asm/mb93091-fpga-irqs.h
index 19778c5ba9d6..19778c5ba9d6 100644
--- a/include/asm-frv/mb93091-fpga-irqs.h
+++ b/arch/frv/include/asm/mb93091-fpga-irqs.h
diff --git a/include/asm-frv/mb93093-fpga-irqs.h b/arch/frv/include/asm/mb93093-fpga-irqs.h
index 590266b1a6d3..590266b1a6d3 100644
--- a/include/asm-frv/mb93093-fpga-irqs.h
+++ b/arch/frv/include/asm/mb93093-fpga-irqs.h
diff --git a/include/asm-frv/mb93493-irqs.h b/arch/frv/include/asm/mb93493-irqs.h
index 82c7aeddd333..82c7aeddd333 100644
--- a/include/asm-frv/mb93493-irqs.h
+++ b/arch/frv/include/asm/mb93493-irqs.h
diff --git a/include/asm-frv/mb93493-regs.h b/arch/frv/include/asm/mb93493-regs.h
index 8a1f6aac8cf1..8a1f6aac8cf1 100644
--- a/include/asm-frv/mb93493-regs.h
+++ b/arch/frv/include/asm/mb93493-regs.h
diff --git a/include/asm-frv/mc146818rtc.h b/arch/frv/include/asm/mc146818rtc.h
index 90dfb7a633d1..90dfb7a633d1 100644
--- a/include/asm-frv/mc146818rtc.h
+++ b/arch/frv/include/asm/mc146818rtc.h
diff --git a/include/asm-frv/mem-layout.h b/arch/frv/include/asm/mem-layout.h
index 2947764fc0e0..2947764fc0e0 100644
--- a/include/asm-frv/mem-layout.h
+++ b/arch/frv/include/asm/mem-layout.h
diff --git a/include/asm-frv/mman.h b/arch/frv/include/asm/mman.h
index b4371e928683..b4371e928683 100644
--- a/include/asm-frv/mman.h
+++ b/arch/frv/include/asm/mman.h
diff --git a/include/asm-frv/mmu.h b/arch/frv/include/asm/mmu.h
index 86ca0e86e7d2..86ca0e86e7d2 100644
--- a/include/asm-frv/mmu.h
+++ b/arch/frv/include/asm/mmu.h
diff --git a/include/asm-frv/mmu_context.h b/arch/frv/include/asm/mmu_context.h
index c7daa395156a..c7daa395156a 100644
--- a/include/asm-frv/mmu_context.h
+++ b/arch/frv/include/asm/mmu_context.h
diff --git a/include/asm-frv/module.h b/arch/frv/include/asm/module.h
index 3d5c6360289a..3d5c6360289a 100644
--- a/include/asm-frv/module.h
+++ b/arch/frv/include/asm/module.h
diff --git a/include/asm-frv/msgbuf.h b/arch/frv/include/asm/msgbuf.h
index 97ceb55a06fb..97ceb55a06fb 100644
--- a/include/asm-frv/msgbuf.h
+++ b/arch/frv/include/asm/msgbuf.h
diff --git a/include/asm-frv/mutex.h b/arch/frv/include/asm/mutex.h
index 458c1f7fbc18..458c1f7fbc18 100644
--- a/include/asm-frv/mutex.h
+++ b/arch/frv/include/asm/mutex.h
diff --git a/include/asm-frv/page.h b/arch/frv/include/asm/page.h
index bd9c220094c7..bd9c220094c7 100644
--- a/include/asm-frv/page.h
+++ b/arch/frv/include/asm/page.h
diff --git a/include/asm-frv/param.h b/arch/frv/include/asm/param.h
index 6859dd503ed3..6859dd503ed3 100644
--- a/include/asm-frv/param.h
+++ b/arch/frv/include/asm/param.h
diff --git a/include/asm-frv/pci.h b/arch/frv/include/asm/pci.h
index 585d9b49949a..585d9b49949a 100644
--- a/include/asm-frv/pci.h
+++ b/arch/frv/include/asm/pci.h
diff --git a/include/asm-frv/percpu.h b/arch/frv/include/asm/percpu.h
index 2cad3f874ded..2cad3f874ded 100644
--- a/include/asm-frv/percpu.h
+++ b/arch/frv/include/asm/percpu.h
diff --git a/include/asm-frv/pgalloc.h b/arch/frv/include/asm/pgalloc.h
index 971e6addb009..971e6addb009 100644
--- a/include/asm-frv/pgalloc.h
+++ b/arch/frv/include/asm/pgalloc.h
diff --git a/include/asm-frv/pgtable.h b/arch/frv/include/asm/pgtable.h
index e16fdb1f4f4f..33233011b1c1 100644
--- a/include/asm-frv/pgtable.h
+++ b/arch/frv/include/asm/pgtable.h
@@ -71,10 +71,8 @@ static inline int pte_file(pte_t pte) { return 0; }
71#define swapper_pg_dir ((pgd_t *) NULL) 71#define swapper_pg_dir ((pgd_t *) NULL)
72 72
73#define pgtable_cache_init() do {} while (0) 73#define pgtable_cache_init() do {} while (0)
74#define arch_enter_lazy_mmu_mode() do {} while (0) 74
75#define arch_leave_lazy_mmu_mode() do {} while (0) 75#include <asm-generic/pgtable.h>
76#define arch_enter_lazy_cpu_mode() do {} while (0)
77#define arch_leave_lazy_cpu_mode() do {} while (0)
78 76
79#else /* !CONFIG_MMU */ 77#else /* !CONFIG_MMU */
80/*****************************************************************************/ 78/*****************************************************************************/
diff --git a/include/asm-frv/poll.h b/arch/frv/include/asm/poll.h
index 0d01479ccc56..0d01479ccc56 100644
--- a/include/asm-frv/poll.h
+++ b/arch/frv/include/asm/poll.h
diff --git a/include/asm-frv/posix_types.h b/arch/frv/include/asm/posix_types.h
index a9f1f5be0632..a9f1f5be0632 100644
--- a/include/asm-frv/posix_types.h
+++ b/arch/frv/include/asm/posix_types.h
diff --git a/include/asm-frv/processor.h b/arch/frv/include/asm/processor.h
index 3744f2e47f48..3744f2e47f48 100644
--- a/include/asm-frv/processor.h
+++ b/arch/frv/include/asm/processor.h
diff --git a/include/asm-frv/ptrace.h b/arch/frv/include/asm/ptrace.h
index cf6934012b64..cf6934012b64 100644
--- a/include/asm-frv/ptrace.h
+++ b/arch/frv/include/asm/ptrace.h
diff --git a/include/asm-frv/registers.h b/arch/frv/include/asm/registers.h
index 9666119fcf6e..9666119fcf6e 100644
--- a/include/asm-frv/registers.h
+++ b/arch/frv/include/asm/registers.h
diff --git a/include/asm-frv/resource.h b/arch/frv/include/asm/resource.h
index 5fc60548fd02..5fc60548fd02 100644
--- a/include/asm-frv/resource.h
+++ b/arch/frv/include/asm/resource.h
diff --git a/include/asm-frv/scatterlist.h b/arch/frv/include/asm/scatterlist.h
index 4bca8a28546c..4bca8a28546c 100644
--- a/include/asm-frv/scatterlist.h
+++ b/arch/frv/include/asm/scatterlist.h
diff --git a/include/asm-frv/sections.h b/arch/frv/include/asm/sections.h
index 17d0fb171bba..17d0fb171bba 100644
--- a/include/asm-frv/sections.h
+++ b/arch/frv/include/asm/sections.h
diff --git a/include/asm-frv/segment.h b/arch/frv/include/asm/segment.h
index e3616a6f941d..e3616a6f941d 100644
--- a/include/asm-frv/segment.h
+++ b/arch/frv/include/asm/segment.h
diff --git a/include/asm-frv/sembuf.h b/arch/frv/include/asm/sembuf.h
index 164b12786d6d..164b12786d6d 100644
--- a/include/asm-frv/sembuf.h
+++ b/arch/frv/include/asm/sembuf.h
diff --git a/include/asm-frv/serial-regs.h b/arch/frv/include/asm/serial-regs.h
index e1286bda00eb..e1286bda00eb 100644
--- a/include/asm-frv/serial-regs.h
+++ b/arch/frv/include/asm/serial-regs.h
diff --git a/include/asm-frv/serial.h b/arch/frv/include/asm/serial.h
index dbb825998689..dbb825998689 100644
--- a/include/asm-frv/serial.h
+++ b/arch/frv/include/asm/serial.h
diff --git a/include/asm-frv/setup.h b/arch/frv/include/asm/setup.h
index afd787ceede6..afd787ceede6 100644
--- a/include/asm-frv/setup.h
+++ b/arch/frv/include/asm/setup.h
diff --git a/include/asm-frv/shmbuf.h b/arch/frv/include/asm/shmbuf.h
index 4c6e711a4779..4c6e711a4779 100644
--- a/include/asm-frv/shmbuf.h
+++ b/arch/frv/include/asm/shmbuf.h
diff --git a/include/asm-frv/shmparam.h b/arch/frv/include/asm/shmparam.h
index ab711009cfaa..ab711009cfaa 100644
--- a/include/asm-frv/shmparam.h
+++ b/arch/frv/include/asm/shmparam.h
diff --git a/include/asm-frv/sigcontext.h b/arch/frv/include/asm/sigcontext.h
index 3b263f3cc96f..3b263f3cc96f 100644
--- a/include/asm-frv/sigcontext.h
+++ b/arch/frv/include/asm/sigcontext.h
diff --git a/include/asm-frv/siginfo.h b/arch/frv/include/asm/siginfo.h
index d3fd1ca45653..d3fd1ca45653 100644
--- a/include/asm-frv/siginfo.h
+++ b/arch/frv/include/asm/siginfo.h
diff --git a/include/asm-frv/signal.h b/arch/frv/include/asm/signal.h
index 2079197d483d..2079197d483d 100644
--- a/include/asm-frv/signal.h
+++ b/arch/frv/include/asm/signal.h
diff --git a/include/asm-frv/smp.h b/arch/frv/include/asm/smp.h
index 38349ec8b61b..38349ec8b61b 100644
--- a/include/asm-frv/smp.h
+++ b/arch/frv/include/asm/smp.h
diff --git a/include/asm-frv/socket.h b/arch/frv/include/asm/socket.h
index 57c3d4054e8b..57c3d4054e8b 100644
--- a/include/asm-frv/socket.h
+++ b/arch/frv/include/asm/socket.h
diff --git a/include/asm-frv/sockios.h b/arch/frv/include/asm/sockios.h
index 5dbdd13e6de3..5dbdd13e6de3 100644
--- a/include/asm-frv/sockios.h
+++ b/arch/frv/include/asm/sockios.h
diff --git a/include/asm-frv/spinlock.h b/arch/frv/include/asm/spinlock.h
index fe385f45d1fd..fe385f45d1fd 100644
--- a/include/asm-frv/spinlock.h
+++ b/arch/frv/include/asm/spinlock.h
diff --git a/include/asm-frv/spr-regs.h b/arch/frv/include/asm/spr-regs.h
index 01e6af5e99b8..01e6af5e99b8 100644
--- a/include/asm-frv/spr-regs.h
+++ b/arch/frv/include/asm/spr-regs.h
diff --git a/include/asm-frv/stat.h b/arch/frv/include/asm/stat.h
index ce56de9b37ba..ce56de9b37ba 100644
--- a/include/asm-frv/stat.h
+++ b/arch/frv/include/asm/stat.h
diff --git a/include/asm-frv/statfs.h b/arch/frv/include/asm/statfs.h
index 741f586045ba..741f586045ba 100644
--- a/include/asm-frv/statfs.h
+++ b/arch/frv/include/asm/statfs.h
diff --git a/include/asm-frv/string.h b/arch/frv/include/asm/string.h
index 5ed310f64b7e..5ed310f64b7e 100644
--- a/include/asm-frv/string.h
+++ b/arch/frv/include/asm/string.h
diff --git a/include/asm-frv/suspend.h b/arch/frv/include/asm/suspend.h
index 5fa7b5a6ee40..5fa7b5a6ee40 100644
--- a/include/asm-frv/suspend.h
+++ b/arch/frv/include/asm/suspend.h
diff --git a/include/asm-frv/swab.h b/arch/frv/include/asm/swab.h
index f305834b4799..f305834b4799 100644
--- a/include/asm-frv/swab.h
+++ b/arch/frv/include/asm/swab.h
diff --git a/include/asm-frv/system.h b/arch/frv/include/asm/system.h
index 7742ec000cc4..7742ec000cc4 100644
--- a/include/asm-frv/system.h
+++ b/arch/frv/include/asm/system.h
diff --git a/include/asm-frv/termbits.h b/arch/frv/include/asm/termbits.h
index 5568492b5086..5568492b5086 100644
--- a/include/asm-frv/termbits.h
+++ b/arch/frv/include/asm/termbits.h
diff --git a/include/asm-frv/termios.h b/arch/frv/include/asm/termios.h
index a62fb5872375..a62fb5872375 100644
--- a/include/asm-frv/termios.h
+++ b/arch/frv/include/asm/termios.h
diff --git a/include/asm-frv/thread_info.h b/arch/frv/include/asm/thread_info.h
index b7ac6bf2844c..bb53ab753ffb 100644
--- a/include/asm-frv/thread_info.h
+++ b/arch/frv/include/asm/thread_info.h
@@ -38,9 +38,9 @@ struct thread_info {
38 int preempt_count; /* 0 => preemptable, <0 => BUG */ 38 int preempt_count; /* 0 => preemptable, <0 => BUG */
39 39
40 mm_segment_t addr_limit; /* thread address space: 40 mm_segment_t addr_limit; /* thread address space:
41 0-0xBFFFFFFF for user-thead 41 * 0-0xBFFFFFFF for user-thead
42 0-0xFFFFFFFF for kernel-thread 42 * 0-0xFFFFFFFF for kernel-thread
43 */ 43 */
44 struct restart_block restart_block; 44 struct restart_block restart_block;
45 45
46 __u8 supervisor_stack[0]; 46 __u8 supervisor_stack[0];
diff --git a/include/asm-frv/timer-regs.h b/arch/frv/include/asm/timer-regs.h
index 6c5a871ce5e9..6c5a871ce5e9 100644
--- a/include/asm-frv/timer-regs.h
+++ b/arch/frv/include/asm/timer-regs.h
diff --git a/include/asm-frv/timex.h b/arch/frv/include/asm/timex.h
index a89bddefdacf..a89bddefdacf 100644
--- a/include/asm-frv/timex.h
+++ b/arch/frv/include/asm/timex.h
diff --git a/include/asm-frv/tlb.h b/arch/frv/include/asm/tlb.h
index cd458eb6d75e..cd458eb6d75e 100644
--- a/include/asm-frv/tlb.h
+++ b/arch/frv/include/asm/tlb.h
diff --git a/include/asm-frv/tlbflush.h b/arch/frv/include/asm/tlbflush.h
index 7ac5eafc5d98..7ac5eafc5d98 100644
--- a/include/asm-frv/tlbflush.h
+++ b/arch/frv/include/asm/tlbflush.h
diff --git a/include/asm-frv/topology.h b/arch/frv/include/asm/topology.h
index 942724352705..942724352705 100644
--- a/include/asm-frv/topology.h
+++ b/arch/frv/include/asm/topology.h
diff --git a/include/asm-frv/types.h b/arch/frv/include/asm/types.h
index 613bf1e962f0..613bf1e962f0 100644
--- a/include/asm-frv/types.h
+++ b/arch/frv/include/asm/types.h
diff --git a/include/asm-frv/uaccess.h b/arch/frv/include/asm/uaccess.h
index 53650c958f41..53650c958f41 100644
--- a/include/asm-frv/uaccess.h
+++ b/arch/frv/include/asm/uaccess.h
diff --git a/include/asm-frv/ucontext.h b/arch/frv/include/asm/ucontext.h
index 8d8c0c948007..8d8c0c948007 100644
--- a/include/asm-frv/ucontext.h
+++ b/arch/frv/include/asm/ucontext.h
diff --git a/include/asm-frv/unaligned.h b/arch/frv/include/asm/unaligned.h
index 6c61c05b2e0c..6c61c05b2e0c 100644
--- a/include/asm-frv/unaligned.h
+++ b/arch/frv/include/asm/unaligned.h
diff --git a/include/asm-frv/unistd.h b/arch/frv/include/asm/unistd.h
index edcfaf5f0414..edcfaf5f0414 100644
--- a/include/asm-frv/unistd.h
+++ b/arch/frv/include/asm/unistd.h
diff --git a/include/asm-frv/user.h b/arch/frv/include/asm/user.h
index 82fa8fab64ae..82fa8fab64ae 100644
--- a/include/asm-frv/user.h
+++ b/arch/frv/include/asm/user.h
diff --git a/include/asm-frv/vga.h b/arch/frv/include/asm/vga.h
index a702c800a229..a702c800a229 100644
--- a/include/asm-frv/vga.h
+++ b/arch/frv/include/asm/vga.h
diff --git a/include/asm-frv/virtconvert.h b/arch/frv/include/asm/virtconvert.h
index 59788fa2a813..59788fa2a813 100644
--- a/include/asm-frv/virtconvert.h
+++ b/arch/frv/include/asm/virtconvert.h
diff --git a/include/asm-frv/xor.h b/arch/frv/include/asm/xor.h
index c82eb12a5b18..c82eb12a5b18 100644
--- a/include/asm-frv/xor.h
+++ b/arch/frv/include/asm/xor.h
diff --git a/arch/frv/kernel/head.S b/arch/frv/kernel/head.S
index fecf751c5cae..b825ef3f2d54 100644
--- a/arch/frv/kernel/head.S
+++ b/arch/frv/kernel/head.S
@@ -9,6 +9,7 @@
9 * 2 of the License, or (at your option) any later version. 9 * 2 of the License, or (at your option) any later version.
10 */ 10 */
11 11
12#include <linux/init.h>
12#include <linux/threads.h> 13#include <linux/threads.h>
13#include <linux/linkage.h> 14#include <linux/linkage.h>
14#include <asm/thread_info.h> 15#include <asm/thread_info.h>
@@ -27,7 +28,7 @@
27# command line string 28# command line string
28# 29#
29############################################################################### 30###############################################################################
30 .section .text.head,"ax" 31 __HEAD
31 .balign 4 32 .balign 4
32 33
33 .globl _boot, __head_reference 34 .globl _boot, __head_reference
diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c
index 0669e1382383..55e4fab7c0bc 100644
--- a/arch/frv/kernel/setup.c
+++ b/arch/frv/kernel/setup.c
@@ -46,7 +46,6 @@
46#include <asm/io.h> 46#include <asm/io.h>
47 47
48#ifdef CONFIG_BLK_DEV_INITRD 48#ifdef CONFIG_BLK_DEV_INITRD
49#include <linux/blk.h>
50#include <asm/pgtable.h> 49#include <asm/pgtable.h>
51#endif 50#endif
52 51
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S
index b95c4eace62f..22d9787406ed 100644
--- a/arch/frv/kernel/vmlinux.lds.S
+++ b/arch/frv/kernel/vmlinux.lds.S
@@ -26,7 +26,7 @@ SECTIONS
26 26
27 _sinittext = .; 27 _sinittext = .;
28 .init.text : { 28 .init.text : {
29 *(.text.head) 29 HEAD_TEXT
30#ifndef CONFIG_DEBUG_INFO 30#ifndef CONFIG_DEBUG_INFO
31 INIT_TEXT 31 INIT_TEXT
32 EXIT_TEXT 32 EXIT_TEXT
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c
index 0f41c3a72da5..c0dcec65c6b7 100644
--- a/arch/frv/mb93090-mb00/pci-vdk.c
+++ b/arch/frv/mb93090-mb00/pci-vdk.c
@@ -31,6 +31,29 @@ struct pci_bus *__nongpreldata pci_root_bus;
31struct pci_ops *__nongpreldata pci_root_ops; 31struct pci_ops *__nongpreldata pci_root_ops;
32 32
33/* 33/*
34 * The accessible PCI window does not cover the entire CPU address space, but
35 * there are devices we want to access outside of that window, so we need to
36 * insert specific PCI bus resources instead of using the platform-level bus
37 * resources directly for the PCI root bus.
38 *
39 * These are configured and inserted by pcibios_init() and are attached to the
40 * root bus by pcibios_fixup_bus().
41 */
42static struct resource pci_ioport_resource = {
43 .name = "PCI IO",
44 .start = 0,
45 .end = IO_SPACE_LIMIT,
46 .flags = IORESOURCE_IO,
47};
48
49static struct resource pci_iomem_resource = {
50 .name = "PCI mem",
51 .start = 0,
52 .end = -1,
53 .flags = IORESOURCE_MEM,
54};
55
56/*
34 * Functions for accessing PCI configuration space 57 * Functions for accessing PCI configuration space
35 */ 58 */
36 59
@@ -304,6 +327,12 @@ void __init pcibios_fixup_bus(struct pci_bus *bus)
304#if 0 327#if 0
305 printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number); 328 printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number);
306#endif 329#endif
330
331 if (bus->number == 0) {
332 bus->resource[0] = &pci_ioport_resource;
333 bus->resource[1] = &pci_iomem_resource;
334 }
335
307 pci_read_bridge_bases(bus); 336 pci_read_bridge_bases(bus);
308 337
309 if (bus->number == 0) { 338 if (bus->number == 0) {
@@ -350,28 +379,36 @@ int __init pcibios_init(void)
350 /* enable PCI arbitration */ 379 /* enable PCI arbitration */
351 __reg_MB86943_pci_arbiter = MB86943_PCIARB_EN; 380 __reg_MB86943_pci_arbiter = MB86943_PCIARB_EN;
352 381
353 ioport_resource.start = (__reg_MB86943_sl_pci_io_base << 9) & 0xfffffc00; 382 pci_ioport_resource.start = (__reg_MB86943_sl_pci_io_base << 9) & 0xfffffc00;
354 ioport_resource.end = (__reg_MB86943_sl_pci_io_range << 9) | 0x3ff; 383 pci_ioport_resource.end = (__reg_MB86943_sl_pci_io_range << 9) | 0x3ff;
355 ioport_resource.end += ioport_resource.start; 384 pci_ioport_resource.end += pci_ioport_resource.start;
356 385
357 printk("PCI IO window: %08llx-%08llx\n", 386 printk("PCI IO window: %08llx-%08llx\n",
358 (unsigned long long) ioport_resource.start, 387 (unsigned long long) pci_ioport_resource.start,
359 (unsigned long long) ioport_resource.end); 388 (unsigned long long) pci_ioport_resource.end);
360 389
361 iomem_resource.start = (__reg_MB86943_sl_pci_mem_base << 9) & 0xfffffc00; 390 pci_iomem_resource.start = (__reg_MB86943_sl_pci_mem_base << 9) & 0xfffffc00;
391 pci_iomem_resource.end = (__reg_MB86943_sl_pci_mem_range << 9) | 0x3ff;
392 pci_iomem_resource.end += pci_iomem_resource.start;
362 393
363 /* Reserve somewhere to write to flush posted writes. */ 394 /* Reserve somewhere to write to flush posted writes. This is used by
364 iomem_resource.start += 0x400; 395 * __flush_PCI_writes() from asm/io.h to force the write FIFO in the
365 396 * CPU-PCI bridge to flush as this doesn't happen automatically when a
366 iomem_resource.end = (__reg_MB86943_sl_pci_mem_range << 9) | 0x3ff; 397 * read is performed on the MB93090 development kit motherboard.
367 iomem_resource.end += iomem_resource.start; 398 */
399 pci_iomem_resource.start += 0x400;
368 400
369 printk("PCI MEM window: %08llx-%08llx\n", 401 printk("PCI MEM window: %08llx-%08llx\n",
370 (unsigned long long) iomem_resource.start, 402 (unsigned long long) pci_iomem_resource.start,
371 (unsigned long long) iomem_resource.end); 403 (unsigned long long) pci_iomem_resource.end);
372 printk("PCI DMA memory: %08lx-%08lx\n", 404 printk("PCI DMA memory: %08lx-%08lx\n",
373 dma_coherent_mem_start, dma_coherent_mem_end); 405 dma_coherent_mem_start, dma_coherent_mem_end);
374 406
407 if (insert_resource(&iomem_resource, &pci_iomem_resource) < 0)
408 panic("Unable to insert PCI IOMEM resource\n");
409 if (insert_resource(&ioport_resource, &pci_ioport_resource) < 0)
410 panic("Unable to insert PCI IOPORT resource\n");
411
375 if (!pci_probe) 412 if (!pci_probe)
376 return -ENXIO; 413 return -ENXIO;
377 414
diff --git a/include/asm-h8300/timer.h b/arch/h8300/include/asm/timer.h
index def80464d38f..def80464d38f 100644
--- a/include/asm-h8300/timer.h
+++ b/arch/h8300/include/asm/timer.h
diff --git a/arch/ia64/include/asm/paravirt_privop.h b/arch/ia64/include/asm/paravirt_privop.h
index 3d2951130b5f..8f6cb11c9fae 100644
--- a/arch/ia64/include/asm/paravirt_privop.h
+++ b/arch/ia64/include/asm/paravirt_privop.h
@@ -445,7 +445,6 @@ paravirt_set_rr0_to_rr4(unsigned long val0, unsigned long val1,
445 register unsigned long ia64_intri_res asm ("r8"); \ 445 register unsigned long ia64_intri_res asm ("r8"); \
446 register unsigned long __reg asm ("r8") = (reg); \ 446 register unsigned long __reg asm ("r8") = (reg); \
447 \ 447 \
448 BUILD_BUG_ON(!__builtin_constant_p(reg)); \
449 asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \ 448 asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \
450 PARAVIRT_TYPE(GETREG) \ 449 PARAVIRT_TYPE(GETREG) \
451 + (reg)) \ 450 + (reg)) \
@@ -464,7 +463,6 @@ paravirt_set_rr0_to_rr4(unsigned long val0, unsigned long val1,
464 register unsigned long ia64_clobber1 asm ("r8"); \ 463 register unsigned long ia64_clobber1 asm ("r8"); \
465 register unsigned long ia64_clobber2 asm ("r9"); \ 464 register unsigned long ia64_clobber2 asm ("r9"); \
466 \ 465 \
467 BUILD_BUG_ON(!__builtin_constant_p(reg)); \
468 asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \ 466 asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \
469 PARAVIRT_TYPE(SETREG) \ 467 PARAVIRT_TYPE(SETREG) \
470 + (reg)) \ 468 + (reg)) \
diff --git a/arch/ia64/include/asm/smp.h b/arch/ia64/include/asm/smp.h
index 598408336251..d217d1d4e051 100644
--- a/arch/ia64/include/asm/smp.h
+++ b/arch/ia64/include/asm/smp.h
@@ -58,7 +58,7 @@ extern struct smp_boot_data {
58extern char no_int_routing __devinitdata; 58extern char no_int_routing __devinitdata;
59 59
60extern cpumask_t cpu_core_map[NR_CPUS]; 60extern cpumask_t cpu_core_map[NR_CPUS];
61DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); 61DECLARE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map);
62extern int smp_num_siblings; 62extern int smp_num_siblings;
63extern void __iomem *ipi_base_addr; 63extern void __iomem *ipi_base_addr;
64extern unsigned char smp_int_redirect; 64extern unsigned char smp_int_redirect;
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index 9015979ebe0f..10a9eb05f74d 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -308,11 +308,13 @@
308#define __NR_dup3 1316 308#define __NR_dup3 1316
309#define __NR_pipe2 1317 309#define __NR_pipe2 1317
310#define __NR_inotify_init1 1318 310#define __NR_inotify_init1 1318
311#define __NR_preadv 1319
312#define __NR_pwritev 1320
311 313
312#ifdef __KERNEL__ 314#ifdef __KERNEL__
313 315
314 316
315#define NR_syscalls 295 /* length of syscall table */ 317#define NR_syscalls 297 /* length of syscall table */
316 318
317/* 319/*
318 * The following defines stop scripts/checksyscalls.sh from complaining about 320 * The following defines stop scripts/checksyscalls.sh from complaining about
diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c
index 790ef0d87e12..71e35864d2e2 100644
--- a/arch/ia64/kernel/cyclone.c
+++ b/arch/ia64/kernel/cyclone.c
@@ -21,7 +21,7 @@ void __init cyclone_setup(void)
21 21
22static void __iomem *cyclone_mc; 22static void __iomem *cyclone_mc;
23 23
24static cycle_t read_cyclone(void) 24static cycle_t read_cyclone(struct clocksource *cs)
25{ 25{
26 return (cycle_t)readq((void __iomem *)cyclone_mc); 26 return (cycle_t)readq((void __iomem *)cyclone_mc);
27} 27}
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 8dc69669586a..7bebac0e1d44 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1803,6 +1803,8 @@ sys_call_table:
1803 data8 sys_dup3 1803 data8 sys_dup3
1804 data8 sys_pipe2 1804 data8 sys_pipe2
1805 data8 sys_inotify_init1 1805 data8 sys_inotify_init1
1806 data8 sys_preadv
1807 data8 sys_pwritev // 1320
1806 1808
1807 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls 1809 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls
1808#endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ 1810#endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
diff --git a/arch/ia64/kernel/pci-swiotlb.c b/arch/ia64/kernel/pci-swiotlb.c
index 573f02c39a00..285aae8431c6 100644
--- a/arch/ia64/kernel/pci-swiotlb.c
+++ b/arch/ia64/kernel/pci-swiotlb.c
@@ -16,7 +16,7 @@ EXPORT_SYMBOL(swiotlb);
16static void *ia64_swiotlb_alloc_coherent(struct device *dev, size_t size, 16static void *ia64_swiotlb_alloc_coherent(struct device *dev, size_t size,
17 dma_addr_t *dma_handle, gfp_t gfp) 17 dma_addr_t *dma_handle, gfp_t gfp)
18{ 18{
19 if (dev->coherent_dma_mask != DMA_64BIT_MASK) 19 if (dev->coherent_dma_mask != DMA_BIT_MASK(64))
20 gfp |= GFP_DMA; 20 gfp |= GFP_DMA;
21 return swiotlb_alloc_coherent(dev, size, dma_handle, gfp); 21 return swiotlb_alloc_coherent(dev, size, dma_handle, gfp);
22} 22}
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c
index 2ea4199d9c57..5230eaafd83f 100644
--- a/arch/ia64/kernel/smp.c
+++ b/arch/ia64/kernel/smp.c
@@ -225,6 +225,7 @@ smp_send_reschedule (int cpu)
225{ 225{
226 platform_send_ipi(cpu, IA64_IPI_RESCHEDULE, IA64_IPI_DM_INT, 0); 226 platform_send_ipi(cpu, IA64_IPI_RESCHEDULE, IA64_IPI_DM_INT, 0);
227} 227}
228EXPORT_SYMBOL_GPL(smp_send_reschedule);
228 229
229/* 230/*
230 * Called with preemption disabled. 231 * Called with preemption disabled.
@@ -300,15 +301,12 @@ smp_flush_tlb_mm (struct mm_struct *mm)
300 return; 301 return;
301 } 302 }
302 303
304 smp_call_function_mask(mm->cpu_vm_mask,
305 (void (*)(void *))local_finish_flush_tlb_mm, mm, 1);
306 local_irq_disable();
307 local_finish_flush_tlb_mm(mm);
308 local_irq_enable();
303 preempt_enable(); 309 preempt_enable();
304 /*
305 * We could optimize this further by using mm->cpu_vm_mask to track which CPUs
306 * have been running in the address space. It's not clear that this is worth the
307 * trouble though: to avoid races, we have to raise the IPI on the target CPU
308 * anyhow, and once a CPU is interrupted, the cost of local_flush_tlb_all() is
309 * rather trivial.
310 */
311 on_each_cpu((void (*)(void *))local_finish_flush_tlb_mm, mm, 1);
312} 310}
313 311
314void arch_send_call_function_single_ipi(int cpu) 312void arch_send_call_function_single_ipi(int cpu)
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 641c8b61c4f1..604c1a35db33 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -33,7 +33,7 @@
33 33
34#include "fsyscall_gtod_data.h" 34#include "fsyscall_gtod_data.h"
35 35
36static cycle_t itc_get_cycles(void); 36static cycle_t itc_get_cycles(struct clocksource *cs);
37 37
38struct fsyscall_gtod_data_t fsyscall_gtod_data = { 38struct fsyscall_gtod_data_t fsyscall_gtod_data = {
39 .lock = SEQLOCK_UNLOCKED, 39 .lock = SEQLOCK_UNLOCKED,
@@ -383,7 +383,7 @@ ia64_init_itm (void)
383 } 383 }
384} 384}
385 385
386static cycle_t itc_get_cycles(void) 386static cycle_t itc_get_cycles(struct clocksource *cs)
387{ 387{
388 u64 lcycle, now, ret; 388 u64 lcycle, now, ret;
389 389
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index 28af6a731bb8..d20a5db4c4dd 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -610,20 +610,22 @@ static int __vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
610 int r; 610 int r;
611 611
612again: 612again:
613 preempt_disable();
614 local_irq_disable();
615
616 if (signal_pending(current)) { 613 if (signal_pending(current)) {
617 local_irq_enable();
618 preempt_enable();
619 r = -EINTR; 614 r = -EINTR;
620 kvm_run->exit_reason = KVM_EXIT_INTR; 615 kvm_run->exit_reason = KVM_EXIT_INTR;
621 goto out; 616 goto out;
622 } 617 }
623 618
619 /*
620 * down_read() may sleep and return with interrupts enabled
621 */
622 down_read(&vcpu->kvm->slots_lock);
623
624 preempt_disable();
625 local_irq_disable();
626
624 vcpu->guest_mode = 1; 627 vcpu->guest_mode = 1;
625 kvm_guest_enter(); 628 kvm_guest_enter();
626 down_read(&vcpu->kvm->slots_lock);
627 r = vti_vcpu_run(vcpu, kvm_run); 629 r = vti_vcpu_run(vcpu, kvm_run);
628 if (r < 0) { 630 if (r < 0) {
629 local_irq_enable(); 631 local_irq_enable();
diff --git a/arch/ia64/sn/kernel/sn2/timer.c b/arch/ia64/sn/kernel/sn2/timer.c
index cf67fc562054..21d6f09e3447 100644
--- a/arch/ia64/sn/kernel/sn2/timer.c
+++ b/arch/ia64/sn/kernel/sn2/timer.c
@@ -23,7 +23,7 @@
23 23
24extern unsigned long sn_rtc_cycles_per_second; 24extern unsigned long sn_rtc_cycles_per_second;
25 25
26static cycle_t read_sn2(void) 26static cycle_t read_sn2(struct clocksource *cs)
27{ 27{
28 return (cycle_t)readq(RTC_COUNTER_ADDR); 28 return (cycle_t)readq(RTC_COUNTER_ADDR);
29} 29}
diff --git a/include/asm-m32r/Kbuild b/arch/m32r/include/asm/Kbuild
index c68e1680da01..c68e1680da01 100644
--- a/include/asm-m32r/Kbuild
+++ b/arch/m32r/include/asm/Kbuild
diff --git a/include/asm-m32r/addrspace.h b/arch/m32r/include/asm/addrspace.h
index 81782c122da4..81782c122da4 100644
--- a/include/asm-m32r/addrspace.h
+++ b/arch/m32r/include/asm/addrspace.h
diff --git a/include/asm-m32r/assembler.h b/arch/m32r/include/asm/assembler.h
index 26351539b5ff..26351539b5ff 100644
--- a/include/asm-m32r/assembler.h
+++ b/arch/m32r/include/asm/assembler.h
diff --git a/include/asm-m32r/atomic.h b/arch/m32r/include/asm/atomic.h
index 2eed30f84080..2eed30f84080 100644
--- a/include/asm-m32r/atomic.h
+++ b/arch/m32r/include/asm/atomic.h
diff --git a/include/asm-m32r/auxvec.h b/arch/m32r/include/asm/auxvec.h
index f76dcc860fae..f76dcc860fae 100644
--- a/include/asm-m32r/auxvec.h
+++ b/arch/m32r/include/asm/auxvec.h
diff --git a/include/asm-m32r/bitops.h b/arch/m32r/include/asm/bitops.h
index aaddf0d57603..aaddf0d57603 100644
--- a/include/asm-m32r/bitops.h
+++ b/arch/m32r/include/asm/bitops.h
diff --git a/include/asm-m32r/bug.h b/arch/m32r/include/asm/bug.h
index 4cc0462c15b8..4cc0462c15b8 100644
--- a/include/asm-m32r/bug.h
+++ b/arch/m32r/include/asm/bug.h
diff --git a/include/asm-m32r/bugs.h b/arch/m32r/include/asm/bugs.h
index f77214eff136..f77214eff136 100644
--- a/include/asm-m32r/bugs.h
+++ b/arch/m32r/include/asm/bugs.h
diff --git a/include/asm-m32r/byteorder.h b/arch/m32r/include/asm/byteorder.h
index 21855d8b028b..21855d8b028b 100644
--- a/include/asm-m32r/byteorder.h
+++ b/arch/m32r/include/asm/byteorder.h
diff --git a/include/asm-m32r/cache.h b/arch/m32r/include/asm/cache.h
index 40b3ee98193d..40b3ee98193d 100644
--- a/include/asm-m32r/cache.h
+++ b/arch/m32r/include/asm/cache.h
diff --git a/include/asm-m32r/cachectl.h b/arch/m32r/include/asm/cachectl.h
index 2aab8f6fff41..2aab8f6fff41 100644
--- a/include/asm-m32r/cachectl.h
+++ b/arch/m32r/include/asm/cachectl.h
diff --git a/include/asm-m32r/cacheflush.h b/arch/m32r/include/asm/cacheflush.h
index 78587c958146..78587c958146 100644
--- a/include/asm-m32r/cacheflush.h
+++ b/arch/m32r/include/asm/cacheflush.h
diff --git a/include/asm-m32r/checksum.h b/arch/m32r/include/asm/checksum.h
index a7a7c4f44abe..a7a7c4f44abe 100644
--- a/include/asm-m32r/checksum.h
+++ b/arch/m32r/include/asm/checksum.h
diff --git a/include/asm-m32r/cputime.h b/arch/m32r/include/asm/cputime.h
index 0a47550df2b7..0a47550df2b7 100644
--- a/include/asm-m32r/cputime.h
+++ b/arch/m32r/include/asm/cputime.h
diff --git a/include/asm-m32r/current.h b/arch/m32r/include/asm/current.h
index 7859d864f2c2..7859d864f2c2 100644
--- a/include/asm-m32r/current.h
+++ b/arch/m32r/include/asm/current.h
diff --git a/include/asm-m32r/delay.h b/arch/m32r/include/asm/delay.h
index 9dd9e999ea69..9dd9e999ea69 100644
--- a/include/asm-m32r/delay.h
+++ b/arch/m32r/include/asm/delay.h
diff --git a/include/asm-m32r/device.h b/arch/m32r/include/asm/device.h
index d8f9872b0e2d..d8f9872b0e2d 100644
--- a/include/asm-m32r/device.h
+++ b/arch/m32r/include/asm/device.h
diff --git a/include/asm-m32r/div64.h b/arch/m32r/include/asm/div64.h
index 6cd978cefb28..6cd978cefb28 100644
--- a/include/asm-m32r/div64.h
+++ b/arch/m32r/include/asm/div64.h
diff --git a/include/asm-m32r/dma.h b/arch/m32r/include/asm/dma.h
index 52f6a22dd232..52f6a22dd232 100644
--- a/include/asm-m32r/dma.h
+++ b/arch/m32r/include/asm/dma.h
diff --git a/include/asm-m32r/elf.h b/arch/m32r/include/asm/elf.h
index 0cc34c94bf2b..0cc34c94bf2b 100644
--- a/include/asm-m32r/elf.h
+++ b/arch/m32r/include/asm/elf.h
diff --git a/include/asm-m32r/emergency-restart.h b/arch/m32r/include/asm/emergency-restart.h
index 108d8c48e42e..108d8c48e42e 100644
--- a/include/asm-m32r/emergency-restart.h
+++ b/arch/m32r/include/asm/emergency-restart.h
diff --git a/include/asm-m32r/errno.h b/arch/m32r/include/asm/errno.h
index 777149262aad..777149262aad 100644
--- a/include/asm-m32r/errno.h
+++ b/arch/m32r/include/asm/errno.h
diff --git a/include/asm-m32r/fb.h b/arch/m32r/include/asm/fb.h
index d92e99cd8c8a..d92e99cd8c8a 100644
--- a/include/asm-m32r/fb.h
+++ b/arch/m32r/include/asm/fb.h
diff --git a/include/asm-m32r/fcntl.h b/arch/m32r/include/asm/fcntl.h
index 46ab12db5739..46ab12db5739 100644
--- a/include/asm-m32r/fcntl.h
+++ b/arch/m32r/include/asm/fcntl.h
diff --git a/include/asm-m32r/flat.h b/arch/m32r/include/asm/flat.h
index d851cf0c4aa5..d851cf0c4aa5 100644
--- a/include/asm-m32r/flat.h
+++ b/arch/m32r/include/asm/flat.h
diff --git a/include/asm-m32r/ftrace.h b/arch/m32r/include/asm/ftrace.h
index 40a8c178f10d..40a8c178f10d 100644
--- a/include/asm-m32r/ftrace.h
+++ b/arch/m32r/include/asm/ftrace.h
diff --git a/include/asm-m32r/futex.h b/arch/m32r/include/asm/futex.h
index 6a332a9f099c..6a332a9f099c 100644
--- a/include/asm-m32r/futex.h
+++ b/arch/m32r/include/asm/futex.h
diff --git a/include/asm-m32r/hardirq.h b/arch/m32r/include/asm/hardirq.h
index cb8aa762f235..cb8aa762f235 100644
--- a/include/asm-m32r/hardirq.h
+++ b/arch/m32r/include/asm/hardirq.h
diff --git a/include/asm-m32r/hw_irq.h b/arch/m32r/include/asm/hw_irq.h
index 7138537cda03..7138537cda03 100644
--- a/include/asm-m32r/hw_irq.h
+++ b/arch/m32r/include/asm/hw_irq.h
diff --git a/include/asm-m32r/io.h b/arch/m32r/include/asm/io.h
index d06933bd6318..d06933bd6318 100644
--- a/include/asm-m32r/io.h
+++ b/arch/m32r/include/asm/io.h
diff --git a/include/asm-m32r/ioctl.h b/arch/m32r/include/asm/ioctl.h
index b279fe06dfe5..b279fe06dfe5 100644
--- a/include/asm-m32r/ioctl.h
+++ b/arch/m32r/include/asm/ioctl.h
diff --git a/include/asm-m32r/ioctls.h b/arch/m32r/include/asm/ioctls.h
index b9f54bb5d7cf..b9f54bb5d7cf 100644
--- a/include/asm-m32r/ioctls.h
+++ b/arch/m32r/include/asm/ioctls.h
diff --git a/include/asm-m32r/ipcbuf.h b/arch/m32r/include/asm/ipcbuf.h
index 8d2d7c8ffdb0..8d2d7c8ffdb0 100644
--- a/include/asm-m32r/ipcbuf.h
+++ b/arch/m32r/include/asm/ipcbuf.h
diff --git a/include/asm-m32r/irq.h b/arch/m32r/include/asm/irq.h
index 242028b4d86a..242028b4d86a 100644
--- a/include/asm-m32r/irq.h
+++ b/arch/m32r/include/asm/irq.h
diff --git a/include/asm-m32r/irq_regs.h b/arch/m32r/include/asm/irq_regs.h
index 3dd9c0b70270..3dd9c0b70270 100644
--- a/include/asm-m32r/irq_regs.h
+++ b/arch/m32r/include/asm/irq_regs.h
diff --git a/include/asm-m32r/kdebug.h b/arch/m32r/include/asm/kdebug.h
index 6ece1b037665..6ece1b037665 100644
--- a/include/asm-m32r/kdebug.h
+++ b/arch/m32r/include/asm/kdebug.h
diff --git a/include/asm-m32r/kmap_types.h b/arch/m32r/include/asm/kmap_types.h
index fa94dc6410ea..fa94dc6410ea 100644
--- a/include/asm-m32r/kmap_types.h
+++ b/arch/m32r/include/asm/kmap_types.h
diff --git a/include/asm-m32r/linkage.h b/arch/m32r/include/asm/linkage.h
index a9fb151cf648..a9fb151cf648 100644
--- a/include/asm-m32r/linkage.h
+++ b/arch/m32r/include/asm/linkage.h
diff --git a/include/asm-m32r/local.h b/arch/m32r/include/asm/local.h
index 22256d138630..22256d138630 100644
--- a/include/asm-m32r/local.h
+++ b/arch/m32r/include/asm/local.h
diff --git a/include/asm-m32r/m32102.h b/arch/m32r/include/asm/m32102.h
index 52807f8db166..52807f8db166 100644
--- a/include/asm-m32r/m32102.h
+++ b/arch/m32r/include/asm/m32102.h
diff --git a/include/asm-m32r/m32104ut/m32104ut_pld.h b/arch/m32r/include/asm/m32104ut/m32104ut_pld.h
index 2dc89d68b6d9..2dc89d68b6d9 100644
--- a/include/asm-m32r/m32104ut/m32104ut_pld.h
+++ b/arch/m32r/include/asm/m32104ut/m32104ut_pld.h
diff --git a/include/asm-m32r/m32700ut/m32700ut_lan.h b/arch/m32r/include/asm/m32700ut/m32700ut_lan.h
index aae810a4fb2c..aae810a4fb2c 100644
--- a/include/asm-m32r/m32700ut/m32700ut_lan.h
+++ b/arch/m32r/include/asm/m32700ut/m32700ut_lan.h
diff --git a/include/asm-m32r/m32700ut/m32700ut_lcd.h b/arch/m32r/include/asm/m32700ut/m32700ut_lcd.h
index 4c2489079788..4c2489079788 100644
--- a/include/asm-m32r/m32700ut/m32700ut_lcd.h
+++ b/arch/m32r/include/asm/m32700ut/m32700ut_lcd.h
diff --git a/include/asm-m32r/m32700ut/m32700ut_pld.h b/arch/m32r/include/asm/m32700ut/m32700ut_pld.h
index 57623beb44cb..57623beb44cb 100644
--- a/include/asm-m32r/m32700ut/m32700ut_pld.h
+++ b/arch/m32r/include/asm/m32700ut/m32700ut_pld.h
diff --git a/include/asm-m32r/m32r.h b/arch/m32r/include/asm/m32r.h
index 214b44b40757..214b44b40757 100644
--- a/include/asm-m32r/m32r.h
+++ b/arch/m32r/include/asm/m32r.h
diff --git a/include/asm-m32r/m32r_mp_fpga.h b/arch/m32r/include/asm/m32r_mp_fpga.h
index 976d2b995919..976d2b995919 100644
--- a/include/asm-m32r/m32r_mp_fpga.h
+++ b/arch/m32r/include/asm/m32r_mp_fpga.h
diff --git a/include/asm-m32r/mappi2/mappi2_pld.h b/arch/m32r/include/asm/mappi2/mappi2_pld.h
index 2624c9db7255..2624c9db7255 100644
--- a/include/asm-m32r/mappi2/mappi2_pld.h
+++ b/arch/m32r/include/asm/mappi2/mappi2_pld.h
diff --git a/include/asm-m32r/mappi3/mappi3_pld.h b/arch/m32r/include/asm/mappi3/mappi3_pld.h
index 451c40ee70af..451c40ee70af 100644
--- a/include/asm-m32r/mappi3/mappi3_pld.h
+++ b/arch/m32r/include/asm/mappi3/mappi3_pld.h
diff --git a/include/asm-m32r/mc146818rtc.h b/arch/m32r/include/asm/mc146818rtc.h
index aa1b7bf84f51..aa1b7bf84f51 100644
--- a/include/asm-m32r/mc146818rtc.h
+++ b/arch/m32r/include/asm/mc146818rtc.h
diff --git a/include/asm-m32r/mman.h b/arch/m32r/include/asm/mman.h
index 516a8973b130..516a8973b130 100644
--- a/include/asm-m32r/mman.h
+++ b/arch/m32r/include/asm/mman.h
diff --git a/include/asm-m32r/mmu.h b/arch/m32r/include/asm/mmu.h
index 150cb92bb666..150cb92bb666 100644
--- a/include/asm-m32r/mmu.h
+++ b/arch/m32r/include/asm/mmu.h
diff --git a/include/asm-m32r/mmu_context.h b/arch/m32r/include/asm/mmu_context.h
index 91909e5dd9d0..91909e5dd9d0 100644
--- a/include/asm-m32r/mmu_context.h
+++ b/arch/m32r/include/asm/mmu_context.h
diff --git a/include/asm-m32r/mmzone.h b/arch/m32r/include/asm/mmzone.h
index 9f3b5accda88..9f3b5accda88 100644
--- a/include/asm-m32r/mmzone.h
+++ b/arch/m32r/include/asm/mmzone.h
diff --git a/include/asm-m32r/module.h b/arch/m32r/include/asm/module.h
index eb73ee011215..eb73ee011215 100644
--- a/include/asm-m32r/module.h
+++ b/arch/m32r/include/asm/module.h
diff --git a/include/asm-m32r/msgbuf.h b/arch/m32r/include/asm/msgbuf.h
index 0d5a877b813e..0d5a877b813e 100644
--- a/include/asm-m32r/msgbuf.h
+++ b/arch/m32r/include/asm/msgbuf.h
diff --git a/include/asm-m32r/mutex.h b/arch/m32r/include/asm/mutex.h
index 458c1f7fbc18..458c1f7fbc18 100644
--- a/include/asm-m32r/mutex.h
+++ b/arch/m32r/include/asm/mutex.h
diff --git a/include/asm-m32r/opsput/opsput_lan.h b/arch/m32r/include/asm/opsput/opsput_lan.h
index a5f18dd1ab20..a5f18dd1ab20 100644
--- a/include/asm-m32r/opsput/opsput_lan.h
+++ b/arch/m32r/include/asm/opsput/opsput_lan.h
diff --git a/include/asm-m32r/opsput/opsput_lcd.h b/arch/m32r/include/asm/opsput/opsput_lcd.h
index 369c9f0832a6..369c9f0832a6 100644
--- a/include/asm-m32r/opsput/opsput_lcd.h
+++ b/arch/m32r/include/asm/opsput/opsput_lcd.h
diff --git a/include/asm-m32r/opsput/opsput_pld.h b/arch/m32r/include/asm/opsput/opsput_pld.h
index 3f11ea1aac2d..3f11ea1aac2d 100644
--- a/include/asm-m32r/opsput/opsput_pld.h
+++ b/arch/m32r/include/asm/opsput/opsput_pld.h
diff --git a/include/asm-m32r/page.h b/arch/m32r/include/asm/page.h
index c9333089fe11..c9333089fe11 100644
--- a/include/asm-m32r/page.h
+++ b/arch/m32r/include/asm/page.h
diff --git a/include/asm-m32r/param.h b/arch/m32r/include/asm/param.h
index 94c770196048..94c770196048 100644
--- a/include/asm-m32r/param.h
+++ b/arch/m32r/include/asm/param.h
diff --git a/include/asm-m32r/pci.h b/arch/m32r/include/asm/pci.h
index fe785d167db6..fe785d167db6 100644
--- a/include/asm-m32r/pci.h
+++ b/arch/m32r/include/asm/pci.h
diff --git a/include/asm-m32r/percpu.h b/arch/m32r/include/asm/percpu.h
index e3169301fe66..e3169301fe66 100644
--- a/include/asm-m32r/percpu.h
+++ b/arch/m32r/include/asm/percpu.h
diff --git a/include/asm-m32r/pgalloc.h b/arch/m32r/include/asm/pgalloc.h
index f11a2b909cdb..f11a2b909cdb 100644
--- a/include/asm-m32r/pgalloc.h
+++ b/arch/m32r/include/asm/pgalloc.h
diff --git a/include/asm-m32r/pgtable-2level.h b/arch/m32r/include/asm/pgtable-2level.h
index bca3475f9595..bca3475f9595 100644
--- a/include/asm-m32r/pgtable-2level.h
+++ b/arch/m32r/include/asm/pgtable-2level.h
diff --git a/include/asm-m32r/pgtable.h b/arch/m32r/include/asm/pgtable.h
index e6359c566b50..e6359c566b50 100644
--- a/include/asm-m32r/pgtable.h
+++ b/arch/m32r/include/asm/pgtable.h
diff --git a/include/asm-m32r/poll.h b/arch/m32r/include/asm/poll.h
index c98509d3149e..c98509d3149e 100644
--- a/include/asm-m32r/poll.h
+++ b/arch/m32r/include/asm/poll.h
diff --git a/include/asm-m32r/posix_types.h b/arch/m32r/include/asm/posix_types.h
index b309c5858637..b309c5858637 100644
--- a/include/asm-m32r/posix_types.h
+++ b/arch/m32r/include/asm/posix_types.h
diff --git a/include/asm-m32r/processor.h b/arch/m32r/include/asm/processor.h
index 1a997fc148a2..1a997fc148a2 100644
--- a/include/asm-m32r/processor.h
+++ b/arch/m32r/include/asm/processor.h
diff --git a/include/asm-m32r/ptrace.h b/arch/m32r/include/asm/ptrace.h
index a0755b982028..a0755b982028 100644
--- a/include/asm-m32r/ptrace.h
+++ b/arch/m32r/include/asm/ptrace.h
diff --git a/include/asm-m32r/resource.h b/arch/m32r/include/asm/resource.h
index b1ce766e37a0..b1ce766e37a0 100644
--- a/include/asm-m32r/resource.h
+++ b/arch/m32r/include/asm/resource.h
diff --git a/include/asm-m32r/rtc.h b/arch/m32r/include/asm/rtc.h
index 0340633f3f4d..0340633f3f4d 100644
--- a/include/asm-m32r/rtc.h
+++ b/arch/m32r/include/asm/rtc.h
diff --git a/include/asm-m32r/s1d13806.h b/arch/m32r/include/asm/s1d13806.h
index 248d36a82d79..248d36a82d79 100644
--- a/include/asm-m32r/s1d13806.h
+++ b/arch/m32r/include/asm/s1d13806.h
diff --git a/include/asm-m32r/scatterlist.h b/arch/m32r/include/asm/scatterlist.h
index 1ed372c73d0b..1ed372c73d0b 100644
--- a/include/asm-m32r/scatterlist.h
+++ b/arch/m32r/include/asm/scatterlist.h
diff --git a/include/asm-m32r/sections.h b/arch/m32r/include/asm/sections.h
index 5e5d21c4908a..5e5d21c4908a 100644
--- a/include/asm-m32r/sections.h
+++ b/arch/m32r/include/asm/sections.h
diff --git a/include/asm-m32r/segment.h b/arch/m32r/include/asm/segment.h
index 42b11aeb3249..42b11aeb3249 100644
--- a/include/asm-m32r/segment.h
+++ b/arch/m32r/include/asm/segment.h
diff --git a/include/asm-m32r/sembuf.h b/arch/m32r/include/asm/sembuf.h
index c9873d6890e2..c9873d6890e2 100644
--- a/include/asm-m32r/sembuf.h
+++ b/arch/m32r/include/asm/sembuf.h
diff --git a/include/asm-m32r/serial.h b/arch/m32r/include/asm/serial.h
index 5ac244c72f15..5ac244c72f15 100644
--- a/include/asm-m32r/serial.h
+++ b/arch/m32r/include/asm/serial.h
diff --git a/include/asm-m32r/setup.h b/arch/m32r/include/asm/setup.h
index c637ab992394..c637ab992394 100644
--- a/include/asm-m32r/setup.h
+++ b/arch/m32r/include/asm/setup.h
diff --git a/include/asm-m32r/shmbuf.h b/arch/m32r/include/asm/shmbuf.h
index b0cdf0aa7d65..b0cdf0aa7d65 100644
--- a/include/asm-m32r/shmbuf.h
+++ b/arch/m32r/include/asm/shmbuf.h
diff --git a/include/asm-m32r/shmparam.h b/arch/m32r/include/asm/shmparam.h
index 35986d81a528..35986d81a528 100644
--- a/include/asm-m32r/shmparam.h
+++ b/arch/m32r/include/asm/shmparam.h
diff --git a/include/asm-m32r/sigcontext.h b/arch/m32r/include/asm/sigcontext.h
index da4a9c36d09b..da4a9c36d09b 100644
--- a/include/asm-m32r/sigcontext.h
+++ b/arch/m32r/include/asm/sigcontext.h
diff --git a/include/asm-m32r/siginfo.h b/arch/m32r/include/asm/siginfo.h
index 7d9cd9ebfd0e..7d9cd9ebfd0e 100644
--- a/include/asm-m32r/siginfo.h
+++ b/arch/m32r/include/asm/siginfo.h
diff --git a/include/asm-m32r/signal.h b/arch/m32r/include/asm/signal.h
index 1a607066bc64..1a607066bc64 100644
--- a/include/asm-m32r/signal.h
+++ b/arch/m32r/include/asm/signal.h
diff --git a/include/asm-m32r/smp.h b/arch/m32r/include/asm/smp.h
index b96a6d2ffbc3..b96a6d2ffbc3 100644
--- a/include/asm-m32r/smp.h
+++ b/arch/m32r/include/asm/smp.h
diff --git a/include/asm-m32r/socket.h b/arch/m32r/include/asm/socket.h
index be7ed589af5c..be7ed589af5c 100644
--- a/include/asm-m32r/socket.h
+++ b/arch/m32r/include/asm/socket.h
diff --git a/include/asm-m32r/sockios.h b/arch/m32r/include/asm/sockios.h
index 6c1fb9b43bdb..6c1fb9b43bdb 100644
--- a/include/asm-m32r/sockios.h
+++ b/arch/m32r/include/asm/sockios.h
diff --git a/include/asm-m32r/spinlock.h b/arch/m32r/include/asm/spinlock.h
index dded923883b2..dded923883b2 100644
--- a/include/asm-m32r/spinlock.h
+++ b/arch/m32r/include/asm/spinlock.h
diff --git a/include/asm-m32r/spinlock_types.h b/arch/m32r/include/asm/spinlock_types.h
index 83f52105c0e4..83f52105c0e4 100644
--- a/include/asm-m32r/spinlock_types.h
+++ b/arch/m32r/include/asm/spinlock_types.h
diff --git a/include/asm-m32r/stat.h b/arch/m32r/include/asm/stat.h
index da4518f82d6d..da4518f82d6d 100644
--- a/include/asm-m32r/stat.h
+++ b/arch/m32r/include/asm/stat.h
diff --git a/include/asm-m32r/statfs.h b/arch/m32r/include/asm/statfs.h
index 6eb4c6007e6b..6eb4c6007e6b 100644
--- a/include/asm-m32r/statfs.h
+++ b/arch/m32r/include/asm/statfs.h
diff --git a/include/asm-m32r/string.h b/arch/m32r/include/asm/string.h
index e61e2b0bfc1f..e61e2b0bfc1f 100644
--- a/include/asm-m32r/string.h
+++ b/arch/m32r/include/asm/string.h
diff --git a/include/asm-m32r/swab.h b/arch/m32r/include/asm/swab.h
index 54dab001d6d1..54dab001d6d1 100644
--- a/include/asm-m32r/swab.h
+++ b/arch/m32r/include/asm/swab.h
diff --git a/include/asm-m32r/syscall.h b/arch/m32r/include/asm/syscall.h
index 25f316f2b78d..25f316f2b78d 100644
--- a/include/asm-m32r/syscall.h
+++ b/arch/m32r/include/asm/syscall.h
diff --git a/include/asm-m32r/system.h b/arch/m32r/include/asm/system.h
index c980f5ba8de7..c980f5ba8de7 100644
--- a/include/asm-m32r/system.h
+++ b/arch/m32r/include/asm/system.h
diff --git a/include/asm-m32r/termbits.h b/arch/m32r/include/asm/termbits.h
index bc104008b55b..bc104008b55b 100644
--- a/include/asm-m32r/termbits.h
+++ b/arch/m32r/include/asm/termbits.h
diff --git a/include/asm-m32r/termios.h b/arch/m32r/include/asm/termios.h
index 93ce79fd342a..93ce79fd342a 100644
--- a/include/asm-m32r/termios.h
+++ b/arch/m32r/include/asm/termios.h
diff --git a/include/asm-m32r/thread_info.h b/arch/m32r/include/asm/thread_info.h
index 8589d462df27..8589d462df27 100644
--- a/include/asm-m32r/thread_info.h
+++ b/arch/m32r/include/asm/thread_info.h
diff --git a/include/asm-m32r/timex.h b/arch/m32r/include/asm/timex.h
index bb9fe4feb12d..bb9fe4feb12d 100644
--- a/include/asm-m32r/timex.h
+++ b/arch/m32r/include/asm/timex.h
diff --git a/include/asm-m32r/tlb.h b/arch/m32r/include/asm/tlb.h
index c7ebd8d48f3b..c7ebd8d48f3b 100644
--- a/include/asm-m32r/tlb.h
+++ b/arch/m32r/include/asm/tlb.h
diff --git a/include/asm-m32r/tlbflush.h b/arch/m32r/include/asm/tlbflush.h
index 0ef95307784e..0ef95307784e 100644
--- a/include/asm-m32r/tlbflush.h
+++ b/arch/m32r/include/asm/tlbflush.h
diff --git a/include/asm-m32r/topology.h b/arch/m32r/include/asm/topology.h
index d607eb32bd7e..d607eb32bd7e 100644
--- a/include/asm-m32r/topology.h
+++ b/arch/m32r/include/asm/topology.h
diff --git a/include/asm-m32r/types.h b/arch/m32r/include/asm/types.h
index bc9f7fff0ac3..bc9f7fff0ac3 100644
--- a/include/asm-m32r/types.h
+++ b/arch/m32r/include/asm/types.h
diff --git a/include/asm-m32r/uaccess.h b/arch/m32r/include/asm/uaccess.h
index 1c7047bea200..1c7047bea200 100644
--- a/include/asm-m32r/uaccess.h
+++ b/arch/m32r/include/asm/uaccess.h
diff --git a/include/asm-m32r/ucontext.h b/arch/m32r/include/asm/ucontext.h
index 09324741eec3..09324741eec3 100644
--- a/include/asm-m32r/ucontext.h
+++ b/arch/m32r/include/asm/ucontext.h
diff --git a/include/asm-m32r/unaligned.h b/arch/m32r/include/asm/unaligned.h
index 377eb20d1ec6..377eb20d1ec6 100644
--- a/include/asm-m32r/unaligned.h
+++ b/arch/m32r/include/asm/unaligned.h
diff --git a/include/asm-m32r/unistd.h b/arch/m32r/include/asm/unistd.h
index cf701c933249..cf701c933249 100644
--- a/include/asm-m32r/unistd.h
+++ b/arch/m32r/include/asm/unistd.h
diff --git a/include/asm-m32r/user.h b/arch/m32r/include/asm/user.h
index 03b3c11c2aff..03b3c11c2aff 100644
--- a/include/asm-m32r/user.h
+++ b/arch/m32r/include/asm/user.h
diff --git a/include/asm-m32r/vga.h b/arch/m32r/include/asm/vga.h
index a1b63061c06f..a1b63061c06f 100644
--- a/include/asm-m32r/vga.h
+++ b/arch/m32r/include/asm/vga.h
diff --git a/include/asm-m32r/xor.h b/arch/m32r/include/asm/xor.h
index 6d525259df3e..6d525259df3e 100644
--- a/include/asm-m32r/xor.h
+++ b/arch/m32r/include/asm/xor.h
diff --git a/arch/m32r/kernel/head.S b/arch/m32r/kernel/head.S
index 90916067b9c1..0a7194439eb1 100644
--- a/arch/m32r/kernel/head.S
+++ b/arch/m32r/kernel/head.S
@@ -23,7 +23,7 @@ __INITDATA
23/* 23/*
24 * References to members of the boot_cpu_data structure. 24 * References to members of the boot_cpu_data structure.
25 */ 25 */
26.section .text.head, "ax" 26__HEAD
27 .global start_kernel 27 .global start_kernel
28 .global __bss_start 28 .global __bss_start
29 .global _end 29 .global _end
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S
index 9db05df20c0e..4179adf6c624 100644
--- a/arch/m32r/kernel/vmlinux.lds.S
+++ b/arch/m32r/kernel/vmlinux.lds.S
@@ -27,7 +27,7 @@ SECTIONS
27 _text = .; /* Text and read-only data */ 27 _text = .; /* Text and read-only data */
28 .boot : { *(.boot) } = 0 28 .boot : { *(.boot) } = 0
29 .text : { 29 .text : {
30 *(.text.head) 30 HEAD_TEXT
31 TEXT_TEXT 31 TEXT_TEXT
32 SCHED_TEXT 32 SCHED_TEXT
33 LOCK_TEXT 33 LOCK_TEXT
diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_defconfig
index 23597beb66c1..0f69fa5ddf26 100644
--- a/arch/m68k/configs/amiga_defconfig
+++ b/arch/m68k/configs/amiga_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:42 2008 4# Wed Apr 22 20:47:52 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -140,12 +151,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
140CONFIG_NEED_MULTIPLE_NODES=y 151CONFIG_NEED_MULTIPLE_NODES=y
141CONFIG_PAGEFLAGS_EXTENDED=y 152CONFIG_PAGEFLAGS_EXTENDED=y
142CONFIG_SPLIT_PTLOCK_CPUS=4 153CONFIG_SPLIT_PTLOCK_CPUS=4
143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set 154# CONFIG_PHYS_ADDR_T_64BIT is not set
145CONFIG_ZONE_DMA_FLAG=1 155CONFIG_ZONE_DMA_FLAG=1
146CONFIG_BOUNCE=y 156CONFIG_BOUNCE=y
147CONFIG_VIRT_TO_BUS=y 157CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y 158CONFIG_UNEVICTABLE_LRU=y
159CONFIG_HAVE_MLOCK=y
160CONFIG_HAVE_MLOCKED_PAGE_BIT=y
149 161
150# 162#
151# General setup 163# General setup
@@ -157,7 +169,7 @@ CONFIG_BINFMT_AOUT=m
157CONFIG_BINFMT_MISC=m 169CONFIG_BINFMT_MISC=m
158CONFIG_ZORRO=y 170CONFIG_ZORRO=y
159CONFIG_AMIGA_PCMCIA=y 171CONFIG_AMIGA_PCMCIA=y
160# CONFIG_HEARTBEAT is not set 172CONFIG_HEARTBEAT=y
161CONFIG_PROC_HARDWARE=y 173CONFIG_PROC_HARDWARE=y
162CONFIG_ISA=y 174CONFIG_ISA=y
163CONFIG_GENERIC_ISA_DMA=y 175CONFIG_GENERIC_ISA_DMA=y
@@ -184,7 +196,10 @@ CONFIG_INET=y
184# CONFIG_IP_MULTICAST is not set 196# CONFIG_IP_MULTICAST is not set
185# CONFIG_IP_ADVANCED_ROUTER is not set 197# CONFIG_IP_ADVANCED_ROUTER is not set
186CONFIG_IP_FIB_HASH=y 198CONFIG_IP_FIB_HASH=y
187# CONFIG_IP_PNP is not set 199CONFIG_IP_PNP=y
200# CONFIG_IP_PNP_DHCP is not set
201# CONFIG_IP_PNP_BOOTP is not set
202# CONFIG_IP_PNP_RARP is not set
188CONFIG_NET_IPIP=m 203CONFIG_NET_IPIP=m
189CONFIG_NET_IPGRE=m 204CONFIG_NET_IPGRE=m
190# CONFIG_ARPD is not set 205# CONFIG_ARPD is not set
@@ -258,6 +273,7 @@ CONFIG_NETFILTER_XTABLES=m
258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 273CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 274CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
260CONFIG_NETFILTER_XT_TARGET_DSCP=m 275CONFIG_NETFILTER_XT_TARGET_DSCP=m
276CONFIG_NETFILTER_XT_TARGET_HL=m
261CONFIG_NETFILTER_XT_TARGET_MARK=m 277CONFIG_NETFILTER_XT_TARGET_MARK=m
262CONFIG_NETFILTER_XT_TARGET_NFLOG=m 278CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 279CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -266,6 +282,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
266CONFIG_NETFILTER_XT_TARGET_TRACE=m 282CONFIG_NETFILTER_XT_TARGET_TRACE=m
267CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 283CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
268CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 284CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
285CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
269CONFIG_NETFILTER_XT_MATCH_COMMENT=m 286CONFIG_NETFILTER_XT_MATCH_COMMENT=m
270CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 287CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
271CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 288CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -276,6 +293,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
276CONFIG_NETFILTER_XT_MATCH_ESP=m 293CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 294CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
278CONFIG_NETFILTER_XT_MATCH_HELPER=m 295CONFIG_NETFILTER_XT_MATCH_HELPER=m
296CONFIG_NETFILTER_XT_MATCH_HL=m
279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 297CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
280CONFIG_NETFILTER_XT_MATCH_LENGTH=m 298CONFIG_NETFILTER_XT_MATCH_LENGTH=m
281CONFIG_NETFILTER_XT_MATCH_LIMIT=m 299CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -354,25 +372,20 @@ CONFIG_IP6_NF_MATCH_HL=m
354CONFIG_IP6_NF_MATCH_IPV6HEADER=m 372CONFIG_IP6_NF_MATCH_IPV6HEADER=m
355CONFIG_IP6_NF_MATCH_MH=m 373CONFIG_IP6_NF_MATCH_MH=m
356CONFIG_IP6_NF_MATCH_RT=m 374CONFIG_IP6_NF_MATCH_RT=m
375CONFIG_IP6_NF_TARGET_HL=m
357CONFIG_IP6_NF_TARGET_LOG=m 376CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m 377CONFIG_IP6_NF_FILTER=m
359CONFIG_IP6_NF_TARGET_REJECT=m 378CONFIG_IP6_NF_TARGET_REJECT=m
360CONFIG_IP6_NF_MANGLE=m 379CONFIG_IP6_NF_MANGLE=m
361CONFIG_IP6_NF_TARGET_HL=m
362CONFIG_IP6_NF_RAW=m 380CONFIG_IP6_NF_RAW=m
363CONFIG_IP_DCCP=m 381CONFIG_IP_DCCP=m
364CONFIG_INET_DCCP_DIAG=m 382CONFIG_INET_DCCP_DIAG=m
365CONFIG_IP_DCCP_ACKVEC=y
366 383
367# 384#
368# DCCP CCIDs Configuration (EXPERIMENTAL) 385# DCCP CCIDs Configuration (EXPERIMENTAL)
369# 386#
370CONFIG_IP_DCCP_CCID2=m
371# CONFIG_IP_DCCP_CCID2_DEBUG is not set 387# CONFIG_IP_DCCP_CCID2_DEBUG is not set
372CONFIG_IP_DCCP_CCID3=m 388# CONFIG_IP_DCCP_CCID3 is not set
373# CONFIG_IP_DCCP_CCID3_DEBUG is not set
374CONFIG_IP_DCCP_CCID3_RTO=100
375CONFIG_IP_DCCP_TFRC_LIB=m
376CONFIG_IP_SCTP=m 389CONFIG_IP_SCTP=m
377# CONFIG_SCTP_DBG_MSG is not set 390# CONFIG_SCTP_DBG_MSG is not set
378# CONFIG_SCTP_DBG_OBJCNT is not set 391# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -394,8 +407,10 @@ CONFIG_ATALK=m
394# CONFIG_LAPB is not set 407# CONFIG_LAPB is not set
395# CONFIG_ECONET is not set 408# CONFIG_ECONET is not set
396# CONFIG_WAN_ROUTER is not set 409# CONFIG_WAN_ROUTER is not set
410# CONFIG_PHONET is not set
397# CONFIG_NET_SCHED is not set 411# CONFIG_NET_SCHED is not set
398CONFIG_NET_CLS_ROUTE=y 412CONFIG_NET_CLS_ROUTE=y
413# CONFIG_DCB is not set
399 414
400# 415#
401# Network testing 416# Network testing
@@ -406,8 +421,8 @@ CONFIG_NET_CLS_ROUTE=y
406# CONFIG_IRDA is not set 421# CONFIG_IRDA is not set
407# CONFIG_BT is not set 422# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 423# CONFIG_AF_RXRPC is not set
409# CONFIG_PHONET is not set
410# CONFIG_WIRELESS is not set 424# CONFIG_WIRELESS is not set
425# CONFIG_WIMAX is not set
411# CONFIG_RFKILL is not set 426# CONFIG_RFKILL is not set
412# CONFIG_NET_9P is not set 427# CONFIG_NET_9P is not set
413 428
@@ -453,15 +468,20 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
453CONFIG_ATA_OVER_ETH=m 468CONFIG_ATA_OVER_ETH=m
454# CONFIG_BLK_DEV_HD is not set 469# CONFIG_BLK_DEV_HD is not set
455CONFIG_MISC_DEVICES=y 470CONFIG_MISC_DEVICES=y
456# CONFIG_EEPROM_93CX6 is not set
457# CONFIG_ENCLOSURE_SERVICES is not set 471# CONFIG_ENCLOSURE_SERVICES is not set
458# CONFIG_C2PORT is not set 472# CONFIG_C2PORT is not set
473
474#
475# EEPROM support
476#
477# CONFIG_EEPROM_93CX6 is not set
459CONFIG_HAVE_IDE=y 478CONFIG_HAVE_IDE=y
460CONFIG_IDE=y 479CONFIG_IDE=y
461 480
462# 481#
463# Please see Documentation/ide/ide.txt for help/info on IDE drives 482# Please see Documentation/ide/ide.txt for help/info on IDE drives
464# 483#
484CONFIG_IDE_ATAPI=y
465# CONFIG_BLK_DEV_IDE_SATA is not set 485# CONFIG_BLK_DEV_IDE_SATA is not set
466CONFIG_IDE_GD=y 486CONFIG_IDE_GD=y
467CONFIG_IDE_GD_ATA=y 487CONFIG_IDE_GD_ATA=y
@@ -469,7 +489,6 @@ CONFIG_IDE_GD_ATA=y
469CONFIG_BLK_DEV_IDECD=y 489CONFIG_BLK_DEV_IDECD=y
470CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 490CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
471# CONFIG_BLK_DEV_IDETAPE is not set 491# CONFIG_BLK_DEV_IDETAPE is not set
472# CONFIG_BLK_DEV_IDESCSI is not set
473# CONFIG_IDE_TASK_IOCTL is not set 492# CONFIG_IDE_TASK_IOCTL is not set
474CONFIG_IDE_PROC_FS=y 493CONFIG_IDE_PROC_FS=y
475 494
@@ -478,7 +497,6 @@ CONFIG_IDE_PROC_FS=y
478# 497#
479# CONFIG_BLK_DEV_PLATFORM is not set 498# CONFIG_BLK_DEV_PLATFORM is not set
480CONFIG_BLK_DEV_GAYLE=y 499CONFIG_BLK_DEV_GAYLE=y
481CONFIG_BLK_DEV_IDEDOUBLER=y
482CONFIG_BLK_DEV_BUDDHA=y 500CONFIG_BLK_DEV_BUDDHA=y
483# CONFIG_BLK_DEV_IDEDMA is not set 501# CONFIG_BLK_DEV_IDEDMA is not set
484 502
@@ -530,6 +548,8 @@ CONFIG_ISCSI_TCP=m
530# CONFIG_SCSI_AIC7XXX_OLD is not set 548# CONFIG_SCSI_AIC7XXX_OLD is not set
531# CONFIG_SCSI_ADVANSYS is not set 549# CONFIG_SCSI_ADVANSYS is not set
532# CONFIG_SCSI_IN2000 is not set 550# CONFIG_SCSI_IN2000 is not set
551# CONFIG_LIBFC is not set
552# CONFIG_LIBFCOE is not set
533# CONFIG_SCSI_DTC3280 is not set 553# CONFIG_SCSI_DTC3280 is not set
534# CONFIG_SCSI_FUTURE_DOMAIN is not set 554# CONFIG_SCSI_FUTURE_DOMAIN is not set
535# CONFIG_SCSI_GENERIC_NCR5380 is not set 555# CONFIG_SCSI_GENERIC_NCR5380 is not set
@@ -547,6 +567,7 @@ CONFIG_GVP11_SCSI=y
547CONFIG_SCSI_A4000T=y 567CONFIG_SCSI_A4000T=y
548CONFIG_SCSI_ZORRO7XX=y 568CONFIG_SCSI_ZORRO7XX=y
549# CONFIG_SCSI_DH is not set 569# CONFIG_SCSI_DH is not set
570# CONFIG_SCSI_OSD_INITIATOR is not set
550CONFIG_MD=y 571CONFIG_MD=y
551CONFIG_BLK_DEV_MD=m 572CONFIG_BLK_DEV_MD=m
552CONFIG_MD_LINEAR=m 573CONFIG_MD_LINEAR=m
@@ -554,7 +575,7 @@ CONFIG_MD_RAID0=m
554CONFIG_MD_RAID1=m 575CONFIG_MD_RAID1=m
555# CONFIG_MD_RAID10 is not set 576# CONFIG_MD_RAID10 is not set
556CONFIG_MD_RAID456=m 577CONFIG_MD_RAID456=m
557CONFIG_MD_RAID5_RESHAPE=y 578CONFIG_MD_RAID6_PQ=m
558# CONFIG_MD_MULTIPATH is not set 579# CONFIG_MD_MULTIPATH is not set
559# CONFIG_MD_FAULTY is not set 580# CONFIG_MD_FAULTY is not set
560CONFIG_BLK_DEV_DM=m 581CONFIG_BLK_DEV_DM=m
@@ -567,6 +588,7 @@ CONFIG_DM_MULTIPATH=m
567# CONFIG_DM_DELAY is not set 588# CONFIG_DM_DELAY is not set
568CONFIG_DM_UEVENT=y 589CONFIG_DM_UEVENT=y
569CONFIG_NETDEVICES=y 590CONFIG_NETDEVICES=y
591CONFIG_COMPAT_NET_DEV_OPS=y
570CONFIG_DUMMY=m 592CONFIG_DUMMY=m
571# CONFIG_BONDING is not set 593# CONFIG_BONDING is not set
572CONFIG_MACVLAN=m 594CONFIG_MACVLAN=m
@@ -577,14 +599,16 @@ CONFIG_VETH=m
577# CONFIG_PHYLIB is not set 599# CONFIG_PHYLIB is not set
578CONFIG_NET_ETHERNET=y 600CONFIG_NET_ETHERNET=y
579# CONFIG_MII is not set 601# CONFIG_MII is not set
580CONFIG_ARIADNE=m 602CONFIG_ARIADNE=y
581CONFIG_A2065=m 603CONFIG_A2065=y
582CONFIG_HYDRA=m 604CONFIG_HYDRA=y
583CONFIG_ZORRO8390=m 605CONFIG_ZORRO8390=y
584CONFIG_APNE=m 606CONFIG_APNE=y
585# CONFIG_NET_VENDOR_3COM is not set 607# CONFIG_NET_VENDOR_3COM is not set
586# CONFIG_NET_VENDOR_SMC is not set 608# CONFIG_NET_VENDOR_SMC is not set
609# CONFIG_ETHOC is not set
587# CONFIG_NET_VENDOR_RACAL is not set 610# CONFIG_NET_VENDOR_RACAL is not set
611# CONFIG_DNET is not set
588# CONFIG_AT1700 is not set 612# CONFIG_AT1700 is not set
589# CONFIG_DEPCA is not set 613# CONFIG_DEPCA is not set
590# CONFIG_HP100 is not set 614# CONFIG_HP100 is not set
@@ -609,7 +633,10 @@ CONFIG_APNE=m
609# 633#
610# CONFIG_WLAN_PRE80211 is not set 634# CONFIG_WLAN_PRE80211 is not set
611# CONFIG_WLAN_80211 is not set 635# CONFIG_WLAN_80211 is not set
612# CONFIG_IWLWIFI_LEDS is not set 636
637#
638# Enable WiMAX (Networking options) to see the WiMAX drivers
639#
613# CONFIG_WAN is not set 640# CONFIG_WAN is not set
614# CONFIG_PLIP is not set 641# CONFIG_PLIP is not set
615CONFIG_PPP=m 642CONFIG_PPP=m
@@ -719,7 +746,7 @@ CONFIG_HW_CONSOLE=y
719CONFIG_VT_HW_CONSOLE_BINDING=y 746CONFIG_VT_HW_CONSOLE_BINDING=y
720# CONFIG_DEVKMEM is not set 747# CONFIG_DEVKMEM is not set
721# CONFIG_SERIAL_NONSTANDARD is not set 748# CONFIG_SERIAL_NONSTANDARD is not set
722CONFIG_A2232=m 749CONFIG_A2232=y
723 750
724# 751#
725# Serial drivers 752# Serial drivers
@@ -730,6 +757,7 @@ CONFIG_A2232=m
730# Non-8250 serial port support 757# Non-8250 serial port support
731# 758#
732CONFIG_UNIX98_PTYS=y 759CONFIG_UNIX98_PTYS=y
760# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
733CONFIG_LEGACY_PTYS=y 761CONFIG_LEGACY_PTYS=y
734CONFIG_LEGACY_PTY_COUNT=256 762CONFIG_LEGACY_PTY_COUNT=256
735CONFIG_PRINTER=m 763CONFIG_PRINTER=m
@@ -821,6 +849,7 @@ CONFIG_FB_FM2=y
821# CONFIG_FB_VIRTUAL is not set 849# CONFIG_FB_VIRTUAL is not set
822# CONFIG_FB_METRONOME is not set 850# CONFIG_FB_METRONOME is not set
823# CONFIG_FB_MB862XX is not set 851# CONFIG_FB_MB862XX is not set
852# CONFIG_FB_BROADSHEET is not set
824# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 853# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
825 854
826# 855#
@@ -856,7 +885,6 @@ CONFIG_HIDRAW=y
856# 885#
857# Special HID drivers 886# Special HID drivers
858# 887#
859CONFIG_HID_COMPAT=y
860# CONFIG_USB_SUPPORT is not set 888# CONFIG_USB_SUPPORT is not set
861# CONFIG_MMC is not set 889# CONFIG_MMC is not set
862# CONFIG_MEMSTICK is not set 890# CONFIG_MEMSTICK is not set
@@ -867,14 +895,13 @@ CONFIG_HID_COMPAT=y
867# CONFIG_AUXDISPLAY is not set 895# CONFIG_AUXDISPLAY is not set
868# CONFIG_UIO is not set 896# CONFIG_UIO is not set
869# CONFIG_STAGING is not set 897# CONFIG_STAGING is not set
870CONFIG_STAGING_EXCLUDE_BUILD=y
871 898
872# 899#
873# Character devices 900# Character devices
874# 901#
875CONFIG_AMIGA_BUILTIN_SERIAL=y 902CONFIG_AMIGA_BUILTIN_SERIAL=y
876CONFIG_MULTIFACE_III_TTY=m 903CONFIG_MULTIFACE_III_TTY=m
877# CONFIG_SERIAL_CONSOLE is not set 904CONFIG_SERIAL_CONSOLE=y
878 905
879# 906#
880# File systems 907# File systems
@@ -883,6 +910,7 @@ CONFIG_EXT2_FS=y
883# CONFIG_EXT2_FS_XATTR is not set 910# CONFIG_EXT2_FS_XATTR is not set
884# CONFIG_EXT2_FS_XIP is not set 911# CONFIG_EXT2_FS_XIP is not set
885CONFIG_EXT3_FS=y 912CONFIG_EXT3_FS=y
913# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
886# CONFIG_EXT3_FS_XATTR is not set 914# CONFIG_EXT3_FS_XATTR is not set
887# CONFIG_EXT4_FS is not set 915# CONFIG_EXT4_FS is not set
888CONFIG_JBD=y 916CONFIG_JBD=y
@@ -909,13 +937,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
909# CONFIG_OCFS2_FS_STATS is not set 937# CONFIG_OCFS2_FS_STATS is not set
910# CONFIG_OCFS2_DEBUG_MASKLOG is not set 938# CONFIG_OCFS2_DEBUG_MASKLOG is not set
911# CONFIG_OCFS2_DEBUG_FS is not set 939# CONFIG_OCFS2_DEBUG_FS is not set
912# CONFIG_OCFS2_COMPAT_JBD is not set 940# CONFIG_OCFS2_FS_POSIX_ACL is not set
941# CONFIG_BTRFS_FS is not set
913CONFIG_DNOTIFY=y 942CONFIG_DNOTIFY=y
914CONFIG_INOTIFY=y 943CONFIG_INOTIFY=y
915CONFIG_INOTIFY_USER=y 944CONFIG_INOTIFY_USER=y
916CONFIG_QUOTA=y 945CONFIG_QUOTA=y
917CONFIG_QUOTA_NETLINK_INTERFACE=y 946CONFIG_QUOTA_NETLINK_INTERFACE=y
918# CONFIG_PRINT_QUOTA_WARNING is not set 947# CONFIG_PRINT_QUOTA_WARNING is not set
948CONFIG_QUOTA_TREE=m
919# CONFIG_QFMT_V1 is not set 949# CONFIG_QFMT_V1 is not set
920# CONFIG_QFMT_V2 is not set 950# CONFIG_QFMT_V2 is not set
921CONFIG_QUOTACTL=y 951CONFIG_QUOTACTL=y
@@ -924,6 +954,11 @@ CONFIG_AUTOFS4_FS=m
924CONFIG_FUSE_FS=m 954CONFIG_FUSE_FS=m
925 955
926# 956#
957# Caches
958#
959# CONFIG_FSCACHE is not set
960
961#
927# CD-ROM/DVD Filesystems 962# CD-ROM/DVD Filesystems
928# 963#
929CONFIG_ISO9660_FS=y 964CONFIG_ISO9660_FS=y
@@ -935,8 +970,8 @@ CONFIG_UDF_NLS=y
935# 970#
936# DOS/FAT/NT Filesystems 971# DOS/FAT/NT Filesystems
937# 972#
938CONFIG_FAT_FS=m 973CONFIG_FAT_FS=y
939CONFIG_MSDOS_FS=m 974CONFIG_MSDOS_FS=y
940CONFIG_VFAT_FS=m 975CONFIG_VFAT_FS=m
941CONFIG_FAT_DEFAULT_CODEPAGE=437 976CONFIG_FAT_DEFAULT_CODEPAGE=437
942CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 977CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
@@ -954,10 +989,7 @@ CONFIG_TMPFS=y
954# CONFIG_TMPFS_POSIX_ACL is not set 989# CONFIG_TMPFS_POSIX_ACL is not set
955# CONFIG_HUGETLB_PAGE is not set 990# CONFIG_HUGETLB_PAGE is not set
956CONFIG_CONFIGFS_FS=m 991CONFIG_CONFIGFS_FS=m
957 992CONFIG_MISC_FILESYSTEMS=y
958#
959# Miscellaneous filesystems
960#
961# CONFIG_ADFS_FS is not set 993# CONFIG_ADFS_FS is not set
962CONFIG_AFFS_FS=m 994CONFIG_AFFS_FS=m
963CONFIG_HFS_FS=m 995CONFIG_HFS_FS=m
@@ -966,6 +998,9 @@ CONFIG_HFSPLUS_FS=m
966# CONFIG_BFS_FS is not set 998# CONFIG_BFS_FS is not set
967# CONFIG_EFS_FS is not set 999# CONFIG_EFS_FS is not set
968CONFIG_CRAMFS=m 1000CONFIG_CRAMFS=m
1001CONFIG_SQUASHFS=m
1002# CONFIG_SQUASHFS_EMBEDDED is not set
1003CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
969# CONFIG_VXFS_FS is not set 1004# CONFIG_VXFS_FS is not set
970CONFIG_MINIX_FS=y 1005CONFIG_MINIX_FS=y
971# CONFIG_OMFS_FS is not set 1006# CONFIG_OMFS_FS is not set
@@ -976,23 +1011,24 @@ CONFIG_SYSV_FS=m
976CONFIG_UFS_FS=m 1011CONFIG_UFS_FS=m
977# CONFIG_UFS_FS_WRITE is not set 1012# CONFIG_UFS_FS_WRITE is not set
978# CONFIG_UFS_DEBUG is not set 1013# CONFIG_UFS_DEBUG is not set
1014# CONFIG_NILFS2_FS is not set
979CONFIG_NETWORK_FILESYSTEMS=y 1015CONFIG_NETWORK_FILESYSTEMS=y
980CONFIG_NFS_FS=m 1016CONFIG_NFS_FS=y
981CONFIG_NFS_V3=y 1017CONFIG_NFS_V3=y
982# CONFIG_NFS_V3_ACL is not set 1018# CONFIG_NFS_V3_ACL is not set
983CONFIG_NFS_V4=y 1019CONFIG_NFS_V4=y
1020# CONFIG_ROOT_NFS is not set
984CONFIG_NFSD=m 1021CONFIG_NFSD=m
985CONFIG_NFSD_V3=y 1022CONFIG_NFSD_V3=y
986# CONFIG_NFSD_V3_ACL is not set 1023# CONFIG_NFSD_V3_ACL is not set
987# CONFIG_NFSD_V4 is not set 1024# CONFIG_NFSD_V4 is not set
988CONFIG_LOCKD=m 1025CONFIG_LOCKD=y
989CONFIG_LOCKD_V4=y 1026CONFIG_LOCKD_V4=y
990CONFIG_EXPORTFS=m 1027CONFIG_EXPORTFS=m
991CONFIG_NFS_COMMON=y 1028CONFIG_NFS_COMMON=y
992CONFIG_SUNRPC=m 1029CONFIG_SUNRPC=y
993CONFIG_SUNRPC_GSS=m 1030CONFIG_SUNRPC_GSS=y
994# CONFIG_SUNRPC_REGISTER_V4 is not set 1031CONFIG_RPCSEC_GSS_KRB5=y
995CONFIG_RPCSEC_GSS_KRB5=m
996# CONFIG_RPCSEC_GSS_SPKM3 is not set 1032# CONFIG_RPCSEC_GSS_SPKM3 is not set
997CONFIG_SMB_FS=m 1033CONFIG_SMB_FS=m
998CONFIG_SMB_NLS_DEFAULT=y 1034CONFIG_SMB_NLS_DEFAULT=y
@@ -1067,11 +1103,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
1067CONFIG_DEBUG_MEMORY_INIT=y 1103CONFIG_DEBUG_MEMORY_INIT=y
1068# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1104# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1069CONFIG_SYSCTL_SYSCALL_CHECK=y 1105CONFIG_SYSCTL_SYSCALL_CHECK=y
1070
1071#
1072# Tracers
1073#
1074# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1075# CONFIG_SAMPLES is not set 1106# CONFIG_SAMPLES is not set
1076 1107
1077# 1108#
@@ -1092,13 +1123,21 @@ CONFIG_CRYPTO=y
1092# 1123#
1093# CONFIG_CRYPTO_FIPS is not set 1124# CONFIG_CRYPTO_FIPS is not set
1094CONFIG_CRYPTO_ALGAPI=y 1125CONFIG_CRYPTO_ALGAPI=y
1095CONFIG_CRYPTO_AEAD=y 1126CONFIG_CRYPTO_ALGAPI2=y
1127CONFIG_CRYPTO_AEAD=m
1128CONFIG_CRYPTO_AEAD2=y
1096CONFIG_CRYPTO_BLKCIPHER=y 1129CONFIG_CRYPTO_BLKCIPHER=y
1130CONFIG_CRYPTO_BLKCIPHER2=y
1097CONFIG_CRYPTO_HASH=y 1131CONFIG_CRYPTO_HASH=y
1098CONFIG_CRYPTO_RNG=y 1132CONFIG_CRYPTO_HASH2=y
1133CONFIG_CRYPTO_RNG=m
1134CONFIG_CRYPTO_RNG2=y
1135CONFIG_CRYPTO_PCOMP=y
1099CONFIG_CRYPTO_MANAGER=y 1136CONFIG_CRYPTO_MANAGER=y
1137CONFIG_CRYPTO_MANAGER2=y
1100CONFIG_CRYPTO_GF128MUL=m 1138CONFIG_CRYPTO_GF128MUL=m
1101CONFIG_CRYPTO_NULL=m 1139CONFIG_CRYPTO_NULL=m
1140CONFIG_CRYPTO_WORKQUEUE=y
1102CONFIG_CRYPTO_CRYPTD=m 1141CONFIG_CRYPTO_CRYPTD=m
1103CONFIG_CRYPTO_AUTHENC=m 1142CONFIG_CRYPTO_AUTHENC=m
1104CONFIG_CRYPTO_TEST=m 1143CONFIG_CRYPTO_TEST=m
@@ -1113,7 +1152,7 @@ CONFIG_CRYPTO_SEQIV=m
1113# 1152#
1114# Block modes 1153# Block modes
1115# 1154#
1116CONFIG_CRYPTO_CBC=m 1155CONFIG_CRYPTO_CBC=y
1117CONFIG_CRYPTO_CTR=m 1156CONFIG_CRYPTO_CTR=m
1118CONFIG_CRYPTO_CTS=m 1157CONFIG_CRYPTO_CTS=m
1119CONFIG_CRYPTO_ECB=m 1158CONFIG_CRYPTO_ECB=m
@@ -1132,7 +1171,7 @@ CONFIG_CRYPTO_XCBC=m
1132# 1171#
1133CONFIG_CRYPTO_CRC32C=m 1172CONFIG_CRYPTO_CRC32C=m
1134CONFIG_CRYPTO_MD4=m 1173CONFIG_CRYPTO_MD4=m
1135CONFIG_CRYPTO_MD5=m 1174CONFIG_CRYPTO_MD5=y
1136CONFIG_CRYPTO_MICHAEL_MIC=m 1175CONFIG_CRYPTO_MICHAEL_MIC=m
1137CONFIG_CRYPTO_RMD128=m 1176CONFIG_CRYPTO_RMD128=m
1138CONFIG_CRYPTO_RMD160=m 1177CONFIG_CRYPTO_RMD160=m
@@ -1154,7 +1193,7 @@ CONFIG_CRYPTO_BLOWFISH=m
1154CONFIG_CRYPTO_CAMELLIA=m 1193CONFIG_CRYPTO_CAMELLIA=m
1155CONFIG_CRYPTO_CAST5=m 1194CONFIG_CRYPTO_CAST5=m
1156CONFIG_CRYPTO_CAST6=m 1195CONFIG_CRYPTO_CAST6=m
1157CONFIG_CRYPTO_DES=m 1196CONFIG_CRYPTO_DES=y
1158CONFIG_CRYPTO_FCRYPT=m 1197CONFIG_CRYPTO_FCRYPT=m
1159CONFIG_CRYPTO_KHAZAD=m 1198CONFIG_CRYPTO_KHAZAD=m
1160CONFIG_CRYPTO_SALSA20=m 1199CONFIG_CRYPTO_SALSA20=m
@@ -1168,6 +1207,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1168# Compression 1207# Compression
1169# 1208#
1170CONFIG_CRYPTO_DEFLATE=m 1209CONFIG_CRYPTO_DEFLATE=m
1210CONFIG_CRYPTO_ZLIB=m
1171CONFIG_CRYPTO_LZO=m 1211CONFIG_CRYPTO_LZO=m
1172 1212
1173# 1213#
@@ -1175,11 +1215,13 @@ CONFIG_CRYPTO_LZO=m
1175# 1215#
1176# CONFIG_CRYPTO_ANSI_CPRNG is not set 1216# CONFIG_CRYPTO_ANSI_CPRNG is not set
1177# CONFIG_CRYPTO_HW is not set 1217# CONFIG_CRYPTO_HW is not set
1218# CONFIG_BINARY_PRINTF is not set
1178 1219
1179# 1220#
1180# Library routines 1221# Library routines
1181# 1222#
1182CONFIG_BITREVERSE=y 1223CONFIG_BITREVERSE=y
1224CONFIG_GENERIC_FIND_LAST_BIT=y
1183CONFIG_CRC_CCITT=m 1225CONFIG_CRC_CCITT=m
1184CONFIG_CRC16=m 1226CONFIG_CRC16=m
1185CONFIG_CRC_T10DIF=y 1227CONFIG_CRC_T10DIF=y
@@ -1191,10 +1233,13 @@ CONFIG_ZLIB_INFLATE=y
1191CONFIG_ZLIB_DEFLATE=m 1233CONFIG_ZLIB_DEFLATE=m
1192CONFIG_LZO_COMPRESS=m 1234CONFIG_LZO_COMPRESS=m
1193CONFIG_LZO_DECOMPRESS=m 1235CONFIG_LZO_DECOMPRESS=m
1236CONFIG_DECOMPRESS_GZIP=y
1237CONFIG_DECOMPRESS_BZIP2=y
1238CONFIG_DECOMPRESS_LZMA=y
1194CONFIG_TEXTSEARCH=y 1239CONFIG_TEXTSEARCH=y
1195CONFIG_TEXTSEARCH_KMP=m 1240CONFIG_TEXTSEARCH_KMP=m
1196CONFIG_TEXTSEARCH_BM=m 1241CONFIG_TEXTSEARCH_BM=m
1197CONFIG_TEXTSEARCH_FSM=m 1242CONFIG_TEXTSEARCH_FSM=m
1198CONFIG_PLIST=y
1199CONFIG_HAS_IOMEM=y 1243CONFIG_HAS_IOMEM=y
1200CONFIG_HAS_DMA=y 1244CONFIG_HAS_DMA=y
1245CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig
index 935108d115a0..5fff58196b3e 100644
--- a/arch/m68k/configs/apollo_defconfig
+++ b/arch/m68k/configs/apollo_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:43 2008 4# Wed Apr 22 20:47:54 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -140,12 +151,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
140CONFIG_NEED_MULTIPLE_NODES=y 151CONFIG_NEED_MULTIPLE_NODES=y
141CONFIG_PAGEFLAGS_EXTENDED=y 152CONFIG_PAGEFLAGS_EXTENDED=y
142CONFIG_SPLIT_PTLOCK_CPUS=4 153CONFIG_SPLIT_PTLOCK_CPUS=4
143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set 154# CONFIG_PHYS_ADDR_T_64BIT is not set
145CONFIG_ZONE_DMA_FLAG=1 155CONFIG_ZONE_DMA_FLAG=1
146CONFIG_BOUNCE=y 156CONFIG_BOUNCE=y
147CONFIG_VIRT_TO_BUS=y 157CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y 158CONFIG_UNEVICTABLE_LRU=y
159CONFIG_HAVE_MLOCK=y
160CONFIG_HAVE_MLOCKED_PAGE_BIT=y
149 161
150# 162#
151# General setup 163# General setup
@@ -256,6 +268,7 @@ CONFIG_NETFILTER_XTABLES=m
256CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 268CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
257CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 269CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
258CONFIG_NETFILTER_XT_TARGET_DSCP=m 270CONFIG_NETFILTER_XT_TARGET_DSCP=m
271CONFIG_NETFILTER_XT_TARGET_HL=m
259CONFIG_NETFILTER_XT_TARGET_MARK=m 272CONFIG_NETFILTER_XT_TARGET_MARK=m
260CONFIG_NETFILTER_XT_TARGET_NFLOG=m 273CONFIG_NETFILTER_XT_TARGET_NFLOG=m
261CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 274CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -264,6 +277,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
264CONFIG_NETFILTER_XT_TARGET_TRACE=m 277CONFIG_NETFILTER_XT_TARGET_TRACE=m
265CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 278CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
266CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 279CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
280CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
267CONFIG_NETFILTER_XT_MATCH_COMMENT=m 281CONFIG_NETFILTER_XT_MATCH_COMMENT=m
268CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 282CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
269CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 283CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -274,6 +288,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
274CONFIG_NETFILTER_XT_MATCH_ESP=m 288CONFIG_NETFILTER_XT_MATCH_ESP=m
275CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 289CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
276CONFIG_NETFILTER_XT_MATCH_HELPER=m 290CONFIG_NETFILTER_XT_MATCH_HELPER=m
291CONFIG_NETFILTER_XT_MATCH_HL=m
277CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 292CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
278CONFIG_NETFILTER_XT_MATCH_LENGTH=m 293CONFIG_NETFILTER_XT_MATCH_LENGTH=m
279CONFIG_NETFILTER_XT_MATCH_LIMIT=m 294CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -352,25 +367,20 @@ CONFIG_IP6_NF_MATCH_HL=m
352CONFIG_IP6_NF_MATCH_IPV6HEADER=m 367CONFIG_IP6_NF_MATCH_IPV6HEADER=m
353CONFIG_IP6_NF_MATCH_MH=m 368CONFIG_IP6_NF_MATCH_MH=m
354CONFIG_IP6_NF_MATCH_RT=m 369CONFIG_IP6_NF_MATCH_RT=m
370CONFIG_IP6_NF_TARGET_HL=m
355CONFIG_IP6_NF_TARGET_LOG=m 371CONFIG_IP6_NF_TARGET_LOG=m
356CONFIG_IP6_NF_FILTER=m 372CONFIG_IP6_NF_FILTER=m
357CONFIG_IP6_NF_TARGET_REJECT=m 373CONFIG_IP6_NF_TARGET_REJECT=m
358CONFIG_IP6_NF_MANGLE=m 374CONFIG_IP6_NF_MANGLE=m
359CONFIG_IP6_NF_TARGET_HL=m
360CONFIG_IP6_NF_RAW=m 375CONFIG_IP6_NF_RAW=m
361CONFIG_IP_DCCP=m 376CONFIG_IP_DCCP=m
362CONFIG_INET_DCCP_DIAG=m 377CONFIG_INET_DCCP_DIAG=m
363CONFIG_IP_DCCP_ACKVEC=y
364 378
365# 379#
366# DCCP CCIDs Configuration (EXPERIMENTAL) 380# DCCP CCIDs Configuration (EXPERIMENTAL)
367# 381#
368CONFIG_IP_DCCP_CCID2=m
369# CONFIG_IP_DCCP_CCID2_DEBUG is not set 382# CONFIG_IP_DCCP_CCID2_DEBUG is not set
370CONFIG_IP_DCCP_CCID3=m 383# CONFIG_IP_DCCP_CCID3 is not set
371# CONFIG_IP_DCCP_CCID3_DEBUG is not set
372CONFIG_IP_DCCP_CCID3_RTO=100
373CONFIG_IP_DCCP_TFRC_LIB=m
374CONFIG_IP_SCTP=m 384CONFIG_IP_SCTP=m
375# CONFIG_SCTP_DBG_MSG is not set 385# CONFIG_SCTP_DBG_MSG is not set
376# CONFIG_SCTP_DBG_OBJCNT is not set 386# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -392,8 +402,10 @@ CONFIG_ATALK=m
392# CONFIG_LAPB is not set 402# CONFIG_LAPB is not set
393# CONFIG_ECONET is not set 403# CONFIG_ECONET is not set
394# CONFIG_WAN_ROUTER is not set 404# CONFIG_WAN_ROUTER is not set
405# CONFIG_PHONET is not set
395# CONFIG_NET_SCHED is not set 406# CONFIG_NET_SCHED is not set
396CONFIG_NET_CLS_ROUTE=y 407CONFIG_NET_CLS_ROUTE=y
408# CONFIG_DCB is not set
397 409
398# 410#
399# Network testing 411# Network testing
@@ -404,8 +416,8 @@ CONFIG_NET_CLS_ROUTE=y
404# CONFIG_IRDA is not set 416# CONFIG_IRDA is not set
405# CONFIG_BT is not set 417# CONFIG_BT is not set
406# CONFIG_AF_RXRPC is not set 418# CONFIG_AF_RXRPC is not set
407# CONFIG_PHONET is not set
408# CONFIG_WIRELESS is not set 419# CONFIG_WIRELESS is not set
420# CONFIG_WIMAX is not set
409# CONFIG_RFKILL is not set 421# CONFIG_RFKILL is not set
410# CONFIG_NET_9P is not set 422# CONFIG_NET_9P is not set
411 423
@@ -441,9 +453,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
441CONFIG_ATA_OVER_ETH=m 453CONFIG_ATA_OVER_ETH=m
442# CONFIG_BLK_DEV_HD is not set 454# CONFIG_BLK_DEV_HD is not set
443CONFIG_MISC_DEVICES=y 455CONFIG_MISC_DEVICES=y
444# CONFIG_EEPROM_93CX6 is not set
445# CONFIG_ENCLOSURE_SERVICES is not set 456# CONFIG_ENCLOSURE_SERVICES is not set
446# CONFIG_C2PORT is not set 457# CONFIG_C2PORT is not set
458
459#
460# EEPROM support
461#
462# CONFIG_EEPROM_93CX6 is not set
447CONFIG_HAVE_IDE=y 463CONFIG_HAVE_IDE=y
448# CONFIG_IDE is not set 464# CONFIG_IDE is not set
449 465
@@ -491,8 +507,11 @@ CONFIG_SCSI_SRP_ATTRS=m
491CONFIG_SCSI_SRP_TGT_ATTRS=y 507CONFIG_SCSI_SRP_TGT_ATTRS=y
492CONFIG_SCSI_LOWLEVEL=y 508CONFIG_SCSI_LOWLEVEL=y
493CONFIG_ISCSI_TCP=m 509CONFIG_ISCSI_TCP=m
510# CONFIG_LIBFC is not set
511# CONFIG_LIBFCOE is not set
494# CONFIG_SCSI_DEBUG is not set 512# CONFIG_SCSI_DEBUG is not set
495# CONFIG_SCSI_DH is not set 513# CONFIG_SCSI_DH is not set
514# CONFIG_SCSI_OSD_INITIATOR is not set
496CONFIG_MD=y 515CONFIG_MD=y
497CONFIG_BLK_DEV_MD=m 516CONFIG_BLK_DEV_MD=m
498CONFIG_MD_LINEAR=m 517CONFIG_MD_LINEAR=m
@@ -500,7 +519,7 @@ CONFIG_MD_RAID0=m
500CONFIG_MD_RAID1=m 519CONFIG_MD_RAID1=m
501# CONFIG_MD_RAID10 is not set 520# CONFIG_MD_RAID10 is not set
502CONFIG_MD_RAID456=m 521CONFIG_MD_RAID456=m
503CONFIG_MD_RAID5_RESHAPE=y 522CONFIG_MD_RAID6_PQ=m
504# CONFIG_MD_MULTIPATH is not set 523# CONFIG_MD_MULTIPATH is not set
505# CONFIG_MD_FAULTY is not set 524# CONFIG_MD_FAULTY is not set
506CONFIG_BLK_DEV_DM=m 525CONFIG_BLK_DEV_DM=m
@@ -513,6 +532,7 @@ CONFIG_DM_MULTIPATH=m
513# CONFIG_DM_DELAY is not set 532# CONFIG_DM_DELAY is not set
514CONFIG_DM_UEVENT=y 533CONFIG_DM_UEVENT=y
515CONFIG_NETDEVICES=y 534CONFIG_NETDEVICES=y
535CONFIG_COMPAT_NET_DEV_OPS=y
516CONFIG_DUMMY=m 536CONFIG_DUMMY=m
517# CONFIG_BONDING is not set 537# CONFIG_BONDING is not set
518CONFIG_MACVLAN=m 538CONFIG_MACVLAN=m
@@ -522,6 +542,8 @@ CONFIG_VETH=m
522# CONFIG_PHYLIB is not set 542# CONFIG_PHYLIB is not set
523CONFIG_NET_ETHERNET=y 543CONFIG_NET_ETHERNET=y
524# CONFIG_MII is not set 544# CONFIG_MII is not set
545# CONFIG_ETHOC is not set
546# CONFIG_DNET is not set
525# CONFIG_IBM_NEW_EMAC_ZMII is not set 547# CONFIG_IBM_NEW_EMAC_ZMII is not set
526# CONFIG_IBM_NEW_EMAC_RGMII is not set 548# CONFIG_IBM_NEW_EMAC_RGMII is not set
527# CONFIG_IBM_NEW_EMAC_TAH is not set 549# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -538,7 +560,10 @@ CONFIG_NET_ETHERNET=y
538# 560#
539# CONFIG_WLAN_PRE80211 is not set 561# CONFIG_WLAN_PRE80211 is not set
540# CONFIG_WLAN_80211 is not set 562# CONFIG_WLAN_80211 is not set
541# CONFIG_IWLWIFI_LEDS is not set 563
564#
565# Enable WiMAX (Networking options) to see the WiMAX drivers
566#
542# CONFIG_WAN is not set 567# CONFIG_WAN is not set
543CONFIG_PPP=m 568CONFIG_PPP=m
544# CONFIG_PPP_MULTILINK is not set 569# CONFIG_PPP_MULTILINK is not set
@@ -596,7 +621,6 @@ CONFIG_MOUSE_PS2=m
596CONFIG_MOUSE_PS2_ALPS=y 621CONFIG_MOUSE_PS2_ALPS=y
597CONFIG_MOUSE_PS2_LOGIPS2PP=y 622CONFIG_MOUSE_PS2_LOGIPS2PP=y
598CONFIG_MOUSE_PS2_SYNAPTICS=y 623CONFIG_MOUSE_PS2_SYNAPTICS=y
599CONFIG_MOUSE_PS2_LIFEBOOK=y
600CONFIG_MOUSE_PS2_TRACKPOINT=y 624CONFIG_MOUSE_PS2_TRACKPOINT=y
601# CONFIG_MOUSE_PS2_ELANTECH is not set 625# CONFIG_MOUSE_PS2_ELANTECH is not set
602# CONFIG_MOUSE_PS2_TOUCHKIT is not set 626# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -636,6 +660,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
636# Non-8250 serial port support 660# Non-8250 serial port support
637# 661#
638CONFIG_UNIX98_PTYS=y 662CONFIG_UNIX98_PTYS=y
663# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
639CONFIG_LEGACY_PTYS=y 664CONFIG_LEGACY_PTYS=y
640CONFIG_LEGACY_PTY_COUNT=256 665CONFIG_LEGACY_PTY_COUNT=256
641# CONFIG_IPMI_HANDLER is not set 666# CONFIG_IPMI_HANDLER is not set
@@ -718,6 +743,7 @@ CONFIG_FB_APOLLO=y
718# CONFIG_FB_VIRTUAL is not set 743# CONFIG_FB_VIRTUAL is not set
719# CONFIG_FB_METRONOME is not set 744# CONFIG_FB_METRONOME is not set
720# CONFIG_FB_MB862XX is not set 745# CONFIG_FB_MB862XX is not set
746# CONFIG_FB_BROADSHEET is not set
721# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 747# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
722 748
723# 749#
@@ -749,7 +775,6 @@ CONFIG_HIDRAW=y
749# 775#
750# Special HID drivers 776# Special HID drivers
751# 777#
752CONFIG_HID_COMPAT=y
753# CONFIG_USB_SUPPORT is not set 778# CONFIG_USB_SUPPORT is not set
754# CONFIG_MMC is not set 779# CONFIG_MMC is not set
755# CONFIG_MEMSTICK is not set 780# CONFIG_MEMSTICK is not set
@@ -757,9 +782,9 @@ CONFIG_HID_COMPAT=y
757# CONFIG_ACCESSIBILITY is not set 782# CONFIG_ACCESSIBILITY is not set
758# CONFIG_RTC_CLASS is not set 783# CONFIG_RTC_CLASS is not set
759# CONFIG_DMADEVICES is not set 784# CONFIG_DMADEVICES is not set
785# CONFIG_AUXDISPLAY is not set
760# CONFIG_UIO is not set 786# CONFIG_UIO is not set
761# CONFIG_STAGING is not set 787# CONFIG_STAGING is not set
762CONFIG_STAGING_EXCLUDE_BUILD=y
763 788
764# 789#
765# Character devices 790# Character devices
@@ -774,6 +799,7 @@ CONFIG_EXT2_FS=y
774# CONFIG_EXT2_FS_XATTR is not set 799# CONFIG_EXT2_FS_XATTR is not set
775# CONFIG_EXT2_FS_XIP is not set 800# CONFIG_EXT2_FS_XIP is not set
776CONFIG_EXT3_FS=y 801CONFIG_EXT3_FS=y
802# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
777# CONFIG_EXT3_FS_XATTR is not set 803# CONFIG_EXT3_FS_XATTR is not set
778# CONFIG_EXT4_FS is not set 804# CONFIG_EXT4_FS is not set
779CONFIG_JBD=y 805CONFIG_JBD=y
@@ -800,13 +826,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
800# CONFIG_OCFS2_FS_STATS is not set 826# CONFIG_OCFS2_FS_STATS is not set
801# CONFIG_OCFS2_DEBUG_MASKLOG is not set 827# CONFIG_OCFS2_DEBUG_MASKLOG is not set
802# CONFIG_OCFS2_DEBUG_FS is not set 828# CONFIG_OCFS2_DEBUG_FS is not set
803# CONFIG_OCFS2_COMPAT_JBD is not set 829# CONFIG_OCFS2_FS_POSIX_ACL is not set
830# CONFIG_BTRFS_FS is not set
804CONFIG_DNOTIFY=y 831CONFIG_DNOTIFY=y
805CONFIG_INOTIFY=y 832CONFIG_INOTIFY=y
806CONFIG_INOTIFY_USER=y 833CONFIG_INOTIFY_USER=y
807CONFIG_QUOTA=y 834CONFIG_QUOTA=y
808CONFIG_QUOTA_NETLINK_INTERFACE=y 835CONFIG_QUOTA_NETLINK_INTERFACE=y
809# CONFIG_PRINT_QUOTA_WARNING is not set 836# CONFIG_PRINT_QUOTA_WARNING is not set
837CONFIG_QUOTA_TREE=m
810# CONFIG_QFMT_V1 is not set 838# CONFIG_QFMT_V1 is not set
811# CONFIG_QFMT_V2 is not set 839# CONFIG_QFMT_V2 is not set
812CONFIG_QUOTACTL=y 840CONFIG_QUOTACTL=y
@@ -815,6 +843,11 @@ CONFIG_AUTOFS4_FS=m
815CONFIG_FUSE_FS=m 843CONFIG_FUSE_FS=m
816 844
817# 845#
846# Caches
847#
848# CONFIG_FSCACHE is not set
849
850#
818# CD-ROM/DVD Filesystems 851# CD-ROM/DVD Filesystems
819# 852#
820CONFIG_ISO9660_FS=y 853CONFIG_ISO9660_FS=y
@@ -845,10 +878,7 @@ CONFIG_TMPFS=y
845# CONFIG_TMPFS_POSIX_ACL is not set 878# CONFIG_TMPFS_POSIX_ACL is not set
846# CONFIG_HUGETLB_PAGE is not set 879# CONFIG_HUGETLB_PAGE is not set
847CONFIG_CONFIGFS_FS=m 880CONFIG_CONFIGFS_FS=m
848 881CONFIG_MISC_FILESYSTEMS=y
849#
850# Miscellaneous filesystems
851#
852# CONFIG_ADFS_FS is not set 882# CONFIG_ADFS_FS is not set
853CONFIG_AFFS_FS=m 883CONFIG_AFFS_FS=m
854CONFIG_HFS_FS=m 884CONFIG_HFS_FS=m
@@ -857,6 +887,9 @@ CONFIG_HFSPLUS_FS=m
857# CONFIG_BFS_FS is not set 887# CONFIG_BFS_FS is not set
858# CONFIG_EFS_FS is not set 888# CONFIG_EFS_FS is not set
859CONFIG_CRAMFS=m 889CONFIG_CRAMFS=m
890CONFIG_SQUASHFS=m
891# CONFIG_SQUASHFS_EMBEDDED is not set
892CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
860# CONFIG_VXFS_FS is not set 893# CONFIG_VXFS_FS is not set
861CONFIG_MINIX_FS=y 894CONFIG_MINIX_FS=y
862# CONFIG_OMFS_FS is not set 895# CONFIG_OMFS_FS is not set
@@ -867,6 +900,7 @@ CONFIG_SYSV_FS=m
867CONFIG_UFS_FS=m 900CONFIG_UFS_FS=m
868# CONFIG_UFS_FS_WRITE is not set 901# CONFIG_UFS_FS_WRITE is not set
869# CONFIG_UFS_DEBUG is not set 902# CONFIG_UFS_DEBUG is not set
903# CONFIG_NILFS2_FS is not set
870CONFIG_NETWORK_FILESYSTEMS=y 904CONFIG_NETWORK_FILESYSTEMS=y
871CONFIG_NFS_FS=y 905CONFIG_NFS_FS=y
872CONFIG_NFS_V3=y 906CONFIG_NFS_V3=y
@@ -883,7 +917,6 @@ CONFIG_EXPORTFS=m
883CONFIG_NFS_COMMON=y 917CONFIG_NFS_COMMON=y
884CONFIG_SUNRPC=y 918CONFIG_SUNRPC=y
885CONFIG_SUNRPC_GSS=y 919CONFIG_SUNRPC_GSS=y
886# CONFIG_SUNRPC_REGISTER_V4 is not set
887CONFIG_RPCSEC_GSS_KRB5=y 920CONFIG_RPCSEC_GSS_KRB5=y
888# CONFIG_RPCSEC_GSS_SPKM3 is not set 921# CONFIG_RPCSEC_GSS_SPKM3 is not set
889CONFIG_SMB_FS=m 922CONFIG_SMB_FS=m
@@ -958,11 +991,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
958CONFIG_DEBUG_MEMORY_INIT=y 991CONFIG_DEBUG_MEMORY_INIT=y
959# CONFIG_RCU_CPU_STALL_DETECTOR is not set 992# CONFIG_RCU_CPU_STALL_DETECTOR is not set
960CONFIG_SYSCTL_SYSCALL_CHECK=y 993CONFIG_SYSCTL_SYSCALL_CHECK=y
961
962#
963# Tracers
964#
965# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
966# CONFIG_SAMPLES is not set 994# CONFIG_SAMPLES is not set
967 995
968# 996#
@@ -983,13 +1011,21 @@ CONFIG_CRYPTO=y
983# 1011#
984# CONFIG_CRYPTO_FIPS is not set 1012# CONFIG_CRYPTO_FIPS is not set
985CONFIG_CRYPTO_ALGAPI=y 1013CONFIG_CRYPTO_ALGAPI=y
986CONFIG_CRYPTO_AEAD=y 1014CONFIG_CRYPTO_ALGAPI2=y
1015CONFIG_CRYPTO_AEAD=m
1016CONFIG_CRYPTO_AEAD2=y
987CONFIG_CRYPTO_BLKCIPHER=y 1017CONFIG_CRYPTO_BLKCIPHER=y
1018CONFIG_CRYPTO_BLKCIPHER2=y
988CONFIG_CRYPTO_HASH=y 1019CONFIG_CRYPTO_HASH=y
989CONFIG_CRYPTO_RNG=y 1020CONFIG_CRYPTO_HASH2=y
1021CONFIG_CRYPTO_RNG=m
1022CONFIG_CRYPTO_RNG2=y
1023CONFIG_CRYPTO_PCOMP=y
990CONFIG_CRYPTO_MANAGER=y 1024CONFIG_CRYPTO_MANAGER=y
1025CONFIG_CRYPTO_MANAGER2=y
991CONFIG_CRYPTO_GF128MUL=m 1026CONFIG_CRYPTO_GF128MUL=m
992CONFIG_CRYPTO_NULL=m 1027CONFIG_CRYPTO_NULL=m
1028CONFIG_CRYPTO_WORKQUEUE=y
993CONFIG_CRYPTO_CRYPTD=m 1029CONFIG_CRYPTO_CRYPTD=m
994CONFIG_CRYPTO_AUTHENC=m 1030CONFIG_CRYPTO_AUTHENC=m
995CONFIG_CRYPTO_TEST=m 1031CONFIG_CRYPTO_TEST=m
@@ -1059,6 +1095,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1059# Compression 1095# Compression
1060# 1096#
1061CONFIG_CRYPTO_DEFLATE=m 1097CONFIG_CRYPTO_DEFLATE=m
1098CONFIG_CRYPTO_ZLIB=m
1062CONFIG_CRYPTO_LZO=m 1099CONFIG_CRYPTO_LZO=m
1063 1100
1064# 1101#
@@ -1066,11 +1103,13 @@ CONFIG_CRYPTO_LZO=m
1066# 1103#
1067# CONFIG_CRYPTO_ANSI_CPRNG is not set 1104# CONFIG_CRYPTO_ANSI_CPRNG is not set
1068# CONFIG_CRYPTO_HW is not set 1105# CONFIG_CRYPTO_HW is not set
1106# CONFIG_BINARY_PRINTF is not set
1069 1107
1070# 1108#
1071# Library routines 1109# Library routines
1072# 1110#
1073CONFIG_BITREVERSE=y 1111CONFIG_BITREVERSE=y
1112CONFIG_GENERIC_FIND_LAST_BIT=y
1074CONFIG_CRC_CCITT=m 1113CONFIG_CRC_CCITT=m
1075CONFIG_CRC16=m 1114CONFIG_CRC16=m
1076CONFIG_CRC_T10DIF=y 1115CONFIG_CRC_T10DIF=y
@@ -1082,10 +1121,13 @@ CONFIG_ZLIB_INFLATE=y
1082CONFIG_ZLIB_DEFLATE=m 1121CONFIG_ZLIB_DEFLATE=m
1083CONFIG_LZO_COMPRESS=m 1122CONFIG_LZO_COMPRESS=m
1084CONFIG_LZO_DECOMPRESS=m 1123CONFIG_LZO_DECOMPRESS=m
1124CONFIG_DECOMPRESS_GZIP=y
1125CONFIG_DECOMPRESS_BZIP2=y
1126CONFIG_DECOMPRESS_LZMA=y
1085CONFIG_TEXTSEARCH=y 1127CONFIG_TEXTSEARCH=y
1086CONFIG_TEXTSEARCH_KMP=m 1128CONFIG_TEXTSEARCH_KMP=m
1087CONFIG_TEXTSEARCH_BM=m 1129CONFIG_TEXTSEARCH_BM=m
1088CONFIG_TEXTSEARCH_FSM=m 1130CONFIG_TEXTSEARCH_FSM=m
1089CONFIG_PLIST=y
1090CONFIG_HAS_IOMEM=y 1131CONFIG_HAS_IOMEM=y
1091CONFIG_HAS_DMA=y 1132CONFIG_HAS_DMA=y
1133CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_defconfig
index a594a1d47b62..d92a90e03ecb 100644
--- a/arch/m68k/configs/atari_defconfig
+++ b/arch/m68k/configs/atari_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:44 2008 4# Wed Apr 22 20:47:56 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -140,12 +151,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
140CONFIG_NEED_MULTIPLE_NODES=y 151CONFIG_NEED_MULTIPLE_NODES=y
141CONFIG_PAGEFLAGS_EXTENDED=y 152CONFIG_PAGEFLAGS_EXTENDED=y
142CONFIG_SPLIT_PTLOCK_CPUS=4 153CONFIG_SPLIT_PTLOCK_CPUS=4
143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set 154# CONFIG_PHYS_ADDR_T_64BIT is not set
145CONFIG_ZONE_DMA_FLAG=1 155CONFIG_ZONE_DMA_FLAG=1
146CONFIG_BOUNCE=y 156CONFIG_BOUNCE=y
147CONFIG_VIRT_TO_BUS=y 157CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y 158CONFIG_UNEVICTABLE_LRU=y
159CONFIG_HAVE_MLOCK=y
160CONFIG_HAVE_MLOCKED_PAGE_BIT=y
149 161
150# 162#
151# General setup 163# General setup
@@ -180,7 +192,10 @@ CONFIG_INET=y
180# CONFIG_IP_MULTICAST is not set 192# CONFIG_IP_MULTICAST is not set
181# CONFIG_IP_ADVANCED_ROUTER is not set 193# CONFIG_IP_ADVANCED_ROUTER is not set
182CONFIG_IP_FIB_HASH=y 194CONFIG_IP_FIB_HASH=y
183# CONFIG_IP_PNP is not set 195CONFIG_IP_PNP=y
196# CONFIG_IP_PNP_DHCP is not set
197# CONFIG_IP_PNP_BOOTP is not set
198# CONFIG_IP_PNP_RARP is not set
184CONFIG_NET_IPIP=m 199CONFIG_NET_IPIP=m
185CONFIG_NET_IPGRE=m 200CONFIG_NET_IPGRE=m
186# CONFIG_ARPD is not set 201# CONFIG_ARPD is not set
@@ -254,6 +269,7 @@ CONFIG_NETFILTER_XTABLES=m
254CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 269CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
255CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 270CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
256CONFIG_NETFILTER_XT_TARGET_DSCP=m 271CONFIG_NETFILTER_XT_TARGET_DSCP=m
272CONFIG_NETFILTER_XT_TARGET_HL=m
257CONFIG_NETFILTER_XT_TARGET_MARK=m 273CONFIG_NETFILTER_XT_TARGET_MARK=m
258CONFIG_NETFILTER_XT_TARGET_NFLOG=m 274CONFIG_NETFILTER_XT_TARGET_NFLOG=m
259CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 275CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -262,6 +278,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
262CONFIG_NETFILTER_XT_TARGET_TRACE=m 278CONFIG_NETFILTER_XT_TARGET_TRACE=m
263CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 279CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
264CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 280CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
281CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
265CONFIG_NETFILTER_XT_MATCH_COMMENT=m 282CONFIG_NETFILTER_XT_MATCH_COMMENT=m
266CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 283CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
267CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 284CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -272,6 +289,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
272CONFIG_NETFILTER_XT_MATCH_ESP=m 289CONFIG_NETFILTER_XT_MATCH_ESP=m
273CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 290CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
274CONFIG_NETFILTER_XT_MATCH_HELPER=m 291CONFIG_NETFILTER_XT_MATCH_HELPER=m
292CONFIG_NETFILTER_XT_MATCH_HL=m
275CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 293CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
276CONFIG_NETFILTER_XT_MATCH_LENGTH=m 294CONFIG_NETFILTER_XT_MATCH_LENGTH=m
277CONFIG_NETFILTER_XT_MATCH_LIMIT=m 295CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -350,25 +368,20 @@ CONFIG_IP6_NF_MATCH_HL=m
350CONFIG_IP6_NF_MATCH_IPV6HEADER=m 368CONFIG_IP6_NF_MATCH_IPV6HEADER=m
351CONFIG_IP6_NF_MATCH_MH=m 369CONFIG_IP6_NF_MATCH_MH=m
352CONFIG_IP6_NF_MATCH_RT=m 370CONFIG_IP6_NF_MATCH_RT=m
371CONFIG_IP6_NF_TARGET_HL=m
353CONFIG_IP6_NF_TARGET_LOG=m 372CONFIG_IP6_NF_TARGET_LOG=m
354CONFIG_IP6_NF_FILTER=m 373CONFIG_IP6_NF_FILTER=m
355CONFIG_IP6_NF_TARGET_REJECT=m 374CONFIG_IP6_NF_TARGET_REJECT=m
356CONFIG_IP6_NF_MANGLE=m 375CONFIG_IP6_NF_MANGLE=m
357CONFIG_IP6_NF_TARGET_HL=m
358CONFIG_IP6_NF_RAW=m 376CONFIG_IP6_NF_RAW=m
359CONFIG_IP_DCCP=m 377CONFIG_IP_DCCP=m
360CONFIG_INET_DCCP_DIAG=m 378CONFIG_INET_DCCP_DIAG=m
361CONFIG_IP_DCCP_ACKVEC=y
362 379
363# 380#
364# DCCP CCIDs Configuration (EXPERIMENTAL) 381# DCCP CCIDs Configuration (EXPERIMENTAL)
365# 382#
366CONFIG_IP_DCCP_CCID2=m
367# CONFIG_IP_DCCP_CCID2_DEBUG is not set 383# CONFIG_IP_DCCP_CCID2_DEBUG is not set
368CONFIG_IP_DCCP_CCID3=m 384# CONFIG_IP_DCCP_CCID3 is not set
369# CONFIG_IP_DCCP_CCID3_DEBUG is not set
370CONFIG_IP_DCCP_CCID3_RTO=100
371CONFIG_IP_DCCP_TFRC_LIB=m
372CONFIG_IP_SCTP=m 385CONFIG_IP_SCTP=m
373# CONFIG_SCTP_DBG_MSG is not set 386# CONFIG_SCTP_DBG_MSG is not set
374# CONFIG_SCTP_DBG_OBJCNT is not set 387# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -390,8 +403,10 @@ CONFIG_ATALK=m
390# CONFIG_LAPB is not set 403# CONFIG_LAPB is not set
391# CONFIG_ECONET is not set 404# CONFIG_ECONET is not set
392# CONFIG_WAN_ROUTER is not set 405# CONFIG_WAN_ROUTER is not set
406# CONFIG_PHONET is not set
393# CONFIG_NET_SCHED is not set 407# CONFIG_NET_SCHED is not set
394CONFIG_NET_CLS_ROUTE=y 408CONFIG_NET_CLS_ROUTE=y
409# CONFIG_DCB is not set
395 410
396# 411#
397# Network testing 412# Network testing
@@ -402,8 +417,8 @@ CONFIG_NET_CLS_ROUTE=y
402# CONFIG_IRDA is not set 417# CONFIG_IRDA is not set
403# CONFIG_BT is not set 418# CONFIG_BT is not set
404# CONFIG_AF_RXRPC is not set 419# CONFIG_AF_RXRPC is not set
405# CONFIG_PHONET is not set
406# CONFIG_WIRELESS is not set 420# CONFIG_WIRELESS is not set
421# CONFIG_WIMAX is not set
407# CONFIG_RFKILL is not set 422# CONFIG_RFKILL is not set
408# CONFIG_NET_9P is not set 423# CONFIG_NET_9P is not set
409 424
@@ -445,15 +460,20 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
445CONFIG_ATA_OVER_ETH=m 460CONFIG_ATA_OVER_ETH=m
446# CONFIG_BLK_DEV_HD is not set 461# CONFIG_BLK_DEV_HD is not set
447CONFIG_MISC_DEVICES=y 462CONFIG_MISC_DEVICES=y
448# CONFIG_EEPROM_93CX6 is not set
449# CONFIG_ENCLOSURE_SERVICES is not set 463# CONFIG_ENCLOSURE_SERVICES is not set
450# CONFIG_C2PORT is not set 464# CONFIG_C2PORT is not set
465
466#
467# EEPROM support
468#
469# CONFIG_EEPROM_93CX6 is not set
451CONFIG_HAVE_IDE=y 470CONFIG_HAVE_IDE=y
452CONFIG_IDE=y 471CONFIG_IDE=y
453 472
454# 473#
455# Please see Documentation/ide/ide.txt for help/info on IDE drives 474# Please see Documentation/ide/ide.txt for help/info on IDE drives
456# 475#
476CONFIG_IDE_ATAPI=y
457# CONFIG_BLK_DEV_IDE_SATA is not set 477# CONFIG_BLK_DEV_IDE_SATA is not set
458CONFIG_IDE_GD=y 478CONFIG_IDE_GD=y
459CONFIG_IDE_GD_ATA=y 479CONFIG_IDE_GD_ATA=y
@@ -461,7 +481,6 @@ CONFIG_IDE_GD_ATA=y
461CONFIG_BLK_DEV_IDECD=y 481CONFIG_BLK_DEV_IDECD=y
462CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 482CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
463# CONFIG_BLK_DEV_IDETAPE is not set 483# CONFIG_BLK_DEV_IDETAPE is not set
464# CONFIG_BLK_DEV_IDESCSI is not set
465# CONFIG_IDE_TASK_IOCTL is not set 484# CONFIG_IDE_TASK_IOCTL is not set
466CONFIG_IDE_PROC_FS=y 485CONFIG_IDE_PROC_FS=y
467 486
@@ -516,11 +535,14 @@ CONFIG_SCSI_SRP_ATTRS=m
516CONFIG_SCSI_SRP_TGT_ATTRS=y 535CONFIG_SCSI_SRP_TGT_ATTRS=y
517CONFIG_SCSI_LOWLEVEL=y 536CONFIG_SCSI_LOWLEVEL=y
518CONFIG_ISCSI_TCP=m 537CONFIG_ISCSI_TCP=m
538# CONFIG_LIBFC is not set
539# CONFIG_LIBFCOE is not set
519# CONFIG_SCSI_DEBUG is not set 540# CONFIG_SCSI_DEBUG is not set
520CONFIG_ATARI_SCSI=y 541CONFIG_ATARI_SCSI=y
521# CONFIG_ATARI_SCSI_TOSHIBA_DELAY is not set 542# CONFIG_ATARI_SCSI_TOSHIBA_DELAY is not set
522# CONFIG_ATARI_SCSI_RESET_BOOT is not set 543# CONFIG_ATARI_SCSI_RESET_BOOT is not set
523# CONFIG_SCSI_DH is not set 544# CONFIG_SCSI_DH is not set
545# CONFIG_SCSI_OSD_INITIATOR is not set
524CONFIG_MD=y 546CONFIG_MD=y
525CONFIG_BLK_DEV_MD=m 547CONFIG_BLK_DEV_MD=m
526CONFIG_MD_LINEAR=m 548CONFIG_MD_LINEAR=m
@@ -528,7 +550,7 @@ CONFIG_MD_RAID0=m
528CONFIG_MD_RAID1=m 550CONFIG_MD_RAID1=m
529# CONFIG_MD_RAID10 is not set 551# CONFIG_MD_RAID10 is not set
530CONFIG_MD_RAID456=m 552CONFIG_MD_RAID456=m
531CONFIG_MD_RAID5_RESHAPE=y 553CONFIG_MD_RAID6_PQ=m
532# CONFIG_MD_MULTIPATH is not set 554# CONFIG_MD_MULTIPATH is not set
533# CONFIG_MD_FAULTY is not set 555# CONFIG_MD_FAULTY is not set
534CONFIG_BLK_DEV_DM=m 556CONFIG_BLK_DEV_DM=m
@@ -541,6 +563,7 @@ CONFIG_DM_MULTIPATH=m
541# CONFIG_DM_DELAY is not set 563# CONFIG_DM_DELAY is not set
542CONFIG_DM_UEVENT=y 564CONFIG_DM_UEVENT=y
543CONFIG_NETDEVICES=y 565CONFIG_NETDEVICES=y
566CONFIG_COMPAT_NET_DEV_OPS=y
544CONFIG_DUMMY=m 567CONFIG_DUMMY=m
545# CONFIG_BONDING is not set 568# CONFIG_BONDING is not set
546CONFIG_MACVLAN=m 569CONFIG_MACVLAN=m
@@ -550,7 +573,9 @@ CONFIG_VETH=m
550# CONFIG_PHYLIB is not set 573# CONFIG_PHYLIB is not set
551CONFIG_NET_ETHERNET=y 574CONFIG_NET_ETHERNET=y
552CONFIG_MII=y 575CONFIG_MII=y
553CONFIG_ATARILANCE=m 576CONFIG_ATARILANCE=y
577# CONFIG_ETHOC is not set
578# CONFIG_DNET is not set
554# CONFIG_IBM_NEW_EMAC_ZMII is not set 579# CONFIG_IBM_NEW_EMAC_ZMII is not set
555# CONFIG_IBM_NEW_EMAC_RGMII is not set 580# CONFIG_IBM_NEW_EMAC_RGMII is not set
556# CONFIG_IBM_NEW_EMAC_TAH is not set 581# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -568,7 +593,10 @@ CONFIG_ATARILANCE=m
568# 593#
569# CONFIG_WLAN_PRE80211 is not set 594# CONFIG_WLAN_PRE80211 is not set
570# CONFIG_WLAN_80211 is not set 595# CONFIG_WLAN_80211 is not set
571# CONFIG_IWLWIFI_LEDS is not set 596
597#
598# Enable WiMAX (Networking options) to see the WiMAX drivers
599#
572# CONFIG_WAN is not set 600# CONFIG_WAN is not set
573# CONFIG_PLIP is not set 601# CONFIG_PLIP is not set
574CONFIG_PPP=m 602CONFIG_PPP=m
@@ -625,11 +653,10 @@ CONFIG_INPUT_KEYBOARD=y
625CONFIG_ATARI_KBD_CORE=y 653CONFIG_ATARI_KBD_CORE=y
626CONFIG_KEYBOARD_ATARI=y 654CONFIG_KEYBOARD_ATARI=y
627CONFIG_INPUT_MOUSE=y 655CONFIG_INPUT_MOUSE=y
628CONFIG_MOUSE_PS2=y 656CONFIG_MOUSE_PS2=m
629CONFIG_MOUSE_PS2_ALPS=y 657CONFIG_MOUSE_PS2_ALPS=y
630CONFIG_MOUSE_PS2_LOGIPS2PP=y 658CONFIG_MOUSE_PS2_LOGIPS2PP=y
631CONFIG_MOUSE_PS2_SYNAPTICS=y 659CONFIG_MOUSE_PS2_SYNAPTICS=y
632CONFIG_MOUSE_PS2_LIFEBOOK=y
633CONFIG_MOUSE_PS2_TRACKPOINT=y 660CONFIG_MOUSE_PS2_TRACKPOINT=y
634# CONFIG_MOUSE_PS2_ELANTECH is not set 661# CONFIG_MOUSE_PS2_ELANTECH is not set
635# CONFIG_MOUSE_PS2_TOUCHKIT is not set 662# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -649,7 +676,7 @@ CONFIG_INPUT_M68K_BEEP=m
649CONFIG_SERIO=y 676CONFIG_SERIO=y
650# CONFIG_SERIO_SERPORT is not set 677# CONFIG_SERIO_SERPORT is not set
651# CONFIG_SERIO_PARKBD is not set 678# CONFIG_SERIO_PARKBD is not set
652CONFIG_SERIO_LIBPS2=y 679CONFIG_SERIO_LIBPS2=m
653# CONFIG_SERIO_RAW is not set 680# CONFIG_SERIO_RAW is not set
654# CONFIG_GAMEPORT is not set 681# CONFIG_GAMEPORT is not set
655 682
@@ -673,6 +700,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
673# Non-8250 serial port support 700# Non-8250 serial port support
674# 701#
675CONFIG_UNIX98_PTYS=y 702CONFIG_UNIX98_PTYS=y
703# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
676CONFIG_LEGACY_PTYS=y 704CONFIG_LEGACY_PTYS=y
677CONFIG_LEGACY_PTY_COUNT=256 705CONFIG_LEGACY_PTY_COUNT=256
678CONFIG_PRINTER=m 706CONFIG_PRINTER=m
@@ -760,6 +788,7 @@ CONFIG_FB_ATARI=y
760# CONFIG_FB_VIRTUAL is not set 788# CONFIG_FB_VIRTUAL is not set
761# CONFIG_FB_METRONOME is not set 789# CONFIG_FB_METRONOME is not set
762# CONFIG_FB_MB862XX is not set 790# CONFIG_FB_MB862XX is not set
791# CONFIG_FB_BROADSHEET is not set
763# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 792# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
764 793
765# 794#
@@ -794,7 +823,6 @@ CONFIG_HIDRAW=y
794# 823#
795# Special HID drivers 824# Special HID drivers
796# 825#
797CONFIG_HID_COMPAT=y
798# CONFIG_USB_SUPPORT is not set 826# CONFIG_USB_SUPPORT is not set
799# CONFIG_MMC is not set 827# CONFIG_MMC is not set
800# CONFIG_MEMSTICK is not set 828# CONFIG_MEMSTICK is not set
@@ -805,14 +833,14 @@ CONFIG_HID_COMPAT=y
805# CONFIG_AUXDISPLAY is not set 833# CONFIG_AUXDISPLAY is not set
806# CONFIG_UIO is not set 834# CONFIG_UIO is not set
807# CONFIG_STAGING is not set 835# CONFIG_STAGING is not set
808CONFIG_STAGING_EXCLUDE_BUILD=y
809 836
810# 837#
811# Character devices 838# Character devices
812# 839#
813CONFIG_ATARI_MFPSER=m 840CONFIG_ATARI_MFPSER=y
814CONFIG_ATARI_MIDI=m 841CONFIG_ATARI_MIDI=y
815CONFIG_ATARI_DSP56K=m 842CONFIG_ATARI_DSP56K=m
843CONFIG_SERIAL_CONSOLE=y
816 844
817# 845#
818# File systems 846# File systems
@@ -821,6 +849,7 @@ CONFIG_EXT2_FS=y
821# CONFIG_EXT2_FS_XATTR is not set 849# CONFIG_EXT2_FS_XATTR is not set
822# CONFIG_EXT2_FS_XIP is not set 850# CONFIG_EXT2_FS_XIP is not set
823CONFIG_EXT3_FS=y 851CONFIG_EXT3_FS=y
852# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
824# CONFIG_EXT3_FS_XATTR is not set 853# CONFIG_EXT3_FS_XATTR is not set
825# CONFIG_EXT4_FS is not set 854# CONFIG_EXT4_FS is not set
826CONFIG_JBD=y 855CONFIG_JBD=y
@@ -847,13 +876,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
847# CONFIG_OCFS2_FS_STATS is not set 876# CONFIG_OCFS2_FS_STATS is not set
848# CONFIG_OCFS2_DEBUG_MASKLOG is not set 877# CONFIG_OCFS2_DEBUG_MASKLOG is not set
849# CONFIG_OCFS2_DEBUG_FS is not set 878# CONFIG_OCFS2_DEBUG_FS is not set
850# CONFIG_OCFS2_COMPAT_JBD is not set 879# CONFIG_OCFS2_FS_POSIX_ACL is not set
880# CONFIG_BTRFS_FS is not set
851CONFIG_DNOTIFY=y 881CONFIG_DNOTIFY=y
852CONFIG_INOTIFY=y 882CONFIG_INOTIFY=y
853CONFIG_INOTIFY_USER=y 883CONFIG_INOTIFY_USER=y
854CONFIG_QUOTA=y 884CONFIG_QUOTA=y
855CONFIG_QUOTA_NETLINK_INTERFACE=y 885CONFIG_QUOTA_NETLINK_INTERFACE=y
856# CONFIG_PRINT_QUOTA_WARNING is not set 886# CONFIG_PRINT_QUOTA_WARNING is not set
887CONFIG_QUOTA_TREE=m
857# CONFIG_QFMT_V1 is not set 888# CONFIG_QFMT_V1 is not set
858# CONFIG_QFMT_V2 is not set 889# CONFIG_QFMT_V2 is not set
859CONFIG_QUOTACTL=y 890CONFIG_QUOTACTL=y
@@ -862,6 +893,11 @@ CONFIG_AUTOFS4_FS=m
862CONFIG_FUSE_FS=m 893CONFIG_FUSE_FS=m
863 894
864# 895#
896# Caches
897#
898# CONFIG_FSCACHE is not set
899
900#
865# CD-ROM/DVD Filesystems 901# CD-ROM/DVD Filesystems
866# 902#
867CONFIG_ISO9660_FS=y 903CONFIG_ISO9660_FS=y
@@ -892,10 +928,7 @@ CONFIG_TMPFS=y
892# CONFIG_TMPFS_POSIX_ACL is not set 928# CONFIG_TMPFS_POSIX_ACL is not set
893# CONFIG_HUGETLB_PAGE is not set 929# CONFIG_HUGETLB_PAGE is not set
894CONFIG_CONFIGFS_FS=m 930CONFIG_CONFIGFS_FS=m
895 931CONFIG_MISC_FILESYSTEMS=y
896#
897# Miscellaneous filesystems
898#
899# CONFIG_ADFS_FS is not set 932# CONFIG_ADFS_FS is not set
900CONFIG_AFFS_FS=m 933CONFIG_AFFS_FS=m
901CONFIG_HFS_FS=m 934CONFIG_HFS_FS=m
@@ -904,6 +937,9 @@ CONFIG_HFSPLUS_FS=m
904# CONFIG_BFS_FS is not set 937# CONFIG_BFS_FS is not set
905# CONFIG_EFS_FS is not set 938# CONFIG_EFS_FS is not set
906CONFIG_CRAMFS=m 939CONFIG_CRAMFS=m
940CONFIG_SQUASHFS=m
941# CONFIG_SQUASHFS_EMBEDDED is not set
942CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
907# CONFIG_VXFS_FS is not set 943# CONFIG_VXFS_FS is not set
908CONFIG_MINIX_FS=y 944CONFIG_MINIX_FS=y
909# CONFIG_OMFS_FS is not set 945# CONFIG_OMFS_FS is not set
@@ -914,22 +950,24 @@ CONFIG_SYSV_FS=m
914CONFIG_UFS_FS=m 950CONFIG_UFS_FS=m
915# CONFIG_UFS_FS_WRITE is not set 951# CONFIG_UFS_FS_WRITE is not set
916# CONFIG_UFS_DEBUG is not set 952# CONFIG_UFS_DEBUG is not set
953# CONFIG_NILFS2_FS is not set
917CONFIG_NETWORK_FILESYSTEMS=y 954CONFIG_NETWORK_FILESYSTEMS=y
918CONFIG_NFS_FS=m 955CONFIG_NFS_FS=y
919CONFIG_NFS_V3=y 956CONFIG_NFS_V3=y
920# CONFIG_NFS_V3_ACL is not set 957# CONFIG_NFS_V3_ACL is not set
921# CONFIG_NFS_V4 is not set 958CONFIG_NFS_V4=y
959# CONFIG_ROOT_NFS is not set
922CONFIG_NFSD=m 960CONFIG_NFSD=m
923CONFIG_NFSD_V3=y 961CONFIG_NFSD_V3=y
924# CONFIG_NFSD_V3_ACL is not set 962# CONFIG_NFSD_V3_ACL is not set
925# CONFIG_NFSD_V4 is not set 963# CONFIG_NFSD_V4 is not set
926CONFIG_LOCKD=m 964CONFIG_LOCKD=y
927CONFIG_LOCKD_V4=y 965CONFIG_LOCKD_V4=y
928CONFIG_EXPORTFS=m 966CONFIG_EXPORTFS=m
929CONFIG_NFS_COMMON=y 967CONFIG_NFS_COMMON=y
930CONFIG_SUNRPC=m 968CONFIG_SUNRPC=y
931# CONFIG_SUNRPC_REGISTER_V4 is not set 969CONFIG_SUNRPC_GSS=y
932# CONFIG_RPCSEC_GSS_KRB5 is not set 970CONFIG_RPCSEC_GSS_KRB5=y
933# CONFIG_RPCSEC_GSS_SPKM3 is not set 971# CONFIG_RPCSEC_GSS_SPKM3 is not set
934CONFIG_SMB_FS=m 972CONFIG_SMB_FS=m
935CONFIG_SMB_NLS_DEFAULT=y 973CONFIG_SMB_NLS_DEFAULT=y
@@ -1004,11 +1042,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
1004CONFIG_DEBUG_MEMORY_INIT=y 1042CONFIG_DEBUG_MEMORY_INIT=y
1005# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1043# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1006CONFIG_SYSCTL_SYSCALL_CHECK=y 1044CONFIG_SYSCTL_SYSCALL_CHECK=y
1007
1008#
1009# Tracers
1010#
1011# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1012# CONFIG_SAMPLES is not set 1045# CONFIG_SAMPLES is not set
1013 1046
1014# 1047#
@@ -1029,13 +1062,21 @@ CONFIG_CRYPTO=y
1029# 1062#
1030# CONFIG_CRYPTO_FIPS is not set 1063# CONFIG_CRYPTO_FIPS is not set
1031CONFIG_CRYPTO_ALGAPI=y 1064CONFIG_CRYPTO_ALGAPI=y
1032CONFIG_CRYPTO_AEAD=y 1065CONFIG_CRYPTO_ALGAPI2=y
1066CONFIG_CRYPTO_AEAD=m
1067CONFIG_CRYPTO_AEAD2=y
1033CONFIG_CRYPTO_BLKCIPHER=y 1068CONFIG_CRYPTO_BLKCIPHER=y
1069CONFIG_CRYPTO_BLKCIPHER2=y
1034CONFIG_CRYPTO_HASH=y 1070CONFIG_CRYPTO_HASH=y
1035CONFIG_CRYPTO_RNG=y 1071CONFIG_CRYPTO_HASH2=y
1072CONFIG_CRYPTO_RNG=m
1073CONFIG_CRYPTO_RNG2=y
1074CONFIG_CRYPTO_PCOMP=y
1036CONFIG_CRYPTO_MANAGER=y 1075CONFIG_CRYPTO_MANAGER=y
1076CONFIG_CRYPTO_MANAGER2=y
1037CONFIG_CRYPTO_GF128MUL=m 1077CONFIG_CRYPTO_GF128MUL=m
1038CONFIG_CRYPTO_NULL=m 1078CONFIG_CRYPTO_NULL=m
1079CONFIG_CRYPTO_WORKQUEUE=y
1039CONFIG_CRYPTO_CRYPTD=m 1080CONFIG_CRYPTO_CRYPTD=m
1040CONFIG_CRYPTO_AUTHENC=m 1081CONFIG_CRYPTO_AUTHENC=m
1041CONFIG_CRYPTO_TEST=m 1082CONFIG_CRYPTO_TEST=m
@@ -1050,7 +1091,7 @@ CONFIG_CRYPTO_SEQIV=m
1050# 1091#
1051# Block modes 1092# Block modes
1052# 1093#
1053CONFIG_CRYPTO_CBC=m 1094CONFIG_CRYPTO_CBC=y
1054CONFIG_CRYPTO_CTR=m 1095CONFIG_CRYPTO_CTR=m
1055CONFIG_CRYPTO_CTS=m 1096CONFIG_CRYPTO_CTS=m
1056CONFIG_CRYPTO_ECB=m 1097CONFIG_CRYPTO_ECB=m
@@ -1069,7 +1110,7 @@ CONFIG_CRYPTO_XCBC=m
1069# 1110#
1070CONFIG_CRYPTO_CRC32C=m 1111CONFIG_CRYPTO_CRC32C=m
1071CONFIG_CRYPTO_MD4=m 1112CONFIG_CRYPTO_MD4=m
1072CONFIG_CRYPTO_MD5=m 1113CONFIG_CRYPTO_MD5=y
1073CONFIG_CRYPTO_MICHAEL_MIC=m 1114CONFIG_CRYPTO_MICHAEL_MIC=m
1074CONFIG_CRYPTO_RMD128=m 1115CONFIG_CRYPTO_RMD128=m
1075CONFIG_CRYPTO_RMD160=m 1116CONFIG_CRYPTO_RMD160=m
@@ -1091,7 +1132,7 @@ CONFIG_CRYPTO_BLOWFISH=m
1091CONFIG_CRYPTO_CAMELLIA=m 1132CONFIG_CRYPTO_CAMELLIA=m
1092CONFIG_CRYPTO_CAST5=m 1133CONFIG_CRYPTO_CAST5=m
1093CONFIG_CRYPTO_CAST6=m 1134CONFIG_CRYPTO_CAST6=m
1094CONFIG_CRYPTO_DES=m 1135CONFIG_CRYPTO_DES=y
1095CONFIG_CRYPTO_FCRYPT=m 1136CONFIG_CRYPTO_FCRYPT=m
1096CONFIG_CRYPTO_KHAZAD=m 1137CONFIG_CRYPTO_KHAZAD=m
1097CONFIG_CRYPTO_SALSA20=m 1138CONFIG_CRYPTO_SALSA20=m
@@ -1105,6 +1146,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1105# Compression 1146# Compression
1106# 1147#
1107CONFIG_CRYPTO_DEFLATE=m 1148CONFIG_CRYPTO_DEFLATE=m
1149CONFIG_CRYPTO_ZLIB=m
1108CONFIG_CRYPTO_LZO=m 1150CONFIG_CRYPTO_LZO=m
1109 1151
1110# 1152#
@@ -1112,11 +1154,13 @@ CONFIG_CRYPTO_LZO=m
1112# 1154#
1113# CONFIG_CRYPTO_ANSI_CPRNG is not set 1155# CONFIG_CRYPTO_ANSI_CPRNG is not set
1114# CONFIG_CRYPTO_HW is not set 1156# CONFIG_CRYPTO_HW is not set
1157# CONFIG_BINARY_PRINTF is not set
1115 1158
1116# 1159#
1117# Library routines 1160# Library routines
1118# 1161#
1119CONFIG_BITREVERSE=y 1162CONFIG_BITREVERSE=y
1163CONFIG_GENERIC_FIND_LAST_BIT=y
1120CONFIG_CRC_CCITT=m 1164CONFIG_CRC_CCITT=m
1121CONFIG_CRC16=y 1165CONFIG_CRC16=y
1122CONFIG_CRC_T10DIF=y 1166CONFIG_CRC_T10DIF=y
@@ -1128,10 +1172,13 @@ CONFIG_ZLIB_INFLATE=y
1128CONFIG_ZLIB_DEFLATE=m 1172CONFIG_ZLIB_DEFLATE=m
1129CONFIG_LZO_COMPRESS=m 1173CONFIG_LZO_COMPRESS=m
1130CONFIG_LZO_DECOMPRESS=m 1174CONFIG_LZO_DECOMPRESS=m
1175CONFIG_DECOMPRESS_GZIP=y
1176CONFIG_DECOMPRESS_BZIP2=y
1177CONFIG_DECOMPRESS_LZMA=y
1131CONFIG_TEXTSEARCH=y 1178CONFIG_TEXTSEARCH=y
1132CONFIG_TEXTSEARCH_KMP=m 1179CONFIG_TEXTSEARCH_KMP=m
1133CONFIG_TEXTSEARCH_BM=m 1180CONFIG_TEXTSEARCH_BM=m
1134CONFIG_TEXTSEARCH_FSM=m 1181CONFIG_TEXTSEARCH_FSM=m
1135CONFIG_PLIST=y
1136CONFIG_HAS_IOMEM=y 1182CONFIG_HAS_IOMEM=y
1137CONFIG_HAS_DMA=y 1183CONFIG_HAS_DMA=y
1184CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6000_defconfig
index d3d9814a91de..6e6b1aa66682 100644
--- a/arch/m68k/configs/bvme6000_defconfig
+++ b/arch/m68k/configs/bvme6000_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:45 2008 4# Wed Apr 22 20:47:59 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -143,12 +154,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
143CONFIG_NEED_MULTIPLE_NODES=y 154CONFIG_NEED_MULTIPLE_NODES=y
144CONFIG_PAGEFLAGS_EXTENDED=y 155CONFIG_PAGEFLAGS_EXTENDED=y
145CONFIG_SPLIT_PTLOCK_CPUS=4 156CONFIG_SPLIT_PTLOCK_CPUS=4
146# CONFIG_RESOURCES_64BIT is not set
147# CONFIG_PHYS_ADDR_T_64BIT is not set 157# CONFIG_PHYS_ADDR_T_64BIT is not set
148CONFIG_ZONE_DMA_FLAG=1 158CONFIG_ZONE_DMA_FLAG=1
149CONFIG_BOUNCE=y 159CONFIG_BOUNCE=y
150CONFIG_VIRT_TO_BUS=y 160CONFIG_VIRT_TO_BUS=y
151CONFIG_UNEVICTABLE_LRU=y 161CONFIG_UNEVICTABLE_LRU=y
162CONFIG_HAVE_MLOCK=y
163CONFIG_HAVE_MLOCKED_PAGE_BIT=y
152 164
153# 165#
154# General setup 166# General setup
@@ -258,6 +270,7 @@ CONFIG_NETFILTER_XTABLES=m
258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 270CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 271CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
260CONFIG_NETFILTER_XT_TARGET_DSCP=m 272CONFIG_NETFILTER_XT_TARGET_DSCP=m
273CONFIG_NETFILTER_XT_TARGET_HL=m
261CONFIG_NETFILTER_XT_TARGET_MARK=m 274CONFIG_NETFILTER_XT_TARGET_MARK=m
262CONFIG_NETFILTER_XT_TARGET_NFLOG=m 275CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 276CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -266,6 +279,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
266CONFIG_NETFILTER_XT_TARGET_TRACE=m 279CONFIG_NETFILTER_XT_TARGET_TRACE=m
267CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 280CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
268CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 281CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
282CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
269CONFIG_NETFILTER_XT_MATCH_COMMENT=m 283CONFIG_NETFILTER_XT_MATCH_COMMENT=m
270CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 284CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
271CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 285CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -276,6 +290,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
276CONFIG_NETFILTER_XT_MATCH_ESP=m 290CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 291CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
278CONFIG_NETFILTER_XT_MATCH_HELPER=m 292CONFIG_NETFILTER_XT_MATCH_HELPER=m
293CONFIG_NETFILTER_XT_MATCH_HL=m
279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 294CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
280CONFIG_NETFILTER_XT_MATCH_LENGTH=m 295CONFIG_NETFILTER_XT_MATCH_LENGTH=m
281CONFIG_NETFILTER_XT_MATCH_LIMIT=m 296CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -354,25 +369,20 @@ CONFIG_IP6_NF_MATCH_HL=m
354CONFIG_IP6_NF_MATCH_IPV6HEADER=m 369CONFIG_IP6_NF_MATCH_IPV6HEADER=m
355CONFIG_IP6_NF_MATCH_MH=m 370CONFIG_IP6_NF_MATCH_MH=m
356CONFIG_IP6_NF_MATCH_RT=m 371CONFIG_IP6_NF_MATCH_RT=m
372CONFIG_IP6_NF_TARGET_HL=m
357CONFIG_IP6_NF_TARGET_LOG=m 373CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m 374CONFIG_IP6_NF_FILTER=m
359CONFIG_IP6_NF_TARGET_REJECT=m 375CONFIG_IP6_NF_TARGET_REJECT=m
360CONFIG_IP6_NF_MANGLE=m 376CONFIG_IP6_NF_MANGLE=m
361CONFIG_IP6_NF_TARGET_HL=m
362CONFIG_IP6_NF_RAW=m 377CONFIG_IP6_NF_RAW=m
363CONFIG_IP_DCCP=m 378CONFIG_IP_DCCP=m
364CONFIG_INET_DCCP_DIAG=m 379CONFIG_INET_DCCP_DIAG=m
365CONFIG_IP_DCCP_ACKVEC=y
366 380
367# 381#
368# DCCP CCIDs Configuration (EXPERIMENTAL) 382# DCCP CCIDs Configuration (EXPERIMENTAL)
369# 383#
370CONFIG_IP_DCCP_CCID2=m
371# CONFIG_IP_DCCP_CCID2_DEBUG is not set 384# CONFIG_IP_DCCP_CCID2_DEBUG is not set
372CONFIG_IP_DCCP_CCID3=m 385# CONFIG_IP_DCCP_CCID3 is not set
373# CONFIG_IP_DCCP_CCID3_DEBUG is not set
374CONFIG_IP_DCCP_CCID3_RTO=100
375CONFIG_IP_DCCP_TFRC_LIB=m
376CONFIG_IP_SCTP=m 386CONFIG_IP_SCTP=m
377# CONFIG_SCTP_DBG_MSG is not set 387# CONFIG_SCTP_DBG_MSG is not set
378# CONFIG_SCTP_DBG_OBJCNT is not set 388# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -394,8 +404,10 @@ CONFIG_ATALK=m
394# CONFIG_LAPB is not set 404# CONFIG_LAPB is not set
395# CONFIG_ECONET is not set 405# CONFIG_ECONET is not set
396# CONFIG_WAN_ROUTER is not set 406# CONFIG_WAN_ROUTER is not set
407# CONFIG_PHONET is not set
397# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
398CONFIG_NET_CLS_ROUTE=y 409CONFIG_NET_CLS_ROUTE=y
410# CONFIG_DCB is not set
399 411
400# 412#
401# Network testing 413# Network testing
@@ -406,8 +418,8 @@ CONFIG_NET_CLS_ROUTE=y
406# CONFIG_IRDA is not set 418# CONFIG_IRDA is not set
407# CONFIG_BT is not set 419# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 420# CONFIG_AF_RXRPC is not set
409# CONFIG_PHONET is not set
410# CONFIG_WIRELESS is not set 421# CONFIG_WIRELESS is not set
422# CONFIG_WIMAX is not set
411# CONFIG_RFKILL is not set 423# CONFIG_RFKILL is not set
412# CONFIG_NET_9P is not set 424# CONFIG_NET_9P is not set
413 425
@@ -443,9 +455,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
443CONFIG_ATA_OVER_ETH=m 455CONFIG_ATA_OVER_ETH=m
444# CONFIG_BLK_DEV_HD is not set 456# CONFIG_BLK_DEV_HD is not set
445CONFIG_MISC_DEVICES=y 457CONFIG_MISC_DEVICES=y
446# CONFIG_EEPROM_93CX6 is not set
447# CONFIG_ENCLOSURE_SERVICES is not set 458# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set 459# CONFIG_C2PORT is not set
460
461#
462# EEPROM support
463#
464# CONFIG_EEPROM_93CX6 is not set
449CONFIG_HAVE_IDE=y 465CONFIG_HAVE_IDE=y
450# CONFIG_IDE is not set 466# CONFIG_IDE is not set
451 467
@@ -493,10 +509,13 @@ CONFIG_SCSI_SRP_ATTRS=m
493CONFIG_SCSI_SRP_TGT_ATTRS=y 509CONFIG_SCSI_SRP_TGT_ATTRS=y
494CONFIG_SCSI_LOWLEVEL=y 510CONFIG_SCSI_LOWLEVEL=y
495CONFIG_ISCSI_TCP=m 511CONFIG_ISCSI_TCP=m
512# CONFIG_LIBFC is not set
513# CONFIG_LIBFCOE is not set
496CONFIG_53C700_BE_BUS=y 514CONFIG_53C700_BE_BUS=y
497# CONFIG_SCSI_DEBUG is not set 515# CONFIG_SCSI_DEBUG is not set
498CONFIG_BVME6000_SCSI=y 516CONFIG_BVME6000_SCSI=y
499# CONFIG_SCSI_DH is not set 517# CONFIG_SCSI_DH is not set
518# CONFIG_SCSI_OSD_INITIATOR is not set
500CONFIG_MD=y 519CONFIG_MD=y
501CONFIG_BLK_DEV_MD=m 520CONFIG_BLK_DEV_MD=m
502CONFIG_MD_LINEAR=m 521CONFIG_MD_LINEAR=m
@@ -504,7 +523,7 @@ CONFIG_MD_RAID0=m
504CONFIG_MD_RAID1=m 523CONFIG_MD_RAID1=m
505# CONFIG_MD_RAID10 is not set 524# CONFIG_MD_RAID10 is not set
506CONFIG_MD_RAID456=m 525CONFIG_MD_RAID456=m
507CONFIG_MD_RAID5_RESHAPE=y 526CONFIG_MD_RAID6_PQ=m
508# CONFIG_MD_MULTIPATH is not set 527# CONFIG_MD_MULTIPATH is not set
509# CONFIG_MD_FAULTY is not set 528# CONFIG_MD_FAULTY is not set
510CONFIG_BLK_DEV_DM=m 529CONFIG_BLK_DEV_DM=m
@@ -517,6 +536,7 @@ CONFIG_DM_MULTIPATH=m
517# CONFIG_DM_DELAY is not set 536# CONFIG_DM_DELAY is not set
518CONFIG_DM_UEVENT=y 537CONFIG_DM_UEVENT=y
519CONFIG_NETDEVICES=y 538CONFIG_NETDEVICES=y
539CONFIG_COMPAT_NET_DEV_OPS=y
520CONFIG_DUMMY=m 540CONFIG_DUMMY=m
521# CONFIG_BONDING is not set 541# CONFIG_BONDING is not set
522CONFIG_MACVLAN=m 542CONFIG_MACVLAN=m
@@ -527,6 +547,8 @@ CONFIG_VETH=m
527CONFIG_NET_ETHERNET=y 547CONFIG_NET_ETHERNET=y
528# CONFIG_MII is not set 548# CONFIG_MII is not set
529CONFIG_BVME6000_NET=y 549CONFIG_BVME6000_NET=y
550# CONFIG_ETHOC is not set
551# CONFIG_DNET is not set
530# CONFIG_IBM_NEW_EMAC_ZMII is not set 552# CONFIG_IBM_NEW_EMAC_ZMII is not set
531# CONFIG_IBM_NEW_EMAC_RGMII is not set 553# CONFIG_IBM_NEW_EMAC_RGMII is not set
532# CONFIG_IBM_NEW_EMAC_TAH is not set 554# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -543,7 +565,10 @@ CONFIG_BVME6000_NET=y
543# 565#
544# CONFIG_WLAN_PRE80211 is not set 566# CONFIG_WLAN_PRE80211 is not set
545# CONFIG_WLAN_80211 is not set 567# CONFIG_WLAN_80211 is not set
546# CONFIG_IWLWIFI_LEDS is not set 568
569#
570# Enable WiMAX (Networking options) to see the WiMAX drivers
571#
547# CONFIG_WAN is not set 572# CONFIG_WAN is not set
548CONFIG_PPP=m 573CONFIG_PPP=m
549# CONFIG_PPP_MULTILINK is not set 574# CONFIG_PPP_MULTILINK is not set
@@ -601,7 +626,6 @@ CONFIG_MOUSE_PS2=m
601CONFIG_MOUSE_PS2_ALPS=y 626CONFIG_MOUSE_PS2_ALPS=y
602CONFIG_MOUSE_PS2_LOGIPS2PP=y 627CONFIG_MOUSE_PS2_LOGIPS2PP=y
603CONFIG_MOUSE_PS2_SYNAPTICS=y 628CONFIG_MOUSE_PS2_SYNAPTICS=y
604CONFIG_MOUSE_PS2_LIFEBOOK=y
605CONFIG_MOUSE_PS2_TRACKPOINT=y 629CONFIG_MOUSE_PS2_TRACKPOINT=y
606# CONFIG_MOUSE_PS2_ELANTECH is not set 630# CONFIG_MOUSE_PS2_ELANTECH is not set
607# CONFIG_MOUSE_PS2_TOUCHKIT is not set 631# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -641,6 +665,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
641# Non-8250 serial port support 665# Non-8250 serial port support
642# 666#
643CONFIG_UNIX98_PTYS=y 667CONFIG_UNIX98_PTYS=y
668# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
644CONFIG_LEGACY_PTYS=y 669CONFIG_LEGACY_PTYS=y
645CONFIG_LEGACY_PTY_COUNT=256 670CONFIG_LEGACY_PTY_COUNT=256
646# CONFIG_IPMI_HANDLER is not set 671# CONFIG_IPMI_HANDLER is not set
@@ -717,7 +742,6 @@ CONFIG_HIDRAW=y
717# 742#
718# Special HID drivers 743# Special HID drivers
719# 744#
720CONFIG_HID_COMPAT=y
721# CONFIG_USB_SUPPORT is not set 745# CONFIG_USB_SUPPORT is not set
722# CONFIG_MMC is not set 746# CONFIG_MMC is not set
723# CONFIG_MEMSTICK is not set 747# CONFIG_MEMSTICK is not set
@@ -725,9 +749,9 @@ CONFIG_HID_COMPAT=y
725# CONFIG_ACCESSIBILITY is not set 749# CONFIG_ACCESSIBILITY is not set
726# CONFIG_RTC_CLASS is not set 750# CONFIG_RTC_CLASS is not set
727# CONFIG_DMADEVICES is not set 751# CONFIG_DMADEVICES is not set
752# CONFIG_AUXDISPLAY is not set
728# CONFIG_UIO is not set 753# CONFIG_UIO is not set
729# CONFIG_STAGING is not set 754# CONFIG_STAGING is not set
730CONFIG_STAGING_EXCLUDE_BUILD=y
731 755
732# 756#
733# Character devices 757# Character devices
@@ -742,6 +766,7 @@ CONFIG_EXT2_FS=y
742# CONFIG_EXT2_FS_XATTR is not set 766# CONFIG_EXT2_FS_XATTR is not set
743# CONFIG_EXT2_FS_XIP is not set 767# CONFIG_EXT2_FS_XIP is not set
744CONFIG_EXT3_FS=y 768CONFIG_EXT3_FS=y
769# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
745# CONFIG_EXT3_FS_XATTR is not set 770# CONFIG_EXT3_FS_XATTR is not set
746# CONFIG_EXT4_FS is not set 771# CONFIG_EXT4_FS is not set
747CONFIG_JBD=y 772CONFIG_JBD=y
@@ -768,13 +793,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
768# CONFIG_OCFS2_FS_STATS is not set 793# CONFIG_OCFS2_FS_STATS is not set
769# CONFIG_OCFS2_DEBUG_MASKLOG is not set 794# CONFIG_OCFS2_DEBUG_MASKLOG is not set
770# CONFIG_OCFS2_DEBUG_FS is not set 795# CONFIG_OCFS2_DEBUG_FS is not set
771# CONFIG_OCFS2_COMPAT_JBD is not set 796# CONFIG_OCFS2_FS_POSIX_ACL is not set
797# CONFIG_BTRFS_FS is not set
772CONFIG_DNOTIFY=y 798CONFIG_DNOTIFY=y
773CONFIG_INOTIFY=y 799CONFIG_INOTIFY=y
774CONFIG_INOTIFY_USER=y 800CONFIG_INOTIFY_USER=y
775CONFIG_QUOTA=y 801CONFIG_QUOTA=y
776CONFIG_QUOTA_NETLINK_INTERFACE=y 802CONFIG_QUOTA_NETLINK_INTERFACE=y
777# CONFIG_PRINT_QUOTA_WARNING is not set 803# CONFIG_PRINT_QUOTA_WARNING is not set
804CONFIG_QUOTA_TREE=m
778# CONFIG_QFMT_V1 is not set 805# CONFIG_QFMT_V1 is not set
779# CONFIG_QFMT_V2 is not set 806# CONFIG_QFMT_V2 is not set
780CONFIG_QUOTACTL=y 807CONFIG_QUOTACTL=y
@@ -783,6 +810,11 @@ CONFIG_AUTOFS4_FS=m
783CONFIG_FUSE_FS=m 810CONFIG_FUSE_FS=m
784 811
785# 812#
813# Caches
814#
815# CONFIG_FSCACHE is not set
816
817#
786# CD-ROM/DVD Filesystems 818# CD-ROM/DVD Filesystems
787# 819#
788CONFIG_ISO9660_FS=y 820CONFIG_ISO9660_FS=y
@@ -813,10 +845,7 @@ CONFIG_TMPFS=y
813# CONFIG_TMPFS_POSIX_ACL is not set 845# CONFIG_TMPFS_POSIX_ACL is not set
814# CONFIG_HUGETLB_PAGE is not set 846# CONFIG_HUGETLB_PAGE is not set
815CONFIG_CONFIGFS_FS=m 847CONFIG_CONFIGFS_FS=m
816 848CONFIG_MISC_FILESYSTEMS=y
817#
818# Miscellaneous filesystems
819#
820# CONFIG_ADFS_FS is not set 849# CONFIG_ADFS_FS is not set
821CONFIG_AFFS_FS=m 850CONFIG_AFFS_FS=m
822CONFIG_HFS_FS=m 851CONFIG_HFS_FS=m
@@ -825,6 +854,9 @@ CONFIG_HFSPLUS_FS=m
825# CONFIG_BFS_FS is not set 854# CONFIG_BFS_FS is not set
826# CONFIG_EFS_FS is not set 855# CONFIG_EFS_FS is not set
827CONFIG_CRAMFS=m 856CONFIG_CRAMFS=m
857CONFIG_SQUASHFS=m
858# CONFIG_SQUASHFS_EMBEDDED is not set
859CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
828# CONFIG_VXFS_FS is not set 860# CONFIG_VXFS_FS is not set
829CONFIG_MINIX_FS=y 861CONFIG_MINIX_FS=y
830# CONFIG_OMFS_FS is not set 862# CONFIG_OMFS_FS is not set
@@ -835,6 +867,7 @@ CONFIG_SYSV_FS=m
835CONFIG_UFS_FS=m 867CONFIG_UFS_FS=m
836# CONFIG_UFS_FS_WRITE is not set 868# CONFIG_UFS_FS_WRITE is not set
837# CONFIG_UFS_DEBUG is not set 869# CONFIG_UFS_DEBUG is not set
870# CONFIG_NILFS2_FS is not set
838CONFIG_NETWORK_FILESYSTEMS=y 871CONFIG_NETWORK_FILESYSTEMS=y
839CONFIG_NFS_FS=y 872CONFIG_NFS_FS=y
840CONFIG_NFS_V3=y 873CONFIG_NFS_V3=y
@@ -851,7 +884,6 @@ CONFIG_EXPORTFS=m
851CONFIG_NFS_COMMON=y 884CONFIG_NFS_COMMON=y
852CONFIG_SUNRPC=y 885CONFIG_SUNRPC=y
853CONFIG_SUNRPC_GSS=y 886CONFIG_SUNRPC_GSS=y
854# CONFIG_SUNRPC_REGISTER_V4 is not set
855CONFIG_RPCSEC_GSS_KRB5=y 887CONFIG_RPCSEC_GSS_KRB5=y
856# CONFIG_RPCSEC_GSS_SPKM3 is not set 888# CONFIG_RPCSEC_GSS_SPKM3 is not set
857CONFIG_SMB_FS=m 889CONFIG_SMB_FS=m
@@ -927,11 +959,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
927CONFIG_DEBUG_MEMORY_INIT=y 959CONFIG_DEBUG_MEMORY_INIT=y
928# CONFIG_RCU_CPU_STALL_DETECTOR is not set 960# CONFIG_RCU_CPU_STALL_DETECTOR is not set
929CONFIG_SYSCTL_SYSCALL_CHECK=y 961CONFIG_SYSCTL_SYSCALL_CHECK=y
930
931#
932# Tracers
933#
934# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
935# CONFIG_SAMPLES is not set 962# CONFIG_SAMPLES is not set
936 963
937# 964#
@@ -952,13 +979,21 @@ CONFIG_CRYPTO=y
952# 979#
953# CONFIG_CRYPTO_FIPS is not set 980# CONFIG_CRYPTO_FIPS is not set
954CONFIG_CRYPTO_ALGAPI=y 981CONFIG_CRYPTO_ALGAPI=y
955CONFIG_CRYPTO_AEAD=y 982CONFIG_CRYPTO_ALGAPI2=y
983CONFIG_CRYPTO_AEAD=m
984CONFIG_CRYPTO_AEAD2=y
956CONFIG_CRYPTO_BLKCIPHER=y 985CONFIG_CRYPTO_BLKCIPHER=y
986CONFIG_CRYPTO_BLKCIPHER2=y
957CONFIG_CRYPTO_HASH=y 987CONFIG_CRYPTO_HASH=y
958CONFIG_CRYPTO_RNG=y 988CONFIG_CRYPTO_HASH2=y
989CONFIG_CRYPTO_RNG=m
990CONFIG_CRYPTO_RNG2=y
991CONFIG_CRYPTO_PCOMP=y
959CONFIG_CRYPTO_MANAGER=y 992CONFIG_CRYPTO_MANAGER=y
993CONFIG_CRYPTO_MANAGER2=y
960CONFIG_CRYPTO_GF128MUL=m 994CONFIG_CRYPTO_GF128MUL=m
961CONFIG_CRYPTO_NULL=m 995CONFIG_CRYPTO_NULL=m
996CONFIG_CRYPTO_WORKQUEUE=y
962CONFIG_CRYPTO_CRYPTD=m 997CONFIG_CRYPTO_CRYPTD=m
963CONFIG_CRYPTO_AUTHENC=m 998CONFIG_CRYPTO_AUTHENC=m
964CONFIG_CRYPTO_TEST=m 999CONFIG_CRYPTO_TEST=m
@@ -1028,6 +1063,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1028# Compression 1063# Compression
1029# 1064#
1030CONFIG_CRYPTO_DEFLATE=m 1065CONFIG_CRYPTO_DEFLATE=m
1066CONFIG_CRYPTO_ZLIB=m
1031CONFIG_CRYPTO_LZO=m 1067CONFIG_CRYPTO_LZO=m
1032 1068
1033# 1069#
@@ -1035,11 +1071,13 @@ CONFIG_CRYPTO_LZO=m
1035# 1071#
1036# CONFIG_CRYPTO_ANSI_CPRNG is not set 1072# CONFIG_CRYPTO_ANSI_CPRNG is not set
1037# CONFIG_CRYPTO_HW is not set 1073# CONFIG_CRYPTO_HW is not set
1074# CONFIG_BINARY_PRINTF is not set
1038 1075
1039# 1076#
1040# Library routines 1077# Library routines
1041# 1078#
1042CONFIG_BITREVERSE=m 1079CONFIG_BITREVERSE=m
1080CONFIG_GENERIC_FIND_LAST_BIT=y
1043CONFIG_CRC_CCITT=m 1081CONFIG_CRC_CCITT=m
1044CONFIG_CRC16=m 1082CONFIG_CRC16=m
1045CONFIG_CRC_T10DIF=y 1083CONFIG_CRC_T10DIF=y
@@ -1051,10 +1089,13 @@ CONFIG_ZLIB_INFLATE=y
1051CONFIG_ZLIB_DEFLATE=m 1089CONFIG_ZLIB_DEFLATE=m
1052CONFIG_LZO_COMPRESS=m 1090CONFIG_LZO_COMPRESS=m
1053CONFIG_LZO_DECOMPRESS=m 1091CONFIG_LZO_DECOMPRESS=m
1092CONFIG_DECOMPRESS_GZIP=y
1093CONFIG_DECOMPRESS_BZIP2=y
1094CONFIG_DECOMPRESS_LZMA=y
1054CONFIG_TEXTSEARCH=y 1095CONFIG_TEXTSEARCH=y
1055CONFIG_TEXTSEARCH_KMP=m 1096CONFIG_TEXTSEARCH_KMP=m
1056CONFIG_TEXTSEARCH_BM=m 1097CONFIG_TEXTSEARCH_BM=m
1057CONFIG_TEXTSEARCH_FSM=m 1098CONFIG_TEXTSEARCH_FSM=m
1058CONFIG_PLIST=y
1059CONFIG_HAS_IOMEM=y 1099CONFIG_HAS_IOMEM=y
1060CONFIG_HAS_DMA=y 1100CONFIG_HAS_DMA=y
1101CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_defconfig
index 5556ef088d04..bc0565f63a15 100644
--- a/arch/m68k/configs/hp300_defconfig
+++ b/arch/m68k/configs/hp300_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:46 2008 4# Wed Apr 22 20:48:01 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -141,12 +152,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
141CONFIG_NEED_MULTIPLE_NODES=y 152CONFIG_NEED_MULTIPLE_NODES=y
142CONFIG_PAGEFLAGS_EXTENDED=y 153CONFIG_PAGEFLAGS_EXTENDED=y
143CONFIG_SPLIT_PTLOCK_CPUS=4 154CONFIG_SPLIT_PTLOCK_CPUS=4
144# CONFIG_RESOURCES_64BIT is not set
145# CONFIG_PHYS_ADDR_T_64BIT is not set 155# CONFIG_PHYS_ADDR_T_64BIT is not set
146CONFIG_ZONE_DMA_FLAG=1 156CONFIG_ZONE_DMA_FLAG=1
147CONFIG_BOUNCE=y 157CONFIG_BOUNCE=y
148CONFIG_VIRT_TO_BUS=y 158CONFIG_VIRT_TO_BUS=y
149CONFIG_UNEVICTABLE_LRU=y 159CONFIG_UNEVICTABLE_LRU=y
160CONFIG_HAVE_MLOCK=y
161CONFIG_HAVE_MLOCKED_PAGE_BIT=y
150 162
151# 163#
152# General setup 164# General setup
@@ -257,6 +269,7 @@ CONFIG_NETFILTER_XTABLES=m
257CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 269CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
258CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 270CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
259CONFIG_NETFILTER_XT_TARGET_DSCP=m 271CONFIG_NETFILTER_XT_TARGET_DSCP=m
272CONFIG_NETFILTER_XT_TARGET_HL=m
260CONFIG_NETFILTER_XT_TARGET_MARK=m 273CONFIG_NETFILTER_XT_TARGET_MARK=m
261CONFIG_NETFILTER_XT_TARGET_NFLOG=m 274CONFIG_NETFILTER_XT_TARGET_NFLOG=m
262CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 275CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -265,6 +278,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
265CONFIG_NETFILTER_XT_TARGET_TRACE=m 278CONFIG_NETFILTER_XT_TARGET_TRACE=m
266CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 279CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
267CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 280CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
281CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
268CONFIG_NETFILTER_XT_MATCH_COMMENT=m 282CONFIG_NETFILTER_XT_MATCH_COMMENT=m
269CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 283CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
270CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 284CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -275,6 +289,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
275CONFIG_NETFILTER_XT_MATCH_ESP=m 289CONFIG_NETFILTER_XT_MATCH_ESP=m
276CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 290CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
277CONFIG_NETFILTER_XT_MATCH_HELPER=m 291CONFIG_NETFILTER_XT_MATCH_HELPER=m
292CONFIG_NETFILTER_XT_MATCH_HL=m
278CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 293CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
279CONFIG_NETFILTER_XT_MATCH_LENGTH=m 294CONFIG_NETFILTER_XT_MATCH_LENGTH=m
280CONFIG_NETFILTER_XT_MATCH_LIMIT=m 295CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -353,25 +368,20 @@ CONFIG_IP6_NF_MATCH_HL=m
353CONFIG_IP6_NF_MATCH_IPV6HEADER=m 368CONFIG_IP6_NF_MATCH_IPV6HEADER=m
354CONFIG_IP6_NF_MATCH_MH=m 369CONFIG_IP6_NF_MATCH_MH=m
355CONFIG_IP6_NF_MATCH_RT=m 370CONFIG_IP6_NF_MATCH_RT=m
371CONFIG_IP6_NF_TARGET_HL=m
356CONFIG_IP6_NF_TARGET_LOG=m 372CONFIG_IP6_NF_TARGET_LOG=m
357CONFIG_IP6_NF_FILTER=m 373CONFIG_IP6_NF_FILTER=m
358CONFIG_IP6_NF_TARGET_REJECT=m 374CONFIG_IP6_NF_TARGET_REJECT=m
359CONFIG_IP6_NF_MANGLE=m 375CONFIG_IP6_NF_MANGLE=m
360CONFIG_IP6_NF_TARGET_HL=m
361CONFIG_IP6_NF_RAW=m 376CONFIG_IP6_NF_RAW=m
362CONFIG_IP_DCCP=m 377CONFIG_IP_DCCP=m
363CONFIG_INET_DCCP_DIAG=m 378CONFIG_INET_DCCP_DIAG=m
364CONFIG_IP_DCCP_ACKVEC=y
365 379
366# 380#
367# DCCP CCIDs Configuration (EXPERIMENTAL) 381# DCCP CCIDs Configuration (EXPERIMENTAL)
368# 382#
369CONFIG_IP_DCCP_CCID2=m
370# CONFIG_IP_DCCP_CCID2_DEBUG is not set 383# CONFIG_IP_DCCP_CCID2_DEBUG is not set
371CONFIG_IP_DCCP_CCID3=m 384# CONFIG_IP_DCCP_CCID3 is not set
372# CONFIG_IP_DCCP_CCID3_DEBUG is not set
373CONFIG_IP_DCCP_CCID3_RTO=100
374CONFIG_IP_DCCP_TFRC_LIB=m
375CONFIG_IP_SCTP=m 385CONFIG_IP_SCTP=m
376# CONFIG_SCTP_DBG_MSG is not set 386# CONFIG_SCTP_DBG_MSG is not set
377# CONFIG_SCTP_DBG_OBJCNT is not set 387# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -393,8 +403,10 @@ CONFIG_ATALK=m
393# CONFIG_LAPB is not set 403# CONFIG_LAPB is not set
394# CONFIG_ECONET is not set 404# CONFIG_ECONET is not set
395# CONFIG_WAN_ROUTER is not set 405# CONFIG_WAN_ROUTER is not set
406# CONFIG_PHONET is not set
396# CONFIG_NET_SCHED is not set 407# CONFIG_NET_SCHED is not set
397CONFIG_NET_CLS_ROUTE=y 408CONFIG_NET_CLS_ROUTE=y
409# CONFIG_DCB is not set
398 410
399# 411#
400# Network testing 412# Network testing
@@ -405,8 +417,8 @@ CONFIG_NET_CLS_ROUTE=y
405# CONFIG_IRDA is not set 417# CONFIG_IRDA is not set
406# CONFIG_BT is not set 418# CONFIG_BT is not set
407# CONFIG_AF_RXRPC is not set 419# CONFIG_AF_RXRPC is not set
408# CONFIG_PHONET is not set
409# CONFIG_WIRELESS is not set 420# CONFIG_WIRELESS is not set
421# CONFIG_WIMAX is not set
410# CONFIG_RFKILL is not set 422# CONFIG_RFKILL is not set
411# CONFIG_NET_9P is not set 423# CONFIG_NET_9P is not set
412 424
@@ -442,9 +454,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
442CONFIG_ATA_OVER_ETH=m 454CONFIG_ATA_OVER_ETH=m
443# CONFIG_BLK_DEV_HD is not set 455# CONFIG_BLK_DEV_HD is not set
444CONFIG_MISC_DEVICES=y 456CONFIG_MISC_DEVICES=y
445# CONFIG_EEPROM_93CX6 is not set
446# CONFIG_ENCLOSURE_SERVICES is not set 457# CONFIG_ENCLOSURE_SERVICES is not set
447# CONFIG_C2PORT is not set 458# CONFIG_C2PORT is not set
459
460#
461# EEPROM support
462#
463# CONFIG_EEPROM_93CX6 is not set
448CONFIG_HAVE_IDE=y 464CONFIG_HAVE_IDE=y
449# CONFIG_IDE is not set 465# CONFIG_IDE is not set
450 466
@@ -492,8 +508,11 @@ CONFIG_SCSI_SRP_ATTRS=m
492CONFIG_SCSI_SRP_TGT_ATTRS=y 508CONFIG_SCSI_SRP_TGT_ATTRS=y
493CONFIG_SCSI_LOWLEVEL=y 509CONFIG_SCSI_LOWLEVEL=y
494CONFIG_ISCSI_TCP=m 510CONFIG_ISCSI_TCP=m
511# CONFIG_LIBFC is not set
512# CONFIG_LIBFCOE is not set
495# CONFIG_SCSI_DEBUG is not set 513# CONFIG_SCSI_DEBUG is not set
496# CONFIG_SCSI_DH is not set 514# CONFIG_SCSI_DH is not set
515# CONFIG_SCSI_OSD_INITIATOR is not set
497CONFIG_MD=y 516CONFIG_MD=y
498CONFIG_BLK_DEV_MD=m 517CONFIG_BLK_DEV_MD=m
499CONFIG_MD_LINEAR=m 518CONFIG_MD_LINEAR=m
@@ -501,7 +520,7 @@ CONFIG_MD_RAID0=m
501CONFIG_MD_RAID1=m 520CONFIG_MD_RAID1=m
502# CONFIG_MD_RAID10 is not set 521# CONFIG_MD_RAID10 is not set
503CONFIG_MD_RAID456=m 522CONFIG_MD_RAID456=m
504CONFIG_MD_RAID5_RESHAPE=y 523CONFIG_MD_RAID6_PQ=m
505# CONFIG_MD_MULTIPATH is not set 524# CONFIG_MD_MULTIPATH is not set
506# CONFIG_MD_FAULTY is not set 525# CONFIG_MD_FAULTY is not set
507CONFIG_BLK_DEV_DM=m 526CONFIG_BLK_DEV_DM=m
@@ -514,6 +533,7 @@ CONFIG_DM_MULTIPATH=m
514# CONFIG_DM_DELAY is not set 533# CONFIG_DM_DELAY is not set
515CONFIG_DM_UEVENT=y 534CONFIG_DM_UEVENT=y
516CONFIG_NETDEVICES=y 535CONFIG_NETDEVICES=y
536CONFIG_COMPAT_NET_DEV_OPS=y
517CONFIG_DUMMY=m 537CONFIG_DUMMY=m
518# CONFIG_BONDING is not set 538# CONFIG_BONDING is not set
519CONFIG_MACVLAN=m 539CONFIG_MACVLAN=m
@@ -524,6 +544,8 @@ CONFIG_VETH=m
524CONFIG_NET_ETHERNET=y 544CONFIG_NET_ETHERNET=y
525# CONFIG_MII is not set 545# CONFIG_MII is not set
526CONFIG_HPLANCE=y 546CONFIG_HPLANCE=y
547# CONFIG_ETHOC is not set
548# CONFIG_DNET is not set
527# CONFIG_IBM_NEW_EMAC_ZMII is not set 549# CONFIG_IBM_NEW_EMAC_ZMII is not set
528# CONFIG_IBM_NEW_EMAC_RGMII is not set 550# CONFIG_IBM_NEW_EMAC_RGMII is not set
529# CONFIG_IBM_NEW_EMAC_TAH is not set 551# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -540,7 +562,10 @@ CONFIG_HPLANCE=y
540# 562#
541# CONFIG_WLAN_PRE80211 is not set 563# CONFIG_WLAN_PRE80211 is not set
542# CONFIG_WLAN_80211 is not set 564# CONFIG_WLAN_80211 is not set
543# CONFIG_IWLWIFI_LEDS is not set 565
566#
567# Enable WiMAX (Networking options) to see the WiMAX drivers
568#
544# CONFIG_WAN is not set 569# CONFIG_WAN is not set
545CONFIG_PPP=m 570CONFIG_PPP=m
546# CONFIG_PPP_MULTILINK is not set 571# CONFIG_PPP_MULTILINK is not set
@@ -600,7 +625,6 @@ CONFIG_MOUSE_PS2=m
600CONFIG_MOUSE_PS2_ALPS=y 625CONFIG_MOUSE_PS2_ALPS=y
601CONFIG_MOUSE_PS2_LOGIPS2PP=y 626CONFIG_MOUSE_PS2_LOGIPS2PP=y
602CONFIG_MOUSE_PS2_SYNAPTICS=y 627CONFIG_MOUSE_PS2_SYNAPTICS=y
603CONFIG_MOUSE_PS2_LIFEBOOK=y
604CONFIG_MOUSE_PS2_TRACKPOINT=y 628CONFIG_MOUSE_PS2_TRACKPOINT=y
605# CONFIG_MOUSE_PS2_ELANTECH is not set 629# CONFIG_MOUSE_PS2_ELANTECH is not set
606# CONFIG_MOUSE_PS2_TOUCHKIT is not set 630# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -646,6 +670,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
646# Non-8250 serial port support 670# Non-8250 serial port support
647# 671#
648CONFIG_UNIX98_PTYS=y 672CONFIG_UNIX98_PTYS=y
673# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
649CONFIG_LEGACY_PTYS=y 674CONFIG_LEGACY_PTYS=y
650CONFIG_LEGACY_PTY_COUNT=256 675CONFIG_LEGACY_PTY_COUNT=256
651# CONFIG_IPMI_HANDLER is not set 676# CONFIG_IPMI_HANDLER is not set
@@ -728,6 +753,7 @@ CONFIG_FB_HP300=y
728# CONFIG_FB_VIRTUAL is not set 753# CONFIG_FB_VIRTUAL is not set
729# CONFIG_FB_METRONOME is not set 754# CONFIG_FB_METRONOME is not set
730# CONFIG_FB_MB862XX is not set 755# CONFIG_FB_MB862XX is not set
756# CONFIG_FB_BROADSHEET is not set
731# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 757# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
732 758
733# 759#
@@ -759,7 +785,6 @@ CONFIG_HIDRAW=y
759# 785#
760# Special HID drivers 786# Special HID drivers
761# 787#
762CONFIG_HID_COMPAT=y
763# CONFIG_USB_SUPPORT is not set 788# CONFIG_USB_SUPPORT is not set
764# CONFIG_MMC is not set 789# CONFIG_MMC is not set
765# CONFIG_MEMSTICK is not set 790# CONFIG_MEMSTICK is not set
@@ -767,9 +792,9 @@ CONFIG_HID_COMPAT=y
767# CONFIG_ACCESSIBILITY is not set 792# CONFIG_ACCESSIBILITY is not set
768# CONFIG_RTC_CLASS is not set 793# CONFIG_RTC_CLASS is not set
769# CONFIG_DMADEVICES is not set 794# CONFIG_DMADEVICES is not set
795# CONFIG_AUXDISPLAY is not set
770# CONFIG_UIO is not set 796# CONFIG_UIO is not set
771# CONFIG_STAGING is not set 797# CONFIG_STAGING is not set
772CONFIG_STAGING_EXCLUDE_BUILD=y
773 798
774# 799#
775# Character devices 800# Character devices
@@ -782,6 +807,7 @@ CONFIG_EXT2_FS=y
782# CONFIG_EXT2_FS_XATTR is not set 807# CONFIG_EXT2_FS_XATTR is not set
783# CONFIG_EXT2_FS_XIP is not set 808# CONFIG_EXT2_FS_XIP is not set
784CONFIG_EXT3_FS=y 809CONFIG_EXT3_FS=y
810# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
785# CONFIG_EXT3_FS_XATTR is not set 811# CONFIG_EXT3_FS_XATTR is not set
786# CONFIG_EXT4_FS is not set 812# CONFIG_EXT4_FS is not set
787CONFIG_JBD=y 813CONFIG_JBD=y
@@ -808,13 +834,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
808# CONFIG_OCFS2_FS_STATS is not set 834# CONFIG_OCFS2_FS_STATS is not set
809# CONFIG_OCFS2_DEBUG_MASKLOG is not set 835# CONFIG_OCFS2_DEBUG_MASKLOG is not set
810# CONFIG_OCFS2_DEBUG_FS is not set 836# CONFIG_OCFS2_DEBUG_FS is not set
811# CONFIG_OCFS2_COMPAT_JBD is not set 837# CONFIG_OCFS2_FS_POSIX_ACL is not set
838# CONFIG_BTRFS_FS is not set
812CONFIG_DNOTIFY=y 839CONFIG_DNOTIFY=y
813CONFIG_INOTIFY=y 840CONFIG_INOTIFY=y
814CONFIG_INOTIFY_USER=y 841CONFIG_INOTIFY_USER=y
815CONFIG_QUOTA=y 842CONFIG_QUOTA=y
816CONFIG_QUOTA_NETLINK_INTERFACE=y 843CONFIG_QUOTA_NETLINK_INTERFACE=y
817# CONFIG_PRINT_QUOTA_WARNING is not set 844# CONFIG_PRINT_QUOTA_WARNING is not set
845CONFIG_QUOTA_TREE=m
818# CONFIG_QFMT_V1 is not set 846# CONFIG_QFMT_V1 is not set
819# CONFIG_QFMT_V2 is not set 847# CONFIG_QFMT_V2 is not set
820CONFIG_QUOTACTL=y 848CONFIG_QUOTACTL=y
@@ -823,6 +851,11 @@ CONFIG_AUTOFS4_FS=m
823CONFIG_FUSE_FS=m 851CONFIG_FUSE_FS=m
824 852
825# 853#
854# Caches
855#
856# CONFIG_FSCACHE is not set
857
858#
826# CD-ROM/DVD Filesystems 859# CD-ROM/DVD Filesystems
827# 860#
828CONFIG_ISO9660_FS=y 861CONFIG_ISO9660_FS=y
@@ -853,10 +886,7 @@ CONFIG_TMPFS=y
853# CONFIG_TMPFS_POSIX_ACL is not set 886# CONFIG_TMPFS_POSIX_ACL is not set
854# CONFIG_HUGETLB_PAGE is not set 887# CONFIG_HUGETLB_PAGE is not set
855CONFIG_CONFIGFS_FS=m 888CONFIG_CONFIGFS_FS=m
856 889CONFIG_MISC_FILESYSTEMS=y
857#
858# Miscellaneous filesystems
859#
860# CONFIG_ADFS_FS is not set 890# CONFIG_ADFS_FS is not set
861CONFIG_AFFS_FS=m 891CONFIG_AFFS_FS=m
862CONFIG_HFS_FS=m 892CONFIG_HFS_FS=m
@@ -865,6 +895,9 @@ CONFIG_HFSPLUS_FS=m
865# CONFIG_BFS_FS is not set 895# CONFIG_BFS_FS is not set
866# CONFIG_EFS_FS is not set 896# CONFIG_EFS_FS is not set
867CONFIG_CRAMFS=m 897CONFIG_CRAMFS=m
898CONFIG_SQUASHFS=m
899# CONFIG_SQUASHFS_EMBEDDED is not set
900CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
868# CONFIG_VXFS_FS is not set 901# CONFIG_VXFS_FS is not set
869CONFIG_MINIX_FS=y 902CONFIG_MINIX_FS=y
870# CONFIG_OMFS_FS is not set 903# CONFIG_OMFS_FS is not set
@@ -875,6 +908,7 @@ CONFIG_SYSV_FS=m
875CONFIG_UFS_FS=m 908CONFIG_UFS_FS=m
876# CONFIG_UFS_FS_WRITE is not set 909# CONFIG_UFS_FS_WRITE is not set
877# CONFIG_UFS_DEBUG is not set 910# CONFIG_UFS_DEBUG is not set
911# CONFIG_NILFS2_FS is not set
878CONFIG_NETWORK_FILESYSTEMS=y 912CONFIG_NETWORK_FILESYSTEMS=y
879CONFIG_NFS_FS=y 913CONFIG_NFS_FS=y
880CONFIG_NFS_V3=y 914CONFIG_NFS_V3=y
@@ -891,7 +925,6 @@ CONFIG_EXPORTFS=m
891CONFIG_NFS_COMMON=y 925CONFIG_NFS_COMMON=y
892CONFIG_SUNRPC=y 926CONFIG_SUNRPC=y
893CONFIG_SUNRPC_GSS=y 927CONFIG_SUNRPC_GSS=y
894# CONFIG_SUNRPC_REGISTER_V4 is not set
895CONFIG_RPCSEC_GSS_KRB5=y 928CONFIG_RPCSEC_GSS_KRB5=y
896# CONFIG_RPCSEC_GSS_SPKM3 is not set 929# CONFIG_RPCSEC_GSS_SPKM3 is not set
897CONFIG_SMB_FS=m 930CONFIG_SMB_FS=m
@@ -966,11 +999,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
966CONFIG_DEBUG_MEMORY_INIT=y 999CONFIG_DEBUG_MEMORY_INIT=y
967# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1000# CONFIG_RCU_CPU_STALL_DETECTOR is not set
968CONFIG_SYSCTL_SYSCALL_CHECK=y 1001CONFIG_SYSCTL_SYSCALL_CHECK=y
969
970#
971# Tracers
972#
973# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
974# CONFIG_SAMPLES is not set 1002# CONFIG_SAMPLES is not set
975 1003
976# 1004#
@@ -991,13 +1019,21 @@ CONFIG_CRYPTO=y
991# 1019#
992# CONFIG_CRYPTO_FIPS is not set 1020# CONFIG_CRYPTO_FIPS is not set
993CONFIG_CRYPTO_ALGAPI=y 1021CONFIG_CRYPTO_ALGAPI=y
994CONFIG_CRYPTO_AEAD=y 1022CONFIG_CRYPTO_ALGAPI2=y
1023CONFIG_CRYPTO_AEAD=m
1024CONFIG_CRYPTO_AEAD2=y
995CONFIG_CRYPTO_BLKCIPHER=y 1025CONFIG_CRYPTO_BLKCIPHER=y
1026CONFIG_CRYPTO_BLKCIPHER2=y
996CONFIG_CRYPTO_HASH=y 1027CONFIG_CRYPTO_HASH=y
997CONFIG_CRYPTO_RNG=y 1028CONFIG_CRYPTO_HASH2=y
1029CONFIG_CRYPTO_RNG=m
1030CONFIG_CRYPTO_RNG2=y
1031CONFIG_CRYPTO_PCOMP=y
998CONFIG_CRYPTO_MANAGER=y 1032CONFIG_CRYPTO_MANAGER=y
1033CONFIG_CRYPTO_MANAGER2=y
999CONFIG_CRYPTO_GF128MUL=m 1034CONFIG_CRYPTO_GF128MUL=m
1000CONFIG_CRYPTO_NULL=m 1035CONFIG_CRYPTO_NULL=m
1036CONFIG_CRYPTO_WORKQUEUE=y
1001CONFIG_CRYPTO_CRYPTD=m 1037CONFIG_CRYPTO_CRYPTD=m
1002CONFIG_CRYPTO_AUTHENC=m 1038CONFIG_CRYPTO_AUTHENC=m
1003CONFIG_CRYPTO_TEST=m 1039CONFIG_CRYPTO_TEST=m
@@ -1067,6 +1103,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1067# Compression 1103# Compression
1068# 1104#
1069CONFIG_CRYPTO_DEFLATE=m 1105CONFIG_CRYPTO_DEFLATE=m
1106CONFIG_CRYPTO_ZLIB=m
1070CONFIG_CRYPTO_LZO=m 1107CONFIG_CRYPTO_LZO=m
1071 1108
1072# 1109#
@@ -1074,11 +1111,13 @@ CONFIG_CRYPTO_LZO=m
1074# 1111#
1075# CONFIG_CRYPTO_ANSI_CPRNG is not set 1112# CONFIG_CRYPTO_ANSI_CPRNG is not set
1076# CONFIG_CRYPTO_HW is not set 1113# CONFIG_CRYPTO_HW is not set
1114# CONFIG_BINARY_PRINTF is not set
1077 1115
1078# 1116#
1079# Library routines 1117# Library routines
1080# 1118#
1081CONFIG_BITREVERSE=y 1119CONFIG_BITREVERSE=y
1120CONFIG_GENERIC_FIND_LAST_BIT=y
1082CONFIG_CRC_CCITT=m 1121CONFIG_CRC_CCITT=m
1083CONFIG_CRC16=m 1122CONFIG_CRC16=m
1084CONFIG_CRC_T10DIF=y 1123CONFIG_CRC_T10DIF=y
@@ -1090,10 +1129,13 @@ CONFIG_ZLIB_INFLATE=y
1090CONFIG_ZLIB_DEFLATE=m 1129CONFIG_ZLIB_DEFLATE=m
1091CONFIG_LZO_COMPRESS=m 1130CONFIG_LZO_COMPRESS=m
1092CONFIG_LZO_DECOMPRESS=m 1131CONFIG_LZO_DECOMPRESS=m
1132CONFIG_DECOMPRESS_GZIP=y
1133CONFIG_DECOMPRESS_BZIP2=y
1134CONFIG_DECOMPRESS_LZMA=y
1093CONFIG_TEXTSEARCH=y 1135CONFIG_TEXTSEARCH=y
1094CONFIG_TEXTSEARCH_KMP=m 1136CONFIG_TEXTSEARCH_KMP=m
1095CONFIG_TEXTSEARCH_BM=m 1137CONFIG_TEXTSEARCH_BM=m
1096CONFIG_TEXTSEARCH_FSM=m 1138CONFIG_TEXTSEARCH_FSM=m
1097CONFIG_PLIST=y
1098CONFIG_HAS_IOMEM=y 1139CONFIG_HAS_IOMEM=y
1099CONFIG_HAS_DMA=y 1140CONFIG_HAS_DMA=y
1141CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defconfig
index c6de25724a25..9991b64fea57 100644
--- a/arch/m68k/configs/mac_defconfig
+++ b/arch/m68k/configs/mac_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:47 2008 4# Wed Apr 22 20:48:03 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -142,12 +153,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
142CONFIG_NEED_MULTIPLE_NODES=y 153CONFIG_NEED_MULTIPLE_NODES=y
143CONFIG_PAGEFLAGS_EXTENDED=y 154CONFIG_PAGEFLAGS_EXTENDED=y
144CONFIG_SPLIT_PTLOCK_CPUS=4 155CONFIG_SPLIT_PTLOCK_CPUS=4
145# CONFIG_RESOURCES_64BIT is not set
146# CONFIG_PHYS_ADDR_T_64BIT is not set 156# CONFIG_PHYS_ADDR_T_64BIT is not set
147CONFIG_ZONE_DMA_FLAG=1 157CONFIG_ZONE_DMA_FLAG=1
148CONFIG_BOUNCE=y 158CONFIG_BOUNCE=y
149CONFIG_VIRT_TO_BUS=y 159CONFIG_VIRT_TO_BUS=y
150CONFIG_UNEVICTABLE_LRU=y 160CONFIG_UNEVICTABLE_LRU=y
161CONFIG_HAVE_MLOCK=y
162CONFIG_HAVE_MLOCKED_PAGE_BIT=y
151 163
152# 164#
153# General setup 165# General setup
@@ -255,6 +267,7 @@ CONFIG_NETFILTER_XTABLES=m
255CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 267CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
256CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 268CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
257CONFIG_NETFILTER_XT_TARGET_DSCP=m 269CONFIG_NETFILTER_XT_TARGET_DSCP=m
270CONFIG_NETFILTER_XT_TARGET_HL=m
258CONFIG_NETFILTER_XT_TARGET_MARK=m 271CONFIG_NETFILTER_XT_TARGET_MARK=m
259CONFIG_NETFILTER_XT_TARGET_NFLOG=m 272CONFIG_NETFILTER_XT_TARGET_NFLOG=m
260CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 273CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -263,6 +276,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
263CONFIG_NETFILTER_XT_TARGET_TRACE=m 276CONFIG_NETFILTER_XT_TARGET_TRACE=m
264CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 277CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
265CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 278CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
279CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
266CONFIG_NETFILTER_XT_MATCH_COMMENT=m 280CONFIG_NETFILTER_XT_MATCH_COMMENT=m
267CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 281CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
268CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 282CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -273,6 +287,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
273CONFIG_NETFILTER_XT_MATCH_ESP=m 287CONFIG_NETFILTER_XT_MATCH_ESP=m
274CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 288CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
275CONFIG_NETFILTER_XT_MATCH_HELPER=m 289CONFIG_NETFILTER_XT_MATCH_HELPER=m
290CONFIG_NETFILTER_XT_MATCH_HL=m
276CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 291CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
277CONFIG_NETFILTER_XT_MATCH_LENGTH=m 292CONFIG_NETFILTER_XT_MATCH_LENGTH=m
278CONFIG_NETFILTER_XT_MATCH_LIMIT=m 293CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -351,25 +366,20 @@ CONFIG_IP6_NF_MATCH_HL=m
351CONFIG_IP6_NF_MATCH_IPV6HEADER=m 366CONFIG_IP6_NF_MATCH_IPV6HEADER=m
352CONFIG_IP6_NF_MATCH_MH=m 367CONFIG_IP6_NF_MATCH_MH=m
353CONFIG_IP6_NF_MATCH_RT=m 368CONFIG_IP6_NF_MATCH_RT=m
369CONFIG_IP6_NF_TARGET_HL=m
354CONFIG_IP6_NF_TARGET_LOG=m 370CONFIG_IP6_NF_TARGET_LOG=m
355CONFIG_IP6_NF_FILTER=m 371CONFIG_IP6_NF_FILTER=m
356CONFIG_IP6_NF_TARGET_REJECT=m 372CONFIG_IP6_NF_TARGET_REJECT=m
357CONFIG_IP6_NF_MANGLE=m 373CONFIG_IP6_NF_MANGLE=m
358CONFIG_IP6_NF_TARGET_HL=m
359CONFIG_IP6_NF_RAW=m 374CONFIG_IP6_NF_RAW=m
360CONFIG_IP_DCCP=m 375CONFIG_IP_DCCP=m
361CONFIG_INET_DCCP_DIAG=m 376CONFIG_INET_DCCP_DIAG=m
362CONFIG_IP_DCCP_ACKVEC=y
363 377
364# 378#
365# DCCP CCIDs Configuration (EXPERIMENTAL) 379# DCCP CCIDs Configuration (EXPERIMENTAL)
366# 380#
367CONFIG_IP_DCCP_CCID2=m
368# CONFIG_IP_DCCP_CCID2_DEBUG is not set 381# CONFIG_IP_DCCP_CCID2_DEBUG is not set
369CONFIG_IP_DCCP_CCID3=m 382# CONFIG_IP_DCCP_CCID3 is not set
370# CONFIG_IP_DCCP_CCID3_DEBUG is not set
371CONFIG_IP_DCCP_CCID3_RTO=100
372CONFIG_IP_DCCP_TFRC_LIB=m
373CONFIG_IP_SCTP=m 383CONFIG_IP_SCTP=m
374# CONFIG_SCTP_DBG_MSG is not set 384# CONFIG_SCTP_DBG_MSG is not set
375# CONFIG_SCTP_DBG_OBJCNT is not set 385# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -394,8 +404,10 @@ CONFIG_IPDDP_DECAP=y
394# CONFIG_LAPB is not set 404# CONFIG_LAPB is not set
395# CONFIG_ECONET is not set 405# CONFIG_ECONET is not set
396# CONFIG_WAN_ROUTER is not set 406# CONFIG_WAN_ROUTER is not set
407# CONFIG_PHONET is not set
397# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
398CONFIG_NET_CLS_ROUTE=y 409CONFIG_NET_CLS_ROUTE=y
410# CONFIG_DCB is not set
399 411
400# 412#
401# Network testing 413# Network testing
@@ -406,8 +418,8 @@ CONFIG_NET_CLS_ROUTE=y
406# CONFIG_IRDA is not set 418# CONFIG_IRDA is not set
407# CONFIG_BT is not set 419# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 420# CONFIG_AF_RXRPC is not set
409# CONFIG_PHONET is not set
410# CONFIG_WIRELESS is not set 421# CONFIG_WIRELESS is not set
422# CONFIG_WIMAX is not set
411# CONFIG_RFKILL is not set 423# CONFIG_RFKILL is not set
412# CONFIG_NET_9P is not set 424# CONFIG_NET_9P is not set
413 425
@@ -429,6 +441,7 @@ CONFIG_CONNECTOR=m
429# CONFIG_MTD is not set 441# CONFIG_MTD is not set
430# CONFIG_PARPORT is not set 442# CONFIG_PARPORT is not set
431CONFIG_BLK_DEV=y 443CONFIG_BLK_DEV=y
444CONFIG_BLK_DEV_SWIM=y
432# CONFIG_BLK_DEV_COW_COMMON is not set 445# CONFIG_BLK_DEV_COW_COMMON is not set
433CONFIG_BLK_DEV_LOOP=y 446CONFIG_BLK_DEV_LOOP=y
434CONFIG_BLK_DEV_CRYPTOLOOP=m 447CONFIG_BLK_DEV_CRYPTOLOOP=m
@@ -443,15 +456,20 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
443CONFIG_ATA_OVER_ETH=m 456CONFIG_ATA_OVER_ETH=m
444# CONFIG_BLK_DEV_HD is not set 457# CONFIG_BLK_DEV_HD is not set
445CONFIG_MISC_DEVICES=y 458CONFIG_MISC_DEVICES=y
446# CONFIG_EEPROM_93CX6 is not set
447# CONFIG_ENCLOSURE_SERVICES is not set 459# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set 460# CONFIG_C2PORT is not set
461
462#
463# EEPROM support
464#
465# CONFIG_EEPROM_93CX6 is not set
449CONFIG_HAVE_IDE=y 466CONFIG_HAVE_IDE=y
450CONFIG_IDE=y 467CONFIG_IDE=y
451 468
452# 469#
453# Please see Documentation/ide/ide.txt for help/info on IDE drives 470# Please see Documentation/ide/ide.txt for help/info on IDE drives
454# 471#
472CONFIG_IDE_ATAPI=y
455# CONFIG_BLK_DEV_IDE_SATA is not set 473# CONFIG_BLK_DEV_IDE_SATA is not set
456CONFIG_IDE_GD=y 474CONFIG_IDE_GD=y
457CONFIG_IDE_GD_ATA=y 475CONFIG_IDE_GD_ATA=y
@@ -459,7 +477,6 @@ CONFIG_IDE_GD_ATA=y
459CONFIG_BLK_DEV_IDECD=y 477CONFIG_BLK_DEV_IDECD=y
460CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 478CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
461# CONFIG_BLK_DEV_IDETAPE is not set 479# CONFIG_BLK_DEV_IDETAPE is not set
462# CONFIG_BLK_DEV_IDESCSI is not set
463# CONFIG_IDE_TASK_IOCTL is not set 480# CONFIG_IDE_TASK_IOCTL is not set
464CONFIG_IDE_PROC_FS=y 481CONFIG_IDE_PROC_FS=y
465 482
@@ -514,10 +531,13 @@ CONFIG_SCSI_SRP_ATTRS=m
514CONFIG_SCSI_SRP_TGT_ATTRS=y 531CONFIG_SCSI_SRP_TGT_ATTRS=y
515CONFIG_SCSI_LOWLEVEL=y 532CONFIG_SCSI_LOWLEVEL=y
516CONFIG_ISCSI_TCP=m 533CONFIG_ISCSI_TCP=m
534# CONFIG_LIBFC is not set
535# CONFIG_LIBFCOE is not set
517# CONFIG_SCSI_DEBUG is not set 536# CONFIG_SCSI_DEBUG is not set
518CONFIG_MAC_SCSI=y 537CONFIG_MAC_SCSI=y
519CONFIG_SCSI_MAC_ESP=y 538CONFIG_SCSI_MAC_ESP=y
520# CONFIG_SCSI_DH is not set 539# CONFIG_SCSI_DH is not set
540# CONFIG_SCSI_OSD_INITIATOR is not set
521CONFIG_MD=y 541CONFIG_MD=y
522CONFIG_BLK_DEV_MD=m 542CONFIG_BLK_DEV_MD=m
523CONFIG_MD_LINEAR=m 543CONFIG_MD_LINEAR=m
@@ -525,7 +545,7 @@ CONFIG_MD_RAID0=m
525CONFIG_MD_RAID1=m 545CONFIG_MD_RAID1=m
526# CONFIG_MD_RAID10 is not set 546# CONFIG_MD_RAID10 is not set
527CONFIG_MD_RAID456=m 547CONFIG_MD_RAID456=m
528CONFIG_MD_RAID5_RESHAPE=y 548CONFIG_MD_RAID6_PQ=m
529# CONFIG_MD_MULTIPATH is not set 549# CONFIG_MD_MULTIPATH is not set
530# CONFIG_MD_FAULTY is not set 550# CONFIG_MD_FAULTY is not set
531CONFIG_BLK_DEV_DM=m 551CONFIG_BLK_DEV_DM=m
@@ -547,6 +567,7 @@ CONFIG_ADB_CUDA=y
547CONFIG_INPUT_ADBHID=y 567CONFIG_INPUT_ADBHID=y
548CONFIG_MAC_EMUMOUSEBTN=y 568CONFIG_MAC_EMUMOUSEBTN=y
549CONFIG_NETDEVICES=y 569CONFIG_NETDEVICES=y
570CONFIG_COMPAT_NET_DEV_OPS=y
550CONFIG_DUMMY=m 571CONFIG_DUMMY=m
551# CONFIG_BONDING is not set 572# CONFIG_BONDING is not set
552CONFIG_MACVLAN=m 573CONFIG_MACVLAN=m
@@ -561,6 +582,8 @@ CONFIG_MAC89x0=m
561CONFIG_MACSONIC=m 582CONFIG_MACSONIC=m
562CONFIG_MACMACE=y 583CONFIG_MACMACE=y
563# CONFIG_NET_VENDOR_SMC is not set 584# CONFIG_NET_VENDOR_SMC is not set
585# CONFIG_ETHOC is not set
586# CONFIG_DNET is not set
564# CONFIG_IBM_NEW_EMAC_ZMII is not set 587# CONFIG_IBM_NEW_EMAC_ZMII is not set
565# CONFIG_IBM_NEW_EMAC_RGMII is not set 588# CONFIG_IBM_NEW_EMAC_RGMII is not set
566# CONFIG_IBM_NEW_EMAC_TAH is not set 589# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -577,7 +600,10 @@ CONFIG_MACMACE=y
577# 600#
578# CONFIG_WLAN_PRE80211 is not set 601# CONFIG_WLAN_PRE80211 is not set
579# CONFIG_WLAN_80211 is not set 602# CONFIG_WLAN_80211 is not set
580# CONFIG_IWLWIFI_LEDS is not set 603
604#
605# Enable WiMAX (Networking options) to see the WiMAX drivers
606#
581# CONFIG_WAN is not set 607# CONFIG_WAN is not set
582CONFIG_PPP=m 608CONFIG_PPP=m
583# CONFIG_PPP_MULTILINK is not set 609# CONFIG_PPP_MULTILINK is not set
@@ -635,7 +661,6 @@ CONFIG_MOUSE_PS2=m
635CONFIG_MOUSE_PS2_ALPS=y 661CONFIG_MOUSE_PS2_ALPS=y
636CONFIG_MOUSE_PS2_LOGIPS2PP=y 662CONFIG_MOUSE_PS2_LOGIPS2PP=y
637CONFIG_MOUSE_PS2_SYNAPTICS=y 663CONFIG_MOUSE_PS2_SYNAPTICS=y
638CONFIG_MOUSE_PS2_LIFEBOOK=y
639CONFIG_MOUSE_PS2_TRACKPOINT=y 664CONFIG_MOUSE_PS2_TRACKPOINT=y
640# CONFIG_MOUSE_PS2_ELANTECH is not set 665# CONFIG_MOUSE_PS2_ELANTECH is not set
641# CONFIG_MOUSE_PS2_TOUCHKIT is not set 666# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -677,6 +702,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
677# Non-8250 serial port support 702# Non-8250 serial port support
678# 703#
679CONFIG_UNIX98_PTYS=y 704CONFIG_UNIX98_PTYS=y
705# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
680CONFIG_LEGACY_PTYS=y 706CONFIG_LEGACY_PTYS=y
681CONFIG_LEGACY_PTY_COUNT=256 707CONFIG_LEGACY_PTY_COUNT=256
682# CONFIG_IPMI_HANDLER is not set 708# CONFIG_IPMI_HANDLER is not set
@@ -760,6 +786,7 @@ CONFIG_FB_MAC=y
760# CONFIG_FB_VIRTUAL is not set 786# CONFIG_FB_VIRTUAL is not set
761# CONFIG_FB_METRONOME is not set 787# CONFIG_FB_METRONOME is not set
762# CONFIG_FB_MB862XX is not set 788# CONFIG_FB_MB862XX is not set
789# CONFIG_FB_BROADSHEET is not set
763# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 790# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
764 791
765# 792#
@@ -793,7 +820,6 @@ CONFIG_HIDRAW=y
793# 820#
794# Special HID drivers 821# Special HID drivers
795# 822#
796CONFIG_HID_COMPAT=y
797# CONFIG_USB_SUPPORT is not set 823# CONFIG_USB_SUPPORT is not set
798# CONFIG_MMC is not set 824# CONFIG_MMC is not set
799# CONFIG_MEMSTICK is not set 825# CONFIG_MEMSTICK is not set
@@ -801,9 +827,9 @@ CONFIG_HID_COMPAT=y
801# CONFIG_ACCESSIBILITY is not set 827# CONFIG_ACCESSIBILITY is not set
802# CONFIG_RTC_CLASS is not set 828# CONFIG_RTC_CLASS is not set
803# CONFIG_DMADEVICES is not set 829# CONFIG_DMADEVICES is not set
830# CONFIG_AUXDISPLAY is not set
804# CONFIG_UIO is not set 831# CONFIG_UIO is not set
805# CONFIG_STAGING is not set 832# CONFIG_STAGING is not set
806CONFIG_STAGING_EXCLUDE_BUILD=y
807 833
808# 834#
809# Character devices 835# Character devices
@@ -819,6 +845,7 @@ CONFIG_EXT2_FS=y
819# CONFIG_EXT2_FS_XATTR is not set 845# CONFIG_EXT2_FS_XATTR is not set
820# CONFIG_EXT2_FS_XIP is not set 846# CONFIG_EXT2_FS_XIP is not set
821CONFIG_EXT3_FS=y 847CONFIG_EXT3_FS=y
848# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
822# CONFIG_EXT3_FS_XATTR is not set 849# CONFIG_EXT3_FS_XATTR is not set
823# CONFIG_EXT4_FS is not set 850# CONFIG_EXT4_FS is not set
824CONFIG_JBD=y 851CONFIG_JBD=y
@@ -845,13 +872,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
845# CONFIG_OCFS2_FS_STATS is not set 872# CONFIG_OCFS2_FS_STATS is not set
846# CONFIG_OCFS2_DEBUG_MASKLOG is not set 873# CONFIG_OCFS2_DEBUG_MASKLOG is not set
847# CONFIG_OCFS2_DEBUG_FS is not set 874# CONFIG_OCFS2_DEBUG_FS is not set
848# CONFIG_OCFS2_COMPAT_JBD is not set 875# CONFIG_OCFS2_FS_POSIX_ACL is not set
876# CONFIG_BTRFS_FS is not set
849CONFIG_DNOTIFY=y 877CONFIG_DNOTIFY=y
850CONFIG_INOTIFY=y 878CONFIG_INOTIFY=y
851CONFIG_INOTIFY_USER=y 879CONFIG_INOTIFY_USER=y
852CONFIG_QUOTA=y 880CONFIG_QUOTA=y
853CONFIG_QUOTA_NETLINK_INTERFACE=y 881CONFIG_QUOTA_NETLINK_INTERFACE=y
854# CONFIG_PRINT_QUOTA_WARNING is not set 882# CONFIG_PRINT_QUOTA_WARNING is not set
883CONFIG_QUOTA_TREE=m
855# CONFIG_QFMT_V1 is not set 884# CONFIG_QFMT_V1 is not set
856# CONFIG_QFMT_V2 is not set 885# CONFIG_QFMT_V2 is not set
857CONFIG_QUOTACTL=y 886CONFIG_QUOTACTL=y
@@ -860,6 +889,11 @@ CONFIG_AUTOFS4_FS=m
860CONFIG_FUSE_FS=m 889CONFIG_FUSE_FS=m
861 890
862# 891#
892# Caches
893#
894# CONFIG_FSCACHE is not set
895
896#
863# CD-ROM/DVD Filesystems 897# CD-ROM/DVD Filesystems
864# 898#
865CONFIG_ISO9660_FS=y 899CONFIG_ISO9660_FS=y
@@ -890,10 +924,7 @@ CONFIG_TMPFS=y
890# CONFIG_TMPFS_POSIX_ACL is not set 924# CONFIG_TMPFS_POSIX_ACL is not set
891# CONFIG_HUGETLB_PAGE is not set 925# CONFIG_HUGETLB_PAGE is not set
892CONFIG_CONFIGFS_FS=m 926CONFIG_CONFIGFS_FS=m
893 927CONFIG_MISC_FILESYSTEMS=y
894#
895# Miscellaneous filesystems
896#
897# CONFIG_ADFS_FS is not set 928# CONFIG_ADFS_FS is not set
898CONFIG_AFFS_FS=m 929CONFIG_AFFS_FS=m
899CONFIG_HFS_FS=y 930CONFIG_HFS_FS=y
@@ -902,6 +933,9 @@ CONFIG_HFSPLUS_FS=y
902# CONFIG_BFS_FS is not set 933# CONFIG_BFS_FS is not set
903# CONFIG_EFS_FS is not set 934# CONFIG_EFS_FS is not set
904CONFIG_CRAMFS=m 935CONFIG_CRAMFS=m
936CONFIG_SQUASHFS=m
937# CONFIG_SQUASHFS_EMBEDDED is not set
938CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
905# CONFIG_VXFS_FS is not set 939# CONFIG_VXFS_FS is not set
906CONFIG_MINIX_FS=y 940CONFIG_MINIX_FS=y
907# CONFIG_OMFS_FS is not set 941# CONFIG_OMFS_FS is not set
@@ -912,6 +946,7 @@ CONFIG_SYSV_FS=m
912CONFIG_UFS_FS=m 946CONFIG_UFS_FS=m
913# CONFIG_UFS_FS_WRITE is not set 947# CONFIG_UFS_FS_WRITE is not set
914# CONFIG_UFS_DEBUG is not set 948# CONFIG_UFS_DEBUG is not set
949# CONFIG_NILFS2_FS is not set
915CONFIG_NETWORK_FILESYSTEMS=y 950CONFIG_NETWORK_FILESYSTEMS=y
916CONFIG_NFS_FS=m 951CONFIG_NFS_FS=m
917CONFIG_NFS_V3=y 952CONFIG_NFS_V3=y
@@ -927,7 +962,6 @@ CONFIG_EXPORTFS=m
927CONFIG_NFS_COMMON=y 962CONFIG_NFS_COMMON=y
928CONFIG_SUNRPC=m 963CONFIG_SUNRPC=m
929CONFIG_SUNRPC_GSS=m 964CONFIG_SUNRPC_GSS=m
930# CONFIG_SUNRPC_REGISTER_V4 is not set
931CONFIG_RPCSEC_GSS_KRB5=m 965CONFIG_RPCSEC_GSS_KRB5=m
932# CONFIG_RPCSEC_GSS_SPKM3 is not set 966# CONFIG_RPCSEC_GSS_SPKM3 is not set
933CONFIG_SMB_FS=m 967CONFIG_SMB_FS=m
@@ -1003,11 +1037,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
1003CONFIG_DEBUG_MEMORY_INIT=y 1037CONFIG_DEBUG_MEMORY_INIT=y
1004# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1038# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1005CONFIG_SYSCTL_SYSCALL_CHECK=y 1039CONFIG_SYSCTL_SYSCALL_CHECK=y
1006
1007#
1008# Tracers
1009#
1010# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1011# CONFIG_SAMPLES is not set 1040# CONFIG_SAMPLES is not set
1012 1041
1013# 1042#
@@ -1028,13 +1057,21 @@ CONFIG_CRYPTO=y
1028# 1057#
1029# CONFIG_CRYPTO_FIPS is not set 1058# CONFIG_CRYPTO_FIPS is not set
1030CONFIG_CRYPTO_ALGAPI=y 1059CONFIG_CRYPTO_ALGAPI=y
1031CONFIG_CRYPTO_AEAD=y 1060CONFIG_CRYPTO_ALGAPI2=y
1032CONFIG_CRYPTO_BLKCIPHER=y 1061CONFIG_CRYPTO_AEAD=m
1062CONFIG_CRYPTO_AEAD2=y
1063CONFIG_CRYPTO_BLKCIPHER=m
1064CONFIG_CRYPTO_BLKCIPHER2=y
1033CONFIG_CRYPTO_HASH=y 1065CONFIG_CRYPTO_HASH=y
1034CONFIG_CRYPTO_RNG=y 1066CONFIG_CRYPTO_HASH2=y
1067CONFIG_CRYPTO_RNG=m
1068CONFIG_CRYPTO_RNG2=y
1069CONFIG_CRYPTO_PCOMP=y
1035CONFIG_CRYPTO_MANAGER=y 1070CONFIG_CRYPTO_MANAGER=y
1071CONFIG_CRYPTO_MANAGER2=y
1036CONFIG_CRYPTO_GF128MUL=m 1072CONFIG_CRYPTO_GF128MUL=m
1037CONFIG_CRYPTO_NULL=m 1073CONFIG_CRYPTO_NULL=m
1074CONFIG_CRYPTO_WORKQUEUE=y
1038CONFIG_CRYPTO_CRYPTD=m 1075CONFIG_CRYPTO_CRYPTD=m
1039CONFIG_CRYPTO_AUTHENC=m 1076CONFIG_CRYPTO_AUTHENC=m
1040CONFIG_CRYPTO_TEST=m 1077CONFIG_CRYPTO_TEST=m
@@ -1104,6 +1141,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1104# Compression 1141# Compression
1105# 1142#
1106CONFIG_CRYPTO_DEFLATE=m 1143CONFIG_CRYPTO_DEFLATE=m
1144CONFIG_CRYPTO_ZLIB=m
1107CONFIG_CRYPTO_LZO=m 1145CONFIG_CRYPTO_LZO=m
1108 1146
1109# 1147#
@@ -1111,11 +1149,13 @@ CONFIG_CRYPTO_LZO=m
1111# 1149#
1112# CONFIG_CRYPTO_ANSI_CPRNG is not set 1150# CONFIG_CRYPTO_ANSI_CPRNG is not set
1113# CONFIG_CRYPTO_HW is not set 1151# CONFIG_CRYPTO_HW is not set
1152# CONFIG_BINARY_PRINTF is not set
1114 1153
1115# 1154#
1116# Library routines 1155# Library routines
1117# 1156#
1118CONFIG_BITREVERSE=y 1157CONFIG_BITREVERSE=y
1158CONFIG_GENERIC_FIND_LAST_BIT=y
1119CONFIG_CRC_CCITT=m 1159CONFIG_CRC_CCITT=m
1120CONFIG_CRC16=m 1160CONFIG_CRC16=m
1121CONFIG_CRC_T10DIF=y 1161CONFIG_CRC_T10DIF=y
@@ -1127,10 +1167,13 @@ CONFIG_ZLIB_INFLATE=y
1127CONFIG_ZLIB_DEFLATE=m 1167CONFIG_ZLIB_DEFLATE=m
1128CONFIG_LZO_COMPRESS=m 1168CONFIG_LZO_COMPRESS=m
1129CONFIG_LZO_DECOMPRESS=m 1169CONFIG_LZO_DECOMPRESS=m
1170CONFIG_DECOMPRESS_GZIP=y
1171CONFIG_DECOMPRESS_BZIP2=y
1172CONFIG_DECOMPRESS_LZMA=y
1130CONFIG_TEXTSEARCH=y 1173CONFIG_TEXTSEARCH=y
1131CONFIG_TEXTSEARCH_KMP=m 1174CONFIG_TEXTSEARCH_KMP=m
1132CONFIG_TEXTSEARCH_BM=m 1175CONFIG_TEXTSEARCH_BM=m
1133CONFIG_TEXTSEARCH_FSM=m 1176CONFIG_TEXTSEARCH_FSM=m
1134CONFIG_PLIST=y
1135CONFIG_HAS_IOMEM=y 1177CONFIG_HAS_IOMEM=y
1136CONFIG_HAS_DMA=y 1178CONFIG_HAS_DMA=y
1179CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_defconfig
index 70693588031e..69c43e2d8b45 100644
--- a/arch/m68k/configs/multi_defconfig
+++ b/arch/m68k/configs/multi_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:48 2008 4# Wed Apr 22 20:48:06 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -146,12 +157,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
146CONFIG_NEED_MULTIPLE_NODES=y 157CONFIG_NEED_MULTIPLE_NODES=y
147CONFIG_PAGEFLAGS_EXTENDED=y 158CONFIG_PAGEFLAGS_EXTENDED=y
148CONFIG_SPLIT_PTLOCK_CPUS=4 159CONFIG_SPLIT_PTLOCK_CPUS=4
149# CONFIG_RESOURCES_64BIT is not set
150# CONFIG_PHYS_ADDR_T_64BIT is not set 160# CONFIG_PHYS_ADDR_T_64BIT is not set
151CONFIG_ZONE_DMA_FLAG=1 161CONFIG_ZONE_DMA_FLAG=1
152CONFIG_BOUNCE=y 162CONFIG_BOUNCE=y
153CONFIG_VIRT_TO_BUS=y 163CONFIG_VIRT_TO_BUS=y
154CONFIG_UNEVICTABLE_LRU=y 164CONFIG_UNEVICTABLE_LRU=y
165CONFIG_HAVE_MLOCK=y
166CONFIG_HAVE_MLOCKED_PAGE_BIT=y
155 167
156# 168#
157# General setup 169# General setup
@@ -268,6 +280,7 @@ CONFIG_NETFILTER_XTABLES=m
268CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 280CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
269CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 281CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
270CONFIG_NETFILTER_XT_TARGET_DSCP=m 282CONFIG_NETFILTER_XT_TARGET_DSCP=m
283CONFIG_NETFILTER_XT_TARGET_HL=m
271CONFIG_NETFILTER_XT_TARGET_MARK=m 284CONFIG_NETFILTER_XT_TARGET_MARK=m
272CONFIG_NETFILTER_XT_TARGET_NFLOG=m 285CONFIG_NETFILTER_XT_TARGET_NFLOG=m
273CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 286CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -276,6 +289,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
276CONFIG_NETFILTER_XT_TARGET_TRACE=m 289CONFIG_NETFILTER_XT_TARGET_TRACE=m
277CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 290CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
278CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 291CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
292CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
279CONFIG_NETFILTER_XT_MATCH_COMMENT=m 293CONFIG_NETFILTER_XT_MATCH_COMMENT=m
280CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 294CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
281CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 295CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -286,6 +300,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
286CONFIG_NETFILTER_XT_MATCH_ESP=m 300CONFIG_NETFILTER_XT_MATCH_ESP=m
287CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 301CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
288CONFIG_NETFILTER_XT_MATCH_HELPER=m 302CONFIG_NETFILTER_XT_MATCH_HELPER=m
303CONFIG_NETFILTER_XT_MATCH_HL=m
289CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 304CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
290CONFIG_NETFILTER_XT_MATCH_LENGTH=m 305CONFIG_NETFILTER_XT_MATCH_LENGTH=m
291CONFIG_NETFILTER_XT_MATCH_LIMIT=m 306CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -364,25 +379,20 @@ CONFIG_IP6_NF_MATCH_HL=m
364CONFIG_IP6_NF_MATCH_IPV6HEADER=m 379CONFIG_IP6_NF_MATCH_IPV6HEADER=m
365CONFIG_IP6_NF_MATCH_MH=m 380CONFIG_IP6_NF_MATCH_MH=m
366CONFIG_IP6_NF_MATCH_RT=m 381CONFIG_IP6_NF_MATCH_RT=m
382CONFIG_IP6_NF_TARGET_HL=m
367CONFIG_IP6_NF_TARGET_LOG=m 383CONFIG_IP6_NF_TARGET_LOG=m
368CONFIG_IP6_NF_FILTER=m 384CONFIG_IP6_NF_FILTER=m
369CONFIG_IP6_NF_TARGET_REJECT=m 385CONFIG_IP6_NF_TARGET_REJECT=m
370CONFIG_IP6_NF_MANGLE=m 386CONFIG_IP6_NF_MANGLE=m
371CONFIG_IP6_NF_TARGET_HL=m
372CONFIG_IP6_NF_RAW=m 387CONFIG_IP6_NF_RAW=m
373CONFIG_IP_DCCP=m 388CONFIG_IP_DCCP=m
374CONFIG_INET_DCCP_DIAG=m 389CONFIG_INET_DCCP_DIAG=m
375CONFIG_IP_DCCP_ACKVEC=y
376 390
377# 391#
378# DCCP CCIDs Configuration (EXPERIMENTAL) 392# DCCP CCIDs Configuration (EXPERIMENTAL)
379# 393#
380CONFIG_IP_DCCP_CCID2=m
381# CONFIG_IP_DCCP_CCID2_DEBUG is not set 394# CONFIG_IP_DCCP_CCID2_DEBUG is not set
382CONFIG_IP_DCCP_CCID3=m 395# CONFIG_IP_DCCP_CCID3 is not set
383# CONFIG_IP_DCCP_CCID3_DEBUG is not set
384CONFIG_IP_DCCP_CCID3_RTO=100
385CONFIG_IP_DCCP_TFRC_LIB=m
386CONFIG_IP_SCTP=m 396CONFIG_IP_SCTP=m
387# CONFIG_SCTP_DBG_MSG is not set 397# CONFIG_SCTP_DBG_MSG is not set
388# CONFIG_SCTP_DBG_OBJCNT is not set 398# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -408,8 +418,10 @@ CONFIG_IPDDP_DECAP=y
408# CONFIG_LAPB is not set 418# CONFIG_LAPB is not set
409# CONFIG_ECONET is not set 419# CONFIG_ECONET is not set
410# CONFIG_WAN_ROUTER is not set 420# CONFIG_WAN_ROUTER is not set
421# CONFIG_PHONET is not set
411# CONFIG_NET_SCHED is not set 422# CONFIG_NET_SCHED is not set
412CONFIG_NET_CLS_ROUTE=y 423CONFIG_NET_CLS_ROUTE=y
424# CONFIG_DCB is not set
413 425
414# 426#
415# Network testing 427# Network testing
@@ -420,8 +432,8 @@ CONFIG_NET_CLS_ROUTE=y
420# CONFIG_IRDA is not set 432# CONFIG_IRDA is not set
421# CONFIG_BT is not set 433# CONFIG_BT is not set
422# CONFIG_AF_RXRPC is not set 434# CONFIG_AF_RXRPC is not set
423# CONFIG_PHONET is not set
424# CONFIG_WIRELESS is not set 435# CONFIG_WIRELESS is not set
436# CONFIG_WIMAX is not set
425# CONFIG_RFKILL is not set 437# CONFIG_RFKILL is not set
426# CONFIG_NET_9P is not set 438# CONFIG_NET_9P is not set
427 439
@@ -454,6 +466,7 @@ CONFIG_PARPORT_NOT_PC=y
454CONFIG_BLK_DEV=y 466CONFIG_BLK_DEV=y
455CONFIG_AMIGA_FLOPPY=y 467CONFIG_AMIGA_FLOPPY=y
456CONFIG_ATARI_FLOPPY=y 468CONFIG_ATARI_FLOPPY=y
469CONFIG_BLK_DEV_SWIM=y
457CONFIG_AMIGA_Z2RAM=y 470CONFIG_AMIGA_Z2RAM=y
458# CONFIG_BLK_DEV_COW_COMMON is not set 471# CONFIG_BLK_DEV_COW_COMMON is not set
459CONFIG_BLK_DEV_LOOP=y 472CONFIG_BLK_DEV_LOOP=y
@@ -469,15 +482,20 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
469CONFIG_ATA_OVER_ETH=m 482CONFIG_ATA_OVER_ETH=m
470# CONFIG_BLK_DEV_HD is not set 483# CONFIG_BLK_DEV_HD is not set
471CONFIG_MISC_DEVICES=y 484CONFIG_MISC_DEVICES=y
472# CONFIG_EEPROM_93CX6 is not set
473# CONFIG_ENCLOSURE_SERVICES is not set 485# CONFIG_ENCLOSURE_SERVICES is not set
474# CONFIG_C2PORT is not set 486# CONFIG_C2PORT is not set
487
488#
489# EEPROM support
490#
491# CONFIG_EEPROM_93CX6 is not set
475CONFIG_HAVE_IDE=y 492CONFIG_HAVE_IDE=y
476CONFIG_IDE=y 493CONFIG_IDE=y
477 494
478# 495#
479# Please see Documentation/ide/ide.txt for help/info on IDE drives 496# Please see Documentation/ide/ide.txt for help/info on IDE drives
480# 497#
498CONFIG_IDE_ATAPI=y
481# CONFIG_BLK_DEV_IDE_SATA is not set 499# CONFIG_BLK_DEV_IDE_SATA is not set
482CONFIG_IDE_GD=y 500CONFIG_IDE_GD=y
483CONFIG_IDE_GD_ATA=y 501CONFIG_IDE_GD_ATA=y
@@ -485,7 +503,6 @@ CONFIG_IDE_GD_ATA=y
485CONFIG_BLK_DEV_IDECD=y 503CONFIG_BLK_DEV_IDECD=y
486CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 504CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
487# CONFIG_BLK_DEV_IDETAPE is not set 505# CONFIG_BLK_DEV_IDETAPE is not set
488# CONFIG_BLK_DEV_IDESCSI is not set
489# CONFIG_IDE_TASK_IOCTL is not set 506# CONFIG_IDE_TASK_IOCTL is not set
490CONFIG_IDE_PROC_FS=y 507CONFIG_IDE_PROC_FS=y
491 508
@@ -494,7 +511,6 @@ CONFIG_IDE_PROC_FS=y
494# 511#
495# CONFIG_BLK_DEV_PLATFORM is not set 512# CONFIG_BLK_DEV_PLATFORM is not set
496CONFIG_BLK_DEV_GAYLE=y 513CONFIG_BLK_DEV_GAYLE=y
497CONFIG_BLK_DEV_IDEDOUBLER=y
498CONFIG_BLK_DEV_BUDDHA=y 514CONFIG_BLK_DEV_BUDDHA=y
499CONFIG_BLK_DEV_FALCON_IDE=y 515CONFIG_BLK_DEV_FALCON_IDE=y
500CONFIG_BLK_DEV_MAC_IDE=y 516CONFIG_BLK_DEV_MAC_IDE=y
@@ -549,6 +565,8 @@ CONFIG_ISCSI_TCP=m
549# CONFIG_SCSI_AIC7XXX_OLD is not set 565# CONFIG_SCSI_AIC7XXX_OLD is not set
550# CONFIG_SCSI_ADVANSYS is not set 566# CONFIG_SCSI_ADVANSYS is not set
551# CONFIG_SCSI_IN2000 is not set 567# CONFIG_SCSI_IN2000 is not set
568# CONFIG_LIBFC is not set
569# CONFIG_LIBFCOE is not set
552# CONFIG_SCSI_DTC3280 is not set 570# CONFIG_SCSI_DTC3280 is not set
553# CONFIG_SCSI_FUTURE_DOMAIN is not set 571# CONFIG_SCSI_FUTURE_DOMAIN is not set
554# CONFIG_SCSI_GENERIC_NCR5380 is not set 572# CONFIG_SCSI_GENERIC_NCR5380 is not set
@@ -575,6 +593,7 @@ CONFIG_MVME16x_SCSI=y
575CONFIG_BVME6000_SCSI=y 593CONFIG_BVME6000_SCSI=y
576CONFIG_SUN3X_ESP=y 594CONFIG_SUN3X_ESP=y
577# CONFIG_SCSI_DH is not set 595# CONFIG_SCSI_DH is not set
596# CONFIG_SCSI_OSD_INITIATOR is not set
578CONFIG_MD=y 597CONFIG_MD=y
579CONFIG_BLK_DEV_MD=m 598CONFIG_BLK_DEV_MD=m
580CONFIG_MD_LINEAR=m 599CONFIG_MD_LINEAR=m
@@ -582,7 +601,7 @@ CONFIG_MD_RAID0=m
582CONFIG_MD_RAID1=m 601CONFIG_MD_RAID1=m
583# CONFIG_MD_RAID10 is not set 602# CONFIG_MD_RAID10 is not set
584CONFIG_MD_RAID456=m 603CONFIG_MD_RAID456=m
585CONFIG_MD_RAID5_RESHAPE=y 604CONFIG_MD_RAID6_PQ=m
586# CONFIG_MD_MULTIPATH is not set 605# CONFIG_MD_MULTIPATH is not set
587# CONFIG_MD_FAULTY is not set 606# CONFIG_MD_FAULTY is not set
588CONFIG_BLK_DEV_DM=m 607CONFIG_BLK_DEV_DM=m
@@ -604,6 +623,7 @@ CONFIG_ADB_CUDA=y
604CONFIG_INPUT_ADBHID=y 623CONFIG_INPUT_ADBHID=y
605CONFIG_MAC_EMUMOUSEBTN=y 624CONFIG_MAC_EMUMOUSEBTN=y
606CONFIG_NETDEVICES=y 625CONFIG_NETDEVICES=y
626CONFIG_COMPAT_NET_DEV_OPS=y
607CONFIG_DUMMY=m 627CONFIG_DUMMY=m
608# CONFIG_BONDING is not set 628# CONFIG_BONDING is not set
609CONFIG_MACVLAN=m 629CONFIG_MACVLAN=m
@@ -614,24 +634,26 @@ CONFIG_VETH=m
614# CONFIG_PHYLIB is not set 634# CONFIG_PHYLIB is not set
615CONFIG_NET_ETHERNET=y 635CONFIG_NET_ETHERNET=y
616CONFIG_MII=y 636CONFIG_MII=y
617CONFIG_ARIADNE=m 637CONFIG_ARIADNE=y
618CONFIG_A2065=m 638CONFIG_A2065=y
619CONFIG_HYDRA=m 639CONFIG_HYDRA=y
620CONFIG_ZORRO8390=m 640CONFIG_ZORRO8390=y
621CONFIG_APNE=m 641CONFIG_APNE=y
622CONFIG_MAC8390=y 642CONFIG_MAC8390=y
623CONFIG_MAC89x0=m 643CONFIG_MAC89x0=y
624CONFIG_MACSONIC=m 644CONFIG_MACSONIC=y
625CONFIG_MACMACE=y 645CONFIG_MACMACE=y
626CONFIG_MVME147_NET=y 646CONFIG_MVME147_NET=y
627CONFIG_MVME16x_NET=y 647CONFIG_MVME16x_NET=y
628CONFIG_BVME6000_NET=y 648CONFIG_BVME6000_NET=y
629CONFIG_ATARILANCE=m 649CONFIG_ATARILANCE=y
630CONFIG_SUN3LANCE=y 650CONFIG_SUN3LANCE=y
631CONFIG_HPLANCE=y 651CONFIG_HPLANCE=y
632# CONFIG_NET_VENDOR_3COM is not set 652# CONFIG_NET_VENDOR_3COM is not set
633# CONFIG_NET_VENDOR_SMC is not set 653# CONFIG_NET_VENDOR_SMC is not set
654# CONFIG_ETHOC is not set
634# CONFIG_NET_VENDOR_RACAL is not set 655# CONFIG_NET_VENDOR_RACAL is not set
656# CONFIG_DNET is not set
635# CONFIG_AT1700 is not set 657# CONFIG_AT1700 is not set
636# CONFIG_DEPCA is not set 658# CONFIG_DEPCA is not set
637# CONFIG_HP100 is not set 659# CONFIG_HP100 is not set
@@ -657,7 +679,10 @@ CONFIG_NE2000=m
657# 679#
658# CONFIG_WLAN_PRE80211 is not set 680# CONFIG_WLAN_PRE80211 is not set
659# CONFIG_WLAN_80211 is not set 681# CONFIG_WLAN_80211 is not set
660# CONFIG_IWLWIFI_LEDS is not set 682
683#
684# Enable WiMAX (Networking options) to see the WiMAX drivers
685#
661# CONFIG_WAN is not set 686# CONFIG_WAN is not set
662# CONFIG_PLIP is not set 687# CONFIG_PLIP is not set
663CONFIG_PPP=m 688CONFIG_PPP=m
@@ -717,11 +742,10 @@ CONFIG_KEYBOARD_ATARI=y
717CONFIG_KEYBOARD_HIL_OLD=y 742CONFIG_KEYBOARD_HIL_OLD=y
718CONFIG_KEYBOARD_HIL=y 743CONFIG_KEYBOARD_HIL=y
719CONFIG_INPUT_MOUSE=y 744CONFIG_INPUT_MOUSE=y
720CONFIG_MOUSE_PS2=y 745CONFIG_MOUSE_PS2=m
721CONFIG_MOUSE_PS2_ALPS=y 746CONFIG_MOUSE_PS2_ALPS=y
722CONFIG_MOUSE_PS2_LOGIPS2PP=y 747CONFIG_MOUSE_PS2_LOGIPS2PP=y
723CONFIG_MOUSE_PS2_SYNAPTICS=y 748CONFIG_MOUSE_PS2_SYNAPTICS=y
724CONFIG_MOUSE_PS2_LIFEBOOK=y
725CONFIG_MOUSE_PS2_TRACKPOINT=y 749CONFIG_MOUSE_PS2_TRACKPOINT=y
726# CONFIG_MOUSE_PS2_ELANTECH is not set 750# CONFIG_MOUSE_PS2_ELANTECH is not set
727# CONFIG_MOUSE_PS2_TOUCHKIT is not set 751# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -732,7 +756,7 @@ CONFIG_MOUSE_SERIAL=m
732CONFIG_MOUSE_AMIGA=m 756CONFIG_MOUSE_AMIGA=m
733CONFIG_MOUSE_ATARI=m 757CONFIG_MOUSE_ATARI=m
734# CONFIG_MOUSE_VSXXXAA is not set 758# CONFIG_MOUSE_VSXXXAA is not set
735CONFIG_MOUSE_HIL=m 759CONFIG_MOUSE_HIL=y
736CONFIG_INPUT_JOYSTICK=y 760CONFIG_INPUT_JOYSTICK=y
737# CONFIG_JOYSTICK_ANALOG is not set 761# CONFIG_JOYSTICK_ANALOG is not set
738# CONFIG_JOYSTICK_A3D is not set 762# CONFIG_JOYSTICK_A3D is not set
@@ -763,18 +787,18 @@ CONFIG_JOYSTICK_AMIGA=m
763CONFIG_INPUT_MISC=y 787CONFIG_INPUT_MISC=y
764CONFIG_INPUT_M68K_BEEP=m 788CONFIG_INPUT_M68K_BEEP=m
765# CONFIG_INPUT_UINPUT is not set 789# CONFIG_INPUT_UINPUT is not set
766CONFIG_HP_SDC_RTC=m 790CONFIG_HP_SDC_RTC=y
767 791
768# 792#
769# Hardware I/O ports 793# Hardware I/O ports
770# 794#
771CONFIG_SERIO=y 795CONFIG_SERIO=y
772# CONFIG_SERIO_SERPORT is not set 796# CONFIG_SERIO_SERPORT is not set
773CONFIG_SERIO_Q40KBD=m 797CONFIG_SERIO_Q40KBD=y
774# CONFIG_SERIO_PARKBD is not set 798# CONFIG_SERIO_PARKBD is not set
775CONFIG_HP_SDC=y 799CONFIG_HP_SDC=y
776CONFIG_HIL_MLC=y 800CONFIG_HIL_MLC=y
777CONFIG_SERIO_LIBPS2=y 801CONFIG_SERIO_LIBPS2=m
778# CONFIG_SERIO_RAW is not set 802# CONFIG_SERIO_RAW is not set
779# CONFIG_GAMEPORT is not set 803# CONFIG_GAMEPORT is not set
780 804
@@ -788,7 +812,7 @@ CONFIG_HW_CONSOLE=y
788CONFIG_VT_HW_CONSOLE_BINDING=y 812CONFIG_VT_HW_CONSOLE_BINDING=y
789# CONFIG_DEVKMEM is not set 813# CONFIG_DEVKMEM is not set
790# CONFIG_SERIAL_NONSTANDARD is not set 814# CONFIG_SERIAL_NONSTANDARD is not set
791CONFIG_A2232=m 815CONFIG_A2232=y
792 816
793# 817#
794# Serial drivers 818# Serial drivers
@@ -799,6 +823,7 @@ CONFIG_A2232=m
799# Non-8250 serial port support 823# Non-8250 serial port support
800# 824#
801CONFIG_UNIX98_PTYS=y 825CONFIG_UNIX98_PTYS=y
826# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
802CONFIG_LEGACY_PTYS=y 827CONFIG_LEGACY_PTYS=y
803CONFIG_LEGACY_PTY_COUNT=256 828CONFIG_LEGACY_PTY_COUNT=256
804CONFIG_PRINTER=m 829CONFIG_PRINTER=m
@@ -807,7 +832,7 @@ CONFIG_PRINTER=m
807# CONFIG_IPMI_HANDLER is not set 832# CONFIG_IPMI_HANDLER is not set
808# CONFIG_HW_RANDOM is not set 833# CONFIG_HW_RANDOM is not set
809CONFIG_NVRAM=y 834CONFIG_NVRAM=y
810CONFIG_GEN_RTC=m 835CONFIG_GEN_RTC=y
811CONFIG_GEN_RTC_X=y 836CONFIG_GEN_RTC_X=y
812# CONFIG_DTLK is not set 837# CONFIG_DTLK is not set
813# CONFIG_R3964 is not set 838# CONFIG_R3964 is not set
@@ -898,6 +923,7 @@ CONFIG_FB_HP300=y
898# CONFIG_FB_VIRTUAL is not set 923# CONFIG_FB_VIRTUAL is not set
899# CONFIG_FB_METRONOME is not set 924# CONFIG_FB_METRONOME is not set
900# CONFIG_FB_MB862XX is not set 925# CONFIG_FB_MB862XX is not set
926# CONFIG_FB_BROADSHEET is not set
901# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 927# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
902 928
903# 929#
@@ -937,7 +963,6 @@ CONFIG_HIDRAW=y
937# 963#
938# Special HID drivers 964# Special HID drivers
939# 965#
940CONFIG_HID_COMPAT=y
941# CONFIG_USB_SUPPORT is not set 966# CONFIG_USB_SUPPORT is not set
942# CONFIG_MMC is not set 967# CONFIG_MMC is not set
943# CONFIG_MEMSTICK is not set 968# CONFIG_MEMSTICK is not set
@@ -948,13 +973,12 @@ CONFIG_HID_COMPAT=y
948# CONFIG_AUXDISPLAY is not set 973# CONFIG_AUXDISPLAY is not set
949# CONFIG_UIO is not set 974# CONFIG_UIO is not set
950# CONFIG_STAGING is not set 975# CONFIG_STAGING is not set
951CONFIG_STAGING_EXCLUDE_BUILD=y
952 976
953# 977#
954# Character devices 978# Character devices
955# 979#
956CONFIG_ATARI_MFPSER=m 980CONFIG_ATARI_MFPSER=y
957CONFIG_ATARI_MIDI=m 981CONFIG_ATARI_MIDI=y
958CONFIG_ATARI_DSP56K=m 982CONFIG_ATARI_DSP56K=m
959CONFIG_AMIGA_BUILTIN_SERIAL=y 983CONFIG_AMIGA_BUILTIN_SERIAL=y
960CONFIG_MULTIFACE_III_TTY=m 984CONFIG_MULTIFACE_III_TTY=m
@@ -974,6 +998,7 @@ CONFIG_EXT2_FS=y
974# CONFIG_EXT2_FS_XATTR is not set 998# CONFIG_EXT2_FS_XATTR is not set
975# CONFIG_EXT2_FS_XIP is not set 999# CONFIG_EXT2_FS_XIP is not set
976CONFIG_EXT3_FS=y 1000CONFIG_EXT3_FS=y
1001# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
977# CONFIG_EXT3_FS_XATTR is not set 1002# CONFIG_EXT3_FS_XATTR is not set
978# CONFIG_EXT4_FS is not set 1003# CONFIG_EXT4_FS is not set
979CONFIG_JBD=y 1004CONFIG_JBD=y
@@ -1000,13 +1025,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
1000# CONFIG_OCFS2_FS_STATS is not set 1025# CONFIG_OCFS2_FS_STATS is not set
1001# CONFIG_OCFS2_DEBUG_MASKLOG is not set 1026# CONFIG_OCFS2_DEBUG_MASKLOG is not set
1002# CONFIG_OCFS2_DEBUG_FS is not set 1027# CONFIG_OCFS2_DEBUG_FS is not set
1003# CONFIG_OCFS2_COMPAT_JBD is not set 1028# CONFIG_OCFS2_FS_POSIX_ACL is not set
1029# CONFIG_BTRFS_FS is not set
1004CONFIG_DNOTIFY=y 1030CONFIG_DNOTIFY=y
1005CONFIG_INOTIFY=y 1031CONFIG_INOTIFY=y
1006CONFIG_INOTIFY_USER=y 1032CONFIG_INOTIFY_USER=y
1007CONFIG_QUOTA=y 1033CONFIG_QUOTA=y
1008CONFIG_QUOTA_NETLINK_INTERFACE=y 1034CONFIG_QUOTA_NETLINK_INTERFACE=y
1009# CONFIG_PRINT_QUOTA_WARNING is not set 1035# CONFIG_PRINT_QUOTA_WARNING is not set
1036CONFIG_QUOTA_TREE=m
1010# CONFIG_QFMT_V1 is not set 1037# CONFIG_QFMT_V1 is not set
1011# CONFIG_QFMT_V2 is not set 1038# CONFIG_QFMT_V2 is not set
1012CONFIG_QUOTACTL=y 1039CONFIG_QUOTACTL=y
@@ -1015,6 +1042,11 @@ CONFIG_AUTOFS4_FS=m
1015CONFIG_FUSE_FS=m 1042CONFIG_FUSE_FS=m
1016 1043
1017# 1044#
1045# Caches
1046#
1047# CONFIG_FSCACHE is not set
1048
1049#
1018# CD-ROM/DVD Filesystems 1050# CD-ROM/DVD Filesystems
1019# 1051#
1020CONFIG_ISO9660_FS=y 1052CONFIG_ISO9660_FS=y
@@ -1045,10 +1077,7 @@ CONFIG_TMPFS=y
1045# CONFIG_TMPFS_POSIX_ACL is not set 1077# CONFIG_TMPFS_POSIX_ACL is not set
1046# CONFIG_HUGETLB_PAGE is not set 1078# CONFIG_HUGETLB_PAGE is not set
1047CONFIG_CONFIGFS_FS=m 1079CONFIG_CONFIGFS_FS=m
1048 1080CONFIG_MISC_FILESYSTEMS=y
1049#
1050# Miscellaneous filesystems
1051#
1052# CONFIG_ADFS_FS is not set 1081# CONFIG_ADFS_FS is not set
1053CONFIG_AFFS_FS=m 1082CONFIG_AFFS_FS=m
1054CONFIG_HFS_FS=y 1083CONFIG_HFS_FS=y
@@ -1057,6 +1086,9 @@ CONFIG_HFSPLUS_FS=y
1057# CONFIG_BFS_FS is not set 1086# CONFIG_BFS_FS is not set
1058# CONFIG_EFS_FS is not set 1087# CONFIG_EFS_FS is not set
1059CONFIG_CRAMFS=m 1088CONFIG_CRAMFS=m
1089CONFIG_SQUASHFS=m
1090# CONFIG_SQUASHFS_EMBEDDED is not set
1091CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
1060# CONFIG_VXFS_FS is not set 1092# CONFIG_VXFS_FS is not set
1061CONFIG_MINIX_FS=y 1093CONFIG_MINIX_FS=y
1062# CONFIG_OMFS_FS is not set 1094# CONFIG_OMFS_FS is not set
@@ -1067,6 +1099,7 @@ CONFIG_SYSV_FS=m
1067CONFIG_UFS_FS=m 1099CONFIG_UFS_FS=m
1068# CONFIG_UFS_FS_WRITE is not set 1100# CONFIG_UFS_FS_WRITE is not set
1069# CONFIG_UFS_DEBUG is not set 1101# CONFIG_UFS_DEBUG is not set
1102# CONFIG_NILFS2_FS is not set
1070CONFIG_NETWORK_FILESYSTEMS=y 1103CONFIG_NETWORK_FILESYSTEMS=y
1071CONFIG_NFS_FS=y 1104CONFIG_NFS_FS=y
1072CONFIG_NFS_V3=y 1105CONFIG_NFS_V3=y
@@ -1083,7 +1116,6 @@ CONFIG_EXPORTFS=m
1083CONFIG_NFS_COMMON=y 1116CONFIG_NFS_COMMON=y
1084CONFIG_SUNRPC=y 1117CONFIG_SUNRPC=y
1085CONFIG_SUNRPC_GSS=y 1118CONFIG_SUNRPC_GSS=y
1086# CONFIG_SUNRPC_REGISTER_V4 is not set
1087CONFIG_RPCSEC_GSS_KRB5=y 1119CONFIG_RPCSEC_GSS_KRB5=y
1088# CONFIG_RPCSEC_GSS_SPKM3 is not set 1120# CONFIG_RPCSEC_GSS_SPKM3 is not set
1089CONFIG_SMB_FS=m 1121CONFIG_SMB_FS=m
@@ -1163,11 +1195,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
1163CONFIG_DEBUG_MEMORY_INIT=y 1195CONFIG_DEBUG_MEMORY_INIT=y
1164# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1196# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1165CONFIG_SYSCTL_SYSCALL_CHECK=y 1197CONFIG_SYSCTL_SYSCALL_CHECK=y
1166
1167#
1168# Tracers
1169#
1170# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1171# CONFIG_SAMPLES is not set 1198# CONFIG_SAMPLES is not set
1172 1199
1173# 1200#
@@ -1188,13 +1215,21 @@ CONFIG_CRYPTO=y
1188# 1215#
1189# CONFIG_CRYPTO_FIPS is not set 1216# CONFIG_CRYPTO_FIPS is not set
1190CONFIG_CRYPTO_ALGAPI=y 1217CONFIG_CRYPTO_ALGAPI=y
1191CONFIG_CRYPTO_AEAD=y 1218CONFIG_CRYPTO_ALGAPI2=y
1219CONFIG_CRYPTO_AEAD=m
1220CONFIG_CRYPTO_AEAD2=y
1192CONFIG_CRYPTO_BLKCIPHER=y 1221CONFIG_CRYPTO_BLKCIPHER=y
1222CONFIG_CRYPTO_BLKCIPHER2=y
1193CONFIG_CRYPTO_HASH=y 1223CONFIG_CRYPTO_HASH=y
1194CONFIG_CRYPTO_RNG=y 1224CONFIG_CRYPTO_HASH2=y
1225CONFIG_CRYPTO_RNG=m
1226CONFIG_CRYPTO_RNG2=y
1227CONFIG_CRYPTO_PCOMP=y
1195CONFIG_CRYPTO_MANAGER=y 1228CONFIG_CRYPTO_MANAGER=y
1229CONFIG_CRYPTO_MANAGER2=y
1196CONFIG_CRYPTO_GF128MUL=m 1230CONFIG_CRYPTO_GF128MUL=m
1197CONFIG_CRYPTO_NULL=m 1231CONFIG_CRYPTO_NULL=m
1232CONFIG_CRYPTO_WORKQUEUE=y
1198CONFIG_CRYPTO_CRYPTD=m 1233CONFIG_CRYPTO_CRYPTD=m
1199CONFIG_CRYPTO_AUTHENC=m 1234CONFIG_CRYPTO_AUTHENC=m
1200CONFIG_CRYPTO_TEST=m 1235CONFIG_CRYPTO_TEST=m
@@ -1264,6 +1299,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1264# Compression 1299# Compression
1265# 1300#
1266CONFIG_CRYPTO_DEFLATE=m 1301CONFIG_CRYPTO_DEFLATE=m
1302CONFIG_CRYPTO_ZLIB=m
1267CONFIG_CRYPTO_LZO=m 1303CONFIG_CRYPTO_LZO=m
1268 1304
1269# 1305#
@@ -1271,11 +1307,13 @@ CONFIG_CRYPTO_LZO=m
1271# 1307#
1272# CONFIG_CRYPTO_ANSI_CPRNG is not set 1308# CONFIG_CRYPTO_ANSI_CPRNG is not set
1273# CONFIG_CRYPTO_HW is not set 1309# CONFIG_CRYPTO_HW is not set
1310# CONFIG_BINARY_PRINTF is not set
1274 1311
1275# 1312#
1276# Library routines 1313# Library routines
1277# 1314#
1278CONFIG_BITREVERSE=y 1315CONFIG_BITREVERSE=y
1316CONFIG_GENERIC_FIND_LAST_BIT=y
1279CONFIG_CRC_CCITT=m 1317CONFIG_CRC_CCITT=m
1280CONFIG_CRC16=y 1318CONFIG_CRC16=y
1281CONFIG_CRC_T10DIF=y 1319CONFIG_CRC_T10DIF=y
@@ -1287,10 +1325,13 @@ CONFIG_ZLIB_INFLATE=y
1287CONFIG_ZLIB_DEFLATE=m 1325CONFIG_ZLIB_DEFLATE=m
1288CONFIG_LZO_COMPRESS=m 1326CONFIG_LZO_COMPRESS=m
1289CONFIG_LZO_DECOMPRESS=m 1327CONFIG_LZO_DECOMPRESS=m
1328CONFIG_DECOMPRESS_GZIP=y
1329CONFIG_DECOMPRESS_BZIP2=y
1330CONFIG_DECOMPRESS_LZMA=y
1290CONFIG_TEXTSEARCH=y 1331CONFIG_TEXTSEARCH=y
1291CONFIG_TEXTSEARCH_KMP=m 1332CONFIG_TEXTSEARCH_KMP=m
1292CONFIG_TEXTSEARCH_BM=m 1333CONFIG_TEXTSEARCH_BM=m
1293CONFIG_TEXTSEARCH_FSM=m 1334CONFIG_TEXTSEARCH_FSM=m
1294CONFIG_PLIST=y
1295CONFIG_HAS_IOMEM=y 1335CONFIG_HAS_IOMEM=y
1296CONFIG_HAS_DMA=y 1336CONFIG_HAS_DMA=y
1337CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme147_defconfig
index 52d42715bd0b..7dceb5d71223 100644
--- a/arch/m68k/configs/mvme147_defconfig
+++ b/arch/m68k/configs/mvme147_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:50 2008 4# Wed Apr 22 20:48:08 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -143,12 +154,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
143CONFIG_NEED_MULTIPLE_NODES=y 154CONFIG_NEED_MULTIPLE_NODES=y
144CONFIG_PAGEFLAGS_EXTENDED=y 155CONFIG_PAGEFLAGS_EXTENDED=y
145CONFIG_SPLIT_PTLOCK_CPUS=4 156CONFIG_SPLIT_PTLOCK_CPUS=4
146# CONFIG_RESOURCES_64BIT is not set
147# CONFIG_PHYS_ADDR_T_64BIT is not set 157# CONFIG_PHYS_ADDR_T_64BIT is not set
148CONFIG_ZONE_DMA_FLAG=1 158CONFIG_ZONE_DMA_FLAG=1
149CONFIG_BOUNCE=y 159CONFIG_BOUNCE=y
150CONFIG_VIRT_TO_BUS=y 160CONFIG_VIRT_TO_BUS=y
151CONFIG_UNEVICTABLE_LRU=y 161CONFIG_UNEVICTABLE_LRU=y
162CONFIG_HAVE_MLOCK=y
163CONFIG_HAVE_MLOCKED_PAGE_BIT=y
152 164
153# 165#
154# General setup 166# General setup
@@ -258,6 +270,7 @@ CONFIG_NETFILTER_XTABLES=m
258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 270CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 271CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
260CONFIG_NETFILTER_XT_TARGET_DSCP=m 272CONFIG_NETFILTER_XT_TARGET_DSCP=m
273CONFIG_NETFILTER_XT_TARGET_HL=m
261CONFIG_NETFILTER_XT_TARGET_MARK=m 274CONFIG_NETFILTER_XT_TARGET_MARK=m
262CONFIG_NETFILTER_XT_TARGET_NFLOG=m 275CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 276CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -266,6 +279,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
266CONFIG_NETFILTER_XT_TARGET_TRACE=m 279CONFIG_NETFILTER_XT_TARGET_TRACE=m
267CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 280CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
268CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 281CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
282CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
269CONFIG_NETFILTER_XT_MATCH_COMMENT=m 283CONFIG_NETFILTER_XT_MATCH_COMMENT=m
270CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 284CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
271CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 285CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -276,6 +290,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
276CONFIG_NETFILTER_XT_MATCH_ESP=m 290CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 291CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
278CONFIG_NETFILTER_XT_MATCH_HELPER=m 292CONFIG_NETFILTER_XT_MATCH_HELPER=m
293CONFIG_NETFILTER_XT_MATCH_HL=m
279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 294CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
280CONFIG_NETFILTER_XT_MATCH_LENGTH=m 295CONFIG_NETFILTER_XT_MATCH_LENGTH=m
281CONFIG_NETFILTER_XT_MATCH_LIMIT=m 296CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -354,25 +369,20 @@ CONFIG_IP6_NF_MATCH_HL=m
354CONFIG_IP6_NF_MATCH_IPV6HEADER=m 369CONFIG_IP6_NF_MATCH_IPV6HEADER=m
355CONFIG_IP6_NF_MATCH_MH=m 370CONFIG_IP6_NF_MATCH_MH=m
356CONFIG_IP6_NF_MATCH_RT=m 371CONFIG_IP6_NF_MATCH_RT=m
372CONFIG_IP6_NF_TARGET_HL=m
357CONFIG_IP6_NF_TARGET_LOG=m 373CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m 374CONFIG_IP6_NF_FILTER=m
359CONFIG_IP6_NF_TARGET_REJECT=m 375CONFIG_IP6_NF_TARGET_REJECT=m
360CONFIG_IP6_NF_MANGLE=m 376CONFIG_IP6_NF_MANGLE=m
361CONFIG_IP6_NF_TARGET_HL=m
362CONFIG_IP6_NF_RAW=m 377CONFIG_IP6_NF_RAW=m
363CONFIG_IP_DCCP=m 378CONFIG_IP_DCCP=m
364CONFIG_INET_DCCP_DIAG=m 379CONFIG_INET_DCCP_DIAG=m
365CONFIG_IP_DCCP_ACKVEC=y
366 380
367# 381#
368# DCCP CCIDs Configuration (EXPERIMENTAL) 382# DCCP CCIDs Configuration (EXPERIMENTAL)
369# 383#
370CONFIG_IP_DCCP_CCID2=m
371# CONFIG_IP_DCCP_CCID2_DEBUG is not set 384# CONFIG_IP_DCCP_CCID2_DEBUG is not set
372CONFIG_IP_DCCP_CCID3=m 385# CONFIG_IP_DCCP_CCID3 is not set
373# CONFIG_IP_DCCP_CCID3_DEBUG is not set
374CONFIG_IP_DCCP_CCID3_RTO=100
375CONFIG_IP_DCCP_TFRC_LIB=m
376CONFIG_IP_SCTP=m 386CONFIG_IP_SCTP=m
377# CONFIG_SCTP_DBG_MSG is not set 387# CONFIG_SCTP_DBG_MSG is not set
378# CONFIG_SCTP_DBG_OBJCNT is not set 388# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -394,8 +404,10 @@ CONFIG_ATALK=m
394# CONFIG_LAPB is not set 404# CONFIG_LAPB is not set
395# CONFIG_ECONET is not set 405# CONFIG_ECONET is not set
396# CONFIG_WAN_ROUTER is not set 406# CONFIG_WAN_ROUTER is not set
407# CONFIG_PHONET is not set
397# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
398CONFIG_NET_CLS_ROUTE=y 409CONFIG_NET_CLS_ROUTE=y
410# CONFIG_DCB is not set
399 411
400# 412#
401# Network testing 413# Network testing
@@ -406,8 +418,8 @@ CONFIG_NET_CLS_ROUTE=y
406# CONFIG_IRDA is not set 418# CONFIG_IRDA is not set
407# CONFIG_BT is not set 419# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 420# CONFIG_AF_RXRPC is not set
409# CONFIG_PHONET is not set
410# CONFIG_WIRELESS is not set 421# CONFIG_WIRELESS is not set
422# CONFIG_WIMAX is not set
411# CONFIG_RFKILL is not set 423# CONFIG_RFKILL is not set
412# CONFIG_NET_9P is not set 424# CONFIG_NET_9P is not set
413 425
@@ -443,9 +455,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
443CONFIG_ATA_OVER_ETH=m 455CONFIG_ATA_OVER_ETH=m
444# CONFIG_BLK_DEV_HD is not set 456# CONFIG_BLK_DEV_HD is not set
445CONFIG_MISC_DEVICES=y 457CONFIG_MISC_DEVICES=y
446# CONFIG_EEPROM_93CX6 is not set
447# CONFIG_ENCLOSURE_SERVICES is not set 458# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set 459# CONFIG_C2PORT is not set
460
461#
462# EEPROM support
463#
464# CONFIG_EEPROM_93CX6 is not set
449CONFIG_HAVE_IDE=y 465CONFIG_HAVE_IDE=y
450# CONFIG_IDE is not set 466# CONFIG_IDE is not set
451 467
@@ -493,9 +509,12 @@ CONFIG_SCSI_SRP_ATTRS=m
493CONFIG_SCSI_SRP_TGT_ATTRS=y 509CONFIG_SCSI_SRP_TGT_ATTRS=y
494CONFIG_SCSI_LOWLEVEL=y 510CONFIG_SCSI_LOWLEVEL=y
495CONFIG_ISCSI_TCP=m 511CONFIG_ISCSI_TCP=m
512# CONFIG_LIBFC is not set
513# CONFIG_LIBFCOE is not set
496# CONFIG_SCSI_DEBUG is not set 514# CONFIG_SCSI_DEBUG is not set
497CONFIG_MVME147_SCSI=y 515CONFIG_MVME147_SCSI=y
498# CONFIG_SCSI_DH is not set 516# CONFIG_SCSI_DH is not set
517# CONFIG_SCSI_OSD_INITIATOR is not set
499CONFIG_MD=y 518CONFIG_MD=y
500CONFIG_BLK_DEV_MD=m 519CONFIG_BLK_DEV_MD=m
501CONFIG_MD_LINEAR=m 520CONFIG_MD_LINEAR=m
@@ -503,7 +522,7 @@ CONFIG_MD_RAID0=m
503CONFIG_MD_RAID1=m 522CONFIG_MD_RAID1=m
504# CONFIG_MD_RAID10 is not set 523# CONFIG_MD_RAID10 is not set
505CONFIG_MD_RAID456=m 524CONFIG_MD_RAID456=m
506CONFIG_MD_RAID5_RESHAPE=y 525CONFIG_MD_RAID6_PQ=m
507# CONFIG_MD_MULTIPATH is not set 526# CONFIG_MD_MULTIPATH is not set
508# CONFIG_MD_FAULTY is not set 527# CONFIG_MD_FAULTY is not set
509CONFIG_BLK_DEV_DM=m 528CONFIG_BLK_DEV_DM=m
@@ -516,6 +535,7 @@ CONFIG_DM_MULTIPATH=m
516# CONFIG_DM_DELAY is not set 535# CONFIG_DM_DELAY is not set
517CONFIG_DM_UEVENT=y 536CONFIG_DM_UEVENT=y
518CONFIG_NETDEVICES=y 537CONFIG_NETDEVICES=y
538CONFIG_COMPAT_NET_DEV_OPS=y
519CONFIG_DUMMY=m 539CONFIG_DUMMY=m
520# CONFIG_BONDING is not set 540# CONFIG_BONDING is not set
521CONFIG_MACVLAN=m 541CONFIG_MACVLAN=m
@@ -526,6 +546,8 @@ CONFIG_VETH=m
526CONFIG_NET_ETHERNET=y 546CONFIG_NET_ETHERNET=y
527# CONFIG_MII is not set 547# CONFIG_MII is not set
528CONFIG_MVME147_NET=y 548CONFIG_MVME147_NET=y
549# CONFIG_ETHOC is not set
550# CONFIG_DNET is not set
529# CONFIG_IBM_NEW_EMAC_ZMII is not set 551# CONFIG_IBM_NEW_EMAC_ZMII is not set
530# CONFIG_IBM_NEW_EMAC_RGMII is not set 552# CONFIG_IBM_NEW_EMAC_RGMII is not set
531# CONFIG_IBM_NEW_EMAC_TAH is not set 553# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -542,7 +564,10 @@ CONFIG_MVME147_NET=y
542# 564#
543# CONFIG_WLAN_PRE80211 is not set 565# CONFIG_WLAN_PRE80211 is not set
544# CONFIG_WLAN_80211 is not set 566# CONFIG_WLAN_80211 is not set
545# CONFIG_IWLWIFI_LEDS is not set 567
568#
569# Enable WiMAX (Networking options) to see the WiMAX drivers
570#
546# CONFIG_WAN is not set 571# CONFIG_WAN is not set
547CONFIG_PPP=m 572CONFIG_PPP=m
548# CONFIG_PPP_MULTILINK is not set 573# CONFIG_PPP_MULTILINK is not set
@@ -600,7 +625,6 @@ CONFIG_MOUSE_PS2=m
600CONFIG_MOUSE_PS2_ALPS=y 625CONFIG_MOUSE_PS2_ALPS=y
601CONFIG_MOUSE_PS2_LOGIPS2PP=y 626CONFIG_MOUSE_PS2_LOGIPS2PP=y
602CONFIG_MOUSE_PS2_SYNAPTICS=y 627CONFIG_MOUSE_PS2_SYNAPTICS=y
603CONFIG_MOUSE_PS2_LIFEBOOK=y
604CONFIG_MOUSE_PS2_TRACKPOINT=y 628CONFIG_MOUSE_PS2_TRACKPOINT=y
605# CONFIG_MOUSE_PS2_ELANTECH is not set 629# CONFIG_MOUSE_PS2_ELANTECH is not set
606# CONFIG_MOUSE_PS2_TOUCHKIT is not set 630# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -640,6 +664,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
640# Non-8250 serial port support 664# Non-8250 serial port support
641# 665#
642CONFIG_UNIX98_PTYS=y 666CONFIG_UNIX98_PTYS=y
667# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
643CONFIG_LEGACY_PTYS=y 668CONFIG_LEGACY_PTYS=y
644CONFIG_LEGACY_PTY_COUNT=256 669CONFIG_LEGACY_PTY_COUNT=256
645# CONFIG_IPMI_HANDLER is not set 670# CONFIG_IPMI_HANDLER is not set
@@ -716,7 +741,6 @@ CONFIG_HIDRAW=y
716# 741#
717# Special HID drivers 742# Special HID drivers
718# 743#
719CONFIG_HID_COMPAT=y
720# CONFIG_USB_SUPPORT is not set 744# CONFIG_USB_SUPPORT is not set
721# CONFIG_MMC is not set 745# CONFIG_MMC is not set
722# CONFIG_MEMSTICK is not set 746# CONFIG_MEMSTICK is not set
@@ -724,9 +748,9 @@ CONFIG_HID_COMPAT=y
724# CONFIG_ACCESSIBILITY is not set 748# CONFIG_ACCESSIBILITY is not set
725# CONFIG_RTC_CLASS is not set 749# CONFIG_RTC_CLASS is not set
726# CONFIG_DMADEVICES is not set 750# CONFIG_DMADEVICES is not set
751# CONFIG_AUXDISPLAY is not set
727# CONFIG_UIO is not set 752# CONFIG_UIO is not set
728# CONFIG_STAGING is not set 753# CONFIG_STAGING is not set
729CONFIG_STAGING_EXCLUDE_BUILD=y
730 754
731# 755#
732# Character devices 756# Character devices
@@ -741,6 +765,7 @@ CONFIG_EXT2_FS=y
741# CONFIG_EXT2_FS_XATTR is not set 765# CONFIG_EXT2_FS_XATTR is not set
742# CONFIG_EXT2_FS_XIP is not set 766# CONFIG_EXT2_FS_XIP is not set
743CONFIG_EXT3_FS=y 767CONFIG_EXT3_FS=y
768# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
744# CONFIG_EXT3_FS_XATTR is not set 769# CONFIG_EXT3_FS_XATTR is not set
745# CONFIG_EXT4_FS is not set 770# CONFIG_EXT4_FS is not set
746CONFIG_JBD=y 771CONFIG_JBD=y
@@ -767,13 +792,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
767# CONFIG_OCFS2_FS_STATS is not set 792# CONFIG_OCFS2_FS_STATS is not set
768# CONFIG_OCFS2_DEBUG_MASKLOG is not set 793# CONFIG_OCFS2_DEBUG_MASKLOG is not set
769# CONFIG_OCFS2_DEBUG_FS is not set 794# CONFIG_OCFS2_DEBUG_FS is not set
770# CONFIG_OCFS2_COMPAT_JBD is not set 795# CONFIG_OCFS2_FS_POSIX_ACL is not set
796# CONFIG_BTRFS_FS is not set
771CONFIG_DNOTIFY=y 797CONFIG_DNOTIFY=y
772CONFIG_INOTIFY=y 798CONFIG_INOTIFY=y
773CONFIG_INOTIFY_USER=y 799CONFIG_INOTIFY_USER=y
774CONFIG_QUOTA=y 800CONFIG_QUOTA=y
775CONFIG_QUOTA_NETLINK_INTERFACE=y 801CONFIG_QUOTA_NETLINK_INTERFACE=y
776# CONFIG_PRINT_QUOTA_WARNING is not set 802# CONFIG_PRINT_QUOTA_WARNING is not set
803CONFIG_QUOTA_TREE=m
777# CONFIG_QFMT_V1 is not set 804# CONFIG_QFMT_V1 is not set
778# CONFIG_QFMT_V2 is not set 805# CONFIG_QFMT_V2 is not set
779CONFIG_QUOTACTL=y 806CONFIG_QUOTACTL=y
@@ -782,6 +809,11 @@ CONFIG_AUTOFS4_FS=m
782CONFIG_FUSE_FS=m 809CONFIG_FUSE_FS=m
783 810
784# 811#
812# Caches
813#
814# CONFIG_FSCACHE is not set
815
816#
785# CD-ROM/DVD Filesystems 817# CD-ROM/DVD Filesystems
786# 818#
787CONFIG_ISO9660_FS=y 819CONFIG_ISO9660_FS=y
@@ -812,10 +844,7 @@ CONFIG_TMPFS=y
812# CONFIG_TMPFS_POSIX_ACL is not set 844# CONFIG_TMPFS_POSIX_ACL is not set
813# CONFIG_HUGETLB_PAGE is not set 845# CONFIG_HUGETLB_PAGE is not set
814CONFIG_CONFIGFS_FS=m 846CONFIG_CONFIGFS_FS=m
815 847CONFIG_MISC_FILESYSTEMS=y
816#
817# Miscellaneous filesystems
818#
819# CONFIG_ADFS_FS is not set 848# CONFIG_ADFS_FS is not set
820CONFIG_AFFS_FS=m 849CONFIG_AFFS_FS=m
821CONFIG_HFS_FS=m 850CONFIG_HFS_FS=m
@@ -824,6 +853,9 @@ CONFIG_HFSPLUS_FS=m
824# CONFIG_BFS_FS is not set 853# CONFIG_BFS_FS is not set
825# CONFIG_EFS_FS is not set 854# CONFIG_EFS_FS is not set
826CONFIG_CRAMFS=m 855CONFIG_CRAMFS=m
856CONFIG_SQUASHFS=m
857# CONFIG_SQUASHFS_EMBEDDED is not set
858CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
827# CONFIG_VXFS_FS is not set 859# CONFIG_VXFS_FS is not set
828CONFIG_MINIX_FS=y 860CONFIG_MINIX_FS=y
829# CONFIG_OMFS_FS is not set 861# CONFIG_OMFS_FS is not set
@@ -834,6 +866,7 @@ CONFIG_SYSV_FS=m
834CONFIG_UFS_FS=m 866CONFIG_UFS_FS=m
835# CONFIG_UFS_FS_WRITE is not set 867# CONFIG_UFS_FS_WRITE is not set
836# CONFIG_UFS_DEBUG is not set 868# CONFIG_UFS_DEBUG is not set
869# CONFIG_NILFS2_FS is not set
837CONFIG_NETWORK_FILESYSTEMS=y 870CONFIG_NETWORK_FILESYSTEMS=y
838CONFIG_NFS_FS=y 871CONFIG_NFS_FS=y
839CONFIG_NFS_V3=y 872CONFIG_NFS_V3=y
@@ -850,7 +883,6 @@ CONFIG_EXPORTFS=m
850CONFIG_NFS_COMMON=y 883CONFIG_NFS_COMMON=y
851CONFIG_SUNRPC=y 884CONFIG_SUNRPC=y
852CONFIG_SUNRPC_GSS=y 885CONFIG_SUNRPC_GSS=y
853# CONFIG_SUNRPC_REGISTER_V4 is not set
854CONFIG_RPCSEC_GSS_KRB5=y 886CONFIG_RPCSEC_GSS_KRB5=y
855# CONFIG_RPCSEC_GSS_SPKM3 is not set 887# CONFIG_RPCSEC_GSS_SPKM3 is not set
856CONFIG_SMB_FS=m 888CONFIG_SMB_FS=m
@@ -926,11 +958,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
926CONFIG_DEBUG_MEMORY_INIT=y 958CONFIG_DEBUG_MEMORY_INIT=y
927# CONFIG_RCU_CPU_STALL_DETECTOR is not set 959# CONFIG_RCU_CPU_STALL_DETECTOR is not set
928CONFIG_SYSCTL_SYSCALL_CHECK=y 960CONFIG_SYSCTL_SYSCALL_CHECK=y
929
930#
931# Tracers
932#
933# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
934# CONFIG_SAMPLES is not set 961# CONFIG_SAMPLES is not set
935 962
936# 963#
@@ -951,13 +978,21 @@ CONFIG_CRYPTO=y
951# 978#
952# CONFIG_CRYPTO_FIPS is not set 979# CONFIG_CRYPTO_FIPS is not set
953CONFIG_CRYPTO_ALGAPI=y 980CONFIG_CRYPTO_ALGAPI=y
954CONFIG_CRYPTO_AEAD=y 981CONFIG_CRYPTO_ALGAPI2=y
982CONFIG_CRYPTO_AEAD=m
983CONFIG_CRYPTO_AEAD2=y
955CONFIG_CRYPTO_BLKCIPHER=y 984CONFIG_CRYPTO_BLKCIPHER=y
985CONFIG_CRYPTO_BLKCIPHER2=y
956CONFIG_CRYPTO_HASH=y 986CONFIG_CRYPTO_HASH=y
957CONFIG_CRYPTO_RNG=y 987CONFIG_CRYPTO_HASH2=y
988CONFIG_CRYPTO_RNG=m
989CONFIG_CRYPTO_RNG2=y
990CONFIG_CRYPTO_PCOMP=y
958CONFIG_CRYPTO_MANAGER=y 991CONFIG_CRYPTO_MANAGER=y
992CONFIG_CRYPTO_MANAGER2=y
959CONFIG_CRYPTO_GF128MUL=m 993CONFIG_CRYPTO_GF128MUL=m
960CONFIG_CRYPTO_NULL=m 994CONFIG_CRYPTO_NULL=m
995CONFIG_CRYPTO_WORKQUEUE=y
961CONFIG_CRYPTO_CRYPTD=m 996CONFIG_CRYPTO_CRYPTD=m
962CONFIG_CRYPTO_AUTHENC=m 997CONFIG_CRYPTO_AUTHENC=m
963CONFIG_CRYPTO_TEST=m 998CONFIG_CRYPTO_TEST=m
@@ -1027,6 +1062,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1027# Compression 1062# Compression
1028# 1063#
1029CONFIG_CRYPTO_DEFLATE=m 1064CONFIG_CRYPTO_DEFLATE=m
1065CONFIG_CRYPTO_ZLIB=m
1030CONFIG_CRYPTO_LZO=m 1066CONFIG_CRYPTO_LZO=m
1031 1067
1032# 1068#
@@ -1034,11 +1070,13 @@ CONFIG_CRYPTO_LZO=m
1034# 1070#
1035# CONFIG_CRYPTO_ANSI_CPRNG is not set 1071# CONFIG_CRYPTO_ANSI_CPRNG is not set
1036# CONFIG_CRYPTO_HW is not set 1072# CONFIG_CRYPTO_HW is not set
1073# CONFIG_BINARY_PRINTF is not set
1037 1074
1038# 1075#
1039# Library routines 1076# Library routines
1040# 1077#
1041CONFIG_BITREVERSE=y 1078CONFIG_BITREVERSE=y
1079CONFIG_GENERIC_FIND_LAST_BIT=y
1042CONFIG_CRC_CCITT=m 1080CONFIG_CRC_CCITT=m
1043CONFIG_CRC16=m 1081CONFIG_CRC16=m
1044CONFIG_CRC_T10DIF=y 1082CONFIG_CRC_T10DIF=y
@@ -1050,10 +1088,13 @@ CONFIG_ZLIB_INFLATE=y
1050CONFIG_ZLIB_DEFLATE=m 1088CONFIG_ZLIB_DEFLATE=m
1051CONFIG_LZO_COMPRESS=m 1089CONFIG_LZO_COMPRESS=m
1052CONFIG_LZO_DECOMPRESS=m 1090CONFIG_LZO_DECOMPRESS=m
1091CONFIG_DECOMPRESS_GZIP=y
1092CONFIG_DECOMPRESS_BZIP2=y
1093CONFIG_DECOMPRESS_LZMA=y
1053CONFIG_TEXTSEARCH=y 1094CONFIG_TEXTSEARCH=y
1054CONFIG_TEXTSEARCH_KMP=m 1095CONFIG_TEXTSEARCH_KMP=m
1055CONFIG_TEXTSEARCH_BM=m 1096CONFIG_TEXTSEARCH_BM=m
1056CONFIG_TEXTSEARCH_FSM=m 1097CONFIG_TEXTSEARCH_FSM=m
1057CONFIG_PLIST=y
1058CONFIG_HAS_IOMEM=y 1098CONFIG_HAS_IOMEM=y
1059CONFIG_HAS_DMA=y 1099CONFIG_HAS_DMA=y
1100CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16x_defconfig
index 3403ed2eda79..890594fcacb3 100644
--- a/arch/m68k/configs/mvme16x_defconfig
+++ b/arch/m68k/configs/mvme16x_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:51 2008 4# Wed Apr 22 20:48:10 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -143,12 +154,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
143CONFIG_NEED_MULTIPLE_NODES=y 154CONFIG_NEED_MULTIPLE_NODES=y
144CONFIG_PAGEFLAGS_EXTENDED=y 155CONFIG_PAGEFLAGS_EXTENDED=y
145CONFIG_SPLIT_PTLOCK_CPUS=4 156CONFIG_SPLIT_PTLOCK_CPUS=4
146# CONFIG_RESOURCES_64BIT is not set
147# CONFIG_PHYS_ADDR_T_64BIT is not set 157# CONFIG_PHYS_ADDR_T_64BIT is not set
148CONFIG_ZONE_DMA_FLAG=1 158CONFIG_ZONE_DMA_FLAG=1
149CONFIG_BOUNCE=y 159CONFIG_BOUNCE=y
150CONFIG_VIRT_TO_BUS=y 160CONFIG_VIRT_TO_BUS=y
151CONFIG_UNEVICTABLE_LRU=y 161CONFIG_UNEVICTABLE_LRU=y
162CONFIG_HAVE_MLOCK=y
163CONFIG_HAVE_MLOCKED_PAGE_BIT=y
152 164
153# 165#
154# General setup 166# General setup
@@ -258,6 +270,7 @@ CONFIG_NETFILTER_XTABLES=m
258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 270CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 271CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
260CONFIG_NETFILTER_XT_TARGET_DSCP=m 272CONFIG_NETFILTER_XT_TARGET_DSCP=m
273CONFIG_NETFILTER_XT_TARGET_HL=m
261CONFIG_NETFILTER_XT_TARGET_MARK=m 274CONFIG_NETFILTER_XT_TARGET_MARK=m
262CONFIG_NETFILTER_XT_TARGET_NFLOG=m 275CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 276CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -266,6 +279,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
266CONFIG_NETFILTER_XT_TARGET_TRACE=m 279CONFIG_NETFILTER_XT_TARGET_TRACE=m
267CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 280CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
268CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 281CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
282CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
269CONFIG_NETFILTER_XT_MATCH_COMMENT=m 283CONFIG_NETFILTER_XT_MATCH_COMMENT=m
270CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 284CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
271CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 285CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -276,6 +290,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
276CONFIG_NETFILTER_XT_MATCH_ESP=m 290CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 291CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
278CONFIG_NETFILTER_XT_MATCH_HELPER=m 292CONFIG_NETFILTER_XT_MATCH_HELPER=m
293CONFIG_NETFILTER_XT_MATCH_HL=m
279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 294CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
280CONFIG_NETFILTER_XT_MATCH_LENGTH=m 295CONFIG_NETFILTER_XT_MATCH_LENGTH=m
281CONFIG_NETFILTER_XT_MATCH_LIMIT=m 296CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -354,25 +369,20 @@ CONFIG_IP6_NF_MATCH_HL=m
354CONFIG_IP6_NF_MATCH_IPV6HEADER=m 369CONFIG_IP6_NF_MATCH_IPV6HEADER=m
355CONFIG_IP6_NF_MATCH_MH=m 370CONFIG_IP6_NF_MATCH_MH=m
356CONFIG_IP6_NF_MATCH_RT=m 371CONFIG_IP6_NF_MATCH_RT=m
372CONFIG_IP6_NF_TARGET_HL=m
357CONFIG_IP6_NF_TARGET_LOG=m 373CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m 374CONFIG_IP6_NF_FILTER=m
359CONFIG_IP6_NF_TARGET_REJECT=m 375CONFIG_IP6_NF_TARGET_REJECT=m
360CONFIG_IP6_NF_MANGLE=m 376CONFIG_IP6_NF_MANGLE=m
361CONFIG_IP6_NF_TARGET_HL=m
362CONFIG_IP6_NF_RAW=m 377CONFIG_IP6_NF_RAW=m
363CONFIG_IP_DCCP=m 378CONFIG_IP_DCCP=m
364CONFIG_INET_DCCP_DIAG=m 379CONFIG_INET_DCCP_DIAG=m
365CONFIG_IP_DCCP_ACKVEC=y
366 380
367# 381#
368# DCCP CCIDs Configuration (EXPERIMENTAL) 382# DCCP CCIDs Configuration (EXPERIMENTAL)
369# 383#
370CONFIG_IP_DCCP_CCID2=m
371# CONFIG_IP_DCCP_CCID2_DEBUG is not set 384# CONFIG_IP_DCCP_CCID2_DEBUG is not set
372CONFIG_IP_DCCP_CCID3=m 385# CONFIG_IP_DCCP_CCID3 is not set
373# CONFIG_IP_DCCP_CCID3_DEBUG is not set
374CONFIG_IP_DCCP_CCID3_RTO=100
375CONFIG_IP_DCCP_TFRC_LIB=m
376CONFIG_IP_SCTP=m 386CONFIG_IP_SCTP=m
377# CONFIG_SCTP_DBG_MSG is not set 387# CONFIG_SCTP_DBG_MSG is not set
378# CONFIG_SCTP_DBG_OBJCNT is not set 388# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -394,8 +404,10 @@ CONFIG_ATALK=m
394# CONFIG_LAPB is not set 404# CONFIG_LAPB is not set
395# CONFIG_ECONET is not set 405# CONFIG_ECONET is not set
396# CONFIG_WAN_ROUTER is not set 406# CONFIG_WAN_ROUTER is not set
407# CONFIG_PHONET is not set
397# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
398CONFIG_NET_CLS_ROUTE=y 409CONFIG_NET_CLS_ROUTE=y
410# CONFIG_DCB is not set
399 411
400# 412#
401# Network testing 413# Network testing
@@ -406,8 +418,8 @@ CONFIG_NET_CLS_ROUTE=y
406# CONFIG_IRDA is not set 418# CONFIG_IRDA is not set
407# CONFIG_BT is not set 419# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 420# CONFIG_AF_RXRPC is not set
409# CONFIG_PHONET is not set
410# CONFIG_WIRELESS is not set 421# CONFIG_WIRELESS is not set
422# CONFIG_WIMAX is not set
411# CONFIG_RFKILL is not set 423# CONFIG_RFKILL is not set
412# CONFIG_NET_9P is not set 424# CONFIG_NET_9P is not set
413 425
@@ -443,9 +455,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
443CONFIG_ATA_OVER_ETH=m 455CONFIG_ATA_OVER_ETH=m
444# CONFIG_BLK_DEV_HD is not set 456# CONFIG_BLK_DEV_HD is not set
445CONFIG_MISC_DEVICES=y 457CONFIG_MISC_DEVICES=y
446# CONFIG_EEPROM_93CX6 is not set
447# CONFIG_ENCLOSURE_SERVICES is not set 458# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set 459# CONFIG_C2PORT is not set
460
461#
462# EEPROM support
463#
464# CONFIG_EEPROM_93CX6 is not set
449CONFIG_HAVE_IDE=y 465CONFIG_HAVE_IDE=y
450# CONFIG_IDE is not set 466# CONFIG_IDE is not set
451 467
@@ -493,10 +509,13 @@ CONFIG_SCSI_SRP_ATTRS=m
493CONFIG_SCSI_SRP_TGT_ATTRS=y 509CONFIG_SCSI_SRP_TGT_ATTRS=y
494CONFIG_SCSI_LOWLEVEL=y 510CONFIG_SCSI_LOWLEVEL=y
495CONFIG_ISCSI_TCP=m 511CONFIG_ISCSI_TCP=m
512# CONFIG_LIBFC is not set
513# CONFIG_LIBFCOE is not set
496CONFIG_53C700_BE_BUS=y 514CONFIG_53C700_BE_BUS=y
497# CONFIG_SCSI_DEBUG is not set 515# CONFIG_SCSI_DEBUG is not set
498CONFIG_MVME16x_SCSI=y 516CONFIG_MVME16x_SCSI=y
499# CONFIG_SCSI_DH is not set 517# CONFIG_SCSI_DH is not set
518# CONFIG_SCSI_OSD_INITIATOR is not set
500CONFIG_MD=y 519CONFIG_MD=y
501CONFIG_BLK_DEV_MD=m 520CONFIG_BLK_DEV_MD=m
502CONFIG_MD_LINEAR=m 521CONFIG_MD_LINEAR=m
@@ -504,7 +523,7 @@ CONFIG_MD_RAID0=m
504CONFIG_MD_RAID1=m 523CONFIG_MD_RAID1=m
505# CONFIG_MD_RAID10 is not set 524# CONFIG_MD_RAID10 is not set
506CONFIG_MD_RAID456=m 525CONFIG_MD_RAID456=m
507CONFIG_MD_RAID5_RESHAPE=y 526CONFIG_MD_RAID6_PQ=m
508# CONFIG_MD_MULTIPATH is not set 527# CONFIG_MD_MULTIPATH is not set
509# CONFIG_MD_FAULTY is not set 528# CONFIG_MD_FAULTY is not set
510CONFIG_BLK_DEV_DM=m 529CONFIG_BLK_DEV_DM=m
@@ -517,6 +536,7 @@ CONFIG_DM_MULTIPATH=m
517# CONFIG_DM_DELAY is not set 536# CONFIG_DM_DELAY is not set
518CONFIG_DM_UEVENT=y 537CONFIG_DM_UEVENT=y
519CONFIG_NETDEVICES=y 538CONFIG_NETDEVICES=y
539CONFIG_COMPAT_NET_DEV_OPS=y
520CONFIG_DUMMY=m 540CONFIG_DUMMY=m
521# CONFIG_BONDING is not set 541# CONFIG_BONDING is not set
522CONFIG_MACVLAN=m 542CONFIG_MACVLAN=m
@@ -527,6 +547,8 @@ CONFIG_VETH=m
527CONFIG_NET_ETHERNET=y 547CONFIG_NET_ETHERNET=y
528# CONFIG_MII is not set 548# CONFIG_MII is not set
529CONFIG_MVME16x_NET=y 549CONFIG_MVME16x_NET=y
550# CONFIG_ETHOC is not set
551# CONFIG_DNET is not set
530# CONFIG_IBM_NEW_EMAC_ZMII is not set 552# CONFIG_IBM_NEW_EMAC_ZMII is not set
531# CONFIG_IBM_NEW_EMAC_RGMII is not set 553# CONFIG_IBM_NEW_EMAC_RGMII is not set
532# CONFIG_IBM_NEW_EMAC_TAH is not set 554# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -543,7 +565,10 @@ CONFIG_MVME16x_NET=y
543# 565#
544# CONFIG_WLAN_PRE80211 is not set 566# CONFIG_WLAN_PRE80211 is not set
545# CONFIG_WLAN_80211 is not set 567# CONFIG_WLAN_80211 is not set
546# CONFIG_IWLWIFI_LEDS is not set 568
569#
570# Enable WiMAX (Networking options) to see the WiMAX drivers
571#
547# CONFIG_WAN is not set 572# CONFIG_WAN is not set
548CONFIG_PPP=m 573CONFIG_PPP=m
549# CONFIG_PPP_MULTILINK is not set 574# CONFIG_PPP_MULTILINK is not set
@@ -601,7 +626,6 @@ CONFIG_MOUSE_PS2=m
601CONFIG_MOUSE_PS2_ALPS=y 626CONFIG_MOUSE_PS2_ALPS=y
602CONFIG_MOUSE_PS2_LOGIPS2PP=y 627CONFIG_MOUSE_PS2_LOGIPS2PP=y
603CONFIG_MOUSE_PS2_SYNAPTICS=y 628CONFIG_MOUSE_PS2_SYNAPTICS=y
604CONFIG_MOUSE_PS2_LIFEBOOK=y
605CONFIG_MOUSE_PS2_TRACKPOINT=y 629CONFIG_MOUSE_PS2_TRACKPOINT=y
606# CONFIG_MOUSE_PS2_ELANTECH is not set 630# CONFIG_MOUSE_PS2_ELANTECH is not set
607# CONFIG_MOUSE_PS2_TOUCHKIT is not set 631# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -641,6 +665,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
641# Non-8250 serial port support 665# Non-8250 serial port support
642# 666#
643CONFIG_UNIX98_PTYS=y 667CONFIG_UNIX98_PTYS=y
668# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
644CONFIG_LEGACY_PTYS=y 669CONFIG_LEGACY_PTYS=y
645CONFIG_LEGACY_PTY_COUNT=256 670CONFIG_LEGACY_PTY_COUNT=256
646# CONFIG_IPMI_HANDLER is not set 671# CONFIG_IPMI_HANDLER is not set
@@ -717,7 +742,6 @@ CONFIG_HIDRAW=y
717# 742#
718# Special HID drivers 743# Special HID drivers
719# 744#
720CONFIG_HID_COMPAT=y
721# CONFIG_USB_SUPPORT is not set 745# CONFIG_USB_SUPPORT is not set
722# CONFIG_MMC is not set 746# CONFIG_MMC is not set
723# CONFIG_MEMSTICK is not set 747# CONFIG_MEMSTICK is not set
@@ -725,9 +749,9 @@ CONFIG_HID_COMPAT=y
725# CONFIG_ACCESSIBILITY is not set 749# CONFIG_ACCESSIBILITY is not set
726# CONFIG_RTC_CLASS is not set 750# CONFIG_RTC_CLASS is not set
727# CONFIG_DMADEVICES is not set 751# CONFIG_DMADEVICES is not set
752# CONFIG_AUXDISPLAY is not set
728# CONFIG_UIO is not set 753# CONFIG_UIO is not set
729# CONFIG_STAGING is not set 754# CONFIG_STAGING is not set
730CONFIG_STAGING_EXCLUDE_BUILD=y
731 755
732# 756#
733# Character devices 757# Character devices
@@ -743,6 +767,7 @@ CONFIG_EXT2_FS=y
743# CONFIG_EXT2_FS_XATTR is not set 767# CONFIG_EXT2_FS_XATTR is not set
744# CONFIG_EXT2_FS_XIP is not set 768# CONFIG_EXT2_FS_XIP is not set
745CONFIG_EXT3_FS=y 769CONFIG_EXT3_FS=y
770# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
746# CONFIG_EXT3_FS_XATTR is not set 771# CONFIG_EXT3_FS_XATTR is not set
747# CONFIG_EXT4_FS is not set 772# CONFIG_EXT4_FS is not set
748CONFIG_JBD=y 773CONFIG_JBD=y
@@ -769,13 +794,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
769# CONFIG_OCFS2_FS_STATS is not set 794# CONFIG_OCFS2_FS_STATS is not set
770# CONFIG_OCFS2_DEBUG_MASKLOG is not set 795# CONFIG_OCFS2_DEBUG_MASKLOG is not set
771# CONFIG_OCFS2_DEBUG_FS is not set 796# CONFIG_OCFS2_DEBUG_FS is not set
772# CONFIG_OCFS2_COMPAT_JBD is not set 797# CONFIG_OCFS2_FS_POSIX_ACL is not set
798# CONFIG_BTRFS_FS is not set
773CONFIG_DNOTIFY=y 799CONFIG_DNOTIFY=y
774CONFIG_INOTIFY=y 800CONFIG_INOTIFY=y
775CONFIG_INOTIFY_USER=y 801CONFIG_INOTIFY_USER=y
776CONFIG_QUOTA=y 802CONFIG_QUOTA=y
777CONFIG_QUOTA_NETLINK_INTERFACE=y 803CONFIG_QUOTA_NETLINK_INTERFACE=y
778# CONFIG_PRINT_QUOTA_WARNING is not set 804# CONFIG_PRINT_QUOTA_WARNING is not set
805CONFIG_QUOTA_TREE=m
779# CONFIG_QFMT_V1 is not set 806# CONFIG_QFMT_V1 is not set
780# CONFIG_QFMT_V2 is not set 807# CONFIG_QFMT_V2 is not set
781CONFIG_QUOTACTL=y 808CONFIG_QUOTACTL=y
@@ -784,6 +811,11 @@ CONFIG_AUTOFS4_FS=m
784CONFIG_FUSE_FS=m 811CONFIG_FUSE_FS=m
785 812
786# 813#
814# Caches
815#
816# CONFIG_FSCACHE is not set
817
818#
787# CD-ROM/DVD Filesystems 819# CD-ROM/DVD Filesystems
788# 820#
789CONFIG_ISO9660_FS=y 821CONFIG_ISO9660_FS=y
@@ -814,10 +846,7 @@ CONFIG_TMPFS=y
814# CONFIG_TMPFS_POSIX_ACL is not set 846# CONFIG_TMPFS_POSIX_ACL is not set
815# CONFIG_HUGETLB_PAGE is not set 847# CONFIG_HUGETLB_PAGE is not set
816CONFIG_CONFIGFS_FS=m 848CONFIG_CONFIGFS_FS=m
817 849CONFIG_MISC_FILESYSTEMS=y
818#
819# Miscellaneous filesystems
820#
821# CONFIG_ADFS_FS is not set 850# CONFIG_ADFS_FS is not set
822CONFIG_AFFS_FS=m 851CONFIG_AFFS_FS=m
823CONFIG_HFS_FS=m 852CONFIG_HFS_FS=m
@@ -826,6 +855,9 @@ CONFIG_HFSPLUS_FS=m
826# CONFIG_BFS_FS is not set 855# CONFIG_BFS_FS is not set
827# CONFIG_EFS_FS is not set 856# CONFIG_EFS_FS is not set
828CONFIG_CRAMFS=m 857CONFIG_CRAMFS=m
858CONFIG_SQUASHFS=m
859# CONFIG_SQUASHFS_EMBEDDED is not set
860CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
829# CONFIG_VXFS_FS is not set 861# CONFIG_VXFS_FS is not set
830CONFIG_MINIX_FS=y 862CONFIG_MINIX_FS=y
831# CONFIG_OMFS_FS is not set 863# CONFIG_OMFS_FS is not set
@@ -836,6 +868,7 @@ CONFIG_SYSV_FS=m
836CONFIG_UFS_FS=m 868CONFIG_UFS_FS=m
837# CONFIG_UFS_FS_WRITE is not set 869# CONFIG_UFS_FS_WRITE is not set
838# CONFIG_UFS_DEBUG is not set 870# CONFIG_UFS_DEBUG is not set
871# CONFIG_NILFS2_FS is not set
839CONFIG_NETWORK_FILESYSTEMS=y 872CONFIG_NETWORK_FILESYSTEMS=y
840CONFIG_NFS_FS=y 873CONFIG_NFS_FS=y
841CONFIG_NFS_V3=y 874CONFIG_NFS_V3=y
@@ -852,7 +885,6 @@ CONFIG_EXPORTFS=m
852CONFIG_NFS_COMMON=y 885CONFIG_NFS_COMMON=y
853CONFIG_SUNRPC=y 886CONFIG_SUNRPC=y
854CONFIG_SUNRPC_GSS=y 887CONFIG_SUNRPC_GSS=y
855# CONFIG_SUNRPC_REGISTER_V4 is not set
856CONFIG_RPCSEC_GSS_KRB5=y 888CONFIG_RPCSEC_GSS_KRB5=y
857# CONFIG_RPCSEC_GSS_SPKM3 is not set 889# CONFIG_RPCSEC_GSS_SPKM3 is not set
858CONFIG_SMB_FS=m 890CONFIG_SMB_FS=m
@@ -928,11 +960,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
928CONFIG_DEBUG_MEMORY_INIT=y 960CONFIG_DEBUG_MEMORY_INIT=y
929# CONFIG_RCU_CPU_STALL_DETECTOR is not set 961# CONFIG_RCU_CPU_STALL_DETECTOR is not set
930CONFIG_SYSCTL_SYSCALL_CHECK=y 962CONFIG_SYSCTL_SYSCALL_CHECK=y
931
932#
933# Tracers
934#
935# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
936# CONFIG_SAMPLES is not set 963# CONFIG_SAMPLES is not set
937 964
938# 965#
@@ -953,13 +980,21 @@ CONFIG_CRYPTO=y
953# 980#
954# CONFIG_CRYPTO_FIPS is not set 981# CONFIG_CRYPTO_FIPS is not set
955CONFIG_CRYPTO_ALGAPI=y 982CONFIG_CRYPTO_ALGAPI=y
956CONFIG_CRYPTO_AEAD=y 983CONFIG_CRYPTO_ALGAPI2=y
984CONFIG_CRYPTO_AEAD=m
985CONFIG_CRYPTO_AEAD2=y
957CONFIG_CRYPTO_BLKCIPHER=y 986CONFIG_CRYPTO_BLKCIPHER=y
987CONFIG_CRYPTO_BLKCIPHER2=y
958CONFIG_CRYPTO_HASH=y 988CONFIG_CRYPTO_HASH=y
959CONFIG_CRYPTO_RNG=y 989CONFIG_CRYPTO_HASH2=y
990CONFIG_CRYPTO_RNG=m
991CONFIG_CRYPTO_RNG2=y
992CONFIG_CRYPTO_PCOMP=y
960CONFIG_CRYPTO_MANAGER=y 993CONFIG_CRYPTO_MANAGER=y
994CONFIG_CRYPTO_MANAGER2=y
961CONFIG_CRYPTO_GF128MUL=m 995CONFIG_CRYPTO_GF128MUL=m
962CONFIG_CRYPTO_NULL=m 996CONFIG_CRYPTO_NULL=m
997CONFIG_CRYPTO_WORKQUEUE=y
963CONFIG_CRYPTO_CRYPTD=m 998CONFIG_CRYPTO_CRYPTD=m
964CONFIG_CRYPTO_AUTHENC=m 999CONFIG_CRYPTO_AUTHENC=m
965CONFIG_CRYPTO_TEST=m 1000CONFIG_CRYPTO_TEST=m
@@ -1029,6 +1064,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1029# Compression 1064# Compression
1030# 1065#
1031CONFIG_CRYPTO_DEFLATE=m 1066CONFIG_CRYPTO_DEFLATE=m
1067CONFIG_CRYPTO_ZLIB=m
1032CONFIG_CRYPTO_LZO=m 1068CONFIG_CRYPTO_LZO=m
1033 1069
1034# 1070#
@@ -1036,11 +1072,13 @@ CONFIG_CRYPTO_LZO=m
1036# 1072#
1037# CONFIG_CRYPTO_ANSI_CPRNG is not set 1073# CONFIG_CRYPTO_ANSI_CPRNG is not set
1038# CONFIG_CRYPTO_HW is not set 1074# CONFIG_CRYPTO_HW is not set
1075# CONFIG_BINARY_PRINTF is not set
1039 1076
1040# 1077#
1041# Library routines 1078# Library routines
1042# 1079#
1043CONFIG_BITREVERSE=y 1080CONFIG_BITREVERSE=y
1081CONFIG_GENERIC_FIND_LAST_BIT=y
1044CONFIG_CRC_CCITT=m 1082CONFIG_CRC_CCITT=m
1045CONFIG_CRC16=m 1083CONFIG_CRC16=m
1046CONFIG_CRC_T10DIF=y 1084CONFIG_CRC_T10DIF=y
@@ -1052,10 +1090,13 @@ CONFIG_ZLIB_INFLATE=y
1052CONFIG_ZLIB_DEFLATE=m 1090CONFIG_ZLIB_DEFLATE=m
1053CONFIG_LZO_COMPRESS=m 1091CONFIG_LZO_COMPRESS=m
1054CONFIG_LZO_DECOMPRESS=m 1092CONFIG_LZO_DECOMPRESS=m
1093CONFIG_DECOMPRESS_GZIP=y
1094CONFIG_DECOMPRESS_BZIP2=y
1095CONFIG_DECOMPRESS_LZMA=y
1055CONFIG_TEXTSEARCH=y 1096CONFIG_TEXTSEARCH=y
1056CONFIG_TEXTSEARCH_KMP=m 1097CONFIG_TEXTSEARCH_KMP=m
1057CONFIG_TEXTSEARCH_BM=m 1098CONFIG_TEXTSEARCH_BM=m
1058CONFIG_TEXTSEARCH_FSM=m 1099CONFIG_TEXTSEARCH_FSM=m
1059CONFIG_PLIST=y
1060CONFIG_HAS_IOMEM=y 1100CONFIG_HAS_IOMEM=y
1061CONFIG_HAS_DMA=y 1101CONFIG_HAS_DMA=y
1102CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig
index 3459c594194b..7cf58c27ff84 100644
--- a/arch/m68k/configs/q40_defconfig
+++ b/arch/m68k/configs/q40_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:52 2008 4# Wed Apr 22 20:48:13 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -140,12 +151,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
140CONFIG_NEED_MULTIPLE_NODES=y 151CONFIG_NEED_MULTIPLE_NODES=y
141CONFIG_PAGEFLAGS_EXTENDED=y 152CONFIG_PAGEFLAGS_EXTENDED=y
142CONFIG_SPLIT_PTLOCK_CPUS=4 153CONFIG_SPLIT_PTLOCK_CPUS=4
143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set 154# CONFIG_PHYS_ADDR_T_64BIT is not set
145CONFIG_ZONE_DMA_FLAG=1 155CONFIG_ZONE_DMA_FLAG=1
146CONFIG_BOUNCE=y 156CONFIG_BOUNCE=y
147CONFIG_VIRT_TO_BUS=y 157CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y 158CONFIG_UNEVICTABLE_LRU=y
159CONFIG_HAVE_MLOCK=y
160CONFIG_HAVE_MLOCKED_PAGE_BIT=y
149 161
150# 162#
151# General setup 163# General setup
@@ -255,6 +267,7 @@ CONFIG_NETFILTER_XTABLES=m
255CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 267CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
256CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 268CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
257CONFIG_NETFILTER_XT_TARGET_DSCP=m 269CONFIG_NETFILTER_XT_TARGET_DSCP=m
270CONFIG_NETFILTER_XT_TARGET_HL=m
258CONFIG_NETFILTER_XT_TARGET_MARK=m 271CONFIG_NETFILTER_XT_TARGET_MARK=m
259CONFIG_NETFILTER_XT_TARGET_NFLOG=m 272CONFIG_NETFILTER_XT_TARGET_NFLOG=m
260CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 273CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -263,6 +276,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
263CONFIG_NETFILTER_XT_TARGET_TRACE=m 276CONFIG_NETFILTER_XT_TARGET_TRACE=m
264CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 277CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
265CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 278CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
279CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
266CONFIG_NETFILTER_XT_MATCH_COMMENT=m 280CONFIG_NETFILTER_XT_MATCH_COMMENT=m
267CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 281CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
268CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 282CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -273,6 +287,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
273CONFIG_NETFILTER_XT_MATCH_ESP=m 287CONFIG_NETFILTER_XT_MATCH_ESP=m
274CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 288CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
275CONFIG_NETFILTER_XT_MATCH_HELPER=m 289CONFIG_NETFILTER_XT_MATCH_HELPER=m
290CONFIG_NETFILTER_XT_MATCH_HL=m
276CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 291CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
277CONFIG_NETFILTER_XT_MATCH_LENGTH=m 292CONFIG_NETFILTER_XT_MATCH_LENGTH=m
278CONFIG_NETFILTER_XT_MATCH_LIMIT=m 293CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -351,25 +366,20 @@ CONFIG_IP6_NF_MATCH_HL=m
351CONFIG_IP6_NF_MATCH_IPV6HEADER=m 366CONFIG_IP6_NF_MATCH_IPV6HEADER=m
352CONFIG_IP6_NF_MATCH_MH=m 367CONFIG_IP6_NF_MATCH_MH=m
353CONFIG_IP6_NF_MATCH_RT=m 368CONFIG_IP6_NF_MATCH_RT=m
369CONFIG_IP6_NF_TARGET_HL=m
354CONFIG_IP6_NF_TARGET_LOG=m 370CONFIG_IP6_NF_TARGET_LOG=m
355CONFIG_IP6_NF_FILTER=m 371CONFIG_IP6_NF_FILTER=m
356CONFIG_IP6_NF_TARGET_REJECT=m 372CONFIG_IP6_NF_TARGET_REJECT=m
357CONFIG_IP6_NF_MANGLE=m 373CONFIG_IP6_NF_MANGLE=m
358CONFIG_IP6_NF_TARGET_HL=m
359CONFIG_IP6_NF_RAW=m 374CONFIG_IP6_NF_RAW=m
360CONFIG_IP_DCCP=m 375CONFIG_IP_DCCP=m
361CONFIG_INET_DCCP_DIAG=m 376CONFIG_INET_DCCP_DIAG=m
362CONFIG_IP_DCCP_ACKVEC=y
363 377
364# 378#
365# DCCP CCIDs Configuration (EXPERIMENTAL) 379# DCCP CCIDs Configuration (EXPERIMENTAL)
366# 380#
367CONFIG_IP_DCCP_CCID2=m
368# CONFIG_IP_DCCP_CCID2_DEBUG is not set 381# CONFIG_IP_DCCP_CCID2_DEBUG is not set
369CONFIG_IP_DCCP_CCID3=m 382# CONFIG_IP_DCCP_CCID3 is not set
370# CONFIG_IP_DCCP_CCID3_DEBUG is not set
371CONFIG_IP_DCCP_CCID3_RTO=100
372CONFIG_IP_DCCP_TFRC_LIB=m
373CONFIG_IP_SCTP=m 383CONFIG_IP_SCTP=m
374# CONFIG_SCTP_DBG_MSG is not set 384# CONFIG_SCTP_DBG_MSG is not set
375# CONFIG_SCTP_DBG_OBJCNT is not set 385# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -391,8 +401,10 @@ CONFIG_ATALK=m
391# CONFIG_LAPB is not set 401# CONFIG_LAPB is not set
392# CONFIG_ECONET is not set 402# CONFIG_ECONET is not set
393# CONFIG_WAN_ROUTER is not set 403# CONFIG_WAN_ROUTER is not set
404# CONFIG_PHONET is not set
394# CONFIG_NET_SCHED is not set 405# CONFIG_NET_SCHED is not set
395CONFIG_NET_CLS_ROUTE=y 406CONFIG_NET_CLS_ROUTE=y
407# CONFIG_DCB is not set
396 408
397# 409#
398# Network testing 410# Network testing
@@ -403,8 +415,8 @@ CONFIG_NET_CLS_ROUTE=y
403# CONFIG_IRDA is not set 415# CONFIG_IRDA is not set
404# CONFIG_BT is not set 416# CONFIG_BT is not set
405# CONFIG_AF_RXRPC is not set 417# CONFIG_AF_RXRPC is not set
406# CONFIG_PHONET is not set
407# CONFIG_WIRELESS is not set 418# CONFIG_WIRELESS is not set
419# CONFIG_WIMAX is not set
408# CONFIG_RFKILL is not set 420# CONFIG_RFKILL is not set
409# CONFIG_NET_9P is not set 421# CONFIG_NET_9P is not set
410 422
@@ -441,15 +453,20 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
441CONFIG_ATA_OVER_ETH=m 453CONFIG_ATA_OVER_ETH=m
442# CONFIG_BLK_DEV_HD is not set 454# CONFIG_BLK_DEV_HD is not set
443CONFIG_MISC_DEVICES=y 455CONFIG_MISC_DEVICES=y
444# CONFIG_EEPROM_93CX6 is not set
445# CONFIG_ENCLOSURE_SERVICES is not set 456# CONFIG_ENCLOSURE_SERVICES is not set
446# CONFIG_C2PORT is not set 457# CONFIG_C2PORT is not set
458
459#
460# EEPROM support
461#
462# CONFIG_EEPROM_93CX6 is not set
447CONFIG_HAVE_IDE=y 463CONFIG_HAVE_IDE=y
448CONFIG_IDE=y 464CONFIG_IDE=y
449 465
450# 466#
451# Please see Documentation/ide/ide.txt for help/info on IDE drives 467# Please see Documentation/ide/ide.txt for help/info on IDE drives
452# 468#
469CONFIG_IDE_ATAPI=y
453# CONFIG_BLK_DEV_IDE_SATA is not set 470# CONFIG_BLK_DEV_IDE_SATA is not set
454CONFIG_IDE_GD=y 471CONFIG_IDE_GD=y
455CONFIG_IDE_GD_ATA=y 472CONFIG_IDE_GD_ATA=y
@@ -457,7 +474,6 @@ CONFIG_IDE_GD_ATA=y
457CONFIG_BLK_DEV_IDECD=y 474CONFIG_BLK_DEV_IDECD=y
458CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 475CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
459# CONFIG_BLK_DEV_IDETAPE is not set 476# CONFIG_BLK_DEV_IDETAPE is not set
460# CONFIG_BLK_DEV_IDESCSI is not set
461# CONFIG_IDE_TASK_IOCTL is not set 477# CONFIG_IDE_TASK_IOCTL is not set
462CONFIG_IDE_PROC_FS=y 478CONFIG_IDE_PROC_FS=y
463 479
@@ -516,6 +532,8 @@ CONFIG_ISCSI_TCP=m
516# CONFIG_SCSI_AIC7XXX_OLD is not set 532# CONFIG_SCSI_AIC7XXX_OLD is not set
517# CONFIG_SCSI_ADVANSYS is not set 533# CONFIG_SCSI_ADVANSYS is not set
518# CONFIG_SCSI_IN2000 is not set 534# CONFIG_SCSI_IN2000 is not set
535# CONFIG_LIBFC is not set
536# CONFIG_LIBFCOE is not set
519# CONFIG_SCSI_DTC3280 is not set 537# CONFIG_SCSI_DTC3280 is not set
520# CONFIG_SCSI_FUTURE_DOMAIN is not set 538# CONFIG_SCSI_FUTURE_DOMAIN is not set
521# CONFIG_SCSI_GENERIC_NCR5380 is not set 539# CONFIG_SCSI_GENERIC_NCR5380 is not set
@@ -527,6 +545,7 @@ CONFIG_ISCSI_TCP=m
527# CONFIG_SCSI_T128 is not set 545# CONFIG_SCSI_T128 is not set
528# CONFIG_SCSI_DEBUG is not set 546# CONFIG_SCSI_DEBUG is not set
529# CONFIG_SCSI_DH is not set 547# CONFIG_SCSI_DH is not set
548# CONFIG_SCSI_OSD_INITIATOR is not set
530CONFIG_MD=y 549CONFIG_MD=y
531CONFIG_BLK_DEV_MD=m 550CONFIG_BLK_DEV_MD=m
532CONFIG_MD_LINEAR=m 551CONFIG_MD_LINEAR=m
@@ -534,7 +553,7 @@ CONFIG_MD_RAID0=m
534CONFIG_MD_RAID1=m 553CONFIG_MD_RAID1=m
535# CONFIG_MD_RAID10 is not set 554# CONFIG_MD_RAID10 is not set
536CONFIG_MD_RAID456=m 555CONFIG_MD_RAID456=m
537CONFIG_MD_RAID5_RESHAPE=y 556CONFIG_MD_RAID6_PQ=m
538# CONFIG_MD_MULTIPATH is not set 557# CONFIG_MD_MULTIPATH is not set
539# CONFIG_MD_FAULTY is not set 558# CONFIG_MD_FAULTY is not set
540CONFIG_BLK_DEV_DM=m 559CONFIG_BLK_DEV_DM=m
@@ -547,6 +566,7 @@ CONFIG_DM_MULTIPATH=m
547# CONFIG_DM_DELAY is not set 566# CONFIG_DM_DELAY is not set
548CONFIG_DM_UEVENT=y 567CONFIG_DM_UEVENT=y
549CONFIG_NETDEVICES=y 568CONFIG_NETDEVICES=y
569CONFIG_COMPAT_NET_DEV_OPS=y
550CONFIG_DUMMY=m 570CONFIG_DUMMY=m
551# CONFIG_BONDING is not set 571# CONFIG_BONDING is not set
552CONFIG_MACVLAN=m 572CONFIG_MACVLAN=m
@@ -559,7 +579,9 @@ CONFIG_NET_ETHERNET=y
559# CONFIG_MII is not set 579# CONFIG_MII is not set
560# CONFIG_NET_VENDOR_3COM is not set 580# CONFIG_NET_VENDOR_3COM is not set
561# CONFIG_NET_VENDOR_SMC is not set 581# CONFIG_NET_VENDOR_SMC is not set
582# CONFIG_ETHOC is not set
562# CONFIG_NET_VENDOR_RACAL is not set 583# CONFIG_NET_VENDOR_RACAL is not set
584# CONFIG_DNET is not set
563# CONFIG_AT1700 is not set 585# CONFIG_AT1700 is not set
564# CONFIG_DEPCA is not set 586# CONFIG_DEPCA is not set
565# CONFIG_HP100 is not set 587# CONFIG_HP100 is not set
@@ -584,7 +606,10 @@ CONFIG_NE2000=m
584# 606#
585# CONFIG_WLAN_PRE80211 is not set 607# CONFIG_WLAN_PRE80211 is not set
586# CONFIG_WLAN_80211 is not set 608# CONFIG_WLAN_80211 is not set
587# CONFIG_IWLWIFI_LEDS is not set 609
610#
611# Enable WiMAX (Networking options) to see the WiMAX drivers
612#
588# CONFIG_WAN is not set 613# CONFIG_WAN is not set
589CONFIG_PPP=m 614CONFIG_PPP=m
590# CONFIG_PPP_MULTILINK is not set 615# CONFIG_PPP_MULTILINK is not set
@@ -642,7 +667,6 @@ CONFIG_MOUSE_PS2=m
642CONFIG_MOUSE_PS2_ALPS=y 667CONFIG_MOUSE_PS2_ALPS=y
643CONFIG_MOUSE_PS2_LOGIPS2PP=y 668CONFIG_MOUSE_PS2_LOGIPS2PP=y
644CONFIG_MOUSE_PS2_SYNAPTICS=y 669CONFIG_MOUSE_PS2_SYNAPTICS=y
645CONFIG_MOUSE_PS2_LIFEBOOK=y
646CONFIG_MOUSE_PS2_TRACKPOINT=y 670CONFIG_MOUSE_PS2_TRACKPOINT=y
647# CONFIG_MOUSE_PS2_ELANTECH is not set 671# CONFIG_MOUSE_PS2_ELANTECH is not set
648# CONFIG_MOUSE_PS2_TOUCHKIT is not set 672# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -688,6 +712,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
688# Non-8250 serial port support 712# Non-8250 serial port support
689# 713#
690CONFIG_UNIX98_PTYS=y 714CONFIG_UNIX98_PTYS=y
715# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
691CONFIG_LEGACY_PTYS=y 716CONFIG_LEGACY_PTYS=y
692CONFIG_LEGACY_PTY_COUNT=256 717CONFIG_LEGACY_PTY_COUNT=256
693# CONFIG_IPMI_HANDLER is not set 718# CONFIG_IPMI_HANDLER is not set
@@ -771,6 +796,7 @@ CONFIG_FB_Q40=y
771# CONFIG_FB_VIRTUAL is not set 796# CONFIG_FB_VIRTUAL is not set
772# CONFIG_FB_METRONOME is not set 797# CONFIG_FB_METRONOME is not set
773# CONFIG_FB_MB862XX is not set 798# CONFIG_FB_MB862XX is not set
799# CONFIG_FB_BROADSHEET is not set
774# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 800# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
775 801
776# 802#
@@ -805,7 +831,6 @@ CONFIG_HIDRAW=y
805# 831#
806# Special HID drivers 832# Special HID drivers
807# 833#
808CONFIG_HID_COMPAT=y
809# CONFIG_USB_SUPPORT is not set 834# CONFIG_USB_SUPPORT is not set
810# CONFIG_MMC is not set 835# CONFIG_MMC is not set
811# CONFIG_MEMSTICK is not set 836# CONFIG_MEMSTICK is not set
@@ -813,9 +838,9 @@ CONFIG_HID_COMPAT=y
813# CONFIG_ACCESSIBILITY is not set 838# CONFIG_ACCESSIBILITY is not set
814# CONFIG_RTC_CLASS is not set 839# CONFIG_RTC_CLASS is not set
815# CONFIG_DMADEVICES is not set 840# CONFIG_DMADEVICES is not set
841# CONFIG_AUXDISPLAY is not set
816# CONFIG_UIO is not set 842# CONFIG_UIO is not set
817# CONFIG_STAGING is not set 843# CONFIG_STAGING is not set
818CONFIG_STAGING_EXCLUDE_BUILD=y
819 844
820# 845#
821# Character devices 846# Character devices
@@ -828,6 +853,7 @@ CONFIG_EXT2_FS=y
828# CONFIG_EXT2_FS_XATTR is not set 853# CONFIG_EXT2_FS_XATTR is not set
829# CONFIG_EXT2_FS_XIP is not set 854# CONFIG_EXT2_FS_XIP is not set
830CONFIG_EXT3_FS=y 855CONFIG_EXT3_FS=y
856# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
831# CONFIG_EXT3_FS_XATTR is not set 857# CONFIG_EXT3_FS_XATTR is not set
832# CONFIG_EXT4_FS is not set 858# CONFIG_EXT4_FS is not set
833CONFIG_JBD=y 859CONFIG_JBD=y
@@ -854,13 +880,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
854# CONFIG_OCFS2_FS_STATS is not set 880# CONFIG_OCFS2_FS_STATS is not set
855# CONFIG_OCFS2_DEBUG_MASKLOG is not set 881# CONFIG_OCFS2_DEBUG_MASKLOG is not set
856# CONFIG_OCFS2_DEBUG_FS is not set 882# CONFIG_OCFS2_DEBUG_FS is not set
857# CONFIG_OCFS2_COMPAT_JBD is not set 883# CONFIG_OCFS2_FS_POSIX_ACL is not set
884# CONFIG_BTRFS_FS is not set
858CONFIG_DNOTIFY=y 885CONFIG_DNOTIFY=y
859CONFIG_INOTIFY=y 886CONFIG_INOTIFY=y
860CONFIG_INOTIFY_USER=y 887CONFIG_INOTIFY_USER=y
861CONFIG_QUOTA=y 888CONFIG_QUOTA=y
862CONFIG_QUOTA_NETLINK_INTERFACE=y 889CONFIG_QUOTA_NETLINK_INTERFACE=y
863# CONFIG_PRINT_QUOTA_WARNING is not set 890# CONFIG_PRINT_QUOTA_WARNING is not set
891CONFIG_QUOTA_TREE=m
864# CONFIG_QFMT_V1 is not set 892# CONFIG_QFMT_V1 is not set
865# CONFIG_QFMT_V2 is not set 893# CONFIG_QFMT_V2 is not set
866CONFIG_QUOTACTL=y 894CONFIG_QUOTACTL=y
@@ -869,6 +897,11 @@ CONFIG_AUTOFS4_FS=m
869CONFIG_FUSE_FS=m 897CONFIG_FUSE_FS=m
870 898
871# 899#
900# Caches
901#
902# CONFIG_FSCACHE is not set
903
904#
872# CD-ROM/DVD Filesystems 905# CD-ROM/DVD Filesystems
873# 906#
874CONFIG_ISO9660_FS=y 907CONFIG_ISO9660_FS=y
@@ -899,10 +932,7 @@ CONFIG_TMPFS=y
899# CONFIG_TMPFS_POSIX_ACL is not set 932# CONFIG_TMPFS_POSIX_ACL is not set
900# CONFIG_HUGETLB_PAGE is not set 933# CONFIG_HUGETLB_PAGE is not set
901CONFIG_CONFIGFS_FS=m 934CONFIG_CONFIGFS_FS=m
902 935CONFIG_MISC_FILESYSTEMS=y
903#
904# Miscellaneous filesystems
905#
906# CONFIG_ADFS_FS is not set 936# CONFIG_ADFS_FS is not set
907CONFIG_AFFS_FS=m 937CONFIG_AFFS_FS=m
908CONFIG_HFS_FS=m 938CONFIG_HFS_FS=m
@@ -911,6 +941,9 @@ CONFIG_HFSPLUS_FS=m
911# CONFIG_BFS_FS is not set 941# CONFIG_BFS_FS is not set
912# CONFIG_EFS_FS is not set 942# CONFIG_EFS_FS is not set
913CONFIG_CRAMFS=m 943CONFIG_CRAMFS=m
944CONFIG_SQUASHFS=m
945# CONFIG_SQUASHFS_EMBEDDED is not set
946CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
914# CONFIG_VXFS_FS is not set 947# CONFIG_VXFS_FS is not set
915CONFIG_MINIX_FS=y 948CONFIG_MINIX_FS=y
916# CONFIG_OMFS_FS is not set 949# CONFIG_OMFS_FS is not set
@@ -921,6 +954,7 @@ CONFIG_SYSV_FS=m
921CONFIG_UFS_FS=m 954CONFIG_UFS_FS=m
922# CONFIG_UFS_FS_WRITE is not set 955# CONFIG_UFS_FS_WRITE is not set
923# CONFIG_UFS_DEBUG is not set 956# CONFIG_UFS_DEBUG is not set
957# CONFIG_NILFS2_FS is not set
924CONFIG_NETWORK_FILESYSTEMS=y 958CONFIG_NETWORK_FILESYSTEMS=y
925CONFIG_NFS_FS=y 959CONFIG_NFS_FS=y
926CONFIG_NFS_V3=y 960CONFIG_NFS_V3=y
@@ -936,7 +970,6 @@ CONFIG_EXPORTFS=m
936CONFIG_NFS_COMMON=y 970CONFIG_NFS_COMMON=y
937CONFIG_SUNRPC=y 971CONFIG_SUNRPC=y
938CONFIG_SUNRPC_GSS=y 972CONFIG_SUNRPC_GSS=y
939# CONFIG_SUNRPC_REGISTER_V4 is not set
940CONFIG_RPCSEC_GSS_KRB5=y 973CONFIG_RPCSEC_GSS_KRB5=y
941# CONFIG_RPCSEC_GSS_SPKM3 is not set 974# CONFIG_RPCSEC_GSS_SPKM3 is not set
942CONFIG_SMB_FS=m 975CONFIG_SMB_FS=m
@@ -1011,11 +1044,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
1011CONFIG_DEBUG_MEMORY_INIT=y 1044CONFIG_DEBUG_MEMORY_INIT=y
1012# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1045# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1013CONFIG_SYSCTL_SYSCALL_CHECK=y 1046CONFIG_SYSCTL_SYSCALL_CHECK=y
1014
1015#
1016# Tracers
1017#
1018# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1019# CONFIG_SAMPLES is not set 1047# CONFIG_SAMPLES is not set
1020 1048
1021# 1049#
@@ -1036,13 +1064,21 @@ CONFIG_CRYPTO=y
1036# 1064#
1037# CONFIG_CRYPTO_FIPS is not set 1065# CONFIG_CRYPTO_FIPS is not set
1038CONFIG_CRYPTO_ALGAPI=y 1066CONFIG_CRYPTO_ALGAPI=y
1039CONFIG_CRYPTO_AEAD=y 1067CONFIG_CRYPTO_ALGAPI2=y
1068CONFIG_CRYPTO_AEAD=m
1069CONFIG_CRYPTO_AEAD2=y
1040CONFIG_CRYPTO_BLKCIPHER=y 1070CONFIG_CRYPTO_BLKCIPHER=y
1071CONFIG_CRYPTO_BLKCIPHER2=y
1041CONFIG_CRYPTO_HASH=y 1072CONFIG_CRYPTO_HASH=y
1042CONFIG_CRYPTO_RNG=y 1073CONFIG_CRYPTO_HASH2=y
1074CONFIG_CRYPTO_RNG=m
1075CONFIG_CRYPTO_RNG2=y
1076CONFIG_CRYPTO_PCOMP=y
1043CONFIG_CRYPTO_MANAGER=y 1077CONFIG_CRYPTO_MANAGER=y
1078CONFIG_CRYPTO_MANAGER2=y
1044CONFIG_CRYPTO_GF128MUL=m 1079CONFIG_CRYPTO_GF128MUL=m
1045CONFIG_CRYPTO_NULL=m 1080CONFIG_CRYPTO_NULL=m
1081CONFIG_CRYPTO_WORKQUEUE=y
1046CONFIG_CRYPTO_CRYPTD=m 1082CONFIG_CRYPTO_CRYPTD=m
1047CONFIG_CRYPTO_AUTHENC=m 1083CONFIG_CRYPTO_AUTHENC=m
1048CONFIG_CRYPTO_TEST=m 1084CONFIG_CRYPTO_TEST=m
@@ -1112,6 +1148,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1112# Compression 1148# Compression
1113# 1149#
1114CONFIG_CRYPTO_DEFLATE=m 1150CONFIG_CRYPTO_DEFLATE=m
1151CONFIG_CRYPTO_ZLIB=m
1115CONFIG_CRYPTO_LZO=m 1152CONFIG_CRYPTO_LZO=m
1116 1153
1117# 1154#
@@ -1119,11 +1156,13 @@ CONFIG_CRYPTO_LZO=m
1119# 1156#
1120# CONFIG_CRYPTO_ANSI_CPRNG is not set 1157# CONFIG_CRYPTO_ANSI_CPRNG is not set
1121# CONFIG_CRYPTO_HW is not set 1158# CONFIG_CRYPTO_HW is not set
1159# CONFIG_BINARY_PRINTF is not set
1122 1160
1123# 1161#
1124# Library routines 1162# Library routines
1125# 1163#
1126CONFIG_BITREVERSE=y 1164CONFIG_BITREVERSE=y
1165CONFIG_GENERIC_FIND_LAST_BIT=y
1127CONFIG_CRC_CCITT=m 1166CONFIG_CRC_CCITT=m
1128CONFIG_CRC16=m 1167CONFIG_CRC16=m
1129CONFIG_CRC_T10DIF=y 1168CONFIG_CRC_T10DIF=y
@@ -1135,10 +1174,13 @@ CONFIG_ZLIB_INFLATE=y
1135CONFIG_ZLIB_DEFLATE=m 1174CONFIG_ZLIB_DEFLATE=m
1136CONFIG_LZO_COMPRESS=m 1175CONFIG_LZO_COMPRESS=m
1137CONFIG_LZO_DECOMPRESS=m 1176CONFIG_LZO_DECOMPRESS=m
1177CONFIG_DECOMPRESS_GZIP=y
1178CONFIG_DECOMPRESS_BZIP2=y
1179CONFIG_DECOMPRESS_LZMA=y
1138CONFIG_TEXTSEARCH=y 1180CONFIG_TEXTSEARCH=y
1139CONFIG_TEXTSEARCH_KMP=m 1181CONFIG_TEXTSEARCH_KMP=m
1140CONFIG_TEXTSEARCH_BM=m 1182CONFIG_TEXTSEARCH_BM=m
1141CONFIG_TEXTSEARCH_FSM=m 1183CONFIG_TEXTSEARCH_FSM=m
1142CONFIG_PLIST=y
1143CONFIG_HAS_IOMEM=y 1184CONFIG_HAS_IOMEM=y
1144CONFIG_HAS_DMA=y 1185CONFIG_HAS_DMA=y
1186CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defconfig
index f404917429fa..f27c1a47bacf 100644
--- a/arch/m68k/configs/sun3_defconfig
+++ b/arch/m68k/configs/sun3_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:53 2008 4# Wed Apr 22 20:48:16 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -138,12 +149,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
138CONFIG_NEED_MULTIPLE_NODES=y 149CONFIG_NEED_MULTIPLE_NODES=y
139CONFIG_PAGEFLAGS_EXTENDED=y 150CONFIG_PAGEFLAGS_EXTENDED=y
140CONFIG_SPLIT_PTLOCK_CPUS=4 151CONFIG_SPLIT_PTLOCK_CPUS=4
141# CONFIG_RESOURCES_64BIT is not set
142# CONFIG_PHYS_ADDR_T_64BIT is not set 152# CONFIG_PHYS_ADDR_T_64BIT is not set
143CONFIG_ZONE_DMA_FLAG=1 153CONFIG_ZONE_DMA_FLAG=1
144CONFIG_BOUNCE=y 154CONFIG_BOUNCE=y
145CONFIG_VIRT_TO_BUS=y 155CONFIG_VIRT_TO_BUS=y
146CONFIG_UNEVICTABLE_LRU=y 156CONFIG_UNEVICTABLE_LRU=y
157CONFIG_HAVE_MLOCK=y
158CONFIG_HAVE_MLOCKED_PAGE_BIT=y
147 159
148# 160#
149# General setup 161# General setup
@@ -253,6 +265,7 @@ CONFIG_NETFILTER_XTABLES=m
253CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 265CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
254CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 266CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
255CONFIG_NETFILTER_XT_TARGET_DSCP=m 267CONFIG_NETFILTER_XT_TARGET_DSCP=m
268CONFIG_NETFILTER_XT_TARGET_HL=m
256CONFIG_NETFILTER_XT_TARGET_MARK=m 269CONFIG_NETFILTER_XT_TARGET_MARK=m
257CONFIG_NETFILTER_XT_TARGET_NFLOG=m 270CONFIG_NETFILTER_XT_TARGET_NFLOG=m
258CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 271CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -261,6 +274,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
261CONFIG_NETFILTER_XT_TARGET_TRACE=m 274CONFIG_NETFILTER_XT_TARGET_TRACE=m
262CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 275CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
263CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 276CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
277CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
264CONFIG_NETFILTER_XT_MATCH_COMMENT=m 278CONFIG_NETFILTER_XT_MATCH_COMMENT=m
265CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 279CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
266CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 280CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -271,6 +285,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
271CONFIG_NETFILTER_XT_MATCH_ESP=m 285CONFIG_NETFILTER_XT_MATCH_ESP=m
272CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 286CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
273CONFIG_NETFILTER_XT_MATCH_HELPER=m 287CONFIG_NETFILTER_XT_MATCH_HELPER=m
288CONFIG_NETFILTER_XT_MATCH_HL=m
274CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 289CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
275CONFIG_NETFILTER_XT_MATCH_LENGTH=m 290CONFIG_NETFILTER_XT_MATCH_LENGTH=m
276CONFIG_NETFILTER_XT_MATCH_LIMIT=m 291CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -349,25 +364,20 @@ CONFIG_IP6_NF_MATCH_HL=m
349CONFIG_IP6_NF_MATCH_IPV6HEADER=m 364CONFIG_IP6_NF_MATCH_IPV6HEADER=m
350CONFIG_IP6_NF_MATCH_MH=m 365CONFIG_IP6_NF_MATCH_MH=m
351CONFIG_IP6_NF_MATCH_RT=m 366CONFIG_IP6_NF_MATCH_RT=m
367CONFIG_IP6_NF_TARGET_HL=m
352CONFIG_IP6_NF_TARGET_LOG=m 368CONFIG_IP6_NF_TARGET_LOG=m
353CONFIG_IP6_NF_FILTER=m 369CONFIG_IP6_NF_FILTER=m
354CONFIG_IP6_NF_TARGET_REJECT=m 370CONFIG_IP6_NF_TARGET_REJECT=m
355CONFIG_IP6_NF_MANGLE=m 371CONFIG_IP6_NF_MANGLE=m
356CONFIG_IP6_NF_TARGET_HL=m
357CONFIG_IP6_NF_RAW=m 372CONFIG_IP6_NF_RAW=m
358CONFIG_IP_DCCP=m 373CONFIG_IP_DCCP=m
359CONFIG_INET_DCCP_DIAG=m 374CONFIG_INET_DCCP_DIAG=m
360CONFIG_IP_DCCP_ACKVEC=y
361 375
362# 376#
363# DCCP CCIDs Configuration (EXPERIMENTAL) 377# DCCP CCIDs Configuration (EXPERIMENTAL)
364# 378#
365CONFIG_IP_DCCP_CCID2=m
366# CONFIG_IP_DCCP_CCID2_DEBUG is not set 379# CONFIG_IP_DCCP_CCID2_DEBUG is not set
367CONFIG_IP_DCCP_CCID3=m 380# CONFIG_IP_DCCP_CCID3 is not set
368# CONFIG_IP_DCCP_CCID3_DEBUG is not set
369CONFIG_IP_DCCP_CCID3_RTO=100
370CONFIG_IP_DCCP_TFRC_LIB=m
371CONFIG_IP_SCTP=m 381CONFIG_IP_SCTP=m
372# CONFIG_SCTP_DBG_MSG is not set 382# CONFIG_SCTP_DBG_MSG is not set
373# CONFIG_SCTP_DBG_OBJCNT is not set 383# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -389,8 +399,10 @@ CONFIG_ATALK=m
389# CONFIG_LAPB is not set 399# CONFIG_LAPB is not set
390# CONFIG_ECONET is not set 400# CONFIG_ECONET is not set
391# CONFIG_WAN_ROUTER is not set 401# CONFIG_WAN_ROUTER is not set
402# CONFIG_PHONET is not set
392# CONFIG_NET_SCHED is not set 403# CONFIG_NET_SCHED is not set
393CONFIG_NET_CLS_ROUTE=y 404CONFIG_NET_CLS_ROUTE=y
405# CONFIG_DCB is not set
394 406
395# 407#
396# Network testing 408# Network testing
@@ -401,8 +413,8 @@ CONFIG_NET_CLS_ROUTE=y
401# CONFIG_IRDA is not set 413# CONFIG_IRDA is not set
402# CONFIG_BT is not set 414# CONFIG_BT is not set
403# CONFIG_AF_RXRPC is not set 415# CONFIG_AF_RXRPC is not set
404# CONFIG_PHONET is not set
405# CONFIG_WIRELESS is not set 416# CONFIG_WIRELESS is not set
417# CONFIG_WIMAX is not set
406# CONFIG_RFKILL is not set 418# CONFIG_RFKILL is not set
407# CONFIG_NET_9P is not set 419# CONFIG_NET_9P is not set
408 420
@@ -438,9 +450,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
438CONFIG_ATA_OVER_ETH=m 450CONFIG_ATA_OVER_ETH=m
439# CONFIG_BLK_DEV_HD is not set 451# CONFIG_BLK_DEV_HD is not set
440CONFIG_MISC_DEVICES=y 452CONFIG_MISC_DEVICES=y
441# CONFIG_EEPROM_93CX6 is not set
442# CONFIG_ENCLOSURE_SERVICES is not set 453# CONFIG_ENCLOSURE_SERVICES is not set
443# CONFIG_C2PORT is not set 454# CONFIG_C2PORT is not set
455
456#
457# EEPROM support
458#
459# CONFIG_EEPROM_93CX6 is not set
444CONFIG_HAVE_IDE=y 460CONFIG_HAVE_IDE=y
445# CONFIG_IDE is not set 461# CONFIG_IDE is not set
446 462
@@ -488,9 +504,12 @@ CONFIG_SCSI_SRP_ATTRS=m
488CONFIG_SCSI_SRP_TGT_ATTRS=y 504CONFIG_SCSI_SRP_TGT_ATTRS=y
489CONFIG_SCSI_LOWLEVEL=y 505CONFIG_SCSI_LOWLEVEL=y
490CONFIG_ISCSI_TCP=m 506CONFIG_ISCSI_TCP=m
507# CONFIG_LIBFC is not set
508# CONFIG_LIBFCOE is not set
491# CONFIG_SCSI_DEBUG is not set 509# CONFIG_SCSI_DEBUG is not set
492CONFIG_SUN3_SCSI=y 510CONFIG_SUN3_SCSI=y
493# CONFIG_SCSI_DH is not set 511# CONFIG_SCSI_DH is not set
512# CONFIG_SCSI_OSD_INITIATOR is not set
494CONFIG_MD=y 513CONFIG_MD=y
495CONFIG_BLK_DEV_MD=m 514CONFIG_BLK_DEV_MD=m
496CONFIG_MD_LINEAR=m 515CONFIG_MD_LINEAR=m
@@ -498,7 +517,7 @@ CONFIG_MD_RAID0=m
498CONFIG_MD_RAID1=m 517CONFIG_MD_RAID1=m
499# CONFIG_MD_RAID10 is not set 518# CONFIG_MD_RAID10 is not set
500CONFIG_MD_RAID456=m 519CONFIG_MD_RAID456=m
501CONFIG_MD_RAID5_RESHAPE=y 520CONFIG_MD_RAID6_PQ=m
502# CONFIG_MD_MULTIPATH is not set 521# CONFIG_MD_MULTIPATH is not set
503# CONFIG_MD_FAULTY is not set 522# CONFIG_MD_FAULTY is not set
504CONFIG_BLK_DEV_DM=m 523CONFIG_BLK_DEV_DM=m
@@ -511,6 +530,7 @@ CONFIG_DM_MULTIPATH=m
511# CONFIG_DM_DELAY is not set 530# CONFIG_DM_DELAY is not set
512CONFIG_DM_UEVENT=y 531CONFIG_DM_UEVENT=y
513CONFIG_NETDEVICES=y 532CONFIG_NETDEVICES=y
533CONFIG_COMPAT_NET_DEV_OPS=y
514CONFIG_DUMMY=m 534CONFIG_DUMMY=m
515# CONFIG_BONDING is not set 535# CONFIG_BONDING is not set
516CONFIG_MACVLAN=m 536CONFIG_MACVLAN=m
@@ -522,6 +542,8 @@ CONFIG_NET_ETHERNET=y
522# CONFIG_MII is not set 542# CONFIG_MII is not set
523CONFIG_SUN3LANCE=y 543CONFIG_SUN3LANCE=y
524CONFIG_SUN3_82586=y 544CONFIG_SUN3_82586=y
545# CONFIG_ETHOC is not set
546# CONFIG_DNET is not set
525# CONFIG_IBM_NEW_EMAC_ZMII is not set 547# CONFIG_IBM_NEW_EMAC_ZMII is not set
526# CONFIG_IBM_NEW_EMAC_RGMII is not set 548# CONFIG_IBM_NEW_EMAC_RGMII is not set
527# CONFIG_IBM_NEW_EMAC_TAH is not set 549# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -537,7 +559,10 @@ CONFIG_SUN3_82586=y
537# 559#
538# CONFIG_WLAN_PRE80211 is not set 560# CONFIG_WLAN_PRE80211 is not set
539# CONFIG_WLAN_80211 is not set 561# CONFIG_WLAN_80211 is not set
540# CONFIG_IWLWIFI_LEDS is not set 562
563#
564# Enable WiMAX (Networking options) to see the WiMAX drivers
565#
541# CONFIG_WAN is not set 566# CONFIG_WAN is not set
542CONFIG_PPP=m 567CONFIG_PPP=m
543# CONFIG_PPP_MULTILINK is not set 568# CONFIG_PPP_MULTILINK is not set
@@ -595,7 +620,6 @@ CONFIG_MOUSE_PS2=m
595CONFIG_MOUSE_PS2_ALPS=y 620CONFIG_MOUSE_PS2_ALPS=y
596CONFIG_MOUSE_PS2_LOGIPS2PP=y 621CONFIG_MOUSE_PS2_LOGIPS2PP=y
597CONFIG_MOUSE_PS2_SYNAPTICS=y 622CONFIG_MOUSE_PS2_SYNAPTICS=y
598CONFIG_MOUSE_PS2_LIFEBOOK=y
599CONFIG_MOUSE_PS2_TRACKPOINT=y 623CONFIG_MOUSE_PS2_TRACKPOINT=y
600# CONFIG_MOUSE_PS2_ELANTECH is not set 624# CONFIG_MOUSE_PS2_ELANTECH is not set
601# CONFIG_MOUSE_PS2_TOUCHKIT is not set 625# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -635,6 +659,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
635# Non-8250 serial port support 659# Non-8250 serial port support
636# 660#
637CONFIG_UNIX98_PTYS=y 661CONFIG_UNIX98_PTYS=y
662# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
638CONFIG_LEGACY_PTYS=y 663CONFIG_LEGACY_PTYS=y
639CONFIG_LEGACY_PTY_COUNT=256 664CONFIG_LEGACY_PTY_COUNT=256
640# CONFIG_IPMI_HANDLER is not set 665# CONFIG_IPMI_HANDLER is not set
@@ -710,6 +735,7 @@ CONFIG_FB=y
710# CONFIG_FB_VIRTUAL is not set 735# CONFIG_FB_VIRTUAL is not set
711# CONFIG_FB_METRONOME is not set 736# CONFIG_FB_METRONOME is not set
712# CONFIG_FB_MB862XX is not set 737# CONFIG_FB_MB862XX is not set
738# CONFIG_FB_BROADSHEET is not set
713# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 739# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
714 740
715# 741#
@@ -741,16 +767,15 @@ CONFIG_HIDRAW=y
741# 767#
742# Special HID drivers 768# Special HID drivers
743# 769#
744CONFIG_HID_COMPAT=y
745# CONFIG_USB_SUPPORT is not set 770# CONFIG_USB_SUPPORT is not set
746# CONFIG_MMC is not set 771# CONFIG_MMC is not set
747# CONFIG_MEMSTICK is not set 772# CONFIG_MEMSTICK is not set
748# CONFIG_NEW_LEDS is not set 773# CONFIG_NEW_LEDS is not set
749# CONFIG_ACCESSIBILITY is not set 774# CONFIG_ACCESSIBILITY is not set
750# CONFIG_RTC_CLASS is not set 775# CONFIG_RTC_CLASS is not set
776# CONFIG_AUXDISPLAY is not set
751# CONFIG_UIO is not set 777# CONFIG_UIO is not set
752# CONFIG_STAGING is not set 778# CONFIG_STAGING is not set
753CONFIG_STAGING_EXCLUDE_BUILD=y
754 779
755# 780#
756# Character devices 781# Character devices
@@ -763,6 +788,7 @@ CONFIG_EXT2_FS=y
763# CONFIG_EXT2_FS_XATTR is not set 788# CONFIG_EXT2_FS_XATTR is not set
764# CONFIG_EXT2_FS_XIP is not set 789# CONFIG_EXT2_FS_XIP is not set
765CONFIG_EXT3_FS=y 790CONFIG_EXT3_FS=y
791# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
766# CONFIG_EXT3_FS_XATTR is not set 792# CONFIG_EXT3_FS_XATTR is not set
767# CONFIG_EXT4_FS is not set 793# CONFIG_EXT4_FS is not set
768CONFIG_JBD=y 794CONFIG_JBD=y
@@ -789,13 +815,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
789# CONFIG_OCFS2_FS_STATS is not set 815# CONFIG_OCFS2_FS_STATS is not set
790# CONFIG_OCFS2_DEBUG_MASKLOG is not set 816# CONFIG_OCFS2_DEBUG_MASKLOG is not set
791# CONFIG_OCFS2_DEBUG_FS is not set 817# CONFIG_OCFS2_DEBUG_FS is not set
792# CONFIG_OCFS2_COMPAT_JBD is not set 818# CONFIG_OCFS2_FS_POSIX_ACL is not set
819# CONFIG_BTRFS_FS is not set
793CONFIG_DNOTIFY=y 820CONFIG_DNOTIFY=y
794CONFIG_INOTIFY=y 821CONFIG_INOTIFY=y
795CONFIG_INOTIFY_USER=y 822CONFIG_INOTIFY_USER=y
796CONFIG_QUOTA=y 823CONFIG_QUOTA=y
797CONFIG_QUOTA_NETLINK_INTERFACE=y 824CONFIG_QUOTA_NETLINK_INTERFACE=y
798# CONFIG_PRINT_QUOTA_WARNING is not set 825# CONFIG_PRINT_QUOTA_WARNING is not set
826CONFIG_QUOTA_TREE=m
799# CONFIG_QFMT_V1 is not set 827# CONFIG_QFMT_V1 is not set
800# CONFIG_QFMT_V2 is not set 828# CONFIG_QFMT_V2 is not set
801CONFIG_QUOTACTL=y 829CONFIG_QUOTACTL=y
@@ -804,6 +832,11 @@ CONFIG_AUTOFS4_FS=m
804CONFIG_FUSE_FS=m 832CONFIG_FUSE_FS=m
805 833
806# 834#
835# Caches
836#
837# CONFIG_FSCACHE is not set
838
839#
807# CD-ROM/DVD Filesystems 840# CD-ROM/DVD Filesystems
808# 841#
809CONFIG_ISO9660_FS=y 842CONFIG_ISO9660_FS=y
@@ -834,10 +867,7 @@ CONFIG_TMPFS=y
834# CONFIG_TMPFS_POSIX_ACL is not set 867# CONFIG_TMPFS_POSIX_ACL is not set
835# CONFIG_HUGETLB_PAGE is not set 868# CONFIG_HUGETLB_PAGE is not set
836CONFIG_CONFIGFS_FS=m 869CONFIG_CONFIGFS_FS=m
837 870CONFIG_MISC_FILESYSTEMS=y
838#
839# Miscellaneous filesystems
840#
841# CONFIG_ADFS_FS is not set 871# CONFIG_ADFS_FS is not set
842CONFIG_AFFS_FS=m 872CONFIG_AFFS_FS=m
843CONFIG_HFS_FS=m 873CONFIG_HFS_FS=m
@@ -846,6 +876,9 @@ CONFIG_HFSPLUS_FS=m
846# CONFIG_BFS_FS is not set 876# CONFIG_BFS_FS is not set
847# CONFIG_EFS_FS is not set 877# CONFIG_EFS_FS is not set
848CONFIG_CRAMFS=m 878CONFIG_CRAMFS=m
879CONFIG_SQUASHFS=m
880# CONFIG_SQUASHFS_EMBEDDED is not set
881CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
849# CONFIG_VXFS_FS is not set 882# CONFIG_VXFS_FS is not set
850CONFIG_MINIX_FS=y 883CONFIG_MINIX_FS=y
851# CONFIG_OMFS_FS is not set 884# CONFIG_OMFS_FS is not set
@@ -856,6 +889,7 @@ CONFIG_SYSV_FS=m
856CONFIG_UFS_FS=m 889CONFIG_UFS_FS=m
857# CONFIG_UFS_FS_WRITE is not set 890# CONFIG_UFS_FS_WRITE is not set
858# CONFIG_UFS_DEBUG is not set 891# CONFIG_UFS_DEBUG is not set
892# CONFIG_NILFS2_FS is not set
859CONFIG_NETWORK_FILESYSTEMS=y 893CONFIG_NETWORK_FILESYSTEMS=y
860CONFIG_NFS_FS=y 894CONFIG_NFS_FS=y
861CONFIG_NFS_V3=y 895CONFIG_NFS_V3=y
@@ -872,7 +906,6 @@ CONFIG_EXPORTFS=m
872CONFIG_NFS_COMMON=y 906CONFIG_NFS_COMMON=y
873CONFIG_SUNRPC=y 907CONFIG_SUNRPC=y
874CONFIG_SUNRPC_GSS=y 908CONFIG_SUNRPC_GSS=y
875# CONFIG_SUNRPC_REGISTER_V4 is not set
876CONFIG_RPCSEC_GSS_KRB5=y 909CONFIG_RPCSEC_GSS_KRB5=y
877# CONFIG_RPCSEC_GSS_SPKM3 is not set 910# CONFIG_RPCSEC_GSS_SPKM3 is not set
878CONFIG_SMB_FS=m 911CONFIG_SMB_FS=m
@@ -948,11 +981,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
948CONFIG_DEBUG_MEMORY_INIT=y 981CONFIG_DEBUG_MEMORY_INIT=y
949# CONFIG_RCU_CPU_STALL_DETECTOR is not set 982# CONFIG_RCU_CPU_STALL_DETECTOR is not set
950CONFIG_SYSCTL_SYSCALL_CHECK=y 983CONFIG_SYSCTL_SYSCALL_CHECK=y
951
952#
953# Tracers
954#
955# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
956# CONFIG_SAMPLES is not set 984# CONFIG_SAMPLES is not set
957 985
958# 986#
@@ -973,13 +1001,21 @@ CONFIG_CRYPTO=y
973# 1001#
974# CONFIG_CRYPTO_FIPS is not set 1002# CONFIG_CRYPTO_FIPS is not set
975CONFIG_CRYPTO_ALGAPI=y 1003CONFIG_CRYPTO_ALGAPI=y
976CONFIG_CRYPTO_AEAD=y 1004CONFIG_CRYPTO_ALGAPI2=y
1005CONFIG_CRYPTO_AEAD=m
1006CONFIG_CRYPTO_AEAD2=y
977CONFIG_CRYPTO_BLKCIPHER=y 1007CONFIG_CRYPTO_BLKCIPHER=y
1008CONFIG_CRYPTO_BLKCIPHER2=y
978CONFIG_CRYPTO_HASH=y 1009CONFIG_CRYPTO_HASH=y
979CONFIG_CRYPTO_RNG=y 1010CONFIG_CRYPTO_HASH2=y
1011CONFIG_CRYPTO_RNG=m
1012CONFIG_CRYPTO_RNG2=y
1013CONFIG_CRYPTO_PCOMP=y
980CONFIG_CRYPTO_MANAGER=y 1014CONFIG_CRYPTO_MANAGER=y
1015CONFIG_CRYPTO_MANAGER2=y
981CONFIG_CRYPTO_GF128MUL=m 1016CONFIG_CRYPTO_GF128MUL=m
982CONFIG_CRYPTO_NULL=m 1017CONFIG_CRYPTO_NULL=m
1018CONFIG_CRYPTO_WORKQUEUE=y
983CONFIG_CRYPTO_CRYPTD=m 1019CONFIG_CRYPTO_CRYPTD=m
984CONFIG_CRYPTO_AUTHENC=m 1020CONFIG_CRYPTO_AUTHENC=m
985CONFIG_CRYPTO_TEST=m 1021CONFIG_CRYPTO_TEST=m
@@ -1049,6 +1085,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1049# Compression 1085# Compression
1050# 1086#
1051CONFIG_CRYPTO_DEFLATE=m 1087CONFIG_CRYPTO_DEFLATE=m
1088CONFIG_CRYPTO_ZLIB=m
1052CONFIG_CRYPTO_LZO=m 1089CONFIG_CRYPTO_LZO=m
1053 1090
1054# 1091#
@@ -1056,11 +1093,13 @@ CONFIG_CRYPTO_LZO=m
1056# 1093#
1057# CONFIG_CRYPTO_ANSI_CPRNG is not set 1094# CONFIG_CRYPTO_ANSI_CPRNG is not set
1058# CONFIG_CRYPTO_HW is not set 1095# CONFIG_CRYPTO_HW is not set
1096# CONFIG_BINARY_PRINTF is not set
1059 1097
1060# 1098#
1061# Library routines 1099# Library routines
1062# 1100#
1063CONFIG_BITREVERSE=y 1101CONFIG_BITREVERSE=y
1102CONFIG_GENERIC_FIND_LAST_BIT=y
1064CONFIG_CRC_CCITT=m 1103CONFIG_CRC_CCITT=m
1065CONFIG_CRC16=m 1104CONFIG_CRC16=m
1066CONFIG_CRC_T10DIF=y 1105CONFIG_CRC_T10DIF=y
@@ -1072,9 +1111,12 @@ CONFIG_ZLIB_INFLATE=y
1072CONFIG_ZLIB_DEFLATE=m 1111CONFIG_ZLIB_DEFLATE=m
1073CONFIG_LZO_COMPRESS=m 1112CONFIG_LZO_COMPRESS=m
1074CONFIG_LZO_DECOMPRESS=m 1113CONFIG_LZO_DECOMPRESS=m
1114CONFIG_DECOMPRESS_GZIP=y
1115CONFIG_DECOMPRESS_BZIP2=y
1116CONFIG_DECOMPRESS_LZMA=y
1075CONFIG_TEXTSEARCH=y 1117CONFIG_TEXTSEARCH=y
1076CONFIG_TEXTSEARCH_KMP=m 1118CONFIG_TEXTSEARCH_KMP=m
1077CONFIG_TEXTSEARCH_BM=m 1119CONFIG_TEXTSEARCH_BM=m
1078CONFIG_TEXTSEARCH_FSM=m 1120CONFIG_TEXTSEARCH_FSM=m
1079CONFIG_PLIST=y
1080CONFIG_HAS_IOMEM=y 1121CONFIG_HAS_IOMEM=y
1122CONFIG_NLATTR=y
diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_defconfig
index 4d8a1e84e39f..c40edb919fda 100644
--- a/arch/m68k/configs/sun3x_defconfig
+++ b/arch/m68k/configs/sun3x_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.28-rc7 3# Linux kernel version: 2.6.30-rc3
4# Tue Dec 2 20:27:54 2008 4# Wed Apr 22 20:48:20 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -29,14 +29,24 @@ CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 29CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 30CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
32CONFIG_POSIX_MQUEUE_SYSCTL=y
32CONFIG_BSD_PROCESS_ACCT=y 33CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 34# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 50# CONFIG_SYSFS_DEPRECATED_V2 is not set
41CONFIG_RELAY=y 51CONFIG_RELAY=y
42CONFIG_NAMESPACES=y 52CONFIG_NAMESPACES=y
@@ -44,23 +54,27 @@ CONFIG_NAMESPACES=y
44# CONFIG_IPC_NS is not set 54# CONFIG_IPC_NS is not set
45# CONFIG_USER_NS is not set 55# CONFIG_USER_NS is not set
46# CONFIG_PID_NS is not set 56# CONFIG_PID_NS is not set
57# CONFIG_NET_NS is not set
47CONFIG_BLK_DEV_INITRD=y 58CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 59CONFIG_INITRAMFS_SOURCE=""
60CONFIG_RD_GZIP=y
61CONFIG_RD_BZIP2=y
62CONFIG_RD_LZMA=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 63# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SYSCTL=y 64CONFIG_SYSCTL=y
65CONFIG_ANON_INODES=y
51# CONFIG_EMBEDDED is not set 66# CONFIG_EMBEDDED is not set
52CONFIG_UID16=y 67CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 68CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y 69CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 70# CONFIG_KALLSYMS_EXTRA_PASS is not set
71# CONFIG_STRIP_ASM_SYMS is not set
56CONFIG_HOTPLUG=y 72CONFIG_HOTPLUG=y
57CONFIG_PRINTK=y 73CONFIG_PRINTK=y
58CONFIG_BUG=y 74CONFIG_BUG=y
59CONFIG_ELF_CORE=y 75CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
61CONFIG_BASE_FULL=y 76CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 77CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 78CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 79CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
@@ -68,15 +82,16 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 82CONFIG_SHMEM=y
69CONFIG_AIO=y 83CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_COMPAT_BRK=y
71CONFIG_SLAB=y 86CONFIG_SLAB=y
72# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 89# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 90# CONFIG_MARKERS is not set
91# CONFIG_SLOW_WORK is not set
76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
77CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
81CONFIG_MODULES=y 96CONFIG_MODULES=y
82# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
@@ -84,11 +99,8 @@ CONFIG_MODULE_UNLOAD=y
84# CONFIG_MODULE_FORCE_UNLOAD is not set 99# CONFIG_MODULE_FORCE_UNLOAD is not set
85# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
86# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
87CONFIG_KMOD=y
88CONFIG_BLOCK=y 102CONFIG_BLOCK=y
89# CONFIG_LBD is not set 103# CONFIG_LBD is not set
90# CONFIG_BLK_DEV_IO_TRACE is not set
91# CONFIG_LSF is not set
92CONFIG_BLK_DEV_BSG=y 104CONFIG_BLK_DEV_BSG=y
93# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
94 106
@@ -104,7 +116,6 @@ CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_CFQ is not set 116# CONFIG_DEFAULT_CFQ is not set
105# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set 119# CONFIG_FREEZER is not set
109 120
110# 121#
@@ -140,12 +151,13 @@ CONFIG_FLAT_NODE_MEM_MAP=y
140CONFIG_NEED_MULTIPLE_NODES=y 151CONFIG_NEED_MULTIPLE_NODES=y
141CONFIG_PAGEFLAGS_EXTENDED=y 152CONFIG_PAGEFLAGS_EXTENDED=y
142CONFIG_SPLIT_PTLOCK_CPUS=4 153CONFIG_SPLIT_PTLOCK_CPUS=4
143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set 154# CONFIG_PHYS_ADDR_T_64BIT is not set
145CONFIG_ZONE_DMA_FLAG=1 155CONFIG_ZONE_DMA_FLAG=1
146CONFIG_BOUNCE=y 156CONFIG_BOUNCE=y
147CONFIG_VIRT_TO_BUS=y 157CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y 158CONFIG_UNEVICTABLE_LRU=y
159CONFIG_HAVE_MLOCK=y
160CONFIG_HAVE_MLOCKED_PAGE_BIT=y
149 161
150# 162#
151# General setup 163# General setup
@@ -255,6 +267,7 @@ CONFIG_NETFILTER_XTABLES=m
255CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 267CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
256CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 268CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
257CONFIG_NETFILTER_XT_TARGET_DSCP=m 269CONFIG_NETFILTER_XT_TARGET_DSCP=m
270CONFIG_NETFILTER_XT_TARGET_HL=m
258CONFIG_NETFILTER_XT_TARGET_MARK=m 271CONFIG_NETFILTER_XT_TARGET_MARK=m
259CONFIG_NETFILTER_XT_TARGET_NFLOG=m 272CONFIG_NETFILTER_XT_TARGET_NFLOG=m
260CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 273CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -263,6 +276,7 @@ CONFIG_NETFILTER_XT_TARGET_RATEEST=m
263CONFIG_NETFILTER_XT_TARGET_TRACE=m 276CONFIG_NETFILTER_XT_TARGET_TRACE=m
264CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 277CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
265CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 278CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
279CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
266CONFIG_NETFILTER_XT_MATCH_COMMENT=m 280CONFIG_NETFILTER_XT_MATCH_COMMENT=m
267CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 281CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
268CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 282CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -273,6 +287,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
273CONFIG_NETFILTER_XT_MATCH_ESP=m 287CONFIG_NETFILTER_XT_MATCH_ESP=m
274CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 288CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
275CONFIG_NETFILTER_XT_MATCH_HELPER=m 289CONFIG_NETFILTER_XT_MATCH_HELPER=m
290CONFIG_NETFILTER_XT_MATCH_HL=m
276CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 291CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
277CONFIG_NETFILTER_XT_MATCH_LENGTH=m 292CONFIG_NETFILTER_XT_MATCH_LENGTH=m
278CONFIG_NETFILTER_XT_MATCH_LIMIT=m 293CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -351,25 +366,20 @@ CONFIG_IP6_NF_MATCH_HL=m
351CONFIG_IP6_NF_MATCH_IPV6HEADER=m 366CONFIG_IP6_NF_MATCH_IPV6HEADER=m
352CONFIG_IP6_NF_MATCH_MH=m 367CONFIG_IP6_NF_MATCH_MH=m
353CONFIG_IP6_NF_MATCH_RT=m 368CONFIG_IP6_NF_MATCH_RT=m
369CONFIG_IP6_NF_TARGET_HL=m
354CONFIG_IP6_NF_TARGET_LOG=m 370CONFIG_IP6_NF_TARGET_LOG=m
355CONFIG_IP6_NF_FILTER=m 371CONFIG_IP6_NF_FILTER=m
356CONFIG_IP6_NF_TARGET_REJECT=m 372CONFIG_IP6_NF_TARGET_REJECT=m
357CONFIG_IP6_NF_MANGLE=m 373CONFIG_IP6_NF_MANGLE=m
358CONFIG_IP6_NF_TARGET_HL=m
359CONFIG_IP6_NF_RAW=m 374CONFIG_IP6_NF_RAW=m
360CONFIG_IP_DCCP=m 375CONFIG_IP_DCCP=m
361CONFIG_INET_DCCP_DIAG=m 376CONFIG_INET_DCCP_DIAG=m
362CONFIG_IP_DCCP_ACKVEC=y
363 377
364# 378#
365# DCCP CCIDs Configuration (EXPERIMENTAL) 379# DCCP CCIDs Configuration (EXPERIMENTAL)
366# 380#
367CONFIG_IP_DCCP_CCID2=m
368# CONFIG_IP_DCCP_CCID2_DEBUG is not set 381# CONFIG_IP_DCCP_CCID2_DEBUG is not set
369CONFIG_IP_DCCP_CCID3=m 382# CONFIG_IP_DCCP_CCID3 is not set
370# CONFIG_IP_DCCP_CCID3_DEBUG is not set
371CONFIG_IP_DCCP_CCID3_RTO=100
372CONFIG_IP_DCCP_TFRC_LIB=m
373CONFIG_IP_SCTP=m 383CONFIG_IP_SCTP=m
374# CONFIG_SCTP_DBG_MSG is not set 384# CONFIG_SCTP_DBG_MSG is not set
375# CONFIG_SCTP_DBG_OBJCNT is not set 385# CONFIG_SCTP_DBG_OBJCNT is not set
@@ -391,8 +401,10 @@ CONFIG_ATALK=m
391# CONFIG_LAPB is not set 401# CONFIG_LAPB is not set
392# CONFIG_ECONET is not set 402# CONFIG_ECONET is not set
393# CONFIG_WAN_ROUTER is not set 403# CONFIG_WAN_ROUTER is not set
404# CONFIG_PHONET is not set
394# CONFIG_NET_SCHED is not set 405# CONFIG_NET_SCHED is not set
395CONFIG_NET_CLS_ROUTE=y 406CONFIG_NET_CLS_ROUTE=y
407# CONFIG_DCB is not set
396 408
397# 409#
398# Network testing 410# Network testing
@@ -403,8 +415,8 @@ CONFIG_NET_CLS_ROUTE=y
403# CONFIG_IRDA is not set 415# CONFIG_IRDA is not set
404# CONFIG_BT is not set 416# CONFIG_BT is not set
405# CONFIG_AF_RXRPC is not set 417# CONFIG_AF_RXRPC is not set
406# CONFIG_PHONET is not set
407# CONFIG_WIRELESS is not set 418# CONFIG_WIRELESS is not set
419# CONFIG_WIMAX is not set
408# CONFIG_RFKILL is not set 420# CONFIG_RFKILL is not set
409# CONFIG_NET_9P is not set 421# CONFIG_NET_9P is not set
410 422
@@ -440,9 +452,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
440CONFIG_ATA_OVER_ETH=m 452CONFIG_ATA_OVER_ETH=m
441# CONFIG_BLK_DEV_HD is not set 453# CONFIG_BLK_DEV_HD is not set
442CONFIG_MISC_DEVICES=y 454CONFIG_MISC_DEVICES=y
443# CONFIG_EEPROM_93CX6 is not set
444# CONFIG_ENCLOSURE_SERVICES is not set 455# CONFIG_ENCLOSURE_SERVICES is not set
445# CONFIG_C2PORT is not set 456# CONFIG_C2PORT is not set
457
458#
459# EEPROM support
460#
461# CONFIG_EEPROM_93CX6 is not set
446CONFIG_HAVE_IDE=y 462CONFIG_HAVE_IDE=y
447# CONFIG_IDE is not set 463# CONFIG_IDE is not set
448 464
@@ -490,9 +506,12 @@ CONFIG_SCSI_SRP_ATTRS=m
490CONFIG_SCSI_SRP_TGT_ATTRS=y 506CONFIG_SCSI_SRP_TGT_ATTRS=y
491CONFIG_SCSI_LOWLEVEL=y 507CONFIG_SCSI_LOWLEVEL=y
492CONFIG_ISCSI_TCP=m 508CONFIG_ISCSI_TCP=m
509# CONFIG_LIBFC is not set
510# CONFIG_LIBFCOE is not set
493# CONFIG_SCSI_DEBUG is not set 511# CONFIG_SCSI_DEBUG is not set
494CONFIG_SUN3X_ESP=y 512CONFIG_SUN3X_ESP=y
495# CONFIG_SCSI_DH is not set 513# CONFIG_SCSI_DH is not set
514# CONFIG_SCSI_OSD_INITIATOR is not set
496CONFIG_MD=y 515CONFIG_MD=y
497CONFIG_BLK_DEV_MD=m 516CONFIG_BLK_DEV_MD=m
498CONFIG_MD_LINEAR=m 517CONFIG_MD_LINEAR=m
@@ -500,7 +519,7 @@ CONFIG_MD_RAID0=m
500CONFIG_MD_RAID1=m 519CONFIG_MD_RAID1=m
501# CONFIG_MD_RAID10 is not set 520# CONFIG_MD_RAID10 is not set
502CONFIG_MD_RAID456=m 521CONFIG_MD_RAID456=m
503CONFIG_MD_RAID5_RESHAPE=y 522CONFIG_MD_RAID6_PQ=m
504# CONFIG_MD_MULTIPATH is not set 523# CONFIG_MD_MULTIPATH is not set
505# CONFIG_MD_FAULTY is not set 524# CONFIG_MD_FAULTY is not set
506CONFIG_BLK_DEV_DM=m 525CONFIG_BLK_DEV_DM=m
@@ -513,6 +532,7 @@ CONFIG_DM_MULTIPATH=m
513# CONFIG_DM_DELAY is not set 532# CONFIG_DM_DELAY is not set
514CONFIG_DM_UEVENT=y 533CONFIG_DM_UEVENT=y
515CONFIG_NETDEVICES=y 534CONFIG_NETDEVICES=y
535CONFIG_COMPAT_NET_DEV_OPS=y
516CONFIG_DUMMY=m 536CONFIG_DUMMY=m
517# CONFIG_BONDING is not set 537# CONFIG_BONDING is not set
518CONFIG_MACVLAN=m 538CONFIG_MACVLAN=m
@@ -523,6 +543,8 @@ CONFIG_VETH=m
523CONFIG_NET_ETHERNET=y 543CONFIG_NET_ETHERNET=y
524# CONFIG_MII is not set 544# CONFIG_MII is not set
525CONFIG_SUN3LANCE=y 545CONFIG_SUN3LANCE=y
546# CONFIG_ETHOC is not set
547# CONFIG_DNET is not set
526# CONFIG_IBM_NEW_EMAC_ZMII is not set 548# CONFIG_IBM_NEW_EMAC_ZMII is not set
527# CONFIG_IBM_NEW_EMAC_RGMII is not set 549# CONFIG_IBM_NEW_EMAC_RGMII is not set
528# CONFIG_IBM_NEW_EMAC_TAH is not set 550# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -539,7 +561,10 @@ CONFIG_SUN3LANCE=y
539# 561#
540# CONFIG_WLAN_PRE80211 is not set 562# CONFIG_WLAN_PRE80211 is not set
541# CONFIG_WLAN_80211 is not set 563# CONFIG_WLAN_80211 is not set
542# CONFIG_IWLWIFI_LEDS is not set 564
565#
566# Enable WiMAX (Networking options) to see the WiMAX drivers
567#
543# CONFIG_WAN is not set 568# CONFIG_WAN is not set
544CONFIG_PPP=m 569CONFIG_PPP=m
545# CONFIG_PPP_MULTILINK is not set 570# CONFIG_PPP_MULTILINK is not set
@@ -597,7 +622,6 @@ CONFIG_MOUSE_PS2=m
597CONFIG_MOUSE_PS2_ALPS=y 622CONFIG_MOUSE_PS2_ALPS=y
598CONFIG_MOUSE_PS2_LOGIPS2PP=y 623CONFIG_MOUSE_PS2_LOGIPS2PP=y
599CONFIG_MOUSE_PS2_SYNAPTICS=y 624CONFIG_MOUSE_PS2_SYNAPTICS=y
600CONFIG_MOUSE_PS2_LIFEBOOK=y
601CONFIG_MOUSE_PS2_TRACKPOINT=y 625CONFIG_MOUSE_PS2_TRACKPOINT=y
602# CONFIG_MOUSE_PS2_ELANTECH is not set 626# CONFIG_MOUSE_PS2_ELANTECH is not set
603# CONFIG_MOUSE_PS2_TOUCHKIT is not set 627# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -637,6 +661,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
637# Non-8250 serial port support 661# Non-8250 serial port support
638# 662#
639CONFIG_UNIX98_PTYS=y 663CONFIG_UNIX98_PTYS=y
664# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
640CONFIG_LEGACY_PTYS=y 665CONFIG_LEGACY_PTYS=y
641CONFIG_LEGACY_PTY_COUNT=256 666CONFIG_LEGACY_PTY_COUNT=256
642# CONFIG_IPMI_HANDLER is not set 667# CONFIG_IPMI_HANDLER is not set
@@ -718,6 +743,7 @@ CONFIG_FB=y
718# CONFIG_FB_VIRTUAL is not set 743# CONFIG_FB_VIRTUAL is not set
719# CONFIG_FB_METRONOME is not set 744# CONFIG_FB_METRONOME is not set
720# CONFIG_FB_MB862XX is not set 745# CONFIG_FB_MB862XX is not set
746# CONFIG_FB_BROADSHEET is not set
721# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 747# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
722 748
723# 749#
@@ -749,7 +775,6 @@ CONFIG_HIDRAW=y
749# 775#
750# Special HID drivers 776# Special HID drivers
751# 777#
752CONFIG_HID_COMPAT=y
753# CONFIG_USB_SUPPORT is not set 778# CONFIG_USB_SUPPORT is not set
754# CONFIG_MMC is not set 779# CONFIG_MMC is not set
755# CONFIG_MEMSTICK is not set 780# CONFIG_MEMSTICK is not set
@@ -757,9 +782,9 @@ CONFIG_HID_COMPAT=y
757# CONFIG_ACCESSIBILITY is not set 782# CONFIG_ACCESSIBILITY is not set
758# CONFIG_RTC_CLASS is not set 783# CONFIG_RTC_CLASS is not set
759# CONFIG_DMADEVICES is not set 784# CONFIG_DMADEVICES is not set
785# CONFIG_AUXDISPLAY is not set
760# CONFIG_UIO is not set 786# CONFIG_UIO is not set
761# CONFIG_STAGING is not set 787# CONFIG_STAGING is not set
762CONFIG_STAGING_EXCLUDE_BUILD=y
763 788
764# 789#
765# Character devices 790# Character devices
@@ -772,6 +797,7 @@ CONFIG_EXT2_FS=y
772# CONFIG_EXT2_FS_XATTR is not set 797# CONFIG_EXT2_FS_XATTR is not set
773# CONFIG_EXT2_FS_XIP is not set 798# CONFIG_EXT2_FS_XIP is not set
774CONFIG_EXT3_FS=y 799CONFIG_EXT3_FS=y
800# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
775# CONFIG_EXT3_FS_XATTR is not set 801# CONFIG_EXT3_FS_XATTR is not set
776# CONFIG_EXT4_FS is not set 802# CONFIG_EXT4_FS is not set
777CONFIG_JBD=y 803CONFIG_JBD=y
@@ -798,13 +824,15 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
798# CONFIG_OCFS2_FS_STATS is not set 824# CONFIG_OCFS2_FS_STATS is not set
799# CONFIG_OCFS2_DEBUG_MASKLOG is not set 825# CONFIG_OCFS2_DEBUG_MASKLOG is not set
800# CONFIG_OCFS2_DEBUG_FS is not set 826# CONFIG_OCFS2_DEBUG_FS is not set
801# CONFIG_OCFS2_COMPAT_JBD is not set 827# CONFIG_OCFS2_FS_POSIX_ACL is not set
828# CONFIG_BTRFS_FS is not set
802CONFIG_DNOTIFY=y 829CONFIG_DNOTIFY=y
803CONFIG_INOTIFY=y 830CONFIG_INOTIFY=y
804CONFIG_INOTIFY_USER=y 831CONFIG_INOTIFY_USER=y
805CONFIG_QUOTA=y 832CONFIG_QUOTA=y
806CONFIG_QUOTA_NETLINK_INTERFACE=y 833CONFIG_QUOTA_NETLINK_INTERFACE=y
807# CONFIG_PRINT_QUOTA_WARNING is not set 834# CONFIG_PRINT_QUOTA_WARNING is not set
835CONFIG_QUOTA_TREE=m
808# CONFIG_QFMT_V1 is not set 836# CONFIG_QFMT_V1 is not set
809# CONFIG_QFMT_V2 is not set 837# CONFIG_QFMT_V2 is not set
810CONFIG_QUOTACTL=y 838CONFIG_QUOTACTL=y
@@ -813,6 +841,11 @@ CONFIG_AUTOFS4_FS=m
813CONFIG_FUSE_FS=m 841CONFIG_FUSE_FS=m
814 842
815# 843#
844# Caches
845#
846# CONFIG_FSCACHE is not set
847
848#
816# CD-ROM/DVD Filesystems 849# CD-ROM/DVD Filesystems
817# 850#
818CONFIG_ISO9660_FS=y 851CONFIG_ISO9660_FS=y
@@ -843,10 +876,7 @@ CONFIG_TMPFS=y
843# CONFIG_TMPFS_POSIX_ACL is not set 876# CONFIG_TMPFS_POSIX_ACL is not set
844# CONFIG_HUGETLB_PAGE is not set 877# CONFIG_HUGETLB_PAGE is not set
845CONFIG_CONFIGFS_FS=m 878CONFIG_CONFIGFS_FS=m
846 879CONFIG_MISC_FILESYSTEMS=y
847#
848# Miscellaneous filesystems
849#
850# CONFIG_ADFS_FS is not set 880# CONFIG_ADFS_FS is not set
851CONFIG_AFFS_FS=m 881CONFIG_AFFS_FS=m
852CONFIG_HFS_FS=m 882CONFIG_HFS_FS=m
@@ -855,6 +885,9 @@ CONFIG_HFSPLUS_FS=m
855# CONFIG_BFS_FS is not set 885# CONFIG_BFS_FS is not set
856# CONFIG_EFS_FS is not set 886# CONFIG_EFS_FS is not set
857CONFIG_CRAMFS=m 887CONFIG_CRAMFS=m
888CONFIG_SQUASHFS=m
889# CONFIG_SQUASHFS_EMBEDDED is not set
890CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
858# CONFIG_VXFS_FS is not set 891# CONFIG_VXFS_FS is not set
859CONFIG_MINIX_FS=y 892CONFIG_MINIX_FS=y
860# CONFIG_OMFS_FS is not set 893# CONFIG_OMFS_FS is not set
@@ -865,6 +898,7 @@ CONFIG_SYSV_FS=m
865CONFIG_UFS_FS=m 898CONFIG_UFS_FS=m
866# CONFIG_UFS_FS_WRITE is not set 899# CONFIG_UFS_FS_WRITE is not set
867# CONFIG_UFS_DEBUG is not set 900# CONFIG_UFS_DEBUG is not set
901# CONFIG_NILFS2_FS is not set
868CONFIG_NETWORK_FILESYSTEMS=y 902CONFIG_NETWORK_FILESYSTEMS=y
869CONFIG_NFS_FS=y 903CONFIG_NFS_FS=y
870CONFIG_NFS_V3=y 904CONFIG_NFS_V3=y
@@ -881,7 +915,6 @@ CONFIG_EXPORTFS=m
881CONFIG_NFS_COMMON=y 915CONFIG_NFS_COMMON=y
882CONFIG_SUNRPC=y 916CONFIG_SUNRPC=y
883CONFIG_SUNRPC_GSS=y 917CONFIG_SUNRPC_GSS=y
884# CONFIG_SUNRPC_REGISTER_V4 is not set
885CONFIG_RPCSEC_GSS_KRB5=y 918CONFIG_RPCSEC_GSS_KRB5=y
886# CONFIG_RPCSEC_GSS_SPKM3 is not set 919# CONFIG_RPCSEC_GSS_SPKM3 is not set
887CONFIG_SMB_FS=m 920CONFIG_SMB_FS=m
@@ -957,11 +990,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
957CONFIG_DEBUG_MEMORY_INIT=y 990CONFIG_DEBUG_MEMORY_INIT=y
958# CONFIG_RCU_CPU_STALL_DETECTOR is not set 991# CONFIG_RCU_CPU_STALL_DETECTOR is not set
959CONFIG_SYSCTL_SYSCALL_CHECK=y 992CONFIG_SYSCTL_SYSCALL_CHECK=y
960
961#
962# Tracers
963#
964# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
965# CONFIG_SAMPLES is not set 993# CONFIG_SAMPLES is not set
966 994
967# 995#
@@ -982,13 +1010,21 @@ CONFIG_CRYPTO=y
982# 1010#
983# CONFIG_CRYPTO_FIPS is not set 1011# CONFIG_CRYPTO_FIPS is not set
984CONFIG_CRYPTO_ALGAPI=y 1012CONFIG_CRYPTO_ALGAPI=y
985CONFIG_CRYPTO_AEAD=y 1013CONFIG_CRYPTO_ALGAPI2=y
1014CONFIG_CRYPTO_AEAD=m
1015CONFIG_CRYPTO_AEAD2=y
986CONFIG_CRYPTO_BLKCIPHER=y 1016CONFIG_CRYPTO_BLKCIPHER=y
1017CONFIG_CRYPTO_BLKCIPHER2=y
987CONFIG_CRYPTO_HASH=y 1018CONFIG_CRYPTO_HASH=y
988CONFIG_CRYPTO_RNG=y 1019CONFIG_CRYPTO_HASH2=y
1020CONFIG_CRYPTO_RNG=m
1021CONFIG_CRYPTO_RNG2=y
1022CONFIG_CRYPTO_PCOMP=y
989CONFIG_CRYPTO_MANAGER=y 1023CONFIG_CRYPTO_MANAGER=y
1024CONFIG_CRYPTO_MANAGER2=y
990CONFIG_CRYPTO_GF128MUL=m 1025CONFIG_CRYPTO_GF128MUL=m
991CONFIG_CRYPTO_NULL=m 1026CONFIG_CRYPTO_NULL=m
1027CONFIG_CRYPTO_WORKQUEUE=y
992CONFIG_CRYPTO_CRYPTD=m 1028CONFIG_CRYPTO_CRYPTD=m
993CONFIG_CRYPTO_AUTHENC=m 1029CONFIG_CRYPTO_AUTHENC=m
994CONFIG_CRYPTO_TEST=m 1030CONFIG_CRYPTO_TEST=m
@@ -1058,6 +1094,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1058# Compression 1094# Compression
1059# 1095#
1060CONFIG_CRYPTO_DEFLATE=m 1096CONFIG_CRYPTO_DEFLATE=m
1097CONFIG_CRYPTO_ZLIB=m
1061CONFIG_CRYPTO_LZO=m 1098CONFIG_CRYPTO_LZO=m
1062 1099
1063# 1100#
@@ -1065,11 +1102,13 @@ CONFIG_CRYPTO_LZO=m
1065# 1102#
1066# CONFIG_CRYPTO_ANSI_CPRNG is not set 1103# CONFIG_CRYPTO_ANSI_CPRNG is not set
1067# CONFIG_CRYPTO_HW is not set 1104# CONFIG_CRYPTO_HW is not set
1105# CONFIG_BINARY_PRINTF is not set
1068 1106
1069# 1107#
1070# Library routines 1108# Library routines
1071# 1109#
1072CONFIG_BITREVERSE=y 1110CONFIG_BITREVERSE=y
1111CONFIG_GENERIC_FIND_LAST_BIT=y
1073CONFIG_CRC_CCITT=m 1112CONFIG_CRC_CCITT=m
1074CONFIG_CRC16=m 1113CONFIG_CRC16=m
1075CONFIG_CRC_T10DIF=y 1114CONFIG_CRC_T10DIF=y
@@ -1081,10 +1120,13 @@ CONFIG_ZLIB_INFLATE=y
1081CONFIG_ZLIB_DEFLATE=m 1120CONFIG_ZLIB_DEFLATE=m
1082CONFIG_LZO_COMPRESS=m 1121CONFIG_LZO_COMPRESS=m
1083CONFIG_LZO_DECOMPRESS=m 1122CONFIG_LZO_DECOMPRESS=m
1123CONFIG_DECOMPRESS_GZIP=y
1124CONFIG_DECOMPRESS_BZIP2=y
1125CONFIG_DECOMPRESS_LZMA=y
1084CONFIG_TEXTSEARCH=y 1126CONFIG_TEXTSEARCH=y
1085CONFIG_TEXTSEARCH_KMP=m 1127CONFIG_TEXTSEARCH_KMP=m
1086CONFIG_TEXTSEARCH_BM=m 1128CONFIG_TEXTSEARCH_BM=m
1087CONFIG_TEXTSEARCH_FSM=m 1129CONFIG_TEXTSEARCH_FSM=m
1088CONFIG_PLIST=y
1089CONFIG_HAS_IOMEM=y 1130CONFIG_HAS_IOMEM=y
1090CONFIG_HAS_DMA=y 1131CONFIG_HAS_DMA=y
1132CONFIG_NLATTR=y
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h
index 3c19027331fa..aa29a8640f74 100644
--- a/arch/m68k/include/asm/unistd.h
+++ b/arch/m68k/include/asm/unistd.h
@@ -332,10 +332,12 @@
332#define __NR_dup3 326 332#define __NR_dup3 326
333#define __NR_pipe2 327 333#define __NR_pipe2 327
334#define __NR_inotify_init1 328 334#define __NR_inotify_init1 328
335#define __NR_preadv 329
336#define __NR_pwritev 330
335 337
336#ifdef __KERNEL__ 338#ifdef __KERNEL__
337 339
338#define NR_syscalls 329 340#define NR_syscalls 331
339 341
340#define __ARCH_WANT_IPC_PARSE_VERSION 342#define __ARCH_WANT_IPC_PARSE_VERSION
341#define __ARCH_WANT_OLD_READDIR 343#define __ARCH_WANT_OLD_READDIR
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
index 5c332f2b9b83..8744f60c07a9 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -753,4 +753,6 @@ sys_call_table:
753 .long sys_dup3 753 .long sys_dup3
754 .long sys_pipe2 754 .long sys_pipe2
755 .long sys_inotify_init1 755 .long sys_inotify_init1
756 .long sys_preadv
757 .long sys_pwritev /* 330 */
756 758
diff --git a/arch/m68k/kernel/head.S b/arch/m68k/kernel/head.S
index f513f530de91..86edb5fbcfc3 100644
--- a/arch/m68k/kernel/head.S
+++ b/arch/m68k/kernel/head.S
@@ -577,7 +577,7 @@ func_define putn,1
577#endif 577#endif
578.endm 578.endm
579 579
580.section ".text.head","ax" 580__HEAD
581ENTRY(_stext) 581ENTRY(_stext)
582/* 582/*
583 * Version numbers of the bootinfo interface 583 * Version numbers of the bootinfo interface
diff --git a/arch/m68k/kernel/sun3-head.S b/arch/m68k/kernel/sun3-head.S
index aad01592dbbc..9e5c3e57c598 100644
--- a/arch/m68k/kernel/sun3-head.S
+++ b/arch/m68k/kernel/sun3-head.S
@@ -29,7 +29,7 @@ kernel_pmd_table: .skip 0x2000
29.globl kernel_pg_dir 29.globl kernel_pg_dir
30.equ kernel_pg_dir,kernel_pmd_table 30.equ kernel_pg_dir,kernel_pmd_table
31 31
32 .section .text.head 32 __HEAD
33ENTRY(_stext) 33ENTRY(_stext)
34ENTRY(_start) 34ENTRY(_start)
35 35
diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds
index f846d4e3e5e1..01d212bb05a6 100644
--- a/arch/m68k/kernel/vmlinux-std.lds
+++ b/arch/m68k/kernel/vmlinux-std.lds
@@ -12,7 +12,7 @@ SECTIONS
12 . = 0x1000; 12 . = 0x1000;
13 _text = .; /* Text and read-only data */ 13 _text = .; /* Text and read-only data */
14 .text : { 14 .text : {
15 *(.text.head) 15 HEAD_TEXT
16 TEXT_TEXT 16 TEXT_TEXT
17 SCHED_TEXT 17 SCHED_TEXT
18 LOCK_TEXT 18 LOCK_TEXT
diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds
index d9368c0709ba..c192f773db96 100644
--- a/arch/m68k/kernel/vmlinux-sun3.lds
+++ b/arch/m68k/kernel/vmlinux-sun3.lds
@@ -12,7 +12,7 @@ SECTIONS
12 . = 0xE002000; 12 . = 0xE002000;
13 _text = .; /* Text and read-only data */ 13 _text = .; /* Text and read-only data */
14 .text : { 14 .text : {
15 *(.text.head) 15 HEAD_TEXT
16 TEXT_TEXT 16 TEXT_TEXT
17 SCHED_TEXT 17 SCHED_TEXT
18 LOCK_TEXT 18 LOCK_TEXT
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
index 4beb59dfc6ec..534376299a99 100644
--- a/arch/m68knommu/Kconfig
+++ b/arch/m68knommu/Kconfig
@@ -16,6 +16,7 @@ config MMU
16 16
17config NO_DMA 17config NO_DMA
18 bool 18 bool
19 depends on !COLDFIRE
19 default y 20 default y
20 21
21config FPU 22config FPU
diff --git a/arch/m68knommu/configs/m5208evb_defconfig b/arch/m68knommu/configs/m5208evb_defconfig
index 6fae33a05e2a..854a4f333b2f 100644
--- a/arch/m68knommu/configs/m5208evb_defconfig
+++ b/arch/m68knommu/configs/m5208evb_defconfig
@@ -1,6 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc1 3# Linux kernel version: 2.6.30-rc2
4# 4#
5CONFIG_M68K=y 5CONFIG_M68K=y
6# CONFIG_MMU is not set 6# CONFIG_MMU is not set
@@ -15,9 +15,10 @@ CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_HARDIRQS=y 15CONFIG_GENERIC_HARDIRQS=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CMOS_UPDATE=y
18CONFIG_TIME_LOW_RES=y 19CONFIG_TIME_LOW_RES=y
20CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_NO_IOPORT=y 21CONFIG_NO_IOPORT=y
20CONFIG_ARCH_SUPPORTS_AOUT=y
21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
22 23
23# 24#
@@ -33,53 +34,55 @@ CONFIG_LOCALVERSION_AUTO=y
33# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set
40# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
41# CONFIG_NAMESPACES is not set 51# CONFIG_NAMESPACES is not set
42# CONFIG_BLK_DEV_INITRD is not set 52# CONFIG_BLK_DEV_INITRD is not set
43# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 53# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
44CONFIG_SYSCTL=y 54CONFIG_SYSCTL=y
45CONFIG_EMBEDDED=y 55CONFIG_EMBEDDED=y
46# CONFIG_UID16 is not set 56CONFIG_UID16=y
47# CONFIG_SYSCTL_SYSCALL is not set 57CONFIG_SYSCTL_SYSCALL=y
48# CONFIG_KALLSYMS is not set 58# CONFIG_KALLSYMS is not set
59# CONFIG_STRIP_ASM_SYMS is not set
49# CONFIG_HOTPLUG is not set 60# CONFIG_HOTPLUG is not set
50CONFIG_PRINTK=y 61CONFIG_PRINTK=y
51CONFIG_BUG=y 62CONFIG_BUG=y
52CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
53# CONFIG_COMPAT_BRK is not set
54CONFIG_BASE_FULL=y 64CONFIG_BASE_FULL=y
55# CONFIG_FUTEX is not set 65# CONFIG_FUTEX is not set
56# CONFIG_EPOLL is not set 66# CONFIG_EPOLL is not set
57# CONFIG_SIGNALFD is not set 67# CONFIG_SIGNALFD is not set
58# CONFIG_TIMERFD is not set 68# CONFIG_TIMERFD is not set
59# CONFIG_EVENTFD is not set 69# CONFIG_EVENTFD is not set
70# CONFIG_AIO is not set
60# CONFIG_VM_EVENT_COUNTERS is not set 71# CONFIG_VM_EVENT_COUNTERS is not set
61CONFIG_SLAB=y 72# CONFIG_COMPAT_BRK is not set
62# CONFIG_SLUB is not set 73# CONFIG_SLAB is not set
74CONFIG_SLUB=y
63# CONFIG_SLOB is not set 75# CONFIG_SLOB is not set
64# CONFIG_PROFILING is not set 76# CONFIG_PROFILING is not set
65# CONFIG_MARKERS is not set 77# CONFIG_MARKERS is not set
66# CONFIG_HAVE_OPROFILE is not set 78# CONFIG_SLOW_WORK is not set
67# CONFIG_HAVE_KPROBES is not set 79# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
68# CONFIG_HAVE_KRETPROBES is not set
69# CONFIG_HAVE_DMA_ATTRS is not set
70CONFIG_SLABINFO=y
71CONFIG_TINY_SHMEM=y
72CONFIG_BASE_SMALL=0 80CONFIG_BASE_SMALL=0
73CONFIG_MODULES=y 81# CONFIG_MODULES is not set
74CONFIG_MODULE_UNLOAD=y
75# CONFIG_MODULE_FORCE_UNLOAD is not set
76# CONFIG_MODVERSIONS is not set
77# CONFIG_MODULE_SRCVERSION_ALL is not set
78# CONFIG_KMOD is not set
79CONFIG_BLOCK=y 82CONFIG_BLOCK=y
80# CONFIG_LBD is not set 83# CONFIG_LBD is not set
81# CONFIG_LSF is not set
82# CONFIG_BLK_DEV_BSG is not set 84# CONFIG_BLK_DEV_BSG is not set
85# CONFIG_BLK_DEV_INTEGRITY is not set
83 86
84# 87#
85# IO Schedulers 88# IO Schedulers
@@ -93,7 +96,7 @@ CONFIG_IOSCHED_NOOP=y
93# CONFIG_DEFAULT_CFQ is not set 96# CONFIG_DEFAULT_CFQ is not set
94CONFIG_DEFAULT_NOOP=y 97CONFIG_DEFAULT_NOOP=y
95CONFIG_DEFAULT_IOSCHED="noop" 98CONFIG_DEFAULT_IOSCHED="noop"
96CONFIG_CLASSIC_RCU=y 99# CONFIG_FREEZER is not set
97 100
98# 101#
99# Processor type and features 102# Processor type and features
@@ -145,44 +148,39 @@ CONFIG_RAM16BIT=y
145# CONFIG_ROM is not set 148# CONFIG_ROM is not set
146CONFIG_RAMKERNEL=y 149CONFIG_RAMKERNEL=y
147# CONFIG_ROMKERNEL is not set 150# CONFIG_ROMKERNEL is not set
151CONFIG_PREEMPT_NONE=y
152# CONFIG_PREEMPT_VOLUNTARY is not set
153# CONFIG_PREEMPT is not set
154# CONFIG_NO_HZ is not set
155# CONFIG_HIGH_RES_TIMERS is not set
156CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
148CONFIG_SELECT_MEMORY_MODEL=y 157CONFIG_SELECT_MEMORY_MODEL=y
149CONFIG_FLATMEM_MANUAL=y 158CONFIG_FLATMEM_MANUAL=y
150# CONFIG_DISCONTIGMEM_MANUAL is not set 159# CONFIG_DISCONTIGMEM_MANUAL is not set
151# CONFIG_SPARSEMEM_MANUAL is not set 160# CONFIG_SPARSEMEM_MANUAL is not set
152CONFIG_FLATMEM=y 161CONFIG_FLATMEM=y
153CONFIG_FLAT_NODE_MEM_MAP=y 162CONFIG_FLAT_NODE_MEM_MAP=y
154# CONFIG_SPARSEMEM_STATIC is not set
155# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
156CONFIG_PAGEFLAGS_EXTENDED=y 163CONFIG_PAGEFLAGS_EXTENDED=y
157CONFIG_SPLIT_PTLOCK_CPUS=4 164CONFIG_SPLIT_PTLOCK_CPUS=4
158# CONFIG_RESOURCES_64BIT is not set 165# CONFIG_PHYS_ADDR_T_64BIT is not set
159CONFIG_ZONE_DMA_FLAG=1 166CONFIG_ZONE_DMA_FLAG=1
160CONFIG_VIRT_TO_BUS=y 167CONFIG_VIRT_TO_BUS=y
168# CONFIG_UNEVICTABLE_LRU is not set
161CONFIG_ISA_DMA_API=y 169CONFIG_ISA_DMA_API=y
162 170
163# 171#
164# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
165#
166# CONFIG_PCI is not set
167# CONFIG_ARCH_SUPPORTS_MSI is not set
168
169#
170# Executable file formats 172# Executable file formats
171# 173#
172CONFIG_BINFMT_FLAT=y 174CONFIG_BINFMT_FLAT=y
173# CONFIG_BINFMT_ZFLAT is not set 175# CONFIG_BINFMT_ZFLAT is not set
174# CONFIG_BINFMT_SHARED_FLAT is not set 176# CONFIG_BINFMT_SHARED_FLAT is not set
175# CONFIG_BINFMT_AOUT is not set 177# CONFIG_HAVE_AOUT is not set
176# CONFIG_BINFMT_MISC is not set 178# CONFIG_BINFMT_MISC is not set
177 179
178# 180#
179# Power management options 181# Power management options
180# 182#
181# CONFIG_PM is not set 183# CONFIG_PM is not set
182
183#
184# Networking
185#
186CONFIG_NET=y 184CONFIG_NET=y
187 185
188# 186#
@@ -223,6 +221,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
223# CONFIG_TIPC is not set 221# CONFIG_TIPC is not set
224# CONFIG_ATM is not set 222# CONFIG_ATM is not set
225# CONFIG_BRIDGE is not set 223# CONFIG_BRIDGE is not set
224# CONFIG_NET_DSA is not set
226# CONFIG_VLAN_8021Q is not set 225# CONFIG_VLAN_8021Q is not set
227# CONFIG_DECNET is not set 226# CONFIG_DECNET is not set
228# CONFIG_LLC2 is not set 227# CONFIG_LLC2 is not set
@@ -232,7 +231,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
232# CONFIG_LAPB is not set 231# CONFIG_LAPB is not set
233# CONFIG_ECONET is not set 232# CONFIG_ECONET is not set
234# CONFIG_WAN_ROUTER is not set 233# CONFIG_WAN_ROUTER is not set
234# CONFIG_PHONET is not set
235# CONFIG_NET_SCHED is not set 235# CONFIG_NET_SCHED is not set
236# CONFIG_DCB is not set
236 237
237# 238#
238# Network testing 239# Network testing
@@ -243,14 +244,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
243# CONFIG_IRDA is not set 244# CONFIG_IRDA is not set
244# CONFIG_BT is not set 245# CONFIG_BT is not set
245# CONFIG_AF_RXRPC is not set 246# CONFIG_AF_RXRPC is not set
246 247# CONFIG_WIRELESS is not set
247# 248# CONFIG_WIMAX is not set
248# Wireless
249#
250# CONFIG_CFG80211 is not set
251# CONFIG_WIRELESS_EXT is not set
252# CONFIG_MAC80211 is not set
253# CONFIG_IEEE80211 is not set
254# CONFIG_RFKILL is not set 249# CONFIG_RFKILL is not set
255# CONFIG_NET_9P is not set 250# CONFIG_NET_9P is not set
256 251
@@ -289,10 +284,8 @@ CONFIG_MTD_BLOCK=y
289# 284#
290# RAM/ROM/Flash chip drivers 285# RAM/ROM/Flash chip drivers
291# 286#
292CONFIG_MTD_CFI=y 287# CONFIG_MTD_CFI is not set
293# CONFIG_MTD_JEDECPROBE is not set 288# CONFIG_MTD_JEDECPROBE is not set
294CONFIG_MTD_GEN_PROBE=y
295# CONFIG_MTD_CFI_ADV_OPTIONS is not set
296CONFIG_MTD_MAP_BANK_WIDTH_1=y 289CONFIG_MTD_MAP_BANK_WIDTH_1=y
297CONFIG_MTD_MAP_BANK_WIDTH_2=y 290CONFIG_MTD_MAP_BANK_WIDTH_2=y
298CONFIG_MTD_MAP_BANK_WIDTH_4=y 291CONFIG_MTD_MAP_BANK_WIDTH_4=y
@@ -303,10 +296,6 @@ CONFIG_MTD_CFI_I1=y
303CONFIG_MTD_CFI_I2=y 296CONFIG_MTD_CFI_I2=y
304# CONFIG_MTD_CFI_I4 is not set 297# CONFIG_MTD_CFI_I4 is not set
305# CONFIG_MTD_CFI_I8 is not set 298# CONFIG_MTD_CFI_I8 is not set
306# CONFIG_MTD_CFI_INTELEXT is not set
307CONFIG_MTD_CFI_AMDSTD=y
308# CONFIG_MTD_CFI_STAA is not set
309CONFIG_MTD_CFI_UTIL=y
310CONFIG_MTD_RAM=y 299CONFIG_MTD_RAM=y
311# CONFIG_MTD_ROM is not set 300# CONFIG_MTD_ROM is not set
312# CONFIG_MTD_ABSENT is not set 301# CONFIG_MTD_ABSENT is not set
@@ -315,7 +304,6 @@ CONFIG_MTD_RAM=y
315# Mapping drivers for chip access 304# Mapping drivers for chip access
316# 305#
317# CONFIG_MTD_COMPLEX_MAPPINGS is not set 306# CONFIG_MTD_COMPLEX_MAPPINGS is not set
318# CONFIG_MTD_PHYSMAP is not set
319CONFIG_MTD_UCLINUX=y 307CONFIG_MTD_UCLINUX=y
320# CONFIG_MTD_PLATRAM is not set 308# CONFIG_MTD_PLATRAM is not set
321 309
@@ -337,6 +325,11 @@ CONFIG_MTD_UCLINUX=y
337# CONFIG_MTD_ONENAND is not set 325# CONFIG_MTD_ONENAND is not set
338 326
339# 327#
328# LPDDR flash memory drivers
329#
330# CONFIG_MTD_LPDDR is not set
331
332#
340# UBI - Unsorted block images 333# UBI - Unsorted block images
341# 334#
342# CONFIG_MTD_UBI is not set 335# CONFIG_MTD_UBI is not set
@@ -351,6 +344,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
351# CONFIG_BLK_DEV_XIP is not set 344# CONFIG_BLK_DEV_XIP is not set
352# CONFIG_CDROM_PKTCDVD is not set 345# CONFIG_CDROM_PKTCDVD is not set
353# CONFIG_ATA_OVER_ETH is not set 346# CONFIG_ATA_OVER_ETH is not set
347# CONFIG_BLK_DEV_HD is not set
354# CONFIG_MISC_DEVICES is not set 348# CONFIG_MISC_DEVICES is not set
355CONFIG_HAVE_IDE=y 349CONFIG_HAVE_IDE=y
356# CONFIG_IDE is not set 350# CONFIG_IDE is not set
@@ -364,7 +358,7 @@ CONFIG_HAVE_IDE=y
364# CONFIG_SCSI_NETLINK is not set 358# CONFIG_SCSI_NETLINK is not set
365# CONFIG_MD is not set 359# CONFIG_MD is not set
366CONFIG_NETDEVICES=y 360CONFIG_NETDEVICES=y
367# CONFIG_NETDEVICES_MULTIQUEUE is not set 361CONFIG_COMPAT_NET_DEV_OPS=y
368# CONFIG_DUMMY is not set 362# CONFIG_DUMMY is not set
369# CONFIG_BONDING is not set 363# CONFIG_BONDING is not set
370# CONFIG_MACVLAN is not set 364# CONFIG_MACVLAN is not set
@@ -374,10 +368,15 @@ CONFIG_NETDEVICES=y
374# CONFIG_PHYLIB is not set 368# CONFIG_PHYLIB is not set
375CONFIG_NET_ETHERNET=y 369CONFIG_NET_ETHERNET=y
376# CONFIG_MII is not set 370# CONFIG_MII is not set
371# CONFIG_ETHOC is not set
372# CONFIG_DNET is not set
377# CONFIG_IBM_NEW_EMAC_ZMII is not set 373# CONFIG_IBM_NEW_EMAC_ZMII is not set
378# CONFIG_IBM_NEW_EMAC_RGMII is not set 374# CONFIG_IBM_NEW_EMAC_RGMII is not set
379# CONFIG_IBM_NEW_EMAC_TAH is not set 375# CONFIG_IBM_NEW_EMAC_TAH is not set
380# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 376# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
377# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
378# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
379# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
381# CONFIG_B44 is not set 380# CONFIG_B44 is not set
382CONFIG_FEC=y 381CONFIG_FEC=y
383# CONFIG_FEC2 is not set 382# CONFIG_FEC2 is not set
@@ -389,8 +388,10 @@ CONFIG_FEC=y
389# 388#
390# CONFIG_WLAN_PRE80211 is not set 389# CONFIG_WLAN_PRE80211 is not set
391# CONFIG_WLAN_80211 is not set 390# CONFIG_WLAN_80211 is not set
392# CONFIG_IWLWIFI is not set 391
393# CONFIG_IWLWIFI_LEDS is not set 392#
393# Enable WiMAX (Networking options) to see the WiMAX drivers
394#
394# CONFIG_WAN is not set 395# CONFIG_WAN is not set
395# CONFIG_PPP is not set 396# CONFIG_PPP is not set
396# CONFIG_SLIP is not set 397# CONFIG_SLIP is not set
@@ -415,7 +416,7 @@ CONFIG_FEC=y
415# Character devices 416# Character devices
416# 417#
417# CONFIG_VT is not set 418# CONFIG_VT is not set
418# CONFIG_DEVKMEM is not set 419CONFIG_DEVKMEM=y
419# CONFIG_SERIAL_NONSTANDARD is not set 420# CONFIG_SERIAL_NONSTANDARD is not set
420 421
421# 422#
@@ -428,7 +429,6 @@ CONFIG_FEC=y
428# 429#
429CONFIG_SERIAL_CORE=y 430CONFIG_SERIAL_CORE=y
430CONFIG_SERIAL_CORE_CONSOLE=y 431CONFIG_SERIAL_CORE_CONSOLE=y
431# CONFIG_SERIAL_COLDFIRE is not set
432CONFIG_SERIAL_MCF=y 432CONFIG_SERIAL_MCF=y
433CONFIG_SERIAL_MCF_BAUDRATE=115200 433CONFIG_SERIAL_MCF_BAUDRATE=115200
434CONFIG_SERIAL_MCF_CONSOLE=y 434CONFIG_SERIAL_MCF_CONSOLE=y
@@ -447,19 +447,23 @@ CONFIG_LEGACY_PTY_COUNT=256
447# CONFIG_POWER_SUPPLY is not set 447# CONFIG_POWER_SUPPLY is not set
448# CONFIG_HWMON is not set 448# CONFIG_HWMON is not set
449# CONFIG_THERMAL is not set 449# CONFIG_THERMAL is not set
450# CONFIG_THERMAL_HWMON is not set
450# CONFIG_WATCHDOG is not set 451# CONFIG_WATCHDOG is not set
452CONFIG_SSB_POSSIBLE=y
451 453
452# 454#
453# Sonics Silicon Backplane 455# Sonics Silicon Backplane
454# 456#
455CONFIG_SSB_POSSIBLE=y
456# CONFIG_SSB is not set 457# CONFIG_SSB is not set
457 458
458# 459#
459# Multifunction device drivers 460# Multifunction device drivers
460# 461#
462# CONFIG_MFD_CORE is not set
461# CONFIG_MFD_SM501 is not set 463# CONFIG_MFD_SM501 is not set
462# CONFIG_HTC_PASIC3 is not set 464# CONFIG_HTC_PASIC3 is not set
465# CONFIG_MFD_TMIO is not set
466# CONFIG_REGULATOR is not set
463 467
464# 468#
465# Multimedia devices 469# Multimedia devices
@@ -470,11 +474,12 @@ CONFIG_SSB_POSSIBLE=y
470# 474#
471# CONFIG_VIDEO_DEV is not set 475# CONFIG_VIDEO_DEV is not set
472# CONFIG_DVB_CORE is not set 476# CONFIG_DVB_CORE is not set
477# CONFIG_VIDEO_MEDIA is not set
473 478
474# 479#
475# Multimedia drivers 480# Multimedia drivers
476# 481#
477# CONFIG_DAB is not set 482CONFIG_DAB=y
478 483
479# 484#
480# Graphics support 485# Graphics support
@@ -488,10 +493,6 @@ CONFIG_SSB_POSSIBLE=y
488# Display device support 493# Display device support
489# 494#
490# CONFIG_DISPLAY_SUPPORT is not set 495# CONFIG_DISPLAY_SUPPORT is not set
491
492#
493# Sound
494#
495# CONFIG_SOUND is not set 496# CONFIG_SOUND is not set
496# CONFIG_USB_SUPPORT is not set 497# CONFIG_USB_SUPPORT is not set
497# CONFIG_MMC is not set 498# CONFIG_MMC is not set
@@ -499,7 +500,10 @@ CONFIG_SSB_POSSIBLE=y
499# CONFIG_NEW_LEDS is not set 500# CONFIG_NEW_LEDS is not set
500# CONFIG_ACCESSIBILITY is not set 501# CONFIG_ACCESSIBILITY is not set
501# CONFIG_RTC_CLASS is not set 502# CONFIG_RTC_CLASS is not set
503# CONFIG_DMADEVICES is not set
504# CONFIG_AUXDISPLAY is not set
502# CONFIG_UIO is not set 505# CONFIG_UIO is not set
506# CONFIG_STAGING is not set
503 507
504# 508#
505# File systems 509# File systems
@@ -507,11 +511,13 @@ CONFIG_SSB_POSSIBLE=y
507CONFIG_EXT2_FS=y 511CONFIG_EXT2_FS=y
508# CONFIG_EXT2_FS_XATTR is not set 512# CONFIG_EXT2_FS_XATTR is not set
509# CONFIG_EXT3_FS is not set 513# CONFIG_EXT3_FS is not set
510# CONFIG_EXT4DEV_FS is not set 514# CONFIG_EXT4_FS is not set
511# CONFIG_REISERFS_FS is not set 515# CONFIG_REISERFS_FS is not set
512# CONFIG_JFS_FS is not set 516# CONFIG_JFS_FS is not set
513# CONFIG_FS_POSIX_ACL is not set 517# CONFIG_FS_POSIX_ACL is not set
518# CONFIG_FILE_LOCKING is not set
514# CONFIG_XFS_FS is not set 519# CONFIG_XFS_FS is not set
520# CONFIG_BTRFS_FS is not set
515# CONFIG_DNOTIFY is not set 521# CONFIG_DNOTIFY is not set
516# CONFIG_INOTIFY is not set 522# CONFIG_INOTIFY is not set
517# CONFIG_QUOTA is not set 523# CONFIG_QUOTA is not set
@@ -520,6 +526,11 @@ CONFIG_EXT2_FS=y
520# CONFIG_FUSE_FS is not set 526# CONFIG_FUSE_FS is not set
521 527
522# 528#
529# Caches
530#
531# CONFIG_FSCACHE is not set
532
533#
523# CD-ROM/DVD Filesystems 534# CD-ROM/DVD Filesystems
524# 535#
525# CONFIG_ISO9660_FS is not set 536# CONFIG_ISO9660_FS is not set
@@ -540,10 +551,7 @@ CONFIG_PROC_SYSCTL=y
540# CONFIG_SYSFS is not set 551# CONFIG_SYSFS is not set
541# CONFIG_TMPFS is not set 552# CONFIG_TMPFS is not set
542# CONFIG_HUGETLB_PAGE is not set 553# CONFIG_HUGETLB_PAGE is not set
543 554CONFIG_MISC_FILESYSTEMS=y
544#
545# Miscellaneous filesystems
546#
547# CONFIG_ADFS_FS is not set 555# CONFIG_ADFS_FS is not set
548# CONFIG_AFFS_FS is not set 556# CONFIG_AFFS_FS is not set
549# CONFIG_HFS_FS is not set 557# CONFIG_HFS_FS is not set
@@ -553,13 +561,20 @@ CONFIG_PROC_SYSCTL=y
553# CONFIG_EFS_FS is not set 561# CONFIG_EFS_FS is not set
554# CONFIG_JFFS2_FS is not set 562# CONFIG_JFFS2_FS is not set
555# CONFIG_CRAMFS is not set 563# CONFIG_CRAMFS is not set
564# CONFIG_SQUASHFS is not set
556# CONFIG_VXFS_FS is not set 565# CONFIG_VXFS_FS is not set
557# CONFIG_MINIX_FS is not set 566# CONFIG_MINIX_FS is not set
567# CONFIG_OMFS_FS is not set
558# CONFIG_HPFS_FS is not set 568# CONFIG_HPFS_FS is not set
559# CONFIG_QNX4FS_FS is not set 569# CONFIG_QNX4FS_FS is not set
560CONFIG_ROMFS_FS=y 570CONFIG_ROMFS_FS=y
571# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
572CONFIG_ROMFS_BACKED_BY_MTD=y
573# CONFIG_ROMFS_BACKED_BY_BOTH is not set
574CONFIG_ROMFS_ON_MTD=y
561# CONFIG_SYSV_FS is not set 575# CONFIG_SYSV_FS is not set
562# CONFIG_UFS_FS is not set 576# CONFIG_UFS_FS is not set
577# CONFIG_NILFS2_FS is not set
563# CONFIG_NETWORK_FILESYSTEMS is not set 578# CONFIG_NETWORK_FILESYSTEMS is not set
564 579
565# 580#
@@ -581,10 +596,14 @@ CONFIG_FRAME_WARN=1024
581# CONFIG_HEADERS_CHECK is not set 596# CONFIG_HEADERS_CHECK is not set
582# CONFIG_DEBUG_KERNEL is not set 597# CONFIG_DEBUG_KERNEL is not set
583# CONFIG_DEBUG_BUGVERBOSE is not set 598# CONFIG_DEBUG_BUGVERBOSE is not set
599# CONFIG_DEBUG_MEMORY_INIT is not set
600# CONFIG_RCU_CPU_STALL_DETECTOR is not set
601CONFIG_SYSCTL_SYSCALL_CHECK=y
584# CONFIG_SAMPLES is not set 602# CONFIG_SAMPLES is not set
585CONFIG_FULLDEBUG=y 603CONFIG_FULLDEBUG=y
586# CONFIG_HIGHPROFILE is not set 604# CONFIG_HIGHPROFILE is not set
587# CONFIG_BOOTPARAM is not set 605CONFIG_BOOTPARAM=y
606CONFIG_BOOTPARAM_STRING="root=/dev/mtdblock0"
588# CONFIG_NO_KERNEL_MSG is not set 607# CONFIG_NO_KERNEL_MSG is not set
589# CONFIG_BDM_DISABLE is not set 608# CONFIG_BDM_DISABLE is not set
590 609
@@ -592,19 +611,23 @@ CONFIG_FULLDEBUG=y
592# Security options 611# Security options
593# 612#
594# CONFIG_KEYS is not set 613# CONFIG_KEYS is not set
614# CONFIG_SECURITYFS is not set
595# CONFIG_SECURITY_FILE_CAPABILITIES is not set 615# CONFIG_SECURITY_FILE_CAPABILITIES is not set
596# CONFIG_CRYPTO is not set 616# CONFIG_CRYPTO is not set
617# CONFIG_BINARY_PRINTF is not set
597 618
598# 619#
599# Library routines 620# Library routines
600# 621#
601CONFIG_BITREVERSE=y 622CONFIG_BITREVERSE=y
602# CONFIG_GENERIC_FIND_FIRST_BIT is not set 623CONFIG_GENERIC_FIND_LAST_BIT=y
603# CONFIG_CRC_CCITT is not set 624# CONFIG_CRC_CCITT is not set
604# CONFIG_CRC16 is not set 625# CONFIG_CRC16 is not set
626# CONFIG_CRC_T10DIF is not set
605# CONFIG_CRC_ITU_T is not set 627# CONFIG_CRC_ITU_T is not set
606CONFIG_CRC32=y 628CONFIG_CRC32=y
607# CONFIG_CRC7 is not set 629# CONFIG_CRC7 is not set
608# CONFIG_LIBCRC32C is not set 630# CONFIG_LIBCRC32C is not set
609CONFIG_HAS_IOMEM=y 631CONFIG_HAS_IOMEM=y
610CONFIG_HAS_DMA=y 632CONFIG_HAS_DMA=y
633CONFIG_NLATTR=y
diff --git a/arch/m68knommu/configs/m5249evb_defconfig b/arch/m68knommu/configs/m5249evb_defconfig
index cc6458333d67..2efba32e33a0 100644
--- a/arch/m68knommu/configs/m5249evb_defconfig
+++ b/arch/m68knommu/configs/m5249evb_defconfig
@@ -1,6 +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.26-rc1 3# Linux kernel version: 2.6.30-rc2
4# Wed Apr 22 17:32:41 2009
4# 5#
5CONFIG_M68K=y 6CONFIG_M68K=y
6# CONFIG_MMU is not set 7# CONFIG_MMU is not set
@@ -15,9 +16,10 @@ CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_HARDIRQS=y 16CONFIG_GENERIC_HARDIRQS=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 17CONFIG_GENERIC_CALIBRATE_DELAY=y
17CONFIG_GENERIC_TIME=y 18CONFIG_GENERIC_TIME=y
19CONFIG_GENERIC_CMOS_UPDATE=y
18CONFIG_TIME_LOW_RES=y 20CONFIG_TIME_LOW_RES=y
21# CONFIG_GENERIC_CLOCKEVENTS is not set
19CONFIG_NO_IOPORT=y 22CONFIG_NO_IOPORT=y
20CONFIG_ARCH_SUPPORTS_AOUT=y
21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
22 24
23# 25#
@@ -29,11 +31,23 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
29CONFIG_LOCALVERSION="" 31CONFIG_LOCALVERSION=""
30CONFIG_LOCALVERSION_AUTO=y 32CONFIG_LOCALVERSION_AUTO=y
31# CONFIG_SYSVIPC is not set 33# CONFIG_SYSVIPC is not set
34# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 35# CONFIG_BSD_PROCESS_ACCT is not set
36# CONFIG_TASKSTATS is not set
37# CONFIG_AUDIT is not set
38
39#
40# RCU Subsystem
41#
42CONFIG_CLASSIC_RCU=y
43# CONFIG_TREE_RCU is not set
44# CONFIG_PREEMPT_RCU is not set
45# CONFIG_TREE_RCU_TRACE is not set
46# CONFIG_PREEMPT_RCU_TRACE is not set
33# CONFIG_IKCONFIG is not set 47# CONFIG_IKCONFIG is not set
34CONFIG_LOG_BUF_SHIFT=14 48CONFIG_LOG_BUF_SHIFT=14
35# CONFIG_CGROUPS is not set
36# CONFIG_GROUP_SCHED is not set 49# CONFIG_GROUP_SCHED is not set
50# CONFIG_CGROUPS is not set
37# CONFIG_SYSFS_DEPRECATED_V2 is not set 51# CONFIG_SYSFS_DEPRECATED_V2 is not set
38# CONFIG_RELAY is not set 52# CONFIG_RELAY is not set
39# CONFIG_NAMESPACES is not set 53# CONFIG_NAMESPACES is not set
@@ -41,44 +55,37 @@ CONFIG_LOG_BUF_SHIFT=14
41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 55# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
42CONFIG_SYSCTL=y 56CONFIG_SYSCTL=y
43CONFIG_EMBEDDED=y 57CONFIG_EMBEDDED=y
44# CONFIG_UID16 is not set 58CONFIG_UID16=y
45# CONFIG_SYSCTL_SYSCALL is not set 59CONFIG_SYSCTL_SYSCALL=y
46# CONFIG_KALLSYMS is not set 60# CONFIG_KALLSYMS is not set
61# CONFIG_STRIP_ASM_SYMS is not set
47# CONFIG_HOTPLUG is not set 62# CONFIG_HOTPLUG is not set
48CONFIG_PRINTK=y 63CONFIG_PRINTK=y
49CONFIG_BUG=y 64CONFIG_BUG=y
50CONFIG_ELF_CORE=y 65CONFIG_ELF_CORE=y
51# CONFIG_COMPAT_BRK is not set
52CONFIG_BASE_FULL=y 66CONFIG_BASE_FULL=y
53# CONFIG_FUTEX is not set 67# CONFIG_FUTEX is not set
54# CONFIG_EPOLL is not set 68# CONFIG_EPOLL is not set
55# CONFIG_SIGNALFD is not set 69# CONFIG_SIGNALFD is not set
56# CONFIG_TIMERFD is not set 70# CONFIG_TIMERFD is not set
57# CONFIG_EVENTFD is not set 71# CONFIG_EVENTFD is not set
72# CONFIG_AIO is not set
58# CONFIG_VM_EVENT_COUNTERS is not set 73# CONFIG_VM_EVENT_COUNTERS is not set
59CONFIG_SLAB=y 74# CONFIG_SLUB_DEBUG is not set
60# CONFIG_SLUB is not set 75CONFIG_COMPAT_BRK=y
76# CONFIG_SLAB is not set
77CONFIG_SLUB=y
61# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
62# CONFIG_PROFILING is not set 79# CONFIG_PROFILING is not set
63# CONFIG_MARKERS is not set 80# CONFIG_MARKERS is not set
64# CONFIG_HAVE_OPROFILE is not set 81# CONFIG_SLOW_WORK is not set
65# CONFIG_HAVE_KPROBES is not set 82# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
66# CONFIG_HAVE_KRETPROBES is not set
67# CONFIG_HAVE_DMA_ATTRS is not set
68CONFIG_SLABINFO=y
69CONFIG_TINY_SHMEM=y
70CONFIG_BASE_SMALL=0 83CONFIG_BASE_SMALL=0
71CONFIG_MODULES=y 84# CONFIG_MODULES is not set
72CONFIG_MODULE_UNLOAD=y
73# CONFIG_MODULE_FORCE_UNLOAD is not set
74# CONFIG_MODVERSIONS is not set
75# CONFIG_MODULE_SRCVERSION_ALL is not set
76# CONFIG_KMOD is not set
77CONFIG_BLOCK=y 85CONFIG_BLOCK=y
78# CONFIG_LBD is not set 86# CONFIG_LBD is not set
79# CONFIG_BLK_DEV_IO_TRACE is not set
80# CONFIG_LSF is not set
81# CONFIG_BLK_DEV_BSG is not set 87# CONFIG_BLK_DEV_BSG is not set
88# CONFIG_BLK_DEV_INTEGRITY is not set
82 89
83# 90#
84# IO Schedulers 91# IO Schedulers
@@ -92,7 +99,7 @@ CONFIG_IOSCHED_NOOP=y
92# CONFIG_DEFAULT_CFQ is not set 99# CONFIG_DEFAULT_CFQ is not set
93CONFIG_DEFAULT_NOOP=y 100CONFIG_DEFAULT_NOOP=y
94CONFIG_DEFAULT_IOSCHED="noop" 101CONFIG_DEFAULT_IOSCHED="noop"
95CONFIG_CLASSIC_RCU=y 102# CONFIG_FREEZER is not set
96 103
97# 104#
98# Processor type and features 105# Processor type and features
@@ -144,45 +151,103 @@ CONFIG_RAMAUTOBIT=y
144# CONFIG_ROM is not set 151# CONFIG_ROM is not set
145CONFIG_RAMKERNEL=y 152CONFIG_RAMKERNEL=y
146# CONFIG_ROMKERNEL is not set 153# CONFIG_ROMKERNEL is not set
154CONFIG_PREEMPT_NONE=y
155# CONFIG_PREEMPT_VOLUNTARY is not set
156# CONFIG_PREEMPT is not set
147CONFIG_SELECT_MEMORY_MODEL=y 157CONFIG_SELECT_MEMORY_MODEL=y
148CONFIG_FLATMEM_MANUAL=y 158CONFIG_FLATMEM_MANUAL=y
149# CONFIG_DISCONTIGMEM_MANUAL is not set 159# CONFIG_DISCONTIGMEM_MANUAL is not set
150# CONFIG_SPARSEMEM_MANUAL is not set 160# CONFIG_SPARSEMEM_MANUAL is not set
151CONFIG_FLATMEM=y 161CONFIG_FLATMEM=y
152CONFIG_FLAT_NODE_MEM_MAP=y 162CONFIG_FLAT_NODE_MEM_MAP=y
153# CONFIG_SPARSEMEM_STATIC is not set
154# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
155CONFIG_PAGEFLAGS_EXTENDED=y 163CONFIG_PAGEFLAGS_EXTENDED=y
156CONFIG_SPLIT_PTLOCK_CPUS=4 164CONFIG_SPLIT_PTLOCK_CPUS=4
157# CONFIG_RESOURCES_64BIT is not set 165# CONFIG_PHYS_ADDR_T_64BIT is not set
158CONFIG_ZONE_DMA_FLAG=1 166CONFIG_ZONE_DMA_FLAG=1
159CONFIG_VIRT_TO_BUS=y 167CONFIG_VIRT_TO_BUS=y
168# CONFIG_UNEVICTABLE_LRU is not set
160CONFIG_ISA_DMA_API=y 169CONFIG_ISA_DMA_API=y
161 170
162# 171#
163# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
164#
165# CONFIG_PCI is not set
166# CONFIG_ARCH_SUPPORTS_MSI is not set
167
168#
169# Executable file formats 172# Executable file formats
170# 173#
171CONFIG_BINFMT_FLAT=y 174CONFIG_BINFMT_FLAT=y
172# CONFIG_BINFMT_ZFLAT is not set 175# CONFIG_BINFMT_ZFLAT is not set
173# CONFIG_BINFMT_SHARED_FLAT is not set 176# CONFIG_BINFMT_SHARED_FLAT is not set
174# CONFIG_BINFMT_AOUT is not set 177# CONFIG_HAVE_AOUT is not set
175# CONFIG_BINFMT_MISC is not set 178# CONFIG_BINFMT_MISC is not set
176 179
177# 180#
178# Power management options 181# Power management options
179# 182#
180# CONFIG_PM is not set 183# CONFIG_PM is not set
181 184CONFIG_NET=y
182# 185
183# Networking 186#
184# 187# Networking options
185# CONFIG_NET is not set 188#
189CONFIG_PACKET=y
190# CONFIG_PACKET_MMAP is not set
191CONFIG_UNIX=y
192# CONFIG_NET_KEY is not set
193CONFIG_INET=y
194# CONFIG_IP_MULTICAST is not set
195# CONFIG_IP_ADVANCED_ROUTER is not set
196CONFIG_IP_FIB_HASH=y
197# CONFIG_IP_PNP is not set
198# CONFIG_NET_IPIP is not set
199# CONFIG_NET_IPGRE is not set
200# CONFIG_ARPD is not set
201# CONFIG_SYN_COOKIES is not set
202# CONFIG_INET_AH is not set
203# CONFIG_INET_ESP is not set
204# CONFIG_INET_IPCOMP is not set
205# CONFIG_INET_XFRM_TUNNEL is not set
206# CONFIG_INET_TUNNEL is not set
207# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
208# CONFIG_INET_XFRM_MODE_TUNNEL is not set
209# CONFIG_INET_XFRM_MODE_BEET is not set
210# CONFIG_INET_LRO is not set
211# CONFIG_INET_DIAG is not set
212# CONFIG_TCP_CONG_ADVANCED is not set
213CONFIG_TCP_CONG_CUBIC=y
214CONFIG_DEFAULT_TCP_CONG="cubic"
215# CONFIG_TCP_MD5SIG is not set
216# CONFIG_IPV6 is not set
217# CONFIG_NETWORK_SECMARK is not set
218# CONFIG_NETFILTER is not set
219# CONFIG_IP_DCCP is not set
220# CONFIG_IP_SCTP is not set
221# CONFIG_TIPC is not set
222# CONFIG_ATM is not set
223# CONFIG_BRIDGE is not set
224# CONFIG_NET_DSA is not set
225# CONFIG_VLAN_8021Q is not set
226# CONFIG_DECNET is not set
227# CONFIG_LLC2 is not set
228# CONFIG_IPX is not set
229# CONFIG_ATALK is not set
230# CONFIG_X25 is not set
231# CONFIG_LAPB is not set
232# CONFIG_ECONET is not set
233# CONFIG_WAN_ROUTER is not set
234# CONFIG_PHONET is not set
235# CONFIG_NET_SCHED is not set
236# CONFIG_DCB is not set
237
238#
239# Network testing
240#
241# CONFIG_NET_PKTGEN is not set
242# CONFIG_HAMRADIO is not set
243# CONFIG_CAN is not set
244# CONFIG_IRDA is not set
245# CONFIG_BT is not set
246# CONFIG_AF_RXRPC is not set
247# CONFIG_WIRELESS is not set
248# CONFIG_WIMAX is not set
249# CONFIG_RFKILL is not set
250# CONFIG_NET_9P is not set
186 251
187# 252#
188# Device Drivers 253# Device Drivers
@@ -194,6 +259,7 @@ CONFIG_BINFMT_FLAT=y
194CONFIG_STANDALONE=y 259CONFIG_STANDALONE=y
195CONFIG_PREVENT_FIRMWARE_BUILD=y 260CONFIG_PREVENT_FIRMWARE_BUILD=y
196# CONFIG_SYS_HYPERVISOR is not set 261# CONFIG_SYS_HYPERVISOR is not set
262# CONFIG_CONNECTOR is not set
197CONFIG_MTD=y 263CONFIG_MTD=y
198# CONFIG_MTD_DEBUG is not set 264# CONFIG_MTD_DEBUG is not set
199# CONFIG_MTD_CONCAT is not set 265# CONFIG_MTD_CONCAT is not set
@@ -259,6 +325,11 @@ CONFIG_MTD_UCLINUX=y
259# CONFIG_MTD_ONENAND is not set 325# CONFIG_MTD_ONENAND is not set
260 326
261# 327#
328# LPDDR flash memory drivers
329#
330# CONFIG_MTD_LPDDR is not set
331
332#
262# UBI - Unsorted block images 333# UBI - Unsorted block images
263# 334#
264# CONFIG_MTD_UBI is not set 335# CONFIG_MTD_UBI is not set
@@ -266,14 +337,15 @@ CONFIG_MTD_UCLINUX=y
266CONFIG_BLK_DEV=y 337CONFIG_BLK_DEV=y
267# CONFIG_BLK_DEV_COW_COMMON is not set 338# CONFIG_BLK_DEV_COW_COMMON is not set
268# CONFIG_BLK_DEV_LOOP is not set 339# CONFIG_BLK_DEV_LOOP is not set
340# CONFIG_BLK_DEV_NBD is not set
269CONFIG_BLK_DEV_RAM=y 341CONFIG_BLK_DEV_RAM=y
270CONFIG_BLK_DEV_RAM_COUNT=16 342CONFIG_BLK_DEV_RAM_COUNT=16
271CONFIG_BLK_DEV_RAM_SIZE=4096 343CONFIG_BLK_DEV_RAM_SIZE=4096
272# CONFIG_BLK_DEV_XIP is not set 344# CONFIG_BLK_DEV_XIP is not set
273# CONFIG_CDROM_PKTCDVD is not set 345# CONFIG_CDROM_PKTCDVD is not set
274CONFIG_MISC_DEVICES=y 346# CONFIG_ATA_OVER_ETH is not set
275# CONFIG_EEPROM_93CX6 is not set 347# CONFIG_BLK_DEV_HD is not set
276# CONFIG_ENCLOSURE_SERVICES is not set 348# CONFIG_MISC_DEVICES is not set
277CONFIG_HAVE_IDE=y 349CONFIG_HAVE_IDE=y
278# CONFIG_IDE is not set 350# CONFIG_IDE is not set
279 351
@@ -285,6 +357,56 @@ CONFIG_HAVE_IDE=y
285# CONFIG_SCSI_DMA is not set 357# CONFIG_SCSI_DMA is not set
286# CONFIG_SCSI_NETLINK is not set 358# CONFIG_SCSI_NETLINK is not set
287# CONFIG_MD is not set 359# CONFIG_MD is not set
360CONFIG_NETDEVICES=y
361CONFIG_COMPAT_NET_DEV_OPS=y
362# CONFIG_DUMMY is not set
363# CONFIG_BONDING is not set
364# CONFIG_MACVLAN is not set
365# CONFIG_EQUALIZER is not set
366# CONFIG_TUN is not set
367# CONFIG_VETH is not set
368# CONFIG_PHYLIB is not set
369CONFIG_NET_ETHERNET=y
370# CONFIG_MII is not set
371# CONFIG_ETHOC is not set
372# CONFIG_DNET is not set
373# CONFIG_IBM_NEW_EMAC_ZMII is not set
374# CONFIG_IBM_NEW_EMAC_RGMII is not set
375# CONFIG_IBM_NEW_EMAC_TAH is not set
376# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
377# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
378# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
379# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
380# CONFIG_B44 is not set
381# CONFIG_NETDEV_1000 is not set
382# CONFIG_NETDEV_10000 is not set
383
384#
385# Wireless LAN
386#
387# CONFIG_WLAN_PRE80211 is not set
388# CONFIG_WLAN_80211 is not set
389
390#
391# Enable WiMAX (Networking options) to see the WiMAX drivers
392#
393# CONFIG_WAN is not set
394CONFIG_PPP=y
395# CONFIG_PPP_MULTILINK is not set
396# CONFIG_PPP_FILTER is not set
397# CONFIG_PPP_ASYNC is not set
398# CONFIG_PPP_SYNC_TTY is not set
399# CONFIG_PPP_DEFLATE is not set
400# CONFIG_PPP_BSDCOMP is not set
401# CONFIG_PPP_MPPE is not set
402# CONFIG_PPPOE is not set
403# CONFIG_PPPOL2TP is not set
404# CONFIG_SLIP is not set
405CONFIG_SLHC=y
406# CONFIG_NETCONSOLE is not set
407# CONFIG_NETPOLL is not set
408# CONFIG_NET_POLL_CONTROLLER is not set
409# CONFIG_ISDN is not set
288# CONFIG_PHONE is not set 410# CONFIG_PHONE is not set
289 411
290# 412#
@@ -302,7 +424,7 @@ CONFIG_HAVE_IDE=y
302# Character devices 424# Character devices
303# 425#
304# CONFIG_VT is not set 426# CONFIG_VT is not set
305# CONFIG_DEVKMEM is not set 427CONFIG_DEVKMEM=y
306# CONFIG_SERIAL_NONSTANDARD is not set 428# CONFIG_SERIAL_NONSTANDARD is not set
307 429
308# 430#
@@ -315,7 +437,6 @@ CONFIG_HAVE_IDE=y
315# 437#
316CONFIG_SERIAL_CORE=y 438CONFIG_SERIAL_CORE=y
317CONFIG_SERIAL_CORE_CONSOLE=y 439CONFIG_SERIAL_CORE_CONSOLE=y
318# CONFIG_SERIAL_COLDFIRE is not set
319CONFIG_SERIAL_MCF=y 440CONFIG_SERIAL_MCF=y
320CONFIG_SERIAL_MCF_BAUDRATE=19200 441CONFIG_SERIAL_MCF_BAUDRATE=19200
321CONFIG_SERIAL_MCF_CONSOLE=y 442CONFIG_SERIAL_MCF_CONSOLE=y
@@ -323,7 +444,8 @@ CONFIG_SERIAL_MCF_CONSOLE=y
323CONFIG_LEGACY_PTYS=y 444CONFIG_LEGACY_PTYS=y
324CONFIG_LEGACY_PTY_COUNT=256 445CONFIG_LEGACY_PTY_COUNT=256
325# CONFIG_IPMI_HANDLER is not set 446# CONFIG_IPMI_HANDLER is not set
326# CONFIG_HW_RANDOM is not set 447CONFIG_HW_RANDOM=y
448# CONFIG_HW_RANDOM_TIMERIOMEM is not set
327# CONFIG_GEN_RTC is not set 449# CONFIG_GEN_RTC is not set
328# CONFIG_R3964 is not set 450# CONFIG_R3964 is not set
329# CONFIG_RAW_DRIVER is not set 451# CONFIG_RAW_DRIVER is not set
@@ -334,19 +456,23 @@ CONFIG_LEGACY_PTY_COUNT=256
334# CONFIG_POWER_SUPPLY is not set 456# CONFIG_POWER_SUPPLY is not set
335# CONFIG_HWMON is not set 457# CONFIG_HWMON is not set
336# CONFIG_THERMAL is not set 458# CONFIG_THERMAL is not set
459# CONFIG_THERMAL_HWMON is not set
337# CONFIG_WATCHDOG is not set 460# CONFIG_WATCHDOG is not set
461CONFIG_SSB_POSSIBLE=y
338 462
339# 463#
340# Sonics Silicon Backplane 464# Sonics Silicon Backplane
341# 465#
342CONFIG_SSB_POSSIBLE=y
343# CONFIG_SSB is not set 466# CONFIG_SSB is not set
344 467
345# 468#
346# Multifunction device drivers 469# Multifunction device drivers
347# 470#
471# CONFIG_MFD_CORE is not set
348# CONFIG_MFD_SM501 is not set 472# CONFIG_MFD_SM501 is not set
349# CONFIG_HTC_PASIC3 is not set 473# CONFIG_HTC_PASIC3 is not set
474# CONFIG_MFD_TMIO is not set
475# CONFIG_REGULATOR is not set
350 476
351# 477#
352# Multimedia devices 478# Multimedia devices
@@ -356,11 +482,13 @@ CONFIG_SSB_POSSIBLE=y
356# Multimedia core support 482# Multimedia core support
357# 483#
358# CONFIG_VIDEO_DEV is not set 484# CONFIG_VIDEO_DEV is not set
485# CONFIG_DVB_CORE is not set
486# CONFIG_VIDEO_MEDIA is not set
359 487
360# 488#
361# Multimedia drivers 489# Multimedia drivers
362# 490#
363# CONFIG_DAB is not set 491CONFIG_DAB=y
364 492
365# 493#
366# Graphics support 494# Graphics support
@@ -374,10 +502,6 @@ CONFIG_SSB_POSSIBLE=y
374# Display device support 502# Display device support
375# 503#
376# CONFIG_DISPLAY_SUPPORT is not set 504# CONFIG_DISPLAY_SUPPORT is not set
377
378#
379# Sound
380#
381# CONFIG_SOUND is not set 505# CONFIG_SOUND is not set
382# CONFIG_USB_SUPPORT is not set 506# CONFIG_USB_SUPPORT is not set
383# CONFIG_MMC is not set 507# CONFIG_MMC is not set
@@ -385,7 +509,10 @@ CONFIG_SSB_POSSIBLE=y
385# CONFIG_NEW_LEDS is not set 509# CONFIG_NEW_LEDS is not set
386# CONFIG_ACCESSIBILITY is not set 510# CONFIG_ACCESSIBILITY is not set
387# CONFIG_RTC_CLASS is not set 511# CONFIG_RTC_CLASS is not set
512# CONFIG_DMADEVICES is not set
513# CONFIG_AUXDISPLAY is not set
388# CONFIG_UIO is not set 514# CONFIG_UIO is not set
515# CONFIG_STAGING is not set
389 516
390# 517#
391# File systems 518# File systems
@@ -393,19 +520,28 @@ CONFIG_SSB_POSSIBLE=y
393CONFIG_EXT2_FS=y 520CONFIG_EXT2_FS=y
394# CONFIG_EXT2_FS_XATTR is not set 521# CONFIG_EXT2_FS_XATTR is not set
395# CONFIG_EXT3_FS is not set 522# CONFIG_EXT3_FS is not set
396# CONFIG_EXT4DEV_FS is not set 523# CONFIG_EXT4_FS is not set
397# CONFIG_REISERFS_FS is not set 524# CONFIG_REISERFS_FS is not set
398# CONFIG_JFS_FS is not set 525# CONFIG_JFS_FS is not set
399# CONFIG_FS_POSIX_ACL is not set 526# CONFIG_FS_POSIX_ACL is not set
527# CONFIG_FILE_LOCKING is not set
400# CONFIG_XFS_FS is not set 528# CONFIG_XFS_FS is not set
401# CONFIG_DNOTIFY is not set 529# CONFIG_OCFS2_FS is not set
402# CONFIG_INOTIFY is not set 530# CONFIG_BTRFS_FS is not set
531CONFIG_DNOTIFY=y
532CONFIG_INOTIFY=y
533CONFIG_INOTIFY_USER=y
403# CONFIG_QUOTA is not set 534# CONFIG_QUOTA is not set
404# CONFIG_AUTOFS_FS is not set 535# CONFIG_AUTOFS_FS is not set
405# CONFIG_AUTOFS4_FS is not set 536# CONFIG_AUTOFS4_FS is not set
406# CONFIG_FUSE_FS is not set 537# CONFIG_FUSE_FS is not set
407 538
408# 539#
540# Caches
541#
542# CONFIG_FSCACHE is not set
543
544#
409# CD-ROM/DVD Filesystems 545# CD-ROM/DVD Filesystems
410# 546#
411# CONFIG_ISO9660_FS is not set 547# CONFIG_ISO9660_FS is not set
@@ -427,10 +563,7 @@ CONFIG_SYSFS=y
427# CONFIG_TMPFS is not set 563# CONFIG_TMPFS is not set
428# CONFIG_HUGETLB_PAGE is not set 564# CONFIG_HUGETLB_PAGE is not set
429# CONFIG_CONFIGFS_FS is not set 565# CONFIG_CONFIGFS_FS is not set
430 566CONFIG_MISC_FILESYSTEMS=y
431#
432# Miscellaneous filesystems
433#
434# CONFIG_ADFS_FS is not set 567# CONFIG_ADFS_FS is not set
435# CONFIG_AFFS_FS is not set 568# CONFIG_AFFS_FS is not set
436# CONFIG_HFS_FS is not set 569# CONFIG_HFS_FS is not set
@@ -440,13 +573,21 @@ CONFIG_SYSFS=y
440# CONFIG_EFS_FS is not set 573# CONFIG_EFS_FS is not set
441# CONFIG_JFFS2_FS is not set 574# CONFIG_JFFS2_FS is not set
442# CONFIG_CRAMFS is not set 575# CONFIG_CRAMFS is not set
576# CONFIG_SQUASHFS is not set
443# CONFIG_VXFS_FS is not set 577# CONFIG_VXFS_FS is not set
444# CONFIG_MINIX_FS is not set 578# CONFIG_MINIX_FS is not set
579# CONFIG_OMFS_FS is not set
445# CONFIG_HPFS_FS is not set 580# CONFIG_HPFS_FS is not set
446# CONFIG_QNX4FS_FS is not set 581# CONFIG_QNX4FS_FS is not set
447CONFIG_ROMFS_FS=y 582CONFIG_ROMFS_FS=y
583# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
584CONFIG_ROMFS_BACKED_BY_MTD=y
585# CONFIG_ROMFS_BACKED_BY_BOTH is not set
586CONFIG_ROMFS_ON_MTD=y
448# CONFIG_SYSV_FS is not set 587# CONFIG_SYSV_FS is not set
449# CONFIG_UFS_FS is not set 588# CONFIG_UFS_FS is not set
589# CONFIG_NILFS2_FS is not set
590# CONFIG_NETWORK_FILESYSTEMS is not set
450 591
451# 592#
452# Partition Types 593# Partition Types
@@ -454,6 +595,7 @@ CONFIG_ROMFS_FS=y
454# CONFIG_PARTITION_ADVANCED is not set 595# CONFIG_PARTITION_ADVANCED is not set
455CONFIG_MSDOS_PARTITION=y 596CONFIG_MSDOS_PARTITION=y
456# CONFIG_NLS is not set 597# CONFIG_NLS is not set
598# CONFIG_DLM is not set
457 599
458# 600#
459# Kernel hacking 601# Kernel hacking
@@ -468,10 +610,14 @@ CONFIG_FRAME_WARN=1024
468# CONFIG_HEADERS_CHECK is not set 610# CONFIG_HEADERS_CHECK is not set
469# CONFIG_DEBUG_KERNEL is not set 611# CONFIG_DEBUG_KERNEL is not set
470# CONFIG_DEBUG_BUGVERBOSE is not set 612# CONFIG_DEBUG_BUGVERBOSE is not set
613# CONFIG_DEBUG_MEMORY_INIT is not set
614# CONFIG_RCU_CPU_STALL_DETECTOR is not set
615# CONFIG_SYSCTL_SYSCALL_CHECK is not set
471# CONFIG_SAMPLES is not set 616# CONFIG_SAMPLES is not set
472# CONFIG_FULLDEBUG is not set 617# CONFIG_FULLDEBUG is not set
473# CONFIG_HIGHPROFILE is not set 618# CONFIG_HIGHPROFILE is not set
474# CONFIG_BOOTPARAM is not set 619CONFIG_BOOTPARAM=y
620CONFIG_BOOTPARAM_STRING="root=/dev/mtdblock0"
475# CONFIG_NO_KERNEL_MSG is not set 621# CONFIG_NO_KERNEL_MSG is not set
476# CONFIG_BDM_DISABLE is not set 622# CONFIG_BDM_DISABLE is not set
477 623
@@ -480,18 +626,22 @@ CONFIG_FRAME_WARN=1024
480# 626#
481# CONFIG_KEYS is not set 627# CONFIG_KEYS is not set
482# CONFIG_SECURITY is not set 628# CONFIG_SECURITY is not set
629# CONFIG_SECURITYFS is not set
483# CONFIG_SECURITY_FILE_CAPABILITIES is not set 630# CONFIG_SECURITY_FILE_CAPABILITIES is not set
484# CONFIG_CRYPTO is not set 631# CONFIG_CRYPTO is not set
632# CONFIG_BINARY_PRINTF is not set
485 633
486# 634#
487# Library routines 635# Library routines
488# 636#
489# CONFIG_GENERIC_FIND_FIRST_BIT is not set 637CONFIG_GENERIC_FIND_LAST_BIT=y
490# CONFIG_CRC_CCITT is not set 638# CONFIG_CRC_CCITT is not set
491# CONFIG_CRC16 is not set 639# CONFIG_CRC16 is not set
640# CONFIG_CRC_T10DIF is not set
492# CONFIG_CRC_ITU_T is not set 641# CONFIG_CRC_ITU_T is not set
493# CONFIG_CRC32 is not set 642# CONFIG_CRC32 is not set
494# CONFIG_CRC7 is not set 643# CONFIG_CRC7 is not set
495# CONFIG_LIBCRC32C is not set 644# CONFIG_LIBCRC32C is not set
496CONFIG_HAS_IOMEM=y 645CONFIG_HAS_IOMEM=y
497CONFIG_HAS_DMA=y 646CONFIG_HAS_DMA=y
647CONFIG_NLATTR=y
diff --git a/arch/arm/configs/imx27ads_defconfig b/arch/m68knommu/configs/m5272c3_defconfig
index bcd95b8dd2df..f37852a34218 100644
--- a/arch/arm/configs/imx27ads_defconfig
+++ b/arch/m68knommu/configs/m5272c3_defconfig
@@ -1,30 +1,25 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc6 3# Linux kernel version: 2.6.30-rc2
4# Fri Jun 20 16:29:34 2008 4# Wed Apr 22 17:17:30 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_M68K=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7# CONFIG_MMU is not set
8CONFIG_GENERIC_GPIO=y 8# CONFIG_FPU is not set
9CONFIG_GENERIC_TIME=y 9CONFIG_ZONE_DMA=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y
18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_RWSEM_GENERIC_SPINLOCK=y 10CONFIG_RWSEM_GENERIC_SPINLOCK=y
11# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 12# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 13# CONFIG_ARCH_HAS_ILOG2_U64 is not set
14CONFIG_GENERIC_FIND_NEXT_BIT=y
22CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_HARDIRQS=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 17CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y 18CONFIG_GENERIC_TIME=y
25CONFIG_ZONE_DMA=y 19CONFIG_GENERIC_CMOS_UPDATE=y
26CONFIG_ARCH_MTD_XIP=y 20CONFIG_TIME_LOW_RES=y
27CONFIG_VECTORS_BASE=0xffff0000 21# CONFIG_GENERIC_CLOCKEVENTS is not set
22CONFIG_NO_IOPORT=y
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
29 24
30# 25#
@@ -32,23 +27,28 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
32# 27#
33CONFIG_EXPERIMENTAL=y 28CONFIG_EXPERIMENTAL=y
34CONFIG_BROKEN_ON_SMP=y 29CONFIG_BROKEN_ON_SMP=y
35CONFIG_LOCK_KERNEL=y
36CONFIG_INIT_ENV_ARG_LIMIT=32 30CONFIG_INIT_ENV_ARG_LIMIT=32
37CONFIG_LOCALVERSION="" 31CONFIG_LOCALVERSION=""
38CONFIG_LOCALVERSION_AUTO=y 32CONFIG_LOCALVERSION_AUTO=y
39# CONFIG_SWAP is not set 33# CONFIG_SYSVIPC is not set
40CONFIG_SYSVIPC=y 34# CONFIG_POSIX_MQUEUE is not set
41CONFIG_SYSVIPC_SYSCTL=y
42CONFIG_POSIX_MQUEUE=y
43# CONFIG_BSD_PROCESS_ACCT is not set 35# CONFIG_BSD_PROCESS_ACCT is not set
44# CONFIG_TASKSTATS is not set 36# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set 37# CONFIG_AUDIT is not set
38
39#
40# RCU Subsystem
41#
42CONFIG_CLASSIC_RCU=y
43# CONFIG_TREE_RCU is not set
44# CONFIG_PREEMPT_RCU is not set
45# CONFIG_TREE_RCU_TRACE is not set
46# CONFIG_PREEMPT_RCU_TRACE is not set
46# CONFIG_IKCONFIG is not set 47# CONFIG_IKCONFIG is not set
47CONFIG_LOG_BUF_SHIFT=14 48CONFIG_LOG_BUF_SHIFT=14
48# CONFIG_CGROUPS is not set
49# CONFIG_GROUP_SCHED is not set 49# CONFIG_GROUP_SCHED is not set
50CONFIG_SYSFS_DEPRECATED=y 50# CONFIG_CGROUPS is not set
51CONFIG_SYSFS_DEPRECATED_V2=y 51# CONFIG_SYSFS_DEPRECATED_V2 is not set
52# CONFIG_RELAY is not set 52# CONFIG_RELAY is not set
53# CONFIG_NAMESPACES is not set 53# CONFIG_NAMESPACES is not set
54# CONFIG_BLK_DEV_INITRD is not set 54# CONFIG_BLK_DEV_INITRD is not set
@@ -57,50 +57,35 @@ CONFIG_SYSCTL=y
57CONFIG_EMBEDDED=y 57CONFIG_EMBEDDED=y
58CONFIG_UID16=y 58CONFIG_UID16=y
59CONFIG_SYSCTL_SYSCALL=y 59CONFIG_SYSCTL_SYSCALL=y
60CONFIG_SYSCTL_SYSCALL_CHECK=y 60# CONFIG_KALLSYMS is not set
61CONFIG_KALLSYMS=y 61# CONFIG_STRIP_ASM_SYMS is not set
62CONFIG_KALLSYMS_EXTRA_PASS=y 62# CONFIG_HOTPLUG is not set
63CONFIG_HOTPLUG=y
64CONFIG_PRINTK=y 63CONFIG_PRINTK=y
65CONFIG_BUG=y 64CONFIG_BUG=y
66CONFIG_ELF_CORE=y 65CONFIG_ELF_CORE=y
67CONFIG_COMPAT_BRK=y
68CONFIG_BASE_FULL=y 66CONFIG_BASE_FULL=y
69CONFIG_FUTEX=y 67# CONFIG_FUTEX is not set
70CONFIG_ANON_INODES=y 68# CONFIG_EPOLL is not set
71CONFIG_EPOLL=y 69# CONFIG_SIGNALFD is not set
72CONFIG_SIGNALFD=y 70# CONFIG_TIMERFD is not set
73CONFIG_TIMERFD=y 71# CONFIG_EVENTFD is not set
74CONFIG_EVENTFD=y 72# CONFIG_AIO is not set
75CONFIG_SHMEM=y 73# CONFIG_VM_EVENT_COUNTERS is not set
76CONFIG_VM_EVENT_COUNTERS=y 74# CONFIG_SLUB_DEBUG is not set
77CONFIG_SLAB=y 75CONFIG_COMPAT_BRK=y
78# CONFIG_SLUB is not set 76# CONFIG_SLAB is not set
77CONFIG_SLUB=y
79# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
80# CONFIG_PROFILING is not set 79# CONFIG_PROFILING is not set
81# CONFIG_MARKERS is not set 80# CONFIG_MARKERS is not set
82CONFIG_HAVE_OPROFILE=y 81# CONFIG_SLOW_WORK is not set
83# CONFIG_KPROBES is not set 82# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
84CONFIG_HAVE_KPROBES=y
85CONFIG_HAVE_KRETPROBES=y
86# CONFIG_HAVE_DMA_ATTRS is not set
87CONFIG_PROC_PAGE_MONITOR=y
88CONFIG_SLABINFO=y
89CONFIG_RT_MUTEXES=y
90# CONFIG_TINY_SHMEM is not set
91CONFIG_BASE_SMALL=0 83CONFIG_BASE_SMALL=0
92CONFIG_MODULES=y 84# CONFIG_MODULES is not set
93# CONFIG_MODULE_FORCE_LOAD is not set
94CONFIG_MODULE_UNLOAD=y
95# CONFIG_MODULE_FORCE_UNLOAD is not set
96# CONFIG_MODVERSIONS is not set
97# CONFIG_MODULE_SRCVERSION_ALL is not set
98# CONFIG_KMOD is not set
99CONFIG_BLOCK=y 85CONFIG_BLOCK=y
100# CONFIG_LBD is not set 86# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set
103# CONFIG_BLK_DEV_BSG is not set 87# CONFIG_BLK_DEV_BSG is not set
88# CONFIG_BLK_DEV_INTEGRITY is not set
104 89
105# 90#
106# IO Schedulers 91# IO Schedulers
@@ -114,185 +99,110 @@ CONFIG_IOSCHED_NOOP=y
114# CONFIG_DEFAULT_CFQ is not set 99# CONFIG_DEFAULT_CFQ is not set
115CONFIG_DEFAULT_NOOP=y 100CONFIG_DEFAULT_NOOP=y
116CONFIG_DEFAULT_IOSCHED="noop" 101CONFIG_DEFAULT_IOSCHED="noop"
117CONFIG_CLASSIC_RCU=y 102# CONFIG_FREEZER is not set
118 103
119# 104#
120# System Type 105# Processor type and features
121# 106#
122# CONFIG_ARCH_AAEC2000 is not set 107# CONFIG_M68328 is not set
123# CONFIG_ARCH_INTEGRATOR is not set 108# CONFIG_M68EZ328 is not set
124# CONFIG_ARCH_REALVIEW is not set 109# CONFIG_M68VZ328 is not set
125# CONFIG_ARCH_VERSATILE is not set 110# CONFIG_M68360 is not set
126# CONFIG_ARCH_AT91 is not set 111# CONFIG_M5206 is not set
127# CONFIG_ARCH_CLPS7500 is not set 112# CONFIG_M5206e is not set
128# CONFIG_ARCH_CLPS711X is not set 113# CONFIG_M520x is not set
129# CONFIG_ARCH_CO285 is not set 114# CONFIG_M523x is not set
130# CONFIG_ARCH_EBSA110 is not set 115# CONFIG_M5249 is not set
131# CONFIG_ARCH_EP93XX is not set 116# CONFIG_M5271 is not set
132# CONFIG_ARCH_FOOTBRIDGE is not set 117CONFIG_M5272=y
133# CONFIG_ARCH_NETX is not set 118# CONFIG_M5275 is not set
134# CONFIG_ARCH_H720X is not set 119# CONFIG_M528x is not set
135# CONFIG_ARCH_IMX is not set 120# CONFIG_M5307 is not set
136# CONFIG_ARCH_IOP13XX is not set 121# CONFIG_M532x is not set
137# CONFIG_ARCH_IOP32X is not set 122# CONFIG_M5407 is not set
138# CONFIG_ARCH_IOP33X is not set 123CONFIG_COLDFIRE=y
139# CONFIG_ARCH_IXP23XX is not set 124CONFIG_CLOCK_SET=y
140# CONFIG_ARCH_IXP2000 is not set 125CONFIG_CLOCK_FREQ=66666666
141# CONFIG_ARCH_IXP4XX is not set 126CONFIG_CLOCK_DIV=1
142# CONFIG_ARCH_L7200 is not set 127
143# CONFIG_ARCH_KS8695 is not set 128#
144# CONFIG_ARCH_NS9XXX is not set 129# Platform
145CONFIG_ARCH_MXC=y 130#
146# CONFIG_ARCH_ORION5X is not set 131# CONFIG_UC5272 is not set
147# CONFIG_ARCH_PNX4008 is not set 132CONFIG_M5272C3=y
148# CONFIG_ARCH_PXA is not set 133# CONFIG_COBRA5272 is not set
149# CONFIG_ARCH_RPC is not set 134# CONFIG_CANCam is not set
150# CONFIG_ARCH_SA1100 is not set 135# CONFIG_SCALES is not set
151# CONFIG_ARCH_S3C2410 is not set 136# CONFIG_NETtel is not set
152# CONFIG_ARCH_SHARK is not set 137# CONFIG_CPU16B is not set
153# CONFIG_ARCH_LH7A40X is not set 138# CONFIG_MOD5272 is not set
154# CONFIG_ARCH_DAVINCI is not set 139CONFIG_FREESCALE=y
155# CONFIG_ARCH_OMAP is not set 140CONFIG_4KSTACKS=y
156# CONFIG_ARCH_MSM7X00A is not set 141CONFIG_HZ=100
157
158#
159# Boot options
160#
161
162#
163# Power management
164#
165
166#
167# Freescale MXC Implementations
168#
169CONFIG_ARCH_MX2=y
170# CONFIG_ARCH_MX3 is not set
171
172#
173# MX2 family CPU support
174#
175CONFIG_MACH_MX27=y
176
177#
178# MX2 Platforms
179#
180CONFIG_MACH_MX27ADS=y
181# CONFIG_MACH_PCM038 is not set
182
183#
184# Processor Type
185#
186CONFIG_CPU_32=y
187CONFIG_CPU_ARM926T=y
188CONFIG_CPU_32v5=y
189CONFIG_CPU_ABRT_EV5TJ=y
190CONFIG_CPU_PABRT_NOIFAR=y
191CONFIG_CPU_CACHE_VIVT=y
192CONFIG_CPU_COPY_V4WB=y
193CONFIG_CPU_TLB_V4WBI=y
194CONFIG_CPU_CP15=y
195CONFIG_CPU_CP15_MMU=y
196
197#
198# Processor Features
199#
200CONFIG_ARM_THUMB=y
201# CONFIG_CPU_ICACHE_DISABLE is not set
202# CONFIG_CPU_DCACHE_DISABLE is not set
203# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
204# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
205# CONFIG_OUTER_CACHE is not set
206 142
207# 143#
208# Bus support 144# RAM configuration
209# 145#
210# CONFIG_PCI_SYSCALL is not set 146CONFIG_RAMBASE=0x00000000
211# CONFIG_ARCH_SUPPORTS_MSI is not set 147CONFIG_RAMSIZE=0x00800000
212# CONFIG_PCCARD is not set 148CONFIG_VECTORBASE=0x00000000
149CONFIG_KERNELBASE=0x00020000
150CONFIG_RAMAUTOBIT=y
151# CONFIG_RAM8BIT is not set
152# CONFIG_RAM16BIT is not set
153# CONFIG_RAM32BIT is not set
213 154
214# 155#
215# Kernel Features 156# ROM configuration
216# 157#
217CONFIG_TICK_ONESHOT=y 158# CONFIG_ROM is not set
218CONFIG_NO_HZ=y 159CONFIG_RAMKERNEL=y
219CONFIG_HIGH_RES_TIMERS=y 160# CONFIG_ROMKERNEL is not set
220CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 161CONFIG_PREEMPT_NONE=y
221CONFIG_PREEMPT=y 162# CONFIG_PREEMPT_VOLUNTARY is not set
222CONFIG_HZ=100 163# CONFIG_PREEMPT is not set
223CONFIG_AEABI=y
224# CONFIG_OABI_COMPAT is not set
225# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
226CONFIG_SELECT_MEMORY_MODEL=y 164CONFIG_SELECT_MEMORY_MODEL=y
227CONFIG_FLATMEM_MANUAL=y 165CONFIG_FLATMEM_MANUAL=y
228# CONFIG_DISCONTIGMEM_MANUAL is not set 166# CONFIG_DISCONTIGMEM_MANUAL is not set
229# CONFIG_SPARSEMEM_MANUAL is not set 167# CONFIG_SPARSEMEM_MANUAL is not set
230CONFIG_FLATMEM=y 168CONFIG_FLATMEM=y
231CONFIG_FLAT_NODE_MEM_MAP=y 169CONFIG_FLAT_NODE_MEM_MAP=y
232# CONFIG_SPARSEMEM_STATIC is not set
233# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
234CONFIG_PAGEFLAGS_EXTENDED=y 170CONFIG_PAGEFLAGS_EXTENDED=y
235CONFIG_SPLIT_PTLOCK_CPUS=4096 171CONFIG_SPLIT_PTLOCK_CPUS=4
236# CONFIG_RESOURCES_64BIT is not set 172# CONFIG_PHYS_ADDR_T_64BIT is not set
237CONFIG_ZONE_DMA_FLAG=1 173CONFIG_ZONE_DMA_FLAG=1
238CONFIG_BOUNCE=y
239CONFIG_VIRT_TO_BUS=y 174CONFIG_VIRT_TO_BUS=y
240CONFIG_ALIGNMENT_TRAP=y 175# CONFIG_UNEVICTABLE_LRU is not set
241
242#
243# Boot options
244#
245CONFIG_ZBOOT_ROM_TEXT=0x0
246CONFIG_ZBOOT_ROM_BSS=0x0
247CONFIG_CMDLINE=""
248# CONFIG_XIP_KERNEL is not set
249# CONFIG_KEXEC is not set
250 176
251# 177#
252# Floating point emulation 178# Executable file formats
253# 179#
254 180CONFIG_BINFMT_FLAT=y
255# 181# CONFIG_BINFMT_ZFLAT is not set
256# At least one emulation must be selected 182# CONFIG_BINFMT_SHARED_FLAT is not set
257# 183# CONFIG_HAVE_AOUT is not set
258# CONFIG_VFP is not set
259
260#
261# Userspace binary formats
262#
263CONFIG_BINFMT_ELF=y
264# CONFIG_BINFMT_AOUT is not set
265# CONFIG_BINFMT_MISC is not set 184# CONFIG_BINFMT_MISC is not set
266 185
267# 186#
268# Power management options 187# Power management options
269# 188#
270# CONFIG_PM is not set 189# CONFIG_PM is not set
271CONFIG_ARCH_SUSPEND_POSSIBLE=y
272
273#
274# Networking
275#
276CONFIG_NET=y 190CONFIG_NET=y
277 191
278# 192#
279# Networking options 193# Networking options
280# 194#
281CONFIG_PACKET=y 195CONFIG_PACKET=y
282CONFIG_PACKET_MMAP=y 196# CONFIG_PACKET_MMAP is not set
283CONFIG_UNIX=y 197CONFIG_UNIX=y
284# CONFIG_NET_KEY is not set 198# CONFIG_NET_KEY is not set
285CONFIG_INET=y 199CONFIG_INET=y
286CONFIG_IP_MULTICAST=y 200# CONFIG_IP_MULTICAST is not set
287# CONFIG_IP_ADVANCED_ROUTER is not set 201# CONFIG_IP_ADVANCED_ROUTER is not set
288CONFIG_IP_FIB_HASH=y 202CONFIG_IP_FIB_HASH=y
289CONFIG_IP_PNP=y 203# CONFIG_IP_PNP is not set
290# CONFIG_IP_PNP_DHCP is not set
291# CONFIG_IP_PNP_BOOTP is not set
292# CONFIG_IP_PNP_RARP is not set
293# CONFIG_NET_IPIP is not set 204# CONFIG_NET_IPIP is not set
294# CONFIG_NET_IPGRE is not set 205# CONFIG_NET_IPGRE is not set
295# CONFIG_IP_MROUTE is not set
296# CONFIG_ARPD is not set 206# CONFIG_ARPD is not set
297# CONFIG_SYN_COOKIES is not set 207# CONFIG_SYN_COOKIES is not set
298# CONFIG_INET_AH is not set 208# CONFIG_INET_AH is not set
@@ -317,6 +227,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
317# CONFIG_TIPC is not set 227# CONFIG_TIPC is not set
318# CONFIG_ATM is not set 228# CONFIG_ATM is not set
319# CONFIG_BRIDGE is not set 229# CONFIG_BRIDGE is not set
230# CONFIG_NET_DSA is not set
320# CONFIG_VLAN_8021Q is not set 231# CONFIG_VLAN_8021Q is not set
321# CONFIG_DECNET is not set 232# CONFIG_DECNET is not set
322# CONFIG_LLC2 is not set 233# CONFIG_LLC2 is not set
@@ -326,7 +237,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
326# CONFIG_LAPB is not set 237# CONFIG_LAPB is not set
327# CONFIG_ECONET is not set 238# CONFIG_ECONET is not set
328# CONFIG_WAN_ROUTER is not set 239# CONFIG_WAN_ROUTER is not set
240# CONFIG_PHONET is not set
329# CONFIG_NET_SCHED is not set 241# CONFIG_NET_SCHED is not set
242# CONFIG_DCB is not set
330 243
331# 244#
332# Network testing 245# Network testing
@@ -337,14 +250,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
337# CONFIG_IRDA is not set 250# CONFIG_IRDA is not set
338# CONFIG_BT is not set 251# CONFIG_BT is not set
339# CONFIG_AF_RXRPC is not set 252# CONFIG_AF_RXRPC is not set
340 253# CONFIG_WIRELESS is not set
341# 254# CONFIG_WIMAX is not set
342# Wireless
343#
344# CONFIG_CFG80211 is not set
345# CONFIG_WIRELESS_EXT is not set
346# CONFIG_MAC80211 is not set
347# CONFIG_IEEE80211 is not set
348# CONFIG_RFKILL is not set 255# CONFIG_RFKILL is not set
349# CONFIG_NET_9P is not set 256# CONFIG_NET_9P is not set
350 257
@@ -355,10 +262,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
355# 262#
356# Generic Driver Options 263# Generic Driver Options
357# 264#
358CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
359CONFIG_STANDALONE=y 265CONFIG_STANDALONE=y
360CONFIG_PREVENT_FIRMWARE_BUILD=y 266CONFIG_PREVENT_FIRMWARE_BUILD=y
361# CONFIG_FW_LOADER is not set
362# CONFIG_SYS_HYPERVISOR is not set 267# CONFIG_SYS_HYPERVISOR is not set
363# CONFIG_CONNECTOR is not set 268# CONFIG_CONNECTOR is not set
364CONFIG_MTD=y 269CONFIG_MTD=y
@@ -366,8 +271,7 @@ CONFIG_MTD=y
366# CONFIG_MTD_CONCAT is not set 271# CONFIG_MTD_CONCAT is not set
367CONFIG_MTD_PARTITIONS=y 272CONFIG_MTD_PARTITIONS=y
368# CONFIG_MTD_REDBOOT_PARTS is not set 273# CONFIG_MTD_REDBOOT_PARTS is not set
369CONFIG_MTD_CMDLINE_PARTS=y 274# CONFIG_MTD_CMDLINE_PARTS is not set
370# CONFIG_MTD_AFS_PARTS is not set
371# CONFIG_MTD_AR7_PARTS is not set 275# CONFIG_MTD_AR7_PARTS is not set
372 276
373# 277#
@@ -386,43 +290,27 @@ CONFIG_MTD_BLOCK=y
386# 290#
387# RAM/ROM/Flash chip drivers 291# RAM/ROM/Flash chip drivers
388# 292#
389CONFIG_MTD_CFI=y 293# CONFIG_MTD_CFI is not set
390# CONFIG_MTD_JEDECPROBE is not set 294# CONFIG_MTD_JEDECPROBE is not set
391CONFIG_MTD_GEN_PROBE=y 295CONFIG_MTD_MAP_BANK_WIDTH_1=y
392CONFIG_MTD_CFI_ADV_OPTIONS=y
393CONFIG_MTD_CFI_NOSWAP=y
394# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
395# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
396CONFIG_MTD_CFI_GEOMETRY=y
397# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
398CONFIG_MTD_MAP_BANK_WIDTH_2=y 296CONFIG_MTD_MAP_BANK_WIDTH_2=y
399# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set 297CONFIG_MTD_MAP_BANK_WIDTH_4=y
400# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set 298# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
401# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set 299# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
402# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 300# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
403CONFIG_MTD_CFI_I1=y 301CONFIG_MTD_CFI_I1=y
404# CONFIG_MTD_CFI_I2 is not set 302CONFIG_MTD_CFI_I2=y
405# CONFIG_MTD_CFI_I4 is not set 303# CONFIG_MTD_CFI_I4 is not set
406# CONFIG_MTD_CFI_I8 is not set 304# CONFIG_MTD_CFI_I8 is not set
407# CONFIG_MTD_OTP is not set 305CONFIG_MTD_RAM=y
408CONFIG_MTD_CFI_INTELEXT=y
409# CONFIG_MTD_CFI_AMDSTD is not set
410# CONFIG_MTD_CFI_STAA is not set
411CONFIG_MTD_CFI_UTIL=y
412# CONFIG_MTD_RAM is not set
413# CONFIG_MTD_ROM is not set 306# CONFIG_MTD_ROM is not set
414# CONFIG_MTD_ABSENT is not set 307# CONFIG_MTD_ABSENT is not set
415# CONFIG_MTD_XIP is not set
416 308
417# 309#
418# Mapping drivers for chip access 310# Mapping drivers for chip access
419# 311#
420# CONFIG_MTD_COMPLEX_MAPPINGS is not set 312# CONFIG_MTD_COMPLEX_MAPPINGS is not set
421CONFIG_MTD_PHYSMAP=y 313CONFIG_MTD_UCLINUX=y
422CONFIG_MTD_PHYSMAP_START=0x00000000
423CONFIG_MTD_PHYSMAP_LEN=0x0
424CONFIG_MTD_PHYSMAP_BANKWIDTH=2
425# CONFIG_MTD_ARM_INTEGRATOR is not set
426# CONFIG_MTD_PLATRAM is not set 314# CONFIG_MTD_PLATRAM is not set
427 315
428# 316#
@@ -443,6 +331,11 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
443# CONFIG_MTD_ONENAND is not set 331# CONFIG_MTD_ONENAND is not set
444 332
445# 333#
334# LPDDR flash memory drivers
335#
336# CONFIG_MTD_LPDDR is not set
337
338#
446# UBI - Unsorted block images 339# UBI - Unsorted block images
447# 340#
448# CONFIG_MTD_UBI is not set 341# CONFIG_MTD_UBI is not set
@@ -451,9 +344,13 @@ CONFIG_BLK_DEV=y
451# CONFIG_BLK_DEV_COW_COMMON is not set 344# CONFIG_BLK_DEV_COW_COMMON is not set
452# CONFIG_BLK_DEV_LOOP is not set 345# CONFIG_BLK_DEV_LOOP is not set
453# CONFIG_BLK_DEV_NBD is not set 346# CONFIG_BLK_DEV_NBD is not set
454# CONFIG_BLK_DEV_RAM is not set 347CONFIG_BLK_DEV_RAM=y
348CONFIG_BLK_DEV_RAM_COUNT=16
349CONFIG_BLK_DEV_RAM_SIZE=4096
350# CONFIG_BLK_DEV_XIP is not set
455# CONFIG_CDROM_PKTCDVD is not set 351# CONFIG_CDROM_PKTCDVD is not set
456# CONFIG_ATA_OVER_ETH is not set 352# CONFIG_ATA_OVER_ETH is not set
353# CONFIG_BLK_DEV_HD is not set
457# CONFIG_MISC_DEVICES is not set 354# CONFIG_MISC_DEVICES is not set
458CONFIG_HAVE_IDE=y 355CONFIG_HAVE_IDE=y
459# CONFIG_IDE is not set 356# CONFIG_IDE is not set
@@ -465,10 +362,9 @@ CONFIG_HAVE_IDE=y
465# CONFIG_SCSI is not set 362# CONFIG_SCSI is not set
466# CONFIG_SCSI_DMA is not set 363# CONFIG_SCSI_DMA is not set
467# CONFIG_SCSI_NETLINK is not set 364# CONFIG_SCSI_NETLINK is not set
468# CONFIG_ATA is not set
469# CONFIG_MD is not set 365# CONFIG_MD is not set
470CONFIG_NETDEVICES=y 366CONFIG_NETDEVICES=y
471# CONFIG_NETDEVICES_MULTIQUEUE is not set 367CONFIG_COMPAT_NET_DEV_OPS=y
472# CONFIG_DUMMY is not set 368# CONFIG_DUMMY is not set
473# CONFIG_BONDING is not set 369# CONFIG_BONDING is not set
474# CONFIG_MACVLAN is not set 370# CONFIG_MACVLAN is not set
@@ -478,15 +374,18 @@ CONFIG_NETDEVICES=y
478# CONFIG_PHYLIB is not set 374# CONFIG_PHYLIB is not set
479CONFIG_NET_ETHERNET=y 375CONFIG_NET_ETHERNET=y
480# CONFIG_MII is not set 376# CONFIG_MII is not set
481# CONFIG_AX88796 is not set 377# CONFIG_ETHOC is not set
482# CONFIG_SMC91X is not set 378# CONFIG_DNET is not set
483# CONFIG_DM9000 is not set
484# CONFIG_IBM_NEW_EMAC_ZMII is not set 379# CONFIG_IBM_NEW_EMAC_ZMII is not set
485# CONFIG_IBM_NEW_EMAC_RGMII is not set 380# CONFIG_IBM_NEW_EMAC_RGMII is not set
486# CONFIG_IBM_NEW_EMAC_TAH is not set 381# CONFIG_IBM_NEW_EMAC_TAH is not set
487# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 382# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
383# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
384# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
385# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
488# CONFIG_B44 is not set 386# CONFIG_B44 is not set
489# CONFIG_FEC_OLD is not set 387CONFIG_FEC=y
388# CONFIG_FEC2 is not set
490# CONFIG_NETDEV_1000 is not set 389# CONFIG_NETDEV_1000 is not set
491# CONFIG_NETDEV_10000 is not set 390# CONFIG_NETDEV_10000 is not set
492 391
@@ -495,7 +394,10 @@ CONFIG_NET_ETHERNET=y
495# 394#
496# CONFIG_WLAN_PRE80211 is not set 395# CONFIG_WLAN_PRE80211 is not set
497# CONFIG_WLAN_80211 is not set 396# CONFIG_WLAN_80211 is not set
498# CONFIG_IWLWIFI_LEDS is not set 397
398#
399# Enable WiMAX (Networking options) to see the WiMAX drivers
400#
499# CONFIG_WAN is not set 401# CONFIG_WAN is not set
500# CONFIG_PPP is not set 402# CONFIG_PPP is not set
501# CONFIG_SLIP is not set 403# CONFIG_SLIP is not set
@@ -503,40 +405,12 @@ CONFIG_NET_ETHERNET=y
503# CONFIG_NETPOLL is not set 405# CONFIG_NETPOLL is not set
504# CONFIG_NET_POLL_CONTROLLER is not set 406# CONFIG_NET_POLL_CONTROLLER is not set
505# CONFIG_ISDN is not set 407# CONFIG_ISDN is not set
408# CONFIG_PHONE is not set
506 409
507# 410#
508# Input device support 411# Input device support
509# 412#
510CONFIG_INPUT=y 413# CONFIG_INPUT is not set
511# CONFIG_INPUT_FF_MEMLESS is not set
512# CONFIG_INPUT_POLLDEV is not set
513
514#
515# Userland interfaces
516#
517# CONFIG_INPUT_MOUSEDEV is not set
518# CONFIG_INPUT_JOYDEV is not set
519CONFIG_INPUT_EVDEV=y
520# CONFIG_INPUT_EVBUG is not set
521
522#
523# Input Device Drivers
524#
525# CONFIG_INPUT_KEYBOARD is not set
526# CONFIG_INPUT_MOUSE is not set
527# CONFIG_INPUT_JOYSTICK is not set
528# CONFIG_INPUT_TABLET is not set
529CONFIG_INPUT_TOUCHSCREEN=y
530# CONFIG_TOUCHSCREEN_FUJITSU is not set
531# CONFIG_TOUCHSCREEN_GUNZE is not set
532# CONFIG_TOUCHSCREEN_ELO is not set
533# CONFIG_TOUCHSCREEN_MTOUCH is not set
534# CONFIG_TOUCHSCREEN_MK712 is not set
535# CONFIG_TOUCHSCREEN_PENMOUNT is not set
536# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
537# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
538# CONFIG_TOUCHSCREEN_UCB1400 is not set
539# CONFIG_INPUT_MISC is not set
540 414
541# 415#
542# Hardware I/O ports 416# Hardware I/O ports
@@ -559,48 +433,44 @@ CONFIG_DEVKMEM=y
559# 433#
560# Non-8250 serial port support 434# Non-8250 serial port support
561# 435#
562# CONFIG_SERIAL_IMX is not set 436CONFIG_SERIAL_CORE=y
563CONFIG_UNIX98_PTYS=y 437CONFIG_SERIAL_CORE_CONSOLE=y
564# CONFIG_LEGACY_PTYS is not set 438CONFIG_SERIAL_MCF=y
439CONFIG_SERIAL_MCF_BAUDRATE=19200
440CONFIG_SERIAL_MCF_CONSOLE=y
441# CONFIG_UNIX98_PTYS is not set
442CONFIG_LEGACY_PTYS=y
443CONFIG_LEGACY_PTY_COUNT=256
565# CONFIG_IPMI_HANDLER is not set 444# CONFIG_IPMI_HANDLER is not set
566# CONFIG_HW_RANDOM is not set 445CONFIG_HW_RANDOM=y
567# CONFIG_NVRAM is not set 446# CONFIG_HW_RANDOM_TIMERIOMEM is not set
447# CONFIG_GEN_RTC is not set
568# CONFIG_R3964 is not set 448# CONFIG_R3964 is not set
569# CONFIG_RAW_DRIVER is not set 449# CONFIG_RAW_DRIVER is not set
570# CONFIG_TCG_TPM is not set 450# CONFIG_TCG_TPM is not set
571# CONFIG_I2C is not set 451# CONFIG_I2C is not set
572# CONFIG_SPI is not set 452# CONFIG_SPI is not set
573CONFIG_HAVE_GPIO_LIB=y
574
575#
576# GPIO Support
577#
578
579#
580# I2C GPIO expanders:
581#
582
583#
584# SPI GPIO expanders:
585#
586# CONFIG_W1 is not set 453# CONFIG_W1 is not set
587# CONFIG_POWER_SUPPLY is not set 454# CONFIG_POWER_SUPPLY is not set
588# CONFIG_HWMON is not set 455# CONFIG_HWMON is not set
456# CONFIG_THERMAL is not set
457# CONFIG_THERMAL_HWMON is not set
589# CONFIG_WATCHDOG is not set 458# CONFIG_WATCHDOG is not set
459CONFIG_SSB_POSSIBLE=y
590 460
591# 461#
592# Sonics Silicon Backplane 462# Sonics Silicon Backplane
593# 463#
594CONFIG_SSB_POSSIBLE=y
595# CONFIG_SSB is not set 464# CONFIG_SSB is not set
596 465
597# 466#
598# Multifunction device drivers 467# Multifunction device drivers
599# 468#
469# CONFIG_MFD_CORE is not set
600# CONFIG_MFD_SM501 is not set 470# CONFIG_MFD_SM501 is not set
601# CONFIG_MFD_ASIC3 is not set
602# CONFIG_HTC_EGPIO is not set
603# CONFIG_HTC_PASIC3 is not set 471# CONFIG_HTC_PASIC3 is not set
472# CONFIG_MFD_TMIO is not set
473# CONFIG_REGULATOR is not set
604 474
605# 475#
606# Multimedia devices 476# Multimedia devices
@@ -616,7 +486,7 @@ CONFIG_SSB_POSSIBLE=y
616# 486#
617# Multimedia drivers 487# Multimedia drivers
618# 488#
619# CONFIG_DAB is not set 489CONFIG_DAB=y
620 490
621# 491#
622# Graphics support 492# Graphics support
@@ -630,30 +500,32 @@ CONFIG_SSB_POSSIBLE=y
630# Display device support 500# Display device support
631# 501#
632# CONFIG_DISPLAY_SUPPORT is not set 502# CONFIG_DISPLAY_SUPPORT is not set
633
634#
635# Sound
636#
637# CONFIG_SOUND is not set 503# CONFIG_SOUND is not set
638# CONFIG_HID_SUPPORT is not set
639# CONFIG_USB_SUPPORT is not set 504# CONFIG_USB_SUPPORT is not set
640# CONFIG_MMC is not set 505# CONFIG_MMC is not set
506# CONFIG_MEMSTICK is not set
641# CONFIG_NEW_LEDS is not set 507# CONFIG_NEW_LEDS is not set
642CONFIG_RTC_LIB=y 508# CONFIG_ACCESSIBILITY is not set
643# CONFIG_RTC_CLASS is not set 509# CONFIG_RTC_CLASS is not set
510# CONFIG_DMADEVICES is not set
511# CONFIG_AUXDISPLAY is not set
644# CONFIG_UIO is not set 512# CONFIG_UIO is not set
513# CONFIG_STAGING is not set
645 514
646# 515#
647# File systems 516# File systems
648# 517#
649# CONFIG_EXT2_FS is not set 518CONFIG_EXT2_FS=y
519# CONFIG_EXT2_FS_XATTR is not set
650# CONFIG_EXT3_FS is not set 520# CONFIG_EXT3_FS is not set
651# CONFIG_EXT4DEV_FS is not set 521# CONFIG_EXT4_FS is not set
652# CONFIG_REISERFS_FS is not set 522# CONFIG_REISERFS_FS is not set
653# CONFIG_JFS_FS is not set 523# CONFIG_JFS_FS is not set
654# CONFIG_FS_POSIX_ACL is not set 524# CONFIG_FS_POSIX_ACL is not set
525# CONFIG_FILE_LOCKING is not set
655# CONFIG_XFS_FS is not set 526# CONFIG_XFS_FS is not set
656# CONFIG_OCFS2_FS is not set 527# CONFIG_OCFS2_FS is not set
528# CONFIG_BTRFS_FS is not set
657# CONFIG_DNOTIFY is not set 529# CONFIG_DNOTIFY is not set
658# CONFIG_INOTIFY is not set 530# CONFIG_INOTIFY is not set
659# CONFIG_QUOTA is not set 531# CONFIG_QUOTA is not set
@@ -662,6 +534,11 @@ CONFIG_RTC_LIB=y
662# CONFIG_FUSE_FS is not set 534# CONFIG_FUSE_FS is not set
663 535
664# 536#
537# Caches
538#
539# CONFIG_FSCACHE is not set
540
541#
665# CD-ROM/DVD Filesystems 542# CD-ROM/DVD Filesystems
666# 543#
667# CONFIG_ISO9660_FS is not set 544# CONFIG_ISO9660_FS is not set
@@ -680,14 +557,10 @@ CONFIG_RTC_LIB=y
680CONFIG_PROC_FS=y 557CONFIG_PROC_FS=y
681CONFIG_PROC_SYSCTL=y 558CONFIG_PROC_SYSCTL=y
682CONFIG_SYSFS=y 559CONFIG_SYSFS=y
683CONFIG_TMPFS=y 560# CONFIG_TMPFS is not set
684# CONFIG_TMPFS_POSIX_ACL is not set
685# CONFIG_HUGETLB_PAGE is not set 561# CONFIG_HUGETLB_PAGE is not set
686# CONFIG_CONFIGFS_FS is not set 562# CONFIG_CONFIGFS_FS is not set
687 563CONFIG_MISC_FILESYSTEMS=y
688#
689# Miscellaneous filesystems
690#
691# CONFIG_ADFS_FS is not set 564# CONFIG_ADFS_FS is not set
692# CONFIG_AFFS_FS is not set 565# CONFIG_AFFS_FS is not set
693# CONFIG_HFS_FS is not set 566# CONFIG_HFS_FS is not set
@@ -695,90 +568,30 @@ CONFIG_TMPFS=y
695# CONFIG_BEFS_FS is not set 568# CONFIG_BEFS_FS is not set
696# CONFIG_BFS_FS is not set 569# CONFIG_BFS_FS is not set
697# CONFIG_EFS_FS is not set 570# CONFIG_EFS_FS is not set
698CONFIG_JFFS2_FS=y 571# CONFIG_JFFS2_FS is not set
699CONFIG_JFFS2_FS_DEBUG=0
700CONFIG_JFFS2_FS_WRITEBUFFER=y
701# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
702# CONFIG_JFFS2_SUMMARY is not set
703# CONFIG_JFFS2_FS_XATTR is not set
704# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
705CONFIG_JFFS2_ZLIB=y
706# CONFIG_JFFS2_LZO is not set
707CONFIG_JFFS2_RTIME=y
708# CONFIG_JFFS2_RUBIN is not set
709# CONFIG_CRAMFS is not set 572# CONFIG_CRAMFS is not set
573# CONFIG_SQUASHFS is not set
710# CONFIG_VXFS_FS is not set 574# CONFIG_VXFS_FS is not set
711# CONFIG_MINIX_FS is not set 575# CONFIG_MINIX_FS is not set
576# CONFIG_OMFS_FS is not set
712# CONFIG_HPFS_FS is not set 577# CONFIG_HPFS_FS is not set
713# CONFIG_QNX4FS_FS is not set 578# CONFIG_QNX4FS_FS is not set
714# CONFIG_ROMFS_FS is not set 579CONFIG_ROMFS_FS=y
580# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
581CONFIG_ROMFS_BACKED_BY_MTD=y
582# CONFIG_ROMFS_BACKED_BY_BOTH is not set
583CONFIG_ROMFS_ON_MTD=y
715# CONFIG_SYSV_FS is not set 584# CONFIG_SYSV_FS is not set
716# CONFIG_UFS_FS is not set 585# CONFIG_UFS_FS is not set
717CONFIG_NETWORK_FILESYSTEMS=y 586# CONFIG_NILFS2_FS is not set
718CONFIG_NFS_FS=y 587# CONFIG_NETWORK_FILESYSTEMS is not set
719CONFIG_NFS_V3=y
720# CONFIG_NFS_V3_ACL is not set
721# CONFIG_NFS_V4 is not set
722# CONFIG_NFSD is not set
723CONFIG_ROOT_NFS=y
724CONFIG_LOCKD=y
725CONFIG_LOCKD_V4=y
726CONFIG_NFS_COMMON=y
727CONFIG_SUNRPC=y
728# CONFIG_SUNRPC_BIND34 is not set
729# CONFIG_RPCSEC_GSS_KRB5 is not set
730# CONFIG_RPCSEC_GSS_SPKM3 is not set
731# CONFIG_SMB_FS is not set
732# CONFIG_CIFS is not set
733# CONFIG_NCP_FS is not set
734# CONFIG_CODA_FS is not set
735# CONFIG_AFS_FS is not set
736 588
737# 589#
738# Partition Types 590# Partition Types
739# 591#
740# CONFIG_PARTITION_ADVANCED is not set 592# CONFIG_PARTITION_ADVANCED is not set
741CONFIG_MSDOS_PARTITION=y 593CONFIG_MSDOS_PARTITION=y
742CONFIG_NLS=y 594# CONFIG_NLS is not set
743CONFIG_NLS_DEFAULT="iso8859-1"
744CONFIG_NLS_CODEPAGE_437=m
745# CONFIG_NLS_CODEPAGE_737 is not set
746# CONFIG_NLS_CODEPAGE_775 is not set
747CONFIG_NLS_CODEPAGE_850=m
748# CONFIG_NLS_CODEPAGE_852 is not set
749# CONFIG_NLS_CODEPAGE_855 is not set
750# CONFIG_NLS_CODEPAGE_857 is not set
751# CONFIG_NLS_CODEPAGE_860 is not set
752# CONFIG_NLS_CODEPAGE_861 is not set
753# CONFIG_NLS_CODEPAGE_862 is not set
754# CONFIG_NLS_CODEPAGE_863 is not set
755# CONFIG_NLS_CODEPAGE_864 is not set
756# CONFIG_NLS_CODEPAGE_865 is not set
757# CONFIG_NLS_CODEPAGE_866 is not set
758# CONFIG_NLS_CODEPAGE_869 is not set
759# CONFIG_NLS_CODEPAGE_936 is not set
760# CONFIG_NLS_CODEPAGE_950 is not set
761# CONFIG_NLS_CODEPAGE_932 is not set
762# CONFIG_NLS_CODEPAGE_949 is not set
763# CONFIG_NLS_CODEPAGE_874 is not set
764# CONFIG_NLS_ISO8859_8 is not set
765# CONFIG_NLS_CODEPAGE_1250 is not set
766# CONFIG_NLS_CODEPAGE_1251 is not set
767# CONFIG_NLS_ASCII is not set
768CONFIG_NLS_ISO8859_1=y
769# CONFIG_NLS_ISO8859_2 is not set
770# CONFIG_NLS_ISO8859_3 is not set
771# CONFIG_NLS_ISO8859_4 is not set
772# CONFIG_NLS_ISO8859_5 is not set
773# CONFIG_NLS_ISO8859_6 is not set
774# CONFIG_NLS_ISO8859_7 is not set
775# CONFIG_NLS_ISO8859_9 is not set
776# CONFIG_NLS_ISO8859_13 is not set
777# CONFIG_NLS_ISO8859_14 is not set
778CONFIG_NLS_ISO8859_15=m
779# CONFIG_NLS_KOI8_R is not set
780# CONFIG_NLS_KOI8_U is not set
781# CONFIG_NLS_UTF8 is not set
782# CONFIG_DLM is not set 595# CONFIG_DLM is not set
783 596
784# 597#
@@ -794,33 +607,39 @@ CONFIG_FRAME_WARN=1024
794# CONFIG_HEADERS_CHECK is not set 607# CONFIG_HEADERS_CHECK is not set
795# CONFIG_DEBUG_KERNEL is not set 608# CONFIG_DEBUG_KERNEL is not set
796# CONFIG_DEBUG_BUGVERBOSE is not set 609# CONFIG_DEBUG_BUGVERBOSE is not set
797CONFIG_FRAME_POINTER=y 610# CONFIG_DEBUG_MEMORY_INIT is not set
611# CONFIG_RCU_CPU_STALL_DETECTOR is not set
612# CONFIG_SYSCTL_SYSCALL_CHECK is not set
798# CONFIG_SAMPLES is not set 613# CONFIG_SAMPLES is not set
799# CONFIG_DEBUG_USER is not set 614# CONFIG_FULLDEBUG is not set
615# CONFIG_HIGHPROFILE is not set
616CONFIG_BOOTPARAM=y
617CONFIG_BOOTPARAM_STRING="root=/dev/mtdblock0"
618# CONFIG_NO_KERNEL_MSG is not set
619# CONFIG_BDM_DISABLE is not set
800 620
801# 621#
802# Security options 622# Security options
803# 623#
804# CONFIG_KEYS is not set 624# CONFIG_KEYS is not set
805# CONFIG_SECURITY is not set 625# CONFIG_SECURITY is not set
626# CONFIG_SECURITYFS is not set
806# CONFIG_SECURITY_FILE_CAPABILITIES is not set 627# CONFIG_SECURITY_FILE_CAPABILITIES is not set
807# CONFIG_CRYPTO is not set 628# CONFIG_CRYPTO is not set
629# CONFIG_BINARY_PRINTF is not set
808 630
809# 631#
810# Library routines 632# Library routines
811# 633#
812CONFIG_BITREVERSE=y 634CONFIG_BITREVERSE=y
813# CONFIG_GENERIC_FIND_FIRST_BIT is not set 635CONFIG_GENERIC_FIND_LAST_BIT=y
814# CONFIG_GENERIC_FIND_NEXT_BIT is not set
815# CONFIG_CRC_CCITT is not set 636# CONFIG_CRC_CCITT is not set
816# CONFIG_CRC16 is not set 637# CONFIG_CRC16 is not set
638# CONFIG_CRC_T10DIF is not set
817# CONFIG_CRC_ITU_T is not set 639# CONFIG_CRC_ITU_T is not set
818CONFIG_CRC32=y 640CONFIG_CRC32=y
819# CONFIG_CRC7 is not set 641# CONFIG_CRC7 is not set
820# CONFIG_LIBCRC32C is not set 642# CONFIG_LIBCRC32C is not set
821CONFIG_ZLIB_INFLATE=y
822CONFIG_ZLIB_DEFLATE=y
823CONFIG_PLIST=y
824CONFIG_HAS_IOMEM=y 643CONFIG_HAS_IOMEM=y
825CONFIG_HAS_IOPORT=y
826CONFIG_HAS_DMA=y 644CONFIG_HAS_DMA=y
645CONFIG_NLATTR=y
diff --git a/arch/m68knommu/configs/m5275evb_defconfig b/arch/m68knommu/configs/m5275evb_defconfig
index 0d1256f5addb..dc5c621d419c 100644
--- a/arch/m68knommu/configs/m5275evb_defconfig
+++ b/arch/m68knommu/configs/m5275evb_defconfig
@@ -1,6 +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.26-rc1 3# Linux kernel version: 2.6.30-rc2
4# Wed Apr 22 23:29:01 2009
4# 5#
5CONFIG_M68K=y 6CONFIG_M68K=y
6# CONFIG_MMU is not set 7# CONFIG_MMU is not set
@@ -15,9 +16,10 @@ CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_HARDIRQS=y 16CONFIG_GENERIC_HARDIRQS=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 17CONFIG_GENERIC_CALIBRATE_DELAY=y
17CONFIG_GENERIC_TIME=y 18CONFIG_GENERIC_TIME=y
19CONFIG_GENERIC_CMOS_UPDATE=y
18CONFIG_TIME_LOW_RES=y 20CONFIG_TIME_LOW_RES=y
21CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_NO_IOPORT=y 22CONFIG_NO_IOPORT=y
20CONFIG_ARCH_SUPPORTS_AOUT=y
21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
22 24
23# 25#
@@ -33,10 +35,19 @@ CONFIG_LOCALVERSION_AUTO=y
33# CONFIG_BSD_PROCESS_ACCT is not set 35# CONFIG_BSD_PROCESS_ACCT is not set
34# CONFIG_TASKSTATS is not set 36# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 37# CONFIG_AUDIT is not set
38
39#
40# RCU Subsystem
41#
42CONFIG_CLASSIC_RCU=y
43# CONFIG_TREE_RCU is not set
44# CONFIG_PREEMPT_RCU is not set
45# CONFIG_TREE_RCU_TRACE is not set
46# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 47# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 48CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 49# CONFIG_GROUP_SCHED is not set
50# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 51# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 52# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 53# CONFIG_NAMESPACES is not set
@@ -44,44 +55,37 @@ CONFIG_LOG_BUF_SHIFT=14
44# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 55# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
45CONFIG_SYSCTL=y 56CONFIG_SYSCTL=y
46CONFIG_EMBEDDED=y 57CONFIG_EMBEDDED=y
47# CONFIG_UID16 is not set 58CONFIG_UID16=y
48# CONFIG_SYSCTL_SYSCALL is not set 59CONFIG_SYSCTL_SYSCALL=y
49# CONFIG_KALLSYMS is not set 60# CONFIG_KALLSYMS is not set
61# CONFIG_STRIP_ASM_SYMS is not set
50# CONFIG_HOTPLUG is not set 62# CONFIG_HOTPLUG is not set
51CONFIG_PRINTK=y 63CONFIG_PRINTK=y
52CONFIG_BUG=y 64CONFIG_BUG=y
53CONFIG_ELF_CORE=y 65CONFIG_ELF_CORE=y
54# CONFIG_COMPAT_BRK is not set
55CONFIG_BASE_FULL=y 66CONFIG_BASE_FULL=y
56# CONFIG_FUTEX is not set 67# CONFIG_FUTEX is not set
57# CONFIG_EPOLL is not set 68# CONFIG_EPOLL is not set
58# CONFIG_SIGNALFD is not set 69# CONFIG_SIGNALFD is not set
59# CONFIG_TIMERFD is not set 70# CONFIG_TIMERFD is not set
60# CONFIG_EVENTFD is not set 71# CONFIG_EVENTFD is not set
72# CONFIG_AIO is not set
61# CONFIG_VM_EVENT_COUNTERS is not set 73# CONFIG_VM_EVENT_COUNTERS is not set
62CONFIG_SLAB=y 74# CONFIG_SLUB_DEBUG is not set
63# CONFIG_SLUB is not set 75CONFIG_COMPAT_BRK=y
76# CONFIG_SLAB is not set
77CONFIG_SLUB=y
64# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
65# CONFIG_PROFILING is not set 79# CONFIG_PROFILING is not set
66# CONFIG_MARKERS is not set 80# CONFIG_MARKERS is not set
67# CONFIG_HAVE_OPROFILE is not set 81# CONFIG_SLOW_WORK is not set
68# CONFIG_HAVE_KPROBES is not set 82# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
69# CONFIG_HAVE_KRETPROBES is not set
70# CONFIG_HAVE_DMA_ATTRS is not set
71CONFIG_SLABINFO=y
72CONFIG_TINY_SHMEM=y
73CONFIG_BASE_SMALL=0 83CONFIG_BASE_SMALL=0
74CONFIG_MODULES=y 84# CONFIG_MODULES is not set
75CONFIG_MODULE_UNLOAD=y
76# CONFIG_MODULE_FORCE_UNLOAD is not set
77# CONFIG_MODVERSIONS is not set
78# CONFIG_MODULE_SRCVERSION_ALL is not set
79# CONFIG_KMOD is not set
80CONFIG_BLOCK=y 85CONFIG_BLOCK=y
81# CONFIG_LBD is not set 86# CONFIG_LBD is not set
82# CONFIG_BLK_DEV_IO_TRACE is not set
83# CONFIG_LSF is not set
84# CONFIG_BLK_DEV_BSG is not set 87# CONFIG_BLK_DEV_BSG is not set
88# CONFIG_BLK_DEV_INTEGRITY is not set
85 89
86# 90#
87# IO Schedulers 91# IO Schedulers
@@ -95,7 +99,7 @@ CONFIG_IOSCHED_NOOP=y
95# CONFIG_DEFAULT_CFQ is not set 99# CONFIG_DEFAULT_CFQ is not set
96CONFIG_DEFAULT_NOOP=y 100CONFIG_DEFAULT_NOOP=y
97CONFIG_DEFAULT_IOSCHED="noop" 101CONFIG_DEFAULT_IOSCHED="noop"
98CONFIG_CLASSIC_RCU=y 102# CONFIG_FREEZER is not set
99 103
100# 104#
101# Processor type and features 105# Processor type and features
@@ -148,44 +152,39 @@ CONFIG_RAMAUTOBIT=y
148# CONFIG_ROM is not set 152# CONFIG_ROM is not set
149CONFIG_RAMKERNEL=y 153CONFIG_RAMKERNEL=y
150# CONFIG_ROMKERNEL is not set 154# CONFIG_ROMKERNEL is not set
155CONFIG_PREEMPT_NONE=y
156# CONFIG_PREEMPT_VOLUNTARY is not set
157# CONFIG_PREEMPT is not set
158# CONFIG_NO_HZ is not set
159# CONFIG_HIGH_RES_TIMERS is not set
160CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
151CONFIG_SELECT_MEMORY_MODEL=y 161CONFIG_SELECT_MEMORY_MODEL=y
152CONFIG_FLATMEM_MANUAL=y 162CONFIG_FLATMEM_MANUAL=y
153# CONFIG_DISCONTIGMEM_MANUAL is not set 163# CONFIG_DISCONTIGMEM_MANUAL is not set
154# CONFIG_SPARSEMEM_MANUAL is not set 164# CONFIG_SPARSEMEM_MANUAL is not set
155CONFIG_FLATMEM=y 165CONFIG_FLATMEM=y
156CONFIG_FLAT_NODE_MEM_MAP=y 166CONFIG_FLAT_NODE_MEM_MAP=y
157# CONFIG_SPARSEMEM_STATIC is not set
158# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
159CONFIG_PAGEFLAGS_EXTENDED=y 167CONFIG_PAGEFLAGS_EXTENDED=y
160CONFIG_SPLIT_PTLOCK_CPUS=4 168CONFIG_SPLIT_PTLOCK_CPUS=4
161# CONFIG_RESOURCES_64BIT is not set 169# CONFIG_PHYS_ADDR_T_64BIT is not set
162CONFIG_ZONE_DMA_FLAG=1 170CONFIG_ZONE_DMA_FLAG=1
163CONFIG_VIRT_TO_BUS=y 171CONFIG_VIRT_TO_BUS=y
172# CONFIG_UNEVICTABLE_LRU is not set
164CONFIG_ISA_DMA_API=y 173CONFIG_ISA_DMA_API=y
165 174
166# 175#
167# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
168#
169# CONFIG_PCI is not set
170# CONFIG_ARCH_SUPPORTS_MSI is not set
171
172#
173# Executable file formats 176# Executable file formats
174# 177#
175CONFIG_BINFMT_FLAT=y 178CONFIG_BINFMT_FLAT=y
176# CONFIG_BINFMT_ZFLAT is not set 179# CONFIG_BINFMT_ZFLAT is not set
177# CONFIG_BINFMT_SHARED_FLAT is not set 180# CONFIG_BINFMT_SHARED_FLAT is not set
178# CONFIG_BINFMT_AOUT is not set 181# CONFIG_HAVE_AOUT is not set
179# CONFIG_BINFMT_MISC is not set 182# CONFIG_BINFMT_MISC is not set
180 183
181# 184#
182# Power management options 185# Power management options
183# 186#
184# CONFIG_PM is not set 187# CONFIG_PM is not set
185
186#
187# Networking
188#
189CONFIG_NET=y 188CONFIG_NET=y
190 189
191# 190#
@@ -226,6 +225,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
226# CONFIG_TIPC is not set 225# CONFIG_TIPC is not set
227# CONFIG_ATM is not set 226# CONFIG_ATM is not set
228# CONFIG_BRIDGE is not set 227# CONFIG_BRIDGE is not set
228# CONFIG_NET_DSA is not set
229# CONFIG_VLAN_8021Q is not set 229# CONFIG_VLAN_8021Q is not set
230# CONFIG_DECNET is not set 230# CONFIG_DECNET is not set
231# CONFIG_LLC2 is not set 231# CONFIG_LLC2 is not set
@@ -235,7 +235,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
235# CONFIG_LAPB is not set 235# CONFIG_LAPB is not set
236# CONFIG_ECONET is not set 236# CONFIG_ECONET is not set
237# CONFIG_WAN_ROUTER is not set 237# CONFIG_WAN_ROUTER is not set
238# CONFIG_PHONET is not set
238# CONFIG_NET_SCHED is not set 239# CONFIG_NET_SCHED is not set
240# CONFIG_DCB is not set
239 241
240# 242#
241# Network testing 243# Network testing
@@ -246,14 +248,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
246# CONFIG_IRDA is not set 248# CONFIG_IRDA is not set
247# CONFIG_BT is not set 249# CONFIG_BT is not set
248# CONFIG_AF_RXRPC is not set 250# CONFIG_AF_RXRPC is not set
249 251# CONFIG_WIRELESS is not set
250# 252# CONFIG_WIMAX is not set
251# Wireless
252#
253# CONFIG_CFG80211 is not set
254# CONFIG_WIRELESS_EXT is not set
255# CONFIG_MAC80211 is not set
256# CONFIG_IEEE80211 is not set
257# CONFIG_RFKILL is not set 253# CONFIG_RFKILL is not set
258# CONFIG_NET_9P is not set 254# CONFIG_NET_9P is not set
259 255
@@ -333,6 +329,11 @@ CONFIG_MTD_UCLINUX=y
333# CONFIG_MTD_ONENAND is not set 329# CONFIG_MTD_ONENAND is not set
334 330
335# 331#
332# LPDDR flash memory drivers
333#
334# CONFIG_MTD_LPDDR is not set
335
336#
336# UBI - Unsorted block images 337# UBI - Unsorted block images
337# 338#
338# CONFIG_MTD_UBI is not set 339# CONFIG_MTD_UBI is not set
@@ -347,6 +348,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
347# CONFIG_BLK_DEV_XIP is not set 348# CONFIG_BLK_DEV_XIP is not set
348# CONFIG_CDROM_PKTCDVD is not set 349# CONFIG_CDROM_PKTCDVD is not set
349# CONFIG_ATA_OVER_ETH is not set 350# CONFIG_ATA_OVER_ETH is not set
351# CONFIG_BLK_DEV_HD is not set
350# CONFIG_MISC_DEVICES is not set 352# CONFIG_MISC_DEVICES is not set
351CONFIG_HAVE_IDE=y 353CONFIG_HAVE_IDE=y
352# CONFIG_IDE is not set 354# CONFIG_IDE is not set
@@ -360,7 +362,7 @@ CONFIG_HAVE_IDE=y
360# CONFIG_SCSI_NETLINK is not set 362# CONFIG_SCSI_NETLINK is not set
361# CONFIG_MD is not set 363# CONFIG_MD is not set
362CONFIG_NETDEVICES=y 364CONFIG_NETDEVICES=y
363# CONFIG_NETDEVICES_MULTIQUEUE is not set 365CONFIG_COMPAT_NET_DEV_OPS=y
364# CONFIG_DUMMY is not set 366# CONFIG_DUMMY is not set
365# CONFIG_BONDING is not set 367# CONFIG_BONDING is not set
366# CONFIG_MACVLAN is not set 368# CONFIG_MACVLAN is not set
@@ -370,10 +372,15 @@ CONFIG_NETDEVICES=y
370# CONFIG_PHYLIB is not set 372# CONFIG_PHYLIB is not set
371CONFIG_NET_ETHERNET=y 373CONFIG_NET_ETHERNET=y
372# CONFIG_MII is not set 374# CONFIG_MII is not set
375# CONFIG_ETHOC is not set
376# CONFIG_DNET is not set
373# CONFIG_IBM_NEW_EMAC_ZMII is not set 377# CONFIG_IBM_NEW_EMAC_ZMII is not set
374# CONFIG_IBM_NEW_EMAC_RGMII is not set 378# CONFIG_IBM_NEW_EMAC_RGMII is not set
375# CONFIG_IBM_NEW_EMAC_TAH is not set 379# CONFIG_IBM_NEW_EMAC_TAH is not set
376# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 380# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
381# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
382# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
383# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
377# CONFIG_B44 is not set 384# CONFIG_B44 is not set
378CONFIG_FEC=y 385CONFIG_FEC=y
379CONFIG_FEC2=y 386CONFIG_FEC2=y
@@ -385,8 +392,10 @@ CONFIG_FEC2=y
385# 392#
386# CONFIG_WLAN_PRE80211 is not set 393# CONFIG_WLAN_PRE80211 is not set
387# CONFIG_WLAN_80211 is not set 394# CONFIG_WLAN_80211 is not set
388# CONFIG_IWLWIFI is not set 395
389# CONFIG_IWLWIFI_LEDS is not set 396#
397# Enable WiMAX (Networking options) to see the WiMAX drivers
398#
390# CONFIG_WAN is not set 399# CONFIG_WAN is not set
391CONFIG_PPP=y 400CONFIG_PPP=y
392# CONFIG_PPP_MULTILINK is not set 401# CONFIG_PPP_MULTILINK is not set
@@ -421,7 +430,7 @@ CONFIG_SLHC=y
421# Character devices 430# Character devices
422# 431#
423# CONFIG_VT is not set 432# CONFIG_VT is not set
424# CONFIG_DEVKMEM is not set 433CONFIG_DEVKMEM=y
425# CONFIG_SERIAL_NONSTANDARD is not set 434# CONFIG_SERIAL_NONSTANDARD is not set
426 435
427# 436#
@@ -434,7 +443,6 @@ CONFIG_SLHC=y
434# 443#
435CONFIG_SERIAL_CORE=y 444CONFIG_SERIAL_CORE=y
436CONFIG_SERIAL_CORE_CONSOLE=y 445CONFIG_SERIAL_CORE_CONSOLE=y
437# CONFIG_SERIAL_COLDFIRE is not set
438CONFIG_SERIAL_MCF=y 446CONFIG_SERIAL_MCF=y
439CONFIG_SERIAL_MCF_BAUDRATE=19200 447CONFIG_SERIAL_MCF_BAUDRATE=19200
440CONFIG_SERIAL_MCF_CONSOLE=y 448CONFIG_SERIAL_MCF_CONSOLE=y
@@ -442,7 +450,8 @@ CONFIG_SERIAL_MCF_CONSOLE=y
442CONFIG_LEGACY_PTYS=y 450CONFIG_LEGACY_PTYS=y
443CONFIG_LEGACY_PTY_COUNT=256 451CONFIG_LEGACY_PTY_COUNT=256
444# CONFIG_IPMI_HANDLER is not set 452# CONFIG_IPMI_HANDLER is not set
445# CONFIG_HW_RANDOM is not set 453CONFIG_HW_RANDOM=y
454# CONFIG_HW_RANDOM_TIMERIOMEM is not set
446# CONFIG_GEN_RTC is not set 455# CONFIG_GEN_RTC is not set
447# CONFIG_R3964 is not set 456# CONFIG_R3964 is not set
448# CONFIG_RAW_DRIVER is not set 457# CONFIG_RAW_DRIVER is not set
@@ -453,19 +462,23 @@ CONFIG_LEGACY_PTY_COUNT=256
453# CONFIG_POWER_SUPPLY is not set 462# CONFIG_POWER_SUPPLY is not set
454# CONFIG_HWMON is not set 463# CONFIG_HWMON is not set
455# CONFIG_THERMAL is not set 464# CONFIG_THERMAL is not set
465# CONFIG_THERMAL_HWMON is not set
456# CONFIG_WATCHDOG is not set 466# CONFIG_WATCHDOG is not set
467CONFIG_SSB_POSSIBLE=y
457 468
458# 469#
459# Sonics Silicon Backplane 470# Sonics Silicon Backplane
460# 471#
461CONFIG_SSB_POSSIBLE=y
462# CONFIG_SSB is not set 472# CONFIG_SSB is not set
463 473
464# 474#
465# Multifunction device drivers 475# Multifunction device drivers
466# 476#
477# CONFIG_MFD_CORE is not set
467# CONFIG_MFD_SM501 is not set 478# CONFIG_MFD_SM501 is not set
468# CONFIG_HTC_PASIC3 is not set 479# CONFIG_HTC_PASIC3 is not set
480# CONFIG_MFD_TMIO is not set
481# CONFIG_REGULATOR is not set
469 482
470# 483#
471# Multimedia devices 484# Multimedia devices
@@ -476,6 +489,7 @@ CONFIG_SSB_POSSIBLE=y
476# 489#
477# CONFIG_VIDEO_DEV is not set 490# CONFIG_VIDEO_DEV is not set
478# CONFIG_DVB_CORE is not set 491# CONFIG_DVB_CORE is not set
492# CONFIG_VIDEO_MEDIA is not set
479 493
480# 494#
481# Multimedia drivers 495# Multimedia drivers
@@ -494,10 +508,6 @@ CONFIG_DAB=y
494# Display device support 508# Display device support
495# 509#
496# CONFIG_DISPLAY_SUPPORT is not set 510# CONFIG_DISPLAY_SUPPORT is not set
497
498#
499# Sound
500#
501# CONFIG_SOUND is not set 511# CONFIG_SOUND is not set
502# CONFIG_USB_SUPPORT is not set 512# CONFIG_USB_SUPPORT is not set
503# CONFIG_MMC is not set 513# CONFIG_MMC is not set
@@ -505,7 +515,10 @@ CONFIG_DAB=y
505# CONFIG_NEW_LEDS is not set 515# CONFIG_NEW_LEDS is not set
506# CONFIG_ACCESSIBILITY is not set 516# CONFIG_ACCESSIBILITY is not set
507# CONFIG_RTC_CLASS is not set 517# CONFIG_RTC_CLASS is not set
518# CONFIG_DMADEVICES is not set
519# CONFIG_AUXDISPLAY is not set
508# CONFIG_UIO is not set 520# CONFIG_UIO is not set
521# CONFIG_STAGING is not set
509 522
510# 523#
511# File systems 524# File systems
@@ -513,12 +526,14 @@ CONFIG_DAB=y
513CONFIG_EXT2_FS=y 526CONFIG_EXT2_FS=y
514# CONFIG_EXT2_FS_XATTR is not set 527# CONFIG_EXT2_FS_XATTR is not set
515# CONFIG_EXT3_FS is not set 528# CONFIG_EXT3_FS is not set
516# CONFIG_EXT4DEV_FS is not set 529# CONFIG_EXT4_FS is not set
517# CONFIG_REISERFS_FS is not set 530# CONFIG_REISERFS_FS is not set
518# CONFIG_JFS_FS is not set 531# CONFIG_JFS_FS is not set
519# CONFIG_FS_POSIX_ACL is not set 532# CONFIG_FS_POSIX_ACL is not set
533# CONFIG_FILE_LOCKING is not set
520# CONFIG_XFS_FS is not set 534# CONFIG_XFS_FS is not set
521# CONFIG_OCFS2_FS is not set 535# CONFIG_OCFS2_FS is not set
536# CONFIG_BTRFS_FS is not set
522# CONFIG_DNOTIFY is not set 537# CONFIG_DNOTIFY is not set
523# CONFIG_INOTIFY is not set 538# CONFIG_INOTIFY is not set
524# CONFIG_QUOTA is not set 539# CONFIG_QUOTA is not set
@@ -527,6 +542,11 @@ CONFIG_EXT2_FS=y
527# CONFIG_FUSE_FS is not set 542# CONFIG_FUSE_FS is not set
528 543
529# 544#
545# Caches
546#
547# CONFIG_FSCACHE is not set
548
549#
530# CD-ROM/DVD Filesystems 550# CD-ROM/DVD Filesystems
531# 551#
532# CONFIG_ISO9660_FS is not set 552# CONFIG_ISO9660_FS is not set
@@ -548,10 +568,7 @@ CONFIG_SYSFS=y
548# CONFIG_TMPFS is not set 568# CONFIG_TMPFS is not set
549# CONFIG_HUGETLB_PAGE is not set 569# CONFIG_HUGETLB_PAGE is not set
550# CONFIG_CONFIGFS_FS is not set 570# CONFIG_CONFIGFS_FS is not set
551 571CONFIG_MISC_FILESYSTEMS=y
552#
553# Miscellaneous filesystems
554#
555# CONFIG_ADFS_FS is not set 572# CONFIG_ADFS_FS is not set
556# CONFIG_AFFS_FS is not set 573# CONFIG_AFFS_FS is not set
557# CONFIG_HFS_FS is not set 574# CONFIG_HFS_FS is not set
@@ -561,21 +578,21 @@ CONFIG_SYSFS=y
561# CONFIG_EFS_FS is not set 578# CONFIG_EFS_FS is not set
562# CONFIG_JFFS2_FS is not set 579# CONFIG_JFFS2_FS is not set
563# CONFIG_CRAMFS is not set 580# CONFIG_CRAMFS is not set
581# CONFIG_SQUASHFS is not set
564# CONFIG_VXFS_FS is not set 582# CONFIG_VXFS_FS is not set
565# CONFIG_MINIX_FS is not set 583# CONFIG_MINIX_FS is not set
584# CONFIG_OMFS_FS is not set
566# CONFIG_HPFS_FS is not set 585# CONFIG_HPFS_FS is not set
567# CONFIG_QNX4FS_FS is not set 586# CONFIG_QNX4FS_FS is not set
568CONFIG_ROMFS_FS=y 587CONFIG_ROMFS_FS=y
588# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
589CONFIG_ROMFS_BACKED_BY_MTD=y
590# CONFIG_ROMFS_BACKED_BY_BOTH is not set
591CONFIG_ROMFS_ON_MTD=y
569# CONFIG_SYSV_FS is not set 592# CONFIG_SYSV_FS is not set
570# CONFIG_UFS_FS is not set 593# CONFIG_UFS_FS is not set
571CONFIG_NETWORK_FILESYSTEMS=y 594# CONFIG_NILFS2_FS is not set
572# CONFIG_NFS_FS is not set 595# CONFIG_NETWORK_FILESYSTEMS is not set
573# CONFIG_NFSD is not set
574# CONFIG_SMB_FS is not set
575# CONFIG_CIFS is not set
576# CONFIG_NCP_FS is not set
577# CONFIG_CODA_FS is not set
578# CONFIG_AFS_FS is not set
579 596
580# 597#
581# Partition Types 598# Partition Types
@@ -598,10 +615,14 @@ CONFIG_FRAME_WARN=1024
598# CONFIG_HEADERS_CHECK is not set 615# CONFIG_HEADERS_CHECK is not set
599# CONFIG_DEBUG_KERNEL is not set 616# CONFIG_DEBUG_KERNEL is not set
600# CONFIG_DEBUG_BUGVERBOSE is not set 617# CONFIG_DEBUG_BUGVERBOSE is not set
618# CONFIG_DEBUG_MEMORY_INIT is not set
619# CONFIG_RCU_CPU_STALL_DETECTOR is not set
620CONFIG_SYSCTL_SYSCALL_CHECK=y
601# CONFIG_SAMPLES is not set 621# CONFIG_SAMPLES is not set
602# CONFIG_FULLDEBUG is not set 622# CONFIG_FULLDEBUG is not set
603# CONFIG_HIGHPROFILE is not set 623# CONFIG_HIGHPROFILE is not set
604# CONFIG_BOOTPARAM is not set 624CONFIG_BOOTPARAM=y
625CONFIG_BOOTPARAM_STRING="root=/dev/mtdblock0"
605# CONFIG_NO_KERNEL_MSG is not set 626# CONFIG_NO_KERNEL_MSG is not set
606# CONFIG_BDM_DISABLE is not set 627# CONFIG_BDM_DISABLE is not set
607 628
@@ -610,18 +631,22 @@ CONFIG_FRAME_WARN=1024
610# 631#
611# CONFIG_KEYS is not set 632# CONFIG_KEYS is not set
612# CONFIG_SECURITY is not set 633# CONFIG_SECURITY is not set
634# CONFIG_SECURITYFS is not set
613# CONFIG_SECURITY_FILE_CAPABILITIES is not set 635# CONFIG_SECURITY_FILE_CAPABILITIES is not set
614# CONFIG_CRYPTO is not set 636# CONFIG_CRYPTO is not set
637# CONFIG_BINARY_PRINTF is not set
615 638
616# 639#
617# Library routines 640# Library routines
618# 641#
619# CONFIG_GENERIC_FIND_FIRST_BIT is not set 642CONFIG_GENERIC_FIND_LAST_BIT=y
620# CONFIG_CRC_CCITT is not set 643# CONFIG_CRC_CCITT is not set
621# CONFIG_CRC16 is not set 644# CONFIG_CRC16 is not set
645# CONFIG_CRC_T10DIF is not set
622# CONFIG_CRC_ITU_T is not set 646# CONFIG_CRC_ITU_T is not set
623# CONFIG_CRC32 is not set 647# CONFIG_CRC32 is not set
624# CONFIG_CRC7 is not set 648# CONFIG_CRC7 is not set
625# CONFIG_LIBCRC32C is not set 649# CONFIG_LIBCRC32C is not set
626CONFIG_HAS_IOMEM=y 650CONFIG_HAS_IOMEM=y
627CONFIG_HAS_DMA=y 651CONFIG_HAS_DMA=y
652CONFIG_NLATTR=y
diff --git a/arch/m68knommu/configs/m5307c3_defconfig b/arch/m68knommu/configs/m5307c3_defconfig
index fe2acdfa4d76..3a3f6733ae43 100644
--- a/arch/m68knommu/configs/m5307c3_defconfig
+++ b/arch/m68knommu/configs/m5307c3_defconfig
@@ -1,6 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc1 3# Linux kernel version: 2.6.30-rc2
4# 4#
5CONFIG_M68K=y 5CONFIG_M68K=y
6# CONFIG_MMU is not set 6# CONFIG_MMU is not set
@@ -15,9 +15,10 @@ CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_HARDIRQS=y 15CONFIG_GENERIC_HARDIRQS=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CMOS_UPDATE=y
18CONFIG_TIME_LOW_RES=y 19CONFIG_TIME_LOW_RES=y
20# CONFIG_GENERIC_CLOCKEVENTS is not set
19CONFIG_NO_IOPORT=y 21CONFIG_NO_IOPORT=y
20CONFIG_ARCH_SUPPORTS_AOUT=y
21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
22 23
23# 24#
@@ -33,10 +34,21 @@ CONFIG_LOCALVERSION_AUTO=y
33# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 48# CONFIG_GROUP_SCHED is not set
49# CONFIG_USER_SCHED is not set
50# CONFIG_CGROUP_SCHED is not set
51# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 52# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 53# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 54# CONFIG_NAMESPACES is not set
@@ -44,44 +56,37 @@ CONFIG_LOG_BUF_SHIFT=14
44# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 56# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
45CONFIG_SYSCTL=y 57CONFIG_SYSCTL=y
46CONFIG_EMBEDDED=y 58CONFIG_EMBEDDED=y
47# CONFIG_UID16 is not set 59CONFIG_UID16=y
48# CONFIG_SYSCTL_SYSCALL is not set 60CONFIG_SYSCTL_SYSCALL=y
49# CONFIG_KALLSYMS is not set 61# CONFIG_KALLSYMS is not set
62# CONFIG_STRIP_ASM_SYMS is not set
50# CONFIG_HOTPLUG is not set 63# CONFIG_HOTPLUG is not set
51CONFIG_PRINTK=y 64CONFIG_PRINTK=y
52CONFIG_BUG=y 65CONFIG_BUG=y
53CONFIG_ELF_CORE=y 66CONFIG_ELF_CORE=y
54# CONFIG_COMPAT_BRK is not set
55CONFIG_BASE_FULL=y 67CONFIG_BASE_FULL=y
56# CONFIG_FUTEX is not set 68# CONFIG_FUTEX is not set
57# CONFIG_EPOLL is not set 69# CONFIG_EPOLL is not set
58# CONFIG_SIGNALFD is not set 70# CONFIG_SIGNALFD is not set
59# CONFIG_TIMERFD is not set 71# CONFIG_TIMERFD is not set
60# CONFIG_EVENTFD is not set 72# CONFIG_EVENTFD is not set
73# CONFIG_AIO is not set
61# CONFIG_VM_EVENT_COUNTERS is not set 74# CONFIG_VM_EVENT_COUNTERS is not set
62CONFIG_SLAB=y 75# CONFIG_SLUB_DEBUG is not set
63# CONFIG_SLUB is not set 76CONFIG_COMPAT_BRK=y
77# CONFIG_SLAB is not set
78CONFIG_SLUB=y
64# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
65# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
66# CONFIG_MARKERS is not set 81# CONFIG_MARKERS is not set
67# CONFIG_HAVE_OPROFILE is not set 82# CONFIG_SLOW_WORK is not set
68# CONFIG_HAVE_KPROBES is not set 83# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
69# CONFIG_HAVE_KRETPROBES is not set
70# CONFIG_HAVE_DMA_ATTRS is not set
71CONFIG_SLABINFO=y
72CONFIG_TINY_SHMEM=y
73CONFIG_BASE_SMALL=0 84CONFIG_BASE_SMALL=0
74CONFIG_MODULES=y 85# CONFIG_MODULES is not set
75CONFIG_MODULE_UNLOAD=y
76# CONFIG_MODULE_FORCE_UNLOAD is not set
77# CONFIG_MODVERSIONS is not set
78# CONFIG_MODULE_SRCVERSION_ALL is not set
79# CONFIG_KMOD is not set
80CONFIG_BLOCK=y 86CONFIG_BLOCK=y
81# CONFIG_LBD is not set 87# CONFIG_LBD is not set
82# CONFIG_BLK_DEV_IO_TRACE is not set
83# CONFIG_LSF is not set
84# CONFIG_BLK_DEV_BSG is not set 88# CONFIG_BLK_DEV_BSG is not set
89# CONFIG_BLK_DEV_INTEGRITY is not set
85 90
86# 91#
87# IO Schedulers 92# IO Schedulers
@@ -95,7 +100,7 @@ CONFIG_IOSCHED_NOOP=y
95# CONFIG_DEFAULT_CFQ is not set 100# CONFIG_DEFAULT_CFQ is not set
96CONFIG_DEFAULT_NOOP=y 101CONFIG_DEFAULT_NOOP=y
97CONFIG_DEFAULT_IOSCHED="noop" 102CONFIG_DEFAULT_IOSCHED="noop"
98CONFIG_CLASSIC_RCU=y 103# CONFIG_FREEZER is not set
99 104
100# 105#
101# Processor type and features 106# Processor type and features
@@ -127,12 +132,11 @@ CONFIG_CLOCK_DIV=2
127# 132#
128# CONFIG_ARN5307 is not set 133# CONFIG_ARN5307 is not set
129CONFIG_M5307C3=y 134CONFIG_M5307C3=y
130# CONFIG_eLIA is not set
131# CONFIG_SECUREEDGEMP3 is not set 135# CONFIG_SECUREEDGEMP3 is not set
132# CONFIG_CLEOPATRA is not set 136# CONFIG_CLEOPATRA is not set
133# CONFIG_NETtel is not set 137# CONFIG_NETtel is not set
134CONFIG_FREESCALE=y 138CONFIG_FREESCALE=y
135# CONFIG_4KSTACKS is not set 139CONFIG_4KSTACKS=y
136CONFIG_HZ=100 140CONFIG_HZ=100
137 141
138# 142#
@@ -153,45 +157,36 @@ CONFIG_RAMAUTOBIT=y
153# CONFIG_ROM is not set 157# CONFIG_ROM is not set
154CONFIG_RAMKERNEL=y 158CONFIG_RAMKERNEL=y
155# CONFIG_ROMKERNEL is not set 159# CONFIG_ROMKERNEL is not set
160CONFIG_PREEMPT_NONE=y
161# CONFIG_PREEMPT_VOLUNTARY is not set
162# CONFIG_PREEMPT is not set
156CONFIG_SELECT_MEMORY_MODEL=y 163CONFIG_SELECT_MEMORY_MODEL=y
157CONFIG_FLATMEM_MANUAL=y 164CONFIG_FLATMEM_MANUAL=y
158# CONFIG_DISCONTIGMEM_MANUAL is not set 165# CONFIG_DISCONTIGMEM_MANUAL is not set
159# CONFIG_SPARSEMEM_MANUAL is not set 166# CONFIG_SPARSEMEM_MANUAL is not set
160CONFIG_FLATMEM=y 167CONFIG_FLATMEM=y
161CONFIG_FLAT_NODE_MEM_MAP=y 168CONFIG_FLAT_NODE_MEM_MAP=y
162# CONFIG_SPARSEMEM_STATIC is not set
163# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
164CONFIG_PAGEFLAGS_EXTENDED=y 169CONFIG_PAGEFLAGS_EXTENDED=y
165CONFIG_SPLIT_PTLOCK_CPUS=4 170CONFIG_SPLIT_PTLOCK_CPUS=4
166# CONFIG_RESOURCES_64BIT is not set 171# CONFIG_PHYS_ADDR_T_64BIT is not set
167CONFIG_ZONE_DMA_FLAG=1 172CONFIG_ZONE_DMA_FLAG=1
168CONFIG_VIRT_TO_BUS=y 173CONFIG_VIRT_TO_BUS=y
174# CONFIG_UNEVICTABLE_LRU is not set
169CONFIG_ISA_DMA_API=y 175CONFIG_ISA_DMA_API=y
170 176
171# 177#
172# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
173#
174# CONFIG_PCI is not set
175# CONFIG_COMEMPCI is not set
176# CONFIG_ARCH_SUPPORTS_MSI is not set
177
178#
179# Executable file formats 178# Executable file formats
180# 179#
181CONFIG_BINFMT_FLAT=y 180CONFIG_BINFMT_FLAT=y
182# CONFIG_BINFMT_ZFLAT is not set 181# CONFIG_BINFMT_ZFLAT is not set
183# CONFIG_BINFMT_SHARED_FLAT is not set 182# CONFIG_BINFMT_SHARED_FLAT is not set
184# CONFIG_BINFMT_AOUT is not set 183# CONFIG_HAVE_AOUT is not set
185# CONFIG_BINFMT_MISC is not set 184# CONFIG_BINFMT_MISC is not set
186 185
187# 186#
188# Power management options 187# Power management options
189# 188#
190# CONFIG_PM is not set 189# CONFIG_PM is not set
191
192#
193# Networking
194#
195CONFIG_NET=y 190CONFIG_NET=y
196 191
197# 192#
@@ -232,6 +227,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
232# CONFIG_TIPC is not set 227# CONFIG_TIPC is not set
233# CONFIG_ATM is not set 228# CONFIG_ATM is not set
234# CONFIG_BRIDGE is not set 229# CONFIG_BRIDGE is not set
230# CONFIG_NET_DSA is not set
235# CONFIG_VLAN_8021Q is not set 231# CONFIG_VLAN_8021Q is not set
236# CONFIG_DECNET is not set 232# CONFIG_DECNET is not set
237# CONFIG_LLC2 is not set 233# CONFIG_LLC2 is not set
@@ -241,7 +237,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
241# CONFIG_LAPB is not set 237# CONFIG_LAPB is not set
242# CONFIG_ECONET is not set 238# CONFIG_ECONET is not set
243# CONFIG_WAN_ROUTER is not set 239# CONFIG_WAN_ROUTER is not set
240# CONFIG_PHONET is not set
244# CONFIG_NET_SCHED is not set 241# CONFIG_NET_SCHED is not set
242# CONFIG_DCB is not set
245 243
246# 244#
247# Network testing 245# Network testing
@@ -252,14 +250,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
252# CONFIG_IRDA is not set 250# CONFIG_IRDA is not set
253# CONFIG_BT is not set 251# CONFIG_BT is not set
254# CONFIG_AF_RXRPC is not set 252# CONFIG_AF_RXRPC is not set
255 253# CONFIG_WIRELESS is not set
256# 254# CONFIG_WIMAX is not set
257# Wireless
258#
259# CONFIG_CFG80211 is not set
260# CONFIG_WIRELESS_EXT is not set
261# CONFIG_MAC80211 is not set
262# CONFIG_IEEE80211 is not set
263# CONFIG_RFKILL is not set 255# CONFIG_RFKILL is not set
264# CONFIG_NET_9P is not set 256# CONFIG_NET_9P is not set
265 257
@@ -274,7 +266,79 @@ CONFIG_STANDALONE=y
274CONFIG_PREVENT_FIRMWARE_BUILD=y 266CONFIG_PREVENT_FIRMWARE_BUILD=y
275# CONFIG_SYS_HYPERVISOR is not set 267# CONFIG_SYS_HYPERVISOR is not set
276# CONFIG_CONNECTOR is not set 268# CONFIG_CONNECTOR is not set
277# CONFIG_MTD is not set 269CONFIG_MTD=y
270# CONFIG_MTD_DEBUG is not set
271# CONFIG_MTD_CONCAT is not set
272CONFIG_MTD_PARTITIONS=y
273# CONFIG_MTD_REDBOOT_PARTS is not set
274# CONFIG_MTD_CMDLINE_PARTS is not set
275# CONFIG_MTD_AR7_PARTS is not set
276
277#
278# User Modules And Translation Layers
279#
280CONFIG_MTD_CHAR=y
281CONFIG_MTD_BLKDEVS=y
282CONFIG_MTD_BLOCK=y
283# CONFIG_FTL is not set
284# CONFIG_NFTL is not set
285# CONFIG_INFTL is not set
286# CONFIG_RFD_FTL is not set
287# CONFIG_SSFDC is not set
288# CONFIG_MTD_OOPS is not set
289
290#
291# RAM/ROM/Flash chip drivers
292#
293# CONFIG_MTD_CFI is not set
294# CONFIG_MTD_JEDECPROBE is not set
295CONFIG_MTD_MAP_BANK_WIDTH_1=y
296CONFIG_MTD_MAP_BANK_WIDTH_2=y
297CONFIG_MTD_MAP_BANK_WIDTH_4=y
298# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
299# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
300# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
301CONFIG_MTD_CFI_I1=y
302CONFIG_MTD_CFI_I2=y
303# CONFIG_MTD_CFI_I4 is not set
304# CONFIG_MTD_CFI_I8 is not set
305CONFIG_MTD_RAM=y
306# CONFIG_MTD_ROM is not set
307# CONFIG_MTD_ABSENT is not set
308
309#
310# Mapping drivers for chip access
311#
312# CONFIG_MTD_COMPLEX_MAPPINGS is not set
313CONFIG_MTD_UCLINUX=y
314# CONFIG_MTD_PLATRAM is not set
315
316#
317# Self-contained MTD device drivers
318#
319# CONFIG_MTD_SLRAM is not set
320# CONFIG_MTD_PHRAM is not set
321# CONFIG_MTD_MTDRAM is not set
322# CONFIG_MTD_BLOCK2MTD is not set
323
324#
325# Disk-On-Chip Device Drivers
326#
327# CONFIG_MTD_DOC2000 is not set
328# CONFIG_MTD_DOC2001 is not set
329# CONFIG_MTD_DOC2001PLUS is not set
330# CONFIG_MTD_NAND is not set
331# CONFIG_MTD_ONENAND is not set
332
333#
334# LPDDR flash memory drivers
335#
336# CONFIG_MTD_LPDDR is not set
337
338#
339# UBI - Unsorted block images
340#
341# CONFIG_MTD_UBI is not set
278# CONFIG_PARPORT is not set 342# CONFIG_PARPORT is not set
279CONFIG_BLK_DEV=y 343CONFIG_BLK_DEV=y
280# CONFIG_BLK_DEV_COW_COMMON is not set 344# CONFIG_BLK_DEV_COW_COMMON is not set
@@ -286,6 +350,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
286# CONFIG_BLK_DEV_XIP is not set 350# CONFIG_BLK_DEV_XIP is not set
287# CONFIG_CDROM_PKTCDVD is not set 351# CONFIG_CDROM_PKTCDVD is not set
288# CONFIG_ATA_OVER_ETH is not set 352# CONFIG_ATA_OVER_ETH is not set
353# CONFIG_BLK_DEV_HD is not set
289# CONFIG_MISC_DEVICES is not set 354# CONFIG_MISC_DEVICES is not set
290CONFIG_HAVE_IDE=y 355CONFIG_HAVE_IDE=y
291# CONFIG_IDE is not set 356# CONFIG_IDE is not set
@@ -299,7 +364,7 @@ CONFIG_HAVE_IDE=y
299# CONFIG_SCSI_NETLINK is not set 364# CONFIG_SCSI_NETLINK is not set
300# CONFIG_MD is not set 365# CONFIG_MD is not set
301CONFIG_NETDEVICES=y 366CONFIG_NETDEVICES=y
302# CONFIG_NETDEVICES_MULTIQUEUE is not set 367CONFIG_COMPAT_NET_DEV_OPS=y
303# CONFIG_DUMMY is not set 368# CONFIG_DUMMY is not set
304# CONFIG_BONDING is not set 369# CONFIG_BONDING is not set
305# CONFIG_MACVLAN is not set 370# CONFIG_MACVLAN is not set
@@ -309,10 +374,15 @@ CONFIG_NETDEVICES=y
309# CONFIG_PHYLIB is not set 374# CONFIG_PHYLIB is not set
310CONFIG_NET_ETHERNET=y 375CONFIG_NET_ETHERNET=y
311# CONFIG_MII is not set 376# CONFIG_MII is not set
377# CONFIG_ETHOC is not set
378# CONFIG_DNET is not set
312# CONFIG_IBM_NEW_EMAC_ZMII is not set 379# CONFIG_IBM_NEW_EMAC_ZMII is not set
313# CONFIG_IBM_NEW_EMAC_RGMII is not set 380# CONFIG_IBM_NEW_EMAC_RGMII is not set
314# CONFIG_IBM_NEW_EMAC_TAH is not set 381# CONFIG_IBM_NEW_EMAC_TAH is not set
315# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 382# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
383# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
384# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
385# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
316# CONFIG_B44 is not set 386# CONFIG_B44 is not set
317# CONFIG_NETDEV_1000 is not set 387# CONFIG_NETDEV_1000 is not set
318# CONFIG_NETDEV_10000 is not set 388# CONFIG_NETDEV_10000 is not set
@@ -322,8 +392,10 @@ CONFIG_NET_ETHERNET=y
322# 392#
323# CONFIG_WLAN_PRE80211 is not set 393# CONFIG_WLAN_PRE80211 is not set
324# CONFIG_WLAN_80211 is not set 394# CONFIG_WLAN_80211 is not set
325# CONFIG_IWLWIFI is not set 395
326# CONFIG_IWLWIFI_LEDS is not set 396#
397# Enable WiMAX (Networking options) to see the WiMAX drivers
398#
327# CONFIG_WAN is not set 399# CONFIG_WAN is not set
328CONFIG_PPP=y 400CONFIG_PPP=y
329# CONFIG_PPP_MULTILINK is not set 401# CONFIG_PPP_MULTILINK is not set
@@ -381,7 +453,7 @@ CONFIG_INPUT=y
381# Character devices 453# Character devices
382# 454#
383# CONFIG_VT is not set 455# CONFIG_VT is not set
384# CONFIG_DEVKMEM is not set 456CONFIG_DEVKMEM=y
385# CONFIG_SERIAL_NONSTANDARD is not set 457# CONFIG_SERIAL_NONSTANDARD is not set
386 458
387# 459#
@@ -394,13 +466,12 @@ CONFIG_INPUT=y
394# 466#
395CONFIG_SERIAL_CORE=y 467CONFIG_SERIAL_CORE=y
396CONFIG_SERIAL_CORE_CONSOLE=y 468CONFIG_SERIAL_CORE_CONSOLE=y
397# CONFIG_SERIAL_COLDFIRE is not set
398CONFIG_SERIAL_MCF=y 469CONFIG_SERIAL_MCF=y
399CONFIG_SERIAL_MCF_BAUDRATE=19200 470CONFIG_SERIAL_MCF_BAUDRATE=19200
400CONFIG_SERIAL_MCF_CONSOLE=y 471CONFIG_SERIAL_MCF_CONSOLE=y
401CONFIG_UNIX98_PTYS=y 472CONFIG_UNIX98_PTYS=y
402CONFIG_LEGACY_PTYS=y 473# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
403CONFIG_LEGACY_PTY_COUNT=256 474# CONFIG_LEGACY_PTYS is not set
404# CONFIG_IPMI_HANDLER is not set 475# CONFIG_IPMI_HANDLER is not set
405# CONFIG_HW_RANDOM is not set 476# CONFIG_HW_RANDOM is not set
406# CONFIG_GEN_RTC is not set 477# CONFIG_GEN_RTC is not set
@@ -413,19 +484,23 @@ CONFIG_LEGACY_PTY_COUNT=256
413# CONFIG_POWER_SUPPLY is not set 484# CONFIG_POWER_SUPPLY is not set
414# CONFIG_HWMON is not set 485# CONFIG_HWMON is not set
415# CONFIG_THERMAL is not set 486# CONFIG_THERMAL is not set
487# CONFIG_THERMAL_HWMON is not set
416# CONFIG_WATCHDOG is not set 488# CONFIG_WATCHDOG is not set
489CONFIG_SSB_POSSIBLE=y
417 490
418# 491#
419# Sonics Silicon Backplane 492# Sonics Silicon Backplane
420# 493#
421CONFIG_SSB_POSSIBLE=y
422# CONFIG_SSB is not set 494# CONFIG_SSB is not set
423 495
424# 496#
425# Multifunction device drivers 497# Multifunction device drivers
426# 498#
499# CONFIG_MFD_CORE is not set
427# CONFIG_MFD_SM501 is not set 500# CONFIG_MFD_SM501 is not set
428# CONFIG_HTC_PASIC3 is not set 501# CONFIG_HTC_PASIC3 is not set
502# CONFIG_MFD_TMIO is not set
503# CONFIG_REGULATOR is not set
429 504
430# 505#
431# Multimedia devices 506# Multimedia devices
@@ -436,6 +511,7 @@ CONFIG_SSB_POSSIBLE=y
436# 511#
437# CONFIG_VIDEO_DEV is not set 512# CONFIG_VIDEO_DEV is not set
438# CONFIG_DVB_CORE is not set 513# CONFIG_DVB_CORE is not set
514# CONFIG_VIDEO_MEDIA is not set
439 515
440# 516#
441# Multimedia drivers 517# Multimedia drivers
@@ -454,10 +530,6 @@ CONFIG_DAB=y
454# Display device support 530# Display device support
455# 531#
456# CONFIG_DISPLAY_SUPPORT is not set 532# CONFIG_DISPLAY_SUPPORT is not set
457
458#
459# Sound
460#
461# CONFIG_SOUND is not set 533# CONFIG_SOUND is not set
462# CONFIG_HID_SUPPORT is not set 534# CONFIG_HID_SUPPORT is not set
463# CONFIG_USB_SUPPORT is not set 535# CONFIG_USB_SUPPORT is not set
@@ -466,7 +538,10 @@ CONFIG_DAB=y
466# CONFIG_NEW_LEDS is not set 538# CONFIG_NEW_LEDS is not set
467# CONFIG_ACCESSIBILITY is not set 539# CONFIG_ACCESSIBILITY is not set
468# CONFIG_RTC_CLASS is not set 540# CONFIG_RTC_CLASS is not set
541# CONFIG_DMADEVICES is not set
542# CONFIG_AUXDISPLAY is not set
469# CONFIG_UIO is not set 543# CONFIG_UIO is not set
544# CONFIG_STAGING is not set
470 545
471# 546#
472# File systems 547# File systems
@@ -474,12 +549,14 @@ CONFIG_DAB=y
474CONFIG_EXT2_FS=y 549CONFIG_EXT2_FS=y
475# CONFIG_EXT2_FS_XATTR is not set 550# CONFIG_EXT2_FS_XATTR is not set
476# CONFIG_EXT3_FS is not set 551# CONFIG_EXT3_FS is not set
477# CONFIG_EXT4DEV_FS is not set 552# CONFIG_EXT4_FS is not set
478# CONFIG_REISERFS_FS is not set 553# CONFIG_REISERFS_FS is not set
479# CONFIG_JFS_FS is not set 554# CONFIG_JFS_FS is not set
480# CONFIG_FS_POSIX_ACL is not set 555# CONFIG_FS_POSIX_ACL is not set
556CONFIG_FILE_LOCKING=y
481# CONFIG_XFS_FS is not set 557# CONFIG_XFS_FS is not set
482# CONFIG_OCFS2_FS is not set 558# CONFIG_OCFS2_FS is not set
559# CONFIG_BTRFS_FS is not set
483# CONFIG_DNOTIFY is not set 560# CONFIG_DNOTIFY is not set
484# CONFIG_INOTIFY is not set 561# CONFIG_INOTIFY is not set
485# CONFIG_QUOTA is not set 562# CONFIG_QUOTA is not set
@@ -488,6 +565,11 @@ CONFIG_EXT2_FS=y
488# CONFIG_FUSE_FS is not set 565# CONFIG_FUSE_FS is not set
489 566
490# 567#
568# Caches
569#
570# CONFIG_FSCACHE is not set
571
572#
491# CD-ROM/DVD Filesystems 573# CD-ROM/DVD Filesystems
492# 574#
493# CONFIG_ISO9660_FS is not set 575# CONFIG_ISO9660_FS is not set
@@ -509,10 +591,7 @@ CONFIG_SYSFS=y
509# CONFIG_TMPFS is not set 591# CONFIG_TMPFS is not set
510# CONFIG_HUGETLB_PAGE is not set 592# CONFIG_HUGETLB_PAGE is not set
511# CONFIG_CONFIGFS_FS is not set 593# CONFIG_CONFIGFS_FS is not set
512 594CONFIG_MISC_FILESYSTEMS=y
513#
514# Miscellaneous filesystems
515#
516# CONFIG_ADFS_FS is not set 595# CONFIG_ADFS_FS is not set
517# CONFIG_AFFS_FS is not set 596# CONFIG_AFFS_FS is not set
518# CONFIG_HFS_FS is not set 597# CONFIG_HFS_FS is not set
@@ -520,14 +599,22 @@ CONFIG_SYSFS=y
520# CONFIG_BEFS_FS is not set 599# CONFIG_BEFS_FS is not set
521# CONFIG_BFS_FS is not set 600# CONFIG_BFS_FS is not set
522# CONFIG_EFS_FS is not set 601# CONFIG_EFS_FS is not set
602# CONFIG_JFFS2_FS is not set
523# CONFIG_CRAMFS is not set 603# CONFIG_CRAMFS is not set
604# CONFIG_SQUASHFS is not set
524# CONFIG_VXFS_FS is not set 605# CONFIG_VXFS_FS is not set
525# CONFIG_MINIX_FS is not set 606# CONFIG_MINIX_FS is not set
607# CONFIG_OMFS_FS is not set
526# CONFIG_HPFS_FS is not set 608# CONFIG_HPFS_FS is not set
527# CONFIG_QNX4FS_FS is not set 609# CONFIG_QNX4FS_FS is not set
528CONFIG_ROMFS_FS=y 610CONFIG_ROMFS_FS=y
611# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
612CONFIG_ROMFS_BACKED_BY_MTD=y
613# CONFIG_ROMFS_BACKED_BY_BOTH is not set
614CONFIG_ROMFS_ON_MTD=y
529# CONFIG_SYSV_FS is not set 615# CONFIG_SYSV_FS is not set
530# CONFIG_UFS_FS is not set 616# CONFIG_UFS_FS is not set
617# CONFIG_NILFS2_FS is not set
531# CONFIG_NETWORK_FILESYSTEMS is not set 618# CONFIG_NETWORK_FILESYSTEMS is not set
532 619
533# 620#
@@ -551,10 +638,14 @@ CONFIG_FRAME_WARN=1024
551# CONFIG_HEADERS_CHECK is not set 638# CONFIG_HEADERS_CHECK is not set
552# CONFIG_DEBUG_KERNEL is not set 639# CONFIG_DEBUG_KERNEL is not set
553# CONFIG_DEBUG_BUGVERBOSE is not set 640# CONFIG_DEBUG_BUGVERBOSE is not set
641# CONFIG_DEBUG_MEMORY_INIT is not set
642# CONFIG_RCU_CPU_STALL_DETECTOR is not set
643CONFIG_SYSCTL_SYSCALL_CHECK=y
554# CONFIG_SAMPLES is not set 644# CONFIG_SAMPLES is not set
555CONFIG_FULLDEBUG=y 645CONFIG_FULLDEBUG=y
556# CONFIG_HIGHPROFILE is not set 646# CONFIG_HIGHPROFILE is not set
557# CONFIG_BOOTPARAM is not set 647CONFIG_BOOTPARAM=y
648CONFIG_BOOTPARAM_STRING="root=/dev/mtdblock0"
558# CONFIG_NO_KERNEL_MSG is not set 649# CONFIG_NO_KERNEL_MSG is not set
559# CONFIG_BDM_DISABLE is not set 650# CONFIG_BDM_DISABLE is not set
560 651
@@ -563,18 +654,22 @@ CONFIG_FULLDEBUG=y
563# 654#
564# CONFIG_KEYS is not set 655# CONFIG_KEYS is not set
565# CONFIG_SECURITY is not set 656# CONFIG_SECURITY is not set
657# CONFIG_SECURITYFS is not set
566# CONFIG_SECURITY_FILE_CAPABILITIES is not set 658# CONFIG_SECURITY_FILE_CAPABILITIES is not set
567# CONFIG_CRYPTO is not set 659# CONFIG_CRYPTO is not set
660# CONFIG_BINARY_PRINTF is not set
568 661
569# 662#
570# Library routines 663# Library routines
571# 664#
572# CONFIG_GENERIC_FIND_FIRST_BIT is not set 665CONFIG_GENERIC_FIND_LAST_BIT=y
573# CONFIG_CRC_CCITT is not set 666# CONFIG_CRC_CCITT is not set
574# CONFIG_CRC16 is not set 667# CONFIG_CRC16 is not set
668# CONFIG_CRC_T10DIF is not set
575# CONFIG_CRC_ITU_T is not set 669# CONFIG_CRC_ITU_T is not set
576# CONFIG_CRC32 is not set 670# CONFIG_CRC32 is not set
577# CONFIG_CRC7 is not set 671# CONFIG_CRC7 is not set
578# CONFIG_LIBCRC32C is not set 672# CONFIG_LIBCRC32C is not set
579CONFIG_HAS_IOMEM=y 673CONFIG_HAS_IOMEM=y
580CONFIG_HAS_DMA=y 674CONFIG_HAS_DMA=y
675CONFIG_NLATTR=y
diff --git a/arch/m68knommu/configs/m5407c3_defconfig b/arch/m68knommu/configs/m5407c3_defconfig
index 1118936d20e3..97b6cde2fc19 100644
--- a/arch/m68knommu/configs/m5407c3_defconfig
+++ b/arch/m68knommu/configs/m5407c3_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.26-rc1 3# Linux kernel version: 2.6.30-rc2
4# Wed May 7 10:25:16 2008 4# Thu Apr 23 09:21:40 2009
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7# CONFIG_MMU is not set 7# CONFIG_MMU is not set
@@ -16,9 +16,10 @@ CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_HARDIRQS=y 16CONFIG_GENERIC_HARDIRQS=y
17CONFIG_GENERIC_CALIBRATE_DELAY=y 17CONFIG_GENERIC_CALIBRATE_DELAY=y
18CONFIG_GENERIC_TIME=y 18CONFIG_GENERIC_TIME=y
19CONFIG_GENERIC_CMOS_UPDATE=y
19CONFIG_TIME_LOW_RES=y 20CONFIG_TIME_LOW_RES=y
21# CONFIG_GENERIC_CLOCKEVENTS is not set
20CONFIG_NO_IOPORT=y 22CONFIG_NO_IOPORT=y
21CONFIG_ARCH_SUPPORTS_AOUT=y
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23 24
24# 25#
@@ -34,10 +35,19 @@ CONFIG_LOCALVERSION_AUTO=y
34# CONFIG_BSD_PROCESS_ACCT is not set 35# CONFIG_BSD_PROCESS_ACCT is not set
35# CONFIG_TASKSTATS is not set 36# CONFIG_TASKSTATS is not set
36# CONFIG_AUDIT is not set 37# CONFIG_AUDIT is not set
38
39#
40# RCU Subsystem
41#
42CONFIG_CLASSIC_RCU=y
43# CONFIG_TREE_RCU is not set
44# CONFIG_PREEMPT_RCU is not set
45# CONFIG_TREE_RCU_TRACE is not set
46# CONFIG_PREEMPT_RCU_TRACE is not set
37# CONFIG_IKCONFIG is not set 47# CONFIG_IKCONFIG is not set
38CONFIG_LOG_BUF_SHIFT=14 48CONFIG_LOG_BUF_SHIFT=14
39# CONFIG_CGROUPS is not set
40# CONFIG_GROUP_SCHED is not set 49# CONFIG_GROUP_SCHED is not set
50# CONFIG_CGROUPS is not set
41# CONFIG_SYSFS_DEPRECATED_V2 is not set 51# CONFIG_SYSFS_DEPRECATED_V2 is not set
42# CONFIG_RELAY is not set 52# CONFIG_RELAY is not set
43# CONFIG_NAMESPACES is not set 53# CONFIG_NAMESPACES is not set
@@ -45,44 +55,43 @@ CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 55# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 56CONFIG_SYSCTL=y
47CONFIG_EMBEDDED=y 57CONFIG_EMBEDDED=y
48# CONFIG_UID16 is not set 58CONFIG_UID16=y
49# CONFIG_SYSCTL_SYSCALL is not set 59CONFIG_SYSCTL_SYSCALL=y
50# CONFIG_KALLSYMS is not set 60# CONFIG_KALLSYMS is not set
61# CONFIG_STRIP_ASM_SYMS is not set
51# CONFIG_HOTPLUG is not set 62# CONFIG_HOTPLUG is not set
52CONFIG_PRINTK=y 63CONFIG_PRINTK=y
53CONFIG_BUG=y 64CONFIG_BUG=y
54CONFIG_ELF_CORE=y 65CONFIG_ELF_CORE=y
55# CONFIG_COMPAT_BRK is not set
56CONFIG_BASE_FULL=y 66CONFIG_BASE_FULL=y
57# CONFIG_FUTEX is not set 67# CONFIG_FUTEX is not set
58# CONFIG_EPOLL is not set 68# CONFIG_EPOLL is not set
59# CONFIG_SIGNALFD is not set 69# CONFIG_SIGNALFD is not set
60# CONFIG_TIMERFD is not set 70# CONFIG_TIMERFD is not set
61# CONFIG_EVENTFD is not set 71# CONFIG_EVENTFD is not set
72# CONFIG_AIO is not set
62# CONFIG_VM_EVENT_COUNTERS is not set 73# CONFIG_VM_EVENT_COUNTERS is not set
63CONFIG_SLAB=y 74CONFIG_SLUB_DEBUG=y
64# CONFIG_SLUB is not set 75CONFIG_COMPAT_BRK=y
76# CONFIG_SLAB is not set
77CONFIG_SLUB=y
65# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
66# CONFIG_PROFILING is not set 79# CONFIG_PROFILING is not set
67# CONFIG_MARKERS is not set 80# CONFIG_MARKERS is not set
68# CONFIG_HAVE_OPROFILE is not set 81# CONFIG_SLOW_WORK is not set
69# CONFIG_HAVE_KPROBES is not set 82# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
70# CONFIG_HAVE_KRETPROBES is not set
71# CONFIG_HAVE_DMA_ATTRS is not set
72CONFIG_SLABINFO=y 83CONFIG_SLABINFO=y
73CONFIG_TINY_SHMEM=y
74CONFIG_BASE_SMALL=0 84CONFIG_BASE_SMALL=0
75CONFIG_MODULES=y 85CONFIG_MODULES=y
86# CONFIG_MODULE_FORCE_LOAD is not set
76CONFIG_MODULE_UNLOAD=y 87CONFIG_MODULE_UNLOAD=y
77# CONFIG_MODULE_FORCE_UNLOAD is not set 88# CONFIG_MODULE_FORCE_UNLOAD is not set
78# CONFIG_MODVERSIONS is not set 89# CONFIG_MODVERSIONS is not set
79# CONFIG_MODULE_SRCVERSION_ALL is not set 90# CONFIG_MODULE_SRCVERSION_ALL is not set
80# CONFIG_KMOD is not set
81CONFIG_BLOCK=y 91CONFIG_BLOCK=y
82# CONFIG_LBD is not set 92# CONFIG_LBD is not set
83# CONFIG_BLK_DEV_IO_TRACE is not set
84# CONFIG_LSF is not set
85# CONFIG_BLK_DEV_BSG is not set 93# CONFIG_BLK_DEV_BSG is not set
94# CONFIG_BLK_DEV_INTEGRITY is not set
86 95
87# 96#
88# IO Schedulers 97# IO Schedulers
@@ -96,7 +105,7 @@ CONFIG_IOSCHED_NOOP=y
96# CONFIG_DEFAULT_CFQ is not set 105# CONFIG_DEFAULT_CFQ is not set
97CONFIG_DEFAULT_NOOP=y 106CONFIG_DEFAULT_NOOP=y
98CONFIG_DEFAULT_IOSCHED="noop" 107CONFIG_DEFAULT_IOSCHED="noop"
99CONFIG_CLASSIC_RCU=y 108# CONFIG_FREEZER is not set
100 109
101# 110#
102# Processor type and features 111# Processor type and features
@@ -149,45 +158,36 @@ CONFIG_RAMAUTOBIT=y
149# CONFIG_ROM is not set 158# CONFIG_ROM is not set
150CONFIG_RAMKERNEL=y 159CONFIG_RAMKERNEL=y
151# CONFIG_ROMKERNEL is not set 160# CONFIG_ROMKERNEL is not set
161CONFIG_PREEMPT_NONE=y
162# CONFIG_PREEMPT_VOLUNTARY is not set
163# CONFIG_PREEMPT is not set
152CONFIG_SELECT_MEMORY_MODEL=y 164CONFIG_SELECT_MEMORY_MODEL=y
153CONFIG_FLATMEM_MANUAL=y 165CONFIG_FLATMEM_MANUAL=y
154# CONFIG_DISCONTIGMEM_MANUAL is not set 166# CONFIG_DISCONTIGMEM_MANUAL is not set
155# CONFIG_SPARSEMEM_MANUAL is not set 167# CONFIG_SPARSEMEM_MANUAL is not set
156CONFIG_FLATMEM=y 168CONFIG_FLATMEM=y
157CONFIG_FLAT_NODE_MEM_MAP=y 169CONFIG_FLAT_NODE_MEM_MAP=y
158# CONFIG_SPARSEMEM_STATIC is not set
159# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
160CONFIG_PAGEFLAGS_EXTENDED=y 170CONFIG_PAGEFLAGS_EXTENDED=y
161CONFIG_SPLIT_PTLOCK_CPUS=4 171CONFIG_SPLIT_PTLOCK_CPUS=4
162# CONFIG_RESOURCES_64BIT is not set 172# CONFIG_PHYS_ADDR_T_64BIT is not set
163CONFIG_ZONE_DMA_FLAG=1 173CONFIG_ZONE_DMA_FLAG=1
164CONFIG_VIRT_TO_BUS=y 174CONFIG_VIRT_TO_BUS=y
175# CONFIG_UNEVICTABLE_LRU is not set
165CONFIG_ISA_DMA_API=y 176CONFIG_ISA_DMA_API=y
166 177
167# 178#
168# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
169#
170# CONFIG_PCI is not set
171# CONFIG_COMEMPCI is not set
172# CONFIG_ARCH_SUPPORTS_MSI is not set
173
174#
175# Executable file formats 179# Executable file formats
176# 180#
177CONFIG_BINFMT_FLAT=y 181CONFIG_BINFMT_FLAT=y
178# CONFIG_BINFMT_ZFLAT is not set 182# CONFIG_BINFMT_ZFLAT is not set
179# CONFIG_BINFMT_SHARED_FLAT is not set 183# CONFIG_BINFMT_SHARED_FLAT is not set
180# CONFIG_BINFMT_AOUT is not set 184# CONFIG_HAVE_AOUT is not set
181# CONFIG_BINFMT_MISC is not set 185# CONFIG_BINFMT_MISC is not set
182 186
183# 187#
184# Power management options 188# Power management options
185# 189#
186# CONFIG_PM is not set 190# CONFIG_PM is not set
187
188#
189# Networking
190#
191CONFIG_NET=y 191CONFIG_NET=y
192 192
193# 193#
@@ -228,6 +228,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
228# CONFIG_TIPC is not set 228# CONFIG_TIPC is not set
229# CONFIG_ATM is not set 229# CONFIG_ATM is not set
230# CONFIG_BRIDGE is not set 230# CONFIG_BRIDGE is not set
231# CONFIG_NET_DSA is not set
231# CONFIG_VLAN_8021Q is not set 232# CONFIG_VLAN_8021Q is not set
232# CONFIG_DECNET is not set 233# CONFIG_DECNET is not set
233# CONFIG_LLC2 is not set 234# CONFIG_LLC2 is not set
@@ -237,7 +238,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
237# CONFIG_LAPB is not set 238# CONFIG_LAPB is not set
238# CONFIG_ECONET is not set 239# CONFIG_ECONET is not set
239# CONFIG_WAN_ROUTER is not set 240# CONFIG_WAN_ROUTER is not set
241# CONFIG_PHONET is not set
240# CONFIG_NET_SCHED is not set 242# CONFIG_NET_SCHED is not set
243# CONFIG_DCB is not set
241 244
242# 245#
243# Network testing 246# Network testing
@@ -248,14 +251,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
248# CONFIG_IRDA is not set 251# CONFIG_IRDA is not set
249# CONFIG_BT is not set 252# CONFIG_BT is not set
250# CONFIG_AF_RXRPC is not set 253# CONFIG_AF_RXRPC is not set
251 254# CONFIG_WIRELESS is not set
252# 255# CONFIG_WIMAX is not set
253# Wireless
254#
255# CONFIG_CFG80211 is not set
256# CONFIG_WIRELESS_EXT is not set
257# CONFIG_MAC80211 is not set
258# CONFIG_IEEE80211 is not set
259# CONFIG_RFKILL is not set 256# CONFIG_RFKILL is not set
260# CONFIG_NET_9P is not set 257# CONFIG_NET_9P is not set
261 258
@@ -274,6 +271,7 @@ CONFIG_MTD=y
274# CONFIG_MTD_DEBUG is not set 271# CONFIG_MTD_DEBUG is not set
275# CONFIG_MTD_CONCAT is not set 272# CONFIG_MTD_CONCAT is not set
276CONFIG_MTD_PARTITIONS=y 273CONFIG_MTD_PARTITIONS=y
274# CONFIG_MTD_TESTS is not set
277# CONFIG_MTD_REDBOOT_PARTS is not set 275# CONFIG_MTD_REDBOOT_PARTS is not set
278# CONFIG_MTD_CMDLINE_PARTS is not set 276# CONFIG_MTD_CMDLINE_PARTS is not set
279# CONFIG_MTD_AR7_PARTS is not set 277# CONFIG_MTD_AR7_PARTS is not set
@@ -335,6 +333,11 @@ CONFIG_MTD_UCLINUX=y
335# CONFIG_MTD_ONENAND is not set 333# CONFIG_MTD_ONENAND is not set
336 334
337# 335#
336# LPDDR flash memory drivers
337#
338# CONFIG_MTD_LPDDR is not set
339
340#
338# UBI - Unsorted block images 341# UBI - Unsorted block images
339# 342#
340# CONFIG_MTD_UBI is not set 343# CONFIG_MTD_UBI is not set
@@ -349,6 +352,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
349# CONFIG_BLK_DEV_XIP is not set 352# CONFIG_BLK_DEV_XIP is not set
350# CONFIG_CDROM_PKTCDVD is not set 353# CONFIG_CDROM_PKTCDVD is not set
351# CONFIG_ATA_OVER_ETH is not set 354# CONFIG_ATA_OVER_ETH is not set
355# CONFIG_BLK_DEV_HD is not set
352# CONFIG_MISC_DEVICES is not set 356# CONFIG_MISC_DEVICES is not set
353CONFIG_HAVE_IDE=y 357CONFIG_HAVE_IDE=y
354# CONFIG_IDE is not set 358# CONFIG_IDE is not set
@@ -362,7 +366,7 @@ CONFIG_HAVE_IDE=y
362# CONFIG_SCSI_NETLINK is not set 366# CONFIG_SCSI_NETLINK is not set
363# CONFIG_MD is not set 367# CONFIG_MD is not set
364CONFIG_NETDEVICES=y 368CONFIG_NETDEVICES=y
365# CONFIG_NETDEVICES_MULTIQUEUE is not set 369CONFIG_COMPAT_NET_DEV_OPS=y
366# CONFIG_DUMMY is not set 370# CONFIG_DUMMY is not set
367# CONFIG_BONDING is not set 371# CONFIG_BONDING is not set
368# CONFIG_MACVLAN is not set 372# CONFIG_MACVLAN is not set
@@ -372,10 +376,15 @@ CONFIG_NETDEVICES=y
372# CONFIG_PHYLIB is not set 376# CONFIG_PHYLIB is not set
373CONFIG_NET_ETHERNET=y 377CONFIG_NET_ETHERNET=y
374# CONFIG_MII is not set 378# CONFIG_MII is not set
379# CONFIG_ETHOC is not set
380# CONFIG_DNET is not set
375# CONFIG_IBM_NEW_EMAC_ZMII is not set 381# CONFIG_IBM_NEW_EMAC_ZMII is not set
376# CONFIG_IBM_NEW_EMAC_RGMII is not set 382# CONFIG_IBM_NEW_EMAC_RGMII is not set
377# CONFIG_IBM_NEW_EMAC_TAH is not set 383# CONFIG_IBM_NEW_EMAC_TAH is not set
378# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 384# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
385# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
386# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
387# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
379# CONFIG_B44 is not set 388# CONFIG_B44 is not set
380# CONFIG_NETDEV_1000 is not set 389# CONFIG_NETDEV_1000 is not set
381# CONFIG_NETDEV_10000 is not set 390# CONFIG_NETDEV_10000 is not set
@@ -385,8 +394,10 @@ CONFIG_NET_ETHERNET=y
385# 394#
386# CONFIG_WLAN_PRE80211 is not set 395# CONFIG_WLAN_PRE80211 is not set
387# CONFIG_WLAN_80211 is not set 396# CONFIG_WLAN_80211 is not set
388# CONFIG_IWLWIFI is not set 397
389# CONFIG_IWLWIFI_LEDS is not set 398#
399# Enable WiMAX (Networking options) to see the WiMAX drivers
400#
390# CONFIG_WAN is not set 401# CONFIG_WAN is not set
391CONFIG_PPP=y 402CONFIG_PPP=y
392# CONFIG_PPP_MULTILINK is not set 403# CONFIG_PPP_MULTILINK is not set
@@ -409,39 +420,22 @@ CONFIG_SLHC=y
409# 420#
410# Input device support 421# Input device support
411# 422#
412CONFIG_INPUT=y 423# CONFIG_INPUT is not set
413# CONFIG_INPUT_FF_MEMLESS is not set
414# CONFIG_INPUT_POLLDEV is not set
415
416#
417# Userland interfaces
418#
419# CONFIG_INPUT_MOUSEDEV is not set
420# CONFIG_INPUT_JOYDEV is not set
421# CONFIG_INPUT_EVDEV is not set
422# CONFIG_INPUT_EVBUG is not set
423
424#
425# Input Device Drivers
426#
427# CONFIG_INPUT_KEYBOARD is not set
428# CONFIG_INPUT_MOUSE is not set
429# CONFIG_INPUT_JOYSTICK is not set
430# CONFIG_INPUT_TABLET is not set
431# CONFIG_INPUT_TOUCHSCREEN is not set
432# CONFIG_INPUT_MISC is not set
433 424
434# 425#
435# Hardware I/O ports 426# Hardware I/O ports
436# 427#
437# CONFIG_SERIO is not set 428CONFIG_SERIO=y
429CONFIG_SERIO_SERPORT=y
430# CONFIG_SERIO_LIBPS2 is not set
431# CONFIG_SERIO_RAW is not set
438# CONFIG_GAMEPORT is not set 432# CONFIG_GAMEPORT is not set
439 433
440# 434#
441# Character devices 435# Character devices
442# 436#
443# CONFIG_VT is not set 437# CONFIG_VT is not set
444# CONFIG_DEVKMEM is not set 438CONFIG_DEVKMEM=y
445# CONFIG_SERIAL_NONSTANDARD is not set 439# CONFIG_SERIAL_NONSTANDARD is not set
446 440
447# 441#
@@ -454,7 +448,6 @@ CONFIG_INPUT=y
454# 448#
455CONFIG_SERIAL_CORE=y 449CONFIG_SERIAL_CORE=y
456CONFIG_SERIAL_CORE_CONSOLE=y 450CONFIG_SERIAL_CORE_CONSOLE=y
457# CONFIG_SERIAL_COLDFIRE is not set
458CONFIG_SERIAL_MCF=y 451CONFIG_SERIAL_MCF=y
459CONFIG_SERIAL_MCF_BAUDRATE=19200 452CONFIG_SERIAL_MCF_BAUDRATE=19200
460CONFIG_SERIAL_MCF_CONSOLE=y 453CONFIG_SERIAL_MCF_CONSOLE=y
@@ -473,19 +466,23 @@ CONFIG_LEGACY_PTY_COUNT=256
473# CONFIG_POWER_SUPPLY is not set 466# CONFIG_POWER_SUPPLY is not set
474# CONFIG_HWMON is not set 467# CONFIG_HWMON is not set
475# CONFIG_THERMAL is not set 468# CONFIG_THERMAL is not set
469# CONFIG_THERMAL_HWMON is not set
476# CONFIG_WATCHDOG is not set 470# CONFIG_WATCHDOG is not set
471CONFIG_SSB_POSSIBLE=y
477 472
478# 473#
479# Sonics Silicon Backplane 474# Sonics Silicon Backplane
480# 475#
481CONFIG_SSB_POSSIBLE=y
482# CONFIG_SSB is not set 476# CONFIG_SSB is not set
483 477
484# 478#
485# Multifunction device drivers 479# Multifunction device drivers
486# 480#
481# CONFIG_MFD_CORE is not set
487# CONFIG_MFD_SM501 is not set 482# CONFIG_MFD_SM501 is not set
488# CONFIG_HTC_PASIC3 is not set 483# CONFIG_HTC_PASIC3 is not set
484# CONFIG_MFD_TMIO is not set
485# CONFIG_REGULATOR is not set
489 486
490# 487#
491# Multimedia devices 488# Multimedia devices
@@ -496,6 +493,7 @@ CONFIG_SSB_POSSIBLE=y
496# 493#
497# CONFIG_VIDEO_DEV is not set 494# CONFIG_VIDEO_DEV is not set
498# CONFIG_DVB_CORE is not set 495# CONFIG_DVB_CORE is not set
496# CONFIG_VIDEO_MEDIA is not set
499 497
500# 498#
501# Multimedia drivers 499# Multimedia drivers
@@ -514,19 +512,17 @@ CONFIG_DAB=y
514# Display device support 512# Display device support
515# 513#
516# CONFIG_DISPLAY_SUPPORT is not set 514# CONFIG_DISPLAY_SUPPORT is not set
517
518#
519# Sound
520#
521# CONFIG_SOUND is not set 515# CONFIG_SOUND is not set
522# CONFIG_HID_SUPPORT is not set
523# CONFIG_USB_SUPPORT is not set 516# CONFIG_USB_SUPPORT is not set
524# CONFIG_MMC is not set 517# CONFIG_MMC is not set
525# CONFIG_MEMSTICK is not set 518# CONFIG_MEMSTICK is not set
526# CONFIG_NEW_LEDS is not set 519# CONFIG_NEW_LEDS is not set
527# CONFIG_ACCESSIBILITY is not set 520# CONFIG_ACCESSIBILITY is not set
528# CONFIG_RTC_CLASS is not set 521# CONFIG_RTC_CLASS is not set
522# CONFIG_DMADEVICES is not set
523# CONFIG_AUXDISPLAY is not set
529# CONFIG_UIO is not set 524# CONFIG_UIO is not set
525# CONFIG_STAGING is not set
530 526
531# 527#
532# File systems 528# File systems
@@ -534,12 +530,14 @@ CONFIG_DAB=y
534CONFIG_EXT2_FS=y 530CONFIG_EXT2_FS=y
535# CONFIG_EXT2_FS_XATTR is not set 531# CONFIG_EXT2_FS_XATTR is not set
536# CONFIG_EXT3_FS is not set 532# CONFIG_EXT3_FS is not set
537# CONFIG_EXT4DEV_FS is not set 533# CONFIG_EXT4_FS is not set
538# CONFIG_REISERFS_FS is not set 534# CONFIG_REISERFS_FS is not set
539# CONFIG_JFS_FS is not set 535# CONFIG_JFS_FS is not set
540# CONFIG_FS_POSIX_ACL is not set 536# CONFIG_FS_POSIX_ACL is not set
537# CONFIG_FILE_LOCKING is not set
541# CONFIG_XFS_FS is not set 538# CONFIG_XFS_FS is not set
542# CONFIG_OCFS2_FS is not set 539# CONFIG_OCFS2_FS is not set
540# CONFIG_BTRFS_FS is not set
543# CONFIG_DNOTIFY is not set 541# CONFIG_DNOTIFY is not set
544# CONFIG_INOTIFY is not set 542# CONFIG_INOTIFY is not set
545# CONFIG_QUOTA is not set 543# CONFIG_QUOTA is not set
@@ -548,6 +546,11 @@ CONFIG_EXT2_FS=y
548# CONFIG_FUSE_FS is not set 546# CONFIG_FUSE_FS is not set
549 547
550# 548#
549# Caches
550#
551# CONFIG_FSCACHE is not set
552
553#
551# CD-ROM/DVD Filesystems 554# CD-ROM/DVD Filesystems
552# 555#
553# CONFIG_ISO9660_FS is not set 556# CONFIG_ISO9660_FS is not set
@@ -569,10 +572,7 @@ CONFIG_SYSFS=y
569# CONFIG_TMPFS is not set 572# CONFIG_TMPFS is not set
570# CONFIG_HUGETLB_PAGE is not set 573# CONFIG_HUGETLB_PAGE is not set
571# CONFIG_CONFIGFS_FS is not set 574# CONFIG_CONFIGFS_FS is not set
572 575CONFIG_MISC_FILESYSTEMS=y
573#
574# Miscellaneous filesystems
575#
576# CONFIG_ADFS_FS is not set 576# CONFIG_ADFS_FS is not set
577# CONFIG_AFFS_FS is not set 577# CONFIG_AFFS_FS is not set
578# CONFIG_HFS_FS is not set 578# CONFIG_HFS_FS is not set
@@ -582,13 +582,20 @@ CONFIG_SYSFS=y
582# CONFIG_EFS_FS is not set 582# CONFIG_EFS_FS is not set
583# CONFIG_JFFS2_FS is not set 583# CONFIG_JFFS2_FS is not set
584# CONFIG_CRAMFS is not set 584# CONFIG_CRAMFS is not set
585# CONFIG_SQUASHFS is not set
585# CONFIG_VXFS_FS is not set 586# CONFIG_VXFS_FS is not set
586# CONFIG_MINIX_FS is not set 587# CONFIG_MINIX_FS is not set
588# CONFIG_OMFS_FS is not set
587# CONFIG_HPFS_FS is not set 589# CONFIG_HPFS_FS is not set
588# CONFIG_QNX4FS_FS is not set 590# CONFIG_QNX4FS_FS is not set
589CONFIG_ROMFS_FS=y 591CONFIG_ROMFS_FS=y
592# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
593CONFIG_ROMFS_BACKED_BY_MTD=y
594# CONFIG_ROMFS_BACKED_BY_BOTH is not set
595CONFIG_ROMFS_ON_MTD=y
590# CONFIG_SYSV_FS is not set 596# CONFIG_SYSV_FS is not set
591# CONFIG_UFS_FS is not set 597# CONFIG_UFS_FS is not set
598# CONFIG_NILFS2_FS is not set
592# CONFIG_NETWORK_FILESYSTEMS is not set 599# CONFIG_NETWORK_FILESYSTEMS is not set
593 600
594# 601#
@@ -611,11 +618,17 @@ CONFIG_FRAME_WARN=1024
611# CONFIG_DEBUG_FS is not set 618# CONFIG_DEBUG_FS is not set
612# CONFIG_HEADERS_CHECK is not set 619# CONFIG_HEADERS_CHECK is not set
613# CONFIG_DEBUG_KERNEL is not set 620# CONFIG_DEBUG_KERNEL is not set
621# CONFIG_SLUB_DEBUG_ON is not set
622# CONFIG_SLUB_STATS is not set
614# CONFIG_DEBUG_BUGVERBOSE is not set 623# CONFIG_DEBUG_BUGVERBOSE is not set
624# CONFIG_DEBUG_MEMORY_INIT is not set
625# CONFIG_RCU_CPU_STALL_DETECTOR is not set
626CONFIG_SYSCTL_SYSCALL_CHECK=y
615# CONFIG_SAMPLES is not set 627# CONFIG_SAMPLES is not set
616# CONFIG_FULLDEBUG is not set 628# CONFIG_FULLDEBUG is not set
617# CONFIG_HIGHPROFILE is not set 629# CONFIG_HIGHPROFILE is not set
618# CONFIG_BOOTPARAM is not set 630CONFIG_BOOTPARAM=y
631CONFIG_BOOTPARAM_STRING="root=/dev/mtdblock0"
619# CONFIG_NO_KERNEL_MSG is not set 632# CONFIG_NO_KERNEL_MSG is not set
620# CONFIG_BDM_DISABLE is not set 633# CONFIG_BDM_DISABLE is not set
621 634
@@ -624,18 +637,22 @@ CONFIG_FRAME_WARN=1024
624# 637#
625# CONFIG_KEYS is not set 638# CONFIG_KEYS is not set
626# CONFIG_SECURITY is not set 639# CONFIG_SECURITY is not set
640# CONFIG_SECURITYFS is not set
627# CONFIG_SECURITY_FILE_CAPABILITIES is not set 641# CONFIG_SECURITY_FILE_CAPABILITIES is not set
628# CONFIG_CRYPTO is not set 642# CONFIG_CRYPTO is not set
643# CONFIG_BINARY_PRINTF is not set
629 644
630# 645#
631# Library routines 646# Library routines
632# 647#
633# CONFIG_GENERIC_FIND_FIRST_BIT is not set 648CONFIG_GENERIC_FIND_LAST_BIT=y
634# CONFIG_CRC_CCITT is not set 649# CONFIG_CRC_CCITT is not set
635# CONFIG_CRC16 is not set 650# CONFIG_CRC16 is not set
651# CONFIG_CRC_T10DIF is not set
636# CONFIG_CRC_ITU_T is not set 652# CONFIG_CRC_ITU_T is not set
637# CONFIG_CRC32 is not set 653# CONFIG_CRC32 is not set
638# CONFIG_CRC7 is not set 654# CONFIG_CRC7 is not set
639# CONFIG_LIBCRC32C is not set 655# CONFIG_LIBCRC32C is not set
640CONFIG_HAS_IOMEM=y 656CONFIG_HAS_IOMEM=y
641CONFIG_HAS_DMA=y 657CONFIG_HAS_DMA=y
658CONFIG_NLATTR=y
diff --git a/arch/m68knommu/kernel/asm-offsets.c b/arch/m68knommu/kernel/asm-offsets.c
index c785d07c02cc..f500dd6935d6 100644
--- a/arch/m68knommu/kernel/asm-offsets.c
+++ b/arch/m68knommu/kernel/asm-offsets.c
@@ -30,9 +30,6 @@ int main(void)
30 DEFINE(TASK_MM, offsetof(struct task_struct, mm)); 30 DEFINE(TASK_MM, offsetof(struct task_struct, mm));
31 DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm)); 31 DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm));
32 32
33 /* offsets into the kernel_stat struct */
34 DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
35
36 /* offsets into the irq_cpustat_t struct */ 33 /* offsets into the irq_cpustat_t struct */
37 DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending)); 34 DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending));
38 35
@@ -69,9 +66,6 @@ int main(void)
69 DEFINE(PT_VECTOR, offsetof(struct pt_regs, pc) + 4); 66 DEFINE(PT_VECTOR, offsetof(struct pt_regs, pc) + 4);
70#endif 67#endif
71 68
72 /* offsets into the kernel_stat struct */
73 DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
74
75 /* signal defines */ 69 /* signal defines */
76 DEFINE(SIGSEGV, SIGSEGV); 70 DEFINE(SIGSEGV, SIGSEGV);
77 DEFINE(SEGV_MAPERR, SEGV_MAPERR); 71 DEFINE(SEGV_MAPERR, SEGV_MAPERR);
diff --git a/arch/m68knommu/kernel/dma.c b/arch/m68knommu/kernel/dma.c
index 936125806638..aaf38bbbb6cd 100644
--- a/arch/m68knommu/kernel/dma.c
+++ b/arch/m68knommu/kernel/dma.c
@@ -7,10 +7,9 @@
7 7
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/string.h>
11#include <linux/device.h> 10#include <linux/device.h>
12#include <linux/dma-mapping.h> 11#include <linux/dma-mapping.h>
13#include <asm/io.h> 12#include <asm/cacheflush.h>
14 13
15void *dma_alloc_coherent(struct device *dev, size_t size, 14void *dma_alloc_coherent(struct device *dev, size_t size,
16 dma_addr_t *dma_handle, gfp_t gfp) 15 dma_addr_t *dma_handle, gfp_t gfp)
@@ -36,7 +35,39 @@ void dma_free_coherent(struct device *dev, size_t size,
36 free_pages((unsigned long)vaddr, get_order(size)); 35 free_pages((unsigned long)vaddr, get_order(size));
37} 36}
38 37
39void dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir) 38void dma_sync_single_for_device(struct device *dev, dma_addr_t handle,
39 size_t size, enum dma_data_direction dir)
40{ 40{
41 switch (dir) {
42 case DMA_TO_DEVICE:
43 flush_dcache_range(handle, size);
44 break;
45 case DMA_FROM_DEVICE:
46 /* Should be clear already */
47 break;
48 default:
49 if (printk_ratelimit())
50 printk("dma_sync_single_for_device: unsupported dir %u\n", dir);
51 break;
52 }
53}
54
55EXPORT_SYMBOL(dma_sync_single_for_device);
56dma_addr_t dma_map_single(struct device *dev, void *addr, size_t size,
57 enum dma_data_direction dir)
58{
59 dma_addr_t handle = virt_to_phys(addr);
60 flush_dcache_range(handle, size);
61 return handle;
41} 62}
63EXPORT_SYMBOL(dma_map_single);
42 64
65dma_addr_t dma_map_page(struct device *dev, struct page *page,
66 unsigned long offset, size_t size,
67 enum dma_data_direction dir)
68{
69 dma_addr_t handle = page_to_phys(page) + offset;
70 dma_sync_single_for_device(dev, handle, size, dir);
71 return handle;
72}
73EXPORT_SYMBOL(dma_map_page);
diff --git a/arch/m68knommu/kernel/syscalltable.S b/arch/m68knommu/kernel/syscalltable.S
index 1017e76f3711..c0b8782832fd 100644
--- a/arch/m68knommu/kernel/syscalltable.S
+++ b/arch/m68knommu/kernel/syscalltable.S
@@ -347,6 +347,8 @@ ENTRY(sys_call_table)
347 .long sys_dup3 347 .long sys_dup3
348 .long sys_pipe2 348 .long sys_pipe2
349 .long sys_inotify_init1 349 .long sys_inotify_init1
350 .long sys_preadv
351 .long sys_pwritev /* 330 */
350 352
351 .rept NR_syscalls-(.-sys_call_table)/4 353 .rept NR_syscalls-(.-sys_call_table)/4
352 .long sys_ni_syscall 354 .long sys_ni_syscall
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S
index 69ba9b10767a..b7fe505e358d 100644
--- a/arch/m68knommu/kernel/vmlinux.lds.S
+++ b/arch/m68knommu/kernel/vmlinux.lds.S
@@ -147,6 +147,8 @@ SECTIONS {
147 . = ALIGN(4); 147 . = ALIGN(4);
148 _sdata = . ; 148 _sdata = . ;
149 DATA_DATA 149 DATA_DATA
150 . = ALIGN(32);
151 *(.data.cacheline_aligned)
150 . = ALIGN(8192) ; 152 . = ALIGN(8192) ;
151 *(.data.init_task) 153 *(.data.init_task)
152 _edata = . ; 154 _edata = . ;
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c
index 49343fb157b0..428b15922ef5 100644
--- a/arch/m68knommu/platform/527x/config.c
+++ b/arch/m68knommu/platform/527x/config.c
@@ -189,10 +189,15 @@ static void __init m527x_fec_init(void)
189 m527x_fec_irq_init(0); 189 m527x_fec_irq_init(0);
190 190
191 /* Set multi-function pins to ethernet mode for fec0 */ 191 /* Set multi-function pins to ethernet mode for fec0 */
192#if defined(CONFIG_M5271)
193 v = readb(MCF_IPSBAR + 0x100047);
194 writeb(v | 0xf0, MCF_IPSBAR + 0x100047);
195#else
192 par = readw(MCF_IPSBAR + 0x100082); 196 par = readw(MCF_IPSBAR + 0x100082);
193 writew(par | 0xf00, MCF_IPSBAR + 0x100082); 197 writew(par | 0xf00, MCF_IPSBAR + 0x100082);
194 v = readb(MCF_IPSBAR + 0x100078); 198 v = readb(MCF_IPSBAR + 0x100078);
195 writeb(v | 0xc0, MCF_IPSBAR + 0x100078); 199 writeb(v | 0xc0, MCF_IPSBAR + 0x100078);
200#endif
196 201
197#ifdef CONFIG_FEC2 202#ifdef CONFIG_FEC2
198 m527x_fec_irq_init(1); 203 m527x_fec_irq_init(1);
diff --git a/arch/m68knommu/platform/68328/timers.c b/arch/m68knommu/platform/68328/timers.c
index 6bafefa546e5..309f725995bf 100644
--- a/arch/m68knommu/platform/68328/timers.c
+++ b/arch/m68knommu/platform/68328/timers.c
@@ -75,7 +75,7 @@ static struct irqaction m68328_timer_irq = {
75 75
76/***************************************************************************/ 76/***************************************************************************/
77 77
78static cycle_t m68328_read_clk(void) 78static cycle_t m68328_read_clk(struct clocksource *cs)
79{ 79{
80 unsigned long flags; 80 unsigned long flags;
81 u32 cycles; 81 u32 cycles;
diff --git a/arch/m68knommu/platform/coldfire/dma_timer.c b/arch/m68knommu/platform/coldfire/dma_timer.c
index 772578b1084f..a5f562823d7a 100644
--- a/arch/m68knommu/platform/coldfire/dma_timer.c
+++ b/arch/m68knommu/platform/coldfire/dma_timer.c
@@ -34,7 +34,7 @@
34#define DMA_DTMR_CLK_DIV_16 (2 << 1) 34#define DMA_DTMR_CLK_DIV_16 (2 << 1)
35#define DMA_DTMR_ENABLE (1 << 0) 35#define DMA_DTMR_ENABLE (1 << 0)
36 36
37static cycle_t cf_dt_get_cycles(void) 37static cycle_t cf_dt_get_cycles(struct clocksource *cs)
38{ 38{
39 return __raw_readl(DTCN0); 39 return __raw_readl(DTCN0);
40} 40}
diff --git a/arch/m68knommu/platform/coldfire/pit.c b/arch/m68knommu/platform/coldfire/pit.c
index 2a12e7fa9748..61b96211f8ff 100644
--- a/arch/m68knommu/platform/coldfire/pit.c
+++ b/arch/m68knommu/platform/coldfire/pit.c
@@ -125,7 +125,7 @@ static struct irqaction pit_irq = {
125 125
126/***************************************************************************/ 126/***************************************************************************/
127 127
128static cycle_t pit_read_clk(void) 128static cycle_t pit_read_clk(struct clocksource *cs)
129{ 129{
130 unsigned long flags; 130 unsigned long flags;
131 u32 cycles; 131 u32 cycles;
diff --git a/arch/m68knommu/platform/coldfire/timers.c b/arch/m68knommu/platform/coldfire/timers.c
index 454f25493491..1ba8a3731653 100644
--- a/arch/m68knommu/platform/coldfire/timers.c
+++ b/arch/m68knommu/platform/coldfire/timers.c
@@ -78,7 +78,7 @@ static struct irqaction mcftmr_timer_irq = {
78 78
79/***************************************************************************/ 79/***************************************************************************/
80 80
81static cycle_t mcftmr_read_clk(void) 81static cycle_t mcftmr_read_clk(struct clocksource *cs)
82{ 82{
83 unsigned long flags; 83 unsigned long flags;
84 u32 cycles; 84 u32 cycles;
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
new file mode 100644
index 000000000000..8cc312b5d4dc
--- /dev/null
+++ b/arch/microblaze/Kconfig
@@ -0,0 +1,141 @@
1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/kconfig-language.txt.
3
4mainmenu "Linux/Microblaze Kernel Configuration"
5
6config MICROBLAZE
7 def_bool y
8 select HAVE_LMB
9
10config SWAP
11 def_bool n
12
13config RWSEM_GENERIC_SPINLOCK
14 def_bool y
15
16config RWSEM_XCHGADD_ALGORITHM
17 bool
18
19config ARCH_HAS_ILOG2_U32
20 def_bool n
21
22config ARCH_HAS_ILOG2_U64
23 def_bool n
24
25config GENERIC_FIND_NEXT_BIT
26 def_bool y
27
28config GENERIC_HWEIGHT
29 def_bool y
30
31config GENERIC_HARDIRQS
32 def_bool y
33
34config GENERIC_IRQ_PROBE
35 def_bool y
36
37config GENERIC_CALIBRATE_DELAY
38 def_bool y
39
40config GENERIC_TIME
41 def_bool y
42
43config GENERIC_TIME_VSYSCALL
44 def_bool n
45
46config GENERIC_CLOCKEVENTS
47 def_bool y
48
49config GENERIC_HARDIRQS_NO__DO_IRQ
50 def_bool y
51
52config PCI
53 depends on !MMU
54 def_bool n
55
56config NO_DMA
57 depends on !MMU
58 def_bool n
59
60source "init/Kconfig"
61
62source "kernel/Kconfig.freezer"
63
64source "arch/microblaze/platform/Kconfig.platform"
65
66menu "Processor type and features"
67
68source kernel/time/Kconfig
69
70source "kernel/Kconfig.preempt"
71
72source "kernel/Kconfig.hz"
73
74config MMU
75 def_bool n
76
77config NO_MMU
78 bool
79 depends on !MMU
80 default y
81
82comment "Boot options"
83
84config CMDLINE_BOOL
85 bool "Default bootloader kernel arguments"
86
87config CMDLINE
88 string "Default kernel command string"
89 depends on CMDLINE_BOOL
90 default "console=ttyUL0,115200"
91 help
92 On some architectures there is currently no way for the boot loader
93 to pass arguments to the kernel. For these architectures, you should
94 supply some command-line options at build time by entering them
95 here.
96
97config CMDLINE_FORCE
98 bool "Force default kernel command string"
99 depends on CMDLINE_BOOL
100 default n
101 help
102 Set this to have arguments from the default kernel command string
103 override those passed by the boot loader.
104
105config OF
106 def_bool y
107
108config OF_DEVICE
109 def_bool y
110
111config PROC_DEVICETREE
112 bool "Support for device tree in /proc"
113 depends on PROC_FS
114 help
115 This option adds a device-tree directory under /proc which contains
116 an image of the device tree that the kernel copies from Open
117 Firmware or other boot firmware. If unsure, say Y here.
118
119endmenu
120
121source "mm/Kconfig"
122
123menu "Exectuable file formats"
124
125source "fs/Kconfig.binfmt"
126
127endmenu
128
129source "net/Kconfig"
130
131source "drivers/Kconfig"
132
133source "fs/Kconfig"
134
135source "arch/microblaze/Kconfig.debug"
136
137source "security/Kconfig"
138
139source "crypto/Kconfig"
140
141source "lib/Kconfig"
diff --git a/arch/microblaze/Kconfig.debug b/arch/microblaze/Kconfig.debug
new file mode 100644
index 000000000000..242cd35bdb4b
--- /dev/null
+++ b/arch/microblaze/Kconfig.debug
@@ -0,0 +1,26 @@
1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/kconfig-language.txt.
3
4menu "Kernel hacking"
5
6source "lib/Kconfig.debug"
7
8config EARLY_PRINTK
9 bool "Early printk function for kernel"
10 default n
11 help
12 This option turns on/off early printk messages to console.
13 First Uartlite node is taken.
14
15config HEART_BEAT
16 bool "Heart beat function for kernel"
17 default n
18 help
19 This option turns on/off heart beat kernel functionality.
20 First GPIO node is taken.
21
22config DEBUG_BOOTMEM
23 depends on DEBUG_KERNEL
24 bool "Debug BOOTMEM initialization"
25
26endmenu
diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
new file mode 100644
index 000000000000..aaadfa701da3
--- /dev/null
+++ b/arch/microblaze/Makefile
@@ -0,0 +1,67 @@
1UTS_SYSNAME = -DUTS_SYSNAME=\"uClinux\"
2
3# What CPU vesion are we building for, and crack it open
4# as major.minor.rev
5CPU_VER=$(subst ",,$(CONFIG_XILINX_MICROBLAZE0_HW_VER) )
6CPU_MAJOR=$(shell echo $(CPU_VER) | cut -d '.' -f 1)
7CPU_MINOR=$(shell echo $(CPU_VER) | cut -d '.' -f 2)
8CPU_REV=$(shell echo $(CPU_VER) | cut -d '.' -f 3)
9
10export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
11
12# Use cpu-related CONFIG_ vars to set compile options.
13
14# Work out HW multipler support. This is icky.
15# 1. Spartan2 has no HW multiplers.
16# 2. MicroBlaze v3.x always uses them, except in Spartan 2
17# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
18ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
19 ifeq ($(CPU_MAJOR),3)
20 CPUFLAGS-1 += -mno-xl-soft-mul
21 else
22 # USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul support.
23 CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += -mxl-multiply-high
24 CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
25 endif
26endif
27CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
28CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
29CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR) += -mxl-pattern-compare
30
31CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
32
33# The various CONFIG_XILINX cpu features options are integers 0/1/2...
34# rather than bools y/n
35
36# r31 holds current when in kernel mode
37CFLAGS_KERNEL += -ffixed-r31 $(CPUFLAGS-1) $(CPUFLAGS-2)
38
39LDFLAGS_BLOB := --format binary --oformat elf32-microblaze
40
41LIBGCC := $(shell $(CC) $(CFLAGS_KERNEL) -print-libgcc-file-name)
42
43head-y := arch/microblaze/kernel/head.o
44libs-y += arch/microblaze/lib/ $(LIBGCC)
45core-y += arch/microblaze/kernel/ arch/microblaze/mm/ \
46 arch/microblaze/platform/
47
48boot := arch/$(ARCH)/boot
49
50# defines filename extension depending memory management type
51ifeq ($(CONFIG_MMU),)
52MMUEXT := -nommu
53endif
54export MMUEXT
55
56all: linux.bin
57
58archclean:
59 $(Q)$(MAKE) $(clean)=$(boot)
60
61linux.bin linux.bin.gz: vmlinux
62 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
63
64define archhelp
65 echo '* linux.bin - Create raw binary'
66 echo ' linux.bin.gz - Create compressed raw binary'
67endef
diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
new file mode 100644
index 000000000000..844edf406d34
--- /dev/null
+++ b/arch/microblaze/boot/Makefile
@@ -0,0 +1,17 @@
1#
2# arch/microblaze/boot/Makefile
3#
4
5targets := linux.bin linux.bin.gz
6
7OBJCOPYFLAGS_linux.bin := -O binary
8
9$(obj)/linux.bin: vmlinux FORCE
10 $(call if_changed,objcopy)
11 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
12
13$(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
14 $(call if_changed,gzip)
15 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
16
17clean-kernel += linux.bin linux.bin.gz
diff --git a/arch/arm/configs/mx31ads_defconfig b/arch/microblaze/configs/nommu_defconfig
index e05271753e15..beb7ecd72793 100644
--- a/arch/arm/configs/mx31ads_defconfig
+++ b/arch/microblaze/configs/nommu_defconfig
@@ -1,30 +1,24 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc6 3# Linux kernel version: 2.6.29
4# Fri Jun 20 16:21:11 2008 4# Tue Mar 24 10:23:20 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_MICROBLAZE=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7# CONFIG_SWAP is not set
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y
18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_RWSEM_GENERIC_SPINLOCK=y 8CONFIG_RWSEM_GENERIC_SPINLOCK=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 9# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 10# CONFIG_ARCH_HAS_ILOG2_U64 is not set
11CONFIG_GENERIC_FIND_NEXT_BIT=y
22CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_IRQ_PROBE=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y 16CONFIG_GENERIC_TIME=y
25CONFIG_ZONE_DMA=y 17# CONFIG_GENERIC_TIME_VSYSCALL is not set
26CONFIG_ARCH_MTD_XIP=y 18CONFIG_GENERIC_CLOCKEVENTS=y
27CONFIG_VECTORS_BASE=0xffff0000 19CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
20# CONFIG_PCI is not set
21# CONFIG_NO_DMA is not set
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
29 23
30# 24#
@@ -32,26 +26,30 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
32# 26#
33CONFIG_EXPERIMENTAL=y 27CONFIG_EXPERIMENTAL=y
34CONFIG_BROKEN_ON_SMP=y 28CONFIG_BROKEN_ON_SMP=y
35CONFIG_LOCK_KERNEL=y
36CONFIG_INIT_ENV_ARG_LIMIT=32 29CONFIG_INIT_ENV_ARG_LIMIT=32
37CONFIG_LOCALVERSION="" 30CONFIG_LOCALVERSION=""
38CONFIG_LOCALVERSION_AUTO=y 31CONFIG_LOCALVERSION_AUTO=y
39CONFIG_SWAP=y
40CONFIG_SYSVIPC=y 32CONFIG_SYSVIPC=y
41CONFIG_SYSVIPC_SYSCTL=y 33CONFIG_SYSVIPC_SYSCTL=y
42# CONFIG_POSIX_MQUEUE is not set 34CONFIG_POSIX_MQUEUE=y
43# CONFIG_BSD_PROCESS_ACCT is not set 35CONFIG_BSD_PROCESS_ACCT=y
36CONFIG_BSD_PROCESS_ACCT_V3=y
44# CONFIG_TASKSTATS is not set 37# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set 38# CONFIG_AUDIT is not set
39
40#
41# RCU Subsystem
42#
43CONFIG_CLASSIC_RCU=y
44# CONFIG_TREE_RCU is not set
45# CONFIG_PREEMPT_RCU is not set
46# CONFIG_TREE_RCU_TRACE is not set
47# CONFIG_PREEMPT_RCU_TRACE is not set
46CONFIG_IKCONFIG=y 48CONFIG_IKCONFIG=y
47CONFIG_IKCONFIG_PROC=y 49CONFIG_IKCONFIG_PROC=y
48CONFIG_LOG_BUF_SHIFT=14 50CONFIG_LOG_BUF_SHIFT=17
51# CONFIG_GROUP_SCHED is not set
49# CONFIG_CGROUPS is not set 52# CONFIG_CGROUPS is not set
50CONFIG_GROUP_SCHED=y
51CONFIG_FAIR_GROUP_SCHED=y
52# CONFIG_RT_GROUP_SCHED is not set
53CONFIG_USER_SCHED=y
54# CONFIG_CGROUP_SCHED is not set
55CONFIG_SYSFS_DEPRECATED=y 53CONFIG_SYSFS_DEPRECATED=y
56CONFIG_SYSFS_DEPRECATED_V2=y 54CONFIG_SYSFS_DEPRECATED_V2=y
57# CONFIG_RELAY is not set 55# CONFIG_RELAY is not set
@@ -59,53 +57,44 @@ CONFIG_SYSFS_DEPRECATED_V2=y
59# CONFIG_BLK_DEV_INITRD is not set 57# CONFIG_BLK_DEV_INITRD is not set
60CONFIG_CC_OPTIMIZE_FOR_SIZE=y 58CONFIG_CC_OPTIMIZE_FOR_SIZE=y
61CONFIG_SYSCTL=y 59CONFIG_SYSCTL=y
60CONFIG_ANON_INODES=y
62CONFIG_EMBEDDED=y 61CONFIG_EMBEDDED=y
63CONFIG_UID16=y
64CONFIG_SYSCTL_SYSCALL=y 62CONFIG_SYSCTL_SYSCALL=y
65CONFIG_SYSCTL_SYSCALL_CHECK=y
66CONFIG_KALLSYMS=y 63CONFIG_KALLSYMS=y
67# CONFIG_KALLSYMS_EXTRA_PASS is not set 64CONFIG_KALLSYMS_ALL=y
68CONFIG_HOTPLUG=y 65CONFIG_KALLSYMS_EXTRA_PASS=y
66# CONFIG_HOTPLUG is not set
69CONFIG_PRINTK=y 67CONFIG_PRINTK=y
70CONFIG_BUG=y 68CONFIG_BUG=y
71CONFIG_ELF_CORE=y 69CONFIG_ELF_CORE=y
72CONFIG_COMPAT_BRK=y 70# CONFIG_BASE_FULL is not set
73CONFIG_BASE_FULL=y
74CONFIG_FUTEX=y 71CONFIG_FUTEX=y
75CONFIG_ANON_INODES=y
76CONFIG_EPOLL=y 72CONFIG_EPOLL=y
77CONFIG_SIGNALFD=y 73CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y 74CONFIG_TIMERFD=y
79CONFIG_EVENTFD=y 75CONFIG_EVENTFD=y
80CONFIG_SHMEM=y 76CONFIG_AIO=y
81CONFIG_VM_EVENT_COUNTERS=y 77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_COMPAT_BRK=y
82CONFIG_SLAB=y 79CONFIG_SLAB=y
83# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
84# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
85# CONFIG_PROFILING is not set 82# CONFIG_PROFILING is not set
86# CONFIG_MARKERS is not set 83# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_HAVE_OPROFILE=y
88# CONFIG_KPROBES is not set
89CONFIG_HAVE_KPROBES=y
90CONFIG_HAVE_KRETPROBES=y
91# CONFIG_HAVE_DMA_ATTRS is not set
92CONFIG_PROC_PAGE_MONITOR=y
93CONFIG_SLABINFO=y 84CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 85CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set 86CONFIG_BASE_SMALL=1
96CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 87CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set 88# CONFIG_MODULE_FORCE_LOAD is not set
99CONFIG_MODULE_UNLOAD=y 89CONFIG_MODULE_UNLOAD=y
100CONFIG_MODULE_FORCE_UNLOAD=y 90# CONFIG_MODULE_FORCE_UNLOAD is not set
101CONFIG_MODVERSIONS=y 91# CONFIG_MODVERSIONS is not set
102# CONFIG_MODULE_SRCVERSION_ALL is not set 92# CONFIG_MODULE_SRCVERSION_ALL is not set
103CONFIG_KMOD=y
104CONFIG_BLOCK=y 93CONFIG_BLOCK=y
105# CONFIG_LBD is not set 94# CONFIG_LBD is not set
106# CONFIG_BLK_DEV_IO_TRACE is not set 95# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 96# CONFIG_BLK_DEV_BSG is not set
97# CONFIG_BLK_DEV_INTEGRITY is not set
109 98
110# 99#
111# IO Schedulers 100# IO Schedulers
@@ -119,167 +108,79 @@ CONFIG_IOSCHED_CFQ=y
119CONFIG_DEFAULT_CFQ=y 108CONFIG_DEFAULT_CFQ=y
120# CONFIG_DEFAULT_NOOP is not set 109# CONFIG_DEFAULT_NOOP is not set
121CONFIG_DEFAULT_IOSCHED="cfq" 110CONFIG_DEFAULT_IOSCHED="cfq"
122CONFIG_CLASSIC_RCU=y 111# CONFIG_FREEZER is not set
123
124#
125# System Type
126#
127# CONFIG_ARCH_AAEC2000 is not set
128# CONFIG_ARCH_INTEGRATOR is not set
129# CONFIG_ARCH_REALVIEW is not set
130# CONFIG_ARCH_VERSATILE is not set
131# CONFIG_ARCH_AT91 is not set
132# CONFIG_ARCH_CLPS7500 is not set
133# CONFIG_ARCH_CLPS711X is not set
134# CONFIG_ARCH_CO285 is not set
135# CONFIG_ARCH_EBSA110 is not set
136# CONFIG_ARCH_EP93XX is not set
137# CONFIG_ARCH_FOOTBRIDGE is not set
138# CONFIG_ARCH_NETX is not set
139# CONFIG_ARCH_H720X is not set
140# CONFIG_ARCH_IMX is not set
141# CONFIG_ARCH_IOP13XX is not set
142# CONFIG_ARCH_IOP32X is not set
143# CONFIG_ARCH_IOP33X is not set
144# CONFIG_ARCH_IXP23XX is not set
145# CONFIG_ARCH_IXP2000 is not set
146# CONFIG_ARCH_IXP4XX is not set
147# CONFIG_ARCH_L7200 is not set
148# CONFIG_ARCH_KS8695 is not set
149# CONFIG_ARCH_NS9XXX is not set
150CONFIG_ARCH_MXC=y
151# CONFIG_ARCH_ORION5X is not set
152# CONFIG_ARCH_PNX4008 is not set
153# CONFIG_ARCH_PXA is not set
154# CONFIG_ARCH_RPC is not set
155# CONFIG_ARCH_SA1100 is not set
156# CONFIG_ARCH_S3C2410 is not set
157# CONFIG_ARCH_SHARK is not set
158# CONFIG_ARCH_LH7A40X is not set
159# CONFIG_ARCH_DAVINCI is not set
160# CONFIG_ARCH_OMAP is not set
161# CONFIG_ARCH_MSM7X00A is not set
162
163#
164# Boot options
165#
166
167#
168# Power management
169#
170 112
171# 113#
172# Freescale MXC Implementations 114# Platform options
173# 115#
174# CONFIG_ARCH_MX2 is not set 116CONFIG_PLATFORM_GENERIC=y
175CONFIG_ARCH_MX3=y 117# CONFIG_SELFMOD is not set
118# CONFIG_OPT_LIB_FUNCTION is not set
119# CONFIG_ALLOW_EDIT_AUTO is not set
120CONFIG_KERNEL_BASE_ADDR=0x90000000
121CONFIG_XILINX_MICROBLAZE0_FAMILY="virtex5"
122CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1
123CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1
124CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1
125CONFIG_XILINX_MICROBLAZE0_USE_DIV=1
126CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2
127CONFIG_XILINX_MICROBLAZE0_USE_FPU=2
128CONFIG_XILINX_MICROBLAZE0_HW_VER="7.10.d"
176 129
177# 130#
178# MX3 Options 131# Processor type and features
179#
180CONFIG_MACH_MX31ADS=y
181# CONFIG_MACH_PCM037 is not set
182
183#
184# Processor Type
185#
186CONFIG_CPU_32=y
187CONFIG_CPU_V6=y
188# CONFIG_CPU_32v6K is not set
189CONFIG_CPU_32v6=y
190CONFIG_CPU_ABRT_EV6=y
191CONFIG_CPU_PABRT_NOIFAR=y
192CONFIG_CPU_CACHE_V6=y
193CONFIG_CPU_CACHE_VIPT=y
194CONFIG_CPU_COPY_V6=y
195CONFIG_CPU_TLB_V6=y
196CONFIG_CPU_HAS_ASID=y
197CONFIG_CPU_CP15=y
198CONFIG_CPU_CP15_MMU=y
199
200#
201# Processor Features
202#
203CONFIG_ARM_THUMB=y
204# CONFIG_CPU_ICACHE_DISABLE is not set
205# CONFIG_CPU_DCACHE_DISABLE is not set
206# CONFIG_CPU_BPREDICT_DISABLE is not set
207# CONFIG_OUTER_CACHE is not set
208
209#
210# Bus support
211#
212# CONFIG_PCI_SYSCALL is not set
213# CONFIG_ARCH_SUPPORTS_MSI is not set
214# CONFIG_PCCARD is not set
215
216#
217# Kernel Features
218# 132#
219CONFIG_TICK_ONESHOT=y 133CONFIG_TICK_ONESHOT=y
220CONFIG_NO_HZ=y 134# CONFIG_NO_HZ is not set
221CONFIG_HIGH_RES_TIMERS=y 135CONFIG_HIGH_RES_TIMERS=y
222CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 136CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
223CONFIG_PREEMPT=y 137CONFIG_PREEMPT_NONE=y
138# CONFIG_PREEMPT_VOLUNTARY is not set
139# CONFIG_PREEMPT is not set
140CONFIG_HZ_100=y
141# CONFIG_HZ_250 is not set
142# CONFIG_HZ_300 is not set
143# CONFIG_HZ_1000 is not set
224CONFIG_HZ=100 144CONFIG_HZ=100
225CONFIG_AEABI=y 145CONFIG_SCHED_HRTICK=y
226# CONFIG_OABI_COMPAT is not set 146# CONFIG_MMU is not set
227# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 147CONFIG_NO_MMU=y
148
149#
150# Boot options
151#
152CONFIG_CMDLINE_BOOL=y
153CONFIG_CMDLINE="console=ttyUL0,115200"
154# CONFIG_CMDLINE_FORCE is not set
155CONFIG_OF=y
156CONFIG_OF_DEVICE=y
157CONFIG_PROC_DEVICETREE=y
228CONFIG_SELECT_MEMORY_MODEL=y 158CONFIG_SELECT_MEMORY_MODEL=y
229CONFIG_FLATMEM_MANUAL=y 159CONFIG_FLATMEM_MANUAL=y
230# CONFIG_DISCONTIGMEM_MANUAL is not set 160# CONFIG_DISCONTIGMEM_MANUAL is not set
231# CONFIG_SPARSEMEM_MANUAL is not set 161# CONFIG_SPARSEMEM_MANUAL is not set
232CONFIG_FLATMEM=y 162CONFIG_FLATMEM=y
233CONFIG_FLAT_NODE_MEM_MAP=y 163CONFIG_FLAT_NODE_MEM_MAP=y
234# CONFIG_SPARSEMEM_STATIC is not set
235# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
236CONFIG_PAGEFLAGS_EXTENDED=y 164CONFIG_PAGEFLAGS_EXTENDED=y
237CONFIG_SPLIT_PTLOCK_CPUS=4 165CONFIG_SPLIT_PTLOCK_CPUS=4
238# CONFIG_RESOURCES_64BIT is not set 166# CONFIG_PHYS_ADDR_T_64BIT is not set
239CONFIG_ZONE_DMA_FLAG=1 167CONFIG_ZONE_DMA_FLAG=0
240CONFIG_BOUNCE=y
241CONFIG_VIRT_TO_BUS=y 168CONFIG_VIRT_TO_BUS=y
242CONFIG_ALIGNMENT_TRAP=y
243
244#
245# Boot options
246#
247CONFIG_ZBOOT_ROM_TEXT=0x0
248CONFIG_ZBOOT_ROM_BSS=0x0
249CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw ip=off"
250# CONFIG_XIP_KERNEL is not set
251# CONFIG_KEXEC is not set
252
253#
254# Floating point emulation
255#
256 169
257# 170#
258# At least one emulation must be selected 171# Exectuable file formats
259# 172#
260CONFIG_VFP=y 173CONFIG_BINFMT_FLAT=y
261 174# CONFIG_BINFMT_ZFLAT is not set
262# 175# CONFIG_BINFMT_SHARED_FLAT is not set
263# Userspace binary formats 176# CONFIG_HAVE_AOUT is not set
264#
265CONFIG_BINFMT_ELF=y
266# CONFIG_BINFMT_AOUT is not set
267# CONFIG_BINFMT_MISC is not set 177# CONFIG_BINFMT_MISC is not set
268
269#
270# Power management options
271#
272# CONFIG_PM is not set
273CONFIG_ARCH_SUSPEND_POSSIBLE=y
274
275#
276# Networking
277#
278CONFIG_NET=y 178CONFIG_NET=y
279 179
280# 180#
281# Networking options 181# Networking options
282# 182#
183CONFIG_COMPAT_NET_DEV_OPS=y
283CONFIG_PACKET=y 184CONFIG_PACKET=y
284# CONFIG_PACKET_MMAP is not set 185# CONFIG_PACKET_MMAP is not set
285CONFIG_UNIX=y 186CONFIG_UNIX=y
@@ -293,10 +194,7 @@ CONFIG_INET=y
293# CONFIG_IP_MULTICAST is not set 194# CONFIG_IP_MULTICAST is not set
294# CONFIG_IP_ADVANCED_ROUTER is not set 195# CONFIG_IP_ADVANCED_ROUTER is not set
295CONFIG_IP_FIB_HASH=y 196CONFIG_IP_FIB_HASH=y
296CONFIG_IP_PNP=y 197# CONFIG_IP_PNP is not set
297CONFIG_IP_PNP_DHCP=y
298# CONFIG_IP_PNP_BOOTP is not set
299# CONFIG_IP_PNP_RARP is not set
300# CONFIG_NET_IPIP is not set 198# CONFIG_NET_IPIP is not set
301# CONFIG_NET_IPGRE is not set 199# CONFIG_NET_IPGRE is not set
302# CONFIG_ARPD is not set 200# CONFIG_ARPD is not set
@@ -324,6 +222,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
324# CONFIG_TIPC is not set 222# CONFIG_TIPC is not set
325# CONFIG_ATM is not set 223# CONFIG_ATM is not set
326# CONFIG_BRIDGE is not set 224# CONFIG_BRIDGE is not set
225# CONFIG_NET_DSA is not set
327# CONFIG_VLAN_8021Q is not set 226# CONFIG_VLAN_8021Q is not set
328# CONFIG_DECNET is not set 227# CONFIG_DECNET is not set
329# CONFIG_LLC2 is not set 228# CONFIG_LLC2 is not set
@@ -334,6 +233,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
334# CONFIG_ECONET is not set 233# CONFIG_ECONET is not set
335# CONFIG_WAN_ROUTER is not set 234# CONFIG_WAN_ROUTER is not set
336# CONFIG_NET_SCHED is not set 235# CONFIG_NET_SCHED is not set
236# CONFIG_DCB is not set
337 237
338# 238#
339# Network testing 239# Network testing
@@ -344,14 +244,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
344# CONFIG_IRDA is not set 244# CONFIG_IRDA is not set
345# CONFIG_BT is not set 245# CONFIG_BT is not set
346# CONFIG_AF_RXRPC is not set 246# CONFIG_AF_RXRPC is not set
347 247# CONFIG_PHONET is not set
348# 248CONFIG_WIRELESS=y
349# Wireless
350#
351# CONFIG_CFG80211 is not set 249# CONFIG_CFG80211 is not set
250CONFIG_WIRELESS_OLD_REGULATORY=y
352# CONFIG_WIRELESS_EXT is not set 251# CONFIG_WIRELESS_EXT is not set
252# CONFIG_LIB80211 is not set
353# CONFIG_MAC80211 is not set 253# CONFIG_MAC80211 is not set
354# CONFIG_IEEE80211 is not set 254# CONFIG_WIMAX is not set
355# CONFIG_RFKILL is not set 255# CONFIG_RFKILL is not set
356# CONFIG_NET_9P is not set 256# CONFIG_NET_9P is not set
357 257
@@ -362,22 +262,19 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
362# 262#
363# Generic Driver Options 263# Generic Driver Options
364# 264#
365CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
366CONFIG_STANDALONE=y 265CONFIG_STANDALONE=y
367CONFIG_PREVENT_FIRMWARE_BUILD=y 266# CONFIG_PREVENT_FIRMWARE_BUILD is not set
368CONFIG_FW_LOADER=m 267# CONFIG_DEBUG_DRIVER is not set
268# CONFIG_DEBUG_DEVRES is not set
369# CONFIG_SYS_HYPERVISOR is not set 269# CONFIG_SYS_HYPERVISOR is not set
370# CONFIG_CONNECTOR is not set 270# CONFIG_CONNECTOR is not set
371CONFIG_MTD=y 271CONFIG_MTD=y
372# CONFIG_MTD_DEBUG is not set 272# CONFIG_MTD_DEBUG is not set
373# CONFIG_MTD_CONCAT is not set 273CONFIG_MTD_CONCAT=y
374CONFIG_MTD_PARTITIONS=y 274CONFIG_MTD_PARTITIONS=y
375CONFIG_MTD_REDBOOT_PARTS=y 275# CONFIG_MTD_TESTS is not set
376CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 276# CONFIG_MTD_REDBOOT_PARTS is not set
377# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
378# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
379CONFIG_MTD_CMDLINE_PARTS=y 277CONFIG_MTD_CMDLINE_PARTS=y
380# CONFIG_MTD_AFS_PARTS is not set
381# CONFIG_MTD_AR7_PARTS is not set 278# CONFIG_MTD_AR7_PARTS is not set
382 279
383# 280#
@@ -399,37 +296,31 @@ CONFIG_MTD_BLOCK=y
399CONFIG_MTD_CFI=y 296CONFIG_MTD_CFI=y
400# CONFIG_MTD_JEDECPROBE is not set 297# CONFIG_MTD_JEDECPROBE is not set
401CONFIG_MTD_GEN_PROBE=y 298CONFIG_MTD_GEN_PROBE=y
402CONFIG_MTD_CFI_ADV_OPTIONS=y 299# CONFIG_MTD_CFI_ADV_OPTIONS is not set
403CONFIG_MTD_CFI_NOSWAP=y 300CONFIG_MTD_MAP_BANK_WIDTH_1=y
404# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
405# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
406CONFIG_MTD_CFI_GEOMETRY=y
407# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
408CONFIG_MTD_MAP_BANK_WIDTH_2=y 301CONFIG_MTD_MAP_BANK_WIDTH_2=y
409# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set 302CONFIG_MTD_MAP_BANK_WIDTH_4=y
410# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set 303# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
411# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set 304# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
412# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 305# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
413CONFIG_MTD_CFI_I1=y 306CONFIG_MTD_CFI_I1=y
414# CONFIG_MTD_CFI_I2 is not set 307CONFIG_MTD_CFI_I2=y
415# CONFIG_MTD_CFI_I4 is not set 308# CONFIG_MTD_CFI_I4 is not set
416# CONFIG_MTD_CFI_I8 is not set 309# CONFIG_MTD_CFI_I8 is not set
417# CONFIG_MTD_OTP is not set 310CONFIG_MTD_CFI_INTELEXT=y
418# CONFIG_MTD_CFI_INTELEXT is not set
419CONFIG_MTD_CFI_AMDSTD=y 311CONFIG_MTD_CFI_AMDSTD=y
420# CONFIG_MTD_CFI_STAA is not set 312# CONFIG_MTD_CFI_STAA is not set
421CONFIG_MTD_CFI_UTIL=y 313CONFIG_MTD_CFI_UTIL=y
422CONFIG_MTD_RAM=y 314CONFIG_MTD_RAM=y
423# CONFIG_MTD_ROM is not set 315# CONFIG_MTD_ROM is not set
424# CONFIG_MTD_ABSENT is not set 316# CONFIG_MTD_ABSENT is not set
425# CONFIG_MTD_XIP is not set
426 317
427# 318#
428# Mapping drivers for chip access 319# Mapping drivers for chip access
429# 320#
430# CONFIG_MTD_COMPLEX_MAPPINGS is not set 321# CONFIG_MTD_COMPLEX_MAPPINGS is not set
431# CONFIG_MTD_PHYSMAP is not set 322# CONFIG_MTD_PHYSMAP is not set
432# CONFIG_MTD_ARM_INTEGRATOR is not set 323CONFIG_MTD_UCLINUX=y
433# CONFIG_MTD_PLATRAM is not set 324# CONFIG_MTD_PLATRAM is not set
434 325
435# 326#
@@ -446,25 +337,37 @@ CONFIG_MTD_RAM=y
446# CONFIG_MTD_DOC2000 is not set 337# CONFIG_MTD_DOC2000 is not set
447# CONFIG_MTD_DOC2001 is not set 338# CONFIG_MTD_DOC2001 is not set
448# CONFIG_MTD_DOC2001PLUS is not set 339# CONFIG_MTD_DOC2001PLUS is not set
449CONFIG_MTD_NAND=y 340# CONFIG_MTD_NAND is not set
450# CONFIG_MTD_NAND_VERIFY_WRITE is not set
451# CONFIG_MTD_NAND_ECC_SMC is not set
452# CONFIG_MTD_NAND_MUSEUM_IDS is not set
453CONFIG_MTD_NAND_IDS=y
454# CONFIG_MTD_NAND_DISKONCHIP is not set
455# CONFIG_MTD_NAND_NANDSIM is not set
456# CONFIG_MTD_NAND_PLATFORM is not set
457# CONFIG_MTD_ONENAND is not set 341# CONFIG_MTD_ONENAND is not set
458 342
459# 343#
344# LPDDR flash memory drivers
345#
346# CONFIG_MTD_LPDDR is not set
347
348#
460# UBI - Unsorted block images 349# UBI - Unsorted block images
461# 350#
462# CONFIG_MTD_UBI is not set 351# CONFIG_MTD_UBI is not set
463# CONFIG_PARPORT is not set 352# CONFIG_PARPORT is not set
464# CONFIG_BLK_DEV is not set 353CONFIG_BLK_DEV=y
465# CONFIG_MISC_DEVICES is not set 354# CONFIG_BLK_DEV_COW_COMMON is not set
466CONFIG_HAVE_IDE=y 355# CONFIG_BLK_DEV_LOOP is not set
467# CONFIG_IDE is not set 356CONFIG_BLK_DEV_NBD=y
357CONFIG_BLK_DEV_RAM=y
358CONFIG_BLK_DEV_RAM_COUNT=16
359CONFIG_BLK_DEV_RAM_SIZE=4096
360# CONFIG_BLK_DEV_XIP is not set
361# CONFIG_CDROM_PKTCDVD is not set
362# CONFIG_ATA_OVER_ETH is not set
363CONFIG_MISC_DEVICES=y
364# CONFIG_ENCLOSURE_SERVICES is not set
365# CONFIG_C2PORT is not set
366
367#
368# EEPROM support
369#
370# CONFIG_EEPROM_93CX6 is not set
468 371
469# 372#
470# SCSI device support 373# SCSI device support
@@ -476,7 +379,6 @@ CONFIG_HAVE_IDE=y
476# CONFIG_ATA is not set 379# CONFIG_ATA is not set
477# CONFIG_MD is not set 380# CONFIG_MD is not set
478CONFIG_NETDEVICES=y 381CONFIG_NETDEVICES=y
479# CONFIG_NETDEVICES_MULTIQUEUE is not set
480# CONFIG_DUMMY is not set 382# CONFIG_DUMMY is not set
481# CONFIG_BONDING is not set 383# CONFIG_BONDING is not set
482# CONFIG_MACVLAN is not set 384# CONFIG_MACVLAN is not set
@@ -485,17 +387,18 @@ CONFIG_NETDEVICES=y
485# CONFIG_VETH is not set 387# CONFIG_VETH is not set
486# CONFIG_PHYLIB is not set 388# CONFIG_PHYLIB is not set
487CONFIG_NET_ETHERNET=y 389CONFIG_NET_ETHERNET=y
488CONFIG_MII=y 390# CONFIG_MII is not set
489# CONFIG_AX88796 is not set 391# CONFIG_DNET is not set
490# CONFIG_SMC91X is not set
491# CONFIG_DM9000 is not set
492# CONFIG_IBM_NEW_EMAC_ZMII is not set 392# CONFIG_IBM_NEW_EMAC_ZMII is not set
493# CONFIG_IBM_NEW_EMAC_RGMII is not set 393# CONFIG_IBM_NEW_EMAC_RGMII is not set
494# CONFIG_IBM_NEW_EMAC_TAH is not set 394# CONFIG_IBM_NEW_EMAC_TAH is not set
495# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 395# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
396# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
397# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
398# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
496# CONFIG_B44 is not set 399# CONFIG_B44 is not set
497# CONFIG_NETDEV_1000 is not set 400CONFIG_NETDEV_1000=y
498# CONFIG_NETDEV_10000 is not set 401CONFIG_NETDEV_10000=y
499 402
500# 403#
501# Wireless LAN 404# Wireless LAN
@@ -503,6 +406,10 @@ CONFIG_MII=y
503# CONFIG_WLAN_PRE80211 is not set 406# CONFIG_WLAN_PRE80211 is not set
504# CONFIG_WLAN_80211 is not set 407# CONFIG_WLAN_80211 is not set
505# CONFIG_IWLWIFI_LEDS is not set 408# CONFIG_IWLWIFI_LEDS is not set
409
410#
411# Enable WiMAX (Networking options) to see the WiMAX drivers
412#
506# CONFIG_WAN is not set 413# CONFIG_WAN is not set
507# CONFIG_PPP is not set 414# CONFIG_PPP is not set
508# CONFIG_SLIP is not set 415# CONFIG_SLIP is not set
@@ -510,6 +417,7 @@ CONFIG_MII=y
510# CONFIG_NETPOLL is not set 417# CONFIG_NETPOLL is not set
511# CONFIG_NET_POLL_CONTROLLER is not set 418# CONFIG_NET_POLL_CONTROLLER is not set
512# CONFIG_ISDN is not set 419# CONFIG_ISDN is not set
420# CONFIG_PHONE is not set
513 421
514# 422#
515# Input device support 423# Input device support
@@ -537,51 +445,44 @@ CONFIG_DEVKMEM=y
537# 445#
538# Non-8250 serial port support 446# Non-8250 serial port support
539# 447#
540CONFIG_SERIAL_IMX=y 448CONFIG_SERIAL_UARTLITE=y
541CONFIG_SERIAL_IMX_CONSOLE=y 449CONFIG_SERIAL_UARTLITE_CONSOLE=y
542CONFIG_SERIAL_CORE=y 450CONFIG_SERIAL_CORE=y
543CONFIG_SERIAL_CORE_CONSOLE=y 451CONFIG_SERIAL_CORE_CONSOLE=y
544CONFIG_UNIX98_PTYS=y 452CONFIG_UNIX98_PTYS=y
545# CONFIG_LEGACY_PTYS is not set 453# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
454CONFIG_LEGACY_PTYS=y
455CONFIG_LEGACY_PTY_COUNT=256
546# CONFIG_IPMI_HANDLER is not set 456# CONFIG_IPMI_HANDLER is not set
547# CONFIG_HW_RANDOM is not set 457CONFIG_HW_RANDOM=y
548# CONFIG_NVRAM is not set 458# CONFIG_RTC is not set
459# CONFIG_GEN_RTC is not set
549# CONFIG_R3964 is not set 460# CONFIG_R3964 is not set
550# CONFIG_RAW_DRIVER is not set 461# CONFIG_RAW_DRIVER is not set
551# CONFIG_TCG_TPM is not set 462# CONFIG_TCG_TPM is not set
552# CONFIG_I2C is not set 463# CONFIG_I2C is not set
553# CONFIG_SPI is not set 464# CONFIG_SPI is not set
554CONFIG_HAVE_GPIO_LIB=y
555
556#
557# GPIO Support
558#
559
560#
561# I2C GPIO expanders:
562#
563
564#
565# SPI GPIO expanders:
566#
567# CONFIG_W1 is not set 465# CONFIG_W1 is not set
568# CONFIG_POWER_SUPPLY is not set 466# CONFIG_POWER_SUPPLY is not set
569# CONFIG_HWMON is not set 467# CONFIG_HWMON is not set
468# CONFIG_THERMAL is not set
469# CONFIG_THERMAL_HWMON is not set
570# CONFIG_WATCHDOG is not set 470# CONFIG_WATCHDOG is not set
471CONFIG_SSB_POSSIBLE=y
571 472
572# 473#
573# Sonics Silicon Backplane 474# Sonics Silicon Backplane
574# 475#
575CONFIG_SSB_POSSIBLE=y
576# CONFIG_SSB is not set 476# CONFIG_SSB is not set
577 477
578# 478#
579# Multifunction device drivers 479# Multifunction device drivers
580# 480#
481# CONFIG_MFD_CORE is not set
581# CONFIG_MFD_SM501 is not set 482# CONFIG_MFD_SM501 is not set
582# CONFIG_MFD_ASIC3 is not set
583# CONFIG_HTC_EGPIO is not set
584# CONFIG_HTC_PASIC3 is not set 483# CONFIG_HTC_PASIC3 is not set
484# CONFIG_MFD_TMIO is not set
485# CONFIG_REGULATOR is not set
585 486
586# 487#
587# Multimedia devices 488# Multimedia devices
@@ -597,13 +498,13 @@ CONFIG_SSB_POSSIBLE=y
597# 498#
598# Multimedia drivers 499# Multimedia drivers
599# 500#
600# CONFIG_DAB is not set 501CONFIG_DAB=y
601 502
602# 503#
603# Graphics support 504# Graphics support
604# 505#
605# CONFIG_VGASTATE is not set 506# CONFIG_VGASTATE is not set
606# CONFIG_VIDEO_OUTPUT_CONTROL is not set 507CONFIG_VIDEO_OUTPUT_CONTROL=y
607# CONFIG_FB is not set 508# CONFIG_FB is not set
608# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 509# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
609 510
@@ -611,32 +512,51 @@ CONFIG_SSB_POSSIBLE=y
611# Display device support 512# Display device support
612# 513#
613# CONFIG_DISPLAY_SUPPORT is not set 514# CONFIG_DISPLAY_SUPPORT is not set
515# CONFIG_SOUND is not set
516CONFIG_USB_SUPPORT=y
517# CONFIG_USB_ARCH_HAS_HCD is not set
518# CONFIG_USB_ARCH_HAS_OHCI is not set
519# CONFIG_USB_ARCH_HAS_EHCI is not set
520# CONFIG_USB_OTG_WHITELIST is not set
521# CONFIG_USB_OTG_BLACKLIST_HUB is not set
614 522
615# 523#
616# Sound 524# Enable Host or Gadget support to see Inventra options
525#
526
527#
528# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
529#
530# CONFIG_USB_GADGET is not set
531
532#
533# OTG and related infrastructure
617# 534#
618# CONFIG_SOUND is not set
619# CONFIG_USB_SUPPORT is not set
620# CONFIG_MMC is not set 535# CONFIG_MMC is not set
536# CONFIG_MEMSTICK is not set
621# CONFIG_NEW_LEDS is not set 537# CONFIG_NEW_LEDS is not set
622CONFIG_RTC_LIB=y 538# CONFIG_ACCESSIBILITY is not set
623# CONFIG_RTC_CLASS is not set 539# CONFIG_RTC_CLASS is not set
540# CONFIG_DMADEVICES is not set
624# CONFIG_UIO is not set 541# CONFIG_UIO is not set
542# CONFIG_STAGING is not set
625 543
626# 544#
627# File systems 545# File systems
628# 546#
629# CONFIG_EXT2_FS is not set 547CONFIG_EXT2_FS=y
548# CONFIG_EXT2_FS_XATTR is not set
630# CONFIG_EXT3_FS is not set 549# CONFIG_EXT3_FS is not set
631# CONFIG_EXT4DEV_FS is not set 550# CONFIG_EXT4_FS is not set
632# CONFIG_REISERFS_FS is not set 551# CONFIG_REISERFS_FS is not set
633# CONFIG_JFS_FS is not set 552# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set 553CONFIG_FS_POSIX_ACL=y
554CONFIG_FILE_LOCKING=y
635# CONFIG_XFS_FS is not set 555# CONFIG_XFS_FS is not set
636# CONFIG_OCFS2_FS is not set 556# CONFIG_OCFS2_FS is not set
557# CONFIG_BTRFS_FS is not set
637# CONFIG_DNOTIFY is not set 558# CONFIG_DNOTIFY is not set
638CONFIG_INOTIFY=y 559# CONFIG_INOTIFY is not set
639CONFIG_INOTIFY_USER=y
640# CONFIG_QUOTA is not set 560# CONFIG_QUOTA is not set
641# CONFIG_AUTOFS_FS is not set 561# CONFIG_AUTOFS_FS is not set
642# CONFIG_AUTOFS4_FS is not set 562# CONFIG_AUTOFS4_FS is not set
@@ -661,14 +581,10 @@ CONFIG_INOTIFY_USER=y
661CONFIG_PROC_FS=y 581CONFIG_PROC_FS=y
662CONFIG_PROC_SYSCTL=y 582CONFIG_PROC_SYSCTL=y
663CONFIG_SYSFS=y 583CONFIG_SYSFS=y
664CONFIG_TMPFS=y 584# CONFIG_TMPFS is not set
665# CONFIG_TMPFS_POSIX_ACL is not set
666# CONFIG_HUGETLB_PAGE is not set 585# CONFIG_HUGETLB_PAGE is not set
667# CONFIG_CONFIGFS_FS is not set 586# CONFIG_CONFIGFS_FS is not set
668 587CONFIG_MISC_FILESYSTEMS=y
669#
670# Miscellaneous filesystems
671#
672# CONFIG_ADFS_FS is not set 588# CONFIG_ADFS_FS is not set
673# CONFIG_AFFS_FS is not set 589# CONFIG_AFFS_FS is not set
674# CONFIG_HFS_FS is not set 590# CONFIG_HFS_FS is not set
@@ -676,35 +592,29 @@ CONFIG_TMPFS=y
676# CONFIG_BEFS_FS is not set 592# CONFIG_BEFS_FS is not set
677# CONFIG_BFS_FS is not set 593# CONFIG_BFS_FS is not set
678# CONFIG_EFS_FS is not set 594# CONFIG_EFS_FS is not set
679CONFIG_JFFS2_FS=y 595# CONFIG_JFFS2_FS is not set
680CONFIG_JFFS2_FS_DEBUG=0
681CONFIG_JFFS2_FS_WRITEBUFFER=y
682# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
683# CONFIG_JFFS2_SUMMARY is not set
684# CONFIG_JFFS2_FS_XATTR is not set
685# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
686CONFIG_JFFS2_ZLIB=y
687# CONFIG_JFFS2_LZO is not set
688CONFIG_JFFS2_RTIME=y
689# CONFIG_JFFS2_RUBIN is not set
690CONFIG_CRAMFS=y 596CONFIG_CRAMFS=y
597# CONFIG_SQUASHFS is not set
691# CONFIG_VXFS_FS is not set 598# CONFIG_VXFS_FS is not set
692# CONFIG_MINIX_FS is not set 599# CONFIG_MINIX_FS is not set
600# CONFIG_OMFS_FS is not set
693# CONFIG_HPFS_FS is not set 601# CONFIG_HPFS_FS is not set
694# CONFIG_QNX4FS_FS is not set 602# CONFIG_QNX4FS_FS is not set
695# CONFIG_ROMFS_FS is not set 603CONFIG_ROMFS_FS=y
696# CONFIG_SYSV_FS is not set 604# CONFIG_SYSV_FS is not set
697# CONFIG_UFS_FS is not set 605# CONFIG_UFS_FS is not set
698CONFIG_NETWORK_FILESYSTEMS=y 606CONFIG_NETWORK_FILESYSTEMS=y
699CONFIG_NFS_FS=y 607CONFIG_NFS_FS=y
700# CONFIG_NFS_V3 is not set 608CONFIG_NFS_V3=y
609CONFIG_NFS_V3_ACL=y
701# CONFIG_NFS_V4 is not set 610# CONFIG_NFS_V4 is not set
702# CONFIG_NFSD is not set 611# CONFIG_NFSD is not set
703CONFIG_ROOT_NFS=y
704CONFIG_LOCKD=y 612CONFIG_LOCKD=y
613CONFIG_LOCKD_V4=y
614CONFIG_NFS_ACL_SUPPORT=y
705CONFIG_NFS_COMMON=y 615CONFIG_NFS_COMMON=y
706CONFIG_SUNRPC=y 616CONFIG_SUNRPC=y
707# CONFIG_SUNRPC_BIND34 is not set 617# CONFIG_SUNRPC_REGISTER_V4 is not set
708# CONFIG_RPCSEC_GSS_KRB5 is not set 618# CONFIG_RPCSEC_GSS_KRB5 is not set
709# CONFIG_RPCSEC_GSS_SPKM3 is not set 619# CONFIG_RPCSEC_GSS_SPKM3 is not set
710# CONFIG_SMB_FS is not set 620# CONFIG_SMB_FS is not set
@@ -724,32 +634,79 @@ CONFIG_MSDOS_PARTITION=y
724# 634#
725# Kernel hacking 635# Kernel hacking
726# 636#
727CONFIG_PRINTK_TIME=y 637# CONFIG_PRINTK_TIME is not set
728CONFIG_ENABLE_WARN_DEPRECATED=y 638CONFIG_ENABLE_WARN_DEPRECATED=y
729CONFIG_ENABLE_MUST_CHECK=y 639CONFIG_ENABLE_MUST_CHECK=y
730CONFIG_FRAME_WARN=1024 640CONFIG_FRAME_WARN=1024
731# CONFIG_MAGIC_SYSRQ is not set 641# CONFIG_MAGIC_SYSRQ is not set
732# CONFIG_UNUSED_SYMBOLS is not set 642CONFIG_UNUSED_SYMBOLS=y
733# CONFIG_DEBUG_FS is not set 643CONFIG_DEBUG_FS=y
734# CONFIG_HEADERS_CHECK is not set 644# CONFIG_HEADERS_CHECK is not set
735# CONFIG_DEBUG_KERNEL is not set 645CONFIG_DEBUG_KERNEL=y
736# CONFIG_DEBUG_BUGVERBOSE is not set 646CONFIG_DEBUG_SHIRQ=y
737CONFIG_FRAME_POINTER=y 647CONFIG_DETECT_SOFTLOCKUP=y
648CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
649CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
650CONFIG_SCHED_DEBUG=y
651CONFIG_SCHEDSTATS=y
652CONFIG_TIMER_STATS=y
653CONFIG_DEBUG_OBJECTS=y
654CONFIG_DEBUG_OBJECTS_SELFTEST=y
655CONFIG_DEBUG_OBJECTS_FREE=y
656CONFIG_DEBUG_OBJECTS_TIMERS=y
657CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
658# CONFIG_DEBUG_SLAB is not set
659# CONFIG_DEBUG_RT_MUTEXES is not set
660# CONFIG_RT_MUTEX_TESTER is not set
661# CONFIG_DEBUG_SPINLOCK is not set
662# CONFIG_DEBUG_MUTEXES is not set
663# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
664# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
665# CONFIG_DEBUG_KOBJECT is not set
666CONFIG_DEBUG_INFO=y
667# CONFIG_DEBUG_VM is not set
668# CONFIG_DEBUG_NOMMU_REGIONS is not set
669# CONFIG_DEBUG_WRITECOUNT is not set
670# CONFIG_DEBUG_MEMORY_INIT is not set
671CONFIG_DEBUG_LIST=y
672CONFIG_DEBUG_SG=y
673# CONFIG_DEBUG_NOTIFIERS is not set
674# CONFIG_BOOT_PRINTK_DELAY is not set
675# CONFIG_RCU_TORTURE_TEST is not set
676# CONFIG_RCU_CPU_STALL_DETECTOR is not set
677# CONFIG_BACKTRACE_SELF_TEST is not set
678# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
679# CONFIG_FAULT_INJECTION is not set
680CONFIG_SYSCTL_SYSCALL_CHECK=y
681
682#
683# Tracers
684#
685# CONFIG_SCHED_TRACER is not set
686# CONFIG_CONTEXT_SWITCH_TRACER is not set
687# CONFIG_BOOT_TRACER is not set
688# CONFIG_TRACE_BRANCH_PROFILING is not set
689# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
738# CONFIG_SAMPLES is not set 690# CONFIG_SAMPLES is not set
739# CONFIG_DEBUG_USER is not set 691CONFIG_EARLY_PRINTK=y
692CONFIG_HEART_BEAT=y
693# CONFIG_DEBUG_BOOTMEM is not set
740 694
741# 695#
742# Security options 696# Security options
743# 697#
744# CONFIG_KEYS is not set 698# CONFIG_KEYS is not set
745# CONFIG_SECURITY is not set 699# CONFIG_SECURITY is not set
700# CONFIG_SECURITYFS is not set
746# CONFIG_SECURITY_FILE_CAPABILITIES is not set 701# CONFIG_SECURITY_FILE_CAPABILITIES is not set
747CONFIG_CRYPTO=y 702CONFIG_CRYPTO=y
748 703
749# 704#
750# Crypto core or helper 705# Crypto core or helper
751# 706#
707# CONFIG_CRYPTO_FIPS is not set
752# CONFIG_CRYPTO_MANAGER is not set 708# CONFIG_CRYPTO_MANAGER is not set
709# CONFIG_CRYPTO_MANAGER2 is not set
753# CONFIG_CRYPTO_GF128MUL is not set 710# CONFIG_CRYPTO_GF128MUL is not set
754# CONFIG_CRYPTO_NULL is not set 711# CONFIG_CRYPTO_NULL is not set
755# CONFIG_CRYPTO_CRYPTD is not set 712# CONFIG_CRYPTO_CRYPTD is not set
@@ -787,6 +744,10 @@ CONFIG_CRYPTO=y
787# CONFIG_CRYPTO_MD4 is not set 744# CONFIG_CRYPTO_MD4 is not set
788# CONFIG_CRYPTO_MD5 is not set 745# CONFIG_CRYPTO_MD5 is not set
789# CONFIG_CRYPTO_MICHAEL_MIC is not set 746# CONFIG_CRYPTO_MICHAEL_MIC is not set
747# CONFIG_CRYPTO_RMD128 is not set
748# CONFIG_CRYPTO_RMD160 is not set
749# CONFIG_CRYPTO_RMD256 is not set
750# CONFIG_CRYPTO_RMD320 is not set
790# CONFIG_CRYPTO_SHA1 is not set 751# CONFIG_CRYPTO_SHA1 is not set
791# CONFIG_CRYPTO_SHA256 is not set 752# CONFIG_CRYPTO_SHA256 is not set
792# CONFIG_CRYPTO_SHA512 is not set 753# CONFIG_CRYPTO_SHA512 is not set
@@ -817,23 +778,27 @@ CONFIG_CRYPTO=y
817# 778#
818# CONFIG_CRYPTO_DEFLATE is not set 779# CONFIG_CRYPTO_DEFLATE is not set
819# CONFIG_CRYPTO_LZO is not set 780# CONFIG_CRYPTO_LZO is not set
820# CONFIG_CRYPTO_HW is not set 781
782#
783# Random Number Generation
784#
785# CONFIG_CRYPTO_ANSI_CPRNG is not set
786CONFIG_CRYPTO_HW=y
821 787
822# 788#
823# Library routines 789# Library routines
824# 790#
825CONFIG_BITREVERSE=y 791CONFIG_GENERIC_FIND_LAST_BIT=y
826# CONFIG_GENERIC_FIND_FIRST_BIT is not set
827# CONFIG_GENERIC_FIND_NEXT_BIT is not set
828# CONFIG_CRC_CCITT is not set 792# CONFIG_CRC_CCITT is not set
829# CONFIG_CRC16 is not set 793# CONFIG_CRC16 is not set
794# CONFIG_CRC_T10DIF is not set
830# CONFIG_CRC_ITU_T is not set 795# CONFIG_CRC_ITU_T is not set
831CONFIG_CRC32=y 796# CONFIG_CRC32 is not set
832# CONFIG_CRC7 is not set 797# CONFIG_CRC7 is not set
833# CONFIG_LIBCRC32C is not set 798# CONFIG_LIBCRC32C is not set
834CONFIG_ZLIB_INFLATE=y 799CONFIG_ZLIB_INFLATE=y
835CONFIG_ZLIB_DEFLATE=y
836CONFIG_PLIST=y 800CONFIG_PLIST=y
837CONFIG_HAS_IOMEM=y 801CONFIG_HAS_IOMEM=y
838CONFIG_HAS_IOPORT=y 802CONFIG_HAS_IOPORT=y
839CONFIG_HAS_DMA=y 803CONFIG_HAS_DMA=y
804CONFIG_HAVE_LMB=y
diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild
new file mode 100644
index 000000000000..31820dfef56b
--- /dev/null
+++ b/arch/microblaze/include/asm/Kbuild
@@ -0,0 +1,26 @@
1include include/asm-generic/Kbuild.asm
2
3header-y += auxvec.h
4header-y += errno.h
5header-y += fcntl.h
6header-y += ioctl.h
7header-y += ioctls.h
8header-y += ipcbuf.h
9header-y += linkage.h
10header-y += msgbuf.h
11header-y += poll.h
12header-y += resource.h
13header-y += sembuf.h
14header-y += shmbuf.h
15header-y += sigcontext.h
16header-y += siginfo.h
17header-y += socket.h
18header-y += sockios.h
19header-y += statfs.h
20header-y += stat.h
21header-y += termbits.h
22header-y += ucontext.h
23
24unifdef-y += cputable.h
25unifdef-y += elf.h
26unifdef-y += termios.h
diff --git a/arch/microblaze/include/asm/atomic.h b/arch/microblaze/include/asm/atomic.h
new file mode 100644
index 000000000000..a448d94ab721
--- /dev/null
+++ b/arch/microblaze/include/asm/atomic.h
@@ -0,0 +1,123 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_ATOMIC_H
10#define _ASM_MICROBLAZE_ATOMIC_H
11
12#include <linux/types.h>
13#include <linux/compiler.h> /* likely */
14#include <asm/system.h> /* local_irq_XXX and friends */
15
16#define ATOMIC_INIT(i) { (i) }
17#define atomic_read(v) ((v)->counter)
18#define atomic_set(v, i) (((v)->counter) = (i))
19
20#define atomic_inc(v) (atomic_add_return(1, (v)))
21#define atomic_dec(v) (atomic_sub_return(1, (v)))
22
23#define atomic_add(i, v) (atomic_add_return(i, (v)))
24#define atomic_sub(i, v) (atomic_sub_return(i, (v)))
25
26#define atomic_inc_return(v) (atomic_add_return(1, (v)))
27#define atomic_dec_return(v) (atomic_sub_return(1, (v)))
28
29#define atomic_inc_and_test(v) (atomic_add_return(1, (v)) == 0)
30#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0)
31
32#define atomic_inc_not_zero(v) (atomic_add_unless((v), 1, 0))
33
34#define atomic_sub_and_test(i, v) (atomic_sub_return((i), (v)) == 0)
35
36static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
37{
38 int ret;
39 unsigned long flags;
40
41 local_irq_save(flags);
42 ret = v->counter;
43 if (likely(ret == old))
44 v->counter = new;
45 local_irq_restore(flags);
46
47 return ret;
48}
49
50static inline int atomic_add_unless(atomic_t *v, int a, int u)
51{
52 int c, old;
53
54 c = atomic_read(v);
55 while (c != u && (old = atomic_cmpxchg((v), c, c + a)) != c)
56 c = old;
57 return c != u;
58}
59
60static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
61{
62 unsigned long flags;
63
64 local_irq_save(flags);
65 *addr &= ~mask;
66 local_irq_restore(flags);
67}
68
69/**
70 * atomic_add_return - add and return
71 * @i: integer value to add
72 * @v: pointer of type atomic_t
73 *
74 * Atomically adds @i to @v and returns @i + @v
75 */
76static inline int atomic_add_return(int i, atomic_t *v)
77{
78 unsigned long flags;
79 int val;
80
81 local_irq_save(flags);
82 val = v->counter;
83 v->counter = val += i;
84 local_irq_restore(flags);
85
86 return val;
87}
88
89static inline int atomic_sub_return(int i, atomic_t *v)
90{
91 return atomic_add_return(-i, v);
92}
93
94/*
95 * Atomically test *v and decrement if it is greater than 0.
96 * The function returns the old value of *v minus 1.
97 */
98static inline int atomic_dec_if_positive(atomic_t *v)
99{
100 unsigned long flags;
101 int res;
102
103 local_irq_save(flags);
104 res = v->counter - 1;
105 if (res >= 0)
106 v->counter = res;
107 local_irq_restore(flags);
108
109 return res;
110}
111
112#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
113#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
114
115/* Atomic operations are already serializing */
116#define smp_mb__before_atomic_dec() barrier()
117#define smp_mb__after_atomic_dec() barrier()
118#define smp_mb__before_atomic_inc() barrier()
119#define smp_mb__after_atomic_inc() barrier()
120
121#include <asm-generic/atomic.h>
122
123#endif /* _ASM_MICROBLAZE_ATOMIC_H */
diff --git a/arch/microblaze/include/asm/auxvec.h b/arch/microblaze/include/asm/auxvec.h
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/arch/microblaze/include/asm/auxvec.h
@@ -0,0 +1 @@
diff --git a/arch/microblaze/include/asm/bitops.h b/arch/microblaze/include/asm/bitops.h
new file mode 100644
index 000000000000..d6df1fd4e1e8
--- /dev/null
+++ b/arch/microblaze/include/asm/bitops.h
@@ -0,0 +1,27 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_BITOPS_H
10#define _ASM_MICROBLAZE_BITOPS_H
11
12/*
13 * Copyright 1992, Linus Torvalds.
14 */
15
16#include <asm/byteorder.h> /* swab32 */
17#include <asm/system.h> /* save_flags */
18
19/*
20 * clear_bit() doesn't provide any barrier for the compiler.
21 */
22#define smp_mb__before_clear_bit() barrier()
23#define smp_mb__after_clear_bit() barrier()
24#include <asm-generic/bitops.h>
25#include <asm-generic/bitops/__fls.h>
26
27#endif /* _ASM_MICROBLAZE_BITOPS_H */
diff --git a/arch/microblaze/include/asm/bug.h b/arch/microblaze/include/asm/bug.h
new file mode 100644
index 000000000000..8eb2cdde11d7
--- /dev/null
+++ b/arch/microblaze/include/asm/bug.h
@@ -0,0 +1,15 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_BUG_H
10#define _ASM_MICROBLAZE_BUG_H
11
12#include <linux/kernel.h>
13#include <asm-generic/bug.h>
14
15#endif /* _ASM_MICROBLAZE_BUG_H */
diff --git a/arch/microblaze/include/asm/bugs.h b/arch/microblaze/include/asm/bugs.h
new file mode 100644
index 000000000000..f2c6593653fb
--- /dev/null
+++ b/arch/microblaze/include/asm/bugs.h
@@ -0,0 +1,17 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_BUGS_H
10#define _ASM_MICROBLAZE_BUGS_H
11
12static inline void check_bugs(void)
13{
14 /* nothing to do */
15}
16
17#endif /* _ASM_MICROBLAZE_BUGS_H */
diff --git a/arch/microblaze/include/asm/byteorder.h b/arch/microblaze/include/asm/byteorder.h
new file mode 100644
index 000000000000..ce9c58732ffc
--- /dev/null
+++ b/arch/microblaze/include/asm/byteorder.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_MICROBLAZE_BYTEORDER_H
2#define _ASM_MICROBLAZE_BYTEORDER_H
3
4#include <linux/byteorder/big_endian.h>
5
6#endif /* _ASM_MICROBLAZE_BYTEORDER_H */
diff --git a/arch/microblaze/include/asm/cache.h b/arch/microblaze/include/asm/cache.h
new file mode 100644
index 000000000000..c209c47509d5
--- /dev/null
+++ b/arch/microblaze/include/asm/cache.h
@@ -0,0 +1,40 @@
1/*
2 * Cache operations
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_CACHE_H
14#define _ASM_MICROBLAZE_CACHE_H
15
16#include <asm/registers.h>
17
18#define L1_CACHE_SHIFT 2
19/* word-granular cache in microblaze */
20#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
21
22#define SMP_CACHE_BYTES L1_CACHE_BYTES
23
24void _enable_icache(void);
25void _disable_icache(void);
26void _invalidate_icache(unsigned int addr);
27
28#define __enable_icache() _enable_icache()
29#define __disable_icache() _disable_icache()
30#define __invalidate_icache(addr) _invalidate_icache(addr)
31
32void _enable_dcache(void);
33void _disable_dcache(void);
34void _invalidate_dcache(unsigned int addr);
35
36#define __enable_dcache() _enable_dcache()
37#define __disable_dcache() _disable_dcache()
38#define __invalidate_dcache(addr) _invalidate_dcache(addr)
39
40#endif /* _ASM_MICROBLAZE_CACHE_H */
diff --git a/arch/microblaze/include/asm/cacheflush.h b/arch/microblaze/include/asm/cacheflush.h
new file mode 100644
index 000000000000..3300b785049b
--- /dev/null
+++ b/arch/microblaze/include/asm/cacheflush.h
@@ -0,0 +1,85 @@
1/*
2 * Copyright (C) 2007 PetaLogix
3 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
4 * based on v850 version which was
5 * Copyright (C) 2001,02,03 NEC Electronics Corporation
6 * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 *
12 */
13
14#ifndef _ASM_MICROBLAZE_CACHEFLUSH_H
15#define _ASM_MICROBLAZE_CACHEFLUSH_H
16
17/* Somebody depends on this; sigh... */
18#include <linux/mm.h>
19
20/*
21 * Cache handling functions.
22 * Microblaze has a write-through data cache, meaning that the data cache
23 * never needs to be flushed. The only flushing operations that are
24 * implemented are to invalidate the instruction cache. These are called
25 * after loading a user application into memory, we must invalidate the
26 * instruction cache to make sure we don't fetch old, bad code.
27 */
28
29/* FIXME for LL-temac driver */
30#define invalidate_dcache_range(start, end) \
31 __invalidate_dcache_range(start, end)
32
33#define flush_cache_all() __invalidate_cache_all()
34#define flush_cache_mm(mm) do { } while (0)
35#define flush_cache_range(vma, start, end) __invalidate_cache_all()
36#define flush_cache_page(vma, vmaddr, pfn) do { } while (0)
37
38#define flush_dcache_range(start, end) __invalidate_dcache_range(start, end)
39#define flush_dcache_page(page) do { } while (0)
40#define flush_dcache_mmap_lock(mapping) do { } while (0)
41#define flush_dcache_mmap_unlock(mapping) do { } while (0)
42
43#define flush_icache_range(start, len) __invalidate_icache_range(start, len)
44#define flush_icache_page(vma, pg) do { } while (0)
45
46#define flush_cache_vmap(start, end) do { } while (0)
47#define flush_cache_vunmap(start, end) do { } while (0)
48
49struct page;
50struct mm_struct;
51struct vm_area_struct;
52
53/* see arch/microblaze/kernel/cache.c */
54extern void __invalidate_icache_all(void);
55extern void __invalidate_icache_range(unsigned long start, unsigned long end);
56extern void __invalidate_icache_page(struct vm_area_struct *vma,
57 struct page *page);
58extern void __invalidate_icache_user_range(struct vm_area_struct *vma,
59 struct page *page,
60 unsigned long adr, int len);
61extern void __invalidate_cache_sigtramp(unsigned long addr);
62
63extern void __invalidate_dcache_all(void);
64extern void __invalidate_dcache_range(unsigned long start, unsigned long end);
65extern void __invalidate_dcache_page(struct vm_area_struct *vma,
66 struct page *page);
67extern void __invalidate_dcache_user_range(struct vm_area_struct *vma,
68 struct page *page,
69 unsigned long adr, int len);
70
71extern inline void __invalidate_cache_all(void)
72{
73 __invalidate_icache_all();
74 __invalidate_dcache_all();
75}
76
77#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
78do { memcpy((dst), (src), (len)); \
79 flush_icache_range((unsigned) (dst), (unsigned) (dst) + (len)); \
80} while (0)
81
82#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
83 memcpy((dst), (src), (len))
84
85#endif /* _ASM_MICROBLAZE_CACHEFLUSH_H */
diff --git a/arch/microblaze/include/asm/checksum.h b/arch/microblaze/include/asm/checksum.h
new file mode 100644
index 000000000000..92b30762ce59
--- /dev/null
+++ b/arch/microblaze/include/asm/checksum.h
@@ -0,0 +1,98 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_CHECKSUM_H
11#define _ASM_MICROBLAZE_CHECKSUM_H
12
13#include <linux/in6.h>
14
15/*
16 * computes the checksum of the TCP/UDP pseudo-header
17 * returns a 16-bit checksum, already complemented
18 */
19static inline __wsum
20csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
21 unsigned short proto, __wsum sum)
22{
23 __asm__("add %0, %0, %1\n\t"
24 "addc %0, %0, %2\n\t"
25 "addc %0, %0, %3\n\t"
26 "addc %0, %0, r0\n\t"
27 : "+&d" (sum)
28 : "d" (saddr), "d" (daddr), "d" (len + proto));
29
30 return sum;
31}
32
33/*
34 * computes the checksum of a memory block at buff, length len,
35 * and adds in "sum" (32-bit)
36 *
37 * returns a 32-bit number suitable for feeding into itself
38 * or csum_tcpudp_magic
39 *
40 * this function must be called with even lengths, except
41 * for the last fragment, which may be odd
42 *
43 * it's best to have buff aligned on a 32-bit boundary
44 */
45extern __wsum csum_partial(const void *buff, int len, __wsum sum);
46
47/*
48 * the same as csum_partial, but copies from src while it
49 * checksums
50 *
51 * here even more important to align src and dst on a 32-bit (or even
52 * better 64-bit) boundary
53 */
54extern __wsum csum_partial_copy(const char *src, char *dst, int len, int sum);
55
56/*
57 * the same as csum_partial_copy, but copies from user space.
58 *
59 * here even more important to align src and dst on a 32-bit (or even
60 * better 64-bit) boundary
61 */
62extern __wsum csum_partial_copy_from_user(const char *src, char *dst,
63 int len, int sum, int *csum_err);
64
65#define csum_partial_copy_nocheck(src, dst, len, sum) \
66 csum_partial_copy((src), (dst), (len), (sum))
67
68/*
69 * This is a version of ip_compute_csum() optimized for IP headers,
70 * which always checksum on 4 octet boundaries.
71 *
72 */
73extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
74
75/*
76 * Fold a partial checksum
77 */
78static inline __sum16 csum_fold(unsigned int sum)
79{
80 sum = (sum & 0xffff) + (sum >> 16);
81 sum = (sum & 0xffff) + (sum >> 16);
82 return ~sum;
83}
84
85static inline __sum16
86csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len,
87 unsigned short proto, __wsum sum)
88{
89 return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
90}
91
92/*
93 * this routine is used for miscellaneous IP-like checksums, mainly
94 * in icmp.c
95 */
96extern __sum16 ip_compute_csum(const unsigned char *buff, int len);
97
98#endif /* _ASM_MICROBLAZE_CHECKSUM_H */
diff --git a/arch/microblaze/include/asm/clinkage.h b/arch/microblaze/include/asm/clinkage.h
new file mode 100644
index 000000000000..9e218435a55c
--- /dev/null
+++ b/arch/microblaze/include/asm/clinkage.h
@@ -0,0 +1 @@
#include <linux/linkage.h>
diff --git a/arch/microblaze/include/asm/cpuinfo.h b/arch/microblaze/include/asm/cpuinfo.h
new file mode 100644
index 000000000000..52f28f6dc4eb
--- /dev/null
+++ b/arch/microblaze/include/asm/cpuinfo.h
@@ -0,0 +1,102 @@
1/*
2 * Generic support for queying CPU info
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <jwilliams@itee.uq.edu.au>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_CPUINFO_H
14#define _ASM_MICROBLAZE_CPUINFO_H
15
16#include <asm/prom.h>
17
18/* CPU Version and FPGA Family code conversion table type */
19struct cpu_ver_key {
20 const char *s;
21 const unsigned k;
22};
23
24extern const struct cpu_ver_key cpu_ver_lookup[];
25
26struct family_string_key {
27 const char *s;
28 const unsigned k;
29};
30
31extern const struct family_string_key family_string_lookup[];
32
33struct cpuinfo {
34 /* Core CPU configuration */
35 u32 use_instr;
36 u32 use_mult;
37 u32 use_fpu;
38 u32 use_exc;
39 u32 ver_code;
40 u32 mmu;
41
42 /* CPU caches */
43 u32 use_icache;
44 u32 icache_tagbits;
45 u32 icache_write;
46 u32 icache_line;
47 u32 icache_size;
48 unsigned long icache_base;
49 unsigned long icache_high;
50
51 u32 use_dcache;
52 u32 dcache_tagbits;
53 u32 dcache_write;
54 u32 dcache_line;
55 u32 dcache_size;
56 unsigned long dcache_base;
57 unsigned long dcache_high;
58
59 /* Bus connections */
60 u32 use_dopb;
61 u32 use_iopb;
62 u32 use_dlmb;
63 u32 use_ilmb;
64 u32 num_fsl;
65
66 /* CPU interrupt line info */
67 u32 irq_edge;
68 u32 irq_positive;
69
70 u32 area_optimised;
71
72 /* HW debug support */
73 u32 hw_debug;
74 u32 num_pc_brk;
75 u32 num_rd_brk;
76 u32 num_wr_brk;
77 u32 cpu_clock_freq; /* store real freq of cpu */
78 u32 freq_div_hz; /* store freq/HZ */
79
80 /* FPGA family */
81 u32 fpga_family_code;
82
83 /* User define */
84 u32 pvr_user1;
85 u32 pvr_user2;
86};
87
88extern struct cpuinfo cpuinfo;
89
90/* fwd declarations of the various CPUinfo populators */
91void setup_cpuinfo(void);
92
93void set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu);
94void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu);
95
96static inline unsigned int fcpu(struct device_node *cpu, char *n)
97{
98 int *val;
99 return (val = (int *) of_get_property(cpu, n, NULL)) ? *val : 0;
100}
101
102#endif /* _ASM_MICROBLAZE_CPUINFO_H */
diff --git a/arch/microblaze/include/asm/cputable.h b/arch/microblaze/include/asm/cputable.h
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/arch/microblaze/include/asm/cputable.h
@@ -0,0 +1 @@
diff --git a/include/asm-mn10300/cputime.h b/arch/microblaze/include/asm/cputime.h
index 6d68ad7e0ea3..6d68ad7e0ea3 100644
--- a/include/asm-mn10300/cputime.h
+++ b/arch/microblaze/include/asm/cputime.h
diff --git a/arch/microblaze/include/asm/current.h b/arch/microblaze/include/asm/current.h
new file mode 100644
index 000000000000..8375ea991e26
--- /dev/null
+++ b/arch/microblaze/include/asm/current.h
@@ -0,0 +1,21 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_CURRENT_H
10#define _ASM_MICROBLAZE_CURRENT_H
11
12# ifndef __ASSEMBLY__
13/*
14 * Dedicate r31 to keeping the current task pointer
15 */
16register struct task_struct *current asm("r31");
17
18# define get_current() current
19# endif /* __ASSEMBLY__ */
20
21#endif /* _ASM_MICROBLAZE_CURRENT_H */
diff --git a/arch/microblaze/include/asm/delay.h b/arch/microblaze/include/asm/delay.h
new file mode 100644
index 000000000000..05b7d39e4391
--- /dev/null
+++ b/arch/microblaze/include/asm/delay.h
@@ -0,0 +1,72 @@
1/*
2 * include/asm-microblaze/delay.h
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 2008 Michal Simek
9 * Copyright (C) 2007 John Williams
10 * Copyright (C) 2006 Atmark Techno, Inc.
11 */
12
13#ifndef _ASM_MICROBLAZE_DELAY_H
14#define _ASM_MICROBLAZE_DELAY_H
15
16extern inline void __delay(unsigned long loops)
17{
18 asm volatile ("# __delay \n\t" \
19 "1: addi %0, %0, -1\t\n" \
20 "bneid %0, 1b \t\n" \
21 "nop \t\n"
22 : "=r" (loops)
23 : "0" (loops));
24}
25
26/*
27 * Note that 19 * 226 == 4294 ==~ 2^32 / 10^6, so
28 * loops = (4294 * usecs * loops_per_jiffy * HZ) / 2^32.
29 *
30 * The mul instruction gives us loops = (a * b) / 2^32.
31 * We choose a = usecs * 19 * HZ and b = loops_per_jiffy * 226
32 * because this lets us support a wide range of HZ and
33 * loops_per_jiffy values without either a or b overflowing 2^32.
34 * Thus we need usecs * HZ <= (2^32 - 1) / 19 = 226050910 and
35 * loops_per_jiffy <= (2^32 - 1) / 226 = 19004280
36 * (which corresponds to ~3800 bogomips at HZ = 100).
37 * -- paulus
38 */
39#define __MAX_UDELAY (226050910UL/HZ) /* maximum udelay argument */
40#define __MAX_NDELAY (4294967295UL/HZ) /* maximum ndelay argument */
41
42extern unsigned long loops_per_jiffy;
43
44extern inline void __udelay(unsigned int x)
45{
46
47 unsigned long long tmp =
48 (unsigned long long)x * (unsigned long long)loops_per_jiffy \
49 * 226LL;
50 unsigned loops = tmp >> 32;
51
52/*
53 __asm__("mulxuu %0,%1,%2" : "=r" (loops) :
54 "r" (x), "r" (loops_per_jiffy * 226));
55*/
56 __delay(loops);
57}
58
59extern void __bad_udelay(void); /* deliberately undefined */
60extern void __bad_ndelay(void); /* deliberately undefined */
61
62#define udelay(n) (__builtin_constant_p(n) ? \
63 ((n) > __MAX_UDELAY ? __bad_udelay() : __udelay((n) * (19 * HZ))) : \
64 __udelay((n) * (19 * HZ)))
65
66#define ndelay(n) (__builtin_constant_p(n) ? \
67 ((n) > __MAX_NDELAY ? __bad_ndelay() : __udelay((n) * HZ)) : \
68 __udelay((n) * HZ))
69
70#define muldiv(a, b, c) (((a)*(b))/(c))
71
72#endif /* _ASM_MICROBLAZE_DELAY_H */
diff --git a/arch/microblaze/include/asm/device.h b/arch/microblaze/include/asm/device.h
new file mode 100644
index 000000000000..c042830793ed
--- /dev/null
+++ b/arch/microblaze/include/asm/device.h
@@ -0,0 +1,21 @@
1/*
2 * Arch specific extensions to struct device
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License v2. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_DEVICE_H
10#define _ASM_MICROBLAZE_DEVICE_H
11
12struct device_node;
13
14struct dev_archdata {
15 /* Optional pointer to an OF device node */
16 struct device_node *of_node;
17};
18
19#endif /* _ASM_MICROBLAZE_DEVICE_H */
20
21
diff --git a/arch/microblaze/include/asm/div64.h b/arch/microblaze/include/asm/div64.h
new file mode 100644
index 000000000000..6cd978cefb28
--- /dev/null
+++ b/arch/microblaze/include/asm/div64.h
@@ -0,0 +1 @@
#include <asm-generic/div64.h>
diff --git a/arch/microblaze/include/asm/dma-mapping.h b/arch/microblaze/include/asm/dma-mapping.h
new file mode 100644
index 000000000000..17336252a9b8
--- /dev/null
+++ b/arch/microblaze/include/asm/dma-mapping.h
@@ -0,0 +1,129 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_DMA_MAPPING_H
10#define _ASM_MICROBLAZE_DMA_MAPPING_H
11
12#include <asm/cacheflush.h>
13#include <linux/io.h>
14#include <linux/bug.h>
15
16struct scatterlist;
17
18#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
19#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
20
21/* FIXME */
22static inline int
23dma_supported(struct device *dev, u64 mask)
24{
25 return 1;
26}
27
28static inline dma_addr_t
29dma_map_page(struct device *dev, struct page *page,
30 unsigned long offset, size_t size,
31 enum dma_data_direction direction)
32{
33 BUG();
34 return 0;
35}
36
37static inline void
38dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
39 enum dma_data_direction direction)
40{
41 BUG();
42}
43
44static inline int
45dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
46 enum dma_data_direction direction)
47{
48 BUG();
49 return 0;
50}
51
52static inline void
53dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
54 enum dma_data_direction direction)
55{
56 BUG();
57}
58
59static inline void
60dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
61 enum dma_data_direction direction)
62{
63 BUG();
64}
65
66static inline void
67dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
68 size_t size, enum dma_data_direction direction)
69{
70 BUG();
71}
72
73static inline void
74dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
75 enum dma_data_direction direction)
76{
77 BUG();
78}
79
80static inline void
81dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
82 enum dma_data_direction direction)
83{
84 BUG();
85}
86
87static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
88{
89 return 0;
90}
91
92static inline void *dma_alloc_coherent(struct device *dev, size_t size,
93 dma_addr_t *dma_handle, int flag)
94{
95 return NULL; /* consistent_alloc(flag, size, dma_handle); */
96}
97
98static inline void dma_free_coherent(struct device *dev, size_t size,
99 void *vaddr, dma_addr_t dma_handle)
100{
101 BUG();
102}
103
104static inline dma_addr_t
105dma_map_single(struct device *dev, void *ptr, size_t size,
106 enum dma_data_direction direction)
107{
108 BUG_ON(direction == DMA_NONE);
109
110 return virt_to_bus(ptr);
111}
112
113static inline void dma_unmap_single(struct device *dev, dma_addr_t dma_addr,
114 size_t size,
115 enum dma_data_direction direction)
116{
117 switch (direction) {
118 case DMA_FROM_DEVICE:
119 flush_dcache_range((unsigned)dma_addr,
120 (unsigned)dma_addr + size);
121 /* Fall through */
122 case DMA_TO_DEVICE:
123 break;
124 default:
125 BUG();
126 }
127}
128
129#endif /* _ASM_MICROBLAZE_DMA_MAPPING_H */
diff --git a/arch/microblaze/include/asm/dma.h b/arch/microblaze/include/asm/dma.h
new file mode 100644
index 000000000000..0967fa04fc5e
--- /dev/null
+++ b/arch/microblaze/include/asm/dma.h
@@ -0,0 +1,16 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_DMA_H
10#define _ASM_MICROBLAZE_DMA_H
11
12/* we don't have dma address limit. define it as zero to be
13 * unlimited. */
14#define MAX_DMA_ADDRESS (0)
15
16#endif /* _ASM_MICROBLAZE_DMA_H */
diff --git a/arch/microblaze/include/asm/elf.h b/arch/microblaze/include/asm/elf.h
new file mode 100644
index 000000000000..81337f241347
--- /dev/null
+++ b/arch/microblaze/include/asm/elf.h
@@ -0,0 +1,30 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_ELF_H
10#define _ASM_MICROBLAZE_ELF_H
11
12/*
13 * Note there is no "official" ELF designation for Microblaze.
14 * I've snaffled the value from the microblaze binutils source code
15 * /binutils/microblaze/include/elf/microblaze.h
16 */
17#define EM_XILINX_MICROBLAZE 0xbaab
18#define ELF_ARCH EM_XILINX_MICROBLAZE
19
20/*
21 * This is used to ensure we don't load something for the wrong architecture.
22 */
23#define elf_check_arch(x) ((x)->e_machine == EM_XILINX_MICROBLAZE)
24
25/*
26 * These are used to set parameters in the core dumps.
27 */
28#define ELF_CLASS ELFCLASS32
29
30#endif /* _ASM_MICROBLAZE_ELF_H */
diff --git a/include/asm-mn10300/emergency-restart.h b/arch/microblaze/include/asm/emergency-restart.h
index 3711bd9d50bd..3711bd9d50bd 100644
--- a/include/asm-mn10300/emergency-restart.h
+++ b/arch/microblaze/include/asm/emergency-restart.h
diff --git a/arch/microblaze/include/asm/entry.h b/arch/microblaze/include/asm/entry.h
new file mode 100644
index 000000000000..e4c3aef884df
--- /dev/null
+++ b/arch/microblaze/include/asm/entry.h
@@ -0,0 +1,37 @@
1/*
2 * Definitions used by low-level trap handlers
3 *
4 * Copyright (C) 2008 Michal Simek
5 * Copyright (C) 2007 - 2008 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_ENTRY_H
14#define _ASM_MICROBLAZE_ENTRY_H
15
16#include <asm/percpu.h>
17#include <asm/ptrace.h>
18
19/*
20 * These are per-cpu variables required in entry.S, among other
21 * places
22 */
23
24#define PER_CPU(var) per_cpu__##var
25
26# ifndef __ASSEMBLY__
27DECLARE_PER_CPU(unsigned int, KSP); /* Saved kernel stack pointer */
28DECLARE_PER_CPU(unsigned int, KM); /* Kernel/user mode */
29DECLARE_PER_CPU(unsigned int, ENTRY_SP); /* Saved SP on kernel entry */
30DECLARE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
31DECLARE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
32# endif /* __ASSEMBLY__ */
33
34/* noMMU hasn't any space for args */
35# define STATE_SAVE_ARG_SPACE (0)
36
37#endif /* _ASM_MICROBLAZE_ENTRY_H */
diff --git a/include/asm-mn10300/errno.h b/arch/microblaze/include/asm/errno.h
index 4c82b503d92f..4c82b503d92f 100644
--- a/include/asm-mn10300/errno.h
+++ b/arch/microblaze/include/asm/errno.h
diff --git a/arch/microblaze/include/asm/exceptions.h b/arch/microblaze/include/asm/exceptions.h
new file mode 100644
index 000000000000..24ca540e77c0
--- /dev/null
+++ b/arch/microblaze/include/asm/exceptions.h
@@ -0,0 +1,99 @@
1/*
2 * Preliminary support for HW exception handing for Microblaze
3 *
4 * Copyright (C) 2008 Michal Simek
5 * Copyright (C) 2008 PetaLogix
6 * Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_EXCEPTIONS_H
14#define _ASM_MICROBLAZE_EXCEPTIONS_H
15
16#ifdef __KERNEL__
17#ifndef __ASSEMBLY__
18
19/* Macros to enable and disable HW exceptions in the MSR */
20/* Define MSR enable bit for HW exceptions */
21#define HWEX_MSR_BIT (1 << 8)
22
23#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
24#define __enable_hw_exceptions() \
25 __asm__ __volatile__ (" msrset r0, %0; \
26 nop;" \
27 : \
28 : "i" (HWEX_MSR_BIT) \
29 : "memory")
30
31#define __disable_hw_exceptions() \
32 __asm__ __volatile__ (" msrclr r0, %0; \
33 nop;" \
34 : \
35 : "i" (HWEX_MSR_BIT) \
36 : "memory")
37#else /* !CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
38#define __enable_hw_exceptions() \
39 __asm__ __volatile__ (" \
40 mfs r12, rmsr; \
41 nop; \
42 ori r12, r12, %0; \
43 mts rmsr, r12; \
44 nop;" \
45 : \
46 : "i" (HWEX_MSR_BIT) \
47 : "memory", "r12")
48
49#define __disable_hw_exceptions() \
50 __asm__ __volatile__ (" \
51 mfs r12, rmsr; \
52 nop; \
53 andi r12, r12, ~%0; \
54 mts rmsr, r12; \
55 nop;" \
56 : \
57 : "i" (HWEX_MSR_BIT) \
58 : "memory", "r12")
59#endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
60
61asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
62 int fsr, int addr);
63
64void die(const char *str, struct pt_regs *fp, long err);
65void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr);
66
67#if defined(CONFIG_XMON)
68extern void xmon(struct pt_regs *regs);
69extern int xmon_bpt(struct pt_regs *regs);
70extern int xmon_sstep(struct pt_regs *regs);
71extern int xmon_iabr_match(struct pt_regs *regs);
72extern int xmon_dabr_match(struct pt_regs *regs);
73extern void (*xmon_fault_handler)(struct pt_regs *regs);
74
75void (*debugger)(struct pt_regs *regs) = xmon;
76int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt;
77int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep;
78int (*debugger_iabr_match)(struct pt_regs *regs) = xmon_iabr_match;
79int (*debugger_dabr_match)(struct pt_regs *regs) = xmon_dabr_match;
80void (*debugger_fault_handler)(struct pt_regs *regs);
81#elif defined(CONFIG_KGDB)
82void (*debugger)(struct pt_regs *regs);
83int (*debugger_bpt)(struct pt_regs *regs);
84int (*debugger_sstep)(struct pt_regs *regs);
85int (*debugger_iabr_match)(struct pt_regs *regs);
86int (*debugger_dabr_match)(struct pt_regs *regs);
87void (*debugger_fault_handler)(struct pt_regs *regs);
88#else
89#define debugger(regs) do { } while (0)
90#define debugger_bpt(regs) 0
91#define debugger_sstep(regs) 0
92#define debugger_iabr_match(regs) 0
93#define debugger_dabr_match(regs) 0
94#define debugger_fault_handler ((void (*)(struct pt_regs *))0)
95#endif
96
97#endif /*__ASSEMBLY__ */
98#endif /* __KERNEL__ */
99#endif /* _ASM_MICROBLAZE_EXCEPTIONS_H */
diff --git a/include/asm-mn10300/fcntl.h b/arch/microblaze/include/asm/fcntl.h
index 46ab12db5739..46ab12db5739 100644
--- a/include/asm-mn10300/fcntl.h
+++ b/arch/microblaze/include/asm/fcntl.h
diff --git a/arch/microblaze/include/asm/flat.h b/arch/microblaze/include/asm/flat.h
new file mode 100644
index 000000000000..acf0da543ef1
--- /dev/null
+++ b/arch/microblaze/include/asm/flat.h
@@ -0,0 +1,90 @@
1/*
2 * uClinux flat-format executables
3 *
4 * Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
5 *
6 * This file is subject to the terms and conditions of the GNU General
7 * Public License. See the file COPYING in the main directory of this
8 * archive for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_FLAT_H
12#define _ASM_MICROBLAZE_FLAT_H
13
14#include <asm/unaligned.h>
15
16#define flat_stack_align(sp) /* nothing needed */
17#define flat_argvp_envp_on_stack() 0
18#define flat_old_ram_flag(flags) (flags)
19#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
20#define flat_set_persistent(relval, p) 0
21
22/*
23 * Microblaze works a little differently from other arches, because
24 * of the MICROBLAZE_64 reloc type. Here, a 32 bit address is split
25 * over two instructions, an 'imm' instruction which provides the top
26 * 16 bits, then the instruction "proper" which provides the low 16
27 * bits.
28 */
29
30/*
31 * Crack open a symbol reference and extract the address to be
32 * relocated. rp is a potentially unaligned pointer to the
33 * reference
34 */
35
36static inline unsigned long
37flat_get_addr_from_rp(unsigned long *rp, unsigned long relval,
38 unsigned long flags, unsigned long *persistent)
39{
40 unsigned long addr;
41 (void)flags;
42
43 /* Is it a split 64/32 reference? */
44 if (relval & 0x80000000) {
45 /* Grab the two halves of the reference */
46 unsigned long val_hi, val_lo;
47
48 val_hi = get_unaligned(rp);
49 val_lo = get_unaligned(rp+1);
50
51 /* Crack the address out */
52 addr = ((val_hi & 0xffff) << 16) + (val_lo & 0xffff);
53 } else {
54 /* Get the address straight out */
55 addr = get_unaligned(rp);
56 }
57
58 return addr;
59}
60
61/*
62 * Insert an address into the symbol reference at rp. rp is potentially
63 * unaligned.
64 */
65
66static inline void
67flat_put_addr_at_rp(unsigned long *rp, unsigned long addr, unsigned long relval)
68{
69 /* Is this a split 64/32 reloc? */
70 if (relval & 0x80000000) {
71 /* Get the two "halves" */
72 unsigned long val_hi = get_unaligned(rp);
73 unsigned long val_lo = get_unaligned(rp + 1);
74
75 /* insert the address */
76 val_hi = (val_hi & 0xffff0000) | addr >> 16;
77 val_lo = (val_lo & 0xffff0000) | (addr & 0xffff);
78
79 /* store the two halves back into memory */
80 put_unaligned(val_hi, rp);
81 put_unaligned(val_lo, rp+1);
82 } else {
83 /* Put it straight in, no messing around */
84 put_unaligned(addr, rp);
85 }
86}
87
88#define flat_get_relocate_addr(rel) (rel & 0x7fffffff)
89
90#endif /* _ASM_MICROBLAZE_FLAT_H */
diff --git a/arch/microblaze/include/asm/ftrace.h b/arch/microblaze/include/asm/ftrace.h
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/arch/microblaze/include/asm/ftrace.h
@@ -0,0 +1 @@
diff --git a/include/asm-mn10300/futex.h b/arch/microblaze/include/asm/futex.h
index 0b745828f42b..0b745828f42b 100644
--- a/include/asm-mn10300/futex.h
+++ b/arch/microblaze/include/asm/futex.h
diff --git a/arch/microblaze/include/asm/gpio.h b/arch/microblaze/include/asm/gpio.h
new file mode 100644
index 000000000000..ea04632399d8
--- /dev/null
+++ b/arch/microblaze/include/asm/gpio.h
@@ -0,0 +1,56 @@
1/*
2 * Generic GPIO API implementation for PowerPC.
3 *
4 * Copyright (c) 2007-2008 MontaVista Software, Inc.
5 *
6 * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 */
13
14#ifndef __ASM_POWERPC_GPIO_H
15#define __ASM_POWERPC_GPIO_H
16
17#include <linux/errno.h>
18#include <asm-generic/gpio.h>
19
20#ifdef CONFIG_GPIOLIB
21
22/*
23 * We don't (yet) implement inlined/rapid versions for on-chip gpios.
24 * Just call gpiolib.
25 */
26static inline int gpio_get_value(unsigned int gpio)
27{
28 return __gpio_get_value(gpio);
29}
30
31static inline void gpio_set_value(unsigned int gpio, int value)
32{
33 __gpio_set_value(gpio, value);
34}
35
36static inline int gpio_cansleep(unsigned int gpio)
37{
38 return __gpio_cansleep(gpio);
39}
40
41/*
42 * Not implemented, yet.
43 */
44static inline int gpio_to_irq(unsigned int gpio)
45{
46 return -ENOSYS;
47}
48
49static inline int irq_to_gpio(unsigned int irq)
50{
51 return -EINVAL;
52}
53
54#endif /* CONFIG_GPIOLIB */
55
56#endif /* __ASM_POWERPC_GPIO_H */
diff --git a/arch/microblaze/include/asm/hardirq.h b/arch/microblaze/include/asm/hardirq.h
new file mode 100644
index 000000000000..0f2d6b013e11
--- /dev/null
+++ b/arch/microblaze/include/asm/hardirq.h
@@ -0,0 +1,29 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_HARDIRQ_H
10#define _ASM_MICROBLAZE_HARDIRQ_H
11
12#include <linux/cache.h>
13#include <linux/irq.h>
14#include <asm/irq.h>
15#include <asm/current.h>
16#include <linux/ptrace.h>
17
18/* should be defined in each interrupt controller driver */
19extern unsigned int get_irq(struct pt_regs *regs);
20
21typedef struct {
22 unsigned int __softirq_pending;
23} ____cacheline_aligned irq_cpustat_t;
24
25void ack_bad_irq(unsigned int irq);
26
27#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
28
29#endif /* _ASM_MICROBLAZE_HARDIRQ_H */
diff --git a/arch/microblaze/include/asm/hw_irq.h b/arch/microblaze/include/asm/hw_irq.h
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/arch/microblaze/include/asm/hw_irq.h
@@ -0,0 +1 @@
diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
new file mode 100644
index 000000000000..8b5853ee6b5c
--- /dev/null
+++ b/arch/microblaze/include/asm/io.h
@@ -0,0 +1,208 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IO_H
10#define _ASM_MICROBLAZE_IO_H
11
12#include <asm/byteorder.h>
13#include <asm/page.h>
14#include <linux/types.h>
15
16#define IO_SPACE_LIMIT (0xFFFFFFFF)
17
18static inline unsigned char __raw_readb(const volatile void __iomem *addr)
19{
20 return *(volatile unsigned char __force *)addr;
21}
22static inline unsigned short __raw_readw(const volatile void __iomem *addr)
23{
24 return *(volatile unsigned short __force *)addr;
25}
26static inline unsigned int __raw_readl(const volatile void __iomem *addr)
27{
28 return *(volatile unsigned int __force *)addr;
29}
30static inline unsigned long __raw_readq(const volatile void __iomem *addr)
31{
32 return *(volatile unsigned long __force *)addr;
33}
34static inline void __raw_writeb(unsigned char v, volatile void __iomem *addr)
35{
36 *(volatile unsigned char __force *)addr = v;
37}
38static inline void __raw_writew(unsigned short v, volatile void __iomem *addr)
39{
40 *(volatile unsigned short __force *)addr = v;
41}
42static inline void __raw_writel(unsigned int v, volatile void __iomem *addr)
43{
44 *(volatile unsigned int __force *)addr = v;
45}
46static inline void __raw_writeq(unsigned long v, volatile void __iomem *addr)
47{
48 *(volatile unsigned long __force *)addr = v;
49}
50
51/*
52 * read (readb, readw, readl, readq) and write (writeb, writew,
53 * writel, writeq) accessors are for PCI and thus littel endian.
54 * Linux 2.4 for Microblaze had this wrong.
55 */
56static inline unsigned char readb(const volatile void __iomem *addr)
57{
58 return *(volatile unsigned char __force *)addr;
59}
60static inline unsigned short readw(const volatile void __iomem *addr)
61{
62 return le16_to_cpu(*(volatile unsigned short __force *)addr);
63}
64static inline unsigned int readl(const volatile void __iomem *addr)
65{
66 return le32_to_cpu(*(volatile unsigned int __force *)addr);
67}
68static inline void writeb(unsigned char v, volatile void __iomem *addr)
69{
70 *(volatile unsigned char __force *)addr = v;
71}
72static inline void writew(unsigned short v, volatile void __iomem *addr)
73{
74 *(volatile unsigned short __force *)addr = cpu_to_le16(v);
75}
76static inline void writel(unsigned int v, volatile void __iomem *addr)
77{
78 *(volatile unsigned int __force *)addr = cpu_to_le32(v);
79}
80
81/* ioread and iowrite variants. thease are for now same as __raw_
82 * variants of accessors. we might check for endianess in the feature
83 */
84#define ioread8(addr) __raw_readb((u8 *)(addr))
85#define ioread16(addr) __raw_readw((u16 *)(addr))
86#define ioread32(addr) __raw_readl((u32 *)(addr))
87#define iowrite8(v, addr) __raw_writeb((u8)(v), (u8 *)(addr))
88#define iowrite16(v, addr) __raw_writew((u16)(v), (u16 *)(addr))
89#define iowrite32(v, addr) __raw_writel((u32)(v), (u32 *)(addr))
90
91/* These are the definitions for the x86 IO instructions
92 * inb/inw/inl/outb/outw/outl, the "string" versions
93 * insb/insw/insl/outsb/outsw/outsl, and the "pausing" versions
94 * inb_p/inw_p/...
95 * The macros don't do byte-swapping.
96 */
97#define inb(port) readb((u8 *)((port)))
98#define outb(val, port) writeb((val), (u8 *)((unsigned long)(port)))
99#define inw(port) readw((u16 *)((port)))
100#define outw(val, port) writew((val), (u16 *)((unsigned long)(port)))
101#define inl(port) readl((u32 *)((port)))
102#define outl(val, port) writel((val), (u32 *)((unsigned long)(port)))
103
104#define inb_p(port) inb((port))
105#define outb_p(val, port) outb((val), (port))
106#define inw_p(port) inw((port))
107#define outw_p(val, port) outw((val), (port))
108#define inl_p(port) inl((port))
109#define outl_p(val, port) outl((val), (port))
110
111#define memset_io(a, b, c) memset((void *)(a), (b), (c))
112#define memcpy_fromio(a, b, c) memcpy((a), (void *)(b), (c))
113#define memcpy_toio(a, b, c) memcpy((void *)(a), (b), (c))
114
115/**
116 * virt_to_phys - map virtual addresses to physical
117 * @address: address to remap
118 *
119 * The returned physical address is the physical (CPU) mapping for
120 * the memory address given. It is only valid to use this function on
121 * addresses directly mapped or allocated via kmalloc.
122 *
123 * This function does not give bus mappings for DMA transfers. In
124 * almost all conceivable cases a device driver should not be using
125 * this function
126 */
127static inline unsigned long __iomem virt_to_phys(volatile void *address)
128{
129 return __pa((unsigned long)address);
130}
131
132#define virt_to_bus virt_to_phys
133
134/**
135 * phys_to_virt - map physical address to virtual
136 * @address: address to remap
137 *
138 * The returned virtual address is a current CPU mapping for
139 * the memory address given. It is only valid to use this function on
140 * addresses that have a kernel mapping
141 *
142 * This function does not handle bus mappings for DMA transfers. In
143 * almost all conceivable cases a device driver should not be using
144 * this function
145 */
146static inline void *phys_to_virt(unsigned long address)
147{
148 return (void *)__va(address);
149}
150
151#define bus_to_virt(a) phys_to_virt(a)
152
153static inline void __iomem *__ioremap(phys_addr_t address, unsigned long size,
154 unsigned long flags)
155{
156 return (void *)address;
157}
158
159#define ioremap(physaddr, size) ((void __iomem *)(unsigned long)(physaddr))
160#define iounmap(addr) ((void)0)
161#define ioremap_nocache(physaddr, size) ioremap(physaddr, size)
162
163/*
164 * Convert a physical pointer to a virtual kernel pointer for /dev/mem
165 * access
166 */
167#define xlate_dev_mem_ptr(p) __va(p)
168
169/*
170 * Convert a virtual cached pointer to an uncached pointer
171 */
172#define xlate_dev_kmem_ptr(p) p
173
174/*
175 * Big Endian
176 */
177#define out_be32(a, v) __raw_writel((v), (void __iomem __force *)(a))
178#define out_be16(a, v) __raw_writew((v), (a))
179
180#define in_be32(a) __raw_readl((const void __iomem __force *)(a))
181#define in_be16(a) __raw_readw(a)
182
183/*
184 * Little endian
185 */
186
187#define out_le32(a, v) __raw_writel(__cpu_to_le32(v), (a));
188#define out_le16(a, v) __raw_writew(__cpu_to_le16(v), (a))
189
190#define in_le32(a) __le32_to_cpu(__raw_readl(a))
191#define in_le16(a) __le16_to_cpu(__raw_readw(a))
192
193/* Byte ops */
194#define out_8(a, v) __raw_writeb((v), (a))
195#define in_8(a) __raw_readb(a)
196
197/* FIXME */
198static inline void __iomem *ioport_map(unsigned long port, unsigned int len)
199{
200 return (void __iomem *) (port);
201}
202
203static inline void ioport_unmap(void __iomem *addr)
204{
205 /* Nothing to do */
206}
207
208#endif /* _ASM_MICROBLAZE_IO_H */
diff --git a/include/asm-mn10300/ioctl.h b/arch/microblaze/include/asm/ioctl.h
index b279fe06dfe5..b279fe06dfe5 100644
--- a/include/asm-mn10300/ioctl.h
+++ b/arch/microblaze/include/asm/ioctl.h
diff --git a/arch/microblaze/include/asm/ioctls.h b/arch/microblaze/include/asm/ioctls.h
new file mode 100644
index 000000000000..03582b249204
--- /dev/null
+++ b/arch/microblaze/include/asm/ioctls.h
@@ -0,0 +1,91 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IOCTLS_H
10#define _ASM_MICROBLAZE_IOCTLS_H
11
12#include <linux/ioctl.h>
13
14/* 0x54 is just a magic number to make these relatively unique ('T') */
15
16#define TCGETS 0x5401
17#define TCSETS 0x5402
18#define TCSETSW 0x5403
19#define TCSETSF 0x5404
20#define TCGETA 0x5405
21#define TCSETA 0x5406
22#define TCSETAW 0x5407
23#define TCSETAF 0x5408
24#define TCSBRK 0x5409
25#define TCXONC 0x540A
26#define TCFLSH 0x540B
27#define TIOCEXCL 0x540C
28#define TIOCNXCL 0x540D
29#define TIOCSCTTY 0x540E
30#define TIOCGPGRP 0x540F
31#define TIOCSPGRP 0x5410
32#define TIOCOUTQ 0x5411
33#define TIOCSTI 0x5412
34#define TIOCGWINSZ 0x5413
35#define TIOCSWINSZ 0x5414
36#define TIOCMGET 0x5415
37#define TIOCMBIS 0x5416
38#define TIOCMBIC 0x5417
39#define TIOCMSET 0x5418
40#define TIOCGSOFTCAR 0x5419
41#define TIOCSSOFTCAR 0x541A
42#define FIONREAD 0x541B
43#define TIOCINQ FIONREAD
44#define TIOCLINUX 0x541C
45#define TIOCCONS 0x541D
46#define TIOCGSERIAL 0x541E
47#define TIOCSSERIAL 0x541F
48#define TIOCPKT 0x5420
49#define FIONBIO 0x5421
50#define TIOCNOTTY 0x5422
51#define TIOCSETD 0x5423
52#define TIOCGETD 0x5424
53#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
54#define TIOCTTYGSTRUCT 0x5426 /* For debugging only */
55#define TIOCSBRK 0x5427 /* BSD compatibility */
56#define TIOCCBRK 0x5428 /* BSD compatibility */
57#define TIOCGSID 0x5429 /* Return the session ID of FD */
58/* Get Pty Number (of pty-mux device) */
59#define TIOCGPTN _IOR('T', 0x30, unsigned int)
60#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
61
62#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
63#define FIOCLEX 0x5451
64#define FIOASYNC 0x5452
65#define TIOCSERCONFIG 0x5453
66#define TIOCSERGWILD 0x5454
67#define TIOCSERSWILD 0x5455
68#define TIOCGLCKTRMIOS 0x5456
69#define TIOCSLCKTRMIOS 0x5457
70#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
71#define TIOCSERGETLSR 0x5459 /* Get line status register */
72#define TIOCSERGETMULTI 0x545A /* Get multiport config */
73#define TIOCSERSETMULTI 0x545B /* Set multiport config */
74
75#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
76#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
77
78#define FIOQSIZE 0x545E
79
80/* Used for packet mode */
81#define TIOCPKT_DATA 0
82#define TIOCPKT_FLUSHREAD 1
83#define TIOCPKT_FLUSHWRITE 2
84#define TIOCPKT_STOP 4
85#define TIOCPKT_START 8
86#define TIOCPKT_NOSTOP 16
87#define TIOCPKT_DOSTOP 32
88
89#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
90
91#endif /* _ASM_MICROBLAZE_IOCTLS_H */
diff --git a/include/asm-mn10300/ipc.h b/arch/microblaze/include/asm/ipc.h
index a46e3d9c2a3f..a46e3d9c2a3f 100644
--- a/include/asm-mn10300/ipc.h
+++ b/arch/microblaze/include/asm/ipc.h
diff --git a/arch/microblaze/include/asm/ipcbuf.h b/arch/microblaze/include/asm/ipcbuf.h
new file mode 100644
index 000000000000..b056fa420654
--- /dev/null
+++ b/arch/microblaze/include/asm/ipcbuf.h
@@ -0,0 +1,36 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IPCBUF_H
10#define _ASM_MICROBLAZE_IPCBUF_H
11
12/*
13 * The user_ipc_perm structure for microblaze architecture.
14 * Note extra padding because this structure is passed back and forth
15 * between kernel and user space.
16 *
17 * Pad space is left for:
18 * - 32-bit mode_t and seq
19 * - 2 miscellaneous 32-bit values
20 */
21
22struct ipc64_perm {
23 __kernel_key_t key;
24 __kernel_uid32_t uid;
25 __kernel_gid32_t gid;
26 __kernel_uid32_t cuid;
27 __kernel_gid32_t cgid;
28 __kernel_mode_t mode;
29 unsigned short __pad1;
30 unsigned short seq;
31 unsigned short __pad2;
32 unsigned long __unused1;
33 unsigned long __unused2;
34};
35
36#endif /* _ASM_MICROBLAZE_IPCBUF_H */
diff --git a/arch/microblaze/include/asm/irq.h b/arch/microblaze/include/asm/irq.h
new file mode 100644
index 000000000000..db515deaa720
--- /dev/null
+++ b/arch/microblaze/include/asm/irq.h
@@ -0,0 +1,47 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IRQ_H
10#define _ASM_MICROBLAZE_IRQ_H
11
12#define NR_IRQS 32
13
14#include <linux/interrupt.h>
15
16extern unsigned int nr_irq;
17
18#define NO_IRQ (-1)
19
20static inline int irq_canonicalize(int irq)
21{
22 return irq;
23}
24
25struct pt_regs;
26extern void do_IRQ(struct pt_regs *regs);
27
28/* irq_of_parse_and_map - Parse and Map an interrupt into linux virq space
29 * @device: Device node of the device whose interrupt is to be mapped
30 * @index: Index of the interrupt to map
31 *
32 * This function is a wrapper that chains of_irq_map_one() and
33 * irq_create_of_mapping() to make things easier to callers
34 */
35struct device_node;
36extern unsigned int irq_of_parse_and_map(struct device_node *dev, int index);
37
38/** FIXME - not implement
39 * irq_dispose_mapping - Unmap an interrupt
40 * @virq: linux virq number of the interrupt to unmap
41 */
42static inline void irq_dispose_mapping(unsigned int virq)
43{
44 return;
45}
46
47#endif /* _ASM_MICROBLAZE_IRQ_H */
diff --git a/arch/microblaze/include/asm/irq_regs.h b/arch/microblaze/include/asm/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/arch/microblaze/include/asm/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/arch/microblaze/include/asm/irqflags.h b/arch/microblaze/include/asm/irqflags.h
new file mode 100644
index 000000000000..dea65645a4f8
--- /dev/null
+++ b/arch/microblaze/include/asm/irqflags.h
@@ -0,0 +1,123 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IRQFLAGS_H
10#define _ASM_MICROBLAZE_IRQFLAGS_H
11
12#include <linux/irqflags.h>
13
14# if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
15
16# define local_irq_save(flags) \
17 do { \
18 asm volatile ("# local_irq_save \n\t" \
19 "msrclr %0, %1 \n\t" \
20 "nop \n\t" \
21 : "=r"(flags) \
22 : "i"(MSR_IE) \
23 : "memory"); \
24 } while (0)
25
26# define local_irq_disable() \
27 do { \
28 asm volatile ("# local_irq_disable \n\t" \
29 "msrclr r0, %0 \n\t" \
30 "nop \n\t" \
31 : \
32 : "i"(MSR_IE) \
33 : "memory"); \
34 } while (0)
35
36# define local_irq_enable() \
37 do { \
38 asm volatile ("# local_irq_enable \n\t" \
39 "msrset r0, %0 \n\t" \
40 "nop \n\t" \
41 : \
42 : "i"(MSR_IE) \
43 : "memory"); \
44 } while (0)
45
46# else /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR == 0 */
47
48# define local_irq_save(flags) \
49 do { \
50 register unsigned tmp; \
51 asm volatile ("# local_irq_save \n\t" \
52 "mfs %0, rmsr \n\t" \
53 "nop \n\t" \
54 "andi %1, %0, %2 \n\t" \
55 "mts rmsr, %1 \n\t" \
56 "nop \n\t" \
57 : "=r"(flags), "=r" (tmp) \
58 : "i"(~MSR_IE) \
59 : "memory"); \
60 } while (0)
61
62# define local_irq_disable() \
63 do { \
64 register unsigned tmp; \
65 asm volatile ("# local_irq_disable \n\t" \
66 "mfs %0, rmsr \n\t" \
67 "nop \n\t" \
68 "andi %0, %0, %1 \n\t" \
69 "mts rmsr, %0 \n\t" \
70 "nop \n\t" \
71 : "=r"(tmp) \
72 : "i"(~MSR_IE) \
73 : "memory"); \
74 } while (0)
75
76# define local_irq_enable() \
77 do { \
78 register unsigned tmp; \
79 asm volatile ("# local_irq_enable \n\t" \
80 "mfs %0, rmsr \n\t" \
81 "nop \n\t" \
82 "ori %0, %0, %1 \n\t" \
83 "mts rmsr, %0 \n\t" \
84 "nop \n\t" \
85 : "=r"(tmp) \
86 : "i"(MSR_IE) \
87 : "memory"); \
88 } while (0)
89
90# endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
91
92#define local_save_flags(flags) \
93 do { \
94 asm volatile ("# local_save_flags \n\t" \
95 "mfs %0, rmsr \n\t" \
96 "nop \n\t" \
97 : "=r"(flags) \
98 : \
99 : "memory"); \
100 } while (0)
101
102#define local_irq_restore(flags) \
103 do { \
104 asm volatile ("# local_irq_restore \n\t"\
105 "mts rmsr, %0 \n\t" \
106 "nop \n\t" \
107 : \
108 : "r"(flags) \
109 : "memory"); \
110 } while (0)
111
112static inline int irqs_disabled(void)
113{
114 unsigned long flags;
115
116 local_save_flags(flags);
117 return ((flags & MSR_IE) == 0);
118}
119
120#define raw_irqs_disabled irqs_disabled
121#define raw_irqs_disabled_flags(flags) ((flags) == 0)
122
123#endif /* _ASM_MICROBLAZE_IRQFLAGS_H */
diff --git a/arch/microblaze/include/asm/kdebug.h b/arch/microblaze/include/asm/kdebug.h
new file mode 100644
index 000000000000..6ece1b037665
--- /dev/null
+++ b/arch/microblaze/include/asm/kdebug.h
@@ -0,0 +1 @@
#include <asm-generic/kdebug.h>
diff --git a/arch/microblaze/include/asm/kmap_types.h b/arch/microblaze/include/asm/kmap_types.h
new file mode 100644
index 000000000000..4d7e222f5dd7
--- /dev/null
+++ b/arch/microblaze/include/asm/kmap_types.h
@@ -0,0 +1,29 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_KMAP_TYPES_H
10#define _ASM_MICROBLAZE_KMAP_TYPES_H
11
12enum km_type {
13 KM_BOUNCE_READ,
14 KM_SKB_SUNRPC_DATA,
15 KM_SKB_DATA_SOFTIRQ,
16 KM_USER0,
17 KM_USER1,
18 KM_BIO_SRC_IRQ,
19 KM_BIO_DST_IRQ,
20 KM_PTE0,
21 KM_PTE1,
22 KM_IRQ0,
23 KM_IRQ1,
24 KM_SOFTIRQ0,
25 KM_SOFTIRQ1,
26 KM_TYPE_NR,
27};
28
29#endif /* _ASM_MICROBLAZE_KMAP_TYPES_H */
diff --git a/arch/microblaze/include/asm/linkage.h b/arch/microblaze/include/asm/linkage.h
new file mode 100644
index 000000000000..3a8e36d057eb
--- /dev/null
+++ b/arch/microblaze/include/asm/linkage.h
@@ -0,0 +1,15 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_LINKAGE_H
10#define _ASM_MICROBLAZE_LINKAGE_H
11
12#define __ALIGN .align 4
13#define __ALIGN_STR ".align 4"
14
15#endif /* _ASM_MICROBLAZE_LINKAGE_H */
diff --git a/arch/microblaze/include/asm/lmb.h b/arch/microblaze/include/asm/lmb.h
new file mode 100644
index 000000000000..a0a0a929c293
--- /dev/null
+++ b/arch/microblaze/include/asm/lmb.h
@@ -0,0 +1,17 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_LMB_H
10#define _ASM_MICROBLAZE_LMB_H
11
12/* LMB limit is OFF */
13#define LMB_REAL_LIMIT 0xFFFFFFFF
14
15#endif /* _ASM_MICROBLAZE_LMB_H */
16
17
diff --git a/include/asm-mn10300/local.h b/arch/microblaze/include/asm/local.h
index c11c530f74d0..c11c530f74d0 100644
--- a/include/asm-mn10300/local.h
+++ b/arch/microblaze/include/asm/local.h
diff --git a/arch/microblaze/include/asm/mman.h b/arch/microblaze/include/asm/mman.h
new file mode 100644
index 000000000000..4914b1329445
--- /dev/null
+++ b/arch/microblaze/include/asm/mman.h
@@ -0,0 +1,25 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MMAN_H
10#define _ASM_MICROBLAZE_MMAN_H
11
12#include <asm-generic/mman.h>
13
14#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
15#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
16#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
17#define MAP_LOCKED 0x2000 /* pages are locked */
18#define MAP_NORESERVE 0x4000 /* don't check for reservations */
19#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
20#define MAP_NONBLOCK 0x10000 /* do not block on IO */
21
22#define MCL_CURRENT 1 /* lock all current mappings */
23#define MCL_FUTURE 2 /* lock all future mappings */
24
25#endif /* _ASM_MICROBLAZE_MMAN_H */
diff --git a/arch/microblaze/include/asm/mmu.h b/arch/microblaze/include/asm/mmu.h
new file mode 100644
index 000000000000..0e0431d61635
--- /dev/null
+++ b/arch/microblaze/include/asm/mmu.h
@@ -0,0 +1,19 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MMU_H
10#define _ASM_MICROBLAZE_MMU_H
11
12#ifndef __ASSEMBLY__
13typedef struct {
14 struct vm_list_struct *vmlist;
15 unsigned long end_brk;
16} mm_context_t;
17#endif /* __ASSEMBLY__ */
18
19#endif /* _ASM_MICROBLAZE_MMU_H */
diff --git a/arch/microblaze/include/asm/mmu_context.h b/arch/microblaze/include/asm/mmu_context.h
new file mode 100644
index 000000000000..150ca01b74ba
--- /dev/null
+++ b/arch/microblaze/include/asm/mmu_context.h
@@ -0,0 +1,21 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MMU_CONTEXT_H
10#define _ASM_MICROBLAZE_MMU_CONTEXT_H
11
12# define init_new_context(tsk, mm) ({ 0; })
13
14# define enter_lazy_tlb(mm, tsk) do {} while (0)
15# define change_mm_context(old, ctx, _pml4) do {} while (0)
16# define destroy_context(mm) do {} while (0)
17# define deactivate_mm(tsk, mm) do {} while (0)
18# define switch_mm(prev, next, tsk) do {} while (0)
19# define activate_mm(prev, next) do {} while (0)
20
21#endif /* _ASM_MICROBLAZE_MMU_CONTEXT_H */
diff --git a/arch/microblaze/include/asm/module.h b/arch/microblaze/include/asm/module.h
new file mode 100644
index 000000000000..914565a90315
--- /dev/null
+++ b/arch/microblaze/include/asm/module.h
@@ -0,0 +1,37 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MODULE_H
10#define _ASM_MICROBLAZE_MODULE_H
11
12/* Microblaze Relocations */
13#define R_MICROBLAZE_NONE 0
14#define R_MICROBLAZE_32 1
15#define R_MICROBLAZE_32_PCREL 2
16#define R_MICROBLAZE_64_PCREL 3
17#define R_MICROBLAZE_32_PCREL_LO 4
18#define R_MICROBLAZE_64 5
19#define R_MICROBLAZE_32_LO 6
20#define R_MICROBLAZE_SRO32 7
21#define R_MICROBLAZE_SRW32 8
22#define R_MICROBLAZE_64_NONE 9
23#define R_MICROBLAZE_32_SYM_OP_SYM 10
24/* Keep this the last entry. */
25#define R_MICROBLAZE_NUM 11
26
27struct mod_arch_specific {
28 int foo;
29};
30
31#define Elf_Shdr Elf32_Shdr
32#define Elf_Sym Elf32_Sym
33#define Elf_Ehdr Elf32_Ehdr
34
35typedef struct { volatile int counter; } module_t;
36
37#endif /* _ASM_MICROBLAZE_MODULE_H */
diff --git a/arch/microblaze/include/asm/msgbuf.h b/arch/microblaze/include/asm/msgbuf.h
new file mode 100644
index 000000000000..09dd97097211
--- /dev/null
+++ b/arch/microblaze/include/asm/msgbuf.h
@@ -0,0 +1,31 @@
1#ifndef _ASM_MICROBLAZE_MSGBUF_H
2#define _ASM_MICROBLAZE_MSGBUF_H
3
4/*
5 * The msqid64_ds structure for microblaze architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct msqid64_ds {
15 struct ipc64_perm msg_perm;
16 __kernel_time_t msg_stime; /* last msgsnd time */
17 unsigned long __unused1;
18 __kernel_time_t msg_rtime; /* last msgrcv time */
19 unsigned long __unused2;
20 __kernel_time_t msg_ctime; /* last change time */
21 unsigned long __unused3;
22 unsigned long msg_cbytes; /* current number of bytes on queue */
23 unsigned long msg_qnum; /* number of messages in queue */
24 unsigned long msg_qbytes; /* max number of bytes on queue */
25 __kernel_pid_t msg_lspid; /* pid of last msgsnd */
26 __kernel_pid_t msg_lrpid; /* last receive pid */
27 unsigned long __unused4;
28 unsigned long __unused5;
29};
30
31#endif /* _ASM_MICROBLAZE_MSGBUF_H */
diff --git a/arch/microblaze/include/asm/mutex.h b/arch/microblaze/include/asm/mutex.h
new file mode 100644
index 000000000000..ff6101aa2c71
--- /dev/null
+++ b/arch/microblaze/include/asm/mutex.h
@@ -0,0 +1 @@
#include <asm-generic/mutex-dec.h>
diff --git a/arch/microblaze/include/asm/namei.h b/arch/microblaze/include/asm/namei.h
new file mode 100644
index 000000000000..61d60b8a07d5
--- /dev/null
+++ b/arch/microblaze/include/asm/namei.h
@@ -0,0 +1,22 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_NAMEI_H
10#define _ASM_MICROBLAZE_NAMEI_H
11
12#ifdef __KERNEL__
13
14/* This dummy routine maybe changed to something useful
15 * for /usr/gnemul/ emulation stuff.
16 * Look at asm-sparc/namei.h for details.
17 */
18#define __emul_prefix() NULL
19
20#endif /* __KERNEL__ */
21
22#endif /* _ASM_MICROBLAZE_NAMEI_H */
diff --git a/arch/microblaze/include/asm/of_device.h b/arch/microblaze/include/asm/of_device.h
new file mode 100644
index 000000000000..ba917cfaefe6
--- /dev/null
+++ b/arch/microblaze/include/asm/of_device.h
@@ -0,0 +1,45 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 *
4 * based on PowerPC of_device.h
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_OF_DEVICE_H
12#define _ASM_MICROBLAZE_OF_DEVICE_H
13#ifdef __KERNEL__
14
15#include <linux/device.h>
16#include <linux/of.h>
17
18/*
19 * The of_device is a kind of "base class" that is a superset of
20 * struct device for use by devices attached to an OF node and
21 * probed using OF properties.
22 */
23struct of_device {
24 struct device_node *node; /* to be obsoleted */
25 u64 dma_mask; /* DMA mask */
26 struct device dev; /* Generic device interface */
27};
28
29extern ssize_t of_device_get_modalias(struct of_device *ofdev,
30 char *str, ssize_t len);
31
32extern struct of_device *of_device_alloc(struct device_node *np,
33 const char *bus_id,
34 struct device *parent);
35
36extern int of_device_uevent(struct device *dev,
37 struct kobj_uevent_env *env);
38
39extern void of_device_make_bus_id(struct of_device *dev);
40
41/* This is just here during the transition */
42#include <linux/of_device.h>
43
44#endif /* __KERNEL__ */
45#endif /* _ASM_MICROBLAZE_OF_DEVICE_H */
diff --git a/arch/microblaze/include/asm/of_platform.h b/arch/microblaze/include/asm/of_platform.h
new file mode 100644
index 000000000000..187c0eedaece
--- /dev/null
+++ b/arch/microblaze/include/asm/of_platform.h
@@ -0,0 +1,64 @@
1/*
2 * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
3 * <benh@kernel.crashing.org>
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version
8 * 2 of the License, or (at your option) any later version.
9 */
10
11#ifndef _ASM_MICROBLAZE_OF_PLATFORM_H
12#define _ASM_MICROBLAZE_OF_PLATFORM_H
13
14/* This is just here during the transition */
15#include <linux/of_platform.h>
16
17/*
18 * The list of OF IDs below is used for matching bus types in the
19 * system whose devices are to be exposed as of_platform_devices.
20 *
21 * This is the default list valid for most platforms. This file provides
22 * functions who can take an explicit list if necessary though
23 *
24 * The search is always performed recursively looking for children of
25 * the provided device_node and recursively if such a children matches
26 * a bus type in the list
27 */
28
29static const struct of_device_id of_default_bus_ids[] = {
30 { .type = "soc", },
31 { .compatible = "soc", },
32 { .type = "plb5", },
33 { .type = "plb4", },
34 { .type = "opb", },
35 { .type = "simple", },
36 {},
37};
38
39/* Platform drivers register/unregister */
40static inline int of_register_platform_driver(struct of_platform_driver *drv)
41{
42 return of_register_driver(drv, &of_platform_bus_type);
43}
44static inline void of_unregister_platform_driver(struct of_platform_driver *drv)
45{
46 of_unregister_driver(drv);
47}
48
49/* Platform devices and busses creation */
50extern struct of_device *of_platform_device_create(struct device_node *np,
51 const char *bus_id,
52 struct device *parent);
53/* pseudo "matches" value to not do deep probe */
54#define OF_NO_DEEP_PROBE ((struct of_device_id *)-1)
55
56extern int of_platform_bus_probe(struct device_node *root,
57 const struct of_device_id *matches,
58 struct device *parent);
59
60extern struct of_device *of_find_device_by_phandle(phandle ph);
61
62extern void of_instantiate_rtc(void);
63
64#endif /* _ASM_MICROBLAZE_OF_PLATFORM_H */
diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h
new file mode 100644
index 000000000000..7238dcfcc517
--- /dev/null
+++ b/arch/microblaze/include/asm/page.h
@@ -0,0 +1,140 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 * Changes for MMU support:
6 * Copyright (C) 2007 Xilinx, Inc. All rights reserved.
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_PAGE_H
14#define _ASM_MICROBLAZE_PAGE_H
15
16#include <linux/pfn.h>
17#include <asm/setup.h>
18
19/* PAGE_SHIFT determines the page size */
20#define PAGE_SHIFT (12)
21#define PAGE_SIZE (1UL << PAGE_SHIFT)
22#define PAGE_MASK (~(PAGE_SIZE-1))
23
24#ifdef __KERNEL__
25
26#ifndef __ASSEMBLY__
27
28#define PAGE_UP(addr) (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
29#define PAGE_DOWN(addr) ((addr)&(~((PAGE_SIZE)-1)))
30
31/* align addr on a size boundary - adjust address up/down if needed */
32#define _ALIGN_UP(addr, size) (((addr)+((size)-1))&(~((size)-1)))
33#define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1)))
34
35/* align addr on a size boundary - adjust address up if needed */
36#define _ALIGN(addr, size) _ALIGN_UP(addr, size)
37
38/*
39 * PAGE_OFFSET -- the first address of the first page of memory. When not
40 * using MMU this corresponds to the first free page in physical memory (aligned
41 * on a page boundary).
42 */
43extern unsigned int __page_offset;
44#define PAGE_OFFSET __page_offset
45
46#define copy_page(to, from) memcpy((to), (from), PAGE_SIZE)
47#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
48#define free_user_page(page, addr) free_page(addr)
49
50#define clear_page(pgaddr) memset((pgaddr), 0, PAGE_SIZE)
51
52
53#define clear_user_page(pgaddr, vaddr, page) memset((pgaddr), 0, PAGE_SIZE)
54#define copy_user_page(vto, vfrom, vaddr, topg) \
55 memcpy((vto), (vfrom), PAGE_SIZE)
56
57/*
58 * These are used to make use of C type-checking..
59 */
60typedef struct page *pgtable_t;
61typedef struct { unsigned long pte; } pte_t;
62typedef struct { unsigned long pgprot; } pgprot_t;
63typedef struct { unsigned long ste[64]; } pmd_t;
64typedef struct { pmd_t pue[1]; } pud_t;
65typedef struct { pud_t pge[1]; } pgd_t;
66
67
68#define pte_val(x) ((x).pte)
69#define pgprot_val(x) ((x).pgprot)
70#define pmd_val(x) ((x).ste[0])
71#define pud_val(x) ((x).pue[0])
72#define pgd_val(x) ((x).pge[0])
73
74#define __pte(x) ((pte_t) { (x) })
75#define __pmd(x) ((pmd_t) { (x) })
76#define __pgd(x) ((pgd_t) { (x) })
77#define __pgprot(x) ((pgprot_t) { (x) })
78
79/**
80 * Conversions for virtual address, physical address, pfn, and struct
81 * page are defined in the following files.
82 *
83 * virt -+
84 * | asm-microblaze/page.h
85 * phys -+
86 * | linux/pfn.h
87 * pfn -+
88 * | asm-generic/memory_model.h
89 * page -+
90 *
91 */
92
93extern unsigned long max_low_pfn;
94extern unsigned long min_low_pfn;
95extern unsigned long max_pfn;
96
97#define __pa(vaddr) ((unsigned long) (vaddr))
98#define __va(paddr) ((void *) (paddr))
99
100#define phys_to_pfn(phys) (PFN_DOWN(phys))
101#define pfn_to_phys(pfn) (PFN_PHYS(pfn))
102
103#define virt_to_pfn(vaddr) (phys_to_pfn((__pa(vaddr))))
104#define pfn_to_virt(pfn) __va(pfn_to_phys((pfn)))
105
106#define virt_to_page(vaddr) (pfn_to_page(virt_to_pfn(vaddr)))
107#define page_to_virt(page) (pfn_to_virt(page_to_pfn(page)))
108
109#define page_to_phys(page) (pfn_to_phys(page_to_pfn(page)))
110#define page_to_bus(page) (page_to_phys(page))
111#define phys_to_page(paddr) (pfn_to_page(phys_to_pfn(paddr)))
112
113extern unsigned int memory_start;
114extern unsigned int memory_end;
115extern unsigned int memory_size;
116
117#define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_mapnr)
118
119#define ARCH_PFN_OFFSET (PAGE_OFFSET >> PAGE_SHIFT)
120
121#else
122#define tophys(rd, rs) (addik rd, rs, 0)
123#define tovirt(rd, rs) (addik rd, rs, 0)
124#endif /* __ASSEMBLY__ */
125
126#define virt_addr_valid(vaddr) (pfn_valid(virt_to_pfn(vaddr)))
127
128/* Convert between virtual and physical address for MMU. */
129/* Handle MicroBlaze processor with virtual memory. */
130#define __virt_to_phys(addr) addr
131#define __phys_to_virt(addr) addr
132
133#define TOPHYS(addr) __virt_to_phys(addr)
134
135#endif /* __KERNEL__ */
136
137#include <asm-generic/memory_model.h>
138#include <asm-generic/page.h>
139
140#endif /* _ASM_MICROBLAZE_PAGE_H */
diff --git a/arch/microblaze/include/asm/param.h b/arch/microblaze/include/asm/param.h
new file mode 100644
index 000000000000..8c538a49616d
--- /dev/null
+++ b/arch/microblaze/include/asm/param.h
@@ -0,0 +1,30 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PARAM_H
10#define _ASM_MICROBLAZE_PARAM_H
11
12#ifdef __KERNEL__
13#define HZ CONFIG_HZ /* internal kernel timer frequency */
14#define USER_HZ 100 /* for user interfaces in "ticks" */
15#define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
16#endif /* __KERNEL__ */
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
30#endif /* _ASM_MICROBLAZE_PARAM_H */
diff --git a/arch/microblaze/include/asm/pci-bridge.h b/arch/microblaze/include/asm/pci-bridge.h
new file mode 100644
index 000000000000..7ad28f6f5f1a
--- /dev/null
+++ b/arch/microblaze/include/asm/pci-bridge.h
@@ -0,0 +1 @@
#include <linux/pci.h>
diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
new file mode 100644
index 000000000000..ca03794cf3f0
--- /dev/null
+++ b/arch/microblaze/include/asm/pci.h
@@ -0,0 +1 @@
#include <linux/io.h>
diff --git a/include/asm-mn10300/percpu.h b/arch/microblaze/include/asm/percpu.h
index 06a959d67234..06a959d67234 100644
--- a/include/asm-mn10300/percpu.h
+++ b/arch/microblaze/include/asm/percpu.h
diff --git a/arch/microblaze/include/asm/pgalloc.h b/arch/microblaze/include/asm/pgalloc.h
new file mode 100644
index 000000000000..2a4b35484010
--- /dev/null
+++ b/arch/microblaze/include/asm/pgalloc.h
@@ -0,0 +1,14 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PGALLOC_H
10#define _ASM_MICROBLAZE_PGALLOC_H
11
12#define check_pgt_cache() do {} while (0)
13
14#endif /* _ASM_MICROBLAZE_PGALLOC_H */
diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h
new file mode 100644
index 000000000000..4df31e46568e
--- /dev/null
+++ b/arch/microblaze/include/asm/pgtable.h
@@ -0,0 +1,54 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PGTABLE_H
10#define _ASM_MICROBLAZE_PGTABLE_H
11
12#include <asm/setup.h>
13
14#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
15 remap_pfn_range(vma, vaddr, pfn, size, prot)
16
17#define pgd_present(pgd) (1) /* pages are always present on non MMU */
18#define pgd_none(pgd) (0)
19#define pgd_bad(pgd) (0)
20#define pgd_clear(pgdp)
21#define kern_addr_valid(addr) (1)
22#define pmd_offset(a, b) ((void *) 0)
23
24#define PAGE_NONE __pgprot(0) /* these mean nothing to non MMU */
25#define PAGE_SHARED __pgprot(0) /* these mean nothing to non MMU */
26#define PAGE_COPY __pgprot(0) /* these mean nothing to non MMU */
27#define PAGE_READONLY __pgprot(0) /* these mean nothing to non MMU */
28#define PAGE_KERNEL __pgprot(0) /* these mean nothing to non MMU */
29
30#define __swp_type(x) (0)
31#define __swp_offset(x) (0)
32#define __swp_entry(typ, off) ((swp_entry_t) { ((typ) | ((off) << 7)) })
33#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
34#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
35
36#ifndef __ASSEMBLY__
37static inline int pte_file(pte_t pte) { return 0; }
38#endif /* __ASSEMBLY__ */
39
40#define ZERO_PAGE(vaddr) ({ BUG(); NULL; })
41
42#define swapper_pg_dir ((pgd_t *) NULL)
43
44#define pgtable_cache_init() do {} while (0)
45
46#define arch_enter_lazy_cpu_mode() do {} while (0)
47
48#ifndef __ASSEMBLY__
49#include <asm-generic/pgtable.h>
50
51void setup_memory(void);
52#endif /* __ASSEMBLY__ */
53
54#endif /* _ASM_MICROBLAZE_PGTABLE_H */
diff --git a/include/asm-mn10300/poll.h b/arch/microblaze/include/asm/poll.h
index c98509d3149e..c98509d3149e 100644
--- a/include/asm-mn10300/poll.h
+++ b/arch/microblaze/include/asm/poll.h
diff --git a/arch/microblaze/include/asm/posix_types.h b/arch/microblaze/include/asm/posix_types.h
new file mode 100644
index 000000000000..b4df41c5dde2
--- /dev/null
+++ b/arch/microblaze/include/asm/posix_types.h
@@ -0,0 +1,73 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_POSIX_TYPES_H
10#define _ASM_MICROBLAZE_POSIX_TYPES_H
11
12/*
13 * This file is generally used by user-level software, so you need to
14 * be a little careful about namespace pollution etc. Also, we cannot
15 * assume GCC is being used.
16 */
17
18typedef unsigned long __kernel_ino_t;
19typedef unsigned int __kernel_mode_t;
20typedef unsigned int __kernel_nlink_t;
21typedef long __kernel_off_t;
22typedef int __kernel_pid_t;
23typedef unsigned int __kernel_ipc_pid_t;
24typedef unsigned int __kernel_uid_t;
25typedef unsigned int __kernel_gid_t;
26typedef unsigned long __kernel_size_t;
27typedef long __kernel_ssize_t;
28typedef int __kernel_ptrdiff_t;
29typedef long __kernel_time_t;
30typedef long __kernel_suseconds_t;
31typedef long __kernel_clock_t;
32typedef int __kernel_timer_t;
33typedef int __kernel_clockid_t;
34typedef int __kernel_daddr_t;
35typedef char *__kernel_caddr_t;
36typedef unsigned short __kernel_uid16_t;
37typedef unsigned short __kernel_gid16_t;
38typedef unsigned int __kernel_uid32_t;
39typedef unsigned int __kernel_gid32_t;
40
41typedef unsigned int __kernel_old_uid_t;
42typedef unsigned int __kernel_old_gid_t;
43typedef unsigned int __kernel_old_dev_t;
44
45#ifdef __GNUC__
46typedef long long __kernel_loff_t;
47#endif
48
49typedef struct {
50#if defined(__KERNEL__) || defined(__USE_ALL)
51 int val[2];
52#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
53 int __val[2];
54#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
55} __kernel_fsid_t;
56
57#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
58
59#undef __FD_SET
60#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
61
62#undef __FD_CLR
63#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
64
65#undef __FD_ISSET
66#define __FD_ISSET(d, set) (!!((set)->fds_bits[__FDELT(d)] & __FDMASK(d)))
67
68#undef __FD_ZERO
69#define __FD_ZERO(fdsetp) (memset(fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
70
71#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
72
73#endif /* _ASM_MICROBLAZE_POSIX_TYPES_H */
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
new file mode 100644
index 000000000000..9329029d2614
--- /dev/null
+++ b/arch/microblaze/include/asm/processor.h
@@ -0,0 +1,88 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_PROCESSOR_H
12#define _ASM_MICROBLAZE_PROCESSOR_H
13
14#include <asm/ptrace.h>
15#include <asm/setup.h>
16#include <asm/registers.h>
17#include <asm/segment.h>
18#include <asm/entry.h>
19#include <asm/current.h>
20
21# ifndef __ASSEMBLY__
22/* from kernel/cpu/mb.c */
23extern const struct seq_operations cpuinfo_op;
24
25# define cpu_relax() barrier()
26# define cpu_sleep() do {} while (0)
27# define prepare_to_copy(tsk) do {} while (0)
28
29# endif /* __ASSEMBLY__ */
30
31#define task_pt_regs(tsk) \
32 (((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
33
34/* Do necessary setup to start up a newly executed thread. */
35void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long usp);
36
37/*
38 * User space process size: memory size
39 *
40 * TASK_SIZE on MMU cpu is usually 1GB. However, on no-MMU arch, both
41 * user processes and the kernel is on the same memory region. They
42 * both share the memory space and that is limited by the amount of
43 * physical memory. thus, we set TASK_SIZE == amount of total memory.
44 */
45# define TASK_SIZE (0x81000000 - 0x80000000)
46
47/*
48 * Default implementation of macro that returns current
49 * instruction pointer ("program counter").
50 */
51# define current_text_addr() ({ __label__ _l; _l: &&_l; })
52
53/*
54 * This decides where the kernel will search for a free chunk of vm
55 * space during mmap's. We won't be using it
56 */
57# define TASK_UNMAPPED_BASE 0
58
59/* definition in include/linux/sched.h */
60struct task_struct;
61
62/* thread_struct is gone. use thread_info instead. */
63struct thread_struct { };
64# define INIT_THREAD { }
65
66/* Free all resources held by a thread. */
67static inline void release_thread(struct task_struct *dead_task)
68{
69}
70
71/* Free all resources held by a thread. */
72static inline void exit_thread(void)
73{
74}
75
76extern unsigned long thread_saved_pc(struct task_struct *t);
77
78extern unsigned long get_wchan(struct task_struct *p);
79
80/*
81 * create a kernel thread without removing it from tasklists
82 */
83extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
84
85# define KSTK_EIP(tsk) (0)
86# define KSTK_ESP(tsk) (0)
87
88#endif /* _ASM_MICROBLAZE_PROCESSOR_H */
diff --git a/arch/microblaze/include/asm/prom.h b/arch/microblaze/include/asm/prom.h
new file mode 100644
index 000000000000..20f7b3a926e8
--- /dev/null
+++ b/arch/microblaze/include/asm/prom.h
@@ -0,0 +1,313 @@
1/*
2 * Definitions for talking to the Open Firmware PROM on
3 * Power Macintosh computers.
4 *
5 * Copyright (C) 1996-2005 Paul Mackerras.
6 *
7 * Updates for PPC64 by Peter Bergner & David Engebretsen, IBM Corp.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version
12 * 2 of the License, or (at your option) any later version.
13 */
14
15#ifndef _ASM_MICROBLAZE_PROM_H
16#define _ASM_MICROBLAZE_PROM_H
17#ifdef __KERNEL__
18
19#include <linux/types.h>
20#include <linux/proc_fs.h>
21#include <linux/platform_device.h>
22#include <asm/irq.h>
23#include <asm/atomic.h>
24
25#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1
26#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
27
28#define of_compat_cmp(s1, s2, l) strncasecmp((s1), (s2), (l))
29#define of_prop_cmp(s1, s2) strcmp((s1), (s2))
30#define of_node_cmp(s1, s2) strcasecmp((s1), (s2))
31
32/* Definitions used by the flattened device tree */
33#define OF_DT_HEADER 0xd00dfeed /* marker */
34#define OF_DT_BEGIN_NODE 0x1 /* Start of node, full name */
35#define OF_DT_END_NODE 0x2 /* End node */
36#define OF_DT_PROP 0x3 /* Property: name off, size, content */
37#define OF_DT_NOP 0x4 /* nop */
38#define OF_DT_END 0x9
39
40#define OF_DT_VERSION 0x10
41
42/*
43 * This is what gets passed to the kernel by prom_init or kexec
44 *
45 * The dt struct contains the device tree structure, full pathes and
46 * property contents. The dt strings contain a separate block with just
47 * the strings for the property names, and is fully page aligned and
48 * self contained in a page, so that it can be kept around by the kernel,
49 * each property name appears only once in this page (cheap compression)
50 *
51 * the mem_rsvmap contains a map of reserved ranges of physical memory,
52 * passing it here instead of in the device-tree itself greatly simplifies
53 * the job of everybody. It's just a list of u64 pairs (base/size) that
54 * ends when size is 0
55 */
56struct boot_param_header {
57 u32 magic; /* magic word OF_DT_HEADER */
58 u32 totalsize; /* total size of DT block */
59 u32 off_dt_struct; /* offset to structure */
60 u32 off_dt_strings; /* offset to strings */
61 u32 off_mem_rsvmap; /* offset to memory reserve map */
62 u32 version; /* format version */
63 u32 last_comp_version; /* last compatible version */
64 /* version 2 fields below */
65 u32 boot_cpuid_phys; /* Physical CPU id we're booting on */
66 /* version 3 fields below */
67 u32 dt_strings_size; /* size of the DT strings block */
68 /* version 17 fields below */
69 u32 dt_struct_size; /* size of the DT structure block */
70};
71
72typedef u32 phandle;
73typedef u32 ihandle;
74
75struct property {
76 char *name;
77 int length;
78 void *value;
79 struct property *next;
80};
81
82struct device_node {
83 const char *name;
84 const char *type;
85 phandle node;
86 phandle linux_phandle;
87 char *full_name;
88
89 struct property *properties;
90 struct property *deadprops; /* removed properties */
91 struct device_node *parent;
92 struct device_node *child;
93 struct device_node *sibling;
94 struct device_node *next; /* next device of same type */
95 struct device_node *allnext; /* next in list of all nodes */
96 struct proc_dir_entry *pde; /* this node's proc directory */
97 struct kref kref;
98 unsigned long _flags;
99 void *data;
100};
101
102extern struct device_node *of_chosen;
103
104static inline int of_node_check_flag(struct device_node *n, unsigned long flag)
105{
106 return test_bit(flag, &n->_flags);
107}
108
109static inline void of_node_set_flag(struct device_node *n, unsigned long flag)
110{
111 set_bit(flag, &n->_flags);
112}
113
114#define HAVE_ARCH_DEVTREE_FIXUPS
115
116static inline void set_node_proc_entry(struct device_node *dn,
117 struct proc_dir_entry *de)
118{
119 dn->pde = de;
120}
121
122extern struct device_node *allnodes; /* temporary while merging */
123extern rwlock_t devtree_lock; /* temporary while merging */
124
125extern struct device_node *of_find_all_nodes(struct device_node *prev);
126extern struct device_node *of_node_get(struct device_node *node);
127extern void of_node_put(struct device_node *node);
128
129/* For scanning the flat device-tree at boot time */
130extern int __init of_scan_flat_dt(int (*it)(unsigned long node,
131 const char *uname, int depth,
132 void *data),
133 void *data);
134extern void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
135 unsigned long *size);
136extern int __init
137 of_flat_dt_is_compatible(unsigned long node, const char *name);
138extern unsigned long __init of_get_flat_dt_root(void);
139
140/* For updating the device tree at runtime */
141extern void of_attach_node(struct device_node *);
142extern void of_detach_node(struct device_node *);
143
144/* Other Prototypes */
145extern void finish_device_tree(void);
146extern void unflatten_device_tree(void);
147extern int early_uartlite_console(void);
148extern void early_init_devtree(void *);
149extern int machine_is_compatible(const char *compat);
150extern void print_properties(struct device_node *node);
151extern int prom_n_intr_cells(struct device_node *np);
152extern void prom_get_irq_senses(unsigned char *senses, int off, int max);
153extern int prom_add_property(struct device_node *np, struct property *prop);
154extern int prom_remove_property(struct device_node *np, struct property *prop);
155extern int prom_update_property(struct device_node *np,
156 struct property *newprop,
157 struct property *oldprop);
158
159extern struct resource *request_OF_resource(struct device_node *node,
160 int index, const char *name_postfix);
161extern int release_OF_resource(struct device_node *node, int index);
162
163/*
164 * OF address retreival & translation
165 */
166
167/* Helper to read a big number; size is in cells (not bytes) */
168static inline u64 of_read_number(const u32 *cell, int size)
169{
170 u64 r = 0;
171 while (size--)
172 r = (r << 32) | *(cell++);
173 return r;
174}
175
176/* Like of_read_number, but we want an unsigned long result */
177#define of_read_ulong(cell, size) of_read_number(cell, size)
178
179/* Translate an OF address block into a CPU physical address
180 */
181extern u64 of_translate_address(struct device_node *np, const u32 *addr);
182
183/* Extract an address from a device, returns the region size and
184 * the address space flags too. The PCI version uses a BAR number
185 * instead of an absolute index
186 */
187extern const u32 *of_get_address(struct device_node *dev, int index,
188 u64 *size, unsigned int *flags);
189extern const u32 *of_get_pci_address(struct device_node *dev, int bar_no,
190 u64 *size, unsigned int *flags);
191
192/* Get an address as a resource. Note that if your address is
193 * a PIO address, the conversion will fail if the physical address
194 * can't be internally converted to an IO token with
195 * pci_address_to_pio(), that is because it's either called to early
196 * or it can't be matched to any host bridge IO space
197 */
198extern int of_address_to_resource(struct device_node *dev, int index,
199 struct resource *r);
200extern int of_pci_address_to_resource(struct device_node *dev, int bar,
201 struct resource *r);
202
203/* Parse the ibm,dma-window property of an OF node into the busno, phys and
204 * size parameters.
205 */
206void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
207 unsigned long *busno, unsigned long *phys, unsigned long *size);
208
209extern void kdump_move_device_tree(void);
210
211/* CPU OF node matching */
212struct device_node *of_get_cpu_node(int cpu, unsigned int *thread);
213
214/* Get the MAC address */
215extern const void *of_get_mac_address(struct device_node *np);
216
217/*
218 * OF interrupt mapping
219 */
220
221/* This structure is returned when an interrupt is mapped. The controller
222 * field needs to be put() after use
223 */
224
225#define OF_MAX_IRQ_SPEC 4 /* We handle specifiers of at most 4 cells */
226
227struct of_irq {
228 struct device_node *controller; /* Interrupt controller node */
229 u32 size; /* Specifier size */
230 u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */
231};
232
233/**
234 * of_irq_map_init - Initialize the irq remapper
235 * @flags: flags defining workarounds to enable
236 *
237 * Some machines have bugs in the device-tree which require certain workarounds
238 * to be applied. Call this before any interrupt mapping attempts to enable
239 * those workarounds.
240 */
241#define OF_IMAP_OLDWORLD_MAC 0x00000001
242#define OF_IMAP_NO_PHANDLE 0x00000002
243
244extern void of_irq_map_init(unsigned int flags);
245
246/**
247 * of_irq_map_raw - Low level interrupt tree parsing
248 * @parent: the device interrupt parent
249 * @intspec: interrupt specifier ("interrupts" property of the device)
250 * @ointsize: size of the passed in interrupt specifier
251 * @addr: address specifier (start of "reg" property of the device)
252 * @out_irq: structure of_irq filled by this function
253 *
254 * Returns 0 on success and a negative number on error
255 *
256 * This function is a low-level interrupt tree walking function. It
257 * can be used to do a partial walk with synthetized reg and interrupts
258 * properties, for example when resolving PCI interrupts when no device
259 * node exist for the parent.
260 *
261 */
262
263extern int of_irq_map_raw(struct device_node *parent, const u32 *intspec,
264 u32 ointsize, const u32 *addr,
265 struct of_irq *out_irq);
266
267/**
268 * of_irq_map_one - Resolve an interrupt for a device
269 * @device: the device whose interrupt is to be resolved
270 * @index: index of the interrupt to resolve
271 * @out_irq: structure of_irq filled by this function
272 *
273 * This function resolves an interrupt, walking the tree, for a given
274 * device-tree node. It's the high level pendant to of_irq_map_raw().
275 * It also implements the workarounds for OldWolrd Macs.
276 */
277extern int of_irq_map_one(struct device_node *device, int index,
278 struct of_irq *out_irq);
279
280/**
281 * of_irq_map_pci - Resolve the interrupt for a PCI device
282 * @pdev: the device whose interrupt is to be resolved
283 * @out_irq: structure of_irq filled by this function
284 *
285 * This function resolves the PCI interrupt for a given PCI device. If a
286 * device-node exists for a given pci_dev, it will use normal OF tree
287 * walking. If not, it will implement standard swizzling and walk up the
288 * PCI tree until an device-node is found, at which point it will finish
289 * resolving using the OF tree walking.
290 */
291struct pci_dev;
292extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
293
294extern int of_irq_to_resource(struct device_node *dev, int index,
295 struct resource *r);
296
297/**
298 * of_iomap - Maps the memory mapped IO for a given device_node
299 * @device: the device whose io range will be mapped
300 * @index: index of the io range
301 *
302 * Returns a pointer to the mapped memory
303 */
304extern void __iomem *of_iomap(struct device_node *device, int index);
305
306/*
307 * NB: This is here while we transition from using asm/prom.h
308 * to linux/of.h
309 */
310#include <linux/of.h>
311
312#endif /* __KERNEL__ */
313#endif /* _ASM_MICROBLAZE_PROM_H */
diff --git a/arch/microblaze/include/asm/ptrace.h b/arch/microblaze/include/asm/ptrace.h
new file mode 100644
index 000000000000..55015bce5e47
--- /dev/null
+++ b/arch/microblaze/include/asm/ptrace.h
@@ -0,0 +1,68 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PTRACE_H
10#define _ASM_MICROBLAZE_PTRACE_H
11
12#ifndef __ASSEMBLY__
13#include <linux/types.h>
14
15typedef unsigned long microblaze_reg_t;
16
17struct pt_regs {
18 microblaze_reg_t r0;
19 microblaze_reg_t r1;
20 microblaze_reg_t r2;
21 microblaze_reg_t r3;
22 microblaze_reg_t r4;
23 microblaze_reg_t r5;
24 microblaze_reg_t r6;
25 microblaze_reg_t r7;
26 microblaze_reg_t r8;
27 microblaze_reg_t r9;
28 microblaze_reg_t r10;
29 microblaze_reg_t r11;
30 microblaze_reg_t r12;
31 microblaze_reg_t r13;
32 microblaze_reg_t r14;
33 microblaze_reg_t r15;
34 microblaze_reg_t r16;
35 microblaze_reg_t r17;
36 microblaze_reg_t r18;
37 microblaze_reg_t r19;
38 microblaze_reg_t r20;
39 microblaze_reg_t r21;
40 microblaze_reg_t r22;
41 microblaze_reg_t r23;
42 microblaze_reg_t r24;
43 microblaze_reg_t r25;
44 microblaze_reg_t r26;
45 microblaze_reg_t r27;
46 microblaze_reg_t r28;
47 microblaze_reg_t r29;
48 microblaze_reg_t r30;
49 microblaze_reg_t r31;
50 microblaze_reg_t pc;
51 microblaze_reg_t msr;
52 microblaze_reg_t ear;
53 microblaze_reg_t esr;
54 microblaze_reg_t fsr;
55 int pt_mode;
56};
57
58#define kernel_mode(regs) ((regs)->pt_mode)
59#define user_mode(regs) (!kernel_mode(regs))
60
61#define instruction_pointer(regs) ((regs)->pc)
62#define profile_pc(regs) instruction_pointer(regs)
63
64void show_regs(struct pt_regs *);
65
66#endif /* __ASSEMBLY__ */
67
68#endif /* _ASM_MICROBLAZE_PTRACE_H */
diff --git a/arch/microblaze/include/asm/pvr.h b/arch/microblaze/include/asm/pvr.h
new file mode 100644
index 000000000000..66f1b30dd097
--- /dev/null
+++ b/arch/microblaze/include/asm/pvr.h
@@ -0,0 +1,209 @@
1/*
2 * Support for the MicroBlaze PVR (Processor Version Register)
3 *
4 * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
6 * Copyright (C) 2007 - 2009 PetaLogix
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_PVR_H
14#define _ASM_MICROBLAZE_PVR_H
15
16#define PVR_MSR_BIT 0x400
17
18struct pvr_s {
19 unsigned pvr[16];
20};
21
22/* The following taken from Xilinx's standalone BSP pvr.h */
23
24/* Basic PVR mask */
25#define PVR0_PVR_FULL_MASK 0x80000000
26#define PVR0_USE_BARREL_MASK 0x40000000
27#define PVR0_USE_DIV_MASK 0x20000000
28#define PVR0_USE_HW_MUL_MASK 0x10000000
29#define PVR0_USE_FPU_MASK 0x08000000
30#define PVR0_USE_EXC_MASK 0x04000000
31#define PVR0_USE_ICACHE_MASK 0x02000000
32#define PVR0_USE_DCACHE_MASK 0x01000000
33#define PVR0_USE_MMU 0x00800000 /* new */
34#define PVR0_VERSION_MASK 0x0000FF00
35#define PVR0_USER1_MASK 0x000000FF
36
37/* User 2 PVR mask */
38#define PVR1_USER2_MASK 0xFFFFFFFF
39
40/* Configuration PVR masks */
41#define PVR2_D_OPB_MASK 0x80000000
42#define PVR2_D_LMB_MASK 0x40000000
43#define PVR2_I_OPB_MASK 0x20000000
44#define PVR2_I_LMB_MASK 0x10000000
45#define PVR2_INTERRUPT_IS_EDGE_MASK 0x08000000
46#define PVR2_EDGE_IS_POSITIVE_MASK 0x04000000
47#define PVR2_D_PLB_MASK 0x02000000 /* new */
48#define PVR2_I_PLB_MASK 0x01000000 /* new */
49#define PVR2_INTERCONNECT 0x00800000 /* new */
50#define PVR2_USE_EXTEND_FSL 0x00080000 /* new */
51#define PVR2_USE_FSL_EXC 0x00040000 /* new */
52#define PVR2_USE_MSR_INSTR 0x00020000
53#define PVR2_USE_PCMP_INSTR 0x00010000
54#define PVR2_AREA_OPTIMISED 0x00008000
55#define PVR2_USE_BARREL_MASK 0x00004000
56#define PVR2_USE_DIV_MASK 0x00002000
57#define PVR2_USE_HW_MUL_MASK 0x00001000
58#define PVR2_USE_FPU_MASK 0x00000800
59#define PVR2_USE_MUL64_MASK 0x00000400
60#define PVR2_USE_FPU2_MASK 0x00000200 /* new */
61#define PVR2_USE_IPLBEXC 0x00000100
62#define PVR2_USE_DPLBEXC 0x00000080
63#define PVR2_OPCODE_0x0_ILL_MASK 0x00000040
64#define PVR2_UNALIGNED_EXC_MASK 0x00000020
65#define PVR2_ILL_OPCODE_EXC_MASK 0x00000010
66#define PVR2_IOPB_BUS_EXC_MASK 0x00000008
67#define PVR2_DOPB_BUS_EXC_MASK 0x00000004
68#define PVR2_DIV_ZERO_EXC_MASK 0x00000002
69#define PVR2_FPU_EXC_MASK 0x00000001
70
71/* Debug and exception PVR masks */
72#define PVR3_DEBUG_ENABLED_MASK 0x80000000
73#define PVR3_NUMBER_OF_PC_BRK_MASK 0x1E000000
74#define PVR3_NUMBER_OF_RD_ADDR_BRK_MASK 0x00380000
75#define PVR3_NUMBER_OF_WR_ADDR_BRK_MASK 0x0000E000
76#define PVR3_FSL_LINKS_MASK 0x00000380
77
78/* ICache config PVR masks */
79#define PVR4_USE_ICACHE_MASK 0x80000000
80#define PVR4_ICACHE_ADDR_TAG_BITS_MASK 0x7C000000
81#define PVR4_ICACHE_USE_FSL_MASK 0x02000000
82#define PVR4_ICACHE_ALLOW_WR_MASK 0x01000000
83#define PVR4_ICACHE_LINE_LEN_MASK 0x00E00000
84#define PVR4_ICACHE_BYTE_SIZE_MASK 0x001F0000
85
86/* DCache config PVR masks */
87#define PVR5_USE_DCACHE_MASK 0x80000000
88#define PVR5_DCACHE_ADDR_TAG_BITS_MASK 0x7C000000
89#define PVR5_DCACHE_USE_FSL_MASK 0x02000000
90#define PVR5_DCACHE_ALLOW_WR_MASK 0x01000000
91#define PVR5_DCACHE_LINE_LEN_MASK 0x00E00000
92#define PVR5_DCACHE_BYTE_SIZE_MASK 0x001F0000
93
94/* ICache base address PVR mask */
95#define PVR6_ICACHE_BASEADDR_MASK 0xFFFFFFFF
96
97/* ICache high address PVR mask */
98#define PVR7_ICACHE_HIGHADDR_MASK 0xFFFFFFFF
99
100/* DCache base address PVR mask */
101#define PVR8_DCACHE_BASEADDR_MASK 0xFFFFFFFF
102
103/* DCache high address PVR mask */
104#define PVR9_DCACHE_HIGHADDR_MASK 0xFFFFFFFF
105
106/* Target family PVR mask */
107#define PVR10_TARGET_FAMILY_MASK 0xFF000000
108
109/* MMU descrtiption */
110#define PVR11_USE_MMU 0xC0000000
111#define PVR11_MMU_ITLB_SIZE 0x38000000
112#define PVR11_MMU_DTLB_SIZE 0x07000000
113#define PVR11_MMU_TLB_ACCESS 0x00C00000
114#define PVR11_MMU_ZONES 0x003C0000
115/* MSR Reset value PVR mask */
116#define PVR11_MSR_RESET_VALUE_MASK 0x000007FF
117
118
119/* PVR access macros */
120#define PVR_IS_FULL(pvr) (pvr.pvr[0] & PVR0_PVR_FULL_MASK)
121#define PVR_USE_BARREL(pvr) (pvr.pvr[0] & PVR0_USE_BARREL_MASK)
122#define PVR_USE_DIV(pvr) (pvr.pvr[0] & PVR0_USE_DIV_MASK)
123#define PVR_USE_HW_MUL(pvr) (pvr.pvr[0] & PVR0_USE_HW_MUL_MASK)
124#define PVR_USE_FPU(pvr) (pvr.pvr[0] & PVR0_USE_FPU_MASK)
125#define PVR_USE_FPU2(pvr) (pvr.pvr[2] & PVR2_USE_FPU2_MASK)
126#define PVR_USE_ICACHE(pvr) (pvr.pvr[0] & PVR0_USE_ICACHE_MASK)
127#define PVR_USE_DCACHE(pvr) (pvr.pvr[0] & PVR0_USE_DCACHE_MASK)
128#define PVR_VERSION(pvr) ((pvr.pvr[0] & PVR0_VERSION_MASK) >> 8)
129#define PVR_USER1(pvr) (pvr.pvr[0] & PVR0_USER1_MASK)
130#define PVR_USER2(pvr) (pvr.pvr[1] & PVR1_USER2_MASK)
131
132#define PVR_D_OPB(pvr) (pvr.pvr[2] & PVR2_D_OPB_MASK)
133#define PVR_D_LMB(pvr) (pvr.pvr[2] & PVR2_D_LMB_MASK)
134#define PVR_I_OPB(pvr) (pvr.pvr[2] & PVR2_I_OPB_MASK)
135#define PVR_I_LMB(pvr) (pvr.pvr[2] & PVR2_I_LMB_MASK)
136#define PVR_INTERRUPT_IS_EDGE(pvr) \
137 (pvr.pvr[2] & PVR2_INTERRUPT_IS_EDGE_MASK)
138#define PVR_EDGE_IS_POSITIVE(pvr) \
139 (pvr.pvr[2] & PVR2_EDGE_IS_POSITIVE_MASK)
140#define PVR_USE_MSR_INSTR(pvr) (pvr.pvr[2] & PVR2_USE_MSR_INSTR)
141#define PVR_USE_PCMP_INSTR(pvr) (pvr.pvr[2] & PVR2_USE_PCMP_INSTR)
142#define PVR_AREA_OPTIMISED(pvr) (pvr.pvr[2] & PVR2_AREA_OPTIMISED)
143#define PVR_USE_MUL64(pvr) (pvr.pvr[2] & PVR2_USE_MUL64_MASK)
144#define PVR_OPCODE_0x0_ILLEGAL(pvr) \
145 (pvr.pvr[2] & PVR2_OPCODE_0x0_ILL_MASK)
146#define PVR_UNALIGNED_EXCEPTION(pvr) \
147 (pvr.pvr[2] & PVR2_UNALIGNED_EXC_MASK)
148#define PVR_ILL_OPCODE_EXCEPTION(pvr) \
149 (pvr.pvr[2] & PVR2_ILL_OPCODE_EXC_MASK)
150#define PVR_IOPB_BUS_EXCEPTION(pvr) \
151 (pvr.pvr[2] & PVR2_IOPB_BUS_EXC_MASK)
152#define PVR_DOPB_BUS_EXCEPTION(pvr) \
153 (pvr.pvr[2] & PVR2_DOPB_BUS_EXC_MASK)
154#define PVR_DIV_ZERO_EXCEPTION(pvr) \
155 (pvr.pvr[2] & PVR2_DIV_ZERO_EXC_MASK)
156#define PVR_FPU_EXCEPTION(pvr) (pvr.pvr[2] & PVR2_FPU_EXC_MASK)
157#define PVR_FSL_EXCEPTION(pvr) (pvr.pvr[2] & PVR2_USE_EXTEND_FSL)
158
159#define PVR_DEBUG_ENABLED(pvr) (pvr.pvr[3] & PVR3_DEBUG_ENABLED_MASK)
160#define PVR_NUMBER_OF_PC_BRK(pvr) \
161 ((pvr.pvr[3] & PVR3_NUMBER_OF_PC_BRK_MASK) >> 25)
162#define PVR_NUMBER_OF_RD_ADDR_BRK(pvr) \
163 ((pvr.pvr[3] & PVR3_NUMBER_OF_RD_ADDR_BRK_MASK) >> 19)
164#define PVR_NUMBER_OF_WR_ADDR_BRK(pvr) \
165 ((pvr.pvr[3] & PVR3_NUMBER_OF_WR_ADDR_BRK_MASK) >> 13)
166#define PVR_FSL_LINKS(pvr) ((pvr.pvr[3] & PVR3_FSL_LINKS_MASK) >> 7)
167
168#define PVR_ICACHE_ADDR_TAG_BITS(pvr) \
169 ((pvr.pvr[4] & PVR4_ICACHE_ADDR_TAG_BITS_MASK) >> 26)
170#define PVR_ICACHE_USE_FSL(pvr) (pvr.pvr[4] & PVR4_ICACHE_USE_FSL_MASK)
171#define PVR_ICACHE_ALLOW_WR(pvr) (pvr.pvr[4] & PVR4_ICACHE_ALLOW_WR_MASK)
172#define PVR_ICACHE_LINE_LEN(pvr) \
173 (1 << ((pvr.pvr[4] & PVR4_ICACHE_LINE_LEN_MASK) >> 21))
174#define PVR_ICACHE_BYTE_SIZE(pvr) \
175 (1 << ((pvr.pvr[4] & PVR4_ICACHE_BYTE_SIZE_MASK) >> 16))
176
177#define PVR_DCACHE_ADDR_TAG_BITS(pvr) \
178 ((pvr.pvr[5] & PVR5_DCACHE_ADDR_TAG_BITS_MASK) >> 26)
179#define PVR_DCACHE_USE_FSL(pvr) (pvr.pvr[5] & PVR5_DCACHE_USE_FSL_MASK)
180#define PVR_DCACHE_ALLOW_WR(pvr) (pvr.pvr[5] & PVR5_DCACHE_ALLOW_WR_MASK)
181#define PVR_DCACHE_LINE_LEN(pvr) \
182 (1 << ((pvr.pvr[5] & PVR5_DCACHE_LINE_LEN_MASK) >> 21))
183#define PVR_DCACHE_BYTE_SIZE(pvr) \
184 (1 << ((pvr.pvr[5] & PVR5_DCACHE_BYTE_SIZE_MASK) >> 16))
185
186
187#define PVR_ICACHE_BASEADDR(pvr) (pvr.pvr[6] & PVR6_ICACHE_BASEADDR_MASK)
188#define PVR_ICACHE_HIGHADDR(pvr) (pvr.pvr[7] & PVR7_ICACHE_HIGHADDR_MASK)
189
190#define PVR_DCACHE_BASEADDR(pvr) (pvr.pvr[8] & PVR8_DCACHE_BASEADDR_MASK)
191#define PVR_DCACHE_HIGHADDR(pvr) (pvr.pvr[9] & PVR9_DCACHE_HIGHADDR_MASK)
192
193#define PVR_TARGET_FAMILY(pvr) ((pvr.pvr[10] & PVR10_TARGET_FAMILY_MASK) >> 24)
194
195#define PVR_MSR_RESET_VALUE(pvr) \
196 (pvr.pvr[11] & PVR11_MSR_RESET_VALUE_MASK)
197
198/* mmu */
199#define PVR_USE_MMU(pvr) ((pvr.pvr[11] & PVR11_USE_MMU) >> 30)
200#define PVR_MMU_ITLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_ITLB_SIZE)
201#define PVR_MMU_DTLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_DTLB_SIZE)
202#define PVR_MMU_TLB_ACCESS(pvr) (pvr.pvr[11] & PVR11_MMU_TLB_ACCESS)
203#define PVR_MMU_ZONES(pvr) (pvr.pvr[11] & PVR11_MMU_ZONES)
204
205
206int cpu_has_pvr(void);
207void get_pvr(struct pvr_s *pvr);
208
209#endif /* _ASM_MICROBLAZE_PVR_H */
diff --git a/arch/microblaze/include/asm/registers.h b/arch/microblaze/include/asm/registers.h
new file mode 100644
index 000000000000..834142d9356f
--- /dev/null
+++ b/arch/microblaze/include/asm/registers.h
@@ -0,0 +1,33 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_REGISTERS_H
12#define _ASM_MICROBLAZE_REGISTERS_H
13
14#define MSR_BE (1<<0) /* 0x001 */
15#define MSR_IE (1<<1) /* 0x002 */
16#define MSR_C (1<<2) /* 0x004 */
17#define MSR_BIP (1<<3) /* 0x008 */
18#define MSR_FSL (1<<4) /* 0x010 */
19#define MSR_ICE (1<<5) /* 0x020 */
20#define MSR_DZ (1<<6) /* 0x040 */
21#define MSR_DCE (1<<7) /* 0x080 */
22#define MSR_EE (1<<8) /* 0x100 */
23#define MSR_EIP (1<<9) /* 0x200 */
24#define MSR_CC (1<<31)
25
26/* Floating Point Status Register (FSR) Bits */
27#define FSR_IO (1<<4) /* Invalid operation */
28#define FSR_DZ (1<<3) /* Divide-by-zero */
29#define FSR_OF (1<<2) /* Overflow */
30#define FSR_UF (1<<1) /* Underflow */
31#define FSR_DO (1<<0) /* Denormalized operand error */
32
33#endif /* _ASM_MICROBLAZE_REGISTERS_H */
diff --git a/include/asm-mn10300/resource.h b/arch/microblaze/include/asm/resource.h
index 04bc4db8921b..04bc4db8921b 100644
--- a/include/asm-mn10300/resource.h
+++ b/arch/microblaze/include/asm/resource.h
diff --git a/arch/microblaze/include/asm/scatterlist.h b/arch/microblaze/include/asm/scatterlist.h
new file mode 100644
index 000000000000..08ff1d049b42
--- /dev/null
+++ b/arch/microblaze/include/asm/scatterlist.h
@@ -0,0 +1,28 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_SCATTERLIST_H
11#define _ASM_MICROBLAZE_SCATTERLIST_H
12
13struct scatterlist {
14#ifdef CONFIG_DEBUG_SG
15 unsigned long sg_magic;
16#endif
17 unsigned long page_link;
18 dma_addr_t dma_address;
19 unsigned int offset;
20 unsigned int length;
21};
22
23#define sg_dma_address(sg) ((sg)->dma_address)
24#define sg_dma_len(sg) ((sg)->length)
25
26#define ISA_DMA_THRESHOLD (~0UL)
27
28#endif /* _ASM_MICROBLAZE_SCATTERLIST_H */
diff --git a/arch/microblaze/include/asm/sections.h b/arch/microblaze/include/asm/sections.h
new file mode 100644
index 000000000000..8434a43e5421
--- /dev/null
+++ b/arch/microblaze/include/asm/sections.h
@@ -0,0 +1,25 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SECTIONS_H
10#define _ASM_MICROBLAZE_SECTIONS_H
11
12#include <asm-generic/sections.h>
13
14# ifndef __ASSEMBLY__
15extern char _ssbss[], _esbss[];
16extern unsigned long __ivt_start[], __ivt_end[];
17
18# ifdef CONFIG_MTD_UCLINUX
19extern char *_ebss;
20# endif
21
22extern u32 _fdt_start[], _fdt_end[];
23
24# endif /* !__ASSEMBLY__ */
25#endif /* _ASM_MICROBLAZE_SECTIONS_H */
diff --git a/arch/microblaze/include/asm/segment.h b/arch/microblaze/include/asm/segment.h
new file mode 100644
index 000000000000..7f5dcc56eea1
--- /dev/null
+++ b/arch/microblaze/include/asm/segment.h
@@ -0,0 +1,43 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_SEGMENT_H
12#define _ASM_MICROBLAZE_SEGMENT_H
13
14#ifndef __ASSEMBLY__
15
16typedef struct {
17 unsigned long seg;
18} mm_segment_t;
19
20/*
21 * On Microblaze the fs value is actually the top of the corresponding
22 * address space.
23 *
24 * The fs value determines whether argument validity checking should be
25 * performed or not. If get_fs() == USER_DS, checking is performed, with
26 * get_fs() == KERNEL_DS, checking is bypassed.
27 *
28 * For historical reasons, these macros are grossly misnamed.
29 *
30 * For non-MMU arch like Microblaze, KERNEL_DS and USER_DS is equal.
31 */
32# define KERNEL_DS ((mm_segment_t){0})
33# define USER_DS KERNEL_DS
34
35# define get_ds() (KERNEL_DS)
36# define get_fs() (current_thread_info()->addr_limit)
37# define set_fs(x) \
38 do { current_thread_info()->addr_limit = (x); } while (0)
39
40# define segment_eq(a, b) ((a).seg == (b).seg)
41
42# endif /* __ASSEMBLY__ */
43#endif /* _ASM_MICROBLAZE_SEGMENT_H */
diff --git a/arch/microblaze/include/asm/selfmod.h b/arch/microblaze/include/asm/selfmod.h
new file mode 100644
index 000000000000..c42aff2e6cd0
--- /dev/null
+++ b/arch/microblaze/include/asm/selfmod.h
@@ -0,0 +1,24 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SELFMOD_H
10#define _ASM_MICROBLAZE_SELFMOD_H
11
12/*
13 * BARRIER_BASE_ADDR is constant address for selfmod function.
14 * do not change this value - selfmod function is in
15 * arch/microblaze/kernel/selfmod.c: selfmod_function()
16 *
17 * last 16 bits is used for storing register offset
18 */
19
20#define BARRIER_BASE_ADDR 0x1234ff00
21
22void selfmod_function(const int *arr_fce, const unsigned int base);
23
24#endif /* _ASM_MICROBLAZE_SELFMOD_H */
diff --git a/arch/microblaze/include/asm/sembuf.h b/arch/microblaze/include/asm/sembuf.h
new file mode 100644
index 000000000000..b804ed71a57e
--- /dev/null
+++ b/arch/microblaze/include/asm/sembuf.h
@@ -0,0 +1,34 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SEMBUF_H
10#define _ASM_MICROBLAZE_SEMBUF_H
11
12/*
13 * The semid64_ds structure for microblaze architecture.
14 * Note extra padding because this structure is passed back and forth
15 * between kernel and user space.
16 *
17 * Pad space is left for:
18 * - 64-bit time_t to solve y2038 problem
19 * - 2 miscellaneous 32-bit values
20 */
21
22struct semid64_ds {
23 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
24 __kernel_time_t sem_otime; /* last semop time */
25 unsigned long __unused1;
26 __kernel_time_t sem_ctime; /* last change time */
27 unsigned long __unused2;
28 unsigned long sem_nsems; /* no. of semaphores in array */
29 unsigned long __unused3;
30 unsigned long __unused4;
31};
32
33
34#endif /* _ASM_MICROBLAZE_SEMBUF_H */
diff --git a/arch/microblaze/include/asm/serial.h b/arch/microblaze/include/asm/serial.h
new file mode 100644
index 000000000000..39bfc8ce6af5
--- /dev/null
+++ b/arch/microblaze/include/asm/serial.h
@@ -0,0 +1,14 @@
1/*
2 * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SERIAL_H
10#define _ASM_MICROBLAZE_SERIAL_H
11
12# define BASE_BAUD (1843200 / 16)
13
14#endif /* _ASM_MICROBLAZE_SERIAL_H */
diff --git a/arch/microblaze/include/asm/setup.h b/arch/microblaze/include/asm/setup.h
new file mode 100644
index 000000000000..9b98e8e6abae
--- /dev/null
+++ b/arch/microblaze/include/asm/setup.h
@@ -0,0 +1,44 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_SETUP_H
11#define _ASM_MICROBLAZE_SETUP_H
12
13#define COMMAND_LINE_SIZE 256
14
15# ifndef __ASSEMBLY__
16
17# ifdef __KERNEL__
18extern unsigned int boot_cpuid; /* move to smp.h */
19
20extern char cmd_line[COMMAND_LINE_SIZE];
21# endif/* __KERNEL__ */
22
23void early_printk(const char *fmt, ...);
24
25int setup_early_printk(char *opt);
26void disable_early_printk(void);
27
28void heartbeat(void);
29void setup_heartbeat(void);
30
31unsigned long long sched_clock(void);
32
33void time_init(void);
34void init_IRQ(void);
35void machine_early_init(const char *cmdline, unsigned int ram,
36 unsigned int fdt);
37
38void machine_restart(char *cmd);
39void machine_shutdown(void);
40void machine_halt(void);
41void machine_power_off(void);
42
43# endif /* __ASSEMBLY__ */
44#endif /* _ASM_MICROBLAZE_SETUP_H */
diff --git a/arch/microblaze/include/asm/shmbuf.h b/arch/microblaze/include/asm/shmbuf.h
new file mode 100644
index 000000000000..f829c5843618
--- /dev/null
+++ b/arch/microblaze/include/asm/shmbuf.h
@@ -0,0 +1,42 @@
1#ifndef _ASM_MICROBLAZE_SHMBUF_H
2#define _ASM_MICROBLAZE_SHMBUF_H
3
4/*
5 * The shmid64_ds structure for microblaze architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct shmid64_ds {
15 struct ipc64_perm shm_perm; /* operation perms */
16 size_t shm_segsz; /* size of segment (bytes) */
17 __kernel_time_t shm_atime; /* last attach time */
18 unsigned long __unused1;
19 __kernel_time_t shm_dtime; /* last detach time */
20 unsigned long __unused2;
21 __kernel_time_t shm_ctime; /* last change time */
22 unsigned long __unused3;
23 __kernel_pid_t shm_cpid; /* pid of creator */
24 __kernel_pid_t shm_lpid; /* pid of last operator */
25 unsigned long shm_nattch; /* no. of current attaches */
26 unsigned long __unused4;
27 unsigned long __unused5;
28};
29
30struct shminfo64 {
31 unsigned long shmmax;
32 unsigned long shmmin;
33 unsigned long shmmni;
34 unsigned long shmseg;
35 unsigned long shmall;
36 unsigned long __unused1;
37 unsigned long __unused2;
38 unsigned long __unused3;
39 unsigned long __unused4;
40};
41
42#endif /* _ASM_MICROBLAZE_SHMBUF_H */
diff --git a/arch/microblaze/include/asm/shmparam.h b/arch/microblaze/include/asm/shmparam.h
new file mode 100644
index 000000000000..9f5fc2b3b6a3
--- /dev/null
+++ b/arch/microblaze/include/asm/shmparam.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_MICROBLAZE_SHMPARAM_H
2#define _ASM_MICROBLAZE_SHMPARAM_H
3
4#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
5
6#endif /* _ASM_MICROBLAZE_SHMPARAM_H */
diff --git a/arch/microblaze/include/asm/sigcontext.h b/arch/microblaze/include/asm/sigcontext.h
new file mode 100644
index 000000000000..55873c80c917
--- /dev/null
+++ b/arch/microblaze/include/asm/sigcontext.h
@@ -0,0 +1,20 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SIGCONTEXT_H
10#define _ASM_MICROBLAZE_SIGCONTEXT_H
11
12/* FIXME should be linux/ptrace.h */
13#include <asm/ptrace.h>
14
15struct sigcontext {
16 struct pt_regs regs;
17 unsigned long oldmask;
18};
19
20#endif /* _ASM_MICROBLAZE_SIGCONTEXT_H */
diff --git a/arch/microblaze/include/asm/siginfo.h b/arch/microblaze/include/asm/siginfo.h
new file mode 100644
index 000000000000..f162911a8f50
--- /dev/null
+++ b/arch/microblaze/include/asm/siginfo.h
@@ -0,0 +1,15 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SIGINFO_H
10#define _ASM_MICROBLAZE_SIGINFO_H
11
12#include <linux/types.h>
13#include <asm-generic/siginfo.h>
14
15#endif /* _ASM_MICROBLAZE_SIGINFO_H */
diff --git a/arch/microblaze/include/asm/signal.h b/arch/microblaze/include/asm/signal.h
new file mode 100644
index 000000000000..9676fad3486c
--- /dev/null
+++ b/arch/microblaze/include/asm/signal.h
@@ -0,0 +1,165 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 * Yasushi SHOJI <yashi@atmark-techno.com>
4 * Tetsuya OHKAWA <tetsuya@atmark-techno.com>
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_SIGNAL_H
12#define _ASM_MICROBLAZE_SIGNAL_H
13
14#define SIGHUP 1
15#define SIGINT 2
16#define SIGQUIT 3
17#define SIGILL 4
18#define SIGTRAP 5
19#define SIGABRT 6
20#define SIGIOT 6
21#define SIGBUS 7
22#define SIGFPE 8
23#define SIGKILL 9
24#define SIGUSR1 10
25#define SIGSEGV 11
26#define SIGUSR2 12
27#define SIGPIPE 13
28#define SIGALRM 14
29#define SIGTERM 15
30#define SIGSTKFLT 16
31#define SIGCHLD 17
32#define SIGCONT 18
33#define SIGSTOP 19
34#define SIGTSTP 20
35#define SIGTTIN 21
36#define SIGTTOU 22
37#define SIGURG 23
38#define SIGXCPU 24
39#define SIGXFSZ 25
40#define SIGVTALRM 26
41#define SIGPROF 27
42#define SIGWINCH 28
43#define SIGIO 29
44#define SIGPOLL SIGIO
45/*
46#define SIGLOST 29
47*/
48#define SIGPWR 30
49#define SIGSYS 31
50#define SIGUNUSED 31
51
52/* These should not be considered constants from userland. */
53#define SIGRTMIN 32
54#define SIGRTMAX _NSIG
55
56/*
57 * SA_FLAGS values:
58 *
59 * SA_ONSTACK indicates that a registered stack_t will be used.
60 * SA_RESTART flag to get restarting signals (which were the default long ago)
61 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
62 * SA_RESETHAND clears the handler when the signal is delivered.
63 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
64 * SA_NODEFER prevents the current signal from being masked in the handler.
65 *
66 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
67 * Unix names RESETHAND and NODEFER respectively.
68 */
69#define SA_NOCLDSTOP 0x00000001
70#define SA_NOCLDWAIT 0x00000002
71#define SA_SIGINFO 0x00000004
72#define SA_ONSTACK 0x08000000
73#define SA_RESTART 0x10000000
74#define SA_NODEFER 0x40000000
75#define SA_RESETHAND 0x80000000
76
77#define SA_NOMASK SA_NODEFER
78#define SA_ONESHOT SA_RESETHAND
79
80#define SA_RESTORER 0x04000000
81
82/*
83 * sigaltstack controls
84 */
85#define SS_ONSTACK 1
86#define SS_DISABLE 2
87
88#define MINSIGSTKSZ 2048
89#define SIGSTKSZ 8192
90
91# ifndef __ASSEMBLY__
92# include <linux/types.h>
93# include <asm-generic/signal.h>
94
95/* Avoid too many header ordering problems. */
96struct siginfo;
97
98# ifdef __KERNEL__
99/*
100 * Most things should be clean enough to redefine this at will, if care
101 * is taken to make libc match.
102 */
103# define _NSIG 64
104# define _NSIG_BPW 32
105# define _NSIG_WORDS (_NSIG / _NSIG_BPW)
106
107typedef unsigned long old_sigset_t; /* at least 32 bits */
108
109typedef struct {
110 unsigned long sig[_NSIG_WORDS];
111} sigset_t;
112
113struct old_sigaction {
114 __sighandler_t sa_handler;
115 old_sigset_t sa_mask;
116 unsigned long sa_flags;
117 void (*sa_restorer)(void);
118};
119
120struct sigaction {
121 __sighandler_t sa_handler;
122 unsigned long sa_flags;
123 void (*sa_restorer)(void);
124 sigset_t sa_mask; /* mask last for extensibility */
125};
126
127struct k_sigaction {
128 struct sigaction sa;
129};
130
131# include <asm/sigcontext.h>
132# undef __HAVE_ARCH_SIG_BITOPS
133
134# define ptrace_signal_deliver(regs, cookie) do { } while (0)
135
136# else /* !__KERNEL__ */
137
138/* Here we must cater to libcs that poke about in kernel headers. */
139
140# define NSIG 32
141typedef unsigned long sigset_t;
142
143struct sigaction {
144 union {
145 __sighandler_t _sa_handler;
146 void (*_sa_sigaction)(int, struct siginfo *, void *);
147 } _u;
148 sigset_t sa_mask;
149 unsigned long sa_flags;
150 void (*sa_restorer)(void);
151};
152
153# define sa_handler _u._sa_handler
154# define sa_sigaction _u._sa_sigaction
155
156# endif /* __KERNEL__ */
157
158typedef struct sigaltstack {
159 void *ss_sp;
160 int ss_flags;
161 size_t ss_size;
162} stack_t;
163
164# endif /* __ASSEMBLY__ */
165#endif /* _ASM_MICROBLAZE_SIGNAL_H */
diff --git a/arch/microblaze/include/asm/socket.h b/arch/microblaze/include/asm/socket.h
new file mode 100644
index 000000000000..825936860314
--- /dev/null
+++ b/arch/microblaze/include/asm/socket.h
@@ -0,0 +1,69 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SOCKET_H
10#define _ASM_MICROBLAZE_SOCKET_H
11
12#include <asm/sockios.h>
13
14/* For setsockoptions(2) */
15#define SOL_SOCKET 1
16
17#define SO_DEBUG 1
18#define SO_REUSEADDR 2
19#define SO_TYPE 3
20#define SO_ERROR 4
21#define SO_DONTROUTE 5
22#define SO_BROADCAST 6
23#define SO_SNDBUF 7
24#define SO_RCVBUF 8
25#define SO_SNDBUFFORCE 32
26#define SO_RCVBUFFORCE 33
27#define SO_KEEPALIVE 9
28#define SO_OOBINLINE 10
29#define SO_NO_CHECK 11
30#define SO_PRIORITY 12
31#define SO_LINGER 13
32#define SO_BSDCOMPAT 14
33/* To add :#define SO_REUSEPORT 15 */
34#define SO_PASSCRED 16
35#define SO_PEERCRED 17
36#define SO_RCVLOWAT 18
37#define SO_SNDLOWAT 19
38#define SO_RCVTIMEO 20
39#define SO_SNDTIMEO 21
40
41/* Security levels - as per NRL IPv6 - don't actually do anything */
42#define SO_SECURITY_AUTHENTICATION 22
43#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
44#define SO_SECURITY_ENCRYPTION_NETWORK 24
45
46#define SO_BINDTODEVICE 25
47
48/* Socket filtering */
49#define SO_ATTACH_FILTER 26
50#define SO_DETACH_FILTER 27
51
52#define SO_PEERNAME 28
53#define SO_TIMESTAMP 29
54#define SCM_TIMESTAMP SO_TIMESTAMP
55
56#define SO_ACCEPTCONN 30
57
58#define SO_PEERSEC 31
59#define SO_PASSSEC 34
60
61#define SO_TIMESTAMPNS 35
62#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
63
64#define SO_MARK 36
65
66#define SO_TIMESTAMPING 37
67#define SCM_TIMESTAMPING SO_TIMESTAMPING
68
69#endif /* _ASM_MICROBLAZE_SOCKET_H */
diff --git a/arch/microblaze/include/asm/sockios.h b/arch/microblaze/include/asm/sockios.h
new file mode 100644
index 000000000000..9fff57a701e1
--- /dev/null
+++ b/arch/microblaze/include/asm/sockios.h
@@ -0,0 +1,23 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SOCKIOS_H
10#define _ASM_MICROBLAZE_SOCKIOS_H
11
12#include <linux/ioctl.h>
13
14/* Socket-level I/O control calls. */
15#define FIOSETOWN 0x8901
16#define SIOCSPGRP 0x8902
17#define FIOGETOWN 0x8903
18#define SIOCGPGRP 0x8904
19#define SIOCATMARK 0x8905
20#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
21#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
22
23#endif /* _ASM_MICROBLAZE_SOCKIOS_H */
diff --git a/arch/microblaze/include/asm/stat.h b/arch/microblaze/include/asm/stat.h
new file mode 100644
index 000000000000..5f18b8aed220
--- /dev/null
+++ b/arch/microblaze/include/asm/stat.h
@@ -0,0 +1,73 @@
1/*
2 * Microblaze stat structure
3 *
4 * Copyright (C) 2001,02,03 NEC Electronics Corporation
5 * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
6 *
7 * This file is subject to the terms and conditions of the GNU General
8 * Public License. See the file COPYING in the main directory of this
9 * archive for more details.
10 *
11 * Written by Miles Bader <miles@gnu.org>
12 */
13
14#ifndef _ASM_MICROBLAZE_STAT_H
15#define _ASM_MICROBLAZE_STAT_H
16
17#include <linux/posix_types.h>
18
19struct stat {
20 unsigned int st_dev;
21 unsigned long st_ino;
22 unsigned int st_mode;
23 unsigned int st_nlink;
24 unsigned int st_uid;
25 unsigned int st_gid;
26 unsigned int st_rdev;
27 unsigned long st_size;
28 unsigned long st_blksize;
29 unsigned long st_blocks;
30 unsigned long st_atime;
31 unsigned long __unused1; /* unsigned long st_atime_nsec */
32 unsigned long st_mtime;
33 unsigned long __unused2; /* unsigned long st_mtime_nsec */
34 unsigned long st_ctime;
35 unsigned long __unused3; /* unsigned long st_ctime_nsec */
36 unsigned long __unused4;
37 unsigned long __unused5;
38};
39
40struct stat64 {
41 unsigned long long st_dev;
42 unsigned long __unused1;
43
44 unsigned long long st_ino;
45
46 unsigned int st_mode;
47 unsigned int st_nlink;
48
49 unsigned int st_uid;
50 unsigned int st_gid;
51
52 unsigned long long st_rdev;
53 unsigned long __unused3;
54
55 long long st_size;
56 unsigned long st_blksize;
57
58 unsigned long st_blocks; /* No. of 512-byte blocks allocated */
59 unsigned long __unused4; /* future possible st_blocks high bits */
60
61 unsigned long st_atime;
62 unsigned long st_atime_nsec;
63
64 unsigned long st_mtime;
65 unsigned long st_mtime_nsec;
66
67 unsigned long st_ctime;
68 unsigned long st_ctime_nsec;
69
70 unsigned long __unused8;
71};
72
73#endif /* _ASM_MICROBLAZE_STAT_H */
diff --git a/include/asm-mn10300/statfs.h b/arch/microblaze/include/asm/statfs.h
index 0b91fe198c20..0b91fe198c20 100644
--- a/include/asm-mn10300/statfs.h
+++ b/arch/microblaze/include/asm/statfs.h
diff --git a/arch/microblaze/include/asm/string.h b/arch/microblaze/include/asm/string.h
new file mode 100644
index 000000000000..f7728c90fc18
--- /dev/null
+++ b/arch/microblaze/include/asm/string.h
@@ -0,0 +1,24 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_STRING_H
10#define _ASM_MICROBLAZE_STRING_H
11
12#ifndef __KERNEL__
13
14#define __HAVE_ARCH_MEMSET
15#define __HAVE_ARCH_MEMCPY
16#define __HAVE_ARCH_MEMMOVE
17
18extern void *memset(void *, int, __kernel_size_t);
19extern void *memcpy(void *, const void *, __kernel_size_t);
20extern void *memmove(void *, const void *, __kernel_size_t);
21
22#endif /* __KERNEL__ */
23
24#endif /* _ASM_MICROBLAZE_STRING_H */
diff --git a/arch/microblaze/include/asm/swab.h b/arch/microblaze/include/asm/swab.h
new file mode 100644
index 000000000000..b375d7b65ad7
--- /dev/null
+++ b/arch/microblaze/include/asm/swab.h
@@ -0,0 +1,8 @@
1#ifndef _ASM_MICROBLAZE_SWAB_H
2#define _ASM_MICROBLAZE_SWAB_H
3
4#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
5#define __SWAB_64_THRU_32__
6#endif
7
8#endif /* _ASM_MICROBLAZE_SWAB_H */
diff --git a/arch/microblaze/include/asm/syscalls.h b/arch/microblaze/include/asm/syscalls.h
new file mode 100644
index 000000000000..9cb4ff0edeb2
--- /dev/null
+++ b/arch/microblaze/include/asm/syscalls.h
@@ -0,0 +1,45 @@
1#ifndef __ASM_MICROBLAZE_SYSCALLS_H
2#define __ASM_MICROBLAZE_SYSCALLS_H
3#ifdef __KERNEL__
4
5#include <linux/compiler.h>
6#include <linux/linkage.h>
7#include <linux/types.h>
8#include <linux/signal.h>
9
10/* FIXME will be removed */
11asmlinkage int sys_ipc(uint call, int first, int second,
12 int third, void *ptr, long fifth);
13
14struct pt_regs;
15asmlinkage int sys_vfork(struct pt_regs *regs);
16asmlinkage int sys_clone(int flags, unsigned long stack, struct pt_regs *regs);
17asmlinkage int sys_execve(char __user *filenamei, char __user *__user *argv,
18 char __user *__user *envp, struct pt_regs *regs);
19
20asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len,
21 unsigned long prot, unsigned long flags,
22 unsigned long fd, unsigned long pgoff);
23
24asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
25 unsigned long prot, unsigned long flags,
26 unsigned long fd, off_t offset);
27
28/* from signal.c */
29asmlinkage int sys_sigsuspend(old_sigset_t mask, struct pt_regs *regs);
30
31asmlinkage int sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
32 struct pt_regs *regs);
33
34asmlinkage int sys_sigaction(int sig, const struct old_sigaction *act,
35 struct old_sigaction *oact);
36
37asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
38 struct pt_regs *regs);
39
40asmlinkage int sys_sigreturn(struct pt_regs *regs);
41
42asmlinkage int sys_rt_sigreturn(struct pt_regs *regs);
43
44#endif /* __KERNEL__ */
45#endif /* __ASM_MICROBLAZE_SYSCALLS_H */
diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h
new file mode 100644
index 000000000000..c4e308850b5d
--- /dev/null
+++ b/arch/microblaze/include/asm/system.h
@@ -0,0 +1,91 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SYSTEM_H
10#define _ASM_MICROBLAZE_SYSTEM_H
11
12#include <asm/registers.h>
13#include <asm/setup.h>
14#include <asm/irqflags.h>
15
16struct task_struct;
17struct thread_info;
18
19extern struct task_struct *_switch_to(struct thread_info *prev,
20 struct thread_info *next);
21
22#define switch_to(prev, next, last) \
23 do { \
24 (last) = _switch_to(task_thread_info(prev), \
25 task_thread_info(next)); \
26 } while (0)
27
28#define smp_read_barrier_depends() do {} while (0)
29#define read_barrier_depends() do {} while (0)
30
31#define nop() asm volatile ("nop")
32#define mb() barrier()
33#define rmb() mb()
34#define wmb() mb()
35#define set_mb(var, value) do { var = value; mb(); } while (0)
36#define set_wmb(var, value) do { var = value; wmb(); } while (0)
37
38#define smp_mb() mb()
39#define smp_rmb() rmb()
40#define smp_wmb() wmb()
41
42void show_trace(struct task_struct *task, unsigned long *stack);
43void __bad_xchg(volatile void *ptr, int size);
44
45static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
46 int size)
47{
48 unsigned long ret;
49 unsigned long flags;
50
51 switch (size) {
52 case 1:
53 local_irq_save(flags);
54 ret = *(volatile unsigned char *)ptr;
55 *(volatile unsigned char *)ptr = x;
56 local_irq_restore(flags);
57 break;
58
59 case 4:
60 local_irq_save(flags);
61 ret = *(volatile unsigned long *)ptr;
62 *(volatile unsigned long *)ptr = x;
63 local_irq_restore(flags);
64 break;
65 default:
66 __bad_xchg(ptr, size), ret = 0;
67 break;
68 }
69
70 return ret;
71}
72
73void disable_hlt(void);
74void enable_hlt(void);
75void default_idle(void);
76
77#define xchg(ptr, x) \
78 ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr))))
79
80void free_init_pages(char *what, unsigned long begin, unsigned long end);
81void free_initmem(void);
82extern char *klimit;
83extern void ret_from_fork(void);
84
85#ifdef CONFIG_DEBUG_FS
86extern struct dentry *of_debugfs_root;
87#endif
88
89#define arch_align_stack(x) (x)
90
91#endif /* _ASM_MICROBLAZE_SYSTEM_H */
diff --git a/arch/microblaze/include/asm/termbits.h b/arch/microblaze/include/asm/termbits.h
new file mode 100644
index 000000000000..a1b64bc4724a
--- /dev/null
+++ b/arch/microblaze/include/asm/termbits.h
@@ -0,0 +1,203 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TERMBITS_H
10#define _ASM_MICROBLAZE_TERMBITS_H
11
12#include <linux/posix_types.h>
13
14typedef unsigned char cc_t;
15typedef unsigned int speed_t;
16typedef unsigned int tcflag_t;
17
18#define NCCS 19
19struct termios {
20 tcflag_t c_iflag; /* input mode flags */
21 tcflag_t c_oflag; /* output mode flags */
22 tcflag_t c_cflag; /* control mode flags */
23 tcflag_t c_lflag; /* local mode flags */
24 cc_t c_line; /* line discipline */
25 cc_t c_cc[NCCS]; /* control characters */
26};
27
28struct ktermios {
29 tcflag_t c_iflag; /* input mode flags */
30 tcflag_t c_oflag; /* output mode flags */
31 tcflag_t c_cflag; /* control mode flags */
32 tcflag_t c_lflag; /* local mode flags */
33 cc_t c_line; /* line discipline */
34 cc_t c_cc[NCCS]; /* control characters */
35 speed_t c_ispeed; /* input speed */
36 speed_t c_ospeed; /* output speed */
37};
38
39/* c_cc characters */
40
41#define VINTR 0
42#define VQUIT 1
43#define VERASE 2
44#define VKILL 3
45#define VEOF 4
46#define VTIME 5
47#define VMIN 6
48#define VSWTC 7
49#define VSTART 8
50#define VSTOP 9
51#define VSUSP 10
52#define VEOL 11
53#define VREPRINT 12
54#define VDISCARD 13
55#define VWERASE 14
56#define VLNEXT 15
57#define VEOL2 16
58
59/* c_iflag bits */
60
61#define IGNBRK 0000001
62#define BRKINT 0000002
63#define IGNPAR 0000004
64#define PARMRK 0000010
65#define INPCK 0000020
66#define ISTRIP 0000040
67#define INLCR 0000100
68#define IGNCR 0000200
69#define ICRNL 0000400
70#define IUCLC 0001000
71#define IXON 0002000
72#define IXANY 0004000
73#define IXOFF 0010000
74#define IMAXBEL 0020000
75#define IUTF8 0040000
76
77/* c_oflag bits */
78
79#define OPOST 0000001
80#define OLCUC 0000002
81#define ONLCR 0000004
82#define OCRNL 0000010
83#define ONOCR 0000020
84#define ONLRET 0000040
85#define OFILL 0000100
86#define OFDEL 0000200
87#define NLDLY 0000400
88#define NL0 0000000
89#define NL1 0000400
90#define CRDLY 0003000
91#define CR0 0000000
92#define CR1 0001000
93#define CR2 0002000
94#define CR3 0003000
95#define TABDLY 0014000
96#define TAB0 0000000
97#define TAB1 0004000
98#define TAB2 0010000
99#define TAB3 0014000
100#define XTABS 0014000
101#define BSDLY 0020000
102#define BS0 0000000
103#define BS1 0020000
104#define VTDLY 0040000
105#define VT0 0000000
106#define VT1 0040000
107#define FFDLY 0100000
108#define FF0 0000000
109#define FF1 0100000
110
111/* c_cflag bit meaning */
112
113#define CBAUD 0010017
114#define B0 0000000 /* hang up */
115#define B50 0000001
116#define B75 0000002
117#define B110 0000003
118#define B134 0000004
119#define B150 0000005
120#define B200 0000006
121#define B300 0000007
122#define B600 0000010
123#define B1200 0000011
124#define B1800 0000012
125#define B2400 0000013
126#define B4800 0000014
127#define B9600 0000015
128#define B19200 0000016
129#define B38400 0000017
130#define EXTA B19200
131#define EXTB B38400
132#define CSIZE 0000060
133#define CS5 0000000
134#define CS6 0000020
135#define CS7 0000040
136#define CS8 0000060
137#define CSTOPB 0000100
138#define CREAD 0000200
139#define PARENB 0000400
140#define PARODD 0001000
141#define HUPCL 0002000
142#define CLOCAL 0004000
143#define CBAUDEX 0010000
144#define B57600 0010001
145#define B115200 0010002
146#define B230400 0010003
147#define B460800 0010004
148#define B500000 0010005
149#define B576000 0010006
150#define B921600 0010007
151#define BOTHER 0010000
152#define B1000000 0010010
153#define B1152000 0010011
154#define B1500000 0010012
155#define B2000000 0010013
156#define B2500000 0010014
157#define B3000000 0010015
158#define B3500000 0010016
159#define B4000000 0010017
160#define CIBAUD 002003600000 /* input baud rate (not used) */
161#define CMSPAR 010000000000 /* mark or space (stick) parity */
162#define CRTSCTS 020000000000 /* flow control */
163
164#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
165
166/* c_lflag bits */
167
168#define ISIG 0000001
169#define ICANON 0000002
170#define XCASE 0000004
171#define ECHO 0000010
172#define ECHOE 0000020
173#define ECHOK 0000040
174#define ECHONL 0000100
175#define NOFLSH 0000200
176#define TOSTOP 0000400
177#define ECHOCTL 0001000
178#define ECHOPRT 0002000
179#define ECHOKE 0004000
180#define FLUSHO 0010000
181#define PENDIN 0040000
182#define IEXTEN 0100000
183
184/* tcflow() and TCXONC use these */
185
186#define TCOOFF 0
187#define TCOON 1
188#define TCIOFF 2
189#define TCION 3
190
191/* tcflush() and TCFLSH use these */
192
193#define TCIFLUSH 0
194#define TCOFLUSH 1
195#define TCIOFLUSH 2
196
197/* tcsetattr uses these */
198
199#define TCSANOW 0
200#define TCSADRAIN 1
201#define TCSAFLUSH 2
202
203#endif /* _ASM_MICROBLAZE_TERMBITS_H */
diff --git a/arch/microblaze/include/asm/termios.h b/arch/microblaze/include/asm/termios.h
new file mode 100644
index 000000000000..102d77258668
--- /dev/null
+++ b/arch/microblaze/include/asm/termios.h
@@ -0,0 +1,88 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TERMIOS_H
10#define _ASM_MICROBLAZE_TERMIOS_H
11
12#include <linux/string.h>
13#include <asm/termbits.h>
14#include <asm/ioctls.h>
15
16struct winsize {
17 unsigned short ws_row;
18 unsigned short ws_col;
19 unsigned short ws_xpixel;
20 unsigned short ws_ypixel;
21};
22
23#define NCC 8
24struct termio {
25 unsigned short c_iflag; /* input mode flags */
26 unsigned short c_oflag; /* output mode flags */
27 unsigned short c_cflag; /* control mode flags */
28 unsigned short c_lflag; /* local mode flags */
29 unsigned char c_line; /* line discipline */
30 unsigned char c_cc[NCC]; /* control characters */
31};
32
33#ifdef __KERNEL__
34/* intr=^C quit=^| erase=del kill=^U
35 eof=^D vtime=\0 vmin=\1 sxtc=\0
36 start=^Q stop=^S susp=^Z eol=\0
37 reprint=^R discard=^U werase=^W lnext=^V
38 eol2=\0
39*/
40#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
41#endif
42
43/* Modem lines */
44
45#define TIOCM_LE 0x001
46#define TIOCM_DTR 0x002
47#define TIOCM_RTS 0x004
48#define TIOCM_ST 0x008
49#define TIOCM_SR 0x010
50#define TIOCM_CTS 0x020
51#define TIOCM_CAR 0x040
52#define TIOCM_RNG 0x080
53#define TIOCM_DSR 0x100
54#define TIOCM_CD TIOCM_CAR
55#define TIOCM_RI TIOCM_RNG
56#define TIOCM_OUT1 0x2000
57#define TIOCM_OUT2 0x4000
58#define TIOCM_LOOP 0x8000
59
60/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
61
62/* Line disciplines */
63
64#define N_TTY 0
65#define N_SLIP 1
66#define N_MOUSE 2
67#define N_PPP 3
68#define N_STRIP 4
69#define N_AX25 5
70#define N_X25 6 /* X.25 async */
71#define N_6PACK 7
72#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
73#define N_R3964 9 /* Reserved for Simatic R3964 module */
74#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
75#define N_IRDA 11 /* Linux IR - http://irda.sourceforge.net/ */
76#define N_SMSBLOCK 12 /* SMS block mode - for talking to GSM data cards
77 about SMS messages */
78#define N_HDLC 13 /* synchronous HDLC */
79#define N_SYNC_PPP 14
80#define N_HCI 15 /* Bluetooth HCI UART */
81
82#ifdef __KERNEL__
83
84#include <asm-generic/termios.h>
85
86#endif /* __KERNEL__ */
87
88#endif /* _ASM_MICROBLAZE_TERMIOS_H */
diff --git a/arch/microblaze/include/asm/thread_info.h b/arch/microblaze/include/asm/thread_info.h
new file mode 100644
index 000000000000..4c3943e3f403
--- /dev/null
+++ b/arch/microblaze/include/asm/thread_info.h
@@ -0,0 +1,159 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_THREAD_INFO_H
10#define _ASM_MICROBLAZE_THREAD_INFO_H
11
12#ifdef __KERNEL__
13
14/* we have 8k stack */
15#define THREAD_SHIFT 13
16#define THREAD_SIZE (1 << THREAD_SHIFT)
17#define THREAD_SIZE_ORDER 1
18
19#ifndef __ASSEMBLY__
20# include <linux/types.h>
21# include <asm/processor.h>
22# include <asm/segment.h>
23
24/*
25 * low level task data that entry.S needs immediate access to
26 * - this struct should fit entirely inside of one cache line
27 * - this struct shares the supervisor stack pages
28 * - if the contents of this structure are changed, the assembly constants
29 * must also be changed
30 */
31
32struct cpu_context {
33 __u32 r1; /* stack pointer */
34 __u32 r2;
35 /* dedicated registers */
36 __u32 r13;
37 __u32 r14;
38 __u32 r15;
39 __u32 r16;
40 __u32 r17;
41 __u32 r18;
42 /* non-volatile registers */
43 __u32 r19;
44 __u32 r20;
45 __u32 r21;
46 __u32 r22;
47 __u32 r23;
48 __u32 r24;
49 __u32 r25;
50 __u32 r26;
51 __u32 r27;
52 __u32 r28;
53 __u32 r29;
54 __u32 r30;
55 /* r31 is used as current task pointer */
56 /* special purpose registers */
57 __u32 msr;
58 __u32 ear;
59 __u32 esr;
60 __u32 fsr;
61};
62
63struct thread_info {
64 struct task_struct *task; /* main task structure */
65 struct exec_domain *exec_domain; /* execution domain */
66 unsigned long flags; /* low level flags */
67 unsigned long status; /* thread-synchronous flags */
68 __u32 cpu; /* current CPU */
69 __s32 preempt_count; /* 0 => preemptable,< 0 => BUG*/
70 mm_segment_t addr_limit; /* thread address space */
71 struct restart_block restart_block;
72
73 struct cpu_context cpu_context;
74};
75
76/*
77 * macros/functions for gaining access to the thread information structure
78 *
79 * preempt_count needs to be 1 initially, until the scheduler is functional.
80 */
81#define INIT_THREAD_INFO(tsk) \
82{ \
83 .task = &tsk, \
84 .exec_domain = &default_exec_domain, \
85 .flags = 0, \
86 .cpu = 0, \
87 .preempt_count = 1, \
88 .addr_limit = KERNEL_DS, \
89 .restart_block = { \
90 .fn = do_no_restart_syscall, \
91 }, \
92}
93
94#define init_thread_info (init_thread_union.thread_info)
95#define init_stack (init_thread_union.stack)
96
97/* how to get the thread information struct from C */
98static inline struct thread_info *current_thread_info(void)
99{
100 register unsigned long sp asm("r1");
101
102 return (struct thread_info *)(sp & ~(THREAD_SIZE-1));
103}
104
105/* thread information allocation */
106#endif /* __ASSEMBLY__ */
107
108#define PREEMPT_ACTIVE 0x10000000
109
110/*
111 * thread information flags
112 * - these are process state flags that various assembly files may
113 * need to access
114 * - pending work-to-be-done flags are in LSW
115 * - other flags in MSW
116 */
117#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
118#define TIF_NOTIFY_RESUME 1 /* resumption notification requested */
119#define TIF_SIGPENDING 2 /* signal pending */
120#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
121/* restore singlestep on return to user mode */
122#define TIF_SINGLESTEP 4
123#define TIF_IRET 5 /* return with iret */
124#define TIF_MEMDIE 6
125#define TIF_FREEZE 14 /* Freezing for suspend */
126
127/* FIXME change in entry.S */
128#define TIF_KERNEL_TRACE 8 /* kernel trace active */
129
130/* true if poll_idle() is polling TIF_NEED_RESCHED */
131#define TIF_POLLING_NRFLAG 16
132
133#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
134#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
135#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
136#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
137#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)
138#define _TIF_IRET (1<<TIF_IRET)
139#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
140#define _TIF_FREEZE (1<<TIF_FREEZE)
141#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)
142
143/* work to do on interrupt/exception return */
144#define _TIF_WORK_MASK 0x0000FFFE
145/* work to do on any return to u-space */
146#define _TIF_ALLWORK_MASK 0x0000FFFF
147
148/*
149 * Thread-synchronous status.
150 *
151 * This is different from the flags in that nobody else
152 * ever touches our thread-synchronous status, so we don't
153 * have to worry about atomic accesses.
154 */
155/* FPU was used by this task this quantum (SMP) */
156#define TS_USEDFPU 0x0001
157
158#endif /* __KERNEL__ */
159#endif /* _ASM_MICROBLAZE_THREAD_INFO_H */
diff --git a/arch/microblaze/include/asm/timex.h b/arch/microblaze/include/asm/timex.h
new file mode 100644
index 000000000000..678525dc6d0b
--- /dev/null
+++ b/arch/microblaze/include/asm/timex.h
@@ -0,0 +1,18 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TIMEX_H
10#define _ASM_MICROBLAZE_TIMEX_H
11
12#define CLOCK_TICK_RATE 1000 /* Timer input freq. */
13
14typedef unsigned long cycles_t;
15
16#define get_cycles() (0)
17
18#endif /* _ASM_TIMEX_H */
diff --git a/arch/microblaze/include/asm/tlb.h b/arch/microblaze/include/asm/tlb.h
new file mode 100644
index 000000000000..d1dfe3791127
--- /dev/null
+++ b/arch/microblaze/include/asm/tlb.h
@@ -0,0 +1,16 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TLB_H
10#define _ASM_MICROBLAZE_TLB_H
11
12#define tlb_flush(tlb) do {} while (0)
13
14#include <asm-generic/tlb.h>
15
16#endif /* _ASM_MICROBLAZE_TLB_H */
diff --git a/arch/microblaze/include/asm/tlbflush.h b/arch/microblaze/include/asm/tlbflush.h
new file mode 100644
index 000000000000..d7fe7629001b
--- /dev/null
+++ b/arch/microblaze/include/asm/tlbflush.h
@@ -0,0 +1,20 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TLBFLUSH_H
10#define _ASM_MICROBLAZE_TLBFLUSH_H
11
12#define flush_tlb() BUG()
13#define flush_tlb_all() BUG()
14#define flush_tlb_mm(mm) BUG()
15#define flush_tlb_page(vma, addr) BUG()
16#define flush_tlb_range(mm, start, end) BUG()
17#define flush_tlb_pgtables(mm, start, end) BUG()
18#define flush_tlb_kernel_range(start, end) BUG()
19
20#endif /* _ASM_MICROBLAZE_TLBFLUSH_H */
diff --git a/arch/microblaze/include/asm/topology.h b/arch/microblaze/include/asm/topology.h
new file mode 100644
index 000000000000..96bcea5a9920
--- /dev/null
+++ b/arch/microblaze/include/asm/topology.h
@@ -0,0 +1,11 @@
1#include <asm-generic/topology.h>
2
3#ifndef _ASM_MICROBLAZE_TOPOLOGY_H
4#define _ASM_MICROBLAZE_TOPOLOGY_H
5
6struct device_node;
7static inline int of_node_to_nid(struct device_node *device)
8{
9 return 0;
10}
11#endif /* _ASM_MICROBLAZE_TOPOLOGY_H */
diff --git a/arch/microblaze/include/asm/types.h b/arch/microblaze/include/asm/types.h
new file mode 100644
index 000000000000..bebc018318f5
--- /dev/null
+++ b/arch/microblaze/include/asm/types.h
@@ -0,0 +1,38 @@
1/*
2 * Copyright (C) Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TYPES_H
10#define _ASM_MICROBLAZE_TYPES_H
11
12/*
13 * This file is never included by application software unless
14 * explicitly requested (e.g., via linux/types.h) in which case the
15 * application is Linux specific so (user-) name space pollution is
16 * not a major issue. However, for interoperability, libraries still
17 * need to be careful to avoid a name clashes.
18 */
19
20#include <asm-generic/int-ll64.h>
21
22# ifndef __ASSEMBLY__
23
24typedef unsigned short umode_t;
25
26/*
27 * These aren't exported outside the kernel to avoid name space clashes
28 */
29# ifdef __KERNEL__
30# define BITS_PER_LONG 32
31
32/* Dma addresses are 32-bits wide. */
33
34typedef u32 dma_addr_t;
35
36# endif/* __KERNEL__ */
37# endif /* __ASSEMBLY__ */
38#endif /* _ASM_MICROBLAZE_TYPES_H */
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h
new file mode 100644
index 000000000000..5a3ffc308e12
--- /dev/null
+++ b/arch/microblaze/include/asm/uaccess.h
@@ -0,0 +1,134 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_UACCESS_H
10#define _ASM_MICROBLAZE_UACCESS_H
11
12#ifdef __KERNEL__
13#ifndef __ASSEMBLY__
14
15#include <linux/kernel.h>
16#include <linux/errno.h>
17#include <linux/sched.h> /* RLIMIT_FSIZE */
18#include <linux/mm.h>
19
20#include <asm/mmu.h>
21#include <asm/page.h>
22#include <asm/pgtable.h>
23#include <asm/segment.h>
24#include <linux/string.h>
25
26#define VERIFY_READ 0
27#define VERIFY_WRITE 1
28
29extern int ___range_ok(unsigned long addr, unsigned long size);
30
31#define __range_ok(addr, size) \
32 ___range_ok((unsigned long)(addr), (unsigned long)(size))
33
34#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0)
35#define __access_ok(add, size) (__range_ok((addr), (size)) == 0)
36
37extern inline int bad_user_access_length(void)
38{
39 return 0;
40}
41/* FIXME this is function for optimalization -> memcpy */
42#define __get_user(var, ptr) \
43 ({ \
44 int __gu_err = 0; \
45 switch (sizeof(*(ptr))) { \
46 case 1: \
47 case 2: \
48 case 4: \
49 (var) = *(ptr); \
50 break; \
51 case 8: \
52 memcpy((void *) &(var), (ptr), 8); \
53 break; \
54 default: \
55 (var) = 0; \
56 __gu_err = __get_user_bad(); \
57 break; \
58 } \
59 __gu_err; \
60 })
61
62#define __get_user_bad() (bad_user_access_length(), (-EFAULT))
63
64#define __put_user(var, ptr) \
65 ({ \
66 int __pu_err = 0; \
67 switch (sizeof(*(ptr))) { \
68 case 1: \
69 case 2: \
70 case 4: \
71 *(ptr) = (var); \
72 break; \
73 case 8: { \
74 typeof(*(ptr)) __pu_val = var; \
75 memcpy(ptr, &__pu_val, sizeof(__pu_val));\
76 } \
77 break; \
78 default: \
79 __pu_err = __put_user_bad(); \
80 break; \
81 } \
82 __pu_err; \
83 })
84
85#define __put_user_bad() (bad_user_access_length(), (-EFAULT))
86
87#define put_user(x, ptr) __put_user(x, ptr)
88#define get_user(x, ptr) __get_user(x, ptr)
89
90#define copy_to_user(to, from, n) (memcpy(to, from, n), 0)
91#define copy_from_user(to, from, n) (memcpy(to, from, n), 0)
92
93#define __copy_to_user(to, from, n) (copy_to_user(to, from, n))
94#define __copy_from_user(to, from, n) (copy_from_user(to, from, n))
95#define __copy_to_user_inatomic(to, from, n) (__copy_to_user(to, from, n))
96#define __copy_from_user_inatomic(to, from, n) (__copy_from_user(to, from, n))
97
98#define __clear_user(addr, n) (memset((void *)addr, 0, n), 0)
99
100static inline unsigned long clear_user(void *addr, unsigned long size)
101{
102 if (access_ok(VERIFY_WRITE, addr, size))
103 size = __clear_user(addr, size);
104 return size;
105}
106
107/* Returns 0 if exception not found and fixup otherwise. */
108extern unsigned long search_exception_table(unsigned long);
109
110
111extern long strncpy_from_user(char *dst, const char __user *src, long count);
112extern long strnlen_user(const char __user *src, long count);
113extern long __strncpy_from_user(char *dst, const char __user *src, long count);
114
115/*
116 * The exception table consists of pairs of addresses: the first is the
117 * address of an instruction that is allowed to fault, and the second is
118 * the address at which the program should continue. No registers are
119 * modified, so it is entirely up to the continuation code to figure out
120 * what to do.
121 *
122 * All the routines below use bits of fixup code that are out of line
123 * with the main instruction path. This means when everything is well,
124 * we don't even have to jump over them. Further, they do not intrude
125 * on our cache or tlb entries.
126 */
127struct exception_table_entry {
128 unsigned long insn, fixup;
129};
130
131#endif /* __ASSEMBLY__ */
132#endif /* __KERNEL__ */
133
134#endif /* _ASM_MICROBLAZE_UACCESS_H */
diff --git a/arch/microblaze/include/asm/ucontext.h b/arch/microblaze/include/asm/ucontext.h
new file mode 100644
index 000000000000..11f6bb3ae3a4
--- /dev/null
+++ b/arch/microblaze/include/asm/ucontext.h
@@ -0,0 +1,22 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_UCONTEXT_H
10#define _ASM_MICROBLAZE_UCONTEXT_H
11
12#include <asm/sigcontext.h>
13
14struct ucontext {
15 unsigned long uc_flags;
16 struct ucontext *uc_link;
17 stack_t uc_stack;
18 struct sigcontext uc_mcontext;
19 sigset_t uc_sigmask; /* mask last for extensibility */
20};
21
22#endif /* _ASM_MICROBLAZE_UCONTEXT_H */
diff --git a/arch/microblaze/include/asm/unaligned.h b/arch/microblaze/include/asm/unaligned.h
new file mode 100644
index 000000000000..9d66b640c910
--- /dev/null
+++ b/arch/microblaze/include/asm/unaligned.h
@@ -0,0 +1,22 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_UNALIGNED_H
11#define _ASM_MICROBLAZE_UNALIGNED_H
12
13# ifdef __KERNEL__
14
15# include <linux/unaligned/access_ok.h>
16# include <linux/unaligned/generic.h>
17
18# define get_unaligned __get_unaligned_be
19# define put_unaligned __put_unaligned_be
20
21# endif /* __KERNEL__ */
22#endif /* _ASM_MICROBLAZE_UNALIGNED_H */
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h
new file mode 100644
index 000000000000..b5e2f5fa5c53
--- /dev/null
+++ b/arch/microblaze/include/asm/unistd.h
@@ -0,0 +1,423 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_UNISTD_H
11#define _ASM_MICROBLAZE_UNISTD_H
12
13#define __NR_restart_syscall 0 /* ok */
14#define __NR_exit 1 /* ok */
15#define __NR_fork 2 /* not for no MMU - weird */
16#define __NR_read 3 /* ok */
17#define __NR_write 4 /* ok */
18#define __NR_open 5 /* openat */
19#define __NR_close 6 /* ok */
20#define __NR_waitpid 7 /* waitid */
21#define __NR_creat 8 /* openat */
22#define __NR_link 9 /* linkat */
23#define __NR_unlink 10 /* unlinkat */
24#define __NR_execve 11 /* ok */
25#define __NR_chdir 12 /* ok */
26#define __NR_time 13 /* obsolete -> sys_gettimeofday */
27#define __NR_mknod 14 /* mknodat */
28#define __NR_chmod 15 /* fchmodat */
29#define __NR_lchown 16 /* ok */
30#define __NR_break 17 /* don't know */
31#define __NR_oldstat 18 /* remove */
32#define __NR_lseek 19 /* ok */
33#define __NR_getpid 20 /* ok */
34#define __NR_mount 21 /* ok */
35#define __NR_umount 22 /* ok */ /* use only umount2 */
36#define __NR_setuid 23 /* ok */
37#define __NR_getuid 24 /* ok */
38#define __NR_stime 25 /* obsolete -> sys_settimeofday */
39#define __NR_ptrace 26 /* ok */
40#define __NR_alarm 27 /* obsolete -> sys_setitimer */
41#define __NR_oldfstat 28 /* remove */
42#define __NR_pause 29 /* obsolete -> sys_rt_sigtimedwait */
43#define __NR_utime 30 /* obsolete -> sys_utimesat */
44#define __NR_stty 31 /* remove */
45#define __NR_gtty 32 /* remove */
46#define __NR_access 33 /* faccessat */
47/* can be implemented by sys_setpriority */
48#define __NR_nice 34
49#define __NR_ftime 35 /* remove */
50#define __NR_sync 36 /* ok */
51#define __NR_kill 37 /* ok */
52#define __NR_rename 38 /* renameat */
53#define __NR_mkdir 39 /* mkdirat */
54#define __NR_rmdir 40 /* unlinkat */
55#define __NR_dup 41 /* ok */
56#define __NR_pipe 42 /* ok */
57#define __NR_times 43 /* ok */
58#define __NR_prof 44 /* remove */
59#define __NR_brk 45 /* ok -mmu, nommu specific */
60#define __NR_setgid 46 /* ok */
61#define __NR_getgid 47 /* ok */
62#define __NR_signal 48 /* obsolete -> sys_rt_sigaction */
63#define __NR_geteuid 49 /* ok */
64#define __NR_getegid 50 /* ok */
65#define __NR_acct 51 /* add it and then I can disable it */
66#define __NR_umount2 52 /* remove */
67#define __NR_lock 53 /* remove */
68#define __NR_ioctl 54 /* ok */
69#define __NR_fcntl 55 /* ok -> 64bit version*/
70#define __NR_mpx 56 /* remove */
71#define __NR_setpgid 57 /* ok */
72#define __NR_ulimit 58 /* remove */
73#define __NR_oldolduname 59 /* remove */
74#define __NR_umask 60 /* ok */
75#define __NR_chroot 61 /* ok */
76#define __NR_ustat 62 /* obsolete -> statfs64 */
77#define __NR_dup2 63 /* ok */
78#define __NR_getppid 64 /* ok */
79#define __NR_getpgrp 65 /* obsolete -> sys_getpgid */
80#define __NR_setsid 66 /* ok */
81#define __NR_sigaction 67 /* obsolete -> rt_sigaction */
82#define __NR_sgetmask 68 /* obsolete -> sys_rt_sigprocmask */
83#define __NR_ssetmask 69 /* obsolete ->sys_rt_sigprocmask */
84#define __NR_setreuid 70 /* ok */
85#define __NR_setregid 71 /* ok */
86#define __NR_sigsuspend 72 /* obsolete -> rt_sigsuspend */
87#define __NR_sigpending 73 /* obsolete -> sys_rt_sigpending */
88#define __NR_sethostname 74 /* ok */
89#define __NR_setrlimit 75 /* ok */
90#define __NR_getrlimit 76 /* ok Back compatible 2G limited rlimit */
91#define __NR_getrusage 77 /* ok */
92#define __NR_gettimeofday 78 /* ok */
93#define __NR_settimeofday 79 /* ok */
94#define __NR_getgroups 80 /* ok */
95#define __NR_setgroups 81 /* ok */
96#define __NR_select 82 /* obsolete -> sys_pselect7 */
97#define __NR_symlink 83 /* symlinkat */
98#define __NR_oldlstat 84 /* remove */
99#define __NR_readlink 85 /* obsolete -> sys_readlinkat */
100#define __NR_uselib 86 /* remove */
101#define __NR_swapon 87 /* ok */
102#define __NR_reboot 88 /* ok */
103#define __NR_readdir 89 /* remove ? */
104#define __NR_mmap 90 /* obsolete -> sys_mmap2 */
105#define __NR_munmap 91 /* ok - mmu and nommu */
106#define __NR_truncate 92 /* ok or truncate64 */
107#define __NR_ftruncate 93 /* ok or ftruncate64 */
108#define __NR_fchmod 94 /* ok */
109#define __NR_fchown 95 /* ok */
110#define __NR_getpriority 96 /* ok */
111#define __NR_setpriority 97 /* ok */
112#define __NR_profil 98 /* remove */
113#define __NR_statfs 99 /* ok or statfs64 */
114#define __NR_fstatfs 100 /* ok or fstatfs64 */
115#define __NR_ioperm 101 /* remove */
116#define __NR_socketcall 102 /* remove */
117#define __NR_syslog 103 /* ok */
118#define __NR_setitimer 104 /* ok */
119#define __NR_getitimer 105 /* ok */
120#define __NR_stat 106 /* remove */
121#define __NR_lstat 107 /* remove */
122#define __NR_fstat 108 /* remove */
123#define __NR_olduname 109 /* remove */
124#define __NR_iopl 110 /* remove */
125#define __NR_vhangup 111 /* ok */
126#define __NR_idle 112 /* remove */
127#define __NR_vm86old 113 /* remove */
128#define __NR_wait4 114 /* obsolete -> waitid */
129#define __NR_swapoff 115 /* ok */
130#define __NR_sysinfo 116 /* ok */
131#define __NR_ipc 117 /* remove - direct call */
132#define __NR_fsync 118 /* ok */
133#define __NR_sigreturn 119 /* obsolete -> sys_rt_sigreturn */
134#define __NR_clone 120 /* ok */
135#define __NR_setdomainname 121 /* ok */
136#define __NR_uname 122 /* remove */
137#define __NR_modify_ldt 123 /* remove */
138#define __NR_adjtimex 124 /* ok */
139#define __NR_mprotect 125 /* remove */
140#define __NR_sigprocmask 126 /* obsolete -> sys_rt_sigprocmask */
141#define __NR_create_module 127 /* remove */
142#define __NR_init_module 128 /* ok */
143#define __NR_delete_module 129 /* ok */
144#define __NR_get_kernel_syms 130 /* remove */
145#define __NR_quotactl 131 /* ok */
146#define __NR_getpgid 132 /* ok */
147#define __NR_fchdir 133 /* ok */
148#define __NR_bdflush 134 /* remove */
149#define __NR_sysfs 135 /* needed for busybox */
150#define __NR_personality 136 /* ok */
151#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
152#define __NR_setfsuid 138 /* ok */
153#define __NR_setfsgid 139 /* ok */
154#define __NR__llseek 140 /* remove only lseek */
155#define __NR_getdents 141 /* ok or getdents64 */
156#define __NR__newselect 142 /* remove */
157#define __NR_flock 143 /* ok */
158#define __NR_msync 144 /* remove */
159#define __NR_readv 145 /* ok */
160#define __NR_writev 146 /* ok */
161#define __NR_getsid 147 /* ok */
162#define __NR_fdatasync 148 /* ok */
163#define __NR__sysctl 149 /* remove */
164#define __NR_mlock 150 /* ok - nommu or mmu */
165#define __NR_munlock 151 /* ok - nommu or mmu */
166#define __NR_mlockall 152 /* ok - nommu or mmu */
167#define __NR_munlockall 153 /* ok - nommu or mmu */
168#define __NR_sched_setparam 154 /* ok */
169#define __NR_sched_getparam 155 /* ok */
170#define __NR_sched_setscheduler 156 /* ok */
171#define __NR_sched_getscheduler 157 /* ok */
172#define __NR_sched_yield 158 /* ok */
173#define __NR_sched_get_priority_max 159 /* ok */
174#define __NR_sched_get_priority_min 160 /* ok */
175#define __NR_sched_rr_get_interval 161 /* ok */
176#define __NR_nanosleep 162 /* ok */
177#define __NR_mremap 163 /* ok - nommu or mmu */
178#define __NR_setresuid 164 /* ok */
179#define __NR_getresuid 165 /* ok */
180#define __NR_vm86 166 /* remove */
181#define __NR_query_module 167 /* ok */
182#define __NR_poll 168 /* obsolete -> sys_ppoll */
183#define __NR_nfsservctl 169 /* ok */
184#define __NR_setresgid 170 /* ok */
185#define __NR_getresgid 171 /* ok */
186#define __NR_prctl 172 /* ok */
187#define __NR_rt_sigreturn 173 /* ok */
188#define __NR_rt_sigaction 174 /* ok */
189#define __NR_rt_sigprocmask 175 /* ok */
190#define __NR_rt_sigpending 176 /* ok */
191#define __NR_rt_sigtimedwait 177 /* ok */
192#define __NR_rt_sigqueueinfo 178 /* ok */
193#define __NR_rt_sigsuspend 179 /* ok */
194#define __NR_pread64 180 /* ok */
195#define __NR_pwrite64 181 /* ok */
196#define __NR_chown 182 /* obsolete -> fchownat */
197#define __NR_getcwd 183 /* ok */
198#define __NR_capget 184 /* ok */
199#define __NR_capset 185 /* ok */
200#define __NR_sigaltstack 186 /* remove */
201#define __NR_sendfile 187 /* ok -> exist 64bit version*/
202#define __NR_getpmsg 188 /* remove */
203/* remove - some people actually want streams */
204#define __NR_putpmsg 189
205/* for noMMU - group with clone -> maybe remove */
206#define __NR_vfork 190
207#define __NR_ugetrlimit 191 /* remove - SuS compliant getrlimit */
208#define __NR_mmap2 192 /* ok */
209#define __NR_truncate64 193 /* ok */
210#define __NR_ftruncate64 194 /* ok */
211#define __NR_stat64 195 /* remove _ARCH_WANT_STAT64 */
212#define __NR_lstat64 196 /* remove _ARCH_WANT_STAT64 */
213#define __NR_fstat64 197 /* remove _ARCH_WANT_STAT64 */
214#define __NR_lchown32 198 /* ok - without 32 */
215#define __NR_getuid32 199 /* ok - without 32 */
216#define __NR_getgid32 200 /* ok - without 32 */
217#define __NR_geteuid32 201 /* ok - without 32 */
218#define __NR_getegid32 202 /* ok - without 32 */
219#define __NR_setreuid32 203 /* ok - without 32 */
220#define __NR_setregid32 204 /* ok - without 32 */
221#define __NR_getgroups32 205 /* ok - without 32 */
222#define __NR_setgroups32 206 /* ok - without 32 */
223#define __NR_fchown32 207 /* ok - without 32 */
224#define __NR_setresuid32 208 /* ok - without 32 */
225#define __NR_getresuid32 209 /* ok - without 32 */
226#define __NR_setresgid32 210 /* ok - without 32 */
227#define __NR_getresgid32 211 /* ok - without 32 */
228#define __NR_chown32 212 /* ok - without 32 -obsolete -> fchownat */
229#define __NR_setuid32 213 /* ok - without 32 */
230#define __NR_setgid32 214 /* ok - without 32 */
231#define __NR_setfsuid32 215 /* ok - without 32 */
232#define __NR_setfsgid32 216 /* ok - without 32 */
233#define __NR_pivot_root 217 /* ok */
234#define __NR_mincore 218 /* ok */
235#define __NR_madvise 219 /* ok */
236#define __NR_getdents64 220 /* ok */
237#define __NR_fcntl64 221 /* ok */
238/* 223 is unused */
239#define __NR_gettid 224 /* ok */
240#define __NR_readahead 225 /* ok */
241#define __NR_setxattr 226 /* ok */
242#define __NR_lsetxattr 227 /* ok */
243#define __NR_fsetxattr 228 /* ok */
244#define __NR_getxattr 229 /* ok */
245#define __NR_lgetxattr 230 /* ok */
246#define __NR_fgetxattr 231 /* ok */
247#define __NR_listxattr 232 /* ok */
248#define __NR_llistxattr 233 /* ok */
249#define __NR_flistxattr 234 /* ok */
250#define __NR_removexattr 235 /* ok */
251#define __NR_lremovexattr 236 /* ok */
252#define __NR_fremovexattr 237 /* ok */
253#define __NR_tkill 238 /* ok */
254#define __NR_sendfile64 239 /* ok */
255#define __NR_futex 240 /* ok */
256#define __NR_sched_setaffinity 241 /* ok */
257#define __NR_sched_getaffinity 242 /* ok */
258#define __NR_set_thread_area 243 /* remove */
259#define __NR_get_thread_area 244 /* remove */
260#define __NR_io_setup 245 /* ok */
261#define __NR_io_destroy 246 /* ok */
262#define __NR_io_getevents 247 /* ok */
263#define __NR_io_submit 248 /* ok */
264#define __NR_io_cancel 249 /* ok */
265#define __NR_fadvise64 250 /* remove -> sys_fadvise64_64 */
266/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
267#define __NR_exit_group 252 /* ok */
268#define __NR_lookup_dcookie 253 /* ok */
269#define __NR_epoll_create 254 /* ok */
270#define __NR_epoll_ctl 255 /* ok */
271#define __NR_epoll_wait 256 /* obsolete -> sys_epoll_pwait */
272#define __NR_remap_file_pages 257 /* only for mmu */
273#define __NR_set_tid_address 258 /* ok */
274#define __NR_timer_create 259 /* ok */
275#define __NR_timer_settime (__NR_timer_create+1) /* 260 */ /* ok */
276#define __NR_timer_gettime (__NR_timer_create+2) /* 261 */ /* ok */
277#define __NR_timer_getoverrun (__NR_timer_create+3) /* 262 */ /* ok */
278#define __NR_timer_delete (__NR_timer_create+4) /* 263 */ /* ok */
279#define __NR_clock_settime (__NR_timer_create+5) /* 264 */ /* ok */
280#define __NR_clock_gettime (__NR_timer_create+6) /* 265 */ /* ok */
281#define __NR_clock_getres (__NR_timer_create+7) /* 266 */ /* ok */
282#define __NR_clock_nanosleep (__NR_timer_create+8) /* 267 */ /* ok */
283#define __NR_statfs64 268 /* ok */
284#define __NR_fstatfs64 269 /* ok */
285#define __NR_tgkill 270 /* ok */
286#define __NR_utimes 271 /* obsolete -> sys_futimesat */
287#define __NR_fadvise64_64 272 /* ok */
288#define __NR_vserver 273 /* ok */
289#define __NR_mbind 274 /* only for mmu */
290#define __NR_get_mempolicy 275 /* only for mmu */
291#define __NR_set_mempolicy 276 /* only for mmu */
292#define __NR_mq_open 277 /* ok */
293#define __NR_mq_unlink (__NR_mq_open+1) /* 278 */ /* ok */
294#define __NR_mq_timedsend (__NR_mq_open+2) /* 279 */ /* ok */
295#define __NR_mq_timedreceive (__NR_mq_open+3) /* 280 */ /* ok */
296#define __NR_mq_notify (__NR_mq_open+4) /* 281 */ /* ok */
297#define __NR_mq_getsetattr (__NR_mq_open+5) /* 282 */ /* ok */
298#define __NR_kexec_load 283 /* ok */
299#define __NR_waitid 284 /* ok */
300/* #define __NR_sys_setaltroot 285 */
301#define __NR_add_key 286 /* ok */
302#define __NR_request_key 287 /* ok */
303#define __NR_keyctl 288 /* ok */
304#define __NR_ioprio_set 289 /* ok */
305#define __NR_ioprio_get 290 /* ok */
306#define __NR_inotify_init 291 /* ok */
307#define __NR_inotify_add_watch 292 /* ok */
308#define __NR_inotify_rm_watch 293 /* ok */
309#define __NR_migrate_pages 294 /* mmu */
310#define __NR_openat 295 /* ok */
311#define __NR_mkdirat 296 /* ok */
312#define __NR_mknodat 297 /* ok */
313#define __NR_fchownat 298 /* ok */
314#define __NR_futimesat 299 /* obsolete -> sys_utimesat */
315#define __NR_fstatat64 300 /* stat64 */
316#define __NR_unlinkat 301 /* ok */
317#define __NR_renameat 302 /* ok */
318#define __NR_linkat 303 /* ok */
319#define __NR_symlinkat 304 /* ok */
320#define __NR_readlinkat 305 /* ok */
321#define __NR_fchmodat 306 /* ok */
322#define __NR_faccessat 307 /* ok */
323#define __NR_pselect6 308 /* obsolete -> sys_pselect7 */
324#define __NR_ppoll 309 /* ok */
325#define __NR_unshare 310 /* ok */
326#define __NR_set_robust_list 311 /* ok */
327#define __NR_get_robust_list 312 /* ok */
328#define __NR_splice 313 /* ok */
329#define __NR_sync_file_range 314 /* ok */
330#define __NR_tee 315 /* ok */
331#define __NR_vmsplice 316 /* ok */
332#define __NR_move_pages 317 /* mmu */
333#define __NR_getcpu 318 /* ok */
334#define __NR_epoll_pwait 319 /* ok */
335#define __NR_utimensat 320 /* ok */
336#define __NR_signalfd 321 /* ok */
337#define __NR_timerfd_create 322 /* ok */
338#define __NR_eventfd 323 /* ok */
339#define __NR_fallocate 324 /* ok */
340#define __NR_semtimedop 325 /* ok - semaphore group */
341#define __NR_timerfd_settime 326 /* ok */
342#define __NR_timerfd_gettime 327 /* ok */
343/* sysv ipc syscalls */
344#define __NR_semctl 328 /* ok */
345#define __NR_semget 329 /* ok */
346#define __NR_semop 330 /* ok */
347#define __NR_msgctl 331 /* ok */
348#define __NR_msgget 332 /* ok */
349#define __NR_msgrcv 333 /* ok */
350#define __NR_msgsnd 334 /* ok */
351#define __NR_shmat 335 /* ok */
352#define __NR_shmctl 336 /* ok */
353#define __NR_shmdt 337 /* ok */
354#define __NR_shmget 338 /* ok */
355
356
357#define __NR_signalfd4 339 /* new */
358#define __NR_eventfd2 340 /* new */
359#define __NR_epoll_create1 341 /* new */
360#define __NR_dup3 342 /* new */
361#define __NR_pipe2 343 /* new */
362#define __NR_inotify_init1 344 /* new */
363#define __NR_socket 345 /* new */
364#define __NR_socketpair 346 /* new */
365#define __NR_bind 347 /* new */
366#define __NR_listen 348 /* new */
367#define __NR_accept 349 /* new */
368#define __NR_connect 350 /* new */
369#define __NR_getsockname 351 /* new */
370#define __NR_getpeername 352 /* new */
371#define __NR_sendto 353 /* new */
372#define __NR_send 354 /* new */
373#define __NR_recvfrom 355 /* new */
374#define __NR_recv 356 /* new */
375#define __NR_setsockopt 357 /* new */
376#define __NR_getsockopt 358 /* new */
377#define __NR_shutdown 359 /* new */
378#define __NR_sendmsg 360 /* new */
379#define __NR_recvmsg 361 /* new */
380#define __NR_accept04 362 /* new */
381#define __NR_preadv 363 /* new */
382#define __NR_pwritev 364 /* new */
383
384#define __NR_syscalls 365
385
386#ifdef __KERNEL__
387#ifndef __ASSEMBLY__
388
389#define __ARCH_WANT_IPC_PARSE_VERSION
390/* #define __ARCH_WANT_OLD_READDIR */
391/* #define __ARCH_WANT_OLD_STAT */
392#define __ARCH_WANT_STAT64
393#define __ARCH_WANT_SYS_ALARM
394#define __ARCH_WANT_SYS_GETHOSTNAME
395#define __ARCH_WANT_SYS_PAUSE
396#define __ARCH_WANT_SYS_SGETMASK
397#define __ARCH_WANT_SYS_SIGNAL
398#define __ARCH_WANT_SYS_TIME
399#define __ARCH_WANT_SYS_UTIME
400#define __ARCH_WANT_SYS_WAITPID
401#define __ARCH_WANT_SYS_SOCKETCALL
402#define __ARCH_WANT_SYS_FADVISE64
403#define __ARCH_WANT_SYS_GETPGRP
404#define __ARCH_WANT_SYS_LLSEEK
405#define __ARCH_WANT_SYS_NICE
406/* #define __ARCH_WANT_SYS_OLD_GETRLIMIT */
407#define __ARCH_WANT_SYS_OLDUMOUNT
408#define __ARCH_WANT_SYS_SIGPENDING
409#define __ARCH_WANT_SYS_SIGPROCMASK
410#define __ARCH_WANT_SYS_RT_SIGACTION
411/* #define __ARCH_WANT_SYS_RT_SIGSUSPEND */
412
413/*
414 * "Conditional" syscalls
415 *
416 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
417 * but it doesn't work on all toolchains, so we just do it by hand
418 */
419#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
420
421#endif /* __ASSEMBLY__ */
422#endif /* __KERNEL__ */
423#endif /* _ASM_MICROBLAZE_UNISTD_H */
diff --git a/arch/microblaze/include/asm/user.h b/arch/microblaze/include/asm/user.h
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/arch/microblaze/include/asm/user.h
@@ -0,0 +1 @@
diff --git a/arch/microblaze/include/asm/vga.h b/arch/microblaze/include/asm/vga.h
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/arch/microblaze/include/asm/vga.h
@@ -0,0 +1 @@
diff --git a/include/asm-mn10300/xor.h b/arch/microblaze/include/asm/xor.h
index c82eb12a5b18..c82eb12a5b18 100644
--- a/include/asm-mn10300/xor.h
+++ b/arch/microblaze/include/asm/xor.h
diff --git a/arch/microblaze/kernel/Makefile b/arch/microblaze/kernel/Makefile
new file mode 100644
index 000000000000..da94bec4ecba
--- /dev/null
+++ b/arch/microblaze/kernel/Makefile
@@ -0,0 +1,19 @@
1#
2# Makefile
3#
4
5extra-y := head.o vmlinux.lds
6
7obj-y += exceptions.o \
8 hw_exception_handler.o init_task.o intc.o irq.o of_device.o \
9 of_platform.o process.o prom.o prom_parse.o ptrace.o \
10 setup.o signal.o sys_microblaze.o timer.o traps.o
11
12obj-y += cpu/
13
14obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
15obj-$(CONFIG_SELFMOD) += selfmod.o
16obj-$(CONFIG_HEART_BEAT) += heartbeat.o
17obj-$(CONFIG_MODULES) += microblaze_ksyms.o module.o
18
19obj-y += entry$(MMUEXT).o
diff --git a/arch/microblaze/kernel/asm-offsets.c b/arch/microblaze/kernel/asm-offsets.c
new file mode 100644
index 000000000000..aabd9e9423a6
--- /dev/null
+++ b/arch/microblaze/kernel/asm-offsets.c
@@ -0,0 +1,115 @@
1/*
2 * Copyright (C) 2007-2009 PetaLogix
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#include <linux/init.h>
11#include <linux/stddef.h>
12#include <linux/sched.h>
13#include <linux/kernel_stat.h>
14#include <linux/ptrace.h>
15#include <linux/hardirq.h>
16#include <linux/thread_info.h>
17#include <linux/kbuild.h>
18
19int main(int argc, char *argv[])
20{
21 /* struct pt_regs */
22 DEFINE(PT_SIZE, sizeof(struct pt_regs));
23 DEFINE(PT_MSR, offsetof(struct pt_regs, msr));
24 DEFINE(PT_EAR, offsetof(struct pt_regs, ear));
25 DEFINE(PT_ESR, offsetof(struct pt_regs, esr));
26 DEFINE(PT_FSR, offsetof(struct pt_regs, fsr));
27 DEFINE(PT_PC, offsetof(struct pt_regs, pc));
28 DEFINE(PT_R0, offsetof(struct pt_regs, r0));
29 DEFINE(PT_R1, offsetof(struct pt_regs, r1));
30 DEFINE(PT_R2, offsetof(struct pt_regs, r2));
31 DEFINE(PT_R3, offsetof(struct pt_regs, r3));
32 DEFINE(PT_R4, offsetof(struct pt_regs, r4));
33 DEFINE(PT_R5, offsetof(struct pt_regs, r5));
34 DEFINE(PT_R6, offsetof(struct pt_regs, r6));
35 DEFINE(PT_R7, offsetof(struct pt_regs, r7));
36 DEFINE(PT_R8, offsetof(struct pt_regs, r8));
37 DEFINE(PT_R9, offsetof(struct pt_regs, r9));
38 DEFINE(PT_R10, offsetof(struct pt_regs, r10));
39 DEFINE(PT_R11, offsetof(struct pt_regs, r11));
40 DEFINE(PT_R12, offsetof(struct pt_regs, r12));
41 DEFINE(PT_R13, offsetof(struct pt_regs, r13));
42 DEFINE(PT_R14, offsetof(struct pt_regs, r14));
43 DEFINE(PT_R15, offsetof(struct pt_regs, r15));
44 DEFINE(PT_R16, offsetof(struct pt_regs, r16));
45 DEFINE(PT_R17, offsetof(struct pt_regs, r17));
46 DEFINE(PT_R18, offsetof(struct pt_regs, r18));
47 DEFINE(PT_R19, offsetof(struct pt_regs, r19));
48 DEFINE(PT_R20, offsetof(struct pt_regs, r20));
49 DEFINE(PT_R21, offsetof(struct pt_regs, r21));
50 DEFINE(PT_R22, offsetof(struct pt_regs, r22));
51 DEFINE(PT_R23, offsetof(struct pt_regs, r23));
52 DEFINE(PT_R24, offsetof(struct pt_regs, r24));
53 DEFINE(PT_R25, offsetof(struct pt_regs, r25));
54 DEFINE(PT_R26, offsetof(struct pt_regs, r26));
55 DEFINE(PT_R27, offsetof(struct pt_regs, r27));
56 DEFINE(PT_R28, offsetof(struct pt_regs, r28));
57 DEFINE(PT_R29, offsetof(struct pt_regs, r29));
58 DEFINE(PT_R30, offsetof(struct pt_regs, r30));
59 DEFINE(PT_R31, offsetof(struct pt_regs, r31));
60 DEFINE(PT_MODE, offsetof(struct pt_regs, pt_mode));
61 BLANK();
62
63 /* Magic offsets for PTRACE PEEK/POKE etc */
64 DEFINE(PT_TEXT_ADDR, sizeof(struct pt_regs) + 1);
65 DEFINE(PT_TEXT_LEN, sizeof(struct pt_regs) + 2);
66 DEFINE(PT_DATA_ADDR, sizeof(struct pt_regs) + 3);
67 BLANK();
68
69 /* struct task_struct */
70 DEFINE(TS_THREAD_INFO, offsetof(struct task_struct, stack));
71
72 /* struct thread_info */
73 DEFINE(TI_TASK, offsetof(struct thread_info, task));
74 DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain));
75 DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
76 DEFINE(TI_STATUS, offsetof(struct thread_info, status));
77 DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
78 DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count));
79 DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit));
80 DEFINE(TI_RESTART_BLOCK, offsetof(struct thread_info, restart_block));
81 DEFINE(TI_CPU_CONTEXT, offsetof(struct thread_info, cpu_context));
82 BLANK();
83
84 /* struct cpu_context */
85 DEFINE(CC_R1, offsetof(struct cpu_context, r1)); /* r1 */
86 DEFINE(CC_R2, offsetof(struct cpu_context, r2));
87 /* dedicated registers */
88 DEFINE(CC_R13, offsetof(struct cpu_context, r13));
89 DEFINE(CC_R14, offsetof(struct cpu_context, r14));
90 DEFINE(CC_R15, offsetof(struct cpu_context, r15));
91 DEFINE(CC_R16, offsetof(struct cpu_context, r16));
92 DEFINE(CC_R17, offsetof(struct cpu_context, r17));
93 DEFINE(CC_R18, offsetof(struct cpu_context, r18));
94 /* non-volatile registers */
95 DEFINE(CC_R19, offsetof(struct cpu_context, r19));
96 DEFINE(CC_R20, offsetof(struct cpu_context, r20));
97 DEFINE(CC_R21, offsetof(struct cpu_context, r21));
98 DEFINE(CC_R22, offsetof(struct cpu_context, r22));
99 DEFINE(CC_R23, offsetof(struct cpu_context, r23));
100 DEFINE(CC_R24, offsetof(struct cpu_context, r24));
101 DEFINE(CC_R25, offsetof(struct cpu_context, r25));
102 DEFINE(CC_R26, offsetof(struct cpu_context, r26));
103 DEFINE(CC_R27, offsetof(struct cpu_context, r27));
104 DEFINE(CC_R28, offsetof(struct cpu_context, r28));
105 DEFINE(CC_R29, offsetof(struct cpu_context, r29));
106 DEFINE(CC_R30, offsetof(struct cpu_context, r30));
107 /* special purpose registers */
108 DEFINE(CC_MSR, offsetof(struct cpu_context, msr));
109 DEFINE(CC_EAR, offsetof(struct cpu_context, ear));
110 DEFINE(CC_ESR, offsetof(struct cpu_context, esr));
111 DEFINE(CC_FSR, offsetof(struct cpu_context, fsr));
112 BLANK();
113
114 return 0;
115}
diff --git a/arch/microblaze/kernel/cpu/Makefile b/arch/microblaze/kernel/cpu/Makefile
new file mode 100644
index 000000000000..20646e549271
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/Makefile
@@ -0,0 +1,8 @@
1#
2# Build the appropriate CPU version support
3#
4
5EXTRA_CFLAGS += -DCPU_MAJOR=$(CPU_MAJOR) -DCPU_MINOR=$(CPU_MINOR) \
6 -DCPU_REV=$(CPU_REV)
7
8obj-y += cache.o cpuinfo.o cpuinfo-pvr-full.o cpuinfo-static.o mb.o pvr.o
diff --git a/arch/microblaze/kernel/cpu/cache.c b/arch/microblaze/kernel/cpu/cache.c
new file mode 100644
index 000000000000..af866a450125
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cache.c
@@ -0,0 +1,255 @@
1/*
2 * Cache control for MicroBlaze cache memories
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#include <asm/cacheflush.h>
14#include <linux/cache.h>
15#include <asm/cpuinfo.h>
16
17/* Exported functions */
18
19void _enable_icache(void)
20{
21 if (cpuinfo.use_icache) {
22#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
23 __asm__ __volatile__ (" \
24 msrset r0, %0; \
25 nop; " \
26 : \
27 : "i" (MSR_ICE) \
28 : "memory");
29#else
30 __asm__ __volatile__ (" \
31 mfs r12, rmsr; \
32 nop; \
33 ori r12, r12, %0; \
34 mts rmsr, r12; \
35 nop; " \
36 : \
37 : "i" (MSR_ICE) \
38 : "memory", "r12");
39#endif
40 }
41}
42
43void _disable_icache(void)
44{
45 if (cpuinfo.use_icache) {
46#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
47 __asm__ __volatile__ (" \
48 msrclr r0, %0; \
49 nop; " \
50 : \
51 : "i" (MSR_ICE) \
52 : "memory");
53#else
54 __asm__ __volatile__ (" \
55 mfs r12, rmsr; \
56 nop; \
57 andi r12, r12, ~%0; \
58 mts rmsr, r12; \
59 nop; " \
60 : \
61 : "i" (MSR_ICE) \
62 : "memory", "r12");
63#endif
64 }
65}
66
67void _invalidate_icache(unsigned int addr)
68{
69 if (cpuinfo.use_icache) {
70 __asm__ __volatile__ (" \
71 wic %0, r0" \
72 : \
73 : "r" (addr));
74 }
75}
76
77void _enable_dcache(void)
78{
79 if (cpuinfo.use_dcache) {
80#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
81 __asm__ __volatile__ (" \
82 msrset r0, %0; \
83 nop; " \
84 : \
85 : "i" (MSR_DCE) \
86 : "memory");
87#else
88 __asm__ __volatile__ (" \
89 mfs r12, rmsr; \
90 nop; \
91 ori r12, r12, %0; \
92 mts rmsr, r12; \
93 nop; " \
94 : \
95 : "i" (MSR_DCE) \
96 : "memory", "r12");
97#endif
98 }
99}
100
101void _disable_dcache(void)
102{
103#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
104 __asm__ __volatile__ (" \
105 msrclr r0, %0; \
106 nop; " \
107 : \
108 : "i" (MSR_DCE) \
109 : "memory");
110#else
111 __asm__ __volatile__ (" \
112 mfs r12, rmsr; \
113 nop; \
114 andi r12, r12, ~%0; \
115 mts rmsr, r12; \
116 nop; " \
117 : \
118 : "i" (MSR_DCE) \
119 : "memory", "r12");
120#endif
121}
122
123void _invalidate_dcache(unsigned int addr)
124{
125 __asm__ __volatile__ (" \
126 wdc %0, r0" \
127 : \
128 : "r" (addr));
129}
130
131void __invalidate_icache_all(void)
132{
133 unsigned int i;
134 unsigned flags;
135
136 if (cpuinfo.use_icache) {
137 local_irq_save(flags);
138 __disable_icache();
139
140 /* Just loop through cache size and invalidate, no need to add
141 CACHE_BASE address */
142 for (i = 0; i < cpuinfo.icache_size;
143 i += cpuinfo.icache_line)
144 __invalidate_icache(i);
145
146 __enable_icache();
147 local_irq_restore(flags);
148 }
149}
150
151void __invalidate_icache_range(unsigned long start, unsigned long end)
152{
153 unsigned int i;
154 unsigned flags;
155 unsigned int align;
156
157 if (cpuinfo.use_icache) {
158 /*
159 * No need to cover entire cache range,
160 * just cover cache footprint
161 */
162 end = min(start + cpuinfo.icache_size, end);
163 align = ~(cpuinfo.icache_line - 1);
164 start &= align; /* Make sure we are aligned */
165 /* Push end up to the next cache line */
166 end = ((end & align) + cpuinfo.icache_line);
167
168 local_irq_save(flags);
169 __disable_icache();
170
171 for (i = start; i < end; i += cpuinfo.icache_line)
172 __invalidate_icache(i);
173
174 __enable_icache();
175 local_irq_restore(flags);
176 }
177}
178
179void __invalidate_icache_page(struct vm_area_struct *vma, struct page *page)
180{
181 __invalidate_icache_all();
182}
183
184void __invalidate_icache_user_range(struct vm_area_struct *vma,
185 struct page *page, unsigned long adr,
186 int len)
187{
188 __invalidate_icache_all();
189}
190
191void __invalidate_cache_sigtramp(unsigned long addr)
192{
193 __invalidate_icache_range(addr, addr + 8);
194}
195
196void __invalidate_dcache_all(void)
197{
198 unsigned int i;
199 unsigned flags;
200
201 if (cpuinfo.use_dcache) {
202 local_irq_save(flags);
203 __disable_dcache();
204
205 /*
206 * Just loop through cache size and invalidate,
207 * no need to add CACHE_BASE address
208 */
209 for (i = 0; i < cpuinfo.dcache_size;
210 i += cpuinfo.dcache_line)
211 __invalidate_dcache(i);
212
213 __enable_dcache();
214 local_irq_restore(flags);
215 }
216}
217
218void __invalidate_dcache_range(unsigned long start, unsigned long end)
219{
220 unsigned int i;
221 unsigned flags;
222 unsigned int align;
223
224 if (cpuinfo.use_dcache) {
225 /*
226 * No need to cover entire cache range,
227 * just cover cache footprint
228 */
229 end = min(start + cpuinfo.dcache_size, end);
230 align = ~(cpuinfo.dcache_line - 1);
231 start &= align; /* Make sure we are aligned */
232 /* Push end up to the next cache line */
233 end = ((end & align) + cpuinfo.dcache_line);
234 local_irq_save(flags);
235 __disable_dcache();
236
237 for (i = start; i < end; i += cpuinfo.dcache_line)
238 __invalidate_dcache(i);
239
240 __enable_dcache();
241 local_irq_restore(flags);
242 }
243}
244
245void __invalidate_dcache_page(struct vm_area_struct *vma, struct page *page)
246{
247 __invalidate_dcache_all();
248}
249
250void __invalidate_dcache_user_range(struct vm_area_struct *vma,
251 struct page *page, unsigned long adr,
252 int len)
253{
254 __invalidate_dcache_all();
255}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c b/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c
new file mode 100644
index 000000000000..153f57c57b6d
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c
@@ -0,0 +1,106 @@
1/*
2 * Support for MicroBlaze PVR (processor version register)
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/string.h>
15#include <asm/pvr.h>
16#include <asm/cpuinfo.h>
17
18/*
19 * Helper macro to map between fields in our struct cpuinfo, and
20 * the PVR macros in pvr.h.
21 */
22
23#define CI(c, p) { ci->c = PVR_##p(pvr); }
24#define err_printk(x) \
25 early_printk("ERROR: Microblaze " x " - different for PVR and DTS\n");
26
27void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu)
28{
29 struct pvr_s pvr;
30 int temp; /* for saving temp value */
31 get_pvr(&pvr);
32
33 CI(ver_code, VERSION);
34 if (!ci->ver_code) {
35 printk(KERN_ERR "ERROR: MB has broken PVR regs "
36 "-> use DTS setting\n");
37 return;
38 }
39
40 temp = PVR_USE_BARREL(pvr) | PVR_USE_MSR_INSTR(pvr) |\
41 PVR_USE_PCMP_INSTR(pvr) | PVR_USE_DIV(pvr);
42 if (ci->use_instr != temp)
43 err_printk("BARREL, MSR, PCMP or DIV");
44 ci->use_instr = temp;
45
46 temp = PVR_USE_HW_MUL(pvr) | PVR_USE_MUL64(pvr);
47 if (ci->use_mult != temp)
48 err_printk("HW_MUL");
49 ci->use_mult = temp;
50
51 temp = PVR_USE_FPU(pvr) | PVR_USE_FPU2(pvr);
52 if (ci->use_fpu != temp)
53 err_printk("HW_FPU");
54 ci->use_fpu = temp;
55
56 ci->use_exc = PVR_OPCODE_0x0_ILLEGAL(pvr) |\
57 PVR_UNALIGNED_EXCEPTION(pvr) |\
58 PVR_ILL_OPCODE_EXCEPTION(pvr) |\
59 PVR_IOPB_BUS_EXCEPTION(pvr) |\
60 PVR_DOPB_BUS_EXCEPTION(pvr) |\
61 PVR_DIV_ZERO_EXCEPTION(pvr) |\
62 PVR_FPU_EXCEPTION(pvr) |\
63 PVR_FSL_EXCEPTION(pvr);
64
65 CI(pvr_user1, USER1);
66 CI(pvr_user2, USER2);
67
68 CI(mmu, USE_MMU);
69
70 CI(use_icache, USE_ICACHE);
71 CI(icache_tagbits, ICACHE_ADDR_TAG_BITS);
72 CI(icache_write, ICACHE_ALLOW_WR);
73 CI(icache_line, ICACHE_LINE_LEN);
74 CI(icache_size, ICACHE_BYTE_SIZE);
75 CI(icache_base, ICACHE_BASEADDR);
76 CI(icache_high, ICACHE_HIGHADDR);
77
78 CI(use_dcache, USE_DCACHE);
79 CI(dcache_tagbits, DCACHE_ADDR_TAG_BITS);
80 CI(dcache_write, DCACHE_ALLOW_WR);
81 CI(dcache_line, DCACHE_LINE_LEN);
82 CI(dcache_size, DCACHE_BYTE_SIZE);
83 CI(dcache_base, DCACHE_BASEADDR);
84 CI(dcache_high, DCACHE_HIGHADDR);
85
86 CI(use_dopb, D_OPB);
87 CI(use_iopb, I_OPB);
88 CI(use_dlmb, D_LMB);
89 CI(use_ilmb, I_LMB);
90 CI(num_fsl, FSL_LINKS);
91
92 CI(irq_edge, INTERRUPT_IS_EDGE);
93 CI(irq_positive, EDGE_IS_POSITIVE);
94
95 CI(area_optimised, AREA_OPTIMISED);
96
97 CI(hw_debug, DEBUG_ENABLED);
98 CI(num_pc_brk, NUMBER_OF_PC_BRK);
99 CI(num_rd_brk, NUMBER_OF_RD_ADDR_BRK);
100 CI(num_wr_brk, NUMBER_OF_WR_ADDR_BRK);
101
102 CI(fpga_family_code, TARGET_FAMILY);
103
104 /* take timebase-frequency from DTS */
105 ci->cpu_clock_freq = fcpu(cpu, "timebase-frequency");
106}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo-static.c b/arch/microblaze/kernel/cpu/cpuinfo-static.c
new file mode 100644
index 000000000000..cfe44effdb77
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cpuinfo-static.c
@@ -0,0 +1,144 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/string.h>
14#include <asm/cpuinfo.h>
15#include <asm/pvr.h>
16
17const static char family_string[] = CONFIG_XILINX_MICROBLAZE0_FAMILY;
18const static char cpu_ver_string[] = CONFIG_XILINX_MICROBLAZE0_HW_VER;
19
20#define err_printk(x) \
21 early_printk("ERROR: Microblaze " x "- different for kernel and DTS\n");
22
23void __init set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu)
24{
25 int i = 0;
26
27 ci->use_instr =
28 (fcpu(cpu, "xlnx,use-barrel") ? PVR0_USE_BARREL_MASK : 0) |
29 (fcpu(cpu, "xlnx,use-msr-instr") ? PVR2_USE_MSR_INSTR : 0) |
30 (fcpu(cpu, "xlnx,use-pcmp-instr") ? PVR2_USE_PCMP_INSTR : 0) |
31 (fcpu(cpu, "xlnx,use-div") ? PVR0_USE_DIV_MASK : 0);
32 if (CONFIG_XILINX_MICROBLAZE0_USE_BARREL)
33 i |= PVR0_USE_BARREL_MASK;
34 if (CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR)
35 i |= PVR2_USE_MSR_INSTR;
36 if (CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR)
37 i |= PVR2_USE_PCMP_INSTR;
38 if (CONFIG_XILINX_MICROBLAZE0_USE_DIV)
39 i |= PVR0_USE_DIV_MASK;
40 if (ci->use_instr != i)
41 err_printk("BARREL, MSR, PCMP or DIV");
42
43 ci->use_mult = fcpu(cpu, "xlnx,use-hw-mul");
44 if (ci->use_mult != CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)
45 err_printk("HW_MUL");
46 ci->use_mult =
47 (ci->use_mult > 1 ?
48 (PVR2_USE_MUL64_MASK | PVR0_USE_HW_MUL_MASK) :
49 (ci->use_mult == 1 ? PVR0_USE_HW_MUL_MASK : 0));
50
51 ci->use_fpu = fcpu(cpu, "xlnx,use-fpu");
52 if (ci->use_fpu != CONFIG_XILINX_MICROBLAZE0_USE_FPU)
53 err_printk("HW_FPU");
54 ci->use_fpu = (ci->use_fpu > 1 ?
55 (PVR2_USE_FPU2_MASK | PVR0_USE_FPU_MASK) :
56 (ci->use_fpu == 1 ? PVR0_USE_FPU_MASK : 0));
57
58 ci->use_exc =
59 (fcpu(cpu, "xlnx,unaligned-exceptions") ?
60 PVR2_UNALIGNED_EXC_MASK : 0) |
61 (fcpu(cpu, "xlnx,ill-opcode-exception") ?
62 PVR2_ILL_OPCODE_EXC_MASK : 0) |
63 (fcpu(cpu, "xlnx,iopb-bus-exception") ?
64 PVR2_IOPB_BUS_EXC_MASK : 0) |
65 (fcpu(cpu, "xlnx,dopb-bus-exception") ?
66 PVR2_DOPB_BUS_EXC_MASK : 0) |
67 (fcpu(cpu, "xlnx,div-zero-exception") ?
68 PVR2_DIV_ZERO_EXC_MASK : 0) |
69 (fcpu(cpu, "xlnx,fpu-exception") ? PVR2_FPU_EXC_MASK : 0) |
70 (fcpu(cpu, "xlnx,fsl-exception") ? PVR2_USE_EXTEND_FSL : 0);
71
72 ci->use_icache = fcpu(cpu, "xlnx,use-icache");
73 ci->icache_tagbits = fcpu(cpu, "xlnx,addr-tag-bits");
74 ci->icache_write = fcpu(cpu, "xlnx,allow-icache-wr");
75 ci->icache_line = fcpu(cpu, "xlnx,icache-line-len") << 2;
76 if (!ci->icache_line) {
77 if (fcpu(cpu, "xlnx,icache-use-fsl"))
78 ci->icache_line = 4 << 2;
79 else
80 ci->icache_line = 1 << 2;
81 }
82 ci->icache_size = fcpu(cpu, "i-cache-size");
83 ci->icache_base = fcpu(cpu, "i-cache-baseaddr");
84 ci->icache_high = fcpu(cpu, "i-cache-highaddr");
85
86 ci->use_dcache = fcpu(cpu, "xlnx,use-dcache");
87 ci->dcache_tagbits = fcpu(cpu, "xlnx,dcache-addr-tag");
88 ci->dcache_write = fcpu(cpu, "xlnx,allow-dcache-wr");
89 ci->dcache_line = fcpu(cpu, "xlnx,dcache-line-len") << 2;
90 if (!ci->dcache_line) {
91 if (fcpu(cpu, "xlnx,dcache-use-fsl"))
92 ci->dcache_line = 4 << 2;
93 else
94 ci->dcache_line = 1 << 2;
95 }
96 ci->dcache_size = fcpu(cpu, "d-cache-size");
97 ci->dcache_base = fcpu(cpu, "d-cache-baseaddr");
98 ci->dcache_high = fcpu(cpu, "d-cache-highaddr");
99
100 ci->use_dopb = fcpu(cpu, "xlnx,d-opb");
101 ci->use_iopb = fcpu(cpu, "xlnx,i-opb");
102 ci->use_dlmb = fcpu(cpu, "xlnx,d-lmb");
103 ci->use_ilmb = fcpu(cpu, "xlnx,i-lmb");
104
105 ci->num_fsl = fcpu(cpu, "xlnx,fsl-links");
106 ci->irq_edge = fcpu(cpu, "xlnx,interrupt-is-edge");
107 ci->irq_positive = fcpu(cpu, "xlnx,edge-is-positive");
108 ci->area_optimised = 0;
109
110 ci->hw_debug = fcpu(cpu, "xlnx,debug-enabled");
111 ci->num_pc_brk = fcpu(cpu, "xlnx,number-of-pc-brk");
112 ci->num_rd_brk = fcpu(cpu, "xlnx,number-of-rd-addr-brk");
113 ci->num_wr_brk = fcpu(cpu, "xlnx,number-of-wr-addr-brk");
114
115 ci->cpu_clock_freq = fcpu(cpu, "timebase-frequency");
116
117 ci->pvr_user1 = fcpu(cpu, "xlnx,pvr-user1");
118 ci->pvr_user2 = fcpu(cpu, "xlnx,pvr-user2");
119
120 ci->mmu = fcpu(cpu, "xlnx,use-mmu");
121
122 ci->ver_code = 0;
123 ci->fpga_family_code = 0;
124
125 /* Do various fixups based on CPU version and FPGA family strings */
126
127 /* Resolved the CPU version code */
128 for (i = 0; cpu_ver_lookup[i].s != NULL; i++) {
129 if (strcmp(cpu_ver_lookup[i].s, cpu_ver_string) == 0)
130 ci->ver_code = cpu_ver_lookup[i].k;
131 }
132
133 /* Resolved the fpga family code */
134 for (i = 0; family_string_lookup[i].s != NULL; i++) {
135 if (strcmp(family_string_lookup[i].s, family_string) == 0)
136 ci->fpga_family_code = family_string_lookup[i].k;
137 }
138
139 /* FIXME - mb3 and spartan2 do not exist in PVR */
140 /* This is mb3 and on a non Spartan2 */
141 if (ci->ver_code == 0x20 && ci->fpga_family_code != 0xf0)
142 /* Hardware Multiplier in use */
143 ci->use_mult = 1;
144}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo.c b/arch/microblaze/kernel/cpu/cpuinfo.c
new file mode 100644
index 000000000000..a10bea119b94
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cpuinfo.c
@@ -0,0 +1,86 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/slab.h>
13#include <asm/cpuinfo.h>
14#include <asm/pvr.h>
15
16const struct cpu_ver_key cpu_ver_lookup[] = {
17 /* These key value are as per MBV field in PVR0 */
18 {"5.00.a", 0x01},
19 {"5.00.b", 0x02},
20 {"5.00.c", 0x03},
21 {"6.00.a", 0x04},
22 {"6.00.b", 0x06},
23 {"7.00.a", 0x05},
24 {"7.00.b", 0x07},
25 {"7.10.a", 0x08},
26 {"7.10.b", 0x09},
27 {"7.10.c", 0x0a},
28 {"7.10.d", 0x0b},
29 /* FIXME There is no keycode defined in MBV for these versions */
30 {"2.10.a", 0x10},
31 {"3.00.a", 0x20},
32 {"4.00.a", 0x30},
33 {"4.00.b", 0x40},
34 {NULL, 0},
35};
36
37/*
38 * FIXME Not sure if the actual key is defined by Xilinx in the PVR
39 */
40const struct family_string_key family_string_lookup[] = {
41 {"virtex2", 0x4},
42 {"virtex2pro", 0x5},
43 {"spartan3", 0x6},
44 {"virtex4", 0x7},
45 {"virtex5", 0x8},
46 {"spartan3e", 0x9},
47 {"spartan3a", 0xa},
48 {"spartan3an", 0xb},
49 {"spartan3adsp", 0xc},
50 /* FIXME There is no key code defined for spartan2 */
51 {"spartan2", 0xf0},
52 {NULL, 0},
53};
54
55struct cpuinfo cpuinfo;
56
57void __init setup_cpuinfo(void)
58{
59 struct device_node *cpu = NULL;
60
61 cpu = (struct device_node *) of_find_node_by_type(NULL, "cpu");
62 if (!cpu)
63 printk(KERN_ERR "You don't have cpu!!!\n");
64
65 printk(KERN_INFO "%s: initialising\n", __func__);
66
67 switch (cpu_has_pvr()) {
68 case 0:
69 printk(KERN_WARNING
70 "%s: No PVR support. Using static CPU info from FDT\n",
71 __func__);
72 set_cpuinfo_static(&cpuinfo, cpu);
73 break;
74/* FIXME I found weird behavior with MB 7.00.a/b 7.10.a
75 * please do not use FULL PVR with MMU */
76 case 1:
77 printk(KERN_INFO "%s: Using full CPU PVR support\n",
78 __func__);
79 set_cpuinfo_static(&cpuinfo, cpu);
80 set_cpuinfo_pvr_full(&cpuinfo, cpu);
81 break;
82 default:
83 printk(KERN_WARNING "%s: Unsupported PVR setting\n", __func__);
84 set_cpuinfo_static(&cpuinfo, cpu);
85 }
86}
diff --git a/arch/microblaze/kernel/cpu/mb.c b/arch/microblaze/kernel/cpu/mb.c
new file mode 100644
index 000000000000..4dcfccdbc364
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/mb.c
@@ -0,0 +1,148 @@
1/*
2 * CPU-version specific code
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2006-2009 PetaLogix
6 *
7 * This file is subject to the terms and conditions of the GNU General Public
8 * License. See the file "COPYING" in the main directory of this archive
9 * for more details.
10 */
11
12#include <linux/init.h>
13#include <linux/string.h>
14#include <linux/seq_file.h>
15#include <linux/cpu.h>
16#include <linux/initrd.h>
17
18#include <linux/bug.h>
19#include <asm/cpuinfo.h>
20#include <linux/delay.h>
21#include <linux/io.h>
22#include <asm/page.h>
23#include <linux/param.h>
24#include <asm/pvr.h>
25#include <asm/sections.h>
26#include <asm/setup.h>
27
28static int show_cpuinfo(struct seq_file *m, void *v)
29{
30 int count = 0;
31 char *fpga_family = "Unknown";
32 char *cpu_ver = "Unknown";
33 int i;
34
35 /* Denormalised to get the fpga family string */
36 for (i = 0; family_string_lookup[i].s != NULL; i++) {
37 if (cpuinfo.fpga_family_code == family_string_lookup[i].k) {
38 fpga_family = (char *)family_string_lookup[i].s;
39 break;
40 }
41 }
42
43 /* Denormalised to get the hw version string */
44 for (i = 0; cpu_ver_lookup[i].s != NULL; i++) {
45 if (cpuinfo.ver_code == cpu_ver_lookup[i].k) {
46 cpu_ver = (char *)cpu_ver_lookup[i].s;
47 break;
48 }
49 }
50
51 count = seq_printf(m,
52 "CPU-Family: MicroBlaze\n"
53 "FPGA-Arch: %s\n"
54 "CPU-Ver: %s\n"
55 "CPU-MHz: %d.%02d\n"
56 "BogoMips: %lu.%02lu\n",
57 fpga_family,
58 cpu_ver,
59 cpuinfo.cpu_clock_freq /
60 1000000,
61 cpuinfo.cpu_clock_freq %
62 1000000,
63 loops_per_jiffy / (500000 / HZ),
64 (loops_per_jiffy / (5000 / HZ)) % 100);
65
66 count += seq_printf(m,
67 "HW:\n Shift:\t\t%s\n"
68 " MSR:\t\t%s\n"
69 " PCMP:\t\t%s\n"
70 " DIV:\t\t%s\n",
71 (cpuinfo.use_instr & PVR0_USE_BARREL_MASK) ? "yes" : "no",
72 (cpuinfo.use_instr & PVR2_USE_MSR_INSTR) ? "yes" : "no",
73 (cpuinfo.use_instr & PVR2_USE_PCMP_INSTR) ? "yes" : "no",
74 (cpuinfo.use_instr & PVR0_USE_DIV_MASK) ? "yes" : "no");
75
76 count += seq_printf(m,
77 " MMU:\t\t%x\n",
78 cpuinfo.mmu);
79
80 count += seq_printf(m,
81 " MUL:\t\t%s\n"
82 " FPU:\t\t%s\n",
83 (cpuinfo.use_mult & PVR2_USE_MUL64_MASK) ? "v2" :
84 (cpuinfo.use_mult & PVR0_USE_HW_MUL_MASK) ? "v1" : "no",
85 (cpuinfo.use_fpu & PVR2_USE_FPU2_MASK) ? "v2" :
86 (cpuinfo.use_fpu & PVR0_USE_FPU_MASK) ? "v1" : "no");
87
88 count += seq_printf(m,
89 " Exc:\t\t%s%s%s%s%s%s%s%s\n",
90 (cpuinfo.use_exc & PVR2_OPCODE_0x0_ILL_MASK) ? "op0x0 " : "",
91 (cpuinfo.use_exc & PVR2_UNALIGNED_EXC_MASK) ? "unal " : "",
92 (cpuinfo.use_exc & PVR2_ILL_OPCODE_EXC_MASK) ? "ill " : "",
93 (cpuinfo.use_exc & PVR2_IOPB_BUS_EXC_MASK) ? "iopb " : "",
94 (cpuinfo.use_exc & PVR2_DOPB_BUS_EXC_MASK) ? "dopb " : "",
95 (cpuinfo.use_exc & PVR2_DIV_ZERO_EXC_MASK) ? "zero " : "",
96 (cpuinfo.use_exc & PVR2_FPU_EXC_MASK) ? "fpu " : "",
97 (cpuinfo.use_exc & PVR2_USE_FSL_EXC) ? "fsl " : "");
98
99 if (cpuinfo.use_icache)
100 count += seq_printf(m,
101 "Icache:\t\t%ukB\n",
102 cpuinfo.icache_size >> 10);
103 else
104 count += seq_printf(m, "Icache:\t\tno\n");
105
106 if (cpuinfo.use_dcache)
107 count += seq_printf(m,
108 "Dcache:\t\t%ukB\n",
109 cpuinfo.dcache_size >> 10);
110 else
111 count += seq_printf(m, "Dcache:\t\tno\n");
112
113 count += seq_printf(m,
114 "HW-Debug:\t%s\n",
115 cpuinfo.hw_debug ? "yes" : "no");
116
117 count += seq_printf(m,
118 "PVR-USR1:\t%02x\n"
119 "PVR-USR2:\t%08x\n",
120 cpuinfo.pvr_user1,
121 cpuinfo.pvr_user2);
122
123 return 0;
124}
125
126static void *c_start(struct seq_file *m, loff_t *pos)
127{
128 int i = *pos;
129
130 return i < NR_CPUS ? (void *) (i + 1) : NULL;
131}
132
133static void *c_next(struct seq_file *m, void *v, loff_t *pos)
134{
135 ++*pos;
136 return c_start(m, pos);
137}
138
139static void c_stop(struct seq_file *m, void *v)
140{
141}
142
143const struct seq_operations cpuinfo_op = {
144 .start = c_start,
145 .next = c_next,
146 .stop = c_stop,
147 .show = show_cpuinfo,
148};
diff --git a/arch/microblaze/kernel/cpu/pvr.c b/arch/microblaze/kernel/cpu/pvr.c
new file mode 100644
index 000000000000..c9a4340ddd53
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/pvr.c
@@ -0,0 +1,81 @@
1/*
2 * Support for MicroBlaze PVR (processor version register)
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#include <linux/kernel.h>
14#include <linux/compiler.h>
15#include <asm/system.h>
16#include <asm/exceptions.h>
17#include <asm/pvr.h>
18
19/*
20 * Until we get an assembler that knows about the pvr registers,
21 * this horrible cruft will have to do.
22 * That hardcoded opcode is mfs r3, rpvrNN
23 */
24
25#define get_single_pvr(pvrid, val) \
26{ \
27 register unsigned tmp __asm__("r3"); \
28 tmp = 0x0; /* Prevent warning about unused */ \
29 __asm__ __volatile__ ( \
30 ".byte 0x94,0x60,0xa0, " #pvrid "\n\t" \
31 : "=r" (tmp) : : "memory"); \
32 val = tmp; \
33}
34
35/*
36 * Does the CPU support the PVR register?
37 * return value:
38 * 0: no PVR
39 * 1: simple PVR
40 * 2: full PVR
41 *
42 * This must work on all CPU versions, including those before the
43 * PVR was even an option.
44 */
45
46int cpu_has_pvr(void)
47{
48 unsigned flags;
49 unsigned pvr0;
50
51 local_save_flags(flags);
52
53 /* PVR bit in MSR tells us if there is any support */
54 if (!(flags & PVR_MSR_BIT))
55 return 0;
56
57 get_single_pvr(0x00, pvr0);
58 pr_debug("%s: pvr0 is 0x%08x\n", __func__, pvr0);
59
60 if (pvr0 & PVR0_PVR_FULL_MASK)
61 return 1;
62
63 /* for partial PVR use static cpuinfo */
64 return 2;
65}
66
67void get_pvr(struct pvr_s *p)
68{
69 get_single_pvr(0, p->pvr[0]);
70 get_single_pvr(1, p->pvr[1]);
71 get_single_pvr(2, p->pvr[2]);
72 get_single_pvr(3, p->pvr[3]);
73 get_single_pvr(4, p->pvr[4]);
74 get_single_pvr(5, p->pvr[5]);
75 get_single_pvr(6, p->pvr[6]);
76 get_single_pvr(7, p->pvr[7]);
77 get_single_pvr(8, p->pvr[8]);
78 get_single_pvr(9, p->pvr[9]);
79 get_single_pvr(10, p->pvr[10]);
80 get_single_pvr(11, p->pvr[11]);
81}
diff --git a/arch/microblaze/kernel/early_printk.c b/arch/microblaze/kernel/early_printk.c
new file mode 100644
index 000000000000..4b0f0fdb9ca0
--- /dev/null
+++ b/arch/microblaze/kernel/early_printk.c
@@ -0,0 +1,107 @@
1/*
2 * Early printk support for Microblaze.
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2003-2006 Yasushi SHOJI <yashi@atmark-techno.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#include <linux/console.h>
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/string.h>
17#include <linux/tty.h>
18#include <linux/io.h>
19#include <asm/processor.h>
20#include <linux/fcntl.h>
21#include <asm/setup.h>
22#include <asm/prom.h>
23
24static u32 early_console_initialized;
25static u32 base_addr;
26
27static void early_printk_putc(char c)
28{
29 /*
30 * Limit how many times we'll spin waiting for TX FIFO status.
31 * This will prevent lockups if the base address is incorrectly
32 * set, or any other issue on the UARTLITE.
33 * This limit is pretty arbitrary, unless we are at about 10 baud
34 * we'll never timeout on a working UART.
35 */
36
37 unsigned retries = 10000;
38 /* read status bit - 0x8 offset */
39 while (--retries && (in_be32(base_addr + 8) & (1 << 3)))
40 ;
41
42 /* Only attempt the iowrite if we didn't timeout */
43 /* write to TX_FIFO - 0x4 offset */
44 if (retries)
45 out_be32(base_addr + 4, c & 0xff);
46}
47
48static void early_printk_write(struct console *unused,
49 const char *s, unsigned n)
50{
51 while (*s && n-- > 0) {
52 early_printk_putc(*s);
53 if (*s == '\n')
54 early_printk_putc('\r');
55 s++;
56 }
57}
58
59static struct console early_serial_console = {
60 .name = "earlyser",
61 .write = early_printk_write,
62 .flags = CON_PRINTBUFFER,
63 .index = -1,
64};
65
66static struct console *early_console = &early_serial_console;
67
68void early_printk(const char *fmt, ...)
69{
70 char buf[512];
71 int n;
72 va_list ap;
73
74 if (early_console_initialized) {
75 va_start(ap, fmt);
76 n = vscnprintf(buf, 512, fmt, ap);
77 early_console->write(early_console, buf, n);
78 va_end(ap);
79 }
80}
81
82int __init setup_early_printk(char *opt)
83{
84 if (early_console_initialized)
85 return 1;
86
87 base_addr = early_uartlite_console();
88 if (base_addr) {
89 early_console_initialized = 1;
90 early_printk("early_printk_console is enabled at 0x%08x\n",
91 base_addr);
92
93 /* register_console(early_console); */
94
95 return 0;
96 } else
97 return 1;
98}
99
100void __init disable_early_printk(void)
101{
102 if (!early_console_initialized || !early_console)
103 return;
104 printk(KERN_WARNING "disabling early console\n");
105 unregister_console(early_console);
106 early_console_initialized = 0;
107}
diff --git a/arch/microblaze/kernel/entry-nommu.S b/arch/microblaze/kernel/entry-nommu.S
new file mode 100644
index 000000000000..f24b1268baaf
--- /dev/null
+++ b/arch/microblaze/kernel/entry-nommu.S
@@ -0,0 +1,596 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/linkage.h>
12#include <asm/thread_info.h>
13#include <asm/errno.h>
14#include <asm/entry.h>
15#include <asm/asm-offsets.h>
16#include <asm/registers.h>
17#include <asm/unistd.h>
18#include <asm/percpu.h>
19#include <asm/signal.h>
20
21#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
22 .macro disable_irq
23 msrclr r0, MSR_IE
24 .endm
25
26 .macro enable_irq
27 msrset r0, MSR_IE
28 .endm
29
30 .macro clear_bip
31 msrclr r0, MSR_BIP
32 .endm
33#else
34 .macro disable_irq
35 mfs r11, rmsr
36 andi r11, r11, ~MSR_IE
37 mts rmsr, r11
38 .endm
39
40 .macro enable_irq
41 mfs r11, rmsr
42 ori r11, r11, MSR_IE
43 mts rmsr, r11
44 .endm
45
46 .macro clear_bip
47 mfs r11, rmsr
48 andi r11, r11, ~MSR_BIP
49 mts rmsr, r11
50 .endm
51#endif
52
53ENTRY(_interrupt)
54 swi r1, r0, PER_CPU(ENTRY_SP) /* save the current sp */
55 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
56 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
57 beqid r11, 1f
58 nop
59 brid 2f /* jump over */
60 addik r1, r1, (-PT_SIZE) /* room for pt_regs (delay slot) */
611: /* switch to kernel stack */
62 lwi r1, r0, PER_CPU(CURRENT_SAVE) /* get the saved current */
63 lwi r1, r1, TS_THREAD_INFO /* get the thread info */
64 /* calculate kernel stack pointer */
65 addik r1, r1, THREAD_SIZE - PT_SIZE
662:
67 swi r11, r1, PT_MODE /* store the mode */
68 lwi r11, r0, PER_CPU(R11_SAVE) /* reload r11 */
69 swi r2, r1, PT_R2
70 swi r3, r1, PT_R3
71 swi r4, r1, PT_R4
72 swi r5, r1, PT_R5
73 swi r6, r1, PT_R6
74 swi r7, r1, PT_R7
75 swi r8, r1, PT_R8
76 swi r9, r1, PT_R9
77 swi r10, r1, PT_R10
78 swi r11, r1, PT_R11
79 swi r12, r1, PT_R12
80 swi r13, r1, PT_R13
81 swi r14, r1, PT_R14
82 swi r14, r1, PT_PC
83 swi r15, r1, PT_R15
84 swi r16, r1, PT_R16
85 swi r17, r1, PT_R17
86 swi r18, r1, PT_R18
87 swi r19, r1, PT_R19
88 swi r20, r1, PT_R20
89 swi r21, r1, PT_R21
90 swi r22, r1, PT_R22
91 swi r23, r1, PT_R23
92 swi r24, r1, PT_R24
93 swi r25, r1, PT_R25
94 swi r26, r1, PT_R26
95 swi r27, r1, PT_R27
96 swi r28, r1, PT_R28
97 swi r29, r1, PT_R29
98 swi r30, r1, PT_R30
99 swi r31, r1, PT_R31
100 /* special purpose registers */
101 mfs r11, rmsr
102 swi r11, r1, PT_MSR
103 mfs r11, rear
104 swi r11, r1, PT_EAR
105 mfs r11, resr
106 swi r11, r1, PT_ESR
107 mfs r11, rfsr
108 swi r11, r1, PT_FSR
109 /* reload original stack pointer and save it */
110 lwi r11, r0, PER_CPU(ENTRY_SP)
111 swi r11, r1, PT_R1
112 /* update mode indicator we are in kernel mode */
113 addik r11, r0, 1
114 swi r11, r0, PER_CPU(KM)
115 /* restore r31 */
116 lwi r31, r0, PER_CPU(CURRENT_SAVE)
117 /* prepare the link register, the argument and jump */
118 la r15, r0, ret_from_intr - 8
119 addk r6, r0, r15
120 braid do_IRQ
121 add r5, r0, r1
122
123ret_from_intr:
124 lwi r11, r1, PT_MODE
125 bneid r11, 3f
126
127 lwi r6, r31, TS_THREAD_INFO /* get thread info */
128 lwi r19, r6, TI_FLAGS /* get flags in thread info */
129 /* do an extra work if any bits are set */
130
131 andi r11, r19, _TIF_NEED_RESCHED
132 beqi r11, 1f
133 bralid r15, schedule
134 nop
1351: andi r11, r19, _TIF_SIGPENDING
136 beqid r11, no_intr_reshed
137 addk r5, r1, r0
138 addk r7, r0, r0
139 bralid r15, do_signal
140 addk r6, r0, r0
141
142no_intr_reshed:
143 /* save mode indicator */
144 lwi r11, r1, PT_MODE
1453:
146 swi r11, r0, PER_CPU(KM)
147
148 /* save r31 */
149 swi r31, r0, PER_CPU(CURRENT_SAVE)
150restore_context:
151 /* special purpose registers */
152 lwi r11, r1, PT_FSR
153 mts rfsr, r11
154 lwi r11, r1, PT_ESR
155 mts resr, r11
156 lwi r11, r1, PT_EAR
157 mts rear, r11
158 lwi r11, r1, PT_MSR
159 mts rmsr, r11
160
161 lwi r31, r1, PT_R31
162 lwi r30, r1, PT_R30
163 lwi r29, r1, PT_R29
164 lwi r28, r1, PT_R28
165 lwi r27, r1, PT_R27
166 lwi r26, r1, PT_R26
167 lwi r25, r1, PT_R25
168 lwi r24, r1, PT_R24
169 lwi r23, r1, PT_R23
170 lwi r22, r1, PT_R22
171 lwi r21, r1, PT_R21
172 lwi r20, r1, PT_R20
173 lwi r19, r1, PT_R19
174 lwi r18, r1, PT_R18
175 lwi r17, r1, PT_R17
176 lwi r16, r1, PT_R16
177 lwi r15, r1, PT_R15
178 lwi r14, r1, PT_PC
179 lwi r13, r1, PT_R13
180 lwi r12, r1, PT_R12
181 lwi r11, r1, PT_R11
182 lwi r10, r1, PT_R10
183 lwi r9, r1, PT_R9
184 lwi r8, r1, PT_R8
185 lwi r7, r1, PT_R7
186 lwi r6, r1, PT_R6
187 lwi r5, r1, PT_R5
188 lwi r4, r1, PT_R4
189 lwi r3, r1, PT_R3
190 lwi r2, r1, PT_R2
191 lwi r1, r1, PT_R1
192 rtid r14, 0
193 nop
194
195ENTRY(_reset)
196 brai 0;
197
198ENTRY(_user_exception)
199 swi r1, r0, PER_CPU(ENTRY_SP) /* save the current sp */
200 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
201 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
202 beqid r11, 1f /* Already in kernel mode? */
203 nop
204 brid 2f /* jump over */
205 addik r1, r1, (-PT_SIZE) /* Room for pt_regs (delay slot) */
2061: /* Switch to kernel stack */
207 lwi r1, r0, PER_CPU(CURRENT_SAVE) /* get the saved current */
208 lwi r1, r1, TS_THREAD_INFO /* get the thread info */
209 /* calculate kernel stack pointer */
210 addik r1, r1, THREAD_SIZE - PT_SIZE
211 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
212 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
2132:
214 swi r11, r1, PT_MODE /* store the mode */
215 lwi r11, r0, PER_CPU(R11_SAVE) /* reload r11 */
216 /* save them on stack */
217 swi r2, r1, PT_R2
218 swi r3, r1, PT_R3 /* r3: _always_ in clobber list; see unistd.h */
219 swi r4, r1, PT_R4 /* r4: _always_ in clobber list; see unistd.h */
220 swi r5, r1, PT_R5
221 swi r6, r1, PT_R6
222 swi r7, r1, PT_R7
223 swi r8, r1, PT_R8
224 swi r9, r1, PT_R9
225 swi r10, r1, PT_R10
226 swi r11, r1, PT_R11
227 /* r12: _always_ in clobber list; see unistd.h */
228 swi r12, r1, PT_R12
229 swi r13, r1, PT_R13
230 /* r14: _always_ in clobber list; see unistd.h */
231 swi r14, r1, PT_R14
232 /* but we want to return to the next inst. */
233 addik r14, r14, 0x4
234 swi r14, r1, PT_PC /* increment by 4 and store in pc */
235 swi r15, r1, PT_R15
236 swi r16, r1, PT_R16
237 swi r17, r1, PT_R17
238 swi r18, r1, PT_R18
239 swi r19, r1, PT_R19
240 swi r20, r1, PT_R20
241 swi r21, r1, PT_R21
242 swi r22, r1, PT_R22
243 swi r23, r1, PT_R23
244 swi r24, r1, PT_R24
245 swi r25, r1, PT_R25
246 swi r26, r1, PT_R26
247 swi r27, r1, PT_R27
248 swi r28, r1, PT_R28
249 swi r29, r1, PT_R29
250 swi r30, r1, PT_R30
251 swi r31, r1, PT_R31
252
253 disable_irq
254 nop /* make sure IE bit is in effect */
255 clear_bip /* once IE is in effect it is safe to clear BIP */
256 nop
257
258 /* special purpose registers */
259 mfs r11, rmsr
260 swi r11, r1, PT_MSR
261 mfs r11, rear
262 swi r11, r1, PT_EAR
263 mfs r11, resr
264 swi r11, r1, PT_ESR
265 mfs r11, rfsr
266 swi r11, r1, PT_FSR
267 /* reload original stack pointer and save it */
268 lwi r11, r0, PER_CPU(ENTRY_SP)
269 swi r11, r1, PT_R1
270 /* update mode indicator we are in kernel mode */
271 addik r11, r0, 1
272 swi r11, r0, PER_CPU(KM)
273 /* restore r31 */
274 lwi r31, r0, PER_CPU(CURRENT_SAVE)
275 /* re-enable interrupts now we are in kernel mode */
276 enable_irq
277
278 /* See if the system call number is valid. */
279 addi r11, r12, -__NR_syscalls
280 bgei r11, 1f /* return to user if not valid */
281 /* Figure out which function to use for this system call. */
282 /* Note Microblaze barrel shift is optional, so don't rely on it */
283 add r12, r12, r12 /* convert num -> ptr */
284 add r12, r12, r12
285 lwi r12, r12, sys_call_table /* Get function pointer */
286 la r15, r0, ret_to_user-8 /* set return address */
287 bra r12 /* Make the system call. */
288 bri 0 /* won't reach here */
2891:
290 brid ret_to_user /* jump to syscall epilogue */
291 addi r3, r0, -ENOSYS /* set errno in delay slot */
292
293/*
294 * Debug traps are like a system call, but entered via brki r14, 0x60
295 * All we need to do is send the SIGTRAP signal to current, ptrace and do_signal
296 * will handle the rest
297 */
298ENTRY(_debug_exception)
299 swi r1, r0, PER_CPU(ENTRY_SP) /* save the current sp */
300 lwi r1, r0, PER_CPU(CURRENT_SAVE) /* get the saved current */
301 lwi r1, r1, TS_THREAD_INFO /* get the thread info */
302 addik r1, r1, THREAD_SIZE - PT_SIZE /* get the kernel stack */
303 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
304 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
305//save_context:
306 swi r11, r1, PT_MODE /* store the mode */
307 lwi r11, r0, PER_CPU(R11_SAVE) /* reload r11 */
308 /* save them on stack */
309 swi r2, r1, PT_R2
310 swi r3, r1, PT_R3 /* r3: _always_ in clobber list; see unistd.h */
311 swi r4, r1, PT_R4 /* r4: _always_ in clobber list; see unistd.h */
312 swi r5, r1, PT_R5
313 swi r6, r1, PT_R6
314 swi r7, r1, PT_R7
315 swi r8, r1, PT_R8
316 swi r9, r1, PT_R9
317 swi r10, r1, PT_R10
318 swi r11, r1, PT_R11
319 /* r12: _always_ in clobber list; see unistd.h */
320 swi r12, r1, PT_R12
321 swi r13, r1, PT_R13
322 /* r14: _always_ in clobber list; see unistd.h */
323 swi r14, r1, PT_R14
324 swi r14, r1, PT_PC /* Will return to interrupted instruction */
325 swi r15, r1, PT_R15
326 swi r16, r1, PT_R16
327 swi r17, r1, PT_R17
328 swi r18, r1, PT_R18
329 swi r19, r1, PT_R19
330 swi r20, r1, PT_R20
331 swi r21, r1, PT_R21
332 swi r22, r1, PT_R22
333 swi r23, r1, PT_R23
334 swi r24, r1, PT_R24
335 swi r25, r1, PT_R25
336 swi r26, r1, PT_R26
337 swi r27, r1, PT_R27
338 swi r28, r1, PT_R28
339 swi r29, r1, PT_R29
340 swi r30, r1, PT_R30
341 swi r31, r1, PT_R31
342
343 disable_irq
344 nop /* make sure IE bit is in effect */
345 clear_bip /* once IE is in effect it is safe to clear BIP */
346 nop
347
348 /* special purpose registers */
349 mfs r11, rmsr
350 swi r11, r1, PT_MSR
351 mfs r11, rear
352 swi r11, r1, PT_EAR
353 mfs r11, resr
354 swi r11, r1, PT_ESR
355 mfs r11, rfsr
356 swi r11, r1, PT_FSR
357 /* reload original stack pointer and save it */
358 lwi r11, r0, PER_CPU(ENTRY_SP)
359 swi r11, r1, PT_R1
360 /* update mode indicator we are in kernel mode */
361 addik r11, r0, 1
362 swi r11, r0, PER_CPU(KM)
363 /* restore r31 */
364 lwi r31, r0, PER_CPU(CURRENT_SAVE)
365 /* re-enable interrupts now we are in kernel mode */
366 enable_irq
367
368 addi r5, r0, SIGTRAP /* sending the trap signal */
369 add r6, r0, r31 /* to current */
370 bralid r15, send_sig
371 add r7, r0, r0 /* 3rd param zero */
372
373 /* Restore r3/r4 to work around how ret_to_user works */
374 lwi r3, r1, PT_R3
375 lwi r4, r1, PT_R4
376 bri ret_to_user
377
378ENTRY(_break)
379 bri 0
380
381/* struct task_struct *_switch_to(struct thread_info *prev,
382 struct thread_info *next); */
383ENTRY(_switch_to)
384 /* prepare return value */
385 addk r3, r0, r31
386
387 /* save registers in cpu_context */
388 /* use r11 and r12, volatile registers, as temp register */
389 addik r11, r5, TI_CPU_CONTEXT
390 swi r1, r11, CC_R1
391 swi r2, r11, CC_R2
392 /* skip volatile registers.
393 * they are saved on stack when we jumped to _switch_to() */
394 /* dedicated registers */
395 swi r13, r11, CC_R13
396 swi r14, r11, CC_R14
397 swi r15, r11, CC_R15
398 swi r16, r11, CC_R16
399 swi r17, r11, CC_R17
400 swi r18, r11, CC_R18
401 /* save non-volatile registers */
402 swi r19, r11, CC_R19
403 swi r20, r11, CC_R20
404 swi r21, r11, CC_R21
405 swi r22, r11, CC_R22
406 swi r23, r11, CC_R23
407 swi r24, r11, CC_R24
408 swi r25, r11, CC_R25
409 swi r26, r11, CC_R26
410 swi r27, r11, CC_R27
411 swi r28, r11, CC_R28
412 swi r29, r11, CC_R29
413 swi r30, r11, CC_R30
414 /* special purpose registers */
415 mfs r12, rmsr
416 swi r12, r11, CC_MSR
417 mfs r12, rear
418 swi r12, r11, CC_EAR
419 mfs r12, resr
420 swi r12, r11, CC_ESR
421 mfs r12, rfsr
422 swi r12, r11, CC_FSR
423
424 /* update r31, the current */
425 lwi r31, r6, TI_TASK
426 swi r31, r0, PER_CPU(CURRENT_SAVE)
427
428 /* get new process' cpu context and restore */
429 addik r11, r6, TI_CPU_CONTEXT
430
431 /* special purpose registers */
432 lwi r12, r11, CC_FSR
433 mts rfsr, r12
434 lwi r12, r11, CC_ESR
435 mts resr, r12
436 lwi r12, r11, CC_EAR
437 mts rear, r12
438 lwi r12, r11, CC_MSR
439 mts rmsr, r12
440 /* non-volatile registers */
441 lwi r30, r11, CC_R30
442 lwi r29, r11, CC_R29
443 lwi r28, r11, CC_R28
444 lwi r27, r11, CC_R27
445 lwi r26, r11, CC_R26
446 lwi r25, r11, CC_R25
447 lwi r24, r11, CC_R24
448 lwi r23, r11, CC_R23
449 lwi r22, r11, CC_R22
450 lwi r21, r11, CC_R21
451 lwi r20, r11, CC_R20
452 lwi r19, r11, CC_R19
453 /* dedicated registers */
454 lwi r18, r11, CC_R18
455 lwi r17, r11, CC_R17
456 lwi r16, r11, CC_R16
457 lwi r15, r11, CC_R15
458 lwi r14, r11, CC_R14
459 lwi r13, r11, CC_R13
460 /* skip volatile registers */
461 lwi r2, r11, CC_R2
462 lwi r1, r11, CC_R1
463
464 rtsd r15, 8
465 nop
466
467ENTRY(ret_from_fork)
468 addk r5, r0, r3
469 addk r6, r0, r1
470 brlid r15, schedule_tail
471 nop
472 swi r31, r1, PT_R31 /* save r31 in user context. */
473 /* will soon be restored to r31 in ret_to_user */
474 addk r3, r0, r0
475 brid ret_to_user
476 nop
477
478work_pending:
479 andi r11, r19, _TIF_NEED_RESCHED
480 beqi r11, 1f
481 bralid r15, schedule
482 nop
4831: andi r11, r19, _TIF_SIGPENDING
484 beqi r11, no_work_pending
485 addk r5, r1, r0
486 addik r7, r0, 1
487 bralid r15, do_signal
488 addk r6, r0, r0
489 bri no_work_pending
490
491ENTRY(ret_to_user)
492 disable_irq
493
494 swi r4, r1, PT_R4 /* return val */
495 swi r3, r1, PT_R3 /* return val */
496
497 lwi r6, r31, TS_THREAD_INFO /* get thread info */
498 lwi r19, r6, TI_FLAGS /* get flags in thread info */
499 bnei r19, work_pending /* do an extra work if any bits are set */
500no_work_pending:
501 disable_irq
502
503 /* save r31 */
504 swi r31, r0, PER_CPU(CURRENT_SAVE)
505 /* save mode indicator */
506 lwi r18, r1, PT_MODE
507 swi r18, r0, PER_CPU(KM)
508//restore_context:
509 /* special purpose registers */
510 lwi r18, r1, PT_FSR
511 mts rfsr, r18
512 lwi r18, r1, PT_ESR
513 mts resr, r18
514 lwi r18, r1, PT_EAR
515 mts rear, r18
516 lwi r18, r1, PT_MSR
517 mts rmsr, r18
518
519 lwi r31, r1, PT_R31
520 lwi r30, r1, PT_R30
521 lwi r29, r1, PT_R29
522 lwi r28, r1, PT_R28
523 lwi r27, r1, PT_R27
524 lwi r26, r1, PT_R26
525 lwi r25, r1, PT_R25
526 lwi r24, r1, PT_R24
527 lwi r23, r1, PT_R23
528 lwi r22, r1, PT_R22
529 lwi r21, r1, PT_R21
530 lwi r20, r1, PT_R20
531 lwi r19, r1, PT_R19
532 lwi r18, r1, PT_R18
533 lwi r17, r1, PT_R17
534 lwi r16, r1, PT_R16
535 lwi r15, r1, PT_R15
536 lwi r14, r1, PT_PC
537 lwi r13, r1, PT_R13
538 lwi r12, r1, PT_R12
539 lwi r11, r1, PT_R11
540 lwi r10, r1, PT_R10
541 lwi r9, r1, PT_R9
542 lwi r8, r1, PT_R8
543 lwi r7, r1, PT_R7
544 lwi r6, r1, PT_R6
545 lwi r5, r1, PT_R5
546 lwi r4, r1, PT_R4 /* return val */
547 lwi r3, r1, PT_R3 /* return val */
548 lwi r2, r1, PT_R2
549 lwi r1, r1, PT_R1
550
551 rtid r14, 0
552 nop
553
554sys_vfork_wrapper:
555 brid sys_vfork
556 addk r5, r1, r0
557
558sys_clone_wrapper:
559 brid sys_clone
560 addk r7, r1, r0
561
562sys_execve_wrapper:
563 brid sys_execve
564 addk r8, r1, r0
565
566sys_sigreturn_wrapper:
567 brid sys_sigreturn
568 addk r5, r1, r0
569
570sys_rt_sigreturn_wrapper:
571 brid sys_rt_sigreturn
572 addk r5, r1, r0
573
574sys_sigsuspend_wrapper:
575 brid sys_rt_sigsuspend
576 addk r6, r1, r0
577
578sys_rt_sigsuspend_wrapper:
579 brid sys_rt_sigsuspend
580 addk r7, r1, r0
581
582 /* Interrupt vector table */
583 .section .init.ivt, "ax"
584 .org 0x0
585 brai _reset
586 brai _user_exception
587 brai _interrupt
588 brai _break
589 brai _hw_exception_handler
590 .org 0x60
591 brai _debug_exception
592
593.section .rodata,"a"
594#include "syscall_table.S"
595
596syscall_table_size=(.-sys_call_table)
diff --git a/arch/microblaze/kernel/exceptions.c b/arch/microblaze/kernel/exceptions.c
new file mode 100644
index 000000000000..4a8a4064c7ee
--- /dev/null
+++ b/arch/microblaze/kernel/exceptions.c
@@ -0,0 +1,124 @@
1/*
2 * HW exception handling
3 *
4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2008 PetaLogix
6 *
7 * This file is subject to the terms and conditions of the GNU General
8 * Public License. See the file COPYING in the main directory of this
9 * archive for more details.
10 */
11
12/*
13 * This file handles the architecture-dependent parts of hardware exceptions
14 */
15
16#include <linux/kernel.h>
17#include <linux/signal.h>
18#include <linux/sched.h>
19#include <linux/kallsyms.h>
20#include <linux/module.h>
21
22#include <asm/exceptions.h>
23#include <asm/entry.h> /* For KM CPU var */
24#include <asm/uaccess.h>
25#include <asm/errno.h>
26#include <asm/ptrace.h>
27#include <asm/current.h>
28
29#define MICROBLAZE_ILL_OPCODE_EXCEPTION 0x02
30#define MICROBLAZE_IBUS_EXCEPTION 0x03
31#define MICROBLAZE_DBUS_EXCEPTION 0x04
32#define MICROBLAZE_DIV_ZERO_EXCEPTION 0x05
33#define MICROBLAZE_FPU_EXCEPTION 0x06
34#define MICROBLAZE_PRIVILEG_EXCEPTION 0x07
35
36static DEFINE_SPINLOCK(die_lock);
37
38void die(const char *str, struct pt_regs *fp, long err)
39{
40 console_verbose();
41 spin_lock_irq(&die_lock);
42 printk(KERN_WARNING "Oops: %s, sig: %ld\n", str, err);
43 show_regs(fp);
44 spin_unlock_irq(&die_lock);
45 /* do_exit() should take care of panic'ing from an interrupt
46 * context so we don't handle it here
47 */
48 do_exit(err);
49}
50
51void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)
52{
53 siginfo_t info;
54
55 if (kernel_mode(regs)) {
56 debugger(regs);
57 die("Exception in kernel mode", regs, signr);
58 }
59 info.si_signo = signr;
60 info.si_errno = 0;
61 info.si_code = code;
62 info.si_addr = (void __user *) addr;
63 force_sig_info(signr, &info, current);
64}
65
66asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
67 int fsr, int addr)
68{
69#if 0
70 printk(KERN_WARNING "Exception %02x in %s mode, FSR=%08x PC=%08x ESR=%08x\n",
71 type, user_mode(regs) ? "user" : "kernel", fsr,
72 (unsigned int) regs->pc, (unsigned int) regs->esr);
73#endif
74
75 switch (type & 0x1F) {
76 case MICROBLAZE_ILL_OPCODE_EXCEPTION:
77 _exception(SIGILL, regs, ILL_ILLOPC, addr);
78 break;
79 case MICROBLAZE_IBUS_EXCEPTION:
80 if (user_mode(regs)) {
81 printk(KERN_WARNING "Instruction bus error exception in user mode.\n");
82 _exception(SIGBUS, regs, BUS_ADRERR, addr);
83 return;
84 }
85 printk(KERN_WARNING "Instruction bus error exception in kernel mode.\n");
86 die("bus exception", regs, SIGBUS);
87 break;
88 case MICROBLAZE_DBUS_EXCEPTION:
89 if (user_mode(regs)) {
90 printk(KERN_WARNING "Data bus error exception in user mode.\n");
91 _exception(SIGBUS, regs, BUS_ADRERR, addr);
92 return;
93 }
94 printk(KERN_WARNING "Data bus error exception in kernel mode.\n");
95 die("bus exception", regs, SIGBUS);
96 break;
97 case MICROBLAZE_DIV_ZERO_EXCEPTION:
98 printk(KERN_WARNING "Divide by zero exception\n");
99 _exception(SIGILL, regs, ILL_ILLOPC, addr);
100 break;
101
102 case MICROBLAZE_FPU_EXCEPTION:
103 /* IEEE FP exception */
104 /* I removed fsr variable and use code var for storing fsr */
105 if (fsr & FSR_IO)
106 fsr = FPE_FLTINV;
107 else if (fsr & FSR_OF)
108 fsr = FPE_FLTOVF;
109 else if (fsr & FSR_UF)
110 fsr = FPE_FLTUND;
111 else if (fsr & FSR_DZ)
112 fsr = FPE_FLTDIV;
113 else if (fsr & FSR_DO)
114 fsr = FPE_FLTRES;
115 _exception(SIGFPE, regs, fsr, addr);
116 break;
117
118 default:
119 printk(KERN_WARNING "Unexpected exception %02x "
120 "PC=%08x in %s mode\n", type, (unsigned int) addr,
121 kernel_mode(regs) ? "kernel" : "user");
122 }
123 return;
124}
diff --git a/arch/microblaze/kernel/head.S b/arch/microblaze/kernel/head.S
new file mode 100644
index 000000000000..319dc35fc922
--- /dev/null
+++ b/arch/microblaze/kernel/head.S
@@ -0,0 +1,56 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/linkage.h>
12#include <asm/thread_info.h>
13#include <asm/page.h>
14
15 .text
16ENTRY(_start)
17 mfs r1, rmsr
18 andi r1, r1, ~2
19 mts rmsr, r1
20
21/* save fdt to kernel location */
22/* r7 stores pointer to fdt blob */
23 beqi r7, no_fdt_arg
24 or r11, r0, r0 /* incremment */
25 ori r4, r0, TOPHYS(_fdt_start) /* save bram context */
26 ori r3, r0, (0x4000 - 4)
27_copy_fdt:
28 lw r12, r7, r11 /* r12 = r7 + r11 */
29 sw r12, r4, r11 /* addr[r4 + r11] = r12 */
30 addik r11, r11, 4 /* increment counting */
31 bgtid r3, _copy_fdt /* loop for all entries */
32 addik r3, r3, -4 /* descrement loop */
33no_fdt_arg:
34
35 /* Initialize small data anchors */
36 la r13, r0, _KERNEL_SDA_BASE_
37 la r2, r0, _KERNEL_SDA2_BASE_
38
39 /* Initialize stack pointer */
40 la r1, r0, init_thread_union + THREAD_SIZE - 4
41
42 /* Initialize r31 with current task address */
43 la r31, r0, init_task
44
45 /*
46 * Call platform dependent initialize function.
47 * Please see $(ARCH)/mach-$(SUBARCH)/setup.c for
48 * the function.
49 */
50 la r8, r0, machine_early_init
51 brald r15, r8
52 nop
53
54 la r15, r0, machine_halt
55 braid start_kernel
56 nop
diff --git a/arch/microblaze/kernel/heartbeat.c b/arch/microblaze/kernel/heartbeat.c
new file mode 100644
index 000000000000..1bdf20222b92
--- /dev/null
+++ b/arch/microblaze/kernel/heartbeat.c
@@ -0,0 +1,67 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/sched.h>
12#include <linux/io.h>
13
14#include <asm/setup.h>
15#include <asm/page.h>
16#include <asm/prom.h>
17
18static unsigned int base_addr;
19
20void heartbeat(void)
21{
22 static unsigned int cnt, period, dist;
23
24 if (base_addr) {
25 if (cnt == 0 || cnt == dist)
26 out_be32(base_addr, 1);
27 else if (cnt == 7 || cnt == dist + 7)
28 out_be32(base_addr, 0);
29
30 if (++cnt > period) {
31 cnt = 0;
32 /*
33 * The hyperbolic function below modifies the heartbeat
34 * period length in dependency of the current (5min)
35 * load. It goes through the points f(0)=126, f(1)=86,
36 * f(5)=51, f(inf)->30.
37 */
38 period = ((672 << FSHIFT) / (5 * avenrun[0] +
39 (7 << FSHIFT))) + 30;
40 dist = period / 4;
41 }
42 }
43}
44
45void setup_heartbeat(void)
46{
47 struct device_node *gpio = NULL;
48 int j;
49 char *gpio_list[] = {
50 "xlnx,xps-gpio-1.00.a",
51 "xlnx,opb-gpio-1.00.a",
52 NULL
53 };
54
55 for (j = 0; gpio_list[j] != NULL; j++) {
56 gpio = of_find_compatible_node(NULL, NULL, gpio_list[j]);
57 if (gpio)
58 break;
59 }
60
61 base_addr = *(int *) of_get_property(gpio, "reg", NULL);
62 base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE);
63 printk(KERN_NOTICE "Heartbeat GPIO at 0x%x\n", base_addr);
64
65 if (*(int *) of_get_property(gpio, "xlnx,is-bidir", NULL))
66 out_be32(base_addr + 4, 0); /* GPIO is configured as output */
67}
diff --git a/arch/microblaze/kernel/hw_exception_handler.S b/arch/microblaze/kernel/hw_exception_handler.S
new file mode 100644
index 000000000000..cf9486d99838
--- /dev/null
+++ b/arch/microblaze/kernel/hw_exception_handler.S
@@ -0,0 +1,458 @@
1/*
2 * Exception handling for Microblaze
3 *
4 * Rewriten interrupt handling
5 *
6 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
7 * Copyright (C) 2008-2009 PetaLogix
8 *
9 * uClinux customisation (C) 2005 John Williams
10 *
11 * MMU code derived from arch/ppc/kernel/head_4xx.S:
12 * Copyright (C) 1995-1996 Gary Thomas <gdt@linuxppc.org>
13 * Initial PowerPC version.
14 * Copyright (C) 1996 Cort Dougan <cort@cs.nmt.edu>
15 * Rewritten for PReP
16 * Copyright (C) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
17 * Low-level exception handers, MMU support, and rewrite.
18 * Copyright (C) 1997 Dan Malek <dmalek@jlc.net>
19 * PowerPC 8xx modifications.
20 * Copyright (C) 1998-1999 TiVo, Inc.
21 * PowerPC 403GCX modifications.
22 * Copyright (C) 1999 Grant Erickson <grant@lcse.umn.edu>
23 * PowerPC 403GCX/405GP modifications.
24 * Copyright 2000 MontaVista Software Inc.
25 * PPC405 modifications
26 * PowerPC 403GCX/405GP modifications.
27 * Author: MontaVista Software, Inc.
28 * frank_rowand@mvista.com or source@mvista.com
29 * debbie_chu@mvista.com
30 *
31 * Original code
32 * Copyright (C) 2004 Xilinx, Inc.
33 *
34 * This program is free software; you can redistribute it and/or modify it
35 * under the terms of the GNU General Public License version 2 as published
36 * by the Free Software Foundation.
37 */
38
39/*
40 * Here are the handlers which don't require enabling translation
41 * and calling other kernel code thus we can keep their design very simple
42 * and do all processing in real mode. All what they need is a valid current
43 * (that is an issue for the CONFIG_REGISTER_TASK_PTR case)
44 * This handlers use r3,r4,r5,r6 and optionally r[current] to work therefore
45 * these registers are saved/restored
46 * The handlers which require translation are in entry.S --KAA
47 *
48 * Microblaze HW Exception Handler
49 * - Non self-modifying exception handler for the following exception conditions
50 * - Unalignment
51 * - Instruction bus error
52 * - Data bus error
53 * - Illegal instruction opcode
54 * - Divide-by-zero
55 *
56 * Note we disable interrupts during exception handling, otherwise we will
57 * possibly get multiple re-entrancy if interrupt handles themselves cause
58 * exceptions. JW
59 */
60
61#include <asm/exceptions.h>
62#include <asm/unistd.h>
63#include <asm/page.h>
64
65#include <asm/entry.h>
66#include <asm/current.h>
67#include <linux/linkage.h>
68
69#include <asm/mmu.h>
70#include <asm/pgtable.h>
71#include <asm/asm-offsets.h>
72
73/* Helpful Macros */
74#define EX_HANDLER_STACK_SIZ (4*19)
75#define NUM_TO_REG(num) r ## num
76
77#define LWREG_NOP \
78 bri ex_handler_unhandled; \
79 nop;
80
81#define SWREG_NOP \
82 bri ex_handler_unhandled; \
83 nop;
84
85/* FIXME this is weird - for noMMU kernel is not possible to use brid
86 * instruction which can shorten executed time
87 */
88
89/* r3 is the source */
90#define R3_TO_LWREG_V(regnum) \
91 swi r3, r1, 4 * regnum; \
92 bri ex_handler_done;
93
94/* r3 is the source */
95#define R3_TO_LWREG(regnum) \
96 or NUM_TO_REG (regnum), r0, r3; \
97 bri ex_handler_done;
98
99/* r3 is the target */
100#define SWREG_TO_R3_V(regnum) \
101 lwi r3, r1, 4 * regnum; \
102 bri ex_sw_tail;
103
104/* r3 is the target */
105#define SWREG_TO_R3(regnum) \
106 or r3, r0, NUM_TO_REG (regnum); \
107 bri ex_sw_tail;
108
109.extern other_exception_handler /* Defined in exception.c */
110
111/*
112 * hw_exception_handler - Handler for exceptions
113 *
114 * Exception handler notes:
115 * - Handles all exceptions
116 * - Does not handle unaligned exceptions during load into r17, r1, r0.
117 * - Does not handle unaligned exceptions during store from r17 (cannot be
118 * done) and r1 (slows down common case)
119 *
120 * Relevant register structures
121 *
122 * EAR - |----|----|----|----|----|----|----|----|
123 * - < ## 32 bit faulting address ## >
124 *
125 * ESR - |----|----|----|----|----| - | - |-----|-----|
126 * - W S REG EXC
127 *
128 *
129 * STACK FRAME STRUCTURE (for NO_MMU)
130 * ---------------------------------
131 *
132 * +-------------+ + 0
133 * | MSR |
134 * +-------------+ + 4
135 * | r1 |
136 * | . |
137 * | . |
138 * | . |
139 * | . |
140 * | r18 |
141 * +-------------+ + 76
142 * | . |
143 * | . |
144 *
145 * NO_MMU kernel use the same r0_ram pointed space - look to vmlinux.lds.S
146 * which is used for storing register values - old style was, that value were
147 * stored in stack but in case of failure you lost information about register.
148 * Currently you can see register value in memory in specific place.
149 * In compare to with previous solution the speed should be the same.
150 *
151 * MMU exception handler has different handling compare to no MMU kernel.
152 * Exception handler use jump table for directing of what happen. For MMU kernel
153 * is this approach better because MMU relate exception are handled by asm code
154 * in this file. In compare to with MMU expect of unaligned exception
155 * is everything handled by C code.
156 */
157
158/*
159 * every of these handlers is entered having R3/4/5/6/11/current saved on stack
160 * and clobbered so care should be taken to restore them if someone is going to
161 * return from exception
162 */
163
164/* wrappers to restore state before coming to entry.S */
165
166.global _hw_exception_handler
167.section .text
168.align 4
169.ent _hw_exception_handler
170_hw_exception_handler:
171 addik r1, r1, -(EX_HANDLER_STACK_SIZ); /* Create stack frame */
172 swi r3, r1, PT_R3
173 swi r4, r1, PT_R4
174 swi r5, r1, PT_R5
175 swi r6, r1, PT_R6
176
177 mfs r5, rmsr;
178 nop
179 swi r5, r1, 0;
180 mfs r4, rbtr /* Save BTR before jumping to handler */
181 nop
182 mfs r3, resr
183 nop
184
185 andi r5, r3, 0x1000; /* Check ESR[DS] */
186 beqi r5, not_in_delay_slot; /* Branch if ESR[DS] not set */
187 mfs r17, rbtr; /* ESR[DS] set - return address in BTR */
188 nop
189not_in_delay_slot:
190 swi r17, r1, PT_R17
191
192 andi r5, r3, 0x1F; /* Extract ESR[EXC] */
193
194 /* Exceptions enabled here. This will allow nested exceptions */
195 mfs r6, rmsr;
196 nop
197 swi r6, r1, 0; /* RMSR_OFFSET */
198 ori r6, r6, 0x100; /* Turn ON the EE bit */
199 andi r6, r6, ~2; /* Disable interrupts */
200 mts rmsr, r6;
201 nop
202
203 xori r6, r5, 1; /* 00001 = Unaligned Exception */
204 /* Jump to unalignment exception handler */
205 beqi r6, handle_unaligned_ex;
206
207handle_other_ex: /* Handle Other exceptions here */
208 /* Save other volatiles before we make procedure calls below */
209 swi r7, r1, PT_R7
210 swi r8, r1, PT_R8
211 swi r9, r1, PT_R9
212 swi r10, r1, PT_R10
213 swi r11, r1, PT_R11
214 swi r12, r1, PT_R12
215 swi r14, r1, PT_R14
216 swi r15, r1, PT_R15
217 swi r18, r1, PT_R18
218
219 or r5, r1, r0
220 andi r6, r3, 0x1F; /* Load ESR[EC] */
221 lwi r7, r0, PER_CPU(KM) /* MS: saving current kernel mode to regs */
222 swi r7, r1, PT_MODE
223 mfs r7, rfsr
224 nop
225 addk r8, r17, r0; /* Load exception address */
226 bralid r15, full_exception; /* Branch to the handler */
227 nop;
228
229 /*
230 * Trigger execution of the signal handler by enabling
231 * interrupts and calling an invalid syscall.
232 */
233 mfs r5, rmsr;
234 nop
235 ori r5, r5, 2;
236 mts rmsr, r5; /* enable interrupt */
237 nop
238 addi r12, r0, __NR_syscalls;
239 brki r14, 0x08;
240 mfs r5, rmsr; /* disable interrupt */
241 nop
242 andi r5, r5, ~2;
243 mts rmsr, r5;
244 nop
245
246 lwi r7, r1, PT_R7
247 lwi r8, r1, PT_R8
248 lwi r9, r1, PT_R9
249 lwi r10, r1, PT_R10
250 lwi r11, r1, PT_R11
251 lwi r12, r1, PT_R12
252 lwi r14, r1, PT_R14
253 lwi r15, r1, PT_R15
254 lwi r18, r1, PT_R18
255
256 bri ex_handler_done; /* Complete exception handling */
257
258/* 0x01 - Unaligned data access exception
259 * This occurs when a word access is not aligned on a word boundary,
260 * or when a 16-bit access is not aligned on a 16-bit boundary.
261 * This handler perform the access, and returns, except for MMU when
262 * the unaligned address is last on a 4k page or the physical address is
263 * not found in the page table, in which case unaligned_data_trap is called.
264 */
265handle_unaligned_ex:
266 /* Working registers already saved: R3, R4, R5, R6
267 * R3 = ESR
268 * R4 = BTR
269 */
270 mfs r4, rear;
271 nop
272
273 andi r6, r3, 0x3E0; /* Mask and extract the register operand */
274 srl r6, r6; /* r6 >> 5 */
275 srl r6, r6;
276 srl r6, r6;
277 srl r6, r6;
278 srl r6, r6;
279 /* Store the register operand in a temporary location */
280 sbi r6, r0, TOPHYS(ex_reg_op);
281
282 andi r6, r3, 0x400; /* Extract ESR[S] */
283 bnei r6, ex_sw;
284ex_lw:
285 andi r6, r3, 0x800; /* Extract ESR[W] */
286 beqi r6, ex_lhw;
287 lbui r5, r4, 0; /* Exception address in r4 */
288 /* Load a word, byte-by-byte from destination address
289 and save it in tmp space */
290 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0);
291 lbui r5, r4, 1;
292 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1);
293 lbui r5, r4, 2;
294 sbi r5, r0, TOPHYS(ex_tmp_data_loc_2);
295 lbui r5, r4, 3;
296 sbi r5, r0, TOPHYS(ex_tmp_data_loc_3);
297 /* Get the destination register value into r3 */
298 lwi r3, r0, TOPHYS(ex_tmp_data_loc_0);
299 bri ex_lw_tail;
300ex_lhw:
301 lbui r5, r4, 0; /* Exception address in r4 */
302 /* Load a half-word, byte-by-byte from destination
303 address and save it in tmp space */
304 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0);
305 lbui r5, r4, 1;
306 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1);
307 /* Get the destination register value into r3 */
308 lhui r3, r0, TOPHYS(ex_tmp_data_loc_0);
309ex_lw_tail:
310 /* Get the destination register number into r5 */
311 lbui r5, r0, TOPHYS(ex_reg_op);
312 /* Form load_word jump table offset (lw_table + (8 * regnum)) */
313 la r6, r0, TOPHYS(lw_table);
314 addk r5, r5, r5;
315 addk r5, r5, r5;
316 addk r5, r5, r5;
317 addk r5, r5, r6;
318 bra r5;
319ex_lw_end: /* Exception handling of load word, ends */
320ex_sw:
321 /* Get the destination register number into r5 */
322 lbui r5, r0, TOPHYS(ex_reg_op);
323 /* Form store_word jump table offset (sw_table + (8 * regnum)) */
324 la r6, r0, TOPHYS(sw_table);
325 add r5, r5, r5;
326 add r5, r5, r5;
327 add r5, r5, r5;
328 add r5, r5, r6;
329 bra r5;
330ex_sw_tail:
331 mfs r6, resr;
332 nop
333 andi r6, r6, 0x800; /* Extract ESR[W] */
334 beqi r6, ex_shw;
335 /* Get the word - delay slot */
336 swi r3, r0, TOPHYS(ex_tmp_data_loc_0);
337 /* Store the word, byte-by-byte into destination address */
338 lbui r3, r0, TOPHYS(ex_tmp_data_loc_0);
339 sbi r3, r4, 0;
340 lbui r3, r0, TOPHYS(ex_tmp_data_loc_1);
341 sbi r3, r4, 1;
342 lbui r3, r0, TOPHYS(ex_tmp_data_loc_2);
343 sbi r3, r4, 2;
344 lbui r3, r0, TOPHYS(ex_tmp_data_loc_3);
345 sbi r3, r4, 3;
346 bri ex_handler_done;
347
348ex_shw:
349 /* Store the lower half-word, byte-by-byte into destination address */
350 swi r3, r0, TOPHYS(ex_tmp_data_loc_0);
351 lbui r3, r0, TOPHYS(ex_tmp_data_loc_2);
352 sbi r3, r4, 0;
353 lbui r3, r0, TOPHYS(ex_tmp_data_loc_3);
354 sbi r3, r4, 1;
355ex_sw_end: /* Exception handling of store word, ends. */
356
357ex_handler_done:
358 lwi r5, r1, 0 /* RMSR */
359 mts rmsr, r5
360 nop
361 lwi r3, r1, PT_R3
362 lwi r4, r1, PT_R4
363 lwi r5, r1, PT_R5
364 lwi r6, r1, PT_R6
365 lwi r17, r1, PT_R17
366
367 rted r17, 0
368 addik r1, r1, (EX_HANDLER_STACK_SIZ); /* Restore stack frame */
369
370.end _hw_exception_handler
371
372ex_handler_unhandled:
373/* FIXME add handle function for unhandled exception - dump register */
374 bri 0
375
376.section .text
377.align 4
378lw_table:
379lw_r0: R3_TO_LWREG (0);
380lw_r1: LWREG_NOP;
381lw_r2: R3_TO_LWREG (2);
382lw_r3: R3_TO_LWREG_V (3);
383lw_r4: R3_TO_LWREG_V (4);
384lw_r5: R3_TO_LWREG_V (5);
385lw_r6: R3_TO_LWREG_V (6);
386lw_r7: R3_TO_LWREG (7);
387lw_r8: R3_TO_LWREG (8);
388lw_r9: R3_TO_LWREG (9);
389lw_r10: R3_TO_LWREG (10);
390lw_r11: R3_TO_LWREG (11);
391lw_r12: R3_TO_LWREG (12);
392lw_r13: R3_TO_LWREG (13);
393lw_r14: R3_TO_LWREG (14);
394lw_r15: R3_TO_LWREG (15);
395lw_r16: R3_TO_LWREG (16);
396lw_r17: LWREG_NOP;
397lw_r18: R3_TO_LWREG (18);
398lw_r19: R3_TO_LWREG (19);
399lw_r20: R3_TO_LWREG (20);
400lw_r21: R3_TO_LWREG (21);
401lw_r22: R3_TO_LWREG (22);
402lw_r23: R3_TO_LWREG (23);
403lw_r24: R3_TO_LWREG (24);
404lw_r25: R3_TO_LWREG (25);
405lw_r26: R3_TO_LWREG (26);
406lw_r27: R3_TO_LWREG (27);
407lw_r28: R3_TO_LWREG (28);
408lw_r29: R3_TO_LWREG (29);
409lw_r30: R3_TO_LWREG (30);
410lw_r31: R3_TO_LWREG (31);
411
412sw_table:
413sw_r0: SWREG_TO_R3 (0);
414sw_r1: SWREG_NOP;
415sw_r2: SWREG_TO_R3 (2);
416sw_r3: SWREG_TO_R3_V (3);
417sw_r4: SWREG_TO_R3_V (4);
418sw_r5: SWREG_TO_R3_V (5);
419sw_r6: SWREG_TO_R3_V (6);
420sw_r7: SWREG_TO_R3 (7);
421sw_r8: SWREG_TO_R3 (8);
422sw_r9: SWREG_TO_R3 (9);
423sw_r10: SWREG_TO_R3 (10);
424sw_r11: SWREG_TO_R3 (11);
425sw_r12: SWREG_TO_R3 (12);
426sw_r13: SWREG_TO_R3 (13);
427sw_r14: SWREG_TO_R3 (14);
428sw_r15: SWREG_TO_R3 (15);
429sw_r16: SWREG_TO_R3 (16);
430sw_r17: SWREG_NOP;
431sw_r18: SWREG_TO_R3 (18);
432sw_r19: SWREG_TO_R3 (19);
433sw_r20: SWREG_TO_R3 (20);
434sw_r21: SWREG_TO_R3 (21);
435sw_r22: SWREG_TO_R3 (22);
436sw_r23: SWREG_TO_R3 (23);
437sw_r24: SWREG_TO_R3 (24);
438sw_r25: SWREG_TO_R3 (25);
439sw_r26: SWREG_TO_R3 (26);
440sw_r27: SWREG_TO_R3 (27);
441sw_r28: SWREG_TO_R3 (28);
442sw_r29: SWREG_TO_R3 (29);
443sw_r30: SWREG_TO_R3 (30);
444sw_r31: SWREG_TO_R3 (31);
445
446/* Temporary data structures used in the handler */
447.section .data
448.align 4
449ex_tmp_data_loc_0:
450 .byte 0
451ex_tmp_data_loc_1:
452 .byte 0
453ex_tmp_data_loc_2:
454 .byte 0
455ex_tmp_data_loc_3:
456 .byte 0
457ex_reg_op:
458 .byte 0
diff --git a/arch/microblaze/kernel/init_task.c b/arch/microblaze/kernel/init_task.c
new file mode 100644
index 000000000000..48eb9fb255fa
--- /dev/null
+++ b/arch/microblaze/kernel/init_task.c
@@ -0,0 +1,29 @@
1/*
2 * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/module.h>
12#include <linux/sched.h>
13#include <linux/init_task.h>
14#include <linux/fs.h>
15#include <linux/mqueue.h>
16
17#include <asm/pgtable.h>
18
19static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
20static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
21struct mm_struct init_mm = INIT_MM(init_mm);
22EXPORT_SYMBOL(init_mm);
23
24union thread_union init_thread_union
25 __attribute__((__section__(".data.init_task"))) =
26{ INIT_THREAD_INFO(init_task) };
27
28struct task_struct init_task = INIT_TASK(init_task);
29EXPORT_SYMBOL(init_task);
diff --git a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c
new file mode 100644
index 000000000000..a69d3e3c2fd4
--- /dev/null
+++ b/arch/microblaze/kernel/intc.c
@@ -0,0 +1,172 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/irq.h>
13#include <asm/page.h>
14#include <linux/io.h>
15
16#include <asm/prom.h>
17#include <asm/irq.h>
18
19#ifdef CONFIG_SELFMOD_INTC
20#include <asm/selfmod.h>
21#define INTC_BASE BARRIER_BASE_ADDR
22#else
23static unsigned int intc_baseaddr;
24#define INTC_BASE intc_baseaddr
25#endif
26
27unsigned int nr_irq;
28
29/* No one else should require these constants, so define them locally here. */
30#define ISR 0x00 /* Interrupt Status Register */
31#define IPR 0x04 /* Interrupt Pending Register */
32#define IER 0x08 /* Interrupt Enable Register */
33#define IAR 0x0c /* Interrupt Acknowledge Register */
34#define SIE 0x10 /* Set Interrupt Enable bits */
35#define CIE 0x14 /* Clear Interrupt Enable bits */
36#define IVR 0x18 /* Interrupt Vector Register */
37#define MER 0x1c /* Master Enable Register */
38
39#define MER_ME (1<<0)
40#define MER_HIE (1<<1)
41
42static void intc_enable_or_unmask(unsigned int irq)
43{
44 pr_debug("enable_or_unmask: %d\n", irq);
45 out_be32(INTC_BASE + SIE, 1 << irq);
46}
47
48static void intc_disable_or_mask(unsigned int irq)
49{
50 pr_debug("disable: %d\n", irq);
51 out_be32(INTC_BASE + CIE, 1 << irq);
52}
53
54static void intc_ack(unsigned int irq)
55{
56 pr_debug("ack: %d\n", irq);
57 out_be32(INTC_BASE + IAR, 1 << irq);
58}
59
60static void intc_mask_ack(unsigned int irq)
61{
62 unsigned long mask = 1 << irq;
63 pr_debug("disable_and_ack: %d\n", irq);
64 out_be32(INTC_BASE + CIE, mask);
65 out_be32(INTC_BASE + IAR, mask);
66}
67
68static void intc_end(unsigned int irq)
69{
70 unsigned long mask = 1 << irq;
71 pr_debug("end: %d\n", irq);
72 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
73 out_be32(INTC_BASE + SIE, mask);
74 /* ack level sensitive intr */
75 if (irq_desc[irq].status & IRQ_LEVEL)
76 out_be32(INTC_BASE + IAR, mask);
77 }
78}
79
80static struct irq_chip intc_dev = {
81 .name = "Xilinx INTC",
82 .unmask = intc_enable_or_unmask,
83 .mask = intc_disable_or_mask,
84 .ack = intc_ack,
85 .mask_ack = intc_mask_ack,
86 .end = intc_end,
87};
88
89unsigned int get_irq(struct pt_regs *regs)
90{
91 int irq;
92
93 /*
94 * NOTE: This function is the one that needs to be improved in
95 * order to handle multiple interrupt controllers. It currently
96 * is hardcoded to check for interrupts only on the first INTC.
97 */
98 irq = in_be32(INTC_BASE + IVR);
99 pr_debug("get_irq: %d\n", irq);
100
101 return irq;
102}
103
104void __init init_IRQ(void)
105{
106 u32 i, j, intr_type;
107 struct device_node *intc = NULL;
108#ifdef CONFIG_SELFMOD_INTC
109 unsigned int intc_baseaddr = 0;
110 static int arr_func[] = {
111 (int)&get_irq,
112 (int)&intc_enable_or_unmask,
113 (int)&intc_disable_or_mask,
114 (int)&intc_mask_ack,
115 (int)&intc_ack,
116 (int)&intc_end,
117 0
118 };
119#endif
120 static char *intc_list[] = {
121 "xlnx,xps-intc-1.00.a",
122 "xlnx,opb-intc-1.00.c",
123 "xlnx,opb-intc-1.00.b",
124 "xlnx,opb-intc-1.00.a",
125 NULL
126 };
127
128 for (j = 0; intc_list[j] != NULL; j++) {
129 intc = of_find_compatible_node(NULL, NULL, intc_list[j]);
130 if (intc)
131 break;
132 }
133
134 intc_baseaddr = *(int *) of_get_property(intc, "reg", NULL);
135 intc_baseaddr = (unsigned long) ioremap(intc_baseaddr, PAGE_SIZE);
136 nr_irq = *(int *) of_get_property(intc, "xlnx,num-intr-inputs", NULL);
137
138 intr_type =
139 *(int *) of_get_property(intc, "xlnx,kind-of-intr", NULL);
140 if (intr_type >= (1 << nr_irq))
141 printk(KERN_INFO " ERROR: Mishmash in king-of-intr param\n");
142
143#ifdef CONFIG_SELFMOD_INTC
144 selfmod_function((int *) arr_func, intc_baseaddr);
145#endif
146 printk(KERN_INFO "%s #0 at 0x%08x, num_irq=%d, edge=0x%x\n",
147 intc_list[j], intc_baseaddr, nr_irq, intr_type);
148
149 /*
150 * Disable all external interrupts until they are
151 * explicity requested.
152 */
153 out_be32(intc_baseaddr + IER, 0);
154
155 /* Acknowledge any pending interrupts just in case. */
156 out_be32(intc_baseaddr + IAR, 0xffffffff);
157
158 /* Turn on the Master Enable. */
159 out_be32(intc_baseaddr + MER, MER_HIE | MER_ME);
160
161 for (i = 0; i < nr_irq; ++i) {
162 if (intr_type & (0x00000001 << i)) {
163 set_irq_chip_and_handler_name(i, &intc_dev,
164 handle_edge_irq, intc_dev.name);
165 irq_desc[i].status &= ~IRQ_LEVEL;
166 } else {
167 set_irq_chip_and_handler_name(i, &intc_dev,
168 handle_level_irq, intc_dev.name);
169 irq_desc[i].status |= IRQ_LEVEL;
170 }
171 }
172}
diff --git a/arch/microblaze/kernel/irq.c b/arch/microblaze/kernel/irq.c
new file mode 100644
index 000000000000..f688ee93e3b9
--- /dev/null
+++ b/arch/microblaze/kernel/irq.c
@@ -0,0 +1,104 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/hardirq.h>
14#include <linux/interrupt.h>
15#include <linux/irqflags.h>
16#include <linux/seq_file.h>
17#include <linux/kernel_stat.h>
18#include <linux/irq.h>
19
20#include <asm/prom.h>
21
22unsigned int irq_of_parse_and_map(struct device_node *dev, int index)
23{
24 struct of_irq oirq;
25
26 if (of_irq_map_one(dev, index, &oirq))
27 return NO_IRQ;
28
29 return oirq.specifier[0];
30}
31EXPORT_SYMBOL_GPL(irq_of_parse_and_map);
32
33/*
34 * 'what should we do if we get a hw irq event on an illegal vector'.
35 * each architecture has to answer this themselves.
36 */
37void ack_bad_irq(unsigned int irq)
38{
39 printk(KERN_WARNING "unexpected IRQ trap at vector %02x\n", irq);
40}
41
42static u32 concurrent_irq;
43
44void do_IRQ(struct pt_regs *regs)
45{
46 unsigned int irq;
47 struct pt_regs *old_regs = set_irq_regs(regs);
48
49 irq_enter();
50 irq = get_irq(regs);
51next_irq:
52 BUG_ON(irq == -1U);
53 generic_handle_irq(irq);
54
55 irq = get_irq(regs);
56 if (irq != -1U) {
57 pr_debug("next irq: %d\n", irq);
58 ++concurrent_irq;
59 goto next_irq;
60 }
61
62 irq_exit();
63 set_irq_regs(old_regs);
64}
65
66int show_interrupts(struct seq_file *p, void *v)
67{
68 int i = *(loff_t *) v, j;
69 struct irqaction *action;
70 unsigned long flags;
71
72 if (i == 0) {
73 seq_printf(p, " ");
74 for_each_online_cpu(j)
75 seq_printf(p, "CPU%-8d", j);
76 seq_putc(p, '\n');
77 }
78
79 if (i < nr_irq) {
80 spin_lock_irqsave(&irq_desc[i].lock, flags);
81 action = irq_desc[i].action;
82 if (!action)
83 goto skip;
84 seq_printf(p, "%3d: ", i);
85#ifndef CONFIG_SMP
86 seq_printf(p, "%10u ", kstat_irqs(i));
87#else
88 for_each_online_cpu(j)
89 seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
90#endif
91 seq_printf(p, " %8s", irq_desc[i].status &
92 IRQ_LEVEL ? "level" : "edge");
93 seq_printf(p, " %8s", irq_desc[i].chip->name);
94 seq_printf(p, " %s", action->name);
95
96 for (action = action->next; action; action = action->next)
97 seq_printf(p, ", %s", action->name);
98
99 seq_putc(p, '\n');
100skip:
101 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
102 }
103 return 0;
104}
diff --git a/arch/microblaze/kernel/microblaze_ksyms.c b/arch/microblaze/kernel/microblaze_ksyms.c
new file mode 100644
index 000000000000..5f71790e3c3c
--- /dev/null
+++ b/arch/microblaze/kernel/microblaze_ksyms.c
@@ -0,0 +1,47 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
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#include <linux/module.h>
11#include <linux/string.h>
12#include <linux/cryptohash.h>
13#include <linux/delay.h>
14#include <linux/in6.h>
15#include <linux/syscalls.h>
16
17#include <asm/checksum.h>
18#include <linux/io.h>
19#include <asm/page.h>
20#include <asm/system.h>
21#include <linux/uaccess.h>
22
23/*
24 * libgcc functions - functions that are used internally by the
25 * compiler... (prototypes are not correct though, but that
26 * doesn't really matter since they're not versioned).
27 */
28extern void __ashldi3(void);
29EXPORT_SYMBOL(__ashldi3);
30extern void __ashrdi3(void);
31EXPORT_SYMBOL(__ashrdi3);
32extern void __divsi3(void);
33EXPORT_SYMBOL(__divsi3);
34extern void __lshrdi3(void);
35EXPORT_SYMBOL(__lshrdi3);
36extern void __modsi3(void);
37EXPORT_SYMBOL(__modsi3);
38extern void __mulsi3(void);
39EXPORT_SYMBOL(__mulsi3);
40extern void __muldi3(void);
41EXPORT_SYMBOL(__muldi3);
42extern void __ucmpdi2(void);
43EXPORT_SYMBOL(__ucmpdi2);
44extern void __udivsi3(void);
45EXPORT_SYMBOL(__udivsi3);
46extern void __umodsi3(void);
47EXPORT_SYMBOL(__umodsi3);
diff --git a/arch/microblaze/kernel/module.c b/arch/microblaze/kernel/module.c
new file mode 100644
index 000000000000..51414171326f
--- /dev/null
+++ b/arch/microblaze/kernel/module.c
@@ -0,0 +1,151 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
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#include <linux/module.h>
11#include <linux/moduleloader.h>
12#include <linux/kernel.h>
13#include <linux/elf.h>
14#include <linux/vmalloc.h>
15#include <linux/slab.h>
16#include <linux/fs.h>
17#include <linux/string.h>
18
19#include <asm/pgtable.h>
20
21void *module_alloc(unsigned long size)
22{
23 void *ret;
24 ret = (size == 0) ? NULL : vmalloc(size);
25 pr_debug("module_alloc (%08lx@%08lx)\n", size, (unsigned long int)ret);
26 return ret;
27}
28
29void module_free(struct module *module, void *region)
30{
31 pr_debug("module_free(%s,%08lx)\n", module->name,
32 (unsigned long)region);
33 vfree(region);
34}
35
36int module_frob_arch_sections(Elf_Ehdr *hdr,
37 Elf_Shdr *sechdrs,
38 char *secstrings,
39 struct module *mod)
40{
41 return 0;
42}
43
44int apply_relocate(Elf32_Shdr *sechdrs, const char *strtab,
45 unsigned int symindex, unsigned int relsec, struct module *module)
46{
47 printk(KERN_ERR "module %s: ADD RELOCATION unsupported\n",
48 module->name);
49 return -ENOEXEC;
50}
51
52int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
53 unsigned int symindex, unsigned int relsec, struct module *module)
54{
55
56 unsigned int i;
57 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr;
58 Elf32_Sym *sym;
59 unsigned long int *location;
60 unsigned long int locoffs;
61 unsigned long int value;
62#if __GNUC__ < 4
63 unsigned long int old_value;
64#endif
65
66 pr_debug("Applying add relocation section %u to %u\n",
67 relsec, sechdrs[relsec].sh_info);
68
69 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) {
70
71 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr +
72 rela[i].r_offset;
73 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr +
74 ELF32_R_SYM(rela[i].r_info);
75 value = sym->st_value + rela[i].r_addend;
76
77 switch (ELF32_R_TYPE(rela[i].r_info)) {
78
79 /*
80 * Be careful! mb-gcc / mb-ld splits the relocs between the
81 * text and the reloc table. In general this means we must
82 * read the current contents of (*location), add any offset
83 * then store the result back in
84 */
85
86 case R_MICROBLAZE_32:
87#if __GNUC__ < 4
88 old_value = *location;
89 *location = value + old_value;
90
91 pr_debug("R_MICROBLAZE_32 (%08lx->%08lx)\n",
92 old_value, value);
93#else
94 *location = value;
95#endif
96 break;
97
98 case R_MICROBLAZE_64:
99#if __GNUC__ < 4
100 /* Split relocs only required/used pre gcc4.1.1 */
101 old_value = ((location[0] & 0x0000FFFF) << 16) |
102 (location[1] & 0x0000FFFF);
103 value += old_value;
104#endif
105 location[0] = (location[0] & 0xFFFF0000) |
106 (value >> 16);
107 location[1] = (location[1] & 0xFFFF0000) |
108 (value & 0xFFFF);
109#if __GNUC__ < 4
110 pr_debug("R_MICROBLAZE_64 (%08lx->%08lx)\n",
111 old_value, value);
112#endif
113 break;
114
115 case R_MICROBLAZE_64_PCREL:
116 locoffs = (location[0] & 0xFFFF) << 16 |
117 (location[1] & 0xFFFF);
118 value -= (unsigned long int)(location) + 4 +
119 locoffs;
120 location[0] = (location[0] & 0xFFFF0000) |
121 (value >> 16);
122 location[1] = (location[1] & 0xFFFF0000) |
123 (value & 0xFFFF);
124 pr_debug("R_MICROBLAZE_64_PCREL (%08lx)\n",
125 value);
126 break;
127
128 case R_MICROBLAZE_NONE:
129 pr_debug("R_MICROBLAZE_NONE\n");
130 break;
131
132 default:
133 printk(KERN_ERR "module %s: "
134 "Unknown relocation: %u\n",
135 module->name,
136 ELF32_R_TYPE(rela->r_info));
137 return -ENOEXEC;
138 }
139 }
140 return 0;
141}
142
143int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
144 struct module *module)
145{
146 return 0;
147}
148
149void module_arch_cleanup(struct module *mod)
150{
151}
diff --git a/arch/microblaze/kernel/of_device.c b/arch/microblaze/kernel/of_device.c
new file mode 100644
index 000000000000..9a0f7632c47c
--- /dev/null
+++ b/arch/microblaze/kernel/of_device.c
@@ -0,0 +1,113 @@
1#include <linux/string.h>
2#include <linux/kernel.h>
3#include <linux/of.h>
4#include <linux/init.h>
5#include <linux/module.h>
6#include <linux/mod_devicetable.h>
7#include <linux/slab.h>
8#include <linux/of_device.h>
9
10#include <linux/errno.h>
11
12void of_device_make_bus_id(struct of_device *dev)
13{
14 static atomic_t bus_no_reg_magic;
15 struct device_node *node = dev->node;
16 const u32 *reg;
17 u64 addr;
18 int magic;
19
20 /*
21 * For MMIO, get the physical address
22 */
23 reg = of_get_property(node, "reg", NULL);
24 if (reg) {
25 addr = of_translate_address(node, reg);
26 if (addr != OF_BAD_ADDR) {
27 dev_set_name(&dev->dev, "%llx.%s",
28 (unsigned long long)addr, node->name);
29 return;
30 }
31 }
32
33 /*
34 * No BusID, use the node name and add a globally incremented
35 * counter (and pray...)
36 */
37 magic = atomic_add_return(1, &bus_no_reg_magic);
38 dev_set_name(&dev->dev, "%s.%d", node->name, magic - 1);
39}
40EXPORT_SYMBOL(of_device_make_bus_id);
41
42struct of_device *of_device_alloc(struct device_node *np,
43 const char *bus_id,
44 struct device *parent)
45{
46 struct of_device *dev;
47
48 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
49 if (!dev)
50 return NULL;
51
52 dev->node = of_node_get(np);
53 dev->dev.dma_mask = &dev->dma_mask;
54 dev->dev.parent = parent;
55 dev->dev.release = of_release_dev;
56 dev->dev.archdata.of_node = np;
57
58 if (bus_id)
59 dev_set_name(&dev->dev, bus_id);
60 else
61 of_device_make_bus_id(dev);
62
63 return dev;
64}
65EXPORT_SYMBOL(of_device_alloc);
66
67int of_device_uevent(struct device *dev, struct kobj_uevent_env *env)
68{
69 struct of_device *ofdev;
70 const char *compat;
71 int seen = 0, cplen, sl;
72
73 if (!dev)
74 return -ENODEV;
75
76 ofdev = to_of_device(dev);
77
78 if (add_uevent_var(env, "OF_NAME=%s", ofdev->node->name))
79 return -ENOMEM;
80
81 if (add_uevent_var(env, "OF_TYPE=%s", ofdev->node->type))
82 return -ENOMEM;
83
84 /* Since the compatible field can contain pretty much anything
85 * it's not really legal to split it out with commas. We split it
86 * up using a number of environment variables instead. */
87
88 compat = of_get_property(ofdev->node, "compatible", &cplen);
89 while (compat && *compat && cplen > 0) {
90 if (add_uevent_var(env, "OF_COMPATIBLE_%d=%s", seen, compat))
91 return -ENOMEM;
92
93 sl = strlen(compat) + 1;
94 compat += sl;
95 cplen -= sl;
96 seen++;
97 }
98
99 if (add_uevent_var(env, "OF_COMPATIBLE_N=%d", seen))
100 return -ENOMEM;
101
102 /* modalias is trickier, we add it in 2 steps */
103 if (add_uevent_var(env, "MODALIAS="))
104 return -ENOMEM;
105 sl = of_device_get_modalias(ofdev, &env->buf[env->buflen-1],
106 sizeof(env->buf) - env->buflen);
107 if (sl >= (sizeof(env->buf) - env->buflen))
108 return -ENOMEM;
109 env->buflen += sl;
110
111 return 0;
112}
113EXPORT_SYMBOL(of_device_uevent);
diff --git a/arch/microblaze/kernel/of_platform.c b/arch/microblaze/kernel/of_platform.c
new file mode 100644
index 000000000000..acf4574d0f18
--- /dev/null
+++ b/arch/microblaze/kernel/of_platform.c
@@ -0,0 +1,201 @@
1/*
2 * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
3 * <benh@kernel.crashing.org>
4 * and Arnd Bergmann, IBM Corp.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 *
11 */
12
13#undef DEBUG
14
15#include <linux/string.h>
16#include <linux/kernel.h>
17#include <linux/init.h>
18#include <linux/module.h>
19#include <linux/mod_devicetable.h>
20#include <linux/slab.h>
21#include <linux/pci.h>
22#include <linux/of.h>
23#include <linux/of_device.h>
24#include <linux/of_platform.h>
25
26#include <linux/errno.h>
27#include <linux/topology.h>
28#include <asm/atomic.h>
29
30struct bus_type of_platform_bus_type = {
31 .uevent = of_device_uevent,
32};
33EXPORT_SYMBOL(of_platform_bus_type);
34
35static int __init of_bus_driver_init(void)
36{
37 return of_bus_type_init(&of_platform_bus_type, "of_platform");
38}
39postcore_initcall(of_bus_driver_init);
40
41struct of_device *of_platform_device_create(struct device_node *np,
42 const char *bus_id,
43 struct device *parent)
44{
45 struct of_device *dev;
46
47 dev = of_device_alloc(np, bus_id, parent);
48 if (!dev)
49 return NULL;
50
51 dev->dma_mask = 0xffffffffUL;
52 dev->dev.bus = &of_platform_bus_type;
53
54 /* We do not fill the DMA ops for platform devices by default.
55 * This is currently the responsibility of the platform code
56 * to do such, possibly using a device notifier
57 */
58
59 if (of_device_register(dev) != 0) {
60 of_device_free(dev);
61 return NULL;
62 }
63
64 return dev;
65}
66EXPORT_SYMBOL(of_platform_device_create);
67
68/**
69 * of_platform_bus_create - Create an OF device for a bus node and all its
70 * children. Optionally recursively instanciate matching busses.
71 * @bus: device node of the bus to instanciate
72 * @matches: match table, NULL to use the default, OF_NO_DEEP_PROBE to
73 * disallow recursive creation of child busses
74 */
75static int of_platform_bus_create(const struct device_node *bus,
76 const struct of_device_id *matches,
77 struct device *parent)
78{
79 struct device_node *child;
80 struct of_device *dev;
81 int rc = 0;
82
83 for_each_child_of_node(bus, child) {
84 pr_debug(" create child: %s\n", child->full_name);
85 dev = of_platform_device_create(child, NULL, parent);
86 if (dev == NULL)
87 rc = -ENOMEM;
88 else if (!of_match_node(matches, child))
89 continue;
90 if (rc == 0) {
91 pr_debug(" and sub busses\n");
92 rc = of_platform_bus_create(child, matches, &dev->dev);
93 }
94 if (rc) {
95 of_node_put(child);
96 break;
97 }
98 }
99 return rc;
100}
101
102
103/**
104 * of_platform_bus_probe - Probe the device-tree for platform busses
105 * @root: parent of the first level to probe or NULL for the root of the tree
106 * @matches: match table, NULL to use the default
107 * @parent: parent to hook devices from, NULL for toplevel
108 *
109 * Note that children of the provided root are not instanciated as devices
110 * unless the specified root itself matches the bus list and is not NULL.
111 */
112
113int of_platform_bus_probe(struct device_node *root,
114 const struct of_device_id *matches,
115 struct device *parent)
116{
117 struct device_node *child;
118 struct of_device *dev;
119 int rc = 0;
120
121 if (matches == NULL)
122 matches = of_default_bus_ids;
123 if (matches == OF_NO_DEEP_PROBE)
124 return -EINVAL;
125 if (root == NULL)
126 root = of_find_node_by_path("/");
127 else
128 of_node_get(root);
129
130 pr_debug("of_platform_bus_probe()\n");
131 pr_debug(" starting at: %s\n", root->full_name);
132
133 /* Do a self check of bus type, if there's a match, create
134 * children
135 */
136 if (of_match_node(matches, root)) {
137 pr_debug(" root match, create all sub devices\n");
138 dev = of_platform_device_create(root, NULL, parent);
139 if (dev == NULL) {
140 rc = -ENOMEM;
141 goto bail;
142 }
143 pr_debug(" create all sub busses\n");
144 rc = of_platform_bus_create(root, matches, &dev->dev);
145 goto bail;
146 }
147 for_each_child_of_node(root, child) {
148 if (!of_match_node(matches, child))
149 continue;
150
151 pr_debug(" match: %s\n", child->full_name);
152 dev = of_platform_device_create(child, NULL, parent);
153 if (dev == NULL)
154 rc = -ENOMEM;
155 else
156 rc = of_platform_bus_create(child, matches, &dev->dev);
157 if (rc) {
158 of_node_put(child);
159 break;
160 }
161 }
162 bail:
163 of_node_put(root);
164 return rc;
165}
166EXPORT_SYMBOL(of_platform_bus_probe);
167
168static int of_dev_node_match(struct device *dev, void *data)
169{
170 return to_of_device(dev)->node == data;
171}
172
173struct of_device *of_find_device_by_node(struct device_node *np)
174{
175 struct device *dev;
176
177 dev = bus_find_device(&of_platform_bus_type,
178 NULL, np, of_dev_node_match);
179 if (dev)
180 return to_of_device(dev);
181 return NULL;
182}
183EXPORT_SYMBOL(of_find_device_by_node);
184
185static int of_dev_phandle_match(struct device *dev, void *data)
186{
187 phandle *ph = data;
188 return to_of_device(dev)->node->linux_phandle == *ph;
189}
190
191struct of_device *of_find_device_by_phandle(phandle ph)
192{
193 struct device *dev;
194
195 dev = bus_find_device(&of_platform_bus_type,
196 NULL, &ph, of_dev_phandle_match);
197 if (dev)
198 return to_of_device(dev);
199 return NULL;
200}
201EXPORT_SYMBOL(of_find_device_by_phandle);
diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c
new file mode 100644
index 000000000000..07d4fa339eda
--- /dev/null
+++ b/arch/microblaze/kernel/process.c
@@ -0,0 +1,190 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/module.h>
12#include <linux/sched.h>
13#include <linux/pm.h>
14#include <linux/tick.h>
15#include <linux/bitops.h>
16#include <asm/system.h>
17#include <asm/pgalloc.h>
18
19void show_regs(struct pt_regs *regs)
20{
21 printk(KERN_INFO " Registers dump: mode=%X\r\n", regs->pt_mode);
22 printk(KERN_INFO " r1=%08lX, r2=%08lX, r3=%08lX, r4=%08lX\n",
23 regs->r1, regs->r2, regs->r3, regs->r4);
24 printk(KERN_INFO " r5=%08lX, r6=%08lX, r7=%08lX, r8=%08lX\n",
25 regs->r5, regs->r6, regs->r7, regs->r8);
26 printk(KERN_INFO " r9=%08lX, r10=%08lX, r11=%08lX, r12=%08lX\n",
27 regs->r9, regs->r10, regs->r11, regs->r12);
28 printk(KERN_INFO " r13=%08lX, r14=%08lX, r15=%08lX, r16=%08lX\n",
29 regs->r13, regs->r14, regs->r15, regs->r16);
30 printk(KERN_INFO " r17=%08lX, r18=%08lX, r19=%08lX, r20=%08lX\n",
31 regs->r17, regs->r18, regs->r19, regs->r20);
32 printk(KERN_INFO " r21=%08lX, r22=%08lX, r23=%08lX, r24=%08lX\n",
33 regs->r21, regs->r22, regs->r23, regs->r24);
34 printk(KERN_INFO " r25=%08lX, r26=%08lX, r27=%08lX, r28=%08lX\n",
35 regs->r25, regs->r26, regs->r27, regs->r28);
36 printk(KERN_INFO " r29=%08lX, r30=%08lX, r31=%08lX, rPC=%08lX\n",
37 regs->r29, regs->r30, regs->r31, regs->pc);
38 printk(KERN_INFO " msr=%08lX, ear=%08lX, esr=%08lX, fsr=%08lX\n",
39 regs->msr, regs->ear, regs->esr, regs->fsr);
40}
41
42void (*pm_idle)(void);
43void (*pm_power_off)(void) = NULL;
44EXPORT_SYMBOL(pm_power_off);
45
46static int hlt_counter = 1;
47
48void disable_hlt(void)
49{
50 hlt_counter++;
51}
52EXPORT_SYMBOL(disable_hlt);
53
54void enable_hlt(void)
55{
56 hlt_counter--;
57}
58EXPORT_SYMBOL(enable_hlt);
59
60static int __init nohlt_setup(char *__unused)
61{
62 hlt_counter = 1;
63 return 1;
64}
65__setup("nohlt", nohlt_setup);
66
67static int __init hlt_setup(char *__unused)
68{
69 hlt_counter = 0;
70 return 1;
71}
72__setup("hlt", hlt_setup);
73
74void default_idle(void)
75{
76 if (!hlt_counter) {
77 clear_thread_flag(TIF_POLLING_NRFLAG);
78 smp_mb__after_clear_bit();
79 local_irq_disable();
80 while (!need_resched())
81 cpu_sleep();
82 local_irq_enable();
83 set_thread_flag(TIF_POLLING_NRFLAG);
84 } else
85 while (!need_resched())
86 cpu_relax();
87}
88
89void cpu_idle(void)
90{
91 set_thread_flag(TIF_POLLING_NRFLAG);
92
93 /* endless idle loop with no priority at all */
94 while (1) {
95 void (*idle)(void) = pm_idle;
96
97 if (!idle)
98 idle = default_idle;
99
100 tick_nohz_stop_sched_tick(1);
101 while (!need_resched())
102 idle();
103 tick_nohz_restart_sched_tick();
104
105 preempt_enable_no_resched();
106 schedule();
107 preempt_disable();
108 check_pgt_cache();
109 }
110}
111
112void flush_thread(void)
113{
114}
115
116int copy_thread(unsigned long clone_flags, unsigned long usp,
117 unsigned long unused,
118 struct task_struct *p, struct pt_regs *regs)
119{
120 struct pt_regs *childregs = task_pt_regs(p);
121 struct thread_info *ti = task_thread_info(p);
122
123 *childregs = *regs;
124 if (user_mode(regs))
125 childregs->r1 = usp;
126 else
127 childregs->r1 = ((unsigned long) ti) + THREAD_SIZE;
128
129 memset(&ti->cpu_context, 0, sizeof(struct cpu_context));
130 ti->cpu_context.r1 = (unsigned long)childregs;
131 ti->cpu_context.msr = (unsigned long)childregs->msr;
132 ti->cpu_context.r15 = (unsigned long)ret_from_fork - 8;
133
134 if (clone_flags & CLONE_SETTLS)
135 ;
136
137 return 0;
138}
139
140/*
141 * Return saved PC of a blocked thread.
142 */
143unsigned long thread_saved_pc(struct task_struct *tsk)
144{
145 struct cpu_context *ctx =
146 &(((struct thread_info *)(tsk->stack))->cpu_context);
147
148 /* Check whether the thread is blocked in resume() */
149 if (in_sched_functions(ctx->r15))
150 return (unsigned long)ctx->r15;
151 else
152 return ctx->r14;
153}
154
155static void kernel_thread_helper(int (*fn)(void *), void *arg)
156{
157 fn(arg);
158 do_exit(-1);
159}
160
161int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
162{
163 struct pt_regs regs;
164
165 memset(&regs, 0, sizeof(regs));
166 /* store them in non-volatile registers */
167 regs.r5 = (unsigned long)fn;
168 regs.r6 = (unsigned long)arg;
169 local_save_flags(regs.msr);
170 regs.pc = (unsigned long)kernel_thread_helper;
171 regs.pt_mode = 1;
172
173 return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0,
174 &regs, 0, NULL, NULL);
175}
176
177unsigned long get_wchan(struct task_struct *p)
178{
179/* TBD (used by procfs) */
180 return 0;
181}
182
183/* Set up a thread for executing a new program */
184void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long usp)
185{
186 set_fs(USER_DS);
187 regs->pc = pc;
188 regs->r1 = usp;
189 regs->pt_mode = 0;
190}
diff --git a/arch/microblaze/kernel/prom.c b/arch/microblaze/kernel/prom.c
new file mode 100644
index 000000000000..34c48718061a
--- /dev/null
+++ b/arch/microblaze/kernel/prom.c
@@ -0,0 +1,1146 @@
1/*
2 * Procedures for creating, accessing and interpreting the device tree.
3 *
4 * Paul Mackerras August 1996.
5 * Copyright (C) 1996-2005 Paul Mackerras.
6 *
7 * Adapted for 64bit PowerPC by Dave Engebretsen and Peter Bergner.
8 * {engebret|bergner}@us.ibm.com
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License
12 * as published by the Free Software Foundation; either version
13 * 2 of the License, or (at your option) any later version.
14 */
15
16#include <stdarg.h>
17#include <linux/kernel.h>
18#include <linux/string.h>
19#include <linux/init.h>
20#include <linux/threads.h>
21#include <linux/spinlock.h>
22#include <linux/types.h>
23#include <linux/pci.h>
24#include <linux/stringify.h>
25#include <linux/delay.h>
26#include <linux/initrd.h>
27#include <linux/bitops.h>
28#include <linux/module.h>
29#include <linux/kexec.h>
30#include <linux/debugfs.h>
31#include <linux/irq.h>
32#include <linux/lmb.h>
33
34#include <asm/prom.h>
35#include <asm/page.h>
36#include <asm/processor.h>
37#include <asm/irq.h>
38#include <linux/io.h>
39#include <asm/system.h>
40#include <asm/mmu.h>
41#include <asm/pgtable.h>
42#include <asm/sections.h>
43#include <asm/pci-bridge.h>
44
45static int __initdata dt_root_addr_cells;
46static int __initdata dt_root_size_cells;
47
48typedef u32 cell_t;
49
50static struct boot_param_header *initial_boot_params;
51
52/* export that to outside world */
53struct device_node *of_chosen;
54
55static inline char *find_flat_dt_string(u32 offset)
56{
57 return ((char *)initial_boot_params) +
58 initial_boot_params->off_dt_strings + offset;
59}
60
61/**
62 * This function is used to scan the flattened device-tree, it is
63 * used to extract the memory informations at boot before we can
64 * unflatten the tree
65 */
66int __init of_scan_flat_dt(int (*it)(unsigned long node,
67 const char *uname, int depth,
68 void *data),
69 void *data)
70{
71 unsigned long p = ((unsigned long)initial_boot_params) +
72 initial_boot_params->off_dt_struct;
73 int rc = 0;
74 int depth = -1;
75
76 do {
77 u32 tag = *((u32 *)p);
78 char *pathp;
79
80 p += 4;
81 if (tag == OF_DT_END_NODE) {
82 depth--;
83 continue;
84 }
85 if (tag == OF_DT_NOP)
86 continue;
87 if (tag == OF_DT_END)
88 break;
89 if (tag == OF_DT_PROP) {
90 u32 sz = *((u32 *)p);
91 p += 8;
92 if (initial_boot_params->version < 0x10)
93 p = _ALIGN(p, sz >= 8 ? 8 : 4);
94 p += sz;
95 p = _ALIGN(p, 4);
96 continue;
97 }
98 if (tag != OF_DT_BEGIN_NODE) {
99 printk(KERN_WARNING "Invalid tag %x scanning flattened"
100 " device tree !\n", tag);
101 return -EINVAL;
102 }
103 depth++;
104 pathp = (char *)p;
105 p = _ALIGN(p + strlen(pathp) + 1, 4);
106 if ((*pathp) == '/') {
107 char *lp, *np;
108 for (lp = NULL, np = pathp; *np; np++)
109 if ((*np) == '/')
110 lp = np+1;
111 if (lp != NULL)
112 pathp = lp;
113 }
114 rc = it(p, pathp, depth, data);
115 if (rc != 0)
116 break;
117 } while (1);
118
119 return rc;
120}
121
122unsigned long __init of_get_flat_dt_root(void)
123{
124 unsigned long p = ((unsigned long)initial_boot_params) +
125 initial_boot_params->off_dt_struct;
126
127 while (*((u32 *)p) == OF_DT_NOP)
128 p += 4;
129 BUG_ON(*((u32 *)p) != OF_DT_BEGIN_NODE);
130 p += 4;
131 return _ALIGN(p + strlen((char *)p) + 1, 4);
132}
133
134/**
135 * This function can be used within scan_flattened_dt callback to get
136 * access to properties
137 */
138void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
139 unsigned long *size)
140{
141 unsigned long p = node;
142
143 do {
144 u32 tag = *((u32 *)p);
145 u32 sz, noff;
146 const char *nstr;
147
148 p += 4;
149 if (tag == OF_DT_NOP)
150 continue;
151 if (tag != OF_DT_PROP)
152 return NULL;
153
154 sz = *((u32 *)p);
155 noff = *((u32 *)(p + 4));
156 p += 8;
157 if (initial_boot_params->version < 0x10)
158 p = _ALIGN(p, sz >= 8 ? 8 : 4);
159
160 nstr = find_flat_dt_string(noff);
161 if (nstr == NULL) {
162 printk(KERN_WARNING "Can't find property index"
163 " name !\n");
164 return NULL;
165 }
166 if (strcmp(name, nstr) == 0) {
167 if (size)
168 *size = sz;
169 return (void *)p;
170 }
171 p += sz;
172 p = _ALIGN(p, 4);
173 } while (1);
174}
175
176int __init of_flat_dt_is_compatible(unsigned long node, const char *compat)
177{
178 const char *cp;
179 unsigned long cplen, l;
180
181 cp = of_get_flat_dt_prop(node, "compatible", &cplen);
182 if (cp == NULL)
183 return 0;
184 while (cplen > 0) {
185 if (strncasecmp(cp, compat, strlen(compat)) == 0)
186 return 1;
187 l = strlen(cp) + 1;
188 cp += l;
189 cplen -= l;
190 }
191
192 return 0;
193}
194
195static void *__init unflatten_dt_alloc(unsigned long *mem, unsigned long size,
196 unsigned long align)
197{
198 void *res;
199
200 *mem = _ALIGN(*mem, align);
201 res = (void *)*mem;
202 *mem += size;
203
204 return res;
205}
206
207static unsigned long __init unflatten_dt_node(unsigned long mem,
208 unsigned long *p,
209 struct device_node *dad,
210 struct device_node ***allnextpp,
211 unsigned long fpsize)
212{
213 struct device_node *np;
214 struct property *pp, **prev_pp = NULL;
215 char *pathp;
216 u32 tag;
217 unsigned int l, allocl;
218 int has_name = 0;
219 int new_format = 0;
220
221 tag = *((u32 *)(*p));
222 if (tag != OF_DT_BEGIN_NODE) {
223 printk("Weird tag at start of node: %x\n", tag);
224 return mem;
225 }
226 *p += 4;
227 pathp = (char *)*p;
228 l = allocl = strlen(pathp) + 1;
229 *p = _ALIGN(*p + l, 4);
230
231 /* version 0x10 has a more compact unit name here instead of the full
232 * path. we accumulate the full path size using "fpsize", we'll rebuild
233 * it later. We detect this because the first character of the name is
234 * not '/'.
235 */
236 if ((*pathp) != '/') {
237 new_format = 1;
238 if (fpsize == 0) {
239 /* root node: special case. fpsize accounts for path
240 * plus terminating zero. root node only has '/', so
241 * fpsize should be 2, but we want to avoid the first
242 * level nodes to have two '/' so we use fpsize 1 here
243 */
244 fpsize = 1;
245 allocl = 2;
246 } else {
247 /* account for '/' and path size minus terminal 0
248 * already in 'l'
249 */
250 fpsize += l;
251 allocl = fpsize;
252 }
253 }
254
255 np = unflatten_dt_alloc(&mem, sizeof(struct device_node) + allocl,
256 __alignof__(struct device_node));
257 if (allnextpp) {
258 memset(np, 0, sizeof(*np));
259 np->full_name = ((char *)np) + sizeof(struct device_node);
260 if (new_format) {
261 char *p2 = np->full_name;
262 /* rebuild full path for new format */
263 if (dad && dad->parent) {
264 strcpy(p2, dad->full_name);
265#ifdef DEBUG
266 if ((strlen(p2) + l + 1) != allocl) {
267 pr_debug("%s: p: %d, l: %d, a: %d\n",
268 pathp, (int)strlen(p2),
269 l, allocl);
270 }
271#endif
272 p2 += strlen(p2);
273 }
274 *(p2++) = '/';
275 memcpy(p2, pathp, l);
276 } else
277 memcpy(np->full_name, pathp, l);
278 prev_pp = &np->properties;
279 **allnextpp = np;
280 *allnextpp = &np->allnext;
281 if (dad != NULL) {
282 np->parent = dad;
283 /* we temporarily use the next field as `last_child'*/
284 if (dad->next == NULL)
285 dad->child = np;
286 else
287 dad->next->sibling = np;
288 dad->next = np;
289 }
290 kref_init(&np->kref);
291 }
292 while (1) {
293 u32 sz, noff;
294 char *pname;
295
296 tag = *((u32 *)(*p));
297 if (tag == OF_DT_NOP) {
298 *p += 4;
299 continue;
300 }
301 if (tag != OF_DT_PROP)
302 break;
303 *p += 4;
304 sz = *((u32 *)(*p));
305 noff = *((u32 *)((*p) + 4));
306 *p += 8;
307 if (initial_boot_params->version < 0x10)
308 *p = _ALIGN(*p, sz >= 8 ? 8 : 4);
309
310 pname = find_flat_dt_string(noff);
311 if (pname == NULL) {
312 printk(KERN_INFO
313 "Can't find property name in list !\n");
314 break;
315 }
316 if (strcmp(pname, "name") == 0)
317 has_name = 1;
318 l = strlen(pname) + 1;
319 pp = unflatten_dt_alloc(&mem, sizeof(struct property),
320 __alignof__(struct property));
321 if (allnextpp) {
322 if (strcmp(pname, "linux,phandle") == 0) {
323 np->node = *((u32 *)*p);
324 if (np->linux_phandle == 0)
325 np->linux_phandle = np->node;
326 }
327 if (strcmp(pname, "ibm,phandle") == 0)
328 np->linux_phandle = *((u32 *)*p);
329 pp->name = pname;
330 pp->length = sz;
331 pp->value = (void *)*p;
332 *prev_pp = pp;
333 prev_pp = &pp->next;
334 }
335 *p = _ALIGN((*p) + sz, 4);
336 }
337 /* with version 0x10 we may not have the name property, recreate
338 * it here from the unit name if absent
339 */
340 if (!has_name) {
341 char *p1 = pathp, *ps = pathp, *pa = NULL;
342 int sz;
343
344 while (*p1) {
345 if ((*p1) == '@')
346 pa = p1;
347 if ((*p1) == '/')
348 ps = p1 + 1;
349 p1++;
350 }
351 if (pa < ps)
352 pa = p1;
353 sz = (pa - ps) + 1;
354 pp = unflatten_dt_alloc(&mem, sizeof(struct property) + sz,
355 __alignof__(struct property));
356 if (allnextpp) {
357 pp->name = "name";
358 pp->length = sz;
359 pp->value = pp + 1;
360 *prev_pp = pp;
361 prev_pp = &pp->next;
362 memcpy(pp->value, ps, sz - 1);
363 ((char *)pp->value)[sz - 1] = 0;
364 pr_debug("fixed up name for %s -> %s\n", pathp,
365 (char *)pp->value);
366 }
367 }
368 if (allnextpp) {
369 *prev_pp = NULL;
370 np->name = of_get_property(np, "name", NULL);
371 np->type = of_get_property(np, "device_type", NULL);
372
373 if (!np->name)
374 np->name = "<NULL>";
375 if (!np->type)
376 np->type = "<NULL>";
377 }
378 while (tag == OF_DT_BEGIN_NODE) {
379 mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize);
380 tag = *((u32 *)(*p));
381 }
382 if (tag != OF_DT_END_NODE) {
383 printk(KERN_INFO "Weird tag at end of node: %x\n", tag);
384 return mem;
385 }
386 *p += 4;
387 return mem;
388}
389
390/**
391 * unflattens the device-tree passed by the firmware, creating the
392 * tree of struct device_node. It also fills the "name" and "type"
393 * pointers of the nodes so the normal device-tree walking functions
394 * can be used (this used to be done by finish_device_tree)
395 */
396void __init unflatten_device_tree(void)
397{
398 unsigned long start, mem, size;
399 struct device_node **allnextp = &allnodes;
400
401 pr_debug(" -> unflatten_device_tree()\n");
402
403 /* First pass, scan for size */
404 start = ((unsigned long)initial_boot_params) +
405 initial_boot_params->off_dt_struct;
406 size = unflatten_dt_node(0, &start, NULL, NULL, 0);
407 size = (size | 3) + 1;
408
409 pr_debug(" size is %lx, allocating...\n", size);
410
411 /* Allocate memory for the expanded device tree */
412 mem = lmb_alloc(size + 4, __alignof__(struct device_node));
413 mem = (unsigned long) __va(mem);
414
415 ((u32 *)mem)[size / 4] = 0xdeadbeef;
416
417 pr_debug(" unflattening %lx...\n", mem);
418
419 /* Second pass, do actual unflattening */
420 start = ((unsigned long)initial_boot_params) +
421 initial_boot_params->off_dt_struct;
422 unflatten_dt_node(mem, &start, NULL, &allnextp, 0);
423 if (*((u32 *)start) != OF_DT_END)
424 printk(KERN_WARNING "Weird tag at end of tree: %08x\n",
425 *((u32 *)start));
426 if (((u32 *)mem)[size / 4] != 0xdeadbeef)
427 printk(KERN_WARNING "End of tree marker overwritten: %08x\n",
428 ((u32 *)mem)[size / 4]);
429 *allnextp = NULL;
430
431 /* Get pointer to OF "/chosen" node for use everywhere */
432 of_chosen = of_find_node_by_path("/chosen");
433 if (of_chosen == NULL)
434 of_chosen = of_find_node_by_path("/chosen@0");
435
436 pr_debug(" <- unflatten_device_tree()\n");
437}
438
439#define early_init_dt_scan_drconf_memory(node) 0
440
441static int __init early_init_dt_scan_cpus(unsigned long node,
442 const char *uname, int depth,
443 void *data)
444{
445 static int logical_cpuid;
446 char *type = of_get_flat_dt_prop(node, "device_type", NULL);
447 const u32 *intserv;
448 int i, nthreads;
449 int found = 0;
450
451 /* We are scanning "cpu" nodes only */
452 if (type == NULL || strcmp(type, "cpu") != 0)
453 return 0;
454
455 /* Get physical cpuid */
456 intserv = of_get_flat_dt_prop(node, "reg", NULL);
457 nthreads = 1;
458
459 /*
460 * Now see if any of these threads match our boot cpu.
461 * NOTE: This must match the parsing done in smp_setup_cpu_maps.
462 */
463 for (i = 0; i < nthreads; i++) {
464 /*
465 * version 2 of the kexec param format adds the phys cpuid of
466 * booted proc.
467 */
468 if (initial_boot_params && initial_boot_params->version >= 2) {
469 if (intserv[i] ==
470 initial_boot_params->boot_cpuid_phys) {
471 found = 1;
472 break;
473 }
474 } else {
475 /*
476 * Check if it's the boot-cpu, set it's hw index now,
477 * unfortunately this format did not support booting
478 * off secondary threads.
479 */
480 if (of_get_flat_dt_prop(node,
481 "linux,boot-cpu", NULL) != NULL) {
482 found = 1;
483 break;
484 }
485 }
486
487#ifdef CONFIG_SMP
488 /* logical cpu id is always 0 on UP kernels */
489 logical_cpuid++;
490#endif
491 }
492
493 if (found) {
494 pr_debug("boot cpu: logical %d physical %d\n", logical_cpuid,
495 intserv[i]);
496 boot_cpuid = logical_cpuid;
497 }
498
499 return 0;
500}
501
502#ifdef CONFIG_BLK_DEV_INITRD
503static void __init early_init_dt_check_for_initrd(unsigned long node)
504{
505 unsigned long l;
506 u32 *prop;
507
508 pr_debug("Looking for initrd properties... ");
509
510 prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l);
511 if (prop) {
512 initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4));
513
514 prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l);
515 if (prop) {
516 initrd_end = (unsigned long)
517 __va(of_read_ulong(prop, l/4));
518 initrd_below_start_ok = 1;
519 } else {
520 initrd_start = 0;
521 }
522 }
523
524 pr_debug("initrd_start=0x%lx initrd_end=0x%lx\n",
525 initrd_start, initrd_end);
526}
527#else
528static inline void early_init_dt_check_for_initrd(unsigned long node)
529{
530}
531#endif /* CONFIG_BLK_DEV_INITRD */
532
533static int __init early_init_dt_scan_chosen(unsigned long node,
534 const char *uname, int depth, void *data)
535{
536 unsigned long l;
537 char *p;
538
539 pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
540
541 if (depth != 1 ||
542 (strcmp(uname, "chosen") != 0 &&
543 strcmp(uname, "chosen@0") != 0))
544 return 0;
545
546#ifdef CONFIG_KEXEC
547 lprop = (u64 *)of_get_flat_dt_prop(node,
548 "linux,crashkernel-base", NULL);
549 if (lprop)
550 crashk_res.start = *lprop;
551
552 lprop = (u64 *)of_get_flat_dt_prop(node,
553 "linux,crashkernel-size", NULL);
554 if (lprop)
555 crashk_res.end = crashk_res.start + *lprop - 1;
556#endif
557
558 early_init_dt_check_for_initrd(node);
559
560 /* Retreive command line */
561 p = of_get_flat_dt_prop(node, "bootargs", &l);
562 if (p != NULL && l > 0)
563 strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE));
564
565#ifdef CONFIG_CMDLINE
566 if (p == NULL || l == 0 || (l == 1 && (*p) == 0))
567 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
568#endif /* CONFIG_CMDLINE */
569
570 pr_debug("Command line is: %s\n", cmd_line);
571
572 /* break now */
573 return 1;
574}
575
576static int __init early_init_dt_scan_root(unsigned long node,
577 const char *uname, int depth, void *data)
578{
579 u32 *prop;
580
581 if (depth != 0)
582 return 0;
583
584 prop = of_get_flat_dt_prop(node, "#size-cells", NULL);
585 dt_root_size_cells = (prop == NULL) ? 1 : *prop;
586 pr_debug("dt_root_size_cells = %x\n", dt_root_size_cells);
587
588 prop = of_get_flat_dt_prop(node, "#address-cells", NULL);
589 dt_root_addr_cells = (prop == NULL) ? 2 : *prop;
590 pr_debug("dt_root_addr_cells = %x\n", dt_root_addr_cells);
591
592 /* break now */
593 return 1;
594}
595
596static u64 __init dt_mem_next_cell(int s, cell_t **cellp)
597{
598 cell_t *p = *cellp;
599
600 *cellp = p + s;
601 return of_read_number(p, s);
602}
603
604static int __init early_init_dt_scan_memory(unsigned long node,
605 const char *uname, int depth, void *data)
606{
607 char *type = of_get_flat_dt_prop(node, "device_type", NULL);
608 cell_t *reg, *endp;
609 unsigned long l;
610
611 /* Look for the ibm,dynamic-reconfiguration-memory node */
612/* if (depth == 1 &&
613 strcmp(uname, "ibm,dynamic-reconfiguration-memory") == 0)
614 return early_init_dt_scan_drconf_memory(node);
615*/
616 /* We are scanning "memory" nodes only */
617 if (type == NULL) {
618 /*
619 * The longtrail doesn't have a device_type on the
620 * /memory node, so look for the node called /memory@0.
621 */
622 if (depth != 1 || strcmp(uname, "memory@0") != 0)
623 return 0;
624 } else if (strcmp(type, "memory") != 0)
625 return 0;
626
627 reg = (cell_t *)of_get_flat_dt_prop(node, "linux,usable-memory", &l);
628 if (reg == NULL)
629 reg = (cell_t *)of_get_flat_dt_prop(node, "reg", &l);
630 if (reg == NULL)
631 return 0;
632
633 endp = reg + (l / sizeof(cell_t));
634
635 pr_debug("memory scan node %s, reg size %ld, data: %x %x %x %x,\n",
636 uname, l, reg[0], reg[1], reg[2], reg[3]);
637
638 while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) {
639 u64 base, size;
640
641 base = dt_mem_next_cell(dt_root_addr_cells, &reg);
642 size = dt_mem_next_cell(dt_root_size_cells, &reg);
643
644 if (size == 0)
645 continue;
646 pr_debug(" - %llx , %llx\n", (unsigned long long)base,
647 (unsigned long long)size);
648
649 lmb_add(base, size);
650 }
651 return 0;
652}
653
654#ifdef CONFIG_PHYP_DUMP
655/**
656 * phyp_dump_calculate_reserve_size() - reserve variable boot area 5% or arg
657 *
658 * Function to find the largest size we need to reserve
659 * during early boot process.
660 *
661 * It either looks for boot param and returns that OR
662 * returns larger of 256 or 5% rounded down to multiples of 256MB.
663 *
664 */
665static inline unsigned long phyp_dump_calculate_reserve_size(void)
666{
667 unsigned long tmp;
668
669 if (phyp_dump_info->reserve_bootvar)
670 return phyp_dump_info->reserve_bootvar;
671
672 /* divide by 20 to get 5% of value */
673 tmp = lmb_end_of_DRAM();
674 do_div(tmp, 20);
675
676 /* round it down in multiples of 256 */
677 tmp = tmp & ~0x0FFFFFFFUL;
678
679 return (tmp > PHYP_DUMP_RMR_END ? tmp : PHYP_DUMP_RMR_END);
680}
681
682/**
683 * phyp_dump_reserve_mem() - reserve all not-yet-dumped mmemory
684 *
685 * This routine may reserve memory regions in the kernel only
686 * if the system is supported and a dump was taken in last
687 * boot instance or if the hardware is supported and the
688 * scratch area needs to be setup. In other instances it returns
689 * without reserving anything. The memory in case of dump being
690 * active is freed when the dump is collected (by userland tools).
691 */
692static void __init phyp_dump_reserve_mem(void)
693{
694 unsigned long base, size;
695 unsigned long variable_reserve_size;
696
697 if (!phyp_dump_info->phyp_dump_configured) {
698 printk(KERN_ERR "Phyp-dump not supported on this hardware\n");
699 return;
700 }
701
702 if (!phyp_dump_info->phyp_dump_at_boot) {
703 printk(KERN_INFO "Phyp-dump disabled at boot time\n");
704 return;
705 }
706
707 variable_reserve_size = phyp_dump_calculate_reserve_size();
708
709 if (phyp_dump_info->phyp_dump_is_active) {
710 /* Reserve *everything* above RMR.Area freed by userland tools*/
711 base = variable_reserve_size;
712 size = lmb_end_of_DRAM() - base;
713
714 /* XXX crashed_ram_end is wrong, since it may be beyond
715 * the memory_limit, it will need to be adjusted. */
716 lmb_reserve(base, size);
717
718 phyp_dump_info->init_reserve_start = base;
719 phyp_dump_info->init_reserve_size = size;
720 } else {
721 size = phyp_dump_info->cpu_state_size +
722 phyp_dump_info->hpte_region_size +
723 variable_reserve_size;
724 base = lmb_end_of_DRAM() - size;
725 lmb_reserve(base, size);
726 phyp_dump_info->init_reserve_start = base;
727 phyp_dump_info->init_reserve_size = size;
728 }
729}
730#else
731static inline void __init phyp_dump_reserve_mem(void) {}
732#endif /* CONFIG_PHYP_DUMP && CONFIG_PPC_RTAS */
733
734#ifdef CONFIG_EARLY_PRINTK
735/* MS this is Microblaze specifig function */
736static int __init early_init_dt_scan_serial(unsigned long node,
737 const char *uname, int depth, void *data)
738{
739 unsigned long l;
740 char *p;
741 int *addr;
742
743 pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
744
745/* find all serial nodes */
746 if (strncmp(uname, "serial", 6) != 0)
747 return 0;
748
749 early_init_dt_check_for_initrd(node);
750
751/* find compatible node with uartlite */
752 p = of_get_flat_dt_prop(node, "compatible", &l);
753 if ((strncmp(p, "xlnx,xps-uartlite", 17) != 0) &&
754 (strncmp(p, "xlnx,opb-uartlite", 17) != 0))
755 return 0;
756
757 addr = of_get_flat_dt_prop(node, "reg", &l);
758 return *addr; /* return address */
759}
760
761/* this function is looking for early uartlite console - Microblaze specific */
762int __init early_uartlite_console(void)
763{
764 return of_scan_flat_dt(early_init_dt_scan_serial, NULL);
765}
766#endif
767
768void __init early_init_devtree(void *params)
769{
770 pr_debug(" -> early_init_devtree(%p)\n", params);
771
772 /* Setup flat device-tree pointer */
773 initial_boot_params = params;
774
775#ifdef CONFIG_PHYP_DUMP
776 /* scan tree to see if dump occured during last boot */
777 of_scan_flat_dt(early_init_dt_scan_phyp_dump, NULL);
778#endif
779
780 /* Retrieve various informations from the /chosen node of the
781 * device-tree, including the platform type, initrd location and
782 * size, TCE reserve, and more ...
783 */
784 of_scan_flat_dt(early_init_dt_scan_chosen, NULL);
785
786 /* Scan memory nodes and rebuild LMBs */
787 lmb_init();
788 of_scan_flat_dt(early_init_dt_scan_root, NULL);
789 of_scan_flat_dt(early_init_dt_scan_memory, NULL);
790
791 /* Save command line for /proc/cmdline and then parse parameters */
792 strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
793 parse_early_param();
794
795 lmb_analyze();
796
797 pr_debug("Phys. mem: %lx\n", (unsigned long) lmb_phys_mem_size());
798
799 pr_debug("Scanning CPUs ...\n");
800
801 /* Retreive CPU related informations from the flat tree
802 * (altivec support, boot CPU ID, ...)
803 */
804 of_scan_flat_dt(early_init_dt_scan_cpus, NULL);
805
806 pr_debug(" <- early_init_devtree()\n");
807}
808
809/**
810 * Indicates whether the root node has a given value in its
811 * compatible property.
812 */
813int machine_is_compatible(const char *compat)
814{
815 struct device_node *root;
816 int rc = 0;
817
818 root = of_find_node_by_path("/");
819 if (root) {
820 rc = of_device_is_compatible(root, compat);
821 of_node_put(root);
822 }
823 return rc;
824}
825EXPORT_SYMBOL(machine_is_compatible);
826
827/*******
828 *
829 * New implementation of the OF "find" APIs, return a refcounted
830 * object, call of_node_put() when done. The device tree and list
831 * are protected by a rw_lock.
832 *
833 * Note that property management will need some locking as well,
834 * this isn't dealt with yet.
835 *
836 *******/
837
838/**
839 * of_find_node_by_phandle - Find a node given a phandle
840 * @handle: phandle of the node to find
841 *
842 * Returns a node pointer with refcount incremented, use
843 * of_node_put() on it when done.
844 */
845struct device_node *of_find_node_by_phandle(phandle handle)
846{
847 struct device_node *np;
848
849 read_lock(&devtree_lock);
850 for (np = allnodes; np != NULL; np = np->allnext)
851 if (np->linux_phandle == handle)
852 break;
853 of_node_get(np);
854 read_unlock(&devtree_lock);
855 return np;
856}
857EXPORT_SYMBOL(of_find_node_by_phandle);
858
859/**
860 * of_find_all_nodes - Get next node in global list
861 * @prev: Previous node or NULL to start iteration
862 * of_node_put() will be called on it
863 *
864 * Returns a node pointer with refcount incremented, use
865 * of_node_put() on it when done.
866 */
867struct device_node *of_find_all_nodes(struct device_node *prev)
868{
869 struct device_node *np;
870
871 read_lock(&devtree_lock);
872 np = prev ? prev->allnext : allnodes;
873 for (; np != NULL; np = np->allnext)
874 if (of_node_get(np))
875 break;
876 of_node_put(prev);
877 read_unlock(&devtree_lock);
878 return np;
879}
880EXPORT_SYMBOL(of_find_all_nodes);
881
882/**
883 * of_node_get - Increment refcount of a node
884 * @node: Node to inc refcount, NULL is supported to
885 * simplify writing of callers
886 *
887 * Returns node.
888 */
889struct device_node *of_node_get(struct device_node *node)
890{
891 if (node)
892 kref_get(&node->kref);
893 return node;
894}
895EXPORT_SYMBOL(of_node_get);
896
897static inline struct device_node *kref_to_device_node(struct kref *kref)
898{
899 return container_of(kref, struct device_node, kref);
900}
901
902/**
903 * of_node_release - release a dynamically allocated node
904 * @kref: kref element of the node to be released
905 *
906 * In of_node_put() this function is passed to kref_put()
907 * as the destructor.
908 */
909static void of_node_release(struct kref *kref)
910{
911 struct device_node *node = kref_to_device_node(kref);
912 struct property *prop = node->properties;
913
914 /* We should never be releasing nodes that haven't been detached. */
915 if (!of_node_check_flag(node, OF_DETACHED)) {
916 printk(KERN_INFO "WARNING: Bad of_node_put() on %s\n",
917 node->full_name);
918 dump_stack();
919 kref_init(&node->kref);
920 return;
921 }
922
923 if (!of_node_check_flag(node, OF_DYNAMIC))
924 return;
925
926 while (prop) {
927 struct property *next = prop->next;
928 kfree(prop->name);
929 kfree(prop->value);
930 kfree(prop);
931 prop = next;
932
933 if (!prop) {
934 prop = node->deadprops;
935 node->deadprops = NULL;
936 }
937 }
938 kfree(node->full_name);
939 kfree(node->data);
940 kfree(node);
941}
942
943/**
944 * of_node_put - Decrement refcount of a node
945 * @node: Node to dec refcount, NULL is supported to
946 * simplify writing of callers
947 *
948 */
949void of_node_put(struct device_node *node)
950{
951 if (node)
952 kref_put(&node->kref, of_node_release);
953}
954EXPORT_SYMBOL(of_node_put);
955
956/*
957 * Plug a device node into the tree and global list.
958 */
959void of_attach_node(struct device_node *np)
960{
961 unsigned long flags;
962
963 write_lock_irqsave(&devtree_lock, flags);
964 np->sibling = np->parent->child;
965 np->allnext = allnodes;
966 np->parent->child = np;
967 allnodes = np;
968 write_unlock_irqrestore(&devtree_lock, flags);
969}
970
971/*
972 * "Unplug" a node from the device tree. The caller must hold
973 * a reference to the node. The memory associated with the node
974 * is not freed until its refcount goes to zero.
975 */
976void of_detach_node(struct device_node *np)
977{
978 struct device_node *parent;
979 unsigned long flags;
980
981 write_lock_irqsave(&devtree_lock, flags);
982
983 parent = np->parent;
984 if (!parent)
985 goto out_unlock;
986
987 if (allnodes == np)
988 allnodes = np->allnext;
989 else {
990 struct device_node *prev;
991 for (prev = allnodes;
992 prev->allnext != np;
993 prev = prev->allnext)
994 ;
995 prev->allnext = np->allnext;
996 }
997
998 if (parent->child == np)
999 parent->child = np->sibling;
1000 else {
1001 struct device_node *prevsib;
1002 for (prevsib = np->parent->child;
1003 prevsib->sibling != np;
1004 prevsib = prevsib->sibling)
1005 ;
1006 prevsib->sibling = np->sibling;
1007 }
1008
1009 of_node_set_flag(np, OF_DETACHED);
1010
1011out_unlock:
1012 write_unlock_irqrestore(&devtree_lock, flags);
1013}
1014
1015/*
1016 * Add a property to a node
1017 */
1018int prom_add_property(struct device_node *np, struct property *prop)
1019{
1020 struct property **next;
1021 unsigned long flags;
1022
1023 prop->next = NULL;
1024 write_lock_irqsave(&devtree_lock, flags);
1025 next = &np->properties;
1026 while (*next) {
1027 if (strcmp(prop->name, (*next)->name) == 0) {
1028 /* duplicate ! don't insert it */
1029 write_unlock_irqrestore(&devtree_lock, flags);
1030 return -1;
1031 }
1032 next = &(*next)->next;
1033 }
1034 *next = prop;
1035 write_unlock_irqrestore(&devtree_lock, flags);
1036
1037#ifdef CONFIG_PROC_DEVICETREE
1038 /* try to add to proc as well if it was initialized */
1039 if (np->pde)
1040 proc_device_tree_add_prop(np->pde, prop);
1041#endif /* CONFIG_PROC_DEVICETREE */
1042
1043 return 0;
1044}
1045
1046/*
1047 * Remove a property from a node. Note that we don't actually
1048 * remove it, since we have given out who-knows-how-many pointers
1049 * to the data using get-property. Instead we just move the property
1050 * to the "dead properties" list, so it won't be found any more.
1051 */
1052int prom_remove_property(struct device_node *np, struct property *prop)
1053{
1054 struct property **next;
1055 unsigned long flags;
1056 int found = 0;
1057
1058 write_lock_irqsave(&devtree_lock, flags);
1059 next = &np->properties;
1060 while (*next) {
1061 if (*next == prop) {
1062 /* found the node */
1063 *next = prop->next;
1064 prop->next = np->deadprops;
1065 np->deadprops = prop;
1066 found = 1;
1067 break;
1068 }
1069 next = &(*next)->next;
1070 }
1071 write_unlock_irqrestore(&devtree_lock, flags);
1072
1073 if (!found)
1074 return -ENODEV;
1075
1076#ifdef CONFIG_PROC_DEVICETREE
1077 /* try to remove the proc node as well */
1078 if (np->pde)
1079 proc_device_tree_remove_prop(np->pde, prop);
1080#endif /* CONFIG_PROC_DEVICETREE */
1081
1082 return 0;
1083}
1084
1085/*
1086 * Update a property in a node. Note that we don't actually
1087 * remove it, since we have given out who-knows-how-many pointers
1088 * to the data using get-property. Instead we just move the property
1089 * to the "dead properties" list, and add the new property to the
1090 * property list
1091 */
1092int prom_update_property(struct device_node *np,
1093 struct property *newprop,
1094 struct property *oldprop)
1095{
1096 struct property **next;
1097 unsigned long flags;
1098 int found = 0;
1099
1100 write_lock_irqsave(&devtree_lock, flags);
1101 next = &np->properties;
1102 while (*next) {
1103 if (*next == oldprop) {
1104 /* found the node */
1105 newprop->next = oldprop->next;
1106 *next = newprop;
1107 oldprop->next = np->deadprops;
1108 np->deadprops = oldprop;
1109 found = 1;
1110 break;
1111 }
1112 next = &(*next)->next;
1113 }
1114 write_unlock_irqrestore(&devtree_lock, flags);
1115
1116 if (!found)
1117 return -ENODEV;
1118
1119#ifdef CONFIG_PROC_DEVICETREE
1120 /* try to add to proc as well if it was initialized */
1121 if (np->pde)
1122 proc_device_tree_update_prop(np->pde, newprop, oldprop);
1123#endif /* CONFIG_PROC_DEVICETREE */
1124
1125 return 0;
1126}
1127
1128#if defined(CONFIG_DEBUG_FS) && defined(DEBUG)
1129static struct debugfs_blob_wrapper flat_dt_blob;
1130
1131static int __init export_flat_device_tree(void)
1132{
1133 struct dentry *d;
1134
1135 flat_dt_blob.data = initial_boot_params;
1136 flat_dt_blob.size = initial_boot_params->totalsize;
1137
1138 d = debugfs_create_blob("flat-device-tree", S_IFREG | S_IRUSR,
1139 of_debugfs_root, &flat_dt_blob);
1140 if (!d)
1141 return 1;
1142
1143 return 0;
1144}
1145device_initcall(export_flat_device_tree);
1146#endif
diff --git a/arch/microblaze/kernel/prom_parse.c b/arch/microblaze/kernel/prom_parse.c
new file mode 100644
index 000000000000..ae0352ecd5a9
--- /dev/null
+++ b/arch/microblaze/kernel/prom_parse.c
@@ -0,0 +1,1025 @@
1#undef DEBUG
2
3#include <linux/kernel.h>
4#include <linux/string.h>
5#include <linux/pci_regs.h>
6#include <linux/module.h>
7#include <linux/ioport.h>
8#include <linux/etherdevice.h>
9#include <asm/prom.h>
10#include <asm/pci-bridge.h>
11
12#define PRu64 "%llx"
13
14/* Max address size we deal with */
15#define OF_MAX_ADDR_CELLS 4
16#define OF_CHECK_COUNTS(na, ns) ((na) > 0 && (na) <= OF_MAX_ADDR_CELLS && \
17 (ns) > 0)
18
19static struct of_bus *of_match_bus(struct device_node *np);
20static int __of_address_to_resource(struct device_node *dev,
21 const u32 *addrp, u64 size, unsigned int flags,
22 struct resource *r);
23
24/* Debug utility */
25#ifdef DEBUG
26static void of_dump_addr(const char *s, const u32 *addr, int na)
27{
28 printk(KERN_INFO "%s", s);
29 while (na--)
30 printk(KERN_INFO " %08x", *(addr++));
31 printk(KERN_INFO "\n");
32}
33#else
34static void of_dump_addr(const char *s, const u32 *addr, int na) { }
35#endif
36
37/* Callbacks for bus specific translators */
38struct of_bus {
39 const char *name;
40 const char *addresses;
41 int (*match)(struct device_node *parent);
42 void (*count_cells)(struct device_node *child,
43 int *addrc, int *sizec);
44 u64 (*map)(u32 *addr, const u32 *range,
45 int na, int ns, int pna);
46 int (*translate)(u32 *addr, u64 offset, int na);
47 unsigned int (*get_flags)(const u32 *addr);
48};
49
50/*
51 * Default translator (generic bus)
52 */
53
54static void of_bus_default_count_cells(struct device_node *dev,
55 int *addrc, int *sizec)
56{
57 if (addrc)
58 *addrc = of_n_addr_cells(dev);
59 if (sizec)
60 *sizec = of_n_size_cells(dev);
61}
62
63static u64 of_bus_default_map(u32 *addr, const u32 *range,
64 int na, int ns, int pna)
65{
66 u64 cp, s, da;
67
68 cp = of_read_number(range, na);
69 s = of_read_number(range + na + pna, ns);
70 da = of_read_number(addr, na);
71
72 pr_debug("OF: default map, cp="PRu64", s="PRu64", da="PRu64"\n",
73 cp, s, da);
74
75 if (da < cp || da >= (cp + s))
76 return OF_BAD_ADDR;
77 return da - cp;
78}
79
80static int of_bus_default_translate(u32 *addr, u64 offset, int na)
81{
82 u64 a = of_read_number(addr, na);
83 memset(addr, 0, na * 4);
84 a += offset;
85 if (na > 1)
86 addr[na - 2] = a >> 32;
87 addr[na - 1] = a & 0xffffffffu;
88
89 return 0;
90}
91
92static unsigned int of_bus_default_get_flags(const u32 *addr)
93{
94 return IORESOURCE_MEM;
95}
96
97#ifdef CONFIG_PCI
98/*
99 * PCI bus specific translator
100 */
101
102static int of_bus_pci_match(struct device_node *np)
103{
104 /* "vci" is for the /chaos bridge on 1st-gen PCI powermacs */
105 return !strcmp(np->type, "pci") || !strcmp(np->type, "vci");
106}
107
108static void of_bus_pci_count_cells(struct device_node *np,
109 int *addrc, int *sizec)
110{
111 if (addrc)
112 *addrc = 3;
113 if (sizec)
114 *sizec = 2;
115}
116
117static u64 of_bus_pci_map(u32 *addr, const u32 *range, int na, int ns, int pna)
118{
119 u64 cp, s, da;
120
121 /* Check address type match */
122 if ((addr[0] ^ range[0]) & 0x03000000)
123 return OF_BAD_ADDR;
124
125 /* Read address values, skipping high cell */
126 cp = of_read_number(range + 1, na - 1);
127 s = of_read_number(range + na + pna, ns);
128 da = of_read_number(addr + 1, na - 1);
129
130 pr_debug("OF: PCI map, cp="PRu64", s="PRu64", da="PRu64"\n", cp, s, da);
131
132 if (da < cp || da >= (cp + s))
133 return OF_BAD_ADDR;
134 return da - cp;
135}
136
137static int of_bus_pci_translate(u32 *addr, u64 offset, int na)
138{
139 return of_bus_default_translate(addr + 1, offset, na - 1);
140}
141
142static unsigned int of_bus_pci_get_flags(const u32 *addr)
143{
144 unsigned int flags = 0;
145 u32 w = addr[0];
146
147 switch ((w >> 24) & 0x03) {
148 case 0x01:
149 flags |= IORESOURCE_IO;
150 break;
151 case 0x02: /* 32 bits */
152 case 0x03: /* 64 bits */
153 flags |= IORESOURCE_MEM;
154 break;
155 }
156 if (w & 0x40000000)
157 flags |= IORESOURCE_PREFETCH;
158 return flags;
159}
160
161const u32 *of_get_pci_address(struct device_node *dev, int bar_no, u64 *size,
162 unsigned int *flags)
163{
164 const u32 *prop;
165 unsigned int psize;
166 struct device_node *parent;
167 struct of_bus *bus;
168 int onesize, i, na, ns;
169
170 /* Get parent & match bus type */
171 parent = of_get_parent(dev);
172 if (parent == NULL)
173 return NULL;
174 bus = of_match_bus(parent);
175 if (strcmp(bus->name, "pci")) {
176 of_node_put(parent);
177 return NULL;
178 }
179 bus->count_cells(dev, &na, &ns);
180 of_node_put(parent);
181 if (!OF_CHECK_COUNTS(na, ns))
182 return NULL;
183
184 /* Get "reg" or "assigned-addresses" property */
185 prop = of_get_property(dev, bus->addresses, &psize);
186 if (prop == NULL)
187 return NULL;
188 psize /= 4;
189
190 onesize = na + ns;
191 for (i = 0; psize >= onesize; psize -= onesize, prop += onesize, i++)
192 if ((prop[0] & 0xff) == ((bar_no * 4) + PCI_BASE_ADDRESS_0)) {
193 if (size)
194 *size = of_read_number(prop + na, ns);
195 if (flags)
196 *flags = bus->get_flags(prop);
197 return prop;
198 }
199 return NULL;
200}
201EXPORT_SYMBOL(of_get_pci_address);
202
203int of_pci_address_to_resource(struct device_node *dev, int bar,
204 struct resource *r)
205{
206 const u32 *addrp;
207 u64 size;
208 unsigned int flags;
209
210 addrp = of_get_pci_address(dev, bar, &size, &flags);
211 if (addrp == NULL)
212 return -EINVAL;
213 return __of_address_to_resource(dev, addrp, size, flags, r);
214}
215EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
216
217static u8 of_irq_pci_swizzle(u8 slot, u8 pin)
218{
219 return (((pin - 1) + slot) % 4) + 1;
220}
221
222int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
223{
224 struct device_node *dn, *ppnode;
225 struct pci_dev *ppdev;
226 u32 lspec;
227 u32 laddr[3];
228 u8 pin;
229 int rc;
230
231 /* Check if we have a device node, if yes, fallback to standard OF
232 * parsing
233 */
234 dn = pci_device_to_OF_node(pdev);
235 if (dn)
236 return of_irq_map_one(dn, 0, out_irq);
237
238 /* Ok, we don't, time to have fun. Let's start by building up an
239 * interrupt spec. we assume #interrupt-cells is 1, which is standard
240 * for PCI. If you do different, then don't use that routine.
241 */
242 rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin);
243 if (rc != 0)
244 return rc;
245 /* No pin, exit */
246 if (pin == 0)
247 return -ENODEV;
248
249 /* Now we walk up the PCI tree */
250 lspec = pin;
251 for (;;) {
252 /* Get the pci_dev of our parent */
253 ppdev = pdev->bus->self;
254
255 /* Ouch, it's a host bridge... */
256 if (ppdev == NULL) {
257 struct pci_controller *host;
258 host = pci_bus_to_host(pdev->bus);
259 ppnode = host ? host->arch_data : NULL;
260 /* No node for host bridge ? give up */
261 if (ppnode == NULL)
262 return -EINVAL;
263 } else
264 /* We found a P2P bridge, check if it has a node */
265 ppnode = pci_device_to_OF_node(ppdev);
266
267 /* Ok, we have found a parent with a device-node, hand over to
268 * the OF parsing code.
269 * We build a unit address from the linux device to be used for
270 * resolution. Note that we use the linux bus number which may
271 * not match your firmware bus numbering.
272 * Fortunately, in most cases, interrupt-map-mask doesn't
273 * include the bus number as part of the matching.
274 * You should still be careful about that though if you intend
275 * to rely on this function (you ship a firmware that doesn't
276 * create device nodes for all PCI devices).
277 */
278 if (ppnode)
279 break;
280
281 /* We can only get here if we hit a P2P bridge with no node,
282 * let's do standard swizzling and try again
283 */
284 lspec = of_irq_pci_swizzle(PCI_SLOT(pdev->devfn), lspec);
285 pdev = ppdev;
286 }
287
288 laddr[0] = (pdev->bus->number << 16)
289 | (pdev->devfn << 8);
290 laddr[1] = laddr[2] = 0;
291 return of_irq_map_raw(ppnode, &lspec, 1, laddr, out_irq);
292}
293EXPORT_SYMBOL_GPL(of_irq_map_pci);
294#endif /* CONFIG_PCI */
295
296/*
297 * ISA bus specific translator
298 */
299
300static int of_bus_isa_match(struct device_node *np)
301{
302 return !strcmp(np->name, "isa");
303}
304
305static void of_bus_isa_count_cells(struct device_node *child,
306 int *addrc, int *sizec)
307{
308 if (addrc)
309 *addrc = 2;
310 if (sizec)
311 *sizec = 1;
312}
313
314static u64 of_bus_isa_map(u32 *addr, const u32 *range, int na, int ns, int pna)
315{
316 u64 cp, s, da;
317
318 /* Check address type match */
319 if ((addr[0] ^ range[0]) & 0x00000001)
320 return OF_BAD_ADDR;
321
322 /* Read address values, skipping high cell */
323 cp = of_read_number(range + 1, na - 1);
324 s = of_read_number(range + na + pna, ns);
325 da = of_read_number(addr + 1, na - 1);
326
327 pr_debug("OF: ISA map, cp="PRu64", s="PRu64", da="PRu64"\n", cp, s, da);
328
329 if (da < cp || da >= (cp + s))
330 return OF_BAD_ADDR;
331 return da - cp;
332}
333
334static int of_bus_isa_translate(u32 *addr, u64 offset, int na)
335{
336 return of_bus_default_translate(addr + 1, offset, na - 1);
337}
338
339static unsigned int of_bus_isa_get_flags(const u32 *addr)
340{
341 unsigned int flags = 0;
342 u32 w = addr[0];
343
344 if (w & 1)
345 flags |= IORESOURCE_IO;
346 else
347 flags |= IORESOURCE_MEM;
348 return flags;
349}
350
351/*
352 * Array of bus specific translators
353 */
354
355static struct of_bus of_busses[] = {
356#ifdef CONFIG_PCI
357 /* PCI */
358 {
359 .name = "pci",
360 .addresses = "assigned-addresses",
361 .match = of_bus_pci_match,
362 .count_cells = of_bus_pci_count_cells,
363 .map = of_bus_pci_map,
364 .translate = of_bus_pci_translate,
365 .get_flags = of_bus_pci_get_flags,
366 },
367#endif /* CONFIG_PCI */
368 /* ISA */
369 {
370 .name = "isa",
371 .addresses = "reg",
372 .match = of_bus_isa_match,
373 .count_cells = of_bus_isa_count_cells,
374 .map = of_bus_isa_map,
375 .translate = of_bus_isa_translate,
376 .get_flags = of_bus_isa_get_flags,
377 },
378 /* Default */
379 {
380 .name = "default",
381 .addresses = "reg",
382 .match = NULL,
383 .count_cells = of_bus_default_count_cells,
384 .map = of_bus_default_map,
385 .translate = of_bus_default_translate,
386 .get_flags = of_bus_default_get_flags,
387 },
388};
389
390static struct of_bus *of_match_bus(struct device_node *np)
391{
392 int i;
393
394 for (i = 0; i < ARRAY_SIZE(of_busses); i++)
395 if (!of_busses[i].match || of_busses[i].match(np))
396 return &of_busses[i];
397 BUG();
398 return NULL;
399}
400
401static int of_translate_one(struct device_node *parent, struct of_bus *bus,
402 struct of_bus *pbus, u32 *addr,
403 int na, int ns, int pna)
404{
405 const u32 *ranges;
406 unsigned int rlen;
407 int rone;
408 u64 offset = OF_BAD_ADDR;
409
410 /* Normally, an absence of a "ranges" property means we are
411 * crossing a non-translatable boundary, and thus the addresses
412 * below the current not cannot be converted to CPU physical ones.
413 * Unfortunately, while this is very clear in the spec, it's not
414 * what Apple understood, and they do have things like /uni-n or
415 * /ht nodes with no "ranges" property and a lot of perfectly
416 * useable mapped devices below them. Thus we treat the absence of
417 * "ranges" as equivalent to an empty "ranges" property which means
418 * a 1:1 translation at that level. It's up to the caller not to try
419 * to translate addresses that aren't supposed to be translated in
420 * the first place. --BenH.
421 */
422 ranges = of_get_property(parent, "ranges", (int *) &rlen);
423 if (ranges == NULL || rlen == 0) {
424 offset = of_read_number(addr, na);
425 memset(addr, 0, pna * 4);
426 pr_debug("OF: no ranges, 1:1 translation\n");
427 goto finish;
428 }
429
430 pr_debug("OF: walking ranges...\n");
431
432 /* Now walk through the ranges */
433 rlen /= 4;
434 rone = na + pna + ns;
435 for (; rlen >= rone; rlen -= rone, ranges += rone) {
436 offset = bus->map(addr, ranges, na, ns, pna);
437 if (offset != OF_BAD_ADDR)
438 break;
439 }
440 if (offset == OF_BAD_ADDR) {
441 pr_debug("OF: not found !\n");
442 return 1;
443 }
444 memcpy(addr, ranges + na, 4 * pna);
445
446 finish:
447 of_dump_addr("OF: parent translation for:", addr, pna);
448 pr_debug("OF: with offset: "PRu64"\n", offset);
449
450 /* Translate it into parent bus space */
451 return pbus->translate(addr, offset, pna);
452}
453
454/*
455 * Translate an address from the device-tree into a CPU physical address,
456 * this walks up the tree and applies the various bus mappings on the
457 * way.
458 *
459 * Note: We consider that crossing any level with #size-cells == 0 to mean
460 * that translation is impossible (that is we are not dealing with a value
461 * that can be mapped to a cpu physical address). This is not really specified
462 * that way, but this is traditionally the way IBM at least do things
463 */
464u64 of_translate_address(struct device_node *dev, const u32 *in_addr)
465{
466 struct device_node *parent = NULL;
467 struct of_bus *bus, *pbus;
468 u32 addr[OF_MAX_ADDR_CELLS];
469 int na, ns, pna, pns;
470 u64 result = OF_BAD_ADDR;
471
472 pr_debug("OF: ** translation for device %s **\n", dev->full_name);
473
474 /* Increase refcount at current level */
475 of_node_get(dev);
476
477 /* Get parent & match bus type */
478 parent = of_get_parent(dev);
479 if (parent == NULL)
480 goto bail;
481 bus = of_match_bus(parent);
482
483 /* Cound address cells & copy address locally */
484 bus->count_cells(dev, &na, &ns);
485 if (!OF_CHECK_COUNTS(na, ns)) {
486 printk(KERN_ERR "prom_parse: Bad cell count for %s\n",
487 dev->full_name);
488 goto bail;
489 }
490 memcpy(addr, in_addr, na * 4);
491
492 pr_debug("OF: bus is %s (na=%d, ns=%d) on %s\n",
493 bus->name, na, ns, parent->full_name);
494 of_dump_addr("OF: translating address:", addr, na);
495
496 /* Translate */
497 for (;;) {
498 /* Switch to parent bus */
499 of_node_put(dev);
500 dev = parent;
501 parent = of_get_parent(dev);
502
503 /* If root, we have finished */
504 if (parent == NULL) {
505 pr_debug("OF: reached root node\n");
506 result = of_read_number(addr, na);
507 break;
508 }
509
510 /* Get new parent bus and counts */
511 pbus = of_match_bus(parent);
512 pbus->count_cells(dev, &pna, &pns);
513 if (!OF_CHECK_COUNTS(pna, pns)) {
514 printk(KERN_ERR "prom_parse: Bad cell count for %s\n",
515 dev->full_name);
516 break;
517 }
518
519 pr_debug("OF: parent bus is %s (na=%d, ns=%d) on %s\n",
520 pbus->name, pna, pns, parent->full_name);
521
522 /* Apply bus translation */
523 if (of_translate_one(dev, bus, pbus, addr, na, ns, pna))
524 break;
525
526 /* Complete the move up one level */
527 na = pna;
528 ns = pns;
529 bus = pbus;
530
531 of_dump_addr("OF: one level translation:", addr, na);
532 }
533 bail:
534 of_node_put(parent);
535 of_node_put(dev);
536
537 return result;
538}
539EXPORT_SYMBOL(of_translate_address);
540
541const u32 *of_get_address(struct device_node *dev, int index, u64 *size,
542 unsigned int *flags)
543{
544 const u32 *prop;
545 unsigned int psize;
546 struct device_node *parent;
547 struct of_bus *bus;
548 int onesize, i, na, ns;
549
550 /* Get parent & match bus type */
551 parent = of_get_parent(dev);
552 if (parent == NULL)
553 return NULL;
554 bus = of_match_bus(parent);
555 bus->count_cells(dev, &na, &ns);
556 of_node_put(parent);
557 if (!OF_CHECK_COUNTS(na, ns))
558 return NULL;
559
560 /* Get "reg" or "assigned-addresses" property */
561 prop = of_get_property(dev, bus->addresses, (int *) &psize);
562 if (prop == NULL)
563 return NULL;
564 psize /= 4;
565
566 onesize = na + ns;
567 for (i = 0; psize >= onesize; psize -= onesize, prop += onesize, i++)
568 if (i == index) {
569 if (size)
570 *size = of_read_number(prop + na, ns);
571 if (flags)
572 *flags = bus->get_flags(prop);
573 return prop;
574 }
575 return NULL;
576}
577EXPORT_SYMBOL(of_get_address);
578
579static int __of_address_to_resource(struct device_node *dev, const u32 *addrp,
580 u64 size, unsigned int flags,
581 struct resource *r)
582{
583 u64 taddr;
584
585 if ((flags & (IORESOURCE_IO | IORESOURCE_MEM)) == 0)
586 return -EINVAL;
587 taddr = of_translate_address(dev, addrp);
588 if (taddr == OF_BAD_ADDR)
589 return -EINVAL;
590 memset(r, 0, sizeof(struct resource));
591 if (flags & IORESOURCE_IO) {
592 unsigned long port;
593 port = -1; /* pci_address_to_pio(taddr); */
594 if (port == (unsigned long)-1)
595 return -EINVAL;
596 r->start = port;
597 r->end = port + size - 1;
598 } else {
599 r->start = taddr;
600 r->end = taddr + size - 1;
601 }
602 r->flags = flags;
603 r->name = dev->name;
604 return 0;
605}
606
607int of_address_to_resource(struct device_node *dev, int index,
608 struct resource *r)
609{
610 const u32 *addrp;
611 u64 size;
612 unsigned int flags;
613
614 addrp = of_get_address(dev, index, &size, &flags);
615 if (addrp == NULL)
616 return -EINVAL;
617 return __of_address_to_resource(dev, addrp, size, flags, r);
618}
619EXPORT_SYMBOL_GPL(of_address_to_resource);
620
621void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
622 unsigned long *busno, unsigned long *phys, unsigned long *size)
623{
624 const u32 *dma_window;
625 u32 cells;
626 const unsigned char *prop;
627
628 dma_window = dma_window_prop;
629
630 /* busno is always one cell */
631 *busno = *(dma_window++);
632
633 prop = of_get_property(dn, "ibm,#dma-address-cells", NULL);
634 if (!prop)
635 prop = of_get_property(dn, "#address-cells", NULL);
636
637 cells = prop ? *(u32 *)prop : of_n_addr_cells(dn);
638 *phys = of_read_number(dma_window, cells);
639
640 dma_window += cells;
641
642 prop = of_get_property(dn, "ibm,#dma-size-cells", NULL);
643 cells = prop ? *(u32 *)prop : of_n_size_cells(dn);
644 *size = of_read_number(dma_window, cells);
645}
646
647/*
648 * Interrupt remapper
649 */
650
651static unsigned int of_irq_workarounds;
652static struct device_node *of_irq_dflt_pic;
653
654static struct device_node *of_irq_find_parent(struct device_node *child)
655{
656 struct device_node *p;
657 const phandle *parp;
658
659 if (!of_node_get(child))
660 return NULL;
661
662 do {
663 parp = of_get_property(child, "interrupt-parent", NULL);
664 if (parp == NULL)
665 p = of_get_parent(child);
666 else {
667 if (of_irq_workarounds & OF_IMAP_NO_PHANDLE)
668 p = of_node_get(of_irq_dflt_pic);
669 else
670 p = of_find_node_by_phandle(*parp);
671 }
672 of_node_put(child);
673 child = p;
674 } while (p && of_get_property(p, "#interrupt-cells", NULL) == NULL);
675
676 return p;
677}
678
679/* This doesn't need to be called if you don't have any special workaround
680 * flags to pass
681 */
682void of_irq_map_init(unsigned int flags)
683{
684 of_irq_workarounds = flags;
685
686 /* OldWorld, don't bother looking at other things */
687 if (flags & OF_IMAP_OLDWORLD_MAC)
688 return;
689
690 /* If we don't have phandles, let's try to locate a default interrupt
691 * controller (happens when booting with BootX). We do a first match
692 * here, hopefully, that only ever happens on machines with one
693 * controller.
694 */
695 if (flags & OF_IMAP_NO_PHANDLE) {
696 struct device_node *np;
697
698 for (np = NULL; (np = of_find_all_nodes(np)) != NULL;) {
699 if (of_get_property(np, "interrupt-controller", NULL)
700 == NULL)
701 continue;
702 /* Skip /chosen/interrupt-controller */
703 if (strcmp(np->name, "chosen") == 0)
704 continue;
705 /* It seems like at least one person on this planet
706 * wants to use BootX on a machine with an AppleKiwi
707 * controller which happens to pretend to be an
708 * interrupt controller too.
709 */
710 if (strcmp(np->name, "AppleKiwi") == 0)
711 continue;
712 /* I think we found one ! */
713 of_irq_dflt_pic = np;
714 break;
715 }
716 }
717
718}
719
720int of_irq_map_raw(struct device_node *parent, const u32 *intspec, u32 ointsize,
721 const u32 *addr, struct of_irq *out_irq)
722{
723 struct device_node *ipar, *tnode, *old = NULL, *newpar = NULL;
724 const u32 *tmp, *imap, *imask;
725 u32 intsize = 1, addrsize, newintsize = 0, newaddrsize = 0;
726 int imaplen, match, i;
727
728 pr_debug("of_irq_map_raw: par=%s,intspec=[0x%08x 0x%08x...],"
729 "ointsize=%d\n",
730 parent->full_name, intspec[0], intspec[1], ointsize);
731
732 ipar = of_node_get(parent);
733
734 /* First get the #interrupt-cells property of the current cursor
735 * that tells us how to interpret the passed-in intspec. If there
736 * is none, we are nice and just walk up the tree
737 */
738 do {
739 tmp = of_get_property(ipar, "#interrupt-cells", NULL);
740 if (tmp != NULL) {
741 intsize = *tmp;
742 break;
743 }
744 tnode = ipar;
745 ipar = of_irq_find_parent(ipar);
746 of_node_put(tnode);
747 } while (ipar);
748 if (ipar == NULL) {
749 pr_debug(" -> no parent found !\n");
750 goto fail;
751 }
752
753 pr_debug("of_irq_map_raw: ipar=%s, size=%d\n",
754 ipar->full_name, intsize);
755
756 if (ointsize != intsize)
757 return -EINVAL;
758
759 /* Look for this #address-cells. We have to implement the old linux
760 * trick of looking for the parent here as some device-trees rely on it
761 */
762 old = of_node_get(ipar);
763 do {
764 tmp = of_get_property(old, "#address-cells", NULL);
765 tnode = of_get_parent(old);
766 of_node_put(old);
767 old = tnode;
768 } while (old && tmp == NULL);
769 of_node_put(old);
770 old = NULL;
771 addrsize = (tmp == NULL) ? 2 : *tmp;
772
773 pr_debug(" -> addrsize=%d\n", addrsize);
774
775 /* Now start the actual "proper" walk of the interrupt tree */
776 while (ipar != NULL) {
777 /* Now check if cursor is an interrupt-controller and if it is
778 * then we are done
779 */
780 if (of_get_property(ipar, "interrupt-controller", NULL) !=
781 NULL) {
782 pr_debug(" -> got it !\n");
783 memcpy(out_irq->specifier, intspec,
784 intsize * sizeof(u32));
785 out_irq->size = intsize;
786 out_irq->controller = ipar;
787 of_node_put(old);
788 return 0;
789 }
790
791 /* Now look for an interrupt-map */
792 imap = of_get_property(ipar, "interrupt-map", &imaplen);
793 /* No interrupt map, check for an interrupt parent */
794 if (imap == NULL) {
795 pr_debug(" -> no map, getting parent\n");
796 newpar = of_irq_find_parent(ipar);
797 goto skiplevel;
798 }
799 imaplen /= sizeof(u32);
800
801 /* Look for a mask */
802 imask = of_get_property(ipar, "interrupt-map-mask", NULL);
803
804 /* If we were passed no "reg" property and we attempt to parse
805 * an interrupt-map, then #address-cells must be 0.
806 * Fail if it's not.
807 */
808 if (addr == NULL && addrsize != 0) {
809 pr_debug(" -> no reg passed in when needed !\n");
810 goto fail;
811 }
812
813 /* Parse interrupt-map */
814 match = 0;
815 while (imaplen > (addrsize + intsize + 1) && !match) {
816 /* Compare specifiers */
817 match = 1;
818 for (i = 0; i < addrsize && match; ++i) {
819 u32 mask = imask ? imask[i] : 0xffffffffu;
820 match = ((addr[i] ^ imap[i]) & mask) == 0;
821 }
822 for (; i < (addrsize + intsize) && match; ++i) {
823 u32 mask = imask ? imask[i] : 0xffffffffu;
824 match =
825 ((intspec[i-addrsize] ^ imap[i])
826 & mask) == 0;
827 }
828 imap += addrsize + intsize;
829 imaplen -= addrsize + intsize;
830
831 pr_debug(" -> match=%d (imaplen=%d)\n", match, imaplen);
832
833 /* Get the interrupt parent */
834 if (of_irq_workarounds & OF_IMAP_NO_PHANDLE)
835 newpar = of_node_get(of_irq_dflt_pic);
836 else
837 newpar =
838 of_find_node_by_phandle((phandle)*imap);
839 imap++;
840 --imaplen;
841
842 /* Check if not found */
843 if (newpar == NULL) {
844 pr_debug(" -> imap parent not found !\n");
845 goto fail;
846 }
847
848 /* Get #interrupt-cells and #address-cells of new
849 * parent
850 */
851 tmp = of_get_property(newpar, "#interrupt-cells", NULL);
852 if (tmp == NULL) {
853 pr_debug(" -> parent lacks "
854 "#interrupt-cells!\n");
855 goto fail;
856 }
857 newintsize = *tmp;
858 tmp = of_get_property(newpar, "#address-cells", NULL);
859 newaddrsize = (tmp == NULL) ? 0 : *tmp;
860
861 pr_debug(" -> newintsize=%d, newaddrsize=%d\n",
862 newintsize, newaddrsize);
863
864 /* Check for malformed properties */
865 if (imaplen < (newaddrsize + newintsize))
866 goto fail;
867
868 imap += newaddrsize + newintsize;
869 imaplen -= newaddrsize + newintsize;
870
871 pr_debug(" -> imaplen=%d\n", imaplen);
872 }
873 if (!match)
874 goto fail;
875
876 of_node_put(old);
877 old = of_node_get(newpar);
878 addrsize = newaddrsize;
879 intsize = newintsize;
880 intspec = imap - intsize;
881 addr = intspec - addrsize;
882
883skiplevel:
884 /* Iterate again with new parent */
885 pr_debug(" -> new parent: %s\n",
886 newpar ? newpar->full_name : "<>");
887 of_node_put(ipar);
888 ipar = newpar;
889 newpar = NULL;
890 }
891fail:
892 of_node_put(ipar);
893 of_node_put(old);
894 of_node_put(newpar);
895
896 return -EINVAL;
897}
898EXPORT_SYMBOL_GPL(of_irq_map_raw);
899
900int of_irq_map_one(struct device_node *device,
901 int index, struct of_irq *out_irq)
902{
903 struct device_node *p;
904 const u32 *intspec, *tmp, *addr;
905 u32 intsize, intlen;
906 int res;
907
908 pr_debug("of_irq_map_one: dev=%s, index=%d\n",
909 device->full_name, index);
910
911 /* Get the interrupts property */
912 intspec = of_get_property(device, "interrupts", (int *) &intlen);
913 if (intspec == NULL)
914 return -EINVAL;
915 intlen /= sizeof(u32);
916
917 pr_debug(" intspec=%d intlen=%d\n", *intspec, intlen);
918
919 /* Get the reg property (if any) */
920 addr = of_get_property(device, "reg", NULL);
921
922 /* Look for the interrupt parent. */
923 p = of_irq_find_parent(device);
924 if (p == NULL)
925 return -EINVAL;
926
927 /* Get size of interrupt specifier */
928 tmp = of_get_property(p, "#interrupt-cells", NULL);
929 if (tmp == NULL) {
930 of_node_put(p);
931 return -EINVAL;
932 }
933 intsize = *tmp;
934
935 pr_debug(" intsize=%d intlen=%d\n", intsize, intlen);
936
937 /* Check index */
938 if ((index + 1) * intsize > intlen)
939 return -EINVAL;
940
941 /* Get new specifier and map it */
942 res = of_irq_map_raw(p, intspec + index * intsize, intsize,
943 addr, out_irq);
944 of_node_put(p);
945 return res;
946}
947EXPORT_SYMBOL_GPL(of_irq_map_one);
948
949/**
950 * Search the device tree for the best MAC address to use. 'mac-address' is
951 * checked first, because that is supposed to contain to "most recent" MAC
952 * address. If that isn't set, then 'local-mac-address' is checked next,
953 * because that is the default address. If that isn't set, then the obsolete
954 * 'address' is checked, just in case we're using an old device tree.
955 *
956 * Note that the 'address' property is supposed to contain a virtual address of
957 * the register set, but some DTS files have redefined that property to be the
958 * MAC address.
959 *
960 * All-zero MAC addresses are rejected, because those could be properties that
961 * exist in the device tree, but were not set by U-Boot. For example, the
962 * DTS could define 'mac-address' and 'local-mac-address', with zero MAC
963 * addresses. Some older U-Boots only initialized 'local-mac-address'. In
964 * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
965 * but is all zeros.
966*/
967const void *of_get_mac_address(struct device_node *np)
968{
969 struct property *pp;
970
971 pp = of_find_property(np, "mac-address", NULL);
972 if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
973 return pp->value;
974
975 pp = of_find_property(np, "local-mac-address", NULL);
976 if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
977 return pp->value;
978
979 pp = of_find_property(np, "address", NULL);
980 if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
981 return pp->value;
982
983 return NULL;
984}
985EXPORT_SYMBOL(of_get_mac_address);
986
987int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
988{
989 struct of_irq out_irq;
990 int irq;
991 int res;
992
993 res = of_irq_map_one(dev, index, &out_irq);
994
995 /* Get irq for the device */
996 if (res) {
997 pr_debug("IRQ not found... code = %d", res);
998 return NO_IRQ;
999 }
1000 /* Assuming single interrupt controller... */
1001 irq = out_irq.specifier[0];
1002
1003 pr_debug("IRQ found = %d", irq);
1004
1005 /* Only dereference the resource if both the
1006 * resource and the irq are valid. */
1007 if (r && irq != NO_IRQ) {
1008 r->start = r->end = irq;
1009 r->flags = IORESOURCE_IRQ;
1010 }
1011
1012 return irq;
1013}
1014EXPORT_SYMBOL_GPL(of_irq_to_resource);
1015
1016void __iomem *of_iomap(struct device_node *np, int index)
1017{
1018 struct resource res;
1019
1020 if (of_address_to_resource(np, index, &res))
1021 return NULL;
1022
1023 return ioremap(res.start, 1 + res.end - res.start);
1024}
1025EXPORT_SYMBOL(of_iomap);
diff --git a/arch/microblaze/kernel/ptrace.c b/arch/microblaze/kernel/ptrace.c
new file mode 100644
index 000000000000..b86aa623e36d
--- /dev/null
+++ b/arch/microblaze/kernel/ptrace.c
@@ -0,0 +1,181 @@
1/*
2 * `ptrace' system call
3 *
4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2004-2007 John Williams <john.williams@petalogix.com>
7 *
8 * derived from arch/v850/kernel/ptrace.c
9 *
10 * Copyright (C) 2002,03 NEC Electronics Corporation
11 * Copyright (C) 2002,03 Miles Bader <miles@gnu.org>
12 *
13 * Derived from arch/mips/kernel/ptrace.c:
14 *
15 * Copyright (C) 1992 Ross Biro
16 * Copyright (C) Linus Torvalds
17 * Copyright (C) 1994, 95, 96, 97, 98, 2000 Ralf Baechle
18 * Copyright (C) 1996 David S. Miller
19 * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
20 * Copyright (C) 1999 MIPS Technologies, Inc.
21 *
22 * This file is subject to the terms and conditions of the GNU General
23 * Public License. See the file COPYING in the main directory of this
24 * archive for more details.
25 */
26
27#include <linux/kernel.h>
28#include <linux/mm.h>
29#include <linux/sched.h>
30#include <linux/smp_lock.h>
31#include <linux/ptrace.h>
32#include <linux/signal.h>
33
34#include <linux/errno.h>
35#include <asm/processor.h>
36#include <linux/uaccess.h>
37#include <asm/asm-offsets.h>
38
39/* Returns the address where the register at REG_OFFS in P is stashed away. */
40static microblaze_reg_t *reg_save_addr(unsigned reg_offs,
41 struct task_struct *t)
42{
43 struct pt_regs *regs;
44
45 /*
46 * Three basic cases:
47 *
48 * (1) A register normally saved before calling the scheduler, is
49 * available in the kernel entry pt_regs structure at the top
50 * of the kernel stack. The kernel trap/irq exit path takes
51 * care to save/restore almost all registers for ptrace'd
52 * processes.
53 *
54 * (2) A call-clobbered register, where the process P entered the
55 * kernel via [syscall] trap, is not stored anywhere; that's
56 * OK, because such registers are not expected to be preserved
57 * when the trap returns anyway (so we don't actually bother to
58 * test for this case).
59 *
60 * (3) A few registers not used at all by the kernel, and so
61 * normally never saved except by context-switches, are in the
62 * context switch state.
63 */
64
65 /* Register saved during kernel entry (or not available). */
66 regs = task_pt_regs(t);
67
68 return (microblaze_reg_t *)((char *)regs + reg_offs);
69}
70
71long arch_ptrace(struct task_struct *child, long request, long addr, long data)
72{
73 int rval;
74 unsigned long val = 0;
75 unsigned long copied;
76
77 switch (request) {
78 case PTRACE_PEEKTEXT: /* read word at location addr. */
79 case PTRACE_PEEKDATA:
80 pr_debug("PEEKTEXT/PEEKDATA at %08lX\n", addr);
81 copied = access_process_vm(child, addr, &val, sizeof(val), 0);
82 rval = -EIO;
83 if (copied != sizeof(val))
84 break;
85 rval = put_user(val, (unsigned long *)data);
86 break;
87
88 case PTRACE_POKETEXT: /* write the word at location addr. */
89 case PTRACE_POKEDATA:
90 pr_debug("POKETEXT/POKEDATA to %08lX\n", addr);
91 rval = 0;
92 if (access_process_vm(child, addr, &data, sizeof(data), 1)
93 == sizeof(data))
94 break;
95 rval = -EIO;
96 break;
97
98 /* Read/write the word at location ADDR in the registers. */
99 case PTRACE_PEEKUSR:
100 case PTRACE_POKEUSR:
101 pr_debug("PEEKUSR/POKEUSR : 0x%08lx\n", addr);
102 rval = 0;
103 if (addr >= PT_SIZE && request == PTRACE_PEEKUSR) {
104 /*
105 * Special requests that don't actually correspond
106 * to offsets in struct pt_regs.
107 */
108 if (addr == PT_TEXT_ADDR) {
109 val = child->mm->start_code;
110 } else if (addr == PT_DATA_ADDR) {
111 val = child->mm->start_data;
112 } else if (addr == PT_TEXT_LEN) {
113 val = child->mm->end_code
114 - child->mm->start_code;
115 } else {
116 rval = -EIO;
117 }
118 } else if (addr >= 0 && addr < PT_SIZE && (addr & 0x3) == 0) {
119 microblaze_reg_t *reg_addr = reg_save_addr(addr, child);
120 if (request == PTRACE_PEEKUSR)
121 val = *reg_addr;
122 else
123 *reg_addr = data;
124 } else
125 rval = -EIO;
126
127 if (rval == 0 && request == PTRACE_PEEKUSR)
128 rval = put_user(val, (unsigned long *)data);
129 break;
130 /* Continue and stop at next (return from) syscall */
131 case PTRACE_SYSCALL:
132 pr_debug("PTRACE_SYSCALL\n");
133 case PTRACE_SINGLESTEP:
134 pr_debug("PTRACE_SINGLESTEP\n");
135 /* Restart after a signal. */
136 case PTRACE_CONT:
137 pr_debug("PTRACE_CONT\n");
138 rval = -EIO;
139 if (!valid_signal(data))
140 break;
141
142 if (request == PTRACE_SYSCALL)
143 set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
144 else
145 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
146
147 child->exit_code = data;
148 pr_debug("wakeup_process\n");
149 wake_up_process(child);
150 rval = 0;
151 break;
152
153 /*
154 * make the child exit. Best I can do is send it a sigkill.
155 * perhaps it should be put in the status that it wants to
156 * exit.
157 */
158 case PTRACE_KILL:
159 pr_debug("PTRACE_KILL\n");
160 rval = 0;
161 if (child->exit_state == EXIT_ZOMBIE) /* already dead */
162 break;
163 child->exit_code = SIGKILL;
164 wake_up_process(child);
165 break;
166
167 case PTRACE_DETACH: /* detach a process that was attached. */
168 pr_debug("PTRACE_DETACH\n");
169 rval = ptrace_detach(child, data);
170 break;
171 default:
172 /* rval = ptrace_request(child, request, addr, data); noMMU */
173 rval = -EIO;
174 }
175 return rval;
176}
177
178void ptrace_disable(struct task_struct *child)
179{
180 /* nothing to do */
181}
diff --git a/arch/microblaze/kernel/selfmod.c b/arch/microblaze/kernel/selfmod.c
new file mode 100644
index 000000000000..89508bdc9f3c
--- /dev/null
+++ b/arch/microblaze/kernel/selfmod.c
@@ -0,0 +1,81 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2009 PetaLogix
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#include <linux/interrupt.h>
11#include <asm/selfmod.h>
12
13#undef DEBUG
14
15#if __GNUC__ > 3
16#error GCC 4 unsupported SELFMOD. Please disable SELFMOD from menuconfig.
17#endif
18
19#define OPCODE_IMM 0xB0000000
20#define OPCODE_LWI 0xE8000000
21#define OPCODE_LWI_MASK 0xEC000000
22#define OPCODE_RTSD 0xB60F0008 /* return from func: rtsd r15, 8 */
23#define OPCODE_ADDIK 0x30000000
24#define OPCODE_ADDIK_MASK 0xFC000000
25
26#define IMM_BASE (OPCODE_IMM | (BARRIER_BASE_ADDR >> 16))
27#define LWI_BASE (OPCODE_LWI | (BARRIER_BASE_ADDR & 0x0000ff00))
28#define LWI_BASE_MASK (OPCODE_LWI_MASK | (BARRIER_BASE_ADDR & 0x0000ff00))
29#define ADDIK_BASE (OPCODE_ADDIK | (BARRIER_BASE_ADDR & 0x0000ff00))
30#define ADDIK_BASE_MASK (OPCODE_ADDIK_MASK | (BARRIER_BASE_ADDR & 0x0000ff00))
31
32#define MODIFY_INSTR { \
33 pr_debug("%s: curr instr, (%d):0x%x, next(%d):0x%x\n", \
34 __func__, i, addr[i], i + 1, addr[i + 1]); \
35 addr[i] = OPCODE_IMM + (base >> 16); \
36 /* keep instruction opcode and add only last 16bits */ \
37 addr[i + 1] = (addr[i + 1] & 0xffff00ff) + (base & 0xffff); \
38 __invalidate_icache(addr[i]); \
39 __invalidate_icache(addr[i + 1]); \
40 pr_debug("%s: hack instr, (%d):0x%x, next(%d):0x%x\n", \
41 __func__, i, addr[i], i + 1, addr[i + 1]); }
42
43/* NOTE
44 * self-modified part of code for improvement of interrupt controller
45 * save instruction in interrupt rutine
46 */
47void selfmod_function(const int *arr_fce, const unsigned int base)
48{
49 unsigned int flags, i, j, *addr = NULL;
50
51 local_irq_save(flags);
52 __disable_icache();
53
54 /* zero terminated array */
55 for (j = 0; arr_fce[j] != 0; j++) {
56 /* get start address of function */
57 addr = (unsigned int *) arr_fce[j];
58 pr_debug("%s: func(%d) at 0x%x\n",
59 __func__, j, (unsigned int) addr);
60 for (i = 0; ; i++) {
61 pr_debug("%s: instruction code at %d: 0x%x\n",
62 __func__, i, addr[i]);
63 if (addr[i] == IMM_BASE) {
64 /* detecting of lwi (0xE8) or swi (0xF8) instr
65 * I can detect both opcode with one mask */
66 if ((addr[i + 1] & LWI_BASE_MASK) == LWI_BASE) {
67 MODIFY_INSTR;
68 } else /* detection addik for ack */
69 if ((addr[i + 1] & ADDIK_BASE_MASK) ==
70 ADDIK_BASE) {
71 MODIFY_INSTR;
72 }
73 } else if (addr[i] == OPCODE_RTSD) {
74 /* return from function means end of function */
75 pr_debug("%s: end of array %d\n", __func__, i);
76 break;
77 }
78 }
79 }
80 local_irq_restore(flags);
81} /* end of self-modified code */
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c
new file mode 100644
index 000000000000..eb6b41758e23
--- /dev/null
+++ b/arch/microblaze/kernel/setup.c
@@ -0,0 +1,199 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/string.h>
13#include <linux/seq_file.h>
14#include <linux/cpu.h>
15#include <linux/initrd.h>
16#include <linux/console.h>
17#include <linux/debugfs.h>
18
19#include <asm/setup.h>
20#include <asm/sections.h>
21#include <asm/page.h>
22#include <linux/io.h>
23#include <linux/bug.h>
24#include <linux/param.h>
25#include <linux/cache.h>
26#include <asm/cacheflush.h>
27#include <asm/entry.h>
28#include <asm/cpuinfo.h>
29
30#include <asm/system.h>
31#include <asm/prom.h>
32#include <asm/pgtable.h>
33
34DEFINE_PER_CPU(unsigned int, KSP); /* Saved kernel stack pointer */
35DEFINE_PER_CPU(unsigned int, KM); /* Kernel/user mode */
36DEFINE_PER_CPU(unsigned int, ENTRY_SP); /* Saved SP on kernel entry */
37DEFINE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
38DEFINE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
39
40unsigned int boot_cpuid;
41char cmd_line[COMMAND_LINE_SIZE];
42
43void __init setup_arch(char **cmdline_p)
44{
45#ifdef CONFIG_CMDLINE_FORCE
46 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
47 strlcpy(boot_command_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
48#endif
49 *cmdline_p = cmd_line;
50
51 console_verbose();
52
53 unflatten_device_tree();
54
55 /* NOTE I think that this function is not necessary to call */
56 /* irq_early_init(); */
57 setup_cpuinfo();
58
59 __invalidate_icache_all();
60 __enable_icache();
61
62 __invalidate_dcache_all();
63 __enable_dcache();
64
65 panic_timeout = 120;
66
67 setup_memory();
68
69#if defined(CONFIG_SELFMOD_INTC) || defined(CONFIG_SELFMOD_TIMER)
70 printk(KERN_NOTICE "Self modified code enable\n");
71#endif
72
73#ifdef CONFIG_VT
74#if defined(CONFIG_XILINX_CONSOLE)
75 conswitchp = &xil_con;
76#elif defined(CONFIG_DUMMY_CONSOLE)
77 conswitchp = &dummy_con;
78#endif
79#endif
80}
81
82#ifdef CONFIG_MTD_UCLINUX
83/* Handle both romfs and cramfs types, without generating unnecessary
84 code (ie no point checking for CRAMFS if it's not even enabled) */
85inline unsigned get_romfs_len(unsigned *addr)
86{
87#ifdef CONFIG_ROMFS_FS
88 if (memcmp(&addr[0], "-rom1fs-", 8) == 0) /* romfs */
89 return be32_to_cpu(addr[2]);
90#endif
91
92#ifdef CONFIG_CRAMFS
93 if (addr[0] == le32_to_cpu(0x28cd3d45)) /* cramfs */
94 return le32_to_cpu(addr[1]);
95#endif
96 return 0;
97}
98#endif /* CONFIG_MTD_UCLINUX_EBSS */
99
100void __init machine_early_init(const char *cmdline, unsigned int ram,
101 unsigned int fdt)
102{
103 unsigned long *src, *dst = (unsigned long *)0x0;
104
105/* clearing bss section */
106 memset(__bss_start, 0, __bss_stop-__bss_start);
107 memset(_ssbss, 0, _esbss-_ssbss);
108
109 /*
110 * Copy command line passed from bootloader, or use default
111 * if none provided, or forced
112 */
113#ifndef CONFIG_CMDLINE_BOOL
114 if (cmdline && cmdline[0] != '\0')
115 strlcpy(cmd_line, cmdline, COMMAND_LINE_SIZE);
116#endif
117
118/* initialize device tree for usage in early_printk */
119 early_init_devtree((void *)_fdt_start);
120
121#ifdef CONFIG_EARLY_PRINTK
122 setup_early_printk(NULL);
123#endif
124
125 early_printk("Ramdisk addr 0x%08x, FDT 0x%08x\n", ram, fdt);
126 printk(KERN_NOTICE "Found FDT at 0x%08x\n", fdt);
127
128#ifdef CONFIG_MTD_UCLINUX
129 {
130 int size;
131 unsigned int romfs_base;
132 romfs_base = (ram ? ram : (unsigned int)&__init_end);
133 /* if CONFIG_MTD_UCLINUX_EBSS is defined, assume ROMFS is at the
134 * end of kernel, which is ROMFS_LOCATION defined above. */
135 size = PAGE_ALIGN(get_romfs_len((unsigned *)romfs_base));
136 early_printk("Found romfs @ 0x%08x (0x%08x)\n",
137 romfs_base, size);
138 early_printk("#### klimit %p ####\n", klimit);
139 BUG_ON(size < 0); /* What else can we do? */
140
141 /* Use memmove to handle likely case of memory overlap */
142 early_printk("Moving 0x%08x bytes from 0x%08x to 0x%08x\n",
143 size, romfs_base, (unsigned)&_ebss);
144 memmove(&_ebss, (int *)romfs_base, size);
145
146 /* update klimit */
147 klimit += PAGE_ALIGN(size);
148 early_printk("New klimit: 0x%08x\n", (unsigned)klimit);
149 }
150#endif
151
152 for (src = __ivt_start; src < __ivt_end; src++, dst++)
153 *dst = *src;
154
155 /* Initialize global data */
156 per_cpu(KM, 0) = 0x1; /* We start in kernel mode */
157 per_cpu(CURRENT_SAVE, 0) = (unsigned long)current;
158}
159
160#ifdef CONFIG_DEBUG_FS
161struct dentry *of_debugfs_root;
162
163static int microblaze_debugfs_init(void)
164{
165 of_debugfs_root = debugfs_create_dir("microblaze", NULL);
166
167 return of_debugfs_root == NULL;
168}
169arch_initcall(microblaze_debugfs_init);
170#endif
171
172void machine_restart(char *cmd)
173{
174 printk(KERN_NOTICE "Machine restart...\n");
175 dump_stack();
176 while (1)
177 ;
178}
179
180void machine_shutdown(void)
181{
182 printk(KERN_NOTICE "Machine shutdown...\n");
183 while (1)
184 ;
185}
186
187void machine_halt(void)
188{
189 printk(KERN_NOTICE "Machine halt...\n");
190 while (1)
191 ;
192}
193
194void machine_power_off(void)
195{
196 printk(KERN_NOTICE "Machine power off...\n");
197 while (1)
198 ;
199}
diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c
new file mode 100644
index 000000000000..40d36931e363
--- /dev/null
+++ b/arch/microblaze/kernel/signal.c
@@ -0,0 +1,543 @@
1/*
2 * Signal handling
3 *
4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2008-2009 PetaLogix
6 * Copyright (C) 2003,2004 John Williams <jwilliams@itee.uq.edu.au>
7 * Copyright (C) 2001 NEC Corporation
8 * Copyright (C) 2001 Miles Bader <miles@gnu.org>
9 * Copyright (C) 1999,2000 Niibe Yutaka & Kaz Kojima
10 * Copyright (C) 1991,1992 Linus Torvalds
11 *
12 * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson
13 *
14 * This file was was derived from the sh version, arch/sh/kernel/signal.c
15 *
16 * This file is subject to the terms and conditions of the GNU General
17 * Public License. See the file COPYING in the main directory of this
18 * archive for more details.
19 */
20
21#include <linux/sched.h>
22#include <linux/mm.h>
23#include <linux/smp.h>
24#include <linux/smp_lock.h>
25#include <linux/kernel.h>
26#include <linux/signal.h>
27#include <linux/errno.h>
28#include <linux/wait.h>
29#include <linux/ptrace.h>
30#include <linux/unistd.h>
31#include <linux/stddef.h>
32#include <linux/personality.h>
33#include <linux/percpu.h>
34#include <linux/linkage.h>
35#include <asm/entry.h>
36#include <asm/ucontext.h>
37#include <linux/uaccess.h>
38#include <asm/pgtable.h>
39#include <asm/pgalloc.h>
40#include <linux/syscalls.h>
41#include <asm/cacheflush.h>
42#include <asm/syscalls.h>
43
44#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
45
46asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset, int in_sycall);
47
48/*
49 * Atomically swap in the new signal mask, and wait for a signal.
50 */
51asmlinkage int
52sys_sigsuspend(old_sigset_t mask, struct pt_regs *regs)
53{
54 sigset_t saveset;
55
56 mask &= _BLOCKABLE;
57 spin_lock_irq(&current->sighand->siglock);
58 saveset = current->blocked;
59 siginitset(&current->blocked, mask);
60 recalc_sigpending();
61 spin_unlock_irq(&current->sighand->siglock);
62
63 regs->r3 = -EINTR;
64 while (1) {
65 current->state = TASK_INTERRUPTIBLE;
66 schedule();
67 if (do_signal(regs, &saveset, 1))
68 return -EINTR;
69 }
70}
71
72asmlinkage int
73sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
74 struct pt_regs *regs)
75{
76 sigset_t saveset, newset;
77
78 /* XXX: Don't preclude handling different sized sigset_t's. */
79 if (sigsetsize != sizeof(sigset_t))
80 return -EINVAL;
81
82 if (copy_from_user(&newset, unewset, sizeof(newset)))
83 return -EFAULT;
84 sigdelsetmask(&newset, ~_BLOCKABLE);
85 spin_lock_irq(&current->sighand->siglock);
86 saveset = current->blocked;
87 current->blocked = newset;
88 recalc_sigpending();
89 spin_unlock_irq(&current->sighand->siglock);
90
91 regs->r3 = -EINTR;
92 while (1) {
93 current->state = TASK_INTERRUPTIBLE;
94 schedule();
95 if (do_signal(regs, &saveset, 1))
96 return -EINTR;
97 }
98}
99
100asmlinkage int
101sys_sigaction(int sig, const struct old_sigaction *act,
102 struct old_sigaction *oact)
103{
104 struct k_sigaction new_ka, old_ka;
105 int ret;
106
107 if (act) {
108 old_sigset_t mask;
109 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
110 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
111 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer))
112 return -EFAULT;
113 __get_user(new_ka.sa.sa_flags, &act->sa_flags);
114 __get_user(mask, &act->sa_mask);
115 siginitset(&new_ka.sa.sa_mask, mask);
116 }
117
118 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
119
120 if (!ret && oact) {
121 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
122 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
123 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer))
124 return -EFAULT;
125 __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
126 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask);
127 }
128
129 return ret;
130}
131
132asmlinkage int
133sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
134 struct pt_regs *regs)
135{
136 return do_sigaltstack(uss, uoss, regs->r1);
137}
138
139/*
140 * Do a signal return; undo the signal stack.
141 */
142
143struct sigframe {
144 struct sigcontext sc;
145 unsigned long extramask[_NSIG_WORDS-1];
146 unsigned long tramp[2]; /* signal trampoline */
147};
148
149struct rt_sigframe {
150 struct siginfo info;
151 struct ucontext uc;
152 unsigned long tramp[2]; /* signal trampoline */
153};
154
155static int
156restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *rval_p)
157{
158 unsigned int err = 0;
159
160#define COPY(x) {err |= __get_user(regs->x, &sc->regs.x); }
161 COPY(r0);
162 COPY(r1);
163 COPY(r2); COPY(r3); COPY(r4); COPY(r5);
164 COPY(r6); COPY(r7); COPY(r8); COPY(r9);
165 COPY(r10); COPY(r11); COPY(r12); COPY(r13);
166 COPY(r14); COPY(r15); COPY(r16); COPY(r17);
167 COPY(r18); COPY(r19); COPY(r20); COPY(r21);
168 COPY(r22); COPY(r23); COPY(r24); COPY(r25);
169 COPY(r26); COPY(r27); COPY(r28); COPY(r29);
170 COPY(r30); COPY(r31);
171 COPY(pc); COPY(ear); COPY(esr); COPY(fsr);
172#undef COPY
173
174 *rval_p = regs->r3;
175
176 return err;
177}
178
179asmlinkage int sys_sigreturn(struct pt_regs *regs)
180{
181 struct sigframe *frame =
182 (struct sigframe *)(regs->r1 + STATE_SAVE_ARG_SPACE);
183
184 sigset_t set;
185 int rval;
186
187 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
188 goto badframe;
189
190 if (__get_user(set.sig[0], &frame->sc.oldmask)
191 || (_NSIG_WORDS > 1
192 && __copy_from_user(&set.sig[1], &frame->extramask,
193 sizeof(frame->extramask))))
194 goto badframe;
195
196 sigdelsetmask(&set, ~_BLOCKABLE);
197
198 spin_lock_irq(&current->sighand->siglock);
199 current->blocked = set;
200 recalc_sigpending();
201 spin_unlock_irq(&current->sighand->siglock);
202
203 if (restore_sigcontext(regs, &frame->sc, &rval))
204 goto badframe;
205 return rval;
206
207badframe:
208 force_sig(SIGSEGV, current);
209 return 0;
210}
211
212asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
213{
214 struct rt_sigframe *frame =
215 (struct rt_sigframe *)(regs->r1 + STATE_SAVE_ARG_SPACE);
216
217 sigset_t set;
218 stack_t st;
219 int rval;
220
221 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
222 goto badframe;
223
224 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
225 goto badframe;
226
227 sigdelsetmask(&set, ~_BLOCKABLE);
228 spin_lock_irq(&current->sighand->siglock);
229 current->blocked = set;
230 recalc_sigpending();
231 spin_unlock_irq(&current->sighand->siglock);
232
233 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &rval))
234 goto badframe;
235
236 if (__copy_from_user((void *)&st, &frame->uc.uc_stack, sizeof(st)))
237 goto badframe;
238 /* It is more difficult to avoid calling this function than to
239 call it and ignore errors. */
240 do_sigaltstack(&st, NULL, regs->r1);
241
242 return rval;
243
244badframe:
245 force_sig(SIGSEGV, current);
246 return 0;
247}
248
249/*
250 * Set up a signal frame.
251 */
252
253static int
254setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs,
255 unsigned long mask)
256{
257 int err = 0;
258
259#define COPY(x) {err |= __put_user(regs->x, &sc->regs.x); }
260 COPY(r0);
261 COPY(r1);
262 COPY(r2); COPY(r3); COPY(r4); COPY(r5);
263 COPY(r6); COPY(r7); COPY(r8); COPY(r9);
264 COPY(r10); COPY(r11); COPY(r12); COPY(r13);
265 COPY(r14); COPY(r15); COPY(r16); COPY(r17);
266 COPY(r18); COPY(r19); COPY(r20); COPY(r21);
267 COPY(r22); COPY(r23); COPY(r24); COPY(r25);
268 COPY(r26); COPY(r27); COPY(r28); COPY(r29);
269 COPY(r30); COPY(r31);
270 COPY(pc); COPY(ear); COPY(esr); COPY(fsr);
271#undef COPY
272
273 err |= __put_user(mask, &sc->oldmask);
274
275 return err;
276}
277
278/*
279 * Determine which stack to use..
280 */
281static inline void *
282get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size)
283{
284 /* Default to using normal stack */
285 unsigned long sp = regs->r1;
286
287 if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && !on_sig_stack(sp))
288 sp = current->sas_ss_sp + current->sas_ss_size;
289
290 return (void *)((sp - frame_size) & -8UL);
291}
292
293static void setup_frame(int sig, struct k_sigaction *ka,
294 sigset_t *set, struct pt_regs *regs)
295{
296 struct sigframe *frame;
297 int err = 0;
298 int signal;
299
300 frame = get_sigframe(ka, regs, sizeof(*frame));
301
302 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
303 goto give_sigsegv;
304
305 signal = current_thread_info()->exec_domain
306 && current_thread_info()->exec_domain->signal_invmap
307 && sig < 32
308 ? current_thread_info()->exec_domain->signal_invmap[sig]
309 : sig;
310
311 err |= setup_sigcontext(&frame->sc, regs, set->sig[0]);
312
313 if (_NSIG_WORDS > 1) {
314 err |= __copy_to_user(frame->extramask, &set->sig[1],
315 sizeof(frame->extramask));
316 }
317
318 /* Set up to return from userspace. If provided, use a stub
319 already in userspace. */
320 /* minus 8 is offset to cater for "rtsd r15,8" offset */
321 if (ka->sa.sa_flags & SA_RESTORER) {
322 regs->r15 = ((unsigned long)ka->sa.sa_restorer)-8;
323 } else {
324 /* Note, these encodings are _big endian_! */
325
326 /* addi r12, r0, __NR_sigreturn */
327 err |= __put_user(0x31800000 | __NR_sigreturn ,
328 frame->tramp + 0);
329 /* brki r14, 0x8 */
330 err |= __put_user(0xb9cc0008, frame->tramp + 1);
331
332 /* Return from sighandler will jump to the tramp.
333 Negative 8 offset because return is rtsd r15, 8 */
334 regs->r15 = ((unsigned long)frame->tramp)-8;
335
336 __invalidate_cache_sigtramp((unsigned long)frame->tramp);
337 }
338
339 if (err)
340 goto give_sigsegv;
341
342 /* Set up registers for signal handler */
343 regs->r1 = (unsigned long) frame - STATE_SAVE_ARG_SPACE;
344
345 /* Signal handler args: */
346 regs->r5 = signal; /* Arg 0: signum */
347 regs->r6 = (unsigned long) &frame->sc; /* arg 1: sigcontext */
348
349 /* Offset of 4 to handle microblaze rtid r14, 0 */
350 regs->pc = (unsigned long)ka->sa.sa_handler;
351
352 set_fs(USER_DS);
353
354#ifdef DEBUG_SIG
355 printk(KERN_INFO "SIG deliver (%s:%d): sp=%p pc=%08lx\n",
356 current->comm, current->pid, frame, regs->pc);
357#endif
358
359 return;
360
361give_sigsegv:
362 if (sig == SIGSEGV)
363 ka->sa.sa_handler = SIG_DFL;
364 force_sig(SIGSEGV, current);
365}
366
367static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
368 sigset_t *set, struct pt_regs *regs)
369{
370 struct rt_sigframe *frame;
371 int err = 0;
372 int signal;
373
374 frame = get_sigframe(ka, regs, sizeof(*frame));
375
376 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
377 goto give_sigsegv;
378
379 signal = current_thread_info()->exec_domain
380 && current_thread_info()->exec_domain->signal_invmap
381 && sig < 32
382 ? current_thread_info()->exec_domain->signal_invmap[sig]
383 : sig;
384
385 err |= copy_siginfo_to_user(&frame->info, info);
386
387 /* Create the ucontext. */
388 err |= __put_user(0, &frame->uc.uc_flags);
389 err |= __put_user(0, &frame->uc.uc_link);
390 err |= __put_user((void *)current->sas_ss_sp,
391 &frame->uc.uc_stack.ss_sp);
392 err |= __put_user(sas_ss_flags(regs->r1),
393 &frame->uc.uc_stack.ss_flags);
394 err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
395 err |= setup_sigcontext(&frame->uc.uc_mcontext,
396 regs, set->sig[0]);
397 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
398
399 /* Set up to return from userspace. If provided, use a stub
400 already in userspace. */
401 /* minus 8 is offset to cater for "rtsd r15,8" */
402 if (ka->sa.sa_flags & SA_RESTORER) {
403 regs->r15 = ((unsigned long)ka->sa.sa_restorer)-8;
404 } else {
405 /* addi r12, r0, __NR_sigreturn */
406 err |= __put_user(0x31800000 | __NR_rt_sigreturn ,
407 frame->tramp + 0);
408 /* brki r14, 0x8 */
409 err |= __put_user(0xb9cc0008, frame->tramp + 1);
410
411 /* Return from sighandler will jump to the tramp.
412 Negative 8 offset because return is rtsd r15, 8 */
413 regs->r15 = ((unsigned long)frame->tramp)-8;
414
415 __invalidate_cache_sigtramp((unsigned long)frame->tramp);
416 }
417
418 if (err)
419 goto give_sigsegv;
420
421 /* Set up registers for signal handler */
422 regs->r1 = (unsigned long) frame - STATE_SAVE_ARG_SPACE;
423
424 /* Signal handler args: */
425 regs->r5 = signal; /* arg 0: signum */
426 regs->r6 = (unsigned long) &frame->info; /* arg 1: siginfo */
427 regs->r7 = (unsigned long) &frame->uc; /* arg2: ucontext */
428 /* Offset to handle microblaze rtid r14, 0 */
429 regs->pc = (unsigned long)ka->sa.sa_handler;
430
431 set_fs(USER_DS);
432
433#ifdef DEBUG_SIG
434 printk(KERN_INFO "SIG deliver (%s:%d): sp=%p pc=%08lx\n",
435 current->comm, current->pid, frame, regs->pc);
436#endif
437
438 return;
439
440give_sigsegv:
441 if (sig == SIGSEGV)
442 ka->sa.sa_handler = SIG_DFL;
443 force_sig(SIGSEGV, current);
444}
445
446/* Handle restarting system calls */
447static inline void
448handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler)
449{
450 switch (regs->r3) {
451 case -ERESTART_RESTARTBLOCK:
452 case -ERESTARTNOHAND:
453 if (!has_handler)
454 goto do_restart;
455 regs->r3 = -EINTR;
456 break;
457 case -ERESTARTSYS:
458 if (has_handler && !(ka->sa.sa_flags & SA_RESTART)) {
459 regs->r3 = -EINTR;
460 break;
461 }
462 /* fallthrough */
463 case -ERESTARTNOINTR:
464do_restart:
465 /* offset of 4 bytes to re-execute trap (brki) instruction */
466 regs->pc -= 4;
467 break;
468 }
469}
470
471/*
472 * OK, we're invoking a handler
473 */
474
475static void
476handle_signal(unsigned long sig, struct k_sigaction *ka,
477 siginfo_t *info, sigset_t *oldset, struct pt_regs *regs)
478{
479 /* Set up the stack frame */
480 if (ka->sa.sa_flags & SA_SIGINFO)
481 setup_rt_frame(sig, ka, info, oldset, regs);
482 else
483 setup_frame(sig, ka, oldset, regs);
484
485 if (ka->sa.sa_flags & SA_ONESHOT)
486 ka->sa.sa_handler = SIG_DFL;
487
488 if (!(ka->sa.sa_flags & SA_NODEFER)) {
489 spin_lock_irq(&current->sighand->siglock);
490 sigorsets(&current->blocked,
491 &current->blocked, &ka->sa.sa_mask);
492 sigaddset(&current->blocked, sig);
493 recalc_sigpending();
494 spin_unlock_irq(&current->sighand->siglock);
495 }
496}
497
498/*
499 * Note that 'init' is a special process: it doesn't get signals it doesn't
500 * want to handle. Thus you cannot kill init even with a SIGKILL even by
501 * mistake.
502 *
503 * Note that we go through the signals twice: once to check the signals that
504 * the kernel can handle, and then we build all the user-level signal handling
505 * stack-frames in one go after that.
506 */
507int do_signal(struct pt_regs *regs, sigset_t *oldset, int in_syscall)
508{
509 siginfo_t info;
510 int signr;
511 struct k_sigaction ka;
512#ifdef DEBUG_SIG
513 printk(KERN_INFO "do signal: %p %p %d\n", regs, oldset, in_syscall);
514 printk(KERN_INFO "do signal2: %lx %lx %ld [%lx]\n", regs->pc, regs->r1,
515 regs->r12, current_thread_info()->flags);
516#endif
517 /*
518 * We want the common case to go fast, which
519 * is why we may in certain cases get here from
520 * kernel mode. Just return without doing anything
521 * if so.
522 */
523 if (kernel_mode(regs))
524 return 1;
525
526 if (!oldset)
527 oldset = &current->blocked;
528
529 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
530 if (signr > 0) {
531 /* Whee! Actually deliver the signal. */
532 if (in_syscall)
533 handle_restart(regs, &ka, 1);
534 handle_signal(signr, &ka, &info, oldset, regs);
535 return 1;
536 }
537
538 if (in_syscall)
539 handle_restart(regs, NULL, 0);
540
541 /* Did we come from a system call? */
542 return 0;
543}
diff --git a/arch/microblaze/kernel/sys_microblaze.c b/arch/microblaze/kernel/sys_microblaze.c
new file mode 100644
index 000000000000..ba0568c2cc1c
--- /dev/null
+++ b/arch/microblaze/kernel/sys_microblaze.c
@@ -0,0 +1,225 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
5 *
6 * Copyright (C) 2006 Atmark Techno, Inc.
7 * Yasushi SHOJI <yashi@atmark-techno.com>
8 * Tetsuya OHKAWA <tetsuya@atmark-techno.com>
9 *
10 * This file is subject to the terms and conditions of the GNU General Public
11 * License. See the file "COPYING" in the main directory of this archive
12 * for more details.
13 */
14
15#include <linux/errno.h>
16#include <linux/mm.h>
17#include <linux/smp.h>
18#include <linux/smp_lock.h>
19#include <linux/syscalls.h>
20#include <linux/sem.h>
21#include <linux/msg.h>
22#include <linux/shm.h>
23#include <linux/stat.h>
24#include <linux/mman.h>
25#include <linux/sys.h>
26#include <linux/ipc.h>
27#include <linux/utsname.h>
28#include <linux/file.h>
29#include <linux/module.h>
30#include <linux/err.h>
31#include <linux/fs.h>
32#include <linux/semaphore.h>
33#include <linux/uaccess.h>
34#include <linux/unistd.h>
35
36#include <asm/syscalls.h>
37/*
38 * sys_ipc() is the de-multiplexer for the SysV IPC calls..
39 *
40 * This is really horribly ugly. This will be remove with new toolchain.
41 */
42asmlinkage int
43sys_ipc(uint call, int first, int second, int third, void *ptr, long fifth)
44{
45 int version, ret;
46
47 version = call >> 16; /* hack for backward compatibility */
48 call &= 0xffff;
49
50 ret = -EINVAL;
51 switch (call) {
52 case SEMOP:
53 ret = sys_semop(first, (struct sembuf *)ptr, second);
54 break;
55 case SEMGET:
56 ret = sys_semget(first, second, third);
57 break;
58 case SEMCTL:
59 {
60 union semun fourth;
61
62 if (!ptr)
63 break;
64 ret = (access_ok(VERIFY_READ, ptr, sizeof(long)) ? 0 : -EFAULT)
65 || (get_user(fourth.__pad, (void **)ptr)) ;
66 if (ret)
67 break;
68 ret = sys_semctl(first, second, third, fourth);
69 break;
70 }
71 case MSGSND:
72 ret = sys_msgsnd(first, (struct msgbuf *) ptr, second, third);
73 break;
74 case MSGRCV:
75 switch (version) {
76 case 0: {
77 struct ipc_kludge tmp;
78
79 if (!ptr)
80 break;
81 ret = (access_ok(VERIFY_READ, ptr, sizeof(tmp))
82 ? 0 : -EFAULT) || copy_from_user(&tmp,
83 (struct ipc_kludge *) ptr, sizeof(tmp));
84 if (ret)
85 break;
86 ret = sys_msgrcv(first, tmp.msgp, second, tmp.msgtyp,
87 third);
88 break;
89 }
90 default:
91 ret = sys_msgrcv(first, (struct msgbuf *) ptr,
92 second, fifth, third);
93 break;
94 }
95 break;
96 case MSGGET:
97 ret = sys_msgget((key_t) first, second);
98 break;
99 case MSGCTL:
100 ret = sys_msgctl(first, second, (struct msqid_ds *) ptr);
101 break;
102 case SHMAT:
103 switch (version) {
104 default: {
105 ulong raddr;
106 ret = access_ok(VERIFY_WRITE, (ulong *) third,
107 sizeof(ulong)) ? 0 : -EFAULT;
108 if (ret)
109 break;
110 ret = do_shmat(first, (char *) ptr, second, &raddr);
111 if (ret)
112 break;
113 ret = put_user(raddr, (ulong *) third);
114 break;
115 }
116 case 1: /* iBCS2 emulator entry point */
117 if (!segment_eq(get_fs(), get_ds()))
118 break;
119 ret = do_shmat(first, (char *) ptr, second,
120 (ulong *) third);
121 break;
122 }
123 break;
124 case SHMDT:
125 ret = sys_shmdt((char *)ptr);
126 break;
127 case SHMGET:
128 ret = sys_shmget(first, second, third);
129 break;
130 case SHMCTL:
131 ret = sys_shmctl(first, second, (struct shmid_ds *) ptr);
132 break;
133 }
134 return -EINVAL;
135}
136
137asmlinkage int sys_vfork(struct pt_regs *regs)
138{
139 return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->r1,
140 regs, 0, NULL, NULL);
141}
142
143asmlinkage int sys_clone(int flags, unsigned long stack, struct pt_regs *regs)
144{
145 if (!stack)
146 stack = regs->r1;
147 return do_fork(flags, stack, regs, 0, NULL, NULL);
148}
149
150asmlinkage int sys_execve(char __user *filenamei, char __user *__user *argv,
151 char __user *__user *envp, struct pt_regs *regs)
152{
153 int error;
154 char *filename;
155
156 filename = getname(filenamei);
157 error = PTR_ERR(filename);
158 if (IS_ERR(filename))
159 goto out;
160 error = do_execve(filename, argv, envp, regs);
161 putname(filename);
162out:
163 return error;
164}
165
166asmlinkage unsigned long
167sys_mmap2(unsigned long addr, size_t len,
168 unsigned long prot, unsigned long flags,
169 unsigned long fd, unsigned long pgoff)
170{
171 struct file *file = NULL;
172 int ret = -EBADF;
173
174 flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
175 if (!(flags & MAP_ANONYMOUS)) {
176 file = fget(fd);
177 if (!file) {
178 printk(KERN_INFO "no fd in mmap\r\n");
179 goto out;
180 }
181 }
182
183 down_write(&current->mm->mmap_sem);
184 ret = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
185 up_write(&current->mm->mmap_sem);
186 if (file)
187 fput(file);
188out:
189 return ret;
190}
191
192asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
193 unsigned long prot, unsigned long flags,
194 unsigned long fd, off_t offset)
195{
196 int err = -EINVAL;
197
198 if (offset & ~PAGE_MASK) {
199 printk(KERN_INFO "no pagemask in mmap\r\n");
200 goto out;
201 }
202
203 err = sys_mmap2(addr, len, prot, flags, fd, offset >> PAGE_SHIFT);
204out:
205 return err;
206}
207
208/*
209 * Do a system call from kernel instead of calling sys_execve so we
210 * end up with proper pt_regs.
211 */
212int kernel_execve(const char *filename, char *const argv[], char *const envp[])
213{
214 register const char *__a __asm__("r5") = filename;
215 register const void *__b __asm__("r6") = argv;
216 register const void *__c __asm__("r7") = envp;
217 register unsigned long __syscall __asm__("r12") = __NR_execve;
218 register unsigned long __ret __asm__("r3");
219 __asm__ __volatile__ ("brki r14, 0x8"
220 : "=r" (__ret), "=r" (__syscall)
221 : "1" (__syscall), "r" (__a), "r" (__b), "r" (__c)
222 : "r4", "r8", "r9",
223 "r10", "r11", "r14", "cc", "memory");
224 return __ret;
225}
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S
new file mode 100644
index 000000000000..3bb42ec924c2
--- /dev/null
+++ b/arch/microblaze/kernel/syscall_table.S
@@ -0,0 +1,367 @@
1ENTRY(sys_call_table)
2 .long sys_restart_syscall /* 0 - old "setup()" system call,
3 * used for restarting */
4 .long sys_exit
5 .long sys_ni_syscall /* was fork */
6 .long sys_read
7 .long sys_write
8 .long sys_open /* 5 */
9 .long sys_close
10 .long sys_waitpid
11 .long sys_creat
12 .long sys_link
13 .long sys_unlink /* 10 */
14 .long sys_execve_wrapper
15 .long sys_chdir
16 .long sys_time
17 .long sys_mknod
18 .long sys_chmod /* 15 */
19 .long sys_lchown
20 .long sys_ni_syscall /* old break syscall holder */
21 .long sys_ni_syscall /* old stat */
22 .long sys_lseek
23 .long sys_getpid /* 20 */
24 .long sys_mount
25 .long sys_oldumount
26 .long sys_setuid
27 .long sys_getuid
28 .long sys_stime /* 25 */
29 .long sys_ptrace
30 .long sys_alarm
31 .long sys_ni_syscall /* oldfstat */
32 .long sys_pause
33 .long sys_utime /* 30 */
34 .long sys_ni_syscall /* old stty syscall holder */
35 .long sys_ni_syscall /* old gtty syscall holder */
36 .long sys_access
37 .long sys_nice
38 .long sys_ni_syscall /* 35 - old ftime syscall holder */
39 .long sys_sync
40 .long sys_kill
41 .long sys_rename
42 .long sys_mkdir
43 .long sys_rmdir /* 40 */
44 .long sys_dup
45 .long sys_pipe
46 .long sys_times
47 .long sys_ni_syscall /* old prof syscall holder */
48 .long sys_brk /* 45 */
49 .long sys_setgid
50 .long sys_getgid
51 .long sys_signal
52 .long sys_geteuid
53 .long sys_getegid /* 50 */
54 .long sys_acct
55 .long sys_umount /* recycled never used phys() */
56 .long sys_ni_syscall /* old lock syscall holder */
57 .long sys_ioctl
58 .long sys_fcntl /* 55 */
59 .long sys_ni_syscall /* old mpx syscall holder */
60 .long sys_setpgid
61 .long sys_ni_syscall /* old ulimit syscall holder */
62 .long sys_ni_syscall /* olduname */
63 .long sys_umask /* 60 */
64 .long sys_chroot
65 .long sys_ustat
66 .long sys_dup2
67 .long sys_getppid
68 .long sys_getpgrp /* 65 */
69 .long sys_setsid
70 .long sys_sigaction
71 .long sys_sgetmask
72 .long sys_ssetmask
73 .long sys_setreuid /* 70 */
74 .long sys_setregid
75 .long sys_sigsuspend_wrapper
76 .long sys_sigpending
77 .long sys_sethostname
78 .long sys_setrlimit /* 75 */
79 .long sys_ni_syscall /* old_getrlimit */
80 .long sys_getrusage
81 .long sys_gettimeofday
82 .long sys_settimeofday
83 .long sys_getgroups /* 80 */
84 .long sys_setgroups
85 .long sys_ni_syscall /* old_select */
86 .long sys_symlink
87 .long sys_ni_syscall /* oldlstat */
88 .long sys_readlink /* 85 */
89 .long sys_uselib
90 .long sys_swapon
91 .long sys_reboot
92 .long sys_ni_syscall /* old_readdir */
93 .long sys_mmap /* 90 */ /* old_mmap */
94 .long sys_munmap
95 .long sys_truncate
96 .long sys_ftruncate
97 .long sys_fchmod
98 .long sys_fchown /* 95 */
99 .long sys_getpriority
100 .long sys_setpriority
101 .long sys_ni_syscall /* old profil syscall holder */
102 .long sys_statfs
103 .long sys_fstatfs /* 100 */
104 .long sys_ni_syscall /* ioperm */
105 .long sys_socketcall
106 .long sys_syslog /* operation with system console */
107 .long sys_setitimer
108 .long sys_getitimer /* 105 */
109 .long sys_newstat
110 .long sys_newlstat
111 .long sys_newfstat
112 .long sys_ni_syscall /* uname */
113 .long sys_ni_syscall /* 110 */ /* iopl */
114 .long sys_vhangup
115 .long sys_ni_syscall /* old "idle" system call */
116 .long sys_ni_syscall /* old sys_vm86old */
117 .long sys_wait4
118 .long sys_swapoff /* 115 */
119 .long sys_sysinfo
120 .long sys_ipc
121 .long sys_fsync
122 .long sys_sigreturn_wrapper
123 .long sys_clone_wrapper /* 120 */
124 .long sys_setdomainname
125 .long sys_newuname
126 .long sys_ni_syscall /* modify_ldt */
127 .long sys_adjtimex
128 .long sys_mprotect /* 125: sys_mprotect */
129 .long sys_sigprocmask
130 .long sys_ni_syscall /* old "create_module" */
131 .long sys_init_module
132 .long sys_delete_module
133 .long sys_ni_syscall /* 130: old "get_kernel_syms" */
134 .long sys_quotactl
135 .long sys_getpgid
136 .long sys_fchdir
137 .long sys_bdflush
138 .long sys_sysfs /* 135 */
139 .long sys_personality
140 .long sys_ni_syscall /* reserved for afs_syscall */
141 .long sys_setfsuid
142 .long sys_setfsgid
143 .long sys_llseek /* 140 */
144 .long sys_getdents
145 .long sys_select
146 .long sys_flock
147 .long sys_msync
148 .long sys_readv /* 145 */
149 .long sys_writev
150 .long sys_getsid
151 .long sys_fdatasync
152 .long sys_sysctl
153 .long sys_mlock /* 150: sys_mlock */
154 .long sys_munlock
155 .long sys_mlockall
156 .long sys_munlockall
157 .long sys_sched_setparam
158 .long sys_sched_getparam /* 155 */
159 .long sys_sched_setscheduler
160 .long sys_sched_getscheduler
161 .long sys_sched_yield
162 .long sys_sched_get_priority_max
163 .long sys_sched_get_priority_min /* 160 */
164 .long sys_sched_rr_get_interval
165 .long sys_nanosleep
166 .long sys_mremap
167 .long sys_setresuid
168 .long sys_getresuid /* 165 */
169 .long sys_ni_syscall /* sys_vm86 */
170 .long sys_ni_syscall /* Old sys_query_module */
171 .long sys_poll
172 .long sys_nfsservctl
173 .long sys_setresgid /* 170 */
174 .long sys_getresgid
175 .long sys_prctl
176 .long sys_rt_sigreturn_wrapper
177 .long sys_rt_sigaction
178 .long sys_rt_sigprocmask /* 175 */
179 .long sys_rt_sigpending
180 .long sys_rt_sigtimedwait
181 .long sys_rt_sigqueueinfo
182 .long sys_rt_sigsuspend_wrapper
183 .long sys_pread64 /* 180 */
184 .long sys_pwrite64
185 .long sys_chown
186 .long sys_getcwd
187 .long sys_capget
188 .long sys_capset /* 185 */
189 .long sys_ni_syscall /* sigaltstack */
190 .long sys_sendfile
191 .long sys_ni_syscall /* reserved for streams1 */
192 .long sys_ni_syscall /* reserved for streams2 */
193 .long sys_vfork_wrapper /* 190 */
194 .long sys_getrlimit
195 .long sys_mmap2 /* mmap2 */
196 .long sys_truncate64
197 .long sys_ftruncate64
198 .long sys_stat64 /* 195 */
199 .long sys_lstat64
200 .long sys_fstat64
201 .long sys_lchown
202 .long sys_getuid
203 .long sys_getgid /* 200 */
204 .long sys_geteuid
205 .long sys_getegid
206 .long sys_setreuid
207 .long sys_setregid
208 .long sys_getgroups /* 205 */
209 .long sys_setgroups
210 .long sys_fchown
211 .long sys_setresuid
212 .long sys_getresuid
213 .long sys_setresgid /* 210 */
214 .long sys_getresgid
215 .long sys_chown
216 .long sys_setuid
217 .long sys_setgid
218 .long sys_setfsuid /* 215 */
219 .long sys_setfsgid
220 .long sys_pivot_root
221 .long sys_mincore
222 .long sys_madvise
223 .long sys_getdents64 /* 220 */
224 .long sys_fcntl64
225 .long sys_ni_syscall /* reserved for TUX */
226 .long sys_ni_syscall
227 .long sys_gettid
228 .long sys_readahead /* 225 */
229 .long sys_setxattr
230 .long sys_lsetxattr
231 .long sys_fsetxattr
232 .long sys_getxattr
233 .long sys_lgetxattr /* 230 */
234 .long sys_fgetxattr
235 .long sys_listxattr
236 .long sys_llistxattr
237 .long sys_flistxattr
238 .long sys_removexattr /* 235 */
239 .long sys_lremovexattr
240 .long sys_fremovexattr
241 .long sys_tkill
242 .long sys_sendfile64
243 .long sys_futex /* 240 */
244 .long sys_sched_setaffinity
245 .long sys_sched_getaffinity
246 .long sys_ni_syscall /* set_thread_area */
247 .long sys_ni_syscall /* get_thread_area */
248 .long sys_io_setup /* 245 */
249 .long sys_io_destroy
250 .long sys_io_getevents
251 .long sys_io_submit
252 .long sys_io_cancel
253 .long sys_fadvise64 /* 250 */
254 .long sys_ni_syscall
255 .long sys_exit_group
256 .long sys_lookup_dcookie
257 .long sys_epoll_create
258 .long sys_epoll_ctl /* 255 */
259 .long sys_epoll_wait
260 .long sys_remap_file_pages
261 .long sys_set_tid_address
262 .long sys_timer_create
263 .long sys_timer_settime /* 260 */
264 .long sys_timer_gettime
265 .long sys_timer_getoverrun
266 .long sys_timer_delete
267 .long sys_clock_settime
268 .long sys_clock_gettime /* 265 */
269 .long sys_clock_getres
270 .long sys_clock_nanosleep
271 .long sys_statfs64
272 .long sys_fstatfs64
273 .long sys_tgkill /* 270 */
274 .long sys_utimes
275 .long sys_fadvise64_64
276 .long sys_ni_syscall /* sys_vserver */
277 .long sys_mbind
278 .long sys_get_mempolicy
279 .long sys_set_mempolicy
280 .long sys_mq_open
281 .long sys_mq_unlink
282 .long sys_mq_timedsend
283 .long sys_mq_timedreceive /* 280 */
284 .long sys_mq_notify
285 .long sys_mq_getsetattr
286 .long sys_kexec_load
287 .long sys_waitid
288 .long sys_ni_syscall /* 285 */ /* available */
289 .long sys_add_key
290 .long sys_request_key
291 .long sys_keyctl
292 .long sys_ioprio_set
293 .long sys_ioprio_get /* 290 */
294 .long sys_inotify_init
295 .long sys_inotify_add_watch
296 .long sys_inotify_rm_watch
297 .long sys_ni_syscall /* sys_migrate_pages */
298 .long sys_openat /* 295 */
299 .long sys_mkdirat
300 .long sys_mknodat
301 .long sys_fchownat
302 .long sys_ni_syscall
303 .long sys_fstatat64 /* 300 */
304 .long sys_unlinkat
305 .long sys_renameat
306 .long sys_linkat
307 .long sys_symlinkat
308 .long sys_readlinkat /* 305 */
309 .long sys_fchmodat
310 .long sys_faccessat
311 .long sys_ni_syscall /* pselect6 */
312 .long sys_ni_syscall /* sys_ppoll */
313 .long sys_unshare /* 310 */
314 .long sys_set_robust_list
315 .long sys_get_robust_list
316 .long sys_splice
317 .long sys_sync_file_range
318 .long sys_tee /* 315 */
319 .long sys_vmsplice
320 .long sys_move_pages
321 .long sys_getcpu
322 .long sys_epoll_pwait
323 .long sys_utimensat /* 320 */
324 .long sys_signalfd
325 .long sys_timerfd_create
326 .long sys_eventfd
327 .long sys_fallocate
328 .long sys_semtimedop /* 325 */
329 .long sys_timerfd_settime
330 .long sys_timerfd_gettime
331 .long sys_semctl
332 .long sys_semget
333 .long sys_semop /* 330 */
334 .long sys_msgctl
335 .long sys_msgget
336 .long sys_msgrcv
337 .long sys_msgsnd
338 .long sys_shmat /* 335 */
339 .long sys_shmctl
340 .long sys_shmdt
341 .long sys_shmget
342 .long sys_signalfd4 /* new syscall */
343 .long sys_eventfd2 /* 340 */
344 .long sys_epoll_create1
345 .long sys_dup3
346 .long sys_pipe2
347 .long sys_inotify_init1
348 .long sys_socket /* 345 */
349 .long sys_socketpair
350 .long sys_bind
351 .long sys_listen
352 .long sys_accept
353 .long sys_connect /* 350 */
354 .long sys_getsockname
355 .long sys_getpeername
356 .long sys_sendto
357 .long sys_send
358 .long sys_recvfrom /* 355 */
359 .long sys_recv
360 .long sys_setsockopt
361 .long sys_getsockopt
362 .long sys_shutdown
363 .long sys_sendmsg /* 360 */
364 .long sys_recvmsg
365 .long sys_ni_syscall
366 .long sys_ni_syscall
367 .long sys_ni_syscall
diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c
new file mode 100644
index 000000000000..bdfa2f9f0c81
--- /dev/null
+++ b/arch/microblaze/kernel/timer.c
@@ -0,0 +1,262 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/param.h>
14#include <linux/interrupt.h>
15#include <linux/profile.h>
16#include <linux/irq.h>
17#include <linux/delay.h>
18#include <linux/sched.h>
19#include <linux/spinlock.h>
20#include <linux/err.h>
21#include <linux/clk.h>
22#include <linux/clocksource.h>
23#include <linux/clockchips.h>
24#include <linux/io.h>
25#include <asm/cpuinfo.h>
26#include <asm/setup.h>
27#include <asm/prom.h>
28#include <asm/irq.h>
29#include <asm/system.h>
30
31#ifdef CONFIG_SELFMOD_TIMER
32#include <asm/selfmod.h>
33#define TIMER_BASE BARRIER_BASE_ADDR
34#else
35static unsigned int timer_baseaddr;
36#define TIMER_BASE timer_baseaddr
37#endif
38
39#define TCSR0 (0x00)
40#define TLR0 (0x04)
41#define TCR0 (0x08)
42#define TCSR1 (0x10)
43#define TLR1 (0x14)
44#define TCR1 (0x18)
45
46#define TCSR_MDT (1<<0)
47#define TCSR_UDT (1<<1)
48#define TCSR_GENT (1<<2)
49#define TCSR_CAPT (1<<3)
50#define TCSR_ARHT (1<<4)
51#define TCSR_LOAD (1<<5)
52#define TCSR_ENIT (1<<6)
53#define TCSR_ENT (1<<7)
54#define TCSR_TINT (1<<8)
55#define TCSR_PWMA (1<<9)
56#define TCSR_ENALL (1<<10)
57
58static inline void microblaze_timer0_stop(void)
59{
60 out_be32(TIMER_BASE + TCSR0, in_be32(TIMER_BASE + TCSR0) & ~TCSR_ENT);
61}
62
63static inline void microblaze_timer0_start_periodic(unsigned long load_val)
64{
65 if (!load_val)
66 load_val = 1;
67 out_be32(TIMER_BASE + TLR0, load_val); /* loading value to timer reg */
68
69 /* load the initial value */
70 out_be32(TIMER_BASE + TCSR0, TCSR_LOAD);
71
72 /* see timer data sheet for detail
73 * !ENALL - don't enable 'em all
74 * !PWMA - disable pwm
75 * TINT - clear interrupt status
76 * ENT- enable timer itself
77 * EINT - enable interrupt
78 * !LOAD - clear the bit to let go
79 * ARHT - auto reload
80 * !CAPT - no external trigger
81 * !GENT - no external signal
82 * UDT - set the timer as down counter
83 * !MDT0 - generate mode
84 */
85 out_be32(TIMER_BASE + TCSR0,
86 TCSR_TINT|TCSR_ENIT|TCSR_ENT|TCSR_ARHT|TCSR_UDT);
87}
88
89static inline void microblaze_timer0_start_oneshot(unsigned long load_val)
90{
91 if (!load_val)
92 load_val = 1;
93 out_be32(TIMER_BASE + TLR0, load_val); /* loading value to timer reg */
94
95 /* load the initial value */
96 out_be32(TIMER_BASE + TCSR0, TCSR_LOAD);
97
98 out_be32(TIMER_BASE + TCSR0,
99 TCSR_TINT|TCSR_ENIT|TCSR_ENT|TCSR_ARHT|TCSR_UDT);
100}
101
102static int microblaze_timer_set_next_event(unsigned long delta,
103 struct clock_event_device *dev)
104{
105 pr_debug("%s: next event, delta %x\n", __func__, (u32)delta);
106 microblaze_timer0_start_oneshot(delta);
107 return 0;
108}
109
110static void microblaze_timer_set_mode(enum clock_event_mode mode,
111 struct clock_event_device *evt)
112{
113 switch (mode) {
114 case CLOCK_EVT_MODE_PERIODIC:
115 printk(KERN_INFO "%s: periodic\n", __func__);
116 microblaze_timer0_start_periodic(cpuinfo.freq_div_hz);
117 break;
118 case CLOCK_EVT_MODE_ONESHOT:
119 printk(KERN_INFO "%s: oneshot\n", __func__);
120 break;
121 case CLOCK_EVT_MODE_UNUSED:
122 printk(KERN_INFO "%s: unused\n", __func__);
123 break;
124 case CLOCK_EVT_MODE_SHUTDOWN:
125 printk(KERN_INFO "%s: shutdown\n", __func__);
126 microblaze_timer0_stop();
127 break;
128 case CLOCK_EVT_MODE_RESUME:
129 printk(KERN_INFO "%s: resume\n", __func__);
130 break;
131 }
132}
133
134static struct clock_event_device clockevent_microblaze_timer = {
135 .name = "microblaze_clockevent",
136 .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
137 .shift = 24,
138 .rating = 300,
139 .set_next_event = microblaze_timer_set_next_event,
140 .set_mode = microblaze_timer_set_mode,
141};
142
143static inline void timer_ack(void)
144{
145 out_be32(TIMER_BASE + TCSR0, in_be32(TIMER_BASE + TCSR0));
146}
147
148static irqreturn_t timer_interrupt(int irq, void *dev_id)
149{
150 struct clock_event_device *evt = &clockevent_microblaze_timer;
151#ifdef CONFIG_HEART_BEAT
152 heartbeat();
153#endif
154 timer_ack();
155 evt->event_handler(evt);
156 return IRQ_HANDLED;
157}
158
159static struct irqaction timer_irqaction = {
160 .handler = timer_interrupt,
161 .flags = IRQF_DISABLED | IRQF_TIMER,
162 .name = "timer",
163 .dev_id = &clockevent_microblaze_timer,
164};
165
166static __init void microblaze_clockevent_init(void)
167{
168 clockevent_microblaze_timer.mult =
169 div_sc(cpuinfo.cpu_clock_freq, NSEC_PER_SEC,
170 clockevent_microblaze_timer.shift);
171 clockevent_microblaze_timer.max_delta_ns =
172 clockevent_delta2ns((u32)~0, &clockevent_microblaze_timer);
173 clockevent_microblaze_timer.min_delta_ns =
174 clockevent_delta2ns(1, &clockevent_microblaze_timer);
175 clockevent_microblaze_timer.cpumask = cpumask_of(0);
176 clockevents_register_device(&clockevent_microblaze_timer);
177}
178
179static cycle_t microblaze_read(struct clocksource *cs)
180{
181 /* reading actual value of timer 1 */
182 return (cycle_t) (in_be32(TIMER_BASE + TCR1));
183}
184
185static struct clocksource clocksource_microblaze = {
186 .name = "microblaze_clocksource",
187 .rating = 300,
188 .read = microblaze_read,
189 .mask = CLOCKSOURCE_MASK(32),
190 .shift = 24, /* I can shift it */
191 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
192};
193
194static int __init microblaze_clocksource_init(void)
195{
196 clocksource_microblaze.mult =
197 clocksource_hz2mult(cpuinfo.cpu_clock_freq,
198 clocksource_microblaze.shift);
199 if (clocksource_register(&clocksource_microblaze))
200 panic("failed to register clocksource");
201
202 /* stop timer1 */
203 out_be32(TIMER_BASE + TCSR1, in_be32(TIMER_BASE + TCSR1) & ~TCSR_ENT);
204 /* start timer1 - up counting without interrupt */
205 out_be32(TIMER_BASE + TCSR1, TCSR_TINT|TCSR_ENT|TCSR_ARHT);
206 return 0;
207}
208
209void __init time_init(void)
210{
211 u32 irq, i = 0;
212 u32 timer_num = 1;
213 struct device_node *timer = NULL;
214#ifdef CONFIG_SELFMOD_TIMER
215 unsigned int timer_baseaddr = 0;
216 int arr_func[] = {
217 (int)&microblaze_read,
218 (int)&timer_interrupt,
219 (int)&microblaze_clocksource_init,
220 (int)&microblaze_timer_set_mode,
221 (int)&microblaze_timer_set_next_event,
222 0
223 };
224#endif
225 char *timer_list[] = {
226 "xlnx,xps-timer-1.00.a",
227 "xlnx,opb-timer-1.00.b",
228 "xlnx,opb-timer-1.00.a",
229 NULL
230 };
231
232 for (i = 0; timer_list[i] != NULL; i++) {
233 timer = of_find_compatible_node(NULL, NULL, timer_list[i]);
234 if (timer)
235 break;
236 }
237
238 timer_baseaddr = *(int *) of_get_property(timer, "reg", NULL);
239 timer_baseaddr = (unsigned long) ioremap(timer_baseaddr, PAGE_SIZE);
240 irq = *(int *) of_get_property(timer, "interrupts", NULL);
241 timer_num =
242 *(int *) of_get_property(timer, "xlnx,one-timer-only", NULL);
243 if (timer_num) {
244 printk(KERN_EMERG "Please enable two timers in HW\n");
245 BUG();
246 }
247
248#ifdef CONFIG_SELFMOD_TIMER
249 selfmod_function((int *) arr_func, timer_baseaddr);
250#endif
251 printk(KERN_INFO "%s #0 at 0x%08x, irq=%d\n",
252 timer_list[i], timer_baseaddr, irq);
253
254 cpuinfo.freq_div_hz = cpuinfo.cpu_clock_freq / HZ;
255
256 setup_irq(irq, &timer_irqaction);
257#ifdef CONFIG_HEART_BEAT
258 setup_heartbeat();
259#endif
260 microblaze_clocksource_init();
261 microblaze_clockevent_init();
262}
diff --git a/arch/microblaze/kernel/traps.c b/arch/microblaze/kernel/traps.c
new file mode 100644
index 000000000000..293ef486013a
--- /dev/null
+++ b/arch/microblaze/kernel/traps.c
@@ -0,0 +1,107 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/kernel.h>
12#include <linux/kallsyms.h>
13#include <linux/module.h>
14#include <linux/sched.h>
15#include <linux/debug_locks.h>
16
17#include <asm/exceptions.h>
18#include <asm/system.h>
19
20void trap_init(void)
21{
22 __enable_hw_exceptions();
23}
24
25void __bad_xchg(volatile void *ptr, int size)
26{
27 printk(KERN_INFO "xchg: bad data size: pc 0x%p, ptr 0x%p, size %d\n",
28 __builtin_return_address(0), ptr, size);
29 BUG();
30}
31EXPORT_SYMBOL(__bad_xchg);
32
33static int kstack_depth_to_print = 24;
34
35static int __init kstack_setup(char *s)
36{
37 kstack_depth_to_print = strict_strtoul(s, 0, NULL);
38
39 return 1;
40}
41__setup("kstack=", kstack_setup);
42
43void show_trace(struct task_struct *task, unsigned long *stack)
44{
45 unsigned long addr;
46
47 if (!stack)
48 stack = (unsigned long *)&stack;
49
50 printk(KERN_NOTICE "Call Trace: ");
51#ifdef CONFIG_KALLSYMS
52 printk(KERN_NOTICE "\n");
53#endif
54 while (!kstack_end(stack)) {
55 addr = *stack++;
56 /*
57 * If the address is either in the text segment of the
58 * kernel, or in the region which contains vmalloc'ed
59 * memory, it *may* be the address of a calling
60 * routine; if so, print it so that someone tracing
61 * down the cause of the crash will be able to figure
62 * out the call path that was taken.
63 */
64 if (kernel_text_address(addr))
65 print_ip_sym(addr);
66 }
67 printk(KERN_NOTICE "\n");
68
69 if (!task)
70 task = current;
71
72 debug_show_held_locks(task);
73}
74
75void show_stack(struct task_struct *task, unsigned long *sp)
76{
77 unsigned long *stack;
78 int i;
79
80 if (sp == NULL) {
81 if (task)
82 sp = (unsigned long *) ((struct thread_info *)
83 (task->stack))->cpu_context.r1;
84 else
85 sp = (unsigned long *)&sp;
86 }
87
88 stack = sp;
89
90 printk(KERN_INFO "\nStack:\n ");
91
92 for (i = 0; i < kstack_depth_to_print; i++) {
93 if (kstack_end(sp))
94 break;
95 if (i && ((i % 8) == 0))
96 printk("\n ");
97 printk("%08lx ", *sp++);
98 }
99 printk("\n");
100 show_trace(task, stack);
101}
102
103void dump_stack(void)
104{
105 show_stack(NULL, NULL);
106}
107EXPORT_SYMBOL(dump_stack);
diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
new file mode 100644
index 000000000000..840385e51291
--- /dev/null
+++ b/arch/microblaze/kernel/vmlinux.lds.S
@@ -0,0 +1,163 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11OUTPUT_FORMAT("elf32-microblaze", "elf32-microblaze", "elf32-microblaze")
12OUTPUT_ARCH(microblaze)
13ENTRY(_start)
14
15#include <asm-generic/vmlinux.lds.h>
16
17jiffies = jiffies_64 + 4;
18
19SECTIONS {
20 . = CONFIG_KERNEL_BASE_ADDR;
21
22 .text : {
23 _text = . ;
24 _stext = . ;
25 *(.text .text.*)
26 *(.fixup)
27
28 *(.exitcall.exit)
29 SCHED_TEXT
30 LOCK_TEXT
31 KPROBES_TEXT
32 . = ALIGN (4) ;
33 _etext = . ;
34 }
35
36 . = ALIGN (4) ;
37 _fdt_start = . ; /* place for fdt blob */
38 . = . + 0x4000;
39 _fdt_end = . ;
40
41 . = ALIGN(16);
42 RODATA
43 . = ALIGN(16);
44 __ex_table : {
45 __start___ex_table = .;
46 *(__ex_table)
47 __stop___ex_table = .;
48 }
49
50 /*
51 * sdata2 section can go anywhere, but must be word aligned
52 * and SDA2_BASE must point to the middle of it
53 */
54 .sdata2 : {
55 _ssrw = .;
56 . = ALIGN(4096); /* page aligned when MMU used - origin 0x8 */
57 *(.sdata2)
58 . = ALIGN(8);
59 _essrw = .;
60 _ssrw_size = _essrw - _ssrw;
61 _KERNEL_SDA2_BASE_ = _ssrw + (_ssrw_size / 2);
62 }
63
64 _sdata = . ;
65 .data ALIGN (4096) : { /* page aligned when MMU used - origin 0x4 */
66 *(.data)
67 }
68 . = ALIGN(32);
69 .data.cacheline_aligned : { *(.data.cacheline_aligned) }
70 _edata = . ;
71
72 /* Reserve some low RAM for r0 based memory references */
73 . = ALIGN(0x4) ;
74 r0_ram = . ;
75 . = . + 4096; /* a page should be enough */
76
77 /* The initial task */
78 . = ALIGN(8192);
79 .data.init_task : { *(.data.init_task) }
80
81 /* Under the microblaze ABI, .sdata and .sbss must be contiguous */
82 . = ALIGN(8);
83 .sdata : {
84 _ssro = .;
85 *(.sdata)
86 }
87
88 .sbss : {
89 _ssbss = .;
90 *(.sbss)
91 _esbss = .;
92 _essro = .;
93 _ssro_size = _essro - _ssro ;
94 _KERNEL_SDA_BASE_ = _ssro + (_ssro_size / 2) ;
95 }
96
97 __init_begin = .;
98
99 . = ALIGN(4096);
100 .init.text : {
101 _sinittext = . ;
102 *(.init.text)
103 *(.exit.text)
104 *(.exit.data)
105 _einittext = .;
106 }
107
108 .init.data : { *(.init.data) }
109
110 . = ALIGN(4);
111 .init.ivt : {
112 __ivt_start = .;
113 *(.init.ivt)
114 __ivt_end = .;
115 }
116
117 .init.setup : {
118 __setup_start = .;
119 *(.init.setup)
120 __setup_end = .;
121 }
122
123 .initcall.init : {
124 __initcall_start = .;
125 INITCALLS
126 __initcall_end = .;
127 }
128
129 .con_initcall.init : {
130 __con_initcall_start = .;
131 *(.con_initcall.init)
132 __con_initcall_end = .;
133 }
134
135 __init_end_before_initramfs = .;
136
137 .init.ramfs ALIGN(4096) : {
138 __initramfs_start = .;
139 *(.init.ramfs)
140 __initramfs_end = .;
141 . = ALIGN(4);
142 LONG(0);
143/*
144 * FIXME this can break initramfs for MMU.
145 * Pad init.ramfs up to page boundary,
146 * so that __init_end == __bss_start. This will make image.elf
147 * consistent with the image.bin
148 */
149 /* . = ALIGN(4096); */
150 }
151 __init_end = .;
152
153 .bss ALIGN (4096) : { /* page aligned when MMU used */
154 __bss_start = . ;
155 *(.bss*)
156 *(COMMON)
157 . = ALIGN (4) ;
158 __bss_stop = . ;
159 _ebss = . ;
160 }
161 . = ALIGN(4096);
162 _end = .;
163}
diff --git a/arch/microblaze/lib/Makefile b/arch/microblaze/lib/Makefile
new file mode 100644
index 000000000000..d27126bf306a
--- /dev/null
+++ b/arch/microblaze/lib/Makefile
@@ -0,0 +1,13 @@
1#
2# Makefile
3#
4
5lib-y := memset.o checksum.o
6
7ifeq ($(CONFIG_OPT_LIB_ASM),y)
8lib-y += fastcopy.o
9else
10lib-y += memcpy.o memmove.o
11endif
12
13lib-y += uaccess.o
diff --git a/arch/microblaze/lib/checksum.c b/arch/microblaze/lib/checksum.c
new file mode 100644
index 000000000000..809340070a13
--- /dev/null
+++ b/arch/microblaze/lib/checksum.c
@@ -0,0 +1,163 @@
1/*
2 *
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * IP/TCP/UDP checksumming routines
8 *
9 * Authors: Jorge Cwik, <jorge@laser.satlink.net>
10 * Arnt Gulbrandsen, <agulbra@nvg.unit.no>
11 * Tom May, <ftom@netcom.com>
12 * Andreas Schwab, <schwab@issan.informatik.uni-dortmund.de>
13 * Lots of code moved from tcp.c and ip.c; see those files
14 * for more names.
15 *
16 * 03/02/96 Jes Sorensen, Andreas Schwab, Roman Hodek:
17 * Fixed some nasty bugs, causing some horrible crashes.
18 * A: At some points, the sum (%0) was used as
19 * length-counter instead of the length counter
20 * (%1). Thanks to Roman Hodek for pointing this out.
21 * B: GCC seems to mess up if one uses too many
22 * data-registers to hold input values and one tries to
23 * specify d0 and d1 as scratch registers. Letting gcc
24 * choose these registers itself solves the problem.
25 *
26 * This program is free software; you can redistribute it and/or
27 * modify it under the terms of the GNU General Public License
28 * as published by the Free Software Foundation; either version
29 * 2 of the License, or (at your option) any later version.
30 */
31
32/* Revised by Kenneth Albanowski for m68knommu. Basic problem: unaligned access
33 kills, so most of the assembly has to go. */
34
35#include <net/checksum.h>
36#include <asm/checksum.h>
37#include <linux/module.h>
38
39static inline unsigned short from32to16(unsigned long x)
40{
41 /* add up 16-bit and 16-bit for 16+c bit */
42 x = (x & 0xffff) + (x >> 16);
43 /* add up carry.. */
44 x = (x & 0xffff) + (x >> 16);
45 return x;
46}
47
48static unsigned int do_csum(const unsigned char *buff, int len)
49{
50 int odd, count;
51 unsigned long result = 0;
52
53 if (len <= 0)
54 goto out;
55 odd = 1 & (unsigned long) buff;
56 if (odd) {
57 result = *buff;
58 len--;
59 buff++;
60 }
61 count = len >> 1; /* nr of 16-bit words.. */
62 if (count) {
63 if (2 & (unsigned long) buff) {
64 result += *(unsigned short *) buff;
65 count--;
66 len -= 2;
67 buff += 2;
68 }
69 count >>= 1; /* nr of 32-bit words.. */
70 if (count) {
71 unsigned long carry = 0;
72 do {
73 unsigned long w = *(unsigned long *) buff;
74 count--;
75 buff += 4;
76 result += carry;
77 result += w;
78 carry = (w > result);
79 } while (count);
80 result += carry;
81 result = (result & 0xffff) + (result >> 16);
82 }
83 if (len & 2) {
84 result += *(unsigned short *) buff;
85 buff += 2;
86 }
87 }
88 if (len & 1)
89 result += (*buff << 8);
90 result = from32to16(result);
91 if (odd)
92 result = ((result >> 8) & 0xff) | ((result & 0xff) << 8);
93out:
94 return result;
95}
96
97/*
98 * This is a version of ip_compute_csum() optimized for IP headers,
99 * which always checksum on 4 octet boundaries.
100 */
101__sum16 ip_fast_csum(const void *iph, unsigned int ihl)
102{
103 return (__force __sum16)~do_csum(iph, ihl*4);
104}
105
106/*
107 * computes the checksum of a memory block at buff, length len,
108 * and adds in "sum" (32-bit)
109 *
110 * returns a 32-bit number suitable for feeding into itself
111 * or csum_tcpudp_magic
112 *
113 * this function must be called with even lengths, except
114 * for the last fragment, which may be odd
115 *
116 * it's best to have buff aligned on a 32-bit boundary
117 */
118__wsum csum_partial(const void *buff, int len, __wsum sum)
119{
120 unsigned int result = do_csum(buff, len);
121
122 /* add in old sum, and carry.. */
123 result += sum;
124 if (sum > result)
125 result += 1;
126 return result;
127}
128EXPORT_SYMBOL(csum_partial);
129
130/*
131 * this routine is used for miscellaneous IP-like checksums, mainly
132 * in icmp.c
133 */
134__sum16 ip_compute_csum(const unsigned char *buff, int len)
135{
136 return ~do_csum(buff, len);
137}
138EXPORT_SYMBOL(ip_compute_csum);
139
140/*
141 * copy from fs while checksumming, otherwise like csum_partial
142 */
143__wsum
144csum_partial_copy_from_user(const char __user *src, char *dst, int len,
145 int sum, int *csum_err)
146{
147 if (csum_err)
148 *csum_err = 0;
149 memcpy(dst, src, len);
150 return csum_partial(dst, len, sum);
151}
152EXPORT_SYMBOL(csum_partial_copy_from_user);
153
154/*
155 * copy from ds while checksumming, otherwise like csum_partial
156 */
157__wsum
158csum_partial_copy(const char *src, char *dst, int len, int sum)
159{
160 memcpy(dst, src, len);
161 return csum_partial(dst, len, sum);
162}
163EXPORT_SYMBOL(csum_partial_copy);
diff --git a/arch/microblaze/lib/fastcopy.S b/arch/microblaze/lib/fastcopy.S
new file mode 100644
index 000000000000..02e3ab4eddf3
--- /dev/null
+++ b/arch/microblaze/lib/fastcopy.S
@@ -0,0 +1,662 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2008 Jim Law - Iris LP All rights reserved.
5 *
6 * This file is subject to the terms and conditions of the GNU General
7 * Public License. See the file COPYING in the main directory of this
8 * archive for more details.
9 *
10 * Written by Jim Law <jlaw@irispower.com>
11 *
12 * intended to replace:
13 * memcpy in memcpy.c and
14 * memmove in memmove.c
15 * ... in arch/microblaze/lib
16 *
17 *
18 * assly_fastcopy.S
19 *
20 * Attempt at quicker memcpy and memmove for MicroBlaze
21 * Input : Operand1 in Reg r5 - destination address
22 * Operand2 in Reg r6 - source address
23 * Operand3 in Reg r7 - number of bytes to transfer
24 * Output: Result in Reg r3 - starting destinaition address
25 *
26 *
27 * Explanation:
28 * Perform (possibly unaligned) copy of a block of memory
29 * between mem locations with size of xfer spec'd in bytes
30 */
31
32#include <linux/linkage.h>
33
34 .globl memcpy
35 .ent memcpy
36
37memcpy:
38fast_memcpy_ascending:
39 /* move d to return register as value of function */
40 addi r3, r5, 0
41
42 addi r4, r0, 4 /* n = 4 */
43 cmpu r4, r4, r7 /* n = c - n (unsigned) */
44 blti r4, a_xfer_end /* if n < 0, less than one word to transfer */
45
46 /* transfer first 0~3 bytes to get aligned dest address */
47 andi r4, r5, 3 /* n = d & 3 */
48 /* if zero, destination already aligned */
49 beqi r4, a_dalign_done
50 /* n = 4 - n (yields 3, 2, 1 transfers for 1, 2, 3 addr offset) */
51 rsubi r4, r4, 4
52 rsub r7, r4, r7 /* c = c - n adjust c */
53
54a_xfer_first_loop:
55 /* if no bytes left to transfer, transfer the bulk */
56 beqi r4, a_dalign_done
57 lbui r11, r6, 0 /* h = *s */
58 sbi r11, r5, 0 /* *d = h */
59 addi r6, r6, 1 /* s++ */
60 addi r5, r5, 1 /* d++ */
61 brid a_xfer_first_loop /* loop */
62 addi r4, r4, -1 /* n-- (IN DELAY SLOT) */
63
64a_dalign_done:
65 addi r4, r0, 32 /* n = 32 */
66 cmpu r4, r4, r7 /* n = c - n (unsigned) */
67 /* if n < 0, less than one block to transfer */
68 blti r4, a_block_done
69
70a_block_xfer:
71 andi r4, r7, 0xffffffe0 /* n = c & ~31 */
72 rsub r7, r4, r7 /* c = c - n */
73
74 andi r9, r6, 3 /* t1 = s & 3 */
75 /* if temp != 0, unaligned transfers needed */
76 bnei r9, a_block_unaligned
77
78a_block_aligned:
79 lwi r9, r6, 0 /* t1 = *(s + 0) */
80 lwi r10, r6, 4 /* t2 = *(s + 4) */
81 lwi r11, r6, 8 /* t3 = *(s + 8) */
82 lwi r12, r6, 12 /* t4 = *(s + 12) */
83 swi r9, r5, 0 /* *(d + 0) = t1 */
84 swi r10, r5, 4 /* *(d + 4) = t2 */
85 swi r11, r5, 8 /* *(d + 8) = t3 */
86 swi r12, r5, 12 /* *(d + 12) = t4 */
87 lwi r9, r6, 16 /* t1 = *(s + 16) */
88 lwi r10, r6, 20 /* t2 = *(s + 20) */
89 lwi r11, r6, 24 /* t3 = *(s + 24) */
90 lwi r12, r6, 28 /* t4 = *(s + 28) */
91 swi r9, r5, 16 /* *(d + 16) = t1 */
92 swi r10, r5, 20 /* *(d + 20) = t2 */
93 swi r11, r5, 24 /* *(d + 24) = t3 */
94 swi r12, r5, 28 /* *(d + 28) = t4 */
95 addi r6, r6, 32 /* s = s + 32 */
96 addi r4, r4, -32 /* n = n - 32 */
97 bneid r4, a_block_aligned /* while (n) loop */
98 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
99 bri a_block_done
100
101a_block_unaligned:
102 andi r8, r6, 0xfffffffc /* as = s & ~3 */
103 add r6, r6, r4 /* s = s + n */
104 lwi r11, r8, 0 /* h = *(as + 0) */
105
106 addi r9, r9, -1
107 beqi r9, a_block_u1 /* t1 was 1 => 1 byte offset */
108 addi r9, r9, -1
109 beqi r9, a_block_u2 /* t1 was 2 => 2 byte offset */
110
111a_block_u3:
112 bslli r11, r11, 24 /* h = h << 24 */
113a_bu3_loop:
114 lwi r12, r8, 4 /* v = *(as + 4) */
115 bsrli r9, r12, 8 /* t1 = v >> 8 */
116 or r9, r11, r9 /* t1 = h | t1 */
117 swi r9, r5, 0 /* *(d + 0) = t1 */
118 bslli r11, r12, 24 /* h = v << 24 */
119 lwi r12, r8, 8 /* v = *(as + 8) */
120 bsrli r9, r12, 8 /* t1 = v >> 8 */
121 or r9, r11, r9 /* t1 = h | t1 */
122 swi r9, r5, 4 /* *(d + 4) = t1 */
123 bslli r11, r12, 24 /* h = v << 24 */
124 lwi r12, r8, 12 /* v = *(as + 12) */
125 bsrli r9, r12, 8 /* t1 = v >> 8 */
126 or r9, r11, r9 /* t1 = h | t1 */
127 swi r9, r5, 8 /* *(d + 8) = t1 */
128 bslli r11, r12, 24 /* h = v << 24 */
129 lwi r12, r8, 16 /* v = *(as + 16) */
130 bsrli r9, r12, 8 /* t1 = v >> 8 */
131 or r9, r11, r9 /* t1 = h | t1 */
132 swi r9, r5, 12 /* *(d + 12) = t1 */
133 bslli r11, r12, 24 /* h = v << 24 */
134 lwi r12, r8, 20 /* v = *(as + 20) */
135 bsrli r9, r12, 8 /* t1 = v >> 8 */
136 or r9, r11, r9 /* t1 = h | t1 */
137 swi r9, r5, 16 /* *(d + 16) = t1 */
138 bslli r11, r12, 24 /* h = v << 24 */
139 lwi r12, r8, 24 /* v = *(as + 24) */
140 bsrli r9, r12, 8 /* t1 = v >> 8 */
141 or r9, r11, r9 /* t1 = h | t1 */
142 swi r9, r5, 20 /* *(d + 20) = t1 */
143 bslli r11, r12, 24 /* h = v << 24 */
144 lwi r12, r8, 28 /* v = *(as + 28) */
145 bsrli r9, r12, 8 /* t1 = v >> 8 */
146 or r9, r11, r9 /* t1 = h | t1 */
147 swi r9, r5, 24 /* *(d + 24) = t1 */
148 bslli r11, r12, 24 /* h = v << 24 */
149 lwi r12, r8, 32 /* v = *(as + 32) */
150 bsrli r9, r12, 8 /* t1 = v >> 8 */
151 or r9, r11, r9 /* t1 = h | t1 */
152 swi r9, r5, 28 /* *(d + 28) = t1 */
153 bslli r11, r12, 24 /* h = v << 24 */
154 addi r8, r8, 32 /* as = as + 32 */
155 addi r4, r4, -32 /* n = n - 32 */
156 bneid r4, a_bu3_loop /* while (n) loop */
157 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
158 bri a_block_done
159
160a_block_u1:
161 bslli r11, r11, 8 /* h = h << 8 */
162a_bu1_loop:
163 lwi r12, r8, 4 /* v = *(as + 4) */
164 bsrli r9, r12, 24 /* t1 = v >> 24 */
165 or r9, r11, r9 /* t1 = h | t1 */
166 swi r9, r5, 0 /* *(d + 0) = t1 */
167 bslli r11, r12, 8 /* h = v << 8 */
168 lwi r12, r8, 8 /* v = *(as + 8) */
169 bsrli r9, r12, 24 /* t1 = v >> 24 */
170 or r9, r11, r9 /* t1 = h | t1 */
171 swi r9, r5, 4 /* *(d + 4) = t1 */
172 bslli r11, r12, 8 /* h = v << 8 */
173 lwi r12, r8, 12 /* v = *(as + 12) */
174 bsrli r9, r12, 24 /* t1 = v >> 24 */
175 or r9, r11, r9 /* t1 = h | t1 */
176 swi r9, r5, 8 /* *(d + 8) = t1 */
177 bslli r11, r12, 8 /* h = v << 8 */
178 lwi r12, r8, 16 /* v = *(as + 16) */
179 bsrli r9, r12, 24 /* t1 = v >> 24 */
180 or r9, r11, r9 /* t1 = h | t1 */
181 swi r9, r5, 12 /* *(d + 12) = t1 */
182 bslli r11, r12, 8 /* h = v << 8 */
183 lwi r12, r8, 20 /* v = *(as + 20) */
184 bsrli r9, r12, 24 /* t1 = v >> 24 */
185 or r9, r11, r9 /* t1 = h | t1 */
186 swi r9, r5, 16 /* *(d + 16) = t1 */
187 bslli r11, r12, 8 /* h = v << 8 */
188 lwi r12, r8, 24 /* v = *(as + 24) */
189 bsrli r9, r12, 24 /* t1 = v >> 24 */
190 or r9, r11, r9 /* t1 = h | t1 */
191 swi r9, r5, 20 /* *(d + 20) = t1 */
192 bslli r11, r12, 8 /* h = v << 8 */
193 lwi r12, r8, 28 /* v = *(as + 28) */
194 bsrli r9, r12, 24 /* t1 = v >> 24 */
195 or r9, r11, r9 /* t1 = h | t1 */
196 swi r9, r5, 24 /* *(d + 24) = t1 */
197 bslli r11, r12, 8 /* h = v << 8 */
198 lwi r12, r8, 32 /* v = *(as + 32) */
199 bsrli r9, r12, 24 /* t1 = v >> 24 */
200 or r9, r11, r9 /* t1 = h | t1 */
201 swi r9, r5, 28 /* *(d + 28) = t1 */
202 bslli r11, r12, 8 /* h = v << 8 */
203 addi r8, r8, 32 /* as = as + 32 */
204 addi r4, r4, -32 /* n = n - 32 */
205 bneid r4, a_bu1_loop /* while (n) loop */
206 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
207 bri a_block_done
208
209a_block_u2:
210 bslli r11, r11, 16 /* h = h << 16 */
211a_bu2_loop:
212 lwi r12, r8, 4 /* v = *(as + 4) */
213 bsrli r9, r12, 16 /* t1 = v >> 16 */
214 or r9, r11, r9 /* t1 = h | t1 */
215 swi r9, r5, 0 /* *(d + 0) = t1 */
216 bslli r11, r12, 16 /* h = v << 16 */
217 lwi r12, r8, 8 /* v = *(as + 8) */
218 bsrli r9, r12, 16 /* t1 = v >> 16 */
219 or r9, r11, r9 /* t1 = h | t1 */
220 swi r9, r5, 4 /* *(d + 4) = t1 */
221 bslli r11, r12, 16 /* h = v << 16 */
222 lwi r12, r8, 12 /* v = *(as + 12) */
223 bsrli r9, r12, 16 /* t1 = v >> 16 */
224 or r9, r11, r9 /* t1 = h | t1 */
225 swi r9, r5, 8 /* *(d + 8) = t1 */
226 bslli r11, r12, 16 /* h = v << 16 */
227 lwi r12, r8, 16 /* v = *(as + 16) */
228 bsrli r9, r12, 16 /* t1 = v >> 16 */
229 or r9, r11, r9 /* t1 = h | t1 */
230 swi r9, r5, 12 /* *(d + 12) = t1 */
231 bslli r11, r12, 16 /* h = v << 16 */
232 lwi r12, r8, 20 /* v = *(as + 20) */
233 bsrli r9, r12, 16 /* t1 = v >> 16 */
234 or r9, r11, r9 /* t1 = h | t1 */
235 swi r9, r5, 16 /* *(d + 16) = t1 */
236 bslli r11, r12, 16 /* h = v << 16 */
237 lwi r12, r8, 24 /* v = *(as + 24) */
238 bsrli r9, r12, 16 /* t1 = v >> 16 */
239 or r9, r11, r9 /* t1 = h | t1 */
240 swi r9, r5, 20 /* *(d + 20) = t1 */
241 bslli r11, r12, 16 /* h = v << 16 */
242 lwi r12, r8, 28 /* v = *(as + 28) */
243 bsrli r9, r12, 16 /* t1 = v >> 16 */
244 or r9, r11, r9 /* t1 = h | t1 */
245 swi r9, r5, 24 /* *(d + 24) = t1 */
246 bslli r11, r12, 16 /* h = v << 16 */
247 lwi r12, r8, 32 /* v = *(as + 32) */
248 bsrli r9, r12, 16 /* t1 = v >> 16 */
249 or r9, r11, r9 /* t1 = h | t1 */
250 swi r9, r5, 28 /* *(d + 28) = t1 */
251 bslli r11, r12, 16 /* h = v << 16 */
252 addi r8, r8, 32 /* as = as + 32 */
253 addi r4, r4, -32 /* n = n - 32 */
254 bneid r4, a_bu2_loop /* while (n) loop */
255 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
256
257a_block_done:
258 addi r4, r0, 4 /* n = 4 */
259 cmpu r4, r4, r7 /* n = c - n (unsigned) */
260 blti r4, a_xfer_end /* if n < 0, less than one word to transfer */
261
262a_word_xfer:
263 andi r4, r7, 0xfffffffc /* n = c & ~3 */
264 addi r10, r0, 0 /* offset = 0 */
265
266 andi r9, r6, 3 /* t1 = s & 3 */
267 /* if temp != 0, unaligned transfers needed */
268 bnei r9, a_word_unaligned
269
270a_word_aligned:
271 lw r9, r6, r10 /* t1 = *(s+offset) */
272 sw r9, r5, r10 /* *(d+offset) = t1 */
273 addi r4, r4,-4 /* n-- */
274 bneid r4, a_word_aligned /* loop */
275 addi r10, r10, 4 /* offset++ (IN DELAY SLOT) */
276
277 bri a_word_done
278
279a_word_unaligned:
280 andi r8, r6, 0xfffffffc /* as = s & ~3 */
281 lwi r11, r8, 0 /* h = *(as + 0) */
282 addi r8, r8, 4 /* as = as + 4 */
283
284 addi r9, r9, -1
285 beqi r9, a_word_u1 /* t1 was 1 => 1 byte offset */
286 addi r9, r9, -1
287 beqi r9, a_word_u2 /* t1 was 2 => 2 byte offset */
288
289a_word_u3:
290 bslli r11, r11, 24 /* h = h << 24 */
291a_wu3_loop:
292 lw r12, r8, r10 /* v = *(as + offset) */
293 bsrli r9, r12, 8 /* t1 = v >> 8 */
294 or r9, r11, r9 /* t1 = h | t1 */
295 sw r9, r5, r10 /* *(d + offset) = t1 */
296 bslli r11, r12, 24 /* h = v << 24 */
297 addi r4, r4,-4 /* n = n - 4 */
298 bneid r4, a_wu3_loop /* while (n) loop */
299 addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
300
301 bri a_word_done
302
303a_word_u1:
304 bslli r11, r11, 8 /* h = h << 8 */
305a_wu1_loop:
306 lw r12, r8, r10 /* v = *(as + offset) */
307 bsrli r9, r12, 24 /* t1 = v >> 24 */
308 or r9, r11, r9 /* t1 = h | t1 */
309 sw r9, r5, r10 /* *(d + offset) = t1 */
310 bslli r11, r12, 8 /* h = v << 8 */
311 addi r4, r4,-4 /* n = n - 4 */
312 bneid r4, a_wu1_loop /* while (n) loop */
313 addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
314
315 bri a_word_done
316
317a_word_u2:
318 bslli r11, r11, 16 /* h = h << 16 */
319a_wu2_loop:
320 lw r12, r8, r10 /* v = *(as + offset) */
321 bsrli r9, r12, 16 /* t1 = v >> 16 */
322 or r9, r11, r9 /* t1 = h | t1 */
323 sw r9, r5, r10 /* *(d + offset) = t1 */
324 bslli r11, r12, 16 /* h = v << 16 */
325 addi r4, r4,-4 /* n = n - 4 */
326 bneid r4, a_wu2_loop /* while (n) loop */
327 addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
328
329a_word_done:
330 add r5, r5, r10 /* d = d + offset */
331 add r6, r6, r10 /* s = s + offset */
332 rsub r7, r10, r7 /* c = c - offset */
333
334a_xfer_end:
335a_xfer_end_loop:
336 beqi r7, a_done /* while (c) */
337 lbui r9, r6, 0 /* t1 = *s */
338 addi r6, r6, 1 /* s++ */
339 sbi r9, r5, 0 /* *d = t1 */
340 addi r7, r7, -1 /* c-- */
341 brid a_xfer_end_loop /* loop */
342 addi r5, r5, 1 /* d++ (IN DELAY SLOT) */
343
344a_done:
345 rtsd r15, 8
346 nop
347
348.end memcpy
349/*----------------------------------------------------------------------------*/
350 .globl memmove
351 .ent memmove
352
353memmove:
354 cmpu r4, r5, r6 /* n = s - d */
355 bgei r4,fast_memcpy_ascending
356
357fast_memcpy_descending:
358 /* move d to return register as value of function */
359 addi r3, r5, 0
360
361 add r5, r5, r7 /* d = d + c */
362 add r6, r6, r7 /* s = s + c */
363
364 addi r4, r0, 4 /* n = 4 */
365 cmpu r4, r4, r7 /* n = c - n (unsigned) */
366 blti r4,d_xfer_end /* if n < 0, less than one word to transfer */
367
368 /* transfer first 0~3 bytes to get aligned dest address */
369 andi r4, r5, 3 /* n = d & 3 */
370 /* if zero, destination already aligned */
371 beqi r4,d_dalign_done
372 rsub r7, r4, r7 /* c = c - n adjust c */
373
374d_xfer_first_loop:
375 /* if no bytes left to transfer, transfer the bulk */
376 beqi r4,d_dalign_done
377 addi r6, r6, -1 /* s-- */
378 addi r5, r5, -1 /* d-- */
379 lbui r11, r6, 0 /* h = *s */
380 sbi r11, r5, 0 /* *d = h */
381 brid d_xfer_first_loop /* loop */
382 addi r4, r4, -1 /* n-- (IN DELAY SLOT) */
383
384d_dalign_done:
385 addi r4, r0, 32 /* n = 32 */
386 cmpu r4, r4, r7 /* n = c - n (unsigned) */
387 /* if n < 0, less than one block to transfer */
388 blti r4, d_block_done
389
390d_block_xfer:
391 andi r4, r7, 0xffffffe0 /* n = c & ~31 */
392 rsub r7, r4, r7 /* c = c - n */
393
394 andi r9, r6, 3 /* t1 = s & 3 */
395 /* if temp != 0, unaligned transfers needed */
396 bnei r9, d_block_unaligned
397
398d_block_aligned:
399 addi r6, r6, -32 /* s = s - 32 */
400 addi r5, r5, -32 /* d = d - 32 */
401 lwi r9, r6, 28 /* t1 = *(s + 28) */
402 lwi r10, r6, 24 /* t2 = *(s + 24) */
403 lwi r11, r6, 20 /* t3 = *(s + 20) */
404 lwi r12, r6, 16 /* t4 = *(s + 16) */
405 swi r9, r5, 28 /* *(d + 28) = t1 */
406 swi r10, r5, 24 /* *(d + 24) = t2 */
407 swi r11, r5, 20 /* *(d + 20) = t3 */
408 swi r12, r5, 16 /* *(d + 16) = t4 */
409 lwi r9, r6, 12 /* t1 = *(s + 12) */
410 lwi r10, r6, 8 /* t2 = *(s + 8) */
411 lwi r11, r6, 4 /* t3 = *(s + 4) */
412 lwi r12, r6, 0 /* t4 = *(s + 0) */
413 swi r9, r5, 12 /* *(d + 12) = t1 */
414 swi r10, r5, 8 /* *(d + 8) = t2 */
415 swi r11, r5, 4 /* *(d + 4) = t3 */
416 addi r4, r4, -32 /* n = n - 32 */
417 bneid r4, d_block_aligned /* while (n) loop */
418 swi r12, r5, 0 /* *(d + 0) = t4 (IN DELAY SLOT) */
419 bri d_block_done
420
421d_block_unaligned:
422 andi r8, r6, 0xfffffffc /* as = s & ~3 */
423 rsub r6, r4, r6 /* s = s - n */
424 lwi r11, r8, 0 /* h = *(as + 0) */
425
426 addi r9, r9, -1
427 beqi r9,d_block_u1 /* t1 was 1 => 1 byte offset */
428 addi r9, r9, -1
429 beqi r9,d_block_u2 /* t1 was 2 => 2 byte offset */
430
431d_block_u3:
432 bsrli r11, r11, 8 /* h = h >> 8 */
433d_bu3_loop:
434 addi r8, r8, -32 /* as = as - 32 */
435 addi r5, r5, -32 /* d = d - 32 */
436 lwi r12, r8, 28 /* v = *(as + 28) */
437 bslli r9, r12, 24 /* t1 = v << 24 */
438 or r9, r11, r9 /* t1 = h | t1 */
439 swi r9, r5, 28 /* *(d + 28) = t1 */
440 bsrli r11, r12, 8 /* h = v >> 8 */
441 lwi r12, r8, 24 /* v = *(as + 24) */
442 bslli r9, r12, 24 /* t1 = v << 24 */
443 or r9, r11, r9 /* t1 = h | t1 */
444 swi r9, r5, 24 /* *(d + 24) = t1 */
445 bsrli r11, r12, 8 /* h = v >> 8 */
446 lwi r12, r8, 20 /* v = *(as + 20) */
447 bslli r9, r12, 24 /* t1 = v << 24 */
448 or r9, r11, r9 /* t1 = h | t1 */
449 swi r9, r5, 20 /* *(d + 20) = t1 */
450 bsrli r11, r12, 8 /* h = v >> 8 */
451 lwi r12, r8, 16 /* v = *(as + 16) */
452 bslli r9, r12, 24 /* t1 = v << 24 */
453 or r9, r11, r9 /* t1 = h | t1 */
454 swi r9, r5, 16 /* *(d + 16) = t1 */
455 bsrli r11, r12, 8 /* h = v >> 8 */
456 lwi r12, r8, 12 /* v = *(as + 12) */
457 bslli r9, r12, 24 /* t1 = v << 24 */
458 or r9, r11, r9 /* t1 = h | t1 */
459 swi r9, r5, 12 /* *(d + 112) = t1 */
460 bsrli r11, r12, 8 /* h = v >> 8 */
461 lwi r12, r8, 8 /* v = *(as + 8) */
462 bslli r9, r12, 24 /* t1 = v << 24 */
463 or r9, r11, r9 /* t1 = h | t1 */
464 swi r9, r5, 8 /* *(d + 8) = t1 */
465 bsrli r11, r12, 8 /* h = v >> 8 */
466 lwi r12, r8, 4 /* v = *(as + 4) */
467 bslli r9, r12, 24 /* t1 = v << 24 */
468 or r9, r11, r9 /* t1 = h | t1 */
469 swi r9, r5, 4 /* *(d + 4) = t1 */
470 bsrli r11, r12, 8 /* h = v >> 8 */
471 lwi r12, r8, 0 /* v = *(as + 0) */
472 bslli r9, r12, 24 /* t1 = v << 24 */
473 or r9, r11, r9 /* t1 = h | t1 */
474 swi r9, r5, 0 /* *(d + 0) = t1 */
475 addi r4, r4, -32 /* n = n - 32 */
476 bneid r4, d_bu3_loop /* while (n) loop */
477 bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
478 bri d_block_done
479
480d_block_u1:
481 bsrli r11, r11, 24 /* h = h >> 24 */
482d_bu1_loop:
483 addi r8, r8, -32 /* as = as - 32 */
484 addi r5, r5, -32 /* d = d - 32 */
485 lwi r12, r8, 28 /* v = *(as + 28) */
486 bslli r9, r12, 8 /* t1 = v << 8 */
487 or r9, r11, r9 /* t1 = h | t1 */
488 swi r9, r5, 28 /* *(d + 28) = t1 */
489 bsrli r11, r12, 24 /* h = v >> 24 */
490 lwi r12, r8, 24 /* v = *(as + 24) */
491 bslli r9, r12, 8 /* t1 = v << 8 */
492 or r9, r11, r9 /* t1 = h | t1 */
493 swi r9, r5, 24 /* *(d + 24) = t1 */
494 bsrli r11, r12, 24 /* h = v >> 24 */
495 lwi r12, r8, 20 /* v = *(as + 20) */
496 bslli r9, r12, 8 /* t1 = v << 8 */
497 or r9, r11, r9 /* t1 = h | t1 */
498 swi r9, r5, 20 /* *(d + 20) = t1 */
499 bsrli r11, r12, 24 /* h = v >> 24 */
500 lwi r12, r8, 16 /* v = *(as + 16) */
501 bslli r9, r12, 8 /* t1 = v << 8 */
502 or r9, r11, r9 /* t1 = h | t1 */
503 swi r9, r5, 16 /* *(d + 16) = t1 */
504 bsrli r11, r12, 24 /* h = v >> 24 */
505 lwi r12, r8, 12 /* v = *(as + 12) */
506 bslli r9, r12, 8 /* t1 = v << 8 */
507 or r9, r11, r9 /* t1 = h | t1 */
508 swi r9, r5, 12 /* *(d + 112) = t1 */
509 bsrli r11, r12, 24 /* h = v >> 24 */
510 lwi r12, r8, 8 /* v = *(as + 8) */
511 bslli r9, r12, 8 /* t1 = v << 8 */
512 or r9, r11, r9 /* t1 = h | t1 */
513 swi r9, r5, 8 /* *(d + 8) = t1 */
514 bsrli r11, r12, 24 /* h = v >> 24 */
515 lwi r12, r8, 4 /* v = *(as + 4) */
516 bslli r9, r12, 8 /* t1 = v << 8 */
517 or r9, r11, r9 /* t1 = h | t1 */
518 swi r9, r5, 4 /* *(d + 4) = t1 */
519 bsrli r11, r12, 24 /* h = v >> 24 */
520 lwi r12, r8, 0 /* v = *(as + 0) */
521 bslli r9, r12, 8 /* t1 = v << 8 */
522 or r9, r11, r9 /* t1 = h | t1 */
523 swi r9, r5, 0 /* *(d + 0) = t1 */
524 addi r4, r4, -32 /* n = n - 32 */
525 bneid r4, d_bu1_loop /* while (n) loop */
526 bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
527 bri d_block_done
528
529d_block_u2:
530 bsrli r11, r11, 16 /* h = h >> 16 */
531d_bu2_loop:
532 addi r8, r8, -32 /* as = as - 32 */
533 addi r5, r5, -32 /* d = d - 32 */
534 lwi r12, r8, 28 /* v = *(as + 28) */
535 bslli r9, r12, 16 /* t1 = v << 16 */
536 or r9, r11, r9 /* t1 = h | t1 */
537 swi r9, r5, 28 /* *(d + 28) = t1 */
538 bsrli r11, r12, 16 /* h = v >> 16 */
539 lwi r12, r8, 24 /* v = *(as + 24) */
540 bslli r9, r12, 16 /* t1 = v << 16 */
541 or r9, r11, r9 /* t1 = h | t1 */
542 swi r9, r5, 24 /* *(d + 24) = t1 */
543 bsrli r11, r12, 16 /* h = v >> 16 */
544 lwi r12, r8, 20 /* v = *(as + 20) */
545 bslli r9, r12, 16 /* t1 = v << 16 */
546 or r9, r11, r9 /* t1 = h | t1 */
547 swi r9, r5, 20 /* *(d + 20) = t1 */
548 bsrli r11, r12, 16 /* h = v >> 16 */
549 lwi r12, r8, 16 /* v = *(as + 16) */
550 bslli r9, r12, 16 /* t1 = v << 16 */
551 or r9, r11, r9 /* t1 = h | t1 */
552 swi r9, r5, 16 /* *(d + 16) = t1 */
553 bsrli r11, r12, 16 /* h = v >> 16 */
554 lwi r12, r8, 12 /* v = *(as + 12) */
555 bslli r9, r12, 16 /* t1 = v << 16 */
556 or r9, r11, r9 /* t1 = h | t1 */
557 swi r9, r5, 12 /* *(d + 112) = t1 */
558 bsrli r11, r12, 16 /* h = v >> 16 */
559 lwi r12, r8, 8 /* v = *(as + 8) */
560 bslli r9, r12, 16 /* t1 = v << 16 */
561 or r9, r11, r9 /* t1 = h | t1 */
562 swi r9, r5, 8 /* *(d + 8) = t1 */
563 bsrli r11, r12, 16 /* h = v >> 16 */
564 lwi r12, r8, 4 /* v = *(as + 4) */
565 bslli r9, r12, 16 /* t1 = v << 16 */
566 or r9, r11, r9 /* t1 = h | t1 */
567 swi r9, r5, 4 /* *(d + 4) = t1 */
568 bsrli r11, r12, 16 /* h = v >> 16 */
569 lwi r12, r8, 0 /* v = *(as + 0) */
570 bslli r9, r12, 16 /* t1 = v << 16 */
571 or r9, r11, r9 /* t1 = h | t1 */
572 swi r9, r5, 0 /* *(d + 0) = t1 */
573 addi r4, r4, -32 /* n = n - 32 */
574 bneid r4, d_bu2_loop /* while (n) loop */
575 bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
576
577d_block_done:
578 addi r4, r0, 4 /* n = 4 */
579 cmpu r4, r4, r7 /* n = c - n (unsigned) */
580 blti r4,d_xfer_end /* if n < 0, less than one word to transfer */
581
582d_word_xfer:
583 andi r4, r7, 0xfffffffc /* n = c & ~3 */
584 rsub r5, r4, r5 /* d = d - n */
585 rsub r6, r4, r6 /* s = s - n */
586 rsub r7, r4, r7 /* c = c - n */
587
588 andi r9, r6, 3 /* t1 = s & 3 */
589 /* if temp != 0, unaligned transfers needed */
590 bnei r9, d_word_unaligned
591
592d_word_aligned:
593 addi r4, r4,-4 /* n-- */
594 lw r9, r6, r4 /* t1 = *(s+n) */
595 bneid r4, d_word_aligned /* loop */
596 sw r9, r5, r4 /* *(d+n) = t1 (IN DELAY SLOT) */
597
598 bri d_word_done
599
600d_word_unaligned:
601 andi r8, r6, 0xfffffffc /* as = s & ~3 */
602 lw r11, r8, r4 /* h = *(as + n) */
603
604 addi r9, r9, -1
605 beqi r9,d_word_u1 /* t1 was 1 => 1 byte offset */
606 addi r9, r9, -1
607 beqi r9,d_word_u2 /* t1 was 2 => 2 byte offset */
608
609d_word_u3:
610 bsrli r11, r11, 8 /* h = h >> 8 */
611d_wu3_loop:
612 addi r4, r4,-4 /* n = n - 4 */
613 lw r12, r8, r4 /* v = *(as + n) */
614 bslli r9, r12, 24 /* t1 = v << 24 */
615 or r9, r11, r9 /* t1 = h | t1 */
616 sw r9, r5, r4 /* *(d + n) = t1 */
617 bneid r4, d_wu3_loop /* while (n) loop */
618 bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
619
620 bri d_word_done
621
622d_word_u1:
623 bsrli r11, r11, 24 /* h = h >> 24 */
624d_wu1_loop:
625 addi r4, r4,-4 /* n = n - 4 */
626 lw r12, r8, r4 /* v = *(as + n) */
627 bslli r9, r12, 8 /* t1 = v << 8 */
628 or r9, r11, r9 /* t1 = h | t1 */
629 sw r9, r5, r4 /* *(d + n) = t1 */
630 bneid r4, d_wu1_loop /* while (n) loop */
631 bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
632
633 bri d_word_done
634
635d_word_u2:
636 bsrli r11, r11, 16 /* h = h >> 16 */
637d_wu2_loop:
638 addi r4, r4,-4 /* n = n - 4 */
639 lw r12, r8, r4 /* v = *(as + n) */
640 bslli r9, r12, 16 /* t1 = v << 16 */
641 or r9, r11, r9 /* t1 = h | t1 */
642 sw r9, r5, r4 /* *(d + n) = t1 */
643 bneid r4, d_wu2_loop /* while (n) loop */
644 bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
645
646d_word_done:
647
648d_xfer_end:
649d_xfer_end_loop:
650 beqi r7, a_done /* while (c) */
651 addi r6, r6, -1 /* s-- */
652 lbui r9, r6, 0 /* t1 = *s */
653 addi r5, r5, -1 /* d-- */
654 sbi r9, r5, 0 /* *d = t1 */
655 brid d_xfer_end_loop /* loop */
656 addi r7, r7, -1 /* c-- (IN DELAY SLOT) */
657
658d_done:
659 rtsd r15, 8
660 nop
661
662.end memmove
diff --git a/arch/microblaze/lib/memcpy.c b/arch/microblaze/lib/memcpy.c
new file mode 100644
index 000000000000..5880119c4487
--- /dev/null
+++ b/arch/microblaze/lib/memcpy.c
@@ -0,0 +1,161 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2007 John Williams
5 *
6 * Reasonably optimised generic C-code for memcpy on Microblaze
7 * This is generic C code to do efficient, alignment-aware memcpy.
8 *
9 * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
10 * http://www.embedded.com/showArticle.jhtml?articleID=19205567
11 *
12 * Attempts were made, unsuccesfully, to contact the original
13 * author of this code (Michael Morrow, Intel). Below is the original
14 * copyright notice.
15 *
16 * This software has been developed by Intel Corporation.
17 * Intel specifically disclaims all warranties, express or
18 * implied, and all liability, including consequential and
19 * other indirect damages, for the use of this program, including
20 * liability for infringement of any proprietary rights,
21 * and including the warranties of merchantability and fitness
22 * for a particular purpose. Intel does not assume any
23 * responsibility for and errors which may appear in this program
24 * not any responsibility to update it.
25 */
26
27#include <linux/types.h>
28#include <linux/stddef.h>
29#include <linux/compiler.h>
30#include <linux/module.h>
31
32#include <linux/string.h>
33#include <asm/system.h>
34
35#ifdef __HAVE_ARCH_MEMCPY
36void *memcpy(void *v_dst, const void *v_src, __kernel_size_t c)
37{
38 const char *src = v_src;
39 char *dst = v_dst;
40#ifndef CONFIG_OPT_LIB_FUNCTION
41 /* Simple, byte oriented memcpy. */
42 while (c--)
43 *dst++ = *src++;
44
45 return v_dst;
46#else
47 /* The following code tries to optimize the copy by using unsigned
48 * alignment. This will work fine if both source and destination are
49 * aligned on the same boundary. However, if they are aligned on
50 * different boundaries shifts will be necessary. This might result in
51 * bad performance on MicroBlaze systems without a barrel shifter.
52 */
53 const uint32_t *i_src;
54 uint32_t *i_dst;
55
56 if (c >= 4) {
57 unsigned value, buf_hold;
58
59 /* Align the dstination to a word boundry. */
60 /* This is done in an endian independant manner. */
61 switch ((unsigned long)dst & 3) {
62 case 1:
63 *dst++ = *src++;
64 --c;
65 case 2:
66 *dst++ = *src++;
67 --c;
68 case 3:
69 *dst++ = *src++;
70 --c;
71 }
72
73 i_dst = (void *)dst;
74
75 /* Choose a copy scheme based on the source */
76 /* alignment relative to dstination. */
77 switch ((unsigned long)src & 3) {
78 case 0x0: /* Both byte offsets are aligned */
79 i_src = (const void *)src;
80
81 for (; c >= 4; c -= 4)
82 *i_dst++ = *i_src++;
83
84 src = (const void *)i_src;
85 break;
86 case 0x1: /* Unaligned - Off by 1 */
87 /* Word align the source */
88 i_src = (const void *) ((unsigned)src & ~3);
89
90 /* Load the holding buffer */
91 buf_hold = *i_src++ << 8;
92
93 for (; c >= 4; c -= 4) {
94 value = *i_src++;
95 *i_dst++ = buf_hold | value >> 24;
96 buf_hold = value << 8;
97 }
98
99 /* Realign the source */
100 src = (const void *)i_src;
101 src -= 3;
102 break;
103 case 0x2: /* Unaligned - Off by 2 */
104 /* Word align the source */
105 i_src = (const void *) ((unsigned)src & ~3);
106
107 /* Load the holding buffer */
108 buf_hold = *i_src++ << 16;
109
110 for (; c >= 4; c -= 4) {
111 value = *i_src++;
112 *i_dst++ = buf_hold | value >> 16;
113 buf_hold = value << 16;
114 }
115
116 /* Realign the source */
117 src = (const void *)i_src;
118 src -= 2;
119 break;
120 case 0x3: /* Unaligned - Off by 3 */
121 /* Word align the source */
122 i_src = (const void *) ((unsigned)src & ~3);
123
124 /* Load the holding buffer */
125 buf_hold = *i_src++ << 24;
126
127 for (; c >= 4; c -= 4) {
128 value = *i_src++;
129 *i_dst++ = buf_hold | value >> 8;
130 buf_hold = value << 24;
131 }
132
133 /* Realign the source */
134 src = (const void *)i_src;
135 src -= 1;
136 break;
137 }
138 dst = (void *)i_dst;
139 }
140
141 /* Finish off any remaining bytes */
142 /* simple fast copy, ... unless a cache boundry is crossed */
143 switch (c) {
144 case 3:
145 *dst++ = *src++;
146 case 2:
147 *dst++ = *src++;
148 case 1:
149 *dst++ = *src++;
150 }
151
152 return v_dst;
153#endif
154}
155EXPORT_SYMBOL(memcpy);
156#endif /* __HAVE_ARCH_MEMCPY */
157
158void *cacheable_memcpy(void *d, const void *s, __kernel_size_t c)
159{
160 return memcpy(d, s, c);
161}
diff --git a/arch/microblaze/lib/memmove.c b/arch/microblaze/lib/memmove.c
new file mode 100644
index 000000000000..d4e9f49a71f7
--- /dev/null
+++ b/arch/microblaze/lib/memmove.c
@@ -0,0 +1,175 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2007 John Williams
5 *
6 * Reasonably optimised generic C-code for memcpy on Microblaze
7 * This is generic C code to do efficient, alignment-aware memmove.
8 *
9 * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
10 * http://www.embedded.com/showArticle.jhtml?articleID=19205567
11 *
12 * Attempts were made, unsuccesfully, to contact the original
13 * author of this code (Michael Morrow, Intel). Below is the original
14 * copyright notice.
15 *
16 * This software has been developed by Intel Corporation.
17 * Intel specifically disclaims all warranties, express or
18 * implied, and all liability, including consequential and
19 * other indirect damages, for the use of this program, including
20 * liability for infringement of any proprietary rights,
21 * and including the warranties of merchantability and fitness
22 * for a particular purpose. Intel does not assume any
23 * responsibility for and errors which may appear in this program
24 * not any responsibility to update it.
25 */
26
27#include <linux/types.h>
28#include <linux/stddef.h>
29#include <linux/compiler.h>
30#include <linux/module.h>
31#include <linux/string.h>
32
33#ifdef __HAVE_ARCH_MEMMOVE
34void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
35{
36 const char *src = v_src;
37 char *dst = v_dst;
38
39#ifdef CONFIG_OPT_LIB_FUNCTION
40 const uint32_t *i_src;
41 uint32_t *i_dst;
42#endif
43
44 if (!c)
45 return v_dst;
46
47 /* Use memcpy when source is higher than dest */
48 if (v_dst <= v_src)
49 return memcpy(v_dst, v_src, c);
50
51#ifndef CONFIG_OPT_LIB_FUNCTION
52 /* copy backwards, from end to beginning */
53 src += c;
54 dst += c;
55
56 /* Simple, byte oriented memmove. */
57 while (c--)
58 *--dst = *--src;
59
60 return v_dst;
61#else
62 /* The following code tries to optimize the copy by using unsigned
63 * alignment. This will work fine if both source and destination are
64 * aligned on the same boundary. However, if they are aligned on
65 * different boundaries shifts will be necessary. This might result in
66 * bad performance on MicroBlaze systems without a barrel shifter.
67 */
68 /* FIXME this part needs more test */
69 /* Do a descending copy - this is a bit trickier! */
70 dst += c;
71 src += c;
72
73 if (c >= 4) {
74 unsigned value, buf_hold;
75
76 /* Align the destination to a word boundry. */
77 /* This is done in an endian independant manner. */
78
79 switch ((unsigned long)dst & 3) {
80 case 3:
81 *--dst = *--src;
82 --c;
83 case 2:
84 *--dst = *--src;
85 --c;
86 case 1:
87 *--dst = *--src;
88 --c;
89 }
90
91 i_dst = (void *)dst;
92 /* Choose a copy scheme based on the source */
93 /* alignment relative to dstination. */
94 switch ((unsigned long)src & 3) {
95 case 0x0: /* Both byte offsets are aligned */
96
97 i_src = (const void *)src;
98
99 for (; c >= 4; c -= 4)
100 *--i_dst = *--i_src;
101
102 src = (const void *)i_src;
103 break;
104 case 0x1: /* Unaligned - Off by 1 */
105 /* Word align the source */
106 i_src = (const void *) (((unsigned)src + 4) & ~3);
107
108 /* Load the holding buffer */
109 buf_hold = *--i_src >> 24;
110
111 for (; c >= 4; c -= 4) {
112 value = *--i_src;
113 *--i_dst = buf_hold << 8 | value;
114 buf_hold = value >> 24;
115 }
116
117 /* Realign the source */
118 src = (const void *)i_src;
119 src += 1;
120 break;
121 case 0x2: /* Unaligned - Off by 2 */
122 /* Word align the source */
123 i_src = (const void *) (((unsigned)src + 4) & ~3);
124
125 /* Load the holding buffer */
126 buf_hold = *--i_src >> 16;
127
128 for (; c >= 4; c -= 4) {
129 value = *--i_src;
130 *--i_dst = buf_hold << 16 | value;
131 buf_hold = value >> 16;
132 }
133
134 /* Realign the source */
135 src = (const void *)i_src;
136 src += 2;
137 break;
138 case 0x3: /* Unaligned - Off by 3 */
139 /* Word align the source */
140 i_src = (const void *) (((unsigned)src + 4) & ~3);
141
142 /* Load the holding buffer */
143 buf_hold = *--i_src >> 8;
144
145 for (; c >= 4; c -= 4) {
146 value = *--i_src;
147 *--i_dst = buf_hold << 24 | value;
148 buf_hold = value >> 8;
149 }
150
151 /* Realign the source */
152 src = (const void *)i_src;
153 src += 3;
154 break;
155 }
156 dst = (void *)i_dst;
157 }
158
159 /* simple fast copy, ... unless a cache boundry is crossed */
160 /* Finish off any remaining bytes */
161 switch (c) {
162 case 4:
163 *--dst = *--src;
164 case 3:
165 *--dst = *--src;
166 case 2:
167 *--dst = *--src;
168 case 1:
169 *--dst = *--src;
170 }
171 return v_dst;
172#endif
173}
174EXPORT_SYMBOL(memmove);
175#endif /* __HAVE_ARCH_MEMMOVE */
diff --git a/arch/microblaze/lib/memset.c b/arch/microblaze/lib/memset.c
new file mode 100644
index 000000000000..941dc8f94b03
--- /dev/null
+++ b/arch/microblaze/lib/memset.c
@@ -0,0 +1,82 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2007 John Williams
5 *
6 * Reasonably optimised generic C-code for memset on Microblaze
7 * This is generic C code to do efficient, alignment-aware memcpy.
8 *
9 * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
10 * http://www.embedded.com/showArticle.jhtml?articleID=19205567
11 *
12 * Attempts were made, unsuccesfully, to contact the original
13 * author of this code (Michael Morrow, Intel). Below is the original
14 * copyright notice.
15 *
16 * This software has been developed by Intel Corporation.
17 * Intel specifically disclaims all warranties, express or
18 * implied, and all liability, including consequential and
19 * other indirect damages, for the use of this program, including
20 * liability for infringement of any proprietary rights,
21 * and including the warranties of merchantability and fitness
22 * for a particular purpose. Intel does not assume any
23 * responsibility for and errors which may appear in this program
24 * not any responsibility to update it.
25 */
26
27#include <linux/types.h>
28#include <linux/stddef.h>
29#include <linux/compiler.h>
30#include <linux/module.h>
31#include <linux/string.h>
32
33#ifdef __HAVE_ARCH_MEMSET
34void *memset(void *v_src, int c, __kernel_size_t n)
35{
36
37 char *src = v_src;
38#ifdef CONFIG_OPT_LIB_FUNCTION
39 uint32_t *i_src;
40 uint32_t w32;
41#endif
42 /* Truncate c to 8 bits */
43 c = (c & 0xFF);
44
45#ifdef CONFIG_OPT_LIB_FUNCTION
46 /* Make a repeating word out of it */
47 w32 = c;
48 w32 |= w32 << 8;
49 w32 |= w32 << 16;
50
51 if (n >= 4) {
52 /* Align the destination to a word boundary */
53 /* This is done in an endian independant manner */
54 switch ((unsigned) src & 3) {
55 case 1:
56 *src++ = c;
57 --n;
58 case 2:
59 *src++ = c;
60 --n;
61 case 3:
62 *src++ = c;
63 --n;
64 }
65
66 i_src = (void *)src;
67
68 /* Do as many full-word copies as we can */
69 for (; n >= 4; n -= 4)
70 *i_src++ = w32;
71
72 src = (void *)i_src;
73 }
74#endif
75 /* Simple, byte oriented memset or the rest of count. */
76 while (n--)
77 *src++ = c;
78
79 return v_src;
80}
81EXPORT_SYMBOL(memset);
82#endif /* __HAVE_ARCH_MEMSET */
diff --git a/arch/microblaze/lib/uaccess.c b/arch/microblaze/lib/uaccess.c
new file mode 100644
index 000000000000..8eb9df5a26c9
--- /dev/null
+++ b/arch/microblaze/lib/uaccess.c
@@ -0,0 +1,41 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#include <linux/string.h>
10#include <asm/uaccess.h>
11
12#include <asm/bug.h>
13
14long strnlen_user(const char __user *src, long count)
15{
16 return strlen(src) + 1;
17}
18
19#define __do_strncpy_from_user(dst, src, count, res) \
20 do { \
21 char *tmp; \
22 strncpy(dst, src, count); \
23 for (tmp = dst; *tmp && count > 0; tmp++, count--) \
24 ; \
25 res = (tmp - dst); \
26 } while (0)
27
28long __strncpy_from_user(char *dst, const char __user *src, long count)
29{
30 long res;
31 __do_strncpy_from_user(dst, src, count, res);
32 return res;
33}
34
35long strncpy_from_user(char *dst, const char __user *src, long count)
36{
37 long res = -EFAULT;
38 if (access_ok(VERIFY_READ, src, 1))
39 __do_strncpy_from_user(dst, src, count, res);
40 return res;
41}
diff --git a/arch/microblaze/mm/Makefile b/arch/microblaze/mm/Makefile
new file mode 100644
index 000000000000..bf9e4479a1fd
--- /dev/null
+++ b/arch/microblaze/mm/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile
3#
4
5obj-y := init.o
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
new file mode 100644
index 000000000000..b0c8213cd6cf
--- /dev/null
+++ b/arch/microblaze/mm/init.c
@@ -0,0 +1,201 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#include <linux/bootmem.h>
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/lmb.h>
14#include <linux/mm.h> /* mem_init */
15#include <linux/initrd.h>
16#include <linux/pagemap.h>
17#include <linux/pfn.h>
18#include <linux/swap.h>
19
20#include <asm/page.h>
21#include <asm/mmu_context.h>
22#include <asm/pgalloc.h>
23#include <asm/sections.h>
24#include <asm/tlb.h>
25
26unsigned int __page_offset;
27/* EXPORT_SYMBOL(__page_offset); */
28
29char *klimit = _end;
30
31/*
32 * Initialize the bootmem system and give it all the memory we
33 * have available.
34 */
35unsigned int memory_start;
36unsigned int memory_end; /* due to mm/nommu.c */
37unsigned int memory_size;
38
39/*
40 * paging_init() sets up the page tables - in fact we've already done this.
41 */
42static void __init paging_init(void)
43{
44 int i;
45 unsigned long zones_size[MAX_NR_ZONES];
46
47 /*
48 * old: we can DMA to/from any address.put all page into ZONE_DMA
49 * We use only ZONE_NORMAL
50 */
51 zones_size[ZONE_NORMAL] = max_mapnr;
52
53 /* every other zones are empty */
54 for (i = 1; i < MAX_NR_ZONES; i++)
55 zones_size[i] = 0;
56
57 free_area_init(zones_size);
58}
59
60void __init setup_memory(void)
61{
62 int i;
63 unsigned long map_size;
64 u32 kernel_align_start, kernel_align_size;
65
66 /* Find main memory where is the kernel */
67 for (i = 0; i < lmb.memory.cnt; i++) {
68 memory_start = (u32) lmb.memory.region[i].base;
69 memory_end = (u32) lmb.memory.region[i].base
70 + (u32) lmb.memory.region[i].size;
71 if ((memory_start <= (u32)_text) &&
72 ((u32)_text <= memory_end)) {
73 memory_size = memory_end - memory_start;
74 PAGE_OFFSET = memory_start;
75 printk(KERN_INFO "%s: Main mem: 0x%x-0x%x, "
76 "size 0x%08x\n", __func__, memory_start,
77 memory_end, memory_size);
78 break;
79 }
80 }
81
82 if (!memory_start || !memory_end) {
83 panic("%s: Missing memory setting 0x%08x-0x%08x\n",
84 __func__, memory_start, memory_end);
85 }
86
87 /* reservation of region where is the kernel */
88 kernel_align_start = PAGE_DOWN((u32)_text);
89 /* ALIGN can be remove because _end in vmlinux.lds.S is align */
90 kernel_align_size = PAGE_UP((u32)klimit) - kernel_align_start;
91 lmb_reserve(kernel_align_start, kernel_align_size);
92 printk(KERN_INFO "%s: kernel addr=0x%08x-0x%08x size=0x%08x\n",
93 __func__, kernel_align_start, kernel_align_start
94 + kernel_align_size, kernel_align_size);
95
96 /*
97 * Kernel:
98 * start: base phys address of kernel - page align
99 * end: base phys address of kernel - page align
100 *
101 * min_low_pfn - the first page (mm/bootmem.c - node_boot_start)
102 * max_low_pfn
103 * max_mapnr - the first unused page (mm/bootmem.c - node_low_pfn)
104 * num_physpages - number of all pages
105 */
106
107 /* memory start is from the kernel end (aligned) to higher addr */
108 min_low_pfn = memory_start >> PAGE_SHIFT; /* minimum for allocation */
109 /* RAM is assumed contiguous */
110 num_physpages = max_mapnr = memory_size >> PAGE_SHIFT;
111 max_pfn = max_low_pfn = memory_end >> PAGE_SHIFT;
112
113 printk(KERN_INFO "%s: max_mapnr: %#lx\n", __func__, max_mapnr);
114 printk(KERN_INFO "%s: min_low_pfn: %#lx\n", __func__, min_low_pfn);
115 printk(KERN_INFO "%s: max_low_pfn: %#lx\n", __func__, max_low_pfn);
116
117 /*
118 * Find an area to use for the bootmem bitmap.
119 * We look for the first area which is at least
120 * 128kB in length (128kB is enough for a bitmap
121 * for 4GB of memory, using 4kB pages), plus 1 page
122 * (in case the address isn't page-aligned).
123 */
124 map_size = init_bootmem_node(NODE_DATA(0), PFN_UP(TOPHYS((u32)_end)),
125 min_low_pfn, max_low_pfn);
126
127 lmb_reserve(PFN_UP(TOPHYS((u32)_end)) << PAGE_SHIFT, map_size);
128
129 /* free bootmem is whole main memory */
130 free_bootmem(memory_start, memory_size);
131
132 /* reserve allocate blocks */
133 for (i = 0; i < lmb.reserved.cnt; i++) {
134 pr_debug("reserved %d - 0x%08x-0x%08x\n", i,
135 (u32) lmb.reserved.region[i].base,
136 (u32) lmb_size_bytes(&lmb.reserved, i));
137 reserve_bootmem(lmb.reserved.region[i].base,
138 lmb_size_bytes(&lmb.reserved, i) - 1, BOOTMEM_DEFAULT);
139 }
140 paging_init();
141}
142
143void free_init_pages(char *what, unsigned long begin, unsigned long end)
144{
145 unsigned long addr;
146
147 for (addr = begin; addr < end; addr += PAGE_SIZE) {
148 ClearPageReserved(virt_to_page(addr));
149 init_page_count(virt_to_page(addr));
150 memset((void *)addr, 0xcc, PAGE_SIZE);
151 free_page(addr);
152 totalram_pages++;
153 }
154 printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
155}
156
157#ifdef CONFIG_BLK_DEV_INITRD
158void free_initrd_mem(unsigned long start, unsigned long end)
159{
160 int pages = 0;
161 for (; start < end; start += PAGE_SIZE) {
162 ClearPageReserved(virt_to_page(start));
163 init_page_count(virt_to_page(start));
164 free_page(start);
165 totalram_pages++;
166 pages++;
167 }
168 printk(KERN_NOTICE "Freeing initrd memory: %dk freed\n", pages);
169}
170#endif
171
172void free_initmem(void)
173{
174 free_init_pages("unused kernel memory",
175 (unsigned long)(&__init_begin),
176 (unsigned long)(&__init_end));
177}
178
179/* FIXME from arch/powerpc/mm/mem.c*/
180void show_mem(void)
181{
182 printk(KERN_NOTICE "%s\n", __func__);
183}
184
185void __init mem_init(void)
186{
187 high_memory = (void *)__va(memory_end);
188 /* this will put all memory onto the freelists */
189 totalram_pages += free_all_bootmem();
190
191 printk(KERN_INFO "Memory: %luk/%luk available\n",
192 (unsigned long) nr_free_pages() << (PAGE_SHIFT-10),
193 num_physpages << (PAGE_SHIFT-10));
194}
195
196/* Check against bounds of physical memory */
197int ___range_ok(unsigned long addr, unsigned long size)
198{
199 return ((addr < memory_start) ||
200 ((addr + size) > memory_end));
201}
diff --git a/arch/microblaze/platform/Kconfig.platform b/arch/microblaze/platform/Kconfig.platform
new file mode 100644
index 000000000000..8e9b4752d3ff
--- /dev/null
+++ b/arch/microblaze/platform/Kconfig.platform
@@ -0,0 +1,85 @@
1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/kconfig-language.txt.
3#
4# Platform selection Kconfig menu for MicroBlaze targets
5#
6
7menu "Platform options"
8choice
9 prompt "Platform"
10 default PLATFORM_MICROBLAZE_AUTO
11 help
12 Choose which hardware board/platform you are targeting.
13
14config PLATFORM_GENERIC
15 bool "Generic"
16 help
17 Choose this option for the Generic platform.
18
19endchoice
20
21config SELFMOD
22 bool "Use self modified code for intc/timer"
23 depends on EXPERIMENTAL && NO_MMU
24 default n
25 help
26 This choice enables self-modified code for interrupt controller
27 and timer.
28
29config SELFMOD_INTC
30 bool "Use self modified code for intc"
31 depends on SELFMOD
32 default y
33 help
34 This choice enables self-modified code for interrupt controller.
35
36config SELFMOD_TIMER
37 bool "Use self modified code for timer"
38 depends on SELFMOD
39 default y
40 help
41 This choice enables self-modified code for timer.
42
43config OPT_LIB_FUNCTION
44 bool "Optimalized lib function"
45 default y
46 help
47 Allows turn on optimalized library function (memcpy and memmove).
48 They are optimized by using word alignment. This will work
49 fine if both source and destination are aligned on the same
50 boundary. However, if they are aligned on different boundaries
51 shifts will be necessary. This might result in bad performance
52 on MicroBlaze systems without a barrel shifter.
53
54config OPT_LIB_ASM
55 bool "Optimalized lib function ASM"
56 depends on OPT_LIB_FUNCTION
57 default n
58 help
59 Allows turn on optimalized library function (memcpy and memmove).
60 Function are written in asm code.
61
62# This is still a bit broken - disabling for now JW 20070504
63config ALLOW_EDIT_AUTO
64 bool "Permit Display/edit of Kconfig.auto platform settings"
65 default n
66 help
67 Allows the editing of auto-generated platform settings from
68 the Kconfig.auto file. Obviously this does not change the
69 underlying hardware, so be very careful if you go editing
70 these settings.
71
72 Also, if you enable this, and edit various Kconfig.auto
73 settings, YOUR CHANGES WILL BE LOST if you then disable it
74 again. You have been warned!
75
76 If unsure, say no.
77
78comment "Automatic platform settings from Kconfig.auto"
79 depends on ALLOW_EDIT_AUTO
80
81if PLATFORM_GENERIC=y
82 source "arch/microblaze/platform/generic/Kconfig.auto"
83endif
84
85endmenu
diff --git a/arch/microblaze/platform/Makefile b/arch/microblaze/platform/Makefile
new file mode 100644
index 000000000000..ea1b75cc5775
--- /dev/null
+++ b/arch/microblaze/platform/Makefile
@@ -0,0 +1,6 @@
1#
2# Makefile for arch/microblaze/platform directory
3#
4#obj-$(CONFIG_PLATFORM_GENERIC) += generic/
5
6obj-y += platform.o
diff --git a/arch/microblaze/platform/generic/Kconfig.auto b/arch/microblaze/platform/generic/Kconfig.auto
new file mode 100644
index 000000000000..fbca22d9c8b9
--- /dev/null
+++ b/arch/microblaze/platform/generic/Kconfig.auto
@@ -0,0 +1,62 @@
1#
2# (C) Copyright 2007 Michal Simek
3#
4# Michal SIMEK <monstr@monstr.eu>
5#
6# This program is free software; you can redistribute it and/or
7# modify it under the terms of the GNU General Public License as
8# published by the Free Software Foundation; either version 2 of
9# the License, or (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., 59 Temple Place, Suite 330, Boston,
19# MA 02111-1307 USA
20#
21
22# Definitions for MICROBLAZE0
23comment "Definitions for MICROBLAZE0"
24 depends on ALLOW_EDIT_AUTO
25
26config KERNEL_BASE_ADDR
27 hex "Physical address where Linux Kernel is"
28 default "0x90000000"
29 help
30 BASE Address for kernel
31
32config XILINX_MICROBLAZE0_FAMILY
33 string "Targetted FPGA family" if ALLOW_EDIT_AUTO
34 default "virtex5"
35
36config XILINX_MICROBLAZE0_USE_MSR_INSTR
37 int "USE_MSR_INSTR range (0:1)" if ALLOW_EDIT_AUTO
38 default 1
39
40config XILINX_MICROBLAZE0_USE_PCMP_INSTR
41 int "USE_PCMP_INSTR range (0:1)" if ALLOW_EDIT_AUTO
42 default 1
43
44config XILINX_MICROBLAZE0_USE_BARREL
45 int "USE_BARREL range (0:1)" if ALLOW_EDIT_AUTO
46 default 1
47
48config XILINX_MICROBLAZE0_USE_DIV
49 int "USE_DIV range (0:1)" if ALLOW_EDIT_AUTO
50 default 1
51
52config XILINX_MICROBLAZE0_USE_HW_MUL
53 int "USE_HW_MUL values (0=NONE, 1=MUL32, 2=MUL64)" if ALLOW_EDIT_AUTO
54 default 2
55
56config XILINX_MICROBLAZE0_USE_FPU
57 int "USE_FPU values (0=NONE, 1=BASIC, 2=EXTENDED)" if ALLOW_EDIT_AUTO
58 default 2
59
60config XILINX_MICROBLAZE0_HW_VER
61 string "Core version number" if ALLOW_EDIT_AUTO
62 default 7.10.d
diff --git a/arch/microblaze/platform/generic/Makefile b/arch/microblaze/platform/generic/Makefile
new file mode 100644
index 000000000000..9a8b1bd3fa6d
--- /dev/null
+++ b/arch/microblaze/platform/generic/Makefile
@@ -0,0 +1,3 @@
1#
2# Empty Makefile to keep make clean happy
3#
diff --git a/arch/microblaze/platform/generic/system.dts b/arch/microblaze/platform/generic/system.dts
new file mode 100644
index 000000000000..29993f62b30a
--- /dev/null
+++ b/arch/microblaze/platform/generic/system.dts
@@ -0,0 +1,332 @@
1/*
2 * Device Tree Generator version: 1.1
3 *
4 * (C) Copyright 2007-2008 Xilinx, Inc.
5 * (C) Copyright 2007-2009 Michal Simek
6 *
7 * Michal SIMEK <monstr@monstr.eu>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of
12 * the License, or (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., 59 Temple Place, Suite 330, Boston,
22 * MA 02111-1307 USA
23 *
24 * CAUTION: This file is automatically generated by libgen.
25 * Version: Xilinx EDK 10.1.03 EDK_K_SP3.6
26 *
27 * XPS project directory: Xilinx-ML505-ll_temac-sgdma-MMU-FDT-edk101
28 */
29
30/dts-v1/;
31/ {
32 #address-cells = <1>;
33 #size-cells = <1>;
34 compatible = "xlnx,microblaze";
35 model = "testing";
36 DDR2_SDRAM: memory@90000000 {
37 device_type = "memory";
38 reg = < 0x90000000 0x10000000 >;
39 } ;
40 chosen {
41 bootargs = "console=ttyUL0,115200 highres=on";
42 linux,stdout-path = "/plb@0/serial@84000000";
43 } ;
44 cpus {
45 #address-cells = <1>;
46 #cpus = <0x1>;
47 #size-cells = <0>;
48 microblaze_0: cpu@0 {
49 clock-frequency = <125000000>;
50 compatible = "xlnx,microblaze-7.10.d";
51 d-cache-baseaddr = <0x90000000>;
52 d-cache-highaddr = <0x9fffffff>;
53 d-cache-line-size = <0x10>;
54 d-cache-size = <0x2000>;
55 device_type = "cpu";
56 i-cache-baseaddr = <0x90000000>;
57 i-cache-highaddr = <0x9fffffff>;
58 i-cache-line-size = <0x10>;
59 i-cache-size = <0x2000>;
60 model = "microblaze,7.10.d";
61 reg = <0>;
62 timebase-frequency = <125000000>;
63 xlnx,addr-tag-bits = <0xf>;
64 xlnx,allow-dcache-wr = <0x1>;
65 xlnx,allow-icache-wr = <0x1>;
66 xlnx,area-optimized = <0x0>;
67 xlnx,cache-byte-size = <0x2000>;
68 xlnx,d-lmb = <0x1>;
69 xlnx,d-opb = <0x0>;
70 xlnx,d-plb = <0x1>;
71 xlnx,data-size = <0x20>;
72 xlnx,dcache-addr-tag = <0xf>;
73 xlnx,dcache-always-used = <0x1>;
74 xlnx,dcache-byte-size = <0x2000>;
75 xlnx,dcache-line-len = <0x4>;
76 xlnx,dcache-use-fsl = <0x1>;
77 xlnx,debug-enabled = <0x1>;
78 xlnx,div-zero-exception = <0x1>;
79 xlnx,dopb-bus-exception = <0x0>;
80 xlnx,dynamic-bus-sizing = <0x1>;
81 xlnx,edge-is-positive = <0x1>;
82 xlnx,family = "virtex5";
83 xlnx,fpu-exception = <0x1>;
84 xlnx,fsl-data-size = <0x20>;
85 xlnx,fsl-exception = <0x0>;
86 xlnx,fsl-links = <0x0>;
87 xlnx,i-lmb = <0x1>;
88 xlnx,i-opb = <0x0>;
89 xlnx,i-plb = <0x1>;
90 xlnx,icache-always-used = <0x1>;
91 xlnx,icache-line-len = <0x4>;
92 xlnx,icache-use-fsl = <0x1>;
93 xlnx,ill-opcode-exception = <0x1>;
94 xlnx,instance = "microblaze_0";
95 xlnx,interconnect = <0x1>;
96 xlnx,interrupt-is-edge = <0x0>;
97 xlnx,iopb-bus-exception = <0x0>;
98 xlnx,mmu-dtlb-size = <0x4>;
99 xlnx,mmu-itlb-size = <0x2>;
100 xlnx,mmu-tlb-access = <0x3>;
101 xlnx,mmu-zones = <0x10>;
102 xlnx,number-of-pc-brk = <0x1>;
103 xlnx,number-of-rd-addr-brk = <0x0>;
104 xlnx,number-of-wr-addr-brk = <0x0>;
105 xlnx,opcode-0x0-illegal = <0x1>;
106 xlnx,pvr = <0x2>;
107 xlnx,pvr-user1 = <0x0>;
108 xlnx,pvr-user2 = <0x0>;
109 xlnx,reset-msr = <0x0>;
110 xlnx,sco = <0x0>;
111 xlnx,unaligned-exceptions = <0x1>;
112 xlnx,use-barrel = <0x1>;
113 xlnx,use-dcache = <0x1>;
114 xlnx,use-div = <0x1>;
115 xlnx,use-ext-brk = <0x1>;
116 xlnx,use-ext-nm-brk = <0x1>;
117 xlnx,use-extended-fsl-instr = <0x0>;
118 xlnx,use-fpu = <0x2>;
119 xlnx,use-hw-mul = <0x2>;
120 xlnx,use-icache = <0x1>;
121 xlnx,use-interrupt = <0x1>;
122 xlnx,use-mmu = <0x3>;
123 xlnx,use-msr-instr = <0x1>;
124 xlnx,use-pcmp-instr = <0x1>;
125 } ;
126 } ;
127 mb_plb: plb@0 {
128 #address-cells = <1>;
129 #size-cells = <1>;
130 compatible = "xlnx,plb-v46-1.03.a", "simple-bus";
131 ranges ;
132 FLASH: flash@a0000000 {
133 bank-width = <2>;
134 compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash";
135 reg = < 0xa0000000 0x2000000 >;
136 xlnx,family = "virtex5";
137 xlnx,include-datawidth-matching-0 = <0x1>;
138 xlnx,include-datawidth-matching-1 = <0x0>;
139 xlnx,include-datawidth-matching-2 = <0x0>;
140 xlnx,include-datawidth-matching-3 = <0x0>;
141 xlnx,include-negedge-ioregs = <0x0>;
142 xlnx,include-plb-ipif = <0x1>;
143 xlnx,include-wrbuf = <0x1>;
144 xlnx,max-mem-width = <0x10>;
145 xlnx,mch-native-dwidth = <0x20>;
146 xlnx,mch-plb-clk-period-ps = <0x1f40>;
147 xlnx,mch-splb-awidth = <0x20>;
148 xlnx,mch0-accessbuf-depth = <0x10>;
149 xlnx,mch0-protocol = <0x0>;
150 xlnx,mch0-rddatabuf-depth = <0x10>;
151 xlnx,mch1-accessbuf-depth = <0x10>;
152 xlnx,mch1-protocol = <0x0>;
153 xlnx,mch1-rddatabuf-depth = <0x10>;
154 xlnx,mch2-accessbuf-depth = <0x10>;
155 xlnx,mch2-protocol = <0x0>;
156 xlnx,mch2-rddatabuf-depth = <0x10>;
157 xlnx,mch3-accessbuf-depth = <0x10>;
158 xlnx,mch3-protocol = <0x0>;
159 xlnx,mch3-rddatabuf-depth = <0x10>;
160 xlnx,mem0-width = <0x10>;
161 xlnx,mem1-width = <0x20>;
162 xlnx,mem2-width = <0x20>;
163 xlnx,mem3-width = <0x20>;
164 xlnx,num-banks-mem = <0x1>;
165 xlnx,num-channels = <0x0>;
166 xlnx,priority-mode = <0x0>;
167 xlnx,synch-mem-0 = <0x0>;
168 xlnx,synch-mem-1 = <0x0>;
169 xlnx,synch-mem-2 = <0x0>;
170 xlnx,synch-mem-3 = <0x0>;
171 xlnx,synch-pipedelay-0 = <0x2>;
172 xlnx,synch-pipedelay-1 = <0x2>;
173 xlnx,synch-pipedelay-2 = <0x2>;
174 xlnx,synch-pipedelay-3 = <0x2>;
175 xlnx,tavdv-ps-mem-0 = <0x1adb0>;
176 xlnx,tavdv-ps-mem-1 = <0x3a98>;
177 xlnx,tavdv-ps-mem-2 = <0x3a98>;
178 xlnx,tavdv-ps-mem-3 = <0x3a98>;
179 xlnx,tcedv-ps-mem-0 = <0x1adb0>;
180 xlnx,tcedv-ps-mem-1 = <0x3a98>;
181 xlnx,tcedv-ps-mem-2 = <0x3a98>;
182 xlnx,tcedv-ps-mem-3 = <0x3a98>;
183 xlnx,thzce-ps-mem-0 = <0x88b8>;
184 xlnx,thzce-ps-mem-1 = <0x1b58>;
185 xlnx,thzce-ps-mem-2 = <0x1b58>;
186 xlnx,thzce-ps-mem-3 = <0x1b58>;
187 xlnx,thzoe-ps-mem-0 = <0x1b58>;
188 xlnx,thzoe-ps-mem-1 = <0x1b58>;
189 xlnx,thzoe-ps-mem-2 = <0x1b58>;
190 xlnx,thzoe-ps-mem-3 = <0x1b58>;
191 xlnx,tlzwe-ps-mem-0 = <0x88b8>;
192 xlnx,tlzwe-ps-mem-1 = <0x0>;
193 xlnx,tlzwe-ps-mem-2 = <0x0>;
194 xlnx,tlzwe-ps-mem-3 = <0x0>;
195 xlnx,twc-ps-mem-0 = <0x2af8>;
196 xlnx,twc-ps-mem-1 = <0x3a98>;
197 xlnx,twc-ps-mem-2 = <0x3a98>;
198 xlnx,twc-ps-mem-3 = <0x3a98>;
199 xlnx,twp-ps-mem-0 = <0x11170>;
200 xlnx,twp-ps-mem-1 = <0x2ee0>;
201 xlnx,twp-ps-mem-2 = <0x2ee0>;
202 xlnx,twp-ps-mem-3 = <0x2ee0>;
203 xlnx,xcl0-linesize = <0x4>;
204 xlnx,xcl0-writexfer = <0x1>;
205 xlnx,xcl1-linesize = <0x4>;
206 xlnx,xcl1-writexfer = <0x1>;
207 xlnx,xcl2-linesize = <0x4>;
208 xlnx,xcl2-writexfer = <0x1>;
209 xlnx,xcl3-linesize = <0x4>;
210 xlnx,xcl3-writexfer = <0x1>;
211 } ;
212 Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
213 #address-cells = <1>;
214 #size-cells = <1>;
215 compatible = "xlnx,compound";
216 ethernet@81c00000 {
217 compatible = "xlnx,xps-ll-temac-1.01.b";
218 device_type = "network";
219 interrupt-parent = <&xps_intc_0>;
220 interrupts = < 5 2 >;
221 llink-connected = <&PIM3>;
222 local-mac-address = [ 02 00 00 00 00 00 ];
223 reg = < 0x81c00000 0x40 >;
224 xlnx,bus2core-clk-ratio = <0x1>;
225 xlnx,phy-type = <0x1>;
226 xlnx,phyaddr = <0x1>;
227 xlnx,rxcsum = <0x0>;
228 xlnx,rxfifo = <0x1000>;
229 xlnx,temac-type = <0x0>;
230 xlnx,txcsum = <0x0>;
231 xlnx,txfifo = <0x1000>;
232 } ;
233 } ;
234 IIC_EEPROM: i2c@81600000 {
235 compatible = "xlnx,xps-iic-2.00.a";
236 interrupt-parent = <&xps_intc_0>;
237 interrupts = < 6 2 >;
238 reg = < 0x81600000 0x10000 >;
239 xlnx,clk-freq = <0x7735940>;
240 xlnx,family = "virtex5";
241 xlnx,gpo-width = <0x1>;
242 xlnx,iic-freq = <0x186a0>;
243 xlnx,scl-inertial-delay = <0x0>;
244 xlnx,sda-inertial-delay = <0x0>;
245 xlnx,ten-bit-adr = <0x0>;
246 } ;
247 LEDs_8Bit: gpio@81400000 {
248 compatible = "xlnx,xps-gpio-1.00.a";
249 interrupt-parent = <&xps_intc_0>;
250 interrupts = < 7 2 >;
251 reg = < 0x81400000 0x10000 >;
252 xlnx,all-inputs = <0x0>;
253 xlnx,all-inputs-2 = <0x0>;
254 xlnx,dout-default = <0x0>;
255 xlnx,dout-default-2 = <0x0>;
256 xlnx,family = "virtex5";
257 xlnx,gpio-width = <0x8>;
258 xlnx,interrupt-present = <0x1>;
259 xlnx,is-bidir = <0x1>;
260 xlnx,is-bidir-2 = <0x1>;
261 xlnx,is-dual = <0x0>;
262 xlnx,tri-default = <0xffffffff>;
263 xlnx,tri-default-2 = <0xffffffff>;
264 } ;
265 RS232_Uart_1: serial@84000000 {
266 clock-frequency = <125000000>;
267 compatible = "xlnx,xps-uartlite-1.00.a";
268 current-speed = <115200>;
269 device_type = "serial";
270 interrupt-parent = <&xps_intc_0>;
271 interrupts = < 8 0 >;
272 port-number = <0>;
273 reg = < 0x84000000 0x10000 >;
274 xlnx,baudrate = <0x1c200>;
275 xlnx,data-bits = <0x8>;
276 xlnx,family = "virtex5";
277 xlnx,odd-parity = <0x0>;
278 xlnx,use-parity = <0x0>;
279 } ;
280 SysACE_CompactFlash: sysace@83600000 {
281 compatible = "xlnx,xps-sysace-1.00.a";
282 interrupt-parent = <&xps_intc_0>;
283 interrupts = < 4 2 >;
284 reg = < 0x83600000 0x10000 >;
285 xlnx,family = "virtex5";
286 xlnx,mem-width = <0x10>;
287 } ;
288 debug_module: debug@84400000 {
289 compatible = "xlnx,mdm-1.00.d";
290 reg = < 0x84400000 0x10000 >;
291 xlnx,family = "virtex5";
292 xlnx,interconnect = <0x1>;
293 xlnx,jtag-chain = <0x2>;
294 xlnx,mb-dbg-ports = <0x1>;
295 xlnx,uart-width = <0x8>;
296 xlnx,use-uart = <0x1>;
297 xlnx,write-fsl-ports = <0x0>;
298 } ;
299 mpmc@90000000 {
300 #address-cells = <1>;
301 #size-cells = <1>;
302 compatible = "xlnx,mpmc-4.02.a";
303 PIM3: sdma@84600180 {
304 compatible = "xlnx,ll-dma-1.00.a";
305 interrupt-parent = <&xps_intc_0>;
306 interrupts = < 2 2 1 2 >;
307 reg = < 0x84600180 0x80 >;
308 } ;
309 } ;
310 xps_intc_0: interrupt-controller@81800000 {
311 #interrupt-cells = <0x2>;
312 compatible = "xlnx,xps-intc-1.00.a";
313 interrupt-controller ;
314 reg = < 0x81800000 0x10000 >;
315 xlnx,kind-of-intr = <0x100>;
316 xlnx,num-intr-inputs = <0x9>;
317 } ;
318 xps_timer_1: timer@83c00000 {
319 compatible = "xlnx,xps-timer-1.00.a";
320 interrupt-parent = <&xps_intc_0>;
321 interrupts = < 3 2 >;
322 reg = < 0x83c00000 0x10000 >;
323 xlnx,count-width = <0x20>;
324 xlnx,family = "virtex5";
325 xlnx,gen0-assert = <0x1>;
326 xlnx,gen1-assert = <0x1>;
327 xlnx,one-timer-only = <0x0>;
328 xlnx,trig0-assert = <0x1>;
329 xlnx,trig1-assert = <0x1>;
330 } ;
331 } ;
332} ;
diff --git a/arch/microblaze/platform/platform.c b/arch/microblaze/platform/platform.c
new file mode 100644
index 000000000000..56e0234fa34b
--- /dev/null
+++ b/arch/microblaze/platform/platform.c
@@ -0,0 +1,31 @@
1/*
2 * Copyright 2008 Michal Simek <monstr@monstr.eu>
3 *
4 * based on virtex.c file
5 *
6 * Copyright 2007 Secret Lab Technologies Ltd.
7 *
8 * This file is licensed under the terms of the GNU General Public License
9 * version 2. This program is licensed "as is" without any warranty of any
10 * kind, whether express or implied.
11 */
12
13#include <linux/init.h>
14#include <linux/of_platform.h>
15#include <asm/prom.h>
16
17static struct of_device_id xilinx_of_bus_ids[] __initdata = {
18 { .compatible = "simple-bus", },
19 { .compatible = "xlnx,plb-v46-1.00.a", },
20 { .compatible = "xlnx,opb-v20-1.10.c", },
21 { .compatible = "xlnx,opb-v20-1.10.b", },
22 { .compatible = "xlnx,compound", },
23 {}
24};
25
26static int __init microblaze_device_probe(void)
27{
28 of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);
29 return 0;
30}
31device_initcall(microblaze_device_probe);
diff --git a/arch/mips/include/asm/mach-rc32434/gpio.h b/arch/mips/include/asm/mach-rc32434/gpio.h
index 3cb50d17b62d..12ee8d510160 100644
--- a/arch/mips/include/asm/mach-rc32434/gpio.h
+++ b/arch/mips/include/asm/mach-rc32434/gpio.h
@@ -80,6 +80,9 @@ struct rb532_gpio_reg {
80/* Compact Flash GPIO pin */ 80/* Compact Flash GPIO pin */
81#define CF_GPIO_NUM 13 81#define CF_GPIO_NUM 13
82 82
83/* S1 button GPIO (shared with UART0_SIN) */
84#define GPIO_BTN_S1 1
85
83extern void rb532_gpio_set_ilevel(int bit, unsigned gpio); 86extern void rb532_gpio_set_ilevel(int bit, unsigned gpio);
84extern void rb532_gpio_set_istat(int bit, unsigned gpio); 87extern void rb532_gpio_set_istat(int bit, unsigned gpio);
85extern void rb532_gpio_set_func(unsigned gpio); 88extern void rb532_gpio_set_func(unsigned gpio);
diff --git a/arch/mips/kernel/cevt-txx9.c b/arch/mips/kernel/cevt-txx9.c
index eccf7d6096bd..2e911e3da8d3 100644
--- a/arch/mips/kernel/cevt-txx9.c
+++ b/arch/mips/kernel/cevt-txx9.c
@@ -22,7 +22,7 @@
22 22
23static struct txx9_tmr_reg __iomem *txx9_cs_tmrptr; 23static struct txx9_tmr_reg __iomem *txx9_cs_tmrptr;
24 24
25static cycle_t txx9_cs_read(void) 25static cycle_t txx9_cs_read(struct clocksource *cs)
26{ 26{
27 return __raw_readl(&txx9_cs_tmrptr->trr); 27 return __raw_readl(&txx9_cs_tmrptr->trr);
28} 28}
diff --git a/arch/mips/kernel/csrc-bcm1480.c b/arch/mips/kernel/csrc-bcm1480.c
index 868745e7184b..51489f8a825e 100644
--- a/arch/mips/kernel/csrc-bcm1480.c
+++ b/arch/mips/kernel/csrc-bcm1480.c
@@ -28,7 +28,7 @@
28 28
29#include <asm/sibyte/sb1250.h> 29#include <asm/sibyte/sb1250.h>
30 30
31static cycle_t bcm1480_hpt_read(void) 31static cycle_t bcm1480_hpt_read(struct clocksource *cs)
32{ 32{
33 return (cycle_t) __raw_readq(IOADDR(A_SCD_ZBBUS_CYCLE_COUNT)); 33 return (cycle_t) __raw_readq(IOADDR(A_SCD_ZBBUS_CYCLE_COUNT));
34} 34}
diff --git a/arch/mips/kernel/csrc-ioasic.c b/arch/mips/kernel/csrc-ioasic.c
index 1d5f63cf8997..b551f48d3a07 100644
--- a/arch/mips/kernel/csrc-ioasic.c
+++ b/arch/mips/kernel/csrc-ioasic.c
@@ -25,7 +25,7 @@
25#include <asm/dec/ioasic.h> 25#include <asm/dec/ioasic.h>
26#include <asm/dec/ioasic_addrs.h> 26#include <asm/dec/ioasic_addrs.h>
27 27
28static cycle_t dec_ioasic_hpt_read(void) 28static cycle_t dec_ioasic_hpt_read(struct clocksource *cs)
29{ 29{
30 return ioasic_read(IO_REG_FCTR); 30 return ioasic_read(IO_REG_FCTR);
31} 31}
@@ -47,13 +47,13 @@ void __init dec_ioasic_clocksource_init(void)
47 while (!ds1287_timer_state()) 47 while (!ds1287_timer_state())
48 ; 48 ;
49 49
50 start = dec_ioasic_hpt_read(); 50 start = dec_ioasic_hpt_read(&clocksource_dec);
51 51
52 while (i--) 52 while (i--)
53 while (!ds1287_timer_state()) 53 while (!ds1287_timer_state())
54 ; 54 ;
55 55
56 end = dec_ioasic_hpt_read(); 56 end = dec_ioasic_hpt_read(&clocksource_dec);
57 57
58 freq = (end - start) * 10; 58 freq = (end - start) * 10;
59 printk(KERN_INFO "I/O ASIC clock frequency %dHz\n", freq); 59 printk(KERN_INFO "I/O ASIC clock frequency %dHz\n", freq);
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c
index f1a2893931ed..e95a3cd48eea 100644
--- a/arch/mips/kernel/csrc-r4k.c
+++ b/arch/mips/kernel/csrc-r4k.c
@@ -10,7 +10,7 @@
10 10
11#include <asm/time.h> 11#include <asm/time.h>
12 12
13static cycle_t c0_hpt_read(void) 13static cycle_t c0_hpt_read(struct clocksource *cs)
14{ 14{
15 return read_c0_count(); 15 return read_c0_count();
16} 16}
diff --git a/arch/mips/kernel/csrc-sb1250.c b/arch/mips/kernel/csrc-sb1250.c
index 92212bbb8e45..d14d3d1907fa 100644
--- a/arch/mips/kernel/csrc-sb1250.c
+++ b/arch/mips/kernel/csrc-sb1250.c
@@ -33,7 +33,7 @@
33 * The HPT is free running from SB1250_HPT_VALUE down to 0 then starts over 33 * The HPT is free running from SB1250_HPT_VALUE down to 0 then starts over
34 * again. 34 * again.
35 */ 35 */
36static cycle_t sb1250_hpt_read(void) 36static cycle_t sb1250_hpt_read(struct clocksource *cs)
37{ 37{
38 unsigned int count; 38 unsigned int count;
39 39
diff --git a/arch/mips/kernel/i8253.c b/arch/mips/kernel/i8253.c
index 689719e34f08..ed20e7fe65e3 100644
--- a/arch/mips/kernel/i8253.c
+++ b/arch/mips/kernel/i8253.c
@@ -128,7 +128,7 @@ void __init setup_pit_timer(void)
128 * to just read by itself. So use jiffies to emulate a free 128 * to just read by itself. So use jiffies to emulate a free
129 * running counter: 129 * running counter:
130 */ 130 */
131static cycle_t pit_read(void) 131static cycle_t pit_read(struct clocksource *cs)
132{ 132{
133 unsigned long flags; 133 unsigned long flags;
134 int count; 134 int count;
diff --git a/arch/mips/nxp/pnx8550/common/time.c b/arch/mips/nxp/pnx8550/common/time.c
index cf293b279098..8df43e9e4d90 100644
--- a/arch/mips/nxp/pnx8550/common/time.c
+++ b/arch/mips/nxp/pnx8550/common/time.c
@@ -35,7 +35,7 @@
35 35
36static unsigned long cpj; 36static unsigned long cpj;
37 37
38static cycle_t hpt_read(void) 38static cycle_t hpt_read(struct clocksource *cs)
39{ 39{
40 return read_c0_count2(); 40 return read_c0_count2();
41} 41}
diff --git a/arch/mips/rb532/devices.c b/arch/mips/rb532/devices.c
index 4a5f05b662ae..9f40e1ff9b4f 100644
--- a/arch/mips/rb532/devices.c
+++ b/arch/mips/rb532/devices.c
@@ -200,26 +200,9 @@ static struct platform_device rb532_led = {
200 .id = -1, 200 .id = -1,
201}; 201};
202 202
203static struct gpio_keys_button rb532_gpio_btn[] = {
204 {
205 .gpio = 1,
206 .code = BTN_0,
207 .desc = "S1",
208 .active_low = 1,
209 }
210};
211
212static struct gpio_keys_platform_data rb532_gpio_btn_data = {
213 .buttons = rb532_gpio_btn,
214 .nbuttons = ARRAY_SIZE(rb532_gpio_btn),
215};
216
217static struct platform_device rb532_button = { 203static struct platform_device rb532_button = {
218 .name = "gpio-keys", 204 .name = "rb532-button",
219 .id = -1, 205 .id = -1,
220 .dev = {
221 .platform_data = &rb532_gpio_btn_data,
222 }
223}; 206};
224 207
225static struct resource rb532_wdt_res[] = { 208static struct resource rb532_wdt_res[] = {
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index f024057a35f8..f10a7cd64f7e 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -159,7 +159,7 @@ static void __init hub_rt_clock_event_global_init(void)
159 setup_irq(irq, &hub_rt_irqaction); 159 setup_irq(irq, &hub_rt_irqaction);
160} 160}
161 161
162static cycle_t hub_rt_read(void) 162static cycle_t hub_rt_read(struct clocksource *cs)
163{ 163{
164 return REMOTE_HUB_L(cputonasid(0), PI_RT_COUNT); 164 return REMOTE_HUB_L(cputonasid(0), PI_RT_COUNT);
165} 165}
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index 41d16822e616..355926730e8d 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -370,5 +370,3 @@ source "security/Kconfig"
370source "crypto/Kconfig" 370source "crypto/Kconfig"
371 371
372source "lib/Kconfig" 372source "lib/Kconfig"
373
374source "arch/mn10300/oprofile/Kconfig"
diff --git a/arch/mn10300/Makefile b/arch/mn10300/Makefile
index 6673a28ec07a..dd0c8ff52a68 100644
--- a/arch/mn10300/Makefile
+++ b/arch/mn10300/Makefile
@@ -94,42 +94,8 @@ ifdef CONFIG_DEBUG_INFO
94KBUILD_AFLAGS += -Wa,--gdwarf2 94KBUILD_AFLAGS += -Wa,--gdwarf2
95endif 95endif
96 96
97###################################################################################################
98# 97#
99# juggle some symlinks in the MN10300 asm include dir 98# include the appropriate processor- and unit-specific headers
100# 99#
101# Update machine proc and unit symlinks if something which affects 100KBUILD_CPPFLAGS += -I$(srctree)/arch/mn10300/proc-$(PROCESSOR)/include
102# them changed. We use .proc / .unit to indicate when they were 101KBUILD_CPPFLAGS += -I$(srctree)/arch/mn10300/unit-$(UNIT)/include
103# updated last, otherwise make uses the target directory mtime.
104#
105###################################################################################################
106
107# processor specific definitions
108include/asm-mn10300/.proc: $(wildcard include/config/proc/*.h) include/config/auto.conf
109 @echo ' SYMLINK include/asm-mn10300/proc -> include/asm-mn10300/proc-$(PROCESSOR)'
110ifneq ($(KBUILD_SRC),)
111 $(Q)mkdir -p include/asm-mn10300
112 $(Q)ln -fsn $(srctree)/include/asm-mn10300/proc-$(PROCESSOR) include/asm-mn10300/proc
113else
114 $(Q)ln -fsn proc-$(PROCESSOR) include/asm-mn10300/proc
115endif
116 @touch $@
117
118CLEAN_FILES += include/asm-mn10300/proc include/asm-mn10300/.proc
119
120prepare: include/asm-mn10300/.proc
121
122# unit specific definitions
123include/asm-mn10300/.unit: $(wildcard include/config/unit/*.h) include/config/auto.conf
124 @echo ' SYMLINK include/asm-mn10300/unit -> include/asm-mn10300/unit-$(UNIT)'
125ifneq ($(KBUILD_SRC),)
126 $(Q)mkdir -p include/asm-mn10300
127 $(Q)ln -fsn $(srctree)/include/asm-mn10300/unit-$(UNIT) include/asm-mn10300/unit
128else
129 $(Q)ln -fsn unit-$(UNIT) include/asm-mn10300/unit
130endif
131 @touch $@
132
133CLEAN_FILES += include/asm-mn10300/unit include/asm-mn10300/.unit
134
135prepare: include/asm-mn10300/.unit
diff --git a/arch/mn10300/configs/asb2303_defconfig b/arch/mn10300/configs/asb2303_defconfig
index 3aa8906b3dea..3acce23708b0 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.25-rc2 3# Linux kernel version: 2.6.30-rc2
4# Tue Feb 19 18:52:24 2008 4# Sat Apr 18 11:13:22 2009
5# 5#
6CONFIG_MN10300=y 6CONFIG_MN10300=y
7CONFIG_AM33=y 7CONFIG_AM33=y
@@ -18,7 +18,6 @@ CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_BUG=y 18CONFIG_GENERIC_BUG=y
19CONFIG_QUICKLIST=y 19CONFIG_QUICKLIST=y
20CONFIG_ARCH_HAS_ILOG2_U32=y 20CONFIG_ARCH_HAS_ILOG2_U32=y
21# CONFIG_ARCH_SUPPORTS_AOUT is not set
22CONFIG_GENERIC_HARDIRQS=y 21CONFIG_GENERIC_HARDIRQS=y
23# CONFIG_HOTPLUG_CPU is not set 22# CONFIG_HOTPLUG_CPU is not set
24CONFIG_HZ=1000 23CONFIG_HZ=1000
@@ -40,52 +39,58 @@ CONFIG_BSD_PROCESS_ACCT=y
40# CONFIG_BSD_PROCESS_ACCT_V3 is not set 39# CONFIG_BSD_PROCESS_ACCT_V3 is not set
41# CONFIG_TASKSTATS is not set 40# CONFIG_TASKSTATS is not set
42# CONFIG_AUDIT is not set 41# CONFIG_AUDIT is not set
42
43#
44# RCU Subsystem
45#
46CONFIG_CLASSIC_RCU=y
47# CONFIG_TREE_RCU is not set
48# CONFIG_PREEMPT_RCU is not set
49# CONFIG_TREE_RCU_TRACE is not set
50# CONFIG_PREEMPT_RCU_TRACE is not set
43# CONFIG_IKCONFIG is not set 51# CONFIG_IKCONFIG is not set
44CONFIG_LOG_BUF_SHIFT=14 52CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_CGROUPS is not set
46# CONFIG_GROUP_SCHED is not set 53# CONFIG_GROUP_SCHED is not set
47# CONFIG_USER_SCHED is not set 54# CONFIG_CGROUPS is not set
48# CONFIG_CGROUP_SCHED is not set 55# CONFIG_SYSFS_DEPRECATED_V2 is not set
49# CONFIG_SYSFS_DEPRECATED is not set
50# CONFIG_RELAY is not set 56# CONFIG_RELAY is not set
51# CONFIG_NAMESPACES is not set 57# CONFIG_NAMESPACES is not set
52# CONFIG_BLK_DEV_INITRD is not set 58# CONFIG_BLK_DEV_INITRD is not set
53# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 59# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
54CONFIG_SYSCTL=y 60CONFIG_SYSCTL=y
61CONFIG_ANON_INODES=y
55CONFIG_EMBEDDED=y 62CONFIG_EMBEDDED=y
56CONFIG_SYSCTL_SYSCALL=y 63CONFIG_SYSCTL_SYSCALL=y
57# CONFIG_KALLSYMS is not set 64# CONFIG_KALLSYMS is not set
65CONFIG_STRIP_ASM_SYMS=y
58# CONFIG_HOTPLUG is not set 66# CONFIG_HOTPLUG is not set
59CONFIG_PRINTK=y 67CONFIG_PRINTK=y
60CONFIG_BUG=y 68CONFIG_BUG=y
61CONFIG_ELF_CORE=y 69CONFIG_ELF_CORE=y
62CONFIG_COMPAT_BRK=y
63CONFIG_BASE_FULL=y 70CONFIG_BASE_FULL=y
64CONFIG_FUTEX=y 71CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y
66CONFIG_EPOLL=y 72CONFIG_EPOLL=y
67CONFIG_SIGNALFD=y 73CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y 74CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y 75CONFIG_EVENTFD=y
70CONFIG_SHMEM=y 76CONFIG_SHMEM=y
77CONFIG_AIO=y
71# CONFIG_VM_EVENT_COUNTERS is not set 78# CONFIG_VM_EVENT_COUNTERS is not set
79CONFIG_COMPAT_BRK=y
72CONFIG_SLAB=y 80CONFIG_SLAB=y
73# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
75CONFIG_PROFILING=y 83CONFIG_PROFILING=y
76# CONFIG_MARKERS is not set 84# CONFIG_MARKERS is not set
77CONFIG_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
78# CONFIG_HAVE_OPROFILE is not set 86# CONFIG_SLOW_WORK is not set
79# CONFIG_HAVE_KPROBES is not set 87# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
80# CONFIG_PROC_PAGE_MONITOR is not set
81CONFIG_SLABINFO=y 88CONFIG_SLABINFO=y
82CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
83# CONFIG_TINY_SHMEM is not set
84CONFIG_BASE_SMALL=0 90CONFIG_BASE_SMALL=0
85# CONFIG_MODULES is not set 91# CONFIG_MODULES is not set
86# CONFIG_BLOCK is not set 92# CONFIG_BLOCK is not set
87CONFIG_CLASSIC_RCU=y 93# CONFIG_FREEZER is not set
88# CONFIG_PREEMPT_RCU is not set
89 94
90# 95#
91# Matsushita MN10300 system setup 96# Matsushita MN10300 system setup
@@ -107,7 +112,6 @@ CONFIG_INTERRUPT_VECTOR_BASE=0x90000000
107CONFIG_KERNEL_TEXT_ADDRESS=0x90001000 112CONFIG_KERNEL_TEXT_ADDRESS=0x90001000
108CONFIG_KERNEL_ZIMAGE_BASE_ADDRESS=0x90700000 113CONFIG_KERNEL_ZIMAGE_BASE_ADDRESS=0x90700000
109CONFIG_PREEMPT=y 114CONFIG_PREEMPT=y
110CONFIG_PREEMPT_BKL=y
111CONFIG_MN10300_CURRENT_IN_E2=y 115CONFIG_MN10300_CURRENT_IN_E2=y
112CONFIG_MN10300_USING_JTAG=y 116CONFIG_MN10300_USING_JTAG=y
113CONFIG_MN10300_RTC=y 117CONFIG_MN10300_RTC=y
@@ -135,13 +139,15 @@ CONFIG_FLATMEM_MANUAL=y
135# CONFIG_SPARSEMEM_MANUAL is not set 139# CONFIG_SPARSEMEM_MANUAL is not set
136CONFIG_FLATMEM=y 140CONFIG_FLATMEM=y
137CONFIG_FLAT_NODE_MEM_MAP=y 141CONFIG_FLAT_NODE_MEM_MAP=y
138# CONFIG_SPARSEMEM_STATIC is not set 142CONFIG_PAGEFLAGS_EXTENDED=y
139# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
140CONFIG_SPLIT_PTLOCK_CPUS=4 143CONFIG_SPLIT_PTLOCK_CPUS=4
141# CONFIG_RESOURCES_64BIT is not set 144# CONFIG_PHYS_ADDR_T_64BIT is not set
142CONFIG_ZONE_DMA_FLAG=0 145CONFIG_ZONE_DMA_FLAG=0
143CONFIG_NR_QUICK=1 146CONFIG_NR_QUICK=1
144CONFIG_VIRT_TO_BUS=y 147CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y
149CONFIG_HAVE_MLOCK=y
150CONFIG_HAVE_MLOCKED_PAGE_BIT=y
145 151
146# 152#
147# Power management options 153# Power management options
@@ -152,11 +158,9 @@ CONFIG_VIRT_TO_BUS=y
152# Executable formats 158# Executable formats
153# 159#
154CONFIG_BINFMT_ELF=y 160CONFIG_BINFMT_ELF=y
161# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
162# CONFIG_HAVE_AOUT is not set
155# CONFIG_BINFMT_MISC is not set 163# CONFIG_BINFMT_MISC is not set
156
157#
158# Networking
159#
160CONFIG_NET=y 164CONFIG_NET=y
161 165
162# 166#
@@ -194,8 +198,6 @@ CONFIG_TCP_CONG_CUBIC=y
194CONFIG_DEFAULT_TCP_CONG="cubic" 198CONFIG_DEFAULT_TCP_CONG="cubic"
195# CONFIG_TCP_MD5SIG is not set 199# CONFIG_TCP_MD5SIG is not set
196# CONFIG_IPV6 is not set 200# CONFIG_IPV6 is not set
197# CONFIG_INET6_XFRM_TUNNEL is not set
198# CONFIG_INET6_TUNNEL is not set
199# CONFIG_NETWORK_SECMARK is not set 201# CONFIG_NETWORK_SECMARK is not set
200# CONFIG_NETFILTER is not set 202# CONFIG_NETFILTER is not set
201# CONFIG_IP_DCCP is not set 203# CONFIG_IP_DCCP is not set
@@ -203,6 +205,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
203# CONFIG_TIPC is not set 205# CONFIG_TIPC is not set
204# CONFIG_ATM is not set 206# CONFIG_ATM is not set
205# CONFIG_BRIDGE is not set 207# CONFIG_BRIDGE is not set
208# CONFIG_NET_DSA is not set
206# CONFIG_VLAN_8021Q is not set 209# CONFIG_VLAN_8021Q is not set
207# CONFIG_DECNET is not set 210# CONFIG_DECNET is not set
208# CONFIG_LLC2 is not set 211# CONFIG_LLC2 is not set
@@ -212,7 +215,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
212# CONFIG_LAPB is not set 215# CONFIG_LAPB is not set
213# CONFIG_ECONET is not set 216# CONFIG_ECONET is not set
214# CONFIG_WAN_ROUTER is not set 217# CONFIG_WAN_ROUTER is not set
218# CONFIG_PHONET is not set
215# CONFIG_NET_SCHED is not set 219# CONFIG_NET_SCHED is not set
220# CONFIG_DCB is not set
216 221
217# 222#
218# Network testing 223# Network testing
@@ -223,14 +228,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
223# CONFIG_IRDA is not set 228# CONFIG_IRDA is not set
224# CONFIG_BT is not set 229# CONFIG_BT is not set
225# CONFIG_AF_RXRPC is not set 230# CONFIG_AF_RXRPC is not set
226 231# CONFIG_WIRELESS is not set
227# 232# CONFIG_WIMAX is not set
228# Wireless
229#
230# CONFIG_CFG80211 is not set
231# CONFIG_WIRELESS_EXT is not set
232# CONFIG_MAC80211 is not set
233# CONFIG_IEEE80211 is not set
234# CONFIG_RFKILL is not set 233# CONFIG_RFKILL is not set
235# CONFIG_NET_9P is not set 234# CONFIG_NET_9P is not set
236 235
@@ -255,6 +254,7 @@ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
255CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y 254CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
256# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set 255# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
257# CONFIG_MTD_CMDLINE_PARTS is not set 256# CONFIG_MTD_CMDLINE_PARTS is not set
257# CONFIG_MTD_AR7_PARTS is not set
258 258
259# 259#
260# User Modules And Translation Layers 260# User Modules And Translation Layers
@@ -297,9 +297,7 @@ CONFIG_MTD_CFI_UTIL=y
297# 297#
298# CONFIG_MTD_COMPLEX_MAPPINGS is not set 298# CONFIG_MTD_COMPLEX_MAPPINGS is not set
299CONFIG_MTD_PHYSMAP=y 299CONFIG_MTD_PHYSMAP=y
300CONFIG_MTD_PHYSMAP_START=0x8000000 300# CONFIG_MTD_PHYSMAP_COMPAT is not set
301CONFIG_MTD_PHYSMAP_LEN=0x0
302CONFIG_MTD_PHYSMAP_BANKWIDTH=2
303# CONFIG_MTD_PLATRAM is not set 301# CONFIG_MTD_PLATRAM is not set
304 302
305# 303#
@@ -319,14 +317,23 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
319# CONFIG_MTD_ONENAND is not set 317# CONFIG_MTD_ONENAND is not set
320 318
321# 319#
320# LPDDR flash memory drivers
321#
322# CONFIG_MTD_LPDDR is not set
323
324#
322# UBI - Unsorted block images 325# UBI - Unsorted block images
323# 326#
324# CONFIG_MTD_UBI is not set 327# CONFIG_MTD_UBI is not set
325# CONFIG_PARPORT is not set 328# CONFIG_PARPORT is not set
326CONFIG_MISC_DEVICES=y 329CONFIG_MISC_DEVICES=y
327# CONFIG_EEPROM_93CX6 is not set
328# CONFIG_ENCLOSURE_SERVICES is not set 330# CONFIG_ENCLOSURE_SERVICES is not set
329# CONFIG_HAVE_IDE is not set 331# CONFIG_C2PORT is not set
332
333#
334# EEPROM support
335#
336# CONFIG_EEPROM_93CX6 is not set
330 337
331# 338#
332# SCSI device support 339# SCSI device support
@@ -334,7 +341,7 @@ CONFIG_MISC_DEVICES=y
334# CONFIG_SCSI_DMA is not set 341# CONFIG_SCSI_DMA is not set
335# CONFIG_SCSI_NETLINK is not set 342# CONFIG_SCSI_NETLINK is not set
336CONFIG_NETDEVICES=y 343CONFIG_NETDEVICES=y
337# CONFIG_NETDEVICES_MULTIQUEUE is not set 344CONFIG_COMPAT_NET_DEV_OPS=y
338# CONFIG_DUMMY is not set 345# CONFIG_DUMMY is not set
339# CONFIG_BONDING is not set 346# CONFIG_BONDING is not set
340# CONFIG_MACVLAN is not set 347# CONFIG_MACVLAN is not set
@@ -345,10 +352,15 @@ CONFIG_NETDEVICES=y
345CONFIG_NET_ETHERNET=y 352CONFIG_NET_ETHERNET=y
346CONFIG_MII=y 353CONFIG_MII=y
347CONFIG_SMC91X=y 354CONFIG_SMC91X=y
355# CONFIG_ETHOC is not set
356# CONFIG_DNET is not set
348# CONFIG_IBM_NEW_EMAC_ZMII is not set 357# CONFIG_IBM_NEW_EMAC_ZMII is not set
349# CONFIG_IBM_NEW_EMAC_RGMII is not set 358# CONFIG_IBM_NEW_EMAC_RGMII is not set
350# CONFIG_IBM_NEW_EMAC_TAH is not set 359# CONFIG_IBM_NEW_EMAC_TAH is not set
351# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 360# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
361# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
362# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
363# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
352# CONFIG_B44 is not set 364# CONFIG_B44 is not set
353# CONFIG_NETDEV_1000 is not set 365# CONFIG_NETDEV_1000 is not set
354# CONFIG_NETDEV_10000 is not set 366# CONFIG_NETDEV_10000 is not set
@@ -358,6 +370,10 @@ CONFIG_SMC91X=y
358# 370#
359# CONFIG_WLAN_PRE80211 is not set 371# CONFIG_WLAN_PRE80211 is not set
360# CONFIG_WLAN_80211 is not set 372# CONFIG_WLAN_80211 is not set
373
374#
375# Enable WiMAX (Networking options) to see the WiMAX drivers
376#
361# CONFIG_WAN is not set 377# CONFIG_WAN is not set
362# CONFIG_PPP is not set 378# CONFIG_PPP is not set
363# CONFIG_SLIP is not set 379# CONFIG_SLIP is not set
@@ -382,6 +398,7 @@ CONFIG_SMC91X=y
382# Character devices 398# Character devices
383# 399#
384# CONFIG_VT is not set 400# CONFIG_VT is not set
401CONFIG_DEVKMEM=y
385# CONFIG_SERIAL_NONSTANDARD is not set 402# CONFIG_SERIAL_NONSTANDARD is not set
386 403
387# 404#
@@ -403,6 +420,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
403CONFIG_SERIAL_CORE=y 420CONFIG_SERIAL_CORE=y
404CONFIG_SERIAL_CORE_CONSOLE=y 421CONFIG_SERIAL_CORE_CONSOLE=y
405CONFIG_UNIX98_PTYS=y 422CONFIG_UNIX98_PTYS=y
423# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
406CONFIG_LEGACY_PTYS=y 424CONFIG_LEGACY_PTYS=y
407CONFIG_LEGACY_PTY_COUNT=256 425CONFIG_LEGACY_PTY_COUNT=256
408# CONFIG_IPMI_HANDLER is not set 426# CONFIG_IPMI_HANDLER is not set
@@ -411,34 +429,43 @@ CONFIG_RTC=y
411# CONFIG_R3964 is not set 429# CONFIG_R3964 is not set
412# CONFIG_TCG_TPM is not set 430# CONFIG_TCG_TPM is not set
413# CONFIG_I2C is not set 431# CONFIG_I2C is not set
414
415#
416# SPI support
417#
418# CONFIG_SPI is not set 432# CONFIG_SPI is not set
419# CONFIG_SPI_MASTER is not set
420# CONFIG_W1 is not set 433# CONFIG_W1 is not set
421# CONFIG_POWER_SUPPLY is not set 434# CONFIG_POWER_SUPPLY is not set
422# CONFIG_HWMON is not set 435# CONFIG_HWMON is not set
423# CONFIG_THERMAL is not set 436# CONFIG_THERMAL is not set
437# CONFIG_THERMAL_HWMON is not set
424# CONFIG_WATCHDOG is not set 438# CONFIG_WATCHDOG is not set
439CONFIG_SSB_POSSIBLE=y
425 440
426# 441#
427# Sonics Silicon Backplane 442# Sonics Silicon Backplane
428# 443#
429CONFIG_SSB_POSSIBLE=y
430# CONFIG_SSB is not set 444# CONFIG_SSB is not set
431 445
432# 446#
433# Multifunction device drivers 447# Multifunction device drivers
434# 448#
449# CONFIG_MFD_CORE is not set
435# CONFIG_MFD_SM501 is not set 450# CONFIG_MFD_SM501 is not set
451# CONFIG_HTC_PASIC3 is not set
452# CONFIG_MFD_TMIO is not set
453# CONFIG_REGULATOR is not set
436 454
437# 455#
438# Multimedia devices 456# Multimedia devices
439# 457#
458
459#
460# Multimedia core support
461#
440# CONFIG_VIDEO_DEV is not set 462# CONFIG_VIDEO_DEV is not set
441# CONFIG_DVB_CORE is not set 463# CONFIG_DVB_CORE is not set
464# CONFIG_VIDEO_MEDIA is not set
465
466#
467# Multimedia drivers
468#
442# CONFIG_DAB is not set 469# CONFIG_DAB is not set
443 470
444# 471#
@@ -453,21 +480,17 @@ CONFIG_SSB_POSSIBLE=y
453# Display device support 480# Display device support
454# 481#
455# CONFIG_DISPLAY_SUPPORT is not set 482# CONFIG_DISPLAY_SUPPORT is not set
456
457#
458# Sound
459#
460# CONFIG_SOUND is not set 483# CONFIG_SOUND is not set
461# CONFIG_USB_SUPPORT is not set 484# CONFIG_USB_SUPPORT is not set
462# CONFIG_MMC is not set 485# CONFIG_MMC is not set
463# CONFIG_MEMSTICK is not set 486# CONFIG_MEMSTICK is not set
464# CONFIG_NEW_LEDS is not set 487# CONFIG_NEW_LEDS is not set
488# CONFIG_ACCESSIBILITY is not set
465# CONFIG_RTC_CLASS is not set 489# CONFIG_RTC_CLASS is not set
466 490# CONFIG_DMADEVICES is not set
467# 491# CONFIG_AUXDISPLAY is not set
468# Userspace I/O
469#
470# CONFIG_UIO is not set 492# CONFIG_UIO is not set
493# CONFIG_STAGING is not set
471 494
472# 495#
473# File systems 496# File systems
@@ -481,20 +504,23 @@ CONFIG_INOTIFY_USER=y
481# CONFIG_FUSE_FS is not set 504# CONFIG_FUSE_FS is not set
482 505
483# 506#
507# Caches
508#
509# CONFIG_FSCACHE is not set
510
511#
484# Pseudo filesystems 512# Pseudo filesystems
485# 513#
486CONFIG_PROC_FS=y 514CONFIG_PROC_FS=y
487CONFIG_PROC_KCORE=y 515CONFIG_PROC_KCORE=y
488CONFIG_PROC_SYSCTL=y 516CONFIG_PROC_SYSCTL=y
517# CONFIG_PROC_PAGE_MONITOR is not set
489CONFIG_SYSFS=y 518CONFIG_SYSFS=y
490CONFIG_TMPFS=y 519CONFIG_TMPFS=y
491# CONFIG_TMPFS_POSIX_ACL is not set 520# CONFIG_TMPFS_POSIX_ACL is not set
492# CONFIG_HUGETLB_PAGE is not set 521# CONFIG_HUGETLB_PAGE is not set
493# CONFIG_CONFIGFS_FS is not set 522# CONFIG_CONFIGFS_FS is not set
494 523CONFIG_MISC_FILESYSTEMS=y
495#
496# Miscellaneous filesystems
497#
498CONFIG_JFFS2_FS=y 524CONFIG_JFFS2_FS=y
499CONFIG_JFFS2_FS_DEBUG=0 525CONFIG_JFFS2_FS_DEBUG=0
500CONFIG_JFFS2_FS_WRITEBUFFER=y 526CONFIG_JFFS2_FS_WRITEBUFFER=y
@@ -506,19 +532,17 @@ CONFIG_JFFS2_ZLIB=y
506# CONFIG_JFFS2_LZO is not set 532# CONFIG_JFFS2_LZO is not set
507CONFIG_JFFS2_RTIME=y 533CONFIG_JFFS2_RTIME=y
508# CONFIG_JFFS2_RUBIN is not set 534# CONFIG_JFFS2_RUBIN is not set
535# CONFIG_ROMFS_FS is not set
509CONFIG_NETWORK_FILESYSTEMS=y 536CONFIG_NETWORK_FILESYSTEMS=y
510CONFIG_NFS_FS=y 537CONFIG_NFS_FS=y
511CONFIG_NFS_V3=y 538CONFIG_NFS_V3=y
512# CONFIG_NFS_V3_ACL is not set 539# CONFIG_NFS_V3_ACL is not set
513# CONFIG_NFS_V4 is not set 540# CONFIG_NFS_V4 is not set
514# CONFIG_NFS_DIRECTIO is not set
515# CONFIG_NFSD is not set
516CONFIG_ROOT_NFS=y 541CONFIG_ROOT_NFS=y
517CONFIG_LOCKD=y 542CONFIG_LOCKD=y
518CONFIG_LOCKD_V4=y 543CONFIG_LOCKD_V4=y
519CONFIG_NFS_COMMON=y 544CONFIG_NFS_COMMON=y
520CONFIG_SUNRPC=y 545CONFIG_SUNRPC=y
521# CONFIG_SUNRPC_BIND34 is not set
522# CONFIG_RPCSEC_GSS_KRB5 is not set 546# CONFIG_RPCSEC_GSS_KRB5 is not set
523# CONFIG_RPCSEC_GSS_SPKM3 is not set 547# CONFIG_RPCSEC_GSS_SPKM3 is not set
524# CONFIG_SMB_FS is not set 548# CONFIG_SMB_FS is not set
@@ -535,12 +559,16 @@ CONFIG_SUNRPC=y
535# CONFIG_PRINTK_TIME is not set 559# CONFIG_PRINTK_TIME is not set
536CONFIG_ENABLE_WARN_DEPRECATED=y 560CONFIG_ENABLE_WARN_DEPRECATED=y
537CONFIG_ENABLE_MUST_CHECK=y 561CONFIG_ENABLE_MUST_CHECK=y
562CONFIG_FRAME_WARN=1024
538CONFIG_MAGIC_SYSRQ=y 563CONFIG_MAGIC_SYSRQ=y
539# CONFIG_UNUSED_SYMBOLS is not set 564# CONFIG_UNUSED_SYMBOLS is not set
540# CONFIG_DEBUG_FS is not set 565# CONFIG_DEBUG_FS is not set
541# CONFIG_HEADERS_CHECK is not set 566# CONFIG_HEADERS_CHECK is not set
542# CONFIG_DEBUG_KERNEL is not set 567# CONFIG_DEBUG_KERNEL is not set
543# CONFIG_DEBUG_BUGVERBOSE is not set 568# CONFIG_DEBUG_BUGVERBOSE is not set
569# CONFIG_DEBUG_MEMORY_INIT is not set
570# CONFIG_RCU_CPU_STALL_DETECTOR is not set
571# CONFIG_SYSCTL_SYSCALL_CHECK is not set
544# CONFIG_SAMPLES is not set 572# CONFIG_SAMPLES is not set
545 573
546# 574#
@@ -548,26 +576,26 @@ CONFIG_MAGIC_SYSRQ=y
548# 576#
549# CONFIG_KEYS is not set 577# CONFIG_KEYS is not set
550# CONFIG_SECURITY is not set 578# CONFIG_SECURITY is not set
579# CONFIG_SECURITYFS is not set
551# CONFIG_SECURITY_FILE_CAPABILITIES is not set 580# CONFIG_SECURITY_FILE_CAPABILITIES is not set
552# CONFIG_CRYPTO is not set 581# CONFIG_CRYPTO is not set
582# CONFIG_BINARY_PRINTF is not set
553 583
554# 584#
555# Library routines 585# Library routines
556# 586#
557CONFIG_BITREVERSE=y 587CONFIG_BITREVERSE=y
588CONFIG_GENERIC_FIND_LAST_BIT=y
558# CONFIG_CRC_CCITT is not set 589# CONFIG_CRC_CCITT is not set
559# CONFIG_CRC16 is not set 590# CONFIG_CRC16 is not set
591# CONFIG_CRC_T10DIF is not set
560# CONFIG_CRC_ITU_T is not set 592# CONFIG_CRC_ITU_T is not set
561CONFIG_CRC32=y 593CONFIG_CRC32=y
562# CONFIG_CRC7 is not set 594# CONFIG_CRC7 is not set
563# CONFIG_LIBCRC32C is not set 595# CONFIG_LIBCRC32C is not set
564CONFIG_ZLIB_INFLATE=y 596CONFIG_ZLIB_INFLATE=y
565CONFIG_ZLIB_DEFLATE=y 597CONFIG_ZLIB_DEFLATE=y
566CONFIG_PLIST=y
567CONFIG_HAS_IOMEM=y 598CONFIG_HAS_IOMEM=y
568CONFIG_HAS_IOPORT=y 599CONFIG_HAS_IOPORT=y
569CONFIG_HAS_DMA=y 600CONFIG_HAS_DMA=y
570 601CONFIG_NLATTR=y
571#
572# Profiling support
573#
diff --git a/include/asm-mn10300/Kbuild b/arch/mn10300/include/asm/Kbuild
index c68e1680da01..c68e1680da01 100644
--- a/include/asm-mn10300/Kbuild
+++ b/arch/mn10300/include/asm/Kbuild
diff --git a/include/asm-mn10300/atomic.h b/arch/mn10300/include/asm/atomic.h
index bc064825f9b1..bc064825f9b1 100644
--- a/include/asm-mn10300/atomic.h
+++ b/arch/mn10300/include/asm/atomic.h
diff --git a/include/asm-mn10300/auxvec.h b/arch/mn10300/include/asm/auxvec.h
index 4fdb60b2ae39..4fdb60b2ae39 100644
--- a/include/asm-mn10300/auxvec.h
+++ b/arch/mn10300/include/asm/auxvec.h
diff --git a/include/asm-mn10300/bitops.h b/arch/mn10300/include/asm/bitops.h
index 0b610f482abb..0b610f482abb 100644
--- a/include/asm-mn10300/bitops.h
+++ b/arch/mn10300/include/asm/bitops.h
diff --git a/include/asm-mn10300/bug.h b/arch/mn10300/include/asm/bug.h
index 4fcf3384e259..aa6a38886391 100644
--- a/include/asm-mn10300/bug.h
+++ b/arch/mn10300/include/asm/bug.h
@@ -11,10 +11,12 @@
11#ifndef _ASM_BUG_H 11#ifndef _ASM_BUG_H
12#define _ASM_BUG_H 12#define _ASM_BUG_H
13 13
14#ifdef CONFIG_BUG
15
14/* 16/*
15 * Tell the user there is some problem. 17 * Tell the user there is some problem.
16 */ 18 */
17#define _debug_bug_trap() \ 19#define BUG() \
18do { \ 20do { \
19 asm volatile( \ 21 asm volatile( \
20 " syscall 15 \n" \ 22 " syscall 15 \n" \
@@ -25,11 +27,11 @@ do { \
25 : \ 27 : \
26 : "i"(__FILE__), "i"(__LINE__) \ 28 : "i"(__FILE__), "i"(__LINE__) \
27 ); \ 29 ); \
28} while (0) 30} while (1)
29
30#define BUG() _debug_bug_trap()
31 31
32#define HAVE_ARCH_BUG 32#define HAVE_ARCH_BUG
33#endif /* CONFIG_BUG */
34
33#include <asm-generic/bug.h> 35#include <asm-generic/bug.h>
34 36
35#endif /* _ASM_BUG_H */ 37#endif /* _ASM_BUG_H */
diff --git a/include/asm-mn10300/bugs.h b/arch/mn10300/include/asm/bugs.h
index 31c8bc592b47..31c8bc592b47 100644
--- a/include/asm-mn10300/bugs.h
+++ b/arch/mn10300/include/asm/bugs.h
diff --git a/include/asm-mn10300/busctl-regs.h b/arch/mn10300/include/asm/busctl-regs.h
index 1632aef73401..1632aef73401 100644
--- a/include/asm-mn10300/busctl-regs.h
+++ b/arch/mn10300/include/asm/busctl-regs.h
diff --git a/include/asm-mn10300/byteorder.h b/arch/mn10300/include/asm/byteorder.h
index 5dd0bdd9feee..5dd0bdd9feee 100644
--- a/include/asm-mn10300/byteorder.h
+++ b/arch/mn10300/include/asm/byteorder.h
diff --git a/include/asm-mn10300/cache.h b/arch/mn10300/include/asm/cache.h
index 9e01122208a9..e03cfa2e997e 100644
--- a/include/asm-mn10300/cache.h
+++ b/arch/mn10300/include/asm/cache.h
@@ -13,7 +13,7 @@
13#define _ASM_CACHE_H 13#define _ASM_CACHE_H
14 14
15#include <asm/cpu-regs.h> 15#include <asm/cpu-regs.h>
16#include <asm/proc/cache.h> 16#include <proc/cache.h>
17 17
18#ifndef __ASSEMBLY__ 18#ifndef __ASSEMBLY__
19#define L1_CACHE_DISPARITY (L1_CACHE_NENTRIES * L1_CACHE_BYTES) 19#define L1_CACHE_DISPARITY (L1_CACHE_NENTRIES * L1_CACHE_BYTES)
diff --git a/include/asm-mn10300/cacheflush.h b/arch/mn10300/include/asm/cacheflush.h
index 2db746a251f8..2db746a251f8 100644
--- a/include/asm-mn10300/cacheflush.h
+++ b/arch/mn10300/include/asm/cacheflush.h
diff --git a/include/asm-mn10300/checksum.h b/arch/mn10300/include/asm/checksum.h
index 9fb2a8d8826a..9fb2a8d8826a 100644
--- a/include/asm-mn10300/checksum.h
+++ b/arch/mn10300/include/asm/checksum.h
diff --git a/include/asm-mn10300/cpu-regs.h b/arch/mn10300/include/asm/cpu-regs.h
index 757e9b5388ea..757e9b5388ea 100644
--- a/include/asm-mn10300/cpu-regs.h
+++ b/arch/mn10300/include/asm/cpu-regs.h
diff --git a/arch/mn10300/include/asm/cputime.h b/arch/mn10300/include/asm/cputime.h
new file mode 100644
index 000000000000..6d68ad7e0ea3
--- /dev/null
+++ b/arch/mn10300/include/asm/cputime.h
@@ -0,0 +1 @@
#include <asm-generic/cputime.h>
diff --git a/include/asm-mn10300/current.h b/arch/mn10300/include/asm/current.h
index ca6027d83743..ca6027d83743 100644
--- a/include/asm-mn10300/current.h
+++ b/arch/mn10300/include/asm/current.h
diff --git a/include/asm-mn10300/delay.h b/arch/mn10300/include/asm/delay.h
index 34517b359399..34517b359399 100644
--- a/include/asm-mn10300/delay.h
+++ b/arch/mn10300/include/asm/delay.h
diff --git a/include/asm-mn10300/device.h b/arch/mn10300/include/asm/device.h
index f0a4c256403b..f0a4c256403b 100644
--- a/include/asm-mn10300/device.h
+++ b/arch/mn10300/include/asm/device.h
diff --git a/include/asm-mn10300/div64.h b/arch/mn10300/include/asm/div64.h
index 3a8329b3e869..3a8329b3e869 100644
--- a/include/asm-mn10300/div64.h
+++ b/arch/mn10300/include/asm/div64.h
diff --git a/include/asm-mn10300/dma-mapping.h b/arch/mn10300/include/asm/dma-mapping.h
index ccae8f6c6326..ccae8f6c6326 100644
--- a/include/asm-mn10300/dma-mapping.h
+++ b/arch/mn10300/include/asm/dma-mapping.h
diff --git a/include/asm-mn10300/dma.h b/arch/mn10300/include/asm/dma.h
index 098df2e617ab..098df2e617ab 100644
--- a/include/asm-mn10300/dma.h
+++ b/arch/mn10300/include/asm/dma.h
diff --git a/include/asm-mn10300/dmactl-regs.h b/arch/mn10300/include/asm/dmactl-regs.h
index 58a199da0f4a..58a199da0f4a 100644
--- a/include/asm-mn10300/dmactl-regs.h
+++ b/arch/mn10300/include/asm/dmactl-regs.h
diff --git a/include/asm-mn10300/elf.h b/arch/mn10300/include/asm/elf.h
index bf09f8bb392e..bf09f8bb392e 100644
--- a/include/asm-mn10300/elf.h
+++ b/arch/mn10300/include/asm/elf.h
diff --git a/arch/mn10300/include/asm/emergency-restart.h b/arch/mn10300/include/asm/emergency-restart.h
new file mode 100644
index 000000000000..3711bd9d50bd
--- /dev/null
+++ b/arch/mn10300/include/asm/emergency-restart.h
@@ -0,0 +1 @@
#include <asm-generic/emergency-restart.h>
diff --git a/arch/mn10300/include/asm/errno.h b/arch/mn10300/include/asm/errno.h
new file mode 100644
index 000000000000..4c82b503d92f
--- /dev/null
+++ b/arch/mn10300/include/asm/errno.h
@@ -0,0 +1 @@
#include <asm-generic/errno.h>
diff --git a/include/asm-mn10300/exceptions.h b/arch/mn10300/include/asm/exceptions.h
index fa16466ef3f9..fa16466ef3f9 100644
--- a/include/asm-mn10300/exceptions.h
+++ b/arch/mn10300/include/asm/exceptions.h
diff --git a/include/asm-mn10300/fb.h b/arch/mn10300/include/asm/fb.h
index 697b24a91e1a..697b24a91e1a 100644
--- a/include/asm-mn10300/fb.h
+++ b/arch/mn10300/include/asm/fb.h
diff --git a/arch/mn10300/include/asm/fcntl.h b/arch/mn10300/include/asm/fcntl.h
new file mode 100644
index 000000000000..46ab12db5739
--- /dev/null
+++ b/arch/mn10300/include/asm/fcntl.h
@@ -0,0 +1 @@
#include <asm-generic/fcntl.h>
diff --git a/include/asm-mn10300/fpu.h b/arch/mn10300/include/asm/fpu.h
index 64a2b83a7a6a..64a2b83a7a6a 100644
--- a/include/asm-mn10300/fpu.h
+++ b/arch/mn10300/include/asm/fpu.h
diff --git a/include/asm-mn10300/frame.inc b/arch/mn10300/include/asm/frame.inc
index 5b1949bdf039..5b1949bdf039 100644
--- a/include/asm-mn10300/frame.inc
+++ b/arch/mn10300/include/asm/frame.inc
diff --git a/include/asm-mn10300/ftrace.h b/arch/mn10300/include/asm/ftrace.h
index 40a8c178f10d..40a8c178f10d 100644
--- a/include/asm-mn10300/ftrace.h
+++ b/arch/mn10300/include/asm/ftrace.h
diff --git a/arch/mn10300/include/asm/futex.h b/arch/mn10300/include/asm/futex.h
new file mode 100644
index 000000000000..0b745828f42b
--- /dev/null
+++ b/arch/mn10300/include/asm/futex.h
@@ -0,0 +1 @@
#include <asm-generic/futex.h>
diff --git a/include/asm-mn10300/gdb-stub.h b/arch/mn10300/include/asm/gdb-stub.h
index e5a6368559af..e5a6368559af 100644
--- a/include/asm-mn10300/gdb-stub.h
+++ b/arch/mn10300/include/asm/gdb-stub.h
diff --git a/include/asm-mn10300/hardirq.h b/arch/mn10300/include/asm/hardirq.h
index 54d950117674..54d950117674 100644
--- a/include/asm-mn10300/hardirq.h
+++ b/arch/mn10300/include/asm/hardirq.h
diff --git a/include/asm-mn10300/highmem.h b/arch/mn10300/include/asm/highmem.h
index 90f2abb04bfd..90f2abb04bfd 100644
--- a/include/asm-mn10300/highmem.h
+++ b/arch/mn10300/include/asm/highmem.h
diff --git a/include/asm-mn10300/hw_irq.h b/arch/mn10300/include/asm/hw_irq.h
index 70619901098e..70619901098e 100644
--- a/include/asm-mn10300/hw_irq.h
+++ b/arch/mn10300/include/asm/hw_irq.h
diff --git a/include/asm-mn10300/intctl-regs.h b/arch/mn10300/include/asm/intctl-regs.h
index ba544c796c5a..ba544c796c5a 100644
--- a/include/asm-mn10300/intctl-regs.h
+++ b/arch/mn10300/include/asm/intctl-regs.h
diff --git a/include/asm-mn10300/io.h b/arch/mn10300/include/asm/io.h
index c1a4119e6497..c1a4119e6497 100644
--- a/include/asm-mn10300/io.h
+++ b/arch/mn10300/include/asm/io.h
diff --git a/arch/mn10300/include/asm/ioctl.h b/arch/mn10300/include/asm/ioctl.h
new file mode 100644
index 000000000000..b279fe06dfe5
--- /dev/null
+++ b/arch/mn10300/include/asm/ioctl.h
@@ -0,0 +1 @@
#include <asm-generic/ioctl.h>
diff --git a/include/asm-mn10300/ioctls.h b/arch/mn10300/include/asm/ioctls.h
index dcbfb452974f..dcbfb452974f 100644
--- a/include/asm-mn10300/ioctls.h
+++ b/arch/mn10300/include/asm/ioctls.h
diff --git a/arch/mn10300/include/asm/ipc.h b/arch/mn10300/include/asm/ipc.h
new file mode 100644
index 000000000000..a46e3d9c2a3f
--- /dev/null
+++ b/arch/mn10300/include/asm/ipc.h
@@ -0,0 +1 @@
#include <asm-generic/ipc.h>
diff --git a/include/asm-mn10300/ipcbuf.h b/arch/mn10300/include/asm/ipcbuf.h
index f6f63d448272..f6f63d448272 100644
--- a/include/asm-mn10300/ipcbuf.h
+++ b/arch/mn10300/include/asm/ipcbuf.h
diff --git a/include/asm-mn10300/irq.h b/arch/mn10300/include/asm/irq.h
index 53b380116901..25c045d16d1c 100644
--- a/include/asm-mn10300/irq.h
+++ b/arch/mn10300/include/asm/irq.h
@@ -16,7 +16,7 @@
16 16
17#include <asm/intctl-regs.h> 17#include <asm/intctl-regs.h>
18#include <asm/reset-regs.h> 18#include <asm/reset-regs.h>
19#include <asm/proc/irq.h> 19#include <proc/irq.h>
20 20
21/* this number is used when no interrupt has been assigned */ 21/* this number is used when no interrupt has been assigned */
22#define NO_IRQ INT_MAX 22#define NO_IRQ INT_MAX
diff --git a/include/asm-mn10300/irq_regs.h b/arch/mn10300/include/asm/irq_regs.h
index a848cd232eb4..a848cd232eb4 100644
--- a/include/asm-mn10300/irq_regs.h
+++ b/arch/mn10300/include/asm/irq_regs.h
diff --git a/include/asm-mn10300/kdebug.h b/arch/mn10300/include/asm/kdebug.h
index 0f47e112190c..0f47e112190c 100644
--- a/include/asm-mn10300/kdebug.h
+++ b/arch/mn10300/include/asm/kdebug.h
diff --git a/include/asm-mn10300/kmap_types.h b/arch/mn10300/include/asm/kmap_types.h
index 3398f9f35603..3398f9f35603 100644
--- a/include/asm-mn10300/kmap_types.h
+++ b/arch/mn10300/include/asm/kmap_types.h
diff --git a/include/asm-mn10300/kprobes.h b/arch/mn10300/include/asm/kprobes.h
index c800b590183a..c800b590183a 100644
--- a/include/asm-mn10300/kprobes.h
+++ b/arch/mn10300/include/asm/kprobes.h
diff --git a/include/asm-mn10300/linkage.h b/arch/mn10300/include/asm/linkage.h
index dda3002a5dfa..dda3002a5dfa 100644
--- a/include/asm-mn10300/linkage.h
+++ b/arch/mn10300/include/asm/linkage.h
diff --git a/arch/mn10300/include/asm/local.h b/arch/mn10300/include/asm/local.h
new file mode 100644
index 000000000000..c11c530f74d0
--- /dev/null
+++ b/arch/mn10300/include/asm/local.h
@@ -0,0 +1 @@
#include <asm-generic/local.h>
diff --git a/include/asm-mn10300/mc146818rtc.h b/arch/mn10300/include/asm/mc146818rtc.h
index df6bc6e0e8c6..df6bc6e0e8c6 100644
--- a/include/asm-mn10300/mc146818rtc.h
+++ b/arch/mn10300/include/asm/mc146818rtc.h
diff --git a/include/asm-mn10300/mman.h b/arch/mn10300/include/asm/mman.h
index b7986b65addf..b7986b65addf 100644
--- a/include/asm-mn10300/mman.h
+++ b/arch/mn10300/include/asm/mman.h
diff --git a/include/asm-mn10300/mmu.h b/arch/mn10300/include/asm/mmu.h
index 2d2d097e7309..2d2d097e7309 100644
--- a/include/asm-mn10300/mmu.h
+++ b/arch/mn10300/include/asm/mmu.h
diff --git a/include/asm-mn10300/mmu_context.h b/arch/mn10300/include/asm/mmu_context.h
index a9e2e34f69b0..a9e2e34f69b0 100644
--- a/include/asm-mn10300/mmu_context.h
+++ b/arch/mn10300/include/asm/mmu_context.h
diff --git a/include/asm-mn10300/module.h b/arch/mn10300/include/asm/module.h
index 5d7057d01494..5d7057d01494 100644
--- a/include/asm-mn10300/module.h
+++ b/arch/mn10300/include/asm/module.h
diff --git a/include/asm-mn10300/msgbuf.h b/arch/mn10300/include/asm/msgbuf.h
index 8b602450cc4a..8b602450cc4a 100644
--- a/include/asm-mn10300/msgbuf.h
+++ b/arch/mn10300/include/asm/msgbuf.h
diff --git a/include/asm-mn10300/mutex.h b/arch/mn10300/include/asm/mutex.h
index 84f5490c6fb4..84f5490c6fb4 100644
--- a/include/asm-mn10300/mutex.h
+++ b/arch/mn10300/include/asm/mutex.h
diff --git a/include/asm-mn10300/nmi.h b/arch/mn10300/include/asm/nmi.h
index f3671cbbc117..f3671cbbc117 100644
--- a/include/asm-mn10300/nmi.h
+++ b/arch/mn10300/include/asm/nmi.h
diff --git a/include/asm-mn10300/page.h b/arch/mn10300/include/asm/page.h
index 8288e124165b..8288e124165b 100644
--- a/include/asm-mn10300/page.h
+++ b/arch/mn10300/include/asm/page.h
diff --git a/include/asm-mn10300/page_offset.h b/arch/mn10300/include/asm/page_offset.h
index 8eb5b16ad86b..8eb5b16ad86b 100644
--- a/include/asm-mn10300/page_offset.h
+++ b/arch/mn10300/include/asm/page_offset.h
diff --git a/include/asm-mn10300/param.h b/arch/mn10300/include/asm/param.h
index 789b1df41fcb..789b1df41fcb 100644
--- a/include/asm-mn10300/param.h
+++ b/arch/mn10300/include/asm/param.h
diff --git a/include/asm-mn10300/pci.h b/arch/mn10300/include/asm/pci.h
index 0517b45313d8..0517b45313d8 100644
--- a/include/asm-mn10300/pci.h
+++ b/arch/mn10300/include/asm/pci.h
diff --git a/arch/mn10300/include/asm/percpu.h b/arch/mn10300/include/asm/percpu.h
new file mode 100644
index 000000000000..06a959d67234
--- /dev/null
+++ b/arch/mn10300/include/asm/percpu.h
@@ -0,0 +1 @@
#include <asm-generic/percpu.h>
diff --git a/include/asm-mn10300/pgalloc.h b/arch/mn10300/include/asm/pgalloc.h
index ec057e1bd4cf..ec057e1bd4cf 100644
--- a/include/asm-mn10300/pgalloc.h
+++ b/arch/mn10300/include/asm/pgalloc.h
diff --git a/include/asm-mn10300/pgtable.h b/arch/mn10300/include/asm/pgtable.h
index 6dc30fc827c4..6dc30fc827c4 100644
--- a/include/asm-mn10300/pgtable.h
+++ b/arch/mn10300/include/asm/pgtable.h
diff --git a/include/asm-mn10300/pio-regs.h b/arch/mn10300/include/asm/pio-regs.h
index 96bc8182d0ba..96bc8182d0ba 100644
--- a/include/asm-mn10300/pio-regs.h
+++ b/arch/mn10300/include/asm/pio-regs.h
diff --git a/arch/mn10300/include/asm/poll.h b/arch/mn10300/include/asm/poll.h
new file mode 100644
index 000000000000..c98509d3149e
--- /dev/null
+++ b/arch/mn10300/include/asm/poll.h
@@ -0,0 +1 @@
#include <asm-generic/poll.h>
diff --git a/include/asm-mn10300/posix_types.h b/arch/mn10300/include/asm/posix_types.h
index 077567c37798..077567c37798 100644
--- a/include/asm-mn10300/posix_types.h
+++ b/arch/mn10300/include/asm/posix_types.h
diff --git a/include/asm-mn10300/processor.h b/arch/mn10300/include/asm/processor.h
index 73239271873d..73239271873d 100644
--- a/include/asm-mn10300/processor.h
+++ b/arch/mn10300/include/asm/processor.h
diff --git a/include/asm-mn10300/ptrace.h b/arch/mn10300/include/asm/ptrace.h
index 7b06cc623d8b..7b06cc623d8b 100644
--- a/include/asm-mn10300/ptrace.h
+++ b/arch/mn10300/include/asm/ptrace.h
diff --git a/include/asm-mn10300/reset-regs.h b/arch/mn10300/include/asm/reset-regs.h
index 174523d50132..174523d50132 100644
--- a/include/asm-mn10300/reset-regs.h
+++ b/arch/mn10300/include/asm/reset-regs.h
diff --git a/arch/mn10300/include/asm/resource.h b/arch/mn10300/include/asm/resource.h
new file mode 100644
index 000000000000..04bc4db8921b
--- /dev/null
+++ b/arch/mn10300/include/asm/resource.h
@@ -0,0 +1 @@
#include <asm-generic/resource.h>
diff --git a/include/asm-mn10300/rtc-regs.h b/arch/mn10300/include/asm/rtc-regs.h
index c42deefaec11..c42deefaec11 100644
--- a/include/asm-mn10300/rtc-regs.h
+++ b/arch/mn10300/include/asm/rtc-regs.h
diff --git a/include/asm-mn10300/rtc.h b/arch/mn10300/include/asm/rtc.h
index c295194cc703..c295194cc703 100644
--- a/include/asm-mn10300/rtc.h
+++ b/arch/mn10300/include/asm/rtc.h
diff --git a/include/asm-mn10300/scatterlist.h b/arch/mn10300/include/asm/scatterlist.h
index 67535901b9ff..67535901b9ff 100644
--- a/include/asm-mn10300/scatterlist.h
+++ b/arch/mn10300/include/asm/scatterlist.h
diff --git a/include/asm-mn10300/sections.h b/arch/mn10300/include/asm/sections.h
index 2b8c5160388f..2b8c5160388f 100644
--- a/include/asm-mn10300/sections.h
+++ b/arch/mn10300/include/asm/sections.h
diff --git a/include/asm-mn10300/sembuf.h b/arch/mn10300/include/asm/sembuf.h
index 301f3f9d8aa9..301f3f9d8aa9 100644
--- a/include/asm-mn10300/sembuf.h
+++ b/arch/mn10300/include/asm/sembuf.h
diff --git a/include/asm-mn10300/serial-regs.h b/arch/mn10300/include/asm/serial-regs.h
index 6498469e93ac..6498469e93ac 100644
--- a/include/asm-mn10300/serial-regs.h
+++ b/arch/mn10300/include/asm/serial-regs.h
diff --git a/include/asm-mn10300/serial.h b/arch/mn10300/include/asm/serial.h
index 99785a9deadb..a29445cddd6f 100644
--- a/include/asm-mn10300/serial.h
+++ b/arch/mn10300/include/asm/serial.h
@@ -33,4 +33,4 @@
33#define RS_TABLE_SIZE 33#define RS_TABLE_SIZE
34#endif 34#endif
35 35
36#include <asm/unit/serial.h> 36#include <unit/serial.h>
diff --git a/include/asm-mn10300/setup.h b/arch/mn10300/include/asm/setup.h
index 08356c832283..08356c832283 100644
--- a/include/asm-mn10300/setup.h
+++ b/arch/mn10300/include/asm/setup.h
diff --git a/include/asm-mn10300/shmbuf.h b/arch/mn10300/include/asm/shmbuf.h
index 8f300cc35d6c..8f300cc35d6c 100644
--- a/include/asm-mn10300/shmbuf.h
+++ b/arch/mn10300/include/asm/shmbuf.h
diff --git a/include/asm-mn10300/shmparam.h b/arch/mn10300/include/asm/shmparam.h
index ab666ed1a070..ab666ed1a070 100644
--- a/include/asm-mn10300/shmparam.h
+++ b/arch/mn10300/include/asm/shmparam.h
diff --git a/include/asm-mn10300/sigcontext.h b/arch/mn10300/include/asm/sigcontext.h
index 4de3afff4ad7..4de3afff4ad7 100644
--- a/include/asm-mn10300/sigcontext.h
+++ b/arch/mn10300/include/asm/sigcontext.h
diff --git a/include/asm-mn10300/siginfo.h b/arch/mn10300/include/asm/siginfo.h
index 0815d29d82e5..0815d29d82e5 100644
--- a/include/asm-mn10300/siginfo.h
+++ b/arch/mn10300/include/asm/siginfo.h
diff --git a/include/asm-mn10300/signal.h b/arch/mn10300/include/asm/signal.h
index e98817cec5f7..e98817cec5f7 100644
--- a/include/asm-mn10300/signal.h
+++ b/arch/mn10300/include/asm/signal.h
diff --git a/include/asm-mn10300/smp.h b/arch/mn10300/include/asm/smp.h
index 4eb8c61b7dab..4eb8c61b7dab 100644
--- a/include/asm-mn10300/smp.h
+++ b/arch/mn10300/include/asm/smp.h
diff --git a/include/asm-mn10300/socket.h b/arch/mn10300/include/asm/socket.h
index fb5daf438ec9..fb5daf438ec9 100644
--- a/include/asm-mn10300/socket.h
+++ b/arch/mn10300/include/asm/socket.h
diff --git a/include/asm-mn10300/sockios.h b/arch/mn10300/include/asm/sockios.h
index b03043a1c564..b03043a1c564 100644
--- a/include/asm-mn10300/sockios.h
+++ b/arch/mn10300/include/asm/sockios.h
diff --git a/include/asm-mn10300/spinlock.h b/arch/mn10300/include/asm/spinlock.h
index 4bf9c8b169e0..4bf9c8b169e0 100644
--- a/include/asm-mn10300/spinlock.h
+++ b/arch/mn10300/include/asm/spinlock.h
diff --git a/include/asm-mn10300/stat.h b/arch/mn10300/include/asm/stat.h
index 63ff8371cf2c..63ff8371cf2c 100644
--- a/include/asm-mn10300/stat.h
+++ b/arch/mn10300/include/asm/stat.h
diff --git a/arch/mn10300/include/asm/statfs.h b/arch/mn10300/include/asm/statfs.h
new file mode 100644
index 000000000000..0b91fe198c20
--- /dev/null
+++ b/arch/mn10300/include/asm/statfs.h
@@ -0,0 +1 @@
#include <asm-generic/statfs.h>
diff --git a/include/asm-mn10300/string.h b/arch/mn10300/include/asm/string.h
index 47dbd4346c32..47dbd4346c32 100644
--- a/include/asm-mn10300/string.h
+++ b/arch/mn10300/include/asm/string.h
diff --git a/include/asm-mn10300/swab.h b/arch/mn10300/include/asm/swab.h
index bd818a820ca8..bd818a820ca8 100644
--- a/include/asm-mn10300/swab.h
+++ b/arch/mn10300/include/asm/swab.h
diff --git a/include/asm-mn10300/system.h b/arch/mn10300/include/asm/system.h
index 8214fb7e7fe4..8214fb7e7fe4 100644
--- a/include/asm-mn10300/system.h
+++ b/arch/mn10300/include/asm/system.h
diff --git a/include/asm-mn10300/termbits.h b/arch/mn10300/include/asm/termbits.h
index eb2b0dc1f696..eb2b0dc1f696 100644
--- a/include/asm-mn10300/termbits.h
+++ b/arch/mn10300/include/asm/termbits.h
diff --git a/include/asm-mn10300/termios.h b/arch/mn10300/include/asm/termios.h
index dd7cf617e118..dd7cf617e118 100644
--- a/include/asm-mn10300/termios.h
+++ b/arch/mn10300/include/asm/termios.h
diff --git a/include/asm-mn10300/thread_info.h b/arch/mn10300/include/asm/thread_info.h
index 78a3881f3c12..78a3881f3c12 100644
--- a/include/asm-mn10300/thread_info.h
+++ b/arch/mn10300/include/asm/thread_info.h
diff --git a/include/asm-mn10300/timer-regs.h b/arch/mn10300/include/asm/timer-regs.h
index 1d883b7f94ab..1d883b7f94ab 100644
--- a/include/asm-mn10300/timer-regs.h
+++ b/arch/mn10300/include/asm/timer-regs.h
diff --git a/include/asm-mn10300/timex.h b/arch/mn10300/include/asm/timex.h
index 3944277dab67..8d031f9e117d 100644
--- a/include/asm-mn10300/timex.h
+++ b/arch/mn10300/include/asm/timex.h
@@ -12,7 +12,7 @@
12#define _ASM_TIMEX_H 12#define _ASM_TIMEX_H
13 13
14#include <asm/hardirq.h> 14#include <asm/hardirq.h>
15#include <asm/unit/timex.h> 15#include <unit/timex.h>
16 16
17#define TICK_SIZE (tick_nsec / 1000) 17#define TICK_SIZE (tick_nsec / 1000)
18 18
diff --git a/include/asm-mn10300/tlb.h b/arch/mn10300/include/asm/tlb.h
index 65d232b96613..65d232b96613 100644
--- a/include/asm-mn10300/tlb.h
+++ b/arch/mn10300/include/asm/tlb.h
diff --git a/include/asm-mn10300/tlbflush.h b/arch/mn10300/include/asm/tlbflush.h
index e0239865abcb..e0239865abcb 100644
--- a/include/asm-mn10300/tlbflush.h
+++ b/arch/mn10300/include/asm/tlbflush.h
diff --git a/include/asm-mn10300/topology.h b/arch/mn10300/include/asm/topology.h
index 5428f333a02c..5428f333a02c 100644
--- a/include/asm-mn10300/topology.h
+++ b/arch/mn10300/include/asm/topology.h
diff --git a/include/asm-mn10300/types.h b/arch/mn10300/include/asm/types.h
index 7b9f01042fd4..7b9f01042fd4 100644
--- a/include/asm-mn10300/types.h
+++ b/arch/mn10300/include/asm/types.h
diff --git a/include/asm-mn10300/uaccess.h b/arch/mn10300/include/asm/uaccess.h
index 8a3a4dd55763..8a3a4dd55763 100644
--- a/include/asm-mn10300/uaccess.h
+++ b/arch/mn10300/include/asm/uaccess.h
diff --git a/include/asm-mn10300/ucontext.h b/arch/mn10300/include/asm/ucontext.h
index fcab5c1d8e18..fcab5c1d8e18 100644
--- a/include/asm-mn10300/ucontext.h
+++ b/arch/mn10300/include/asm/ucontext.h
diff --git a/include/asm-mn10300/unaligned.h b/arch/mn10300/include/asm/unaligned.h
index 0df671318ae4..0df671318ae4 100644
--- a/include/asm-mn10300/unaligned.h
+++ b/arch/mn10300/include/asm/unaligned.h
diff --git a/include/asm-mn10300/unistd.h b/arch/mn10300/include/asm/unistd.h
index 543a4f98695d..fef5b434dadc 100644
--- a/include/asm-mn10300/unistd.h
+++ b/arch/mn10300/include/asm/unistd.h
@@ -344,6 +344,8 @@
344#define __NR_dup3 331 344#define __NR_dup3 331
345#define __NR_pipe2 332 345#define __NR_pipe2 332
346#define __NR_inotify_init1 333 346#define __NR_inotify_init1 333
347#define __NR_preadv 334
348#define __NR_pwritev 335
347 349
348#ifdef __KERNEL__ 350#ifdef __KERNEL__
349 351
diff --git a/include/asm-mn10300/user.h b/arch/mn10300/include/asm/user.h
index e1193908b78c..e1193908b78c 100644
--- a/include/asm-mn10300/user.h
+++ b/arch/mn10300/include/asm/user.h
diff --git a/include/asm-mn10300/vga.h b/arch/mn10300/include/asm/vga.h
index 0163e50a3459..0163e50a3459 100644
--- a/include/asm-mn10300/vga.h
+++ b/arch/mn10300/include/asm/vga.h
diff --git a/arch/mn10300/include/asm/xor.h b/arch/mn10300/include/asm/xor.h
new file mode 100644
index 000000000000..c82eb12a5b18
--- /dev/null
+++ b/arch/mn10300/include/asm/xor.h
@@ -0,0 +1 @@
#include <asm-generic/xor.h>
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
index ceeaaaa359e2..3dc3e462f92a 100644
--- a/arch/mn10300/kernel/entry.S
+++ b/arch/mn10300/kernel/entry.S
@@ -20,7 +20,7 @@
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/busctl-regs.h> 21#include <asm/busctl-regs.h>
22#include <asm/timer-regs.h> 22#include <asm/timer-regs.h>
23#include <asm/unit/leds.h> 23#include <unit/leds.h>
24#include <asm/page.h> 24#include <asm/page.h>
25#include <asm/pgtable.h> 25#include <asm/pgtable.h>
26#include <asm/errno.h> 26#include <asm/errno.h>
@@ -723,6 +723,8 @@ ENTRY(sys_call_table)
723 .long sys_dup3 723 .long sys_dup3
724 .long sys_pipe2 724 .long sys_pipe2
725 .long sys_inotify_init1 725 .long sys_inotify_init1
726 .long sys_preadv
727 .long sys_pwritev /* 335 */
726 728
727 729
728nr_syscalls=(.-sys_call_table)/4 730nr_syscalls=(.-sys_call_table)/4
diff --git a/arch/mn10300/kernel/gdb-io-serial-low.S b/arch/mn10300/kernel/gdb-io-serial-low.S
index c68dcd052201..4998b24f5d3a 100644
--- a/arch/mn10300/kernel/gdb-io-serial-low.S
+++ b/arch/mn10300/kernel/gdb-io-serial-low.S
@@ -18,7 +18,7 @@
18#include <asm/thread_info.h> 18#include <asm/thread_info.h>
19#include <asm/frame.inc> 19#include <asm/frame.inc>
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/unit/serial.h> 21#include <unit/serial.h>
22 22
23 .text 23 .text
24 24
diff --git a/arch/mn10300/kernel/gdb-io-serial.c b/arch/mn10300/kernel/gdb-io-serial.c
index 11584c51acd9..ae663dc717e9 100644
--- a/arch/mn10300/kernel/gdb-io-serial.c
+++ b/arch/mn10300/kernel/gdb-io-serial.c
@@ -22,7 +22,7 @@
22#include <asm/gdb-stub.h> 22#include <asm/gdb-stub.h>
23#include <asm/exceptions.h> 23#include <asm/exceptions.h>
24#include <asm/serial-regs.h> 24#include <asm/serial-regs.h>
25#include <asm/unit/serial.h> 25#include <unit/serial.h>
26 26
27/* 27/*
28 * initialise the GDB stub 28 * initialise the GDB stub
diff --git a/arch/mn10300/kernel/gdb-io-ttysm-low.S b/arch/mn10300/kernel/gdb-io-ttysm-low.S
index 677c7876307c..060b7cca735d 100644
--- a/arch/mn10300/kernel/gdb-io-ttysm-low.S
+++ b/arch/mn10300/kernel/gdb-io-ttysm-low.S
@@ -18,7 +18,7 @@
18#include <asm/cpu-regs.h> 18#include <asm/cpu-regs.h>
19#include <asm/frame.inc> 19#include <asm/frame.inc>
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/unit/serial.h> 21#include <unit/serial.h>
22#include "mn10300-serial.h" 22#include "mn10300-serial.h"
23 23
24 .text 24 .text
diff --git a/arch/mn10300/kernel/gdb-io-ttysm.c b/arch/mn10300/kernel/gdb-io-ttysm.c
index e94c25e8ca05..a560bbc3137d 100644
--- a/arch/mn10300/kernel/gdb-io-ttysm.c
+++ b/arch/mn10300/kernel/gdb-io-ttysm.c
@@ -20,7 +20,7 @@
20#include <asm/system.h> 20#include <asm/system.h>
21#include <asm/gdb-stub.h> 21#include <asm/gdb-stub.h>
22#include <asm/exceptions.h> 22#include <asm/exceptions.h>
23#include <asm/unit/clock.h> 23#include <unit/clock.h>
24#include "mn10300-serial.h" 24#include "mn10300-serial.h"
25 25
26#if defined(CONFIG_GDBSTUB_ON_TTYSM0) 26#if defined(CONFIG_GDBSTUB_ON_TTYSM0)
diff --git a/arch/mn10300/kernel/gdb-stub.c b/arch/mn10300/kernel/gdb-stub.c
index 0ea7482c1522..41b11706c8ed 100644
--- a/arch/mn10300/kernel/gdb-stub.c
+++ b/arch/mn10300/kernel/gdb-stub.c
@@ -136,8 +136,8 @@
136#include <asm/cacheflush.h> 136#include <asm/cacheflush.h>
137#include <asm/serial-regs.h> 137#include <asm/serial-regs.h>
138#include <asm/busctl-regs.h> 138#include <asm/busctl-regs.h>
139#include <asm/unit/leds.h> 139#include <unit/leds.h>
140#include <asm/unit/serial.h> 140#include <unit/serial.h>
141 141
142/* define to use F7F7 rather than FF which is subverted by JTAG debugger */ 142/* define to use F7F7 rather than FF which is subverted by JTAG debugger */
143#undef GDBSTUB_USE_F7F7_AS_BREAKPOINT 143#undef GDBSTUB_USE_F7F7_AS_BREAKPOINT
diff --git a/arch/mn10300/kernel/head.S b/arch/mn10300/kernel/head.S
index 606bd8c6758d..14f27f3bfaf4 100644
--- a/arch/mn10300/kernel/head.S
+++ b/arch/mn10300/kernel/head.S
@@ -9,6 +9,7 @@
9 * 2 of the Licence, or (at your option) any later version. 9 * 2 of the Licence, or (at your option) any later version.
10 */ 10 */
11 11
12#include <linux/init.h>
12#include <linux/threads.h> 13#include <linux/threads.h>
13#include <linux/linkage.h> 14#include <linux/linkage.h>
14#include <linux/serial_reg.h> 15#include <linux/serial_reg.h>
@@ -17,9 +18,9 @@
17#include <asm/pgtable.h> 18#include <asm/pgtable.h>
18#include <asm/frame.inc> 19#include <asm/frame.inc>
19#include <asm/param.h> 20#include <asm/param.h>
20#include <asm/unit/serial.h> 21#include <unit/serial.h>
21 22
22 .section .text.head,"ax" 23 __HEAD
23 24
24############################################################################### 25###############################################################################
25# 26#
diff --git a/arch/mn10300/kernel/irq.c b/arch/mn10300/kernel/irq.c
index 50fdb5c16e0c..4c3c58ef5cda 100644
--- a/arch/mn10300/kernel/irq.c
+++ b/arch/mn10300/kernel/irq.c
@@ -140,7 +140,7 @@ void __init init_IRQ(void)
140 int irq; 140 int irq;
141 141
142 for (irq = 0; irq < NR_IRQS; irq++) 142 for (irq = 0; irq < NR_IRQS; irq++)
143 if (irq_desc[irq].chip == &no_irq_type) 143 if (irq_desc[irq].chip == &no_irq_chip)
144 /* due to the PIC latching interrupt requests, even 144 /* due to the PIC latching interrupt requests, even
145 * when the IRQ is disabled, IRQ_PENDING is superfluous 145 * when the IRQ is disabled, IRQ_PENDING is superfluous
146 * and we can use handle_level_irq() for edge-triggered 146 * and we can use handle_level_irq() for edge-triggered
diff --git a/arch/mn10300/kernel/mn10300-serial-low.S b/arch/mn10300/kernel/mn10300-serial-low.S
index ef3f4c1df2a4..224485388228 100644
--- a/arch/mn10300/kernel/mn10300-serial-low.S
+++ b/arch/mn10300/kernel/mn10300-serial-low.S
@@ -18,8 +18,8 @@
18#include <asm/cpu-regs.h> 18#include <asm/cpu-regs.h>
19#include <asm/frame.inc> 19#include <asm/frame.inc>
20#include <asm/timer-regs.h> 20#include <asm/timer-regs.h>
21#include <asm/proc/cache.h> 21#include <proc/cache.h>
22#include <asm/unit/timex.h> 22#include <unit/timex.h>
23#include "mn10300-serial.h" 23#include "mn10300-serial.h"
24 24
25#define SCxCTR 0x00 25#define SCxCTR 0x00
diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c
index 59b9c4bf9583..2fd59664d00a 100644
--- a/arch/mn10300/kernel/mn10300-serial.c
+++ b/arch/mn10300/kernel/mn10300-serial.c
@@ -41,7 +41,7 @@ static const char serial_revdate[] = "2007-11-06";
41#include <asm/irq.h> 41#include <asm/irq.h>
42#include <asm/bitops.h> 42#include <asm/bitops.h>
43#include <asm/serial-regs.h> 43#include <asm/serial-regs.h>
44#include <asm/unit/timex.h> 44#include <unit/timex.h>
45#include "mn10300-serial.h" 45#include "mn10300-serial.h"
46 46
47static inline __attribute__((format(printf, 1, 2))) 47static inline __attribute__((format(printf, 1, 2)))
diff --git a/arch/mn10300/kernel/mn10300-watchdog.c b/arch/mn10300/kernel/mn10300-watchdog.c
index 2e370d88a87a..f362d9d138f1 100644
--- a/arch/mn10300/kernel/mn10300-watchdog.c
+++ b/arch/mn10300/kernel/mn10300-watchdog.c
@@ -25,7 +25,7 @@
25#include <asm/div64.h> 25#include <asm/div64.h>
26#include <asm/smp.h> 26#include <asm/smp.h>
27#include <asm/gdb-stub.h> 27#include <asm/gdb-stub.h>
28#include <asm/proc/clock.h> 28#include <proc/clock.h>
29 29
30static DEFINE_SPINLOCK(watchdog_print_lock); 30static DEFINE_SPINLOCK(watchdog_print_lock);
31static unsigned int watchdog; 31static unsigned int watchdog;
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c
index e1d88ab51008..79890edfd67a 100644
--- a/arch/mn10300/kernel/setup.c
+++ b/arch/mn10300/kernel/setup.c
@@ -30,7 +30,7 @@
30#include <asm/setup.h> 30#include <asm/setup.h>
31#include <asm/io.h> 31#include <asm/io.h>
32#include <asm/smp.h> 32#include <asm/smp.h>
33#include <asm/proc/proc.h> 33#include <proc/proc.h>
34#include <asm/busctl-regs.h> 34#include <asm/busctl-regs.h>
35#include <asm/fpu.h> 35#include <asm/fpu.h>
36#include <asm/sections.h> 36#include <asm/sections.h>
@@ -136,10 +136,6 @@ void __init setup_arch(char **cmdline_p)
136 data_resource.start = virt_to_bus(&_etext); 136 data_resource.start = virt_to_bus(&_etext);
137 data_resource.end = virt_to_bus(&_edata)-1; 137 data_resource.end = virt_to_bus(&_edata)-1;
138 138
139#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
140#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
141#define PFN_PHYS(x) ((x) << PAGE_SHIFT)
142
143 start_pfn = (CONFIG_KERNEL_RAM_BASE_ADDRESS >> PAGE_SHIFT); 139 start_pfn = (CONFIG_KERNEL_RAM_BASE_ADDRESS >> PAGE_SHIFT);
144 kstart_pfn = PFN_UP(__pa(&_text)); 140 kstart_pfn = PFN_UP(__pa(&_text));
145 free_pfn = PFN_UP(__pa(&_end)); 141 free_pfn = PFN_UP(__pa(&_end));
diff --git a/arch/mn10300/kernel/traps.c b/arch/mn10300/kernel/traps.c
index fcb9a03d46a8..681ad8c9e4fb 100644
--- a/arch/mn10300/kernel/traps.c
+++ b/arch/mn10300/kernel/traps.c
@@ -37,7 +37,7 @@
37#include <asm/cacheflush.h> 37#include <asm/cacheflush.h>
38#include <asm/cpu-regs.h> 38#include <asm/cpu-regs.h>
39#include <asm/busctl-regs.h> 39#include <asm/busctl-regs.h>
40#include <asm/unit/leds.h> 40#include <unit/leds.h>
41#include <asm/fpu.h> 41#include <asm/fpu.h>
42#include <asm/gdb-stub.h> 42#include <asm/gdb-stub.h>
43#include <asm/sections.h> 43#include <asm/sections.h>
diff --git a/arch/mn10300/kernel/vmlinux.lds.S b/arch/mn10300/kernel/vmlinux.lds.S
index b8259668f7dc..24de6b90f401 100644
--- a/arch/mn10300/kernel/vmlinux.lds.S
+++ b/arch/mn10300/kernel/vmlinux.lds.S
@@ -27,10 +27,7 @@ SECTIONS
27 _stext = .; 27 _stext = .;
28 _text = .; /* Text and read-only data */ 28 _text = .; /* Text and read-only data */
29 .text : { 29 .text : {
30 *( 30 HEAD_TEXT
31 .text.head
32 .text
33 )
34 TEXT_TEXT 31 TEXT_TEXT
35 SCHED_TEXT 32 SCHED_TEXT
36 LOCK_TEXT 33 LOCK_TEXT
diff --git a/arch/mn10300/oprofile/Kconfig b/arch/mn10300/oprofile/Kconfig
deleted file mode 100644
index 19d37730b664..000000000000
--- a/arch/mn10300/oprofile/Kconfig
+++ /dev/null
@@ -1,23 +0,0 @@
1
2menu "Profiling support"
3 depends on EXPERIMENTAL
4
5config PROFILING
6 bool "Profiling support (EXPERIMENTAL)"
7 help
8 Say Y here to enable the extended profiling support mechanisms used
9 by profilers such as OProfile.
10
11
12config OPROFILE
13 tristate "OProfile system profiling (EXPERIMENTAL)"
14 depends on PROFILING
15 help
16 OProfile is a profiling system capable of profiling the
17 whole system, include the kernel, kernel modules, libraries,
18 and applications.
19
20 If unsure, say N.
21
22endmenu
23
diff --git a/include/asm-mn10300/proc-mn103e010/cache.h b/arch/mn10300/proc-mn103e010/include/proc/cache.h
index bdc1f9a59b4c..bdc1f9a59b4c 100644
--- a/include/asm-mn10300/proc-mn103e010/cache.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/cache.h
diff --git a/include/asm-mn10300/proc-mn103e010/clock.h b/arch/mn10300/proc-mn103e010/include/proc/clock.h
index caf998350633..aa23e147d620 100644
--- a/include/asm-mn10300/proc-mn103e010/clock.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/clock.h
@@ -11,7 +11,7 @@
11#ifndef _ASM_PROC_CLOCK_H 11#ifndef _ASM_PROC_CLOCK_H
12#define _ASM_PROC_CLOCK_H 12#define _ASM_PROC_CLOCK_H
13 13
14#include <asm/unit/clock.h> 14#include <unit/clock.h>
15 15
16#define MN10300_WDCLK MN10300_IOCLK 16#define MN10300_WDCLK MN10300_IOCLK
17 17
diff --git a/include/asm-mn10300/proc-mn103e010/irq.h b/arch/mn10300/proc-mn103e010/include/proc/irq.h
index aa6ee8f98b1b..aa6ee8f98b1b 100644
--- a/include/asm-mn10300/proc-mn103e010/irq.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/irq.h
diff --git a/include/asm-mn10300/proc-mn103e010/proc.h b/arch/mn10300/proc-mn103e010/include/proc/proc.h
index 22a2b93f70b7..22a2b93f70b7 100644
--- a/include/asm-mn10300/proc-mn103e010/proc.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/proc.h
diff --git a/include/asm-mn10300/unit-asb2303/clock.h b/arch/mn10300/unit-asb2303/include/unit/clock.h
index 8b450e920af1..8b450e920af1 100644
--- a/include/asm-mn10300/unit-asb2303/clock.h
+++ b/arch/mn10300/unit-asb2303/include/unit/clock.h
diff --git a/include/asm-mn10300/unit-asb2303/leds.h b/arch/mn10300/unit-asb2303/include/unit/leds.h
index 3a7543ea7b5c..3a7543ea7b5c 100644
--- a/include/asm-mn10300/unit-asb2303/leds.h
+++ b/arch/mn10300/unit-asb2303/include/unit/leds.h
diff --git a/include/asm-mn10300/unit-asb2303/serial.h b/arch/mn10300/unit-asb2303/include/unit/serial.h
index 0d55cf5896ac..047566cd2e36 100644
--- a/include/asm-mn10300/unit-asb2303/serial.h
+++ b/arch/mn10300/unit-asb2303/include/unit/serial.h
@@ -13,7 +13,7 @@
13#define _ASM_UNIT_SERIAL_H 13#define _ASM_UNIT_SERIAL_H
14 14
15#include <asm/cpu-regs.h> 15#include <asm/cpu-regs.h>
16#include <asm/proc/irq.h> 16#include <proc/irq.h>
17#include <linux/serial_reg.h> 17#include <linux/serial_reg.h>
18 18
19#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000 19#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000
diff --git a/include/asm-mn10300/unit-asb2303/smc91111.h b/arch/mn10300/unit-asb2303/include/unit/smc91111.h
index dd456e9c513f..dd456e9c513f 100644
--- a/include/asm-mn10300/unit-asb2303/smc91111.h
+++ b/arch/mn10300/unit-asb2303/include/unit/smc91111.h
diff --git a/include/asm-mn10300/unit-asb2303/timex.h b/arch/mn10300/unit-asb2303/include/unit/timex.h
index 7e54b0cfdd03..f206b63c95b4 100644
--- a/include/asm-mn10300/unit-asb2303/timex.h
+++ b/arch/mn10300/unit-asb2303/include/unit/timex.h
@@ -16,7 +16,7 @@
16#endif /* __ASSEMBLY__ */ 16#endif /* __ASSEMBLY__ */
17 17
18#include <asm/timer-regs.h> 18#include <asm/timer-regs.h>
19#include <asm/unit/clock.h> 19#include <unit/clock.h>
20 20
21/* 21/*
22 * jiffies counter specifications 22 * jiffies counter specifications
diff --git a/arch/mn10300/unit-asb2303/leds.c b/arch/mn10300/unit-asb2303/leds.c
index cd4bc78ccfc8..c03839357a14 100644
--- a/arch/mn10300/unit-asb2303/leds.c
+++ b/arch/mn10300/unit-asb2303/leds.c
@@ -16,7 +16,7 @@
16#include <asm/processor.h> 16#include <asm/processor.h>
17#include <asm/intctl-regs.h> 17#include <asm/intctl-regs.h>
18#include <asm/rtc-regs.h> 18#include <asm/rtc-regs.h>
19#include <asm/unit/leds.h> 19#include <unit/leds.h>
20 20
21#if 0 21#if 0
22static const u8 asb2303_led_hex_tbl[16] = { 22static const u8 asb2303_led_hex_tbl[16] = {
diff --git a/arch/mn10300/unit-asb2303/smc91111.c b/arch/mn10300/unit-asb2303/smc91111.c
index 30875dd65631..43c246439413 100644
--- a/arch/mn10300/unit-asb2303/smc91111.c
+++ b/arch/mn10300/unit-asb2303/smc91111.c
@@ -18,7 +18,7 @@
18#include <asm/timex.h> 18#include <asm/timex.h>
19#include <asm/processor.h> 19#include <asm/processor.h>
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/unit/smc91111.h> 21#include <unit/smc91111.h>
22 22
23static struct resource smc91c111_resources[] = { 23static struct resource smc91c111_resources[] = {
24 [0] = { 24 [0] = {
diff --git a/include/asm-mn10300/unit-asb2305/clock.h b/arch/mn10300/unit-asb2305/include/unit/clock.h
index 7d514841ffda..7d514841ffda 100644
--- a/include/asm-mn10300/unit-asb2305/clock.h
+++ b/arch/mn10300/unit-asb2305/include/unit/clock.h
diff --git a/include/asm-mn10300/unit-asb2305/leds.h b/arch/mn10300/unit-asb2305/include/unit/leds.h
index bc471f617fd1..bc471f617fd1 100644
--- a/include/asm-mn10300/unit-asb2305/leds.h
+++ b/arch/mn10300/unit-asb2305/include/unit/leds.h
diff --git a/include/asm-mn10300/unit-asb2305/serial.h b/arch/mn10300/unit-asb2305/include/unit/serial.h
index 73d31d67bb71..3bfc90938787 100644
--- a/include/asm-mn10300/unit-asb2305/serial.h
+++ b/arch/mn10300/unit-asb2305/include/unit/serial.h
@@ -12,7 +12,7 @@
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/cpu-regs.h>
15#include <asm/proc/irq.h> 15#include <proc/irq.h>
16#include <linux/serial_reg.h> 16#include <linux/serial_reg.h>
17 17
18#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000 18#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000
diff --git a/include/asm-mn10300/unit-asb2305/timex.h b/arch/mn10300/unit-asb2305/include/unit/timex.h
index 10e1bfe34463..a71c49aa85eb 100644
--- a/include/asm-mn10300/unit-asb2305/timex.h
+++ b/arch/mn10300/unit-asb2305/include/unit/timex.h
@@ -16,7 +16,7 @@
16#endif /* __ASSEMBLY__ */ 16#endif /* __ASSEMBLY__ */
17 17
18#include <asm/cpu/timer-regs.h> 18#include <asm/cpu/timer-regs.h>
19#include <asm/unit/clock.h> 19#include <unit/clock.h>
20 20
21/* 21/*
22 * jiffies counter specifications 22 * jiffies counter specifications
diff --git a/arch/mn10300/unit-asb2305/leds.c b/arch/mn10300/unit-asb2305/leds.c
index e99dcc9cee1a..d345ff9042d5 100644
--- a/arch/mn10300/unit-asb2305/leds.c
+++ b/arch/mn10300/unit-asb2305/leds.c
@@ -15,7 +15,7 @@
15#include <asm/processor.h> 15#include <asm/processor.h>
16#include <asm/cpu/intctl-regs.h> 16#include <asm/cpu/intctl-regs.h>
17#include <asm/cpu/rtc-regs.h> 17#include <asm/cpu/rtc-regs.h>
18#include <asm/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] = {
21 0x80, 0xf2, 0x48, 0x60, 0x32, 0x24, 0x04, 0xf0, 21 0x80, 0xf2, 0x48, 0x60, 0x32, 0x24, 0x04, 0xf0,
diff --git a/arch/mn10300/unit-asb2305/unit-init.c b/arch/mn10300/unit-asb2305/unit-init.c
index 72812a9439ac..1c452cc3f6e9 100644
--- a/arch/mn10300/unit-asb2305/unit-init.c
+++ b/arch/mn10300/unit-asb2305/unit-init.c
@@ -18,7 +18,7 @@
18#include <asm/cpu/intctl-regs.h> 18#include <asm/cpu/intctl-regs.h>
19#include <asm/cpu/rtc-regs.h> 19#include <asm/cpu/rtc-regs.h>
20#include <asm/cpu/serial-regs.h> 20#include <asm/cpu/serial-regs.h>
21#include <asm/unit/serial.h> 21#include <unit/serial.h>
22 22
23/* 23/*
24 * initialise some of the unit hardware before gdbstub is set up 24 * initialise some of the unit hardware before gdbstub is set up
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 5b50e1ac6179..4c7804551362 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -462,7 +462,7 @@ config PPC_64K_PAGES
462 462
463config PPC_256K_PAGES 463config PPC_256K_PAGES
464 bool "256k page size" if 44x 464 bool "256k page size" if 44x
465 depends on !STDBINUTILS && (!SHMEM || BROKEN) 465 depends on !STDBINUTILS
466 help 466 help
467 Make the page size 256k. 467 Make the page size 256k.
468 468
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index c63e3566479e..d13cb11ce623 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -293,4 +293,43 @@
293 0x02000000 0 0xa0000000 0xa0000000 0 0x10000000 293 0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
294 0x01000000 0 0x00000000 0xb0000000 0 0x01000000>; 294 0x01000000 0 0x00000000 0xb0000000 0 0x01000000>;
295 }; 295 };
296
297 localbus {
298 compatible = "fsl,mpc5200b-lpb","fsl,mpc5200-lpb","simple-bus";
299
300 #address-cells = <2>;
301 #size-cells = <1>;
302
303 ranges = <0 0 0xfe000000 0x02000000>;
304
305 flash@0,0 {
306 compatible = "cfi-flash";
307 reg = <0 0 0x02000000>;
308 bank-width = <1>;
309 #size-cells = <1>;
310 #address-cells = <1>;
311
312 partition@0 {
313 label = "kernel";
314 reg = <0x00000000 0x00200000>;
315 };
316 partition@200000 {
317 label = "rootfs";
318 reg = <0x00200000 0x01d00000>;
319 };
320 partition@1f00000 {
321 label = "u-boot";
322 reg = <0x01f00000 0x00060000>;
323 };
324 partition@1f60000 {
325 label = "u-boot-env";
326 reg = <0x01f60000 0x00020000>;
327 };
328 partition@1f80000 {
329 label = "dtb";
330 reg = <0x01f80000 0x00080000>;
331 };
332 };
333 };
334
296}; 335};
diff --git a/arch/powerpc/boot/dts/tqm8540.dts b/arch/powerpc/boot/dts/tqm8540.dts
index 231bae756637..b6f1fc6eb960 100644
--- a/arch/powerpc/boot/dts/tqm8540.dts
+++ b/arch/powerpc/boot/dts/tqm8540.dts
@@ -84,9 +84,9 @@
84 interrupt-parent = <&mpic>; 84 interrupt-parent = <&mpic>;
85 dfsrr; 85 dfsrr;
86 86
87 dtt@50 { 87 dtt@48 {
88 compatible = "national,lm75"; 88 compatible = "national,lm75";
89 reg = <0x50>; 89 reg = <0x48>;
90 }; 90 };
91 91
92 rtc@68 { 92 rtc@68 {
diff --git a/arch/powerpc/boot/dts/tqm8541.dts b/arch/powerpc/boot/dts/tqm8541.dts
index 4356a1f08295..fa6a3d54a8a5 100644
--- a/arch/powerpc/boot/dts/tqm8541.dts
+++ b/arch/powerpc/boot/dts/tqm8541.dts
@@ -83,9 +83,9 @@
83 interrupt-parent = <&mpic>; 83 interrupt-parent = <&mpic>;
84 dfsrr; 84 dfsrr;
85 85
86 dtt@50 { 86 dtt@48 {
87 compatible = "national,lm75"; 87 compatible = "national,lm75";
88 reg = <0x50>; 88 reg = <0x48>;
89 }; 89 };
90 90
91 rtc@68 { 91 rtc@68 {
diff --git a/arch/powerpc/boot/dts/tqm8548-bigflash.dts b/arch/powerpc/boot/dts/tqm8548-bigflash.dts
index 19aa72301c83..00f7ed7a2455 100644
--- a/arch/powerpc/boot/dts/tqm8548-bigflash.dts
+++ b/arch/powerpc/boot/dts/tqm8548-bigflash.dts
@@ -85,9 +85,9 @@
85 interrupt-parent = <&mpic>; 85 interrupt-parent = <&mpic>;
86 dfsrr; 86 dfsrr;
87 87
88 dtt@50 { 88 dtt@48 {
89 compatible = "national,lm75"; 89 compatible = "national,lm75";
90 reg = <0x50>; 90 reg = <0x48>;
91 }; 91 };
92 92
93 rtc@68 { 93 rtc@68 {
@@ -247,7 +247,7 @@
247 interrupts = <31 2 32 2 33 2>; 247 interrupts = <31 2 32 2 33 2>;
248 interrupt-parent = <&mpic>; 248 interrupt-parent = <&mpic>;
249 tbi-handle = <&tbi2>; 249 tbi-handle = <&tbi2>;
250 phy-handle = <&phy3>; 250 phy-handle = <&phy4>;
251 251
252 mdio@520 { 252 mdio@520 {
253 #address-cells = <1>; 253 #address-cells = <1>;
@@ -275,7 +275,7 @@
275 interrupts = <37 2 38 2 39 2>; 275 interrupts = <37 2 38 2 39 2>;
276 interrupt-parent = <&mpic>; 276 interrupt-parent = <&mpic>;
277 tbi-handle = <&tbi3>; 277 tbi-handle = <&tbi3>;
278 phy-handle = <&phy4>; 278 phy-handle = <&phy5>;
279 279
280 mdio@520 { 280 mdio@520 {
281 #address-cells = <1>; 281 #address-cells = <1>;
diff --git a/arch/powerpc/boot/dts/tqm8548.dts b/arch/powerpc/boot/dts/tqm8548.dts
index 49145a04fc6c..673e4a778ac8 100644
--- a/arch/powerpc/boot/dts/tqm8548.dts
+++ b/arch/powerpc/boot/dts/tqm8548.dts
@@ -85,9 +85,9 @@
85 interrupt-parent = <&mpic>; 85 interrupt-parent = <&mpic>;
86 dfsrr; 86 dfsrr;
87 87
88 dtt@50 { 88 dtt@48 {
89 compatible = "national,lm75"; 89 compatible = "national,lm75";
90 reg = <0x50>; 90 reg = <0x48>;
91 }; 91 };
92 92
93 rtc@68 { 93 rtc@68 {
@@ -247,7 +247,7 @@
247 interrupts = <31 2 32 2 33 2>; 247 interrupts = <31 2 32 2 33 2>;
248 interrupt-parent = <&mpic>; 248 interrupt-parent = <&mpic>;
249 tbi-handle = <&tbi2>; 249 tbi-handle = <&tbi2>;
250 phy-handle = <&phy3>; 250 phy-handle = <&phy4>;
251 251
252 mdio@520 { 252 mdio@520 {
253 #address-cells = <1>; 253 #address-cells = <1>;
@@ -275,7 +275,7 @@
275 interrupts = <37 2 38 2 39 2>; 275 interrupts = <37 2 38 2 39 2>;
276 interrupt-parent = <&mpic>; 276 interrupt-parent = <&mpic>;
277 tbi-handle = <&tbi3>; 277 tbi-handle = <&tbi3>;
278 phy-handle = <&phy4>; 278 phy-handle = <&phy5>;
279 279
280 mdio@520 { 280 mdio@520 {
281 #address-cells = <1>; 281 #address-cells = <1>;
diff --git a/arch/powerpc/boot/dts/tqm8555.dts b/arch/powerpc/boot/dts/tqm8555.dts
index 06d366ebbda3..6a99f1eef7ad 100644
--- a/arch/powerpc/boot/dts/tqm8555.dts
+++ b/arch/powerpc/boot/dts/tqm8555.dts
@@ -83,9 +83,9 @@
83 interrupt-parent = <&mpic>; 83 interrupt-parent = <&mpic>;
84 dfsrr; 84 dfsrr;
85 85
86 dtt@50 { 86 dtt@48 {
87 compatible = "national,lm75"; 87 compatible = "national,lm75";
88 reg = <0x50>; 88 reg = <0x48>;
89 }; 89 };
90 90
91 rtc@68 { 91 rtc@68 {
diff --git a/arch/powerpc/boot/dts/tqm8560.dts b/arch/powerpc/boot/dts/tqm8560.dts
index feff915e0492..b6c2d71defd3 100644
--- a/arch/powerpc/boot/dts/tqm8560.dts
+++ b/arch/powerpc/boot/dts/tqm8560.dts
@@ -85,9 +85,9 @@
85 interrupt-parent = <&mpic>; 85 interrupt-parent = <&mpic>;
86 dfsrr; 86 dfsrr;
87 87
88 dtt@50 { 88 dtt@48 {
89 compatible = "national,lm75"; 89 compatible = "national,lm75";
90 reg = <0x50>; 90 reg = <0x48>;
91 }; 91 };
92 92
93 rtc@68 { 93 rtc@68 {
diff --git a/arch/powerpc/configs/52xx/cm5200_defconfig b/arch/powerpc/configs/52xx/cm5200_defconfig
index 1239c6132b4a..3838b77b8116 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.29-rc2 3# Linux kernel version: 2.6.30-rc2
4# Mon Jan 26 21:41:58 2009 4# Sat Apr 18 00:47:44 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -14,6 +14,7 @@ CONFIG_6xx=y
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
17CONFIG_PPC_FPU=y 18CONFIG_PPC_FPU=y
18# CONFIG_ALTIVEC is not set 19# CONFIG_ALTIVEC is not set
19CONFIG_PPC_STD_MMU=y 20CONFIG_PPC_STD_MMU=y
@@ -54,6 +55,7 @@ CONFIG_GENERIC_BUG=y
54CONFIG_DEFAULT_UIMAGE=y 55CONFIG_DEFAULT_UIMAGE=y
55# CONFIG_PPC_DCR_NATIVE is not set 56# CONFIG_PPC_DCR_NATIVE is not set
56# CONFIG_PPC_DCR_MMIO is not set 57# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
58 60
59# 61#
@@ -94,19 +96,22 @@ CONFIG_SYSFS_DEPRECATED_V2=y
94# CONFIG_NAMESPACES is not set 96# CONFIG_NAMESPACES is not set
95CONFIG_BLK_DEV_INITRD=y 97CONFIG_BLK_DEV_INITRD=y
96CONFIG_INITRAMFS_SOURCE="" 98CONFIG_INITRAMFS_SOURCE=""
99CONFIG_RD_GZIP=y
100# CONFIG_RD_BZIP2 is not set
101# CONFIG_RD_LZMA is not set
97# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 102# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
98CONFIG_SYSCTL=y 103CONFIG_SYSCTL=y
104CONFIG_ANON_INODES=y
99CONFIG_EMBEDDED=y 105CONFIG_EMBEDDED=y
100# CONFIG_SYSCTL_SYSCALL is not set 106# CONFIG_SYSCTL_SYSCALL is not set
101# CONFIG_KALLSYMS is not set 107# CONFIG_KALLSYMS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
102CONFIG_HOTPLUG=y 109CONFIG_HOTPLUG=y
103CONFIG_PRINTK=y 110CONFIG_PRINTK=y
104CONFIG_BUG=y 111CONFIG_BUG=y
105CONFIG_ELF_CORE=y 112CONFIG_ELF_CORE=y
106CONFIG_COMPAT_BRK=y
107CONFIG_BASE_FULL=y 113CONFIG_BASE_FULL=y
108CONFIG_FUTEX=y 114CONFIG_FUTEX=y
109CONFIG_ANON_INODES=y
110# CONFIG_EPOLL is not set 115# CONFIG_EPOLL is not set
111CONFIG_SIGNALFD=y 116CONFIG_SIGNALFD=y
112CONFIG_TIMERFD=y 117CONFIG_TIMERFD=y
@@ -115,10 +120,12 @@ CONFIG_SHMEM=y
115CONFIG_AIO=y 120CONFIG_AIO=y
116CONFIG_VM_EVENT_COUNTERS=y 121CONFIG_VM_EVENT_COUNTERS=y
117CONFIG_SLUB_DEBUG=y 122CONFIG_SLUB_DEBUG=y
123CONFIG_COMPAT_BRK=y
118# CONFIG_SLAB is not set 124# CONFIG_SLAB is not set
119CONFIG_SLUB=y 125CONFIG_SLUB=y
120# CONFIG_SLOB is not set 126# CONFIG_SLOB is not set
121# CONFIG_PROFILING is not set 127# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
122CONFIG_HAVE_OPROFILE=y 129CONFIG_HAVE_OPROFILE=y
123CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 130CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
124CONFIG_HAVE_IOREMAP_PROT=y 131CONFIG_HAVE_IOREMAP_PROT=y
@@ -126,6 +133,7 @@ CONFIG_HAVE_KPROBES=y
126CONFIG_HAVE_KRETPROBES=y 133CONFIG_HAVE_KRETPROBES=y
127CONFIG_HAVE_ARCH_TRACEHOOK=y 134CONFIG_HAVE_ARCH_TRACEHOOK=y
128CONFIG_HAVE_CLK=y 135CONFIG_HAVE_CLK=y
136# CONFIG_SLOW_WORK is not set
129# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 137# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
130CONFIG_SLABINFO=y 138CONFIG_SLABINFO=y
131CONFIG_RT_MUTEXES=y 139CONFIG_RT_MUTEXES=y
@@ -133,7 +141,6 @@ CONFIG_BASE_SMALL=0
133# CONFIG_MODULES is not set 141# CONFIG_MODULES is not set
134CONFIG_BLOCK=y 142CONFIG_BLOCK=y
135# CONFIG_LBD is not set 143# CONFIG_LBD is not set
136# CONFIG_BLK_DEV_IO_TRACE is not set
137# CONFIG_BLK_DEV_BSG is not set 144# CONFIG_BLK_DEV_BSG is not set
138# CONFIG_BLK_DEV_INTEGRITY is not set 145# CONFIG_BLK_DEV_INTEGRITY is not set
139 146
@@ -154,8 +161,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
154# 161#
155# Platform support 162# Platform support
156# 163#
157CONFIG_PPC_MULTIPLATFORM=y
158CONFIG_CLASSIC32=y
159# CONFIG_PPC_CHRP is not set 164# CONFIG_PPC_CHRP is not set
160# CONFIG_MPC5121_ADS is not set 165# CONFIG_MPC5121_ADS is not set
161# CONFIG_MPC5121_GENERIC is not set 166# CONFIG_MPC5121_GENERIC is not set
@@ -163,6 +168,7 @@ CONFIG_PPC_MPC52xx=y
163CONFIG_PPC_MPC5200_SIMPLE=y 168CONFIG_PPC_MPC5200_SIMPLE=y
164# CONFIG_PPC_EFIKA is not set 169# CONFIG_PPC_EFIKA is not set
165# CONFIG_PPC_LITE5200 is not set 170# CONFIG_PPC_LITE5200 is not set
171# CONFIG_PPC_MEDIA5200 is not set
166# CONFIG_PPC_MPC5200_BUGFIX is not set 172# CONFIG_PPC_MPC5200_BUGFIX is not set
167# CONFIG_PPC_MPC5200_GPIO is not set 173# CONFIG_PPC_MPC5200_GPIO is not set
168# CONFIG_PPC_PMAC is not set 174# CONFIG_PPC_PMAC is not set
@@ -173,6 +179,8 @@ CONFIG_PPC_MPC5200_SIMPLE=y
173# CONFIG_PPC_83xx is not set 179# CONFIG_PPC_83xx is not set
174# CONFIG_PPC_86xx is not set 180# CONFIG_PPC_86xx is not set
175# CONFIG_EMBEDDED6xx is not set 181# CONFIG_EMBEDDED6xx is not set
182# CONFIG_AMIGAONE is not set
183CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
176# CONFIG_IPIC is not set 184# CONFIG_IPIC is not set
177# CONFIG_MPIC is not set 185# CONFIG_MPIC is not set
178# CONFIG_MPIC_WEIRD is not set 186# CONFIG_MPIC_WEIRD is not set
@@ -232,9 +240,12 @@ CONFIG_ZONE_DMA_FLAG=1
232CONFIG_BOUNCE=y 240CONFIG_BOUNCE=y
233CONFIG_VIRT_TO_BUS=y 241CONFIG_VIRT_TO_BUS=y
234CONFIG_UNEVICTABLE_LRU=y 242CONFIG_UNEVICTABLE_LRU=y
243CONFIG_HAVE_MLOCK=y
244CONFIG_HAVE_MLOCKED_PAGE_BIT=y
235CONFIG_PPC_4K_PAGES=y 245CONFIG_PPC_4K_PAGES=y
236# CONFIG_PPC_16K_PAGES is not set 246# CONFIG_PPC_16K_PAGES is not set
237# CONFIG_PPC_64K_PAGES is not set 247# CONFIG_PPC_64K_PAGES is not set
248# CONFIG_PPC_256K_PAGES is not set
238CONFIG_FORCE_MAX_ZONEORDER=11 249CONFIG_FORCE_MAX_ZONEORDER=11
239CONFIG_PROC_DEVICETREE=y 250CONFIG_PROC_DEVICETREE=y
240# CONFIG_CMDLINE_BOOL is not set 251# CONFIG_CMDLINE_BOOL is not set
@@ -275,7 +286,6 @@ CONFIG_NET=y
275# 286#
276# Networking options 287# Networking options
277# 288#
278CONFIG_COMPAT_NET_DEV_OPS=y
279CONFIG_PACKET=y 289CONFIG_PACKET=y
280# CONFIG_PACKET_MMAP is not set 290# CONFIG_PACKET_MMAP is not set
281CONFIG_UNIX=y 291CONFIG_UNIX=y
@@ -331,6 +341,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
331# CONFIG_LAPB is not set 341# CONFIG_LAPB is not set
332# CONFIG_ECONET is not set 342# CONFIG_ECONET is not set
333# CONFIG_WAN_ROUTER is not set 343# CONFIG_WAN_ROUTER is not set
344# CONFIG_PHONET is not set
334# CONFIG_NET_SCHED is not set 345# CONFIG_NET_SCHED is not set
335# CONFIG_DCB is not set 346# CONFIG_DCB is not set
336 347
@@ -343,7 +354,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
343# CONFIG_IRDA is not set 354# CONFIG_IRDA is not set
344# CONFIG_BT is not set 355# CONFIG_BT is not set
345# CONFIG_AF_RXRPC is not set 356# CONFIG_AF_RXRPC is not set
346# CONFIG_PHONET is not set
347# CONFIG_WIRELESS is not set 357# CONFIG_WIRELESS is not set
348# CONFIG_WIMAX is not set 358# CONFIG_WIMAX is not set
349# CONFIG_RFKILL is not set 359# CONFIG_RFKILL is not set
@@ -440,7 +450,6 @@ CONFIG_MTD_PHYSMAP_OF=y
440# LPDDR flash memory drivers 450# LPDDR flash memory drivers
441# 451#
442# CONFIG_MTD_LPDDR is not set 452# CONFIG_MTD_LPDDR is not set
443# CONFIG_MTD_QINFO_PROBE is not set
444 453
445# 454#
446# UBI - Unsorted block images 455# UBI - Unsorted block images
@@ -505,10 +514,12 @@ CONFIG_CHR_DEV_SG=y
505# CONFIG_SCSI_SRP_ATTRS is not set 514# CONFIG_SCSI_SRP_ATTRS is not set
506# CONFIG_SCSI_LOWLEVEL is not set 515# CONFIG_SCSI_LOWLEVEL is not set
507# CONFIG_SCSI_DH is not set 516# CONFIG_SCSI_DH is not set
517# CONFIG_SCSI_OSD_INITIATOR is not set
508# CONFIG_ATA is not set 518# CONFIG_ATA is not set
509# CONFIG_MD is not set 519# CONFIG_MD is not set
510# CONFIG_MACINTOSH_DRIVERS is not set 520# CONFIG_MACINTOSH_DRIVERS is not set
511CONFIG_NETDEVICES=y 521CONFIG_NETDEVICES=y
522CONFIG_COMPAT_NET_DEV_OPS=y
512# CONFIG_DUMMY is not set 523# CONFIG_DUMMY is not set
513# CONFIG_BONDING is not set 524# CONFIG_BONDING is not set
514# CONFIG_MACVLAN is not set 525# CONFIG_MACVLAN is not set
@@ -537,6 +548,8 @@ CONFIG_LXT_PHY=y
537# CONFIG_MDIO_BITBANG is not set 548# CONFIG_MDIO_BITBANG is not set
538CONFIG_NET_ETHERNET=y 549CONFIG_NET_ETHERNET=y
539# CONFIG_MII is not set 550# CONFIG_MII is not set
551# CONFIG_ETHOC is not set
552# CONFIG_DNET is not set
540# CONFIG_IBM_NEW_EMAC_ZMII is not set 553# CONFIG_IBM_NEW_EMAC_ZMII is not set
541# CONFIG_IBM_NEW_EMAC_RGMII is not set 554# CONFIG_IBM_NEW_EMAC_RGMII is not set
542# CONFIG_IBM_NEW_EMAC_TAH is not set 555# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -555,7 +568,6 @@ CONFIG_FEC_MPC52xx_MDIO=y
555# 568#
556# CONFIG_WLAN_PRE80211 is not set 569# CONFIG_WLAN_PRE80211 is not set
557# CONFIG_WLAN_80211 is not set 570# CONFIG_WLAN_80211 is not set
558# CONFIG_IWLWIFI_LEDS is not set
559 571
560# 572#
561# Enable WiMAX (Networking options) to see the WiMAX drivers 573# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -657,7 +669,6 @@ CONFIG_I2C_MPC=y
657# CONFIG_SENSORS_PCF8574 is not set 669# CONFIG_SENSORS_PCF8574 is not set
658# CONFIG_PCF8575 is not set 670# CONFIG_PCF8575 is not set
659# CONFIG_SENSORS_PCA9539 is not set 671# CONFIG_SENSORS_PCA9539 is not set
660# CONFIG_SENSORS_PCF8591 is not set
661# CONFIG_SENSORS_MAX6875 is not set 672# CONFIG_SENSORS_MAX6875 is not set
662# CONFIG_SENSORS_TSL2550 is not set 673# CONFIG_SENSORS_TSL2550 is not set
663# CONFIG_I2C_DEBUG_CORE is not set 674# CONFIG_I2C_DEBUG_CORE is not set
@@ -786,11 +797,11 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
786# CONFIG_USB_TMC is not set 797# CONFIG_USB_TMC is not set
787 798
788# 799#
789# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 800# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
790# 801#
791 802
792# 803#
793# see USB_STORAGE Help for more information 804# also be needed; see USB_STORAGE Help for more info
794# 805#
795CONFIG_USB_STORAGE=y 806CONFIG_USB_STORAGE=y
796# CONFIG_USB_STORAGE_DEBUG is not set 807# CONFIG_USB_STORAGE_DEBUG is not set
@@ -831,7 +842,6 @@ CONFIG_USB_STORAGE=y
831# CONFIG_USB_LED is not set 842# CONFIG_USB_LED is not set
832# CONFIG_USB_CYPRESS_CY7C63 is not set 843# CONFIG_USB_CYPRESS_CY7C63 is not set
833# CONFIG_USB_CYTHERM is not set 844# CONFIG_USB_CYTHERM is not set
834# CONFIG_USB_PHIDGET is not set
835# CONFIG_USB_IDMOUSE is not set 845# CONFIG_USB_IDMOUSE is not set
836# CONFIG_USB_FTDI_ELAN is not set 846# CONFIG_USB_FTDI_ELAN is not set
837# CONFIG_USB_APPLEDISPLAY is not set 847# CONFIG_USB_APPLEDISPLAY is not set
@@ -846,6 +856,7 @@ CONFIG_USB_STORAGE=y
846# 856#
847# OTG and related infrastructure 857# OTG and related infrastructure
848# 858#
859# CONFIG_NOP_USB_XCEIV is not set
849# CONFIG_MMC is not set 860# CONFIG_MMC is not set
850# CONFIG_MEMSTICK is not set 861# CONFIG_MEMSTICK is not set
851# CONFIG_NEW_LEDS is not set 862# CONFIG_NEW_LEDS is not set
@@ -853,6 +864,7 @@ CONFIG_USB_STORAGE=y
853# CONFIG_EDAC is not set 864# CONFIG_EDAC is not set
854# CONFIG_RTC_CLASS is not set 865# CONFIG_RTC_CLASS is not set
855# CONFIG_DMADEVICES is not set 866# CONFIG_DMADEVICES is not set
867# CONFIG_AUXDISPLAY is not set
856# CONFIG_UIO is not set 868# CONFIG_UIO is not set
857# CONFIG_STAGING is not set 869# CONFIG_STAGING is not set
858 870
@@ -863,6 +875,7 @@ CONFIG_EXT2_FS=y
863# CONFIG_EXT2_FS_XATTR is not set 875# CONFIG_EXT2_FS_XATTR is not set
864# CONFIG_EXT2_FS_XIP is not set 876# CONFIG_EXT2_FS_XIP is not set
865CONFIG_EXT3_FS=y 877CONFIG_EXT3_FS=y
878# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
866CONFIG_EXT3_FS_XATTR=y 879CONFIG_EXT3_FS_XATTR=y
867# CONFIG_EXT3_FS_POSIX_ACL is not set 880# CONFIG_EXT3_FS_POSIX_ACL is not set
868# CONFIG_EXT3_FS_SECURITY is not set 881# CONFIG_EXT3_FS_SECURITY is not set
@@ -885,6 +898,11 @@ CONFIG_INOTIFY_USER=y
885# CONFIG_FUSE_FS is not set 898# CONFIG_FUSE_FS is not set
886 899
887# 900#
901# Caches
902#
903# CONFIG_FSCACHE is not set
904
905#
888# CD-ROM/DVD Filesystems 906# CD-ROM/DVD Filesystems
889# 907#
890# CONFIG_ISO9660_FS is not set 908# CONFIG_ISO9660_FS is not set
@@ -941,6 +959,7 @@ CONFIG_CRAMFS=y
941# CONFIG_ROMFS_FS is not set 959# CONFIG_ROMFS_FS is not set
942# CONFIG_SYSV_FS is not set 960# CONFIG_SYSV_FS is not set
943# CONFIG_UFS_FS is not set 961# CONFIG_UFS_FS is not set
962# CONFIG_NILFS2_FS is not set
944CONFIG_NETWORK_FILESYSTEMS=y 963CONFIG_NETWORK_FILESYSTEMS=y
945CONFIG_NFS_FS=y 964CONFIG_NFS_FS=y
946CONFIG_NFS_V3=y 965CONFIG_NFS_V3=y
@@ -953,7 +972,6 @@ CONFIG_LOCKD_V4=y
953CONFIG_NFS_COMMON=y 972CONFIG_NFS_COMMON=y
954CONFIG_SUNRPC=y 973CONFIG_SUNRPC=y
955CONFIG_SUNRPC_GSS=y 974CONFIG_SUNRPC_GSS=y
956# CONFIG_SUNRPC_REGISTER_V4 is not set
957CONFIG_RPCSEC_GSS_KRB5=y 975CONFIG_RPCSEC_GSS_KRB5=y
958# CONFIG_RPCSEC_GSS_SPKM3 is not set 976# CONFIG_RPCSEC_GSS_SPKM3 is not set
959# CONFIG_SMB_FS is not set 977# CONFIG_SMB_FS is not set
@@ -1024,6 +1042,7 @@ CONFIG_NLS_ISO8859_1=y
1024# CONFIG_NLS_KOI8_U is not set 1042# CONFIG_NLS_KOI8_U is not set
1025# CONFIG_NLS_UTF8 is not set 1043# CONFIG_NLS_UTF8 is not set
1026# CONFIG_DLM is not set 1044# CONFIG_DLM is not set
1045# CONFIG_BINARY_PRINTF is not set
1027 1046
1028# 1047#
1029# Library routines 1048# Library routines
@@ -1039,11 +1058,12 @@ CONFIG_CRC32=y
1039# CONFIG_LIBCRC32C is not set 1058# CONFIG_LIBCRC32C is not set
1040CONFIG_ZLIB_INFLATE=y 1059CONFIG_ZLIB_INFLATE=y
1041CONFIG_ZLIB_DEFLATE=y 1060CONFIG_ZLIB_DEFLATE=y
1042CONFIG_PLIST=y 1061CONFIG_DECOMPRESS_GZIP=y
1043CONFIG_HAS_IOMEM=y 1062CONFIG_HAS_IOMEM=y
1044CONFIG_HAS_IOPORT=y 1063CONFIG_HAS_IOPORT=y
1045CONFIG_HAS_DMA=y 1064CONFIG_HAS_DMA=y
1046CONFIG_HAVE_LMB=y 1065CONFIG_HAVE_LMB=y
1066CONFIG_NLATTR=y
1047 1067
1048# 1068#
1049# Kernel hacking 1069# Kernel hacking
@@ -1061,6 +1081,9 @@ CONFIG_DEBUG_KERNEL=y
1061CONFIG_DETECT_SOFTLOCKUP=y 1081CONFIG_DETECT_SOFTLOCKUP=y
1062# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1082# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1063CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1083CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1084CONFIG_DETECT_HUNG_TASK=y
1085# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1086CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1064CONFIG_SCHED_DEBUG=y 1087CONFIG_SCHED_DEBUG=y
1065# CONFIG_SCHEDSTATS is not set 1088# CONFIG_SCHEDSTATS is not set
1066# CONFIG_TIMER_STATS is not set 1089# CONFIG_TIMER_STATS is not set
@@ -1089,9 +1112,12 @@ CONFIG_SCHED_DEBUG=y
1089# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1112# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1090# CONFIG_FAULT_INJECTION is not set 1113# CONFIG_FAULT_INJECTION is not set
1091# CONFIG_LATENCYTOP is not set 1114# CONFIG_LATENCYTOP is not set
1115# CONFIG_DEBUG_PAGEALLOC is not set
1092CONFIG_HAVE_FUNCTION_TRACER=y 1116CONFIG_HAVE_FUNCTION_TRACER=y
1117CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1093CONFIG_HAVE_DYNAMIC_FTRACE=y 1118CONFIG_HAVE_DYNAMIC_FTRACE=y
1094CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1119CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1120CONFIG_TRACING_SUPPORT=y
1095 1121
1096# 1122#
1097# Tracers 1123# Tracers
@@ -1099,17 +1125,19 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1099# CONFIG_FUNCTION_TRACER is not set 1125# CONFIG_FUNCTION_TRACER is not set
1100# CONFIG_SCHED_TRACER is not set 1126# CONFIG_SCHED_TRACER is not set
1101# CONFIG_CONTEXT_SWITCH_TRACER is not set 1127# CONFIG_CONTEXT_SWITCH_TRACER is not set
1128# CONFIG_EVENT_TRACER is not set
1102# CONFIG_BOOT_TRACER is not set 1129# CONFIG_BOOT_TRACER is not set
1103# CONFIG_TRACE_BRANCH_PROFILING is not set 1130# CONFIG_TRACE_BRANCH_PROFILING is not set
1104# CONFIG_STACK_TRACER is not set 1131# CONFIG_STACK_TRACER is not set
1105# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1132# CONFIG_KMEMTRACE is not set
1133# CONFIG_WORKQUEUE_TRACER is not set
1134# CONFIG_BLK_DEV_IO_TRACE is not set
1106# CONFIG_SAMPLES is not set 1135# CONFIG_SAMPLES is not set
1107CONFIG_HAVE_ARCH_KGDB=y 1136CONFIG_HAVE_ARCH_KGDB=y
1108# CONFIG_KGDB is not set 1137# CONFIG_KGDB is not set
1109CONFIG_PRINT_STACK_DEPTH=64 1138CONFIG_PRINT_STACK_DEPTH=64
1110# CONFIG_DEBUG_STACKOVERFLOW is not set 1139# CONFIG_DEBUG_STACKOVERFLOW is not set
1111# CONFIG_DEBUG_STACK_USAGE is not set 1140# CONFIG_DEBUG_STACK_USAGE is not set
1112# CONFIG_DEBUG_PAGEALLOC is not set
1113# CONFIG_CODE_PATCHING_SELFTEST is not set 1141# CONFIG_CODE_PATCHING_SELFTEST is not set
1114# CONFIG_FTR_FIXUP_SELFTEST is not set 1142# CONFIG_FTR_FIXUP_SELFTEST is not set
1115# CONFIG_MSI_BITMAP_SELFTEST is not set 1143# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1140,10 +1168,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1140CONFIG_CRYPTO_HASH=y 1168CONFIG_CRYPTO_HASH=y
1141CONFIG_CRYPTO_HASH2=y 1169CONFIG_CRYPTO_HASH2=y
1142CONFIG_CRYPTO_RNG2=y 1170CONFIG_CRYPTO_RNG2=y
1171CONFIG_CRYPTO_PCOMP=y
1143CONFIG_CRYPTO_MANAGER=y 1172CONFIG_CRYPTO_MANAGER=y
1144CONFIG_CRYPTO_MANAGER2=y 1173CONFIG_CRYPTO_MANAGER2=y
1145# CONFIG_CRYPTO_GF128MUL is not set 1174# CONFIG_CRYPTO_GF128MUL is not set
1146# CONFIG_CRYPTO_NULL is not set 1175# CONFIG_CRYPTO_NULL is not set
1176CONFIG_CRYPTO_WORKQUEUE=y
1147# CONFIG_CRYPTO_CRYPTD is not set 1177# CONFIG_CRYPTO_CRYPTD is not set
1148# CONFIG_CRYPTO_AUTHENC is not set 1178# CONFIG_CRYPTO_AUTHENC is not set
1149 1179
@@ -1211,6 +1241,7 @@ CONFIG_CRYPTO_DES=y
1211# Compression 1241# Compression
1212# 1242#
1213# CONFIG_CRYPTO_DEFLATE is not set 1243# CONFIG_CRYPTO_DEFLATE is not set
1244# CONFIG_CRYPTO_ZLIB is not set
1214# CONFIG_CRYPTO_LZO is not set 1245# CONFIG_CRYPTO_LZO is not set
1215 1246
1216# 1247#
diff --git a/arch/powerpc/configs/52xx/lite5200b_defconfig b/arch/powerpc/configs/52xx/lite5200b_defconfig
index b7b880562906..29b0f34488f5 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.29-rc2 3# Linux kernel version: 2.6.30-rc2
4# Mon Jan 26 21:41:14 2009 4# Sat Apr 18 00:48:04 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -14,6 +14,7 @@ CONFIG_6xx=y
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
17CONFIG_PPC_FPU=y 18CONFIG_PPC_FPU=y
18# CONFIG_ALTIVEC is not set 19# CONFIG_ALTIVEC is not set
19CONFIG_PPC_STD_MMU=y 20CONFIG_PPC_STD_MMU=y
@@ -55,6 +56,7 @@ CONFIG_DEFAULT_UIMAGE=y
55CONFIG_ARCH_SUSPEND_POSSIBLE=y 56CONFIG_ARCH_SUSPEND_POSSIBLE=y
56# CONFIG_PPC_DCR_NATIVE is not set 57# CONFIG_PPC_DCR_NATIVE is not set
57# CONFIG_PPC_DCR_MMIO is not set 58# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
58CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 60CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
59 61
60# 62#
@@ -95,19 +97,22 @@ CONFIG_SYSFS_DEPRECATED_V2=y
95# CONFIG_NAMESPACES is not set 97# CONFIG_NAMESPACES is not set
96CONFIG_BLK_DEV_INITRD=y 98CONFIG_BLK_DEV_INITRD=y
97CONFIG_INITRAMFS_SOURCE="" 99CONFIG_INITRAMFS_SOURCE=""
100CONFIG_RD_GZIP=y
101# CONFIG_RD_BZIP2 is not set
102# CONFIG_RD_LZMA is not set
98# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 103# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
99CONFIG_SYSCTL=y 104CONFIG_SYSCTL=y
105CONFIG_ANON_INODES=y
100CONFIG_EMBEDDED=y 106CONFIG_EMBEDDED=y
101# CONFIG_SYSCTL_SYSCALL is not set 107# CONFIG_SYSCTL_SYSCALL is not set
102# CONFIG_KALLSYMS is not set 108# CONFIG_KALLSYMS is not set
109# CONFIG_STRIP_ASM_SYMS is not set
103CONFIG_HOTPLUG=y 110CONFIG_HOTPLUG=y
104CONFIG_PRINTK=y 111CONFIG_PRINTK=y
105CONFIG_BUG=y 112CONFIG_BUG=y
106CONFIG_ELF_CORE=y 113CONFIG_ELF_CORE=y
107CONFIG_COMPAT_BRK=y
108CONFIG_BASE_FULL=y 114CONFIG_BASE_FULL=y
109CONFIG_FUTEX=y 115CONFIG_FUTEX=y
110CONFIG_ANON_INODES=y
111# CONFIG_EPOLL is not set 116# CONFIG_EPOLL is not set
112CONFIG_SIGNALFD=y 117CONFIG_SIGNALFD=y
113CONFIG_TIMERFD=y 118CONFIG_TIMERFD=y
@@ -117,10 +122,12 @@ CONFIG_AIO=y
117CONFIG_VM_EVENT_COUNTERS=y 122CONFIG_VM_EVENT_COUNTERS=y
118CONFIG_PCI_QUIRKS=y 123CONFIG_PCI_QUIRKS=y
119CONFIG_SLUB_DEBUG=y 124CONFIG_SLUB_DEBUG=y
125CONFIG_COMPAT_BRK=y
120# CONFIG_SLAB is not set 126# CONFIG_SLAB is not set
121CONFIG_SLUB=y 127CONFIG_SLUB=y
122# CONFIG_SLOB is not set 128# CONFIG_SLOB is not set
123# CONFIG_PROFILING is not set 129# CONFIG_PROFILING is not set
130# CONFIG_MARKERS is not set
124CONFIG_HAVE_OPROFILE=y 131CONFIG_HAVE_OPROFILE=y
125CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 132CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
126CONFIG_HAVE_IOREMAP_PROT=y 133CONFIG_HAVE_IOREMAP_PROT=y
@@ -128,6 +135,7 @@ CONFIG_HAVE_KPROBES=y
128CONFIG_HAVE_KRETPROBES=y 135CONFIG_HAVE_KRETPROBES=y
129CONFIG_HAVE_ARCH_TRACEHOOK=y 136CONFIG_HAVE_ARCH_TRACEHOOK=y
130CONFIG_HAVE_CLK=y 137CONFIG_HAVE_CLK=y
138# CONFIG_SLOW_WORK is not set
131# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 139# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
132CONFIG_SLABINFO=y 140CONFIG_SLABINFO=y
133CONFIG_RT_MUTEXES=y 141CONFIG_RT_MUTEXES=y
@@ -140,7 +148,6 @@ CONFIG_MODULE_UNLOAD=y
140# CONFIG_MODULE_SRCVERSION_ALL is not set 148# CONFIG_MODULE_SRCVERSION_ALL is not set
141CONFIG_BLOCK=y 149CONFIG_BLOCK=y
142# CONFIG_LBD is not set 150# CONFIG_LBD is not set
143# CONFIG_BLK_DEV_IO_TRACE is not set
144# CONFIG_BLK_DEV_BSG is not set 151# CONFIG_BLK_DEV_BSG is not set
145# CONFIG_BLK_DEV_INTEGRITY is not set 152# CONFIG_BLK_DEV_INTEGRITY is not set
146 153
@@ -161,8 +168,6 @@ CONFIG_FREEZER=y
161# 168#
162# Platform support 169# Platform support
163# 170#
164CONFIG_PPC_MULTIPLATFORM=y
165CONFIG_CLASSIC32=y
166# CONFIG_PPC_CHRP is not set 171# CONFIG_PPC_CHRP is not set
167# CONFIG_MPC5121_ADS is not set 172# CONFIG_MPC5121_ADS is not set
168# CONFIG_MPC5121_GENERIC is not set 173# CONFIG_MPC5121_GENERIC is not set
@@ -170,6 +175,7 @@ CONFIG_PPC_MPC52xx=y
170CONFIG_PPC_MPC5200_SIMPLE=y 175CONFIG_PPC_MPC5200_SIMPLE=y
171# CONFIG_PPC_EFIKA is not set 176# CONFIG_PPC_EFIKA is not set
172CONFIG_PPC_LITE5200=y 177CONFIG_PPC_LITE5200=y
178# CONFIG_PPC_MEDIA5200 is not set
173# CONFIG_PPC_MPC5200_BUGFIX is not set 179# CONFIG_PPC_MPC5200_BUGFIX is not set
174# CONFIG_PPC_MPC5200_GPIO is not set 180# CONFIG_PPC_MPC5200_GPIO is not set
175# CONFIG_PPC_PMAC is not set 181# CONFIG_PPC_PMAC is not set
@@ -180,6 +186,8 @@ CONFIG_PPC_LITE5200=y
180# CONFIG_PPC_83xx is not set 186# CONFIG_PPC_83xx is not set
181# CONFIG_PPC_86xx is not set 187# CONFIG_PPC_86xx is not set
182# CONFIG_EMBEDDED6xx is not set 188# CONFIG_EMBEDDED6xx is not set
189# CONFIG_AMIGAONE is not set
190CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
183# CONFIG_IPIC is not set 191# CONFIG_IPIC is not set
184# CONFIG_MPIC is not set 192# CONFIG_MPIC is not set
185# CONFIG_MPIC_WEIRD is not set 193# CONFIG_MPIC_WEIRD is not set
@@ -241,9 +249,12 @@ CONFIG_ZONE_DMA_FLAG=1
241CONFIG_BOUNCE=y 249CONFIG_BOUNCE=y
242CONFIG_VIRT_TO_BUS=y 250CONFIG_VIRT_TO_BUS=y
243CONFIG_UNEVICTABLE_LRU=y 251CONFIG_UNEVICTABLE_LRU=y
252CONFIG_HAVE_MLOCK=y
253CONFIG_HAVE_MLOCKED_PAGE_BIT=y
244CONFIG_PPC_4K_PAGES=y 254CONFIG_PPC_4K_PAGES=y
245# CONFIG_PPC_16K_PAGES is not set 255# CONFIG_PPC_16K_PAGES is not set
246# CONFIG_PPC_64K_PAGES is not set 256# CONFIG_PPC_64K_PAGES is not set
257# CONFIG_PPC_256K_PAGES is not set
247CONFIG_FORCE_MAX_ZONEORDER=11 258CONFIG_FORCE_MAX_ZONEORDER=11
248CONFIG_PROC_DEVICETREE=y 259CONFIG_PROC_DEVICETREE=y
249# CONFIG_CMDLINE_BOOL is not set 260# CONFIG_CMDLINE_BOOL is not set
@@ -272,6 +283,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
272CONFIG_PCI_LEGACY=y 283CONFIG_PCI_LEGACY=y
273# CONFIG_PCI_DEBUG is not set 284# CONFIG_PCI_DEBUG is not set
274# CONFIG_PCI_STUB is not set 285# CONFIG_PCI_STUB is not set
286# CONFIG_PCI_IOV is not set
275# CONFIG_PCCARD is not set 287# CONFIG_PCCARD is not set
276# CONFIG_HOTPLUG_PCI is not set 288# CONFIG_HOTPLUG_PCI is not set
277# CONFIG_HAS_RAPIDIO is not set 289# CONFIG_HAS_RAPIDIO is not set
@@ -294,7 +306,6 @@ CONFIG_NET=y
294# 306#
295# Networking options 307# Networking options
296# 308#
297CONFIG_COMPAT_NET_DEV_OPS=y
298CONFIG_PACKET=y 309CONFIG_PACKET=y
299# CONFIG_PACKET_MMAP is not set 310# CONFIG_PACKET_MMAP is not set
300CONFIG_UNIX=y 311CONFIG_UNIX=y
@@ -350,6 +361,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
350# CONFIG_LAPB is not set 361# CONFIG_LAPB is not set
351# CONFIG_ECONET is not set 362# CONFIG_ECONET is not set
352# CONFIG_WAN_ROUTER is not set 363# CONFIG_WAN_ROUTER is not set
364# CONFIG_PHONET is not set
353# CONFIG_NET_SCHED is not set 365# CONFIG_NET_SCHED is not set
354# CONFIG_DCB is not set 366# CONFIG_DCB is not set
355 367
@@ -362,7 +374,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
362# CONFIG_IRDA is not set 374# CONFIG_IRDA is not set
363# CONFIG_BT is not set 375# CONFIG_BT is not set
364# CONFIG_AF_RXRPC is not set 376# CONFIG_AF_RXRPC is not set
365# CONFIG_PHONET is not set
366# CONFIG_WIRELESS is not set 377# CONFIG_WIRELESS is not set
367# CONFIG_WIMAX is not set 378# CONFIG_WIMAX is not set
368# CONFIG_RFKILL is not set 379# CONFIG_RFKILL is not set
@@ -412,6 +423,7 @@ CONFIG_MISC_DEVICES=y
412# CONFIG_ICS932S401 is not set 423# CONFIG_ICS932S401 is not set
413# CONFIG_ENCLOSURE_SERVICES is not set 424# CONFIG_ENCLOSURE_SERVICES is not set
414# CONFIG_HP_ILO is not set 425# CONFIG_HP_ILO is not set
426# CONFIG_ISL29003 is not set
415# CONFIG_C2PORT is not set 427# CONFIG_C2PORT is not set
416 428
417# 429#
@@ -477,9 +489,11 @@ CONFIG_SCSI_LOWLEVEL=y
477# CONFIG_MEGARAID_NEWGEN is not set 489# CONFIG_MEGARAID_NEWGEN is not set
478# CONFIG_MEGARAID_LEGACY is not set 490# CONFIG_MEGARAID_LEGACY is not set
479# CONFIG_MEGARAID_SAS is not set 491# CONFIG_MEGARAID_SAS is not set
492# CONFIG_SCSI_MPT2SAS is not set
480# CONFIG_SCSI_HPTIOP is not set 493# CONFIG_SCSI_HPTIOP is not set
481# CONFIG_SCSI_BUSLOGIC is not set 494# CONFIG_SCSI_BUSLOGIC is not set
482# CONFIG_LIBFC is not set 495# CONFIG_LIBFC is not set
496# CONFIG_LIBFCOE is not set
483# CONFIG_FCOE is not set 497# CONFIG_FCOE is not set
484# CONFIG_SCSI_DMX3191D is not set 498# CONFIG_SCSI_DMX3191D is not set
485# CONFIG_SCSI_EATA is not set 499# CONFIG_SCSI_EATA is not set
@@ -502,6 +516,7 @@ CONFIG_SCSI_LOWLEVEL=y
502# CONFIG_SCSI_DEBUG is not set 516# CONFIG_SCSI_DEBUG is not set
503# CONFIG_SCSI_SRP is not set 517# CONFIG_SCSI_SRP is not set
504# CONFIG_SCSI_DH is not set 518# CONFIG_SCSI_DH is not set
519# CONFIG_SCSI_OSD_INITIATOR is not set
505CONFIG_ATA=y 520CONFIG_ATA=y
506# CONFIG_ATA_NONSTANDARD is not set 521# CONFIG_ATA_NONSTANDARD is not set
507CONFIG_SATA_PMP=y 522CONFIG_SATA_PMP=y
@@ -578,6 +593,7 @@ CONFIG_PATA_MPC52xx=y
578# CONFIG_I2O is not set 593# CONFIG_I2O is not set
579# CONFIG_MACINTOSH_DRIVERS is not set 594# CONFIG_MACINTOSH_DRIVERS is not set
580CONFIG_NETDEVICES=y 595CONFIG_NETDEVICES=y
596CONFIG_COMPAT_NET_DEV_OPS=y
581# CONFIG_DUMMY is not set 597# CONFIG_DUMMY is not set
582# CONFIG_BONDING is not set 598# CONFIG_BONDING is not set
583# CONFIG_MACVLAN is not set 599# CONFIG_MACVLAN is not set
@@ -611,6 +627,8 @@ CONFIG_NET_ETHERNET=y
611# CONFIG_SUNGEM is not set 627# CONFIG_SUNGEM is not set
612# CONFIG_CASSINI is not set 628# CONFIG_CASSINI is not set
613# CONFIG_NET_VENDOR_3COM is not set 629# CONFIG_NET_VENDOR_3COM is not set
630# CONFIG_ETHOC is not set
631# CONFIG_DNET is not set
614# CONFIG_NET_TULIP is not set 632# CONFIG_NET_TULIP is not set
615# CONFIG_HP100 is not set 633# CONFIG_HP100 is not set
616# CONFIG_IBM_NEW_EMAC_ZMII is not set 634# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -632,6 +650,7 @@ CONFIG_NETDEV_1000=y
632# CONFIG_E1000E is not set 650# CONFIG_E1000E is not set
633# CONFIG_IP1000 is not set 651# CONFIG_IP1000 is not set
634# CONFIG_IGB is not set 652# CONFIG_IGB is not set
653# CONFIG_IGBVF is not set
635# CONFIG_NS83820 is not set 654# CONFIG_NS83820 is not set
636# CONFIG_HAMACHI is not set 655# CONFIG_HAMACHI is not set
637# CONFIG_YELLOWFIN is not set 656# CONFIG_YELLOWFIN is not set
@@ -642,10 +661,10 @@ CONFIG_NETDEV_1000=y
642# CONFIG_VIA_VELOCITY is not set 661# CONFIG_VIA_VELOCITY is not set
643# CONFIG_TIGON3 is not set 662# CONFIG_TIGON3 is not set
644# CONFIG_BNX2 is not set 663# CONFIG_BNX2 is not set
645# CONFIG_MV643XX_ETH is not set
646# CONFIG_QLA3XXX is not set 664# CONFIG_QLA3XXX is not set
647# CONFIG_ATL1 is not set 665# CONFIG_ATL1 is not set
648# CONFIG_ATL1E is not set 666# CONFIG_ATL1E is not set
667# CONFIG_ATL1C is not set
649# CONFIG_JME is not set 668# CONFIG_JME is not set
650CONFIG_NETDEV_10000=y 669CONFIG_NETDEV_10000=y
651# CONFIG_CHELSIO_T1 is not set 670# CONFIG_CHELSIO_T1 is not set
@@ -655,6 +674,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
655# CONFIG_IXGBE is not set 674# CONFIG_IXGBE is not set
656# CONFIG_IXGB is not set 675# CONFIG_IXGB is not set
657# CONFIG_S2IO is not set 676# CONFIG_S2IO is not set
677# CONFIG_VXGE is not set
658# CONFIG_MYRI10GE is not set 678# CONFIG_MYRI10GE is not set
659# CONFIG_NETXEN_NIC is not set 679# CONFIG_NETXEN_NIC is not set
660# CONFIG_NIU is not set 680# CONFIG_NIU is not set
@@ -664,6 +684,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
664# CONFIG_BNX2X is not set 684# CONFIG_BNX2X is not set
665# CONFIG_QLGE is not set 685# CONFIG_QLGE is not set
666# CONFIG_SFC is not set 686# CONFIG_SFC is not set
687# CONFIG_BE2NET is not set
667# CONFIG_TR is not set 688# CONFIG_TR is not set
668 689
669# 690#
@@ -671,7 +692,6 @@ CONFIG_CHELSIO_T3_DEPENDS=y
671# 692#
672# CONFIG_WLAN_PRE80211 is not set 693# CONFIG_WLAN_PRE80211 is not set
673# CONFIG_WLAN_80211 is not set 694# CONFIG_WLAN_80211 is not set
674# CONFIG_IWLWIFI_LEDS is not set
675 695
676# 696#
677# Enable WiMAX (Networking options) to see the WiMAX drivers 697# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -795,7 +815,6 @@ CONFIG_I2C_MPC=y
795# CONFIG_SENSORS_PCF8574 is not set 815# CONFIG_SENSORS_PCF8574 is not set
796# CONFIG_PCF8575 is not set 816# CONFIG_PCF8575 is not set
797# CONFIG_SENSORS_PCA9539 is not set 817# CONFIG_SENSORS_PCA9539 is not set
798# CONFIG_SENSORS_PCF8591 is not set
799# CONFIG_SENSORS_MAX6875 is not set 818# CONFIG_SENSORS_MAX6875 is not set
800# CONFIG_SENSORS_TSL2550 is not set 819# CONFIG_SENSORS_TSL2550 is not set
801# CONFIG_I2C_DEBUG_CORE is not set 820# CONFIG_I2C_DEBUG_CORE is not set
@@ -876,7 +895,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
876# 895#
877 896
878# 897#
879# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 898# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
880# 899#
881# CONFIG_USB_GADGET is not set 900# CONFIG_USB_GADGET is not set
882 901
@@ -892,6 +911,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
892# CONFIG_EDAC is not set 911# CONFIG_EDAC is not set
893# CONFIG_RTC_CLASS is not set 912# CONFIG_RTC_CLASS is not set
894# CONFIG_DMADEVICES is not set 913# CONFIG_DMADEVICES is not set
914# CONFIG_AUXDISPLAY is not set
895# CONFIG_UIO is not set 915# CONFIG_UIO is not set
896# CONFIG_STAGING is not set 916# CONFIG_STAGING is not set
897 917
@@ -902,6 +922,7 @@ CONFIG_EXT2_FS=y
902# CONFIG_EXT2_FS_XATTR is not set 922# CONFIG_EXT2_FS_XATTR is not set
903# CONFIG_EXT2_FS_XIP is not set 923# CONFIG_EXT2_FS_XIP is not set
904CONFIG_EXT3_FS=y 924CONFIG_EXT3_FS=y
925# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
905CONFIG_EXT3_FS_XATTR=y 926CONFIG_EXT3_FS_XATTR=y
906# CONFIG_EXT3_FS_POSIX_ACL is not set 927# CONFIG_EXT3_FS_POSIX_ACL is not set
907# CONFIG_EXT3_FS_SECURITY is not set 928# CONFIG_EXT3_FS_SECURITY is not set
@@ -924,6 +945,11 @@ CONFIG_INOTIFY_USER=y
924# CONFIG_FUSE_FS is not set 945# CONFIG_FUSE_FS is not set
925 946
926# 947#
948# Caches
949#
950# CONFIG_FSCACHE is not set
951
952#
927# CD-ROM/DVD Filesystems 953# CD-ROM/DVD Filesystems
928# 954#
929# CONFIG_ISO9660_FS is not set 955# CONFIG_ISO9660_FS is not set
@@ -966,6 +992,7 @@ CONFIG_MISC_FILESYSTEMS=y
966# CONFIG_ROMFS_FS is not set 992# CONFIG_ROMFS_FS is not set
967# CONFIG_SYSV_FS is not set 993# CONFIG_SYSV_FS is not set
968# CONFIG_UFS_FS is not set 994# CONFIG_UFS_FS is not set
995# CONFIG_NILFS2_FS is not set
969CONFIG_NETWORK_FILESYSTEMS=y 996CONFIG_NETWORK_FILESYSTEMS=y
970CONFIG_NFS_FS=y 997CONFIG_NFS_FS=y
971CONFIG_NFS_V3=y 998CONFIG_NFS_V3=y
@@ -978,7 +1005,6 @@ CONFIG_LOCKD_V4=y
978CONFIG_NFS_COMMON=y 1005CONFIG_NFS_COMMON=y
979CONFIG_SUNRPC=y 1006CONFIG_SUNRPC=y
980CONFIG_SUNRPC_GSS=y 1007CONFIG_SUNRPC_GSS=y
981# CONFIG_SUNRPC_REGISTER_V4 is not set
982CONFIG_RPCSEC_GSS_KRB5=y 1008CONFIG_RPCSEC_GSS_KRB5=y
983# CONFIG_RPCSEC_GSS_SPKM3 is not set 1009# CONFIG_RPCSEC_GSS_SPKM3 is not set
984# CONFIG_SMB_FS is not set 1010# CONFIG_SMB_FS is not set
@@ -994,6 +1020,7 @@ CONFIG_RPCSEC_GSS_KRB5=y
994CONFIG_MSDOS_PARTITION=y 1020CONFIG_MSDOS_PARTITION=y
995# CONFIG_NLS is not set 1021# CONFIG_NLS is not set
996# CONFIG_DLM is not set 1022# CONFIG_DLM is not set
1023# CONFIG_BINARY_PRINTF is not set
997 1024
998# 1025#
999# Library routines 1026# Library routines
@@ -1007,11 +1034,13 @@ CONFIG_GENERIC_FIND_LAST_BIT=y
1007CONFIG_CRC32=y 1034CONFIG_CRC32=y
1008# CONFIG_CRC7 is not set 1035# CONFIG_CRC7 is not set
1009# CONFIG_LIBCRC32C is not set 1036# CONFIG_LIBCRC32C is not set
1010CONFIG_PLIST=y 1037CONFIG_ZLIB_INFLATE=y
1038CONFIG_DECOMPRESS_GZIP=y
1011CONFIG_HAS_IOMEM=y 1039CONFIG_HAS_IOMEM=y
1012CONFIG_HAS_IOPORT=y 1040CONFIG_HAS_IOPORT=y
1013CONFIG_HAS_DMA=y 1041CONFIG_HAS_DMA=y
1014CONFIG_HAVE_LMB=y 1042CONFIG_HAVE_LMB=y
1043CONFIG_NLATTR=y
1015 1044
1016# 1045#
1017# Kernel hacking 1046# Kernel hacking
@@ -1029,6 +1058,9 @@ CONFIG_DEBUG_KERNEL=y
1029CONFIG_DETECT_SOFTLOCKUP=y 1058CONFIG_DETECT_SOFTLOCKUP=y
1030# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1059# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1031CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1060CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1061CONFIG_DETECT_HUNG_TASK=y
1062# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1063CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1032CONFIG_SCHED_DEBUG=y 1064CONFIG_SCHED_DEBUG=y
1033# CONFIG_SCHEDSTATS is not set 1065# CONFIG_SCHEDSTATS is not set
1034# CONFIG_TIMER_STATS is not set 1066# CONFIG_TIMER_STATS is not set
@@ -1057,9 +1089,12 @@ CONFIG_DEBUG_INFO=y
1057# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1089# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1058# CONFIG_FAULT_INJECTION is not set 1090# CONFIG_FAULT_INJECTION is not set
1059# CONFIG_LATENCYTOP is not set 1091# CONFIG_LATENCYTOP is not set
1092# CONFIG_DEBUG_PAGEALLOC is not set
1060CONFIG_HAVE_FUNCTION_TRACER=y 1093CONFIG_HAVE_FUNCTION_TRACER=y
1094CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1061CONFIG_HAVE_DYNAMIC_FTRACE=y 1095CONFIG_HAVE_DYNAMIC_FTRACE=y
1062CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1096CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1097CONFIG_TRACING_SUPPORT=y
1063 1098
1064# 1099#
1065# Tracers 1100# Tracers
@@ -1067,17 +1102,19 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1067# CONFIG_FUNCTION_TRACER is not set 1102# CONFIG_FUNCTION_TRACER is not set
1068# CONFIG_SCHED_TRACER is not set 1103# CONFIG_SCHED_TRACER is not set
1069# CONFIG_CONTEXT_SWITCH_TRACER is not set 1104# CONFIG_CONTEXT_SWITCH_TRACER is not set
1105# CONFIG_EVENT_TRACER is not set
1070# CONFIG_BOOT_TRACER is not set 1106# CONFIG_BOOT_TRACER is not set
1071# CONFIG_TRACE_BRANCH_PROFILING is not set 1107# CONFIG_TRACE_BRANCH_PROFILING is not set
1072# CONFIG_STACK_TRACER is not set 1108# CONFIG_STACK_TRACER is not set
1073# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1109# CONFIG_KMEMTRACE is not set
1110# CONFIG_WORKQUEUE_TRACER is not set
1111# CONFIG_BLK_DEV_IO_TRACE is not set
1074# CONFIG_SAMPLES is not set 1112# CONFIG_SAMPLES is not set
1075CONFIG_HAVE_ARCH_KGDB=y 1113CONFIG_HAVE_ARCH_KGDB=y
1076# CONFIG_KGDB is not set 1114# CONFIG_KGDB is not set
1077CONFIG_PRINT_STACK_DEPTH=64 1115CONFIG_PRINT_STACK_DEPTH=64
1078# CONFIG_DEBUG_STACKOVERFLOW is not set 1116# CONFIG_DEBUG_STACKOVERFLOW is not set
1079# CONFIG_DEBUG_STACK_USAGE is not set 1117# CONFIG_DEBUG_STACK_USAGE is not set
1080# CONFIG_DEBUG_PAGEALLOC is not set
1081# CONFIG_CODE_PATCHING_SELFTEST is not set 1118# CONFIG_CODE_PATCHING_SELFTEST is not set
1082# CONFIG_FTR_FIXUP_SELFTEST is not set 1119# CONFIG_FTR_FIXUP_SELFTEST is not set
1083# CONFIG_MSI_BITMAP_SELFTEST is not set 1120# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1108,10 +1145,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1108CONFIG_CRYPTO_HASH=y 1145CONFIG_CRYPTO_HASH=y
1109CONFIG_CRYPTO_HASH2=y 1146CONFIG_CRYPTO_HASH2=y
1110CONFIG_CRYPTO_RNG2=y 1147CONFIG_CRYPTO_RNG2=y
1148CONFIG_CRYPTO_PCOMP=y
1111CONFIG_CRYPTO_MANAGER=y 1149CONFIG_CRYPTO_MANAGER=y
1112CONFIG_CRYPTO_MANAGER2=y 1150CONFIG_CRYPTO_MANAGER2=y
1113# CONFIG_CRYPTO_GF128MUL is not set 1151# CONFIG_CRYPTO_GF128MUL is not set
1114# CONFIG_CRYPTO_NULL is not set 1152# CONFIG_CRYPTO_NULL is not set
1153CONFIG_CRYPTO_WORKQUEUE=y
1115# CONFIG_CRYPTO_CRYPTD is not set 1154# CONFIG_CRYPTO_CRYPTD is not set
1116# CONFIG_CRYPTO_AUTHENC is not set 1155# CONFIG_CRYPTO_AUTHENC is not set
1117# CONFIG_CRYPTO_TEST is not set 1156# CONFIG_CRYPTO_TEST is not set
@@ -1180,6 +1219,7 @@ CONFIG_CRYPTO_DES=y
1180# Compression 1219# Compression
1181# 1220#
1182# CONFIG_CRYPTO_DEFLATE is not set 1221# CONFIG_CRYPTO_DEFLATE is not set
1222# CONFIG_CRYPTO_ZLIB is not set
1183# CONFIG_CRYPTO_LZO is not set 1223# CONFIG_CRYPTO_LZO is not set
1184 1224
1185# 1225#
diff --git a/arch/powerpc/configs/52xx/motionpro_defconfig b/arch/powerpc/configs/52xx/motionpro_defconfig
index fb10f22fd0d2..07b6b266ea95 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.29-rc2 3# Linux kernel version: 2.6.30-rc2
4# Mon Jan 26 21:42:29 2009 4# Sat Apr 18 00:48:22 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -14,6 +14,7 @@ CONFIG_6xx=y
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
17CONFIG_PPC_FPU=y 18CONFIG_PPC_FPU=y
18# CONFIG_ALTIVEC is not set 19# CONFIG_ALTIVEC is not set
19CONFIG_PPC_STD_MMU=y 20CONFIG_PPC_STD_MMU=y
@@ -54,6 +55,7 @@ CONFIG_GENERIC_BUG=y
54CONFIG_DEFAULT_UIMAGE=y 55CONFIG_DEFAULT_UIMAGE=y
55# CONFIG_PPC_DCR_NATIVE is not set 56# CONFIG_PPC_DCR_NATIVE is not set
56# CONFIG_PPC_DCR_MMIO is not set 57# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
58 60
59# 61#
@@ -94,19 +96,22 @@ CONFIG_SYSFS_DEPRECATED_V2=y
94# CONFIG_NAMESPACES is not set 96# CONFIG_NAMESPACES is not set
95CONFIG_BLK_DEV_INITRD=y 97CONFIG_BLK_DEV_INITRD=y
96CONFIG_INITRAMFS_SOURCE="" 98CONFIG_INITRAMFS_SOURCE=""
99CONFIG_RD_GZIP=y
100# CONFIG_RD_BZIP2 is not set
101# CONFIG_RD_LZMA is not set
97# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 102# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
98CONFIG_SYSCTL=y 103CONFIG_SYSCTL=y
104CONFIG_ANON_INODES=y
99CONFIG_EMBEDDED=y 105CONFIG_EMBEDDED=y
100# CONFIG_SYSCTL_SYSCALL is not set 106# CONFIG_SYSCTL_SYSCALL is not set
101# CONFIG_KALLSYMS is not set 107# CONFIG_KALLSYMS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
102CONFIG_HOTPLUG=y 109CONFIG_HOTPLUG=y
103CONFIG_PRINTK=y 110CONFIG_PRINTK=y
104CONFIG_BUG=y 111CONFIG_BUG=y
105CONFIG_ELF_CORE=y 112CONFIG_ELF_CORE=y
106CONFIG_COMPAT_BRK=y
107CONFIG_BASE_FULL=y 113CONFIG_BASE_FULL=y
108CONFIG_FUTEX=y 114CONFIG_FUTEX=y
109CONFIG_ANON_INODES=y
110# CONFIG_EPOLL is not set 115# CONFIG_EPOLL is not set
111CONFIG_SIGNALFD=y 116CONFIG_SIGNALFD=y
112CONFIG_TIMERFD=y 117CONFIG_TIMERFD=y
@@ -115,10 +120,12 @@ CONFIG_SHMEM=y
115CONFIG_AIO=y 120CONFIG_AIO=y
116CONFIG_VM_EVENT_COUNTERS=y 121CONFIG_VM_EVENT_COUNTERS=y
117CONFIG_SLUB_DEBUG=y 122CONFIG_SLUB_DEBUG=y
123CONFIG_COMPAT_BRK=y
118# CONFIG_SLAB is not set 124# CONFIG_SLAB is not set
119CONFIG_SLUB=y 125CONFIG_SLUB=y
120# CONFIG_SLOB is not set 126# CONFIG_SLOB is not set
121# CONFIG_PROFILING is not set 127# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
122CONFIG_HAVE_OPROFILE=y 129CONFIG_HAVE_OPROFILE=y
123CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 130CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
124CONFIG_HAVE_IOREMAP_PROT=y 131CONFIG_HAVE_IOREMAP_PROT=y
@@ -126,6 +133,7 @@ CONFIG_HAVE_KPROBES=y
126CONFIG_HAVE_KRETPROBES=y 133CONFIG_HAVE_KRETPROBES=y
127CONFIG_HAVE_ARCH_TRACEHOOK=y 134CONFIG_HAVE_ARCH_TRACEHOOK=y
128CONFIG_HAVE_CLK=y 135CONFIG_HAVE_CLK=y
136# CONFIG_SLOW_WORK is not set
129# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 137# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
130CONFIG_SLABINFO=y 138CONFIG_SLABINFO=y
131CONFIG_RT_MUTEXES=y 139CONFIG_RT_MUTEXES=y
@@ -133,7 +141,6 @@ CONFIG_BASE_SMALL=0
133# CONFIG_MODULES is not set 141# CONFIG_MODULES is not set
134CONFIG_BLOCK=y 142CONFIG_BLOCK=y
135# CONFIG_LBD is not set 143# CONFIG_LBD is not set
136# CONFIG_BLK_DEV_IO_TRACE is not set
137# CONFIG_BLK_DEV_BSG is not set 144# CONFIG_BLK_DEV_BSG is not set
138# CONFIG_BLK_DEV_INTEGRITY is not set 145# CONFIG_BLK_DEV_INTEGRITY is not set
139 146
@@ -154,8 +161,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
154# 161#
155# Platform support 162# Platform support
156# 163#
157CONFIG_PPC_MULTIPLATFORM=y
158CONFIG_CLASSIC32=y
159# CONFIG_PPC_CHRP is not set 164# CONFIG_PPC_CHRP is not set
160# CONFIG_MPC5121_ADS is not set 165# CONFIG_MPC5121_ADS is not set
161# CONFIG_MPC5121_GENERIC is not set 166# CONFIG_MPC5121_GENERIC is not set
@@ -163,6 +168,7 @@ CONFIG_PPC_MPC52xx=y
163CONFIG_PPC_MPC5200_SIMPLE=y 168CONFIG_PPC_MPC5200_SIMPLE=y
164# CONFIG_PPC_EFIKA is not set 169# CONFIG_PPC_EFIKA is not set
165# CONFIG_PPC_LITE5200 is not set 170# CONFIG_PPC_LITE5200 is not set
171# CONFIG_PPC_MEDIA5200 is not set
166# CONFIG_PPC_MPC5200_BUGFIX is not set 172# CONFIG_PPC_MPC5200_BUGFIX is not set
167# CONFIG_PPC_MPC5200_GPIO is not set 173# CONFIG_PPC_MPC5200_GPIO is not set
168# CONFIG_PPC_PMAC is not set 174# CONFIG_PPC_PMAC is not set
@@ -173,6 +179,8 @@ CONFIG_PPC_MPC5200_SIMPLE=y
173# CONFIG_PPC_83xx is not set 179# CONFIG_PPC_83xx is not set
174# CONFIG_PPC_86xx is not set 180# CONFIG_PPC_86xx is not set
175# CONFIG_EMBEDDED6xx is not set 181# CONFIG_EMBEDDED6xx is not set
182# CONFIG_AMIGAONE is not set
183CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
176# CONFIG_IPIC is not set 184# CONFIG_IPIC is not set
177# CONFIG_MPIC is not set 185# CONFIG_MPIC is not set
178# CONFIG_MPIC_WEIRD is not set 186# CONFIG_MPIC_WEIRD is not set
@@ -233,9 +241,12 @@ CONFIG_ZONE_DMA_FLAG=1
233CONFIG_BOUNCE=y 241CONFIG_BOUNCE=y
234CONFIG_VIRT_TO_BUS=y 242CONFIG_VIRT_TO_BUS=y
235CONFIG_UNEVICTABLE_LRU=y 243CONFIG_UNEVICTABLE_LRU=y
244CONFIG_HAVE_MLOCK=y
245CONFIG_HAVE_MLOCKED_PAGE_BIT=y
236CONFIG_PPC_4K_PAGES=y 246CONFIG_PPC_4K_PAGES=y
237# CONFIG_PPC_16K_PAGES is not set 247# CONFIG_PPC_16K_PAGES is not set
238# CONFIG_PPC_64K_PAGES is not set 248# CONFIG_PPC_64K_PAGES is not set
249# CONFIG_PPC_256K_PAGES is not set
239CONFIG_FORCE_MAX_ZONEORDER=11 250CONFIG_FORCE_MAX_ZONEORDER=11
240CONFIG_PROC_DEVICETREE=y 251CONFIG_PROC_DEVICETREE=y
241# CONFIG_CMDLINE_BOOL is not set 252# CONFIG_CMDLINE_BOOL is not set
@@ -276,7 +287,6 @@ CONFIG_NET=y
276# 287#
277# Networking options 288# Networking options
278# 289#
279CONFIG_COMPAT_NET_DEV_OPS=y
280CONFIG_PACKET=y 290CONFIG_PACKET=y
281# CONFIG_PACKET_MMAP is not set 291# CONFIG_PACKET_MMAP is not set
282CONFIG_UNIX=y 292CONFIG_UNIX=y
@@ -332,6 +342,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
332# CONFIG_LAPB is not set 342# CONFIG_LAPB is not set
333# CONFIG_ECONET is not set 343# CONFIG_ECONET is not set
334# CONFIG_WAN_ROUTER is not set 344# CONFIG_WAN_ROUTER is not set
345# CONFIG_PHONET is not set
335# CONFIG_NET_SCHED is not set 346# CONFIG_NET_SCHED is not set
336# CONFIG_DCB is not set 347# CONFIG_DCB is not set
337 348
@@ -344,7 +355,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
344# CONFIG_IRDA is not set 355# CONFIG_IRDA is not set
345# CONFIG_BT is not set 356# CONFIG_BT is not set
346# CONFIG_AF_RXRPC is not set 357# CONFIG_AF_RXRPC is not set
347# CONFIG_PHONET is not set
348# CONFIG_WIRELESS is not set 358# CONFIG_WIRELESS is not set
349# CONFIG_WIMAX is not set 359# CONFIG_WIMAX is not set
350# CONFIG_RFKILL is not set 360# CONFIG_RFKILL is not set
@@ -441,7 +451,6 @@ CONFIG_MTD_ROM=y
441# LPDDR flash memory drivers 451# LPDDR flash memory drivers
442# 452#
443# CONFIG_MTD_LPDDR is not set 453# CONFIG_MTD_LPDDR is not set
444# CONFIG_MTD_QINFO_PROBE is not set
445 454
446# 455#
447# UBI - Unsorted block images 456# UBI - Unsorted block images
@@ -466,6 +475,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
466CONFIG_MISC_DEVICES=y 475CONFIG_MISC_DEVICES=y
467# CONFIG_ICS932S401 is not set 476# CONFIG_ICS932S401 is not set
468# CONFIG_ENCLOSURE_SERVICES is not set 477# CONFIG_ENCLOSURE_SERVICES is not set
478# CONFIG_ISL29003 is not set
469# CONFIG_C2PORT is not set 479# CONFIG_C2PORT is not set
470 480
471# 481#
@@ -516,8 +526,10 @@ CONFIG_CHR_DEV_SG=y
516CONFIG_SCSI_LOWLEVEL=y 526CONFIG_SCSI_LOWLEVEL=y
517# CONFIG_ISCSI_TCP is not set 527# CONFIG_ISCSI_TCP is not set
518# CONFIG_LIBFC is not set 528# CONFIG_LIBFC is not set
529# CONFIG_LIBFCOE is not set
519# CONFIG_SCSI_DEBUG is not set 530# CONFIG_SCSI_DEBUG is not set
520# CONFIG_SCSI_DH is not set 531# CONFIG_SCSI_DH is not set
532# CONFIG_SCSI_OSD_INITIATOR is not set
521CONFIG_ATA=y 533CONFIG_ATA=y
522# CONFIG_ATA_NONSTANDARD is not set 534# CONFIG_ATA_NONSTANDARD is not set
523CONFIG_SATA_PMP=y 535CONFIG_SATA_PMP=y
@@ -528,6 +540,7 @@ CONFIG_PATA_MPC52xx=y
528# CONFIG_MD is not set 540# CONFIG_MD is not set
529# CONFIG_MACINTOSH_DRIVERS is not set 541# CONFIG_MACINTOSH_DRIVERS is not set
530CONFIG_NETDEVICES=y 542CONFIG_NETDEVICES=y
543CONFIG_COMPAT_NET_DEV_OPS=y
531# CONFIG_DUMMY is not set 544# CONFIG_DUMMY is not set
532# CONFIG_BONDING is not set 545# CONFIG_BONDING is not set
533# CONFIG_MACVLAN is not set 546# CONFIG_MACVLAN is not set
@@ -556,6 +569,8 @@ CONFIG_ICPLUS_PHY=y
556CONFIG_MDIO_BITBANG=y 569CONFIG_MDIO_BITBANG=y
557CONFIG_NET_ETHERNET=y 570CONFIG_NET_ETHERNET=y
558CONFIG_MII=y 571CONFIG_MII=y
572# CONFIG_ETHOC is not set
573# CONFIG_DNET is not set
559# CONFIG_IBM_NEW_EMAC_ZMII is not set 574# CONFIG_IBM_NEW_EMAC_ZMII is not set
560# CONFIG_IBM_NEW_EMAC_RGMII is not set 575# CONFIG_IBM_NEW_EMAC_RGMII is not set
561# CONFIG_IBM_NEW_EMAC_TAH is not set 576# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -574,7 +589,6 @@ CONFIG_FEC_MPC52xx_MDIO=y
574# 589#
575# CONFIG_WLAN_PRE80211 is not set 590# CONFIG_WLAN_PRE80211 is not set
576# CONFIG_WLAN_80211 is not set 591# CONFIG_WLAN_80211 is not set
577# CONFIG_IWLWIFI_LEDS is not set
578 592
579# 593#
580# Enable WiMAX (Networking options) to see the WiMAX drivers 594# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -665,7 +679,6 @@ CONFIG_I2C_MPC=y
665# CONFIG_SENSORS_PCF8574 is not set 679# CONFIG_SENSORS_PCF8574 is not set
666# CONFIG_PCF8575 is not set 680# CONFIG_PCF8575 is not set
667# CONFIG_SENSORS_PCA9539 is not set 681# CONFIG_SENSORS_PCA9539 is not set
668# CONFIG_SENSORS_PCF8591 is not set
669# CONFIG_SENSORS_MAX6875 is not set 682# CONFIG_SENSORS_MAX6875 is not set
670# CONFIG_SENSORS_TSL2550 is not set 683# CONFIG_SENSORS_TSL2550 is not set
671# CONFIG_I2C_DEBUG_CORE is not set 684# CONFIG_I2C_DEBUG_CORE is not set
@@ -696,6 +709,7 @@ CONFIG_HWMON=y
696# CONFIG_SENSORS_F71805F is not set 709# CONFIG_SENSORS_F71805F is not set
697# CONFIG_SENSORS_F71882FG is not set 710# CONFIG_SENSORS_F71882FG is not set
698# CONFIG_SENSORS_F75375S is not set 711# CONFIG_SENSORS_F75375S is not set
712# CONFIG_SENSORS_G760A is not set
699# CONFIG_SENSORS_GL518SM is not set 713# CONFIG_SENSORS_GL518SM is not set
700# CONFIG_SENSORS_GL520SM is not set 714# CONFIG_SENSORS_GL520SM is not set
701# CONFIG_SENSORS_IT87 is not set 715# CONFIG_SENSORS_IT87 is not set
@@ -710,11 +724,14 @@ CONFIG_HWMON=y
710# CONFIG_SENSORS_LM90 is not set 724# CONFIG_SENSORS_LM90 is not set
711# CONFIG_SENSORS_LM92 is not set 725# CONFIG_SENSORS_LM92 is not set
712# CONFIG_SENSORS_LM93 is not set 726# CONFIG_SENSORS_LM93 is not set
727# CONFIG_SENSORS_LTC4215 is not set
713# CONFIG_SENSORS_LTC4245 is not set 728# CONFIG_SENSORS_LTC4245 is not set
729# CONFIG_SENSORS_LM95241 is not set
714# CONFIG_SENSORS_MAX1619 is not set 730# CONFIG_SENSORS_MAX1619 is not set
715# CONFIG_SENSORS_MAX6650 is not set 731# CONFIG_SENSORS_MAX6650 is not set
716# CONFIG_SENSORS_PC87360 is not set 732# CONFIG_SENSORS_PC87360 is not set
717# CONFIG_SENSORS_PC87427 is not set 733# CONFIG_SENSORS_PC87427 is not set
734# CONFIG_SENSORS_PCF8591 is not set
718# CONFIG_SENSORS_DME1737 is not set 735# CONFIG_SENSORS_DME1737 is not set
719# CONFIG_SENSORS_SMSC47M1 is not set 736# CONFIG_SENSORS_SMSC47M1 is not set
720# CONFIG_SENSORS_SMSC47M192 is not set 737# CONFIG_SENSORS_SMSC47M192 is not set
@@ -800,7 +817,9 @@ CONFIG_LEDS_CLASS=y
800# 817#
801# LED drivers 818# LED drivers
802# 819#
820# CONFIG_LEDS_LP5521 is not set
803# CONFIG_LEDS_PCA955X is not set 821# CONFIG_LEDS_PCA955X is not set
822# CONFIG_LEDS_BD2802 is not set
804 823
805# 824#
806# LED Triggers 825# LED Triggers
@@ -810,6 +829,10 @@ CONFIG_LEDS_TRIGGER_TIMER=y
810# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set 829# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
811# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set 830# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
812# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 831# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
832
833#
834# iptables trigger is under Netfilter config (LED target)
835#
813# CONFIG_ACCESSIBILITY is not set 836# CONFIG_ACCESSIBILITY is not set
814# CONFIG_EDAC is not set 837# CONFIG_EDAC is not set
815CONFIG_RTC_LIB=y 838CONFIG_RTC_LIB=y
@@ -866,8 +889,9 @@ CONFIG_RTC_DRV_DS1307=y
866# 889#
867# on-CPU RTC drivers 890# on-CPU RTC drivers
868# 891#
869# CONFIG_RTC_DRV_PPC is not set 892# CONFIG_RTC_DRV_GENERIC is not set
870# CONFIG_DMADEVICES is not set 893# CONFIG_DMADEVICES is not set
894# CONFIG_AUXDISPLAY is not set
871# CONFIG_UIO is not set 895# CONFIG_UIO is not set
872# CONFIG_STAGING is not set 896# CONFIG_STAGING is not set
873 897
@@ -878,6 +902,7 @@ CONFIG_EXT2_FS=y
878# CONFIG_EXT2_FS_XATTR is not set 902# CONFIG_EXT2_FS_XATTR is not set
879# CONFIG_EXT2_FS_XIP is not set 903# CONFIG_EXT2_FS_XIP is not set
880CONFIG_EXT3_FS=y 904CONFIG_EXT3_FS=y
905# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
881CONFIG_EXT3_FS_XATTR=y 906CONFIG_EXT3_FS_XATTR=y
882# CONFIG_EXT3_FS_POSIX_ACL is not set 907# CONFIG_EXT3_FS_POSIX_ACL is not set
883# CONFIG_EXT3_FS_SECURITY is not set 908# CONFIG_EXT3_FS_SECURITY is not set
@@ -900,6 +925,11 @@ CONFIG_INOTIFY_USER=y
900# CONFIG_FUSE_FS is not set 925# CONFIG_FUSE_FS is not set
901 926
902# 927#
928# Caches
929#
930# CONFIG_FSCACHE is not set
931
932#
903# CD-ROM/DVD Filesystems 933# CD-ROM/DVD Filesystems
904# 934#
905# CONFIG_ISO9660_FS is not set 935# CONFIG_ISO9660_FS is not set
@@ -956,6 +986,7 @@ CONFIG_CRAMFS=y
956# CONFIG_ROMFS_FS is not set 986# CONFIG_ROMFS_FS is not set
957# CONFIG_SYSV_FS is not set 987# CONFIG_SYSV_FS is not set
958# CONFIG_UFS_FS is not set 988# CONFIG_UFS_FS is not set
989# CONFIG_NILFS2_FS is not set
959CONFIG_NETWORK_FILESYSTEMS=y 990CONFIG_NETWORK_FILESYSTEMS=y
960CONFIG_NFS_FS=y 991CONFIG_NFS_FS=y
961CONFIG_NFS_V3=y 992CONFIG_NFS_V3=y
@@ -968,7 +999,6 @@ CONFIG_LOCKD_V4=y
968CONFIG_NFS_COMMON=y 999CONFIG_NFS_COMMON=y
969CONFIG_SUNRPC=y 1000CONFIG_SUNRPC=y
970CONFIG_SUNRPC_GSS=y 1001CONFIG_SUNRPC_GSS=y
971# CONFIG_SUNRPC_REGISTER_V4 is not set
972CONFIG_RPCSEC_GSS_KRB5=y 1002CONFIG_RPCSEC_GSS_KRB5=y
973# CONFIG_RPCSEC_GSS_SPKM3 is not set 1003# CONFIG_RPCSEC_GSS_SPKM3 is not set
974# CONFIG_SMB_FS is not set 1004# CONFIG_SMB_FS is not set
@@ -1039,6 +1069,7 @@ CONFIG_NLS_ISO8859_1=y
1039# CONFIG_NLS_KOI8_U is not set 1069# CONFIG_NLS_KOI8_U is not set
1040# CONFIG_NLS_UTF8 is not set 1070# CONFIG_NLS_UTF8 is not set
1041# CONFIG_DLM is not set 1071# CONFIG_DLM is not set
1072# CONFIG_BINARY_PRINTF is not set
1042 1073
1043# 1074#
1044# Library routines 1075# Library routines
@@ -1054,11 +1085,12 @@ CONFIG_CRC32=y
1054# CONFIG_LIBCRC32C is not set 1085# CONFIG_LIBCRC32C is not set
1055CONFIG_ZLIB_INFLATE=y 1086CONFIG_ZLIB_INFLATE=y
1056CONFIG_ZLIB_DEFLATE=y 1087CONFIG_ZLIB_DEFLATE=y
1057CONFIG_PLIST=y 1088CONFIG_DECOMPRESS_GZIP=y
1058CONFIG_HAS_IOMEM=y 1089CONFIG_HAS_IOMEM=y
1059CONFIG_HAS_IOPORT=y 1090CONFIG_HAS_IOPORT=y
1060CONFIG_HAS_DMA=y 1091CONFIG_HAS_DMA=y
1061CONFIG_HAVE_LMB=y 1092CONFIG_HAVE_LMB=y
1093CONFIG_NLATTR=y
1062 1094
1063# 1095#
1064# Kernel hacking 1096# Kernel hacking
@@ -1076,6 +1108,9 @@ CONFIG_DEBUG_KERNEL=y
1076CONFIG_DETECT_SOFTLOCKUP=y 1108CONFIG_DETECT_SOFTLOCKUP=y
1077# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1109# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1078CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1110CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1111CONFIG_DETECT_HUNG_TASK=y
1112# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1113CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1079CONFIG_SCHED_DEBUG=y 1114CONFIG_SCHED_DEBUG=y
1080# CONFIG_SCHEDSTATS is not set 1115# CONFIG_SCHEDSTATS is not set
1081# CONFIG_TIMER_STATS is not set 1116# CONFIG_TIMER_STATS is not set
@@ -1104,9 +1139,12 @@ CONFIG_DEBUG_INFO=y
1104# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1139# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1105# CONFIG_FAULT_INJECTION is not set 1140# CONFIG_FAULT_INJECTION is not set
1106# CONFIG_LATENCYTOP is not set 1141# CONFIG_LATENCYTOP is not set
1142# CONFIG_DEBUG_PAGEALLOC is not set
1107CONFIG_HAVE_FUNCTION_TRACER=y 1143CONFIG_HAVE_FUNCTION_TRACER=y
1144CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1108CONFIG_HAVE_DYNAMIC_FTRACE=y 1145CONFIG_HAVE_DYNAMIC_FTRACE=y
1109CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1146CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1147CONFIG_TRACING_SUPPORT=y
1110 1148
1111# 1149#
1112# Tracers 1150# Tracers
@@ -1114,17 +1152,19 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1114# CONFIG_FUNCTION_TRACER is not set 1152# CONFIG_FUNCTION_TRACER is not set
1115# CONFIG_SCHED_TRACER is not set 1153# CONFIG_SCHED_TRACER is not set
1116# CONFIG_CONTEXT_SWITCH_TRACER is not set 1154# CONFIG_CONTEXT_SWITCH_TRACER is not set
1155# CONFIG_EVENT_TRACER is not set
1117# CONFIG_BOOT_TRACER is not set 1156# CONFIG_BOOT_TRACER is not set
1118# CONFIG_TRACE_BRANCH_PROFILING is not set 1157# CONFIG_TRACE_BRANCH_PROFILING is not set
1119# CONFIG_STACK_TRACER is not set 1158# CONFIG_STACK_TRACER is not set
1120# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1159# CONFIG_KMEMTRACE is not set
1160# CONFIG_WORKQUEUE_TRACER is not set
1161# CONFIG_BLK_DEV_IO_TRACE is not set
1121# CONFIG_SAMPLES is not set 1162# CONFIG_SAMPLES is not set
1122CONFIG_HAVE_ARCH_KGDB=y 1163CONFIG_HAVE_ARCH_KGDB=y
1123# CONFIG_KGDB is not set 1164# CONFIG_KGDB is not set
1124CONFIG_PRINT_STACK_DEPTH=64 1165CONFIG_PRINT_STACK_DEPTH=64
1125# CONFIG_DEBUG_STACKOVERFLOW is not set 1166# CONFIG_DEBUG_STACKOVERFLOW is not set
1126# CONFIG_DEBUG_STACK_USAGE is not set 1167# CONFIG_DEBUG_STACK_USAGE is not set
1127# CONFIG_DEBUG_PAGEALLOC is not set
1128# CONFIG_CODE_PATCHING_SELFTEST is not set 1168# CONFIG_CODE_PATCHING_SELFTEST is not set
1129# CONFIG_FTR_FIXUP_SELFTEST is not set 1169# CONFIG_FTR_FIXUP_SELFTEST is not set
1130# CONFIG_MSI_BITMAP_SELFTEST is not set 1170# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1155,10 +1195,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1155CONFIG_CRYPTO_HASH=y 1195CONFIG_CRYPTO_HASH=y
1156CONFIG_CRYPTO_HASH2=y 1196CONFIG_CRYPTO_HASH2=y
1157CONFIG_CRYPTO_RNG2=y 1197CONFIG_CRYPTO_RNG2=y
1198CONFIG_CRYPTO_PCOMP=y
1158CONFIG_CRYPTO_MANAGER=y 1199CONFIG_CRYPTO_MANAGER=y
1159CONFIG_CRYPTO_MANAGER2=y 1200CONFIG_CRYPTO_MANAGER2=y
1160# CONFIG_CRYPTO_GF128MUL is not set 1201# CONFIG_CRYPTO_GF128MUL is not set
1161# CONFIG_CRYPTO_NULL is not set 1202# CONFIG_CRYPTO_NULL is not set
1203CONFIG_CRYPTO_WORKQUEUE=y
1162# CONFIG_CRYPTO_CRYPTD is not set 1204# CONFIG_CRYPTO_CRYPTD is not set
1163# CONFIG_CRYPTO_AUTHENC is not set 1205# CONFIG_CRYPTO_AUTHENC is not set
1164 1206
@@ -1226,6 +1268,7 @@ CONFIG_CRYPTO_DES=y
1226# Compression 1268# Compression
1227# 1269#
1228# CONFIG_CRYPTO_DEFLATE is not set 1270# CONFIG_CRYPTO_DEFLATE is not set
1271# CONFIG_CRYPTO_ZLIB is not set
1229# CONFIG_CRYPTO_LZO is not set 1272# CONFIG_CRYPTO_LZO is not set
1230 1273
1231# 1274#
diff --git a/arch/powerpc/configs/52xx/pcm030_defconfig b/arch/powerpc/configs/52xx/pcm030_defconfig
index 00944c09a0ae..afb1a3d1ef0a 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.29-rc2 3# Linux kernel version: 2.6.30-rc2
4# Mon Jan 26 21:41:33 2009 4# Sat Apr 18 00:48:42 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -14,6 +14,7 @@ CONFIG_6xx=y
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
17CONFIG_PPC_FPU=y 18CONFIG_PPC_FPU=y
18# CONFIG_ALTIVEC is not set 19# CONFIG_ALTIVEC is not set
19CONFIG_PPC_STD_MMU=y 20CONFIG_PPC_STD_MMU=y
@@ -54,6 +55,7 @@ CONFIG_GENERIC_BUG=y
54CONFIG_DEFAULT_UIMAGE=y 55CONFIG_DEFAULT_UIMAGE=y
55# CONFIG_PPC_DCR_NATIVE is not set 56# CONFIG_PPC_DCR_NATIVE is not set
56# CONFIG_PPC_DCR_MMIO is not set 57# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
58 60
59# 61#
@@ -69,6 +71,7 @@ CONFIG_LOCALVERSION="trunk"
69CONFIG_SYSVIPC=y 71CONFIG_SYSVIPC=y
70CONFIG_SYSVIPC_SYSCTL=y 72CONFIG_SYSVIPC_SYSCTL=y
71CONFIG_POSIX_MQUEUE=y 73CONFIG_POSIX_MQUEUE=y
74CONFIG_POSIX_MQUEUE_SYSCTL=y
72# CONFIG_BSD_PROCESS_ACCT is not set 75# CONFIG_BSD_PROCESS_ACCT is not set
73# CONFIG_TASKSTATS is not set 76# CONFIG_TASKSTATS is not set
74# CONFIG_AUDIT is not set 77# CONFIG_AUDIT is not set
@@ -97,18 +100,18 @@ CONFIG_SYSFS_DEPRECATED_V2=y
97# CONFIG_BLK_DEV_INITRD is not set 100# CONFIG_BLK_DEV_INITRD is not set
98# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 101# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
99CONFIG_SYSCTL=y 102CONFIG_SYSCTL=y
103CONFIG_ANON_INODES=y
100CONFIG_EMBEDDED=y 104CONFIG_EMBEDDED=y
101# CONFIG_SYSCTL_SYSCALL is not set 105# CONFIG_SYSCTL_SYSCALL is not set
102CONFIG_KALLSYMS=y 106CONFIG_KALLSYMS=y
103# CONFIG_KALLSYMS_EXTRA_PASS is not set 107# CONFIG_KALLSYMS_EXTRA_PASS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
104CONFIG_HOTPLUG=y 109CONFIG_HOTPLUG=y
105CONFIG_PRINTK=y 110CONFIG_PRINTK=y
106CONFIG_BUG=y 111CONFIG_BUG=y
107CONFIG_ELF_CORE=y 112CONFIG_ELF_CORE=y
108CONFIG_COMPAT_BRK=y
109CONFIG_BASE_FULL=y 113CONFIG_BASE_FULL=y
110CONFIG_FUTEX=y 114CONFIG_FUTEX=y
111CONFIG_ANON_INODES=y
112CONFIG_EPOLL=y 115CONFIG_EPOLL=y
113CONFIG_SIGNALFD=y 116CONFIG_SIGNALFD=y
114CONFIG_TIMERFD=y 117CONFIG_TIMERFD=y
@@ -117,10 +120,12 @@ CONFIG_SHMEM=y
117CONFIG_AIO=y 120CONFIG_AIO=y
118# CONFIG_VM_EVENT_COUNTERS is not set 121# CONFIG_VM_EVENT_COUNTERS is not set
119CONFIG_PCI_QUIRKS=y 122CONFIG_PCI_QUIRKS=y
123CONFIG_COMPAT_BRK=y
120CONFIG_SLAB=y 124CONFIG_SLAB=y
121# CONFIG_SLUB is not set 125# CONFIG_SLUB is not set
122# CONFIG_SLOB is not set 126# CONFIG_SLOB is not set
123# CONFIG_PROFILING is not set 127# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
124CONFIG_HAVE_OPROFILE=y 129CONFIG_HAVE_OPROFILE=y
125# CONFIG_KPROBES is not set 130# CONFIG_KPROBES is not set
126CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 131CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -129,6 +134,7 @@ CONFIG_HAVE_KPROBES=y
129CONFIG_HAVE_KRETPROBES=y 134CONFIG_HAVE_KRETPROBES=y
130CONFIG_HAVE_ARCH_TRACEHOOK=y 135CONFIG_HAVE_ARCH_TRACEHOOK=y
131CONFIG_HAVE_CLK=y 136CONFIG_HAVE_CLK=y
137# CONFIG_SLOW_WORK is not set
132# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 138# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
133CONFIG_SLABINFO=y 139CONFIG_SLABINFO=y
134CONFIG_RT_MUTEXES=y 140CONFIG_RT_MUTEXES=y
@@ -141,7 +147,6 @@ CONFIG_MODULE_UNLOAD=y
141# CONFIG_MODULE_SRCVERSION_ALL is not set 147# CONFIG_MODULE_SRCVERSION_ALL is not set
142CONFIG_BLOCK=y 148CONFIG_BLOCK=y
143# CONFIG_LBD is not set 149# CONFIG_LBD is not set
144# CONFIG_BLK_DEV_IO_TRACE is not set
145# CONFIG_BLK_DEV_BSG is not set 150# CONFIG_BLK_DEV_BSG is not set
146# CONFIG_BLK_DEV_INTEGRITY is not set 151# CONFIG_BLK_DEV_INTEGRITY is not set
147 152
@@ -162,8 +167,6 @@ CONFIG_DEFAULT_IOSCHED="noop"
162# 167#
163# Platform support 168# Platform support
164# 169#
165CONFIG_PPC_MULTIPLATFORM=y
166CONFIG_CLASSIC32=y
167# CONFIG_PPC_CHRP is not set 170# CONFIG_PPC_CHRP is not set
168# CONFIG_MPC5121_ADS is not set 171# CONFIG_MPC5121_ADS is not set
169# CONFIG_MPC5121_GENERIC is not set 172# CONFIG_MPC5121_GENERIC is not set
@@ -171,6 +174,7 @@ CONFIG_PPC_MPC52xx=y
171CONFIG_PPC_MPC5200_SIMPLE=y 174CONFIG_PPC_MPC5200_SIMPLE=y
172# CONFIG_PPC_EFIKA is not set 175# CONFIG_PPC_EFIKA is not set
173# CONFIG_PPC_LITE5200 is not set 176# CONFIG_PPC_LITE5200 is not set
177# CONFIG_PPC_MEDIA5200 is not set
174# CONFIG_PPC_MPC5200_BUGFIX is not set 178# CONFIG_PPC_MPC5200_BUGFIX is not set
175# CONFIG_PPC_MPC5200_GPIO is not set 179# CONFIG_PPC_MPC5200_GPIO is not set
176# CONFIG_PPC_PMAC is not set 180# CONFIG_PPC_PMAC is not set
@@ -181,6 +185,8 @@ CONFIG_PPC_MPC5200_SIMPLE=y
181# CONFIG_PPC_83xx is not set 185# CONFIG_PPC_83xx is not set
182# CONFIG_PPC_86xx is not set 186# CONFIG_PPC_86xx is not set
183# CONFIG_EMBEDDED6xx is not set 187# CONFIG_EMBEDDED6xx is not set
188# CONFIG_AMIGAONE is not set
189CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
184# CONFIG_IPIC is not set 190# CONFIG_IPIC is not set
185# CONFIG_MPIC is not set 191# CONFIG_MPIC is not set
186# CONFIG_MPIC_WEIRD is not set 192# CONFIG_MPIC_WEIRD is not set
@@ -242,9 +248,12 @@ CONFIG_ZONE_DMA_FLAG=1
242CONFIG_BOUNCE=y 248CONFIG_BOUNCE=y
243CONFIG_VIRT_TO_BUS=y 249CONFIG_VIRT_TO_BUS=y
244CONFIG_UNEVICTABLE_LRU=y 250CONFIG_UNEVICTABLE_LRU=y
251CONFIG_HAVE_MLOCK=y
252CONFIG_HAVE_MLOCKED_PAGE_BIT=y
245CONFIG_PPC_4K_PAGES=y 253CONFIG_PPC_4K_PAGES=y
246# CONFIG_PPC_16K_PAGES is not set 254# CONFIG_PPC_16K_PAGES is not set
247# CONFIG_PPC_64K_PAGES is not set 255# CONFIG_PPC_64K_PAGES is not set
256# CONFIG_PPC_256K_PAGES is not set
248CONFIG_FORCE_MAX_ZONEORDER=11 257CONFIG_FORCE_MAX_ZONEORDER=11
249CONFIG_PROC_DEVICETREE=y 258CONFIG_PROC_DEVICETREE=y
250# CONFIG_CMDLINE_BOOL is not set 259# CONFIG_CMDLINE_BOOL is not set
@@ -268,6 +277,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
268# CONFIG_PCI_MSI is not set 277# CONFIG_PCI_MSI is not set
269CONFIG_PCI_LEGACY=y 278CONFIG_PCI_LEGACY=y
270# CONFIG_PCI_STUB is not set 279# CONFIG_PCI_STUB is not set
280# CONFIG_PCI_IOV is not set
271# CONFIG_PCCARD is not set 281# CONFIG_PCCARD is not set
272# CONFIG_HOTPLUG_PCI is not set 282# CONFIG_HOTPLUG_PCI is not set
273# CONFIG_HAS_RAPIDIO is not set 283# CONFIG_HAS_RAPIDIO is not set
@@ -290,7 +300,6 @@ CONFIG_NET=y
290# 300#
291# Networking options 301# Networking options
292# 302#
293CONFIG_COMPAT_NET_DEV_OPS=y
294CONFIG_PACKET=y 303CONFIG_PACKET=y
295# CONFIG_PACKET_MMAP is not set 304# CONFIG_PACKET_MMAP is not set
296CONFIG_UNIX=y 305CONFIG_UNIX=y
@@ -340,6 +349,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
340# CONFIG_LAPB is not set 349# CONFIG_LAPB is not set
341# CONFIG_ECONET is not set 350# CONFIG_ECONET is not set
342# CONFIG_WAN_ROUTER is not set 351# CONFIG_WAN_ROUTER is not set
352# CONFIG_PHONET is not set
343# CONFIG_NET_SCHED is not set 353# CONFIG_NET_SCHED is not set
344# CONFIG_DCB is not set 354# CONFIG_DCB is not set
345 355
@@ -352,7 +362,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_IRDA is not set 362# CONFIG_IRDA is not set
353# CONFIG_BT is not set 363# CONFIG_BT is not set
354# CONFIG_AF_RXRPC is not set 364# CONFIG_AF_RXRPC is not set
355# CONFIG_PHONET is not set
356# CONFIG_WIRELESS is not set 365# CONFIG_WIRELESS is not set
357# CONFIG_WIMAX is not set 366# CONFIG_WIMAX is not set
358# CONFIG_RFKILL is not set 367# CONFIG_RFKILL is not set
@@ -451,7 +460,6 @@ CONFIG_MTD_PHYSMAP=y
451# LPDDR flash memory drivers 460# LPDDR flash memory drivers
452# 461#
453# CONFIG_MTD_LPDDR is not set 462# CONFIG_MTD_LPDDR is not set
454# CONFIG_MTD_QINFO_PROBE is not set
455 463
456# 464#
457# UBI - Unsorted block images 465# UBI - Unsorted block images
@@ -504,6 +512,7 @@ CONFIG_SCSI_WAIT_SCAN=m
504# CONFIG_SCSI_SRP_ATTRS is not set 512# CONFIG_SCSI_SRP_ATTRS is not set
505# CONFIG_SCSI_LOWLEVEL is not set 513# CONFIG_SCSI_LOWLEVEL is not set
506# CONFIG_SCSI_DH is not set 514# CONFIG_SCSI_DH is not set
515# CONFIG_SCSI_OSD_INITIATOR is not set
507CONFIG_ATA=m 516CONFIG_ATA=m
508# CONFIG_ATA_NONSTANDARD is not set 517# CONFIG_ATA_NONSTANDARD is not set
509CONFIG_SATA_PMP=y 518CONFIG_SATA_PMP=y
@@ -580,6 +589,7 @@ CONFIG_PATA_MPC52xx=m
580# CONFIG_I2O is not set 589# CONFIG_I2O is not set
581# CONFIG_MACINTOSH_DRIVERS is not set 590# CONFIG_MACINTOSH_DRIVERS is not set
582CONFIG_NETDEVICES=y 591CONFIG_NETDEVICES=y
592CONFIG_COMPAT_NET_DEV_OPS=y
583# CONFIG_DUMMY is not set 593# CONFIG_DUMMY is not set
584# CONFIG_BONDING is not set 594# CONFIG_BONDING is not set
585# CONFIG_MACVLAN is not set 595# CONFIG_MACVLAN is not set
@@ -613,6 +623,8 @@ CONFIG_MII=y
613# CONFIG_SUNGEM is not set 623# CONFIG_SUNGEM is not set
614# CONFIG_CASSINI is not set 624# CONFIG_CASSINI is not set
615# CONFIG_NET_VENDOR_3COM is not set 625# CONFIG_NET_VENDOR_3COM is not set
626# CONFIG_ETHOC is not set
627# CONFIG_DNET is not set
616# CONFIG_NET_TULIP is not set 628# CONFIG_NET_TULIP is not set
617# CONFIG_HP100 is not set 629# CONFIG_HP100 is not set
618# CONFIG_IBM_NEW_EMAC_ZMII is not set 630# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -636,7 +648,6 @@ CONFIG_FEC_MPC52xx_MDIO=y
636# 648#
637# CONFIG_WLAN_PRE80211 is not set 649# CONFIG_WLAN_PRE80211 is not set
638# CONFIG_WLAN_80211 is not set 650# CONFIG_WLAN_80211 is not set
639# CONFIG_IWLWIFI_LEDS is not set
640 651
641# 652#
642# Enable WiMAX (Networking options) to see the WiMAX drivers 653# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -702,6 +713,7 @@ CONFIG_UNIX98_PTYS=y
702# CONFIG_HVC_UDBG is not set 713# CONFIG_HVC_UDBG is not set
703# CONFIG_IPMI_HANDLER is not set 714# CONFIG_IPMI_HANDLER is not set
704CONFIG_HW_RANDOM=y 715CONFIG_HW_RANDOM=y
716# CONFIG_HW_RANDOM_TIMERIOMEM is not set
705# CONFIG_NVRAM is not set 717# CONFIG_NVRAM is not set
706# CONFIG_R3964 is not set 718# CONFIG_R3964 is not set
707# CONFIG_APPLICOM is not set 719# CONFIG_APPLICOM is not set
@@ -767,7 +779,6 @@ CONFIG_I2C_MPC=y
767# CONFIG_SENSORS_PCF8574 is not set 779# CONFIG_SENSORS_PCF8574 is not set
768# CONFIG_PCF8575 is not set 780# CONFIG_PCF8575 is not set
769# CONFIG_SENSORS_PCA9539 is not set 781# CONFIG_SENSORS_PCA9539 is not set
770# CONFIG_SENSORS_PCF8591 is not set
771# CONFIG_SENSORS_MAX6875 is not set 782# CONFIG_SENSORS_MAX6875 is not set
772# CONFIG_SENSORS_TSL2550 is not set 783# CONFIG_SENSORS_TSL2550 is not set
773# CONFIG_I2C_DEBUG_CORE is not set 784# CONFIG_I2C_DEBUG_CORE is not set
@@ -889,11 +900,11 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
889# CONFIG_USB_TMC is not set 900# CONFIG_USB_TMC is not set
890 901
891# 902#
892# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 903# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
893# 904#
894 905
895# 906#
896# see USB_STORAGE Help for more information 907# also be needed; see USB_STORAGE Help for more info
897# 908#
898CONFIG_USB_STORAGE=m 909CONFIG_USB_STORAGE=m
899# CONFIG_USB_STORAGE_DEBUG is not set 910# CONFIG_USB_STORAGE_DEBUG is not set
@@ -934,7 +945,6 @@ CONFIG_USB_STORAGE=m
934# CONFIG_USB_LED is not set 945# CONFIG_USB_LED is not set
935# CONFIG_USB_CYPRESS_CY7C63 is not set 946# CONFIG_USB_CYPRESS_CY7C63 is not set
936# CONFIG_USB_CYTHERM is not set 947# CONFIG_USB_CYTHERM is not set
937# CONFIG_USB_PHIDGET is not set
938# CONFIG_USB_IDMOUSE is not set 948# CONFIG_USB_IDMOUSE is not set
939# CONFIG_USB_FTDI_ELAN is not set 949# CONFIG_USB_FTDI_ELAN is not set
940# CONFIG_USB_APPLEDISPLAY is not set 950# CONFIG_USB_APPLEDISPLAY is not set
@@ -949,6 +959,7 @@ CONFIG_USB_STORAGE=m
949# 959#
950# OTG and related infrastructure 960# OTG and related infrastructure
951# 961#
962# CONFIG_NOP_USB_XCEIV is not set
952# CONFIG_UWB is not set 963# CONFIG_UWB is not set
953# CONFIG_MMC is not set 964# CONFIG_MMC is not set
954# CONFIG_MEMSTICK is not set 965# CONFIG_MEMSTICK is not set
@@ -1007,8 +1018,9 @@ CONFIG_RTC_DRV_PCF8563=m
1007# 1018#
1008# on-CPU RTC drivers 1019# on-CPU RTC drivers
1009# 1020#
1010# CONFIG_RTC_DRV_PPC is not set 1021# CONFIG_RTC_DRV_GENERIC is not set
1011# CONFIG_DMADEVICES is not set 1022# CONFIG_DMADEVICES is not set
1023# CONFIG_AUXDISPLAY is not set
1012# CONFIG_UIO is not set 1024# CONFIG_UIO is not set
1013# CONFIG_STAGING is not set 1025# CONFIG_STAGING is not set
1014 1026
@@ -1019,6 +1031,7 @@ CONFIG_EXT2_FS=m
1019# CONFIG_EXT2_FS_XATTR is not set 1031# CONFIG_EXT2_FS_XATTR is not set
1020# CONFIG_EXT2_FS_XIP is not set 1032# CONFIG_EXT2_FS_XIP is not set
1021CONFIG_EXT3_FS=m 1033CONFIG_EXT3_FS=m
1034# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1022CONFIG_EXT3_FS_XATTR=y 1035CONFIG_EXT3_FS_XATTR=y
1023# CONFIG_EXT3_FS_POSIX_ACL is not set 1036# CONFIG_EXT3_FS_POSIX_ACL is not set
1024# CONFIG_EXT3_FS_SECURITY is not set 1037# CONFIG_EXT3_FS_SECURITY is not set
@@ -1040,6 +1053,11 @@ CONFIG_FILE_LOCKING=y
1040# CONFIG_FUSE_FS is not set 1053# CONFIG_FUSE_FS is not set
1041 1054
1042# 1055#
1056# Caches
1057#
1058# CONFIG_FSCACHE is not set
1059
1060#
1043# CD-ROM/DVD Filesystems 1061# CD-ROM/DVD Filesystems
1044# 1062#
1045# CONFIG_ISO9660_FS is not set 1063# CONFIG_ISO9660_FS is not set
@@ -1096,6 +1114,7 @@ CONFIG_JFFS2_RTIME=y
1096# CONFIG_ROMFS_FS is not set 1114# CONFIG_ROMFS_FS is not set
1097# CONFIG_SYSV_FS is not set 1115# CONFIG_SYSV_FS is not set
1098# CONFIG_UFS_FS is not set 1116# CONFIG_UFS_FS is not set
1117# CONFIG_NILFS2_FS is not set
1099CONFIG_NETWORK_FILESYSTEMS=y 1118CONFIG_NETWORK_FILESYSTEMS=y
1100CONFIG_NFS_FS=y 1119CONFIG_NFS_FS=y
1101CONFIG_NFS_V3=y 1120CONFIG_NFS_V3=y
@@ -1107,7 +1126,6 @@ CONFIG_LOCKD=y
1107CONFIG_LOCKD_V4=y 1126CONFIG_LOCKD_V4=y
1108CONFIG_NFS_COMMON=y 1127CONFIG_NFS_COMMON=y
1109CONFIG_SUNRPC=y 1128CONFIG_SUNRPC=y
1110# CONFIG_SUNRPC_REGISTER_V4 is not set
1111# CONFIG_RPCSEC_GSS_KRB5 is not set 1129# CONFIG_RPCSEC_GSS_KRB5 is not set
1112# CONFIG_RPCSEC_GSS_SPKM3 is not set 1130# CONFIG_RPCSEC_GSS_SPKM3 is not set
1113# CONFIG_SMB_FS is not set 1131# CONFIG_SMB_FS is not set
@@ -1162,6 +1180,7 @@ CONFIG_NLS_ISO8859_1=y
1162# CONFIG_NLS_KOI8_U is not set 1180# CONFIG_NLS_KOI8_U is not set
1163# CONFIG_NLS_UTF8 is not set 1181# CONFIG_NLS_UTF8 is not set
1164# CONFIG_DLM is not set 1182# CONFIG_DLM is not set
1183# CONFIG_BINARY_PRINTF is not set
1165 1184
1166# 1185#
1167# Library routines 1186# Library routines
@@ -1177,11 +1196,11 @@ CONFIG_CRC32=y
1177# CONFIG_LIBCRC32C is not set 1196# CONFIG_LIBCRC32C is not set
1178CONFIG_ZLIB_INFLATE=y 1197CONFIG_ZLIB_INFLATE=y
1179CONFIG_ZLIB_DEFLATE=y 1198CONFIG_ZLIB_DEFLATE=y
1180CONFIG_PLIST=y
1181CONFIG_HAS_IOMEM=y 1199CONFIG_HAS_IOMEM=y
1182CONFIG_HAS_IOPORT=y 1200CONFIG_HAS_IOPORT=y
1183CONFIG_HAS_DMA=y 1201CONFIG_HAS_DMA=y
1184CONFIG_HAVE_LMB=y 1202CONFIG_HAVE_LMB=y
1203CONFIG_NLATTR=y
1185 1204
1186# 1205#
1187# Kernel hacking 1206# Kernel hacking
@@ -1200,13 +1219,25 @@ CONFIG_FRAME_WARN=1024
1200# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1219# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1201# CONFIG_LATENCYTOP is not set 1220# CONFIG_LATENCYTOP is not set
1202CONFIG_HAVE_FUNCTION_TRACER=y 1221CONFIG_HAVE_FUNCTION_TRACER=y
1222CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1203CONFIG_HAVE_DYNAMIC_FTRACE=y 1223CONFIG_HAVE_DYNAMIC_FTRACE=y
1204CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1224CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1225CONFIG_TRACING_SUPPORT=y
1205 1226
1206# 1227#
1207# Tracers 1228# Tracers
1208# 1229#
1209# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1230# CONFIG_FUNCTION_TRACER is not set
1231# CONFIG_PREEMPT_TRACER is not set
1232# CONFIG_SCHED_TRACER is not set
1233# CONFIG_CONTEXT_SWITCH_TRACER is not set
1234# CONFIG_EVENT_TRACER is not set
1235# CONFIG_BOOT_TRACER is not set
1236# CONFIG_TRACE_BRANCH_PROFILING is not set
1237# CONFIG_STACK_TRACER is not set
1238# CONFIG_KMEMTRACE is not set
1239# CONFIG_WORKQUEUE_TRACER is not set
1240# CONFIG_BLK_DEV_IO_TRACE is not set
1210# CONFIG_SAMPLES is not set 1241# CONFIG_SAMPLES is not set
1211CONFIG_HAVE_ARCH_KGDB=y 1242CONFIG_HAVE_ARCH_KGDB=y
1212CONFIG_PRINT_STACK_DEPTH=64 1243CONFIG_PRINT_STACK_DEPTH=64
diff --git a/arch/powerpc/configs/52xx/tqm5200_defconfig b/arch/powerpc/configs/52xx/tqm5200_defconfig
index 65237ad6f07e..8585c7c12861 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.29-rc2 3# Linux kernel version: 2.6.30-rc2
4# Mon Jan 26 21:42:58 2009 4# Sat Apr 18 00:48:57 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -14,6 +14,7 @@ CONFIG_6xx=y
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
17CONFIG_PPC_FPU=y 18CONFIG_PPC_FPU=y
18# CONFIG_ALTIVEC is not set 19# CONFIG_ALTIVEC is not set
19CONFIG_PPC_STD_MMU=y 20CONFIG_PPC_STD_MMU=y
@@ -54,6 +55,7 @@ CONFIG_GENERIC_BUG=y
54CONFIG_DEFAULT_UIMAGE=y 55CONFIG_DEFAULT_UIMAGE=y
55# CONFIG_PPC_DCR_NATIVE is not set 56# CONFIG_PPC_DCR_NATIVE is not set
56# CONFIG_PPC_DCR_MMIO is not set 57# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
58 60
59# 61#
@@ -94,19 +96,22 @@ CONFIG_SYSFS_DEPRECATED_V2=y
94# CONFIG_NAMESPACES is not set 96# CONFIG_NAMESPACES is not set
95CONFIG_BLK_DEV_INITRD=y 97CONFIG_BLK_DEV_INITRD=y
96CONFIG_INITRAMFS_SOURCE="" 98CONFIG_INITRAMFS_SOURCE=""
99CONFIG_RD_GZIP=y
100# CONFIG_RD_BZIP2 is not set
101# CONFIG_RD_LZMA is not set
97# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 102# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
98CONFIG_SYSCTL=y 103CONFIG_SYSCTL=y
104CONFIG_ANON_INODES=y
99CONFIG_EMBEDDED=y 105CONFIG_EMBEDDED=y
100# CONFIG_SYSCTL_SYSCALL is not set 106# CONFIG_SYSCTL_SYSCALL is not set
101# CONFIG_KALLSYMS is not set 107# CONFIG_KALLSYMS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
102CONFIG_HOTPLUG=y 109CONFIG_HOTPLUG=y
103CONFIG_PRINTK=y 110CONFIG_PRINTK=y
104CONFIG_BUG=y 111CONFIG_BUG=y
105CONFIG_ELF_CORE=y 112CONFIG_ELF_CORE=y
106CONFIG_COMPAT_BRK=y
107CONFIG_BASE_FULL=y 113CONFIG_BASE_FULL=y
108CONFIG_FUTEX=y 114CONFIG_FUTEX=y
109CONFIG_ANON_INODES=y
110# CONFIG_EPOLL is not set 115# CONFIG_EPOLL is not set
111CONFIG_SIGNALFD=y 116CONFIG_SIGNALFD=y
112CONFIG_TIMERFD=y 117CONFIG_TIMERFD=y
@@ -115,10 +120,12 @@ CONFIG_SHMEM=y
115CONFIG_AIO=y 120CONFIG_AIO=y
116CONFIG_VM_EVENT_COUNTERS=y 121CONFIG_VM_EVENT_COUNTERS=y
117CONFIG_SLUB_DEBUG=y 122CONFIG_SLUB_DEBUG=y
123CONFIG_COMPAT_BRK=y
118# CONFIG_SLAB is not set 124# CONFIG_SLAB is not set
119CONFIG_SLUB=y 125CONFIG_SLUB=y
120# CONFIG_SLOB is not set 126# CONFIG_SLOB is not set
121# CONFIG_PROFILING is not set 127# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
122CONFIG_HAVE_OPROFILE=y 129CONFIG_HAVE_OPROFILE=y
123CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 130CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
124CONFIG_HAVE_IOREMAP_PROT=y 131CONFIG_HAVE_IOREMAP_PROT=y
@@ -126,6 +133,7 @@ CONFIG_HAVE_KPROBES=y
126CONFIG_HAVE_KRETPROBES=y 133CONFIG_HAVE_KRETPROBES=y
127CONFIG_HAVE_ARCH_TRACEHOOK=y 134CONFIG_HAVE_ARCH_TRACEHOOK=y
128CONFIG_HAVE_CLK=y 135CONFIG_HAVE_CLK=y
136# CONFIG_SLOW_WORK is not set
129# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 137# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
130CONFIG_SLABINFO=y 138CONFIG_SLABINFO=y
131CONFIG_RT_MUTEXES=y 139CONFIG_RT_MUTEXES=y
@@ -138,7 +146,6 @@ CONFIG_MODVERSIONS=y
138# CONFIG_MODULE_SRCVERSION_ALL is not set 146# CONFIG_MODULE_SRCVERSION_ALL is not set
139CONFIG_BLOCK=y 147CONFIG_BLOCK=y
140# CONFIG_LBD is not set 148# CONFIG_LBD is not set
141# CONFIG_BLK_DEV_IO_TRACE is not set
142# CONFIG_BLK_DEV_BSG is not set 149# CONFIG_BLK_DEV_BSG is not set
143# CONFIG_BLK_DEV_INTEGRITY is not set 150# CONFIG_BLK_DEV_INTEGRITY is not set
144 151
@@ -159,8 +166,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
159# 166#
160# Platform support 167# Platform support
161# 168#
162CONFIG_PPC_MULTIPLATFORM=y
163CONFIG_CLASSIC32=y
164# CONFIG_PPC_CHRP is not set 169# CONFIG_PPC_CHRP is not set
165# CONFIG_MPC5121_ADS is not set 170# CONFIG_MPC5121_ADS is not set
166# CONFIG_MPC5121_GENERIC is not set 171# CONFIG_MPC5121_GENERIC is not set
@@ -168,6 +173,7 @@ CONFIG_PPC_MPC52xx=y
168CONFIG_PPC_MPC5200_SIMPLE=y 173CONFIG_PPC_MPC5200_SIMPLE=y
169# CONFIG_PPC_EFIKA is not set 174# CONFIG_PPC_EFIKA is not set
170# CONFIG_PPC_LITE5200 is not set 175# CONFIG_PPC_LITE5200 is not set
176# CONFIG_PPC_MEDIA5200 is not set
171CONFIG_PPC_MPC5200_BUGFIX=y 177CONFIG_PPC_MPC5200_BUGFIX=y
172# CONFIG_PPC_MPC5200_GPIO is not set 178# CONFIG_PPC_MPC5200_GPIO is not set
173# CONFIG_PPC_PMAC is not set 179# CONFIG_PPC_PMAC is not set
@@ -178,6 +184,8 @@ CONFIG_PPC_MPC5200_BUGFIX=y
178# CONFIG_PPC_83xx is not set 184# CONFIG_PPC_83xx is not set
179# CONFIG_PPC_86xx is not set 185# CONFIG_PPC_86xx is not set
180# CONFIG_EMBEDDED6xx is not set 186# CONFIG_EMBEDDED6xx is not set
187# CONFIG_AMIGAONE is not set
188CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
181# CONFIG_IPIC is not set 189# CONFIG_IPIC is not set
182# CONFIG_MPIC is not set 190# CONFIG_MPIC is not set
183# CONFIG_MPIC_WEIRD is not set 191# CONFIG_MPIC_WEIRD is not set
@@ -238,9 +246,12 @@ CONFIG_ZONE_DMA_FLAG=1
238CONFIG_BOUNCE=y 246CONFIG_BOUNCE=y
239CONFIG_VIRT_TO_BUS=y 247CONFIG_VIRT_TO_BUS=y
240CONFIG_UNEVICTABLE_LRU=y 248CONFIG_UNEVICTABLE_LRU=y
249CONFIG_HAVE_MLOCK=y
250CONFIG_HAVE_MLOCKED_PAGE_BIT=y
241CONFIG_PPC_4K_PAGES=y 251CONFIG_PPC_4K_PAGES=y
242# CONFIG_PPC_16K_PAGES is not set 252# CONFIG_PPC_16K_PAGES is not set
243# CONFIG_PPC_64K_PAGES is not set 253# CONFIG_PPC_64K_PAGES is not set
254# CONFIG_PPC_256K_PAGES is not set
244CONFIG_FORCE_MAX_ZONEORDER=11 255CONFIG_FORCE_MAX_ZONEORDER=11
245CONFIG_PROC_DEVICETREE=y 256CONFIG_PROC_DEVICETREE=y
246# CONFIG_CMDLINE_BOOL is not set 257# CONFIG_CMDLINE_BOOL is not set
@@ -281,7 +292,6 @@ CONFIG_NET=y
281# 292#
282# Networking options 293# Networking options
283# 294#
284CONFIG_COMPAT_NET_DEV_OPS=y
285CONFIG_PACKET=y 295CONFIG_PACKET=y
286# CONFIG_PACKET_MMAP is not set 296# CONFIG_PACKET_MMAP is not set
287CONFIG_UNIX=y 297CONFIG_UNIX=y
@@ -337,6 +347,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
337# CONFIG_LAPB is not set 347# CONFIG_LAPB is not set
338# CONFIG_ECONET is not set 348# CONFIG_ECONET is not set
339# CONFIG_WAN_ROUTER is not set 349# CONFIG_WAN_ROUTER is not set
350# CONFIG_PHONET is not set
340# CONFIG_NET_SCHED is not set 351# CONFIG_NET_SCHED is not set
341# CONFIG_DCB is not set 352# CONFIG_DCB is not set
342 353
@@ -349,7 +360,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
349# CONFIG_IRDA is not set 360# CONFIG_IRDA is not set
350# CONFIG_BT is not set 361# CONFIG_BT is not set
351# CONFIG_AF_RXRPC is not set 362# CONFIG_AF_RXRPC is not set
352# CONFIG_PHONET is not set
353# CONFIG_WIRELESS is not set 363# CONFIG_WIRELESS is not set
354# CONFIG_WIMAX is not set 364# CONFIG_WIMAX is not set
355# CONFIG_RFKILL is not set 365# CONFIG_RFKILL is not set
@@ -447,7 +457,6 @@ CONFIG_MTD_PHYSMAP_OF=y
447# LPDDR flash memory drivers 457# LPDDR flash memory drivers
448# 458#
449# CONFIG_MTD_LPDDR is not set 459# CONFIG_MTD_LPDDR is not set
450# CONFIG_MTD_QINFO_PROBE is not set
451 460
452# 461#
453# UBI - Unsorted block images 462# UBI - Unsorted block images
@@ -514,8 +523,10 @@ CONFIG_SCSI_WAIT_SCAN=m
514CONFIG_SCSI_LOWLEVEL=y 523CONFIG_SCSI_LOWLEVEL=y
515# CONFIG_ISCSI_TCP is not set 524# CONFIG_ISCSI_TCP is not set
516# CONFIG_LIBFC is not set 525# CONFIG_LIBFC is not set
526# CONFIG_LIBFCOE is not set
517# CONFIG_SCSI_DEBUG is not set 527# CONFIG_SCSI_DEBUG is not set
518# CONFIG_SCSI_DH is not set 528# CONFIG_SCSI_DH is not set
529# CONFIG_SCSI_OSD_INITIATOR is not set
519CONFIG_ATA=y 530CONFIG_ATA=y
520# CONFIG_ATA_NONSTANDARD is not set 531# CONFIG_ATA_NONSTANDARD is not set
521CONFIG_SATA_PMP=y 532CONFIG_SATA_PMP=y
@@ -527,6 +538,7 @@ CONFIG_PATA_PLATFORM=y
527# CONFIG_MD is not set 538# CONFIG_MD is not set
528# CONFIG_MACINTOSH_DRIVERS is not set 539# CONFIG_MACINTOSH_DRIVERS is not set
529CONFIG_NETDEVICES=y 540CONFIG_NETDEVICES=y
541CONFIG_COMPAT_NET_DEV_OPS=y
530# CONFIG_DUMMY is not set 542# CONFIG_DUMMY is not set
531# CONFIG_BONDING is not set 543# CONFIG_BONDING is not set
532# CONFIG_MACVLAN is not set 544# CONFIG_MACVLAN is not set
@@ -555,6 +567,8 @@ CONFIG_LXT_PHY=y
555# CONFIG_MDIO_BITBANG is not set 567# CONFIG_MDIO_BITBANG is not set
556CONFIG_NET_ETHERNET=y 568CONFIG_NET_ETHERNET=y
557# CONFIG_MII is not set 569# CONFIG_MII is not set
570# CONFIG_ETHOC is not set
571# CONFIG_DNET is not set
558# CONFIG_IBM_NEW_EMAC_ZMII is not set 572# CONFIG_IBM_NEW_EMAC_ZMII is not set
559# CONFIG_IBM_NEW_EMAC_RGMII is not set 573# CONFIG_IBM_NEW_EMAC_RGMII is not set
560# CONFIG_IBM_NEW_EMAC_TAH is not set 574# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -573,7 +587,6 @@ CONFIG_FEC_MPC52xx_MDIO=y
573# 587#
574# CONFIG_WLAN_PRE80211 is not set 588# CONFIG_WLAN_PRE80211 is not set
575# CONFIG_WLAN_80211 is not set 589# CONFIG_WLAN_80211 is not set
576# CONFIG_IWLWIFI_LEDS is not set
577 590
578# 591#
579# Enable WiMAX (Networking options) to see the WiMAX drivers 592# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -675,7 +688,6 @@ CONFIG_I2C_MPC=y
675# CONFIG_SENSORS_PCF8574 is not set 688# CONFIG_SENSORS_PCF8574 is not set
676# CONFIG_PCF8575 is not set 689# CONFIG_PCF8575 is not set
677# CONFIG_SENSORS_PCA9539 is not set 690# CONFIG_SENSORS_PCA9539 is not set
678# CONFIG_SENSORS_PCF8591 is not set
679# CONFIG_SENSORS_MAX6875 is not set 691# CONFIG_SENSORS_MAX6875 is not set
680# CONFIG_SENSORS_TSL2550 is not set 692# CONFIG_SENSORS_TSL2550 is not set
681# CONFIG_I2C_DEBUG_CORE is not set 693# CONFIG_I2C_DEBUG_CORE is not set
@@ -706,6 +718,7 @@ CONFIG_HWMON=y
706# CONFIG_SENSORS_F71805F is not set 718# CONFIG_SENSORS_F71805F is not set
707# CONFIG_SENSORS_F71882FG is not set 719# CONFIG_SENSORS_F71882FG is not set
708# CONFIG_SENSORS_F75375S is not set 720# CONFIG_SENSORS_F75375S is not set
721# CONFIG_SENSORS_G760A is not set
709# CONFIG_SENSORS_GL518SM is not set 722# CONFIG_SENSORS_GL518SM is not set
710# CONFIG_SENSORS_GL520SM is not set 723# CONFIG_SENSORS_GL520SM is not set
711# CONFIG_SENSORS_IT87 is not set 724# CONFIG_SENSORS_IT87 is not set
@@ -720,11 +733,14 @@ CONFIG_HWMON=y
720# CONFIG_SENSORS_LM90 is not set 733# CONFIG_SENSORS_LM90 is not set
721# CONFIG_SENSORS_LM92 is not set 734# CONFIG_SENSORS_LM92 is not set
722# CONFIG_SENSORS_LM93 is not set 735# CONFIG_SENSORS_LM93 is not set
736# CONFIG_SENSORS_LTC4215 is not set
723# CONFIG_SENSORS_LTC4245 is not set 737# CONFIG_SENSORS_LTC4245 is not set
738# CONFIG_SENSORS_LM95241 is not set
724# CONFIG_SENSORS_MAX1619 is not set 739# CONFIG_SENSORS_MAX1619 is not set
725# CONFIG_SENSORS_MAX6650 is not set 740# CONFIG_SENSORS_MAX6650 is not set
726# CONFIG_SENSORS_PC87360 is not set 741# CONFIG_SENSORS_PC87360 is not set
727# CONFIG_SENSORS_PC87427 is not set 742# CONFIG_SENSORS_PC87427 is not set
743# CONFIG_SENSORS_PCF8591 is not set
728# CONFIG_SENSORS_DME1737 is not set 744# CONFIG_SENSORS_DME1737 is not set
729# CONFIG_SENSORS_SMSC47M1 is not set 745# CONFIG_SENSORS_SMSC47M1 is not set
730# CONFIG_SENSORS_SMSC47M192 is not set 746# CONFIG_SENSORS_SMSC47M192 is not set
@@ -857,11 +873,11 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
857# CONFIG_USB_TMC is not set 873# CONFIG_USB_TMC is not set
858 874
859# 875#
860# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 876# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
861# 877#
862 878
863# 879#
864# see USB_STORAGE Help for more information 880# also be needed; see USB_STORAGE Help for more info
865# 881#
866CONFIG_USB_STORAGE=y 882CONFIG_USB_STORAGE=y
867# CONFIG_USB_STORAGE_DEBUG is not set 883# CONFIG_USB_STORAGE_DEBUG is not set
@@ -902,7 +918,6 @@ CONFIG_USB_STORAGE=y
902# CONFIG_USB_LED is not set 918# CONFIG_USB_LED is not set
903# CONFIG_USB_CYPRESS_CY7C63 is not set 919# CONFIG_USB_CYPRESS_CY7C63 is not set
904# CONFIG_USB_CYTHERM is not set 920# CONFIG_USB_CYTHERM is not set
905# CONFIG_USB_PHIDGET is not set
906# CONFIG_USB_IDMOUSE is not set 921# CONFIG_USB_IDMOUSE is not set
907# CONFIG_USB_FTDI_ELAN is not set 922# CONFIG_USB_FTDI_ELAN is not set
908# CONFIG_USB_APPLEDISPLAY is not set 923# CONFIG_USB_APPLEDISPLAY is not set
@@ -917,6 +932,7 @@ CONFIG_USB_STORAGE=y
917# 932#
918# OTG and related infrastructure 933# OTG and related infrastructure
919# 934#
935# CONFIG_NOP_USB_XCEIV is not set
920# CONFIG_MMC is not set 936# CONFIG_MMC is not set
921# CONFIG_MEMSTICK is not set 937# CONFIG_MEMSTICK is not set
922# CONFIG_NEW_LEDS is not set 938# CONFIG_NEW_LEDS is not set
@@ -976,8 +992,9 @@ CONFIG_RTC_DRV_DS1307=y
976# 992#
977# on-CPU RTC drivers 993# on-CPU RTC drivers
978# 994#
979# CONFIG_RTC_DRV_PPC is not set 995# CONFIG_RTC_DRV_GENERIC is not set
980# CONFIG_DMADEVICES is not set 996# CONFIG_DMADEVICES is not set
997# CONFIG_AUXDISPLAY is not set
981# CONFIG_UIO is not set 998# CONFIG_UIO is not set
982# CONFIG_STAGING is not set 999# CONFIG_STAGING is not set
983 1000
@@ -988,6 +1005,7 @@ CONFIG_EXT2_FS=y
988# CONFIG_EXT2_FS_XATTR is not set 1005# CONFIG_EXT2_FS_XATTR is not set
989# CONFIG_EXT2_FS_XIP is not set 1006# CONFIG_EXT2_FS_XIP is not set
990CONFIG_EXT3_FS=y 1007CONFIG_EXT3_FS=y
1008# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
991CONFIG_EXT3_FS_XATTR=y 1009CONFIG_EXT3_FS_XATTR=y
992# CONFIG_EXT3_FS_POSIX_ACL is not set 1010# CONFIG_EXT3_FS_POSIX_ACL is not set
993# CONFIG_EXT3_FS_SECURITY is not set 1011# CONFIG_EXT3_FS_SECURITY is not set
@@ -1010,6 +1028,11 @@ CONFIG_INOTIFY_USER=y
1010# CONFIG_FUSE_FS is not set 1028# CONFIG_FUSE_FS is not set
1011 1029
1012# 1030#
1031# Caches
1032#
1033# CONFIG_FSCACHE is not set
1034
1035#
1013# CD-ROM/DVD Filesystems 1036# CD-ROM/DVD Filesystems
1014# 1037#
1015# CONFIG_ISO9660_FS is not set 1038# CONFIG_ISO9660_FS is not set
@@ -1066,6 +1089,7 @@ CONFIG_CRAMFS=y
1066# CONFIG_ROMFS_FS is not set 1089# CONFIG_ROMFS_FS is not set
1067# CONFIG_SYSV_FS is not set 1090# CONFIG_SYSV_FS is not set
1068# CONFIG_UFS_FS is not set 1091# CONFIG_UFS_FS is not set
1092# CONFIG_NILFS2_FS is not set
1069CONFIG_NETWORK_FILESYSTEMS=y 1093CONFIG_NETWORK_FILESYSTEMS=y
1070CONFIG_NFS_FS=y 1094CONFIG_NFS_FS=y
1071CONFIG_NFS_V3=y 1095CONFIG_NFS_V3=y
@@ -1078,7 +1102,6 @@ CONFIG_LOCKD_V4=y
1078CONFIG_NFS_COMMON=y 1102CONFIG_NFS_COMMON=y
1079CONFIG_SUNRPC=y 1103CONFIG_SUNRPC=y
1080CONFIG_SUNRPC_GSS=y 1104CONFIG_SUNRPC_GSS=y
1081# CONFIG_SUNRPC_REGISTER_V4 is not set
1082CONFIG_RPCSEC_GSS_KRB5=y 1105CONFIG_RPCSEC_GSS_KRB5=y
1083# CONFIG_RPCSEC_GSS_SPKM3 is not set 1106# CONFIG_RPCSEC_GSS_SPKM3 is not set
1084# CONFIG_SMB_FS is not set 1107# CONFIG_SMB_FS is not set
@@ -1149,6 +1172,7 @@ CONFIG_NLS_ISO8859_1=y
1149# CONFIG_NLS_KOI8_U is not set 1172# CONFIG_NLS_KOI8_U is not set
1150# CONFIG_NLS_UTF8 is not set 1173# CONFIG_NLS_UTF8 is not set
1151# CONFIG_DLM is not set 1174# CONFIG_DLM is not set
1175# CONFIG_BINARY_PRINTF is not set
1152 1176
1153# 1177#
1154# Library routines 1178# Library routines
@@ -1164,11 +1188,12 @@ CONFIG_CRC32=y
1164# CONFIG_LIBCRC32C is not set 1188# CONFIG_LIBCRC32C is not set
1165CONFIG_ZLIB_INFLATE=y 1189CONFIG_ZLIB_INFLATE=y
1166CONFIG_ZLIB_DEFLATE=y 1190CONFIG_ZLIB_DEFLATE=y
1167CONFIG_PLIST=y 1191CONFIG_DECOMPRESS_GZIP=y
1168CONFIG_HAS_IOMEM=y 1192CONFIG_HAS_IOMEM=y
1169CONFIG_HAS_IOPORT=y 1193CONFIG_HAS_IOPORT=y
1170CONFIG_HAS_DMA=y 1194CONFIG_HAS_DMA=y
1171CONFIG_HAVE_LMB=y 1195CONFIG_HAVE_LMB=y
1196CONFIG_NLATTR=y
1172 1197
1173# 1198#
1174# Kernel hacking 1199# Kernel hacking
@@ -1186,6 +1211,9 @@ CONFIG_DEBUG_KERNEL=y
1186CONFIG_DETECT_SOFTLOCKUP=y 1211CONFIG_DETECT_SOFTLOCKUP=y
1187# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1212# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1188CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1213CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1214CONFIG_DETECT_HUNG_TASK=y
1215# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1216CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1189CONFIG_SCHED_DEBUG=y 1217CONFIG_SCHED_DEBUG=y
1190# CONFIG_SCHEDSTATS is not set 1218# CONFIG_SCHEDSTATS is not set
1191# CONFIG_TIMER_STATS is not set 1219# CONFIG_TIMER_STATS is not set
@@ -1214,9 +1242,12 @@ CONFIG_DEBUG_INFO=y
1214# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1242# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1215# CONFIG_FAULT_INJECTION is not set 1243# CONFIG_FAULT_INJECTION is not set
1216# CONFIG_LATENCYTOP is not set 1244# CONFIG_LATENCYTOP is not set
1245# CONFIG_DEBUG_PAGEALLOC is not set
1217CONFIG_HAVE_FUNCTION_TRACER=y 1246CONFIG_HAVE_FUNCTION_TRACER=y
1247CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1218CONFIG_HAVE_DYNAMIC_FTRACE=y 1248CONFIG_HAVE_DYNAMIC_FTRACE=y
1219CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1249CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1250CONFIG_TRACING_SUPPORT=y
1220 1251
1221# 1252#
1222# Tracers 1253# Tracers
@@ -1224,17 +1255,19 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1224# CONFIG_FUNCTION_TRACER is not set 1255# CONFIG_FUNCTION_TRACER is not set
1225# CONFIG_SCHED_TRACER is not set 1256# CONFIG_SCHED_TRACER is not set
1226# CONFIG_CONTEXT_SWITCH_TRACER is not set 1257# CONFIG_CONTEXT_SWITCH_TRACER is not set
1258# CONFIG_EVENT_TRACER is not set
1227# CONFIG_BOOT_TRACER is not set 1259# CONFIG_BOOT_TRACER is not set
1228# CONFIG_TRACE_BRANCH_PROFILING is not set 1260# CONFIG_TRACE_BRANCH_PROFILING is not set
1229# CONFIG_STACK_TRACER is not set 1261# CONFIG_STACK_TRACER is not set
1230# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1262# CONFIG_KMEMTRACE is not set
1263# CONFIG_WORKQUEUE_TRACER is not set
1264# CONFIG_BLK_DEV_IO_TRACE is not set
1231# CONFIG_SAMPLES is not set 1265# CONFIG_SAMPLES is not set
1232CONFIG_HAVE_ARCH_KGDB=y 1266CONFIG_HAVE_ARCH_KGDB=y
1233# CONFIG_KGDB is not set 1267# CONFIG_KGDB is not set
1234CONFIG_PRINT_STACK_DEPTH=64 1268CONFIG_PRINT_STACK_DEPTH=64
1235# CONFIG_DEBUG_STACKOVERFLOW is not set 1269# CONFIG_DEBUG_STACKOVERFLOW is not set
1236# CONFIG_DEBUG_STACK_USAGE is not set 1270# CONFIG_DEBUG_STACK_USAGE is not set
1237# CONFIG_DEBUG_PAGEALLOC is not set
1238# CONFIG_CODE_PATCHING_SELFTEST is not set 1271# CONFIG_CODE_PATCHING_SELFTEST is not set
1239# CONFIG_FTR_FIXUP_SELFTEST is not set 1272# CONFIG_FTR_FIXUP_SELFTEST is not set
1240# CONFIG_MSI_BITMAP_SELFTEST is not set 1273# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1265,10 +1298,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1265CONFIG_CRYPTO_HASH=y 1298CONFIG_CRYPTO_HASH=y
1266CONFIG_CRYPTO_HASH2=y 1299CONFIG_CRYPTO_HASH2=y
1267CONFIG_CRYPTO_RNG2=y 1300CONFIG_CRYPTO_RNG2=y
1301CONFIG_CRYPTO_PCOMP=y
1268CONFIG_CRYPTO_MANAGER=y 1302CONFIG_CRYPTO_MANAGER=y
1269CONFIG_CRYPTO_MANAGER2=y 1303CONFIG_CRYPTO_MANAGER2=y
1270# CONFIG_CRYPTO_GF128MUL is not set 1304# CONFIG_CRYPTO_GF128MUL is not set
1271# CONFIG_CRYPTO_NULL is not set 1305# CONFIG_CRYPTO_NULL is not set
1306CONFIG_CRYPTO_WORKQUEUE=y
1272# CONFIG_CRYPTO_CRYPTD is not set 1307# CONFIG_CRYPTO_CRYPTD is not set
1273# CONFIG_CRYPTO_AUTHENC is not set 1308# CONFIG_CRYPTO_AUTHENC is not set
1274# CONFIG_CRYPTO_TEST is not set 1309# CONFIG_CRYPTO_TEST is not set
@@ -1337,6 +1372,7 @@ CONFIG_CRYPTO_DES=y
1337# Compression 1372# Compression
1338# 1373#
1339# CONFIG_CRYPTO_DEFLATE is not set 1374# CONFIG_CRYPTO_DEFLATE is not set
1375# CONFIG_CRYPTO_ZLIB is not set
1340# CONFIG_CRYPTO_LZO is not set 1376# CONFIG_CRYPTO_LZO is not set
1341 1377
1342# 1378#
diff --git a/arch/powerpc/configs/85xx/mpc8536_ds_defconfig b/arch/powerpc/configs/85xx/mpc8536_ds_defconfig
deleted file mode 100644
index e31b6a4732ed..000000000000
--- a/arch/powerpc/configs/85xx/mpc8536_ds_defconfig
+++ /dev/null
@@ -1,1802 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.29-rc2
4# Mon Jan 26 15:36:04 2009
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12CONFIG_PPC_85xx=y
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set
19CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y
21CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y
25# CONFIG_PPC_MM_SLICES is not set
26# CONFIG_SMP is not set
27CONFIG_PPC32=y
28CONFIG_WORD_SIZE=32
29# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
30CONFIG_MMU=y
31CONFIG_GENERIC_CMOS_UPDATE=y
32CONFIG_GENERIC_TIME=y
33CONFIG_GENERIC_TIME_VSYSCALL=y
34CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y
40CONFIG_LOCKDEP_SUPPORT=y
41CONFIG_RWSEM_XCHGADD_ALGORITHM=y
42CONFIG_ARCH_HAS_ILOG2_U32=y
43CONFIG_GENERIC_HWEIGHT=y
44CONFIG_GENERIC_CALIBRATE_DELAY=y
45CONFIG_GENERIC_FIND_NEXT_BIT=y
46# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
47CONFIG_PPC=y
48CONFIG_EARLY_PRINTK=y
49CONFIG_GENERIC_NVRAM=y
50CONFIG_SCHED_OMIT_FRAME_POINTER=y
51CONFIG_ARCH_MAY_HAVE_PC_FDC=y
52CONFIG_PPC_OF=y
53CONFIG_OF=y
54CONFIG_PPC_UDBG_16550=y
55# CONFIG_GENERIC_TBSYNC is not set
56CONFIG_AUDIT_ARCH=y
57CONFIG_GENERIC_BUG=y
58CONFIG_DEFAULT_UIMAGE=y
59# CONFIG_PPC_DCR_NATIVE is not set
60# CONFIG_PPC_DCR_MMIO is not set
61CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
62
63#
64# General setup
65#
66CONFIG_EXPERIMENTAL=y
67CONFIG_BROKEN_ON_SMP=y
68CONFIG_INIT_ENV_ARG_LIMIT=32
69CONFIG_LOCALVERSION=""
70CONFIG_LOCALVERSION_AUTO=y
71CONFIG_SWAP=y
72CONFIG_SYSVIPC=y
73CONFIG_SYSVIPC_SYSCTL=y
74CONFIG_POSIX_MQUEUE=y
75CONFIG_BSD_PROCESS_ACCT=y
76# CONFIG_BSD_PROCESS_ACCT_V3 is not set
77# CONFIG_TASKSTATS is not set
78CONFIG_AUDIT=y
79# CONFIG_AUDITSYSCALL is not set
80CONFIG_IKCONFIG=y
81CONFIG_IKCONFIG_PROC=y
82CONFIG_LOG_BUF_SHIFT=14
83CONFIG_GROUP_SCHED=y
84# CONFIG_FAIR_GROUP_SCHED is not set
85# CONFIG_RT_GROUP_SCHED is not set
86CONFIG_USER_SCHED=y
87# CONFIG_CGROUP_SCHED is not set
88# CONFIG_CGROUPS is not set
89CONFIG_SYSFS_DEPRECATED=y
90CONFIG_SYSFS_DEPRECATED_V2=y
91# CONFIG_RELAY is not set
92# CONFIG_NAMESPACES is not set
93CONFIG_BLK_DEV_INITRD=y
94CONFIG_INITRAMFS_SOURCE=""
95# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
96CONFIG_SYSCTL=y
97CONFIG_EMBEDDED=y
98CONFIG_SYSCTL_SYSCALL=y
99CONFIG_KALLSYMS=y
100CONFIG_KALLSYMS_ALL=y
101CONFIG_KALLSYMS_STRIP_GENERATED=y
102CONFIG_KALLSYMS_EXTRA_PASS=y
103CONFIG_HOTPLUG=y
104CONFIG_PRINTK=y
105CONFIG_BUG=y
106CONFIG_ELF_CORE=y
107CONFIG_COMPAT_BRK=y
108CONFIG_BASE_FULL=y
109CONFIG_FUTEX=y
110CONFIG_ANON_INODES=y
111CONFIG_EPOLL=y
112CONFIG_SIGNALFD=y
113CONFIG_TIMERFD=y
114CONFIG_EVENTFD=y
115CONFIG_SHMEM=y
116CONFIG_AIO=y
117CONFIG_VM_EVENT_COUNTERS=y
118CONFIG_PCI_QUIRKS=y
119CONFIG_SLUB_DEBUG=y
120# CONFIG_SLAB is not set
121CONFIG_SLUB=y
122# CONFIG_SLOB is not set
123# CONFIG_PROFILING is not set
124CONFIG_HAVE_OPROFILE=y
125# CONFIG_KPROBES is not set
126CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
127CONFIG_HAVE_IOREMAP_PROT=y
128CONFIG_HAVE_KPROBES=y
129CONFIG_HAVE_KRETPROBES=y
130CONFIG_HAVE_ARCH_TRACEHOOK=y
131# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
132CONFIG_SLABINFO=y
133CONFIG_RT_MUTEXES=y
134CONFIG_BASE_SMALL=0
135CONFIG_MODULES=y
136# CONFIG_MODULE_FORCE_LOAD is not set
137CONFIG_MODULE_UNLOAD=y
138CONFIG_MODULE_FORCE_UNLOAD=y
139CONFIG_MODVERSIONS=y
140# CONFIG_MODULE_SRCVERSION_ALL is not set
141CONFIG_BLOCK=y
142CONFIG_LBD=y
143# CONFIG_BLK_DEV_IO_TRACE is not set
144# CONFIG_BLK_DEV_BSG is not set
145# CONFIG_BLK_DEV_INTEGRITY is not set
146
147#
148# IO Schedulers
149#
150CONFIG_IOSCHED_NOOP=y
151CONFIG_IOSCHED_AS=y
152CONFIG_IOSCHED_DEADLINE=y
153CONFIG_IOSCHED_CFQ=y
154# CONFIG_DEFAULT_AS is not set
155# CONFIG_DEFAULT_DEADLINE is not set
156CONFIG_DEFAULT_CFQ=y
157# CONFIG_DEFAULT_NOOP is not set
158CONFIG_DEFAULT_IOSCHED="cfq"
159CONFIG_CLASSIC_RCU=y
160# CONFIG_TREE_RCU is not set
161# CONFIG_PREEMPT_RCU is not set
162# CONFIG_TREE_RCU_TRACE is not set
163# CONFIG_PREEMPT_RCU_TRACE is not set
164# CONFIG_FREEZER is not set
165
166#
167# Platform support
168#
169# CONFIG_PPC_CELL is not set
170# CONFIG_PPC_CELL_NATIVE is not set
171# CONFIG_PQ2ADS is not set
172CONFIG_MPC85xx=y
173# CONFIG_MPC8540_ADS is not set
174# CONFIG_MPC8560_ADS is not set
175# CONFIG_MPC85xx_CDS is not set
176# CONFIG_MPC85xx_MDS is not set
177CONFIG_MPC8536_DS=y
178# CONFIG_MPC85xx_DS is not set
179# CONFIG_KSI8560 is not set
180# CONFIG_STX_GP3 is not set
181# CONFIG_TQM8540 is not set
182# CONFIG_TQM8541 is not set
183# CONFIG_TQM8548 is not set
184# CONFIG_TQM8555 is not set
185# CONFIG_TQM8560 is not set
186# CONFIG_SBC8548 is not set
187# CONFIG_SBC8560 is not set
188# CONFIG_IPIC is not set
189CONFIG_MPIC=y
190# CONFIG_MPIC_WEIRD is not set
191# CONFIG_PPC_I8259 is not set
192# CONFIG_PPC_RTAS is not set
193# CONFIG_MMIO_NVRAM is not set
194# CONFIG_PPC_MPC106 is not set
195# CONFIG_PPC_970_NAP is not set
196# CONFIG_PPC_INDIRECT_IO is not set
197# CONFIG_GENERIC_IOMAP is not set
198# CONFIG_CPU_FREQ is not set
199# CONFIG_QUICC_ENGINE is not set
200# CONFIG_CPM2 is not set
201# CONFIG_FSL_ULI1575 is not set
202# CONFIG_MPC8xxx_GPIO is not set
203# CONFIG_SIMPLE_GPIO is not set
204
205#
206# Kernel options
207#
208CONFIG_HIGHMEM=y
209CONFIG_TICK_ONESHOT=y
210CONFIG_NO_HZ=y
211CONFIG_HIGH_RES_TIMERS=y
212CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
213# CONFIG_HZ_100 is not set
214CONFIG_HZ_250=y
215# CONFIG_HZ_300 is not set
216# CONFIG_HZ_1000 is not set
217CONFIG_HZ=250
218CONFIG_SCHED_HRTICK=y
219CONFIG_PREEMPT_NONE=y
220# CONFIG_PREEMPT_VOLUNTARY is not set
221# CONFIG_PREEMPT is not set
222CONFIG_BINFMT_ELF=y
223# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
224# CONFIG_HAVE_AOUT is not set
225CONFIG_BINFMT_MISC=m
226CONFIG_MATH_EMULATION=y
227# CONFIG_IOMMU_HELPER is not set
228CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
229CONFIG_ARCH_HAS_WALK_MEMORY=y
230CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
231CONFIG_ARCH_FLATMEM_ENABLE=y
232CONFIG_ARCH_POPULATES_NODE_MAP=y
233CONFIG_SELECT_MEMORY_MODEL=y
234CONFIG_FLATMEM_MANUAL=y
235# CONFIG_DISCONTIGMEM_MANUAL is not set
236# CONFIG_SPARSEMEM_MANUAL is not set
237CONFIG_FLATMEM=y
238CONFIG_FLAT_NODE_MEM_MAP=y
239CONFIG_PAGEFLAGS_EXTENDED=y
240CONFIG_SPLIT_PTLOCK_CPUS=4
241CONFIG_MIGRATION=y
242# CONFIG_PHYS_ADDR_T_64BIT is not set
243CONFIG_ZONE_DMA_FLAG=1
244CONFIG_BOUNCE=y
245CONFIG_VIRT_TO_BUS=y
246CONFIG_UNEVICTABLE_LRU=y
247CONFIG_PPC_4K_PAGES=y
248# CONFIG_PPC_16K_PAGES is not set
249# CONFIG_PPC_64K_PAGES is not set
250CONFIG_FORCE_MAX_ZONEORDER=11
251CONFIG_PROC_DEVICETREE=y
252# CONFIG_CMDLINE_BOOL is not set
253CONFIG_EXTRA_TARGETS=""
254# CONFIG_PM is not set
255CONFIG_SECCOMP=y
256CONFIG_ISA_DMA_API=y
257
258#
259# Bus options
260#
261CONFIG_ZONE_DMA=y
262CONFIG_PPC_INDIRECT_PCI=y
263CONFIG_FSL_SOC=y
264CONFIG_FSL_PCI=y
265CONFIG_PPC_PCI_CHOICE=y
266CONFIG_PCI=y
267CONFIG_PCI_DOMAINS=y
268CONFIG_PCI_SYSCALL=y
269# CONFIG_PCIEPORTBUS is not set
270CONFIG_ARCH_SUPPORTS_MSI=y
271# CONFIG_PCI_MSI is not set
272# CONFIG_PCI_LEGACY is not set
273# CONFIG_PCI_DEBUG is not set
274# CONFIG_PCI_STUB is not set
275# CONFIG_PCCARD is not set
276# CONFIG_HOTPLUG_PCI is not set
277# CONFIG_HAS_RAPIDIO is not set
278
279#
280# Advanced setup
281#
282# CONFIG_ADVANCED_OPTIONS is not set
283
284#
285# Default settings for advanced configuration options are used
286#
287CONFIG_LOWMEM_SIZE=0x30000000
288CONFIG_PAGE_OFFSET=0xc0000000
289CONFIG_KERNEL_START=0xc0000000
290CONFIG_PHYSICAL_START=0x00000000
291CONFIG_PHYSICAL_ALIGN=0x10000000
292CONFIG_TASK_SIZE=0xc0000000
293CONFIG_NET=y
294
295#
296# Networking options
297#
298CONFIG_COMPAT_NET_DEV_OPS=y
299CONFIG_PACKET=y
300# CONFIG_PACKET_MMAP is not set
301CONFIG_UNIX=y
302CONFIG_XFRM=y
303CONFIG_XFRM_USER=y
304# CONFIG_XFRM_SUB_POLICY is not set
305# CONFIG_XFRM_MIGRATE is not set
306# CONFIG_XFRM_STATISTICS is not set
307CONFIG_NET_KEY=m
308# CONFIG_NET_KEY_MIGRATE is not set
309CONFIG_INET=y
310CONFIG_IP_MULTICAST=y
311CONFIG_IP_ADVANCED_ROUTER=y
312CONFIG_ASK_IP_FIB_HASH=y
313# CONFIG_IP_FIB_TRIE is not set
314CONFIG_IP_FIB_HASH=y
315CONFIG_IP_MULTIPLE_TABLES=y
316CONFIG_IP_ROUTE_MULTIPATH=y
317CONFIG_IP_ROUTE_VERBOSE=y
318CONFIG_IP_PNP=y
319CONFIG_IP_PNP_DHCP=y
320CONFIG_IP_PNP_BOOTP=y
321CONFIG_IP_PNP_RARP=y
322CONFIG_NET_IPIP=y
323CONFIG_NET_IPGRE=y
324CONFIG_NET_IPGRE_BROADCAST=y
325CONFIG_IP_MROUTE=y
326CONFIG_IP_PIMSM_V1=y
327CONFIG_IP_PIMSM_V2=y
328CONFIG_ARPD=y
329# CONFIG_SYN_COOKIES is not set
330# CONFIG_INET_AH is not set
331# CONFIG_INET_ESP is not set
332# CONFIG_INET_IPCOMP is not set
333# CONFIG_INET_XFRM_TUNNEL is not set
334CONFIG_INET_TUNNEL=y
335# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
336# CONFIG_INET_XFRM_MODE_TUNNEL is not set
337# CONFIG_INET_XFRM_MODE_BEET is not set
338# CONFIG_INET_LRO is not set
339CONFIG_INET_DIAG=y
340CONFIG_INET_TCP_DIAG=y
341# CONFIG_TCP_CONG_ADVANCED is not set
342CONFIG_TCP_CONG_CUBIC=y
343CONFIG_DEFAULT_TCP_CONG="cubic"
344# CONFIG_TCP_MD5SIG is not set
345CONFIG_IPV6=y
346# CONFIG_IPV6_PRIVACY is not set
347# CONFIG_IPV6_ROUTER_PREF is not set
348# CONFIG_IPV6_OPTIMISTIC_DAD is not set
349# CONFIG_INET6_AH is not set
350# CONFIG_INET6_ESP is not set
351# CONFIG_INET6_IPCOMP is not set
352# CONFIG_IPV6_MIP6 is not set
353# CONFIG_INET6_XFRM_TUNNEL is not set
354# CONFIG_INET6_TUNNEL is not set
355CONFIG_INET6_XFRM_MODE_TRANSPORT=y
356CONFIG_INET6_XFRM_MODE_TUNNEL=y
357CONFIG_INET6_XFRM_MODE_BEET=y
358# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
359CONFIG_IPV6_SIT=y
360CONFIG_IPV6_NDISC_NODETYPE=y
361# CONFIG_IPV6_TUNNEL is not set
362# CONFIG_IPV6_MULTIPLE_TABLES is not set
363# CONFIG_IPV6_MROUTE is not set
364# CONFIG_NETWORK_SECMARK is not set
365# CONFIG_NETFILTER is not set
366# CONFIG_IP_DCCP is not set
367CONFIG_IP_SCTP=m
368# CONFIG_SCTP_DBG_MSG is not set
369# CONFIG_SCTP_DBG_OBJCNT is not set
370# CONFIG_SCTP_HMAC_NONE is not set
371# CONFIG_SCTP_HMAC_SHA1 is not set
372CONFIG_SCTP_HMAC_MD5=y
373# CONFIG_TIPC is not set
374# CONFIG_ATM is not set
375# CONFIG_BRIDGE is not set
376# CONFIG_NET_DSA is not set
377# CONFIG_VLAN_8021Q is not set
378# CONFIG_DECNET is not set
379# CONFIG_LLC2 is not set
380# CONFIG_IPX is not set
381# CONFIG_ATALK is not set
382# CONFIG_X25 is not set
383# CONFIG_LAPB is not set
384# CONFIG_ECONET is not set
385# CONFIG_WAN_ROUTER is not set
386# CONFIG_NET_SCHED is not set
387# CONFIG_DCB is not set
388
389#
390# Network testing
391#
392# CONFIG_NET_PKTGEN is not set
393# CONFIG_HAMRADIO is not set
394# CONFIG_CAN is not set
395# CONFIG_IRDA is not set
396# CONFIG_BT is not set
397# CONFIG_AF_RXRPC is not set
398# CONFIG_PHONET is not set
399CONFIG_FIB_RULES=y
400CONFIG_WIRELESS=y
401# CONFIG_CFG80211 is not set
402CONFIG_WIRELESS_OLD_REGULATORY=y
403# CONFIG_WIRELESS_EXT is not set
404# CONFIG_LIB80211 is not set
405# CONFIG_MAC80211 is not set
406# CONFIG_WIMAX is not set
407# CONFIG_RFKILL is not set
408# CONFIG_NET_9P is not set
409
410#
411# Device Drivers
412#
413
414#
415# Generic Driver Options
416#
417CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
418CONFIG_STANDALONE=y
419CONFIG_PREVENT_FIRMWARE_BUILD=y
420CONFIG_FW_LOADER=y
421CONFIG_FIRMWARE_IN_KERNEL=y
422CONFIG_EXTRA_FIRMWARE=""
423# CONFIG_DEBUG_DRIVER is not set
424# CONFIG_DEBUG_DEVRES is not set
425# CONFIG_SYS_HYPERVISOR is not set
426# CONFIG_CONNECTOR is not set
427# CONFIG_MTD is not set
428CONFIG_OF_DEVICE=y
429CONFIG_OF_I2C=y
430# CONFIG_PARPORT is not set
431CONFIG_BLK_DEV=y
432# CONFIG_BLK_DEV_FD is not set
433# CONFIG_BLK_CPQ_DA is not set
434# CONFIG_BLK_CPQ_CISS_DA is not set
435# CONFIG_BLK_DEV_DAC960 is not set
436# CONFIG_BLK_DEV_UMEM is not set
437# CONFIG_BLK_DEV_COW_COMMON is not set
438CONFIG_BLK_DEV_LOOP=y
439# CONFIG_BLK_DEV_CRYPTOLOOP is not set
440CONFIG_BLK_DEV_NBD=y
441# CONFIG_BLK_DEV_SX8 is not set
442# CONFIG_BLK_DEV_UB is not set
443CONFIG_BLK_DEV_RAM=y
444CONFIG_BLK_DEV_RAM_COUNT=16
445CONFIG_BLK_DEV_RAM_SIZE=524288
446# CONFIG_BLK_DEV_XIP is not set
447# CONFIG_CDROM_PKTCDVD is not set
448# CONFIG_ATA_OVER_ETH is not set
449# CONFIG_BLK_DEV_HD is not set
450CONFIG_MISC_DEVICES=y
451# CONFIG_PHANTOM is not set
452# CONFIG_EEPROM_93CX6 is not set
453# CONFIG_SGI_IOC4 is not set
454# CONFIG_TIFM_CORE is not set
455# CONFIG_ICS932S401 is not set
456# CONFIG_ENCLOSURE_SERVICES is not set
457# CONFIG_HP_ILO is not set
458# CONFIG_C2PORT is not set
459CONFIG_HAVE_IDE=y
460# CONFIG_IDE is not set
461
462#
463# SCSI device support
464#
465# CONFIG_RAID_ATTRS is not set
466CONFIG_SCSI=y
467CONFIG_SCSI_DMA=y
468# CONFIG_SCSI_TGT is not set
469# CONFIG_SCSI_NETLINK is not set
470CONFIG_SCSI_PROC_FS=y
471
472#
473# SCSI support type (disk, tape, CD-ROM)
474#
475CONFIG_BLK_DEV_SD=y
476CONFIG_CHR_DEV_ST=y
477# CONFIG_CHR_DEV_OSST is not set
478CONFIG_BLK_DEV_SR=y
479# CONFIG_BLK_DEV_SR_VENDOR is not set
480CONFIG_CHR_DEV_SG=y
481# CONFIG_CHR_DEV_SCH is not set
482
483#
484# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
485#
486CONFIG_SCSI_MULTI_LUN=y
487# CONFIG_SCSI_CONSTANTS is not set
488CONFIG_SCSI_LOGGING=y
489# CONFIG_SCSI_SCAN_ASYNC is not set
490CONFIG_SCSI_WAIT_SCAN=m
491
492#
493# SCSI Transports
494#
495# CONFIG_SCSI_SPI_ATTRS is not set
496# CONFIG_SCSI_FC_ATTRS is not set
497# CONFIG_SCSI_ISCSI_ATTRS is not set
498# CONFIG_SCSI_SAS_LIBSAS is not set
499# CONFIG_SCSI_SRP_ATTRS is not set
500CONFIG_SCSI_LOWLEVEL=y
501# CONFIG_ISCSI_TCP is not set
502# CONFIG_SCSI_CXGB3_ISCSI is not set
503# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
504# CONFIG_SCSI_3W_9XXX is not set
505# CONFIG_SCSI_ACARD is not set
506# CONFIG_SCSI_AACRAID is not set
507# CONFIG_SCSI_AIC7XXX is not set
508# CONFIG_SCSI_AIC7XXX_OLD is not set
509# CONFIG_SCSI_AIC79XX is not set
510# CONFIG_SCSI_AIC94XX is not set
511# CONFIG_SCSI_DPT_I2O is not set
512# CONFIG_SCSI_ADVANSYS is not set
513# CONFIG_SCSI_ARCMSR is not set
514# CONFIG_MEGARAID_NEWGEN is not set
515# CONFIG_MEGARAID_LEGACY is not set
516# CONFIG_MEGARAID_SAS is not set
517# CONFIG_SCSI_HPTIOP is not set
518# CONFIG_SCSI_BUSLOGIC is not set
519# CONFIG_LIBFC is not set
520# CONFIG_FCOE is not set
521# CONFIG_SCSI_DMX3191D is not set
522# CONFIG_SCSI_EATA is not set
523# CONFIG_SCSI_FUTURE_DOMAIN is not set
524# CONFIG_SCSI_GDTH is not set
525# CONFIG_SCSI_IPS is not set
526# CONFIG_SCSI_INITIO is not set
527# CONFIG_SCSI_INIA100 is not set
528# CONFIG_SCSI_MVSAS is not set
529# CONFIG_SCSI_STEX is not set
530# CONFIG_SCSI_SYM53C8XX_2 is not set
531# CONFIG_SCSI_IPR is not set
532# CONFIG_SCSI_QLOGIC_1280 is not set
533# CONFIG_SCSI_QLA_FC is not set
534# CONFIG_SCSI_QLA_ISCSI is not set
535# CONFIG_SCSI_LPFC is not set
536# CONFIG_SCSI_DC395x is not set
537# CONFIG_SCSI_DC390T is not set
538# CONFIG_SCSI_NSP32 is not set
539# CONFIG_SCSI_DEBUG is not set
540# CONFIG_SCSI_SRP is not set
541# CONFIG_SCSI_DH is not set
542CONFIG_ATA=y
543# CONFIG_ATA_NONSTANDARD is not set
544CONFIG_SATA_PMP=y
545# CONFIG_SATA_AHCI is not set
546CONFIG_SATA_SIL24=y
547CONFIG_SATA_FSL=y
548CONFIG_ATA_SFF=y
549# CONFIG_SATA_SVW is not set
550# CONFIG_ATA_PIIX is not set
551# CONFIG_SATA_MV is not set
552# CONFIG_SATA_NV is not set
553# CONFIG_PDC_ADMA is not set
554# CONFIG_SATA_QSTOR is not set
555# CONFIG_SATA_PROMISE is not set
556# CONFIG_SATA_SX4 is not set
557CONFIG_SATA_SIL=y
558# CONFIG_SATA_SIS is not set
559# CONFIG_SATA_ULI is not set
560# CONFIG_SATA_VIA is not set
561# CONFIG_SATA_VITESSE is not set
562# CONFIG_SATA_INIC162X is not set
563# CONFIG_PATA_ALI is not set
564# CONFIG_PATA_AMD is not set
565# CONFIG_PATA_ARTOP is not set
566# CONFIG_PATA_ATIIXP is not set
567# CONFIG_PATA_CMD640_PCI is not set
568# CONFIG_PATA_CMD64X is not set
569# CONFIG_PATA_CS5520 is not set
570# CONFIG_PATA_CS5530 is not set
571# CONFIG_PATA_CYPRESS is not set
572# CONFIG_PATA_EFAR is not set
573# CONFIG_ATA_GENERIC is not set
574# CONFIG_PATA_HPT366 is not set
575# CONFIG_PATA_HPT37X is not set
576# CONFIG_PATA_HPT3X2N is not set
577# CONFIG_PATA_HPT3X3 is not set
578# CONFIG_PATA_IT821X is not set
579# CONFIG_PATA_IT8213 is not set
580# CONFIG_PATA_JMICRON is not set
581# CONFIG_PATA_TRIFLEX is not set
582# CONFIG_PATA_MARVELL is not set
583# CONFIG_PATA_MPIIX is not set
584# CONFIG_PATA_OLDPIIX is not set
585# CONFIG_PATA_NETCELL is not set
586# CONFIG_PATA_NINJA32 is not set
587# CONFIG_PATA_NS87410 is not set
588# CONFIG_PATA_NS87415 is not set
589# CONFIG_PATA_OPTI is not set
590# CONFIG_PATA_OPTIDMA is not set
591# CONFIG_PATA_PDC_OLD is not set
592# CONFIG_PATA_RADISYS is not set
593# CONFIG_PATA_RZ1000 is not set
594# CONFIG_PATA_SC1200 is not set
595# CONFIG_PATA_SERVERWORKS is not set
596# CONFIG_PATA_PDC2027X is not set
597# CONFIG_PATA_SIL680 is not set
598# CONFIG_PATA_SIS is not set
599# CONFIG_PATA_VIA is not set
600# CONFIG_PATA_WINBOND is not set
601# CONFIG_PATA_PLATFORM is not set
602# CONFIG_PATA_SCH is not set
603# CONFIG_MD is not set
604# CONFIG_FUSION is not set
605
606#
607# IEEE 1394 (FireWire) support
608#
609
610#
611# Enable only one of the two stacks, unless you know what you are doing
612#
613# CONFIG_FIREWIRE is not set
614# CONFIG_IEEE1394 is not set
615# CONFIG_I2O is not set
616# CONFIG_MACINTOSH_DRIVERS is not set
617CONFIG_NETDEVICES=y
618CONFIG_DUMMY=y
619# CONFIG_BONDING is not set
620# CONFIG_MACVLAN is not set
621# CONFIG_EQUALIZER is not set
622# CONFIG_TUN is not set
623# CONFIG_VETH is not set
624# CONFIG_ARCNET is not set
625CONFIG_PHYLIB=y
626
627#
628# MII PHY device drivers
629#
630# CONFIG_MARVELL_PHY is not set
631# CONFIG_DAVICOM_PHY is not set
632# CONFIG_QSEMI_PHY is not set
633# CONFIG_LXT_PHY is not set
634# CONFIG_CICADA_PHY is not set
635CONFIG_VITESSE_PHY=y
636# CONFIG_SMSC_PHY is not set
637# CONFIG_BROADCOM_PHY is not set
638# CONFIG_ICPLUS_PHY is not set
639# CONFIG_REALTEK_PHY is not set
640# CONFIG_NATIONAL_PHY is not set
641# CONFIG_STE10XP is not set
642# CONFIG_LSI_ET1011C_PHY is not set
643# CONFIG_FIXED_PHY is not set
644# CONFIG_MDIO_BITBANG is not set
645CONFIG_NET_ETHERNET=y
646CONFIG_MII=y
647# CONFIG_HAPPYMEAL is not set
648# CONFIG_SUNGEM is not set
649# CONFIG_CASSINI is not set
650# CONFIG_NET_VENDOR_3COM is not set
651# CONFIG_NET_TULIP is not set
652# CONFIG_HP100 is not set
653# CONFIG_IBM_NEW_EMAC_ZMII is not set
654# CONFIG_IBM_NEW_EMAC_RGMII is not set
655# CONFIG_IBM_NEW_EMAC_TAH is not set
656# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
657# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
658# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
659# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
660# CONFIG_NET_PCI is not set
661# CONFIG_B44 is not set
662# CONFIG_ATL2 is not set
663CONFIG_NETDEV_1000=y
664# CONFIG_ACENIC is not set
665# CONFIG_DL2K is not set
666# CONFIG_E1000 is not set
667# CONFIG_E1000E is not set
668# CONFIG_IP1000 is not set
669# CONFIG_IGB is not set
670# CONFIG_NS83820 is not set
671# CONFIG_HAMACHI is not set
672# CONFIG_YELLOWFIN is not set
673# CONFIG_R8169 is not set
674# CONFIG_SIS190 is not set
675CONFIG_SKGE=y
676# CONFIG_SKGE_DEBUG is not set
677CONFIG_SKY2=y
678# CONFIG_SKY2_DEBUG is not set
679# CONFIG_VIA_VELOCITY is not set
680# CONFIG_TIGON3 is not set
681# CONFIG_BNX2 is not set
682CONFIG_GIANFAR=y
683# CONFIG_QLA3XXX is not set
684# CONFIG_ATL1 is not set
685# CONFIG_ATL1E is not set
686# CONFIG_JME is not set
687CONFIG_NETDEV_10000=y
688# CONFIG_CHELSIO_T1 is not set
689CONFIG_CHELSIO_T3_DEPENDS=y
690# CONFIG_CHELSIO_T3 is not set
691# CONFIG_ENIC is not set
692# CONFIG_IXGBE is not set
693# CONFIG_IXGB is not set
694# CONFIG_S2IO is not set
695# CONFIG_MYRI10GE is not set
696# CONFIG_NETXEN_NIC is not set
697# CONFIG_NIU is not set
698# CONFIG_MLX4_EN is not set
699# CONFIG_MLX4_CORE is not set
700# CONFIG_TEHUTI is not set
701# CONFIG_BNX2X is not set
702# CONFIG_QLGE is not set
703# CONFIG_SFC is not set
704# CONFIG_TR is not set
705
706#
707# Wireless LAN
708#
709# CONFIG_WLAN_PRE80211 is not set
710# CONFIG_WLAN_80211 is not set
711# CONFIG_IWLWIFI_LEDS is not set
712
713#
714# Enable WiMAX (Networking options) to see the WiMAX drivers
715#
716
717#
718# USB Network Adapters
719#
720# CONFIG_USB_CATC is not set
721# CONFIG_USB_KAWETH is not set
722# CONFIG_USB_PEGASUS is not set
723# CONFIG_USB_RTL8150 is not set
724# CONFIG_USB_USBNET is not set
725# CONFIG_WAN is not set
726# CONFIG_FDDI is not set
727# CONFIG_HIPPI is not set
728# CONFIG_PPP is not set
729# CONFIG_SLIP is not set
730# CONFIG_NET_FC is not set
731# CONFIG_NETCONSOLE is not set
732# CONFIG_NETPOLL is not set
733# CONFIG_NET_POLL_CONTROLLER is not set
734# CONFIG_ISDN is not set
735# CONFIG_PHONE is not set
736
737#
738# Input device support
739#
740CONFIG_INPUT=y
741CONFIG_INPUT_FF_MEMLESS=m
742# CONFIG_INPUT_POLLDEV is not set
743
744#
745# Userland interfaces
746#
747# CONFIG_INPUT_MOUSEDEV is not set
748# CONFIG_INPUT_JOYDEV is not set
749# CONFIG_INPUT_EVDEV is not set
750# CONFIG_INPUT_EVBUG is not set
751
752#
753# Input Device Drivers
754#
755# CONFIG_INPUT_KEYBOARD is not set
756# CONFIG_INPUT_MOUSE is not set
757# CONFIG_INPUT_JOYSTICK is not set
758# CONFIG_INPUT_TABLET is not set
759# CONFIG_INPUT_TOUCHSCREEN is not set
760# CONFIG_INPUT_MISC is not set
761
762#
763# Hardware I/O ports
764#
765CONFIG_SERIO=y
766CONFIG_SERIO_I8042=y
767CONFIG_SERIO_SERPORT=y
768# CONFIG_SERIO_PCIPS2 is not set
769CONFIG_SERIO_LIBPS2=y
770# CONFIG_SERIO_RAW is not set
771# CONFIG_SERIO_XILINX_XPS_PS2 is not set
772# CONFIG_GAMEPORT is not set
773
774#
775# Character devices
776#
777CONFIG_VT=y
778CONFIG_CONSOLE_TRANSLATIONS=y
779CONFIG_VT_CONSOLE=y
780CONFIG_HW_CONSOLE=y
781# CONFIG_VT_HW_CONSOLE_BINDING is not set
782CONFIG_DEVKMEM=y
783# CONFIG_SERIAL_NONSTANDARD is not set
784# CONFIG_NOZOMI is not set
785
786#
787# Serial drivers
788#
789CONFIG_SERIAL_8250=y
790CONFIG_SERIAL_8250_CONSOLE=y
791CONFIG_SERIAL_8250_PCI=y
792CONFIG_SERIAL_8250_NR_UARTS=2
793CONFIG_SERIAL_8250_RUNTIME_UARTS=2
794CONFIG_SERIAL_8250_EXTENDED=y
795CONFIG_SERIAL_8250_MANY_PORTS=y
796CONFIG_SERIAL_8250_SHARE_IRQ=y
797CONFIG_SERIAL_8250_DETECT_IRQ=y
798CONFIG_SERIAL_8250_RSA=y
799
800#
801# Non-8250 serial port support
802#
803# CONFIG_SERIAL_UARTLITE is not set
804CONFIG_SERIAL_CORE=y
805CONFIG_SERIAL_CORE_CONSOLE=y
806# CONFIG_SERIAL_JSM is not set
807# CONFIG_SERIAL_OF_PLATFORM is not set
808CONFIG_UNIX98_PTYS=y
809# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
810CONFIG_LEGACY_PTYS=y
811CONFIG_LEGACY_PTY_COUNT=256
812# CONFIG_HVC_UDBG is not set
813# CONFIG_IPMI_HANDLER is not set
814CONFIG_HW_RANDOM=y
815# CONFIG_NVRAM is not set
816# CONFIG_R3964 is not set
817# CONFIG_APPLICOM is not set
818# CONFIG_RAW_DRIVER is not set
819# CONFIG_TCG_TPM is not set
820CONFIG_DEVPORT=y
821CONFIG_I2C=y
822CONFIG_I2C_BOARDINFO=y
823# CONFIG_I2C_CHARDEV is not set
824CONFIG_I2C_HELPER_AUTO=y
825
826#
827# I2C Hardware Bus support
828#
829
830#
831# PC SMBus host controller drivers
832#
833# CONFIG_I2C_ALI1535 is not set
834# CONFIG_I2C_ALI1563 is not set
835# CONFIG_I2C_ALI15X3 is not set
836# CONFIG_I2C_AMD756 is not set
837# CONFIG_I2C_AMD8111 is not set
838# CONFIG_I2C_I801 is not set
839# CONFIG_I2C_ISCH is not set
840# CONFIG_I2C_PIIX4 is not set
841# CONFIG_I2C_NFORCE2 is not set
842# CONFIG_I2C_SIS5595 is not set
843# CONFIG_I2C_SIS630 is not set
844# CONFIG_I2C_SIS96X is not set
845# CONFIG_I2C_VIA is not set
846# CONFIG_I2C_VIAPRO is not set
847
848#
849# I2C system bus drivers (mostly embedded / system-on-chip)
850#
851CONFIG_I2C_MPC=y
852# CONFIG_I2C_OCORES is not set
853# CONFIG_I2C_SIMTEC is not set
854
855#
856# External I2C/SMBus adapter drivers
857#
858# CONFIG_I2C_PARPORT_LIGHT is not set
859# CONFIG_I2C_TAOS_EVM is not set
860# CONFIG_I2C_TINY_USB is not set
861
862#
863# Graphics adapter I2C/DDC channel drivers
864#
865# CONFIG_I2C_VOODOO3 is not set
866
867#
868# Other I2C/SMBus bus drivers
869#
870# CONFIG_I2C_PCA_PLATFORM is not set
871# CONFIG_I2C_STUB is not set
872
873#
874# Miscellaneous I2C Chip support
875#
876# CONFIG_DS1682 is not set
877# CONFIG_EEPROM_AT24 is not set
878CONFIG_EEPROM_LEGACY=y
879# CONFIG_SENSORS_PCF8574 is not set
880# CONFIG_PCF8575 is not set
881# CONFIG_SENSORS_PCA9539 is not set
882# CONFIG_SENSORS_PCF8591 is not set
883# CONFIG_SENSORS_MAX6875 is not set
884# CONFIG_SENSORS_TSL2550 is not set
885# CONFIG_I2C_DEBUG_CORE is not set
886# CONFIG_I2C_DEBUG_ALGO is not set
887# CONFIG_I2C_DEBUG_BUS is not set
888# CONFIG_I2C_DEBUG_CHIP is not set
889# CONFIG_SPI is not set
890CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
891# CONFIG_GPIOLIB is not set
892# CONFIG_W1 is not set
893# CONFIG_POWER_SUPPLY is not set
894# CONFIG_HWMON is not set
895CONFIG_THERMAL=y
896# CONFIG_WATCHDOG is not set
897CONFIG_SSB_POSSIBLE=y
898
899#
900# Sonics Silicon Backplane
901#
902# CONFIG_SSB is not set
903
904#
905# Multifunction device drivers
906#
907# CONFIG_MFD_CORE is not set
908# CONFIG_MFD_SM501 is not set
909# CONFIG_HTC_PASIC3 is not set
910# CONFIG_TWL4030_CORE is not set
911# CONFIG_MFD_TMIO is not set
912# CONFIG_PMIC_DA903X is not set
913# CONFIG_MFD_WM8400 is not set
914# CONFIG_MFD_WM8350_I2C is not set
915# CONFIG_MFD_PCF50633 is not set
916# CONFIG_REGULATOR is not set
917
918#
919# Multimedia devices
920#
921
922#
923# Multimedia core support
924#
925# CONFIG_VIDEO_DEV is not set
926CONFIG_DVB_CORE=m
927CONFIG_VIDEO_MEDIA=m
928
929#
930# Multimedia drivers
931#
932# CONFIG_MEDIA_ATTACH is not set
933CONFIG_MEDIA_TUNER=m
934# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
935CONFIG_MEDIA_TUNER_SIMPLE=m
936CONFIG_MEDIA_TUNER_TDA8290=m
937CONFIG_MEDIA_TUNER_TDA9887=m
938CONFIG_MEDIA_TUNER_TEA5761=m
939CONFIG_MEDIA_TUNER_TEA5767=m
940CONFIG_MEDIA_TUNER_MT20XX=m
941CONFIG_MEDIA_TUNER_XC2028=m
942CONFIG_MEDIA_TUNER_XC5000=m
943# CONFIG_DVB_DYNAMIC_MINORS is not set
944CONFIG_DVB_CAPTURE_DRIVERS=y
945
946#
947# Supported SAA7146 based PCI Adapters
948#
949# CONFIG_TTPCI_EEPROM is not set
950# CONFIG_DVB_BUDGET_CORE is not set
951
952#
953# Supported USB Adapters
954#
955# CONFIG_DVB_USB is not set
956# CONFIG_DVB_TTUSB_BUDGET is not set
957# CONFIG_DVB_TTUSB_DEC is not set
958# CONFIG_DVB_SIANO_SMS1XXX is not set
959
960#
961# Supported FlexCopII (B2C2) Adapters
962#
963# CONFIG_DVB_B2C2_FLEXCOP is not set
964
965#
966# Supported BT878 Adapters
967#
968
969#
970# Supported Pluto2 Adapters
971#
972# CONFIG_DVB_PLUTO2 is not set
973
974#
975# Supported SDMC DM1105 Adapters
976#
977# CONFIG_DVB_DM1105 is not set
978
979#
980# Supported DVB Frontends
981#
982
983#
984# Customise DVB Frontends
985#
986# CONFIG_DVB_FE_CUSTOMISE is not set
987
988#
989# Multistandard (satellite) frontends
990#
991# CONFIG_DVB_STB0899 is not set
992# CONFIG_DVB_STB6100 is not set
993
994#
995# DVB-S (satellite) frontends
996#
997# CONFIG_DVB_CX24110 is not set
998# CONFIG_DVB_CX24123 is not set
999# CONFIG_DVB_MT312 is not set
1000# CONFIG_DVB_S5H1420 is not set
1001# CONFIG_DVB_STV0288 is not set
1002# CONFIG_DVB_STB6000 is not set
1003# CONFIG_DVB_STV0299 is not set
1004# CONFIG_DVB_TDA8083 is not set
1005# CONFIG_DVB_TDA10086 is not set
1006# CONFIG_DVB_TDA8261 is not set
1007# CONFIG_DVB_VES1X93 is not set
1008# CONFIG_DVB_TUNER_ITD1000 is not set
1009# CONFIG_DVB_TUNER_CX24113 is not set
1010# CONFIG_DVB_TDA826X is not set
1011# CONFIG_DVB_TUA6100 is not set
1012# CONFIG_DVB_CX24116 is not set
1013# CONFIG_DVB_SI21XX is not set
1014
1015#
1016# DVB-T (terrestrial) frontends
1017#
1018# CONFIG_DVB_SP8870 is not set
1019# CONFIG_DVB_SP887X is not set
1020# CONFIG_DVB_CX22700 is not set
1021# CONFIG_DVB_CX22702 is not set
1022# CONFIG_DVB_DRX397XD is not set
1023# CONFIG_DVB_L64781 is not set
1024# CONFIG_DVB_TDA1004X is not set
1025# CONFIG_DVB_NXT6000 is not set
1026# CONFIG_DVB_MT352 is not set
1027# CONFIG_DVB_ZL10353 is not set
1028# CONFIG_DVB_DIB3000MB is not set
1029# CONFIG_DVB_DIB3000MC is not set
1030# CONFIG_DVB_DIB7000M is not set
1031# CONFIG_DVB_DIB7000P is not set
1032# CONFIG_DVB_TDA10048 is not set
1033
1034#
1035# DVB-C (cable) frontends
1036#
1037# CONFIG_DVB_VES1820 is not set
1038# CONFIG_DVB_TDA10021 is not set
1039# CONFIG_DVB_TDA10023 is not set
1040# CONFIG_DVB_STV0297 is not set
1041
1042#
1043# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
1044#
1045# CONFIG_DVB_NXT200X is not set
1046# CONFIG_DVB_OR51211 is not set
1047# CONFIG_DVB_OR51132 is not set
1048# CONFIG_DVB_BCM3510 is not set
1049# CONFIG_DVB_LGDT330X is not set
1050# CONFIG_DVB_LGDT3304 is not set
1051# CONFIG_DVB_S5H1409 is not set
1052# CONFIG_DVB_AU8522 is not set
1053# CONFIG_DVB_S5H1411 is not set
1054
1055#
1056# ISDB-T (terrestrial) frontends
1057#
1058# CONFIG_DVB_S921 is not set
1059
1060#
1061# Digital terrestrial only tuners/PLL
1062#
1063# CONFIG_DVB_PLL is not set
1064# CONFIG_DVB_TUNER_DIB0070 is not set
1065
1066#
1067# SEC control devices for DVB-S
1068#
1069# CONFIG_DVB_LNBP21 is not set
1070# CONFIG_DVB_ISL6405 is not set
1071# CONFIG_DVB_ISL6421 is not set
1072# CONFIG_DVB_LGS8GL5 is not set
1073
1074#
1075# Tools to develop new frontends
1076#
1077# CONFIG_DVB_DUMMY_FE is not set
1078# CONFIG_DVB_AF9013 is not set
1079CONFIG_DAB=y
1080# CONFIG_USB_DABUSB is not set
1081
1082#
1083# Graphics support
1084#
1085# CONFIG_AGP is not set
1086# CONFIG_DRM is not set
1087# CONFIG_VGASTATE is not set
1088CONFIG_VIDEO_OUTPUT_CONTROL=y
1089# CONFIG_FB is not set
1090# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1091
1092#
1093# Display device support
1094#
1095# CONFIG_DISPLAY_SUPPORT is not set
1096
1097#
1098# Console display driver support
1099#
1100CONFIG_VGA_CONSOLE=y
1101# CONFIG_VGACON_SOFT_SCROLLBACK is not set
1102CONFIG_DUMMY_CONSOLE=y
1103CONFIG_SOUND=y
1104# CONFIG_SOUND_OSS_CORE is not set
1105CONFIG_SND=y
1106CONFIG_SND_TIMER=y
1107CONFIG_SND_PCM=y
1108# CONFIG_SND_SEQUENCER is not set
1109# CONFIG_SND_MIXER_OSS is not set
1110# CONFIG_SND_PCM_OSS is not set
1111# CONFIG_SND_HRTIMER is not set
1112# CONFIG_SND_DYNAMIC_MINORS is not set
1113CONFIG_SND_SUPPORT_OLD_API=y
1114CONFIG_SND_VERBOSE_PROCFS=y
1115# CONFIG_SND_VERBOSE_PRINTK is not set
1116# CONFIG_SND_DEBUG is not set
1117CONFIG_SND_VMASTER=y
1118CONFIG_SND_AC97_CODEC=y
1119CONFIG_SND_DRIVERS=y
1120# CONFIG_SND_DUMMY is not set
1121# CONFIG_SND_MTPAV is not set
1122# CONFIG_SND_SERIAL_U16550 is not set
1123# CONFIG_SND_MPU401 is not set
1124# CONFIG_SND_AC97_POWER_SAVE is not set
1125CONFIG_SND_PCI=y
1126# CONFIG_SND_AD1889 is not set
1127# CONFIG_SND_ALS300 is not set
1128# CONFIG_SND_ALS4000 is not set
1129# CONFIG_SND_ALI5451 is not set
1130# CONFIG_SND_ATIIXP is not set
1131# CONFIG_SND_ATIIXP_MODEM is not set
1132# CONFIG_SND_AU8810 is not set
1133# CONFIG_SND_AU8820 is not set
1134# CONFIG_SND_AU8830 is not set
1135# CONFIG_SND_AW2 is not set
1136# CONFIG_SND_AZT3328 is not set
1137# CONFIG_SND_BT87X is not set
1138# CONFIG_SND_CA0106 is not set
1139# CONFIG_SND_CMIPCI is not set
1140# CONFIG_SND_OXYGEN is not set
1141# CONFIG_SND_CS4281 is not set
1142# CONFIG_SND_CS46XX is not set
1143# CONFIG_SND_CS5530 is not set
1144# CONFIG_SND_DARLA20 is not set
1145# CONFIG_SND_GINA20 is not set
1146# CONFIG_SND_LAYLA20 is not set
1147# CONFIG_SND_DARLA24 is not set
1148# CONFIG_SND_GINA24 is not set
1149# CONFIG_SND_LAYLA24 is not set
1150# CONFIG_SND_MONA is not set
1151# CONFIG_SND_MIA is not set
1152# CONFIG_SND_ECHO3G is not set
1153# CONFIG_SND_INDIGO is not set
1154# CONFIG_SND_INDIGOIO is not set
1155# CONFIG_SND_INDIGODJ is not set
1156# CONFIG_SND_EMU10K1 is not set
1157# CONFIG_SND_EMU10K1X is not set
1158# CONFIG_SND_ENS1370 is not set
1159# CONFIG_SND_ENS1371 is not set
1160# CONFIG_SND_ES1938 is not set
1161# CONFIG_SND_ES1968 is not set
1162# CONFIG_SND_FM801 is not set
1163# CONFIG_SND_HDA_INTEL is not set
1164# CONFIG_SND_HDSP is not set
1165# CONFIG_SND_HDSPM is not set
1166# CONFIG_SND_HIFIER is not set
1167# CONFIG_SND_ICE1712 is not set
1168# CONFIG_SND_ICE1724 is not set
1169CONFIG_SND_INTEL8X0=y
1170# CONFIG_SND_INTEL8X0M is not set
1171# CONFIG_SND_KORG1212 is not set
1172# CONFIG_SND_MAESTRO3 is not set
1173# CONFIG_SND_MIXART is not set
1174# CONFIG_SND_NM256 is not set
1175# CONFIG_SND_PCXHR is not set
1176# CONFIG_SND_RIPTIDE is not set
1177# CONFIG_SND_RME32 is not set
1178# CONFIG_SND_RME96 is not set
1179# CONFIG_SND_RME9652 is not set
1180# CONFIG_SND_SONICVIBES is not set
1181# CONFIG_SND_TRIDENT is not set
1182# CONFIG_SND_VIA82XX is not set
1183# CONFIG_SND_VIA82XX_MODEM is not set
1184# CONFIG_SND_VIRTUOSO is not set
1185# CONFIG_SND_VX222 is not set
1186# CONFIG_SND_YMFPCI is not set
1187CONFIG_SND_PPC=y
1188CONFIG_SND_USB=y
1189# CONFIG_SND_USB_AUDIO is not set
1190# CONFIG_SND_USB_USX2Y is not set
1191# CONFIG_SND_USB_CAIAQ is not set
1192# CONFIG_SND_SOC is not set
1193# CONFIG_SOUND_PRIME is not set
1194CONFIG_AC97_BUS=y
1195CONFIG_HID_SUPPORT=y
1196CONFIG_HID=y
1197# CONFIG_HID_DEBUG is not set
1198# CONFIG_HIDRAW is not set
1199
1200#
1201# USB Input Devices
1202#
1203CONFIG_USB_HID=y
1204# CONFIG_HID_PID is not set
1205# CONFIG_USB_HIDDEV is not set
1206
1207#
1208# Special HID drivers
1209#
1210CONFIG_HID_COMPAT=y
1211CONFIG_HID_A4TECH=y
1212CONFIG_HID_APPLE=y
1213CONFIG_HID_BELKIN=y
1214CONFIG_HID_CHERRY=y
1215CONFIG_HID_CHICONY=y
1216CONFIG_HID_CYPRESS=y
1217CONFIG_HID_EZKEY=y
1218CONFIG_HID_GYRATION=y
1219CONFIG_HID_LOGITECH=y
1220# CONFIG_LOGITECH_FF is not set
1221# CONFIG_LOGIRUMBLEPAD2_FF is not set
1222CONFIG_HID_MICROSOFT=y
1223CONFIG_HID_MONTEREY=y
1224# CONFIG_HID_NTRIG is not set
1225CONFIG_HID_PANTHERLORD=y
1226# CONFIG_PANTHERLORD_FF is not set
1227CONFIG_HID_PETALYNX=y
1228CONFIG_HID_SAMSUNG=y
1229CONFIG_HID_SONY=y
1230CONFIG_HID_SUNPLUS=y
1231# CONFIG_GREENASIA_FF is not set
1232# CONFIG_HID_TOPSEED is not set
1233CONFIG_THRUSTMASTER_FF=m
1234CONFIG_ZEROPLUS_FF=m
1235CONFIG_USB_SUPPORT=y
1236CONFIG_USB_ARCH_HAS_HCD=y
1237CONFIG_USB_ARCH_HAS_OHCI=y
1238CONFIG_USB_ARCH_HAS_EHCI=y
1239CONFIG_USB=y
1240# CONFIG_USB_DEBUG is not set
1241# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1242
1243#
1244# Miscellaneous USB options
1245#
1246CONFIG_USB_DEVICEFS=y
1247CONFIG_USB_DEVICE_CLASS=y
1248# CONFIG_USB_DYNAMIC_MINORS is not set
1249# CONFIG_USB_OTG is not set
1250# CONFIG_USB_OTG_WHITELIST is not set
1251# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1252CONFIG_USB_MON=y
1253# CONFIG_USB_WUSB is not set
1254# CONFIG_USB_WUSB_CBAF is not set
1255
1256#
1257# USB Host Controller Drivers
1258#
1259# CONFIG_USB_C67X00_HCD is not set
1260CONFIG_USB_EHCI_HCD=y
1261CONFIG_USB_EHCI_ROOT_HUB_TT=y
1262# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1263CONFIG_USB_EHCI_FSL=y
1264CONFIG_USB_EHCI_HCD_PPC_OF=y
1265# CONFIG_USB_OXU210HP_HCD is not set
1266# CONFIG_USB_ISP116X_HCD is not set
1267# CONFIG_USB_ISP1760_HCD is not set
1268CONFIG_USB_OHCI_HCD=y
1269CONFIG_USB_OHCI_HCD_PPC_OF=y
1270CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1271CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
1272CONFIG_USB_OHCI_HCD_PCI=y
1273CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1274CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
1275CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1276# CONFIG_USB_UHCI_HCD is not set
1277# CONFIG_USB_SL811_HCD is not set
1278# CONFIG_USB_R8A66597_HCD is not set
1279# CONFIG_USB_WHCI_HCD is not set
1280# CONFIG_USB_HWA_HCD is not set
1281
1282#
1283# USB Device Class drivers
1284#
1285# CONFIG_USB_ACM is not set
1286# CONFIG_USB_PRINTER is not set
1287# CONFIG_USB_WDM is not set
1288# CONFIG_USB_TMC is not set
1289
1290#
1291# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1292#
1293
1294#
1295# see USB_STORAGE Help for more information
1296#
1297CONFIG_USB_STORAGE=y
1298# CONFIG_USB_STORAGE_DEBUG is not set
1299# CONFIG_USB_STORAGE_DATAFAB is not set
1300# CONFIG_USB_STORAGE_FREECOM is not set
1301# CONFIG_USB_STORAGE_ISD200 is not set
1302# CONFIG_USB_STORAGE_USBAT is not set
1303# CONFIG_USB_STORAGE_SDDR09 is not set
1304# CONFIG_USB_STORAGE_SDDR55 is not set
1305# CONFIG_USB_STORAGE_JUMPSHOT is not set
1306# CONFIG_USB_STORAGE_ALAUDA is not set
1307# CONFIG_USB_STORAGE_ONETOUCH is not set
1308# CONFIG_USB_STORAGE_KARMA is not set
1309# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1310# CONFIG_USB_LIBUSUAL is not set
1311
1312#
1313# USB Imaging devices
1314#
1315# CONFIG_USB_MDC800 is not set
1316# CONFIG_USB_MICROTEK is not set
1317
1318#
1319# USB port drivers
1320#
1321# CONFIG_USB_SERIAL is not set
1322
1323#
1324# USB Miscellaneous drivers
1325#
1326# CONFIG_USB_EMI62 is not set
1327# CONFIG_USB_EMI26 is not set
1328# CONFIG_USB_ADUTUX is not set
1329# CONFIG_USB_SEVSEG is not set
1330# CONFIG_USB_RIO500 is not set
1331# CONFIG_USB_LEGOTOWER is not set
1332# CONFIG_USB_LCD is not set
1333# CONFIG_USB_BERRY_CHARGE is not set
1334# CONFIG_USB_LED is not set
1335# CONFIG_USB_CYPRESS_CY7C63 is not set
1336# CONFIG_USB_CYTHERM is not set
1337# CONFIG_USB_PHIDGET is not set
1338# CONFIG_USB_IDMOUSE is not set
1339# CONFIG_USB_FTDI_ELAN is not set
1340# CONFIG_USB_APPLEDISPLAY is not set
1341# CONFIG_USB_SISUSBVGA is not set
1342# CONFIG_USB_LD is not set
1343# CONFIG_USB_TRANCEVIBRATOR is not set
1344# CONFIG_USB_IOWARRIOR is not set
1345# CONFIG_USB_TEST is not set
1346# CONFIG_USB_ISIGHTFW is not set
1347# CONFIG_USB_VST is not set
1348# CONFIG_USB_GADGET is not set
1349
1350#
1351# OTG and related infrastructure
1352#
1353# CONFIG_UWB is not set
1354# CONFIG_MMC is not set
1355# CONFIG_MEMSTICK is not set
1356# CONFIG_NEW_LEDS is not set
1357# CONFIG_ACCESSIBILITY is not set
1358# CONFIG_INFINIBAND is not set
1359# CONFIG_EDAC is not set
1360CONFIG_RTC_LIB=y
1361CONFIG_RTC_CLASS=y
1362CONFIG_RTC_HCTOSYS=y
1363CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1364# CONFIG_RTC_DEBUG is not set
1365
1366#
1367# RTC interfaces
1368#
1369CONFIG_RTC_INTF_SYSFS=y
1370CONFIG_RTC_INTF_PROC=y
1371CONFIG_RTC_INTF_DEV=y
1372# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1373# CONFIG_RTC_DRV_TEST is not set
1374
1375#
1376# I2C RTC drivers
1377#
1378# CONFIG_RTC_DRV_DS1307 is not set
1379# CONFIG_RTC_DRV_DS1374 is not set
1380# CONFIG_RTC_DRV_DS1672 is not set
1381# CONFIG_RTC_DRV_MAX6900 is not set
1382# CONFIG_RTC_DRV_RS5C372 is not set
1383# CONFIG_RTC_DRV_ISL1208 is not set
1384# CONFIG_RTC_DRV_X1205 is not set
1385# CONFIG_RTC_DRV_PCF8563 is not set
1386# CONFIG_RTC_DRV_PCF8583 is not set
1387# CONFIG_RTC_DRV_M41T80 is not set
1388# CONFIG_RTC_DRV_S35390A is not set
1389# CONFIG_RTC_DRV_FM3130 is not set
1390# CONFIG_RTC_DRV_RX8581 is not set
1391
1392#
1393# SPI RTC drivers
1394#
1395
1396#
1397# Platform RTC drivers
1398#
1399CONFIG_RTC_DRV_CMOS=y
1400# CONFIG_RTC_DRV_DS1286 is not set
1401# CONFIG_RTC_DRV_DS1511 is not set
1402# CONFIG_RTC_DRV_DS1553 is not set
1403# CONFIG_RTC_DRV_DS1742 is not set
1404# CONFIG_RTC_DRV_STK17TA8 is not set
1405# CONFIG_RTC_DRV_M48T86 is not set
1406# CONFIG_RTC_DRV_M48T35 is not set
1407# CONFIG_RTC_DRV_M48T59 is not set
1408# CONFIG_RTC_DRV_BQ4802 is not set
1409# CONFIG_RTC_DRV_V3020 is not set
1410
1411#
1412# on-CPU RTC drivers
1413#
1414# CONFIG_RTC_DRV_PPC is not set
1415CONFIG_DMADEVICES=y
1416
1417#
1418# DMA Devices
1419#
1420CONFIG_FSL_DMA=y
1421CONFIG_DMA_ENGINE=y
1422
1423#
1424# DMA Clients
1425#
1426# CONFIG_NET_DMA is not set
1427# CONFIG_DMATEST is not set
1428# CONFIG_UIO is not set
1429# CONFIG_STAGING is not set
1430
1431#
1432# File systems
1433#
1434CONFIG_EXT2_FS=y
1435# CONFIG_EXT2_FS_XATTR is not set
1436# CONFIG_EXT2_FS_XIP is not set
1437CONFIG_EXT3_FS=y
1438CONFIG_EXT3_FS_XATTR=y
1439# CONFIG_EXT3_FS_POSIX_ACL is not set
1440# CONFIG_EXT3_FS_SECURITY is not set
1441# CONFIG_EXT4_FS is not set
1442CONFIG_JBD=y
1443# CONFIG_JBD_DEBUG is not set
1444CONFIG_FS_MBCACHE=y
1445# CONFIG_REISERFS_FS is not set
1446# CONFIG_JFS_FS is not set
1447# CONFIG_FS_POSIX_ACL is not set
1448CONFIG_FILE_LOCKING=y
1449# CONFIG_XFS_FS is not set
1450# CONFIG_GFS2_FS is not set
1451# CONFIG_OCFS2_FS is not set
1452# CONFIG_BTRFS_FS is not set
1453CONFIG_DNOTIFY=y
1454CONFIG_INOTIFY=y
1455CONFIG_INOTIFY_USER=y
1456# CONFIG_QUOTA is not set
1457# CONFIG_AUTOFS_FS is not set
1458# CONFIG_AUTOFS4_FS is not set
1459# CONFIG_FUSE_FS is not set
1460
1461#
1462# CD-ROM/DVD Filesystems
1463#
1464CONFIG_ISO9660_FS=m
1465CONFIG_JOLIET=y
1466CONFIG_ZISOFS=y
1467CONFIG_UDF_FS=m
1468CONFIG_UDF_NLS=y
1469
1470#
1471# DOS/FAT/NT Filesystems
1472#
1473CONFIG_FAT_FS=y
1474CONFIG_MSDOS_FS=m
1475CONFIG_VFAT_FS=y
1476CONFIG_FAT_DEFAULT_CODEPAGE=437
1477CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1478CONFIG_NTFS_FS=y
1479# CONFIG_NTFS_DEBUG is not set
1480# CONFIG_NTFS_RW is not set
1481
1482#
1483# Pseudo filesystems
1484#
1485CONFIG_PROC_FS=y
1486CONFIG_PROC_KCORE=y
1487CONFIG_PROC_SYSCTL=y
1488CONFIG_PROC_PAGE_MONITOR=y
1489CONFIG_SYSFS=y
1490CONFIG_TMPFS=y
1491# CONFIG_TMPFS_POSIX_ACL is not set
1492# CONFIG_HUGETLB_PAGE is not set
1493# CONFIG_CONFIGFS_FS is not set
1494CONFIG_MISC_FILESYSTEMS=y
1495CONFIG_ADFS_FS=m
1496# CONFIG_ADFS_FS_RW is not set
1497CONFIG_AFFS_FS=m
1498CONFIG_HFS_FS=m
1499CONFIG_HFSPLUS_FS=m
1500CONFIG_BEFS_FS=m
1501# CONFIG_BEFS_DEBUG is not set
1502CONFIG_BFS_FS=m
1503CONFIG_EFS_FS=m
1504CONFIG_CRAMFS=y
1505# CONFIG_SQUASHFS is not set
1506CONFIG_VXFS_FS=m
1507# CONFIG_MINIX_FS is not set
1508# CONFIG_OMFS_FS is not set
1509CONFIG_HPFS_FS=m
1510CONFIG_QNX4FS_FS=m
1511# CONFIG_ROMFS_FS is not set
1512CONFIG_SYSV_FS=m
1513CONFIG_UFS_FS=m
1514# CONFIG_UFS_FS_WRITE is not set
1515# CONFIG_UFS_DEBUG is not set
1516CONFIG_NETWORK_FILESYSTEMS=y
1517CONFIG_NFS_FS=y
1518CONFIG_NFS_V3=y
1519# CONFIG_NFS_V3_ACL is not set
1520CONFIG_NFS_V4=y
1521CONFIG_ROOT_NFS=y
1522CONFIG_NFSD=y
1523# CONFIG_NFSD_V3 is not set
1524# CONFIG_NFSD_V4 is not set
1525CONFIG_LOCKD=y
1526CONFIG_LOCKD_V4=y
1527CONFIG_EXPORTFS=y
1528CONFIG_NFS_COMMON=y
1529CONFIG_SUNRPC=y
1530CONFIG_SUNRPC_GSS=y
1531# CONFIG_SUNRPC_REGISTER_V4 is not set
1532CONFIG_RPCSEC_GSS_KRB5=y
1533# CONFIG_RPCSEC_GSS_SPKM3 is not set
1534# CONFIG_SMB_FS is not set
1535# CONFIG_CIFS is not set
1536# CONFIG_NCP_FS is not set
1537# CONFIG_CODA_FS is not set
1538# CONFIG_AFS_FS is not set
1539
1540#
1541# Partition Types
1542#
1543CONFIG_PARTITION_ADVANCED=y
1544# CONFIG_ACORN_PARTITION is not set
1545# CONFIG_OSF_PARTITION is not set
1546# CONFIG_AMIGA_PARTITION is not set
1547# CONFIG_ATARI_PARTITION is not set
1548CONFIG_MAC_PARTITION=y
1549CONFIG_MSDOS_PARTITION=y
1550# CONFIG_BSD_DISKLABEL is not set
1551# CONFIG_MINIX_SUBPARTITION is not set
1552# CONFIG_SOLARIS_X86_PARTITION is not set
1553# CONFIG_UNIXWARE_DISKLABEL is not set
1554# CONFIG_LDM_PARTITION is not set
1555# CONFIG_SGI_PARTITION is not set
1556# CONFIG_ULTRIX_PARTITION is not set
1557# CONFIG_SUN_PARTITION is not set
1558# CONFIG_KARMA_PARTITION is not set
1559# CONFIG_EFI_PARTITION is not set
1560# CONFIG_SYSV68_PARTITION is not set
1561CONFIG_NLS=y
1562CONFIG_NLS_DEFAULT="iso8859-1"
1563# CONFIG_NLS_CODEPAGE_437 is not set
1564# CONFIG_NLS_CODEPAGE_737 is not set
1565# CONFIG_NLS_CODEPAGE_775 is not set
1566# CONFIG_NLS_CODEPAGE_850 is not set
1567# CONFIG_NLS_CODEPAGE_852 is not set
1568# CONFIG_NLS_CODEPAGE_855 is not set
1569# CONFIG_NLS_CODEPAGE_857 is not set
1570# CONFIG_NLS_CODEPAGE_860 is not set
1571# CONFIG_NLS_CODEPAGE_861 is not set
1572# CONFIG_NLS_CODEPAGE_862 is not set
1573# CONFIG_NLS_CODEPAGE_863 is not set
1574# CONFIG_NLS_CODEPAGE_864 is not set
1575# CONFIG_NLS_CODEPAGE_865 is not set
1576# CONFIG_NLS_CODEPAGE_866 is not set
1577# CONFIG_NLS_CODEPAGE_869 is not set
1578# CONFIG_NLS_CODEPAGE_936 is not set
1579# CONFIG_NLS_CODEPAGE_950 is not set
1580# CONFIG_NLS_CODEPAGE_932 is not set
1581# CONFIG_NLS_CODEPAGE_949 is not set
1582# CONFIG_NLS_CODEPAGE_874 is not set
1583# CONFIG_NLS_ISO8859_8 is not set
1584# CONFIG_NLS_CODEPAGE_1250 is not set
1585# CONFIG_NLS_CODEPAGE_1251 is not set
1586# CONFIG_NLS_ASCII is not set
1587# CONFIG_NLS_ISO8859_1 is not set
1588# CONFIG_NLS_ISO8859_2 is not set
1589# CONFIG_NLS_ISO8859_3 is not set
1590# CONFIG_NLS_ISO8859_4 is not set
1591# CONFIG_NLS_ISO8859_5 is not set
1592# CONFIG_NLS_ISO8859_6 is not set
1593# CONFIG_NLS_ISO8859_7 is not set
1594# CONFIG_NLS_ISO8859_9 is not set
1595# CONFIG_NLS_ISO8859_13 is not set
1596# CONFIG_NLS_ISO8859_14 is not set
1597# CONFIG_NLS_ISO8859_15 is not set
1598# CONFIG_NLS_KOI8_R is not set
1599# CONFIG_NLS_KOI8_U is not set
1600CONFIG_NLS_UTF8=m
1601# CONFIG_DLM is not set
1602
1603#
1604# Library routines
1605#
1606CONFIG_BITREVERSE=y
1607CONFIG_GENERIC_FIND_LAST_BIT=y
1608# CONFIG_CRC_CCITT is not set
1609# CONFIG_CRC16 is not set
1610CONFIG_CRC_T10DIF=y
1611CONFIG_CRC_ITU_T=m
1612CONFIG_CRC32=y
1613# CONFIG_CRC7 is not set
1614CONFIG_LIBCRC32C=m
1615CONFIG_ZLIB_INFLATE=y
1616CONFIG_PLIST=y
1617CONFIG_HAS_IOMEM=y
1618CONFIG_HAS_IOPORT=y
1619CONFIG_HAS_DMA=y
1620CONFIG_HAVE_LMB=y
1621
1622#
1623# Kernel hacking
1624#
1625# CONFIG_PRINTK_TIME is not set
1626CONFIG_ENABLE_WARN_DEPRECATED=y
1627CONFIG_ENABLE_MUST_CHECK=y
1628CONFIG_FRAME_WARN=1024
1629# CONFIG_MAGIC_SYSRQ is not set
1630# CONFIG_UNUSED_SYMBOLS is not set
1631CONFIG_DEBUG_FS=y
1632# CONFIG_HEADERS_CHECK is not set
1633CONFIG_DEBUG_KERNEL=y
1634# CONFIG_DEBUG_SHIRQ is not set
1635CONFIG_DETECT_SOFTLOCKUP=y
1636# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1637CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1638CONFIG_SCHED_DEBUG=y
1639# CONFIG_SCHEDSTATS is not set
1640# CONFIG_TIMER_STATS is not set
1641# CONFIG_DEBUG_OBJECTS is not set
1642# CONFIG_SLUB_DEBUG_ON is not set
1643# CONFIG_SLUB_STATS is not set
1644# CONFIG_DEBUG_RT_MUTEXES is not set
1645# CONFIG_RT_MUTEX_TESTER is not set
1646# CONFIG_DEBUG_SPINLOCK is not set
1647# CONFIG_DEBUG_MUTEXES is not set
1648# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1649# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1650# CONFIG_DEBUG_KOBJECT is not set
1651# CONFIG_DEBUG_HIGHMEM is not set
1652# CONFIG_DEBUG_BUGVERBOSE is not set
1653CONFIG_DEBUG_INFO=y
1654# CONFIG_DEBUG_VM is not set
1655# CONFIG_DEBUG_WRITECOUNT is not set
1656# CONFIG_DEBUG_MEMORY_INIT is not set
1657# CONFIG_DEBUG_LIST is not set
1658# CONFIG_DEBUG_SG is not set
1659# CONFIG_DEBUG_NOTIFIERS is not set
1660# CONFIG_BOOT_PRINTK_DELAY is not set
1661# CONFIG_RCU_TORTURE_TEST is not set
1662# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1663# CONFIG_BACKTRACE_SELF_TEST is not set
1664# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1665# CONFIG_FAULT_INJECTION is not set
1666# CONFIG_LATENCYTOP is not set
1667CONFIG_SYSCTL_SYSCALL_CHECK=y
1668CONFIG_HAVE_FUNCTION_TRACER=y
1669CONFIG_HAVE_DYNAMIC_FTRACE=y
1670CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1671
1672#
1673# Tracers
1674#
1675# CONFIG_FUNCTION_TRACER is not set
1676# CONFIG_SCHED_TRACER is not set
1677# CONFIG_CONTEXT_SWITCH_TRACER is not set
1678# CONFIG_BOOT_TRACER is not set
1679# CONFIG_TRACE_BRANCH_PROFILING is not set
1680# CONFIG_STACK_TRACER is not set
1681# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1682# CONFIG_SAMPLES is not set
1683CONFIG_HAVE_ARCH_KGDB=y
1684# CONFIG_KGDB is not set
1685CONFIG_PRINT_STACK_DEPTH=64
1686# CONFIG_DEBUG_STACKOVERFLOW is not set
1687# CONFIG_DEBUG_STACK_USAGE is not set
1688# CONFIG_DEBUG_PAGEALLOC is not set
1689# CONFIG_CODE_PATCHING_SELFTEST is not set
1690# CONFIG_FTR_FIXUP_SELFTEST is not set
1691# CONFIG_MSI_BITMAP_SELFTEST is not set
1692# CONFIG_XMON is not set
1693# CONFIG_IRQSTACKS is not set
1694# CONFIG_VIRQ_DEBUG is not set
1695# CONFIG_BDI_SWITCH is not set
1696# CONFIG_PPC_EARLY_DEBUG is not set
1697
1698#
1699# Security options
1700#
1701# CONFIG_KEYS is not set
1702# CONFIG_SECURITY is not set
1703# CONFIG_SECURITYFS is not set
1704# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1705CONFIG_CRYPTO=y
1706
1707#
1708# Crypto core or helper
1709#
1710# CONFIG_CRYPTO_FIPS is not set
1711CONFIG_CRYPTO_ALGAPI=y
1712CONFIG_CRYPTO_ALGAPI2=y
1713CONFIG_CRYPTO_AEAD=y
1714CONFIG_CRYPTO_AEAD2=y
1715CONFIG_CRYPTO_BLKCIPHER=y
1716CONFIG_CRYPTO_BLKCIPHER2=y
1717CONFIG_CRYPTO_HASH=y
1718CONFIG_CRYPTO_HASH2=y
1719CONFIG_CRYPTO_RNG2=y
1720CONFIG_CRYPTO_MANAGER=y
1721CONFIG_CRYPTO_MANAGER2=y
1722# CONFIG_CRYPTO_GF128MUL is not set
1723# CONFIG_CRYPTO_NULL is not set
1724# CONFIG_CRYPTO_CRYPTD is not set
1725CONFIG_CRYPTO_AUTHENC=y
1726# CONFIG_CRYPTO_TEST is not set
1727
1728#
1729# Authenticated Encryption with Associated Data
1730#
1731# CONFIG_CRYPTO_CCM is not set
1732# CONFIG_CRYPTO_GCM is not set
1733# CONFIG_CRYPTO_SEQIV is not set
1734
1735#
1736# Block modes
1737#
1738CONFIG_CRYPTO_CBC=y
1739# CONFIG_CRYPTO_CTR is not set
1740# CONFIG_CRYPTO_CTS is not set
1741# CONFIG_CRYPTO_ECB is not set
1742# CONFIG_CRYPTO_LRW is not set
1743CONFIG_CRYPTO_PCBC=m
1744# CONFIG_CRYPTO_XTS is not set
1745
1746#
1747# Hash modes
1748#
1749CONFIG_CRYPTO_HMAC=y
1750# CONFIG_CRYPTO_XCBC is not set
1751
1752#
1753# Digest
1754#
1755CONFIG_CRYPTO_CRC32C=m
1756# CONFIG_CRYPTO_MD4 is not set
1757CONFIG_CRYPTO_MD5=y
1758# CONFIG_CRYPTO_MICHAEL_MIC is not set
1759# CONFIG_CRYPTO_RMD128 is not set
1760# CONFIG_CRYPTO_RMD160 is not set
1761# CONFIG_CRYPTO_RMD256 is not set
1762# CONFIG_CRYPTO_RMD320 is not set
1763CONFIG_CRYPTO_SHA1=m
1764# CONFIG_CRYPTO_SHA256 is not set
1765# CONFIG_CRYPTO_SHA512 is not set
1766# CONFIG_CRYPTO_TGR192 is not set
1767# CONFIG_CRYPTO_WP512 is not set
1768
1769#
1770# Ciphers
1771#
1772# CONFIG_CRYPTO_AES is not set
1773# CONFIG_CRYPTO_ANUBIS is not set
1774# CONFIG_CRYPTO_ARC4 is not set
1775# CONFIG_CRYPTO_BLOWFISH is not set
1776# CONFIG_CRYPTO_CAMELLIA is not set
1777# CONFIG_CRYPTO_CAST5 is not set
1778# CONFIG_CRYPTO_CAST6 is not set
1779CONFIG_CRYPTO_DES=y
1780# CONFIG_CRYPTO_FCRYPT is not set
1781# CONFIG_CRYPTO_KHAZAD is not set
1782# CONFIG_CRYPTO_SALSA20 is not set
1783# CONFIG_CRYPTO_SEED is not set
1784# CONFIG_CRYPTO_SERPENT is not set
1785# CONFIG_CRYPTO_TEA is not set
1786# CONFIG_CRYPTO_TWOFISH is not set
1787
1788#
1789# Compression
1790#
1791# CONFIG_CRYPTO_DEFLATE is not set
1792# CONFIG_CRYPTO_LZO is not set
1793
1794#
1795# Random Number Generation
1796#
1797# CONFIG_CRYPTO_ANSI_CPRNG is not set
1798CONFIG_CRYPTO_HW=y
1799# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1800CONFIG_CRYPTO_DEV_TALITOS=y
1801# CONFIG_PPC_CLOCK is not set
1802# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8544_ds_defconfig b/arch/powerpc/configs/85xx/mpc8544_ds_defconfig
deleted file mode 100644
index f6fa0b761cb3..000000000000
--- a/arch/powerpc/configs/85xx/mpc8544_ds_defconfig
+++ /dev/null
@@ -1,1802 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.29-rc2
4# Mon Jan 26 15:36:07 2009
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12CONFIG_PPC_85xx=y
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set
19CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y
21CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y
25# CONFIG_PPC_MM_SLICES is not set
26# CONFIG_SMP is not set
27CONFIG_PPC32=y
28CONFIG_WORD_SIZE=32
29# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
30CONFIG_MMU=y
31CONFIG_GENERIC_CMOS_UPDATE=y
32CONFIG_GENERIC_TIME=y
33CONFIG_GENERIC_TIME_VSYSCALL=y
34CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y
40CONFIG_LOCKDEP_SUPPORT=y
41CONFIG_RWSEM_XCHGADD_ALGORITHM=y
42CONFIG_ARCH_HAS_ILOG2_U32=y
43CONFIG_GENERIC_HWEIGHT=y
44CONFIG_GENERIC_CALIBRATE_DELAY=y
45CONFIG_GENERIC_FIND_NEXT_BIT=y
46# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
47CONFIG_PPC=y
48CONFIG_EARLY_PRINTK=y
49CONFIG_GENERIC_NVRAM=y
50CONFIG_SCHED_OMIT_FRAME_POINTER=y
51CONFIG_ARCH_MAY_HAVE_PC_FDC=y
52CONFIG_PPC_OF=y
53CONFIG_OF=y
54CONFIG_PPC_UDBG_16550=y
55# CONFIG_GENERIC_TBSYNC is not set
56CONFIG_AUDIT_ARCH=y
57CONFIG_GENERIC_BUG=y
58CONFIG_DEFAULT_UIMAGE=y
59# CONFIG_PPC_DCR_NATIVE is not set
60# CONFIG_PPC_DCR_MMIO is not set
61CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
62
63#
64# General setup
65#
66CONFIG_EXPERIMENTAL=y
67CONFIG_BROKEN_ON_SMP=y
68CONFIG_INIT_ENV_ARG_LIMIT=32
69CONFIG_LOCALVERSION=""
70CONFIG_LOCALVERSION_AUTO=y
71CONFIG_SWAP=y
72CONFIG_SYSVIPC=y
73CONFIG_SYSVIPC_SYSCTL=y
74CONFIG_POSIX_MQUEUE=y
75CONFIG_BSD_PROCESS_ACCT=y
76# CONFIG_BSD_PROCESS_ACCT_V3 is not set
77# CONFIG_TASKSTATS is not set
78CONFIG_AUDIT=y
79# CONFIG_AUDITSYSCALL is not set
80CONFIG_IKCONFIG=y
81CONFIG_IKCONFIG_PROC=y
82CONFIG_LOG_BUF_SHIFT=14
83CONFIG_GROUP_SCHED=y
84# CONFIG_FAIR_GROUP_SCHED is not set
85# CONFIG_RT_GROUP_SCHED is not set
86CONFIG_USER_SCHED=y
87# CONFIG_CGROUP_SCHED is not set
88# CONFIG_CGROUPS is not set
89CONFIG_SYSFS_DEPRECATED=y
90CONFIG_SYSFS_DEPRECATED_V2=y
91# CONFIG_RELAY is not set
92# CONFIG_NAMESPACES is not set
93CONFIG_BLK_DEV_INITRD=y
94CONFIG_INITRAMFS_SOURCE=""
95# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
96CONFIG_SYSCTL=y
97CONFIG_EMBEDDED=y
98CONFIG_SYSCTL_SYSCALL=y
99CONFIG_KALLSYMS=y
100CONFIG_KALLSYMS_ALL=y
101CONFIG_KALLSYMS_STRIP_GENERATED=y
102CONFIG_KALLSYMS_EXTRA_PASS=y
103CONFIG_HOTPLUG=y
104CONFIG_PRINTK=y
105CONFIG_BUG=y
106CONFIG_ELF_CORE=y
107CONFIG_COMPAT_BRK=y
108CONFIG_BASE_FULL=y
109CONFIG_FUTEX=y
110CONFIG_ANON_INODES=y
111CONFIG_EPOLL=y
112CONFIG_SIGNALFD=y
113CONFIG_TIMERFD=y
114CONFIG_EVENTFD=y
115CONFIG_SHMEM=y
116CONFIG_AIO=y
117CONFIG_VM_EVENT_COUNTERS=y
118CONFIG_PCI_QUIRKS=y
119CONFIG_SLUB_DEBUG=y
120# CONFIG_SLAB is not set
121CONFIG_SLUB=y
122# CONFIG_SLOB is not set
123# CONFIG_PROFILING is not set
124CONFIG_HAVE_OPROFILE=y
125# CONFIG_KPROBES is not set
126CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
127CONFIG_HAVE_IOREMAP_PROT=y
128CONFIG_HAVE_KPROBES=y
129CONFIG_HAVE_KRETPROBES=y
130CONFIG_HAVE_ARCH_TRACEHOOK=y
131# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
132CONFIG_SLABINFO=y
133CONFIG_RT_MUTEXES=y
134CONFIG_BASE_SMALL=0
135CONFIG_MODULES=y
136# CONFIG_MODULE_FORCE_LOAD is not set
137CONFIG_MODULE_UNLOAD=y
138CONFIG_MODULE_FORCE_UNLOAD=y
139CONFIG_MODVERSIONS=y
140# CONFIG_MODULE_SRCVERSION_ALL is not set
141CONFIG_BLOCK=y
142CONFIG_LBD=y
143# CONFIG_BLK_DEV_IO_TRACE is not set
144# CONFIG_BLK_DEV_BSG is not set
145# CONFIG_BLK_DEV_INTEGRITY is not set
146
147#
148# IO Schedulers
149#
150CONFIG_IOSCHED_NOOP=y
151CONFIG_IOSCHED_AS=y
152CONFIG_IOSCHED_DEADLINE=y
153CONFIG_IOSCHED_CFQ=y
154# CONFIG_DEFAULT_AS is not set
155# CONFIG_DEFAULT_DEADLINE is not set
156CONFIG_DEFAULT_CFQ=y
157# CONFIG_DEFAULT_NOOP is not set
158CONFIG_DEFAULT_IOSCHED="cfq"
159CONFIG_CLASSIC_RCU=y
160# CONFIG_TREE_RCU is not set
161# CONFIG_PREEMPT_RCU is not set
162# CONFIG_TREE_RCU_TRACE is not set
163# CONFIG_PREEMPT_RCU_TRACE is not set
164# CONFIG_FREEZER is not set
165
166#
167# Platform support
168#
169# CONFIG_PPC_CELL is not set
170# CONFIG_PPC_CELL_NATIVE is not set
171# CONFIG_PQ2ADS is not set
172CONFIG_MPC85xx=y
173# CONFIG_MPC8540_ADS is not set
174# CONFIG_MPC8560_ADS is not set
175# CONFIG_MPC85xx_CDS is not set
176# CONFIG_MPC85xx_MDS is not set
177# CONFIG_MPC8536_DS is not set
178CONFIG_MPC85xx_DS=y
179# CONFIG_KSI8560 is not set
180# CONFIG_STX_GP3 is not set
181# CONFIG_TQM8540 is not set
182# CONFIG_TQM8541 is not set
183# CONFIG_TQM8548 is not set
184# CONFIG_TQM8555 is not set
185# CONFIG_TQM8560 is not set
186# CONFIG_SBC8548 is not set
187# CONFIG_SBC8560 is not set
188# CONFIG_IPIC is not set
189CONFIG_MPIC=y
190# CONFIG_MPIC_WEIRD is not set
191CONFIG_PPC_I8259=y
192# CONFIG_PPC_RTAS is not set
193# CONFIG_MMIO_NVRAM is not set
194# CONFIG_PPC_MPC106 is not set
195# CONFIG_PPC_970_NAP is not set
196# CONFIG_PPC_INDIRECT_IO is not set
197# CONFIG_GENERIC_IOMAP is not set
198# CONFIG_CPU_FREQ is not set
199# CONFIG_QUICC_ENGINE is not set
200# CONFIG_CPM2 is not set
201CONFIG_FSL_ULI1575=y
202# CONFIG_MPC8xxx_GPIO is not set
203# CONFIG_SIMPLE_GPIO is not set
204
205#
206# Kernel options
207#
208CONFIG_HIGHMEM=y
209CONFIG_TICK_ONESHOT=y
210CONFIG_NO_HZ=y
211CONFIG_HIGH_RES_TIMERS=y
212CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
213# CONFIG_HZ_100 is not set
214CONFIG_HZ_250=y
215# CONFIG_HZ_300 is not set
216# CONFIG_HZ_1000 is not set
217CONFIG_HZ=250
218CONFIG_SCHED_HRTICK=y
219CONFIG_PREEMPT_NONE=y
220# CONFIG_PREEMPT_VOLUNTARY is not set
221# CONFIG_PREEMPT is not set
222CONFIG_BINFMT_ELF=y
223# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
224# CONFIG_HAVE_AOUT is not set
225CONFIG_BINFMT_MISC=m
226CONFIG_MATH_EMULATION=y
227# CONFIG_IOMMU_HELPER is not set
228CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
229CONFIG_ARCH_HAS_WALK_MEMORY=y
230CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
231CONFIG_ARCH_FLATMEM_ENABLE=y
232CONFIG_ARCH_POPULATES_NODE_MAP=y
233CONFIG_SELECT_MEMORY_MODEL=y
234CONFIG_FLATMEM_MANUAL=y
235# CONFIG_DISCONTIGMEM_MANUAL is not set
236# CONFIG_SPARSEMEM_MANUAL is not set
237CONFIG_FLATMEM=y
238CONFIG_FLAT_NODE_MEM_MAP=y
239CONFIG_PAGEFLAGS_EXTENDED=y
240CONFIG_SPLIT_PTLOCK_CPUS=4
241CONFIG_MIGRATION=y
242# CONFIG_PHYS_ADDR_T_64BIT is not set
243CONFIG_ZONE_DMA_FLAG=1
244CONFIG_BOUNCE=y
245CONFIG_VIRT_TO_BUS=y
246CONFIG_UNEVICTABLE_LRU=y
247CONFIG_PPC_4K_PAGES=y
248# CONFIG_PPC_16K_PAGES is not set
249# CONFIG_PPC_64K_PAGES is not set
250CONFIG_FORCE_MAX_ZONEORDER=11
251CONFIG_PROC_DEVICETREE=y
252# CONFIG_CMDLINE_BOOL is not set
253CONFIG_EXTRA_TARGETS=""
254# CONFIG_PM is not set
255CONFIG_SECCOMP=y
256CONFIG_ISA_DMA_API=y
257
258#
259# Bus options
260#
261CONFIG_ZONE_DMA=y
262CONFIG_GENERIC_ISA_DMA=y
263CONFIG_PPC_INDIRECT_PCI=y
264CONFIG_FSL_SOC=y
265CONFIG_FSL_PCI=y
266CONFIG_PPC_PCI_CHOICE=y
267CONFIG_PCI=y
268CONFIG_PCI_DOMAINS=y
269CONFIG_PCI_SYSCALL=y
270# CONFIG_PCIEPORTBUS is not set
271CONFIG_ARCH_SUPPORTS_MSI=y
272# CONFIG_PCI_MSI is not set
273# CONFIG_PCI_LEGACY is not set
274# CONFIG_PCI_DEBUG is not set
275# CONFIG_PCI_STUB is not set
276# CONFIG_PCCARD is not set
277# CONFIG_HOTPLUG_PCI is not set
278# CONFIG_HAS_RAPIDIO is not set
279
280#
281# Advanced setup
282#
283# CONFIG_ADVANCED_OPTIONS is not set
284
285#
286# Default settings for advanced configuration options are used
287#
288CONFIG_LOWMEM_SIZE=0x30000000
289CONFIG_PAGE_OFFSET=0xc0000000
290CONFIG_KERNEL_START=0xc0000000
291CONFIG_PHYSICAL_START=0x00000000
292CONFIG_PHYSICAL_ALIGN=0x10000000
293CONFIG_TASK_SIZE=0xc0000000
294CONFIG_NET=y
295
296#
297# Networking options
298#
299CONFIG_COMPAT_NET_DEV_OPS=y
300CONFIG_PACKET=y
301# CONFIG_PACKET_MMAP is not set
302CONFIG_UNIX=y
303CONFIG_XFRM=y
304CONFIG_XFRM_USER=y
305# CONFIG_XFRM_SUB_POLICY is not set
306# CONFIG_XFRM_MIGRATE is not set
307# CONFIG_XFRM_STATISTICS is not set
308CONFIG_NET_KEY=m
309# CONFIG_NET_KEY_MIGRATE is not set
310CONFIG_INET=y
311CONFIG_IP_MULTICAST=y
312CONFIG_IP_ADVANCED_ROUTER=y
313CONFIG_ASK_IP_FIB_HASH=y
314# CONFIG_IP_FIB_TRIE is not set
315CONFIG_IP_FIB_HASH=y
316CONFIG_IP_MULTIPLE_TABLES=y
317CONFIG_IP_ROUTE_MULTIPATH=y
318CONFIG_IP_ROUTE_VERBOSE=y
319CONFIG_IP_PNP=y
320CONFIG_IP_PNP_DHCP=y
321CONFIG_IP_PNP_BOOTP=y
322CONFIG_IP_PNP_RARP=y
323CONFIG_NET_IPIP=y
324CONFIG_NET_IPGRE=y
325CONFIG_NET_IPGRE_BROADCAST=y
326CONFIG_IP_MROUTE=y
327CONFIG_IP_PIMSM_V1=y
328CONFIG_IP_PIMSM_V2=y
329CONFIG_ARPD=y
330# CONFIG_SYN_COOKIES is not set
331# CONFIG_INET_AH is not set
332# CONFIG_INET_ESP is not set
333# CONFIG_INET_IPCOMP is not set
334# CONFIG_INET_XFRM_TUNNEL is not set
335CONFIG_INET_TUNNEL=y
336# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
337# CONFIG_INET_XFRM_MODE_TUNNEL is not set
338# CONFIG_INET_XFRM_MODE_BEET is not set
339# CONFIG_INET_LRO is not set
340CONFIG_INET_DIAG=y
341CONFIG_INET_TCP_DIAG=y
342# CONFIG_TCP_CONG_ADVANCED is not set
343CONFIG_TCP_CONG_CUBIC=y
344CONFIG_DEFAULT_TCP_CONG="cubic"
345# CONFIG_TCP_MD5SIG is not set
346CONFIG_IPV6=y
347# CONFIG_IPV6_PRIVACY is not set
348# CONFIG_IPV6_ROUTER_PREF is not set
349# CONFIG_IPV6_OPTIMISTIC_DAD is not set
350# CONFIG_INET6_AH is not set
351# CONFIG_INET6_ESP is not set
352# CONFIG_INET6_IPCOMP is not set
353# CONFIG_IPV6_MIP6 is not set
354# CONFIG_INET6_XFRM_TUNNEL is not set
355# CONFIG_INET6_TUNNEL is not set
356CONFIG_INET6_XFRM_MODE_TRANSPORT=y
357CONFIG_INET6_XFRM_MODE_TUNNEL=y
358CONFIG_INET6_XFRM_MODE_BEET=y
359# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
360CONFIG_IPV6_SIT=y
361CONFIG_IPV6_NDISC_NODETYPE=y
362# CONFIG_IPV6_TUNNEL is not set
363# CONFIG_IPV6_MULTIPLE_TABLES is not set
364# CONFIG_IPV6_MROUTE is not set
365# CONFIG_NETWORK_SECMARK is not set
366# CONFIG_NETFILTER is not set
367# CONFIG_IP_DCCP is not set
368CONFIG_IP_SCTP=m
369# CONFIG_SCTP_DBG_MSG is not set
370# CONFIG_SCTP_DBG_OBJCNT is not set
371# CONFIG_SCTP_HMAC_NONE is not set
372# CONFIG_SCTP_HMAC_SHA1 is not set
373CONFIG_SCTP_HMAC_MD5=y
374# CONFIG_TIPC is not set
375# CONFIG_ATM is not set
376# CONFIG_BRIDGE is not set
377# CONFIG_NET_DSA is not set
378# CONFIG_VLAN_8021Q is not set
379# CONFIG_DECNET is not set
380# CONFIG_LLC2 is not set
381# CONFIG_IPX is not set
382# CONFIG_ATALK is not set
383# CONFIG_X25 is not set
384# CONFIG_LAPB is not set
385# CONFIG_ECONET is not set
386# CONFIG_WAN_ROUTER is not set
387# CONFIG_NET_SCHED is not set
388# CONFIG_DCB is not set
389
390#
391# Network testing
392#
393# CONFIG_NET_PKTGEN is not set
394# CONFIG_HAMRADIO is not set
395# CONFIG_CAN is not set
396# CONFIG_IRDA is not set
397# CONFIG_BT is not set
398# CONFIG_AF_RXRPC is not set
399# CONFIG_PHONET is not set
400CONFIG_FIB_RULES=y
401CONFIG_WIRELESS=y
402# CONFIG_CFG80211 is not set
403CONFIG_WIRELESS_OLD_REGULATORY=y
404# CONFIG_WIRELESS_EXT is not set
405# CONFIG_LIB80211 is not set
406# CONFIG_MAC80211 is not set
407# CONFIG_WIMAX is not set
408# CONFIG_RFKILL is not set
409# CONFIG_NET_9P is not set
410
411#
412# Device Drivers
413#
414
415#
416# Generic Driver Options
417#
418CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
419CONFIG_STANDALONE=y
420CONFIG_PREVENT_FIRMWARE_BUILD=y
421CONFIG_FW_LOADER=y
422CONFIG_FIRMWARE_IN_KERNEL=y
423CONFIG_EXTRA_FIRMWARE=""
424# CONFIG_DEBUG_DRIVER is not set
425# CONFIG_DEBUG_DEVRES is not set
426# CONFIG_SYS_HYPERVISOR is not set
427# CONFIG_CONNECTOR is not set
428# CONFIG_MTD is not set
429CONFIG_OF_DEVICE=y
430CONFIG_OF_I2C=y
431# CONFIG_PARPORT is not set
432CONFIG_BLK_DEV=y
433# CONFIG_BLK_DEV_FD is not set
434# CONFIG_BLK_CPQ_DA is not set
435# CONFIG_BLK_CPQ_CISS_DA is not set
436# CONFIG_BLK_DEV_DAC960 is not set
437# CONFIG_BLK_DEV_UMEM is not set
438# CONFIG_BLK_DEV_COW_COMMON is not set
439CONFIG_BLK_DEV_LOOP=y
440# CONFIG_BLK_DEV_CRYPTOLOOP is not set
441CONFIG_BLK_DEV_NBD=y
442# CONFIG_BLK_DEV_SX8 is not set
443# CONFIG_BLK_DEV_UB is not set
444CONFIG_BLK_DEV_RAM=y
445CONFIG_BLK_DEV_RAM_COUNT=16
446CONFIG_BLK_DEV_RAM_SIZE=131072
447# CONFIG_BLK_DEV_XIP is not set
448# CONFIG_CDROM_PKTCDVD is not set
449# CONFIG_ATA_OVER_ETH is not set
450# CONFIG_BLK_DEV_HD is not set
451CONFIG_MISC_DEVICES=y
452# CONFIG_PHANTOM is not set
453# CONFIG_EEPROM_93CX6 is not set
454# CONFIG_SGI_IOC4 is not set
455# CONFIG_TIFM_CORE is not set
456# CONFIG_ICS932S401 is not set
457# CONFIG_ENCLOSURE_SERVICES is not set
458# CONFIG_HP_ILO is not set
459# CONFIG_C2PORT is not set
460CONFIG_HAVE_IDE=y
461# CONFIG_IDE is not set
462
463#
464# SCSI device support
465#
466# CONFIG_RAID_ATTRS is not set
467CONFIG_SCSI=y
468CONFIG_SCSI_DMA=y
469# CONFIG_SCSI_TGT is not set
470# CONFIG_SCSI_NETLINK is not set
471CONFIG_SCSI_PROC_FS=y
472
473#
474# SCSI support type (disk, tape, CD-ROM)
475#
476CONFIG_BLK_DEV_SD=y
477CONFIG_CHR_DEV_ST=y
478# CONFIG_CHR_DEV_OSST is not set
479CONFIG_BLK_DEV_SR=y
480# CONFIG_BLK_DEV_SR_VENDOR is not set
481CONFIG_CHR_DEV_SG=y
482# CONFIG_CHR_DEV_SCH is not set
483
484#
485# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
486#
487CONFIG_SCSI_MULTI_LUN=y
488# CONFIG_SCSI_CONSTANTS is not set
489CONFIG_SCSI_LOGGING=y
490# CONFIG_SCSI_SCAN_ASYNC is not set
491CONFIG_SCSI_WAIT_SCAN=m
492
493#
494# SCSI Transports
495#
496# CONFIG_SCSI_SPI_ATTRS is not set
497# CONFIG_SCSI_FC_ATTRS is not set
498# CONFIG_SCSI_ISCSI_ATTRS is not set
499# CONFIG_SCSI_SAS_LIBSAS is not set
500# CONFIG_SCSI_SRP_ATTRS is not set
501CONFIG_SCSI_LOWLEVEL=y
502# CONFIG_ISCSI_TCP is not set
503# CONFIG_SCSI_CXGB3_ISCSI is not set
504# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
505# CONFIG_SCSI_3W_9XXX is not set
506# CONFIG_SCSI_ACARD is not set
507# CONFIG_SCSI_AACRAID is not set
508# CONFIG_SCSI_AIC7XXX is not set
509# CONFIG_SCSI_AIC7XXX_OLD is not set
510# CONFIG_SCSI_AIC79XX is not set
511# CONFIG_SCSI_AIC94XX is not set
512# CONFIG_SCSI_DPT_I2O is not set
513# CONFIG_SCSI_ADVANSYS is not set
514# CONFIG_SCSI_ARCMSR is not set
515# CONFIG_MEGARAID_NEWGEN is not set
516# CONFIG_MEGARAID_LEGACY is not set
517# CONFIG_MEGARAID_SAS is not set
518# CONFIG_SCSI_HPTIOP is not set
519# CONFIG_SCSI_BUSLOGIC is not set
520# CONFIG_LIBFC is not set
521# CONFIG_FCOE is not set
522# CONFIG_SCSI_DMX3191D is not set
523# CONFIG_SCSI_EATA is not set
524# CONFIG_SCSI_FUTURE_DOMAIN is not set
525# CONFIG_SCSI_GDTH is not set
526# CONFIG_SCSI_IPS is not set
527# CONFIG_SCSI_INITIO is not set
528# CONFIG_SCSI_INIA100 is not set
529# CONFIG_SCSI_MVSAS is not set
530# CONFIG_SCSI_STEX is not set
531# CONFIG_SCSI_SYM53C8XX_2 is not set
532# CONFIG_SCSI_IPR is not set
533# CONFIG_SCSI_QLOGIC_1280 is not set
534# CONFIG_SCSI_QLA_FC is not set
535# CONFIG_SCSI_QLA_ISCSI is not set
536# CONFIG_SCSI_LPFC is not set
537# CONFIG_SCSI_DC395x is not set
538# CONFIG_SCSI_DC390T is not set
539# CONFIG_SCSI_NSP32 is not set
540# CONFIG_SCSI_DEBUG is not set
541# CONFIG_SCSI_SRP is not set
542# CONFIG_SCSI_DH is not set
543CONFIG_ATA=y
544# CONFIG_ATA_NONSTANDARD is not set
545CONFIG_SATA_PMP=y
546CONFIG_SATA_AHCI=y
547# CONFIG_SATA_SIL24 is not set
548# CONFIG_SATA_FSL is not set
549CONFIG_ATA_SFF=y
550# CONFIG_SATA_SVW is not set
551# CONFIG_ATA_PIIX is not set
552# CONFIG_SATA_MV is not set
553# CONFIG_SATA_NV is not set
554# CONFIG_PDC_ADMA is not set
555# CONFIG_SATA_QSTOR is not set
556# CONFIG_SATA_PROMISE is not set
557# CONFIG_SATA_SX4 is not set
558# CONFIG_SATA_SIL is not set
559# CONFIG_SATA_SIS is not set
560# CONFIG_SATA_ULI is not set
561# CONFIG_SATA_VIA is not set
562# CONFIG_SATA_VITESSE is not set
563# CONFIG_SATA_INIC162X is not set
564CONFIG_PATA_ALI=y
565# CONFIG_PATA_AMD is not set
566# CONFIG_PATA_ARTOP is not set
567# CONFIG_PATA_ATIIXP is not set
568# CONFIG_PATA_CMD640_PCI is not set
569# CONFIG_PATA_CMD64X is not set
570# CONFIG_PATA_CS5520 is not set
571# CONFIG_PATA_CS5530 is not set
572# CONFIG_PATA_CYPRESS is not set
573# CONFIG_PATA_EFAR is not set
574# CONFIG_ATA_GENERIC is not set
575# CONFIG_PATA_HPT366 is not set
576# CONFIG_PATA_HPT37X is not set
577# CONFIG_PATA_HPT3X2N is not set
578# CONFIG_PATA_HPT3X3 is not set
579# CONFIG_PATA_IT821X is not set
580# CONFIG_PATA_IT8213 is not set
581# CONFIG_PATA_JMICRON is not set
582# CONFIG_PATA_TRIFLEX is not set
583# CONFIG_PATA_MARVELL is not set
584# CONFIG_PATA_MPIIX is not set
585# CONFIG_PATA_OLDPIIX is not set
586# CONFIG_PATA_NETCELL is not set
587# CONFIG_PATA_NINJA32 is not set
588# CONFIG_PATA_NS87410 is not set
589# CONFIG_PATA_NS87415 is not set
590# CONFIG_PATA_OPTI is not set
591# CONFIG_PATA_OPTIDMA is not set
592# CONFIG_PATA_PDC_OLD is not set
593# CONFIG_PATA_RADISYS is not set
594# CONFIG_PATA_RZ1000 is not set
595# CONFIG_PATA_SC1200 is not set
596# CONFIG_PATA_SERVERWORKS is not set
597# CONFIG_PATA_PDC2027X is not set
598# CONFIG_PATA_SIL680 is not set
599# CONFIG_PATA_SIS is not set
600# CONFIG_PATA_VIA is not set
601# CONFIG_PATA_WINBOND is not set
602# CONFIG_PATA_PLATFORM is not set
603# CONFIG_PATA_SCH is not set
604# CONFIG_MD is not set
605# CONFIG_FUSION is not set
606
607#
608# IEEE 1394 (FireWire) support
609#
610
611#
612# Enable only one of the two stacks, unless you know what you are doing
613#
614# CONFIG_FIREWIRE is not set
615# CONFIG_IEEE1394 is not set
616# CONFIG_I2O is not set
617# CONFIG_MACINTOSH_DRIVERS is not set
618CONFIG_NETDEVICES=y
619CONFIG_DUMMY=y
620# CONFIG_BONDING is not set
621# CONFIG_MACVLAN is not set
622# CONFIG_EQUALIZER is not set
623# CONFIG_TUN is not set
624# CONFIG_VETH is not set
625# CONFIG_ARCNET is not set
626CONFIG_PHYLIB=y
627
628#
629# MII PHY device drivers
630#
631# CONFIG_MARVELL_PHY is not set
632# CONFIG_DAVICOM_PHY is not set
633# CONFIG_QSEMI_PHY is not set
634# CONFIG_LXT_PHY is not set
635# CONFIG_CICADA_PHY is not set
636CONFIG_VITESSE_PHY=y
637# CONFIG_SMSC_PHY is not set
638# CONFIG_BROADCOM_PHY is not set
639# CONFIG_ICPLUS_PHY is not set
640# CONFIG_REALTEK_PHY is not set
641# CONFIG_NATIONAL_PHY is not set
642# CONFIG_STE10XP is not set
643# CONFIG_LSI_ET1011C_PHY is not set
644# CONFIG_FIXED_PHY is not set
645# CONFIG_MDIO_BITBANG is not set
646CONFIG_NET_ETHERNET=y
647CONFIG_MII=y
648# CONFIG_HAPPYMEAL is not set
649# CONFIG_SUNGEM is not set
650# CONFIG_CASSINI is not set
651# CONFIG_NET_VENDOR_3COM is not set
652# CONFIG_NET_TULIP is not set
653# CONFIG_HP100 is not set
654# CONFIG_IBM_NEW_EMAC_ZMII is not set
655# CONFIG_IBM_NEW_EMAC_RGMII is not set
656# CONFIG_IBM_NEW_EMAC_TAH is not set
657# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
658# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
659# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
660# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
661# CONFIG_NET_PCI is not set
662# CONFIG_B44 is not set
663# CONFIG_ATL2 is not set
664CONFIG_NETDEV_1000=y
665# CONFIG_ACENIC is not set
666# CONFIG_DL2K is not set
667# CONFIG_E1000 is not set
668# CONFIG_E1000E is not set
669# CONFIG_IP1000 is not set
670# CONFIG_IGB is not set
671# CONFIG_NS83820 is not set
672# CONFIG_HAMACHI is not set
673# CONFIG_YELLOWFIN is not set
674# CONFIG_R8169 is not set
675# CONFIG_SIS190 is not set
676# CONFIG_SKGE is not set
677# CONFIG_SKY2 is not set
678# CONFIG_VIA_VELOCITY is not set
679# CONFIG_TIGON3 is not set
680# CONFIG_BNX2 is not set
681CONFIG_GIANFAR=y
682# CONFIG_QLA3XXX is not set
683# CONFIG_ATL1 is not set
684# CONFIG_ATL1E is not set
685# CONFIG_JME is not set
686CONFIG_NETDEV_10000=y
687# CONFIG_CHELSIO_T1 is not set
688CONFIG_CHELSIO_T3_DEPENDS=y
689# CONFIG_CHELSIO_T3 is not set
690# CONFIG_ENIC is not set
691# CONFIG_IXGBE is not set
692# CONFIG_IXGB is not set
693# CONFIG_S2IO is not set
694# CONFIG_MYRI10GE is not set
695# CONFIG_NETXEN_NIC is not set
696# CONFIG_NIU is not set
697# CONFIG_MLX4_EN is not set
698# CONFIG_MLX4_CORE is not set
699# CONFIG_TEHUTI is not set
700# CONFIG_BNX2X is not set
701# CONFIG_QLGE is not set
702# CONFIG_SFC is not set
703# CONFIG_TR is not set
704
705#
706# Wireless LAN
707#
708# CONFIG_WLAN_PRE80211 is not set
709# CONFIG_WLAN_80211 is not set
710# CONFIG_IWLWIFI_LEDS is not set
711
712#
713# Enable WiMAX (Networking options) to see the WiMAX drivers
714#
715
716#
717# USB Network Adapters
718#
719# CONFIG_USB_CATC is not set
720# CONFIG_USB_KAWETH is not set
721# CONFIG_USB_PEGASUS is not set
722# CONFIG_USB_RTL8150 is not set
723# CONFIG_USB_USBNET is not set
724# CONFIG_WAN is not set
725# CONFIG_FDDI is not set
726# CONFIG_HIPPI is not set
727# CONFIG_PPP is not set
728# CONFIG_SLIP is not set
729# CONFIG_NET_FC is not set
730# CONFIG_NETCONSOLE is not set
731# CONFIG_NETPOLL is not set
732# CONFIG_NET_POLL_CONTROLLER is not set
733# CONFIG_ISDN is not set
734# CONFIG_PHONE is not set
735
736#
737# Input device support
738#
739CONFIG_INPUT=y
740CONFIG_INPUT_FF_MEMLESS=m
741# CONFIG_INPUT_POLLDEV is not set
742
743#
744# Userland interfaces
745#
746# CONFIG_INPUT_MOUSEDEV is not set
747# CONFIG_INPUT_JOYDEV is not set
748# CONFIG_INPUT_EVDEV is not set
749# CONFIG_INPUT_EVBUG is not set
750
751#
752# Input Device Drivers
753#
754# CONFIG_INPUT_KEYBOARD is not set
755# CONFIG_INPUT_MOUSE is not set
756# CONFIG_INPUT_JOYSTICK is not set
757# CONFIG_INPUT_TABLET is not set
758# CONFIG_INPUT_TOUCHSCREEN is not set
759# CONFIG_INPUT_MISC is not set
760
761#
762# Hardware I/O ports
763#
764CONFIG_SERIO=y
765CONFIG_SERIO_I8042=y
766CONFIG_SERIO_SERPORT=y
767# CONFIG_SERIO_PCIPS2 is not set
768CONFIG_SERIO_LIBPS2=y
769# CONFIG_SERIO_RAW is not set
770# CONFIG_SERIO_XILINX_XPS_PS2 is not set
771# CONFIG_GAMEPORT is not set
772
773#
774# Character devices
775#
776CONFIG_VT=y
777CONFIG_CONSOLE_TRANSLATIONS=y
778CONFIG_VT_CONSOLE=y
779CONFIG_HW_CONSOLE=y
780# CONFIG_VT_HW_CONSOLE_BINDING is not set
781CONFIG_DEVKMEM=y
782# CONFIG_SERIAL_NONSTANDARD is not set
783# CONFIG_NOZOMI is not set
784
785#
786# Serial drivers
787#
788CONFIG_SERIAL_8250=y
789CONFIG_SERIAL_8250_CONSOLE=y
790CONFIG_SERIAL_8250_PCI=y
791CONFIG_SERIAL_8250_NR_UARTS=2
792CONFIG_SERIAL_8250_RUNTIME_UARTS=2
793CONFIG_SERIAL_8250_EXTENDED=y
794CONFIG_SERIAL_8250_MANY_PORTS=y
795CONFIG_SERIAL_8250_SHARE_IRQ=y
796CONFIG_SERIAL_8250_DETECT_IRQ=y
797CONFIG_SERIAL_8250_RSA=y
798
799#
800# Non-8250 serial port support
801#
802# CONFIG_SERIAL_UARTLITE is not set
803CONFIG_SERIAL_CORE=y
804CONFIG_SERIAL_CORE_CONSOLE=y
805# CONFIG_SERIAL_JSM is not set
806# CONFIG_SERIAL_OF_PLATFORM is not set
807CONFIG_UNIX98_PTYS=y
808# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
809CONFIG_LEGACY_PTYS=y
810CONFIG_LEGACY_PTY_COUNT=256
811# CONFIG_HVC_UDBG is not set
812# CONFIG_IPMI_HANDLER is not set
813CONFIG_HW_RANDOM=y
814CONFIG_NVRAM=y
815# CONFIG_R3964 is not set
816# CONFIG_APPLICOM is not set
817# CONFIG_RAW_DRIVER is not set
818# CONFIG_TCG_TPM is not set
819CONFIG_DEVPORT=y
820CONFIG_I2C=y
821CONFIG_I2C_BOARDINFO=y
822# CONFIG_I2C_CHARDEV is not set
823CONFIG_I2C_HELPER_AUTO=y
824
825#
826# I2C Hardware Bus support
827#
828
829#
830# PC SMBus host controller drivers
831#
832# CONFIG_I2C_ALI1535 is not set
833# CONFIG_I2C_ALI1563 is not set
834# CONFIG_I2C_ALI15X3 is not set
835# CONFIG_I2C_AMD756 is not set
836# CONFIG_I2C_AMD8111 is not set
837# CONFIG_I2C_I801 is not set
838# CONFIG_I2C_ISCH is not set
839# CONFIG_I2C_PIIX4 is not set
840# CONFIG_I2C_NFORCE2 is not set
841# CONFIG_I2C_SIS5595 is not set
842# CONFIG_I2C_SIS630 is not set
843# CONFIG_I2C_SIS96X is not set
844# CONFIG_I2C_VIA is not set
845# CONFIG_I2C_VIAPRO is not set
846
847#
848# I2C system bus drivers (mostly embedded / system-on-chip)
849#
850CONFIG_I2C_MPC=y
851# CONFIG_I2C_OCORES is not set
852# CONFIG_I2C_SIMTEC is not set
853
854#
855# External I2C/SMBus adapter drivers
856#
857# CONFIG_I2C_PARPORT_LIGHT is not set
858# CONFIG_I2C_TAOS_EVM is not set
859# CONFIG_I2C_TINY_USB is not set
860
861#
862# Graphics adapter I2C/DDC channel drivers
863#
864# CONFIG_I2C_VOODOO3 is not set
865
866#
867# Other I2C/SMBus bus drivers
868#
869# CONFIG_I2C_PCA_PLATFORM is not set
870# CONFIG_I2C_STUB is not set
871
872#
873# Miscellaneous I2C Chip support
874#
875# CONFIG_DS1682 is not set
876# CONFIG_EEPROM_AT24 is not set
877CONFIG_EEPROM_LEGACY=y
878# CONFIG_SENSORS_PCF8574 is not set
879# CONFIG_PCF8575 is not set
880# CONFIG_SENSORS_PCA9539 is not set
881# CONFIG_SENSORS_PCF8591 is not set
882# CONFIG_SENSORS_MAX6875 is not set
883# CONFIG_SENSORS_TSL2550 is not set
884# CONFIG_I2C_DEBUG_CORE is not set
885# CONFIG_I2C_DEBUG_ALGO is not set
886# CONFIG_I2C_DEBUG_BUS is not set
887# CONFIG_I2C_DEBUG_CHIP is not set
888# CONFIG_SPI is not set
889CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
890# CONFIG_GPIOLIB is not set
891# CONFIG_W1 is not set
892# CONFIG_POWER_SUPPLY is not set
893# CONFIG_HWMON is not set
894# CONFIG_THERMAL is not set
895# CONFIG_THERMAL_HWMON is not set
896# CONFIG_WATCHDOG is not set
897CONFIG_SSB_POSSIBLE=y
898
899#
900# Sonics Silicon Backplane
901#
902# CONFIG_SSB is not set
903
904#
905# Multifunction device drivers
906#
907# CONFIG_MFD_CORE is not set
908# CONFIG_MFD_SM501 is not set
909# CONFIG_HTC_PASIC3 is not set
910# CONFIG_TWL4030_CORE is not set
911# CONFIG_MFD_TMIO is not set
912# CONFIG_PMIC_DA903X is not set
913# CONFIG_MFD_WM8400 is not set
914# CONFIG_MFD_WM8350_I2C is not set
915# CONFIG_MFD_PCF50633 is not set
916# CONFIG_REGULATOR is not set
917
918#
919# Multimedia devices
920#
921
922#
923# Multimedia core support
924#
925# CONFIG_VIDEO_DEV is not set
926CONFIG_DVB_CORE=m
927CONFIG_VIDEO_MEDIA=m
928
929#
930# Multimedia drivers
931#
932# CONFIG_MEDIA_ATTACH is not set
933CONFIG_MEDIA_TUNER=m
934# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
935CONFIG_MEDIA_TUNER_SIMPLE=m
936CONFIG_MEDIA_TUNER_TDA8290=m
937CONFIG_MEDIA_TUNER_TDA9887=m
938CONFIG_MEDIA_TUNER_TEA5761=m
939CONFIG_MEDIA_TUNER_TEA5767=m
940CONFIG_MEDIA_TUNER_MT20XX=m
941CONFIG_MEDIA_TUNER_XC2028=m
942CONFIG_MEDIA_TUNER_XC5000=m
943# CONFIG_DVB_DYNAMIC_MINORS is not set
944CONFIG_DVB_CAPTURE_DRIVERS=y
945
946#
947# Supported SAA7146 based PCI Adapters
948#
949# CONFIG_TTPCI_EEPROM is not set
950# CONFIG_DVB_BUDGET_CORE is not set
951
952#
953# Supported USB Adapters
954#
955# CONFIG_DVB_USB is not set
956# CONFIG_DVB_TTUSB_BUDGET is not set
957# CONFIG_DVB_TTUSB_DEC is not set
958# CONFIG_DVB_SIANO_SMS1XXX is not set
959
960#
961# Supported FlexCopII (B2C2) Adapters
962#
963# CONFIG_DVB_B2C2_FLEXCOP is not set
964
965#
966# Supported BT878 Adapters
967#
968
969#
970# Supported Pluto2 Adapters
971#
972# CONFIG_DVB_PLUTO2 is not set
973
974#
975# Supported SDMC DM1105 Adapters
976#
977# CONFIG_DVB_DM1105 is not set
978
979#
980# Supported DVB Frontends
981#
982
983#
984# Customise DVB Frontends
985#
986# CONFIG_DVB_FE_CUSTOMISE is not set
987
988#
989# Multistandard (satellite) frontends
990#
991# CONFIG_DVB_STB0899 is not set
992# CONFIG_DVB_STB6100 is not set
993
994#
995# DVB-S (satellite) frontends
996#
997# CONFIG_DVB_CX24110 is not set
998# CONFIG_DVB_CX24123 is not set
999# CONFIG_DVB_MT312 is not set
1000# CONFIG_DVB_S5H1420 is not set
1001# CONFIG_DVB_STV0288 is not set
1002# CONFIG_DVB_STB6000 is not set
1003# CONFIG_DVB_STV0299 is not set
1004# CONFIG_DVB_TDA8083 is not set
1005# CONFIG_DVB_TDA10086 is not set
1006# CONFIG_DVB_TDA8261 is not set
1007# CONFIG_DVB_VES1X93 is not set
1008# CONFIG_DVB_TUNER_ITD1000 is not set
1009# CONFIG_DVB_TUNER_CX24113 is not set
1010# CONFIG_DVB_TDA826X is not set
1011# CONFIG_DVB_TUA6100 is not set
1012# CONFIG_DVB_CX24116 is not set
1013# CONFIG_DVB_SI21XX is not set
1014
1015#
1016# DVB-T (terrestrial) frontends
1017#
1018# CONFIG_DVB_SP8870 is not set
1019# CONFIG_DVB_SP887X is not set
1020# CONFIG_DVB_CX22700 is not set
1021# CONFIG_DVB_CX22702 is not set
1022# CONFIG_DVB_DRX397XD is not set
1023# CONFIG_DVB_L64781 is not set
1024# CONFIG_DVB_TDA1004X is not set
1025# CONFIG_DVB_NXT6000 is not set
1026# CONFIG_DVB_MT352 is not set
1027# CONFIG_DVB_ZL10353 is not set
1028# CONFIG_DVB_DIB3000MB is not set
1029# CONFIG_DVB_DIB3000MC is not set
1030# CONFIG_DVB_DIB7000M is not set
1031# CONFIG_DVB_DIB7000P is not set
1032# CONFIG_DVB_TDA10048 is not set
1033
1034#
1035# DVB-C (cable) frontends
1036#
1037# CONFIG_DVB_VES1820 is not set
1038# CONFIG_DVB_TDA10021 is not set
1039# CONFIG_DVB_TDA10023 is not set
1040# CONFIG_DVB_STV0297 is not set
1041
1042#
1043# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
1044#
1045# CONFIG_DVB_NXT200X is not set
1046# CONFIG_DVB_OR51211 is not set
1047# CONFIG_DVB_OR51132 is not set
1048# CONFIG_DVB_BCM3510 is not set
1049# CONFIG_DVB_LGDT330X is not set
1050# CONFIG_DVB_LGDT3304 is not set
1051# CONFIG_DVB_S5H1409 is not set
1052# CONFIG_DVB_AU8522 is not set
1053# CONFIG_DVB_S5H1411 is not set
1054
1055#
1056# ISDB-T (terrestrial) frontends
1057#
1058# CONFIG_DVB_S921 is not set
1059
1060#
1061# Digital terrestrial only tuners/PLL
1062#
1063# CONFIG_DVB_PLL is not set
1064# CONFIG_DVB_TUNER_DIB0070 is not set
1065
1066#
1067# SEC control devices for DVB-S
1068#
1069# CONFIG_DVB_LNBP21 is not set
1070# CONFIG_DVB_ISL6405 is not set
1071# CONFIG_DVB_ISL6421 is not set
1072# CONFIG_DVB_LGS8GL5 is not set
1073
1074#
1075# Tools to develop new frontends
1076#
1077# CONFIG_DVB_DUMMY_FE is not set
1078# CONFIG_DVB_AF9013 is not set
1079CONFIG_DAB=y
1080# CONFIG_USB_DABUSB is not set
1081
1082#
1083# Graphics support
1084#
1085# CONFIG_AGP is not set
1086# CONFIG_DRM is not set
1087# CONFIG_VGASTATE is not set
1088CONFIG_VIDEO_OUTPUT_CONTROL=y
1089# CONFIG_FB is not set
1090# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1091
1092#
1093# Display device support
1094#
1095# CONFIG_DISPLAY_SUPPORT is not set
1096
1097#
1098# Console display driver support
1099#
1100CONFIG_VGA_CONSOLE=y
1101# CONFIG_VGACON_SOFT_SCROLLBACK is not set
1102CONFIG_DUMMY_CONSOLE=y
1103CONFIG_SOUND=y
1104CONFIG_SOUND_OSS_CORE=y
1105CONFIG_SND=y
1106CONFIG_SND_TIMER=y
1107CONFIG_SND_PCM=y
1108# CONFIG_SND_SEQUENCER is not set
1109CONFIG_SND_OSSEMUL=y
1110CONFIG_SND_MIXER_OSS=y
1111CONFIG_SND_PCM_OSS=y
1112CONFIG_SND_PCM_OSS_PLUGINS=y
1113# CONFIG_SND_HRTIMER is not set
1114# CONFIG_SND_DYNAMIC_MINORS is not set
1115# CONFIG_SND_SUPPORT_OLD_API is not set
1116CONFIG_SND_VERBOSE_PROCFS=y
1117# CONFIG_SND_VERBOSE_PRINTK is not set
1118# CONFIG_SND_DEBUG is not set
1119CONFIG_SND_VMASTER=y
1120CONFIG_SND_AC97_CODEC=y
1121CONFIG_SND_DRIVERS=y
1122# CONFIG_SND_DUMMY is not set
1123# CONFIG_SND_MTPAV is not set
1124# CONFIG_SND_SERIAL_U16550 is not set
1125# CONFIG_SND_MPU401 is not set
1126# CONFIG_SND_AC97_POWER_SAVE is not set
1127CONFIG_SND_PCI=y
1128# CONFIG_SND_AD1889 is not set
1129# CONFIG_SND_ALS300 is not set
1130# CONFIG_SND_ALS4000 is not set
1131# CONFIG_SND_ALI5451 is not set
1132# CONFIG_SND_ATIIXP is not set
1133# CONFIG_SND_ATIIXP_MODEM is not set
1134# CONFIG_SND_AU8810 is not set
1135# CONFIG_SND_AU8820 is not set
1136# CONFIG_SND_AU8830 is not set
1137# CONFIG_SND_AW2 is not set
1138# CONFIG_SND_AZT3328 is not set
1139# CONFIG_SND_BT87X is not set
1140# CONFIG_SND_CA0106 is not set
1141# CONFIG_SND_CMIPCI is not set
1142# CONFIG_SND_OXYGEN is not set
1143# CONFIG_SND_CS4281 is not set
1144# CONFIG_SND_CS46XX is not set
1145# CONFIG_SND_CS5530 is not set
1146# CONFIG_SND_DARLA20 is not set
1147# CONFIG_SND_GINA20 is not set
1148# CONFIG_SND_LAYLA20 is not set
1149# CONFIG_SND_DARLA24 is not set
1150# CONFIG_SND_GINA24 is not set
1151# CONFIG_SND_LAYLA24 is not set
1152# CONFIG_SND_MONA is not set
1153# CONFIG_SND_MIA is not set
1154# CONFIG_SND_ECHO3G is not set
1155# CONFIG_SND_INDIGO is not set
1156# CONFIG_SND_INDIGOIO is not set
1157# CONFIG_SND_INDIGODJ is not set
1158# CONFIG_SND_EMU10K1 is not set
1159# CONFIG_SND_EMU10K1X is not set
1160# CONFIG_SND_ENS1370 is not set
1161# CONFIG_SND_ENS1371 is not set
1162# CONFIG_SND_ES1938 is not set
1163# CONFIG_SND_ES1968 is not set
1164# CONFIG_SND_FM801 is not set
1165# CONFIG_SND_HDA_INTEL is not set
1166# CONFIG_SND_HDSP is not set
1167# CONFIG_SND_HDSPM is not set
1168# CONFIG_SND_HIFIER is not set
1169# CONFIG_SND_ICE1712 is not set
1170# CONFIG_SND_ICE1724 is not set
1171CONFIG_SND_INTEL8X0=y
1172# CONFIG_SND_INTEL8X0M is not set
1173# CONFIG_SND_KORG1212 is not set
1174# CONFIG_SND_MAESTRO3 is not set
1175# CONFIG_SND_MIXART is not set
1176# CONFIG_SND_NM256 is not set
1177# CONFIG_SND_PCXHR is not set
1178# CONFIG_SND_RIPTIDE is not set
1179# CONFIG_SND_RME32 is not set
1180# CONFIG_SND_RME96 is not set
1181# CONFIG_SND_RME9652 is not set
1182# CONFIG_SND_SONICVIBES is not set
1183# CONFIG_SND_TRIDENT is not set
1184# CONFIG_SND_VIA82XX is not set
1185# CONFIG_SND_VIA82XX_MODEM is not set
1186# CONFIG_SND_VIRTUOSO is not set
1187# CONFIG_SND_VX222 is not set
1188# CONFIG_SND_YMFPCI is not set
1189CONFIG_SND_PPC=y
1190CONFIG_SND_USB=y
1191# CONFIG_SND_USB_AUDIO is not set
1192# CONFIG_SND_USB_USX2Y is not set
1193# CONFIG_SND_USB_CAIAQ is not set
1194# CONFIG_SND_SOC is not set
1195# CONFIG_SOUND_PRIME is not set
1196CONFIG_AC97_BUS=y
1197CONFIG_HID_SUPPORT=y
1198CONFIG_HID=y
1199# CONFIG_HID_DEBUG is not set
1200# CONFIG_HIDRAW is not set
1201
1202#
1203# USB Input Devices
1204#
1205CONFIG_USB_HID=y
1206# CONFIG_HID_PID is not set
1207# CONFIG_USB_HIDDEV is not set
1208
1209#
1210# Special HID drivers
1211#
1212CONFIG_HID_COMPAT=y
1213CONFIG_HID_A4TECH=y
1214CONFIG_HID_APPLE=y
1215CONFIG_HID_BELKIN=y
1216CONFIG_HID_CHERRY=y
1217CONFIG_HID_CHICONY=y
1218CONFIG_HID_CYPRESS=y
1219CONFIG_HID_EZKEY=y
1220CONFIG_HID_GYRATION=y
1221CONFIG_HID_LOGITECH=y
1222# CONFIG_LOGITECH_FF is not set
1223# CONFIG_LOGIRUMBLEPAD2_FF is not set
1224CONFIG_HID_MICROSOFT=y
1225CONFIG_HID_MONTEREY=y
1226# CONFIG_HID_NTRIG is not set
1227CONFIG_HID_PANTHERLORD=y
1228# CONFIG_PANTHERLORD_FF is not set
1229CONFIG_HID_PETALYNX=y
1230CONFIG_HID_SAMSUNG=y
1231CONFIG_HID_SONY=y
1232CONFIG_HID_SUNPLUS=y
1233# CONFIG_GREENASIA_FF is not set
1234# CONFIG_HID_TOPSEED is not set
1235CONFIG_THRUSTMASTER_FF=m
1236CONFIG_ZEROPLUS_FF=m
1237CONFIG_USB_SUPPORT=y
1238CONFIG_USB_ARCH_HAS_HCD=y
1239CONFIG_USB_ARCH_HAS_OHCI=y
1240CONFIG_USB_ARCH_HAS_EHCI=y
1241CONFIG_USB=y
1242# CONFIG_USB_DEBUG is not set
1243# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1244
1245#
1246# Miscellaneous USB options
1247#
1248CONFIG_USB_DEVICEFS=y
1249CONFIG_USB_DEVICE_CLASS=y
1250# CONFIG_USB_DYNAMIC_MINORS is not set
1251# CONFIG_USB_OTG is not set
1252# CONFIG_USB_OTG_WHITELIST is not set
1253# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1254CONFIG_USB_MON=y
1255# CONFIG_USB_WUSB is not set
1256# CONFIG_USB_WUSB_CBAF is not set
1257
1258#
1259# USB Host Controller Drivers
1260#
1261# CONFIG_USB_C67X00_HCD is not set
1262CONFIG_USB_EHCI_HCD=y
1263# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1264# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1265# CONFIG_USB_EHCI_FSL is not set
1266CONFIG_USB_EHCI_HCD_PPC_OF=y
1267# CONFIG_USB_OXU210HP_HCD is not set
1268# CONFIG_USB_ISP116X_HCD is not set
1269# CONFIG_USB_ISP1760_HCD is not set
1270CONFIG_USB_OHCI_HCD=y
1271CONFIG_USB_OHCI_HCD_PPC_OF=y
1272CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1273CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
1274CONFIG_USB_OHCI_HCD_PCI=y
1275CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1276CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
1277CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1278# CONFIG_USB_UHCI_HCD is not set
1279# CONFIG_USB_SL811_HCD is not set
1280# CONFIG_USB_R8A66597_HCD is not set
1281# CONFIG_USB_WHCI_HCD is not set
1282# CONFIG_USB_HWA_HCD is not set
1283
1284#
1285# USB Device Class drivers
1286#
1287# CONFIG_USB_ACM is not set
1288# CONFIG_USB_PRINTER is not set
1289# CONFIG_USB_WDM is not set
1290# CONFIG_USB_TMC is not set
1291
1292#
1293# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1294#
1295
1296#
1297# see USB_STORAGE Help for more information
1298#
1299CONFIG_USB_STORAGE=y
1300# CONFIG_USB_STORAGE_DEBUG is not set
1301# CONFIG_USB_STORAGE_DATAFAB is not set
1302# CONFIG_USB_STORAGE_FREECOM is not set
1303# CONFIG_USB_STORAGE_ISD200 is not set
1304# CONFIG_USB_STORAGE_USBAT is not set
1305# CONFIG_USB_STORAGE_SDDR09 is not set
1306# CONFIG_USB_STORAGE_SDDR55 is not set
1307# CONFIG_USB_STORAGE_JUMPSHOT is not set
1308# CONFIG_USB_STORAGE_ALAUDA is not set
1309# CONFIG_USB_STORAGE_ONETOUCH is not set
1310# CONFIG_USB_STORAGE_KARMA is not set
1311# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1312# CONFIG_USB_LIBUSUAL is not set
1313
1314#
1315# USB Imaging devices
1316#
1317# CONFIG_USB_MDC800 is not set
1318# CONFIG_USB_MICROTEK is not set
1319
1320#
1321# USB port drivers
1322#
1323# CONFIG_USB_SERIAL is not set
1324
1325#
1326# USB Miscellaneous drivers
1327#
1328# CONFIG_USB_EMI62 is not set
1329# CONFIG_USB_EMI26 is not set
1330# CONFIG_USB_ADUTUX is not set
1331# CONFIG_USB_SEVSEG is not set
1332# CONFIG_USB_RIO500 is not set
1333# CONFIG_USB_LEGOTOWER is not set
1334# CONFIG_USB_LCD is not set
1335# CONFIG_USB_BERRY_CHARGE is not set
1336# CONFIG_USB_LED is not set
1337# CONFIG_USB_CYPRESS_CY7C63 is not set
1338# CONFIG_USB_CYTHERM is not set
1339# CONFIG_USB_PHIDGET is not set
1340# CONFIG_USB_IDMOUSE is not set
1341# CONFIG_USB_FTDI_ELAN is not set
1342# CONFIG_USB_APPLEDISPLAY is not set
1343# CONFIG_USB_SISUSBVGA is not set
1344# CONFIG_USB_LD is not set
1345# CONFIG_USB_TRANCEVIBRATOR is not set
1346# CONFIG_USB_IOWARRIOR is not set
1347# CONFIG_USB_TEST is not set
1348# CONFIG_USB_ISIGHTFW is not set
1349# CONFIG_USB_VST is not set
1350# CONFIG_USB_GADGET is not set
1351
1352#
1353# OTG and related infrastructure
1354#
1355# CONFIG_UWB is not set
1356# CONFIG_MMC is not set
1357# CONFIG_MEMSTICK is not set
1358# CONFIG_NEW_LEDS is not set
1359# CONFIG_ACCESSIBILITY is not set
1360# CONFIG_INFINIBAND is not set
1361# CONFIG_EDAC is not set
1362CONFIG_RTC_LIB=y
1363CONFIG_RTC_CLASS=y
1364CONFIG_RTC_HCTOSYS=y
1365CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1366# CONFIG_RTC_DEBUG is not set
1367
1368#
1369# RTC interfaces
1370#
1371CONFIG_RTC_INTF_SYSFS=y
1372CONFIG_RTC_INTF_PROC=y
1373CONFIG_RTC_INTF_DEV=y
1374# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1375# CONFIG_RTC_DRV_TEST is not set
1376
1377#
1378# I2C RTC drivers
1379#
1380# CONFIG_RTC_DRV_DS1307 is not set
1381# CONFIG_RTC_DRV_DS1374 is not set
1382# CONFIG_RTC_DRV_DS1672 is not set
1383# CONFIG_RTC_DRV_MAX6900 is not set
1384# CONFIG_RTC_DRV_RS5C372 is not set
1385# CONFIG_RTC_DRV_ISL1208 is not set
1386# CONFIG_RTC_DRV_X1205 is not set
1387# CONFIG_RTC_DRV_PCF8563 is not set
1388# CONFIG_RTC_DRV_PCF8583 is not set
1389# CONFIG_RTC_DRV_M41T80 is not set
1390# CONFIG_RTC_DRV_S35390A is not set
1391# CONFIG_RTC_DRV_FM3130 is not set
1392# CONFIG_RTC_DRV_RX8581 is not set
1393
1394#
1395# SPI RTC drivers
1396#
1397
1398#
1399# Platform RTC drivers
1400#
1401CONFIG_RTC_DRV_CMOS=y
1402# CONFIG_RTC_DRV_DS1286 is not set
1403# CONFIG_RTC_DRV_DS1511 is not set
1404# CONFIG_RTC_DRV_DS1553 is not set
1405# CONFIG_RTC_DRV_DS1742 is not set
1406# CONFIG_RTC_DRV_STK17TA8 is not set
1407# CONFIG_RTC_DRV_M48T86 is not set
1408# CONFIG_RTC_DRV_M48T35 is not set
1409# CONFIG_RTC_DRV_M48T59 is not set
1410# CONFIG_RTC_DRV_BQ4802 is not set
1411# CONFIG_RTC_DRV_V3020 is not set
1412
1413#
1414# on-CPU RTC drivers
1415#
1416# CONFIG_RTC_DRV_PPC is not set
1417CONFIG_DMADEVICES=y
1418
1419#
1420# DMA Devices
1421#
1422CONFIG_FSL_DMA=y
1423CONFIG_DMA_ENGINE=y
1424
1425#
1426# DMA Clients
1427#
1428# CONFIG_NET_DMA is not set
1429# CONFIG_DMATEST is not set
1430# CONFIG_UIO is not set
1431# CONFIG_STAGING is not set
1432
1433#
1434# File systems
1435#
1436CONFIG_EXT2_FS=y
1437# CONFIG_EXT2_FS_XATTR is not set
1438# CONFIG_EXT2_FS_XIP is not set
1439CONFIG_EXT3_FS=y
1440CONFIG_EXT3_FS_XATTR=y
1441# CONFIG_EXT3_FS_POSIX_ACL is not set
1442# CONFIG_EXT3_FS_SECURITY is not set
1443# CONFIG_EXT4_FS is not set
1444CONFIG_JBD=y
1445CONFIG_FS_MBCACHE=y
1446# CONFIG_REISERFS_FS is not set
1447# CONFIG_JFS_FS is not set
1448# CONFIG_FS_POSIX_ACL is not set
1449CONFIG_FILE_LOCKING=y
1450# CONFIG_XFS_FS is not set
1451# CONFIG_GFS2_FS is not set
1452# CONFIG_OCFS2_FS is not set
1453# CONFIG_BTRFS_FS is not set
1454CONFIG_DNOTIFY=y
1455CONFIG_INOTIFY=y
1456CONFIG_INOTIFY_USER=y
1457# CONFIG_QUOTA is not set
1458# CONFIG_AUTOFS_FS is not set
1459# CONFIG_AUTOFS4_FS is not set
1460# CONFIG_FUSE_FS is not set
1461
1462#
1463# CD-ROM/DVD Filesystems
1464#
1465CONFIG_ISO9660_FS=m
1466CONFIG_JOLIET=y
1467CONFIG_ZISOFS=y
1468CONFIG_UDF_FS=m
1469CONFIG_UDF_NLS=y
1470
1471#
1472# DOS/FAT/NT Filesystems
1473#
1474CONFIG_FAT_FS=y
1475CONFIG_MSDOS_FS=m
1476CONFIG_VFAT_FS=y
1477CONFIG_FAT_DEFAULT_CODEPAGE=437
1478CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1479CONFIG_NTFS_FS=y
1480# CONFIG_NTFS_DEBUG is not set
1481# CONFIG_NTFS_RW is not set
1482
1483#
1484# Pseudo filesystems
1485#
1486CONFIG_PROC_FS=y
1487CONFIG_PROC_KCORE=y
1488CONFIG_PROC_SYSCTL=y
1489CONFIG_PROC_PAGE_MONITOR=y
1490CONFIG_SYSFS=y
1491CONFIG_TMPFS=y
1492# CONFIG_TMPFS_POSIX_ACL is not set
1493# CONFIG_HUGETLB_PAGE is not set
1494# CONFIG_CONFIGFS_FS is not set
1495CONFIG_MISC_FILESYSTEMS=y
1496CONFIG_ADFS_FS=m
1497# CONFIG_ADFS_FS_RW is not set
1498CONFIG_AFFS_FS=m
1499CONFIG_HFS_FS=m
1500CONFIG_HFSPLUS_FS=m
1501CONFIG_BEFS_FS=m
1502# CONFIG_BEFS_DEBUG is not set
1503CONFIG_BFS_FS=m
1504CONFIG_EFS_FS=m
1505CONFIG_CRAMFS=y
1506# CONFIG_SQUASHFS is not set
1507CONFIG_VXFS_FS=m
1508# CONFIG_MINIX_FS is not set
1509# CONFIG_OMFS_FS is not set
1510CONFIG_HPFS_FS=m
1511CONFIG_QNX4FS_FS=m
1512# CONFIG_ROMFS_FS is not set
1513CONFIG_SYSV_FS=m
1514CONFIG_UFS_FS=m
1515# CONFIG_UFS_FS_WRITE is not set
1516# CONFIG_UFS_DEBUG is not set
1517CONFIG_NETWORK_FILESYSTEMS=y
1518CONFIG_NFS_FS=y
1519CONFIG_NFS_V3=y
1520# CONFIG_NFS_V3_ACL is not set
1521CONFIG_NFS_V4=y
1522CONFIG_ROOT_NFS=y
1523CONFIG_NFSD=y
1524# CONFIG_NFSD_V3 is not set
1525# CONFIG_NFSD_V4 is not set
1526CONFIG_LOCKD=y
1527CONFIG_LOCKD_V4=y
1528CONFIG_EXPORTFS=y
1529CONFIG_NFS_COMMON=y
1530CONFIG_SUNRPC=y
1531CONFIG_SUNRPC_GSS=y
1532# CONFIG_SUNRPC_REGISTER_V4 is not set
1533CONFIG_RPCSEC_GSS_KRB5=y
1534# CONFIG_RPCSEC_GSS_SPKM3 is not set
1535# CONFIG_SMB_FS is not set
1536# CONFIG_CIFS is not set
1537# CONFIG_NCP_FS is not set
1538# CONFIG_CODA_FS is not set
1539# CONFIG_AFS_FS is not set
1540
1541#
1542# Partition Types
1543#
1544CONFIG_PARTITION_ADVANCED=y
1545# CONFIG_ACORN_PARTITION is not set
1546# CONFIG_OSF_PARTITION is not set
1547# CONFIG_AMIGA_PARTITION is not set
1548# CONFIG_ATARI_PARTITION is not set
1549CONFIG_MAC_PARTITION=y
1550CONFIG_MSDOS_PARTITION=y
1551# CONFIG_BSD_DISKLABEL is not set
1552# CONFIG_MINIX_SUBPARTITION is not set
1553# CONFIG_SOLARIS_X86_PARTITION is not set
1554# CONFIG_UNIXWARE_DISKLABEL is not set
1555# CONFIG_LDM_PARTITION is not set
1556# CONFIG_SGI_PARTITION is not set
1557# CONFIG_ULTRIX_PARTITION is not set
1558# CONFIG_SUN_PARTITION is not set
1559# CONFIG_KARMA_PARTITION is not set
1560# CONFIG_EFI_PARTITION is not set
1561# CONFIG_SYSV68_PARTITION is not set
1562CONFIG_NLS=y
1563CONFIG_NLS_DEFAULT="iso8859-1"
1564# CONFIG_NLS_CODEPAGE_437 is not set
1565# CONFIG_NLS_CODEPAGE_737 is not set
1566# CONFIG_NLS_CODEPAGE_775 is not set
1567# CONFIG_NLS_CODEPAGE_850 is not set
1568# CONFIG_NLS_CODEPAGE_852 is not set
1569# CONFIG_NLS_CODEPAGE_855 is not set
1570# CONFIG_NLS_CODEPAGE_857 is not set
1571# CONFIG_NLS_CODEPAGE_860 is not set
1572# CONFIG_NLS_CODEPAGE_861 is not set
1573# CONFIG_NLS_CODEPAGE_862 is not set
1574# CONFIG_NLS_CODEPAGE_863 is not set
1575# CONFIG_NLS_CODEPAGE_864 is not set
1576# CONFIG_NLS_CODEPAGE_865 is not set
1577# CONFIG_NLS_CODEPAGE_866 is not set
1578# CONFIG_NLS_CODEPAGE_869 is not set
1579# CONFIG_NLS_CODEPAGE_936 is not set
1580# CONFIG_NLS_CODEPAGE_950 is not set
1581# CONFIG_NLS_CODEPAGE_932 is not set
1582# CONFIG_NLS_CODEPAGE_949 is not set
1583# CONFIG_NLS_CODEPAGE_874 is not set
1584# CONFIG_NLS_ISO8859_8 is not set
1585# CONFIG_NLS_CODEPAGE_1250 is not set
1586# CONFIG_NLS_CODEPAGE_1251 is not set
1587# CONFIG_NLS_ASCII is not set
1588# CONFIG_NLS_ISO8859_1 is not set
1589# CONFIG_NLS_ISO8859_2 is not set
1590# CONFIG_NLS_ISO8859_3 is not set
1591# CONFIG_NLS_ISO8859_4 is not set
1592# CONFIG_NLS_ISO8859_5 is not set
1593# CONFIG_NLS_ISO8859_6 is not set
1594# CONFIG_NLS_ISO8859_7 is not set
1595# CONFIG_NLS_ISO8859_9 is not set
1596# CONFIG_NLS_ISO8859_13 is not set
1597# CONFIG_NLS_ISO8859_14 is not set
1598# CONFIG_NLS_ISO8859_15 is not set
1599# CONFIG_NLS_KOI8_R is not set
1600# CONFIG_NLS_KOI8_U is not set
1601CONFIG_NLS_UTF8=m
1602# CONFIG_DLM is not set
1603
1604#
1605# Library routines
1606#
1607CONFIG_BITREVERSE=y
1608CONFIG_GENERIC_FIND_LAST_BIT=y
1609# CONFIG_CRC_CCITT is not set
1610# CONFIG_CRC16 is not set
1611CONFIG_CRC_T10DIF=y
1612CONFIG_CRC_ITU_T=m
1613CONFIG_CRC32=y
1614# CONFIG_CRC7 is not set
1615CONFIG_LIBCRC32C=m
1616CONFIG_ZLIB_INFLATE=y
1617CONFIG_PLIST=y
1618CONFIG_HAS_IOMEM=y
1619CONFIG_HAS_IOPORT=y
1620CONFIG_HAS_DMA=y
1621CONFIG_HAVE_LMB=y
1622
1623#
1624# Kernel hacking
1625#
1626# CONFIG_PRINTK_TIME is not set
1627CONFIG_ENABLE_WARN_DEPRECATED=y
1628CONFIG_ENABLE_MUST_CHECK=y
1629CONFIG_FRAME_WARN=1024
1630# CONFIG_MAGIC_SYSRQ is not set
1631# CONFIG_UNUSED_SYMBOLS is not set
1632# CONFIG_DEBUG_FS is not set
1633# CONFIG_HEADERS_CHECK is not set
1634CONFIG_DEBUG_KERNEL=y
1635# CONFIG_DEBUG_SHIRQ is not set
1636CONFIG_DETECT_SOFTLOCKUP=y
1637# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1638CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1639CONFIG_SCHED_DEBUG=y
1640# CONFIG_SCHEDSTATS is not set
1641# CONFIG_TIMER_STATS is not set
1642# CONFIG_DEBUG_OBJECTS is not set
1643# CONFIG_SLUB_DEBUG_ON is not set
1644# CONFIG_SLUB_STATS is not set
1645# CONFIG_DEBUG_RT_MUTEXES is not set
1646# CONFIG_RT_MUTEX_TESTER is not set
1647# CONFIG_DEBUG_SPINLOCK is not set
1648# CONFIG_DEBUG_MUTEXES is not set
1649# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1650# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1651# CONFIG_DEBUG_KOBJECT is not set
1652# CONFIG_DEBUG_HIGHMEM is not set
1653# CONFIG_DEBUG_BUGVERBOSE is not set
1654CONFIG_DEBUG_INFO=y
1655# CONFIG_DEBUG_VM is not set
1656# CONFIG_DEBUG_WRITECOUNT is not set
1657# CONFIG_DEBUG_MEMORY_INIT is not set
1658# CONFIG_DEBUG_LIST is not set
1659# CONFIG_DEBUG_SG is not set
1660# CONFIG_DEBUG_NOTIFIERS is not set
1661# CONFIG_BOOT_PRINTK_DELAY is not set
1662# CONFIG_RCU_TORTURE_TEST is not set
1663# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1664# CONFIG_BACKTRACE_SELF_TEST is not set
1665# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1666# CONFIG_FAULT_INJECTION is not set
1667# CONFIG_LATENCYTOP is not set
1668CONFIG_SYSCTL_SYSCALL_CHECK=y
1669CONFIG_HAVE_FUNCTION_TRACER=y
1670CONFIG_HAVE_DYNAMIC_FTRACE=y
1671CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1672
1673#
1674# Tracers
1675#
1676# CONFIG_FUNCTION_TRACER is not set
1677# CONFIG_SCHED_TRACER is not set
1678# CONFIG_CONTEXT_SWITCH_TRACER is not set
1679# CONFIG_BOOT_TRACER is not set
1680# CONFIG_TRACE_BRANCH_PROFILING is not set
1681# CONFIG_STACK_TRACER is not set
1682# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1683# CONFIG_SAMPLES is not set
1684CONFIG_HAVE_ARCH_KGDB=y
1685# CONFIG_KGDB is not set
1686CONFIG_PRINT_STACK_DEPTH=64
1687# CONFIG_DEBUG_STACKOVERFLOW is not set
1688# CONFIG_DEBUG_STACK_USAGE is not set
1689# CONFIG_DEBUG_PAGEALLOC is not set
1690# CONFIG_CODE_PATCHING_SELFTEST is not set
1691# CONFIG_FTR_FIXUP_SELFTEST is not set
1692# CONFIG_MSI_BITMAP_SELFTEST is not set
1693# CONFIG_XMON is not set
1694# CONFIG_IRQSTACKS is not set
1695# CONFIG_BDI_SWITCH is not set
1696# CONFIG_PPC_EARLY_DEBUG is not set
1697
1698#
1699# Security options
1700#
1701# CONFIG_KEYS is not set
1702# CONFIG_SECURITY is not set
1703# CONFIG_SECURITYFS is not set
1704# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1705CONFIG_CRYPTO=y
1706
1707#
1708# Crypto core or helper
1709#
1710# CONFIG_CRYPTO_FIPS is not set
1711CONFIG_CRYPTO_ALGAPI=y
1712CONFIG_CRYPTO_ALGAPI2=y
1713CONFIG_CRYPTO_AEAD=y
1714CONFIG_CRYPTO_AEAD2=y
1715CONFIG_CRYPTO_BLKCIPHER=y
1716CONFIG_CRYPTO_BLKCIPHER2=y
1717CONFIG_CRYPTO_HASH=y
1718CONFIG_CRYPTO_HASH2=y
1719CONFIG_CRYPTO_RNG2=y
1720CONFIG_CRYPTO_MANAGER=y
1721CONFIG_CRYPTO_MANAGER2=y
1722# CONFIG_CRYPTO_GF128MUL is not set
1723# CONFIG_CRYPTO_NULL is not set
1724# CONFIG_CRYPTO_CRYPTD is not set
1725CONFIG_CRYPTO_AUTHENC=y
1726# CONFIG_CRYPTO_TEST is not set
1727
1728#
1729# Authenticated Encryption with Associated Data
1730#
1731# CONFIG_CRYPTO_CCM is not set
1732# CONFIG_CRYPTO_GCM is not set
1733# CONFIG_CRYPTO_SEQIV is not set
1734
1735#
1736# Block modes
1737#
1738CONFIG_CRYPTO_CBC=y
1739# CONFIG_CRYPTO_CTR is not set
1740# CONFIG_CRYPTO_CTS is not set
1741# CONFIG_CRYPTO_ECB is not set
1742# CONFIG_CRYPTO_LRW is not set
1743CONFIG_CRYPTO_PCBC=m
1744# CONFIG_CRYPTO_XTS is not set
1745
1746#
1747# Hash modes
1748#
1749CONFIG_CRYPTO_HMAC=y
1750# CONFIG_CRYPTO_XCBC is not set
1751
1752#
1753# Digest
1754#
1755CONFIG_CRYPTO_CRC32C=m
1756# CONFIG_CRYPTO_MD4 is not set
1757CONFIG_CRYPTO_MD5=y
1758# CONFIG_CRYPTO_MICHAEL_MIC is not set
1759# CONFIG_CRYPTO_RMD128 is not set
1760# CONFIG_CRYPTO_RMD160 is not set
1761# CONFIG_CRYPTO_RMD256 is not set
1762# CONFIG_CRYPTO_RMD320 is not set
1763CONFIG_CRYPTO_SHA1=m
1764# CONFIG_CRYPTO_SHA256 is not set
1765# CONFIG_CRYPTO_SHA512 is not set
1766# CONFIG_CRYPTO_TGR192 is not set
1767# CONFIG_CRYPTO_WP512 is not set
1768
1769#
1770# Ciphers
1771#
1772# CONFIG_CRYPTO_AES is not set
1773# CONFIG_CRYPTO_ANUBIS is not set
1774# CONFIG_CRYPTO_ARC4 is not set
1775# CONFIG_CRYPTO_BLOWFISH is not set
1776# CONFIG_CRYPTO_CAMELLIA is not set
1777# CONFIG_CRYPTO_CAST5 is not set
1778# CONFIG_CRYPTO_CAST6 is not set
1779CONFIG_CRYPTO_DES=y
1780# CONFIG_CRYPTO_FCRYPT is not set
1781# CONFIG_CRYPTO_KHAZAD is not set
1782# CONFIG_CRYPTO_SALSA20 is not set
1783# CONFIG_CRYPTO_SEED is not set
1784# CONFIG_CRYPTO_SERPENT is not set
1785# CONFIG_CRYPTO_TEA is not set
1786# CONFIG_CRYPTO_TWOFISH is not set
1787
1788#
1789# Compression
1790#
1791# CONFIG_CRYPTO_DEFLATE is not set
1792# CONFIG_CRYPTO_LZO is not set
1793
1794#
1795# Random Number Generation
1796#
1797# CONFIG_CRYPTO_ANSI_CPRNG is not set
1798CONFIG_CRYPTO_HW=y
1799# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1800CONFIG_CRYPTO_DEV_TALITOS=y
1801# CONFIG_PPC_CLOCK is not set
1802# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8568mds_defconfig b/arch/powerpc/configs/85xx/mpc8568mds_defconfig
deleted file mode 100644
index 186c1010a135..000000000000
--- a/arch/powerpc/configs/85xx/mpc8568mds_defconfig
+++ /dev/null
@@ -1,1309 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.29-rc2
4# Mon Jan 26 15:36:10 2009
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12CONFIG_PPC_85xx=y
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set
19CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y
21CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y
25# CONFIG_PPC_MM_SLICES is not set
26# CONFIG_SMP is not set
27CONFIG_PPC32=y
28CONFIG_WORD_SIZE=32
29# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
30CONFIG_MMU=y
31CONFIG_GENERIC_CMOS_UPDATE=y
32CONFIG_GENERIC_TIME=y
33CONFIG_GENERIC_TIME_VSYSCALL=y
34CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y
40CONFIG_LOCKDEP_SUPPORT=y
41CONFIG_RWSEM_XCHGADD_ALGORITHM=y
42CONFIG_ARCH_HAS_ILOG2_U32=y
43CONFIG_GENERIC_HWEIGHT=y
44CONFIG_GENERIC_CALIBRATE_DELAY=y
45CONFIG_GENERIC_FIND_NEXT_BIT=y
46# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
47CONFIG_PPC=y
48CONFIG_EARLY_PRINTK=y
49CONFIG_GENERIC_NVRAM=y
50CONFIG_SCHED_OMIT_FRAME_POINTER=y
51CONFIG_ARCH_MAY_HAVE_PC_FDC=y
52CONFIG_PPC_OF=y
53CONFIG_OF=y
54CONFIG_PPC_UDBG_16550=y
55# CONFIG_GENERIC_TBSYNC is not set
56CONFIG_AUDIT_ARCH=y
57CONFIG_GENERIC_BUG=y
58CONFIG_DEFAULT_UIMAGE=y
59# CONFIG_PPC_DCR_NATIVE is not set
60# CONFIG_PPC_DCR_MMIO is not set
61CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
62
63#
64# General setup
65#
66CONFIG_EXPERIMENTAL=y
67CONFIG_BROKEN_ON_SMP=y
68CONFIG_INIT_ENV_ARG_LIMIT=32
69CONFIG_LOCALVERSION=""
70CONFIG_LOCALVERSION_AUTO=y
71CONFIG_SWAP=y
72CONFIG_SYSVIPC=y
73CONFIG_SYSVIPC_SYSCTL=y
74# CONFIG_POSIX_MQUEUE is not set
75# CONFIG_BSD_PROCESS_ACCT is not set
76# CONFIG_TASKSTATS is not set
77# CONFIG_AUDIT is not set
78# CONFIG_IKCONFIG is not set
79CONFIG_LOG_BUF_SHIFT=14
80CONFIG_GROUP_SCHED=y
81# CONFIG_FAIR_GROUP_SCHED is not set
82# CONFIG_RT_GROUP_SCHED is not set
83CONFIG_USER_SCHED=y
84# CONFIG_CGROUP_SCHED is not set
85# CONFIG_CGROUPS is not set
86CONFIG_SYSFS_DEPRECATED=y
87CONFIG_SYSFS_DEPRECATED_V2=y
88# CONFIG_RELAY is not set
89# CONFIG_NAMESPACES is not set
90CONFIG_BLK_DEV_INITRD=y
91CONFIG_INITRAMFS_SOURCE=""
92# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
93CONFIG_SYSCTL=y
94CONFIG_EMBEDDED=y
95CONFIG_SYSCTL_SYSCALL=y
96# CONFIG_KALLSYMS is not set
97CONFIG_HOTPLUG=y
98CONFIG_PRINTK=y
99CONFIG_BUG=y
100CONFIG_ELF_CORE=y
101CONFIG_COMPAT_BRK=y
102CONFIG_BASE_FULL=y
103CONFIG_FUTEX=y
104CONFIG_ANON_INODES=y
105# CONFIG_EPOLL is not set
106CONFIG_SIGNALFD=y
107CONFIG_TIMERFD=y
108CONFIG_EVENTFD=y
109CONFIG_SHMEM=y
110CONFIG_AIO=y
111CONFIG_VM_EVENT_COUNTERS=y
112CONFIG_PCI_QUIRKS=y
113CONFIG_SLUB_DEBUG=y
114# CONFIG_SLAB is not set
115CONFIG_SLUB=y
116# CONFIG_SLOB is not set
117# CONFIG_PROFILING is not set
118CONFIG_HAVE_OPROFILE=y
119CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
120CONFIG_HAVE_IOREMAP_PROT=y
121CONFIG_HAVE_KPROBES=y
122CONFIG_HAVE_KRETPROBES=y
123CONFIG_HAVE_ARCH_TRACEHOOK=y
124# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
125CONFIG_SLABINFO=y
126CONFIG_RT_MUTEXES=y
127CONFIG_BASE_SMALL=0
128CONFIG_MODULES=y
129# CONFIG_MODULE_FORCE_LOAD is not set
130CONFIG_MODULE_UNLOAD=y
131# CONFIG_MODULE_FORCE_UNLOAD is not set
132# CONFIG_MODVERSIONS is not set
133# CONFIG_MODULE_SRCVERSION_ALL is not set
134CONFIG_BLOCK=y
135# CONFIG_LBD is not set
136# CONFIG_BLK_DEV_IO_TRACE is not set
137# CONFIG_BLK_DEV_BSG is not set
138# CONFIG_BLK_DEV_INTEGRITY is not set
139
140#
141# IO Schedulers
142#
143CONFIG_IOSCHED_NOOP=y
144CONFIG_IOSCHED_AS=y
145CONFIG_IOSCHED_DEADLINE=y
146CONFIG_IOSCHED_CFQ=y
147CONFIG_DEFAULT_AS=y
148# CONFIG_DEFAULT_DEADLINE is not set
149# CONFIG_DEFAULT_CFQ is not set
150# CONFIG_DEFAULT_NOOP is not set
151CONFIG_DEFAULT_IOSCHED="anticipatory"
152CONFIG_CLASSIC_RCU=y
153# CONFIG_TREE_RCU is not set
154# CONFIG_PREEMPT_RCU is not set
155# CONFIG_TREE_RCU_TRACE is not set
156# CONFIG_PREEMPT_RCU_TRACE is not set
157# CONFIG_FREEZER is not set
158
159#
160# Platform support
161#
162# CONFIG_PPC_CELL is not set
163# CONFIG_PPC_CELL_NATIVE is not set
164# CONFIG_PQ2ADS is not set
165CONFIG_MPC85xx=y
166# CONFIG_MPC8540_ADS is not set
167# CONFIG_MPC8560_ADS is not set
168# CONFIG_MPC85xx_CDS is not set
169CONFIG_MPC85xx_MDS=y
170# CONFIG_MPC8536_DS is not set
171# CONFIG_MPC85xx_DS is not set
172# CONFIG_KSI8560 is not set
173# CONFIG_STX_GP3 is not set
174# CONFIG_TQM8540 is not set
175# CONFIG_TQM8541 is not set
176# CONFIG_TQM8548 is not set
177# CONFIG_TQM8555 is not set
178# CONFIG_TQM8560 is not set
179# CONFIG_SBC8548 is not set
180# CONFIG_SBC8560 is not set
181# CONFIG_IPIC is not set
182CONFIG_MPIC=y
183# CONFIG_MPIC_WEIRD is not set
184# CONFIG_PPC_I8259 is not set
185# CONFIG_PPC_RTAS is not set
186# CONFIG_MMIO_NVRAM is not set
187# CONFIG_PPC_MPC106 is not set
188# CONFIG_PPC_970_NAP is not set
189# CONFIG_PPC_INDIRECT_IO is not set
190# CONFIG_GENERIC_IOMAP is not set
191# CONFIG_CPU_FREQ is not set
192CONFIG_QUICC_ENGINE=y
193# CONFIG_QE_GPIO is not set
194# CONFIG_CPM2 is not set
195# CONFIG_FSL_ULI1575 is not set
196# CONFIG_MPC8xxx_GPIO is not set
197# CONFIG_SIMPLE_GPIO is not set
198
199#
200# Kernel options
201#
202# CONFIG_HIGHMEM is not set
203CONFIG_TICK_ONESHOT=y
204CONFIG_NO_HZ=y
205CONFIG_HIGH_RES_TIMERS=y
206CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
207# CONFIG_HZ_100 is not set
208CONFIG_HZ_250=y
209# CONFIG_HZ_300 is not set
210# CONFIG_HZ_1000 is not set
211CONFIG_HZ=250
212CONFIG_SCHED_HRTICK=y
213CONFIG_PREEMPT_NONE=y
214# CONFIG_PREEMPT_VOLUNTARY is not set
215# CONFIG_PREEMPT is not set
216CONFIG_BINFMT_ELF=y
217# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
218# CONFIG_HAVE_AOUT is not set
219# CONFIG_BINFMT_MISC is not set
220CONFIG_MATH_EMULATION=y
221# CONFIG_IOMMU_HELPER is not set
222CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
223CONFIG_ARCH_HAS_WALK_MEMORY=y
224CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
225CONFIG_ARCH_FLATMEM_ENABLE=y
226CONFIG_ARCH_POPULATES_NODE_MAP=y
227CONFIG_SELECT_MEMORY_MODEL=y
228CONFIG_FLATMEM_MANUAL=y
229# CONFIG_DISCONTIGMEM_MANUAL is not set
230# CONFIG_SPARSEMEM_MANUAL is not set
231CONFIG_FLATMEM=y
232CONFIG_FLAT_NODE_MEM_MAP=y
233CONFIG_PAGEFLAGS_EXTENDED=y
234CONFIG_SPLIT_PTLOCK_CPUS=4
235CONFIG_MIGRATION=y
236# CONFIG_PHYS_ADDR_T_64BIT is not set
237CONFIG_ZONE_DMA_FLAG=1
238CONFIG_BOUNCE=y
239CONFIG_VIRT_TO_BUS=y
240CONFIG_UNEVICTABLE_LRU=y
241CONFIG_PPC_4K_PAGES=y
242# CONFIG_PPC_16K_PAGES is not set
243# CONFIG_PPC_64K_PAGES is not set
244CONFIG_FORCE_MAX_ZONEORDER=11
245CONFIG_PROC_DEVICETREE=y
246# CONFIG_CMDLINE_BOOL is not set
247CONFIG_EXTRA_TARGETS=""
248# CONFIG_PM is not set
249CONFIG_SECCOMP=y
250CONFIG_ISA_DMA_API=y
251
252#
253# Bus options
254#
255CONFIG_ZONE_DMA=y
256CONFIG_PPC_INDIRECT_PCI=y
257CONFIG_FSL_SOC=y
258CONFIG_FSL_PCI=y
259CONFIG_PPC_PCI_CHOICE=y
260CONFIG_PCI=y
261CONFIG_PCI_DOMAINS=y
262CONFIG_PCI_SYSCALL=y
263# CONFIG_PCIEPORTBUS is not set
264CONFIG_ARCH_SUPPORTS_MSI=y
265# CONFIG_PCI_MSI is not set
266# CONFIG_PCI_LEGACY is not set
267# CONFIG_PCI_DEBUG is not set
268# CONFIG_PCI_STUB is not set
269# CONFIG_PCCARD is not set
270# CONFIG_HOTPLUG_PCI is not set
271# CONFIG_HAS_RAPIDIO is not set
272
273#
274# Advanced setup
275#
276# CONFIG_ADVANCED_OPTIONS is not set
277
278#
279# Default settings for advanced configuration options are used
280#
281CONFIG_LOWMEM_SIZE=0x30000000
282CONFIG_PAGE_OFFSET=0xc0000000
283CONFIG_KERNEL_START=0xc0000000
284CONFIG_PHYSICAL_START=0x00000000
285CONFIG_PHYSICAL_ALIGN=0x10000000
286CONFIG_TASK_SIZE=0xc0000000
287CONFIG_NET=y
288
289#
290# Networking options
291#
292CONFIG_COMPAT_NET_DEV_OPS=y
293CONFIG_PACKET=y
294# CONFIG_PACKET_MMAP is not set
295CONFIG_UNIX=y
296CONFIG_XFRM=y
297# CONFIG_XFRM_USER is not set
298# CONFIG_XFRM_SUB_POLICY is not set
299# CONFIG_XFRM_MIGRATE is not set
300# CONFIG_XFRM_STATISTICS is not set
301# CONFIG_NET_KEY is not set
302CONFIG_INET=y
303CONFIG_IP_MULTICAST=y
304# CONFIG_IP_ADVANCED_ROUTER is not set
305CONFIG_IP_FIB_HASH=y
306CONFIG_IP_PNP=y
307CONFIG_IP_PNP_DHCP=y
308CONFIG_IP_PNP_BOOTP=y
309# CONFIG_IP_PNP_RARP is not set
310# CONFIG_NET_IPIP is not set
311# CONFIG_NET_IPGRE is not set
312# CONFIG_IP_MROUTE is not set
313# CONFIG_ARPD is not set
314CONFIG_SYN_COOKIES=y
315# CONFIG_INET_AH is not set
316# CONFIG_INET_ESP is not set
317# CONFIG_INET_IPCOMP is not set
318# CONFIG_INET_XFRM_TUNNEL is not set
319# CONFIG_INET_TUNNEL is not set
320CONFIG_INET_XFRM_MODE_TRANSPORT=y
321CONFIG_INET_XFRM_MODE_TUNNEL=y
322CONFIG_INET_XFRM_MODE_BEET=y
323# CONFIG_INET_LRO is not set
324CONFIG_INET_DIAG=y
325CONFIG_INET_TCP_DIAG=y
326# CONFIG_TCP_CONG_ADVANCED is not set
327CONFIG_TCP_CONG_CUBIC=y
328CONFIG_DEFAULT_TCP_CONG="cubic"
329# CONFIG_TCP_MD5SIG is not set
330# CONFIG_IPV6 is not set
331# CONFIG_NETWORK_SECMARK is not set
332# CONFIG_NETFILTER is not set
333# CONFIG_IP_DCCP is not set
334# CONFIG_IP_SCTP is not set
335# CONFIG_TIPC is not set
336# CONFIG_ATM is not set
337# CONFIG_BRIDGE is not set
338# CONFIG_NET_DSA is not set
339# CONFIG_VLAN_8021Q is not set
340# CONFIG_DECNET is not set
341# CONFIG_LLC2 is not set
342# CONFIG_IPX is not set
343# CONFIG_ATALK is not set
344# CONFIG_X25 is not set
345# CONFIG_LAPB is not set
346# CONFIG_ECONET is not set
347# CONFIG_WAN_ROUTER is not set
348# CONFIG_NET_SCHED is not set
349# CONFIG_DCB is not set
350
351#
352# Network testing
353#
354# CONFIG_NET_PKTGEN is not set
355# CONFIG_HAMRADIO is not set
356# CONFIG_CAN is not set
357# CONFIG_IRDA is not set
358# CONFIG_BT is not set
359# CONFIG_AF_RXRPC is not set
360# CONFIG_PHONET is not set
361CONFIG_WIRELESS=y
362# CONFIG_CFG80211 is not set
363CONFIG_WIRELESS_OLD_REGULATORY=y
364# CONFIG_WIRELESS_EXT is not set
365# CONFIG_LIB80211 is not set
366# CONFIG_MAC80211 is not set
367# CONFIG_WIMAX is not set
368# CONFIG_RFKILL is not set
369# CONFIG_NET_9P is not set
370
371#
372# Device Drivers
373#
374
375#
376# Generic Driver Options
377#
378CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
379CONFIG_STANDALONE=y
380CONFIG_PREVENT_FIRMWARE_BUILD=y
381# CONFIG_FW_LOADER is not set
382# CONFIG_DEBUG_DRIVER is not set
383# CONFIG_DEBUG_DEVRES is not set
384# CONFIG_SYS_HYPERVISOR is not set
385# CONFIG_CONNECTOR is not set
386# CONFIG_MTD is not set
387CONFIG_OF_DEVICE=y
388CONFIG_OF_I2C=y
389# CONFIG_PARPORT is not set
390CONFIG_BLK_DEV=y
391# CONFIG_BLK_DEV_FD is not set
392# CONFIG_BLK_CPQ_DA is not set
393# CONFIG_BLK_CPQ_CISS_DA is not set
394# CONFIG_BLK_DEV_DAC960 is not set
395# CONFIG_BLK_DEV_UMEM is not set
396# CONFIG_BLK_DEV_COW_COMMON is not set
397CONFIG_BLK_DEV_LOOP=y
398# CONFIG_BLK_DEV_CRYPTOLOOP is not set
399# CONFIG_BLK_DEV_NBD is not set
400# CONFIG_BLK_DEV_SX8 is not set
401CONFIG_BLK_DEV_RAM=y
402CONFIG_BLK_DEV_RAM_COUNT=16
403CONFIG_BLK_DEV_RAM_SIZE=32768
404# CONFIG_BLK_DEV_XIP is not set
405# CONFIG_CDROM_PKTCDVD is not set
406# CONFIG_ATA_OVER_ETH is not set
407# CONFIG_BLK_DEV_HD is not set
408CONFIG_MISC_DEVICES=y
409# CONFIG_PHANTOM is not set
410# CONFIG_EEPROM_93CX6 is not set
411# CONFIG_SGI_IOC4 is not set
412# CONFIG_TIFM_CORE is not set
413# CONFIG_ICS932S401 is not set
414# CONFIG_ENCLOSURE_SERVICES is not set
415# CONFIG_HP_ILO is not set
416# CONFIG_C2PORT is not set
417CONFIG_HAVE_IDE=y
418# CONFIG_IDE is not set
419
420#
421# SCSI device support
422#
423# CONFIG_RAID_ATTRS is not set
424CONFIG_SCSI=y
425CONFIG_SCSI_DMA=y
426# CONFIG_SCSI_TGT is not set
427# CONFIG_SCSI_NETLINK is not set
428CONFIG_SCSI_PROC_FS=y
429
430#
431# SCSI support type (disk, tape, CD-ROM)
432#
433# CONFIG_BLK_DEV_SD is not set
434# CONFIG_CHR_DEV_ST is not set
435# CONFIG_CHR_DEV_OSST is not set
436# CONFIG_BLK_DEV_SR is not set
437# CONFIG_CHR_DEV_SG is not set
438# CONFIG_CHR_DEV_SCH is not set
439
440#
441# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
442#
443# CONFIG_SCSI_MULTI_LUN is not set
444# CONFIG_SCSI_CONSTANTS is not set
445# CONFIG_SCSI_LOGGING is not set
446# CONFIG_SCSI_SCAN_ASYNC is not set
447CONFIG_SCSI_WAIT_SCAN=m
448
449#
450# SCSI Transports
451#
452# CONFIG_SCSI_SPI_ATTRS is not set
453# CONFIG_SCSI_FC_ATTRS is not set
454# CONFIG_SCSI_ISCSI_ATTRS is not set
455# CONFIG_SCSI_SAS_LIBSAS is not set
456# CONFIG_SCSI_SRP_ATTRS is not set
457CONFIG_SCSI_LOWLEVEL=y
458# CONFIG_ISCSI_TCP is not set
459# CONFIG_SCSI_CXGB3_ISCSI is not set
460# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
461# CONFIG_SCSI_3W_9XXX is not set
462# CONFIG_SCSI_ACARD is not set
463# CONFIG_SCSI_AACRAID is not set
464# CONFIG_SCSI_AIC7XXX is not set
465# CONFIG_SCSI_AIC7XXX_OLD is not set
466# CONFIG_SCSI_AIC79XX is not set
467# CONFIG_SCSI_AIC94XX is not set
468# CONFIG_SCSI_DPT_I2O is not set
469# CONFIG_SCSI_ADVANSYS is not set
470# CONFIG_SCSI_ARCMSR is not set
471# CONFIG_MEGARAID_NEWGEN is not set
472# CONFIG_MEGARAID_LEGACY is not set
473# CONFIG_MEGARAID_SAS is not set
474# CONFIG_SCSI_HPTIOP is not set
475# CONFIG_SCSI_BUSLOGIC is not set
476# CONFIG_LIBFC is not set
477# CONFIG_FCOE is not set
478# CONFIG_SCSI_DMX3191D is not set
479# CONFIG_SCSI_EATA is not set
480# CONFIG_SCSI_FUTURE_DOMAIN is not set
481# CONFIG_SCSI_GDTH is not set
482# CONFIG_SCSI_IPS is not set
483# CONFIG_SCSI_INITIO is not set
484# CONFIG_SCSI_INIA100 is not set
485# CONFIG_SCSI_MVSAS is not set
486# CONFIG_SCSI_STEX is not set
487# CONFIG_SCSI_SYM53C8XX_2 is not set
488# CONFIG_SCSI_QLOGIC_1280 is not set
489# CONFIG_SCSI_QLA_FC is not set
490# CONFIG_SCSI_QLA_ISCSI is not set
491# CONFIG_SCSI_LPFC is not set
492# CONFIG_SCSI_DC395x is not set
493# CONFIG_SCSI_DC390T is not set
494# CONFIG_SCSI_NSP32 is not set
495# CONFIG_SCSI_DEBUG is not set
496# CONFIG_SCSI_SRP is not set
497# CONFIG_SCSI_DH is not set
498# CONFIG_ATA is not set
499# CONFIG_MD is not set
500# CONFIG_FUSION is not set
501
502#
503# IEEE 1394 (FireWire) support
504#
505
506#
507# Enable only one of the two stacks, unless you know what you are doing
508#
509# CONFIG_FIREWIRE is not set
510# CONFIG_IEEE1394 is not set
511# CONFIG_I2O is not set
512# CONFIG_MACINTOSH_DRIVERS is not set
513CONFIG_NETDEVICES=y
514# CONFIG_DUMMY is not set
515# CONFIG_BONDING is not set
516# CONFIG_MACVLAN is not set
517# CONFIG_EQUALIZER is not set
518# CONFIG_TUN is not set
519# CONFIG_VETH is not set
520# CONFIG_ARCNET is not set
521CONFIG_PHYLIB=y
522
523#
524# MII PHY device drivers
525#
526CONFIG_MARVELL_PHY=y
527# CONFIG_DAVICOM_PHY is not set
528# CONFIG_QSEMI_PHY is not set
529# CONFIG_LXT_PHY is not set
530# CONFIG_CICADA_PHY is not set
531# CONFIG_VITESSE_PHY is not set
532# CONFIG_SMSC_PHY is not set
533# CONFIG_BROADCOM_PHY is not set
534# CONFIG_ICPLUS_PHY is not set
535# CONFIG_REALTEK_PHY is not set
536# CONFIG_NATIONAL_PHY is not set
537# CONFIG_STE10XP is not set
538# CONFIG_LSI_ET1011C_PHY is not set
539# CONFIG_FIXED_PHY is not set
540# CONFIG_MDIO_BITBANG is not set
541CONFIG_NET_ETHERNET=y
542CONFIG_MII=y
543# CONFIG_HAPPYMEAL is not set
544# CONFIG_SUNGEM is not set
545# CONFIG_CASSINI is not set
546# CONFIG_NET_VENDOR_3COM is not set
547# CONFIG_NET_TULIP is not set
548# CONFIG_HP100 is not set
549# CONFIG_IBM_NEW_EMAC_ZMII is not set
550# CONFIG_IBM_NEW_EMAC_RGMII is not set
551# CONFIG_IBM_NEW_EMAC_TAH is not set
552# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
553# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
554# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
555# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
556# CONFIG_NET_PCI is not set
557# CONFIG_B44 is not set
558# CONFIG_ATL2 is not set
559CONFIG_NETDEV_1000=y
560# CONFIG_ACENIC is not set
561# CONFIG_DL2K is not set
562# CONFIG_E1000 is not set
563# CONFIG_E1000E is not set
564# CONFIG_IP1000 is not set
565# CONFIG_IGB is not set
566# CONFIG_NS83820 is not set
567# CONFIG_HAMACHI is not set
568# CONFIG_YELLOWFIN is not set
569# CONFIG_R8169 is not set
570# CONFIG_SIS190 is not set
571# CONFIG_SKGE is not set
572# CONFIG_SKY2 is not set
573# CONFIG_VIA_VELOCITY is not set
574# CONFIG_TIGON3 is not set
575# CONFIG_BNX2 is not set
576CONFIG_GIANFAR=y
577# CONFIG_UCC_GETH is not set
578# CONFIG_QLA3XXX is not set
579# CONFIG_ATL1 is not set
580# CONFIG_ATL1E is not set
581# CONFIG_JME is not set
582CONFIG_NETDEV_10000=y
583# CONFIG_CHELSIO_T1 is not set
584CONFIG_CHELSIO_T3_DEPENDS=y
585# CONFIG_CHELSIO_T3 is not set
586# CONFIG_ENIC is not set
587# CONFIG_IXGBE is not set
588# CONFIG_IXGB is not set
589# CONFIG_S2IO is not set
590# CONFIG_MYRI10GE is not set
591# CONFIG_NETXEN_NIC is not set
592# CONFIG_NIU is not set
593# CONFIG_MLX4_EN is not set
594# CONFIG_MLX4_CORE is not set
595# CONFIG_TEHUTI is not set
596# CONFIG_BNX2X is not set
597# CONFIG_QLGE is not set
598# CONFIG_SFC is not set
599# CONFIG_TR is not set
600
601#
602# Wireless LAN
603#
604# CONFIG_WLAN_PRE80211 is not set
605# CONFIG_WLAN_80211 is not set
606# CONFIG_IWLWIFI_LEDS is not set
607
608#
609# Enable WiMAX (Networking options) to see the WiMAX drivers
610#
611# CONFIG_WAN is not set
612# CONFIG_FDDI is not set
613# CONFIG_HIPPI is not set
614# CONFIG_PPP is not set
615# CONFIG_SLIP is not set
616# CONFIG_NET_FC is not set
617# CONFIG_NETCONSOLE is not set
618# CONFIG_NETPOLL is not set
619# CONFIG_NET_POLL_CONTROLLER is not set
620# CONFIG_ISDN is not set
621# CONFIG_PHONE is not set
622
623#
624# Input device support
625#
626CONFIG_INPUT=y
627# CONFIG_INPUT_FF_MEMLESS is not set
628# CONFIG_INPUT_POLLDEV is not set
629
630#
631# Userland interfaces
632#
633# CONFIG_INPUT_MOUSEDEV is not set
634# CONFIG_INPUT_JOYDEV is not set
635# CONFIG_INPUT_EVDEV is not set
636# CONFIG_INPUT_EVBUG is not set
637
638#
639# Input Device Drivers
640#
641# CONFIG_INPUT_KEYBOARD is not set
642# CONFIG_INPUT_MOUSE is not set
643# CONFIG_INPUT_JOYSTICK is not set
644# CONFIG_INPUT_TABLET is not set
645# CONFIG_INPUT_TOUCHSCREEN is not set
646# CONFIG_INPUT_MISC is not set
647
648#
649# Hardware I/O ports
650#
651# CONFIG_SERIO is not set
652# CONFIG_GAMEPORT is not set
653
654#
655# Character devices
656#
657# CONFIG_VT is not set
658CONFIG_DEVKMEM=y
659# CONFIG_SERIAL_NONSTANDARD is not set
660# CONFIG_NOZOMI is not set
661
662#
663# Serial drivers
664#
665CONFIG_SERIAL_8250=y
666CONFIG_SERIAL_8250_CONSOLE=y
667CONFIG_SERIAL_8250_PCI=y
668CONFIG_SERIAL_8250_NR_UARTS=4
669CONFIG_SERIAL_8250_RUNTIME_UARTS=4
670# CONFIG_SERIAL_8250_EXTENDED is not set
671CONFIG_SERIAL_8250_SHARE_IRQ=y
672
673#
674# Non-8250 serial port support
675#
676# CONFIG_SERIAL_UARTLITE is not set
677CONFIG_SERIAL_CORE=y
678CONFIG_SERIAL_CORE_CONSOLE=y
679# CONFIG_SERIAL_JSM is not set
680# CONFIG_SERIAL_OF_PLATFORM is not set
681# CONFIG_SERIAL_QE is not set
682CONFIG_UNIX98_PTYS=y
683# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
684CONFIG_LEGACY_PTYS=y
685CONFIG_LEGACY_PTY_COUNT=256
686# CONFIG_HVC_UDBG is not set
687# CONFIG_IPMI_HANDLER is not set
688CONFIG_HW_RANDOM=y
689# CONFIG_NVRAM is not set
690# CONFIG_R3964 is not set
691# CONFIG_APPLICOM is not set
692# CONFIG_RAW_DRIVER is not set
693# CONFIG_TCG_TPM is not set
694CONFIG_DEVPORT=y
695CONFIG_I2C=y
696CONFIG_I2C_BOARDINFO=y
697CONFIG_I2C_CHARDEV=y
698CONFIG_I2C_HELPER_AUTO=y
699
700#
701# I2C Hardware Bus support
702#
703
704#
705# PC SMBus host controller drivers
706#
707# CONFIG_I2C_ALI1535 is not set
708# CONFIG_I2C_ALI1563 is not set
709# CONFIG_I2C_ALI15X3 is not set
710# CONFIG_I2C_AMD756 is not set
711# CONFIG_I2C_AMD8111 is not set
712# CONFIG_I2C_I801 is not set
713# CONFIG_I2C_ISCH is not set
714# CONFIG_I2C_PIIX4 is not set
715# CONFIG_I2C_NFORCE2 is not set
716# CONFIG_I2C_SIS5595 is not set
717# CONFIG_I2C_SIS630 is not set
718# CONFIG_I2C_SIS96X is not set
719# CONFIG_I2C_VIA is not set
720# CONFIG_I2C_VIAPRO is not set
721
722#
723# I2C system bus drivers (mostly embedded / system-on-chip)
724#
725CONFIG_I2C_MPC=y
726# CONFIG_I2C_OCORES is not set
727# CONFIG_I2C_SIMTEC is not set
728
729#
730# External I2C/SMBus adapter drivers
731#
732# CONFIG_I2C_PARPORT_LIGHT is not set
733# CONFIG_I2C_TAOS_EVM is not set
734
735#
736# Graphics adapter I2C/DDC channel drivers
737#
738# CONFIG_I2C_VOODOO3 is not set
739
740#
741# Other I2C/SMBus bus drivers
742#
743# CONFIG_I2C_PCA_PLATFORM is not set
744# CONFIG_I2C_STUB is not set
745
746#
747# Miscellaneous I2C Chip support
748#
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
758# CONFIG_I2C_DEBUG_CORE is not set
759# CONFIG_I2C_DEBUG_ALGO is not set
760# CONFIG_I2C_DEBUG_BUS is not set
761# CONFIG_I2C_DEBUG_CHIP is not set
762# CONFIG_SPI is not set
763CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
764# CONFIG_GPIOLIB is not set
765# CONFIG_W1 is not set
766# CONFIG_POWER_SUPPLY is not set
767CONFIG_HWMON=y
768# CONFIG_HWMON_VID is not set
769# CONFIG_SENSORS_AD7414 is not set
770# CONFIG_SENSORS_AD7418 is not set
771# CONFIG_SENSORS_ADM1021 is not set
772# CONFIG_SENSORS_ADM1025 is not set
773# CONFIG_SENSORS_ADM1026 is not set
774# CONFIG_SENSORS_ADM1029 is not set
775# CONFIG_SENSORS_ADM1031 is not set
776# CONFIG_SENSORS_ADM9240 is not set
777# CONFIG_SENSORS_ADT7462 is not set
778# CONFIG_SENSORS_ADT7470 is not set
779# CONFIG_SENSORS_ADT7473 is not set
780# CONFIG_SENSORS_ADT7475 is not set
781# CONFIG_SENSORS_ATXP1 is not set
782# CONFIG_SENSORS_DS1621 is not set
783# CONFIG_SENSORS_I5K_AMB is not set
784# CONFIG_SENSORS_F71805F is not set
785# CONFIG_SENSORS_F71882FG is not set
786# CONFIG_SENSORS_F75375S is not set
787# CONFIG_SENSORS_GL518SM is not set
788# CONFIG_SENSORS_GL520SM is not set
789# CONFIG_SENSORS_IT87 is not set
790# CONFIG_SENSORS_LM63 is not set
791# CONFIG_SENSORS_LM75 is not set
792# CONFIG_SENSORS_LM77 is not set
793# CONFIG_SENSORS_LM78 is not set
794# CONFIG_SENSORS_LM80 is not set
795# CONFIG_SENSORS_LM83 is not set
796# CONFIG_SENSORS_LM85 is not set
797# CONFIG_SENSORS_LM87 is not set
798# CONFIG_SENSORS_LM90 is not set
799# CONFIG_SENSORS_LM92 is not set
800# CONFIG_SENSORS_LM93 is not set
801# CONFIG_SENSORS_LTC4245 is not set
802# CONFIG_SENSORS_MAX1619 is not set
803# CONFIG_SENSORS_MAX6650 is not set
804# CONFIG_SENSORS_PC87360 is not set
805# CONFIG_SENSORS_PC87427 is not set
806# CONFIG_SENSORS_SIS5595 is not set
807# CONFIG_SENSORS_DME1737 is not set
808# CONFIG_SENSORS_SMSC47M1 is not set
809# CONFIG_SENSORS_SMSC47M192 is not set
810# CONFIG_SENSORS_SMSC47B397 is not set
811# CONFIG_SENSORS_ADS7828 is not set
812# CONFIG_SENSORS_THMC50 is not set
813# CONFIG_SENSORS_VIA686A is not set
814# CONFIG_SENSORS_VT1211 is not set
815# CONFIG_SENSORS_VT8231 is not set
816# CONFIG_SENSORS_W83781D is not set
817# CONFIG_SENSORS_W83791D is not set
818# CONFIG_SENSORS_W83792D is not set
819# CONFIG_SENSORS_W83793 is not set
820# CONFIG_SENSORS_W83L785TS is not set
821# CONFIG_SENSORS_W83L786NG is not set
822# CONFIG_SENSORS_W83627HF is not set
823# CONFIG_SENSORS_W83627EHF is not set
824# CONFIG_HWMON_DEBUG_CHIP is not set
825# CONFIG_THERMAL is not set
826# CONFIG_THERMAL_HWMON is not set
827CONFIG_WATCHDOG=y
828# CONFIG_WATCHDOG_NOWAYOUT is not set
829
830#
831# Watchdog Device Drivers
832#
833# CONFIG_SOFT_WATCHDOG is not set
834# CONFIG_ALIM7101_WDT is not set
835# CONFIG_BOOKE_WDT is not set
836
837#
838# PCI-based Watchdog Cards
839#
840# CONFIG_PCIPCWATCHDOG is not set
841# CONFIG_WDTPCI is not set
842CONFIG_SSB_POSSIBLE=y
843
844#
845# Sonics Silicon Backplane
846#
847# CONFIG_SSB is not set
848
849#
850# Multifunction device drivers
851#
852# CONFIG_MFD_CORE is not set
853# CONFIG_MFD_SM501 is not set
854# CONFIG_HTC_PASIC3 is not set
855# CONFIG_TWL4030_CORE is not set
856# CONFIG_MFD_TMIO is not set
857# CONFIG_PMIC_DA903X is not set
858# CONFIG_MFD_WM8400 is not set
859# CONFIG_MFD_WM8350_I2C is not set
860# CONFIG_MFD_PCF50633 is not set
861# CONFIG_REGULATOR is not set
862
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#
877CONFIG_DAB=y
878
879#
880# Graphics support
881#
882# CONFIG_AGP is not set
883# CONFIG_DRM is not set
884# CONFIG_VGASTATE is not set
885CONFIG_VIDEO_OUTPUT_CONTROL=m
886# CONFIG_FB is not set
887# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
888
889#
890# Display device support
891#
892# CONFIG_DISPLAY_SUPPORT is not set
893# CONFIG_SOUND is not set
894CONFIG_HID_SUPPORT=y
895CONFIG_HID=y
896# CONFIG_HID_DEBUG is not set
897# CONFIG_HIDRAW is not set
898# CONFIG_HID_PID is not set
899
900#
901# Special HID drivers
902#
903CONFIG_HID_COMPAT=y
904CONFIG_USB_SUPPORT=y
905CONFIG_USB_ARCH_HAS_HCD=y
906CONFIG_USB_ARCH_HAS_OHCI=y
907CONFIG_USB_ARCH_HAS_EHCI=y
908# CONFIG_USB is not set
909# CONFIG_USB_OTG_WHITELIST is not set
910# CONFIG_USB_OTG_BLACKLIST_HUB is not set
911
912#
913# Enable Host or Gadget support to see Inventra options
914#
915
916#
917# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
918#
919# CONFIG_USB_GADGET is not set
920
921#
922# OTG and related infrastructure
923#
924# CONFIG_UWB is not set
925# CONFIG_MMC is not set
926# CONFIG_MEMSTICK is not set
927# CONFIG_NEW_LEDS is not set
928# CONFIG_ACCESSIBILITY is not set
929# CONFIG_INFINIBAND is not set
930# CONFIG_EDAC is not set
931CONFIG_RTC_LIB=y
932CONFIG_RTC_CLASS=y
933CONFIG_RTC_HCTOSYS=y
934CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
935# CONFIG_RTC_DEBUG is not set
936
937#
938# RTC interfaces
939#
940CONFIG_RTC_INTF_SYSFS=y
941CONFIG_RTC_INTF_PROC=y
942CONFIG_RTC_INTF_DEV=y
943# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
944# CONFIG_RTC_DRV_TEST is not set
945
946#
947# I2C RTC drivers
948#
949# CONFIG_RTC_DRV_DS1307 is not set
950CONFIG_RTC_DRV_DS1374=y
951# CONFIG_RTC_DRV_DS1672 is not set
952# CONFIG_RTC_DRV_MAX6900 is not set
953# CONFIG_RTC_DRV_RS5C372 is not set
954# CONFIG_RTC_DRV_ISL1208 is not set
955# CONFIG_RTC_DRV_X1205 is not set
956# CONFIG_RTC_DRV_PCF8563 is not set
957# CONFIG_RTC_DRV_PCF8583 is not set
958# CONFIG_RTC_DRV_M41T80 is not set
959# CONFIG_RTC_DRV_S35390A is not set
960# CONFIG_RTC_DRV_FM3130 is not set
961# CONFIG_RTC_DRV_RX8581 is not set
962
963#
964# SPI RTC drivers
965#
966
967#
968# Platform RTC drivers
969#
970# CONFIG_RTC_DRV_CMOS is not set
971# CONFIG_RTC_DRV_DS1286 is not set
972# CONFIG_RTC_DRV_DS1511 is not set
973# CONFIG_RTC_DRV_DS1553 is not set
974# CONFIG_RTC_DRV_DS1742 is not set
975# CONFIG_RTC_DRV_STK17TA8 is not set
976# CONFIG_RTC_DRV_M48T86 is not set
977# CONFIG_RTC_DRV_M48T35 is not set
978# CONFIG_RTC_DRV_M48T59 is not set
979# CONFIG_RTC_DRV_BQ4802 is not set
980# CONFIG_RTC_DRV_V3020 is not set
981
982#
983# on-CPU RTC drivers
984#
985# CONFIG_RTC_DRV_PPC is not set
986# CONFIG_DMADEVICES is not set
987# CONFIG_UIO is not set
988# CONFIG_STAGING is not set
989
990#
991# File systems
992#
993CONFIG_EXT2_FS=y
994# CONFIG_EXT2_FS_XATTR is not set
995# CONFIG_EXT2_FS_XIP is not set
996CONFIG_EXT3_FS=y
997CONFIG_EXT3_FS_XATTR=y
998# CONFIG_EXT3_FS_POSIX_ACL is not set
999# CONFIG_EXT3_FS_SECURITY is not set
1000# CONFIG_EXT4_FS is not set
1001CONFIG_JBD=y
1002CONFIG_FS_MBCACHE=y
1003# CONFIG_REISERFS_FS is not set
1004# CONFIG_JFS_FS is not set
1005# CONFIG_FS_POSIX_ACL is not set
1006CONFIG_FILE_LOCKING=y
1007# CONFIG_XFS_FS is not set
1008# CONFIG_OCFS2_FS is not set
1009# CONFIG_BTRFS_FS is not set
1010CONFIG_DNOTIFY=y
1011CONFIG_INOTIFY=y
1012CONFIG_INOTIFY_USER=y
1013# CONFIG_QUOTA is not set
1014# CONFIG_AUTOFS_FS is not set
1015# CONFIG_AUTOFS4_FS is not set
1016# CONFIG_FUSE_FS is not set
1017
1018#
1019# CD-ROM/DVD Filesystems
1020#
1021# CONFIG_ISO9660_FS is not set
1022# CONFIG_UDF_FS is not set
1023
1024#
1025# DOS/FAT/NT Filesystems
1026#
1027# CONFIG_MSDOS_FS is not set
1028# CONFIG_VFAT_FS is not set
1029# CONFIG_NTFS_FS is not set
1030
1031#
1032# Pseudo filesystems
1033#
1034CONFIG_PROC_FS=y
1035CONFIG_PROC_KCORE=y
1036CONFIG_PROC_SYSCTL=y
1037CONFIG_PROC_PAGE_MONITOR=y
1038CONFIG_SYSFS=y
1039CONFIG_TMPFS=y
1040# CONFIG_TMPFS_POSIX_ACL is not set
1041# CONFIG_HUGETLB_PAGE is not set
1042# CONFIG_CONFIGFS_FS is not set
1043CONFIG_MISC_FILESYSTEMS=y
1044# CONFIG_ADFS_FS is not set
1045# CONFIG_AFFS_FS is not set
1046# CONFIG_HFS_FS is not set
1047# CONFIG_HFSPLUS_FS is not set
1048# CONFIG_BEFS_FS is not set
1049# CONFIG_BFS_FS is not set
1050# CONFIG_EFS_FS is not set
1051# CONFIG_CRAMFS is not set
1052# CONFIG_SQUASHFS is not set
1053# CONFIG_VXFS_FS is not set
1054# CONFIG_MINIX_FS is not set
1055# CONFIG_OMFS_FS is not set
1056# CONFIG_HPFS_FS is not set
1057# CONFIG_QNX4FS_FS is not set
1058# CONFIG_ROMFS_FS is not set
1059# CONFIG_SYSV_FS is not set
1060# CONFIG_UFS_FS is not set
1061CONFIG_NETWORK_FILESYSTEMS=y
1062CONFIG_NFS_FS=y
1063CONFIG_NFS_V3=y
1064# CONFIG_NFS_V3_ACL is not set
1065CONFIG_NFS_V4=y
1066CONFIG_ROOT_NFS=y
1067# CONFIG_NFSD is not set
1068CONFIG_LOCKD=y
1069CONFIG_LOCKD_V4=y
1070CONFIG_NFS_COMMON=y
1071CONFIG_SUNRPC=y
1072CONFIG_SUNRPC_GSS=y
1073# CONFIG_SUNRPC_REGISTER_V4 is not set
1074CONFIG_RPCSEC_GSS_KRB5=y
1075# CONFIG_RPCSEC_GSS_SPKM3 is not set
1076# CONFIG_SMB_FS is not set
1077# CONFIG_CIFS is not set
1078# CONFIG_NCP_FS is not set
1079# CONFIG_CODA_FS is not set
1080# CONFIG_AFS_FS is not set
1081
1082#
1083# Partition Types
1084#
1085CONFIG_PARTITION_ADVANCED=y
1086# CONFIG_ACORN_PARTITION is not set
1087# CONFIG_OSF_PARTITION is not set
1088# CONFIG_AMIGA_PARTITION is not set
1089# CONFIG_ATARI_PARTITION is not set
1090# CONFIG_MAC_PARTITION is not set
1091# CONFIG_MSDOS_PARTITION is not set
1092# CONFIG_LDM_PARTITION is not set
1093# CONFIG_SGI_PARTITION is not set
1094# CONFIG_ULTRIX_PARTITION is not set
1095# CONFIG_SUN_PARTITION is not set
1096# CONFIG_KARMA_PARTITION is not set
1097# CONFIG_EFI_PARTITION is not set
1098# CONFIG_SYSV68_PARTITION is not set
1099# CONFIG_NLS is not set
1100# CONFIG_DLM is not set
1101
1102#
1103# Library routines
1104#
1105CONFIG_BITREVERSE=y
1106CONFIG_GENERIC_FIND_LAST_BIT=y
1107# CONFIG_CRC_CCITT is not set
1108# CONFIG_CRC16 is not set
1109# CONFIG_CRC_T10DIF is not set
1110# CONFIG_CRC_ITU_T is not set
1111CONFIG_CRC32=y
1112# CONFIG_CRC7 is not set
1113# CONFIG_LIBCRC32C is not set
1114CONFIG_PLIST=y
1115CONFIG_HAS_IOMEM=y
1116CONFIG_HAS_IOPORT=y
1117CONFIG_HAS_DMA=y
1118CONFIG_HAVE_LMB=y
1119
1120#
1121# Kernel hacking
1122#
1123# CONFIG_PRINTK_TIME is not set
1124CONFIG_ENABLE_WARN_DEPRECATED=y
1125CONFIG_ENABLE_MUST_CHECK=y
1126CONFIG_FRAME_WARN=1024
1127# CONFIG_MAGIC_SYSRQ is not set
1128# CONFIG_UNUSED_SYMBOLS is not set
1129# CONFIG_DEBUG_FS is not set
1130# CONFIG_HEADERS_CHECK is not set
1131CONFIG_DEBUG_KERNEL=y
1132# CONFIG_DEBUG_SHIRQ is not set
1133CONFIG_DETECT_SOFTLOCKUP=y
1134# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1135CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1136CONFIG_SCHED_DEBUG=y
1137# CONFIG_SCHEDSTATS is not set
1138# CONFIG_TIMER_STATS is not set
1139# CONFIG_DEBUG_OBJECTS is not set
1140# CONFIG_SLUB_DEBUG_ON is not set
1141# CONFIG_SLUB_STATS is not set
1142# CONFIG_DEBUG_RT_MUTEXES is not set
1143# CONFIG_RT_MUTEX_TESTER is not set
1144# CONFIG_DEBUG_SPINLOCK is not set
1145# CONFIG_DEBUG_MUTEXES is not set
1146# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1147# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1148# CONFIG_DEBUG_KOBJECT is not set
1149# CONFIG_DEBUG_BUGVERBOSE is not set
1150# CONFIG_DEBUG_INFO is not set
1151# CONFIG_DEBUG_VM is not set
1152# CONFIG_DEBUG_WRITECOUNT is not set
1153# CONFIG_DEBUG_MEMORY_INIT is not set
1154# CONFIG_DEBUG_LIST is not set
1155# CONFIG_DEBUG_SG is not set
1156# CONFIG_DEBUG_NOTIFIERS is not set
1157# CONFIG_BOOT_PRINTK_DELAY is not set
1158# CONFIG_RCU_TORTURE_TEST is not set
1159# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1160# CONFIG_BACKTRACE_SELF_TEST is not set
1161# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1162# CONFIG_FAULT_INJECTION is not set
1163# CONFIG_LATENCYTOP is not set
1164CONFIG_SYSCTL_SYSCALL_CHECK=y
1165CONFIG_HAVE_FUNCTION_TRACER=y
1166CONFIG_HAVE_DYNAMIC_FTRACE=y
1167CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1168
1169#
1170# Tracers
1171#
1172# CONFIG_FUNCTION_TRACER is not set
1173# CONFIG_SCHED_TRACER is not set
1174# CONFIG_CONTEXT_SWITCH_TRACER is not set
1175# CONFIG_BOOT_TRACER is not set
1176# CONFIG_TRACE_BRANCH_PROFILING is not set
1177# CONFIG_STACK_TRACER is not set
1178# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1179# CONFIG_SAMPLES is not set
1180CONFIG_HAVE_ARCH_KGDB=y
1181# CONFIG_KGDB is not set
1182CONFIG_PRINT_STACK_DEPTH=64
1183# CONFIG_DEBUG_STACKOVERFLOW is not set
1184# CONFIG_DEBUG_STACK_USAGE is not set
1185# CONFIG_DEBUG_PAGEALLOC is not set
1186# CONFIG_CODE_PATCHING_SELFTEST is not set
1187# CONFIG_FTR_FIXUP_SELFTEST is not set
1188# CONFIG_MSI_BITMAP_SELFTEST is not set
1189# CONFIG_XMON is not set
1190# CONFIG_IRQSTACKS is not set
1191# CONFIG_BDI_SWITCH is not set
1192CONFIG_PPC_EARLY_DEBUG=y
1193# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
1194# CONFIG_PPC_EARLY_DEBUG_G5 is not set
1195# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set
1196# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
1197# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
1198# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
1199# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
1200# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
1201# CONFIG_PPC_EARLY_DEBUG_44x is not set
1202# CONFIG_PPC_EARLY_DEBUG_40x is not set
1203# CONFIG_PPC_EARLY_DEBUG_CPM is not set
1204
1205#
1206# Security options
1207#
1208# CONFIG_KEYS is not set
1209# CONFIG_SECURITY is not set
1210# CONFIG_SECURITYFS is not set
1211# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1212CONFIG_CRYPTO=y
1213
1214#
1215# Crypto core or helper
1216#
1217# CONFIG_CRYPTO_FIPS is not set
1218CONFIG_CRYPTO_ALGAPI=y
1219CONFIG_CRYPTO_ALGAPI2=y
1220CONFIG_CRYPTO_AEAD2=y
1221CONFIG_CRYPTO_BLKCIPHER=y
1222CONFIG_CRYPTO_BLKCIPHER2=y
1223CONFIG_CRYPTO_HASH=y
1224CONFIG_CRYPTO_HASH2=y
1225CONFIG_CRYPTO_RNG2=y
1226CONFIG_CRYPTO_MANAGER=y
1227CONFIG_CRYPTO_MANAGER2=y
1228# CONFIG_CRYPTO_GF128MUL is not set
1229# CONFIG_CRYPTO_NULL is not set
1230# CONFIG_CRYPTO_CRYPTD is not set
1231# CONFIG_CRYPTO_AUTHENC is not set
1232# CONFIG_CRYPTO_TEST is not set
1233
1234#
1235# Authenticated Encryption with Associated Data
1236#
1237# CONFIG_CRYPTO_CCM is not set
1238# CONFIG_CRYPTO_GCM is not set
1239# CONFIG_CRYPTO_SEQIV is not set
1240
1241#
1242# Block modes
1243#
1244CONFIG_CRYPTO_CBC=y
1245# CONFIG_CRYPTO_CTR is not set
1246# CONFIG_CRYPTO_CTS is not set
1247CONFIG_CRYPTO_ECB=m
1248# CONFIG_CRYPTO_LRW is not set
1249CONFIG_CRYPTO_PCBC=m
1250# CONFIG_CRYPTO_XTS is not set
1251
1252#
1253# Hash modes
1254#
1255# CONFIG_CRYPTO_HMAC is not set
1256# CONFIG_CRYPTO_XCBC is not set
1257
1258#
1259# Digest
1260#
1261# CONFIG_CRYPTO_CRC32C is not set
1262# CONFIG_CRYPTO_MD4 is not set
1263CONFIG_CRYPTO_MD5=y
1264# CONFIG_CRYPTO_MICHAEL_MIC is not set
1265# CONFIG_CRYPTO_RMD128 is not set
1266# CONFIG_CRYPTO_RMD160 is not set
1267# CONFIG_CRYPTO_RMD256 is not set
1268# CONFIG_CRYPTO_RMD320 is not set
1269# CONFIG_CRYPTO_SHA1 is not set
1270# CONFIG_CRYPTO_SHA256 is not set
1271# CONFIG_CRYPTO_SHA512 is not set
1272# CONFIG_CRYPTO_TGR192 is not set
1273# CONFIG_CRYPTO_WP512 is not set
1274
1275#
1276# Ciphers
1277#
1278# CONFIG_CRYPTO_AES is not set
1279# CONFIG_CRYPTO_ANUBIS is not set
1280# CONFIG_CRYPTO_ARC4 is not set
1281# CONFIG_CRYPTO_BLOWFISH is not set
1282# CONFIG_CRYPTO_CAMELLIA is not set
1283# CONFIG_CRYPTO_CAST5 is not set
1284# CONFIG_CRYPTO_CAST6 is not set
1285CONFIG_CRYPTO_DES=y
1286# CONFIG_CRYPTO_FCRYPT is not set
1287# CONFIG_CRYPTO_KHAZAD is not set
1288# CONFIG_CRYPTO_SALSA20 is not set
1289# CONFIG_CRYPTO_SEED is not set
1290# CONFIG_CRYPTO_SERPENT is not set
1291# CONFIG_CRYPTO_TEA is not set
1292# CONFIG_CRYPTO_TWOFISH is not set
1293
1294#
1295# Compression
1296#
1297# CONFIG_CRYPTO_DEFLATE is not set
1298# CONFIG_CRYPTO_LZO is not set
1299
1300#
1301# Random Number Generation
1302#
1303# CONFIG_CRYPTO_ANSI_CPRNG is not set
1304CONFIG_CRYPTO_HW=y
1305# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1306# CONFIG_CRYPTO_DEV_TALITOS is not set
1307# CONFIG_PPC_CLOCK is not set
1308CONFIG_PPC_LIB_RHEAP=y
1309# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/tqm8548_defconfig b/arch/powerpc/configs/85xx/tqm8548_defconfig
index 0bc45975911a..43030fea2eee 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.29-rc2 3# Linux kernel version: 2.6.29-rc7
4# Mon Jan 26 15:36:20 2009 4# Mon Mar 16 09:03:28 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_BOOK3E_MMU=y
25# CONFIG_PPC_MM_SLICES is not set 26# CONFIG_PPC_MM_SLICES is not set
26# CONFIG_SMP is not set 27# CONFIG_SMP is not set
27CONFIG_PPC32=y 28CONFIG_PPC32=y
@@ -75,6 +76,15 @@ CONFIG_SYSVIPC_SYSCTL=y
75# CONFIG_BSD_PROCESS_ACCT is not set 76# CONFIG_BSD_PROCESS_ACCT is not set
76# CONFIG_TASKSTATS is not set 77# CONFIG_TASKSTATS is not set
77# CONFIG_AUDIT is not set 78# CONFIG_AUDIT is not set
79
80#
81# RCU Subsystem
82#
83CONFIG_CLASSIC_RCU=y
84# CONFIG_TREE_RCU is not set
85# CONFIG_PREEMPT_RCU is not set
86# CONFIG_TREE_RCU_TRACE is not set
87# CONFIG_PREEMPT_RCU_TRACE is not set
78# CONFIG_IKCONFIG is not set 88# CONFIG_IKCONFIG is not set
79CONFIG_LOG_BUF_SHIFT=14 89CONFIG_LOG_BUF_SHIFT=14
80CONFIG_GROUP_SCHED=y 90CONFIG_GROUP_SCHED=y
@@ -152,11 +162,6 @@ CONFIG_DEFAULT_AS=y
152# CONFIG_DEFAULT_CFQ is not set 162# CONFIG_DEFAULT_CFQ is not set
153# CONFIG_DEFAULT_NOOP is not set 163# CONFIG_DEFAULT_NOOP is not set
154CONFIG_DEFAULT_IOSCHED="anticipatory" 164CONFIG_DEFAULT_IOSCHED="anticipatory"
155CONFIG_CLASSIC_RCU=y
156# CONFIG_TREE_RCU is not set
157# CONFIG_PREEMPT_RCU is not set
158# CONFIG_TREE_RCU_TRACE is not set
159# CONFIG_PREEMPT_RCU_TRACE is not set
160# CONFIG_FREEZER is not set 165# CONFIG_FREEZER is not set
161 166
162# 167#
@@ -202,7 +207,7 @@ CONFIG_MPIC=y
202# 207#
203# Kernel options 208# Kernel options
204# 209#
205# CONFIG_HIGHMEM is not set 210CONFIG_HIGHMEM=y
206CONFIG_TICK_ONESHOT=y 211CONFIG_TICK_ONESHOT=y
207CONFIG_NO_HZ=y 212CONFIG_NO_HZ=y
208CONFIG_HIGH_RES_TIMERS=y 213CONFIG_HIGH_RES_TIMERS=y
@@ -244,6 +249,7 @@ CONFIG_UNEVICTABLE_LRU=y
244CONFIG_PPC_4K_PAGES=y 249CONFIG_PPC_4K_PAGES=y
245# CONFIG_PPC_16K_PAGES is not set 250# CONFIG_PPC_16K_PAGES is not set
246# CONFIG_PPC_64K_PAGES is not set 251# CONFIG_PPC_64K_PAGES is not set
252# CONFIG_PPC_256K_PAGES is not set
247CONFIG_FORCE_MAX_ZONEORDER=11 253CONFIG_FORCE_MAX_ZONEORDER=11
248CONFIG_PROC_DEVICETREE=y 254CONFIG_PROC_DEVICETREE=y
249# CONFIG_CMDLINE_BOOL is not set 255# CONFIG_CMDLINE_BOOL is not set
@@ -259,6 +265,7 @@ CONFIG_ZONE_DMA=y
259CONFIG_PPC_INDIRECT_PCI=y 265CONFIG_PPC_INDIRECT_PCI=y
260CONFIG_FSL_SOC=y 266CONFIG_FSL_SOC=y
261CONFIG_FSL_PCI=y 267CONFIG_FSL_PCI=y
268CONFIG_FSL_LBC=y
262CONFIG_PPC_PCI_CHOICE=y 269CONFIG_PPC_PCI_CHOICE=y
263CONFIG_PCI=y 270CONFIG_PCI=y
264CONFIG_PCI_DOMAINS=y 271CONFIG_PCI_DOMAINS=y
@@ -284,10 +291,11 @@ CONFIG_ARCH_SUPPORTS_MSI=y
284# Default settings for advanced configuration options are used 291# Default settings for advanced configuration options are used
285# 292#
286CONFIG_LOWMEM_SIZE=0x30000000 293CONFIG_LOWMEM_SIZE=0x30000000
294CONFIG_LOWMEM_CAM_NUM=3
287CONFIG_PAGE_OFFSET=0xc0000000 295CONFIG_PAGE_OFFSET=0xc0000000
288CONFIG_KERNEL_START=0xc0000000 296CONFIG_KERNEL_START=0xc0000000
289CONFIG_PHYSICAL_START=0x00000000 297CONFIG_PHYSICAL_START=0x00000000
290CONFIG_PHYSICAL_ALIGN=0x10000000 298CONFIG_PHYSICAL_ALIGN=0x04000000
291CONFIG_TASK_SIZE=0xc0000000 299CONFIG_TASK_SIZE=0xc0000000
292CONFIG_NET=y 300CONFIG_NET=y
293 301
@@ -363,12 +371,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
363# CONFIG_BT is not set 371# CONFIG_BT is not set
364# CONFIG_AF_RXRPC is not set 372# CONFIG_AF_RXRPC is not set
365# CONFIG_PHONET is not set 373# CONFIG_PHONET is not set
366CONFIG_WIRELESS=y 374# CONFIG_WIRELESS is not set
367# CONFIG_CFG80211 is not set
368CONFIG_WIRELESS_OLD_REGULATORY=y
369# CONFIG_WIRELESS_EXT is not set
370# CONFIG_LIB80211 is not set
371# CONFIG_MAC80211 is not set
372# CONFIG_WIMAX is not set 375# CONFIG_WIMAX is not set
373# CONFIG_RFKILL is not set 376# CONFIG_RFKILL is not set
374# CONFIG_NET_9P is not set 377# CONFIG_NET_9P is not set
@@ -471,27 +474,18 @@ CONFIG_MTD_NAND_IDS=y
471# CONFIG_MTD_NAND_NANDSIM is not set 474# CONFIG_MTD_NAND_NANDSIM is not set
472# CONFIG_MTD_NAND_PLATFORM is not set 475# CONFIG_MTD_NAND_PLATFORM is not set
473# CONFIG_MTD_NAND_FSL_ELBC is not set 476# CONFIG_MTD_NAND_FSL_ELBC is not set
474# CONFIG_MTD_NAND_FSL_UPM is not set 477CONFIG_MTD_NAND_FSL_UPM=y
475# CONFIG_MTD_ONENAND is not set 478# CONFIG_MTD_ONENAND is not set
476 479
477# 480#
478# LPDDR flash memory drivers 481# LPDDR flash memory drivers
479# 482#
480# CONFIG_MTD_LPDDR is not set 483# CONFIG_MTD_LPDDR is not set
481# CONFIG_MTD_QINFO_PROBE is not set
482 484
483# 485#
484# UBI - Unsorted block images 486# UBI - Unsorted block images
485# 487#
486CONFIG_MTD_UBI=m 488# CONFIG_MTD_UBI is not set
487CONFIG_MTD_UBI_WL_THRESHOLD=4096
488CONFIG_MTD_UBI_BEB_RESERVE=1
489# CONFIG_MTD_UBI_GLUEBI is not set
490
491#
492# UBI debugging options
493#
494# CONFIG_MTD_UBI_DEBUG is not set
495CONFIG_OF_DEVICE=y 489CONFIG_OF_DEVICE=y
496CONFIG_OF_I2C=y 490CONFIG_OF_I2C=y
497# CONFIG_PARPORT is not set 491# CONFIG_PARPORT is not set
@@ -515,69 +509,21 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
515# CONFIG_BLK_DEV_HD is not set 509# CONFIG_BLK_DEV_HD is not set
516CONFIG_MISC_DEVICES=y 510CONFIG_MISC_DEVICES=y
517# CONFIG_PHANTOM is not set 511# CONFIG_PHANTOM is not set
518# CONFIG_EEPROM_93CX6 is not set
519# CONFIG_SGI_IOC4 is not set 512# CONFIG_SGI_IOC4 is not set
520# CONFIG_TIFM_CORE is not set 513# CONFIG_TIFM_CORE is not set
521# CONFIG_ICS932S401 is not set 514# CONFIG_ICS932S401 is not set
522# CONFIG_ENCLOSURE_SERVICES is not set 515# CONFIG_ENCLOSURE_SERVICES is not set
523# CONFIG_HP_ILO is not set 516# CONFIG_HP_ILO is not set
524# CONFIG_C2PORT is not set 517# CONFIG_C2PORT is not set
518
519#
520# EEPROM support
521#
522# CONFIG_EEPROM_AT24 is not set
523# CONFIG_EEPROM_LEGACY is not set
524# CONFIG_EEPROM_93CX6 is not set
525CONFIG_HAVE_IDE=y 525CONFIG_HAVE_IDE=y
526CONFIG_IDE=y 526# CONFIG_IDE is not set
527
528#
529# Please see Documentation/ide/ide.txt for help/info on IDE drives
530#
531CONFIG_IDE_TIMINGS=y
532# CONFIG_BLK_DEV_IDE_SATA is not set
533CONFIG_IDE_GD=y
534CONFIG_IDE_GD_ATA=y
535# CONFIG_IDE_GD_ATAPI is not set
536# CONFIG_BLK_DEV_IDECD is not set
537# CONFIG_BLK_DEV_IDETAPE is not set
538# CONFIG_IDE_TASK_IOCTL is not set
539CONFIG_IDE_PROC_FS=y
540
541#
542# IDE chipset support/bugfixes
543#
544# CONFIG_BLK_DEV_PLATFORM is not set
545CONFIG_BLK_DEV_IDEDMA_SFF=y
546
547#
548# PCI IDE chipsets support
549#
550CONFIG_BLK_DEV_IDEPCI=y
551CONFIG_IDEPCI_PCIBUS_ORDER=y
552# CONFIG_BLK_DEV_OFFBOARD is not set
553CONFIG_BLK_DEV_GENERIC=y
554# CONFIG_BLK_DEV_OPTI621 is not set
555CONFIG_BLK_DEV_IDEDMA_PCI=y
556# CONFIG_BLK_DEV_AEC62XX is not set
557# CONFIG_BLK_DEV_ALI15X3 is not set
558# CONFIG_BLK_DEV_AMD74XX is not set
559# CONFIG_BLK_DEV_CMD64X is not set
560# CONFIG_BLK_DEV_TRIFLEX is not set
561# CONFIG_BLK_DEV_CS5520 is not set
562# CONFIG_BLK_DEV_CS5530 is not set
563# CONFIG_BLK_DEV_HPT366 is not set
564# CONFIG_BLK_DEV_JMICRON is not set
565# CONFIG_BLK_DEV_SC1200 is not set
566# CONFIG_BLK_DEV_PIIX is not set
567# CONFIG_BLK_DEV_IT8172 is not set
568# CONFIG_BLK_DEV_IT8213 is not set
569# CONFIG_BLK_DEV_IT821X is not set
570# CONFIG_BLK_DEV_NS87415 is not set
571# CONFIG_BLK_DEV_PDC202XX_OLD is not set
572# CONFIG_BLK_DEV_PDC202XX_NEW is not set
573# CONFIG_BLK_DEV_SVWKS is not set
574# CONFIG_BLK_DEV_SIIMAGE is not set
575# CONFIG_BLK_DEV_SL82C105 is not set
576# CONFIG_BLK_DEV_SLC90E66 is not set
577# CONFIG_BLK_DEV_TRM290 is not set
578CONFIG_BLK_DEV_VIA82CXXX=y
579# CONFIG_BLK_DEV_TC86C001 is not set
580CONFIG_BLK_DEV_IDEDMA=y
581 527
582# 528#
583# SCSI device support 529# SCSI device support
@@ -650,7 +596,7 @@ CONFIG_MII=y
650CONFIG_NETDEV_1000=y 596CONFIG_NETDEV_1000=y
651# CONFIG_ACENIC is not set 597# CONFIG_ACENIC is not set
652# CONFIG_DL2K is not set 598# CONFIG_DL2K is not set
653CONFIG_E1000=y 599# CONFIG_E1000 is not set
654# CONFIG_E1000E is not set 600# CONFIG_E1000E is not set
655# CONFIG_IP1000 is not set 601# CONFIG_IP1000 is not set
656# CONFIG_IGB is not set 602# CONFIG_IGB is not set
@@ -668,6 +614,7 @@ CONFIG_GIANFAR=y
668# CONFIG_QLA3XXX is not set 614# CONFIG_QLA3XXX is not set
669# CONFIG_ATL1 is not set 615# CONFIG_ATL1 is not set
670# CONFIG_ATL1E is not set 616# CONFIG_ATL1E is not set
617# CONFIG_ATL1C is not set
671# CONFIG_JME is not set 618# CONFIG_JME is not set
672CONFIG_NETDEV_10000=y 619CONFIG_NETDEV_10000=y
673# CONFIG_CHELSIO_T1 is not set 620# CONFIG_CHELSIO_T1 is not set
@@ -835,8 +782,6 @@ CONFIG_I2C_MPC=y
835# Miscellaneous I2C Chip support 782# Miscellaneous I2C Chip support
836# 783#
837# CONFIG_DS1682 is not set 784# CONFIG_DS1682 is not set
838# CONFIG_EEPROM_AT24 is not set
839# CONFIG_EEPROM_LEGACY is not set
840# CONFIG_SENSORS_PCF8574 is not set 785# CONFIG_SENSORS_PCF8574 is not set
841# CONFIG_PCF8575 is not set 786# CONFIG_PCF8575 is not set
842# CONFIG_SENSORS_PCA9539 is not set 787# CONFIG_SENSORS_PCA9539 is not set
@@ -975,26 +920,7 @@ CONFIG_HID=y
975# Special HID drivers 920# Special HID drivers
976# 921#
977CONFIG_HID_COMPAT=y 922CONFIG_HID_COMPAT=y
978CONFIG_USB_SUPPORT=y 923# CONFIG_USB_SUPPORT is not set
979CONFIG_USB_ARCH_HAS_HCD=y
980CONFIG_USB_ARCH_HAS_OHCI=y
981CONFIG_USB_ARCH_HAS_EHCI=y
982# CONFIG_USB is not set
983# CONFIG_USB_OTG_WHITELIST is not set
984# CONFIG_USB_OTG_BLACKLIST_HUB is not set
985
986#
987# Enable Host or Gadget support to see Inventra options
988#
989
990#
991# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
992#
993# CONFIG_USB_GADGET is not set
994
995#
996# OTG and related infrastructure
997#
998# CONFIG_UWB is not set 924# CONFIG_UWB is not set
999# CONFIG_MMC is not set 925# CONFIG_MMC is not set
1000# CONFIG_MEMSTICK is not set 926# CONFIG_MEMSTICK is not set
@@ -1064,16 +990,9 @@ CONFIG_RTC_DRV_DS1307=y
1064# 990#
1065# File systems 991# File systems
1066# 992#
1067CONFIG_EXT2_FS=y 993# CONFIG_EXT2_FS is not set
1068# CONFIG_EXT2_FS_XATTR is not set 994# CONFIG_EXT3_FS is not set
1069# CONFIG_EXT2_FS_XIP is not set
1070CONFIG_EXT3_FS=y
1071CONFIG_EXT3_FS_XATTR=y
1072# CONFIG_EXT3_FS_POSIX_ACL is not set
1073# CONFIG_EXT3_FS_SECURITY is not set
1074# CONFIG_EXT4_FS is not set 995# CONFIG_EXT4_FS is not set
1075CONFIG_JBD=y
1076CONFIG_FS_MBCACHE=y
1077# CONFIG_REISERFS_FS is not set 996# CONFIG_REISERFS_FS is not set
1078# CONFIG_JFS_FS is not set 997# CONFIG_JFS_FS is not set
1079# CONFIG_FS_POSIX_ACL is not set 998# CONFIG_FS_POSIX_ACL is not set
@@ -1122,8 +1041,17 @@ CONFIG_MISC_FILESYSTEMS=y
1122# CONFIG_BEFS_FS is not set 1041# CONFIG_BEFS_FS is not set
1123# CONFIG_BFS_FS is not set 1042# CONFIG_BFS_FS is not set
1124# CONFIG_EFS_FS is not set 1043# CONFIG_EFS_FS is not set
1125# CONFIG_JFFS2_FS is not set 1044CONFIG_JFFS2_FS=y
1126# CONFIG_UBIFS_FS is not set 1045CONFIG_JFFS2_FS_DEBUG=0
1046CONFIG_JFFS2_FS_WRITEBUFFER=y
1047# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1048# CONFIG_JFFS2_SUMMARY is not set
1049# CONFIG_JFFS2_FS_XATTR is not set
1050# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1051CONFIG_JFFS2_ZLIB=y
1052# CONFIG_JFFS2_LZO is not set
1053CONFIG_JFFS2_RTIME=y
1054# CONFIG_JFFS2_RUBIN is not set
1127# CONFIG_CRAMFS is not set 1055# CONFIG_CRAMFS is not set
1128# CONFIG_SQUASHFS is not set 1056# CONFIG_SQUASHFS is not set
1129# CONFIG_VXFS_FS is not set 1057# CONFIG_VXFS_FS is not set
@@ -1184,6 +1112,8 @@ CONFIG_GENERIC_FIND_LAST_BIT=y
1184CONFIG_CRC32=y 1112CONFIG_CRC32=y
1185# CONFIG_CRC7 is not set 1113# CONFIG_CRC7 is not set
1186# CONFIG_LIBCRC32C is not set 1114# CONFIG_LIBCRC32C is not set
1115CONFIG_ZLIB_INFLATE=y
1116CONFIG_ZLIB_DEFLATE=y
1187CONFIG_PLIST=y 1117CONFIG_PLIST=y
1188CONFIG_HAS_IOMEM=y 1118CONFIG_HAS_IOMEM=y
1189CONFIG_HAS_IOPORT=y 1119CONFIG_HAS_IOPORT=y
@@ -1219,6 +1149,7 @@ CONFIG_DEBUG_MUTEXES=y
1219# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1149# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1220# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1150# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1221# CONFIG_DEBUG_KOBJECT is not set 1151# CONFIG_DEBUG_KOBJECT is not set
1152# CONFIG_DEBUG_HIGHMEM is not set
1222# CONFIG_DEBUG_BUGVERBOSE is not set 1153# CONFIG_DEBUG_BUGVERBOSE is not set
1223# CONFIG_DEBUG_INFO is not set 1154# CONFIG_DEBUG_INFO is not set
1224# CONFIG_DEBUG_VM is not set 1155# CONFIG_DEBUG_VM is not set
@@ -1236,6 +1167,7 @@ CONFIG_DEBUG_MUTEXES=y
1236# CONFIG_LATENCYTOP is not set 1167# CONFIG_LATENCYTOP is not set
1237CONFIG_SYSCTL_SYSCALL_CHECK=y 1168CONFIG_SYSCTL_SYSCALL_CHECK=y
1238CONFIG_HAVE_FUNCTION_TRACER=y 1169CONFIG_HAVE_FUNCTION_TRACER=y
1170CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1239CONFIG_HAVE_DYNAMIC_FTRACE=y 1171CONFIG_HAVE_DYNAMIC_FTRACE=y
1240CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1172CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1241 1173
diff --git a/arch/powerpc/configs/mpc5200_defconfig b/arch/powerpc/configs/mpc5200_defconfig
index af0cd55605d0..aaa4416660e9 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.29-rc3 3# Linux kernel version: 2.6.30-rc2
4# Fri Feb 6 09:48:53 2009 4# Mon Apr 20 11:06:25 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -14,6 +14,7 @@ CONFIG_6xx=y
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
17CONFIG_PPC_FPU=y 18CONFIG_PPC_FPU=y
18# CONFIG_ALTIVEC is not set 19# CONFIG_ALTIVEC is not set
19CONFIG_PPC_STD_MMU=y 20CONFIG_PPC_STD_MMU=y
@@ -39,6 +40,7 @@ CONFIG_ARCH_HAS_ILOG2_U32=y
39CONFIG_GENERIC_HWEIGHT=y 40CONFIG_GENERIC_HWEIGHT=y
40CONFIG_GENERIC_CALIBRATE_DELAY=y 41CONFIG_GENERIC_CALIBRATE_DELAY=y
41CONFIG_GENERIC_FIND_NEXT_BIT=y 42CONFIG_GENERIC_FIND_NEXT_BIT=y
43CONFIG_GENERIC_GPIO=y
42# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
43CONFIG_PPC=y 45CONFIG_PPC=y
44CONFIG_EARLY_PRINTK=y 46CONFIG_EARLY_PRINTK=y
@@ -55,6 +57,7 @@ CONFIG_DEFAULT_UIMAGE=y
55CONFIG_ARCH_SUSPEND_POSSIBLE=y 57CONFIG_ARCH_SUSPEND_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
60CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
58CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 61CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
59 62
60# 63#
@@ -91,19 +94,22 @@ CONFIG_SYSFS_DEPRECATED_V2=y
91# CONFIG_NAMESPACES is not set 94# CONFIG_NAMESPACES is not set
92CONFIG_BLK_DEV_INITRD=y 95CONFIG_BLK_DEV_INITRD=y
93CONFIG_INITRAMFS_SOURCE="" 96CONFIG_INITRAMFS_SOURCE=""
97CONFIG_RD_GZIP=y
98# CONFIG_RD_BZIP2 is not set
99# CONFIG_RD_LZMA is not set
94# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 100# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
95CONFIG_SYSCTL=y 101CONFIG_SYSCTL=y
102CONFIG_ANON_INODES=y
96CONFIG_EMBEDDED=y 103CONFIG_EMBEDDED=y
97# CONFIG_SYSCTL_SYSCALL is not set 104# CONFIG_SYSCTL_SYSCALL is not set
98# CONFIG_KALLSYMS is not set 105# CONFIG_KALLSYMS is not set
106# CONFIG_STRIP_ASM_SYMS is not set
99CONFIG_HOTPLUG=y 107CONFIG_HOTPLUG=y
100CONFIG_PRINTK=y 108CONFIG_PRINTK=y
101CONFIG_BUG=y 109CONFIG_BUG=y
102CONFIG_ELF_CORE=y 110CONFIG_ELF_CORE=y
103CONFIG_COMPAT_BRK=y
104CONFIG_BASE_FULL=y 111CONFIG_BASE_FULL=y
105CONFIG_FUTEX=y 112CONFIG_FUTEX=y
106CONFIG_ANON_INODES=y
107# CONFIG_EPOLL is not set 113# CONFIG_EPOLL is not set
108CONFIG_SIGNALFD=y 114CONFIG_SIGNALFD=y
109CONFIG_TIMERFD=y 115CONFIG_TIMERFD=y
@@ -113,10 +119,12 @@ CONFIG_AIO=y
113CONFIG_VM_EVENT_COUNTERS=y 119CONFIG_VM_EVENT_COUNTERS=y
114CONFIG_PCI_QUIRKS=y 120CONFIG_PCI_QUIRKS=y
115CONFIG_SLUB_DEBUG=y 121CONFIG_SLUB_DEBUG=y
122CONFIG_COMPAT_BRK=y
116# CONFIG_SLAB is not set 123# CONFIG_SLAB is not set
117CONFIG_SLUB=y 124CONFIG_SLUB=y
118# CONFIG_SLOB is not set 125# CONFIG_SLOB is not set
119# CONFIG_PROFILING is not set 126# CONFIG_PROFILING is not set
127# CONFIG_MARKERS is not set
120CONFIG_HAVE_OPROFILE=y 128CONFIG_HAVE_OPROFILE=y
121CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 129CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
122CONFIG_HAVE_IOREMAP_PROT=y 130CONFIG_HAVE_IOREMAP_PROT=y
@@ -124,6 +132,7 @@ CONFIG_HAVE_KPROBES=y
124CONFIG_HAVE_KRETPROBES=y 132CONFIG_HAVE_KRETPROBES=y
125CONFIG_HAVE_ARCH_TRACEHOOK=y 133CONFIG_HAVE_ARCH_TRACEHOOK=y
126CONFIG_HAVE_CLK=y 134CONFIG_HAVE_CLK=y
135# CONFIG_SLOW_WORK is not set
127# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 136# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
128CONFIG_SLABINFO=y 137CONFIG_SLABINFO=y
129CONFIG_RT_MUTEXES=y 138CONFIG_RT_MUTEXES=y
@@ -136,7 +145,6 @@ CONFIG_MODULE_UNLOAD=y
136# CONFIG_MODULE_SRCVERSION_ALL is not set 145# CONFIG_MODULE_SRCVERSION_ALL is not set
137CONFIG_BLOCK=y 146CONFIG_BLOCK=y
138# CONFIG_LBD is not set 147# CONFIG_LBD is not set
139# CONFIG_BLK_DEV_IO_TRACE is not set
140# CONFIG_BLK_DEV_BSG is not set 148# CONFIG_BLK_DEV_BSG is not set
141# CONFIG_BLK_DEV_INTEGRITY is not set 149# CONFIG_BLK_DEV_INTEGRITY is not set
142 150
@@ -157,8 +165,6 @@ CONFIG_FREEZER=y
157# 165#
158# Platform support 166# Platform support
159# 167#
160CONFIG_PPC_MULTIPLATFORM=y
161CONFIG_CLASSIC32=y
162# CONFIG_PPC_CHRP is not set 168# CONFIG_PPC_CHRP is not set
163# CONFIG_MPC5121_ADS is not set 169# CONFIG_MPC5121_ADS is not set
164# CONFIG_MPC5121_GENERIC is not set 170# CONFIG_MPC5121_GENERIC is not set
@@ -166,8 +172,9 @@ CONFIG_PPC_MPC52xx=y
166CONFIG_PPC_MPC5200_SIMPLE=y 172CONFIG_PPC_MPC5200_SIMPLE=y
167CONFIG_PPC_EFIKA=y 173CONFIG_PPC_EFIKA=y
168CONFIG_PPC_LITE5200=y 174CONFIG_PPC_LITE5200=y
175CONFIG_PPC_MEDIA5200=y
169CONFIG_PPC_MPC5200_BUGFIX=y 176CONFIG_PPC_MPC5200_BUGFIX=y
170# CONFIG_PPC_MPC5200_GPIO is not set 177CONFIG_PPC_MPC5200_GPIO=y
171# CONFIG_PPC_PMAC is not set 178# CONFIG_PPC_PMAC is not set
172# CONFIG_PPC_CELL is not set 179# CONFIG_PPC_CELL is not set
173# CONFIG_PPC_CELL_NATIVE is not set 180# CONFIG_PPC_CELL_NATIVE is not set
@@ -176,7 +183,9 @@ CONFIG_PPC_MPC5200_BUGFIX=y
176# CONFIG_PPC_83xx is not set 183# CONFIG_PPC_83xx is not set
177# CONFIG_PPC_86xx is not set 184# CONFIG_PPC_86xx is not set
178# CONFIG_EMBEDDED6xx is not set 185# CONFIG_EMBEDDED6xx is not set
186# CONFIG_AMIGAONE is not set
179CONFIG_PPC_NATIVE=y 187CONFIG_PPC_NATIVE=y
188CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
180# CONFIG_UDBG_RTAS_CONSOLE is not set 189# CONFIG_UDBG_RTAS_CONSOLE is not set
181# CONFIG_IPIC is not set 190# CONFIG_IPIC is not set
182# CONFIG_MPIC is not set 191# CONFIG_MPIC is not set
@@ -241,9 +250,12 @@ CONFIG_ZONE_DMA_FLAG=1
241CONFIG_BOUNCE=y 250CONFIG_BOUNCE=y
242CONFIG_VIRT_TO_BUS=y 251CONFIG_VIRT_TO_BUS=y
243CONFIG_UNEVICTABLE_LRU=y 252CONFIG_UNEVICTABLE_LRU=y
253CONFIG_HAVE_MLOCK=y
254CONFIG_HAVE_MLOCKED_PAGE_BIT=y
244CONFIG_PPC_4K_PAGES=y 255CONFIG_PPC_4K_PAGES=y
245# CONFIG_PPC_16K_PAGES is not set 256# CONFIG_PPC_16K_PAGES is not set
246# CONFIG_PPC_64K_PAGES is not set 257# CONFIG_PPC_64K_PAGES is not set
258# CONFIG_PPC_256K_PAGES is not set
247CONFIG_FORCE_MAX_ZONEORDER=11 259CONFIG_FORCE_MAX_ZONEORDER=11
248CONFIG_PROC_DEVICETREE=y 260CONFIG_PROC_DEVICETREE=y
249# CONFIG_CMDLINE_BOOL is not set 261# CONFIG_CMDLINE_BOOL is not set
@@ -272,6 +284,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
272CONFIG_PCI_LEGACY=y 284CONFIG_PCI_LEGACY=y
273# CONFIG_PCI_DEBUG is not set 285# CONFIG_PCI_DEBUG is not set
274# CONFIG_PCI_STUB is not set 286# CONFIG_PCI_STUB is not set
287# CONFIG_PCI_IOV is not set
275# CONFIG_PCCARD is not set 288# CONFIG_PCCARD is not set
276# CONFIG_HOTPLUG_PCI is not set 289# CONFIG_HOTPLUG_PCI is not set
277# CONFIG_HAS_RAPIDIO is not set 290# CONFIG_HAS_RAPIDIO is not set
@@ -294,7 +307,6 @@ CONFIG_NET=y
294# 307#
295# Networking options 308# Networking options
296# 309#
297CONFIG_COMPAT_NET_DEV_OPS=y
298CONFIG_PACKET=y 310CONFIG_PACKET=y
299# CONFIG_PACKET_MMAP is not set 311# CONFIG_PACKET_MMAP is not set
300CONFIG_UNIX=y 312CONFIG_UNIX=y
@@ -350,6 +362,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
350# CONFIG_LAPB is not set 362# CONFIG_LAPB is not set
351# CONFIG_ECONET is not set 363# CONFIG_ECONET is not set
352# CONFIG_WAN_ROUTER is not set 364# CONFIG_WAN_ROUTER is not set
365# CONFIG_PHONET is not set
353# CONFIG_NET_SCHED is not set 366# CONFIG_NET_SCHED is not set
354# CONFIG_DCB is not set 367# CONFIG_DCB is not set
355 368
@@ -362,7 +375,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
362# CONFIG_IRDA is not set 375# CONFIG_IRDA is not set
363# CONFIG_BT is not set 376# CONFIG_BT is not set
364# CONFIG_AF_RXRPC is not set 377# CONFIG_AF_RXRPC is not set
365# CONFIG_PHONET is not set
366# CONFIG_WIRELESS is not set 378# CONFIG_WIRELESS is not set
367# CONFIG_WIMAX is not set 379# CONFIG_WIMAX is not set
368# CONFIG_RFKILL is not set 380# CONFIG_RFKILL is not set
@@ -388,12 +400,9 @@ CONFIG_MTD=y
388CONFIG_MTD_CONCAT=y 400CONFIG_MTD_CONCAT=y
389CONFIG_MTD_PARTITIONS=y 401CONFIG_MTD_PARTITIONS=y
390# CONFIG_MTD_TESTS is not set 402# CONFIG_MTD_TESTS is not set
391CONFIG_MTD_REDBOOT_PARTS=y 403# CONFIG_MTD_REDBOOT_PARTS is not set
392CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
393# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
394# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
395CONFIG_MTD_CMDLINE_PARTS=y 404CONFIG_MTD_CMDLINE_PARTS=y
396# CONFIG_MTD_OF_PARTS is not set 405CONFIG_MTD_OF_PARTS=y
397# CONFIG_MTD_AR7_PARTS is not set 406# CONFIG_MTD_AR7_PARTS is not set
398 407
399# 408#
@@ -447,6 +456,8 @@ CONFIG_MTD_PHYSMAP_OF=y
447# Self-contained MTD device drivers 456# Self-contained MTD device drivers
448# 457#
449# CONFIG_MTD_PMC551 is not set 458# CONFIG_MTD_PMC551 is not set
459# CONFIG_MTD_DATAFLASH is not set
460# CONFIG_MTD_M25P80 is not set
450# CONFIG_MTD_SLRAM is not set 461# CONFIG_MTD_SLRAM is not set
451# CONFIG_MTD_PHRAM is not set 462# CONFIG_MTD_PHRAM is not set
452# CONFIG_MTD_MTDRAM is not set 463# CONFIG_MTD_MTDRAM is not set
@@ -465,14 +476,23 @@ CONFIG_MTD_PHYSMAP_OF=y
465# LPDDR flash memory drivers 476# LPDDR flash memory drivers
466# 477#
467# CONFIG_MTD_LPDDR is not set 478# CONFIG_MTD_LPDDR is not set
468# CONFIG_MTD_QINFO_PROBE is not set
469 479
470# 480#
471# UBI - Unsorted block images 481# UBI - Unsorted block images
472# 482#
473# CONFIG_MTD_UBI is not set 483CONFIG_MTD_UBI=m
484CONFIG_MTD_UBI_WL_THRESHOLD=4096
485CONFIG_MTD_UBI_BEB_RESERVE=1
486# CONFIG_MTD_UBI_GLUEBI is not set
487
488#
489# UBI debugging options
490#
491# CONFIG_MTD_UBI_DEBUG is not set
474CONFIG_OF_DEVICE=y 492CONFIG_OF_DEVICE=y
493CONFIG_OF_GPIO=y
475CONFIG_OF_I2C=y 494CONFIG_OF_I2C=y
495CONFIG_OF_SPI=y
476# CONFIG_PARPORT is not set 496# CONFIG_PARPORT is not set
477CONFIG_BLK_DEV=y 497CONFIG_BLK_DEV=y
478# CONFIG_BLK_DEV_FD is not set 498# CONFIG_BLK_DEV_FD is not set
@@ -500,12 +520,14 @@ CONFIG_MISC_DEVICES=y
500# CONFIG_ICS932S401 is not set 520# CONFIG_ICS932S401 is not set
501# CONFIG_ENCLOSURE_SERVICES is not set 521# CONFIG_ENCLOSURE_SERVICES is not set
502# CONFIG_HP_ILO is not set 522# CONFIG_HP_ILO is not set
523# CONFIG_ISL29003 is not set
503# CONFIG_C2PORT is not set 524# CONFIG_C2PORT is not set
504 525
505# 526#
506# EEPROM support 527# EEPROM support
507# 528#
508CONFIG_EEPROM_AT24=y 529CONFIG_EEPROM_AT24=y
530# CONFIG_EEPROM_AT25 is not set
509# CONFIG_EEPROM_LEGACY is not set 531# CONFIG_EEPROM_LEGACY is not set
510# CONFIG_EEPROM_93CX6 is not set 532# CONFIG_EEPROM_93CX6 is not set
511CONFIG_HAVE_IDE=y 533CONFIG_HAVE_IDE=y
@@ -564,9 +586,11 @@ CONFIG_SCSI_LOWLEVEL=y
564# CONFIG_MEGARAID_NEWGEN is not set 586# CONFIG_MEGARAID_NEWGEN is not set
565# CONFIG_MEGARAID_LEGACY is not set 587# CONFIG_MEGARAID_LEGACY is not set
566# CONFIG_MEGARAID_SAS is not set 588# CONFIG_MEGARAID_SAS is not set
589# CONFIG_SCSI_MPT2SAS is not set
567# CONFIG_SCSI_HPTIOP is not set 590# CONFIG_SCSI_HPTIOP is not set
568# CONFIG_SCSI_BUSLOGIC is not set 591# CONFIG_SCSI_BUSLOGIC is not set
569# CONFIG_LIBFC is not set 592# CONFIG_LIBFC is not set
593# CONFIG_LIBFCOE is not set
570# CONFIG_FCOE is not set 594# CONFIG_FCOE is not set
571# CONFIG_SCSI_DMX3191D is not set 595# CONFIG_SCSI_DMX3191D is not set
572# CONFIG_SCSI_EATA is not set 596# CONFIG_SCSI_EATA is not set
@@ -589,6 +613,7 @@ CONFIG_SCSI_LOWLEVEL=y
589# CONFIG_SCSI_DEBUG is not set 613# CONFIG_SCSI_DEBUG is not set
590# CONFIG_SCSI_SRP is not set 614# CONFIG_SCSI_SRP is not set
591# CONFIG_SCSI_DH is not set 615# CONFIG_SCSI_DH is not set
616# CONFIG_SCSI_OSD_INITIATOR is not set
592CONFIG_ATA=y 617CONFIG_ATA=y
593# CONFIG_ATA_NONSTANDARD is not set 618# CONFIG_ATA_NONSTANDARD is not set
594CONFIG_SATA_PMP=y 619CONFIG_SATA_PMP=y
@@ -666,6 +691,7 @@ CONFIG_PATA_PLATFORM=y
666# CONFIG_I2O is not set 691# CONFIG_I2O is not set
667# CONFIG_MACINTOSH_DRIVERS is not set 692# CONFIG_MACINTOSH_DRIVERS is not set
668CONFIG_NETDEVICES=y 693CONFIG_NETDEVICES=y
694CONFIG_COMPAT_NET_DEV_OPS=y
669# CONFIG_DUMMY is not set 695# CONFIG_DUMMY is not set
670# CONFIG_BONDING is not set 696# CONFIG_BONDING is not set
671# CONFIG_MACVLAN is not set 697# CONFIG_MACVLAN is not set
@@ -699,6 +725,9 @@ CONFIG_NET_ETHERNET=y
699# CONFIG_SUNGEM is not set 725# CONFIG_SUNGEM is not set
700# CONFIG_CASSINI is not set 726# CONFIG_CASSINI is not set
701# CONFIG_NET_VENDOR_3COM is not set 727# CONFIG_NET_VENDOR_3COM is not set
728# CONFIG_ENC28J60 is not set
729# CONFIG_ETHOC is not set
730# CONFIG_DNET is not set
702# CONFIG_NET_TULIP is not set 731# CONFIG_NET_TULIP is not set
703# CONFIG_HP100 is not set 732# CONFIG_HP100 is not set
704# CONFIG_IBM_NEW_EMAC_ZMII is not set 733# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -722,7 +751,6 @@ CONFIG_FEC_MPC52xx_MDIO=y
722# 751#
723# CONFIG_WLAN_PRE80211 is not set 752# CONFIG_WLAN_PRE80211 is not set
724# CONFIG_WLAN_80211 is not set 753# CONFIG_WLAN_80211 is not set
725# CONFIG_IWLWIFI_LEDS is not set
726 754
727# 755#
728# Enable WiMAX (Networking options) to see the WiMAX drivers 756# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -802,6 +830,7 @@ CONFIG_DEVKMEM=y
802# 830#
803# Non-8250 serial port support 831# Non-8250 serial port support
804# 832#
833# CONFIG_SERIAL_MAX3100 is not set
805# CONFIG_SERIAL_UARTLITE is not set 834# CONFIG_SERIAL_UARTLITE is not set
806CONFIG_SERIAL_CORE=y 835CONFIG_SERIAL_CORE=y
807CONFIG_SERIAL_CORE_CONSOLE=y 836CONFIG_SERIAL_CORE_CONSOLE=y
@@ -854,6 +883,7 @@ CONFIG_I2C_ALGOBIT=y
854# 883#
855# I2C system bus drivers (mostly embedded / system-on-chip) 884# I2C system bus drivers (mostly embedded / system-on-chip)
856# 885#
886# CONFIG_I2C_GPIO is not set
857CONFIG_I2C_MPC=y 887CONFIG_I2C_MPC=y
858# CONFIG_I2C_OCORES is not set 888# CONFIG_I2C_OCORES is not set
859# CONFIG_I2C_SIMTEC is not set 889# CONFIG_I2C_SIMTEC is not set
@@ -883,22 +913,63 @@ CONFIG_I2C_MPC=y
883# CONFIG_SENSORS_PCF8574 is not set 913# CONFIG_SENSORS_PCF8574 is not set
884# CONFIG_PCF8575 is not set 914# CONFIG_PCF8575 is not set
885# CONFIG_SENSORS_PCA9539 is not set 915# CONFIG_SENSORS_PCA9539 is not set
886# CONFIG_SENSORS_PCF8591 is not set
887# CONFIG_SENSORS_MAX6875 is not set 916# CONFIG_SENSORS_MAX6875 is not set
888# CONFIG_SENSORS_TSL2550 is not set 917# CONFIG_SENSORS_TSL2550 is not set
889# CONFIG_I2C_DEBUG_CORE is not set 918# CONFIG_I2C_DEBUG_CORE is not set
890# CONFIG_I2C_DEBUG_ALGO is not set 919# CONFIG_I2C_DEBUG_ALGO is not set
891# CONFIG_I2C_DEBUG_BUS is not set 920# CONFIG_I2C_DEBUG_BUS is not set
892# CONFIG_I2C_DEBUG_CHIP is not set 921# CONFIG_I2C_DEBUG_CHIP is not set
893# CONFIG_SPI is not set 922CONFIG_SPI=y
923# CONFIG_SPI_DEBUG is not set
924CONFIG_SPI_MASTER=y
925
926#
927# SPI Master Controller Drivers
928#
929# CONFIG_SPI_BITBANG is not set
930# CONFIG_SPI_GPIO is not set
931CONFIG_SPI_MPC52xx_PSC=m
932
933#
934# SPI Protocol Masters
935#
936CONFIG_SPI_SPIDEV=m
937# CONFIG_SPI_TLE62X0 is not set
894CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 938CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
895# CONFIG_GPIOLIB is not set 939CONFIG_ARCH_REQUIRE_GPIOLIB=y
940CONFIG_GPIOLIB=y
941# CONFIG_DEBUG_GPIO is not set
942# CONFIG_GPIO_SYSFS is not set
943
944#
945# Memory mapped GPIO expanders:
946#
947# CONFIG_GPIO_XILINX is not set
948
949#
950# I2C GPIO expanders:
951#
952# CONFIG_GPIO_MAX732X is not set
953# CONFIG_GPIO_PCA953X is not set
954# CONFIG_GPIO_PCF857X is not set
955
956#
957# PCI GPIO expanders:
958#
959# CONFIG_GPIO_BT8XX is not set
960
961#
962# SPI GPIO expanders:
963#
964# CONFIG_GPIO_MAX7301 is not set
965# CONFIG_GPIO_MCP23S08 is not set
896# CONFIG_W1 is not set 966# CONFIG_W1 is not set
897# CONFIG_POWER_SUPPLY is not set 967# CONFIG_POWER_SUPPLY is not set
898CONFIG_HWMON=y 968CONFIG_HWMON=y
899# CONFIG_HWMON_VID is not set 969# CONFIG_HWMON_VID is not set
900# CONFIG_SENSORS_AD7414 is not set 970# CONFIG_SENSORS_AD7414 is not set
901# CONFIG_SENSORS_AD7418 is not set 971# CONFIG_SENSORS_AD7418 is not set
972# CONFIG_SENSORS_ADCXX is not set
902# CONFIG_SENSORS_ADM1021 is not set 973# CONFIG_SENSORS_ADM1021 is not set
903# CONFIG_SENSORS_ADM1025 is not set 974# CONFIG_SENSORS_ADM1025 is not set
904# CONFIG_SENSORS_ADM1026 is not set 975# CONFIG_SENSORS_ADM1026 is not set
@@ -915,10 +986,12 @@ CONFIG_HWMON=y
915# CONFIG_SENSORS_F71805F is not set 986# CONFIG_SENSORS_F71805F is not set
916# CONFIG_SENSORS_F71882FG is not set 987# CONFIG_SENSORS_F71882FG is not set
917# CONFIG_SENSORS_F75375S is not set 988# CONFIG_SENSORS_F75375S is not set
989# CONFIG_SENSORS_G760A is not set
918# CONFIG_SENSORS_GL518SM is not set 990# CONFIG_SENSORS_GL518SM is not set
919# CONFIG_SENSORS_GL520SM is not set 991# CONFIG_SENSORS_GL520SM is not set
920# CONFIG_SENSORS_IT87 is not set 992# CONFIG_SENSORS_IT87 is not set
921# CONFIG_SENSORS_LM63 is not set 993# CONFIG_SENSORS_LM63 is not set
994# CONFIG_SENSORS_LM70 is not set
922# CONFIG_SENSORS_LM75 is not set 995# CONFIG_SENSORS_LM75 is not set
923# CONFIG_SENSORS_LM77 is not set 996# CONFIG_SENSORS_LM77 is not set
924# CONFIG_SENSORS_LM78 is not set 997# CONFIG_SENSORS_LM78 is not set
@@ -929,11 +1002,16 @@ CONFIG_HWMON=y
929# CONFIG_SENSORS_LM90 is not set 1002# CONFIG_SENSORS_LM90 is not set
930# CONFIG_SENSORS_LM92 is not set 1003# CONFIG_SENSORS_LM92 is not set
931# CONFIG_SENSORS_LM93 is not set 1004# CONFIG_SENSORS_LM93 is not set
1005# CONFIG_SENSORS_LTC4215 is not set
932# CONFIG_SENSORS_LTC4245 is not set 1006# CONFIG_SENSORS_LTC4245 is not set
1007# CONFIG_SENSORS_LM95241 is not set
1008# CONFIG_SENSORS_MAX1111 is not set
933# CONFIG_SENSORS_MAX1619 is not set 1009# CONFIG_SENSORS_MAX1619 is not set
934# CONFIG_SENSORS_MAX6650 is not set 1010# CONFIG_SENSORS_MAX6650 is not set
935# CONFIG_SENSORS_PC87360 is not set 1011# CONFIG_SENSORS_PC87360 is not set
936# CONFIG_SENSORS_PC87427 is not set 1012# CONFIG_SENSORS_PC87427 is not set
1013# CONFIG_SENSORS_PCF8591 is not set
1014# CONFIG_SENSORS_SHT15 is not set
937# CONFIG_SENSORS_SIS5595 is not set 1015# CONFIG_SENSORS_SIS5595 is not set
938# CONFIG_SENSORS_DME1737 is not set 1016# CONFIG_SENSORS_DME1737 is not set
939# CONFIG_SENSORS_SMSC47M1 is not set 1017# CONFIG_SENSORS_SMSC47M1 is not set
@@ -952,6 +1030,7 @@ CONFIG_HWMON=y
952# CONFIG_SENSORS_W83L786NG is not set 1030# CONFIG_SENSORS_W83L786NG is not set
953# CONFIG_SENSORS_W83627HF is not set 1031# CONFIG_SENSORS_W83627HF is not set
954# CONFIG_SENSORS_W83627EHF is not set 1032# CONFIG_SENSORS_W83627EHF is not set
1033# CONFIG_SENSORS_LIS3_SPI is not set
955# CONFIG_HWMON_DEBUG_CHIP is not set 1034# CONFIG_HWMON_DEBUG_CHIP is not set
956# CONFIG_THERMAL is not set 1035# CONFIG_THERMAL is not set
957# CONFIG_THERMAL_HWMON is not set 1036# CONFIG_THERMAL_HWMON is not set
@@ -989,6 +1068,7 @@ CONFIG_SSB_POSSIBLE=y
989# CONFIG_MFD_CORE is not set 1068# CONFIG_MFD_CORE is not set
990# CONFIG_MFD_SM501 is not set 1069# CONFIG_MFD_SM501 is not set
991# CONFIG_HTC_PASIC3 is not set 1070# CONFIG_HTC_PASIC3 is not set
1071# CONFIG_TPS65010 is not set
992# CONFIG_TWL4030_CORE is not set 1072# CONFIG_TWL4030_CORE is not set
993# CONFIG_MFD_TMIO is not set 1073# CONFIG_MFD_TMIO is not set
994# CONFIG_PMIC_DA903X is not set 1074# CONFIG_PMIC_DA903X is not set
@@ -1084,9 +1164,13 @@ CONFIG_FB_RADEON_BACKLIGHT=y
1084# CONFIG_FB_VIRTUAL is not set 1164# CONFIG_FB_VIRTUAL is not set
1085# CONFIG_FB_METRONOME is not set 1165# CONFIG_FB_METRONOME is not set
1086# CONFIG_FB_MB862XX is not set 1166# CONFIG_FB_MB862XX is not set
1167# CONFIG_FB_BROADSHEET is not set
1087CONFIG_BACKLIGHT_LCD_SUPPORT=y 1168CONFIG_BACKLIGHT_LCD_SUPPORT=y
1088CONFIG_LCD_CLASS_DEVICE=m 1169CONFIG_LCD_CLASS_DEVICE=m
1170# CONFIG_LCD_LTV350QV is not set
1089# CONFIG_LCD_ILI9320 is not set 1171# CONFIG_LCD_ILI9320 is not set
1172# CONFIG_LCD_TDO24M is not set
1173# CONFIG_LCD_VGG2432A4 is not set
1090# CONFIG_LCD_PLATFORM is not set 1174# CONFIG_LCD_PLATFORM is not set
1091CONFIG_BACKLIGHT_CLASS_DEVICE=y 1175CONFIG_BACKLIGHT_CLASS_DEVICE=y
1092CONFIG_BACKLIGHT_GENERIC=y 1176CONFIG_BACKLIGHT_GENERIC=y
@@ -1127,15 +1211,17 @@ CONFIG_USB_HID=y
1127# 1211#
1128# Special HID drivers 1212# Special HID drivers
1129# 1213#
1130CONFIG_HID_COMPAT=y
1131CONFIG_HID_A4TECH=y 1214CONFIG_HID_A4TECH=y
1132# CONFIG_HID_APPLE is not set 1215# CONFIG_HID_APPLE is not set
1133CONFIG_HID_BELKIN=y 1216CONFIG_HID_BELKIN=y
1134CONFIG_HID_CHERRY=y 1217CONFIG_HID_CHERRY=y
1135# CONFIG_HID_CHICONY is not set 1218# CONFIG_HID_CHICONY is not set
1136CONFIG_HID_CYPRESS=y 1219CONFIG_HID_CYPRESS=y
1220# CONFIG_DRAGONRISE_FF is not set
1137CONFIG_HID_EZKEY=y 1221CONFIG_HID_EZKEY=y
1222# CONFIG_HID_KYE is not set
1138# CONFIG_HID_GYRATION is not set 1223# CONFIG_HID_GYRATION is not set
1224# CONFIG_HID_KENSINGTON is not set
1139# CONFIG_HID_LOGITECH is not set 1225# CONFIG_HID_LOGITECH is not set
1140# CONFIG_HID_MICROSOFT is not set 1226# CONFIG_HID_MICROSOFT is not set
1141# CONFIG_HID_MONTEREY is not set 1227# CONFIG_HID_MONTEREY is not set
@@ -1204,11 +1290,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1204# CONFIG_USB_TMC is not set 1290# CONFIG_USB_TMC is not set
1205 1291
1206# 1292#
1207# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1293# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1208# 1294#
1209 1295
1210# 1296#
1211# see USB_STORAGE Help for more information 1297# also be needed; see USB_STORAGE Help for more info
1212# 1298#
1213CONFIG_USB_STORAGE=y 1299CONFIG_USB_STORAGE=y
1214# CONFIG_USB_STORAGE_DEBUG is not set 1300# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1250,7 +1336,6 @@ CONFIG_USB_STORAGE=y
1250# CONFIG_USB_LED is not set 1336# CONFIG_USB_LED is not set
1251# CONFIG_USB_CYPRESS_CY7C63 is not set 1337# CONFIG_USB_CYPRESS_CY7C63 is not set
1252# CONFIG_USB_CYTHERM is not set 1338# CONFIG_USB_CYTHERM is not set
1253# CONFIG_USB_PHIDGET is not set
1254# CONFIG_USB_IDMOUSE is not set 1339# CONFIG_USB_IDMOUSE is not set
1255# CONFIG_USB_FTDI_ELAN is not set 1340# CONFIG_USB_FTDI_ELAN is not set
1256# CONFIG_USB_APPLEDISPLAY is not set 1341# CONFIG_USB_APPLEDISPLAY is not set
@@ -1265,6 +1350,8 @@ CONFIG_USB_STORAGE=y
1265# 1350#
1266# OTG and related infrastructure 1351# OTG and related infrastructure
1267# 1352#
1353# CONFIG_USB_GPIO_VBUS is not set
1354# CONFIG_NOP_USB_XCEIV is not set
1268# CONFIG_UWB is not set 1355# CONFIG_UWB is not set
1269# CONFIG_MMC is not set 1356# CONFIG_MMC is not set
1270# CONFIG_MEMSTICK is not set 1357# CONFIG_MEMSTICK is not set
@@ -1317,6 +1404,13 @@ CONFIG_RTC_DRV_DS1307=y
1317# 1404#
1318# SPI RTC drivers 1405# SPI RTC drivers
1319# 1406#
1407# CONFIG_RTC_DRV_M41T94 is not set
1408# CONFIG_RTC_DRV_DS1305 is not set
1409# CONFIG_RTC_DRV_DS1390 is not set
1410# CONFIG_RTC_DRV_MAX6902 is not set
1411# CONFIG_RTC_DRV_R9701 is not set
1412# CONFIG_RTC_DRV_RS5C348 is not set
1413# CONFIG_RTC_DRV_DS3234 is not set
1320 1414
1321# 1415#
1322# Platform RTC drivers 1416# Platform RTC drivers
@@ -1336,8 +1430,9 @@ CONFIG_RTC_DRV_DS1307=y
1336# 1430#
1337# on-CPU RTC drivers 1431# on-CPU RTC drivers
1338# 1432#
1339# CONFIG_RTC_DRV_PPC is not set 1433# CONFIG_RTC_DRV_GENERIC is not set
1340# CONFIG_DMADEVICES is not set 1434# CONFIG_DMADEVICES is not set
1435# CONFIG_AUXDISPLAY is not set
1341# CONFIG_UIO is not set 1436# CONFIG_UIO is not set
1342# CONFIG_STAGING is not set 1437# CONFIG_STAGING is not set
1343 1438
@@ -1348,6 +1443,7 @@ CONFIG_EXT2_FS=y
1348# CONFIG_EXT2_FS_XATTR is not set 1443# CONFIG_EXT2_FS_XATTR is not set
1349# CONFIG_EXT2_FS_XIP is not set 1444# CONFIG_EXT2_FS_XIP is not set
1350CONFIG_EXT3_FS=y 1445CONFIG_EXT3_FS=y
1446# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1351CONFIG_EXT3_FS_XATTR=y 1447CONFIG_EXT3_FS_XATTR=y
1352# CONFIG_EXT3_FS_POSIX_ACL is not set 1448# CONFIG_EXT3_FS_POSIX_ACL is not set
1353# CONFIG_EXT3_FS_SECURITY is not set 1449# CONFIG_EXT3_FS_SECURITY is not set
@@ -1370,6 +1466,11 @@ CONFIG_INOTIFY_USER=y
1370# CONFIG_FUSE_FS is not set 1466# CONFIG_FUSE_FS is not set
1371 1467
1372# 1468#
1469# Caches
1470#
1471# CONFIG_FSCACHE is not set
1472
1473#
1373# CD-ROM/DVD Filesystems 1474# CD-ROM/DVD Filesystems
1374# 1475#
1375# CONFIG_ISO9660_FS is not set 1476# CONFIG_ISO9660_FS is not set
@@ -1416,6 +1517,12 @@ CONFIG_JFFS2_ZLIB=y
1416# CONFIG_JFFS2_LZO is not set 1517# CONFIG_JFFS2_LZO is not set
1417CONFIG_JFFS2_RTIME=y 1518CONFIG_JFFS2_RTIME=y
1418# CONFIG_JFFS2_RUBIN is not set 1519# CONFIG_JFFS2_RUBIN is not set
1520CONFIG_UBIFS_FS=m
1521# CONFIG_UBIFS_FS_XATTR is not set
1522# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
1523CONFIG_UBIFS_FS_LZO=y
1524CONFIG_UBIFS_FS_ZLIB=y
1525# CONFIG_UBIFS_FS_DEBUG is not set
1419CONFIG_CRAMFS=y 1526CONFIG_CRAMFS=y
1420# CONFIG_SQUASHFS is not set 1527# CONFIG_SQUASHFS is not set
1421# CONFIG_VXFS_FS is not set 1528# CONFIG_VXFS_FS is not set
@@ -1426,6 +1533,7 @@ CONFIG_CRAMFS=y
1426# CONFIG_ROMFS_FS is not set 1533# CONFIG_ROMFS_FS is not set
1427# CONFIG_SYSV_FS is not set 1534# CONFIG_SYSV_FS is not set
1428# CONFIG_UFS_FS is not set 1535# CONFIG_UFS_FS is not set
1536# CONFIG_NILFS2_FS is not set
1429CONFIG_NETWORK_FILESYSTEMS=y 1537CONFIG_NETWORK_FILESYSTEMS=y
1430CONFIG_NFS_FS=y 1538CONFIG_NFS_FS=y
1431CONFIG_NFS_V3=y 1539CONFIG_NFS_V3=y
@@ -1438,7 +1546,6 @@ CONFIG_LOCKD_V4=y
1438CONFIG_NFS_COMMON=y 1546CONFIG_NFS_COMMON=y
1439CONFIG_SUNRPC=y 1547CONFIG_SUNRPC=y
1440CONFIG_SUNRPC_GSS=y 1548CONFIG_SUNRPC_GSS=y
1441# CONFIG_SUNRPC_REGISTER_V4 is not set
1442CONFIG_RPCSEC_GSS_KRB5=y 1549CONFIG_RPCSEC_GSS_KRB5=y
1443# CONFIG_RPCSEC_GSS_SPKM3 is not set 1550# CONFIG_RPCSEC_GSS_SPKM3 is not set
1444# CONFIG_SMB_FS is not set 1551# CONFIG_SMB_FS is not set
@@ -1493,6 +1600,7 @@ CONFIG_NLS_ISO8859_1=y
1493# CONFIG_NLS_KOI8_U is not set 1600# CONFIG_NLS_KOI8_U is not set
1494# CONFIG_NLS_UTF8 is not set 1601# CONFIG_NLS_UTF8 is not set
1495# CONFIG_DLM is not set 1602# CONFIG_DLM is not set
1603# CONFIG_BINARY_PRINTF is not set
1496 1604
1497# 1605#
1498# Library routines 1606# Library routines
@@ -1500,7 +1608,7 @@ CONFIG_NLS_ISO8859_1=y
1500CONFIG_BITREVERSE=y 1608CONFIG_BITREVERSE=y
1501CONFIG_GENERIC_FIND_LAST_BIT=y 1609CONFIG_GENERIC_FIND_LAST_BIT=y
1502# CONFIG_CRC_CCITT is not set 1610# CONFIG_CRC_CCITT is not set
1503# CONFIG_CRC16 is not set 1611CONFIG_CRC16=m
1504# CONFIG_CRC_T10DIF is not set 1612# CONFIG_CRC_T10DIF is not set
1505# CONFIG_CRC_ITU_T is not set 1613# CONFIG_CRC_ITU_T is not set
1506CONFIG_CRC32=y 1614CONFIG_CRC32=y
@@ -1508,11 +1616,14 @@ CONFIG_CRC32=y
1508# CONFIG_LIBCRC32C is not set 1616# CONFIG_LIBCRC32C is not set
1509CONFIG_ZLIB_INFLATE=y 1617CONFIG_ZLIB_INFLATE=y
1510CONFIG_ZLIB_DEFLATE=y 1618CONFIG_ZLIB_DEFLATE=y
1511CONFIG_PLIST=y 1619CONFIG_LZO_COMPRESS=m
1620CONFIG_LZO_DECOMPRESS=m
1621CONFIG_DECOMPRESS_GZIP=y
1512CONFIG_HAS_IOMEM=y 1622CONFIG_HAS_IOMEM=y
1513CONFIG_HAS_IOPORT=y 1623CONFIG_HAS_IOPORT=y
1514CONFIG_HAS_DMA=y 1624CONFIG_HAS_DMA=y
1515CONFIG_HAVE_LMB=y 1625CONFIG_HAVE_LMB=y
1626CONFIG_NLATTR=y
1516 1627
1517# 1628#
1518# Kernel hacking 1629# Kernel hacking
@@ -1530,6 +1641,9 @@ CONFIG_DEBUG_KERNEL=y
1530CONFIG_DETECT_SOFTLOCKUP=y 1641CONFIG_DETECT_SOFTLOCKUP=y
1531# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1642# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1532CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1643CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1644CONFIG_DETECT_HUNG_TASK=y
1645# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1646CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1533CONFIG_SCHED_DEBUG=y 1647CONFIG_SCHED_DEBUG=y
1534# CONFIG_SCHEDSTATS is not set 1648# CONFIG_SCHEDSTATS is not set
1535# CONFIG_TIMER_STATS is not set 1649# CONFIG_TIMER_STATS is not set
@@ -1558,9 +1672,12 @@ CONFIG_DEBUG_INFO=y
1558# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1672# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1559# CONFIG_FAULT_INJECTION is not set 1673# CONFIG_FAULT_INJECTION is not set
1560# CONFIG_LATENCYTOP is not set 1674# CONFIG_LATENCYTOP is not set
1675# CONFIG_DEBUG_PAGEALLOC is not set
1561CONFIG_HAVE_FUNCTION_TRACER=y 1676CONFIG_HAVE_FUNCTION_TRACER=y
1677CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1562CONFIG_HAVE_DYNAMIC_FTRACE=y 1678CONFIG_HAVE_DYNAMIC_FTRACE=y
1563CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1679CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1680CONFIG_TRACING_SUPPORT=y
1564 1681
1565# 1682#
1566# Tracers 1683# Tracers
@@ -1568,17 +1685,19 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1568# CONFIG_FUNCTION_TRACER is not set 1685# CONFIG_FUNCTION_TRACER is not set
1569# CONFIG_SCHED_TRACER is not set 1686# CONFIG_SCHED_TRACER is not set
1570# CONFIG_CONTEXT_SWITCH_TRACER is not set 1687# CONFIG_CONTEXT_SWITCH_TRACER is not set
1688# CONFIG_EVENT_TRACER is not set
1571# CONFIG_BOOT_TRACER is not set 1689# CONFIG_BOOT_TRACER is not set
1572# CONFIG_TRACE_BRANCH_PROFILING is not set 1690# CONFIG_TRACE_BRANCH_PROFILING is not set
1573# CONFIG_STACK_TRACER is not set 1691# CONFIG_STACK_TRACER is not set
1574# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1692# CONFIG_KMEMTRACE is not set
1693# CONFIG_WORKQUEUE_TRACER is not set
1694# CONFIG_BLK_DEV_IO_TRACE is not set
1575# CONFIG_SAMPLES is not set 1695# CONFIG_SAMPLES is not set
1576CONFIG_HAVE_ARCH_KGDB=y 1696CONFIG_HAVE_ARCH_KGDB=y
1577# CONFIG_KGDB is not set 1697# CONFIG_KGDB is not set
1578CONFIG_PRINT_STACK_DEPTH=64 1698CONFIG_PRINT_STACK_DEPTH=64
1579# CONFIG_DEBUG_STACKOVERFLOW is not set 1699# CONFIG_DEBUG_STACKOVERFLOW is not set
1580# CONFIG_DEBUG_STACK_USAGE is not set 1700# CONFIG_DEBUG_STACK_USAGE is not set
1581# CONFIG_DEBUG_PAGEALLOC is not set
1582# CONFIG_CODE_PATCHING_SELFTEST is not set 1701# CONFIG_CODE_PATCHING_SELFTEST is not set
1583# CONFIG_FTR_FIXUP_SELFTEST is not set 1702# CONFIG_FTR_FIXUP_SELFTEST is not set
1584# CONFIG_MSI_BITMAP_SELFTEST is not set 1703# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1609,10 +1728,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1609CONFIG_CRYPTO_HASH=y 1728CONFIG_CRYPTO_HASH=y
1610CONFIG_CRYPTO_HASH2=y 1729CONFIG_CRYPTO_HASH2=y
1611CONFIG_CRYPTO_RNG2=y 1730CONFIG_CRYPTO_RNG2=y
1731CONFIG_CRYPTO_PCOMP=y
1612CONFIG_CRYPTO_MANAGER=y 1732CONFIG_CRYPTO_MANAGER=y
1613CONFIG_CRYPTO_MANAGER2=y 1733CONFIG_CRYPTO_MANAGER2=y
1614# CONFIG_CRYPTO_GF128MUL is not set 1734# CONFIG_CRYPTO_GF128MUL is not set
1615# CONFIG_CRYPTO_NULL is not set 1735# CONFIG_CRYPTO_NULL is not set
1736CONFIG_CRYPTO_WORKQUEUE=y
1616# CONFIG_CRYPTO_CRYPTD is not set 1737# CONFIG_CRYPTO_CRYPTD is not set
1617# CONFIG_CRYPTO_AUTHENC is not set 1738# CONFIG_CRYPTO_AUTHENC is not set
1618# CONFIG_CRYPTO_TEST is not set 1739# CONFIG_CRYPTO_TEST is not set
@@ -1680,8 +1801,9 @@ CONFIG_CRYPTO_DES=y
1680# 1801#
1681# Compression 1802# Compression
1682# 1803#
1683# CONFIG_CRYPTO_DEFLATE is not set 1804CONFIG_CRYPTO_DEFLATE=m
1684# CONFIG_CRYPTO_LZO is not set 1805# CONFIG_CRYPTO_ZLIB is not set
1806CONFIG_CRYPTO_LZO=m
1685 1807
1686# 1808#
1687# Random Number Generation 1809# Random Number Generation
diff --git a/arch/powerpc/configs/mpc85xx_defconfig b/arch/powerpc/configs/mpc85xx_defconfig
index fb08819d7cc4..c162724fed4f 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.29-rc2 3# Linux kernel version: 2.6.30-rc2
4# Mon Jan 26 15:35:37 2009 4# Tue Apr 21 15:40:23 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_BOOK3E_MMU=y
25# CONFIG_PPC_MM_SLICES is not set 26# CONFIG_PPC_MM_SLICES is not set
26# CONFIG_SMP is not set 27# CONFIG_SMP is not set
27CONFIG_PPC32=y 28CONFIG_PPC32=y
@@ -59,6 +60,7 @@ CONFIG_GENERIC_BUG=y
59CONFIG_DEFAULT_UIMAGE=y 60CONFIG_DEFAULT_UIMAGE=y
60# CONFIG_PPC_DCR_NATIVE is not set 61# CONFIG_PPC_DCR_NATIVE is not set
61# CONFIG_PPC_DCR_MMIO is not set 62# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
62CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 64CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
63 65
64# 66#
@@ -73,11 +75,21 @@ CONFIG_SWAP=y
73CONFIG_SYSVIPC=y 75CONFIG_SYSVIPC=y
74CONFIG_SYSVIPC_SYSCTL=y 76CONFIG_SYSVIPC_SYSCTL=y
75CONFIG_POSIX_MQUEUE=y 77CONFIG_POSIX_MQUEUE=y
78CONFIG_POSIX_MQUEUE_SYSCTL=y
76CONFIG_BSD_PROCESS_ACCT=y 79CONFIG_BSD_PROCESS_ACCT=y
77# CONFIG_BSD_PROCESS_ACCT_V3 is not set 80# CONFIG_BSD_PROCESS_ACCT_V3 is not set
78# CONFIG_TASKSTATS is not set 81# CONFIG_TASKSTATS is not set
79CONFIG_AUDIT=y 82CONFIG_AUDIT=y
80# CONFIG_AUDITSYSCALL is not set 83# CONFIG_AUDITSYSCALL is not set
84
85#
86# RCU Subsystem
87#
88CONFIG_CLASSIC_RCU=y
89# CONFIG_TREE_RCU is not set
90# CONFIG_PREEMPT_RCU is not set
91# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
81CONFIG_IKCONFIG=y 93CONFIG_IKCONFIG=y
82CONFIG_IKCONFIG_PROC=y 94CONFIG_IKCONFIG_PROC=y
83CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
@@ -93,22 +105,24 @@ CONFIG_SYSFS_DEPRECATED_V2=y
93# CONFIG_NAMESPACES is not set 105# CONFIG_NAMESPACES is not set
94CONFIG_BLK_DEV_INITRD=y 106CONFIG_BLK_DEV_INITRD=y
95CONFIG_INITRAMFS_SOURCE="" 107CONFIG_INITRAMFS_SOURCE=""
108CONFIG_RD_GZIP=y
109# CONFIG_RD_BZIP2 is not set
110# CONFIG_RD_LZMA is not set
96# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 111# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
97CONFIG_SYSCTL=y 112CONFIG_SYSCTL=y
113CONFIG_ANON_INODES=y
98CONFIG_EMBEDDED=y 114CONFIG_EMBEDDED=y
99CONFIG_SYSCTL_SYSCALL=y 115CONFIG_SYSCTL_SYSCALL=y
100CONFIG_KALLSYMS=y 116CONFIG_KALLSYMS=y
101CONFIG_KALLSYMS_ALL=y 117CONFIG_KALLSYMS_ALL=y
102CONFIG_KALLSYMS_STRIP_GENERATED=y
103CONFIG_KALLSYMS_EXTRA_PASS=y 118CONFIG_KALLSYMS_EXTRA_PASS=y
119# CONFIG_STRIP_ASM_SYMS is not set
104CONFIG_HOTPLUG=y 120CONFIG_HOTPLUG=y
105CONFIG_PRINTK=y 121CONFIG_PRINTK=y
106CONFIG_BUG=y 122CONFIG_BUG=y
107CONFIG_ELF_CORE=y 123CONFIG_ELF_CORE=y
108CONFIG_COMPAT_BRK=y
109CONFIG_BASE_FULL=y 124CONFIG_BASE_FULL=y
110CONFIG_FUTEX=y 125CONFIG_FUTEX=y
111CONFIG_ANON_INODES=y
112CONFIG_EPOLL=y 126CONFIG_EPOLL=y
113CONFIG_SIGNALFD=y 127CONFIG_SIGNALFD=y
114CONFIG_TIMERFD=y 128CONFIG_TIMERFD=y
@@ -118,10 +132,12 @@ CONFIG_AIO=y
118CONFIG_VM_EVENT_COUNTERS=y 132CONFIG_VM_EVENT_COUNTERS=y
119CONFIG_PCI_QUIRKS=y 133CONFIG_PCI_QUIRKS=y
120CONFIG_SLUB_DEBUG=y 134CONFIG_SLUB_DEBUG=y
135CONFIG_COMPAT_BRK=y
121# CONFIG_SLAB is not set 136# CONFIG_SLAB is not set
122CONFIG_SLUB=y 137CONFIG_SLUB=y
123# CONFIG_SLOB is not set 138# CONFIG_SLOB is not set
124# CONFIG_PROFILING is not set 139# CONFIG_PROFILING is not set
140# CONFIG_MARKERS is not set
125CONFIG_HAVE_OPROFILE=y 141CONFIG_HAVE_OPROFILE=y
126# CONFIG_KPROBES is not set 142# CONFIG_KPROBES is not set
127CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 143CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -130,6 +146,7 @@ CONFIG_HAVE_KPROBES=y
130CONFIG_HAVE_KRETPROBES=y 146CONFIG_HAVE_KRETPROBES=y
131CONFIG_HAVE_ARCH_TRACEHOOK=y 147CONFIG_HAVE_ARCH_TRACEHOOK=y
132CONFIG_HAVE_CLK=y 148CONFIG_HAVE_CLK=y
149# CONFIG_SLOW_WORK is not set
133# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 150# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
134CONFIG_SLABINFO=y 151CONFIG_SLABINFO=y
135CONFIG_RT_MUTEXES=y 152CONFIG_RT_MUTEXES=y
@@ -142,7 +159,6 @@ CONFIG_MODVERSIONS=y
142# CONFIG_MODULE_SRCVERSION_ALL is not set 159# CONFIG_MODULE_SRCVERSION_ALL is not set
143CONFIG_BLOCK=y 160CONFIG_BLOCK=y
144CONFIG_LBD=y 161CONFIG_LBD=y
145# CONFIG_BLK_DEV_IO_TRACE is not set
146# CONFIG_BLK_DEV_BSG is not set 162# CONFIG_BLK_DEV_BSG is not set
147# CONFIG_BLK_DEV_INTEGRITY is not set 163# CONFIG_BLK_DEV_INTEGRITY is not set
148 164
@@ -158,11 +174,6 @@ CONFIG_IOSCHED_CFQ=y
158CONFIG_DEFAULT_CFQ=y 174CONFIG_DEFAULT_CFQ=y
159# CONFIG_DEFAULT_NOOP is not set 175# CONFIG_DEFAULT_NOOP is not set
160CONFIG_DEFAULT_IOSCHED="cfq" 176CONFIG_DEFAULT_IOSCHED="cfq"
161CONFIG_CLASSIC_RCU=y
162# CONFIG_TREE_RCU is not set
163# CONFIG_PREEMPT_RCU is not set
164# CONFIG_TREE_RCU_TRACE is not set
165# CONFIG_PREEMPT_RCU_TRACE is not set
166# CONFIG_FREEZER is not set 177# CONFIG_FREEZER is not set
167 178
168# 179#
@@ -178,8 +189,9 @@ CONFIG_MPC85xx_CDS=y
178CONFIG_MPC85xx_MDS=y 189CONFIG_MPC85xx_MDS=y
179CONFIG_MPC8536_DS=y 190CONFIG_MPC8536_DS=y
180CONFIG_MPC85xx_DS=y 191CONFIG_MPC85xx_DS=y
192CONFIG_SOCRATES=y
181CONFIG_KSI8560=y 193CONFIG_KSI8560=y
182# CONFIG_STX_GP3 is not set 194CONFIG_STX_GP3=y
183CONFIG_TQM8540=y 195CONFIG_TQM8540=y
184CONFIG_TQM8541=y 196CONFIG_TQM8541=y
185CONFIG_TQM8548=y 197CONFIG_TQM8548=y
@@ -200,11 +212,11 @@ CONFIG_PPC_I8259=y
200# CONFIG_GENERIC_IOMAP is not set 212# CONFIG_GENERIC_IOMAP is not set
201# CONFIG_CPU_FREQ is not set 213# CONFIG_CPU_FREQ is not set
202CONFIG_QUICC_ENGINE=y 214CONFIG_QUICC_ENGINE=y
203# CONFIG_QE_GPIO is not set 215CONFIG_QE_GPIO=y
204CONFIG_CPM2=y 216CONFIG_CPM2=y
205CONFIG_FSL_ULI1575=y 217CONFIG_FSL_ULI1575=y
206CONFIG_CPM=y 218CONFIG_CPM=y
207# CONFIG_MPC8xxx_GPIO is not set 219CONFIG_MPC8xxx_GPIO=y
208# CONFIG_SIMPLE_GPIO is not set 220# CONFIG_SIMPLE_GPIO is not set
209 221
210# 222#
@@ -249,9 +261,12 @@ CONFIG_ZONE_DMA_FLAG=1
249CONFIG_BOUNCE=y 261CONFIG_BOUNCE=y
250CONFIG_VIRT_TO_BUS=y 262CONFIG_VIRT_TO_BUS=y
251CONFIG_UNEVICTABLE_LRU=y 263CONFIG_UNEVICTABLE_LRU=y
264CONFIG_HAVE_MLOCK=y
265CONFIG_HAVE_MLOCKED_PAGE_BIT=y
252CONFIG_PPC_4K_PAGES=y 266CONFIG_PPC_4K_PAGES=y
253# CONFIG_PPC_16K_PAGES is not set 267# CONFIG_PPC_16K_PAGES is not set
254# CONFIG_PPC_64K_PAGES is not set 268# CONFIG_PPC_64K_PAGES is not set
269# CONFIG_PPC_256K_PAGES is not set
255CONFIG_FORCE_MAX_ZONEORDER=11 270CONFIG_FORCE_MAX_ZONEORDER=11
256CONFIG_PROC_DEVICETREE=y 271CONFIG_PROC_DEVICETREE=y
257# CONFIG_CMDLINE_BOOL is not set 272# CONFIG_CMDLINE_BOOL is not set
@@ -278,6 +293,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
278# CONFIG_PCI_LEGACY is not set 293# CONFIG_PCI_LEGACY is not set
279# CONFIG_PCI_DEBUG is not set 294# CONFIG_PCI_DEBUG is not set
280# CONFIG_PCI_STUB is not set 295# CONFIG_PCI_STUB is not set
296# CONFIG_PCI_IOV is not set
281# CONFIG_PCCARD is not set 297# CONFIG_PCCARD is not set
282# CONFIG_HOTPLUG_PCI is not set 298# CONFIG_HOTPLUG_PCI is not set
283# CONFIG_HAS_RAPIDIO is not set 299# CONFIG_HAS_RAPIDIO is not set
@@ -291,17 +307,17 @@ CONFIG_ARCH_SUPPORTS_MSI=y
291# Default settings for advanced configuration options are used 307# Default settings for advanced configuration options are used
292# 308#
293CONFIG_LOWMEM_SIZE=0x30000000 309CONFIG_LOWMEM_SIZE=0x30000000
310CONFIG_LOWMEM_CAM_NUM=3
294CONFIG_PAGE_OFFSET=0xc0000000 311CONFIG_PAGE_OFFSET=0xc0000000
295CONFIG_KERNEL_START=0xc0000000 312CONFIG_KERNEL_START=0xc0000000
296CONFIG_PHYSICAL_START=0x00000000 313CONFIG_PHYSICAL_START=0x00000000
297CONFIG_PHYSICAL_ALIGN=0x10000000 314CONFIG_PHYSICAL_ALIGN=0x04000000
298CONFIG_TASK_SIZE=0xc0000000 315CONFIG_TASK_SIZE=0xc0000000
299CONFIG_NET=y 316CONFIG_NET=y
300 317
301# 318#
302# Networking options 319# Networking options
303# 320#
304CONFIG_COMPAT_NET_DEV_OPS=y
305CONFIG_PACKET=y 321CONFIG_PACKET=y
306# CONFIG_PACKET_MMAP is not set 322# CONFIG_PACKET_MMAP is not set
307CONFIG_UNIX=y 323CONFIG_UNIX=y
@@ -389,6 +405,7 @@ CONFIG_SCTP_HMAC_MD5=y
389# CONFIG_LAPB is not set 405# CONFIG_LAPB is not set
390# CONFIG_ECONET is not set 406# CONFIG_ECONET is not set
391# CONFIG_WAN_ROUTER is not set 407# CONFIG_WAN_ROUTER is not set
408# CONFIG_PHONET is not set
392# CONFIG_NET_SCHED is not set 409# CONFIG_NET_SCHED is not set
393# CONFIG_DCB is not set 410# CONFIG_DCB is not set
394 411
@@ -401,7 +418,6 @@ CONFIG_SCTP_HMAC_MD5=y
401# CONFIG_IRDA is not set 418# CONFIG_IRDA is not set
402# CONFIG_BT is not set 419# CONFIG_BT is not set
403# CONFIG_AF_RXRPC is not set 420# CONFIG_AF_RXRPC is not set
404# CONFIG_PHONET is not set
405CONFIG_FIB_RULES=y 421CONFIG_FIB_RULES=y
406CONFIG_WIRELESS=y 422CONFIG_WIRELESS=y
407# CONFIG_CFG80211 is not set 423# CONFIG_CFG80211 is not set
@@ -456,13 +472,20 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
456# CONFIG_BLK_DEV_HD is not set 472# CONFIG_BLK_DEV_HD is not set
457CONFIG_MISC_DEVICES=y 473CONFIG_MISC_DEVICES=y
458# CONFIG_PHANTOM is not set 474# CONFIG_PHANTOM is not set
459# CONFIG_EEPROM_93CX6 is not set
460# CONFIG_SGI_IOC4 is not set 475# CONFIG_SGI_IOC4 is not set
461# CONFIG_TIFM_CORE is not set 476# CONFIG_TIFM_CORE is not set
462# CONFIG_ICS932S401 is not set 477# CONFIG_ICS932S401 is not set
463# CONFIG_ENCLOSURE_SERVICES is not set 478# CONFIG_ENCLOSURE_SERVICES is not set
464# CONFIG_HP_ILO is not set 479# CONFIG_HP_ILO is not set
480# CONFIG_ISL29003 is not set
465# CONFIG_C2PORT is not set 481# CONFIG_C2PORT is not set
482
483#
484# EEPROM support
485#
486# CONFIG_EEPROM_AT24 is not set
487CONFIG_EEPROM_LEGACY=y
488# CONFIG_EEPROM_93CX6 is not set
466CONFIG_HAVE_IDE=y 489CONFIG_HAVE_IDE=y
467# CONFIG_IDE is not set 490# CONFIG_IDE is not set
468 491
@@ -521,9 +544,11 @@ CONFIG_SCSI_LOWLEVEL=y
521# CONFIG_MEGARAID_NEWGEN is not set 544# CONFIG_MEGARAID_NEWGEN is not set
522# CONFIG_MEGARAID_LEGACY is not set 545# CONFIG_MEGARAID_LEGACY is not set
523# CONFIG_MEGARAID_SAS is not set 546# CONFIG_MEGARAID_SAS is not set
547# CONFIG_SCSI_MPT2SAS is not set
524# CONFIG_SCSI_HPTIOP is not set 548# CONFIG_SCSI_HPTIOP is not set
525# CONFIG_SCSI_BUSLOGIC is not set 549# CONFIG_SCSI_BUSLOGIC is not set
526# CONFIG_LIBFC is not set 550# CONFIG_LIBFC is not set
551# CONFIG_LIBFCOE is not set
527# CONFIG_FCOE is not set 552# CONFIG_FCOE is not set
528# CONFIG_SCSI_DMX3191D is not set 553# CONFIG_SCSI_DMX3191D is not set
529# CONFIG_SCSI_EATA is not set 554# CONFIG_SCSI_EATA is not set
@@ -546,6 +571,7 @@ CONFIG_SCSI_LOWLEVEL=y
546# CONFIG_SCSI_DEBUG is not set 571# CONFIG_SCSI_DEBUG is not set
547# CONFIG_SCSI_SRP is not set 572# CONFIG_SCSI_SRP is not set
548# CONFIG_SCSI_DH is not set 573# CONFIG_SCSI_DH is not set
574# CONFIG_SCSI_OSD_INITIATOR is not set
549CONFIG_ATA=y 575CONFIG_ATA=y
550# CONFIG_ATA_NONSTANDARD is not set 576# CONFIG_ATA_NONSTANDARD is not set
551CONFIG_SATA_PMP=y 577CONFIG_SATA_PMP=y
@@ -622,6 +648,7 @@ CONFIG_PATA_ALI=y
622# CONFIG_I2O is not set 648# CONFIG_I2O is not set
623# CONFIG_MACINTOSH_DRIVERS is not set 649# CONFIG_MACINTOSH_DRIVERS is not set
624CONFIG_NETDEVICES=y 650CONFIG_NETDEVICES=y
651CONFIG_COMPAT_NET_DEV_OPS=y
625CONFIG_DUMMY=y 652CONFIG_DUMMY=y
626# CONFIG_BONDING is not set 653# CONFIG_BONDING is not set
627# CONFIG_MACVLAN is not set 654# CONFIG_MACVLAN is not set
@@ -634,11 +661,11 @@ CONFIG_PHYLIB=y
634# 661#
635# MII PHY device drivers 662# MII PHY device drivers
636# 663#
637# CONFIG_MARVELL_PHY is not set 664CONFIG_MARVELL_PHY=y
638# CONFIG_DAVICOM_PHY is not set 665CONFIG_DAVICOM_PHY=y
639# CONFIG_QSEMI_PHY is not set 666# CONFIG_QSEMI_PHY is not set
640# CONFIG_LXT_PHY is not set 667# CONFIG_LXT_PHY is not set
641# CONFIG_CICADA_PHY is not set 668CONFIG_CICADA_PHY=y
642CONFIG_VITESSE_PHY=y 669CONFIG_VITESSE_PHY=y
643# CONFIG_SMSC_PHY is not set 670# CONFIG_SMSC_PHY is not set
644# CONFIG_BROADCOM_PHY is not set 671# CONFIG_BROADCOM_PHY is not set
@@ -647,7 +674,7 @@ CONFIG_VITESSE_PHY=y
647# CONFIG_NATIONAL_PHY is not set 674# CONFIG_NATIONAL_PHY is not set
648# CONFIG_STE10XP is not set 675# CONFIG_STE10XP is not set
649# CONFIG_LSI_ET1011C_PHY is not set 676# CONFIG_LSI_ET1011C_PHY is not set
650# CONFIG_FIXED_PHY is not set 677CONFIG_FIXED_PHY=y
651# CONFIG_MDIO_BITBANG is not set 678# CONFIG_MDIO_BITBANG is not set
652CONFIG_NET_ETHERNET=y 679CONFIG_NET_ETHERNET=y
653CONFIG_MII=y 680CONFIG_MII=y
@@ -655,6 +682,8 @@ CONFIG_MII=y
655# CONFIG_SUNGEM is not set 682# CONFIG_SUNGEM is not set
656# CONFIG_CASSINI is not set 683# CONFIG_CASSINI is not set
657# CONFIG_NET_VENDOR_3COM is not set 684# CONFIG_NET_VENDOR_3COM is not set
685# CONFIG_ETHOC is not set
686# CONFIG_DNET is not set
658# CONFIG_NET_TULIP is not set 687# CONFIG_NET_TULIP is not set
659# CONFIG_HP100 is not set 688# CONFIG_HP100 is not set
660# CONFIG_IBM_NEW_EMAC_ZMII is not set 689# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -667,7 +696,10 @@ CONFIG_MII=y
667# CONFIG_NET_PCI is not set 696# CONFIG_NET_PCI is not set
668# CONFIG_B44 is not set 697# CONFIG_B44 is not set
669# CONFIG_ATL2 is not set 698# CONFIG_ATL2 is not set
670# CONFIG_FS_ENET is not set 699CONFIG_FS_ENET=y
700CONFIG_FS_ENET_HAS_SCC=y
701CONFIG_FS_ENET_HAS_FCC=y
702# CONFIG_FS_ENET_MDIO_FCC is not set
671CONFIG_NETDEV_1000=y 703CONFIG_NETDEV_1000=y
672# CONFIG_ACENIC is not set 704# CONFIG_ACENIC is not set
673# CONFIG_DL2K is not set 705# CONFIG_DL2K is not set
@@ -675,6 +707,7 @@ CONFIG_NETDEV_1000=y
675# CONFIG_E1000E is not set 707# CONFIG_E1000E is not set
676# CONFIG_IP1000 is not set 708# CONFIG_IP1000 is not set
677# CONFIG_IGB is not set 709# CONFIG_IGB is not set
710# CONFIG_IGBVF is not set
678# CONFIG_NS83820 is not set 711# CONFIG_NS83820 is not set
679# CONFIG_HAMACHI is not set 712# CONFIG_HAMACHI is not set
680# CONFIG_YELLOWFIN is not set 713# CONFIG_YELLOWFIN is not set
@@ -685,11 +718,15 @@ CONFIG_NETDEV_1000=y
685# CONFIG_VIA_VELOCITY is not set 718# CONFIG_VIA_VELOCITY is not set
686# CONFIG_TIGON3 is not set 719# CONFIG_TIGON3 is not set
687# CONFIG_BNX2 is not set 720# CONFIG_BNX2 is not set
721CONFIG_FSL_PQ_MDIO=y
688CONFIG_GIANFAR=y 722CONFIG_GIANFAR=y
689# CONFIG_UCC_GETH is not set 723CONFIG_UCC_GETH=y
724# CONFIG_UGETH_MAGIC_PACKET is not set
725# CONFIG_UGETH_TX_ON_DEMAND is not set
690# CONFIG_QLA3XXX is not set 726# CONFIG_QLA3XXX is not set
691# CONFIG_ATL1 is not set 727# CONFIG_ATL1 is not set
692# CONFIG_ATL1E is not set 728# CONFIG_ATL1E is not set
729# CONFIG_ATL1C is not set
693# CONFIG_JME is not set 730# CONFIG_JME is not set
694CONFIG_NETDEV_10000=y 731CONFIG_NETDEV_10000=y
695# CONFIG_CHELSIO_T1 is not set 732# CONFIG_CHELSIO_T1 is not set
@@ -699,6 +736,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
699# CONFIG_IXGBE is not set 736# CONFIG_IXGBE is not set
700# CONFIG_IXGB is not set 737# CONFIG_IXGB is not set
701# CONFIG_S2IO is not set 738# CONFIG_S2IO is not set
739# CONFIG_VXGE is not set
702# CONFIG_MYRI10GE is not set 740# CONFIG_MYRI10GE is not set
703# CONFIG_NETXEN_NIC is not set 741# CONFIG_NETXEN_NIC is not set
704# CONFIG_NIU is not set 742# CONFIG_NIU is not set
@@ -708,6 +746,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
708# CONFIG_BNX2X is not set 746# CONFIG_BNX2X is not set
709# CONFIG_QLGE is not set 747# CONFIG_QLGE is not set
710# CONFIG_SFC is not set 748# CONFIG_SFC is not set
749# CONFIG_BE2NET is not set
711# CONFIG_TR is not set 750# CONFIG_TR is not set
712 751
713# 752#
@@ -715,7 +754,6 @@ CONFIG_CHELSIO_T3_DEPENDS=y
715# 754#
716# CONFIG_WLAN_PRE80211 is not set 755# CONFIG_WLAN_PRE80211 is not set
717# CONFIG_WLAN_80211 is not set 756# CONFIG_WLAN_80211 is not set
718# CONFIG_IWLWIFI_LEDS is not set
719 757
720# 758#
721# Enable WiMAX (Networking options) to see the WiMAX drivers 759# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -813,14 +851,15 @@ CONFIG_SERIAL_CORE_CONSOLE=y
813# CONFIG_SERIAL_CPM is not set 851# CONFIG_SERIAL_CPM is not set
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
816# CONFIG_SERIAL_QE is not set 854CONFIG_SERIAL_QE=m
817CONFIG_UNIX98_PTYS=y 855CONFIG_UNIX98_PTYS=y
818# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 856# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
819CONFIG_LEGACY_PTYS=y 857CONFIG_LEGACY_PTYS=y
820CONFIG_LEGACY_PTY_COUNT=256 858CONFIG_LEGACY_PTY_COUNT=256
821# CONFIG_HVC_UDBG is not set 859# CONFIG_HVC_UDBG is not set
822# CONFIG_IPMI_HANDLER is not set 860# CONFIG_IPMI_HANDLER is not set
823# CONFIG_HW_RANDOM is not set 861CONFIG_HW_RANDOM=y
862# CONFIG_HW_RANDOM_TIMERIOMEM is not set
824CONFIG_NVRAM=y 863CONFIG_NVRAM=y
825# CONFIG_R3964 is not set 864# CONFIG_R3964 is not set
826# CONFIG_APPLICOM is not set 865# CONFIG_APPLICOM is not set
@@ -857,7 +896,7 @@ CONFIG_I2C_HELPER_AUTO=y
857# 896#
858# I2C system bus drivers (mostly embedded / system-on-chip) 897# I2C system bus drivers (mostly embedded / system-on-chip)
859# 898#
860# CONFIG_I2C_CPM is not set 899CONFIG_I2C_CPM=m
861# CONFIG_I2C_GPIO is not set 900# CONFIG_I2C_GPIO is not set
862CONFIG_I2C_MPC=y 901CONFIG_I2C_MPC=y
863# CONFIG_I2C_OCORES is not set 902# CONFIG_I2C_OCORES is not set
@@ -885,12 +924,9 @@ CONFIG_I2C_MPC=y
885# Miscellaneous I2C Chip support 924# Miscellaneous I2C Chip support
886# 925#
887# CONFIG_DS1682 is not set 926# CONFIG_DS1682 is not set
888# CONFIG_EEPROM_AT24 is not set
889CONFIG_EEPROM_LEGACY=y
890# CONFIG_SENSORS_PCF8574 is not set 927# CONFIG_SENSORS_PCF8574 is not set
891# CONFIG_PCF8575 is not set 928# CONFIG_PCF8575 is not set
892# CONFIG_SENSORS_PCA9539 is not set 929# CONFIG_SENSORS_PCA9539 is not set
893# CONFIG_SENSORS_PCF8591 is not set
894# CONFIG_SENSORS_MAX6875 is not set 930# CONFIG_SENSORS_MAX6875 is not set
895# CONFIG_SENSORS_TSL2550 is not set 931# CONFIG_SENSORS_TSL2550 is not set
896# CONFIG_I2C_DEBUG_CORE is not set 932# CONFIG_I2C_DEBUG_CORE is not set
@@ -969,7 +1005,7 @@ CONFIG_VIDEO_MEDIA=m
969# 1005#
970# CONFIG_MEDIA_ATTACH is not set 1006# CONFIG_MEDIA_ATTACH is not set
971CONFIG_MEDIA_TUNER=m 1007CONFIG_MEDIA_TUNER=m
972# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set 1008# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
973CONFIG_MEDIA_TUNER_SIMPLE=m 1009CONFIG_MEDIA_TUNER_SIMPLE=m
974CONFIG_MEDIA_TUNER_TDA8290=m 1010CONFIG_MEDIA_TUNER_TDA8290=m
975CONFIG_MEDIA_TUNER_TDA9887=m 1011CONFIG_MEDIA_TUNER_TDA9887=m
@@ -978,6 +1014,7 @@ CONFIG_MEDIA_TUNER_TEA5767=m
978CONFIG_MEDIA_TUNER_MT20XX=m 1014CONFIG_MEDIA_TUNER_MT20XX=m
979CONFIG_MEDIA_TUNER_XC2028=m 1015CONFIG_MEDIA_TUNER_XC2028=m
980CONFIG_MEDIA_TUNER_XC5000=m 1016CONFIG_MEDIA_TUNER_XC5000=m
1017CONFIG_MEDIA_TUNER_MC44S803=m
981# CONFIG_DVB_DYNAMIC_MINORS is not set 1018# CONFIG_DVB_DYNAMIC_MINORS is not set
982CONFIG_DVB_CAPTURE_DRIVERS=y 1019CONFIG_DVB_CAPTURE_DRIVERS=y
983 1020
@@ -1017,103 +1054,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
1017# 1054#
1018# Supported DVB Frontends 1055# Supported DVB Frontends
1019# 1056#
1020
1021#
1022# Customise DVB Frontends
1023#
1024# CONFIG_DVB_FE_CUSTOMISE is not set 1057# CONFIG_DVB_FE_CUSTOMISE is not set
1025
1026#
1027# Multistandard (satellite) frontends
1028#
1029# CONFIG_DVB_STB0899 is not set
1030# CONFIG_DVB_STB6100 is not set
1031
1032#
1033# DVB-S (satellite) frontends
1034#
1035# CONFIG_DVB_CX24110 is not set
1036# CONFIG_DVB_CX24123 is not set
1037# CONFIG_DVB_MT312 is not set
1038# CONFIG_DVB_S5H1420 is not set
1039# CONFIG_DVB_STV0288 is not set
1040# CONFIG_DVB_STB6000 is not set
1041# CONFIG_DVB_STV0299 is not set
1042# CONFIG_DVB_TDA8083 is not set
1043# CONFIG_DVB_TDA10086 is not set
1044# CONFIG_DVB_TDA8261 is not set
1045# CONFIG_DVB_VES1X93 is not set
1046# CONFIG_DVB_TUNER_ITD1000 is not set
1047# CONFIG_DVB_TUNER_CX24113 is not set
1048# CONFIG_DVB_TDA826X is not set
1049# CONFIG_DVB_TUA6100 is not set
1050# CONFIG_DVB_CX24116 is not set
1051# CONFIG_DVB_SI21XX is not set
1052
1053#
1054# DVB-T (terrestrial) frontends
1055#
1056# CONFIG_DVB_SP8870 is not set
1057# CONFIG_DVB_SP887X is not set
1058# CONFIG_DVB_CX22700 is not set
1059# CONFIG_DVB_CX22702 is not set
1060# CONFIG_DVB_DRX397XD is not set
1061# CONFIG_DVB_L64781 is not set
1062# CONFIG_DVB_TDA1004X is not set
1063# CONFIG_DVB_NXT6000 is not set
1064# CONFIG_DVB_MT352 is not set
1065# CONFIG_DVB_ZL10353 is not set
1066# CONFIG_DVB_DIB3000MB is not set
1067# CONFIG_DVB_DIB3000MC is not set
1068# CONFIG_DVB_DIB7000M is not set
1069# CONFIG_DVB_DIB7000P is not set
1070# CONFIG_DVB_TDA10048 is not set
1071
1072#
1073# DVB-C (cable) frontends
1074#
1075# CONFIG_DVB_VES1820 is not set
1076# CONFIG_DVB_TDA10021 is not set
1077# CONFIG_DVB_TDA10023 is not set
1078# CONFIG_DVB_STV0297 is not set
1079
1080#
1081# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
1082#
1083# CONFIG_DVB_NXT200X is not set
1084# CONFIG_DVB_OR51211 is not set
1085# CONFIG_DVB_OR51132 is not set
1086# CONFIG_DVB_BCM3510 is not set
1087# CONFIG_DVB_LGDT330X is not set
1088# CONFIG_DVB_LGDT3304 is not set
1089# CONFIG_DVB_S5H1409 is not set
1090# CONFIG_DVB_AU8522 is not set
1091# CONFIG_DVB_S5H1411 is not set
1092
1093#
1094# ISDB-T (terrestrial) frontends
1095#
1096# CONFIG_DVB_S921 is not set
1097
1098#
1099# Digital terrestrial only tuners/PLL
1100#
1101# CONFIG_DVB_PLL is not set
1102# CONFIG_DVB_TUNER_DIB0070 is not set
1103
1104#
1105# SEC control devices for DVB-S
1106#
1107# CONFIG_DVB_LNBP21 is not set
1108# CONFIG_DVB_ISL6405 is not set
1109# CONFIG_DVB_ISL6421 is not set
1110# CONFIG_DVB_LGS8GL5 is not set
1111
1112#
1113# Tools to develop new frontends
1114#
1115# CONFIG_DVB_DUMMY_FE is not set
1116# CONFIG_DVB_AF9013 is not set
1117CONFIG_DAB=y 1058CONFIG_DAB=y
1118# CONFIG_USB_DABUSB is not set 1059# CONFIG_USB_DABUSB is not set
1119 1060
@@ -1193,6 +1134,8 @@ CONFIG_SND_PCI=y
1193# CONFIG_SND_INDIGO is not set 1134# CONFIG_SND_INDIGO is not set
1194# CONFIG_SND_INDIGOIO is not set 1135# CONFIG_SND_INDIGOIO is not set
1195# CONFIG_SND_INDIGODJ is not set 1136# CONFIG_SND_INDIGODJ is not set
1137# CONFIG_SND_INDIGOIOX is not set
1138# CONFIG_SND_INDIGODJX is not set
1196# CONFIG_SND_EMU10K1 is not set 1139# CONFIG_SND_EMU10K1 is not set
1197# CONFIG_SND_EMU10K1X is not set 1140# CONFIG_SND_EMU10K1X is not set
1198# CONFIG_SND_ENS1370 is not set 1141# CONFIG_SND_ENS1370 is not set
@@ -1247,15 +1190,17 @@ CONFIG_USB_HID=y
1247# 1190#
1248# Special HID drivers 1191# Special HID drivers
1249# 1192#
1250CONFIG_HID_COMPAT=y
1251CONFIG_HID_A4TECH=y 1193CONFIG_HID_A4TECH=y
1252CONFIG_HID_APPLE=y 1194CONFIG_HID_APPLE=y
1253CONFIG_HID_BELKIN=y 1195CONFIG_HID_BELKIN=y
1254CONFIG_HID_CHERRY=y 1196CONFIG_HID_CHERRY=y
1255CONFIG_HID_CHICONY=y 1197CONFIG_HID_CHICONY=y
1256CONFIG_HID_CYPRESS=y 1198CONFIG_HID_CYPRESS=y
1199# CONFIG_DRAGONRISE_FF is not set
1257CONFIG_HID_EZKEY=y 1200CONFIG_HID_EZKEY=y
1201# CONFIG_HID_KYE is not set
1258CONFIG_HID_GYRATION=y 1202CONFIG_HID_GYRATION=y
1203# CONFIG_HID_KENSINGTON is not set
1259CONFIG_HID_LOGITECH=y 1204CONFIG_HID_LOGITECH=y
1260# CONFIG_LOGITECH_FF is not set 1205# CONFIG_LOGITECH_FF is not set
1261# CONFIG_LOGIRUMBLEPAD2_FF is not set 1206# CONFIG_LOGIRUMBLEPAD2_FF is not set
@@ -1314,6 +1259,7 @@ CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1314CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 1259CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
1315CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1260CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1316# CONFIG_USB_UHCI_HCD is not set 1261# CONFIG_USB_UHCI_HCD is not set
1262# CONFIG_USB_FHCI_HCD is not set
1317# CONFIG_USB_SL811_HCD is not set 1263# CONFIG_USB_SL811_HCD is not set
1318# CONFIG_USB_R8A66597_HCD is not set 1264# CONFIG_USB_R8A66597_HCD is not set
1319# CONFIG_USB_WHCI_HCD is not set 1265# CONFIG_USB_WHCI_HCD is not set
@@ -1329,11 +1275,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1329# CONFIG_USB_TMC is not set 1275# CONFIG_USB_TMC is not set
1330 1276
1331# 1277#
1332# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1278# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1333# 1279#
1334 1280
1335# 1281#
1336# see USB_STORAGE Help for more information 1282# also be needed; see USB_STORAGE Help for more info
1337# 1283#
1338CONFIG_USB_STORAGE=y 1284CONFIG_USB_STORAGE=y
1339# CONFIG_USB_STORAGE_DEBUG is not set 1285# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1375,7 +1321,6 @@ CONFIG_USB_STORAGE=y
1375# CONFIG_USB_LED is not set 1321# CONFIG_USB_LED is not set
1376# CONFIG_USB_CYPRESS_CY7C63 is not set 1322# CONFIG_USB_CYPRESS_CY7C63 is not set
1377# CONFIG_USB_CYTHERM is not set 1323# CONFIG_USB_CYTHERM is not set
1378# CONFIG_USB_PHIDGET is not set
1379# CONFIG_USB_IDMOUSE is not set 1324# CONFIG_USB_IDMOUSE is not set
1380# CONFIG_USB_FTDI_ELAN is not set 1325# CONFIG_USB_FTDI_ELAN is not set
1381# CONFIG_USB_APPLEDISPLAY is not set 1326# CONFIG_USB_APPLEDISPLAY is not set
@@ -1392,6 +1337,7 @@ CONFIG_USB_STORAGE=y
1392# OTG and related infrastructure 1337# OTG and related infrastructure
1393# 1338#
1394# CONFIG_USB_GPIO_VBUS is not set 1339# CONFIG_USB_GPIO_VBUS is not set
1340# CONFIG_NOP_USB_XCEIV is not set
1395# CONFIG_UWB is not set 1341# CONFIG_UWB is not set
1396# CONFIG_MMC is not set 1342# CONFIG_MMC is not set
1397# CONFIG_MEMSTICK is not set 1343# CONFIG_MEMSTICK is not set
@@ -1406,6 +1352,8 @@ CONFIG_EDAC=y
1406# CONFIG_EDAC_DEBUG is not set 1352# CONFIG_EDAC_DEBUG is not set
1407CONFIG_EDAC_MM_EDAC=y 1353CONFIG_EDAC_MM_EDAC=y
1408CONFIG_EDAC_MPC85XX=y 1354CONFIG_EDAC_MPC85XX=y
1355# CONFIG_EDAC_AMD8131 is not set
1356# CONFIG_EDAC_AMD8111 is not set
1409CONFIG_RTC_LIB=y 1357CONFIG_RTC_LIB=y
1410CONFIG_RTC_CLASS=y 1358CONFIG_RTC_CLASS=y
1411CONFIG_RTC_HCTOSYS=y 1359CONFIG_RTC_HCTOSYS=y
@@ -1460,7 +1408,7 @@ CONFIG_RTC_DRV_CMOS=y
1460# 1408#
1461# on-CPU RTC drivers 1409# on-CPU RTC drivers
1462# 1410#
1463# CONFIG_RTC_DRV_PPC is not set 1411# CONFIG_RTC_DRV_GENERIC is not set
1464CONFIG_DMADEVICES=y 1412CONFIG_DMADEVICES=y
1465 1413
1466# 1414#
@@ -1473,7 +1421,9 @@ CONFIG_DMA_ENGINE=y
1473# DMA Clients 1421# DMA Clients
1474# 1422#
1475# CONFIG_NET_DMA is not set 1423# CONFIG_NET_DMA is not set
1424# CONFIG_ASYNC_TX_DMA is not set
1476# CONFIG_DMATEST is not set 1425# CONFIG_DMATEST is not set
1426# CONFIG_AUXDISPLAY is not set
1477# CONFIG_UIO is not set 1427# CONFIG_UIO is not set
1478# CONFIG_STAGING is not set 1428# CONFIG_STAGING is not set
1479 1429
@@ -1484,6 +1434,7 @@ CONFIG_EXT2_FS=y
1484# CONFIG_EXT2_FS_XATTR is not set 1434# CONFIG_EXT2_FS_XATTR is not set
1485# CONFIG_EXT2_FS_XIP is not set 1435# CONFIG_EXT2_FS_XIP is not set
1486CONFIG_EXT3_FS=y 1436CONFIG_EXT3_FS=y
1437# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1487CONFIG_EXT3_FS_XATTR=y 1438CONFIG_EXT3_FS_XATTR=y
1488# CONFIG_EXT3_FS_POSIX_ACL is not set 1439# CONFIG_EXT3_FS_POSIX_ACL is not set
1489# CONFIG_EXT3_FS_SECURITY is not set 1440# CONFIG_EXT3_FS_SECURITY is not set
@@ -1508,6 +1459,11 @@ CONFIG_INOTIFY_USER=y
1508# CONFIG_FUSE_FS is not set 1459# CONFIG_FUSE_FS is not set
1509 1460
1510# 1461#
1462# Caches
1463#
1464# CONFIG_FSCACHE is not set
1465
1466#
1511# CD-ROM/DVD Filesystems 1467# CD-ROM/DVD Filesystems
1512# 1468#
1513CONFIG_ISO9660_FS=m 1469CONFIG_ISO9660_FS=m
@@ -1562,6 +1518,7 @@ CONFIG_SYSV_FS=m
1562CONFIG_UFS_FS=m 1518CONFIG_UFS_FS=m
1563# CONFIG_UFS_FS_WRITE is not set 1519# CONFIG_UFS_FS_WRITE is not set
1564# CONFIG_UFS_DEBUG is not set 1520# CONFIG_UFS_DEBUG is not set
1521# CONFIG_NILFS2_FS is not set
1565CONFIG_NETWORK_FILESYSTEMS=y 1522CONFIG_NETWORK_FILESYSTEMS=y
1566CONFIG_NFS_FS=y 1523CONFIG_NFS_FS=y
1567CONFIG_NFS_V3=y 1524CONFIG_NFS_V3=y
@@ -1577,7 +1534,6 @@ CONFIG_EXPORTFS=y
1577CONFIG_NFS_COMMON=y 1534CONFIG_NFS_COMMON=y
1578CONFIG_SUNRPC=y 1535CONFIG_SUNRPC=y
1579CONFIG_SUNRPC_GSS=y 1536CONFIG_SUNRPC_GSS=y
1580# CONFIG_SUNRPC_REGISTER_V4 is not set
1581CONFIG_RPCSEC_GSS_KRB5=y 1537CONFIG_RPCSEC_GSS_KRB5=y
1582# CONFIG_RPCSEC_GSS_SPKM3 is not set 1538# CONFIG_RPCSEC_GSS_SPKM3 is not set
1583# CONFIG_SMB_FS is not set 1539# CONFIG_SMB_FS is not set
@@ -1648,6 +1604,10 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1648# CONFIG_NLS_KOI8_U is not set 1604# CONFIG_NLS_KOI8_U is not set
1649CONFIG_NLS_UTF8=m 1605CONFIG_NLS_UTF8=m
1650# CONFIG_DLM is not set 1606# CONFIG_DLM is not set
1607CONFIG_UCC_SLOW=y
1608CONFIG_UCC_FAST=y
1609CONFIG_UCC=y
1610# CONFIG_BINARY_PRINTF is not set
1651 1611
1652# 1612#
1653# Library routines 1613# Library routines
@@ -1662,11 +1622,12 @@ CONFIG_CRC32=y
1662# CONFIG_CRC7 is not set 1622# CONFIG_CRC7 is not set
1663CONFIG_LIBCRC32C=m 1623CONFIG_LIBCRC32C=m
1664CONFIG_ZLIB_INFLATE=y 1624CONFIG_ZLIB_INFLATE=y
1665CONFIG_PLIST=y 1625CONFIG_DECOMPRESS_GZIP=y
1666CONFIG_HAS_IOMEM=y 1626CONFIG_HAS_IOMEM=y
1667CONFIG_HAS_IOPORT=y 1627CONFIG_HAS_IOPORT=y
1668CONFIG_HAS_DMA=y 1628CONFIG_HAS_DMA=y
1669CONFIG_HAVE_LMB=y 1629CONFIG_HAVE_LMB=y
1630CONFIG_NLATTR=y
1670 1631
1671# 1632#
1672# Kernel hacking 1633# Kernel hacking
@@ -1684,6 +1645,9 @@ CONFIG_DEBUG_KERNEL=y
1684CONFIG_DETECT_SOFTLOCKUP=y 1645CONFIG_DETECT_SOFTLOCKUP=y
1685# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1646# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1686CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1647CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1648CONFIG_DETECT_HUNG_TASK=y
1649# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1650CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1687CONFIG_SCHED_DEBUG=y 1651CONFIG_SCHED_DEBUG=y
1688# CONFIG_SCHEDSTATS is not set 1652# CONFIG_SCHEDSTATS is not set
1689# CONFIG_TIMER_STATS is not set 1653# CONFIG_TIMER_STATS is not set
@@ -1714,9 +1678,12 @@ CONFIG_DEBUG_INFO=y
1714# CONFIG_FAULT_INJECTION is not set 1678# CONFIG_FAULT_INJECTION is not set
1715# CONFIG_LATENCYTOP is not set 1679# CONFIG_LATENCYTOP is not set
1716CONFIG_SYSCTL_SYSCALL_CHECK=y 1680CONFIG_SYSCTL_SYSCALL_CHECK=y
1681# CONFIG_DEBUG_PAGEALLOC is not set
1717CONFIG_HAVE_FUNCTION_TRACER=y 1682CONFIG_HAVE_FUNCTION_TRACER=y
1683CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1718CONFIG_HAVE_DYNAMIC_FTRACE=y 1684CONFIG_HAVE_DYNAMIC_FTRACE=y
1719CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1685CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1686CONFIG_TRACING_SUPPORT=y
1720 1687
1721# 1688#
1722# Tracers 1689# Tracers
@@ -1724,17 +1691,20 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1724# CONFIG_FUNCTION_TRACER is not set 1691# CONFIG_FUNCTION_TRACER is not set
1725# CONFIG_SCHED_TRACER is not set 1692# CONFIG_SCHED_TRACER is not set
1726# CONFIG_CONTEXT_SWITCH_TRACER is not set 1693# CONFIG_CONTEXT_SWITCH_TRACER is not set
1694# CONFIG_EVENT_TRACER is not set
1727# CONFIG_BOOT_TRACER is not set 1695# CONFIG_BOOT_TRACER is not set
1728# CONFIG_TRACE_BRANCH_PROFILING is not set 1696# CONFIG_TRACE_BRANCH_PROFILING is not set
1729# CONFIG_STACK_TRACER is not set 1697# CONFIG_STACK_TRACER is not set
1730# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1698# CONFIG_KMEMTRACE is not set
1699# CONFIG_WORKQUEUE_TRACER is not set
1700# CONFIG_BLK_DEV_IO_TRACE is not set
1701# CONFIG_DYNAMIC_DEBUG is not set
1731# CONFIG_SAMPLES is not set 1702# CONFIG_SAMPLES is not set
1732CONFIG_HAVE_ARCH_KGDB=y 1703CONFIG_HAVE_ARCH_KGDB=y
1733# CONFIG_KGDB is not set 1704# CONFIG_KGDB is not set
1734CONFIG_PRINT_STACK_DEPTH=64 1705CONFIG_PRINT_STACK_DEPTH=64
1735# CONFIG_DEBUG_STACKOVERFLOW is not set 1706# CONFIG_DEBUG_STACKOVERFLOW is not set
1736# CONFIG_DEBUG_STACK_USAGE is not set 1707# CONFIG_DEBUG_STACK_USAGE is not set
1737# CONFIG_DEBUG_PAGEALLOC is not set
1738# CONFIG_CODE_PATCHING_SELFTEST is not set 1708# CONFIG_CODE_PATCHING_SELFTEST is not set
1739# CONFIG_FTR_FIXUP_SELFTEST is not set 1709# CONFIG_FTR_FIXUP_SELFTEST is not set
1740# CONFIG_MSI_BITMAP_SELFTEST is not set 1710# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1759,18 +1729,21 @@ CONFIG_CRYPTO=y
1759# CONFIG_CRYPTO_FIPS is not set 1729# CONFIG_CRYPTO_FIPS is not set
1760CONFIG_CRYPTO_ALGAPI=y 1730CONFIG_CRYPTO_ALGAPI=y
1761CONFIG_CRYPTO_ALGAPI2=y 1731CONFIG_CRYPTO_ALGAPI2=y
1732CONFIG_CRYPTO_AEAD=y
1762CONFIG_CRYPTO_AEAD2=y 1733CONFIG_CRYPTO_AEAD2=y
1763CONFIG_CRYPTO_BLKCIPHER=y 1734CONFIG_CRYPTO_BLKCIPHER=y
1764CONFIG_CRYPTO_BLKCIPHER2=y 1735CONFIG_CRYPTO_BLKCIPHER2=y
1765CONFIG_CRYPTO_HASH=y 1736CONFIG_CRYPTO_HASH=y
1766CONFIG_CRYPTO_HASH2=y 1737CONFIG_CRYPTO_HASH2=y
1767CONFIG_CRYPTO_RNG2=y 1738CONFIG_CRYPTO_RNG2=y
1739CONFIG_CRYPTO_PCOMP=y
1768CONFIG_CRYPTO_MANAGER=y 1740CONFIG_CRYPTO_MANAGER=y
1769CONFIG_CRYPTO_MANAGER2=y 1741CONFIG_CRYPTO_MANAGER2=y
1770# CONFIG_CRYPTO_GF128MUL is not set 1742# CONFIG_CRYPTO_GF128MUL is not set
1771# CONFIG_CRYPTO_NULL is not set 1743# CONFIG_CRYPTO_NULL is not set
1744CONFIG_CRYPTO_WORKQUEUE=y
1772# CONFIG_CRYPTO_CRYPTD is not set 1745# CONFIG_CRYPTO_CRYPTD is not set
1773# CONFIG_CRYPTO_AUTHENC is not set 1746CONFIG_CRYPTO_AUTHENC=y
1774# CONFIG_CRYPTO_TEST is not set 1747# CONFIG_CRYPTO_TEST is not set
1775 1748
1776# 1749#
@@ -1837,6 +1810,7 @@ CONFIG_CRYPTO_DES=y
1837# Compression 1810# Compression
1838# 1811#
1839# CONFIG_CRYPTO_DEFLATE is not set 1812# CONFIG_CRYPTO_DEFLATE is not set
1813# CONFIG_CRYPTO_ZLIB is not set
1840# CONFIG_CRYPTO_LZO is not set 1814# CONFIG_CRYPTO_LZO is not set
1841 1815
1842# 1816#
@@ -1845,7 +1819,7 @@ CONFIG_CRYPTO_DES=y
1845# CONFIG_CRYPTO_ANSI_CPRNG is not set 1819# CONFIG_CRYPTO_ANSI_CPRNG is not set
1846CONFIG_CRYPTO_HW=y 1820CONFIG_CRYPTO_HW=y
1847# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1821# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1848# CONFIG_CRYPTO_DEV_TALITOS is not set 1822CONFIG_CRYPTO_DEV_TALITOS=y
1849CONFIG_PPC_CLOCK=y 1823CONFIG_PPC_CLOCK=y
1850CONFIG_PPC_LIB_RHEAP=y 1824CONFIG_PPC_LIB_RHEAP=y
1851# CONFIG_VIRTUALIZATION is not set 1825# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8572_ds_defconfig b/arch/powerpc/configs/mpc85xx_smp_defconfig
index 813223ae174d..1aa1c508d600 100644
--- a/arch/powerpc/configs/85xx/mpc8572_ds_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.29-rc2 3# Linux kernel version: 2.6.30-rc2
4# Mon Jan 26 15:36:12 2009 4# Tue Apr 21 15:41:18 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,9 +22,10 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_BOOK3E_MMU=y
25# CONFIG_PPC_MM_SLICES is not set 26# CONFIG_PPC_MM_SLICES is not set
26CONFIG_SMP=y 27CONFIG_SMP=y
27CONFIG_NR_CPUS=2 28CONFIG_NR_CPUS=8
28CONFIG_PPC32=y 29CONFIG_PPC32=y
29CONFIG_WORD_SIZE=32 30CONFIG_WORD_SIZE=32
30# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 31# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
@@ -44,6 +45,7 @@ CONFIG_ARCH_HAS_ILOG2_U32=y
44CONFIG_GENERIC_HWEIGHT=y 45CONFIG_GENERIC_HWEIGHT=y
45CONFIG_GENERIC_CALIBRATE_DELAY=y 46CONFIG_GENERIC_CALIBRATE_DELAY=y
46CONFIG_GENERIC_FIND_NEXT_BIT=y 47CONFIG_GENERIC_FIND_NEXT_BIT=y
48CONFIG_GENERIC_GPIO=y
47# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 49# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
48CONFIG_PPC=y 50CONFIG_PPC=y
49CONFIG_EARLY_PRINTK=y 51CONFIG_EARLY_PRINTK=y
@@ -59,6 +61,7 @@ CONFIG_GENERIC_BUG=y
59CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
60# CONFIG_PPC_DCR_NATIVE is not set 62# CONFIG_PPC_DCR_NATIVE is not set
61# CONFIG_PPC_DCR_MMIO is not set 63# CONFIG_PPC_DCR_MMIO is not set
64CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
62CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 65CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
63 66
64# 67#
@@ -73,11 +76,21 @@ CONFIG_SWAP=y
73CONFIG_SYSVIPC=y 76CONFIG_SYSVIPC=y
74CONFIG_SYSVIPC_SYSCTL=y 77CONFIG_SYSVIPC_SYSCTL=y
75CONFIG_POSIX_MQUEUE=y 78CONFIG_POSIX_MQUEUE=y
79CONFIG_POSIX_MQUEUE_SYSCTL=y
76CONFIG_BSD_PROCESS_ACCT=y 80CONFIG_BSD_PROCESS_ACCT=y
77# CONFIG_BSD_PROCESS_ACCT_V3 is not set 81# CONFIG_BSD_PROCESS_ACCT_V3 is not set
78# CONFIG_TASKSTATS is not set 82# CONFIG_TASKSTATS is not set
79CONFIG_AUDIT=y 83CONFIG_AUDIT=y
80# CONFIG_AUDITSYSCALL is not set 84# CONFIG_AUDITSYSCALL is not set
85
86#
87# RCU Subsystem
88#
89CONFIG_CLASSIC_RCU=y
90# CONFIG_TREE_RCU is not set
91# CONFIG_PREEMPT_RCU is not set
92# CONFIG_TREE_RCU_TRACE is not set
93# CONFIG_PREEMPT_RCU_TRACE is not set
81CONFIG_IKCONFIG=y 94CONFIG_IKCONFIG=y
82CONFIG_IKCONFIG_PROC=y 95CONFIG_IKCONFIG_PROC=y
83CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
@@ -93,22 +106,24 @@ CONFIG_SYSFS_DEPRECATED_V2=y
93# CONFIG_NAMESPACES is not set 106# CONFIG_NAMESPACES is not set
94CONFIG_BLK_DEV_INITRD=y 107CONFIG_BLK_DEV_INITRD=y
95CONFIG_INITRAMFS_SOURCE="" 108CONFIG_INITRAMFS_SOURCE=""
109CONFIG_RD_GZIP=y
110# CONFIG_RD_BZIP2 is not set
111# CONFIG_RD_LZMA is not set
96# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 112# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
97CONFIG_SYSCTL=y 113CONFIG_SYSCTL=y
114CONFIG_ANON_INODES=y
98CONFIG_EMBEDDED=y 115CONFIG_EMBEDDED=y
99CONFIG_SYSCTL_SYSCALL=y 116CONFIG_SYSCTL_SYSCALL=y
100CONFIG_KALLSYMS=y 117CONFIG_KALLSYMS=y
101CONFIG_KALLSYMS_ALL=y 118CONFIG_KALLSYMS_ALL=y
102CONFIG_KALLSYMS_STRIP_GENERATED=y
103CONFIG_KALLSYMS_EXTRA_PASS=y 119CONFIG_KALLSYMS_EXTRA_PASS=y
120# CONFIG_STRIP_ASM_SYMS is not set
104CONFIG_HOTPLUG=y 121CONFIG_HOTPLUG=y
105CONFIG_PRINTK=y 122CONFIG_PRINTK=y
106CONFIG_BUG=y 123CONFIG_BUG=y
107CONFIG_ELF_CORE=y 124CONFIG_ELF_CORE=y
108CONFIG_COMPAT_BRK=y
109CONFIG_BASE_FULL=y 125CONFIG_BASE_FULL=y
110CONFIG_FUTEX=y 126CONFIG_FUTEX=y
111CONFIG_ANON_INODES=y
112CONFIG_EPOLL=y 127CONFIG_EPOLL=y
113CONFIG_SIGNALFD=y 128CONFIG_SIGNALFD=y
114CONFIG_TIMERFD=y 129CONFIG_TIMERFD=y
@@ -118,10 +133,12 @@ CONFIG_AIO=y
118CONFIG_VM_EVENT_COUNTERS=y 133CONFIG_VM_EVENT_COUNTERS=y
119CONFIG_PCI_QUIRKS=y 134CONFIG_PCI_QUIRKS=y
120CONFIG_SLUB_DEBUG=y 135CONFIG_SLUB_DEBUG=y
136CONFIG_COMPAT_BRK=y
121# CONFIG_SLAB is not set 137# CONFIG_SLAB is not set
122CONFIG_SLUB=y 138CONFIG_SLUB=y
123# CONFIG_SLOB is not set 139# CONFIG_SLOB is not set
124# CONFIG_PROFILING is not set 140# CONFIG_PROFILING is not set
141# CONFIG_MARKERS is not set
125CONFIG_HAVE_OPROFILE=y 142CONFIG_HAVE_OPROFILE=y
126# CONFIG_KPROBES is not set 143# CONFIG_KPROBES is not set
127CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -130,6 +147,8 @@ CONFIG_HAVE_KPROBES=y
130CONFIG_HAVE_KRETPROBES=y 147CONFIG_HAVE_KRETPROBES=y
131CONFIG_HAVE_ARCH_TRACEHOOK=y 148CONFIG_HAVE_ARCH_TRACEHOOK=y
132CONFIG_USE_GENERIC_SMP_HELPERS=y 149CONFIG_USE_GENERIC_SMP_HELPERS=y
150CONFIG_HAVE_CLK=y
151# CONFIG_SLOW_WORK is not set
133# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 152# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
134CONFIG_SLABINFO=y 153CONFIG_SLABINFO=y
135CONFIG_RT_MUTEXES=y 154CONFIG_RT_MUTEXES=y
@@ -143,7 +162,6 @@ CONFIG_MODVERSIONS=y
143CONFIG_STOP_MACHINE=y 162CONFIG_STOP_MACHINE=y
144CONFIG_BLOCK=y 163CONFIG_BLOCK=y
145CONFIG_LBD=y 164CONFIG_LBD=y
146# CONFIG_BLK_DEV_IO_TRACE is not set
147# CONFIG_BLK_DEV_BSG is not set 165# CONFIG_BLK_DEV_BSG is not set
148# CONFIG_BLK_DEV_INTEGRITY is not set 166# CONFIG_BLK_DEV_INTEGRITY is not set
149 167
@@ -159,11 +177,6 @@ CONFIG_IOSCHED_CFQ=y
159CONFIG_DEFAULT_CFQ=y 177CONFIG_DEFAULT_CFQ=y
160# CONFIG_DEFAULT_NOOP is not set 178# CONFIG_DEFAULT_NOOP is not set
161CONFIG_DEFAULT_IOSCHED="cfq" 179CONFIG_DEFAULT_IOSCHED="cfq"
162CONFIG_CLASSIC_RCU=y
163# CONFIG_TREE_RCU is not set
164# CONFIG_PREEMPT_RCU is not set
165# CONFIG_TREE_RCU_TRACE is not set
166# CONFIG_PREEMPT_RCU_TRACE is not set
167# CONFIG_FREEZER is not set 180# CONFIG_FREEZER is not set
168 181
169# 182#
@@ -173,21 +186,23 @@ CONFIG_CLASSIC_RCU=y
173# CONFIG_PPC_CELL_NATIVE is not set 186# CONFIG_PPC_CELL_NATIVE is not set
174# CONFIG_PQ2ADS is not set 187# CONFIG_PQ2ADS is not set
175CONFIG_MPC85xx=y 188CONFIG_MPC85xx=y
176# CONFIG_MPC8540_ADS is not set 189CONFIG_MPC8540_ADS=y
177# CONFIG_MPC8560_ADS is not set 190CONFIG_MPC8560_ADS=y
178# CONFIG_MPC85xx_CDS is not set 191CONFIG_MPC85xx_CDS=y
179# CONFIG_MPC85xx_MDS is not set 192CONFIG_MPC85xx_MDS=y
180# CONFIG_MPC8536_DS is not set 193CONFIG_MPC8536_DS=y
181CONFIG_MPC85xx_DS=y 194CONFIG_MPC85xx_DS=y
182# CONFIG_KSI8560 is not set 195CONFIG_SOCRATES=y
183# CONFIG_STX_GP3 is not set 196CONFIG_KSI8560=y
184# CONFIG_TQM8540 is not set 197CONFIG_STX_GP3=y
185# CONFIG_TQM8541 is not set 198CONFIG_TQM8540=y
186# CONFIG_TQM8548 is not set 199CONFIG_TQM8541=y
187# CONFIG_TQM8555 is not set 200CONFIG_TQM8548=y
188# CONFIG_TQM8560 is not set 201CONFIG_TQM8555=y
189# CONFIG_SBC8548 is not set 202CONFIG_TQM8560=y
203CONFIG_SBC8548=y
190# CONFIG_SBC8560 is not set 204# CONFIG_SBC8560 is not set
205CONFIG_TQM85xx=y
191# CONFIG_IPIC is not set 206# CONFIG_IPIC is not set
192CONFIG_MPIC=y 207CONFIG_MPIC=y
193# CONFIG_MPIC_WEIRD is not set 208# CONFIG_MPIC_WEIRD is not set
@@ -199,10 +214,12 @@ CONFIG_PPC_I8259=y
199# CONFIG_PPC_INDIRECT_IO is not set 214# CONFIG_PPC_INDIRECT_IO is not set
200# CONFIG_GENERIC_IOMAP is not set 215# CONFIG_GENERIC_IOMAP is not set
201# CONFIG_CPU_FREQ is not set 216# CONFIG_CPU_FREQ is not set
202# CONFIG_QUICC_ENGINE is not set 217CONFIG_QUICC_ENGINE=y
203# CONFIG_CPM2 is not set 218CONFIG_QE_GPIO=y
219CONFIG_CPM2=y
204CONFIG_FSL_ULI1575=y 220CONFIG_FSL_ULI1575=y
205# CONFIG_MPC8xxx_GPIO is not set 221CONFIG_CPM=y
222CONFIG_MPC8xxx_GPIO=y
206# CONFIG_SIMPLE_GPIO is not set 223# CONFIG_SIMPLE_GPIO is not set
207 224
208# 225#
@@ -248,9 +265,12 @@ CONFIG_ZONE_DMA_FLAG=1
248CONFIG_BOUNCE=y 265CONFIG_BOUNCE=y
249CONFIG_VIRT_TO_BUS=y 266CONFIG_VIRT_TO_BUS=y
250CONFIG_UNEVICTABLE_LRU=y 267CONFIG_UNEVICTABLE_LRU=y
268CONFIG_HAVE_MLOCK=y
269CONFIG_HAVE_MLOCKED_PAGE_BIT=y
251CONFIG_PPC_4K_PAGES=y 270CONFIG_PPC_4K_PAGES=y
252# CONFIG_PPC_16K_PAGES is not set 271# CONFIG_PPC_16K_PAGES is not set
253# CONFIG_PPC_64K_PAGES is not set 272# CONFIG_PPC_64K_PAGES is not set
273# CONFIG_PPC_256K_PAGES is not set
254CONFIG_FORCE_MAX_ZONEORDER=11 274CONFIG_FORCE_MAX_ZONEORDER=11
255CONFIG_PROC_DEVICETREE=y 275CONFIG_PROC_DEVICETREE=y
256# CONFIG_CMDLINE_BOOL is not set 276# CONFIG_CMDLINE_BOOL is not set
@@ -277,6 +297,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
277# CONFIG_PCI_LEGACY is not set 297# CONFIG_PCI_LEGACY is not set
278# CONFIG_PCI_DEBUG is not set 298# CONFIG_PCI_DEBUG is not set
279# CONFIG_PCI_STUB is not set 299# CONFIG_PCI_STUB is not set
300# CONFIG_PCI_IOV is not set
280# CONFIG_PCCARD is not set 301# CONFIG_PCCARD is not set
281# CONFIG_HOTPLUG_PCI is not set 302# CONFIG_HOTPLUG_PCI is not set
282# CONFIG_HAS_RAPIDIO is not set 303# CONFIG_HAS_RAPIDIO is not set
@@ -290,17 +311,17 @@ CONFIG_ARCH_SUPPORTS_MSI=y
290# Default settings for advanced configuration options are used 311# Default settings for advanced configuration options are used
291# 312#
292CONFIG_LOWMEM_SIZE=0x30000000 313CONFIG_LOWMEM_SIZE=0x30000000
314CONFIG_LOWMEM_CAM_NUM=3
293CONFIG_PAGE_OFFSET=0xc0000000 315CONFIG_PAGE_OFFSET=0xc0000000
294CONFIG_KERNEL_START=0xc0000000 316CONFIG_KERNEL_START=0xc0000000
295CONFIG_PHYSICAL_START=0x00000000 317CONFIG_PHYSICAL_START=0x00000000
296CONFIG_PHYSICAL_ALIGN=0x10000000 318CONFIG_PHYSICAL_ALIGN=0x04000000
297CONFIG_TASK_SIZE=0xc0000000 319CONFIG_TASK_SIZE=0xc0000000
298CONFIG_NET=y 320CONFIG_NET=y
299 321
300# 322#
301# Networking options 323# Networking options
302# 324#
303CONFIG_COMPAT_NET_DEV_OPS=y
304CONFIG_PACKET=y 325CONFIG_PACKET=y
305# CONFIG_PACKET_MMAP is not set 326# CONFIG_PACKET_MMAP is not set
306CONFIG_UNIX=y 327CONFIG_UNIX=y
@@ -388,6 +409,7 @@ CONFIG_SCTP_HMAC_MD5=y
388# CONFIG_LAPB is not set 409# CONFIG_LAPB is not set
389# CONFIG_ECONET is not set 410# CONFIG_ECONET is not set
390# CONFIG_WAN_ROUTER is not set 411# CONFIG_WAN_ROUTER is not set
412# CONFIG_PHONET is not set
391# CONFIG_NET_SCHED is not set 413# CONFIG_NET_SCHED is not set
392# CONFIG_DCB is not set 414# CONFIG_DCB is not set
393 415
@@ -400,7 +422,6 @@ CONFIG_SCTP_HMAC_MD5=y
400# CONFIG_IRDA is not set 422# CONFIG_IRDA is not set
401# CONFIG_BT is not set 423# CONFIG_BT is not set
402# CONFIG_AF_RXRPC is not set 424# CONFIG_AF_RXRPC is not set
403# CONFIG_PHONET is not set
404CONFIG_FIB_RULES=y 425CONFIG_FIB_RULES=y
405CONFIG_WIRELESS=y 426CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 427# CONFIG_CFG80211 is not set
@@ -431,6 +452,7 @@ CONFIG_EXTRA_FIRMWARE=""
431# CONFIG_CONNECTOR is not set 452# CONFIG_CONNECTOR is not set
432# CONFIG_MTD is not set 453# CONFIG_MTD is not set
433CONFIG_OF_DEVICE=y 454CONFIG_OF_DEVICE=y
455CONFIG_OF_GPIO=y
434CONFIG_OF_I2C=y 456CONFIG_OF_I2C=y
435# CONFIG_PARPORT is not set 457# CONFIG_PARPORT is not set
436CONFIG_BLK_DEV=y 458CONFIG_BLK_DEV=y
@@ -454,13 +476,20 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
454# CONFIG_BLK_DEV_HD is not set 476# CONFIG_BLK_DEV_HD is not set
455CONFIG_MISC_DEVICES=y 477CONFIG_MISC_DEVICES=y
456# CONFIG_PHANTOM is not set 478# CONFIG_PHANTOM is not set
457# CONFIG_EEPROM_93CX6 is not set
458# CONFIG_SGI_IOC4 is not set 479# CONFIG_SGI_IOC4 is not set
459# CONFIG_TIFM_CORE is not set 480# CONFIG_TIFM_CORE is not set
460# CONFIG_ICS932S401 is not set 481# CONFIG_ICS932S401 is not set
461# CONFIG_ENCLOSURE_SERVICES is not set 482# CONFIG_ENCLOSURE_SERVICES is not set
462# CONFIG_HP_ILO is not set 483# CONFIG_HP_ILO is not set
484# CONFIG_ISL29003 is not set
463# CONFIG_C2PORT is not set 485# CONFIG_C2PORT is not set
486
487#
488# EEPROM support
489#
490# CONFIG_EEPROM_AT24 is not set
491CONFIG_EEPROM_LEGACY=y
492# CONFIG_EEPROM_93CX6 is not set
464CONFIG_HAVE_IDE=y 493CONFIG_HAVE_IDE=y
465# CONFIG_IDE is not set 494# CONFIG_IDE is not set
466 495
@@ -519,9 +548,11 @@ CONFIG_SCSI_LOWLEVEL=y
519# CONFIG_MEGARAID_NEWGEN is not set 548# CONFIG_MEGARAID_NEWGEN is not set
520# CONFIG_MEGARAID_LEGACY is not set 549# CONFIG_MEGARAID_LEGACY is not set
521# CONFIG_MEGARAID_SAS is not set 550# CONFIG_MEGARAID_SAS is not set
551# CONFIG_SCSI_MPT2SAS is not set
522# CONFIG_SCSI_HPTIOP is not set 552# CONFIG_SCSI_HPTIOP is not set
523# CONFIG_SCSI_BUSLOGIC is not set 553# CONFIG_SCSI_BUSLOGIC is not set
524# CONFIG_LIBFC is not set 554# CONFIG_LIBFC is not set
555# CONFIG_LIBFCOE is not set
525# CONFIG_FCOE is not set 556# CONFIG_FCOE is not set
526# CONFIG_SCSI_DMX3191D is not set 557# CONFIG_SCSI_DMX3191D is not set
527# CONFIG_SCSI_EATA is not set 558# CONFIG_SCSI_EATA is not set
@@ -544,12 +575,13 @@ CONFIG_SCSI_LOWLEVEL=y
544# CONFIG_SCSI_DEBUG is not set 575# CONFIG_SCSI_DEBUG is not set
545# CONFIG_SCSI_SRP is not set 576# CONFIG_SCSI_SRP is not set
546# CONFIG_SCSI_DH is not set 577# CONFIG_SCSI_DH is not set
578# CONFIG_SCSI_OSD_INITIATOR is not set
547CONFIG_ATA=y 579CONFIG_ATA=y
548# CONFIG_ATA_NONSTANDARD is not set 580# CONFIG_ATA_NONSTANDARD is not set
549CONFIG_SATA_PMP=y 581CONFIG_SATA_PMP=y
550CONFIG_SATA_AHCI=y 582CONFIG_SATA_AHCI=y
551# CONFIG_SATA_SIL24 is not set 583# CONFIG_SATA_SIL24 is not set
552# CONFIG_SATA_FSL is not set 584CONFIG_SATA_FSL=y
553CONFIG_ATA_SFF=y 585CONFIG_ATA_SFF=y
554# CONFIG_SATA_SVW is not set 586# CONFIG_SATA_SVW is not set
555# CONFIG_ATA_PIIX is not set 587# CONFIG_ATA_PIIX is not set
@@ -620,6 +652,7 @@ CONFIG_PATA_ALI=y
620# CONFIG_I2O is not set 652# CONFIG_I2O is not set
621# CONFIG_MACINTOSH_DRIVERS is not set 653# CONFIG_MACINTOSH_DRIVERS is not set
622CONFIG_NETDEVICES=y 654CONFIG_NETDEVICES=y
655CONFIG_COMPAT_NET_DEV_OPS=y
623CONFIG_DUMMY=y 656CONFIG_DUMMY=y
624# CONFIG_BONDING is not set 657# CONFIG_BONDING is not set
625# CONFIG_MACVLAN is not set 658# CONFIG_MACVLAN is not set
@@ -632,11 +665,11 @@ CONFIG_PHYLIB=y
632# 665#
633# MII PHY device drivers 666# MII PHY device drivers
634# 667#
635# CONFIG_MARVELL_PHY is not set 668CONFIG_MARVELL_PHY=y
636# CONFIG_DAVICOM_PHY is not set 669CONFIG_DAVICOM_PHY=y
637# CONFIG_QSEMI_PHY is not set 670# CONFIG_QSEMI_PHY is not set
638# CONFIG_LXT_PHY is not set 671# CONFIG_LXT_PHY is not set
639# CONFIG_CICADA_PHY is not set 672CONFIG_CICADA_PHY=y
640CONFIG_VITESSE_PHY=y 673CONFIG_VITESSE_PHY=y
641# CONFIG_SMSC_PHY is not set 674# CONFIG_SMSC_PHY is not set
642# CONFIG_BROADCOM_PHY is not set 675# CONFIG_BROADCOM_PHY is not set
@@ -645,7 +678,7 @@ CONFIG_VITESSE_PHY=y
645# CONFIG_NATIONAL_PHY is not set 678# CONFIG_NATIONAL_PHY is not set
646# CONFIG_STE10XP is not set 679# CONFIG_STE10XP is not set
647# CONFIG_LSI_ET1011C_PHY is not set 680# CONFIG_LSI_ET1011C_PHY is not set
648# CONFIG_FIXED_PHY is not set 681CONFIG_FIXED_PHY=y
649# CONFIG_MDIO_BITBANG is not set 682# CONFIG_MDIO_BITBANG is not set
650CONFIG_NET_ETHERNET=y 683CONFIG_NET_ETHERNET=y
651CONFIG_MII=y 684CONFIG_MII=y
@@ -653,6 +686,8 @@ CONFIG_MII=y
653# CONFIG_SUNGEM is not set 686# CONFIG_SUNGEM is not set
654# CONFIG_CASSINI is not set 687# CONFIG_CASSINI is not set
655# CONFIG_NET_VENDOR_3COM is not set 688# CONFIG_NET_VENDOR_3COM is not set
689# CONFIG_ETHOC is not set
690# CONFIG_DNET is not set
656# CONFIG_NET_TULIP is not set 691# CONFIG_NET_TULIP is not set
657# CONFIG_HP100 is not set 692# CONFIG_HP100 is not set
658# CONFIG_IBM_NEW_EMAC_ZMII is not set 693# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -665,6 +700,10 @@ CONFIG_MII=y
665# CONFIG_NET_PCI is not set 700# CONFIG_NET_PCI is not set
666# CONFIG_B44 is not set 701# CONFIG_B44 is not set
667# CONFIG_ATL2 is not set 702# CONFIG_ATL2 is not set
703CONFIG_FS_ENET=y
704CONFIG_FS_ENET_HAS_SCC=y
705CONFIG_FS_ENET_HAS_FCC=y
706# CONFIG_FS_ENET_MDIO_FCC is not set
668CONFIG_NETDEV_1000=y 707CONFIG_NETDEV_1000=y
669# CONFIG_ACENIC is not set 708# CONFIG_ACENIC is not set
670# CONFIG_DL2K is not set 709# CONFIG_DL2K is not set
@@ -672,6 +711,7 @@ CONFIG_NETDEV_1000=y
672# CONFIG_E1000E is not set 711# CONFIG_E1000E is not set
673# CONFIG_IP1000 is not set 712# CONFIG_IP1000 is not set
674# CONFIG_IGB is not set 713# CONFIG_IGB is not set
714# CONFIG_IGBVF is not set
675# CONFIG_NS83820 is not set 715# CONFIG_NS83820 is not set
676# CONFIG_HAMACHI is not set 716# CONFIG_HAMACHI is not set
677# CONFIG_YELLOWFIN is not set 717# CONFIG_YELLOWFIN is not set
@@ -682,10 +722,15 @@ CONFIG_NETDEV_1000=y
682# CONFIG_VIA_VELOCITY is not set 722# CONFIG_VIA_VELOCITY is not set
683# CONFIG_TIGON3 is not set 723# CONFIG_TIGON3 is not set
684# CONFIG_BNX2 is not set 724# CONFIG_BNX2 is not set
725CONFIG_FSL_PQ_MDIO=y
685CONFIG_GIANFAR=y 726CONFIG_GIANFAR=y
727CONFIG_UCC_GETH=y
728# CONFIG_UGETH_MAGIC_PACKET is not set
729# CONFIG_UGETH_TX_ON_DEMAND is not set
686# CONFIG_QLA3XXX is not set 730# CONFIG_QLA3XXX is not set
687# CONFIG_ATL1 is not set 731# CONFIG_ATL1 is not set
688# CONFIG_ATL1E is not set 732# CONFIG_ATL1E is not set
733# CONFIG_ATL1C is not set
689# CONFIG_JME is not set 734# CONFIG_JME is not set
690CONFIG_NETDEV_10000=y 735CONFIG_NETDEV_10000=y
691# CONFIG_CHELSIO_T1 is not set 736# CONFIG_CHELSIO_T1 is not set
@@ -695,6 +740,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
695# CONFIG_IXGBE is not set 740# CONFIG_IXGBE is not set
696# CONFIG_IXGB is not set 741# CONFIG_IXGB is not set
697# CONFIG_S2IO is not set 742# CONFIG_S2IO is not set
743# CONFIG_VXGE is not set
698# CONFIG_MYRI10GE is not set 744# CONFIG_MYRI10GE is not set
699# CONFIG_NETXEN_NIC is not set 745# CONFIG_NETXEN_NIC is not set
700# CONFIG_NIU is not set 746# CONFIG_NIU is not set
@@ -704,6 +750,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
704# CONFIG_BNX2X is not set 750# CONFIG_BNX2X is not set
705# CONFIG_QLGE is not set 751# CONFIG_QLGE is not set
706# CONFIG_SFC is not set 752# CONFIG_SFC is not set
753# CONFIG_BE2NET is not set
707# CONFIG_TR is not set 754# CONFIG_TR is not set
708 755
709# 756#
@@ -711,7 +758,6 @@ CONFIG_CHELSIO_T3_DEPENDS=y
711# 758#
712# CONFIG_WLAN_PRE80211 is not set 759# CONFIG_WLAN_PRE80211 is not set
713# CONFIG_WLAN_80211 is not set 760# CONFIG_WLAN_80211 is not set
714# CONFIG_IWLWIFI_LEDS is not set
715 761
716# 762#
717# Enable WiMAX (Networking options) to see the WiMAX drivers 763# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -806,8 +852,10 @@ CONFIG_SERIAL_8250_RSA=y
806# CONFIG_SERIAL_UARTLITE is not set 852# CONFIG_SERIAL_UARTLITE is not set
807CONFIG_SERIAL_CORE=y 853CONFIG_SERIAL_CORE=y
808CONFIG_SERIAL_CORE_CONSOLE=y 854CONFIG_SERIAL_CORE_CONSOLE=y
855# CONFIG_SERIAL_CPM is not set
809# CONFIG_SERIAL_JSM is not set 856# CONFIG_SERIAL_JSM is not set
810# CONFIG_SERIAL_OF_PLATFORM is not set 857# CONFIG_SERIAL_OF_PLATFORM is not set
858CONFIG_SERIAL_QE=m
811CONFIG_UNIX98_PTYS=y 859CONFIG_UNIX98_PTYS=y
812# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 860# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
813CONFIG_LEGACY_PTYS=y 861CONFIG_LEGACY_PTYS=y
@@ -815,6 +863,7 @@ CONFIG_LEGACY_PTY_COUNT=256
815# CONFIG_HVC_UDBG is not set 863# CONFIG_HVC_UDBG is not set
816# CONFIG_IPMI_HANDLER is not set 864# CONFIG_IPMI_HANDLER is not set
817CONFIG_HW_RANDOM=y 865CONFIG_HW_RANDOM=y
866# CONFIG_HW_RANDOM_TIMERIOMEM is not set
818CONFIG_NVRAM=y 867CONFIG_NVRAM=y
819# CONFIG_R3964 is not set 868# CONFIG_R3964 is not set
820# CONFIG_APPLICOM is not set 869# CONFIG_APPLICOM is not set
@@ -851,6 +900,8 @@ CONFIG_I2C_HELPER_AUTO=y
851# 900#
852# I2C system bus drivers (mostly embedded / system-on-chip) 901# I2C system bus drivers (mostly embedded / system-on-chip)
853# 902#
903CONFIG_I2C_CPM=m
904# CONFIG_I2C_GPIO is not set
854CONFIG_I2C_MPC=y 905CONFIG_I2C_MPC=y
855# CONFIG_I2C_OCORES is not set 906# CONFIG_I2C_OCORES is not set
856# CONFIG_I2C_SIMTEC is not set 907# CONFIG_I2C_SIMTEC is not set
@@ -877,12 +928,9 @@ CONFIG_I2C_MPC=y
877# Miscellaneous I2C Chip support 928# Miscellaneous I2C Chip support
878# 929#
879# CONFIG_DS1682 is not set 930# CONFIG_DS1682 is not set
880# CONFIG_EEPROM_AT24 is not set
881CONFIG_EEPROM_LEGACY=y
882# CONFIG_SENSORS_PCF8574 is not set 931# CONFIG_SENSORS_PCF8574 is not set
883# CONFIG_PCF8575 is not set 932# CONFIG_PCF8575 is not set
884# CONFIG_SENSORS_PCA9539 is not set 933# CONFIG_SENSORS_PCA9539 is not set
885# CONFIG_SENSORS_PCF8591 is not set
886# CONFIG_SENSORS_MAX6875 is not set 934# CONFIG_SENSORS_MAX6875 is not set
887# CONFIG_SENSORS_TSL2550 is not set 935# CONFIG_SENSORS_TSL2550 is not set
888# CONFIG_I2C_DEBUG_CORE is not set 936# CONFIG_I2C_DEBUG_CORE is not set
@@ -891,7 +939,31 @@ CONFIG_EEPROM_LEGACY=y
891# CONFIG_I2C_DEBUG_CHIP is not set 939# CONFIG_I2C_DEBUG_CHIP is not set
892# CONFIG_SPI is not set 940# CONFIG_SPI is not set
893CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 941CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
894# CONFIG_GPIOLIB is not set 942CONFIG_ARCH_REQUIRE_GPIOLIB=y
943CONFIG_GPIOLIB=y
944# CONFIG_DEBUG_GPIO is not set
945# CONFIG_GPIO_SYSFS is not set
946
947#
948# Memory mapped GPIO expanders:
949#
950# CONFIG_GPIO_XILINX is not set
951
952#
953# I2C GPIO expanders:
954#
955# CONFIG_GPIO_MAX732X is not set
956# CONFIG_GPIO_PCA953X is not set
957# CONFIG_GPIO_PCF857X is not set
958
959#
960# PCI GPIO expanders:
961#
962# CONFIG_GPIO_BT8XX is not set
963
964#
965# SPI GPIO expanders:
966#
895# CONFIG_W1 is not set 967# CONFIG_W1 is not set
896# CONFIG_POWER_SUPPLY is not set 968# CONFIG_POWER_SUPPLY is not set
897# CONFIG_HWMON is not set 969# CONFIG_HWMON is not set
@@ -911,6 +983,8 @@ CONFIG_SSB_POSSIBLE=y
911# CONFIG_MFD_CORE is not set 983# CONFIG_MFD_CORE is not set
912# CONFIG_MFD_SM501 is not set 984# CONFIG_MFD_SM501 is not set
913# CONFIG_HTC_PASIC3 is not set 985# CONFIG_HTC_PASIC3 is not set
986# CONFIG_UCB1400_CORE is not set
987# CONFIG_TPS65010 is not set
914# CONFIG_TWL4030_CORE is not set 988# CONFIG_TWL4030_CORE is not set
915# CONFIG_MFD_TMIO is not set 989# CONFIG_MFD_TMIO is not set
916# CONFIG_PMIC_DA903X is not set 990# CONFIG_PMIC_DA903X is not set
@@ -935,7 +1009,7 @@ CONFIG_VIDEO_MEDIA=m
935# 1009#
936# CONFIG_MEDIA_ATTACH is not set 1010# CONFIG_MEDIA_ATTACH is not set
937CONFIG_MEDIA_TUNER=m 1011CONFIG_MEDIA_TUNER=m
938# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set 1012# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
939CONFIG_MEDIA_TUNER_SIMPLE=m 1013CONFIG_MEDIA_TUNER_SIMPLE=m
940CONFIG_MEDIA_TUNER_TDA8290=m 1014CONFIG_MEDIA_TUNER_TDA8290=m
941CONFIG_MEDIA_TUNER_TDA9887=m 1015CONFIG_MEDIA_TUNER_TDA9887=m
@@ -944,6 +1018,7 @@ CONFIG_MEDIA_TUNER_TEA5767=m
944CONFIG_MEDIA_TUNER_MT20XX=m 1018CONFIG_MEDIA_TUNER_MT20XX=m
945CONFIG_MEDIA_TUNER_XC2028=m 1019CONFIG_MEDIA_TUNER_XC2028=m
946CONFIG_MEDIA_TUNER_XC5000=m 1020CONFIG_MEDIA_TUNER_XC5000=m
1021CONFIG_MEDIA_TUNER_MC44S803=m
947# CONFIG_DVB_DYNAMIC_MINORS is not set 1022# CONFIG_DVB_DYNAMIC_MINORS is not set
948CONFIG_DVB_CAPTURE_DRIVERS=y 1023CONFIG_DVB_CAPTURE_DRIVERS=y
949 1024
@@ -983,103 +1058,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
983# 1058#
984# Supported DVB Frontends 1059# Supported DVB Frontends
985# 1060#
986
987#
988# Customise DVB Frontends
989#
990# CONFIG_DVB_FE_CUSTOMISE is not set 1061# CONFIG_DVB_FE_CUSTOMISE is not set
991
992#
993# Multistandard (satellite) frontends
994#
995# CONFIG_DVB_STB0899 is not set
996# CONFIG_DVB_STB6100 is not set
997
998#
999# DVB-S (satellite) frontends
1000#
1001# CONFIG_DVB_CX24110 is not set
1002# CONFIG_DVB_CX24123 is not set
1003# CONFIG_DVB_MT312 is not set
1004# CONFIG_DVB_S5H1420 is not set
1005# CONFIG_DVB_STV0288 is not set
1006# CONFIG_DVB_STB6000 is not set
1007# CONFIG_DVB_STV0299 is not set
1008# CONFIG_DVB_TDA8083 is not set
1009# CONFIG_DVB_TDA10086 is not set
1010# CONFIG_DVB_TDA8261 is not set
1011# CONFIG_DVB_VES1X93 is not set
1012# CONFIG_DVB_TUNER_ITD1000 is not set
1013# CONFIG_DVB_TUNER_CX24113 is not set
1014# CONFIG_DVB_TDA826X is not set
1015# CONFIG_DVB_TUA6100 is not set
1016# CONFIG_DVB_CX24116 is not set
1017# CONFIG_DVB_SI21XX is not set
1018
1019#
1020# DVB-T (terrestrial) frontends
1021#
1022# CONFIG_DVB_SP8870 is not set
1023# CONFIG_DVB_SP887X is not set
1024# CONFIG_DVB_CX22700 is not set
1025# CONFIG_DVB_CX22702 is not set
1026# CONFIG_DVB_DRX397XD is not set
1027# CONFIG_DVB_L64781 is not set
1028# CONFIG_DVB_TDA1004X is not set
1029# CONFIG_DVB_NXT6000 is not set
1030# CONFIG_DVB_MT352 is not set
1031# CONFIG_DVB_ZL10353 is not set
1032# CONFIG_DVB_DIB3000MB is not set
1033# CONFIG_DVB_DIB3000MC is not set
1034# CONFIG_DVB_DIB7000M is not set
1035# CONFIG_DVB_DIB7000P is not set
1036# CONFIG_DVB_TDA10048 is not set
1037
1038#
1039# DVB-C (cable) frontends
1040#
1041# CONFIG_DVB_VES1820 is not set
1042# CONFIG_DVB_TDA10021 is not set
1043# CONFIG_DVB_TDA10023 is not set
1044# CONFIG_DVB_STV0297 is not set
1045
1046#
1047# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
1048#
1049# CONFIG_DVB_NXT200X is not set
1050# CONFIG_DVB_OR51211 is not set
1051# CONFIG_DVB_OR51132 is not set
1052# CONFIG_DVB_BCM3510 is not set
1053# CONFIG_DVB_LGDT330X is not set
1054# CONFIG_DVB_LGDT3304 is not set
1055# CONFIG_DVB_S5H1409 is not set
1056# CONFIG_DVB_AU8522 is not set
1057# CONFIG_DVB_S5H1411 is not set
1058
1059#
1060# ISDB-T (terrestrial) frontends
1061#
1062# CONFIG_DVB_S921 is not set
1063
1064#
1065# Digital terrestrial only tuners/PLL
1066#
1067# CONFIG_DVB_PLL is not set
1068# CONFIG_DVB_TUNER_DIB0070 is not set
1069
1070#
1071# SEC control devices for DVB-S
1072#
1073# CONFIG_DVB_LNBP21 is not set
1074# CONFIG_DVB_ISL6405 is not set
1075# CONFIG_DVB_ISL6421 is not set
1076# CONFIG_DVB_LGS8GL5 is not set
1077
1078#
1079# Tools to develop new frontends
1080#
1081# CONFIG_DVB_DUMMY_FE is not set
1082# CONFIG_DVB_AF9013 is not set
1083CONFIG_DAB=y 1062CONFIG_DAB=y
1084# CONFIG_USB_DABUSB is not set 1063# CONFIG_USB_DABUSB is not set
1085 1064
@@ -1159,6 +1138,8 @@ CONFIG_SND_PCI=y
1159# CONFIG_SND_INDIGO is not set 1138# CONFIG_SND_INDIGO is not set
1160# CONFIG_SND_INDIGOIO is not set 1139# CONFIG_SND_INDIGOIO is not set
1161# CONFIG_SND_INDIGODJ is not set 1140# CONFIG_SND_INDIGODJ is not set
1141# CONFIG_SND_INDIGOIOX is not set
1142# CONFIG_SND_INDIGODJX is not set
1162# CONFIG_SND_EMU10K1 is not set 1143# CONFIG_SND_EMU10K1 is not set
1163# CONFIG_SND_EMU10K1X is not set 1144# CONFIG_SND_EMU10K1X is not set
1164# CONFIG_SND_ENS1370 is not set 1145# CONFIG_SND_ENS1370 is not set
@@ -1213,15 +1194,17 @@ CONFIG_USB_HID=y
1213# 1194#
1214# Special HID drivers 1195# Special HID drivers
1215# 1196#
1216CONFIG_HID_COMPAT=y
1217CONFIG_HID_A4TECH=y 1197CONFIG_HID_A4TECH=y
1218CONFIG_HID_APPLE=y 1198CONFIG_HID_APPLE=y
1219CONFIG_HID_BELKIN=y 1199CONFIG_HID_BELKIN=y
1220CONFIG_HID_CHERRY=y 1200CONFIG_HID_CHERRY=y
1221CONFIG_HID_CHICONY=y 1201CONFIG_HID_CHICONY=y
1222CONFIG_HID_CYPRESS=y 1202CONFIG_HID_CYPRESS=y
1203# CONFIG_DRAGONRISE_FF is not set
1223CONFIG_HID_EZKEY=y 1204CONFIG_HID_EZKEY=y
1205# CONFIG_HID_KYE is not set
1224CONFIG_HID_GYRATION=y 1206CONFIG_HID_GYRATION=y
1207# CONFIG_HID_KENSINGTON is not set
1225CONFIG_HID_LOGITECH=y 1208CONFIG_HID_LOGITECH=y
1226# CONFIG_LOGITECH_FF is not set 1209# CONFIG_LOGITECH_FF is not set
1227# CONFIG_LOGIRUMBLEPAD2_FF is not set 1210# CONFIG_LOGIRUMBLEPAD2_FF is not set
@@ -1264,9 +1247,9 @@ CONFIG_USB_MON=y
1264# 1247#
1265# CONFIG_USB_C67X00_HCD is not set 1248# CONFIG_USB_C67X00_HCD is not set
1266CONFIG_USB_EHCI_HCD=y 1249CONFIG_USB_EHCI_HCD=y
1267# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1250CONFIG_USB_EHCI_ROOT_HUB_TT=y
1268# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1251# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1269# CONFIG_USB_EHCI_FSL is not set 1252CONFIG_USB_EHCI_FSL=y
1270CONFIG_USB_EHCI_HCD_PPC_OF=y 1253CONFIG_USB_EHCI_HCD_PPC_OF=y
1271# CONFIG_USB_OXU210HP_HCD is not set 1254# CONFIG_USB_OXU210HP_HCD is not set
1272# CONFIG_USB_ISP116X_HCD is not set 1255# CONFIG_USB_ISP116X_HCD is not set
@@ -1280,10 +1263,12 @@ CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1280CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 1263CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
1281CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1264CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1282# CONFIG_USB_UHCI_HCD is not set 1265# CONFIG_USB_UHCI_HCD is not set
1266# CONFIG_USB_FHCI_HCD is not set
1283# CONFIG_USB_SL811_HCD is not set 1267# CONFIG_USB_SL811_HCD is not set
1284# CONFIG_USB_R8A66597_HCD is not set 1268# CONFIG_USB_R8A66597_HCD is not set
1285# CONFIG_USB_WHCI_HCD is not set 1269# CONFIG_USB_WHCI_HCD is not set
1286# CONFIG_USB_HWA_HCD is not set 1270# CONFIG_USB_HWA_HCD is not set
1271# CONFIG_USB_MUSB_HDRC is not set
1287 1272
1288# 1273#
1289# USB Device Class drivers 1274# USB Device Class drivers
@@ -1294,11 +1279,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1294# CONFIG_USB_TMC is not set 1279# CONFIG_USB_TMC is not set
1295 1280
1296# 1281#
1297# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1282# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1298# 1283#
1299 1284
1300# 1285#
1301# see USB_STORAGE Help for more information 1286# also be needed; see USB_STORAGE Help for more info
1302# 1287#
1303CONFIG_USB_STORAGE=y 1288CONFIG_USB_STORAGE=y
1304# CONFIG_USB_STORAGE_DEBUG is not set 1289# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1340,7 +1325,6 @@ CONFIG_USB_STORAGE=y
1340# CONFIG_USB_LED is not set 1325# CONFIG_USB_LED is not set
1341# CONFIG_USB_CYPRESS_CY7C63 is not set 1326# CONFIG_USB_CYPRESS_CY7C63 is not set
1342# CONFIG_USB_CYTHERM is not set 1327# CONFIG_USB_CYTHERM is not set
1343# CONFIG_USB_PHIDGET is not set
1344# CONFIG_USB_IDMOUSE is not set 1328# CONFIG_USB_IDMOUSE is not set
1345# CONFIG_USB_FTDI_ELAN is not set 1329# CONFIG_USB_FTDI_ELAN is not set
1346# CONFIG_USB_APPLEDISPLAY is not set 1330# CONFIG_USB_APPLEDISPLAY is not set
@@ -1356,13 +1340,24 @@ CONFIG_USB_STORAGE=y
1356# 1340#
1357# OTG and related infrastructure 1341# OTG and related infrastructure
1358# 1342#
1343# CONFIG_USB_GPIO_VBUS is not set
1344# CONFIG_NOP_USB_XCEIV is not set
1359# CONFIG_UWB is not set 1345# CONFIG_UWB is not set
1360# CONFIG_MMC is not set 1346# CONFIG_MMC is not set
1361# CONFIG_MEMSTICK is not set 1347# CONFIG_MEMSTICK is not set
1362# CONFIG_NEW_LEDS is not set 1348# CONFIG_NEW_LEDS is not set
1363# CONFIG_ACCESSIBILITY is not set 1349# CONFIG_ACCESSIBILITY is not set
1364# CONFIG_INFINIBAND is not set 1350# CONFIG_INFINIBAND is not set
1365# CONFIG_EDAC is not set 1351CONFIG_EDAC=y
1352
1353#
1354# Reporting subsystems
1355#
1356# CONFIG_EDAC_DEBUG is not set
1357CONFIG_EDAC_MM_EDAC=y
1358CONFIG_EDAC_MPC85XX=y
1359# CONFIG_EDAC_AMD8131 is not set
1360# CONFIG_EDAC_AMD8111 is not set
1366CONFIG_RTC_LIB=y 1361CONFIG_RTC_LIB=y
1367CONFIG_RTC_CLASS=y 1362CONFIG_RTC_CLASS=y
1368CONFIG_RTC_HCTOSYS=y 1363CONFIG_RTC_HCTOSYS=y
@@ -1417,8 +1412,22 @@ CONFIG_RTC_DRV_CMOS=y
1417# 1412#
1418# on-CPU RTC drivers 1413# on-CPU RTC drivers
1419# 1414#
1420# CONFIG_RTC_DRV_PPC is not set 1415# CONFIG_RTC_DRV_GENERIC is not set
1421# CONFIG_DMADEVICES is not set 1416CONFIG_DMADEVICES=y
1417
1418#
1419# DMA Devices
1420#
1421CONFIG_FSL_DMA=y
1422CONFIG_DMA_ENGINE=y
1423
1424#
1425# DMA Clients
1426#
1427# CONFIG_NET_DMA is not set
1428# CONFIG_ASYNC_TX_DMA is not set
1429# CONFIG_DMATEST is not set
1430# CONFIG_AUXDISPLAY is not set
1422# CONFIG_UIO is not set 1431# CONFIG_UIO is not set
1423# CONFIG_STAGING is not set 1432# CONFIG_STAGING is not set
1424 1433
@@ -1429,11 +1438,13 @@ CONFIG_EXT2_FS=y
1429# CONFIG_EXT2_FS_XATTR is not set 1438# CONFIG_EXT2_FS_XATTR is not set
1430# CONFIG_EXT2_FS_XIP is not set 1439# CONFIG_EXT2_FS_XIP is not set
1431CONFIG_EXT3_FS=y 1440CONFIG_EXT3_FS=y
1441# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1432CONFIG_EXT3_FS_XATTR=y 1442CONFIG_EXT3_FS_XATTR=y
1433# CONFIG_EXT3_FS_POSIX_ACL is not set 1443# CONFIG_EXT3_FS_POSIX_ACL is not set
1434# CONFIG_EXT3_FS_SECURITY is not set 1444# CONFIG_EXT3_FS_SECURITY is not set
1435# CONFIG_EXT4_FS is not set 1445# CONFIG_EXT4_FS is not set
1436CONFIG_JBD=y 1446CONFIG_JBD=y
1447# CONFIG_JBD_DEBUG is not set
1437CONFIG_FS_MBCACHE=y 1448CONFIG_FS_MBCACHE=y
1438# CONFIG_REISERFS_FS is not set 1449# CONFIG_REISERFS_FS is not set
1439# CONFIG_JFS_FS is not set 1450# CONFIG_JFS_FS is not set
@@ -1452,6 +1463,11 @@ CONFIG_INOTIFY_USER=y
1452# CONFIG_FUSE_FS is not set 1463# CONFIG_FUSE_FS is not set
1453 1464
1454# 1465#
1466# Caches
1467#
1468# CONFIG_FSCACHE is not set
1469
1470#
1455# CD-ROM/DVD Filesystems 1471# CD-ROM/DVD Filesystems
1456# 1472#
1457CONFIG_ISO9660_FS=m 1473CONFIG_ISO9660_FS=m
@@ -1506,6 +1522,7 @@ CONFIG_SYSV_FS=m
1506CONFIG_UFS_FS=m 1522CONFIG_UFS_FS=m
1507# CONFIG_UFS_FS_WRITE is not set 1523# CONFIG_UFS_FS_WRITE is not set
1508# CONFIG_UFS_DEBUG is not set 1524# CONFIG_UFS_DEBUG is not set
1525# CONFIG_NILFS2_FS is not set
1509CONFIG_NETWORK_FILESYSTEMS=y 1526CONFIG_NETWORK_FILESYSTEMS=y
1510CONFIG_NFS_FS=y 1527CONFIG_NFS_FS=y
1511CONFIG_NFS_V3=y 1528CONFIG_NFS_V3=y
@@ -1521,7 +1538,6 @@ CONFIG_EXPORTFS=y
1521CONFIG_NFS_COMMON=y 1538CONFIG_NFS_COMMON=y
1522CONFIG_SUNRPC=y 1539CONFIG_SUNRPC=y
1523CONFIG_SUNRPC_GSS=y 1540CONFIG_SUNRPC_GSS=y
1524# CONFIG_SUNRPC_REGISTER_V4 is not set
1525CONFIG_RPCSEC_GSS_KRB5=y 1541CONFIG_RPCSEC_GSS_KRB5=y
1526# CONFIG_RPCSEC_GSS_SPKM3 is not set 1542# CONFIG_RPCSEC_GSS_SPKM3 is not set
1527# CONFIG_SMB_FS is not set 1543# CONFIG_SMB_FS is not set
@@ -1592,6 +1608,10 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1592# CONFIG_NLS_KOI8_U is not set 1608# CONFIG_NLS_KOI8_U is not set
1593CONFIG_NLS_UTF8=m 1609CONFIG_NLS_UTF8=m
1594# CONFIG_DLM is not set 1610# CONFIG_DLM is not set
1611CONFIG_UCC_SLOW=y
1612CONFIG_UCC_FAST=y
1613CONFIG_UCC=y
1614# CONFIG_BINARY_PRINTF is not set
1595 1615
1596# 1616#
1597# Library routines 1617# Library routines
@@ -1606,11 +1626,12 @@ CONFIG_CRC32=y
1606# CONFIG_CRC7 is not set 1626# CONFIG_CRC7 is not set
1607CONFIG_LIBCRC32C=m 1627CONFIG_LIBCRC32C=m
1608CONFIG_ZLIB_INFLATE=y 1628CONFIG_ZLIB_INFLATE=y
1609CONFIG_PLIST=y 1629CONFIG_DECOMPRESS_GZIP=y
1610CONFIG_HAS_IOMEM=y 1630CONFIG_HAS_IOMEM=y
1611CONFIG_HAS_IOPORT=y 1631CONFIG_HAS_IOPORT=y
1612CONFIG_HAS_DMA=y 1632CONFIG_HAS_DMA=y
1613CONFIG_HAVE_LMB=y 1633CONFIG_HAVE_LMB=y
1634CONFIG_NLATTR=y
1614 1635
1615# 1636#
1616# Kernel hacking 1637# Kernel hacking
@@ -1621,13 +1642,16 @@ CONFIG_ENABLE_MUST_CHECK=y
1621CONFIG_FRAME_WARN=1024 1642CONFIG_FRAME_WARN=1024
1622# CONFIG_MAGIC_SYSRQ is not set 1643# CONFIG_MAGIC_SYSRQ is not set
1623# CONFIG_UNUSED_SYMBOLS is not set 1644# CONFIG_UNUSED_SYMBOLS is not set
1624# CONFIG_DEBUG_FS is not set 1645CONFIG_DEBUG_FS=y
1625# CONFIG_HEADERS_CHECK is not set 1646# CONFIG_HEADERS_CHECK is not set
1626CONFIG_DEBUG_KERNEL=y 1647CONFIG_DEBUG_KERNEL=y
1627# CONFIG_DEBUG_SHIRQ is not set 1648# CONFIG_DEBUG_SHIRQ is not set
1628CONFIG_DETECT_SOFTLOCKUP=y 1649CONFIG_DETECT_SOFTLOCKUP=y
1629# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1650# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1630CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1651CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1652CONFIG_DETECT_HUNG_TASK=y
1653# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1654CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1631CONFIG_SCHED_DEBUG=y 1655CONFIG_SCHED_DEBUG=y
1632# CONFIG_SCHEDSTATS is not set 1656# CONFIG_SCHEDSTATS is not set
1633# CONFIG_TIMER_STATS is not set 1657# CONFIG_TIMER_STATS is not set
@@ -1658,9 +1682,12 @@ CONFIG_DEBUG_INFO=y
1658# CONFIG_FAULT_INJECTION is not set 1682# CONFIG_FAULT_INJECTION is not set
1659# CONFIG_LATENCYTOP is not set 1683# CONFIG_LATENCYTOP is not set
1660CONFIG_SYSCTL_SYSCALL_CHECK=y 1684CONFIG_SYSCTL_SYSCALL_CHECK=y
1685# CONFIG_DEBUG_PAGEALLOC is not set
1661CONFIG_HAVE_FUNCTION_TRACER=y 1686CONFIG_HAVE_FUNCTION_TRACER=y
1687CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1662CONFIG_HAVE_DYNAMIC_FTRACE=y 1688CONFIG_HAVE_DYNAMIC_FTRACE=y
1663CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1689CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1690CONFIG_TRACING_SUPPORT=y
1664 1691
1665# 1692#
1666# Tracers 1693# Tracers
@@ -1668,22 +1695,26 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1668# CONFIG_FUNCTION_TRACER is not set 1695# CONFIG_FUNCTION_TRACER is not set
1669# CONFIG_SCHED_TRACER is not set 1696# CONFIG_SCHED_TRACER is not set
1670# CONFIG_CONTEXT_SWITCH_TRACER is not set 1697# CONFIG_CONTEXT_SWITCH_TRACER is not set
1698# CONFIG_EVENT_TRACER is not set
1671# CONFIG_BOOT_TRACER is not set 1699# CONFIG_BOOT_TRACER is not set
1672# CONFIG_TRACE_BRANCH_PROFILING is not set 1700# CONFIG_TRACE_BRANCH_PROFILING is not set
1673# CONFIG_STACK_TRACER is not set 1701# CONFIG_STACK_TRACER is not set
1674# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1702# CONFIG_KMEMTRACE is not set
1703# CONFIG_WORKQUEUE_TRACER is not set
1704# CONFIG_BLK_DEV_IO_TRACE is not set
1705# CONFIG_DYNAMIC_DEBUG is not set
1675# CONFIG_SAMPLES is not set 1706# CONFIG_SAMPLES is not set
1676CONFIG_HAVE_ARCH_KGDB=y 1707CONFIG_HAVE_ARCH_KGDB=y
1677# CONFIG_KGDB is not set 1708# CONFIG_KGDB is not set
1678CONFIG_PRINT_STACK_DEPTH=64 1709CONFIG_PRINT_STACK_DEPTH=64
1679# CONFIG_DEBUG_STACKOVERFLOW is not set 1710# CONFIG_DEBUG_STACKOVERFLOW is not set
1680# CONFIG_DEBUG_STACK_USAGE is not set 1711# CONFIG_DEBUG_STACK_USAGE is not set
1681# CONFIG_DEBUG_PAGEALLOC is not set
1682# CONFIG_CODE_PATCHING_SELFTEST is not set 1712# CONFIG_CODE_PATCHING_SELFTEST is not set
1683# CONFIG_FTR_FIXUP_SELFTEST is not set 1713# CONFIG_FTR_FIXUP_SELFTEST is not set
1684# CONFIG_MSI_BITMAP_SELFTEST is not set 1714# CONFIG_MSI_BITMAP_SELFTEST is not set
1685# CONFIG_XMON is not set 1715# CONFIG_XMON is not set
1686# CONFIG_IRQSTACKS is not set 1716# CONFIG_IRQSTACKS is not set
1717CONFIG_VIRQ_DEBUG=y
1687# CONFIG_BDI_SWITCH is not set 1718# CONFIG_BDI_SWITCH is not set
1688# CONFIG_PPC_EARLY_DEBUG is not set 1719# CONFIG_PPC_EARLY_DEBUG is not set
1689 1720
@@ -1709,10 +1740,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1709CONFIG_CRYPTO_HASH=y 1740CONFIG_CRYPTO_HASH=y
1710CONFIG_CRYPTO_HASH2=y 1741CONFIG_CRYPTO_HASH2=y
1711CONFIG_CRYPTO_RNG2=y 1742CONFIG_CRYPTO_RNG2=y
1743CONFIG_CRYPTO_PCOMP=y
1712CONFIG_CRYPTO_MANAGER=y 1744CONFIG_CRYPTO_MANAGER=y
1713CONFIG_CRYPTO_MANAGER2=y 1745CONFIG_CRYPTO_MANAGER2=y
1714# CONFIG_CRYPTO_GF128MUL is not set 1746# CONFIG_CRYPTO_GF128MUL is not set
1715# CONFIG_CRYPTO_NULL is not set 1747# CONFIG_CRYPTO_NULL is not set
1748CONFIG_CRYPTO_WORKQUEUE=y
1716# CONFIG_CRYPTO_CRYPTD is not set 1749# CONFIG_CRYPTO_CRYPTD is not set
1717CONFIG_CRYPTO_AUTHENC=y 1750CONFIG_CRYPTO_AUTHENC=y
1718# CONFIG_CRYPTO_TEST is not set 1751# CONFIG_CRYPTO_TEST is not set
@@ -1781,6 +1814,7 @@ CONFIG_CRYPTO_DES=y
1781# Compression 1814# Compression
1782# 1815#
1783# CONFIG_CRYPTO_DEFLATE is not set 1816# CONFIG_CRYPTO_DEFLATE is not set
1817# CONFIG_CRYPTO_ZLIB is not set
1784# CONFIG_CRYPTO_LZO is not set 1818# CONFIG_CRYPTO_LZO is not set
1785 1819
1786# 1820#
@@ -1790,5 +1824,6 @@ CONFIG_CRYPTO_DES=y
1790CONFIG_CRYPTO_HW=y 1824CONFIG_CRYPTO_HW=y
1791# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1825# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1792CONFIG_CRYPTO_DEV_TALITOS=y 1826CONFIG_CRYPTO_DEV_TALITOS=y
1793# CONFIG_PPC_CLOCK is not set 1827CONFIG_PPC_CLOCK=y
1828CONFIG_PPC_LIB_RHEAP=y
1794# CONFIG_VIRTUALIZATION is not set 1829# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
index 1a856b15226e..087c22f1d368 100644
--- a/arch/powerpc/include/asm/elf.h
+++ b/arch/powerpc/include/asm/elf.h
@@ -258,7 +258,8 @@ do { \
258# define elf_read_implies_exec(ex, exec_stk) (test_thread_flag(TIF_32BIT) ? \ 258# define elf_read_implies_exec(ex, exec_stk) (test_thread_flag(TIF_32BIT) ? \
259 (exec_stk != EXSTACK_DISABLE_X) : 0) 259 (exec_stk != EXSTACK_DISABLE_X) : 0)
260#else 260#else
261# define SET_PERSONALITY(ex) set_personality(PER_LINUX) 261# define SET_PERSONALITY(ex) \
262 set_personality(PER_LINUX | (current->personality & (~PER_MASK)))
262#endif /* __powerpc64__ */ 263#endif /* __powerpc64__ */
263 264
264extern int dcache_bsize; 265extern int dcache_bsize;
diff --git a/arch/powerpc/include/asm/futex.h b/arch/powerpc/include/asm/futex.h
index 6d406c5c5de4..9696cc36d2dc 100644
--- a/arch/powerpc/include/asm/futex.h
+++ b/arch/powerpc/include/asm/futex.h
@@ -27,7 +27,7 @@
27 PPC_LONG "1b,4b,2b,4b\n" \ 27 PPC_LONG "1b,4b,2b,4b\n" \
28 ".previous" \ 28 ".previous" \
29 : "=&r" (oldval), "=&r" (ret) \ 29 : "=&r" (oldval), "=&r" (ret) \
30 : "b" (uaddr), "i" (-EFAULT), "1" (oparg) \ 30 : "b" (uaddr), "i" (-EFAULT), "r" (oparg) \
31 : "cr0", "memory") 31 : "cr0", "memory")
32 32
33static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr) 33static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
@@ -47,19 +47,19 @@ static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
47 47
48 switch (op) { 48 switch (op) {
49 case FUTEX_OP_SET: 49 case FUTEX_OP_SET:
50 __futex_atomic_op("", ret, oldval, uaddr, oparg); 50 __futex_atomic_op("mr %1,%4\n", ret, oldval, uaddr, oparg);
51 break; 51 break;
52 case FUTEX_OP_ADD: 52 case FUTEX_OP_ADD:
53 __futex_atomic_op("add %1,%0,%1\n", ret, oldval, uaddr, oparg); 53 __futex_atomic_op("add %1,%0,%4\n", ret, oldval, uaddr, oparg);
54 break; 54 break;
55 case FUTEX_OP_OR: 55 case FUTEX_OP_OR:
56 __futex_atomic_op("or %1,%0,%1\n", ret, oldval, uaddr, oparg); 56 __futex_atomic_op("or %1,%0,%4\n", ret, oldval, uaddr, oparg);
57 break; 57 break;
58 case FUTEX_OP_ANDN: 58 case FUTEX_OP_ANDN:
59 __futex_atomic_op("andc %1,%0,%1\n", ret, oldval, uaddr, oparg); 59 __futex_atomic_op("andc %1,%0,%4\n", ret, oldval, uaddr, oparg);
60 break; 60 break;
61 case FUTEX_OP_XOR: 61 case FUTEX_OP_XOR:
62 __futex_atomic_op("xor %1,%0,%1\n", ret, oldval, uaddr, oparg); 62 __futex_atomic_op("xor %1,%0,%4\n", ret, oldval, uaddr, oparg);
63 break; 63 break;
64 default: 64 default:
65 ret = -ENOSYS; 65 ret = -ENOSYS;
diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h
index cbf154387091..86d2366ab6a1 100644
--- a/arch/powerpc/include/asm/mmu.h
+++ b/arch/powerpc/include/asm/mmu.h
@@ -52,6 +52,12 @@
52 */ 52 */
53#define MMU_FTR_NEED_DTLB_SW_LRU ASM_CONST(0x00200000) 53#define MMU_FTR_NEED_DTLB_SW_LRU ASM_CONST(0x00200000)
54 54
55/* This indicates that the processor uses the wrong opcode for tlbilx
56 * instructions. During the ISA 2.06 development the opcode for tlbilx
57 * changed and some early implementations used to old opcode
58 */
59#define MMU_FTR_TLBILX_EARLY_OPCODE ASM_CONST(0x00400000)
60
55#ifndef __ASSEMBLY__ 61#ifndef __ASSEMBLY__
56#include <asm/cputable.h> 62#include <asm/cputable.h>
57 63
diff --git a/arch/powerpc/include/asm/parport.h b/arch/powerpc/include/asm/parport.h
index 414c50e2e881..94942d60ddfd 100644
--- a/arch/powerpc/include/asm/parport.h
+++ b/arch/powerpc/include/asm/parport.h
@@ -29,7 +29,7 @@ static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma)
29 prop = of_get_property(np, "interrupts", NULL); 29 prop = of_get_property(np, "interrupts", NULL);
30 if (!prop) 30 if (!prop)
31 continue; 31 continue;
32 if (parport_pc_probe_port(io1, io2, prop[0], autodma, NULL) != NULL) 32 if (parport_pc_probe_port(io1, io2, prop[0], autodma, NULL, 0) != NULL)
33 count++; 33 count++;
34 } 34 }
35 return count; 35 return count;
diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h
index f4a4db8d5555..ef4da37f3c10 100644
--- a/arch/powerpc/include/asm/ppc-opcode.h
+++ b/arch/powerpc/include/asm/ppc-opcode.h
@@ -43,7 +43,8 @@
43 43
44#define PPC_INST_STSWI 0x7c0005aa 44#define PPC_INST_STSWI 0x7c0005aa
45#define PPC_INST_STSWX 0x7c00052a 45#define PPC_INST_STSWX 0x7c00052a
46#define PPC_INST_TLBILX 0x7c000626 46#define PPC_INST_TLBILX 0x7c000024
47#define PPC_INST_TLBILX_EARLY 0x7c000626
47#define PPC_INST_WAIT 0x7c00007c 48#define PPC_INST_WAIT 0x7c00007c
48 49
49/* macros to insert fields into opcodes */ 50/* macros to insert fields into opcodes */
@@ -63,10 +64,18 @@
63#define PPC_RFDI stringify_in_c(.long PPC_INST_RFDI) 64#define PPC_RFDI stringify_in_c(.long PPC_INST_RFDI)
64#define PPC_RFMCI stringify_in_c(.long PPC_INST_RFMCI) 65#define PPC_RFMCI stringify_in_c(.long PPC_INST_RFMCI)
65#define PPC_TLBILX(t, a, b) stringify_in_c(.long PPC_INST_TLBILX | \ 66#define PPC_TLBILX(t, a, b) stringify_in_c(.long PPC_INST_TLBILX | \
66 __PPC_T_TLB(t) | __PPC_RA(a) | __PPC_RB(b)) 67 __PPC_T_TLB(t) | \
68 __PPC_RA(a) | __PPC_RB(b))
67#define PPC_TLBILX_ALL(a, b) PPC_TLBILX(0, a, b) 69#define PPC_TLBILX_ALL(a, b) PPC_TLBILX(0, a, b)
68#define PPC_TLBILX_PID(a, b) PPC_TLBILX(1, a, b) 70#define PPC_TLBILX_PID(a, b) PPC_TLBILX(1, a, b)
69#define PPC_TLBILX_VA(a, b) PPC_TLBILX(3, a, b) 71#define PPC_TLBILX_VA(a, b) PPC_TLBILX(3, a, b)
72
73#define PPC_TLBILX_EARLY(t, a, b) stringify_in_c(.long PPC_INST_TLBILX_EARLY | \
74 __PPC_T_TLB(t) | \
75 __PPC_RA(a) | __PPC_RB(b))
76#define PPC_TLBILX_ALL_EARLY(a, b) PPC_TLBILX_EARLY(0, a, b)
77#define PPC_TLBILX_PID_EARLY(a, b) PPC_TLBILX_EARLY(1, a, b)
78#define PPC_TLBILX_VA_EARLY(a, b) PPC_TLBILX_EARLY(3, a, b)
70#define PPC_WAIT(w) stringify_in_c(.long PPC_INST_WAIT | \ 79#define PPC_WAIT(w) stringify_in_c(.long PPC_INST_WAIT | \
71 __PPC_WC(w)) 80 __PPC_WC(w))
72 81
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index cd1b687544f3..57db50f40289 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -1766,7 +1766,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
1766 .cpu_features = CPU_FTRS_E500MC, 1766 .cpu_features = CPU_FTRS_E500MC,
1767 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1767 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
1768 .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | 1768 .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS |
1769 MMU_FTR_USE_TLBILX, 1769 MMU_FTR_USE_TLBILX | MMU_FTR_TLBILX_EARLY_OPCODE,
1770 .icache_bsize = 64, 1770 .icache_bsize = 64,
1771 .dcache_bsize = 64, 1771 .dcache_bsize = 64,
1772 .num_pmcs = 4, 1772 .num_pmcs = 4,
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index 54e68c11ae15..c01467f952d3 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -21,6 +21,7 @@
21 * 21 *
22 */ 22 */
23 23
24#include <linux/init.h>
24#include <asm/reg.h> 25#include <asm/reg.h>
25#include <asm/page.h> 26#include <asm/page.h>
26#include <asm/mmu.h> 27#include <asm/mmu.h>
@@ -50,7 +51,7 @@
50 mtspr SPRN_DBAT##n##L,RB; \ 51 mtspr SPRN_DBAT##n##L,RB; \
511: 521:
52 53
53 .section .text.head, "ax" 54 __HEAD
54 .stabs "arch/powerpc/kernel/",N_SO,0,0,0f 55 .stabs "arch/powerpc/kernel/",N_SO,0,0,0f
55 .stabs "head_32.S",N_SO,0,0,0f 56 .stabs "head_32.S",N_SO,0,0,0f
560: 570:
diff --git a/arch/powerpc/kernel/head_40x.S b/arch/powerpc/kernel/head_40x.S
index 56d8e5d90c5b..0c96911d4299 100644
--- a/arch/powerpc/kernel/head_40x.S
+++ b/arch/powerpc/kernel/head_40x.S
@@ -31,6 +31,7 @@
31 * 31 *
32 */ 32 */
33 33
34#include <linux/init.h>
34#include <asm/processor.h> 35#include <asm/processor.h>
35#include <asm/page.h> 36#include <asm/page.h>
36#include <asm/mmu.h> 37#include <asm/mmu.h>
@@ -52,7 +53,7 @@
52 * 53 *
53 * This is all going to change RSN when we add bi_recs....... -- Dan 54 * This is all going to change RSN when we add bi_recs....... -- Dan
54 */ 55 */
55 .section .text.head, "ax" 56 __HEAD
56_ENTRY(_stext); 57_ENTRY(_stext);
57_ENTRY(_start); 58_ENTRY(_start);
58 59
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index b56fecc93a16..18d8a1677c4d 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -28,6 +28,7 @@
28 * option) any later version. 28 * option) any later version.
29 */ 29 */
30 30
31#include <linux/init.h>
31#include <asm/processor.h> 32#include <asm/processor.h>
32#include <asm/page.h> 33#include <asm/page.h>
33#include <asm/mmu.h> 34#include <asm/mmu.h>
@@ -50,7 +51,7 @@
50 * r7 - End of kernel command line string 51 * r7 - End of kernel command line string
51 * 52 *
52 */ 53 */
53 .section .text.head, "ax" 54 __HEAD
54_ENTRY(_stext); 55_ENTRY(_stext);
55_ENTRY(_start); 56_ENTRY(_start);
56 /* 57 /*
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 3c9452d4308b..52ff8c53b93c 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -19,6 +19,7 @@
19 * 19 *
20 */ 20 */
21 21
22#include <linux/init.h>
22#include <asm/processor.h> 23#include <asm/processor.h>
23#include <asm/page.h> 24#include <asm/page.h>
24#include <asm/mmu.h> 25#include <asm/mmu.h>
@@ -38,7 +39,7 @@
38#else 39#else
39#define DO_8xx_CPU6(val, reg) 40#define DO_8xx_CPU6(val, reg)
40#endif 41#endif
41 .section .text.head, "ax" 42 __HEAD
42_ENTRY(_stext); 43_ENTRY(_stext);
43_ENTRY(_start); 44_ENTRY(_start);
44 45
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S
index 4c22620d009b..5bdcc06d294c 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -30,6 +30,7 @@
30 * option) any later version. 30 * option) any later version.
31 */ 31 */
32 32
33#include <linux/init.h>
33#include <linux/threads.h> 34#include <linux/threads.h>
34#include <asm/processor.h> 35#include <asm/processor.h>
35#include <asm/page.h> 36#include <asm/page.h>
@@ -53,7 +54,7 @@
53 * r7 - End of kernel command line string 54 * r7 - End of kernel command line string
54 * 55 *
55 */ 56 */
56 .section .text.head, "ax" 57 __HEAD
57_ENTRY(_stext); 58_ENTRY(_stext);
58_ENTRY(_start); 59_ENTRY(_start);
59 /* 60 /*
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c
index 8f0856f312da..8362620c9e6f 100644
--- a/arch/powerpc/kernel/prom_parse.c
+++ b/arch/powerpc/kernel/prom_parse.c
@@ -971,7 +971,7 @@ int of_irq_map_one(struct device_node *device, int index, struct of_irq *out_irq
971 struct device_node *p; 971 struct device_node *p;
972 const u32 *intspec, *tmp, *addr; 972 const u32 *intspec, *tmp, *addr;
973 u32 intsize, intlen; 973 u32 intsize, intlen;
974 int res; 974 int res = -EINVAL;
975 975
976 DBG("of_irq_map_one: dev=%s, index=%d\n", device->full_name, index); 976 DBG("of_irq_map_one: dev=%s, index=%d\n", device->full_name, index);
977 977
@@ -995,21 +995,20 @@ int of_irq_map_one(struct device_node *device, int index, struct of_irq *out_irq
995 995
996 /* Get size of interrupt specifier */ 996 /* Get size of interrupt specifier */
997 tmp = of_get_property(p, "#interrupt-cells", NULL); 997 tmp = of_get_property(p, "#interrupt-cells", NULL);
998 if (tmp == NULL) { 998 if (tmp == NULL)
999 of_node_put(p); 999 goto out;
1000 return -EINVAL;
1001 }
1002 intsize = *tmp; 1000 intsize = *tmp;
1003 1001
1004 DBG(" intsize=%d intlen=%d\n", intsize, intlen); 1002 DBG(" intsize=%d intlen=%d\n", intsize, intlen);
1005 1003
1006 /* Check index */ 1004 /* Check index */
1007 if ((index + 1) * intsize > intlen) 1005 if ((index + 1) * intsize > intlen)
1008 return -EINVAL; 1006 goto out;
1009 1007
1010 /* Get new specifier and map it */ 1008 /* Get new specifier and map it */
1011 res = of_irq_map_raw(p, intspec + index * intsize, intsize, 1009 res = of_irq_map_raw(p, intspec + index * intsize, intsize,
1012 addr, out_irq); 1010 addr, out_irq);
1011out:
1013 of_node_put(p); 1012 of_node_put(p);
1014 return res; 1013 return res;
1015} 1014}
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 926ea864e34f..48571ac56fb7 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -77,7 +77,7 @@
77#include <linux/clockchips.h> 77#include <linux/clockchips.h>
78#include <linux/clocksource.h> 78#include <linux/clocksource.h>
79 79
80static cycle_t rtc_read(void); 80static cycle_t rtc_read(struct clocksource *);
81static struct clocksource clocksource_rtc = { 81static struct clocksource clocksource_rtc = {
82 .name = "rtc", 82 .name = "rtc",
83 .rating = 400, 83 .rating = 400,
@@ -88,7 +88,7 @@ static struct clocksource clocksource_rtc = {
88 .read = rtc_read, 88 .read = rtc_read,
89}; 89};
90 90
91static cycle_t timebase_read(void); 91static cycle_t timebase_read(struct clocksource *);
92static struct clocksource clocksource_timebase = { 92static struct clocksource clocksource_timebase = {
93 .name = "timebase", 93 .name = "timebase",
94 .rating = 400, 94 .rating = 400,
@@ -766,12 +766,12 @@ unsigned long read_persistent_clock(void)
766} 766}
767 767
768/* clocksource code */ 768/* clocksource code */
769static cycle_t rtc_read(void) 769static cycle_t rtc_read(struct clocksource *cs)
770{ 770{
771 return (cycle_t)get_rtc(); 771 return (cycle_t)get_rtc();
772} 772}
773 773
774static cycle_t timebase_read(void) 774static cycle_t timebase_read(struct clocksource *cs)
775{ 775{
776 return (cycle_t)get_tb(); 776 return (cycle_t)get_tb();
777} 777}
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index b9ef1644a722..d7425fffbc1c 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -52,7 +52,7 @@ SECTIONS
52 /* Text and gots */ 52 /* Text and gots */
53 .text : AT(ADDR(.text) - LOAD_OFFSET) { 53 .text : AT(ADDR(.text) - LOAD_OFFSET) {
54 ALIGN_FUNCTION(); 54 ALIGN_FUNCTION();
55 *(.text.head) 55 HEAD_TEXT
56 _text = .; 56 _text = .;
57 *(.text .fixup .text.init.refok .exit.text.refok __ftr_alt_*) 57 *(.text .fixup .text.init.refok .exit.text.refok __ftr_alt_*)
58 SCHED_TEXT 58 SCHED_TEXT
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index db556d25c3a7..1ade7eb6ae00 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -753,7 +753,7 @@ void __init early_init_mmu(void)
753} 753}
754 754
755#ifdef CONFIG_SMP 755#ifdef CONFIG_SMP
756void __init early_init_mmu_secondary(void) 756void __cpuinit early_init_mmu_secondary(void)
757{ 757{
758 /* Initialize hash table for that CPU */ 758 /* Initialize hash table for that CPU */
759 if (!firmware_has_feature(FW_FEATURE_LPAR)) 759 if (!firmware_has_feature(FW_FEATURE_LPAR))
diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c
index 7af72970faed..ad2eb4d34dd4 100644
--- a/arch/powerpc/mm/tlb_nohash.c
+++ b/arch/powerpc/mm/tlb_nohash.c
@@ -125,7 +125,6 @@ static void do_flush_tlb_page_ipi(void *param)
125 125
126void flush_tlb_mm(struct mm_struct *mm) 126void flush_tlb_mm(struct mm_struct *mm)
127{ 127{
128 cpumask_t cpu_mask;
129 unsigned int pid; 128 unsigned int pid;
130 129
131 preempt_disable(); 130 preempt_disable();
diff --git a/arch/powerpc/mm/tlb_nohash_low.S b/arch/powerpc/mm/tlb_nohash_low.S
index 788b87c36f77..45fed3698349 100644
--- a/arch/powerpc/mm/tlb_nohash_low.S
+++ b/arch/powerpc/mm/tlb_nohash_low.S
@@ -138,7 +138,11 @@ BEGIN_MMU_FTR_SECTION
138 andi. r3,r3,MMUCSR0_TLBFI@l 138 andi. r3,r3,MMUCSR0_TLBFI@l
139 bne 1b 139 bne 1b
140MMU_FTR_SECTION_ELSE 140MMU_FTR_SECTION_ELSE
141 PPC_TLBILX_ALL(0,0) 141 BEGIN_MMU_FTR_SECTION_NESTED(96)
142 PPC_TLBILX_ALL(0,r3)
143 MMU_FTR_SECTION_ELSE_NESTED(96)
144 PPC_TLBILX_ALL_EARLY(0,r3)
145 ALT_MMU_FTR_SECTION_END_NESTED_IFCLR(MMU_FTR_TLBILX_EARLY_OPCODE, 96)
142ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_USE_TLBILX) 146ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_USE_TLBILX)
143 msync 147 msync
144 isync 148 isync
@@ -151,7 +155,11 @@ BEGIN_MMU_FTR_SECTION
151 wrteei 0 155 wrteei 0
152 mfspr r4,SPRN_MAS6 /* save MAS6 */ 156 mfspr r4,SPRN_MAS6 /* save MAS6 */
153 mtspr SPRN_MAS6,r3 157 mtspr SPRN_MAS6,r3
158 BEGIN_MMU_FTR_SECTION_NESTED(96)
154 PPC_TLBILX_PID(0,0) 159 PPC_TLBILX_PID(0,0)
160 MMU_FTR_SECTION_ELSE_NESTED(96)
161 PPC_TLBILX_PID_EARLY(0,0)
162 ALT_MMU_FTR_SECTION_END_NESTED_IFCLR(MMU_FTR_TLBILX_EARLY_OPCODE, 96)
155 mtspr SPRN_MAS6,r4 /* restore MAS6 */ 163 mtspr SPRN_MAS6,r4 /* restore MAS6 */
156 wrtee r10 164 wrtee r10
157MMU_FTR_SECTION_ELSE 165MMU_FTR_SECTION_ELSE
@@ -185,7 +193,11 @@ BEGIN_MMU_FTR_SECTION
185 mtspr SPRN_MAS1,r4 193 mtspr SPRN_MAS1,r4
186 tlbwe 194 tlbwe
187MMU_FTR_SECTION_ELSE 195MMU_FTR_SECTION_ELSE
196 BEGIN_MMU_FTR_SECTION_NESTED(96)
188 PPC_TLBILX_VA(0,r3) 197 PPC_TLBILX_VA(0,r3)
198 MMU_FTR_SECTION_ELSE_NESTED(96)
199 PPC_TLBILX_VA_EARLY(0,r3)
200 ALT_MMU_FTR_SECTION_END_NESTED_IFCLR(MMU_FTR_TLBILX_EARLY_OPCODE, 96)
189ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_USE_TLBILX) 201ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_USE_TLBILX)
190 msync 202 msync
191 isync 203 isync
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c
index 1db6b9e037fc..65a35f38e062 100644
--- a/arch/powerpc/platforms/fsl_uli1575.c
+++ b/arch/powerpc/platforms/fsl_uli1575.c
@@ -275,11 +275,6 @@ static void __devinit hpcd_quirk_uli5288(struct pci_dev *dev)
275 if (!machine_is(mpc86xx_hpcd)) 275 if (!machine_is(mpc86xx_hpcd))
276 return; 276 return;
277 277
278 /* Interrupt Disable, Needed when SATA disabled */
279 pci_read_config_word(dev, PCI_COMMAND, &temp);
280 temp |= 1<<10;
281 pci_write_config_word(dev, PCI_COMMAND, temp);
282
283 pci_read_config_byte(dev, 0x83, &c); 278 pci_read_config_byte(dev, 0x83, &c);
284 c |= 0x80; 279 c |= 0x80;
285 pci_write_config_byte(dev, 0x83, c); 280 pci_write_config_byte(dev, 0x83, c);
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index c64fb5bfb37e..153051eb6d93 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -44,10 +44,6 @@
44 44
45#include "pasemi.h" 45#include "pasemi.h"
46 46
47#if !defined(CONFIG_SMP)
48static void smp_send_stop(void) {}
49#endif
50
51/* SDC reset register, must be pre-mapped at reset time */ 47/* SDC reset register, must be pre-mapped at reset time */
52static void __iomem *reset_reg; 48static void __iomem *reset_reg;
53 49
diff --git a/arch/powerpc/platforms/ps3/os-area.c b/arch/powerpc/platforms/ps3/os-area.c
index 86e392b1b049..cf1cd0f8c18f 100644
--- a/arch/powerpc/platforms/ps3/os-area.c
+++ b/arch/powerpc/platforms/ps3/os-area.c
@@ -578,7 +578,7 @@ static void os_area_db_init(struct os_area_db *db)
578 * 578 *
579 */ 579 */
580 580
581static void update_flash_db(void) 581static void __maybe_unused update_flash_db(void)
582{ 582{
583 int result; 583 int result;
584 int file; 584 int file;
diff --git a/arch/powerpc/platforms/pseries/dtl.c b/arch/powerpc/platforms/pseries/dtl.c
index fafcaa0e81ef..ab69925d579b 100644
--- a/arch/powerpc/platforms/pseries/dtl.c
+++ b/arch/powerpc/platforms/pseries/dtl.c
@@ -25,6 +25,7 @@
25#include <asm/smp.h> 25#include <asm/smp.h>
26#include <asm/system.h> 26#include <asm/system.h>
27#include <asm/uaccess.h> 27#include <asm/uaccess.h>
28#include <asm/firmware.h>
28 29
29#include "plpar_wrappers.h" 30#include "plpar_wrappers.h"
30 31
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c
index 380420f8c400..9a2a6e32f00f 100644
--- a/arch/powerpc/platforms/pseries/eeh_driver.c
+++ b/arch/powerpc/platforms/pseries/eeh_driver.c
@@ -182,6 +182,8 @@ static void eeh_report_reset(struct pci_dev *dev, void *userdata)
182 if (!driver) 182 if (!driver)
183 return; 183 return;
184 184
185 dev->error_state = pci_channel_io_normal;
186
185 eeh_enable_irq(dev); 187 eeh_enable_irq(dev);
186 188
187 if (!driver->err_handler || 189 if (!driver->err_handler ||
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c
index a0fa4ebb39c6..abdb124e1e2f 100644
--- a/arch/powerpc/sysdev/fsl_rio.c
+++ b/arch/powerpc/sysdev/fsl_rio.c
@@ -18,6 +18,7 @@
18#include <linux/types.h> 18#include <linux/types.h>
19#include <linux/dma-mapping.h> 19#include <linux/dma-mapping.h>
20#include <linux/interrupt.h> 20#include <linux/interrupt.h>
21#include <linux/device.h>
21#include <linux/rio.h> 22#include <linux/rio.h>
22#include <linux/rio_drv.h> 23#include <linux/rio_drv.h>
23#include <linux/of_platform.h> 24#include <linux/of_platform.h>
@@ -159,6 +160,7 @@ struct rio_msg_rx_ring {
159}; 160};
160 161
161struct rio_priv { 162struct rio_priv {
163 struct device *dev;
162 void __iomem *regs_win; 164 void __iomem *regs_win;
163 struct rio_atmu_regs __iomem *atmu_regs; 165 struct rio_atmu_regs __iomem *atmu_regs;
164 struct rio_atmu_regs __iomem *maint_atmu_regs; 166 struct rio_atmu_regs __iomem *maint_atmu_regs;
@@ -484,13 +486,13 @@ int rio_open_outb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entr
484 486
485 for (i = 0; i < priv->msg_tx_ring.size; i++) { 487 for (i = 0; i < priv->msg_tx_ring.size; i++) {
486 priv->msg_tx_ring.virt_buffer[i] = 488 priv->msg_tx_ring.virt_buffer[i] =
487 dma_alloc_coherent(NULL, RIO_MSG_BUFFER_SIZE, 489 dma_alloc_coherent(priv->dev, RIO_MSG_BUFFER_SIZE,
488 &priv->msg_tx_ring.phys_buffer[i], GFP_KERNEL); 490 &priv->msg_tx_ring.phys_buffer[i], GFP_KERNEL);
489 if (!priv->msg_tx_ring.virt_buffer[i]) { 491 if (!priv->msg_tx_ring.virt_buffer[i]) {
490 rc = -ENOMEM; 492 rc = -ENOMEM;
491 for (j = 0; j < priv->msg_tx_ring.size; j++) 493 for (j = 0; j < priv->msg_tx_ring.size; j++)
492 if (priv->msg_tx_ring.virt_buffer[j]) 494 if (priv->msg_tx_ring.virt_buffer[j])
493 dma_free_coherent(NULL, 495 dma_free_coherent(priv->dev,
494 RIO_MSG_BUFFER_SIZE, 496 RIO_MSG_BUFFER_SIZE,
495 priv->msg_tx_ring. 497 priv->msg_tx_ring.
496 virt_buffer[j], 498 virt_buffer[j],
@@ -501,7 +503,7 @@ int rio_open_outb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entr
501 } 503 }
502 504
503 /* Initialize outbound message descriptor ring */ 505 /* Initialize outbound message descriptor ring */
504 priv->msg_tx_ring.virt = dma_alloc_coherent(NULL, 506 priv->msg_tx_ring.virt = dma_alloc_coherent(priv->dev,
505 priv->msg_tx_ring.size * RIO_MSG_DESC_SIZE, 507 priv->msg_tx_ring.size * RIO_MSG_DESC_SIZE,
506 &priv->msg_tx_ring.phys, GFP_KERNEL); 508 &priv->msg_tx_ring.phys, GFP_KERNEL);
507 if (!priv->msg_tx_ring.virt) { 509 if (!priv->msg_tx_ring.virt) {
@@ -549,12 +551,13 @@ int rio_open_outb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entr
549 return rc; 551 return rc;
550 552
551 out_irq: 553 out_irq:
552 dma_free_coherent(NULL, priv->msg_tx_ring.size * RIO_MSG_DESC_SIZE, 554 dma_free_coherent(priv->dev,
555 priv->msg_tx_ring.size * RIO_MSG_DESC_SIZE,
553 priv->msg_tx_ring.virt, priv->msg_tx_ring.phys); 556 priv->msg_tx_ring.virt, priv->msg_tx_ring.phys);
554 557
555 out_dma: 558 out_dma:
556 for (i = 0; i < priv->msg_tx_ring.size; i++) 559 for (i = 0; i < priv->msg_tx_ring.size; i++)
557 dma_free_coherent(NULL, RIO_MSG_BUFFER_SIZE, 560 dma_free_coherent(priv->dev, RIO_MSG_BUFFER_SIZE,
558 priv->msg_tx_ring.virt_buffer[i], 561 priv->msg_tx_ring.virt_buffer[i],
559 priv->msg_tx_ring.phys_buffer[i]); 562 priv->msg_tx_ring.phys_buffer[i]);
560 563
@@ -576,7 +579,8 @@ void rio_close_outb_mbox(struct rio_mport *mport, int mbox)
576 out_be32(&priv->msg_regs->omr, 0); 579 out_be32(&priv->msg_regs->omr, 0);
577 580
578 /* Free ring */ 581 /* Free ring */
579 dma_free_coherent(NULL, priv->msg_tx_ring.size * RIO_MSG_DESC_SIZE, 582 dma_free_coherent(priv->dev,
583 priv->msg_tx_ring.size * RIO_MSG_DESC_SIZE,
580 priv->msg_tx_ring.virt, priv->msg_tx_ring.phys); 584 priv->msg_tx_ring.virt, priv->msg_tx_ring.phys);
581 585
582 /* Free interrupt */ 586 /* Free interrupt */
@@ -654,7 +658,7 @@ int rio_open_inb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entri
654 priv->msg_rx_ring.virt_buffer[i] = NULL; 658 priv->msg_rx_ring.virt_buffer[i] = NULL;
655 659
656 /* Initialize inbound message ring */ 660 /* Initialize inbound message ring */
657 priv->msg_rx_ring.virt = dma_alloc_coherent(NULL, 661 priv->msg_rx_ring.virt = dma_alloc_coherent(priv->dev,
658 priv->msg_rx_ring.size * RIO_MAX_MSG_SIZE, 662 priv->msg_rx_ring.size * RIO_MAX_MSG_SIZE,
659 &priv->msg_rx_ring.phys, GFP_KERNEL); 663 &priv->msg_rx_ring.phys, GFP_KERNEL);
660 if (!priv->msg_rx_ring.virt) { 664 if (!priv->msg_rx_ring.virt) {
@@ -673,7 +677,7 @@ int rio_open_inb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entri
673 rc = request_irq(IRQ_RIO_RX(mport), fsl_rio_rx_handler, 0, 677 rc = request_irq(IRQ_RIO_RX(mport), fsl_rio_rx_handler, 0,
674 "msg_rx", (void *)mport); 678 "msg_rx", (void *)mport);
675 if (rc < 0) { 679 if (rc < 0) {
676 dma_free_coherent(NULL, RIO_MSG_BUFFER_SIZE, 680 dma_free_coherent(priv->dev, RIO_MSG_BUFFER_SIZE,
677 priv->msg_tx_ring.virt_buffer[i], 681 priv->msg_tx_ring.virt_buffer[i],
678 priv->msg_tx_ring.phys_buffer[i]); 682 priv->msg_tx_ring.phys_buffer[i]);
679 goto out; 683 goto out;
@@ -713,7 +717,7 @@ void rio_close_inb_mbox(struct rio_mport *mport, int mbox)
713 out_be32(&priv->msg_regs->imr, 0); 717 out_be32(&priv->msg_regs->imr, 0);
714 718
715 /* Free ring */ 719 /* Free ring */
716 dma_free_coherent(NULL, priv->msg_rx_ring.size * RIO_MAX_MSG_SIZE, 720 dma_free_coherent(priv->dev, priv->msg_rx_ring.size * RIO_MAX_MSG_SIZE,
717 priv->msg_rx_ring.virt, priv->msg_rx_ring.phys); 721 priv->msg_rx_ring.virt, priv->msg_rx_ring.phys);
718 722
719 /* Free interrupt */ 723 /* Free interrupt */
@@ -890,7 +894,7 @@ static int fsl_rio_doorbell_init(struct rio_mport *mport)
890 } 894 }
891 895
892 /* Initialize inbound doorbells */ 896 /* Initialize inbound doorbells */
893 priv->dbell_ring.virt = dma_alloc_coherent(NULL, 512 * 897 priv->dbell_ring.virt = dma_alloc_coherent(priv->dev, 512 *
894 DOORBELL_MESSAGE_SIZE, &priv->dbell_ring.phys, GFP_KERNEL); 898 DOORBELL_MESSAGE_SIZE, &priv->dbell_ring.phys, GFP_KERNEL);
895 if (!priv->dbell_ring.virt) { 899 if (!priv->dbell_ring.virt) {
896 printk(KERN_ERR "RIO: unable allocate inbound doorbell ring\n"); 900 printk(KERN_ERR "RIO: unable allocate inbound doorbell ring\n");
@@ -911,7 +915,7 @@ static int fsl_rio_doorbell_init(struct rio_mport *mport)
911 "dbell_rx", (void *)mport); 915 "dbell_rx", (void *)mport);
912 if (rc < 0) { 916 if (rc < 0) {
913 iounmap(priv->dbell_win); 917 iounmap(priv->dbell_win);
914 dma_free_coherent(NULL, 512 * DOORBELL_MESSAGE_SIZE, 918 dma_free_coherent(priv->dev, 512 * DOORBELL_MESSAGE_SIZE,
915 priv->dbell_ring.virt, priv->dbell_ring.phys); 919 priv->dbell_ring.virt, priv->dbell_ring.phys);
916 printk(KERN_ERR 920 printk(KERN_ERR
917 "MPC85xx RIO: unable to request inbound doorbell irq"); 921 "MPC85xx RIO: unable to request inbound doorbell irq");
@@ -1087,6 +1091,8 @@ int fsl_rio_setup(struct of_device *dev)
1087 rio_init_mbox_res(&port->riores[RIO_OUTB_MBOX_RESOURCE], 0, 0); 1091 rio_init_mbox_res(&port->riores[RIO_OUTB_MBOX_RESOURCE], 0, 0);
1088 strcpy(port->name, "RIO0 mport"); 1092 strcpy(port->name, "RIO0 mport");
1089 1093
1094 priv->dev = &dev->dev;
1095
1090 port->ops = ops; 1096 port->ops = ops;
1091 port->host_deviceid = fsl_rio_get_hdid(port->id); 1097 port->host_deviceid = fsl_rio_get_hdid(port->id);
1092 1098
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index dcb667c4375a..2eca5fe0e75b 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -82,6 +82,7 @@ config S390
82 select USE_GENERIC_SMP_HELPERS if SMP 82 select USE_GENERIC_SMP_HELPERS if SMP
83 select HAVE_SYSCALL_WRAPPERS 83 select HAVE_SYSCALL_WRAPPERS
84 select HAVE_FUNCTION_TRACER 84 select HAVE_FUNCTION_TRACER
85 select HAVE_DEFAULT_NO_SPIN_MUTEXES
85 select HAVE_OPROFILE 86 select HAVE_OPROFILE
86 select HAVE_KPROBES 87 select HAVE_KPROBES
87 select HAVE_KRETPROBES 88 select HAVE_KRETPROBES
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c
index 27b70d8a359c..1dfc7100c7ee 100644
--- a/arch/s390/appldata/appldata_base.c
+++ b/arch/s390/appldata/appldata_base.c
@@ -98,7 +98,7 @@ static DECLARE_WORK(appldata_work, appldata_work_fn);
98/* 98/*
99 * Ops list 99 * Ops list
100 */ 100 */
101static DEFINE_SPINLOCK(appldata_ops_lock); 101static DEFINE_MUTEX(appldata_ops_mutex);
102static LIST_HEAD(appldata_ops_list); 102static LIST_HEAD(appldata_ops_list);
103 103
104 104
@@ -129,14 +129,14 @@ static void appldata_work_fn(struct work_struct *work)
129 129
130 i = 0; 130 i = 0;
131 get_online_cpus(); 131 get_online_cpus();
132 spin_lock(&appldata_ops_lock); 132 mutex_lock(&appldata_ops_mutex);
133 list_for_each(lh, &appldata_ops_list) { 133 list_for_each(lh, &appldata_ops_list) {
134 ops = list_entry(lh, struct appldata_ops, list); 134 ops = list_entry(lh, struct appldata_ops, list);
135 if (ops->active == 1) { 135 if (ops->active == 1) {
136 ops->callback(ops->data); 136 ops->callback(ops->data);
137 } 137 }
138 } 138 }
139 spin_unlock(&appldata_ops_lock); 139 mutex_unlock(&appldata_ops_mutex);
140 put_online_cpus(); 140 put_online_cpus();
141} 141}
142 142
@@ -176,7 +176,7 @@ static void __appldata_mod_vtimer_wrap(void *p) {
176 struct vtimer_list *timer; 176 struct vtimer_list *timer;
177 u64 expires; 177 u64 expires;
178 } *args = p; 178 } *args = p;
179 mod_virt_timer(args->timer, args->expires); 179 mod_virt_timer_periodic(args->timer, args->expires);
180} 180}
181 181
182#define APPLDATA_ADD_TIMER 0 182#define APPLDATA_ADD_TIMER 0
@@ -338,7 +338,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
338 struct list_head *lh; 338 struct list_head *lh;
339 339
340 found = 0; 340 found = 0;
341 spin_lock(&appldata_ops_lock); 341 mutex_lock(&appldata_ops_mutex);
342 list_for_each(lh, &appldata_ops_list) { 342 list_for_each(lh, &appldata_ops_list) {
343 tmp_ops = list_entry(lh, struct appldata_ops, list); 343 tmp_ops = list_entry(lh, struct appldata_ops, list);
344 if (&tmp_ops->ctl_table[2] == ctl) { 344 if (&tmp_ops->ctl_table[2] == ctl) {
@@ -346,15 +346,15 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
346 } 346 }
347 } 347 }
348 if (!found) { 348 if (!found) {
349 spin_unlock(&appldata_ops_lock); 349 mutex_unlock(&appldata_ops_mutex);
350 return -ENODEV; 350 return -ENODEV;
351 } 351 }
352 ops = ctl->data; 352 ops = ctl->data;
353 if (!try_module_get(ops->owner)) { // protect this function 353 if (!try_module_get(ops->owner)) { // protect this function
354 spin_unlock(&appldata_ops_lock); 354 mutex_unlock(&appldata_ops_mutex);
355 return -ENODEV; 355 return -ENODEV;
356 } 356 }
357 spin_unlock(&appldata_ops_lock); 357 mutex_unlock(&appldata_ops_mutex);
358 358
359 if (!*lenp || *ppos) { 359 if (!*lenp || *ppos) {
360 *lenp = 0; 360 *lenp = 0;
@@ -378,11 +378,11 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
378 return -EFAULT; 378 return -EFAULT;
379 } 379 }
380 380
381 spin_lock(&appldata_ops_lock); 381 mutex_lock(&appldata_ops_mutex);
382 if ((buf[0] == '1') && (ops->active == 0)) { 382 if ((buf[0] == '1') && (ops->active == 0)) {
383 // protect work queue callback 383 // protect work queue callback
384 if (!try_module_get(ops->owner)) { 384 if (!try_module_get(ops->owner)) {
385 spin_unlock(&appldata_ops_lock); 385 mutex_unlock(&appldata_ops_mutex);
386 module_put(ops->owner); 386 module_put(ops->owner);
387 return -ENODEV; 387 return -ENODEV;
388 } 388 }
@@ -407,7 +407,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
407 "failed with rc=%d\n", ops->name, rc); 407 "failed with rc=%d\n", ops->name, rc);
408 module_put(ops->owner); 408 module_put(ops->owner);
409 } 409 }
410 spin_unlock(&appldata_ops_lock); 410 mutex_unlock(&appldata_ops_mutex);
411out: 411out:
412 *lenp = len; 412 *lenp = len;
413 *ppos += len; 413 *ppos += len;
@@ -433,9 +433,9 @@ int appldata_register_ops(struct appldata_ops *ops)
433 if (!ops->ctl_table) 433 if (!ops->ctl_table)
434 return -ENOMEM; 434 return -ENOMEM;
435 435
436 spin_lock(&appldata_ops_lock); 436 mutex_lock(&appldata_ops_mutex);
437 list_add(&ops->list, &appldata_ops_list); 437 list_add(&ops->list, &appldata_ops_list);
438 spin_unlock(&appldata_ops_lock); 438 mutex_unlock(&appldata_ops_mutex);
439 439
440 ops->ctl_table[0].procname = appldata_proc_name; 440 ops->ctl_table[0].procname = appldata_proc_name;
441 ops->ctl_table[0].maxlen = 0; 441 ops->ctl_table[0].maxlen = 0;
@@ -452,9 +452,9 @@ int appldata_register_ops(struct appldata_ops *ops)
452 goto out; 452 goto out;
453 return 0; 453 return 0;
454out: 454out:
455 spin_lock(&appldata_ops_lock); 455 mutex_lock(&appldata_ops_mutex);
456 list_del(&ops->list); 456 list_del(&ops->list);
457 spin_unlock(&appldata_ops_lock); 457 mutex_unlock(&appldata_ops_mutex);
458 kfree(ops->ctl_table); 458 kfree(ops->ctl_table);
459 return -ENOMEM; 459 return -ENOMEM;
460} 460}
@@ -466,9 +466,9 @@ out:
466 */ 466 */
467void appldata_unregister_ops(struct appldata_ops *ops) 467void appldata_unregister_ops(struct appldata_ops *ops)
468{ 468{
469 spin_lock(&appldata_ops_lock); 469 mutex_lock(&appldata_ops_mutex);
470 list_del(&ops->list); 470 list_del(&ops->list);
471 spin_unlock(&appldata_ops_lock); 471 mutex_unlock(&appldata_ops_mutex);
472 unregister_sysctl_table(ops->sysctl_header); 472 unregister_sysctl_table(ops->sysctl_header);
473 kfree(ops->ctl_table); 473 kfree(ops->ctl_table);
474} 474}
diff --git a/arch/s390/appldata/appldata_mem.c b/arch/s390/appldata/appldata_mem.c
index 3ed56b7d1b2f..4188cbe63a54 100644
--- a/arch/s390/appldata/appldata_mem.c
+++ b/arch/s390/appldata/appldata_mem.c
@@ -78,7 +78,7 @@ static void appldata_get_mem_data(void *data)
78{ 78{
79 /* 79 /*
80 * don't put large structures on the stack, we are 80 * don't put large structures on the stack, we are
81 * serialized through the appldata_ops_lock and can use static 81 * serialized through the appldata_ops_mutex and can use static
82 */ 82 */
83 static struct sysinfo val; 83 static struct sysinfo val;
84 unsigned long ev[NR_VM_EVENT_ITEMS]; 84 unsigned long ev[NR_VM_EVENT_ITEMS];
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 31e809c77790..d401d56c255f 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.29-rc4 3# Linux kernel version: 2.6.30-rc3
4# Wed Feb 11 10:07:16 2009 4# Thu Apr 23 09:29:52 2009
5# 5#
6CONFIG_SCHED_MC=y 6CONFIG_SCHED_MC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -22,6 +22,7 @@ CONFIG_NO_DMA=y
22CONFIG_GENERIC_LOCKBREAK=y 22CONFIG_GENERIC_LOCKBREAK=y
23CONFIG_PGSTE=y 23CONFIG_PGSTE=y
24CONFIG_VIRT_CPU_ACCOUNTING=y 24CONFIG_VIRT_CPU_ACCOUNTING=y
25CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
25CONFIG_S390=y 26CONFIG_S390=y
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
27 28
@@ -37,6 +38,7 @@ CONFIG_SWAP=y
37CONFIG_SYSVIPC=y 38CONFIG_SYSVIPC=y
38CONFIG_SYSVIPC_SYSCTL=y 39CONFIG_SYSVIPC_SYSCTL=y
39CONFIG_POSIX_MQUEUE=y 40CONFIG_POSIX_MQUEUE=y
41CONFIG_POSIX_MQUEUE_SYSCTL=y
40# CONFIG_BSD_PROCESS_ACCT is not set 42# CONFIG_BSD_PROCESS_ACCT is not set
41# CONFIG_TASKSTATS is not set 43# CONFIG_TASKSTATS is not set
42CONFIG_AUDIT=y 44CONFIG_AUDIT=y
@@ -77,21 +79,24 @@ CONFIG_IPC_NS=y
77# CONFIG_NET_NS is not set 79# CONFIG_NET_NS is not set
78CONFIG_BLK_DEV_INITRD=y 80CONFIG_BLK_DEV_INITRD=y
79CONFIG_INITRAMFS_SOURCE="" 81CONFIG_INITRAMFS_SOURCE=""
82CONFIG_RD_GZIP=y
83CONFIG_RD_BZIP2=y
84CONFIG_RD_LZMA=y
80# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 85# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
81CONFIG_SYSCTL=y 86CONFIG_SYSCTL=y
87CONFIG_ANON_INODES=y
82# CONFIG_EMBEDDED is not set 88# CONFIG_EMBEDDED is not set
83CONFIG_SYSCTL_SYSCALL=y 89CONFIG_SYSCTL_SYSCALL=y
84CONFIG_KALLSYMS=y 90CONFIG_KALLSYMS=y
85# CONFIG_KALLSYMS_ALL is not set 91# CONFIG_KALLSYMS_ALL is not set
86# CONFIG_KALLSYMS_EXTRA_PASS is not set 92# CONFIG_KALLSYMS_EXTRA_PASS is not set
93# CONFIG_STRIP_ASM_SYMS is not set
87CONFIG_HOTPLUG=y 94CONFIG_HOTPLUG=y
88CONFIG_PRINTK=y 95CONFIG_PRINTK=y
89CONFIG_BUG=y 96CONFIG_BUG=y
90CONFIG_ELF_CORE=y 97CONFIG_ELF_CORE=y
91# CONFIG_COMPAT_BRK is not set
92CONFIG_BASE_FULL=y 98CONFIG_BASE_FULL=y
93CONFIG_FUTEX=y 99CONFIG_FUTEX=y
94CONFIG_ANON_INODES=y
95CONFIG_EPOLL=y 100CONFIG_EPOLL=y
96CONFIG_SIGNALFD=y 101CONFIG_SIGNALFD=y
97CONFIG_TIMERFD=y 102CONFIG_TIMERFD=y
@@ -99,10 +104,12 @@ CONFIG_EVENTFD=y
99CONFIG_SHMEM=y 104CONFIG_SHMEM=y
100CONFIG_AIO=y 105CONFIG_AIO=y
101CONFIG_VM_EVENT_COUNTERS=y 106CONFIG_VM_EVENT_COUNTERS=y
107# CONFIG_COMPAT_BRK is not set
102CONFIG_SLAB=y 108CONFIG_SLAB=y
103# CONFIG_SLUB is not set 109# CONFIG_SLUB is not set
104# CONFIG_SLOB is not set 110# CONFIG_SLOB is not set
105# CONFIG_PROFILING is not set 111# CONFIG_PROFILING is not set
112# CONFIG_MARKERS is not set
106CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
107CONFIG_KPROBES=y 114CONFIG_KPROBES=y
108CONFIG_HAVE_SYSCALL_WRAPPERS=y 115CONFIG_HAVE_SYSCALL_WRAPPERS=y
@@ -111,6 +118,8 @@ CONFIG_HAVE_KPROBES=y
111CONFIG_HAVE_KRETPROBES=y 118CONFIG_HAVE_KRETPROBES=y
112CONFIG_HAVE_ARCH_TRACEHOOK=y 119CONFIG_HAVE_ARCH_TRACEHOOK=y
113CONFIG_USE_GENERIC_SMP_HELPERS=y 120CONFIG_USE_GENERIC_SMP_HELPERS=y
121CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES=y
122# CONFIG_SLOW_WORK is not set
114# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
115CONFIG_SLABINFO=y 124CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 125CONFIG_RT_MUTEXES=y
@@ -124,7 +133,6 @@ CONFIG_MODVERSIONS=y
124CONFIG_INIT_ALL_POSSIBLE=y 133CONFIG_INIT_ALL_POSSIBLE=y
125CONFIG_STOP_MACHINE=y 134CONFIG_STOP_MACHINE=y
126CONFIG_BLOCK=y 135CONFIG_BLOCK=y
127# CONFIG_BLK_DEV_IO_TRACE is not set
128CONFIG_BLK_DEV_BSG=y 136CONFIG_BLK_DEV_BSG=y
129# CONFIG_BLK_DEV_INTEGRITY is not set 137# CONFIG_BLK_DEV_INTEGRITY is not set
130CONFIG_BLOCK_COMPAT=y 138CONFIG_BLOCK_COMPAT=y
@@ -211,11 +219,12 @@ CONFIG_ZONE_DMA_FLAG=1
211CONFIG_BOUNCE=y 219CONFIG_BOUNCE=y
212CONFIG_VIRT_TO_BUS=y 220CONFIG_VIRT_TO_BUS=y
213CONFIG_UNEVICTABLE_LRU=y 221CONFIG_UNEVICTABLE_LRU=y
222CONFIG_HAVE_MLOCK=y
223CONFIG_HAVE_MLOCKED_PAGE_BIT=y
214 224
215# 225#
216# I/O subsystem configuration 226# I/O subsystem configuration
217# 227#
218CONFIG_MACHCHK_WARNING=y
219CONFIG_QDIO=y 228CONFIG_QDIO=y
220CONFIG_CHSC_SCH=m 229CONFIG_CHSC_SCH=m
221 230
@@ -247,12 +256,12 @@ CONFIG_S390_HYPFS_FS=y
247CONFIG_KEXEC=y 256CONFIG_KEXEC=y
248# CONFIG_ZFCPDUMP is not set 257# CONFIG_ZFCPDUMP is not set
249CONFIG_S390_GUEST=y 258CONFIG_S390_GUEST=y
259CONFIG_SECCOMP=y
250CONFIG_NET=y 260CONFIG_NET=y
251 261
252# 262#
253# Networking options 263# Networking options
254# 264#
255CONFIG_COMPAT_NET_DEV_OPS=y
256CONFIG_PACKET=y 265CONFIG_PACKET=y
257# CONFIG_PACKET_MMAP is not set 266# CONFIG_PACKET_MMAP is not set
258CONFIG_UNIX=y 267CONFIG_UNIX=y
@@ -374,6 +383,7 @@ CONFIG_SCTP_HMAC_MD5=y
374# CONFIG_LAPB is not set 383# CONFIG_LAPB is not set
375# CONFIG_ECONET is not set 384# CONFIG_ECONET is not set
376# CONFIG_WAN_ROUTER is not set 385# CONFIG_WAN_ROUTER is not set
386# CONFIG_PHONET is not set
377CONFIG_NET_SCHED=y 387CONFIG_NET_SCHED=y
378 388
379# 389#
@@ -438,7 +448,6 @@ CONFIG_CAN_BCM=m
438CONFIG_CAN_VCAN=m 448CONFIG_CAN_VCAN=m
439# CONFIG_CAN_DEBUG_DEVICES is not set 449# CONFIG_CAN_DEBUG_DEVICES is not set
440# CONFIG_AF_RXRPC is not set 450# CONFIG_AF_RXRPC is not set
441# CONFIG_PHONET is not set
442# CONFIG_WIMAX is not set 451# CONFIG_WIMAX is not set
443# CONFIG_RFKILL is not set 452# CONFIG_RFKILL is not set
444# CONFIG_NET_9P is not set 453# CONFIG_NET_9P is not set
@@ -537,6 +546,7 @@ CONFIG_SCSI_FC_ATTRS=y
537CONFIG_SCSI_LOWLEVEL=y 546CONFIG_SCSI_LOWLEVEL=y
538# CONFIG_ISCSI_TCP is not set 547# CONFIG_ISCSI_TCP is not set
539# CONFIG_LIBFC is not set 548# CONFIG_LIBFC is not set
549# CONFIG_LIBFCOE is not set
540# CONFIG_SCSI_DEBUG is not set 550# CONFIG_SCSI_DEBUG is not set
541CONFIG_ZFCP=y 551CONFIG_ZFCP=y
542CONFIG_SCSI_DH=m 552CONFIG_SCSI_DH=m
@@ -544,6 +554,10 @@ CONFIG_SCSI_DH_RDAC=m
544CONFIG_SCSI_DH_HP_SW=m 554CONFIG_SCSI_DH_HP_SW=m
545CONFIG_SCSI_DH_EMC=m 555CONFIG_SCSI_DH_EMC=m
546CONFIG_SCSI_DH_ALUA=m 556CONFIG_SCSI_DH_ALUA=m
557CONFIG_SCSI_OSD_INITIATOR=m
558CONFIG_SCSI_OSD_ULD=m
559CONFIG_SCSI_OSD_DPRINT_SENSE=1
560# CONFIG_SCSI_OSD_DEBUG is not set
547CONFIG_MD=y 561CONFIG_MD=y
548CONFIG_BLK_DEV_MD=y 562CONFIG_BLK_DEV_MD=y
549CONFIG_MD_AUTODETECT=y 563CONFIG_MD_AUTODETECT=y
@@ -564,6 +578,7 @@ CONFIG_DM_MULTIPATH=m
564# CONFIG_DM_DELAY is not set 578# CONFIG_DM_DELAY is not set
565# CONFIG_DM_UEVENT is not set 579# CONFIG_DM_UEVENT is not set
566CONFIG_NETDEVICES=y 580CONFIG_NETDEVICES=y
581CONFIG_COMPAT_NET_DEV_OPS=y
567# CONFIG_IFB is not set 582# CONFIG_IFB is not set
568CONFIG_DUMMY=m 583CONFIG_DUMMY=m
569CONFIG_BONDING=m 584CONFIG_BONDING=m
@@ -667,6 +682,7 @@ CONFIG_S390_VMUR=m
667# CONFIG_MEMSTICK is not set 682# CONFIG_MEMSTICK is not set
668# CONFIG_NEW_LEDS is not set 683# CONFIG_NEW_LEDS is not set
669CONFIG_ACCESSIBILITY=y 684CONFIG_ACCESSIBILITY=y
685# CONFIG_AUXDISPLAY is not set
670# CONFIG_STAGING is not set 686# CONFIG_STAGING is not set
671 687
672# 688#
@@ -676,6 +692,7 @@ CONFIG_EXT2_FS=y
676# CONFIG_EXT2_FS_XATTR is not set 692# CONFIG_EXT2_FS_XATTR is not set
677# CONFIG_EXT2_FS_XIP is not set 693# CONFIG_EXT2_FS_XIP is not set
678CONFIG_EXT3_FS=y 694CONFIG_EXT3_FS=y
695# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
679CONFIG_EXT3_FS_XATTR=y 696CONFIG_EXT3_FS_XATTR=y
680# CONFIG_EXT3_FS_POSIX_ACL is not set 697# CONFIG_EXT3_FS_POSIX_ACL is not set
681# CONFIG_EXT3_FS_SECURITY is not set 698# CONFIG_EXT3_FS_SECURITY is not set
@@ -701,6 +718,11 @@ CONFIG_INOTIFY_USER=y
701CONFIG_GENERIC_ACL=y 718CONFIG_GENERIC_ACL=y
702 719
703# 720#
721# Caches
722#
723# CONFIG_FSCACHE is not set
724
725#
704# CD-ROM/DVD Filesystems 726# CD-ROM/DVD Filesystems
705# 727#
706# CONFIG_ISO9660_FS is not set 728# CONFIG_ISO9660_FS is not set
@@ -744,6 +766,8 @@ CONFIG_MISC_FILESYSTEMS=y
744# CONFIG_ROMFS_FS is not set 766# CONFIG_ROMFS_FS is not set
745# CONFIG_SYSV_FS is not set 767# CONFIG_SYSV_FS is not set
746# CONFIG_UFS_FS is not set 768# CONFIG_UFS_FS is not set
769# CONFIG_EXOFS_FS is not set
770# CONFIG_NILFS2_FS is not set
747CONFIG_NETWORK_FILESYSTEMS=y 771CONFIG_NETWORK_FILESYSTEMS=y
748CONFIG_NFS_FS=y 772CONFIG_NFS_FS=y
749CONFIG_NFS_V3=y 773CONFIG_NFS_V3=y
@@ -758,7 +782,6 @@ CONFIG_LOCKD_V4=y
758CONFIG_EXPORTFS=y 782CONFIG_EXPORTFS=y
759CONFIG_NFS_COMMON=y 783CONFIG_NFS_COMMON=y
760CONFIG_SUNRPC=y 784CONFIG_SUNRPC=y
761# CONFIG_SUNRPC_REGISTER_V4 is not set
762# CONFIG_RPCSEC_GSS_KRB5 is not set 785# CONFIG_RPCSEC_GSS_KRB5 is not set
763# CONFIG_RPCSEC_GSS_SPKM3 is not set 786# CONFIG_RPCSEC_GSS_SPKM3 is not set
764# CONFIG_SMB_FS is not set 787# CONFIG_SMB_FS is not set
@@ -806,6 +829,7 @@ CONFIG_MAGIC_SYSRQ=y
806CONFIG_DEBUG_FS=y 829CONFIG_DEBUG_FS=y
807# CONFIG_HEADERS_CHECK is not set 830# CONFIG_HEADERS_CHECK is not set
808CONFIG_DEBUG_KERNEL=y 831CONFIG_DEBUG_KERNEL=y
832# CONFIG_DETECT_HUNG_TASK is not set
809# CONFIG_SCHED_DEBUG is not set 833# CONFIG_SCHED_DEBUG is not set
810# CONFIG_SCHEDSTATS is not set 834# CONFIG_SCHEDSTATS is not set
811# CONFIG_TIMER_STATS is not set 835# CONFIG_TIMER_STATS is not set
@@ -830,7 +854,6 @@ CONFIG_DEBUG_MEMORY_INIT=y
830# CONFIG_DEBUG_LIST is not set 854# CONFIG_DEBUG_LIST is not set
831# CONFIG_DEBUG_SG is not set 855# CONFIG_DEBUG_SG is not set
832# CONFIG_DEBUG_NOTIFIERS is not set 856# CONFIG_DEBUG_NOTIFIERS is not set
833# CONFIG_FRAME_POINTER is not set
834# CONFIG_RCU_TORTURE_TEST is not set 857# CONFIG_RCU_TORTURE_TEST is not set
835# CONFIG_RCU_CPU_STALL_DETECTOR is not set 858# CONFIG_RCU_CPU_STALL_DETECTOR is not set
836# CONFIG_KPROBES_SANITY_TEST is not set 859# CONFIG_KPROBES_SANITY_TEST is not set
@@ -840,7 +863,9 @@ CONFIG_DEBUG_MEMORY_INIT=y
840# CONFIG_FAULT_INJECTION is not set 863# CONFIG_FAULT_INJECTION is not set
841# CONFIG_LATENCYTOP is not set 864# CONFIG_LATENCYTOP is not set
842CONFIG_SYSCTL_SYSCALL_CHECK=y 865CONFIG_SYSCTL_SYSCALL_CHECK=y
866# CONFIG_DEBUG_PAGEALLOC is not set
843CONFIG_HAVE_FUNCTION_TRACER=y 867CONFIG_HAVE_FUNCTION_TRACER=y
868CONFIG_TRACING_SUPPORT=y
844 869
845# 870#
846# Tracers 871# Tracers
@@ -850,14 +875,17 @@ CONFIG_HAVE_FUNCTION_TRACER=y
850# CONFIG_PREEMPT_TRACER is not set 875# CONFIG_PREEMPT_TRACER is not set
851# CONFIG_SCHED_TRACER is not set 876# CONFIG_SCHED_TRACER is not set
852# CONFIG_CONTEXT_SWITCH_TRACER is not set 877# CONFIG_CONTEXT_SWITCH_TRACER is not set
878# CONFIG_EVENT_TRACER is not set
853# CONFIG_BOOT_TRACER is not set 879# CONFIG_BOOT_TRACER is not set
854# CONFIG_TRACE_BRANCH_PROFILING is not set 880# CONFIG_TRACE_BRANCH_PROFILING is not set
855# CONFIG_STACK_TRACER is not set 881# CONFIG_STACK_TRACER is not set
856# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 882# CONFIG_KMEMTRACE is not set
883# CONFIG_WORKQUEUE_TRACER is not set
884# CONFIG_BLK_DEV_IO_TRACE is not set
885# CONFIG_DYNAMIC_DEBUG is not set
857CONFIG_SAMPLES=y 886CONFIG_SAMPLES=y
858# CONFIG_SAMPLE_KOBJECT is not set 887# CONFIG_SAMPLE_KOBJECT is not set
859# CONFIG_SAMPLE_KPROBES is not set 888# CONFIG_SAMPLE_KPROBES is not set
860# CONFIG_DEBUG_PAGEALLOC is not set
861 889
862# 890#
863# Security options 891# Security options
@@ -882,10 +910,12 @@ CONFIG_CRYPTO_HASH=m
882CONFIG_CRYPTO_HASH2=y 910CONFIG_CRYPTO_HASH2=y
883CONFIG_CRYPTO_RNG=m 911CONFIG_CRYPTO_RNG=m
884CONFIG_CRYPTO_RNG2=y 912CONFIG_CRYPTO_RNG2=y
913CONFIG_CRYPTO_PCOMP=y
885CONFIG_CRYPTO_MANAGER=y 914CONFIG_CRYPTO_MANAGER=y
886CONFIG_CRYPTO_MANAGER2=y 915CONFIG_CRYPTO_MANAGER2=y
887CONFIG_CRYPTO_GF128MUL=m 916CONFIG_CRYPTO_GF128MUL=m
888# CONFIG_CRYPTO_NULL is not set 917# CONFIG_CRYPTO_NULL is not set
918CONFIG_CRYPTO_WORKQUEUE=y
889# CONFIG_CRYPTO_CRYPTD is not set 919# CONFIG_CRYPTO_CRYPTD is not set
890CONFIG_CRYPTO_AUTHENC=m 920CONFIG_CRYPTO_AUTHENC=m
891# CONFIG_CRYPTO_TEST is not set 921# CONFIG_CRYPTO_TEST is not set
@@ -954,6 +984,7 @@ CONFIG_CRYPTO_SEED=m
954# Compression 984# Compression
955# 985#
956# CONFIG_CRYPTO_DEFLATE is not set 986# CONFIG_CRYPTO_DEFLATE is not set
987CONFIG_CRYPTO_ZLIB=m
957CONFIG_CRYPTO_LZO=m 988CONFIG_CRYPTO_LZO=m
958 989
959# 990#
@@ -969,6 +1000,7 @@ CONFIG_CRYPTO_SHA512_S390=m
969# CONFIG_CRYPTO_DES_S390 is not set 1000# CONFIG_CRYPTO_DES_S390 is not set
970# CONFIG_CRYPTO_AES_S390 is not set 1001# CONFIG_CRYPTO_AES_S390 is not set
971CONFIG_S390_PRNG=m 1002CONFIG_S390_PRNG=m
1003# CONFIG_BINARY_PRINTF is not set
972 1004
973# 1005#
974# Library routines 1006# Library routines
@@ -982,9 +1014,14 @@ CONFIG_CRC_T10DIF=y
982CONFIG_CRC32=m 1014CONFIG_CRC32=m
983CONFIG_CRC7=m 1015CONFIG_CRC7=m
984CONFIG_LIBCRC32C=m 1016CONFIG_LIBCRC32C=m
1017CONFIG_ZLIB_INFLATE=y
1018CONFIG_ZLIB_DEFLATE=m
985CONFIG_LZO_COMPRESS=m 1019CONFIG_LZO_COMPRESS=m
986CONFIG_LZO_DECOMPRESS=m 1020CONFIG_LZO_DECOMPRESS=m
987CONFIG_PLIST=y 1021CONFIG_DECOMPRESS_GZIP=y
1022CONFIG_DECOMPRESS_BZIP2=y
1023CONFIG_DECOMPRESS_LZMA=y
1024CONFIG_NLATTR=y
988CONFIG_HAVE_KVM=y 1025CONFIG_HAVE_KVM=y
989CONFIG_VIRTUALIZATION=y 1026CONFIG_VIRTUALIZATION=y
990CONFIG_KVM=m 1027CONFIG_KVM=m
diff --git a/arch/s390/include/asm/cpuid.h b/arch/s390/include/asm/cpuid.h
new file mode 100644
index 000000000000..07836a2e5222
--- /dev/null
+++ b/arch/s390/include/asm/cpuid.h
@@ -0,0 +1,25 @@
1/*
2 * Copyright IBM Corp. 2000,2009
3 * Author(s): Hartmut Penner <hp@de.ibm.com>,
4 * Martin Schwidefsky <schwidefsky@de.ibm.com>
5 * Christian Ehrhardt <ehrhardt@de.ibm.com>
6 */
7
8#ifndef _ASM_S390_CPUID_H_
9#define _ASM_S390_CPUID_H_
10
11/*
12 * CPU type and hardware bug flags. Kept separately for each CPU.
13 * Members of this structure are referenced in head.S, so think twice
14 * before touching them. [mj]
15 */
16
17typedef struct
18{
19 unsigned int version : 8;
20 unsigned int ident : 24;
21 unsigned int machine : 16;
22 unsigned int unused : 16;
23} __attribute__ ((packed)) cpuid_t;
24
25#endif /* _ASM_S390_CPUID_H_ */
diff --git a/arch/s390/include/asm/cputime.h b/arch/s390/include/asm/cputime.h
index 95b0f7db3c69..941384fbd39c 100644
--- a/arch/s390/include/asm/cputime.h
+++ b/arch/s390/include/asm/cputime.h
@@ -174,4 +174,8 @@ cputime64_to_clock_t(cputime64_t cputime)
174 return __div(cputime, 4096000000ULL / USER_HZ); 174 return __div(cputime, 4096000000ULL / USER_HZ);
175} 175}
176 176
177cputime64_t s390_get_idle_time(int cpu);
178
179#define arch_idle_time(cpu) s390_get_idle_time(cpu)
180
177#endif /* _S390_CPUTIME_H */ 181#endif /* _S390_CPUTIME_H */
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index c6e674f5fca9..54ea39f96ecd 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -15,6 +15,7 @@
15#define ASM_KVM_HOST_H 15#define ASM_KVM_HOST_H
16#include <linux/kvm_host.h> 16#include <linux/kvm_host.h>
17#include <asm/debug.h> 17#include <asm/debug.h>
18#include <asm/cpuid.h>
18 19
19#define KVM_MAX_VCPUS 64 20#define KVM_MAX_VCPUS 64
20#define KVM_MEMORY_SLOTS 32 21#define KVM_MEMORY_SLOTS 32
diff --git a/arch/s390/include/asm/lowcore.h b/arch/s390/include/asm/lowcore.h
index b349f1c7fdfa..3aeca492b147 100644
--- a/arch/s390/include/asm/lowcore.h
+++ b/arch/s390/include/asm/lowcore.h
@@ -66,6 +66,7 @@
66#define __LC_USER_EXEC_ASCE 0x02ac 66#define __LC_USER_EXEC_ASCE 0x02ac
67#define __LC_CPUID 0x02b0 67#define __LC_CPUID 0x02b0
68#define __LC_INT_CLOCK 0x02c8 68#define __LC_INT_CLOCK 0x02c8
69#define __LC_MACHINE_FLAGS 0x02d8
69#define __LC_IRB 0x0300 70#define __LC_IRB 0x0300
70#define __LC_PFAULT_INTPARM 0x0080 71#define __LC_PFAULT_INTPARM 0x0080
71#define __LC_CPU_TIMER_SAVE_AREA 0x00d8 72#define __LC_CPU_TIMER_SAVE_AREA 0x00d8
@@ -110,6 +111,7 @@
110#define __LC_CPUID 0x0320 111#define __LC_CPUID 0x0320
111#define __LC_INT_CLOCK 0x0340 112#define __LC_INT_CLOCK 0x0340
112#define __LC_VDSO_PER_CPU 0x0350 113#define __LC_VDSO_PER_CPU 0x0350
114#define __LC_MACHINE_FLAGS 0x0358
113#define __LC_IRB 0x0380 115#define __LC_IRB 0x0380
114#define __LC_PASTE 0x03c0 116#define __LC_PASTE 0x03c0
115#define __LC_PFAULT_INTPARM 0x11b8 117#define __LC_PFAULT_INTPARM 0x11b8
@@ -127,9 +129,9 @@
127 129
128#ifndef __ASSEMBLY__ 130#ifndef __ASSEMBLY__
129 131
130#include <asm/processor.h> 132#include <asm/cpuid.h>
133#include <asm/ptrace.h>
131#include <linux/types.h> 134#include <linux/types.h>
132#include <asm/sigp.h>
133 135
134void restart_int_handler(void); 136void restart_int_handler(void);
135void ext_int_handler(void); 137void ext_int_handler(void);
@@ -277,7 +279,8 @@ struct _lowcore
277 __u32 ext_call_fast; /* 0x02c4 */ 279 __u32 ext_call_fast; /* 0x02c4 */
278 __u64 int_clock; /* 0x02c8 */ 280 __u64 int_clock; /* 0x02c8 */
279 __u64 clock_comparator; /* 0x02d0 */ 281 __u64 clock_comparator; /* 0x02d0 */
280 __u8 pad_0x02d8[0x0300-0x02d8]; /* 0x02d8 */ 282 __u32 machine_flags; /* 0x02d8 */
283 __u8 pad_0x02dc[0x0300-0x02dc]; /* 0x02dc */
281 284
282 /* Interrupt response block */ 285 /* Interrupt response block */
283 __u8 irb[64]; /* 0x0300 */ 286 __u8 irb[64]; /* 0x0300 */
@@ -381,7 +384,8 @@ struct _lowcore
381 __u64 int_clock; /* 0x0340 */ 384 __u64 int_clock; /* 0x0340 */
382 __u64 clock_comparator; /* 0x0348 */ 385 __u64 clock_comparator; /* 0x0348 */
383 __u64 vdso_per_cpu_data; /* 0x0350 */ 386 __u64 vdso_per_cpu_data; /* 0x0350 */
384 __u8 pad_0x0358[0x0380-0x0358]; /* 0x0358 */ 387 __u64 machine_flags; /* 0x0358 */
388 __u8 pad_0x0360[0x0380-0x0360]; /* 0x0360 */
385 389
386 /* Interrupt response block. */ 390 /* Interrupt response block. */
387 __u8 irb[64]; /* 0x0380 */ 391 __u8 irb[64]; /* 0x0380 */
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index 61862b3ac794..c139fa7b8e89 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -14,7 +14,10 @@
14#define __ASM_S390_PROCESSOR_H 14#define __ASM_S390_PROCESSOR_H
15 15
16#include <linux/linkage.h> 16#include <linux/linkage.h>
17#include <asm/cpuid.h>
18#include <asm/page.h>
17#include <asm/ptrace.h> 19#include <asm/ptrace.h>
20#include <asm/setup.h>
18 21
19#ifdef __KERNEL__ 22#ifdef __KERNEL__
20/* 23/*
@@ -23,20 +26,6 @@
23 */ 26 */
24#define current_text_addr() ({ void *pc; asm("basr %0,0" : "=a" (pc)); pc; }) 27#define current_text_addr() ({ void *pc; asm("basr %0,0" : "=a" (pc)); pc; })
25 28
26/*
27 * CPU type and hardware bug flags. Kept separately for each CPU.
28 * Members of this structure are referenced in head.S, so think twice
29 * before touching them. [mj]
30 */
31
32typedef struct
33{
34 unsigned int version : 8;
35 unsigned int ident : 24;
36 unsigned int machine : 16;
37 unsigned int unused : 16;
38} __attribute__ ((packed)) cpuid_t;
39
40static inline void get_cpu_id(cpuid_t *ptr) 29static inline void get_cpu_id(cpuid_t *ptr)
41{ 30{
42 asm volatile("stidp 0(%1)" : "=m" (*ptr) : "a" (ptr)); 31 asm volatile("stidp 0(%1)" : "=m" (*ptr) : "a" (ptr));
diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h
index f1b051630c50..539263fc9ab9 100644
--- a/arch/s390/include/asm/ptrace.h
+++ b/arch/s390/include/asm/ptrace.h
@@ -313,8 +313,6 @@ typedef struct
313 313
314 314
315#ifdef __KERNEL__ 315#ifdef __KERNEL__
316#include <asm/setup.h>
317#include <asm/page.h>
318 316
319/* 317/*
320 * The pt_regs struct defines the way the registers are stored on 318 * The pt_regs struct defines the way the registers are stored on
diff --git a/arch/s390/include/asm/setup.h b/arch/s390/include/asm/setup.h
index e8bd6ac22c99..38b0fc221ed7 100644
--- a/arch/s390/include/asm/setup.h
+++ b/arch/s390/include/asm/setup.h
@@ -14,6 +14,7 @@
14 14
15#ifdef __KERNEL__ 15#ifdef __KERNEL__
16 16
17#include <asm/lowcore.h>
17#include <asm/types.h> 18#include <asm/types.h>
18 19
19#define PARMAREA 0x10400 20#define PARMAREA 0x10400
@@ -63,7 +64,6 @@ extern unsigned int s390_noexec;
63/* 64/*
64 * Machine features detected in head.S 65 * Machine features detected in head.S
65 */ 66 */
66extern unsigned long machine_flags;
67 67
68#define MACHINE_FLAG_VM (1UL << 0) 68#define MACHINE_FLAG_VM (1UL << 0)
69#define MACHINE_FLAG_IEEE (1UL << 1) 69#define MACHINE_FLAG_IEEE (1UL << 1)
@@ -77,28 +77,28 @@ extern unsigned long machine_flags;
77#define MACHINE_FLAG_HPAGE (1UL << 10) 77#define MACHINE_FLAG_HPAGE (1UL << 10)
78#define MACHINE_FLAG_PFMF (1UL << 11) 78#define MACHINE_FLAG_PFMF (1UL << 11)
79 79
80#define MACHINE_IS_VM (machine_flags & MACHINE_FLAG_VM) 80#define MACHINE_IS_VM (S390_lowcore.machine_flags & MACHINE_FLAG_VM)
81#define MACHINE_IS_KVM (machine_flags & MACHINE_FLAG_KVM) 81#define MACHINE_IS_KVM (S390_lowcore.machine_flags & MACHINE_FLAG_KVM)
82#define MACHINE_HAS_DIAG9C (machine_flags & MACHINE_FLAG_DIAG9C) 82#define MACHINE_HAS_DIAG9C (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG9C)
83 83
84#ifndef __s390x__ 84#ifndef __s390x__
85#define MACHINE_HAS_IEEE (machine_flags & MACHINE_FLAG_IEEE) 85#define MACHINE_HAS_IEEE (S390_lowcore.machine_flags & MACHINE_FLAG_IEEE)
86#define MACHINE_HAS_CSP (machine_flags & MACHINE_FLAG_CSP) 86#define MACHINE_HAS_CSP (S390_lowcore.machine_flags & MACHINE_FLAG_CSP)
87#define MACHINE_HAS_IDTE (0) 87#define MACHINE_HAS_IDTE (0)
88#define MACHINE_HAS_DIAG44 (1) 88#define MACHINE_HAS_DIAG44 (1)
89#define MACHINE_HAS_MVPG (machine_flags & MACHINE_FLAG_MVPG) 89#define MACHINE_HAS_MVPG (S390_lowcore.machine_flags & MACHINE_FLAG_MVPG)
90#define MACHINE_HAS_MVCOS (0) 90#define MACHINE_HAS_MVCOS (0)
91#define MACHINE_HAS_HPAGE (0) 91#define MACHINE_HAS_HPAGE (0)
92#define MACHINE_HAS_PFMF (0) 92#define MACHINE_HAS_PFMF (0)
93#else /* __s390x__ */ 93#else /* __s390x__ */
94#define MACHINE_HAS_IEEE (1) 94#define MACHINE_HAS_IEEE (1)
95#define MACHINE_HAS_CSP (1) 95#define MACHINE_HAS_CSP (1)
96#define MACHINE_HAS_IDTE (machine_flags & MACHINE_FLAG_IDTE) 96#define MACHINE_HAS_IDTE (S390_lowcore.machine_flags & MACHINE_FLAG_IDTE)
97#define MACHINE_HAS_DIAG44 (machine_flags & MACHINE_FLAG_DIAG44) 97#define MACHINE_HAS_DIAG44 (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG44)
98#define MACHINE_HAS_MVPG (1) 98#define MACHINE_HAS_MVPG (1)
99#define MACHINE_HAS_MVCOS (machine_flags & MACHINE_FLAG_MVCOS) 99#define MACHINE_HAS_MVCOS (S390_lowcore.machine_flags & MACHINE_FLAG_MVCOS)
100#define MACHINE_HAS_HPAGE (machine_flags & MACHINE_FLAG_HPAGE) 100#define MACHINE_HAS_HPAGE (S390_lowcore.machine_flags & MACHINE_FLAG_HPAGE)
101#define MACHINE_HAS_PFMF (machine_flags & MACHINE_FLAG_PFMF) 101#define MACHINE_HAS_PFMF (S390_lowcore.machine_flags & MACHINE_FLAG_PFMF)
102#endif /* __s390x__ */ 102#endif /* __s390x__ */
103 103
104#define ZFCPDUMP_HSA_SIZE (32UL<<20) 104#define ZFCPDUMP_HSA_SIZE (32UL<<20)
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h
index c544aa524535..461f2abd2e6f 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -31,8 +31,9 @@
31#define ASYNC_SIZE (PAGE_SIZE << ASYNC_ORDER) 31#define ASYNC_SIZE (PAGE_SIZE << ASYNC_ORDER)
32 32
33#ifndef __ASSEMBLY__ 33#ifndef __ASSEMBLY__
34#include <asm/processor.h>
35#include <asm/lowcore.h> 34#include <asm/lowcore.h>
35#include <asm/page.h>
36#include <asm/processor.h>
36 37
37/* 38/*
38 * low level task data that entry.S needs immediate access to 39 * low level task data that entry.S needs immediate access to
diff --git a/arch/s390/include/asm/timer.h b/arch/s390/include/asm/timer.h
index e4bcab739c19..814243cafdfe 100644
--- a/arch/s390/include/asm/timer.h
+++ b/arch/s390/include/asm/timer.h
@@ -41,6 +41,7 @@ extern void init_virt_timer(struct vtimer_list *timer);
41extern void add_virt_timer(void *new); 41extern void add_virt_timer(void *new);
42extern void add_virt_timer_periodic(void *new); 42extern void add_virt_timer_periodic(void *new);
43extern int mod_virt_timer(struct vtimer_list *timer, __u64 expires); 43extern int mod_virt_timer(struct vtimer_list *timer, __u64 expires);
44extern int mod_virt_timer_periodic(struct vtimer_list *timer, __u64 expires);
44extern int del_virt_timer(struct vtimer_list *timer); 45extern int del_virt_timer(struct vtimer_list *timer);
45 46
46extern void init_cpu_vtimer(void); 47extern void init_cpu_vtimer(void);
diff --git a/arch/s390/include/asm/timex.h b/arch/s390/include/asm/timex.h
index d744c3d62de5..cc21e3e20fd7 100644
--- a/arch/s390/include/asm/timex.h
+++ b/arch/s390/include/asm/timex.h
@@ -11,6 +11,9 @@
11#ifndef _ASM_S390_TIMEX_H 11#ifndef _ASM_S390_TIMEX_H
12#define _ASM_S390_TIMEX_H 12#define _ASM_S390_TIMEX_H
13 13
14/* The value of the TOD clock for 1.1.1970. */
15#define TOD_UNIX_EPOCH 0x7d91048bca000000ULL
16
14/* Inline functions for clock register access. */ 17/* Inline functions for clock register access. */
15static inline int set_clock(__u64 time) 18static inline int set_clock(__u64 time)
16{ 19{
@@ -85,4 +88,6 @@ int get_sync_clock(unsigned long long *clock);
85void init_cpu_timer(void); 88void init_cpu_timer(void);
86unsigned long long monotonic_clock(void); 89unsigned long long monotonic_clock(void);
87 90
91extern u64 sched_clock_base_cc;
92
88#endif 93#endif
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index c8ad350d1444..f0f19e6ace6c 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -265,7 +265,9 @@
265#define __NR_pipe2 325 265#define __NR_pipe2 325
266#define __NR_dup3 326 266#define __NR_dup3 326
267#define __NR_epoll_create1 327 267#define __NR_epoll_create1 327
268#define NR_syscalls 328 268#define __NR_preadv 328
269#define __NR_pwritev 329
270#define NR_syscalls 330
269 271
270/* 272/*
271 * There are some system calls that are not present on 64 bit, some 273 * There are some system calls that are not present on 64 bit, some
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index 67a60016babb..fa9905ce7d0b 100644
--- a/arch/s390/kernel/asm-offsets.c
+++ b/arch/s390/kernel/asm-offsets.c
@@ -27,6 +27,8 @@ int main(void)
27 DEFINE(__TI_flags, offsetof(struct thread_info, flags)); 27 DEFINE(__TI_flags, offsetof(struct thread_info, flags));
28 DEFINE(__TI_cpu, offsetof(struct thread_info, cpu)); 28 DEFINE(__TI_cpu, offsetof(struct thread_info, cpu));
29 DEFINE(__TI_precount, offsetof(struct thread_info, preempt_count)); 29 DEFINE(__TI_precount, offsetof(struct thread_info, preempt_count));
30 DEFINE(__TI_user_timer, offsetof(struct thread_info, user_timer));
31 DEFINE(__TI_system_timer, offsetof(struct thread_info, system_timer));
30 BLANK(); 32 BLANK();
31 DEFINE(__PT_ARGS, offsetof(struct pt_regs, args)); 33 DEFINE(__PT_ARGS, offsetof(struct pt_regs, args));
32 DEFINE(__PT_PSW, offsetof(struct pt_regs, psw)); 34 DEFINE(__PT_PSW, offsetof(struct pt_regs, psw));
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 6cc87d8c8682..002c70d3cb75 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -702,20 +702,12 @@ asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename,
702 struct stat64_emu31 __user* statbuf, int flag) 702 struct stat64_emu31 __user* statbuf, int flag)
703{ 703{
704 struct kstat stat; 704 struct kstat stat;
705 int error = -EINVAL; 705 int error;
706
707 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
708 goto out;
709
710 if (flag & AT_SYMLINK_NOFOLLOW)
711 error = vfs_lstat_fd(dfd, filename, &stat);
712 else
713 error = vfs_stat_fd(dfd, filename, &stat);
714 706
715 if (!error) 707 error = vfs_fstatat(dfd, filename, &stat, flag);
716 error = cp_stat64(statbuf, &stat); 708 if (error)
717out: 709 return error;
718 return error; 710 return cp_stat64(statbuf, &stat);
719} 711}
720 712
721/* 713/*
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index 87cf5a79a351..fb38af6316bb 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -1805,3 +1805,21 @@ compat_sys_keyctl_wrapper:
1805 llgfr %r5,%r5 # u32 1805 llgfr %r5,%r5 # u32
1806 llgfr %r6,%r6 # u32 1806 llgfr %r6,%r6 # u32
1807 jg compat_sys_keyctl # branch to system call 1807 jg compat_sys_keyctl # branch to system call
1808
1809 .globl compat_sys_preadv_wrapper
1810compat_sys_preadv_wrapper:
1811 llgfr %r2,%r2 # unsigned long
1812 llgtr %r3,%r3 # compat_iovec *
1813 llgfr %r4,%r4 # unsigned long
1814 llgfr %r5,%r5 # u32
1815 llgfr %r6,%r6 # u32
1816 jg compat_sys_preadv # branch to system call
1817
1818 .globl compat_sys_pwritev_wrapper
1819compat_sys_pwritev_wrapper:
1820 llgfr %r2,%r2 # unsigned long
1821 llgtr %r3,%r3 # compat_iovec *
1822 llgfr %r4,%r4 # unsigned long
1823 llgfr %r5,%r5 # u32
1824 llgfr %r6,%r6 # u32
1825 jg compat_sys_pwritev # branch to system call
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index 4d221c81c849..cf09948faad6 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -34,8 +34,25 @@
34 34
35char kernel_nss_name[NSS_NAME_SIZE + 1]; 35char kernel_nss_name[NSS_NAME_SIZE + 1];
36 36
37static unsigned long machine_flags;
38
37static void __init setup_boot_command_line(void); 39static void __init setup_boot_command_line(void);
38 40
41/*
42 * Get the TOD clock running.
43 */
44static void __init reset_tod_clock(void)
45{
46 u64 time;
47
48 if (store_clock(&time) == 0)
49 return;
50 /* TOD clock not running. Set the clock to Unix Epoch. */
51 if (set_clock(TOD_UNIX_EPOCH) != 0 || store_clock(&time) != 0)
52 disabled_wait(0);
53
54 sched_clock_base_cc = TOD_UNIX_EPOCH;
55}
39 56
40#ifdef CONFIG_SHARED_KERNEL 57#ifdef CONFIG_SHARED_KERNEL
41int __init savesys_ipl_nss(char *cmd, const int cmdlen); 58int __init savesys_ipl_nss(char *cmd, const int cmdlen);
@@ -370,6 +387,7 @@ static void __init setup_boot_command_line(void)
370 */ 387 */
371void __init startup_init(void) 388void __init startup_init(void)
372{ 389{
390 reset_tod_clock();
373 ipl_save_parameters(); 391 ipl_save_parameters();
374 rescue_initrd(); 392 rescue_initrd();
375 clear_bss_section(); 393 clear_bss_section();
@@ -391,5 +409,6 @@ void __init startup_init(void)
391 setup_hpage(); 409 setup_hpage();
392 sclp_facilities_detect(); 410 sclp_facilities_detect();
393 detect_memory_layout(memory_chunk); 411 detect_memory_layout(memory_chunk);
412 S390_lowcore.machine_flags = machine_flags;
394 lockdep_on(); 413 lockdep_on();
395} 414}
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 1268aa2991bf..f3e275934213 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -837,16 +837,29 @@ mcck_return:
837 __CPUINIT 837 __CPUINIT
838 .globl restart_int_handler 838 .globl restart_int_handler
839restart_int_handler: 839restart_int_handler:
840 basr %r1,0
841restart_base:
842 spt restart_vtime-restart_base(%r1)
843 stck __LC_LAST_UPDATE_CLOCK
844 mvc __LC_LAST_UPDATE_TIMER(8),restart_vtime-restart_base(%r1)
845 mvc __LC_EXIT_TIMER(8),restart_vtime-restart_base(%r1)
840 l %r15,__LC_SAVE_AREA+60 # load ksp 846 l %r15,__LC_SAVE_AREA+60 # load ksp
841 lctl %c0,%c15,__LC_CREGS_SAVE_AREA # get new ctl regs 847 lctl %c0,%c15,__LC_CREGS_SAVE_AREA # get new ctl regs
842 lam %a0,%a15,__LC_AREGS_SAVE_AREA 848 lam %a0,%a15,__LC_AREGS_SAVE_AREA
843 lm %r6,%r15,__SF_GPRS(%r15) # load registers from clone 849 lm %r6,%r15,__SF_GPRS(%r15) # load registers from clone
850 l %r1,__LC_THREAD_INFO
851 mvc __LC_USER_TIMER(8),__TI_user_timer(%r1)
852 mvc __LC_SYSTEM_TIMER(8),__TI_system_timer(%r1)
853 xc __LC_STEAL_TIMER(8),__LC_STEAL_TIMER
844 stosm __SF_EMPTY(%r15),0x04 # now we can turn dat on 854 stosm __SF_EMPTY(%r15),0x04 # now we can turn dat on
845 basr %r14,0 855 basr %r14,0
846 l %r14,restart_addr-.(%r14) 856 l %r14,restart_addr-.(%r14)
847 br %r14 # branch to start_secondary 857 br %r14 # branch to start_secondary
848restart_addr: 858restart_addr:
849 .long start_secondary 859 .long start_secondary
860 .align 8
861restart_vtime:
862 .long 0x7fffffff,0xffffffff
850 .previous 863 .previous
851#else 864#else
852/* 865/*
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index c6fbde13971a..84a105838e03 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -831,14 +831,27 @@ mcck_return:
831 __CPUINIT 831 __CPUINIT
832 .globl restart_int_handler 832 .globl restart_int_handler
833restart_int_handler: 833restart_int_handler:
834 basr %r1,0
835restart_base:
836 spt restart_vtime-restart_base(%r1)
837 stck __LC_LAST_UPDATE_CLOCK
838 mvc __LC_LAST_UPDATE_TIMER(8),restart_vtime-restart_base(%r1)
839 mvc __LC_EXIT_TIMER(8),restart_vtime-restart_base(%r1)
834 lg %r15,__LC_SAVE_AREA+120 # load ksp 840 lg %r15,__LC_SAVE_AREA+120 # load ksp
835 lghi %r10,__LC_CREGS_SAVE_AREA 841 lghi %r10,__LC_CREGS_SAVE_AREA
836 lctlg %c0,%c15,0(%r10) # get new ctl regs 842 lctlg %c0,%c15,0(%r10) # get new ctl regs
837 lghi %r10,__LC_AREGS_SAVE_AREA 843 lghi %r10,__LC_AREGS_SAVE_AREA
838 lam %a0,%a15,0(%r10) 844 lam %a0,%a15,0(%r10)
839 lmg %r6,%r15,__SF_GPRS(%r15) # load registers from clone 845 lmg %r6,%r15,__SF_GPRS(%r15) # load registers from clone
846 lg %r1,__LC_THREAD_INFO
847 mvc __LC_USER_TIMER(8),__TI_user_timer(%r1)
848 mvc __LC_SYSTEM_TIMER(8),__TI_system_timer(%r1)
849 xc __LC_STEAL_TIMER(8),__LC_STEAL_TIMER
840 stosm __SF_EMPTY(%r15),0x04 # now we can turn dat on 850 stosm __SF_EMPTY(%r15),0x04 # now we can turn dat on
841 jg start_secondary 851 jg start_secondary
852 .align 8
853restart_vtime:
854 .long 0x7fffffff,0xffffffff
842 .previous 855 .previous
843#else 856#else
844/* 857/*
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index 1046c2c9f8d1..22596d70fc2e 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -23,6 +23,7 @@
23 * 23 *
24 */ 24 */
25 25
26#include <linux/init.h>
26#include <asm/setup.h> 27#include <asm/setup.h>
27#include <asm/lowcore.h> 28#include <asm/lowcore.h>
28#include <asm/asm-offsets.h> 29#include <asm/asm-offsets.h>
@@ -35,7 +36,7 @@
35#define ARCH_OFFSET 0 36#define ARCH_OFFSET 0
36#endif 37#endif
37 38
38.section ".text.head","ax" 39__HEAD
39#ifndef CONFIG_IPL 40#ifndef CONFIG_IPL
40 .org 0 41 .org 0
41 .long 0x00080000,0x80000000+startup # Just a restart PSW 42 .long 0x00080000,0x80000000+startup # Just a restart PSW
@@ -471,7 +472,12 @@ startup:basr %r13,0 # get base
471.LPG0: 472.LPG0:
472 xc 0x200(256),0x200 # partially clear lowcore 473 xc 0x200(256),0x200 # partially clear lowcore
473 xc 0x300(256),0x300 474 xc 0x300(256),0x300
474 475 l %r1,5f-.LPG0(%r13)
476 stck 0(%r1)
477 spt 6f-.LPG0(%r13)
478 mvc __LC_LAST_UPDATE_CLOCK(8),0(%r1)
479 mvc __LC_LAST_UPDATE_TIMER(8),6f-.LPG0(%r13)
480 mvc __LC_EXIT_TIMER(8),5f-.LPG0(%r13)
475#ifndef CONFIG_MARCH_G5 481#ifndef CONFIG_MARCH_G5
476 # check processor version against MARCH_{G5,Z900,Z990,Z9_109,Z10} 482 # check processor version against MARCH_{G5,Z900,Z990,Z9_109,Z10}
477 stidp __LC_CPUID # store cpuid 483 stidp __LC_CPUID # store cpuid
@@ -496,9 +502,13 @@ startup:basr %r13,0 # get base
496 brct %r0,0b 502 brct %r0,0b
497#endif 503#endif
498 504
499 l %r13,0f-.LPG0(%r13) 505 l %r13,4f-.LPG0(%r13)
500 b 0(%r13) 506 b 0(%r13)
5010: .long startup_continue 507 .align 4
5084: .long startup_continue
5095: .long sched_clock_base_cc
510 .align 8
5116: .long 0x7fffffff,0xffffffff
502 512
503# 513#
504# params at 10400 (setup.h) 514# params at 10400 (setup.h)
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 6f3711a0eaaa..b8bf4b140065 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -23,6 +23,7 @@
23#include <asm/ebcdic.h> 23#include <asm/ebcdic.h>
24#include <asm/reset.h> 24#include <asm/reset.h>
25#include <asm/sclp.h> 25#include <asm/sclp.h>
26#include <asm/sigp.h>
26#include <asm/checksum.h> 27#include <asm/checksum.h>
27 28
28#define IPL_PARM_BLOCK_VERSION 0 29#define IPL_PARM_BLOCK_VERSION 0
diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c
index 4bfdc421d7e9..28cf196ba775 100644
--- a/arch/s390/kernel/nmi.c
+++ b/arch/s390/kernel/nmi.c
@@ -10,6 +10,7 @@
10 10
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <linux/hardirq.h>
13#include <linux/time.h> 14#include <linux/time.h>
14#include <linux/module.h> 15#include <linux/module.h>
15#include <asm/lowcore.h> 16#include <asm/lowcore.h>
@@ -253,7 +254,7 @@ void notrace s390_do_machine_check(struct pt_regs *regs)
253 struct mci *mci; 254 struct mci *mci;
254 int umode; 255 int umode;
255 256
256 lockdep_off(); 257 nmi_enter();
257 s390_idle_check(); 258 s390_idle_check();
258 259
259 mci = (struct mci *) &S390_lowcore.mcck_interruption_code; 260 mci = (struct mci *) &S390_lowcore.mcck_interruption_code;
@@ -363,7 +364,7 @@ void notrace s390_do_machine_check(struct pt_regs *regs)
363 mcck->warning = 1; 364 mcck->warning = 1;
364 set_thread_flag(TIF_MCCK_PENDING); 365 set_thread_flag(TIF_MCCK_PENDING);
365 } 366 }
366 lockdep_on(); 367 nmi_exit();
367} 368}
368 369
369static int __init machine_check_init(void) 370static int __init machine_check_init(void)
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 06201b93cbbf..7402b6a39ead 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -82,9 +82,6 @@ EXPORT_SYMBOL(console_devno);
82unsigned int console_irq = -1; 82unsigned int console_irq = -1;
83EXPORT_SYMBOL(console_irq); 83EXPORT_SYMBOL(console_irq);
84 84
85unsigned long machine_flags;
86EXPORT_SYMBOL(machine_flags);
87
88unsigned long elf_hwcap = 0; 85unsigned long elf_hwcap = 0;
89char elf_platform[ELF_PLATFORM_SIZE]; 86char elf_platform[ELF_PLATFORM_SIZE];
90 87
@@ -426,6 +423,7 @@ setup_lowcore(void)
426 __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0) + PAGE_SIZE; 423 __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0) + PAGE_SIZE;
427 lc->current_task = (unsigned long) init_thread_union.thread_info.task; 424 lc->current_task = (unsigned long) init_thread_union.thread_info.task;
428 lc->thread_info = (unsigned long) &init_thread_union; 425 lc->thread_info = (unsigned long) &init_thread_union;
426 lc->machine_flags = S390_lowcore.machine_flags;
429#ifndef CONFIG_64BIT 427#ifndef CONFIG_64BIT
430 if (MACHINE_HAS_IEEE) { 428 if (MACHINE_HAS_IEEE) {
431 lc->extended_save_area_addr = (__u32) 429 lc->extended_save_area_addr = (__u32)
@@ -436,6 +434,14 @@ setup_lowcore(void)
436#else 434#else
437 lc->vdso_per_cpu_data = (unsigned long) &lc->paste[0]; 435 lc->vdso_per_cpu_data = (unsigned long) &lc->paste[0];
438#endif 436#endif
437 lc->sync_enter_timer = S390_lowcore.sync_enter_timer;
438 lc->async_enter_timer = S390_lowcore.async_enter_timer;
439 lc->exit_timer = S390_lowcore.exit_timer;
440 lc->user_timer = S390_lowcore.user_timer;
441 lc->system_timer = S390_lowcore.system_timer;
442 lc->steal_timer = S390_lowcore.steal_timer;
443 lc->last_update_timer = S390_lowcore.last_update_timer;
444 lc->last_update_clock = S390_lowcore.last_update_clock;
439 set_prefix((u32)(unsigned long) lc); 445 set_prefix((u32)(unsigned long) lc);
440 lowcore_ptr[0] = lc; 446 lowcore_ptr[0] = lc;
441} 447}
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 006ed5016eb4..a985a3ba4401 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -571,6 +571,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
571 cpu_lowcore->current_task = (unsigned long) idle; 571 cpu_lowcore->current_task = (unsigned long) idle;
572 cpu_lowcore->cpu_nr = cpu; 572 cpu_lowcore->cpu_nr = cpu;
573 cpu_lowcore->kernel_asce = S390_lowcore.kernel_asce; 573 cpu_lowcore->kernel_asce = S390_lowcore.kernel_asce;
574 cpu_lowcore->machine_flags = S390_lowcore.machine_flags;
574 eieio(); 575 eieio();
575 576
576 while (signal_processor(cpu, sigp_restart) == sigp_busy) 577 while (signal_processor(cpu, sigp_restart) == sigp_busy)
@@ -590,7 +591,8 @@ static int __init setup_possible_cpus(char *s)
590 int pcpus, cpu; 591 int pcpus, cpu;
591 592
592 pcpus = simple_strtoul(s, NULL, 0); 593 pcpus = simple_strtoul(s, NULL, 0);
593 for (cpu = 0; cpu < pcpus && cpu < nr_cpu_ids; cpu++) 594 init_cpu_possible(cpumask_of(0));
595 for (cpu = 1; cpu < pcpus && cpu < nr_cpu_ids; cpu++)
594 set_cpu_possible(cpu, true); 596 set_cpu_possible(cpu, true);
595 return 0; 597 return 0;
596} 598}
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index fe5b25a988ab..2c7739fe70b1 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -336,3 +336,5 @@ SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper)
336SYSCALL(sys_pipe2,sys_pipe2,sys_pipe2_wrapper) /* 325 */ 336SYSCALL(sys_pipe2,sys_pipe2,sys_pipe2_wrapper) /* 325 */
337SYSCALL(sys_dup3,sys_dup3,sys_dup3_wrapper) 337SYSCALL(sys_dup3,sys_dup3,sys_dup3_wrapper)
338SYSCALL(sys_epoll_create1,sys_epoll_create1,sys_epoll_create1_wrapper) 338SYSCALL(sys_epoll_create1,sys_epoll_create1,sys_epoll_create1_wrapper)
339SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper)
340SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper)
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index f72d41068dc2..ef596d020573 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -52,9 +52,6 @@
52#define USECS_PER_JIFFY ((unsigned long) 1000000/HZ) 52#define USECS_PER_JIFFY ((unsigned long) 1000000/HZ)
53#define CLK_TICKS_PER_JIFFY ((unsigned long) USECS_PER_JIFFY << 12) 53#define CLK_TICKS_PER_JIFFY ((unsigned long) USECS_PER_JIFFY << 12)
54 54
55/* The value of the TOD clock for 1.1.1970. */
56#define TOD_UNIX_EPOCH 0x7d91048bca000000ULL
57
58/* 55/*
59 * Create a small time difference between the timer interrupts 56 * Create a small time difference between the timer interrupts
60 * on the different cpus to avoid lock contention. 57 * on the different cpus to avoid lock contention.
@@ -63,9 +60,10 @@
63 60
64#define TICK_SIZE tick 61#define TICK_SIZE tick
65 62
63u64 sched_clock_base_cc = -1; /* Force to data section. */
64
66static ext_int_info_t ext_int_info_cc; 65static ext_int_info_t ext_int_info_cc;
67static ext_int_info_t ext_int_etr_cc; 66static ext_int_info_t ext_int_etr_cc;
68static u64 sched_clock_base_cc;
69 67
70static DEFINE_PER_CPU(struct clock_event_device, comparators); 68static DEFINE_PER_CPU(struct clock_event_device, comparators);
71 69
@@ -195,25 +193,15 @@ static void timing_alert_interrupt(__u16 code)
195static void etr_reset(void); 193static void etr_reset(void);
196static void stp_reset(void); 194static void stp_reset(void);
197 195
198/* 196unsigned long read_persistent_clock(void)
199 * Get the TOD clock running.
200 */
201static u64 __init reset_tod_clock(void)
202{ 197{
203 u64 time; 198 struct timespec ts;
204
205 etr_reset();
206 stp_reset();
207 if (store_clock(&time) == 0)
208 return time;
209 /* TOD clock not running. Set the clock to Unix Epoch. */
210 if (set_clock(TOD_UNIX_EPOCH) != 0 || store_clock(&time) != 0)
211 panic("TOD clock not operational.");
212 199
213 return TOD_UNIX_EPOCH; 200 tod_to_timeval(get_clock() - TOD_UNIX_EPOCH, &ts);
201 return ts.tv_sec;
214} 202}
215 203
216static cycle_t read_tod_clock(void) 204static cycle_t read_tod_clock(struct clocksource *cs)
217{ 205{
218 return get_clock(); 206 return get_clock();
219} 207}
@@ -265,12 +253,13 @@ void update_vsyscall_tz(void)
265 */ 253 */
266void __init time_init(void) 254void __init time_init(void)
267{ 255{
268 sched_clock_base_cc = reset_tod_clock(); 256 struct timespec ts;
257 unsigned long flags;
258 cycle_t now;
269 259
270 /* set xtime */ 260 /* Reset time synchronization interfaces. */
271 tod_to_timeval(sched_clock_base_cc - TOD_UNIX_EPOCH, &xtime); 261 etr_reset();
272 set_normalized_timespec(&wall_to_monotonic, 262 stp_reset();
273 -xtime.tv_sec, -xtime.tv_nsec);
274 263
275 /* request the clock comparator external interrupt */ 264 /* request the clock comparator external interrupt */
276 if (register_early_external_interrupt(0x1004, 265 if (register_early_external_interrupt(0x1004,
@@ -278,17 +267,38 @@ void __init time_init(void)
278 &ext_int_info_cc) != 0) 267 &ext_int_info_cc) != 0)
279 panic("Couldn't request external interrupt 0x1004"); 268 panic("Couldn't request external interrupt 0x1004");
280 269
281 if (clocksource_register(&clocksource_tod) != 0)
282 panic("Could not register TOD clock source");
283
284 /* request the timing alert external interrupt */ 270 /* request the timing alert external interrupt */
285 if (register_early_external_interrupt(0x1406, 271 if (register_early_external_interrupt(0x1406,
286 timing_alert_interrupt, 272 timing_alert_interrupt,
287 &ext_int_etr_cc) != 0) 273 &ext_int_etr_cc) != 0)
288 panic("Couldn't request external interrupt 0x1406"); 274 panic("Couldn't request external interrupt 0x1406");
289 275
276 if (clocksource_register(&clocksource_tod) != 0)
277 panic("Could not register TOD clock source");
278
279 /*
280 * The TOD clock is an accurate clock. The xtime should be
281 * initialized in a way that the difference between TOD and
282 * xtime is reasonably small. Too bad that timekeeping_init
283 * sets xtime.tv_nsec to zero. In addition the clock source
284 * change from the jiffies clock source to the TOD clock
285 * source add another error of up to 1/HZ second. The same
286 * function sets wall_to_monotonic to a value that is too
287 * small for /proc/uptime to be accurate.
288 * Reset xtime and wall_to_monotonic to sane values.
289 */
290 write_seqlock_irqsave(&xtime_lock, flags);
291 now = get_clock();
292 tod_to_timeval(now - TOD_UNIX_EPOCH, &xtime);
293 clocksource_tod.cycle_last = now;
294 clocksource_tod.raw_time = xtime;
295 tod_to_timeval(sched_clock_base_cc - TOD_UNIX_EPOCH, &ts);
296 set_normalized_timespec(&wall_to_monotonic, -ts.tv_sec, -ts.tv_nsec);
297 write_sequnlock_irqrestore(&xtime_lock, flags);
298
290 /* Enable TOD clock interrupts on the boot cpu. */ 299 /* Enable TOD clock interrupts on the boot cpu. */
291 init_cpu_timer(); 300 init_cpu_timer();
301
292 /* Enable cpu timer interrupts on the boot cpu. */ 302 /* Enable cpu timer interrupts on the boot cpu. */
293 vtime_init(); 303 vtime_init();
294} 304}
@@ -1423,6 +1433,7 @@ static void *stp_page;
1423static void stp_work_fn(struct work_struct *work); 1433static void stp_work_fn(struct work_struct *work);
1424static DEFINE_MUTEX(stp_work_mutex); 1434static DEFINE_MUTEX(stp_work_mutex);
1425static DECLARE_WORK(stp_work, stp_work_fn); 1435static DECLARE_WORK(stp_work, stp_work_fn);
1436static struct timer_list stp_timer;
1426 1437
1427static int __init early_parse_stp(char *p) 1438static int __init early_parse_stp(char *p)
1428{ 1439{
@@ -1454,10 +1465,16 @@ static void __init stp_reset(void)
1454 } 1465 }
1455} 1466}
1456 1467
1468static void stp_timeout(unsigned long dummy)
1469{
1470 queue_work(time_sync_wq, &stp_work);
1471}
1472
1457static int __init stp_init(void) 1473static int __init stp_init(void)
1458{ 1474{
1459 if (!test_bit(CLOCK_SYNC_HAS_STP, &clock_sync_flags)) 1475 if (!test_bit(CLOCK_SYNC_HAS_STP, &clock_sync_flags))
1460 return 0; 1476 return 0;
1477 setup_timer(&stp_timer, stp_timeout, 0UL);
1461 time_init_wq(); 1478 time_init_wq();
1462 if (!stp_online) 1479 if (!stp_online)
1463 return 0; 1480 return 0;
@@ -1565,6 +1582,7 @@ static void stp_work_fn(struct work_struct *work)
1565 1582
1566 if (!stp_online) { 1583 if (!stp_online) {
1567 chsc_sstpc(stp_page, STP_OP_CTRL, 0x0000); 1584 chsc_sstpc(stp_page, STP_OP_CTRL, 0x0000);
1585 del_timer_sync(&stp_timer);
1568 goto out_unlock; 1586 goto out_unlock;
1569 } 1587 }
1570 1588
@@ -1586,6 +1604,13 @@ static void stp_work_fn(struct work_struct *work)
1586 stop_machine(stp_sync_clock, &stp_sync, &cpu_online_map); 1604 stop_machine(stp_sync_clock, &stp_sync, &cpu_online_map);
1587 put_online_cpus(); 1605 put_online_cpus();
1588 1606
1607 if (!check_sync_clock())
1608 /*
1609 * There is a usable clock but the synchonization failed.
1610 * Retry after a second.
1611 */
1612 mod_timer(&stp_timer, jiffies + HZ);
1613
1589out_unlock: 1614out_unlock:
1590 mutex_unlock(&stp_work_mutex); 1615 mutex_unlock(&stp_work_mutex);
1591} 1616}
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 7a2063eb88f0..89399b8756c2 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -29,8 +29,8 @@ SECTIONS
29 . = 0x00000000; 29 . = 0x00000000;
30 .text : { 30 .text : {
31 _text = .; /* Text and read-only data */ 31 _text = .; /* Text and read-only data */
32 *(.text.head) 32 HEAD_TEXT
33 TEXT_TEXT 33 TEXT_TEXT
34 SCHED_TEXT 34 SCHED_TEXT
35 LOCK_TEXT 35 LOCK_TEXT
36 KPROBES_TEXT 36 KPROBES_TEXT
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index ecf0304e61c1..c87f59bd8246 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -134,6 +134,8 @@ void vtime_start_cpu(void)
134 /* Account time spent with enabled wait psw loaded as idle time. */ 134 /* Account time spent with enabled wait psw loaded as idle time. */
135 idle_time = S390_lowcore.int_clock - idle->idle_enter; 135 idle_time = S390_lowcore.int_clock - idle->idle_enter;
136 account_idle_time(idle_time); 136 account_idle_time(idle_time);
137 S390_lowcore.steal_timer +=
138 idle->idle_enter - S390_lowcore.last_update_clock;
137 S390_lowcore.last_update_clock = S390_lowcore.int_clock; 139 S390_lowcore.last_update_clock = S390_lowcore.int_clock;
138 140
139 /* Account system time spent going idle. */ 141 /* Account system time spent going idle. */
@@ -238,6 +240,22 @@ void vtime_stop_cpu(void)
238 } 240 }
239} 241}
240 242
243cputime64_t s390_get_idle_time(int cpu)
244{
245 struct s390_idle_data *idle;
246 unsigned long long now, idle_time, idle_enter;
247
248 idle = &per_cpu(s390_idle, cpu);
249 spin_lock(&idle->lock);
250 now = get_clock();
251 idle_time = 0;
252 idle_enter = idle->idle_enter;
253 if (idle_enter != 0ULL && idle_enter < now)
254 idle_time = now - idle_enter;
255 spin_unlock(&idle->lock);
256 return idle_time;
257}
258
241/* 259/*
242 * Sorted add to a list. List is linear searched until first bigger 260 * Sorted add to a list. List is linear searched until first bigger
243 * element is found. 261 * element is found.
@@ -425,17 +443,7 @@ void add_virt_timer_periodic(void *new)
425} 443}
426EXPORT_SYMBOL(add_virt_timer_periodic); 444EXPORT_SYMBOL(add_virt_timer_periodic);
427 445
428/* 446int __mod_vtimer(struct vtimer_list *timer, __u64 expires, int periodic)
429 * If we change a pending timer the function must be called on the CPU
430 * where the timer is running on, e.g. by smp_call_function_single()
431 *
432 * The original mod_timer adds the timer if it is not pending. For
433 * compatibility we do the same. The timer will be added on the current
434 * CPU as a oneshot timer.
435 *
436 * returns whether it has modified a pending timer (1) or not (0)
437 */
438int mod_virt_timer(struct vtimer_list *timer, __u64 expires)
439{ 447{
440 struct vtimer_queue *vq; 448 struct vtimer_queue *vq;
441 unsigned long flags; 449 unsigned long flags;
@@ -444,39 +452,35 @@ int mod_virt_timer(struct vtimer_list *timer, __u64 expires)
444 BUG_ON(!timer->function); 452 BUG_ON(!timer->function);
445 BUG_ON(!expires || expires > VTIMER_MAX_SLICE); 453 BUG_ON(!expires || expires > VTIMER_MAX_SLICE);
446 454
447 /*
448 * This is a common optimization triggered by the
449 * networking code - if the timer is re-modified
450 * to be the same thing then just return:
451 */
452 if (timer->expires == expires && vtimer_pending(timer)) 455 if (timer->expires == expires && vtimer_pending(timer))
453 return 1; 456 return 1;
454 457
455 cpu = get_cpu(); 458 cpu = get_cpu();
456 vq = &per_cpu(virt_cpu_timer, cpu); 459 vq = &per_cpu(virt_cpu_timer, cpu);
457 460
458 /* check if we run on the right CPU */
459 BUG_ON(timer->cpu != cpu);
460
461 /* disable interrupts before test if timer is pending */ 461 /* disable interrupts before test if timer is pending */
462 spin_lock_irqsave(&vq->lock, flags); 462 spin_lock_irqsave(&vq->lock, flags);
463 463
464 /* if timer isn't pending add it on the current CPU */ 464 /* if timer isn't pending add it on the current CPU */
465 if (!vtimer_pending(timer)) { 465 if (!vtimer_pending(timer)) {
466 spin_unlock_irqrestore(&vq->lock, flags); 466 spin_unlock_irqrestore(&vq->lock, flags);
467 /* we do not activate an interval timer with mod_virt_timer */ 467
468 timer->interval = 0; 468 if (periodic)
469 timer->interval = expires;
470 else
471 timer->interval = 0;
469 timer->expires = expires; 472 timer->expires = expires;
470 timer->cpu = cpu; 473 timer->cpu = cpu;
471 internal_add_vtimer(timer); 474 internal_add_vtimer(timer);
472 return 0; 475 return 0;
473 } 476 }
474 477
478 /* check if we run on the right CPU */
479 BUG_ON(timer->cpu != cpu);
480
475 list_del_init(&timer->entry); 481 list_del_init(&timer->entry);
476 timer->expires = expires; 482 timer->expires = expires;
477 483 if (periodic)
478 /* also change the interval if we have an interval timer */
479 if (timer->interval)
480 timer->interval = expires; 484 timer->interval = expires;
481 485
482 /* the timer can't expire anymore so we can release the lock */ 486 /* the timer can't expire anymore so we can release the lock */
@@ -484,9 +488,32 @@ int mod_virt_timer(struct vtimer_list *timer, __u64 expires)
484 internal_add_vtimer(timer); 488 internal_add_vtimer(timer);
485 return 1; 489 return 1;
486} 490}
491
492/*
493 * If we change a pending timer the function must be called on the CPU
494 * where the timer is running on.
495 *
496 * returns whether it has modified a pending timer (1) or not (0)
497 */
498int mod_virt_timer(struct vtimer_list *timer, __u64 expires)
499{
500 return __mod_vtimer(timer, expires, 0);
501}
487EXPORT_SYMBOL(mod_virt_timer); 502EXPORT_SYMBOL(mod_virt_timer);
488 503
489/* 504/*
505 * If we change a pending timer the function must be called on the CPU
506 * where the timer is running on.
507 *
508 * returns whether it has modified a pending timer (1) or not (0)
509 */
510int mod_virt_timer_periodic(struct vtimer_list *timer, __u64 expires)
511{
512 return __mod_vtimer(timer, expires, 1);
513}
514EXPORT_SYMBOL(mod_virt_timer_periodic);
515
516/*
490 * delete a virtual timer 517 * delete a virtual timer
491 * 518 *
492 * returns whether the deleted timer was pending (1) or not (0) 519 * returns whether the deleted timer was pending (1) or not (0)
@@ -516,16 +543,8 @@ EXPORT_SYMBOL(del_virt_timer);
516 */ 543 */
517void init_cpu_vtimer(void) 544void init_cpu_vtimer(void)
518{ 545{
519 struct thread_info *ti = current_thread_info();
520 struct vtimer_queue *vq; 546 struct vtimer_queue *vq;
521 547
522 S390_lowcore.user_timer = ti->user_timer;
523 S390_lowcore.system_timer = ti->system_timer;
524
525 /* kick the virtual timer */
526 asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock));
527 asm volatile ("STPT %0" : "=m" (S390_lowcore.last_update_timer));
528
529 /* initialize per cpu vtimer structure */ 548 /* initialize per cpu vtimer structure */
530 vq = &__get_cpu_var(virt_cpu_timer); 549 vq = &__get_cpu_var(virt_cpu_timer);
531 INIT_LIST_HEAD(&vq->list); 550 INIT_LIST_HEAD(&vq->list);
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 5e4babecf934..e7390dd0283d 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -14,6 +14,7 @@ config SUPERH
14 select HAVE_GENERIC_DMA_COHERENT 14 select HAVE_GENERIC_DMA_COHERENT
15 select HAVE_IOREMAP_PROT if MMU 15 select HAVE_IOREMAP_PROT if MMU
16 select HAVE_ARCH_TRACEHOOK 16 select HAVE_ARCH_TRACEHOOK
17 select HAVE_DMA_API_DEBUG
17 help 18 help
18 The SuperH is a RISC processor targeted for use in embedded systems 19 The SuperH is a RISC processor targeted for use in embedded systems
19 and consumer electronics; it was also used in the Sega Dreamcast 20 and consumer electronics; it was also used in the Sega Dreamcast
@@ -21,7 +22,7 @@ config SUPERH
21 <http://www.linux-sh.org/>. 22 <http://www.linux-sh.org/>.
22 23
23config SUPERH32 24config SUPERH32
24 def_bool !SUPERH64 25 def_bool ARCH = "sh"
25 select HAVE_KPROBES 26 select HAVE_KPROBES
26 select HAVE_KRETPROBES 27 select HAVE_KRETPROBES
27 select HAVE_FUNCTION_TRACER 28 select HAVE_FUNCTION_TRACER
@@ -31,7 +32,7 @@ config SUPERH32
31 select ARCH_HIBERNATION_POSSIBLE if MMU 32 select ARCH_HIBERNATION_POSSIBLE if MMU
32 33
33config SUPERH64 34config SUPERH64
34 def_bool y if CPU_SH5 35 def_bool ARCH = "sh64"
35 36
36config ARCH_DEFCONFIG 37config ARCH_DEFCONFIG
37 string 38 string
@@ -187,6 +188,8 @@ config ARCH_SHMOBILE
187 bool 188 bool
188 select ARCH_SUSPEND_POSSIBLE 189 select ARCH_SUSPEND_POSSIBLE
189 190
191if SUPERH32
192
190choice 193choice
191 prompt "Processor sub-type selection" 194 prompt "Processor sub-type selection"
192 195
@@ -408,6 +411,15 @@ config CPU_SUBTYPE_SH7366
408 select SYS_SUPPORTS_NUMA 411 select SYS_SUPPORTS_NUMA
409 select SYS_SUPPORTS_CMT 412 select SYS_SUPPORTS_CMT
410 413
414endchoice
415
416endif
417
418if SUPERH64
419
420choice
421 prompt "Processor sub-type selection"
422
411# SH-5 Processor Support 423# SH-5 Processor Support
412 424
413config CPU_SUBTYPE_SH5_101 425config CPU_SUBTYPE_SH5_101
@@ -420,6 +432,8 @@ config CPU_SUBTYPE_SH5_103
420 432
421endchoice 433endchoice
422 434
435endif
436
423source "arch/sh/mm/Kconfig" 437source "arch/sh/mm/Kconfig"
424 438
425source "arch/sh/Kconfig.cpu" 439source "arch/sh/Kconfig.cpu"
diff --git a/arch/sh/boards/board-ap325rxa.c b/arch/sh/boards/board-ap325rxa.c
index 912458f666eb..39e46919df14 100644
--- a/arch/sh/boards/board-ap325rxa.c
+++ b/arch/sh/boards/board-ap325rxa.c
@@ -349,6 +349,7 @@ static int ov7725_power(struct device *dev, int mode)
349static struct ov772x_camera_info ov7725_info = { 349static struct ov772x_camera_info ov7725_info = {
350 .buswidth = SOCAM_DATAWIDTH_8, 350 .buswidth = SOCAM_DATAWIDTH_8,
351 .flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP, 351 .flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP,
352 .edgectrl = OV772X_AUTO_EDGECTRL(0xf, 0),
352 .link = { 353 .link = {
353 .power = ov7725_power, 354 .power = ov7725_power,
354 }, 355 },
diff --git a/arch/sh/boards/board-urquell.c b/arch/sh/boards/board-urquell.c
index 8367d1d789c3..beb88c4da2c1 100644
--- a/arch/sh/boards/board-urquell.c
+++ b/arch/sh/boards/board-urquell.c
@@ -2,6 +2,8 @@
2 * Renesas Technology Corp. SH7786 Urquell Support. 2 * Renesas Technology Corp. SH7786 Urquell Support.
3 * 3 *
4 * Copyright (C) 2008 Kuninori Morimoto <morimoto.kuninori@renesas.com> 4 * Copyright (C) 2008 Kuninori Morimoto <morimoto.kuninori@renesas.com>
5 *
6 * Based on board-sh7785lcr.c
5 * Copyright (C) 2008 Yoshihiro Shimoda 7 * Copyright (C) 2008 Yoshihiro Shimoda
6 * 8 *
7 * This file is subject to the terms and conditions of the GNU General Public 9 * This file is subject to the terms and conditions of the GNU General Public
@@ -21,6 +23,32 @@
21#include <asm/heartbeat.h> 23#include <asm/heartbeat.h>
22#include <asm/sizes.h> 24#include <asm/sizes.h>
23 25
26/*
27 * bit 1234 5678
28 *----------------------------
29 * SW1 0101 0010 -> Pck 33MHz version
30 * (1101 0010) Pck 66MHz version
31 * SW2 0x1x xxxx -> little endian
32 * 29bit mode
33 * SW47 0001 1000 -> CS0 : on-board flash
34 * CS1 : SRAM, registers, LAN, PCMCIA
35 * 38400 bps for SCIF1
36 *
37 * Address
38 * 0x00000000 - 0x04000000 (CS0) Nor Flash
39 * 0x04000000 - 0x04200000 (CS1) SRAM
40 * 0x05000000 - 0x05800000 (CS1) on board register
41 * 0x05800000 - 0x06000000 (CS1) LAN91C111
42 * 0x06000000 - 0x06400000 (CS1) PCMCIA
43 * 0x08000000 - 0x10000000 (CS2-CS3) DDR3
44 * 0x10000000 - 0x14000000 (CS4) PCIe
45 * 0x14000000 - 0x14800000 (CS5) Core0 LRAM/URAM
46 * 0x14800000 - 0x15000000 (CS5) Core1 LRAM/URAM
47 * 0x18000000 - 0x1C000000 (CS6) ATA/NAND-Flash
48 * 0x1C000000 - (CS7) SH7786 Control register
49 */
50
51/* HeartBeat */
24static struct resource heartbeat_resources[] = { 52static struct resource heartbeat_resources[] = {
25 [0] = { 53 [0] = {
26 .start = BOARDREG(SLEDR), 54 .start = BOARDREG(SLEDR),
@@ -43,6 +71,7 @@ static struct platform_device heartbeat_device = {
43 .resource = heartbeat_resources, 71 .resource = heartbeat_resources,
44}; 72};
45 73
74/* LAN91C111 */
46static struct smc91x_platdata smc91x_info = { 75static struct smc91x_platdata smc91x_info = {
47 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT, 76 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
48}; 77};
@@ -69,6 +98,7 @@ static struct platform_device smc91x_eth_device = {
69 }, 98 },
70}; 99};
71 100
101/* Nor Flash */
72static struct mtd_partition nor_flash_partitions[] = { 102static struct mtd_partition nor_flash_partitions[] = {
73 { 103 {
74 .name = "loader", 104 .name = "loader",
diff --git a/arch/sh/drivers/pci/ops-sh7785lcr.c b/arch/sh/drivers/pci/ops-sh7785lcr.c
index e8b7446a7c2b..fb0869f0bef8 100644
--- a/arch/sh/drivers/pci/ops-sh7785lcr.c
+++ b/arch/sh/drivers/pci/ops-sh7785lcr.c
@@ -48,8 +48,13 @@ EXPORT_SYMBOL(board_pci_channels);
48 48
49static struct sh4_pci_address_map sh7785_pci_map = { 49static struct sh4_pci_address_map sh7785_pci_map = {
50 .window0 = { 50 .window0 = {
51#if defined(CONFIG_32BIT)
52 .base = SH7780_32BIT_DDR_BASE_ADDR,
53 .size = 0x40000000,
54#else
51 .base = SH7780_CS0_BASE_ADDR, 55 .base = SH7780_CS0_BASE_ADDR,
52 .size = 0x20000000, 56 .size = 0x20000000,
57#endif
53 }, 58 },
54 59
55 .flags = SH4_PCIC_NO_RESET, 60 .flags = SH4_PCIC_NO_RESET,
diff --git a/arch/sh/drivers/pci/pci-sh7780.h b/arch/sh/drivers/pci/pci-sh7780.h
index 97b2c98f05c4..93adc7119b79 100644
--- a/arch/sh/drivers/pci/pci-sh7780.h
+++ b/arch/sh/drivers/pci/pci-sh7780.h
@@ -104,6 +104,8 @@
104#define SH7780_CS5_BASE_ADDR (SH7780_CS4_BASE_ADDR + SH7780_MEM_REGION_SIZE) 104#define SH7780_CS5_BASE_ADDR (SH7780_CS4_BASE_ADDR + SH7780_MEM_REGION_SIZE)
105#define SH7780_CS6_BASE_ADDR (SH7780_CS5_BASE_ADDR + SH7780_MEM_REGION_SIZE) 105#define SH7780_CS6_BASE_ADDR (SH7780_CS5_BASE_ADDR + SH7780_MEM_REGION_SIZE)
106 106
107#define SH7780_32BIT_DDR_BASE_ADDR 0x40000000
108
107struct sh4_pci_address_map; 109struct sh4_pci_address_map;
108 110
109/* arch/sh/drivers/pci/pci-sh7780.c */ 111/* arch/sh/drivers/pci/pci-sh7780.c */
diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c
index e36c7b870861..0d6ac7a1db49 100644
--- a/arch/sh/drivers/pci/pci.c
+++ b/arch/sh/drivers/pci/pci.c
@@ -19,6 +19,7 @@
19#include <linux/kernel.h> 19#include <linux/kernel.h>
20#include <linux/pci.h> 20#include <linux/pci.h>
21#include <linux/init.h> 21#include <linux/init.h>
22#include <linux/dma-debug.h>
22#include <asm/io.h> 23#include <asm/io.h>
23 24
24static int __init pcibios_init(void) 25static int __init pcibios_init(void)
@@ -43,6 +44,8 @@ static int __init pcibios_init(void)
43 44
44 pci_fixup_irqs(pci_common_swizzle, pcibios_map_platform_irq); 45 pci_fixup_irqs(pci_common_swizzle, pcibios_map_platform_irq);
45 46
47 dma_debug_add_bus(&pci_bus_type);
48
46 return 0; 49 return 0;
47} 50}
48subsys_initcall(pcibios_init); 51subsys_initcall(pcibios_init);
diff --git a/arch/sh/include/asm/dma-mapping.h b/arch/sh/include/asm/dma-mapping.h
index 627315ecdb52..ea9d4f41c9d2 100644
--- a/arch/sh/include/asm/dma-mapping.h
+++ b/arch/sh/include/asm/dma-mapping.h
@@ -3,6 +3,7 @@
3 3
4#include <linux/mm.h> 4#include <linux/mm.h>
5#include <linux/scatterlist.h> 5#include <linux/scatterlist.h>
6#include <linux/dma-debug.h>
6#include <asm/cacheflush.h> 7#include <asm/cacheflush.h>
7#include <asm/io.h> 8#include <asm/io.h>
8#include <asm-generic/dma-coherent.h> 9#include <asm-generic/dma-coherent.h>
@@ -38,16 +39,26 @@ static inline dma_addr_t dma_map_single(struct device *dev,
38 void *ptr, size_t size, 39 void *ptr, size_t size,
39 enum dma_data_direction dir) 40 enum dma_data_direction dir)
40{ 41{
42 dma_addr_t addr = virt_to_phys(ptr);
43
41#if defined(CONFIG_PCI) && !defined(CONFIG_SH_PCIDMA_NONCOHERENT) 44#if defined(CONFIG_PCI) && !defined(CONFIG_SH_PCIDMA_NONCOHERENT)
42 if (dev->bus == &pci_bus_type) 45 if (dev->bus == &pci_bus_type)
43 return virt_to_phys(ptr); 46 return addr;
44#endif 47#endif
45 dma_cache_sync(dev, ptr, size, dir); 48 dma_cache_sync(dev, ptr, size, dir);
46 49
47 return virt_to_phys(ptr); 50 debug_dma_map_page(dev, virt_to_page(ptr),
51 (unsigned long)ptr & ~PAGE_MASK, size,
52 dir, addr, true);
53
54 return addr;
48} 55}
49 56
50#define dma_unmap_single(dev, addr, size, dir) do { } while (0) 57static inline void dma_unmap_single(struct device *dev, dma_addr_t addr,
58 size_t size, enum dma_data_direction dir)
59{
60 debug_dma_unmap_page(dev, addr, size, dir, true);
61}
51 62
52static inline int dma_map_sg(struct device *dev, struct scatterlist *sg, 63static inline int dma_map_sg(struct device *dev, struct scatterlist *sg,
53 int nents, enum dma_data_direction dir) 64 int nents, enum dma_data_direction dir)
@@ -59,12 +70,19 @@ static inline int dma_map_sg(struct device *dev, struct scatterlist *sg,
59 dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir); 70 dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir);
60#endif 71#endif
61 sg[i].dma_address = sg_phys(&sg[i]); 72 sg[i].dma_address = sg_phys(&sg[i]);
73 sg[i].dma_length = sg[i].length;
62 } 74 }
63 75
76 debug_dma_map_sg(dev, sg, nents, i, dir);
77
64 return nents; 78 return nents;
65} 79}
66 80
67#define dma_unmap_sg(dev, sg, nents, dir) do { } while (0) 81static inline void dma_unmap_sg(struct device *dev, struct scatterlist *sg,
82 int nents, enum dma_data_direction dir)
83{
84 debug_dma_unmap_sg(dev, sg, nents, dir);
85}
68 86
69static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, 87static inline dma_addr_t dma_map_page(struct device *dev, struct page *page,
70 unsigned long offset, size_t size, 88 unsigned long offset, size_t size,
@@ -111,6 +129,7 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg,
111 dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir); 129 dma_cache_sync(dev, sg_virt(&sg[i]), sg[i].length, dir);
112#endif 130#endif
113 sg[i].dma_address = sg_phys(&sg[i]); 131 sg[i].dma_address = sg_phys(&sg[i]);
132 sg[i].dma_length = sg[i].length;
114 } 133 }
115} 134}
116 135
@@ -119,6 +138,7 @@ static inline void dma_sync_single_for_cpu(struct device *dev,
119 enum dma_data_direction dir) 138 enum dma_data_direction dir)
120{ 139{
121 dma_sync_single(dev, dma_handle, size, dir); 140 dma_sync_single(dev, dma_handle, size, dir);
141 debug_dma_sync_single_for_cpu(dev, dma_handle, size, dir);
122} 142}
123 143
124static inline void dma_sync_single_for_device(struct device *dev, 144static inline void dma_sync_single_for_device(struct device *dev,
@@ -127,6 +147,7 @@ static inline void dma_sync_single_for_device(struct device *dev,
127 enum dma_data_direction dir) 147 enum dma_data_direction dir)
128{ 148{
129 dma_sync_single(dev, dma_handle, size, dir); 149 dma_sync_single(dev, dma_handle, size, dir);
150 debug_dma_sync_single_for_device(dev, dma_handle, size, dir);
130} 151}
131 152
132static inline void dma_sync_single_range_for_cpu(struct device *dev, 153static inline void dma_sync_single_range_for_cpu(struct device *dev,
@@ -136,6 +157,8 @@ static inline void dma_sync_single_range_for_cpu(struct device *dev,
136 enum dma_data_direction direction) 157 enum dma_data_direction direction)
137{ 158{
138 dma_sync_single_for_cpu(dev, dma_handle+offset, size, direction); 159 dma_sync_single_for_cpu(dev, dma_handle+offset, size, direction);
160 debug_dma_sync_single_range_for_cpu(dev, dma_handle,
161 offset, size, direction);
139} 162}
140 163
141static inline void dma_sync_single_range_for_device(struct device *dev, 164static inline void dma_sync_single_range_for_device(struct device *dev,
@@ -145,6 +168,8 @@ static inline void dma_sync_single_range_for_device(struct device *dev,
145 enum dma_data_direction direction) 168 enum dma_data_direction direction)
146{ 169{
147 dma_sync_single_for_device(dev, dma_handle+offset, size, direction); 170 dma_sync_single_for_device(dev, dma_handle+offset, size, direction);
171 debug_dma_sync_single_range_for_device(dev, dma_handle,
172 offset, size, direction);
148} 173}
149 174
150 175
@@ -153,6 +178,7 @@ static inline void dma_sync_sg_for_cpu(struct device *dev,
153 enum dma_data_direction dir) 178 enum dma_data_direction dir)
154{ 179{
155 dma_sync_sg(dev, sg, nelems, dir); 180 dma_sync_sg(dev, sg, nelems, dir);
181 debug_dma_sync_sg_for_cpu(dev, sg, nelems, dir);
156} 182}
157 183
158static inline void dma_sync_sg_for_device(struct device *dev, 184static inline void dma_sync_sg_for_device(struct device *dev,
@@ -160,9 +186,9 @@ static inline void dma_sync_sg_for_device(struct device *dev,
160 enum dma_data_direction dir) 186 enum dma_data_direction dir)
161{ 187{
162 dma_sync_sg(dev, sg, nelems, dir); 188 dma_sync_sg(dev, sg, nelems, dir);
189 debug_dma_sync_sg_for_device(dev, sg, nelems, dir);
163} 190}
164 191
165
166static inline int dma_get_cache_alignment(void) 192static inline int dma_get_cache_alignment(void)
167{ 193{
168 /* 194 /*
diff --git a/arch/sh/include/asm/scatterlist.h b/arch/sh/include/asm/scatterlist.h
index 2084d0373693..c693d268a413 100644
--- a/arch/sh/include/asm/scatterlist.h
+++ b/arch/sh/include/asm/scatterlist.h
@@ -5,12 +5,13 @@
5 5
6struct scatterlist { 6struct scatterlist {
7#ifdef CONFIG_DEBUG_SG 7#ifdef CONFIG_DEBUG_SG
8 unsigned long sg_magic; 8 unsigned long sg_magic;
9#endif 9#endif
10 unsigned long page_link; 10 unsigned long page_link;
11 unsigned int offset;/* for highmem, page offset */ 11 unsigned int offset; /* for highmem, page offset */
12 dma_addr_t dma_address; 12 unsigned int length;
13 unsigned int length; 13 dma_addr_t dma_address;
14 unsigned int dma_length;
14}; 15};
15 16
16#define ISA_DMA_THRESHOLD PHYS_ADDR_MASK 17#define ISA_DMA_THRESHOLD PHYS_ADDR_MASK
diff --git a/arch/sh/include/asm/topology.h b/arch/sh/include/asm/topology.h
index a3f239545897..8489a0905a87 100644
--- a/arch/sh/include/asm/topology.h
+++ b/arch/sh/include/asm/topology.h
@@ -37,8 +37,11 @@
37#define pcibus_to_node(bus) ((void)(bus), -1) 37#define pcibus_to_node(bus) ((void)(bus), -1)
38#define pcibus_to_cpumask(bus) (pcibus_to_node(bus) == -1 ? \ 38#define pcibus_to_cpumask(bus) (pcibus_to_node(bus) == -1 ? \
39 CPU_MASK_ALL : \ 39 CPU_MASK_ALL : \
40 node_to_cpumask(pcibus_to_node(bus)) \ 40 node_to_cpumask(pcibus_to_node(bus)))
41 ) 41#define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \
42 CPU_MASK_ALL_PTR : \
43 cpumask_of_node(pcibus_to_node(bus)))
44
42#endif 45#endif
43 46
44#include <asm-generic/topology.h> 47#include <asm-generic/topology.h>
diff --git a/arch/sh/include/asm/unistd_32.h b/arch/sh/include/asm/unistd_32.h
index d52c000cf924..2efb819e2db3 100644
--- a/arch/sh/include/asm/unistd_32.h
+++ b/arch/sh/include/asm/unistd_32.h
@@ -341,8 +341,10 @@
341#define __NR_dup3 330 341#define __NR_dup3 330
342#define __NR_pipe2 331 342#define __NR_pipe2 331
343#define __NR_inotify_init1 332 343#define __NR_inotify_init1 332
344#define __NR_preadv 333
345#define __NR_pwritev 334
344 346
345#define NR_syscalls 333 347#define NR_syscalls 335
346 348
347#ifdef __KERNEL__ 349#ifdef __KERNEL__
348 350
diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h
index 7c54e91753c1..6eb9d2934c0f 100644
--- a/arch/sh/include/asm/unistd_64.h
+++ b/arch/sh/include/asm/unistd_64.h
@@ -381,10 +381,12 @@
381#define __NR_dup3 358 381#define __NR_dup3 358
382#define __NR_pipe2 359 382#define __NR_pipe2 359
383#define __NR_inotify_init1 360 383#define __NR_inotify_init1 360
384#define __NR_preadv 361
385#define __NR_pwritev 362
384 386
385#ifdef __KERNEL__ 387#ifdef __KERNEL__
386 388
387#define NR_syscalls 361 389#define NR_syscalls 363
388 390
389#define __ARCH_WANT_IPC_PARSE_VERSION 391#define __ARCH_WANT_IPC_PARSE_VERSION
390#define __ARCH_WANT_OLD_READDIR 392#define __ARCH_WANT_OLD_READDIR
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
index 0e5d204bc792..406747f07dc0 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
@@ -256,7 +256,6 @@ static int __init sh7722_devices_setup(void)
256{ 256{
257 clk_always_enable("uram0"); /* URAM */ 257 clk_always_enable("uram0"); /* URAM */
258 clk_always_enable("xymem0"); /* XYMEM */ 258 clk_always_enable("xymem0"); /* XYMEM */
259 clk_always_enable("rtc0"); /* RTC */
260 clk_always_enable("veu0"); /* VEU */ 259 clk_always_enable("veu0"); /* VEU */
261 clk_always_enable("vpu0"); /* VPU */ 260 clk_always_enable("vpu0"); /* VPU */
262 clk_always_enable("jpu0"); /* JPU */ 261 clk_always_enable("jpu0"); /* JPU */
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
index 5338dacbcfba..a800466b938c 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
@@ -267,7 +267,6 @@ static struct platform_device *sh7723_devices[] __initdata = {
267static int __init sh7723_devices_setup(void) 267static int __init sh7723_devices_setup(void)
268{ 268{
269 clk_always_enable("meram0"); /* MERAM */ 269 clk_always_enable("meram0"); /* MERAM */
270 clk_always_enable("rtc0"); /* RTC */
271 clk_always_enable("veu1"); /* VEU2H1 */ 270 clk_always_enable("veu1"); /* VEU2H1 */
272 clk_always_enable("veu0"); /* VEU2H0 */ 271 clk_always_enable("veu0"); /* VEU2H0 */
273 clk_always_enable("vpu0"); /* VPU */ 272 clk_always_enable("vpu0"); /* VPU */
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c
index 5a47e1cf442e..90e8cfff55fd 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c
@@ -143,14 +143,14 @@ static void __init sh7786_usb_setup(void)
143 * Set the PHY and PLL enable bit 143 * Set the PHY and PLL enable bit
144 */ 144 */
145 __raw_writel(PHY_ENB | PLL_ENB, USBPCTL1); 145 __raw_writel(PHY_ENB | PLL_ENB, USBPCTL1);
146 while (i-- && 146 while (i--) {
147 ((__raw_readl(USBST) & ACT_PLL_STATUS) != ACT_PLL_STATUS)) 147 if (ACT_PLL_STATUS == (__raw_readl(USBST) & ACT_PLL_STATUS)) {
148 /* Set the PHY RST bit */
149 __raw_writel(PHY_ENB | PLL_ENB | PHY_RST, USBPCTL1);
150 printk(KERN_INFO "sh7786 usb setup done\n");
151 break;
152 }
148 cpu_relax(); 153 cpu_relax();
149
150 if (i) {
151 /* Set the PHY RST bit */
152 __raw_writel(PHY_ENB | PLL_ENB | PHY_RST, USBPCTL1);
153 printk(KERN_INFO "sh7786 usb setup done\n");
154 } 154 }
155} 155}
156 156
diff --git a/arch/sh/kernel/head_32.S b/arch/sh/kernel/head_32.S
index 788605ff7088..a78be74b8d3e 100644
--- a/arch/sh/kernel/head_32.S
+++ b/arch/sh/kernel/head_32.S
@@ -10,6 +10,7 @@
10 * 10 *
11 * Head.S contains the SH exception handlers and startup code. 11 * Head.S contains the SH exception handlers and startup code.
12 */ 12 */
13#include <linux/init.h>
13#include <linux/linkage.h> 14#include <linux/linkage.h>
14#include <asm/thread_info.h> 15#include <asm/thread_info.h>
15 16
@@ -40,7 +41,7 @@ ENTRY(empty_zero_page)
401: 411:
41 .skip PAGE_SIZE - empty_zero_page - 1b 42 .skip PAGE_SIZE - empty_zero_page - 1b
42 43
43 .section .text.head, "ax" 44 __HEAD
44 45
45/* 46/*
46 * Condition at the entry of _stext: 47 * Condition at the entry of _stext:
diff --git a/arch/sh/kernel/head_64.S b/arch/sh/kernel/head_64.S
index 7ccfb995a398..3ea765844c74 100644
--- a/arch/sh/kernel/head_64.S
+++ b/arch/sh/kernel/head_64.S
@@ -8,6 +8,9 @@
8 * License. See the file "COPYING" in the main directory of this archive 8 * License. See the file "COPYING" in the main directory of this archive
9 * for more details. 9 * for more details.
10 */ 10 */
11
12#include <linux/init.h>
13
11#include <asm/page.h> 14#include <asm/page.h>
12#include <asm/cache.h> 15#include <asm/cache.h>
13#include <asm/tlb.h> 16#include <asm/tlb.h>
@@ -110,7 +113,7 @@ empty_bad_pte_table:
110fpu_in_use: .quad 0 113fpu_in_use: .quad 0
111 114
112 115
113 .section .text.head, "ax" 116 __HEAD
114 .balign L1_CACHE_BYTES 117 .balign L1_CACHE_BYTES
115/* 118/*
116 * Condition at the entry of __stext: 119 * Condition at the entry of __stext:
diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c
index 58dfc02c7af1..e3a7e36639ef 100644
--- a/arch/sh/kernel/sys_sh.c
+++ b/arch/sh/kernel/sys_sh.c
@@ -63,6 +63,15 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
63 unsigned long prot, unsigned long flags, 63 unsigned long prot, unsigned long flags,
64 unsigned long fd, unsigned long pgoff) 64 unsigned long fd, unsigned long pgoff)
65{ 65{
66 /*
67 * The shift for mmap2 is constant, regardless of PAGE_SIZE
68 * setting.
69 */
70 if (pgoff & ((1 << (PAGE_SHIFT - 12)) - 1))
71 return -EINVAL;
72
73 pgoff >>= PAGE_SHIFT - 12;
74
66 return do_mmap2(addr, len, prot, flags, fd, pgoff); 75 return do_mmap2(addr, len, prot, flags, fd, pgoff);
67} 76}
68 77
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S
index e67c1733e1b9..05202edd8e21 100644
--- a/arch/sh/kernel/syscalls_32.S
+++ b/arch/sh/kernel/syscalls_32.S
@@ -349,3 +349,5 @@ ENTRY(sys_call_table)
349 .long sys_dup3 /* 330 */ 349 .long sys_dup3 /* 330 */
350 .long sys_pipe2 350 .long sys_pipe2
351 .long sys_inotify_init1 351 .long sys_inotify_init1
352 .long sys_preadv
353 .long sys_writev
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S
index 557cb91f5caf..a083609f9284 100644
--- a/arch/sh/kernel/syscalls_64.S
+++ b/arch/sh/kernel/syscalls_64.S
@@ -387,3 +387,5 @@ sys_call_table:
387 .long sys_dup3 387 .long sys_dup3
388 .long sys_pipe2 388 .long sys_pipe2
389 .long sys_inotify_init1 /* 360 */ 389 .long sys_inotify_init1 /* 360 */
390 .long sys_preadv
391 .long sys_pwritev
diff --git a/arch/sh/kernel/time_32.c b/arch/sh/kernel/time_32.c
index c34e1e0f9b02..1700d2465f6c 100644
--- a/arch/sh/kernel/time_32.c
+++ b/arch/sh/kernel/time_32.c
@@ -208,7 +208,7 @@ unsigned long long sched_clock(void)
208 if (!clocksource_sh.rating) 208 if (!clocksource_sh.rating)
209 return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ); 209 return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ);
210 210
211 cycles = clocksource_sh.read(); 211 cycles = clocksource_sh.read(&clocksource_sh);
212 return cyc2ns(&clocksource_sh, cycles); 212 return cyc2ns(&clocksource_sh, cycles);
213} 213}
214#endif 214#endif
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c
index c5d3396f5960..fe8d8930ccb6 100644
--- a/arch/sh/kernel/timers/timer-tmu.c
+++ b/arch/sh/kernel/timers/timer-tmu.c
@@ -81,7 +81,7 @@ static int tmu_timer_stop(void)
81 */ 81 */
82static int tmus_are_scaled; 82static int tmus_are_scaled;
83 83
84static cycle_t tmu_timer_read(void) 84static cycle_t tmu_timer_read(struct clocksource *cs)
85{ 85{
86 return ((cycle_t)(~_tmu_read(TMU1)))<<tmus_are_scaled; 86 return ((cycle_t)(~_tmu_read(TMU1)))<<tmus_are_scaled;
87} 87}
diff --git a/arch/sh/kernel/vmlinux_32.lds.S b/arch/sh/kernel/vmlinux_32.lds.S
index d0b2a715cd14..dd9b2ee1312d 100644
--- a/arch/sh/kernel/vmlinux_32.lds.S
+++ b/arch/sh/kernel/vmlinux_32.lds.S
@@ -31,7 +31,7 @@ SECTIONS
31 } = 0 31 } = 0
32 32
33 .text : { 33 .text : {
34 *(.text.head) 34 HEAD_TEXT
35 TEXT_TEXT 35 TEXT_TEXT
36 SCHED_TEXT 36 SCHED_TEXT
37 LOCK_TEXT 37 LOCK_TEXT
diff --git a/arch/sh/kernel/vmlinux_64.lds.S b/arch/sh/kernel/vmlinux_64.lds.S
index 33fa46451406..69664460c688 100644
--- a/arch/sh/kernel/vmlinux_64.lds.S
+++ b/arch/sh/kernel/vmlinux_64.lds.S
@@ -42,7 +42,7 @@ SECTIONS
42 } = 0 42 } = 0
43 43
44 .text : C_PHYS(.text) { 44 .text : C_PHYS(.text) {
45 *(.text.head) 45 HEAD_TEXT
46 TEXT_TEXT 46 TEXT_TEXT
47 *(.text64) 47 *(.text64)
48 *(.text..SHmedia32) 48 *(.text..SHmedia32)
diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c
index edcd5fbf9651..e098ec158ddb 100644
--- a/arch/sh/mm/consistent.c
+++ b/arch/sh/mm/consistent.c
@@ -10,11 +10,22 @@
10 * for more details. 10 * for more details.
11 */ 11 */
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/init.h>
13#include <linux/platform_device.h> 14#include <linux/platform_device.h>
14#include <linux/dma-mapping.h> 15#include <linux/dma-mapping.h>
16#include <linux/dma-debug.h>
17#include <linux/io.h>
15#include <asm/cacheflush.h> 18#include <asm/cacheflush.h>
16#include <asm/addrspace.h> 19#include <asm/addrspace.h>
17#include <asm/io.h> 20
21#define PREALLOC_DMA_DEBUG_ENTRIES 4096
22
23static int __init dma_init(void)
24{
25 dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES);
26 return 0;
27}
28fs_initcall(dma_init);
18 29
19void *dma_alloc_coherent(struct device *dev, size_t size, 30void *dma_alloc_coherent(struct device *dev, size_t size,
20 dma_addr_t *dma_handle, gfp_t gfp) 31 dma_addr_t *dma_handle, gfp_t gfp)
@@ -45,6 +56,9 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
45 split_page(pfn_to_page(virt_to_phys(ret) >> PAGE_SHIFT), order); 56 split_page(pfn_to_page(virt_to_phys(ret) >> PAGE_SHIFT), order);
46 57
47 *dma_handle = virt_to_phys(ret); 58 *dma_handle = virt_to_phys(ret);
59
60 debug_dma_alloc_coherent(dev, size, *dma_handle, ret_nocache);
61
48 return ret_nocache; 62 return ret_nocache;
49} 63}
50EXPORT_SYMBOL(dma_alloc_coherent); 64EXPORT_SYMBOL(dma_alloc_coherent);
@@ -56,12 +70,15 @@ void dma_free_coherent(struct device *dev, size_t size,
56 unsigned long pfn = dma_handle >> PAGE_SHIFT; 70 unsigned long pfn = dma_handle >> PAGE_SHIFT;
57 int k; 71 int k;
58 72
59 if (!dma_release_from_coherent(dev, order, vaddr)) { 73 WARN_ON(irqs_disabled()); /* for portability */
60 WARN_ON(irqs_disabled()); /* for portability */ 74
61 for (k = 0; k < (1 << order); k++) 75 if (dma_release_from_coherent(dev, order, vaddr))
62 __free_pages(pfn_to_page(pfn + k), 0); 76 return;
63 iounmap(vaddr); 77
64 } 78 debug_dma_free_coherent(dev, size, vaddr, dma_handle);
79 for (k = 0; k < (1 << order); k++)
80 __free_pages(pfn_to_page(pfn + k), 0);
81 iounmap(vaddr);
65} 82}
66EXPORT_SYMBOL(dma_free_coherent); 83EXPORT_SYMBOL(dma_free_coherent);
67 84
diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/sparc32_defconfig
index 09ab46e4c59d..8bcd27af724b 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.28 3# Linux kernel version: 2.6.30-rc2
4# Thu Jan 8 16:45:44 2009 4# Fri Apr 17 04:04:46 2009
5# 5#
6# CONFIG_64BIT is not set 6# CONFIG_64BIT is not set
7CONFIG_SPARC=y 7CONFIG_SPARC=y
@@ -30,17 +30,27 @@ CONFIG_SWAP=y
30CONFIG_SYSVIPC=y 30CONFIG_SYSVIPC=y
31CONFIG_SYSVIPC_SYSCTL=y 31CONFIG_SYSVIPC_SYSCTL=y
32CONFIG_POSIX_MQUEUE=y 32CONFIG_POSIX_MQUEUE=y
33CONFIG_POSIX_MQUEUE_SYSCTL=y
33# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
34# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
36# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39CONFIG_GROUP_SCHED=y 48CONFIG_GROUP_SCHED=y
40CONFIG_FAIR_GROUP_SCHED=y 49CONFIG_FAIR_GROUP_SCHED=y
41CONFIG_RT_GROUP_SCHED=y 50CONFIG_RT_GROUP_SCHED=y
42CONFIG_USER_SCHED=y 51CONFIG_USER_SCHED=y
43# CONFIG_CGROUP_SCHED is not set 52# CONFIG_CGROUP_SCHED is not set
53# CONFIG_CGROUPS is not set
44CONFIG_SYSFS_DEPRECATED=y 54CONFIG_SYSFS_DEPRECATED=y
45CONFIG_SYSFS_DEPRECATED_V2=y 55CONFIG_SYSFS_DEPRECATED_V2=y
46# CONFIG_RELAY is not set 56# CONFIG_RELAY is not set
@@ -49,24 +59,28 @@ CONFIG_NAMESPACES=y
49# CONFIG_IPC_NS is not set 59# CONFIG_IPC_NS is not set
50# CONFIG_USER_NS is not set 60# CONFIG_USER_NS is not set
51# CONFIG_PID_NS is not set 61# CONFIG_PID_NS is not set
62# CONFIG_NET_NS is not set
52CONFIG_BLK_DEV_INITRD=y 63CONFIG_BLK_DEV_INITRD=y
53CONFIG_INITRAMFS_SOURCE="" 64CONFIG_INITRAMFS_SOURCE=""
65CONFIG_RD_GZIP=y
66CONFIG_RD_BZIP2=y
67CONFIG_RD_LZMA=y
54# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 68# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
55CONFIG_SYSCTL=y 69CONFIG_SYSCTL=y
70CONFIG_ANON_INODES=y
56# CONFIG_EMBEDDED is not set 71# CONFIG_EMBEDDED is not set
57CONFIG_UID16=y 72CONFIG_UID16=y
58CONFIG_SYSCTL_SYSCALL=y 73CONFIG_SYSCTL_SYSCALL=y
59CONFIG_KALLSYMS=y 74CONFIG_KALLSYMS=y
60# CONFIG_KALLSYMS_ALL is not set 75# CONFIG_KALLSYMS_ALL is not set
61# CONFIG_KALLSYMS_EXTRA_PASS is not set 76# CONFIG_KALLSYMS_EXTRA_PASS is not set
77# CONFIG_STRIP_ASM_SYMS is not set
62CONFIG_HOTPLUG=y 78CONFIG_HOTPLUG=y
63CONFIG_PRINTK=y 79CONFIG_PRINTK=y
64CONFIG_BUG=y 80CONFIG_BUG=y
65CONFIG_ELF_CORE=y 81CONFIG_ELF_CORE=y
66CONFIG_COMPAT_BRK=y
67CONFIG_BASE_FULL=y 82CONFIG_BASE_FULL=y
68CONFIG_FUTEX=y 83CONFIG_FUTEX=y
69CONFIG_ANON_INODES=y
70CONFIG_EPOLL=y 84CONFIG_EPOLL=y
71CONFIG_SIGNALFD=y 85CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y 86CONFIG_TIMERFD=y
@@ -75,12 +89,15 @@ CONFIG_SHMEM=y
75CONFIG_AIO=y 89CONFIG_AIO=y
76CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y 91CONFIG_PCI_QUIRKS=y
92CONFIG_COMPAT_BRK=y
78CONFIG_SLAB=y 93CONFIG_SLAB=y
79# CONFIG_SLUB is not set 94# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
81# CONFIG_PROFILING is not set 96# CONFIG_PROFILING is not set
97# CONFIG_MARKERS is not set
82CONFIG_HAVE_OPROFILE=y 98CONFIG_HAVE_OPROFILE=y
83CONFIG_HAVE_ARCH_TRACEHOOK=y 99CONFIG_HAVE_ARCH_TRACEHOOK=y
100# CONFIG_SLOW_WORK is not set
84# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 101# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
85CONFIG_SLABINFO=y 102CONFIG_SLABINFO=y
86CONFIG_RT_MUTEXES=y 103CONFIG_RT_MUTEXES=y
@@ -93,7 +110,6 @@ CONFIG_MODULE_UNLOAD=y
93# CONFIG_MODULE_SRCVERSION_ALL is not set 110# CONFIG_MODULE_SRCVERSION_ALL is not set
94CONFIG_BLOCK=y 111CONFIG_BLOCK=y
95# CONFIG_LBD is not set 112# CONFIG_LBD is not set
96# CONFIG_BLK_DEV_IO_TRACE is not set
97# CONFIG_BLK_DEV_BSG is not set 113# CONFIG_BLK_DEV_BSG is not set
98# CONFIG_BLK_DEV_INTEGRITY is not set 114# CONFIG_BLK_DEV_INTEGRITY is not set
99 115
@@ -109,11 +125,6 @@ CONFIG_IOSCHED_CFQ=y
109CONFIG_DEFAULT_CFQ=y 125CONFIG_DEFAULT_CFQ=y
110# CONFIG_DEFAULT_NOOP is not set 126# CONFIG_DEFAULT_NOOP is not set
111CONFIG_DEFAULT_IOSCHED="cfq" 127CONFIG_DEFAULT_IOSCHED="cfq"
112CONFIG_CLASSIC_RCU=y
113# CONFIG_TREE_RCU is not set
114# CONFIG_PREEMPT_RCU is not set
115# CONFIG_TREE_RCU_TRACE is not set
116# CONFIG_PREEMPT_RCU_TRACE is not set
117# CONFIG_FREEZER is not set 128# CONFIG_FREEZER is not set
118 129
119# 130#
@@ -144,6 +155,8 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
144CONFIG_ZONE_DMA_FLAG=1 155CONFIG_ZONE_DMA_FLAG=1
145CONFIG_BOUNCE=y 156CONFIG_BOUNCE=y
146CONFIG_UNEVICTABLE_LRU=y 157CONFIG_UNEVICTABLE_LRU=y
158CONFIG_HAVE_MLOCK=y
159CONFIG_HAVE_MLOCKED_PAGE_BIT=y
147CONFIG_SUN_PM=y 160CONFIG_SUN_PM=y
148# CONFIG_SPARC_LED is not set 161# CONFIG_SPARC_LED is not set
149CONFIG_SERIAL_CONSOLE=y 162CONFIG_SERIAL_CONSOLE=y
@@ -159,6 +172,7 @@ CONFIG_PCI_SYSCALL=y
159CONFIG_PCI_LEGACY=y 172CONFIG_PCI_LEGACY=y
160# CONFIG_PCI_DEBUG is not set 173# CONFIG_PCI_DEBUG is not set
161# CONFIG_PCI_STUB is not set 174# CONFIG_PCI_STUB is not set
175# CONFIG_PCI_IOV is not set
162# CONFIG_PCCARD is not set 176# CONFIG_PCCARD is not set
163CONFIG_SUN_OPENPROMFS=m 177CONFIG_SUN_OPENPROMFS=m
164CONFIG_SPARC32_PCI=y 178CONFIG_SPARC32_PCI=y
@@ -175,8 +189,6 @@ CONFIG_NET=y
175# 189#
176# Networking options 190# Networking options
177# 191#
178# CONFIG_NET_NS is not set
179CONFIG_COMPAT_NET_DEV_OPS=y
180CONFIG_PACKET=y 192CONFIG_PACKET=y
181# CONFIG_PACKET_MMAP is not set 193# CONFIG_PACKET_MMAP is not set
182CONFIG_UNIX=y 194CONFIG_UNIX=y
@@ -251,6 +263,7 @@ CONFIG_IPV6_TUNNEL=m
251# CONFIG_LAPB is not set 263# CONFIG_LAPB is not set
252# CONFIG_ECONET is not set 264# CONFIG_ECONET is not set
253# CONFIG_WAN_ROUTER is not set 265# CONFIG_WAN_ROUTER is not set
266# CONFIG_PHONET is not set
254# CONFIG_NET_SCHED is not set 267# CONFIG_NET_SCHED is not set
255# CONFIG_DCB is not set 268# CONFIG_DCB is not set
256 269
@@ -263,7 +276,6 @@ CONFIG_NET_PKTGEN=m
263# CONFIG_IRDA is not set 276# CONFIG_IRDA is not set
264# CONFIG_BT is not set 277# CONFIG_BT is not set
265# CONFIG_AF_RXRPC is not set 278# CONFIG_AF_RXRPC is not set
266# CONFIG_PHONET is not set
267CONFIG_WIRELESS=y 279CONFIG_WIRELESS=y
268# CONFIG_CFG80211 is not set 280# CONFIG_CFG80211 is not set
269CONFIG_WIRELESS_OLD_REGULATORY=y 281CONFIG_WIRELESS_OLD_REGULATORY=y
@@ -313,12 +325,16 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
313# CONFIG_BLK_DEV_HD is not set 325# CONFIG_BLK_DEV_HD is not set
314CONFIG_MISC_DEVICES=y 326CONFIG_MISC_DEVICES=y
315# CONFIG_PHANTOM is not set 327# CONFIG_PHANTOM is not set
316# CONFIG_EEPROM_93CX6 is not set
317# CONFIG_SGI_IOC4 is not set 328# CONFIG_SGI_IOC4 is not set
318# CONFIG_TIFM_CORE is not set 329# CONFIG_TIFM_CORE is not set
319# CONFIG_ENCLOSURE_SERVICES is not set 330# CONFIG_ENCLOSURE_SERVICES is not set
320# CONFIG_HP_ILO is not set 331# CONFIG_HP_ILO is not set
321# CONFIG_C2PORT is not set 332# CONFIG_C2PORT is not set
333
334#
335# EEPROM support
336#
337# CONFIG_EEPROM_93CX6 is not set
322CONFIG_HAVE_IDE=y 338CONFIG_HAVE_IDE=y
323# CONFIG_IDE is not set 339# CONFIG_IDE is not set
324 340
@@ -375,8 +391,10 @@ CONFIG_SCSI_LOWLEVEL=y
375# CONFIG_MEGARAID_NEWGEN is not set 391# CONFIG_MEGARAID_NEWGEN is not set
376# CONFIG_MEGARAID_LEGACY is not set 392# CONFIG_MEGARAID_LEGACY is not set
377# CONFIG_MEGARAID_SAS is not set 393# CONFIG_MEGARAID_SAS is not set
394# CONFIG_SCSI_MPT2SAS is not set
378# CONFIG_SCSI_HPTIOP is not set 395# CONFIG_SCSI_HPTIOP is not set
379# CONFIG_LIBFC is not set 396# CONFIG_LIBFC is not set
397# CONFIG_LIBFCOE is not set
380# CONFIG_FCOE is not set 398# CONFIG_FCOE is not set
381# CONFIG_SCSI_DMX3191D is not set 399# CONFIG_SCSI_DMX3191D is not set
382# CONFIG_SCSI_FUTURE_DOMAIN is not set 400# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -398,6 +416,7 @@ CONFIG_SCSI_QLOGICPTI=m
398CONFIG_SCSI_SUNESP=y 416CONFIG_SCSI_SUNESP=y
399# CONFIG_SCSI_SRP is not set 417# CONFIG_SCSI_SRP is not set
400# CONFIG_SCSI_DH is not set 418# CONFIG_SCSI_DH is not set
419# CONFIG_SCSI_OSD_INITIATOR is not set
401# CONFIG_ATA is not set 420# CONFIG_ATA is not set
402# CONFIG_MD is not set 421# CONFIG_MD is not set
403# CONFIG_FUSION is not set 422# CONFIG_FUSION is not set
@@ -413,6 +432,7 @@ CONFIG_SCSI_SUNESP=y
413# CONFIG_IEEE1394 is not set 432# CONFIG_IEEE1394 is not set
414# CONFIG_I2O is not set 433# CONFIG_I2O is not set
415CONFIG_NETDEVICES=y 434CONFIG_NETDEVICES=y
435CONFIG_COMPAT_NET_DEV_OPS=y
416CONFIG_DUMMY=m 436CONFIG_DUMMY=m
417# CONFIG_BONDING is not set 437# CONFIG_BONDING is not set
418# CONFIG_MACVLAN is not set 438# CONFIG_MACVLAN is not set
@@ -430,6 +450,8 @@ CONFIG_SUNQE=m
430# CONFIG_SUNGEM is not set 450# CONFIG_SUNGEM is not set
431# CONFIG_CASSINI is not set 451# CONFIG_CASSINI is not set
432# CONFIG_NET_VENDOR_3COM is not set 452# CONFIG_NET_VENDOR_3COM is not set
453# CONFIG_ETHOC is not set
454# CONFIG_DNET is not set
433# CONFIG_NET_TULIP is not set 455# CONFIG_NET_TULIP is not set
434# CONFIG_HP100 is not set 456# CONFIG_HP100 is not set
435# CONFIG_IBM_NEW_EMAC_ZMII is not set 457# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -448,6 +470,7 @@ CONFIG_NETDEV_1000=y
448# CONFIG_E1000 is not set 470# CONFIG_E1000 is not set
449# CONFIG_IP1000 is not set 471# CONFIG_IP1000 is not set
450# CONFIG_IGB is not set 472# CONFIG_IGB is not set
473# CONFIG_IGBVF is not set
451# CONFIG_MYRI_SBUS is not set 474# CONFIG_MYRI_SBUS is not set
452# CONFIG_NS83820 is not set 475# CONFIG_NS83820 is not set
453# CONFIG_HAMACHI is not set 476# CONFIG_HAMACHI is not set
@@ -462,6 +485,7 @@ CONFIG_NETDEV_1000=y
462# CONFIG_QLA3XXX is not set 485# CONFIG_QLA3XXX is not set
463# CONFIG_ATL1 is not set 486# CONFIG_ATL1 is not set
464# CONFIG_ATL1E is not set 487# CONFIG_ATL1E is not set
488# CONFIG_ATL1C is not set
465# CONFIG_JME is not set 489# CONFIG_JME is not set
466CONFIG_NETDEV_10000=y 490CONFIG_NETDEV_10000=y
467# CONFIG_CHELSIO_T1 is not set 491# CONFIG_CHELSIO_T1 is not set
@@ -471,6 +495,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
471# CONFIG_IXGBE is not set 495# CONFIG_IXGBE is not set
472# CONFIG_IXGB is not set 496# CONFIG_IXGB is not set
473# CONFIG_S2IO is not set 497# CONFIG_S2IO is not set
498# CONFIG_VXGE is not set
474# CONFIG_MYRI10GE is not set 499# CONFIG_MYRI10GE is not set
475# CONFIG_NETXEN_NIC is not set 500# CONFIG_NETXEN_NIC is not set
476# CONFIG_NIU is not set 501# CONFIG_NIU is not set
@@ -480,6 +505,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
480# CONFIG_BNX2X is not set 505# CONFIG_BNX2X is not set
481# CONFIG_QLGE is not set 506# CONFIG_QLGE is not set
482# CONFIG_SFC is not set 507# CONFIG_SFC is not set
508# CONFIG_BE2NET is not set
483# CONFIG_TR is not set 509# CONFIG_TR is not set
484 510
485# 511#
@@ -487,7 +513,6 @@ CONFIG_CHELSIO_T3_DEPENDS=y
487# 513#
488# CONFIG_WLAN_PRE80211 is not set 514# CONFIG_WLAN_PRE80211 is not set
489# CONFIG_WLAN_80211 is not set 515# CONFIG_WLAN_80211 is not set
490# CONFIG_IWLWIFI_LEDS is not set
491 516
492# 517#
493# Enable WiMAX (Networking options) to see the WiMAX drivers 518# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -537,7 +562,6 @@ CONFIG_MOUSE_PS2=m
537CONFIG_MOUSE_PS2_ALPS=y 562CONFIG_MOUSE_PS2_ALPS=y
538CONFIG_MOUSE_PS2_LOGIPS2PP=y 563CONFIG_MOUSE_PS2_LOGIPS2PP=y
539CONFIG_MOUSE_PS2_SYNAPTICS=y 564CONFIG_MOUSE_PS2_SYNAPTICS=y
540CONFIG_MOUSE_PS2_LIFEBOOK=y
541CONFIG_MOUSE_PS2_TRACKPOINT=y 565CONFIG_MOUSE_PS2_TRACKPOINT=y
542# CONFIG_MOUSE_PS2_ELANTECH is not set 566# CONFIG_MOUSE_PS2_ELANTECH is not set
543# CONFIG_MOUSE_PS2_TOUCHKIT is not set 567# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -597,6 +621,7 @@ CONFIG_LEGACY_PTYS=y
597CONFIG_LEGACY_PTY_COUNT=256 621CONFIG_LEGACY_PTY_COUNT=256
598# CONFIG_IPMI_HANDLER is not set 622# CONFIG_IPMI_HANDLER is not set
599CONFIG_HW_RANDOM=m 623CONFIG_HW_RANDOM=m
624# CONFIG_HW_RANDOM_TIMERIOMEM is not set
600# CONFIG_R3964 is not set 625# CONFIG_R3964 is not set
601# CONFIG_APPLICOM is not set 626# CONFIG_APPLICOM is not set
602# CONFIG_RAW_DRIVER is not set 627# CONFIG_RAW_DRIVER is not set
@@ -688,7 +713,6 @@ CONFIG_HID=y
688# 713#
689# Special HID drivers 714# Special HID drivers
690# 715#
691CONFIG_HID_COMPAT=y
692CONFIG_USB_SUPPORT=y 716CONFIG_USB_SUPPORT=y
693CONFIG_USB_ARCH_HAS_HCD=y 717CONFIG_USB_ARCH_HAS_HCD=y
694CONFIG_USB_ARCH_HAS_OHCI=y 718CONFIG_USB_ARCH_HAS_OHCI=y
@@ -700,7 +724,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
700# 724#
701 725
702# 726#
703# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 727# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
704# 728#
705# CONFIG_USB_GADGET is not set 729# CONFIG_USB_GADGET is not set
706 730
@@ -750,6 +774,7 @@ CONFIG_RTC_DRV_M48T59=y
750# on-CPU RTC drivers 774# on-CPU RTC drivers
751# 775#
752# CONFIG_DMADEVICES is not set 776# CONFIG_DMADEVICES is not set
777# CONFIG_AUXDISPLAY is not set
753# CONFIG_UIO is not set 778# CONFIG_UIO is not set
754# CONFIG_STAGING is not set 779# CONFIG_STAGING is not set
755 780
@@ -777,6 +802,7 @@ CONFIG_FS_POSIX_ACL=y
777CONFIG_FILE_LOCKING=y 802CONFIG_FILE_LOCKING=y
778# CONFIG_XFS_FS is not set 803# CONFIG_XFS_FS is not set
779# CONFIG_OCFS2_FS is not set 804# CONFIG_OCFS2_FS is not set
805# CONFIG_BTRFS_FS is not set
780CONFIG_DNOTIFY=y 806CONFIG_DNOTIFY=y
781CONFIG_INOTIFY=y 807CONFIG_INOTIFY=y
782CONFIG_INOTIFY_USER=y 808CONFIG_INOTIFY_USER=y
@@ -786,6 +812,11 @@ CONFIG_AUTOFS4_FS=m
786# CONFIG_FUSE_FS is not set 812# CONFIG_FUSE_FS is not set
787 813
788# 814#
815# Caches
816#
817# CONFIG_FSCACHE is not set
818
819#
789# CD-ROM/DVD Filesystems 820# CD-ROM/DVD Filesystems
790# 821#
791CONFIG_ISO9660_FS=m 822CONFIG_ISO9660_FS=m
@@ -820,14 +851,20 @@ CONFIG_MISC_FILESYSTEMS=y
820# CONFIG_BFS_FS is not set 851# CONFIG_BFS_FS is not set
821# CONFIG_EFS_FS is not set 852# CONFIG_EFS_FS is not set
822# CONFIG_CRAMFS is not set 853# CONFIG_CRAMFS is not set
854# CONFIG_SQUASHFS is not set
823# CONFIG_VXFS_FS is not set 855# CONFIG_VXFS_FS is not set
824# CONFIG_MINIX_FS is not set 856# CONFIG_MINIX_FS is not set
825# CONFIG_OMFS_FS is not set 857# CONFIG_OMFS_FS is not set
826# CONFIG_HPFS_FS is not set 858# CONFIG_HPFS_FS is not set
827# CONFIG_QNX4FS_FS is not set 859# CONFIG_QNX4FS_FS is not set
828CONFIG_ROMFS_FS=m 860CONFIG_ROMFS_FS=m
861CONFIG_ROMFS_BACKED_BY_BLOCK=y
862# CONFIG_ROMFS_BACKED_BY_MTD is not set
863# CONFIG_ROMFS_BACKED_BY_BOTH is not set
864CONFIG_ROMFS_ON_BLOCK=y
829# CONFIG_SYSV_FS is not set 865# CONFIG_SYSV_FS is not set
830# CONFIG_UFS_FS is not set 866# CONFIG_UFS_FS is not set
867# CONFIG_NILFS2_FS is not set
831CONFIG_NETWORK_FILESYSTEMS=y 868CONFIG_NETWORK_FILESYSTEMS=y
832CONFIG_NFS_FS=y 869CONFIG_NFS_FS=y
833# CONFIG_NFS_V3 is not set 870# CONFIG_NFS_V3 is not set
@@ -838,7 +875,6 @@ CONFIG_LOCKD=y
838CONFIG_NFS_COMMON=y 875CONFIG_NFS_COMMON=y
839CONFIG_SUNRPC=y 876CONFIG_SUNRPC=y
840CONFIG_SUNRPC_GSS=m 877CONFIG_SUNRPC_GSS=m
841# CONFIG_SUNRPC_REGISTER_V4 is not set
842CONFIG_RPCSEC_GSS_KRB5=m 878CONFIG_RPCSEC_GSS_KRB5=m
843# CONFIG_RPCSEC_GSS_SPKM3 is not set 879# CONFIG_RPCSEC_GSS_SPKM3 is not set
844# CONFIG_SMB_FS is not set 880# CONFIG_SMB_FS is not set
@@ -911,6 +947,9 @@ CONFIG_DEBUG_KERNEL=y
911CONFIG_DETECT_SOFTLOCKUP=y 947CONFIG_DETECT_SOFTLOCKUP=y
912# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 948# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
913CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 949CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
950CONFIG_DETECT_HUNG_TASK=y
951# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
952CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
914# CONFIG_SCHED_DEBUG is not set 953# CONFIG_SCHED_DEBUG is not set
915# CONFIG_SCHEDSTATS is not set 954# CONFIG_SCHEDSTATS is not set
916# CONFIG_TIMER_STATS is not set 955# CONFIG_TIMER_STATS is not set
@@ -939,15 +978,7 @@ CONFIG_DEBUG_MEMORY_INIT=y
939# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 978# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
940# CONFIG_FAULT_INJECTION is not set 979# CONFIG_FAULT_INJECTION is not set
941# CONFIG_SYSCTL_SYSCALL_CHECK is not set 980# CONFIG_SYSCTL_SYSCALL_CHECK is not set
942 981# CONFIG_PAGE_POISONING is not set
943#
944# Tracers
945#
946# CONFIG_SCHED_TRACER is not set
947# CONFIG_CONTEXT_SWITCH_TRACER is not set
948# CONFIG_BOOT_TRACER is not set
949# CONFIG_TRACE_BRANCH_PROFILING is not set
950# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
951# CONFIG_SAMPLES is not set 982# CONFIG_SAMPLES is not set
952CONFIG_HAVE_ARCH_KGDB=y 983CONFIG_HAVE_ARCH_KGDB=y
953CONFIG_KGDB=y 984CONFIG_KGDB=y
@@ -979,10 +1010,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
979CONFIG_CRYPTO_HASH=y 1010CONFIG_CRYPTO_HASH=y
980CONFIG_CRYPTO_HASH2=y 1011CONFIG_CRYPTO_HASH2=y
981CONFIG_CRYPTO_RNG2=y 1012CONFIG_CRYPTO_RNG2=y
1013CONFIG_CRYPTO_PCOMP=y
982CONFIG_CRYPTO_MANAGER=y 1014CONFIG_CRYPTO_MANAGER=y
983CONFIG_CRYPTO_MANAGER2=y 1015CONFIG_CRYPTO_MANAGER2=y
984# CONFIG_CRYPTO_GF128MUL is not set 1016# CONFIG_CRYPTO_GF128MUL is not set
985CONFIG_CRYPTO_NULL=m 1017CONFIG_CRYPTO_NULL=m
1018CONFIG_CRYPTO_WORKQUEUE=y
986# CONFIG_CRYPTO_CRYPTD is not set 1019# CONFIG_CRYPTO_CRYPTD is not set
987CONFIG_CRYPTO_AUTHENC=y 1020CONFIG_CRYPTO_AUTHENC=y
988# CONFIG_CRYPTO_TEST is not set 1021# CONFIG_CRYPTO_TEST is not set
@@ -1052,6 +1085,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1052# Compression 1085# Compression
1053# 1086#
1054CONFIG_CRYPTO_DEFLATE=y 1087CONFIG_CRYPTO_DEFLATE=y
1088# CONFIG_CRYPTO_ZLIB is not set
1055# CONFIG_CRYPTO_LZO is not set 1089# CONFIG_CRYPTO_LZO is not set
1056 1090
1057# 1091#
@@ -1059,6 +1093,7 @@ CONFIG_CRYPTO_DEFLATE=y
1059# 1093#
1060# CONFIG_CRYPTO_ANSI_CPRNG is not set 1094# CONFIG_CRYPTO_ANSI_CPRNG is not set
1061# CONFIG_CRYPTO_HW is not set 1095# CONFIG_CRYPTO_HW is not set
1096# CONFIG_BINARY_PRINTF is not set
1062 1097
1063# 1098#
1064# Library routines 1099# Library routines
@@ -1074,7 +1109,10 @@ CONFIG_CRC32=y
1074CONFIG_LIBCRC32C=m 1109CONFIG_LIBCRC32C=m
1075CONFIG_ZLIB_INFLATE=y 1110CONFIG_ZLIB_INFLATE=y
1076CONFIG_ZLIB_DEFLATE=y 1111CONFIG_ZLIB_DEFLATE=y
1077CONFIG_PLIST=y 1112CONFIG_DECOMPRESS_GZIP=y
1113CONFIG_DECOMPRESS_BZIP2=y
1114CONFIG_DECOMPRESS_LZMA=y
1078CONFIG_HAS_IOMEM=y 1115CONFIG_HAS_IOMEM=y
1079CONFIG_HAS_IOPORT=y 1116CONFIG_HAS_IOPORT=y
1080CONFIG_HAS_DMA=y 1117CONFIG_HAS_DMA=y
1118CONFIG_NLATTR=y
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig
index ade49941def2..b5d63bd8716e 100644
--- a/arch/sparc/configs/sparc64_defconfig
+++ b/arch/sparc/configs/sparc64_defconfig
@@ -1,13 +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.28 3# Linux kernel version: 2.6.30-rc2
4# Fri Jan 2 18:14:26 2009 4# Fri Apr 17 02:03:07 2009
5# 5#
6CONFIG_64BIT=y
6CONFIG_SPARC=y 7CONFIG_SPARC=y
8# CONFIG_SPARC32 is not set
7CONFIG_SPARC64=y 9CONFIG_SPARC64=y
8CONFIG_ARCH_DEFCONFIG="arch/sparc/configs/sparc64_defconfig" 10CONFIG_ARCH_DEFCONFIG="arch/sparc/configs/sparc64_defconfig"
9CONFIG_BITS=64 11CONFIG_BITS=64
10CONFIG_64BIT=y
11CONFIG_GENERIC_TIME=y 12CONFIG_GENERIC_TIME=y
12CONFIG_GENERIC_CMOS_UPDATE=y 13CONFIG_GENERIC_CMOS_UPDATE=y
13CONFIG_GENERIC_CLOCKEVENTS=y 14CONFIG_GENERIC_CLOCKEVENTS=y
@@ -22,6 +23,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
22CONFIG_MMU=y 23CONFIG_MMU=y
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_OF=y 25CONFIG_OF=y
26CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26 28
27# 29#
@@ -36,17 +38,27 @@ CONFIG_SWAP=y
36CONFIG_SYSVIPC=y 38CONFIG_SYSVIPC=y
37CONFIG_SYSVIPC_SYSCTL=y 39CONFIG_SYSVIPC_SYSCTL=y
38CONFIG_POSIX_MQUEUE=y 40CONFIG_POSIX_MQUEUE=y
41CONFIG_POSIX_MQUEUE_SYSCTL=y
39# CONFIG_BSD_PROCESS_ACCT is not set 42# CONFIG_BSD_PROCESS_ACCT is not set
40# CONFIG_TASKSTATS is not set 43# CONFIG_TASKSTATS is not set
41# CONFIG_AUDIT is not set 44# CONFIG_AUDIT is not set
45
46#
47# RCU Subsystem
48#
49CONFIG_CLASSIC_RCU=y
50# CONFIG_TREE_RCU is not set
51# CONFIG_PREEMPT_RCU is not set
52# CONFIG_TREE_RCU_TRACE is not set
53# CONFIG_PREEMPT_RCU_TRACE is not set
42# CONFIG_IKCONFIG is not set 54# CONFIG_IKCONFIG is not set
43CONFIG_LOG_BUF_SHIFT=18 55CONFIG_LOG_BUF_SHIFT=18
44# CONFIG_CGROUPS is not set
45CONFIG_GROUP_SCHED=y 56CONFIG_GROUP_SCHED=y
46CONFIG_FAIR_GROUP_SCHED=y 57CONFIG_FAIR_GROUP_SCHED=y
47CONFIG_RT_GROUP_SCHED=y 58CONFIG_RT_GROUP_SCHED=y
48CONFIG_USER_SCHED=y 59CONFIG_USER_SCHED=y
49# CONFIG_CGROUP_SCHED is not set 60# CONFIG_CGROUP_SCHED is not set
61# CONFIG_CGROUPS is not set
50CONFIG_SYSFS_DEPRECATED=y 62CONFIG_SYSFS_DEPRECATED=y
51CONFIG_SYSFS_DEPRECATED_V2=y 63CONFIG_SYSFS_DEPRECATED_V2=y
52CONFIG_RELAY=y 64CONFIG_RELAY=y
@@ -55,24 +67,28 @@ CONFIG_NAMESPACES=y
55# CONFIG_IPC_NS is not set 67# CONFIG_IPC_NS is not set
56# CONFIG_USER_NS is not set 68# CONFIG_USER_NS is not set
57# CONFIG_PID_NS is not set 69# CONFIG_PID_NS is not set
70# CONFIG_NET_NS is not set
58CONFIG_BLK_DEV_INITRD=y 71CONFIG_BLK_DEV_INITRD=y
59CONFIG_INITRAMFS_SOURCE="" 72CONFIG_INITRAMFS_SOURCE=""
73CONFIG_RD_GZIP=y
74CONFIG_RD_BZIP2=y
75CONFIG_RD_LZMA=y
60CONFIG_CC_OPTIMIZE_FOR_SIZE=y 76CONFIG_CC_OPTIMIZE_FOR_SIZE=y
61CONFIG_SYSCTL=y 77CONFIG_SYSCTL=y
78CONFIG_ANON_INODES=y
62# CONFIG_EMBEDDED is not set 79# CONFIG_EMBEDDED is not set
63CONFIG_UID16=y 80CONFIG_UID16=y
64CONFIG_SYSCTL_SYSCALL=y 81CONFIG_SYSCTL_SYSCALL=y
65CONFIG_KALLSYMS=y 82CONFIG_KALLSYMS=y
66# CONFIG_KALLSYMS_ALL is not set 83# CONFIG_KALLSYMS_ALL is not set
67# CONFIG_KALLSYMS_EXTRA_PASS is not set 84# CONFIG_KALLSYMS_EXTRA_PASS is not set
85# CONFIG_STRIP_ASM_SYMS is not set
68CONFIG_HOTPLUG=y 86CONFIG_HOTPLUG=y
69CONFIG_PRINTK=y 87CONFIG_PRINTK=y
70CONFIG_BUG=y 88CONFIG_BUG=y
71CONFIG_ELF_CORE=y 89CONFIG_ELF_CORE=y
72# CONFIG_COMPAT_BRK is not set
73CONFIG_BASE_FULL=y 90CONFIG_BASE_FULL=y
74CONFIG_FUTEX=y 91CONFIG_FUTEX=y
75CONFIG_ANON_INODES=y
76CONFIG_EPOLL=y 92CONFIG_EPOLL=y
77CONFIG_SIGNALFD=y 93CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y 94CONFIG_TIMERFD=y
@@ -82,6 +98,7 @@ CONFIG_AIO=y
82CONFIG_VM_EVENT_COUNTERS=y 98CONFIG_VM_EVENT_COUNTERS=y
83CONFIG_PCI_QUIRKS=y 99CONFIG_PCI_QUIRKS=y
84CONFIG_SLUB_DEBUG=y 100CONFIG_SLUB_DEBUG=y
101# CONFIG_COMPAT_BRK is not set
85# CONFIG_SLAB is not set 102# CONFIG_SLAB is not set
86CONFIG_SLUB=y 103CONFIG_SLUB=y
87# CONFIG_SLOB is not set 104# CONFIG_SLOB is not set
@@ -91,15 +108,16 @@ CONFIG_TRACEPOINTS=y
91CONFIG_OPROFILE=m 108CONFIG_OPROFILE=m
92CONFIG_HAVE_OPROFILE=y 109CONFIG_HAVE_OPROFILE=y
93CONFIG_KPROBES=y 110CONFIG_KPROBES=y
111CONFIG_HAVE_SYSCALL_WRAPPERS=y
94CONFIG_KRETPROBES=y 112CONFIG_KRETPROBES=y
95CONFIG_HAVE_KPROBES=y 113CONFIG_HAVE_KPROBES=y
96CONFIG_HAVE_KRETPROBES=y 114CONFIG_HAVE_KRETPROBES=y
97CONFIG_HAVE_ARCH_TRACEHOOK=y 115CONFIG_HAVE_ARCH_TRACEHOOK=y
98CONFIG_USE_GENERIC_SMP_HELPERS=y 116CONFIG_USE_GENERIC_SMP_HELPERS=y
117# CONFIG_SLOW_WORK is not set
99# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 118# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
100CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
101CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
102# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
104CONFIG_MODULES=y 122CONFIG_MODULES=y
105# CONFIG_MODULE_FORCE_LOAD is not set 123# CONFIG_MODULE_FORCE_LOAD is not set
@@ -107,10 +125,8 @@ CONFIG_MODULE_UNLOAD=y
107CONFIG_MODULE_FORCE_UNLOAD=y 125CONFIG_MODULE_FORCE_UNLOAD=y
108CONFIG_MODVERSIONS=y 126CONFIG_MODVERSIONS=y
109CONFIG_MODULE_SRCVERSION_ALL=y 127CONFIG_MODULE_SRCVERSION_ALL=y
110CONFIG_KMOD=y
111CONFIG_STOP_MACHINE=y 128CONFIG_STOP_MACHINE=y
112CONFIG_BLOCK=y 129CONFIG_BLOCK=y
113CONFIG_BLK_DEV_IO_TRACE=y
114CONFIG_BLK_DEV_BSG=y 130CONFIG_BLK_DEV_BSG=y
115# CONFIG_BLK_DEV_INTEGRITY is not set 131# CONFIG_BLK_DEV_INTEGRITY is not set
116CONFIG_BLOCK_COMPAT=y 132CONFIG_BLOCK_COMPAT=y
@@ -127,11 +143,6 @@ CONFIG_DEFAULT_AS=y
127# CONFIG_DEFAULT_CFQ is not set 143# CONFIG_DEFAULT_CFQ is not set
128# CONFIG_DEFAULT_NOOP is not set 144# CONFIG_DEFAULT_NOOP is not set
129CONFIG_DEFAULT_IOSCHED="anticipatory" 145CONFIG_DEFAULT_IOSCHED="anticipatory"
130CONFIG_CLASSIC_RCU=y
131# CONFIG_TREE_RCU is not set
132# CONFIG_PREEMPT_RCU is not set
133# CONFIG_TREE_RCU_TRACE is not set
134# CONFIG_PREEMPT_RCU_TRACE is not set
135# CONFIG_FREEZER is not set 146# CONFIG_FREEZER is not set
136 147
137# 148#
@@ -185,11 +196,12 @@ CONFIG_SPARSEMEM_VMEMMAP=y
185CONFIG_PAGEFLAGS_EXTENDED=y 196CONFIG_PAGEFLAGS_EXTENDED=y
186CONFIG_SPLIT_PTLOCK_CPUS=4 197CONFIG_SPLIT_PTLOCK_CPUS=4
187CONFIG_MIGRATION=y 198CONFIG_MIGRATION=y
188CONFIG_RESOURCES_64BIT=y
189CONFIG_PHYS_ADDR_T_64BIT=y 199CONFIG_PHYS_ADDR_T_64BIT=y
190CONFIG_ZONE_DMA_FLAG=0 200CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=1 201CONFIG_NR_QUICK=1
192CONFIG_UNEVICTABLE_LRU=y 202CONFIG_UNEVICTABLE_LRU=y
203CONFIG_HAVE_MLOCK=y
204CONFIG_HAVE_MLOCKED_PAGE_BIT=y
193CONFIG_SCHED_SMT=y 205CONFIG_SCHED_SMT=y
194CONFIG_SCHED_MC=y 206CONFIG_SCHED_MC=y
195# CONFIG_PREEMPT_NONE is not set 207# CONFIG_PREEMPT_NONE is not set
@@ -210,6 +222,8 @@ CONFIG_ARCH_SUPPORTS_MSI=y
210CONFIG_PCI_MSI=y 222CONFIG_PCI_MSI=y
211# CONFIG_PCI_LEGACY is not set 223# CONFIG_PCI_LEGACY is not set
212# CONFIG_PCI_DEBUG is not set 224# CONFIG_PCI_DEBUG is not set
225# CONFIG_PCI_STUB is not set
226# CONFIG_PCI_IOV is not set
213# CONFIG_PCCARD is not set 227# CONFIG_PCCARD is not set
214CONFIG_SUN_OPENPROMFS=m 228CONFIG_SUN_OPENPROMFS=m
215CONFIG_SPARC64_PCI=y 229CONFIG_SPARC64_PCI=y
@@ -229,8 +243,6 @@ CONFIG_NET=y
229# 243#
230# Networking options 244# Networking options
231# 245#
232# CONFIG_NET_NS is not set
233CONFIG_COMPAT_NET_DEV_OPS=y
234CONFIG_PACKET=y 246CONFIG_PACKET=y
235CONFIG_PACKET_MMAP=y 247CONFIG_PACKET_MMAP=y
236CONFIG_UNIX=y 248CONFIG_UNIX=y
@@ -292,25 +304,7 @@ CONFIG_IPV6_TUNNEL=m
292# CONFIG_IPV6_MROUTE is not set 304# CONFIG_IPV6_MROUTE is not set
293# CONFIG_NETWORK_SECMARK is not set 305# CONFIG_NETWORK_SECMARK is not set
294# CONFIG_NETFILTER is not set 306# CONFIG_NETFILTER is not set
295CONFIG_IP_DCCP=m 307# CONFIG_IP_DCCP is not set
296CONFIG_INET_DCCP_DIAG=m
297CONFIG_IP_DCCP_ACKVEC=y
298
299#
300# DCCP CCIDs Configuration (EXPERIMENTAL)
301#
302CONFIG_IP_DCCP_CCID2=m
303# CONFIG_IP_DCCP_CCID2_DEBUG is not set
304CONFIG_IP_DCCP_CCID3=m
305# CONFIG_IP_DCCP_CCID3_DEBUG is not set
306CONFIG_IP_DCCP_CCID3_RTO=100
307CONFIG_IP_DCCP_TFRC_LIB=m
308
309#
310# DCCP Kernel Hacking
311#
312# CONFIG_IP_DCCP_DEBUG is not set
313# CONFIG_NET_DCCPPROBE is not set
314# CONFIG_IP_SCTP is not set 308# CONFIG_IP_SCTP is not set
315# CONFIG_TIPC is not set 309# CONFIG_TIPC is not set
316# CONFIG_ATM is not set 310# CONFIG_ATM is not set
@@ -326,6 +320,7 @@ CONFIG_VLAN_8021Q=m
326# CONFIG_LAPB is not set 320# CONFIG_LAPB is not set
327# CONFIG_ECONET is not set 321# CONFIG_ECONET is not set
328# CONFIG_WAN_ROUTER is not set 322# CONFIG_WAN_ROUTER is not set
323# CONFIG_PHONET is not set
329# CONFIG_NET_SCHED is not set 324# CONFIG_NET_SCHED is not set
330# CONFIG_DCB is not set 325# CONFIG_DCB is not set
331 326
@@ -334,18 +329,19 @@ CONFIG_VLAN_8021Q=m
334# 329#
335CONFIG_NET_PKTGEN=m 330CONFIG_NET_PKTGEN=m
336CONFIG_NET_TCPPROBE=m 331CONFIG_NET_TCPPROBE=m
332# CONFIG_NET_DROP_MONITOR is not set
337# CONFIG_HAMRADIO is not set 333# CONFIG_HAMRADIO is not set
338# CONFIG_CAN is not set 334# CONFIG_CAN is not set
339# CONFIG_IRDA is not set 335# CONFIG_IRDA is not set
340# CONFIG_BT is not set 336# CONFIG_BT is not set
341# CONFIG_AF_RXRPC is not set 337# CONFIG_AF_RXRPC is not set
342# CONFIG_PHONET is not set
343CONFIG_WIRELESS=y 338CONFIG_WIRELESS=y
344# CONFIG_CFG80211 is not set 339# CONFIG_CFG80211 is not set
345CONFIG_WIRELESS_OLD_REGULATORY=y 340CONFIG_WIRELESS_OLD_REGULATORY=y
346# CONFIG_WIRELESS_EXT is not set 341# CONFIG_WIRELESS_EXT is not set
347# CONFIG_LIB80211 is not set 342# CONFIG_LIB80211 is not set
348# CONFIG_MAC80211 is not set 343# CONFIG_MAC80211 is not set
344# CONFIG_WIMAX is not set
349# CONFIG_RFKILL is not set 345# CONFIG_RFKILL is not set
350# CONFIG_NET_9P is not set 346# CONFIG_NET_9P is not set
351 347
@@ -389,19 +385,27 @@ CONFIG_SUNVDC=m
389# CONFIG_BLK_DEV_HD is not set 385# CONFIG_BLK_DEV_HD is not set
390CONFIG_MISC_DEVICES=y 386CONFIG_MISC_DEVICES=y
391# CONFIG_PHANTOM is not set 387# CONFIG_PHANTOM is not set
392# CONFIG_EEPROM_93CX6 is not set
393# CONFIG_SGI_IOC4 is not set 388# CONFIG_SGI_IOC4 is not set
394# CONFIG_TIFM_CORE is not set 389# CONFIG_TIFM_CORE is not set
395# CONFIG_ICS932S401 is not set 390# CONFIG_ICS932S401 is not set
396# CONFIG_ENCLOSURE_SERVICES is not set 391# CONFIG_ENCLOSURE_SERVICES is not set
397# CONFIG_HP_ILO is not set 392# CONFIG_HP_ILO is not set
393# CONFIG_ISL29003 is not set
398# CONFIG_C2PORT is not set 394# CONFIG_C2PORT is not set
395
396#
397# EEPROM support
398#
399# CONFIG_EEPROM_AT24 is not set
400# CONFIG_EEPROM_LEGACY is not set
401# CONFIG_EEPROM_93CX6 is not set
399CONFIG_HAVE_IDE=y 402CONFIG_HAVE_IDE=y
400CONFIG_IDE=y 403CONFIG_IDE=y
401 404
402# 405#
403# Please see Documentation/ide/ide.txt for help/info on IDE drives 406# Please see Documentation/ide/ide.txt for help/info on IDE drives
404# 407#
408CONFIG_IDE_XFER_MODE=y
405CONFIG_IDE_TIMINGS=y 409CONFIG_IDE_TIMINGS=y
406CONFIG_IDE_ATAPI=y 410CONFIG_IDE_ATAPI=y
407# CONFIG_BLK_DEV_IDE_SATA is not set 411# CONFIG_BLK_DEV_IDE_SATA is not set
@@ -439,6 +443,7 @@ CONFIG_BLK_DEV_ALI15X3=y
439# CONFIG_BLK_DEV_JMICRON is not set 443# CONFIG_BLK_DEV_JMICRON is not set
440# CONFIG_BLK_DEV_SC1200 is not set 444# CONFIG_BLK_DEV_SC1200 is not set
441# CONFIG_BLK_DEV_PIIX is not set 445# CONFIG_BLK_DEV_PIIX is not set
446# CONFIG_BLK_DEV_IT8172 is not set
442# CONFIG_BLK_DEV_IT8213 is not set 447# CONFIG_BLK_DEV_IT8213 is not set
443# CONFIG_BLK_DEV_IT821X is not set 448# CONFIG_BLK_DEV_IT821X is not set
444# CONFIG_BLK_DEV_NS87415 is not set 449# CONFIG_BLK_DEV_NS87415 is not set
@@ -506,8 +511,10 @@ CONFIG_SCSI_LOWLEVEL=y
506# CONFIG_MEGARAID_NEWGEN is not set 511# CONFIG_MEGARAID_NEWGEN is not set
507# CONFIG_MEGARAID_LEGACY is not set 512# CONFIG_MEGARAID_LEGACY is not set
508# CONFIG_MEGARAID_SAS is not set 513# CONFIG_MEGARAID_SAS is not set
514# CONFIG_SCSI_MPT2SAS is not set
509# CONFIG_SCSI_HPTIOP is not set 515# CONFIG_SCSI_HPTIOP is not set
510# CONFIG_LIBFC is not set 516# CONFIG_LIBFC is not set
517# CONFIG_LIBFCOE is not set
511# CONFIG_FCOE is not set 518# CONFIG_FCOE is not set
512# CONFIG_SCSI_DMX3191D is not set 519# CONFIG_SCSI_DMX3191D is not set
513# CONFIG_SCSI_FUTURE_DOMAIN is not set 520# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -528,6 +535,7 @@ CONFIG_SCSI_LOWLEVEL=y
528# CONFIG_SCSI_SUNESP is not set 535# CONFIG_SCSI_SUNESP is not set
529# CONFIG_SCSI_SRP is not set 536# CONFIG_SCSI_SRP is not set
530# CONFIG_SCSI_DH is not set 537# CONFIG_SCSI_DH is not set
538# CONFIG_SCSI_OSD_INITIATOR is not set
531# CONFIG_ATA is not set 539# CONFIG_ATA is not set
532CONFIG_MD=y 540CONFIG_MD=y
533CONFIG_BLK_DEV_MD=m 541CONFIG_BLK_DEV_MD=m
@@ -536,7 +544,7 @@ CONFIG_MD_RAID0=m
536CONFIG_MD_RAID1=m 544CONFIG_MD_RAID1=m
537CONFIG_MD_RAID10=m 545CONFIG_MD_RAID10=m
538CONFIG_MD_RAID456=m 546CONFIG_MD_RAID456=m
539# CONFIG_MD_RAID5_RESHAPE is not set 547CONFIG_MD_RAID6_PQ=m
540CONFIG_MD_MULTIPATH=m 548CONFIG_MD_MULTIPATH=m
541# CONFIG_MD_FAULTY is not set 549# CONFIG_MD_FAULTY is not set
542CONFIG_BLK_DEV_DM=m 550CONFIG_BLK_DEV_DM=m
@@ -561,6 +569,7 @@ CONFIG_DM_ZERO=m
561# CONFIG_IEEE1394 is not set 569# CONFIG_IEEE1394 is not set
562# CONFIG_I2O is not set 570# CONFIG_I2O is not set
563CONFIG_NETDEVICES=y 571CONFIG_NETDEVICES=y
572CONFIG_COMPAT_NET_DEV_OPS=y
564# CONFIG_DUMMY is not set 573# CONFIG_DUMMY is not set
565# CONFIG_BONDING is not set 574# CONFIG_BONDING is not set
566# CONFIG_MACVLAN is not set 575# CONFIG_MACVLAN is not set
@@ -589,14 +598,16 @@ CONFIG_PHYLIB=m
589# CONFIG_MDIO_BITBANG is not set 598# CONFIG_MDIO_BITBANG is not set
590CONFIG_NET_ETHERNET=y 599CONFIG_NET_ETHERNET=y
591CONFIG_MII=m 600CONFIG_MII=m
592# CONFIG_SUNLANCE is not set 601CONFIG_SUNLANCE=m
593# CONFIG_HAPPYMEAL is not set 602CONFIG_HAPPYMEAL=m
594# CONFIG_SUNBMAC is not set 603# CONFIG_SUNBMAC is not set
595# CONFIG_SUNQE is not set 604# CONFIG_SUNQE is not set
596# CONFIG_SUNGEM is not set 605CONFIG_SUNGEM=m
597CONFIG_CASSINI=m 606# CONFIG_CASSINI is not set
598CONFIG_SUNVNET=m 607CONFIG_SUNVNET=m
599# CONFIG_NET_VENDOR_3COM is not set 608# CONFIG_NET_VENDOR_3COM is not set
609# CONFIG_ETHOC is not set
610# CONFIG_DNET is not set
600# CONFIG_NET_TULIP is not set 611# CONFIG_NET_TULIP is not set
601# CONFIG_HP100 is not set 612# CONFIG_HP100 is not set
602# CONFIG_IBM_NEW_EMAC_ZMII is not set 613# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -631,9 +642,10 @@ CONFIG_NETDEV_1000=y
631# CONFIG_ACENIC is not set 642# CONFIG_ACENIC is not set
632# CONFIG_DL2K is not set 643# CONFIG_DL2K is not set
633CONFIG_E1000=m 644CONFIG_E1000=m
634# CONFIG_E1000E is not set 645CONFIG_E1000E=m
635# CONFIG_IP1000 is not set 646# CONFIG_IP1000 is not set
636# CONFIG_IGB is not set 647# CONFIG_IGB is not set
648# CONFIG_IGBVF is not set
637# CONFIG_MYRI_SBUS is not set 649# CONFIG_MYRI_SBUS is not set
638# CONFIG_NS83820 is not set 650# CONFIG_NS83820 is not set
639# CONFIG_HAMACHI is not set 651# CONFIG_HAMACHI is not set
@@ -648,6 +660,7 @@ CONFIG_BNX2=m
648# CONFIG_QLA3XXX is not set 660# CONFIG_QLA3XXX is not set
649# CONFIG_ATL1 is not set 661# CONFIG_ATL1 is not set
650# CONFIG_ATL1E is not set 662# CONFIG_ATL1E is not set
663# CONFIG_ATL1C is not set
651# CONFIG_JME is not set 664# CONFIG_JME is not set
652CONFIG_NETDEV_10000=y 665CONFIG_NETDEV_10000=y
653# CONFIG_CHELSIO_T1 is not set 666# CONFIG_CHELSIO_T1 is not set
@@ -657,6 +670,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
657# CONFIG_IXGBE is not set 670# CONFIG_IXGBE is not set
658# CONFIG_IXGB is not set 671# CONFIG_IXGB is not set
659# CONFIG_S2IO is not set 672# CONFIG_S2IO is not set
673# CONFIG_VXGE is not set
660# CONFIG_MYRI10GE is not set 674# CONFIG_MYRI10GE is not set
661# CONFIG_NETXEN_NIC is not set 675# CONFIG_NETXEN_NIC is not set
662CONFIG_NIU=m 676CONFIG_NIU=m
@@ -666,6 +680,7 @@ CONFIG_NIU=m
666# CONFIG_BNX2X is not set 680# CONFIG_BNX2X is not set
667# CONFIG_QLGE is not set 681# CONFIG_QLGE is not set
668# CONFIG_SFC is not set 682# CONFIG_SFC is not set
683# CONFIG_BE2NET is not set
669# CONFIG_TR is not set 684# CONFIG_TR is not set
670 685
671# 686#
@@ -673,7 +688,10 @@ CONFIG_NIU=m
673# 688#
674# CONFIG_WLAN_PRE80211 is not set 689# CONFIG_WLAN_PRE80211 is not set
675# CONFIG_WLAN_80211 is not set 690# CONFIG_WLAN_80211 is not set
676# CONFIG_IWLWIFI_LEDS is not set 691
692#
693# Enable WiMAX (Networking options) to see the WiMAX drivers
694#
677 695
678# 696#
679# USB Network Adapters 697# USB Network Adapters
@@ -738,7 +756,6 @@ CONFIG_MOUSE_PS2=y
738CONFIG_MOUSE_PS2_ALPS=y 756CONFIG_MOUSE_PS2_ALPS=y
739CONFIG_MOUSE_PS2_LOGIPS2PP=y 757CONFIG_MOUSE_PS2_LOGIPS2PP=y
740CONFIG_MOUSE_PS2_SYNAPTICS=y 758CONFIG_MOUSE_PS2_SYNAPTICS=y
741CONFIG_MOUSE_PS2_LIFEBOOK=y
742CONFIG_MOUSE_PS2_TRACKPOINT=y 759CONFIG_MOUSE_PS2_TRACKPOINT=y
743# CONFIG_MOUSE_PS2_ELANTECH is not set 760# CONFIG_MOUSE_PS2_ELANTECH is not set
744# CONFIG_MOUSE_PS2_TOUCHKIT is not set 761# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -805,6 +822,7 @@ CONFIG_UNIX98_PTYS=y
805# CONFIG_LEGACY_PTYS is not set 822# CONFIG_LEGACY_PTYS is not set
806# CONFIG_IPMI_HANDLER is not set 823# CONFIG_IPMI_HANDLER is not set
807CONFIG_HW_RANDOM=m 824CONFIG_HW_RANDOM=m
825# CONFIG_HW_RANDOM_TIMERIOMEM is not set
808CONFIG_HW_RANDOM_N2RNG=m 826CONFIG_HW_RANDOM_N2RNG=m
809# CONFIG_R3964 is not set 827# CONFIG_R3964 is not set
810# CONFIG_APPLICOM is not set 828# CONFIG_APPLICOM is not set
@@ -867,12 +885,9 @@ CONFIG_I2C_ALGOBIT=y
867# Miscellaneous I2C Chip support 885# Miscellaneous I2C Chip support
868# 886#
869# CONFIG_DS1682 is not set 887# CONFIG_DS1682 is not set
870# CONFIG_EEPROM_AT24 is not set
871# CONFIG_EEPROM_LEGACY is not set
872# CONFIG_SENSORS_PCF8574 is not set 888# CONFIG_SENSORS_PCF8574 is not set
873# CONFIG_PCF8575 is not set 889# CONFIG_PCF8575 is not set
874# CONFIG_SENSORS_PCA9539 is not set 890# CONFIG_SENSORS_PCA9539 is not set
875# CONFIG_SENSORS_PCF8591 is not set
876# CONFIG_SENSORS_MAX6875 is not set 891# CONFIG_SENSORS_MAX6875 is not set
877# CONFIG_SENSORS_TSL2550 is not set 892# CONFIG_SENSORS_TSL2550 is not set
878# CONFIG_I2C_DEBUG_CORE is not set 893# CONFIG_I2C_DEBUG_CORE is not set
@@ -897,12 +912,14 @@ CONFIG_HWMON=y
897# CONFIG_SENSORS_ADT7462 is not set 912# CONFIG_SENSORS_ADT7462 is not set
898# CONFIG_SENSORS_ADT7470 is not set 913# CONFIG_SENSORS_ADT7470 is not set
899# CONFIG_SENSORS_ADT7473 is not set 914# CONFIG_SENSORS_ADT7473 is not set
915# CONFIG_SENSORS_ADT7475 is not set
900# CONFIG_SENSORS_ATXP1 is not set 916# CONFIG_SENSORS_ATXP1 is not set
901# CONFIG_SENSORS_DS1621 is not set 917# CONFIG_SENSORS_DS1621 is not set
902# CONFIG_SENSORS_I5K_AMB is not set 918# CONFIG_SENSORS_I5K_AMB is not set
903# CONFIG_SENSORS_F71805F is not set 919# CONFIG_SENSORS_F71805F is not set
904# CONFIG_SENSORS_F71882FG is not set 920# CONFIG_SENSORS_F71882FG is not set
905# CONFIG_SENSORS_F75375S is not set 921# CONFIG_SENSORS_F75375S is not set
922# CONFIG_SENSORS_G760A is not set
906# CONFIG_SENSORS_GL518SM is not set 923# CONFIG_SENSORS_GL518SM is not set
907# CONFIG_SENSORS_GL520SM is not set 924# CONFIG_SENSORS_GL520SM is not set
908# CONFIG_SENSORS_IT87 is not set 925# CONFIG_SENSORS_IT87 is not set
@@ -917,10 +934,14 @@ CONFIG_HWMON=y
917# CONFIG_SENSORS_LM90 is not set 934# CONFIG_SENSORS_LM90 is not set
918# CONFIG_SENSORS_LM92 is not set 935# CONFIG_SENSORS_LM92 is not set
919# CONFIG_SENSORS_LM93 is not set 936# CONFIG_SENSORS_LM93 is not set
937# CONFIG_SENSORS_LTC4215 is not set
938# CONFIG_SENSORS_LTC4245 is not set
939# CONFIG_SENSORS_LM95241 is not set
920# CONFIG_SENSORS_MAX1619 is not set 940# CONFIG_SENSORS_MAX1619 is not set
921# CONFIG_SENSORS_MAX6650 is not set 941# CONFIG_SENSORS_MAX6650 is not set
922# CONFIG_SENSORS_PC87360 is not set 942# CONFIG_SENSORS_PC87360 is not set
923# CONFIG_SENSORS_PC87427 is not set 943# CONFIG_SENSORS_PC87427 is not set
944# CONFIG_SENSORS_PCF8591 is not set
924# CONFIG_SENSORS_SIS5595 is not set 945# CONFIG_SENSORS_SIS5595 is not set
925# CONFIG_SENSORS_DME1737 is not set 946# CONFIG_SENSORS_DME1737 is not set
926# CONFIG_SENSORS_SMSC47M1 is not set 947# CONFIG_SENSORS_SMSC47M1 is not set
@@ -957,10 +978,12 @@ CONFIG_SSB_POSSIBLE=y
957# CONFIG_MFD_CORE is not set 978# CONFIG_MFD_CORE is not set
958# CONFIG_MFD_SM501 is not set 979# CONFIG_MFD_SM501 is not set
959# CONFIG_HTC_PASIC3 is not set 980# CONFIG_HTC_PASIC3 is not set
981# CONFIG_TWL4030_CORE is not set
960# CONFIG_MFD_TMIO is not set 982# CONFIG_MFD_TMIO is not set
961# CONFIG_PMIC_DA903X is not set 983# CONFIG_PMIC_DA903X is not set
962# CONFIG_MFD_WM8400 is not set 984# CONFIG_MFD_WM8400 is not set
963# CONFIG_MFD_WM8350_I2C is not set 985# CONFIG_MFD_WM8350_I2C is not set
986# CONFIG_MFD_PCF50633 is not set
964# CONFIG_REGULATOR is not set 987# CONFIG_REGULATOR is not set
965 988
966# 989#
@@ -1053,6 +1076,7 @@ CONFIG_FB_ATY_GX=y
1053# CONFIG_FB_VIRTUAL is not set 1076# CONFIG_FB_VIRTUAL is not set
1054# CONFIG_FB_METRONOME is not set 1077# CONFIG_FB_METRONOME is not set
1055# CONFIG_FB_MB862XX is not set 1078# CONFIG_FB_MB862XX is not set
1079# CONFIG_FB_BROADSHEET is not set
1056# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1080# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1057 1081
1058# 1082#
@@ -1141,6 +1165,8 @@ CONFIG_SND_ALI5451=m
1141# CONFIG_SND_INDIGO is not set 1165# CONFIG_SND_INDIGO is not set
1142# CONFIG_SND_INDIGOIO is not set 1166# CONFIG_SND_INDIGOIO is not set
1143# CONFIG_SND_INDIGODJ is not set 1167# CONFIG_SND_INDIGODJ is not set
1168# CONFIG_SND_INDIGOIOX is not set
1169# CONFIG_SND_INDIGODJX is not set
1144# CONFIG_SND_EMU10K1 is not set 1170# CONFIG_SND_EMU10K1 is not set
1145# CONFIG_SND_EMU10K1X is not set 1171# CONFIG_SND_EMU10K1X is not set
1146# CONFIG_SND_ENS1370 is not set 1172# CONFIG_SND_ENS1370 is not set
@@ -1197,28 +1223,31 @@ CONFIG_USB_HIDDEV=y
1197# 1223#
1198# Special HID drivers 1224# Special HID drivers
1199# 1225#
1200CONFIG_HID_COMPAT=y
1201CONFIG_HID_A4TECH=y 1226CONFIG_HID_A4TECH=y
1202CONFIG_HID_APPLE=y 1227CONFIG_HID_APPLE=y
1203CONFIG_HID_BELKIN=y 1228CONFIG_HID_BELKIN=y
1204CONFIG_HID_BRIGHT=y
1205CONFIG_HID_CHERRY=y 1229CONFIG_HID_CHERRY=y
1206CONFIG_HID_CHICONY=y 1230CONFIG_HID_CHICONY=y
1207CONFIG_HID_CYPRESS=y 1231CONFIG_HID_CYPRESS=y
1208CONFIG_HID_DELL=y 1232# CONFIG_DRAGONRISE_FF is not set
1209CONFIG_HID_EZKEY=y 1233CONFIG_HID_EZKEY=y
1234CONFIG_HID_KYE=y
1210CONFIG_HID_GYRATION=y 1235CONFIG_HID_GYRATION=y
1236CONFIG_HID_KENSINGTON=y
1211CONFIG_HID_LOGITECH=y 1237CONFIG_HID_LOGITECH=y
1212# CONFIG_LOGITECH_FF is not set 1238# CONFIG_LOGITECH_FF is not set
1213# CONFIG_LOGIRUMBLEPAD2_FF is not set 1239# CONFIG_LOGIRUMBLEPAD2_FF is not set
1214CONFIG_HID_MICROSOFT=y 1240CONFIG_HID_MICROSOFT=y
1215CONFIG_HID_MONTEREY=y 1241CONFIG_HID_MONTEREY=y
1242CONFIG_HID_NTRIG=y
1216CONFIG_HID_PANTHERLORD=y 1243CONFIG_HID_PANTHERLORD=y
1217# CONFIG_PANTHERLORD_FF is not set 1244# CONFIG_PANTHERLORD_FF is not set
1218CONFIG_HID_PETALYNX=y 1245CONFIG_HID_PETALYNX=y
1219CONFIG_HID_SAMSUNG=y 1246CONFIG_HID_SAMSUNG=y
1220CONFIG_HID_SONY=y 1247CONFIG_HID_SONY=y
1221CONFIG_HID_SUNPLUS=y 1248CONFIG_HID_SUNPLUS=y
1249# CONFIG_GREENASIA_FF is not set
1250CONFIG_HID_TOPSEED=y
1222# CONFIG_THRUSTMASTER_FF is not set 1251# CONFIG_THRUSTMASTER_FF is not set
1223# CONFIG_ZEROPLUS_FF is not set 1252# CONFIG_ZEROPLUS_FF is not set
1224CONFIG_USB_SUPPORT=y 1253CONFIG_USB_SUPPORT=y
@@ -1247,6 +1276,7 @@ CONFIG_USB_DEVICEFS=y
1247CONFIG_USB_EHCI_HCD=m 1276CONFIG_USB_EHCI_HCD=m
1248# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1277# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1249# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1278# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1279# CONFIG_USB_OXU210HP_HCD is not set
1250# CONFIG_USB_ISP116X_HCD is not set 1280# CONFIG_USB_ISP116X_HCD is not set
1251# CONFIG_USB_ISP1760_HCD is not set 1281# CONFIG_USB_ISP1760_HCD is not set
1252CONFIG_USB_OHCI_HCD=y 1282CONFIG_USB_OHCI_HCD=y
@@ -1268,18 +1298,17 @@ CONFIG_USB_UHCI_HCD=m
1268# CONFIG_USB_TMC is not set 1298# CONFIG_USB_TMC is not set
1269 1299
1270# 1300#
1271# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1301# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1272# 1302#
1273 1303
1274# 1304#
1275# see USB_STORAGE Help for more information 1305# also be needed; see USB_STORAGE Help for more info
1276# 1306#
1277CONFIG_USB_STORAGE=m 1307CONFIG_USB_STORAGE=m
1278# CONFIG_USB_STORAGE_DEBUG is not set 1308# CONFIG_USB_STORAGE_DEBUG is not set
1279# CONFIG_USB_STORAGE_DATAFAB is not set 1309# CONFIG_USB_STORAGE_DATAFAB is not set
1280# CONFIG_USB_STORAGE_FREECOM is not set 1310# CONFIG_USB_STORAGE_FREECOM is not set
1281# CONFIG_USB_STORAGE_ISD200 is not set 1311# CONFIG_USB_STORAGE_ISD200 is not set
1282# CONFIG_USB_STORAGE_DPCM is not set
1283# CONFIG_USB_STORAGE_USBAT is not set 1312# CONFIG_USB_STORAGE_USBAT is not set
1284# CONFIG_USB_STORAGE_SDDR09 is not set 1313# CONFIG_USB_STORAGE_SDDR09 is not set
1285# CONFIG_USB_STORAGE_SDDR55 is not set 1314# CONFIG_USB_STORAGE_SDDR55 is not set
@@ -1315,7 +1344,6 @@ CONFIG_USB_STORAGE=m
1315# CONFIG_USB_LED is not set 1344# CONFIG_USB_LED is not set
1316# CONFIG_USB_CYPRESS_CY7C63 is not set 1345# CONFIG_USB_CYPRESS_CY7C63 is not set
1317# CONFIG_USB_CYTHERM is not set 1346# CONFIG_USB_CYTHERM is not set
1318# CONFIG_USB_PHIDGET is not set
1319# CONFIG_USB_IDMOUSE is not set 1347# CONFIG_USB_IDMOUSE is not set
1320# CONFIG_USB_FTDI_ELAN is not set 1348# CONFIG_USB_FTDI_ELAN is not set
1321# CONFIG_USB_APPLEDISPLAY is not set 1349# CONFIG_USB_APPLEDISPLAY is not set
@@ -1327,6 +1355,11 @@ CONFIG_USB_STORAGE=m
1327# CONFIG_USB_ISIGHTFW is not set 1355# CONFIG_USB_ISIGHTFW is not set
1328# CONFIG_USB_VST is not set 1356# CONFIG_USB_VST is not set
1329# CONFIG_USB_GADGET is not set 1357# CONFIG_USB_GADGET is not set
1358
1359#
1360# OTG and related infrastructure
1361#
1362# CONFIG_NOP_USB_XCEIV is not set
1330# CONFIG_UWB is not set 1363# CONFIG_UWB is not set
1331# CONFIG_MMC is not set 1364# CONFIG_MMC is not set
1332# CONFIG_MEMSTICK is not set 1365# CONFIG_MEMSTICK is not set
@@ -1390,6 +1423,7 @@ CONFIG_RTC_DRV_BQ4802=y
1390CONFIG_RTC_DRV_SUN4V=y 1423CONFIG_RTC_DRV_SUN4V=y
1391CONFIG_RTC_DRV_STARFIRE=y 1424CONFIG_RTC_DRV_STARFIRE=y
1392# CONFIG_DMADEVICES is not set 1425# CONFIG_DMADEVICES is not set
1426# CONFIG_AUXDISPLAY is not set
1393# CONFIG_UIO is not set 1427# CONFIG_UIO is not set
1394# CONFIG_STAGING is not set 1428# CONFIG_STAGING is not set
1395 1429
@@ -1412,6 +1446,7 @@ CONFIG_EXT2_FS_POSIX_ACL=y
1412CONFIG_EXT2_FS_SECURITY=y 1446CONFIG_EXT2_FS_SECURITY=y
1413# CONFIG_EXT2_FS_XIP is not set 1447# CONFIG_EXT2_FS_XIP is not set
1414CONFIG_EXT3_FS=y 1448CONFIG_EXT3_FS=y
1449# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1415CONFIG_EXT3_FS_XATTR=y 1450CONFIG_EXT3_FS_XATTR=y
1416CONFIG_EXT3_FS_POSIX_ACL=y 1451CONFIG_EXT3_FS_POSIX_ACL=y
1417CONFIG_EXT3_FS_SECURITY=y 1452CONFIG_EXT3_FS_SECURITY=y
@@ -1426,6 +1461,7 @@ CONFIG_FILE_LOCKING=y
1426# CONFIG_XFS_FS is not set 1461# CONFIG_XFS_FS is not set
1427# CONFIG_GFS2_FS is not set 1462# CONFIG_GFS2_FS is not set
1428# CONFIG_OCFS2_FS is not set 1463# CONFIG_OCFS2_FS is not set
1464# CONFIG_BTRFS_FS is not set
1429CONFIG_DNOTIFY=y 1465CONFIG_DNOTIFY=y
1430CONFIG_INOTIFY=y 1466CONFIG_INOTIFY=y
1431CONFIG_INOTIFY_USER=y 1467CONFIG_INOTIFY_USER=y
@@ -1435,6 +1471,11 @@ CONFIG_INOTIFY_USER=y
1435# CONFIG_FUSE_FS is not set 1471# CONFIG_FUSE_FS is not set
1436 1472
1437# 1473#
1474# Caches
1475#
1476# CONFIG_FSCACHE is not set
1477
1478#
1438# CD-ROM/DVD Filesystems 1479# CD-ROM/DVD Filesystems
1439# 1480#
1440# CONFIG_ISO9660_FS is not set 1481# CONFIG_ISO9660_FS is not set
@@ -1460,10 +1501,7 @@ CONFIG_TMPFS=y
1460CONFIG_HUGETLBFS=y 1501CONFIG_HUGETLBFS=y
1461CONFIG_HUGETLB_PAGE=y 1502CONFIG_HUGETLB_PAGE=y
1462# CONFIG_CONFIGFS_FS is not set 1503# CONFIG_CONFIGFS_FS is not set
1463 1504CONFIG_MISC_FILESYSTEMS=y
1464#
1465# Miscellaneous filesystems
1466#
1467# CONFIG_ADFS_FS is not set 1505# CONFIG_ADFS_FS is not set
1468# CONFIG_AFFS_FS is not set 1506# CONFIG_AFFS_FS is not set
1469# CONFIG_ECRYPT_FS is not set 1507# CONFIG_ECRYPT_FS is not set
@@ -1473,6 +1511,7 @@ CONFIG_HUGETLB_PAGE=y
1473# CONFIG_BFS_FS is not set 1511# CONFIG_BFS_FS is not set
1474# CONFIG_EFS_FS is not set 1512# CONFIG_EFS_FS is not set
1475# CONFIG_CRAMFS is not set 1513# CONFIG_CRAMFS is not set
1514# CONFIG_SQUASHFS is not set
1476# CONFIG_VXFS_FS is not set 1515# CONFIG_VXFS_FS is not set
1477# CONFIG_MINIX_FS is not set 1516# CONFIG_MINIX_FS is not set
1478# CONFIG_OMFS_FS is not set 1517# CONFIG_OMFS_FS is not set
@@ -1481,6 +1520,7 @@ CONFIG_HUGETLB_PAGE=y
1481# CONFIG_ROMFS_FS is not set 1520# CONFIG_ROMFS_FS is not set
1482# CONFIG_SYSV_FS is not set 1521# CONFIG_SYSV_FS is not set
1483# CONFIG_UFS_FS is not set 1522# CONFIG_UFS_FS is not set
1523# CONFIG_NILFS2_FS is not set
1484CONFIG_NETWORK_FILESYSTEMS=y 1524CONFIG_NETWORK_FILESYSTEMS=y
1485# CONFIG_NFS_FS is not set 1525# CONFIG_NFS_FS is not set
1486# CONFIG_NFSD is not set 1526# CONFIG_NFSD is not set
@@ -1555,6 +1595,9 @@ CONFIG_DEBUG_KERNEL=y
1555CONFIG_DETECT_SOFTLOCKUP=y 1595CONFIG_DETECT_SOFTLOCKUP=y
1556# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1596# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1557CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1597CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1598CONFIG_DETECT_HUNG_TASK=y
1599# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1600CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1558# CONFIG_SCHED_DEBUG is not set 1601# CONFIG_SCHED_DEBUG is not set
1559CONFIG_SCHEDSTATS=y 1602CONFIG_SCHEDSTATS=y
1560# CONFIG_TIMER_STATS is not set 1603# CONFIG_TIMER_STATS is not set
@@ -1590,10 +1633,12 @@ CONFIG_DEBUG_MEMORY_INIT=y
1590# CONFIG_FAULT_INJECTION is not set 1633# CONFIG_FAULT_INJECTION is not set
1591# CONFIG_LATENCYTOP is not set 1634# CONFIG_LATENCYTOP is not set
1592CONFIG_SYSCTL_SYSCALL_CHECK=y 1635CONFIG_SYSCTL_SYSCALL_CHECK=y
1636# CONFIG_DEBUG_PAGEALLOC is not set
1593CONFIG_NOP_TRACER=y 1637CONFIG_NOP_TRACER=y
1594CONFIG_HAVE_FUNCTION_TRACER=y 1638CONFIG_HAVE_FUNCTION_TRACER=y
1595CONFIG_RING_BUFFER=y 1639CONFIG_RING_BUFFER=y
1596CONFIG_TRACING=y 1640CONFIG_TRACING=y
1641CONFIG_TRACING_SUPPORT=y
1597 1642
1598# 1643#
1599# Tracers 1644# Tracers
@@ -1602,18 +1647,21 @@ CONFIG_TRACING=y
1602# CONFIG_IRQSOFF_TRACER is not set 1647# CONFIG_IRQSOFF_TRACER is not set
1603# CONFIG_SCHED_TRACER is not set 1648# CONFIG_SCHED_TRACER is not set
1604# CONFIG_CONTEXT_SWITCH_TRACER is not set 1649# CONFIG_CONTEXT_SWITCH_TRACER is not set
1650# CONFIG_EVENT_TRACER is not set
1605# CONFIG_BOOT_TRACER is not set 1651# CONFIG_BOOT_TRACER is not set
1606# CONFIG_TRACE_BRANCH_PROFILING is not set 1652# CONFIG_TRACE_BRANCH_PROFILING is not set
1607# CONFIG_STACK_TRACER is not set 1653# CONFIG_STACK_TRACER is not set
1654# CONFIG_KMEMTRACE is not set
1655# CONFIG_WORKQUEUE_TRACER is not set
1656CONFIG_BLK_DEV_IO_TRACE=y
1608# CONFIG_FTRACE_STARTUP_TEST is not set 1657# CONFIG_FTRACE_STARTUP_TEST is not set
1609# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1658# CONFIG_DYNAMIC_DEBUG is not set
1610# CONFIG_SAMPLES is not set 1659# CONFIG_SAMPLES is not set
1611CONFIG_HAVE_ARCH_KGDB=y 1660CONFIG_HAVE_ARCH_KGDB=y
1612# CONFIG_KGDB is not set 1661# CONFIG_KGDB is not set
1613# CONFIG_DEBUG_STACK_USAGE is not set 1662# CONFIG_DEBUG_STACK_USAGE is not set
1614# CONFIG_DEBUG_DCFLUSH is not set 1663# CONFIG_DEBUG_DCFLUSH is not set
1615# CONFIG_STACK_DEBUG is not set 1664# CONFIG_STACK_DEBUG is not set
1616# CONFIG_DEBUG_PAGEALLOC is not set
1617 1665
1618# 1666#
1619# Security options 1667# Security options
@@ -1642,10 +1690,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1642CONFIG_CRYPTO_HASH=y 1690CONFIG_CRYPTO_HASH=y
1643CONFIG_CRYPTO_HASH2=y 1691CONFIG_CRYPTO_HASH2=y
1644CONFIG_CRYPTO_RNG2=y 1692CONFIG_CRYPTO_RNG2=y
1693CONFIG_CRYPTO_PCOMP=y
1645CONFIG_CRYPTO_MANAGER=y 1694CONFIG_CRYPTO_MANAGER=y
1646CONFIG_CRYPTO_MANAGER2=y 1695CONFIG_CRYPTO_MANAGER2=y
1647CONFIG_CRYPTO_GF128MUL=m 1696CONFIG_CRYPTO_GF128MUL=m
1648CONFIG_CRYPTO_NULL=m 1697CONFIG_CRYPTO_NULL=m
1698CONFIG_CRYPTO_WORKQUEUE=y
1649# CONFIG_CRYPTO_CRYPTD is not set 1699# CONFIG_CRYPTO_CRYPTD is not set
1650CONFIG_CRYPTO_AUTHENC=y 1700CONFIG_CRYPTO_AUTHENC=y
1651CONFIG_CRYPTO_TEST=m 1701CONFIG_CRYPTO_TEST=m
@@ -1715,6 +1765,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1715# Compression 1765# Compression
1716# 1766#
1717CONFIG_CRYPTO_DEFLATE=y 1767CONFIG_CRYPTO_DEFLATE=y
1768# CONFIG_CRYPTO_ZLIB is not set
1718# CONFIG_CRYPTO_LZO is not set 1769# CONFIG_CRYPTO_LZO is not set
1719 1770
1720# 1771#
@@ -1723,11 +1774,13 @@ CONFIG_CRYPTO_DEFLATE=y
1723# CONFIG_CRYPTO_ANSI_CPRNG is not set 1774# CONFIG_CRYPTO_ANSI_CPRNG is not set
1724CONFIG_CRYPTO_HW=y 1775CONFIG_CRYPTO_HW=y
1725# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1776# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1777CONFIG_BINARY_PRINTF=y
1726 1778
1727# 1779#
1728# Library routines 1780# Library routines
1729# 1781#
1730CONFIG_BITREVERSE=y 1782CONFIG_BITREVERSE=y
1783CONFIG_GENERIC_FIND_LAST_BIT=y
1731CONFIG_CRC_CCITT=m 1784CONFIG_CRC_CCITT=m
1732CONFIG_CRC16=m 1785CONFIG_CRC16=m
1733# CONFIG_CRC_T10DIF is not set 1786# CONFIG_CRC_T10DIF is not set
@@ -1737,8 +1790,11 @@ CONFIG_CRC32=y
1737CONFIG_LIBCRC32C=m 1790CONFIG_LIBCRC32C=m
1738CONFIG_ZLIB_INFLATE=y 1791CONFIG_ZLIB_INFLATE=y
1739CONFIG_ZLIB_DEFLATE=y 1792CONFIG_ZLIB_DEFLATE=y
1740CONFIG_PLIST=y 1793CONFIG_DECOMPRESS_GZIP=y
1794CONFIG_DECOMPRESS_BZIP2=y
1795CONFIG_DECOMPRESS_LZMA=y
1741CONFIG_HAS_IOMEM=y 1796CONFIG_HAS_IOMEM=y
1742CONFIG_HAS_IOPORT=y 1797CONFIG_HAS_IOPORT=y
1743CONFIG_HAS_DMA=y 1798CONFIG_HAS_DMA=y
1744CONFIG_HAVE_LMB=y 1799CONFIG_HAVE_LMB=y
1800CONFIG_NLATTR=y
diff --git a/arch/sparc/include/asm/atomic_32.h b/arch/sparc/include/asm/atomic_32.h
index ce465975a6a5..bb91b1248cd1 100644
--- a/arch/sparc/include/asm/atomic_32.h
+++ b/arch/sparc/include/asm/atomic_32.h
@@ -15,6 +15,8 @@
15 15
16#ifdef __KERNEL__ 16#ifdef __KERNEL__
17 17
18#include <asm/system.h>
19
18#define ATOMIC_INIT(i) { (i) } 20#define ATOMIC_INIT(i) { (i) }
19 21
20extern int __atomic_add_return(int, atomic_t *); 22extern int __atomic_add_return(int, atomic_t *);
diff --git a/arch/sparc/include/asm/parport.h b/arch/sparc/include/asm/parport.h
index dff3f0253aa8..ff9ead640c4a 100644
--- a/arch/sparc/include/asm/parport.h
+++ b/arch/sparc/include/asm/parport.h
@@ -117,7 +117,7 @@ static int __devinit ecpp_probe(struct of_device *op, const struct of_device_id
117 if (!strcmp(parent->name, "dma")) { 117 if (!strcmp(parent->name, "dma")) {
118 p = parport_pc_probe_port(base, base + 0x400, 118 p = parport_pc_probe_port(base, base + 0x400,
119 op->irqs[0], PARPORT_DMA_NOFIFO, 119 op->irqs[0], PARPORT_DMA_NOFIFO,
120 op->dev.parent->parent); 120 op->dev.parent->parent, 0);
121 if (!p) 121 if (!p)
122 return -ENOMEM; 122 return -ENOMEM;
123 dev_set_drvdata(&op->dev, p); 123 dev_set_drvdata(&op->dev, p);
@@ -168,7 +168,8 @@ static int __devinit ecpp_probe(struct of_device *op, const struct of_device_id
168 p = parport_pc_probe_port(base, base + 0x400, 168 p = parport_pc_probe_port(base, base + 0x400,
169 op->irqs[0], 169 op->irqs[0],
170 slot, 170 slot,
171 op->dev.parent); 171 op->dev.parent,
172 0);
172 err = -ENOMEM; 173 err = -ENOMEM;
173 if (!p) 174 if (!p)
174 goto out_disable_irq; 175 goto out_disable_irq;
diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h
index 031f038b19f7..b8eb71ef3163 100644
--- a/arch/sparc/include/asm/unistd.h
+++ b/arch/sparc/include/asm/unistd.h
@@ -392,8 +392,10 @@
392#define __NR_pipe2 321 392#define __NR_pipe2 321
393#define __NR_inotify_init1 322 393#define __NR_inotify_init1 322
394#define __NR_accept4 323 394#define __NR_accept4 323
395#define __NR_preadv 324
396#define __NR_pwritev 325
395 397
396#define NR_SYSCALLS 324 398#define NR_SYSCALLS 326
397 399
398#ifdef __32bit_syscall_numbers__ 400#ifdef __32bit_syscall_numbers__
399/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, 401/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
diff --git a/arch/sparc/kernel/head_32.S b/arch/sparc/kernel/head_32.S
index f0b4b516304f..e91f01a57598 100644
--- a/arch/sparc/kernel/head_32.S
+++ b/arch/sparc/kernel/head_32.S
@@ -72,7 +72,7 @@ sun4e_notsup:
72 .align 4 72 .align 4
73 73
74 /* The Sparc trap table, bootloader gives us control at _start. */ 74 /* The Sparc trap table, bootloader gives us control at _start. */
75 .section .text.head,"ax" 75 __HEAD
76 .globl start, _stext, _start, __stext 76 .globl start, _stext, _start, __stext
77 .globl trapbase 77 .globl trapbase
78_start: /* danger danger */ 78_start: /* danger danger */
diff --git a/arch/sparc/kernel/ldc.c b/arch/sparc/kernel/ldc.c
index 6ce5d2598a09..adf5f273868a 100644
--- a/arch/sparc/kernel/ldc.c
+++ b/arch/sparc/kernel/ldc.c
@@ -1183,8 +1183,7 @@ out_free_txq:
1183 free_queue(lp->tx_num_entries, lp->tx_base); 1183 free_queue(lp->tx_num_entries, lp->tx_base);
1184 1184
1185out_free_mssbuf: 1185out_free_mssbuf:
1186 if (mssbuf) 1186 kfree(mssbuf);
1187 kfree(mssbuf);
1188 1187
1189out_free_iommu: 1188out_free_iommu:
1190 ldc_iommu_release(lp); 1189 ldc_iommu_release(lp);
@@ -1217,8 +1216,7 @@ void ldc_free(struct ldc_channel *lp)
1217 1216
1218 hlist_del(&lp->list); 1217 hlist_del(&lp->list);
1219 1218
1220 if (lp->mssbuf) 1219 kfree(lp->mssbuf);
1221 kfree(lp->mssbuf);
1222 1220
1223 ldc_iommu_release(lp); 1221 ldc_iommu_release(lp);
1224 1222
diff --git a/arch/sparc/kernel/of_device_32.c b/arch/sparc/kernel/of_device_32.c
index 0a83bd737654..c8f14c1dc521 100644
--- a/arch/sparc/kernel/of_device_32.c
+++ b/arch/sparc/kernel/of_device_32.c
@@ -246,8 +246,25 @@ static unsigned long of_bus_pci_get_flags(const u32 *addr, unsigned long flags)
246 246
247static int of_bus_sbus_match(struct device_node *np) 247static int of_bus_sbus_match(struct device_node *np)
248{ 248{
249 return !strcmp(np->name, "sbus") || 249 struct device_node *dp = np;
250 !strcmp(np->name, "sbi"); 250
251 while (dp) {
252 if (!strcmp(dp->name, "sbus") ||
253 !strcmp(dp->name, "sbi"))
254 return 1;
255
256 /* Have a look at use_1to1_mapping(). We're trying
257 * to match SBUS if that's the top-level bus and we
258 * don't have some intervening real bus that provides
259 * ranges based translations.
260 */
261 if (of_find_property(dp, "ranges", NULL) != NULL)
262 break;
263
264 dp = dp->parent;
265 }
266
267 return 0;
251} 268}
252 269
253static void of_bus_sbus_count_cells(struct device_node *child, 270static void of_bus_sbus_count_cells(struct device_node *child,
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c
index b4a12c9aa5f8..5ac287ac03de 100644
--- a/arch/sparc/kernel/of_device_64.c
+++ b/arch/sparc/kernel/of_device_64.c
@@ -99,8 +99,7 @@ static inline u64 of_read_addr(const u32 *cell, int size)
99 return r; 99 return r;
100} 100}
101 101
102static void __init get_cells(struct device_node *dp, 102static void get_cells(struct device_node *dp, int *addrc, int *sizec)
103 int *addrc, int *sizec)
104{ 103{
105 if (addrc) 104 if (addrc)
106 *addrc = of_n_addr_cells(dp); 105 *addrc = of_n_addr_cells(dp);
@@ -301,8 +300,25 @@ static unsigned long of_bus_pci_get_flags(const u32 *addr, unsigned long flags)
301 300
302static int of_bus_sbus_match(struct device_node *np) 301static int of_bus_sbus_match(struct device_node *np)
303{ 302{
304 return !strcmp(np->name, "sbus") || 303 struct device_node *dp = np;
305 !strcmp(np->name, "sbi"); 304
305 while (dp) {
306 if (!strcmp(dp->name, "sbus") ||
307 !strcmp(dp->name, "sbi"))
308 return 1;
309
310 /* Have a look at use_1to1_mapping(). We're trying
311 * to match SBUS if that's the top-level bus and we
312 * don't have some intervening real bus that provides
313 * ranges based translations.
314 */
315 if (of_find_property(dp, "ranges", NULL) != NULL)
316 break;
317
318 dp = dp->parent;
319 }
320
321 return 0;
306} 322}
307 323
308static void of_bus_sbus_count_cells(struct device_node *child, 324static void of_bus_sbus_count_cells(struct device_node *child,
diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
index 9462b68f4894..d53f45bc7dda 100644
--- a/arch/sparc/kernel/pci_fire.c
+++ b/arch/sparc/kernel/pci_fire.c
@@ -409,8 +409,8 @@ static void pci_fire_hw_init(struct pci_pbm_info *pbm)
409 upa_writeq(~(u64)0, pbm->pbm_regs + FIRE_PEC_IENAB); 409 upa_writeq(~(u64)0, pbm->pbm_regs + FIRE_PEC_IENAB);
410} 410}
411 411
412static int __init pci_fire_pbm_init(struct pci_pbm_info *pbm, 412static int __devinit pci_fire_pbm_init(struct pci_pbm_info *pbm,
413 struct of_device *op, u32 portid) 413 struct of_device *op, u32 portid)
414{ 414{
415 const struct linux_prom64_registers *regs; 415 const struct linux_prom64_registers *regs;
416 struct device_node *dp = op->node; 416 struct device_node *dp = op->node;
diff --git a/arch/sparc/kernel/pci_psycho.c b/arch/sparc/kernel/pci_psycho.c
index 3b34344082ef..142b9d6984a8 100644
--- a/arch/sparc/kernel/pci_psycho.c
+++ b/arch/sparc/kernel/pci_psycho.c
@@ -365,8 +365,8 @@ static void pbm_config_busmastering(struct pci_pbm_info *pbm)
365 pci_config_write8(addr, 64); 365 pci_config_write8(addr, 64);
366} 366}
367 367
368static void __init psycho_scan_bus(struct pci_pbm_info *pbm, 368static void __devinit psycho_scan_bus(struct pci_pbm_info *pbm,
369 struct device *parent) 369 struct device *parent)
370{ 370{
371 pbm_config_busmastering(pbm); 371 pbm_config_busmastering(pbm);
372 pbm->is_66mhz_capable = 0; 372 pbm->is_66mhz_capable = 0;
@@ -482,8 +482,8 @@ static void psycho_pbm_strbuf_init(struct pci_pbm_info *pbm,
482#define PSYCHO_MEMSPACE_B 0x180000000UL 482#define PSYCHO_MEMSPACE_B 0x180000000UL
483#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL 483#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL
484 484
485static void __init psycho_pbm_init(struct pci_pbm_info *pbm, 485static void __devinit psycho_pbm_init(struct pci_pbm_info *pbm,
486 struct of_device *op, int is_pbm_a) 486 struct of_device *op, int is_pbm_a)
487{ 487{
488 psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO); 488 psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO);
489 psycho_pbm_strbuf_init(pbm, is_pbm_a); 489 psycho_pbm_strbuf_init(pbm, is_pbm_a);
diff --git a/arch/sparc/kernel/pci_sabre.c b/arch/sparc/kernel/pci_sabre.c
index 713257b6963c..ba6fbeba3e2c 100644
--- a/arch/sparc/kernel/pci_sabre.c
+++ b/arch/sparc/kernel/pci_sabre.c
@@ -402,8 +402,8 @@ static void apb_init(struct pci_bus *sabre_bus)
402 } 402 }
403} 403}
404 404
405static void __init sabre_scan_bus(struct pci_pbm_info *pbm, 405static void __devinit sabre_scan_bus(struct pci_pbm_info *pbm,
406 struct device *parent) 406 struct device *parent)
407{ 407{
408 static int once; 408 static int once;
409 409
@@ -442,8 +442,8 @@ static void __init sabre_scan_bus(struct pci_pbm_info *pbm,
442 sabre_register_error_handlers(pbm); 442 sabre_register_error_handlers(pbm);
443} 443}
444 444
445static void __init sabre_pbm_init(struct pci_pbm_info *pbm, 445static void __devinit sabre_pbm_init(struct pci_pbm_info *pbm,
446 struct of_device *op) 446 struct of_device *op)
447{ 447{
448 psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE); 448 psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE);
449 pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR; 449 pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR;
diff --git a/arch/sparc/kernel/pci_sun4v.c b/arch/sparc/kernel/pci_sun4v.c
index 0ef0ab3d4763..5db5ebed35da 100644
--- a/arch/sparc/kernel/pci_sun4v.c
+++ b/arch/sparc/kernel/pci_sun4v.c
@@ -545,8 +545,8 @@ static const struct dma_ops sun4v_dma_ops = {
545 .sync_sg_for_cpu = dma_4v_sync_sg_for_cpu, 545 .sync_sg_for_cpu = dma_4v_sync_sg_for_cpu,
546}; 546};
547 547
548static void __init pci_sun4v_scan_bus(struct pci_pbm_info *pbm, 548static void __devinit pci_sun4v_scan_bus(struct pci_pbm_info *pbm,
549 struct device *parent) 549 struct device *parent)
550{ 550{
551 struct property *prop; 551 struct property *prop;
552 struct device_node *dp; 552 struct device_node *dp;
@@ -559,8 +559,8 @@ static void __init pci_sun4v_scan_bus(struct pci_pbm_info *pbm,
559 /* XXX register error interrupt handlers XXX */ 559 /* XXX register error interrupt handlers XXX */
560} 560}
561 561
562static unsigned long __init probe_existing_entries(struct pci_pbm_info *pbm, 562static unsigned long __devinit probe_existing_entries(struct pci_pbm_info *pbm,
563 struct iommu *iommu) 563 struct iommu *iommu)
564{ 564{
565 struct iommu_arena *arena = &iommu->arena; 565 struct iommu_arena *arena = &iommu->arena;
566 unsigned long i, cnt = 0; 566 unsigned long i, cnt = 0;
@@ -587,7 +587,7 @@ static unsigned long __init probe_existing_entries(struct pci_pbm_info *pbm,
587 return cnt; 587 return cnt;
588} 588}
589 589
590static int __init pci_sun4v_iommu_init(struct pci_pbm_info *pbm) 590static int __devinit pci_sun4v_iommu_init(struct pci_pbm_info *pbm)
591{ 591{
592 static const u32 vdma_default[] = { 0x80000000, 0x80000000 }; 592 static const u32 vdma_default[] = { 0x80000000, 0x80000000 };
593 struct iommu *iommu = pbm->iommu; 593 struct iommu *iommu = pbm->iommu;
@@ -889,8 +889,8 @@ static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
889} 889}
890#endif /* !(CONFIG_PCI_MSI) */ 890#endif /* !(CONFIG_PCI_MSI) */
891 891
892static int __init pci_sun4v_pbm_init(struct pci_pbm_info *pbm, 892static int __devinit pci_sun4v_pbm_init(struct pci_pbm_info *pbm,
893 struct of_device *op, u32 devhandle) 893 struct of_device *op, u32 devhandle)
894{ 894{
895 struct device_node *dp = op->node; 895 struct device_node *dp = op->node;
896 int err; 896 int err;
diff --git a/arch/sparc/kernel/power.c b/arch/sparc/kernel/power.c
index ae88f06a7ec4..e2a045c235a1 100644
--- a/arch/sparc/kernel/power.c
+++ b/arch/sparc/kernel/power.c
@@ -23,7 +23,7 @@ static irqreturn_t power_handler(int irq, void *dev_id)
23 return IRQ_HANDLED; 23 return IRQ_HANDLED;
24} 24}
25 25
26static int __init has_button_interrupt(unsigned int irq, struct device_node *dp) 26static int __devinit has_button_interrupt(unsigned int irq, struct device_node *dp)
27{ 27{
28 if (irq == 0xffffffff) 28 if (irq == 0xffffffff)
29 return 0; 29 return 0;
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
index 708e12a26b05..f7642e5a94db 100644
--- a/arch/sparc/kernel/smp_64.c
+++ b/arch/sparc/kernel/smp_64.c
@@ -118,9 +118,9 @@ void __cpuinit smp_callin(void)
118 while (!cpu_isset(cpuid, smp_commenced_mask)) 118 while (!cpu_isset(cpuid, smp_commenced_mask))
119 rmb(); 119 rmb();
120 120
121 ipi_call_lock(); 121 ipi_call_lock_irq();
122 cpu_set(cpuid, cpu_online_map); 122 cpu_set(cpuid, cpu_online_map);
123 ipi_call_unlock(); 123 ipi_call_unlock_irq();
124 124
125 /* idle thread is expected to have preempt disabled */ 125 /* idle thread is expected to have preempt disabled */
126 preempt_disable(); 126 preempt_disable();
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c
index e800503879e4..f5000a460c05 100644
--- a/arch/sparc/kernel/sys_sparc32.c
+++ b/arch/sparc/kernel/sys_sparc32.c
@@ -206,21 +206,12 @@ asmlinkage long compat_sys_fstatat64(unsigned int dfd, char __user *filename,
206 struct compat_stat64 __user * statbuf, int flag) 206 struct compat_stat64 __user * statbuf, int flag)
207{ 207{
208 struct kstat stat; 208 struct kstat stat;
209 int error = -EINVAL; 209 int error;
210
211 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
212 goto out;
213
214 if (flag & AT_SYMLINK_NOFOLLOW)
215 error = vfs_lstat_fd(dfd, filename, &stat);
216 else
217 error = vfs_stat_fd(dfd, filename, &stat);
218
219 if (!error)
220 error = cp_compat_stat64(&stat, statbuf);
221 210
222out: 211 error = vfs_fstatat(dfd, filename, &stat, flag);
223 return error; 212 if (error)
213 return error;
214 return cp_compat_stat64(&stat, statbuf);
224} 215}
225 216
226asmlinkage long compat_sys_sysfs(int option, u32 arg1, u32 arg2) 217asmlinkage long compat_sys_sysfs(int option, u32 arg1, u32 arg2)
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S
index dccc95df0c7f..00ec3b15f38c 100644
--- a/arch/sparc/kernel/systbls_32.S
+++ b/arch/sparc/kernel/systbls_32.S
@@ -81,4 +81,4 @@ sys_call_table:
81/*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait 81/*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
82/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate 82/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
83/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 83/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
84/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 84/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv, sys_pwritev
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index a8000b1cda74..82b5bf85b9d2 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -82,7 +82,7 @@ sys_call_table32:
82 .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait 82 .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait
83/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate 83/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate
84 .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1 84 .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1
85/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 85/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv, compat_sys_pwritev
86 86
87#endif /* CONFIG_COMPAT */ 87#endif /* CONFIG_COMPAT */
88 88
@@ -156,4 +156,4 @@ sys_call_table:
156 .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait 156 .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
157/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate 157/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
158 .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 158 .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
159/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 159/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv, sys_pwritev
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c
index db310aa00183..5c12e79b4bdf 100644
--- a/arch/sparc/kernel/time_64.c
+++ b/arch/sparc/kernel/time_64.c
@@ -814,6 +814,11 @@ void udelay(unsigned long usecs)
814} 814}
815EXPORT_SYMBOL(udelay); 815EXPORT_SYMBOL(udelay);
816 816
817static cycle_t clocksource_tick_read(struct clocksource *cs)
818{
819 return tick_ops->get_tick();
820}
821
817void __init time_init(void) 822void __init time_init(void)
818{ 823{
819 unsigned long freq = sparc64_init_timers(); 824 unsigned long freq = sparc64_init_timers();
@@ -827,7 +832,7 @@ void __init time_init(void)
827 clocksource_tick.mult = 832 clocksource_tick.mult =
828 clocksource_hz2mult(freq, 833 clocksource_hz2mult(freq,
829 clocksource_tick.shift); 834 clocksource_tick.shift);
830 clocksource_tick.read = tick_ops->get_tick; 835 clocksource_tick.read = clocksource_tick_read;
831 836
832 printk("clocksource: mult[%x] shift[%d]\n", 837 printk("clocksource: mult[%x] shift[%d]\n",
833 clocksource_tick.mult, clocksource_tick.shift); 838 clocksource_tick.mult, clocksource_tick.shift);
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
index 76267085b13b..fcbbd000ec08 100644
--- a/arch/sparc/kernel/vmlinux.lds.S
+++ b/arch/sparc/kernel/vmlinux.lds.S
@@ -41,7 +41,7 @@ SECTIONS
41 .text TEXTSTART : 41 .text TEXTSTART :
42 { 42 {
43 _text = .; 43 _text = .;
44 *(.text.head) 44 HEAD_TEXT
45 TEXT_TEXT 45 TEXT_TEXT
46 SCHED_TEXT 46 SCHED_TEXT
47 LOCK_TEXT 47 LOCK_TEXT
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index 2c8dfeb7ab04..f26a352c08a0 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -70,8 +70,8 @@ extern struct tsb swapper_4m_tsb[KERNEL_TSB4M_NENTRIES];
70 70
71#define MAX_BANKS 32 71#define MAX_BANKS 32
72 72
73static struct linux_prom64_registers pavail[MAX_BANKS] __initdata; 73static struct linux_prom64_registers pavail[MAX_BANKS] __devinitdata;
74static int pavail_ents __initdata; 74static int pavail_ents __devinitdata;
75 75
76static int cmp_p64(const void *a, const void *b) 76static int cmp_p64(const void *a, const void *b)
77{ 77{
@@ -968,7 +968,7 @@ int of_node_to_nid(struct device_node *dp)
968 return nid; 968 return nid;
969} 969}
970 970
971static void add_node_ranges(void) 971static void __init add_node_ranges(void)
972{ 972{
973 int i; 973 int i;
974 974
@@ -1841,7 +1841,7 @@ void __init paging_init(void)
1841 printk("Booting Linux...\n"); 1841 printk("Booting Linux...\n");
1842} 1842}
1843 1843
1844int __init page_in_phys_avail(unsigned long paddr) 1844int __devinit page_in_phys_avail(unsigned long paddr)
1845{ 1845{
1846 int i; 1846 int i;
1847 1847
diff --git a/arch/um/Kconfig.rest b/arch/um/Kconfig.rest
index 7b5cea75a6c4..0ccad0ff6d6e 100644
--- a/arch/um/Kconfig.rest
+++ b/arch/um/Kconfig.rest
@@ -36,7 +36,7 @@ source "drivers/leds/Kconfig"
36 36
37#This is just to shut up some Kconfig warnings, so no prompt. 37#This is just to shut up some Kconfig warnings, so no prompt.
38config INPUT 38config INPUT
39 bool 39 tristate
40 default n 40 default n
41 41
42source "arch/um/Kconfig.debug" 42source "arch/um/Kconfig.debug"
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index b13a87a3ec95..c8b9c469fcd7 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -65,7 +65,7 @@ static irqreturn_t um_timer(int irq, void *dev)
65 return IRQ_HANDLED; 65 return IRQ_HANDLED;
66} 66}
67 67
68static cycle_t itimer_read(void) 68static cycle_t itimer_read(struct clocksource *cs)
69{ 69{
70 return os_nsecs() / 1000; 70 return os_nsecs() / 1000;
71} 71}
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 4b3408206091..c9086e6307a5 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -252,17 +252,13 @@ config SMP
252 252
253config X86_X2APIC 253config X86_X2APIC
254 bool "Support x2apic" 254 bool "Support x2apic"
255 depends on X86_LOCAL_APIC && X86_64 255 depends on X86_LOCAL_APIC && X86_64 && INTR_REMAP
256 select INTR_REMAP
257 ---help--- 256 ---help---
258 This enables x2apic support on CPUs that have this feature. 257 This enables x2apic support on CPUs that have this feature.
259 258
260 This allows 32-bit apic IDs (so it can support very large systems), 259 This allows 32-bit apic IDs (so it can support very large systems),
261 and accesses the local apic via MSRs not via mmio. 260 and accesses the local apic via MSRs not via mmio.
262 261
263 ( On certain CPU models you may need to enable INTR_REMAP too,
264 to get functional x2apic mode. )
265
266 If you don't know what to do here, say N. 262 If you don't know what to do here, say N.
267 263
268config SPARSE_IRQ 264config SPARSE_IRQ
@@ -357,6 +353,7 @@ config X86_UV
357 bool "SGI Ultraviolet" 353 bool "SGI Ultraviolet"
358 depends on X86_64 354 depends on X86_64
359 depends on X86_EXTENDED_PLATFORM 355 depends on X86_EXTENDED_PLATFORM
356 depends on NUMA
360 select X86_X2APIC 357 select X86_X2APIC
361 ---help--- 358 ---help---
362 This option is needed in order to support SGI Ultraviolet systems. 359 This option is needed in order to support SGI Ultraviolet systems.
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
index 924e156a85ab..8130334329c0 100644
--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -506,6 +506,7 @@ config X86_PTRACE_BTS
506 bool "Branch Trace Store" 506 bool "Branch Trace Store"
507 default y 507 default y
508 depends on X86_DEBUGCTLMSR 508 depends on X86_DEBUGCTLMSR
509 depends on BROKEN
509 ---help--- 510 ---help---
510 This adds a ptrace interface to the hardware's branch trace store. 511 This adds a ptrace interface to the hardware's branch trace store.
511 512
diff --git a/arch/x86/boot/video-vga.c b/arch/x86/boot/video-vga.c
index 95d86ce0421c..9e0587a37768 100644
--- a/arch/x86/boot/video-vga.c
+++ b/arch/x86/boot/video-vga.c
@@ -129,22 +129,18 @@ u16 vga_crtc(void)
129 return (inb(0x3cc) & 1) ? 0x3d4 : 0x3b4; 129 return (inb(0x3cc) & 1) ? 0x3d4 : 0x3b4;
130} 130}
131 131
132static void vga_set_480_scanlines(int lines) 132static void vga_set_480_scanlines(void)
133{ 133{
134 u16 crtc; /* CRTC base address */ 134 u16 crtc; /* CRTC base address */
135 u8 csel; /* CRTC miscellaneous output register */ 135 u8 csel; /* CRTC miscellaneous output register */
136 u8 ovfw; /* CRTC overflow register */
137 int end = lines-1;
138 136
139 crtc = vga_crtc(); 137 crtc = vga_crtc();
140 138
141 ovfw = 0x3c | ((end >> (8-1)) & 0x02) | ((end >> (9-6)) & 0x40);
142
143 out_idx(0x0c, crtc, 0x11); /* Vertical sync end, unlock CR0-7 */ 139 out_idx(0x0c, crtc, 0x11); /* Vertical sync end, unlock CR0-7 */
144 out_idx(0x0b, crtc, 0x06); /* Vertical total */ 140 out_idx(0x0b, crtc, 0x06); /* Vertical total */
145 out_idx(ovfw, crtc, 0x07); /* Vertical overflow */ 141 out_idx(0x3e, crtc, 0x07); /* Vertical overflow */
146 out_idx(0xea, crtc, 0x10); /* Vertical sync start */ 142 out_idx(0xea, crtc, 0x10); /* Vertical sync start */
147 out_idx(end, crtc, 0x12); /* Vertical display end */ 143 out_idx(0xdf, crtc, 0x12); /* Vertical display end */
148 out_idx(0xe7, crtc, 0x15); /* Vertical blank start */ 144 out_idx(0xe7, crtc, 0x15); /* Vertical blank start */
149 out_idx(0x04, crtc, 0x16); /* Vertical blank end */ 145 out_idx(0x04, crtc, 0x16); /* Vertical blank end */
150 csel = inb(0x3cc); 146 csel = inb(0x3cc);
@@ -153,21 +149,38 @@ static void vga_set_480_scanlines(int lines)
153 outb(csel, 0x3c2); 149 outb(csel, 0x3c2);
154} 150}
155 151
152static void vga_set_vertical_end(int lines)
153{
154 u16 crtc; /* CRTC base address */
155 u8 ovfw; /* CRTC overflow register */
156 int end = lines-1;
157
158 crtc = vga_crtc();
159
160 ovfw = 0x3c | ((end >> (8-1)) & 0x02) | ((end >> (9-6)) & 0x40);
161
162 out_idx(ovfw, crtc, 0x07); /* Vertical overflow */
163 out_idx(end, crtc, 0x12); /* Vertical display end */
164}
165
156static void vga_set_80x30(void) 166static void vga_set_80x30(void)
157{ 167{
158 vga_set_480_scanlines(30*16); 168 vga_set_480_scanlines();
169 vga_set_vertical_end(30*16);
159} 170}
160 171
161static void vga_set_80x34(void) 172static void vga_set_80x34(void)
162{ 173{
174 vga_set_480_scanlines();
163 vga_set_14font(); 175 vga_set_14font();
164 vga_set_480_scanlines(34*14); 176 vga_set_vertical_end(34*14);
165} 177}
166 178
167static void vga_set_80x60(void) 179static void vga_set_80x60(void)
168{ 180{
181 vga_set_480_scanlines();
169 vga_set_8font(); 182 vga_set_8font();
170 vga_set_480_scanlines(60*8); 183 vga_set_vertical_end(60*8);
171} 184}
172 185
173static int vga_set_mode(struct mode_info *mode) 186static int vga_set_mode(struct mode_info *mode)
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
index efac92fd1efb..085a8c35f149 100644
--- a/arch/x86/ia32/sys_ia32.c
+++ b/arch/x86/ia32/sys_ia32.c
@@ -129,21 +129,12 @@ asmlinkage long sys32_fstatat(unsigned int dfd, char __user *filename,
129 struct stat64 __user *statbuf, int flag) 129 struct stat64 __user *statbuf, int flag)
130{ 130{
131 struct kstat stat; 131 struct kstat stat;
132 int error = -EINVAL; 132 int error;
133 133
134 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) 134 error = vfs_fstatat(dfd, filename, &stat, flag);
135 goto out; 135 if (error)
136 136 return error;
137 if (flag & AT_SYMLINK_NOFOLLOW) 137 return cp_stat64(statbuf, &stat);
138 error = vfs_lstat_fd(dfd, filename, &stat);
139 else
140 error = vfs_stat_fd(dfd, filename, &stat);
141
142 if (!error)
143 error = cp_stat64(statbuf, &stat);
144
145out:
146 return error;
147} 138}
148 139
149/* 140/*
diff --git a/arch/x86/include/asm/cpu_debug.h b/arch/x86/include/asm/cpu_debug.h
index 222802029fa6..222802029fa6 100755..100644
--- a/arch/x86/include/asm/cpu_debug.h
+++ b/arch/x86/include/asm/cpu_debug.h
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index 0beba0d1468d..bb83b1c397aa 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -154,6 +154,7 @@
154 * CPUID levels like 0x6, 0xA etc 154 * CPUID levels like 0x6, 0xA etc
155 */ 155 */
156#define X86_FEATURE_IDA (7*32+ 0) /* Intel Dynamic Acceleration */ 156#define X86_FEATURE_IDA (7*32+ 0) /* Intel Dynamic Acceleration */
157#define X86_FEATURE_ARAT (7*32+ 1) /* Always Running APIC Timer */
157 158
158/* Virtualization flags: Linux defined */ 159/* Virtualization flags: Linux defined */
159#define X86_FEATURE_TPR_SHADOW (8*32+ 0) /* Intel TPR Shadow */ 160#define X86_FEATURE_TPR_SHADOW (8*32+ 0) /* Intel TPR Shadow */
diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
index 5623c50d67b2..c45f415ce315 100644
--- a/arch/x86/include/asm/desc.h
+++ b/arch/x86/include/asm/desc.h
@@ -37,7 +37,7 @@ extern gate_desc idt_table[];
37struct gdt_page { 37struct gdt_page {
38 struct desc_struct gdt[GDT_ENTRIES]; 38 struct desc_struct gdt[GDT_ENTRIES];
39} __attribute__((aligned(PAGE_SIZE))); 39} __attribute__((aligned(PAGE_SIZE)));
40DECLARE_PER_CPU(struct gdt_page, gdt_page); 40DECLARE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page);
41 41
42static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu) 42static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu)
43{ 43{
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index 81937a5dc77c..2d81af3974a0 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -151,11 +151,11 @@ extern pte_t *pkmap_page_table;
151 151
152void __native_set_fixmap(enum fixed_addresses idx, pte_t pte); 152void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
153void native_set_fixmap(enum fixed_addresses idx, 153void native_set_fixmap(enum fixed_addresses idx,
154 unsigned long phys, pgprot_t flags); 154 phys_addr_t phys, pgprot_t flags);
155 155
156#ifndef CONFIG_PARAVIRT 156#ifndef CONFIG_PARAVIRT
157static inline void __set_fixmap(enum fixed_addresses idx, 157static inline void __set_fixmap(enum fixed_addresses idx,
158 unsigned long phys, pgprot_t flags) 158 phys_addr_t phys, pgprot_t flags)
159{ 159{
160 native_set_fixmap(idx, phys, flags); 160 native_set_fixmap(idx, phys, flags);
161} 161}
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h
index 039db6aa8e02..37555e52f980 100644
--- a/arch/x86/include/asm/hardirq.h
+++ b/arch/x86/include/asm/hardirq.h
@@ -26,7 +26,7 @@ typedef struct {
26#endif 26#endif
27} ____cacheline_aligned irq_cpustat_t; 27} ____cacheline_aligned irq_cpustat_t;
28 28
29DECLARE_PER_CPU(irq_cpustat_t, irq_stat); 29DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
30 30
31/* We can have at most NR_VECTORS irqs routed to a cpu at a time */ 31/* We can have at most NR_VECTORS irqs routed to a cpu at a time */
32#define MAX_HARDIRQS_PER_CPU NR_VECTORS 32#define MAX_HARDIRQS_PER_CPU NR_VECTORS
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index e5383e3d2f8c..73739322b6d0 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -193,8 +193,10 @@ extern void __iomem *ioremap_wc(resource_size_t offset, unsigned long size);
193 */ 193 */
194extern void early_ioremap_init(void); 194extern void early_ioremap_init(void);
195extern void early_ioremap_reset(void); 195extern void early_ioremap_reset(void);
196extern void __iomem *early_ioremap(unsigned long offset, unsigned long size); 196extern void __iomem *early_ioremap(resource_size_t phys_addr,
197extern void __iomem *early_memremap(unsigned long offset, unsigned long size); 197 unsigned long size);
198extern void __iomem *early_memremap(resource_size_t phys_addr,
199 unsigned long size);
198extern void early_iounmap(void __iomem *addr, unsigned long size); 200extern void early_iounmap(void __iomem *addr, unsigned long size);
199 201
200#define IO_SPACE_LIMIT 0xffff 202#define IO_SPACE_LIMIT 0xffff
diff --git a/arch/x86/include/asm/lguest_hcall.h b/arch/x86/include/asm/lguest_hcall.h
index 0f4ee7148afe..faae1996487b 100644
--- a/arch/x86/include/asm/lguest_hcall.h
+++ b/arch/x86/include/asm/lguest_hcall.h
@@ -5,7 +5,6 @@
5#define LHCALL_FLUSH_ASYNC 0 5#define LHCALL_FLUSH_ASYNC 0
6#define LHCALL_LGUEST_INIT 1 6#define LHCALL_LGUEST_INIT 1
7#define LHCALL_SHUTDOWN 2 7#define LHCALL_SHUTDOWN 2
8#define LHCALL_LOAD_GDT 3
9#define LHCALL_NEW_PGTABLE 4 8#define LHCALL_NEW_PGTABLE 4
10#define LHCALL_FLUSH_TLB 5 9#define LHCALL_FLUSH_TLB 5
11#define LHCALL_LOAD_IDT_ENTRY 6 10#define LHCALL_LOAD_IDT_ENTRY 6
@@ -17,6 +16,7 @@
17#define LHCALL_SET_PMD 15 16#define LHCALL_SET_PMD 15
18#define LHCALL_LOAD_TLS 16 17#define LHCALL_LOAD_TLS 16
19#define LHCALL_NOTIFY 17 18#define LHCALL_NOTIFY 17
19#define LHCALL_LOAD_GDT_ENTRY 18
20 20
21#define LGUEST_TRAP_ENTRY 0x1F 21#define LGUEST_TRAP_ENTRY 0x1F
22 22
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index 7727aa8b7dda..378e3691c08c 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -347,7 +347,7 @@ struct pv_mmu_ops {
347 /* Sometimes the physical address is a pfn, and sometimes its 347 /* Sometimes the physical address is a pfn, and sometimes its
348 an mfn. We can tell which is which from the index. */ 348 an mfn. We can tell which is which from the index. */
349 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx, 349 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
350 unsigned long phys, pgprot_t flags); 350 phys_addr_t phys, pgprot_t flags);
351}; 351};
352 352
353struct raw_spinlock; 353struct raw_spinlock;
@@ -1432,7 +1432,7 @@ static inline void arch_leave_lazy_mmu_mode(void)
1432void arch_flush_lazy_mmu_mode(void); 1432void arch_flush_lazy_mmu_mode(void);
1433 1433
1434static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx, 1434static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
1435 unsigned long phys, pgprot_t flags) 1435 phys_addr_t phys, pgprot_t flags)
1436{ 1436{
1437 pv_mmu_ops.set_fixmap(idx, phys, flags); 1437 pv_mmu_ops.set_fixmap(idx, phys, flags);
1438} 1438}
diff --git a/arch/x86/include/asm/pat.h b/arch/x86/include/asm/pat.h
index 2cd07b9422f4..7af14e512f97 100644
--- a/arch/x86/include/asm/pat.h
+++ b/arch/x86/include/asm/pat.h
@@ -18,9 +18,5 @@ extern int free_memtype(u64 start, u64 end);
18 18
19extern int kernel_map_sync_memtype(u64 base, unsigned long size, 19extern int kernel_map_sync_memtype(u64 base, unsigned long size,
20 unsigned long flag); 20 unsigned long flag);
21extern void map_devmem(unsigned long pfn, unsigned long size,
22 struct pgprot vma_prot);
23extern void unmap_devmem(unsigned long pfn, unsigned long size,
24 struct pgprot vma_prot);
25 21
26#endif /* _ASM_X86_PAT_H */ 22#endif /* _ASM_X86_PAT_H */
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 34c52370f2fe..c2cceae709c8 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -138,7 +138,7 @@ extern struct tss_struct doublefault_tss;
138extern __u32 cleared_cpu_caps[NCAPINTS]; 138extern __u32 cleared_cpu_caps[NCAPINTS];
139 139
140#ifdef CONFIG_SMP 140#ifdef CONFIG_SMP
141DECLARE_PER_CPU(struct cpuinfo_x86, cpu_info); 141DECLARE_PER_CPU_SHARED_ALIGNED(struct cpuinfo_x86, cpu_info);
142#define cpu_data(cpu) per_cpu(cpu_info, cpu) 142#define cpu_data(cpu) per_cpu(cpu_info, cpu)
143#define current_cpu_data __get_cpu_var(cpu_info) 143#define current_cpu_data __get_cpu_var(cpu_info)
144#else 144#else
@@ -270,7 +270,7 @@ struct tss_struct {
270 270
271} ____cacheline_aligned; 271} ____cacheline_aligned;
272 272
273DECLARE_PER_CPU(struct tss_struct, init_tss); 273DECLARE_PER_CPU_SHARED_ALIGNED(struct tss_struct, init_tss);
274 274
275/* 275/*
276 * Save the original ist values for checking stack pointers during debugging 276 * Save the original ist values for checking stack pointers during debugging
@@ -352,6 +352,11 @@ struct i387_soft_struct {
352 u32 entry_eip; 352 u32 entry_eip;
353}; 353};
354 354
355struct ymmh_struct {
356 /* 16 * 16 bytes for each YMMH-reg = 256 bytes */
357 u32 ymmh_space[64];
358};
359
355struct xsave_hdr_struct { 360struct xsave_hdr_struct {
356 u64 xstate_bv; 361 u64 xstate_bv;
357 u64 reserved1[2]; 362 u64 reserved1[2];
@@ -361,6 +366,7 @@ struct xsave_hdr_struct {
361struct xsave_struct { 366struct xsave_struct {
362 struct i387_fxsave_struct i387; 367 struct i387_fxsave_struct i387;
363 struct xsave_hdr_struct xsave_hdr; 368 struct xsave_hdr_struct xsave_hdr;
369 struct ymmh_struct ymmh;
364 /* new processor state extensions will go here */ 370 /* new processor state extensions will go here */
365} __attribute__ ((packed, aligned (64))); 371} __attribute__ ((packed, aligned (64)));
366 372
@@ -387,7 +393,7 @@ union irq_stack_union {
387 }; 393 };
388}; 394};
389 395
390DECLARE_PER_CPU(union irq_stack_union, irq_stack_union); 396DECLARE_PER_CPU_FIRST(union irq_stack_union, irq_stack_union);
391DECLARE_INIT_PER_CPU(irq_stack_union); 397DECLARE_INIT_PER_CPU(irq_stack_union);
392 398
393DECLARE_PER_CPU(char *, irq_stack_ptr); 399DECLARE_PER_CPU(char *, irq_stack_ptr);
diff --git a/arch/x86/include/asm/required-features.h b/arch/x86/include/asm/required-features.h
index d5cd6c586881..a4737dddfd58 100644
--- a/arch/x86/include/asm/required-features.h
+++ b/arch/x86/include/asm/required-features.h
@@ -50,7 +50,7 @@
50#ifdef CONFIG_X86_64 50#ifdef CONFIG_X86_64
51#define NEED_PSE 0 51#define NEED_PSE 0
52#define NEED_MSR (1<<(X86_FEATURE_MSR & 31)) 52#define NEED_MSR (1<<(X86_FEATURE_MSR & 31))
53#define NEED_PGE (1<<(X86_FEATURE_PGE & 31)) 53#define NEED_PGE 0
54#define NEED_FXSR (1<<(X86_FEATURE_FXSR & 31)) 54#define NEED_FXSR (1<<(X86_FEATURE_FXSR & 31))
55#define NEED_XMM (1<<(X86_FEATURE_XMM & 31)) 55#define NEED_XMM (1<<(X86_FEATURE_XMM & 31))
56#define NEED_XMM2 (1<<(X86_FEATURE_XMM2 & 31)) 56#define NEED_XMM2 (1<<(X86_FEATURE_XMM2 & 31))
diff --git a/arch/x86/include/asm/sigcontext.h b/arch/x86/include/asm/sigcontext.h
index ec666491aaa4..72e5a4491661 100644
--- a/arch/x86/include/asm/sigcontext.h
+++ b/arch/x86/include/asm/sigcontext.h
@@ -269,6 +269,11 @@ struct _xsave_hdr {
269 __u64 reserved2[5]; 269 __u64 reserved2[5];
270}; 270};
271 271
272struct _ymmh_state {
273 /* 16 * 16 bytes for each YMMH-reg */
274 __u32 ymmh_space[64];
275};
276
272/* 277/*
273 * Extended state pointed by the fpstate pointer in the sigcontext. 278 * Extended state pointed by the fpstate pointer in the sigcontext.
274 * In addition to the fpstate, information encoded in the xstate_hdr 279 * In addition to the fpstate, information encoded in the xstate_hdr
@@ -278,6 +283,7 @@ struct _xsave_hdr {
278struct _xstate { 283struct _xstate {
279 struct _fpstate fpstate; 284 struct _fpstate fpstate;
280 struct _xsave_hdr xstate_hdr; 285 struct _xsave_hdr xstate_hdr;
286 struct _ymmh_state ymmh;
281 /* new processor state extensions go here */ 287 /* new processor state extensions go here */
282}; 288};
283 289
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
index d3539f998f88..16a5c84b0329 100644
--- a/arch/x86/include/asm/tlbflush.h
+++ b/arch/x86/include/asm/tlbflush.h
@@ -152,7 +152,7 @@ struct tlb_state {
152 struct mm_struct *active_mm; 152 struct mm_struct *active_mm;
153 int state; 153 int state;
154}; 154};
155DECLARE_PER_CPU(struct tlb_state, cpu_tlbstate); 155DECLARE_PER_CPU_SHARED_ALIGNED(struct tlb_state, cpu_tlbstate);
156 156
157static inline void reset_lazy_tlbstate(void) 157static inline void reset_lazy_tlbstate(void)
158{ 158{
diff --git a/arch/x86/include/asm/uv/uv_mmrs.h b/arch/x86/include/asm/uv/uv_mmrs.h
index db68ac8a5ac2..2cae46c7c8a2 100644
--- a/arch/x86/include/asm/uv/uv_mmrs.h
+++ b/arch/x86/include/asm/uv/uv_mmrs.h
@@ -17,6 +17,11 @@
17/* ========================================================================= */ 17/* ========================================================================= */
18/* UVH_BAU_DATA_CONFIG */ 18/* UVH_BAU_DATA_CONFIG */
19/* ========================================================================= */ 19/* ========================================================================= */
20#define UVH_LB_BAU_MISC_CONTROL 0x320170UL
21#define UV_ENABLE_INTD_SOFT_ACK_MODE_SHIFT 15
22#define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD_SHIFT 16
23#define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD 0x000000000bUL
24/* 1011 timebase 7 (168millisec) * 3 ticks -> 500ms */
20#define UVH_BAU_DATA_CONFIG 0x61680UL 25#define UVH_BAU_DATA_CONFIG 0x61680UL
21#define UVH_BAU_DATA_CONFIG_32 0x0438 26#define UVH_BAU_DATA_CONFIG_32 0x0438
22 27
diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
index 1a918dde46b5..018a0a400799 100644
--- a/arch/x86/include/asm/xen/page.h
+++ b/arch/x86/include/asm/xen/page.h
@@ -124,7 +124,8 @@ static inline unsigned long mfn_to_local_pfn(unsigned long mfn)
124 124
125/* VIRT <-> MACHINE conversion */ 125/* VIRT <-> MACHINE conversion */
126#define virt_to_machine(v) (phys_to_machine(XPADDR(__pa(v)))) 126#define virt_to_machine(v) (phys_to_machine(XPADDR(__pa(v))))
127#define virt_to_mfn(v) (pfn_to_mfn(PFN_DOWN(__pa(v)))) 127#define virt_to_pfn(v) (PFN_DOWN(__pa(v)))
128#define virt_to_mfn(v) (pfn_to_mfn(virt_to_pfn(v)))
128#define mfn_to_virt(m) (__va(mfn_to_pfn(m) << PAGE_SHIFT)) 129#define mfn_to_virt(m) (__va(mfn_to_pfn(m) << PAGE_SHIFT))
129 130
130static inline unsigned long pte_mfn(pte_t pte) 131static inline unsigned long pte_mfn(pte_t pte)
diff --git a/arch/x86/include/asm/xsave.h b/arch/x86/include/asm/xsave.h
index 08e9a1ac07a9..727acc152344 100644
--- a/arch/x86/include/asm/xsave.h
+++ b/arch/x86/include/asm/xsave.h
@@ -7,6 +7,7 @@
7 7
8#define XSTATE_FP 0x1 8#define XSTATE_FP 0x1
9#define XSTATE_SSE 0x2 9#define XSTATE_SSE 0x2
10#define XSTATE_YMM 0x4
10 11
11#define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE) 12#define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE)
12 13
@@ -15,7 +16,7 @@
15/* 16/*
16 * These are the features that the OS can handle currently. 17 * These are the features that the OS can handle currently.
17 */ 18 */
18#define XCNTXT_MASK (XSTATE_FP | XSTATE_SSE) 19#define XCNTXT_MASK (XSTATE_FP | XSTATE_SSE | XSTATE_YMM)
19 20
20#ifdef CONFIG_X86_64 21#ifdef CONFIG_X86_64
21#define REX_PREFIX "0x48, " 22#define REX_PREFIX "0x48, "
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 098ec84b8c00..f2870920f246 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -431,6 +431,12 @@ static void __cpuinit setup_APIC_timer(void)
431{ 431{
432 struct clock_event_device *levt = &__get_cpu_var(lapic_events); 432 struct clock_event_device *levt = &__get_cpu_var(lapic_events);
433 433
434 if (cpu_has(&current_cpu_data, X86_FEATURE_ARAT)) {
435 lapic_clockevent.features &= ~CLOCK_EVT_FEAT_C3STOP;
436 /* Make LAPIC timer preferrable over percpu HPET */
437 lapic_clockevent.rating = 150;
438 }
439
434 memcpy(levt, &lapic_clockevent, sizeof(*levt)); 440 memcpy(levt, &lapic_clockevent, sizeof(*levt));
435 levt->cpumask = cpumask_of(smp_processor_id()); 441 levt->cpumask = cpumask_of(smp_processor_id());
436 442
diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
index 0014714ea97b..306e5e88fb6f 100644
--- a/arch/x86/kernel/apic/apic_flat_64.c
+++ b/arch/x86/kernel/apic/apic_flat_64.c
@@ -212,7 +212,7 @@ struct apic apic_flat = {
212 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, 212 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH,
213 .wait_for_init_deassert = NULL, 213 .wait_for_init_deassert = NULL,
214 .smp_callin_clear_local_apic = NULL, 214 .smp_callin_clear_local_apic = NULL,
215 .inquire_remote_apic = NULL, 215 .inquire_remote_apic = default_inquire_remote_apic,
216 216
217 .read = native_apic_mem_read, 217 .read = native_apic_mem_read,
218 .write = native_apic_mem_write, 218 .write = native_apic_mem_write,
@@ -362,7 +362,7 @@ struct apic apic_physflat = {
362 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, 362 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH,
363 .wait_for_init_deassert = NULL, 363 .wait_for_init_deassert = NULL,
364 .smp_callin_clear_local_apic = NULL, 364 .smp_callin_clear_local_apic = NULL,
365 .inquire_remote_apic = NULL, 365 .inquire_remote_apic = default_inquire_remote_apic,
366 366
367 .read = native_apic_mem_read, 367 .read = native_apic_mem_read,
368 .write = native_apic_mem_write, 368 .write = native_apic_mem_write,
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 767fe7e46d68..a2789e42e162 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2524,7 +2524,6 @@ static void irq_complete_move(struct irq_desc **descp)
2524static inline void irq_complete_move(struct irq_desc **descp) {} 2524static inline void irq_complete_move(struct irq_desc **descp) {}
2525#endif 2525#endif
2526 2526
2527#ifdef CONFIG_X86_X2APIC
2528static void __eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg) 2527static void __eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg)
2529{ 2528{
2530 int apic, pin; 2529 int apic, pin;
@@ -2558,6 +2557,7 @@ eoi_ioapic_irq(struct irq_desc *desc)
2558 spin_unlock_irqrestore(&ioapic_lock, flags); 2557 spin_unlock_irqrestore(&ioapic_lock, flags);
2559} 2558}
2560 2559
2560#ifdef CONFIG_X86_X2APIC
2561static void ack_x2apic_level(unsigned int irq) 2561static void ack_x2apic_level(unsigned int irq)
2562{ 2562{
2563 struct irq_desc *desc = irq_to_desc(irq); 2563 struct irq_desc *desc = irq_to_desc(irq);
@@ -2634,6 +2634,9 @@ static void ack_apic_level(unsigned int irq)
2634 */ 2634 */
2635 ack_APIC_irq(); 2635 ack_APIC_irq();
2636 2636
2637 if (irq_remapped(irq))
2638 eoi_ioapic_irq(desc);
2639
2637 /* Now we can move and renable the irq */ 2640 /* Now we can move and renable the irq */
2638 if (unlikely(do_unmask_irq)) { 2641 if (unlikely(do_unmask_irq)) {
2639 /* Only migrate the irq if the ack has been received. 2642 /* Only migrate the irq if the ack has been received.
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index 1248318436e8..de1a50af807b 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -549,7 +549,8 @@ void __init uv_system_init(void)
549 unsigned long gnode_upper, lowmem_redir_base, lowmem_redir_size; 549 unsigned long gnode_upper, lowmem_redir_base, lowmem_redir_size;
550 int bytes, nid, cpu, lcpu, pnode, blade, i, j, m_val, n_val; 550 int bytes, nid, cpu, lcpu, pnode, blade, i, j, m_val, n_val;
551 int max_pnode = 0; 551 int max_pnode = 0;
552 unsigned long mmr_base, present; 552 unsigned long mmr_base, present, paddr;
553 unsigned short pnode_mask;
553 554
554 map_low_mmrs(); 555 map_low_mmrs();
555 556
@@ -592,6 +593,7 @@ void __init uv_system_init(void)
592 } 593 }
593 } 594 }
594 595
596 pnode_mask = (1 << n_val) - 1;
595 node_id.v = uv_read_local_mmr(UVH_NODE_ID); 597 node_id.v = uv_read_local_mmr(UVH_NODE_ID);
596 gnode_upper = (((unsigned long)node_id.s.node_id) & 598 gnode_upper = (((unsigned long)node_id.s.node_id) &
597 ~((1 << n_val) - 1)) << m_val; 599 ~((1 << n_val) - 1)) << m_val;
@@ -615,7 +617,7 @@ void __init uv_system_init(void)
615 uv_cpu_hub_info(cpu)->numa_blade_id = blade; 617 uv_cpu_hub_info(cpu)->numa_blade_id = blade;
616 uv_cpu_hub_info(cpu)->blade_processor_id = lcpu; 618 uv_cpu_hub_info(cpu)->blade_processor_id = lcpu;
617 uv_cpu_hub_info(cpu)->pnode = pnode; 619 uv_cpu_hub_info(cpu)->pnode = pnode;
618 uv_cpu_hub_info(cpu)->pnode_mask = (1 << n_val) - 1; 620 uv_cpu_hub_info(cpu)->pnode_mask = pnode_mask;
619 uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1; 621 uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1;
620 uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper; 622 uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper;
621 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base; 623 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base;
@@ -631,6 +633,16 @@ void __init uv_system_init(void)
631 lcpu, blade); 633 lcpu, blade);
632 } 634 }
633 635
636 /* Add blade/pnode info for nodes without cpus */
637 for_each_online_node(nid) {
638 if (uv_node_to_blade[nid] >= 0)
639 continue;
640 paddr = node_start_pfn(nid) << PAGE_SHIFT;
641 pnode = (paddr >> m_val) & pnode_mask;
642 blade = boot_pnode_to_blade(pnode);
643 uv_node_to_blade[nid] = blade;
644 }
645
634 map_gru_high(max_pnode); 646 map_gru_high(max_pnode);
635 map_mmr_high(max_pnode); 647 map_mmr_high(max_pnode);
636 map_config_high(max_pnode); 648 map_config_high(max_pnode);
diff --git a/arch/x86/kernel/bios_uv.c b/arch/x86/kernel/bios_uv.c
index f63882728d91..63a88e1f987d 100644
--- a/arch/x86/kernel/bios_uv.c
+++ b/arch/x86/kernel/bios_uv.c
@@ -182,7 +182,8 @@ void uv_bios_init(void)
182 memcpy(&uv_systab, tab, sizeof(struct uv_systab)); 182 memcpy(&uv_systab, tab, sizeof(struct uv_systab));
183 iounmap(tab); 183 iounmap(tab);
184 184
185 printk(KERN_INFO "EFI UV System Table Revision %d\n", tab->revision); 185 printk(KERN_INFO "EFI UV System Table Revision %d\n",
186 uv_systab.revision);
186} 187}
187#else /* !CONFIG_EFI */ 188#else /* !CONFIG_EFI */
188 189
diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c
index 8220ae69849d..c965e5212714 100644
--- a/arch/x86/kernel/cpu/addon_cpuid_features.c
+++ b/arch/x86/kernel/cpu/addon_cpuid_features.c
@@ -31,6 +31,7 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c)
31 31
32 static const struct cpuid_bit __cpuinitconst cpuid_bits[] = { 32 static const struct cpuid_bit __cpuinitconst cpuid_bits[] = {
33 { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006 }, 33 { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006 },
34 { X86_FEATURE_ARAT, CR_EAX, 2, 0x00000006 },
34 { 0, 0, 0, 0 } 35 { 0, 0, 0, 0 }
35 }; 36 };
36 37
diff --git a/arch/x86/kernel/cpu/cpu_debug.c b/arch/x86/kernel/cpu/cpu_debug.c
index 46e29ab96c6a..46e29ab96c6a 100755..100644
--- a/arch/x86/kernel/cpu/cpu_debug.c
+++ b/arch/x86/kernel/cpu/cpu_debug.c
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index 19f6b9d27e83..208ecf6643df 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -65,13 +65,18 @@ enum {
65struct acpi_cpufreq_data { 65struct acpi_cpufreq_data {
66 struct acpi_processor_performance *acpi_data; 66 struct acpi_processor_performance *acpi_data;
67 struct cpufreq_frequency_table *freq_table; 67 struct cpufreq_frequency_table *freq_table;
68 unsigned int max_freq;
69 unsigned int resume; 68 unsigned int resume;
70 unsigned int cpu_feature; 69 unsigned int cpu_feature;
71}; 70};
72 71
73static DEFINE_PER_CPU(struct acpi_cpufreq_data *, drv_data); 72static DEFINE_PER_CPU(struct acpi_cpufreq_data *, drv_data);
74 73
74struct acpi_msr_data {
75 u64 saved_aperf, saved_mperf;
76};
77
78static DEFINE_PER_CPU(struct acpi_msr_data, msr_data);
79
75DEFINE_TRACE(power_mark); 80DEFINE_TRACE(power_mark);
76 81
77/* acpi_perf_data is a pointer to percpu data. */ 82/* acpi_perf_data is a pointer to percpu data. */
@@ -152,7 +157,8 @@ struct drv_cmd {
152 u32 val; 157 u32 val;
153}; 158};
154 159
155static long do_drv_read(void *_cmd) 160/* Called via smp_call_function_single(), on the target CPU */
161static void do_drv_read(void *_cmd)
156{ 162{
157 struct drv_cmd *cmd = _cmd; 163 struct drv_cmd *cmd = _cmd;
158 u32 h; 164 u32 h;
@@ -169,10 +175,10 @@ static long do_drv_read(void *_cmd)
169 default: 175 default:
170 break; 176 break;
171 } 177 }
172 return 0;
173} 178}
174 179
175static long do_drv_write(void *_cmd) 180/* Called via smp_call_function_many(), on the target CPUs */
181static void do_drv_write(void *_cmd)
176{ 182{
177 struct drv_cmd *cmd = _cmd; 183 struct drv_cmd *cmd = _cmd;
178 u32 lo, hi; 184 u32 lo, hi;
@@ -191,23 +197,24 @@ static long do_drv_write(void *_cmd)
191 default: 197 default:
192 break; 198 break;
193 } 199 }
194 return 0;
195} 200}
196 201
197static void drv_read(struct drv_cmd *cmd) 202static void drv_read(struct drv_cmd *cmd)
198{ 203{
199 cmd->val = 0; 204 cmd->val = 0;
200 205
201 work_on_cpu(cpumask_any(cmd->mask), do_drv_read, cmd); 206 smp_call_function_single(cpumask_any(cmd->mask), do_drv_read, cmd, 1);
202} 207}
203 208
204static void drv_write(struct drv_cmd *cmd) 209static void drv_write(struct drv_cmd *cmd)
205{ 210{
206 unsigned int i; 211 int this_cpu;
207 212
208 for_each_cpu(i, cmd->mask) { 213 this_cpu = get_cpu();
209 work_on_cpu(i, do_drv_write, cmd); 214 if (cpumask_test_cpu(this_cpu, cmd->mask))
210 } 215 do_drv_write(cmd);
216 smp_call_function_many(cmd->mask, do_drv_write, cmd, 1);
217 put_cpu();
211} 218}
212 219
213static u32 get_cur_val(const struct cpumask *mask) 220static u32 get_cur_val(const struct cpumask *mask)
@@ -241,28 +248,23 @@ static u32 get_cur_val(const struct cpumask *mask)
241 return cmd.val; 248 return cmd.val;
242} 249}
243 250
244struct perf_cur { 251struct perf_pair {
245 union { 252 union {
246 struct { 253 struct {
247 u32 lo; 254 u32 lo;
248 u32 hi; 255 u32 hi;
249 } split; 256 } split;
250 u64 whole; 257 u64 whole;
251 } aperf_cur, mperf_cur; 258 } aperf, mperf;
252}; 259};
253 260
254 261/* Called via smp_call_function_single(), on the target CPU */
255static long read_measured_perf_ctrs(void *_cur) 262static void read_measured_perf_ctrs(void *_cur)
256{ 263{
257 struct perf_cur *cur = _cur; 264 struct perf_pair *cur = _cur;
258
259 rdmsr(MSR_IA32_APERF, cur->aperf_cur.split.lo, cur->aperf_cur.split.hi);
260 rdmsr(MSR_IA32_MPERF, cur->mperf_cur.split.lo, cur->mperf_cur.split.hi);
261 265
262 wrmsr(MSR_IA32_APERF, 0, 0); 266 rdmsr(MSR_IA32_APERF, cur->aperf.split.lo, cur->aperf.split.hi);
263 wrmsr(MSR_IA32_MPERF, 0, 0); 267 rdmsr(MSR_IA32_MPERF, cur->mperf.split.lo, cur->mperf.split.hi);
264
265 return 0;
266} 268}
267 269
268/* 270/*
@@ -281,58 +283,63 @@ static long read_measured_perf_ctrs(void *_cur)
281static unsigned int get_measured_perf(struct cpufreq_policy *policy, 283static unsigned int get_measured_perf(struct cpufreq_policy *policy,
282 unsigned int cpu) 284 unsigned int cpu)
283{ 285{
284 struct perf_cur cur; 286 struct perf_pair readin, cur;
285 unsigned int perf_percent; 287 unsigned int perf_percent;
286 unsigned int retval; 288 unsigned int retval;
287 289
288 if (!work_on_cpu(cpu, read_measured_perf_ctrs, &cur)) 290 if (smp_call_function_single(cpu, read_measured_perf_ctrs, &readin, 1))
289 return 0; 291 return 0;
290 292
293 cur.aperf.whole = readin.aperf.whole -
294 per_cpu(msr_data, cpu).saved_aperf;
295 cur.mperf.whole = readin.mperf.whole -
296 per_cpu(msr_data, cpu).saved_mperf;
297 per_cpu(msr_data, cpu).saved_aperf = readin.aperf.whole;
298 per_cpu(msr_data, cpu).saved_mperf = readin.mperf.whole;
299
291#ifdef __i386__ 300#ifdef __i386__
292 /* 301 /*
293 * We dont want to do 64 bit divide with 32 bit kernel 302 * We dont want to do 64 bit divide with 32 bit kernel
294 * Get an approximate value. Return failure in case we cannot get 303 * Get an approximate value. Return failure in case we cannot get
295 * an approximate value. 304 * an approximate value.
296 */ 305 */
297 if (unlikely(cur.aperf_cur.split.hi || cur.mperf_cur.split.hi)) { 306 if (unlikely(cur.aperf.split.hi || cur.mperf.split.hi)) {
298 int shift_count; 307 int shift_count;
299 u32 h; 308 u32 h;
300 309
301 h = max_t(u32, cur.aperf_cur.split.hi, cur.mperf_cur.split.hi); 310 h = max_t(u32, cur.aperf.split.hi, cur.mperf.split.hi);
302 shift_count = fls(h); 311 shift_count = fls(h);
303 312
304 cur.aperf_cur.whole >>= shift_count; 313 cur.aperf.whole >>= shift_count;
305 cur.mperf_cur.whole >>= shift_count; 314 cur.mperf.whole >>= shift_count;
306 } 315 }
307 316
308 if (((unsigned long)(-1) / 100) < cur.aperf_cur.split.lo) { 317 if (((unsigned long)(-1) / 100) < cur.aperf.split.lo) {
309 int shift_count = 7; 318 int shift_count = 7;
310 cur.aperf_cur.split.lo >>= shift_count; 319 cur.aperf.split.lo >>= shift_count;
311 cur.mperf_cur.split.lo >>= shift_count; 320 cur.mperf.split.lo >>= shift_count;
312 } 321 }
313 322
314 if (cur.aperf_cur.split.lo && cur.mperf_cur.split.lo) 323 if (cur.aperf.split.lo && cur.mperf.split.lo)
315 perf_percent = (cur.aperf_cur.split.lo * 100) / 324 perf_percent = (cur.aperf.split.lo * 100) / cur.mperf.split.lo;
316 cur.mperf_cur.split.lo;
317 else 325 else
318 perf_percent = 0; 326 perf_percent = 0;
319 327
320#else 328#else
321 if (unlikely(((unsigned long)(-1) / 100) < cur.aperf_cur.whole)) { 329 if (unlikely(((unsigned long)(-1) / 100) < cur.aperf.whole)) {
322 int shift_count = 7; 330 int shift_count = 7;
323 cur.aperf_cur.whole >>= shift_count; 331 cur.aperf.whole >>= shift_count;
324 cur.mperf_cur.whole >>= shift_count; 332 cur.mperf.whole >>= shift_count;
325 } 333 }
326 334
327 if (cur.aperf_cur.whole && cur.mperf_cur.whole) 335 if (cur.aperf.whole && cur.mperf.whole)
328 perf_percent = (cur.aperf_cur.whole * 100) / 336 perf_percent = (cur.aperf.whole * 100) / cur.mperf.whole;
329 cur.mperf_cur.whole;
330 else 337 else
331 perf_percent = 0; 338 perf_percent = 0;
332 339
333#endif 340#endif
334 341
335 retval = per_cpu(drv_data, policy->cpu)->max_freq * perf_percent / 100; 342 retval = (policy->cpuinfo.max_freq * perf_percent) / 100;
336 343
337 return retval; 344 return retval;
338} 345}
@@ -685,16 +692,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
685 /* Check for high latency (>20uS) from buggy BIOSes, like on T42 */ 692 /* Check for high latency (>20uS) from buggy BIOSes, like on T42 */
686 if (perf->control_register.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE && 693 if (perf->control_register.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE &&
687 policy->cpuinfo.transition_latency > 20 * 1000) { 694 policy->cpuinfo.transition_latency > 20 * 1000) {
688 static int print_once;
689 policy->cpuinfo.transition_latency = 20 * 1000; 695 policy->cpuinfo.transition_latency = 20 * 1000;
690 if (!print_once) { 696 printk_once(KERN_INFO "Capping off P-state tranision"
691 print_once = 1; 697 " latency at 20 uS\n");
692 printk(KERN_INFO "Capping off P-state tranision latency"
693 " at 20 uS\n");
694 }
695 } 698 }
696 699
697 data->max_freq = perf->states[0].core_frequency * 1000;
698 /* table init */ 700 /* table init */
699 for (i = 0; i < perf->state_count; i++) { 701 for (i = 0; i < perf->state_count; i++) {
700 if (i > 0 && perf->states[i].core_frequency >= 702 if (i > 0 && perf->states[i].core_frequency >=
@@ -713,6 +715,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
713 if (result) 715 if (result)
714 goto err_freqfree; 716 goto err_freqfree;
715 717
718 if (perf->states[0].core_frequency * 1000 != policy->cpuinfo.max_freq)
719 printk(KERN_WARNING FW_WARN "P-state 0 is not max freq\n");
720
716 switch (perf->control_register.space_id) { 721 switch (perf->control_register.space_id) {
717 case ACPI_ADR_SPACE_SYSTEM_IO: 722 case ACPI_ADR_SPACE_SYSTEM_IO:
718 /* Current speed is unknown and not detectable by IO port */ 723 /* Current speed is unknown and not detectable by IO port */
diff --git a/arch/x86/kernel/cpu/cpufreq/longhaul.c b/arch/x86/kernel/cpu/cpufreq/longhaul.c
index 0bd48e65a0ca..ce2ed3e4aad9 100644
--- a/arch/x86/kernel/cpu/cpufreq/longhaul.c
+++ b/arch/x86/kernel/cpu/cpufreq/longhaul.c
@@ -33,7 +33,6 @@
33#include <linux/timex.h> 33#include <linux/timex.h>
34#include <linux/io.h> 34#include <linux/io.h>
35#include <linux/acpi.h> 35#include <linux/acpi.h>
36#include <linux/kernel.h>
37 36
38#include <asm/msr.h> 37#include <asm/msr.h>
39#include <acpi/processor.h> 38#include <acpi/processor.h>
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index 70a10ca100f6..18dfa30795c9 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -18,6 +18,8 @@
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/list.h> 19#include <linux/list.h>
20 20
21#include <trace/syscall.h>
22
21#include <asm/cacheflush.h> 23#include <asm/cacheflush.h>
22#include <asm/ftrace.h> 24#include <asm/ftrace.h>
23#include <asm/nops.h> 25#include <asm/nops.h>
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 648b3a2a3a44..3f0019e0a229 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -722,7 +722,7 @@ static int hpet_cpuhp_notify(struct notifier_block *n,
722/* 722/*
723 * Clock source related code 723 * Clock source related code
724 */ 724 */
725static cycle_t read_hpet(void) 725static cycle_t read_hpet(struct clocksource *cs)
726{ 726{
727 return (cycle_t)hpet_readl(HPET_COUNTER); 727 return (cycle_t)hpet_readl(HPET_COUNTER);
728} 728}
@@ -756,7 +756,7 @@ static int hpet_clocksource_register(void)
756 hpet_restart_counter(); 756 hpet_restart_counter();
757 757
758 /* Verify whether hpet counter works */ 758 /* Verify whether hpet counter works */
759 t1 = read_hpet(); 759 t1 = hpet_readl(HPET_COUNTER);
760 rdtscll(start); 760 rdtscll(start);
761 761
762 /* 762 /*
@@ -770,7 +770,7 @@ static int hpet_clocksource_register(void)
770 rdtscll(now); 770 rdtscll(now);
771 } while ((now - start) < 200000UL); 771 } while ((now - start) < 200000UL);
772 772
773 if (t1 == read_hpet()) { 773 if (t1 == hpet_readl(HPET_COUNTER)) {
774 printk(KERN_WARNING 774 printk(KERN_WARNING
775 "HPET counter not counting. HPET disabled\n"); 775 "HPET counter not counting. HPET disabled\n");
776 return -ENODEV; 776 return -ENODEV;
diff --git a/arch/x86/kernel/i8253.c b/arch/x86/kernel/i8253.c
index 3475440baa54..c2e0bb0890d4 100644
--- a/arch/x86/kernel/i8253.c
+++ b/arch/x86/kernel/i8253.c
@@ -129,7 +129,7 @@ void __init setup_pit_timer(void)
129 * to just read by itself. So use jiffies to emulate a free 129 * to just read by itself. So use jiffies to emulate a free
130 * running counter: 130 * running counter:
131 */ 131 */
132static cycle_t pit_read(void) 132static cycle_t pit_read(struct clocksource *cs)
133{ 133{
134 static int old_count; 134 static int old_count;
135 static u32 old_jifs; 135 static u32 old_jifs;
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index 3aaf7b9e3a8b..c3fe010d74c8 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -65,7 +65,7 @@ static int show_other_interrupts(struct seq_file *p, int prec)
65 seq_printf(p, " Spurious interrupts\n"); 65 seq_printf(p, " Spurious interrupts\n");
66#endif 66#endif
67 if (generic_interrupt_extension) { 67 if (generic_interrupt_extension) {
68 seq_printf(p, "PLT: "); 68 seq_printf(p, "%*s: ", prec, "PLT");
69 for_each_online_cpu(j) 69 for_each_online_cpu(j)
70 seq_printf(p, "%10u ", irq_stats(j)->generic_irqs); 70 seq_printf(p, "%10u ", irq_stats(j)->generic_irqs);
71 seq_printf(p, " Platform interrupts\n"); 71 seq_printf(p, " Platform interrupts\n");
diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
index 137f2e8132df..223af43f1526 100644
--- a/arch/x86/kernel/kvmclock.c
+++ b/arch/x86/kernel/kvmclock.c
@@ -77,6 +77,11 @@ static cycle_t kvm_clock_read(void)
77 return ret; 77 return ret;
78} 78}
79 79
80static cycle_t kvm_clock_get_cycles(struct clocksource *cs)
81{
82 return kvm_clock_read();
83}
84
80/* 85/*
81 * If we don't do that, there is the possibility that the guest 86 * If we don't do that, there is the possibility that the guest
82 * will calibrate under heavy load - thus, getting a lower lpj - 87 * will calibrate under heavy load - thus, getting a lower lpj -
@@ -107,7 +112,7 @@ static void kvm_get_preset_lpj(void)
107 112
108static struct clocksource kvm_clock = { 113static struct clocksource kvm_clock = {
109 .name = "kvm-clock", 114 .name = "kvm-clock",
110 .read = kvm_clock_read, 115 .read = kvm_clock_get_cycles,
111 .rating = 400, 116 .rating = 400,
112 .mask = CLOCKSOURCE_MASK(64), 117 .mask = CLOCKSOURCE_MASK(64),
113 .mult = 1 << KVM_SCALE, 118 .mult = 1 << KVM_SCALE,
diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
index a0f3851ef310..98c470c069d1 100644
--- a/arch/x86/kernel/microcode_core.c
+++ b/arch/x86/kernel/microcode_core.c
@@ -108,40 +108,29 @@ struct ucode_cpu_info ucode_cpu_info[NR_CPUS];
108EXPORT_SYMBOL_GPL(ucode_cpu_info); 108EXPORT_SYMBOL_GPL(ucode_cpu_info);
109 109
110#ifdef CONFIG_MICROCODE_OLD_INTERFACE 110#ifdef CONFIG_MICROCODE_OLD_INTERFACE
111struct update_for_cpu {
112 const void __user *buf;
113 size_t size;
114};
115
116static long update_for_cpu(void *_ufc)
117{
118 struct update_for_cpu *ufc = _ufc;
119 int error;
120
121 error = microcode_ops->request_microcode_user(smp_processor_id(),
122 ufc->buf, ufc->size);
123 if (error < 0)
124 return error;
125 if (!error)
126 microcode_ops->apply_microcode(smp_processor_id());
127 return error;
128}
129
130static int do_microcode_update(const void __user *buf, size_t size) 111static int do_microcode_update(const void __user *buf, size_t size)
131{ 112{
113 cpumask_t old;
132 int error = 0; 114 int error = 0;
133 int cpu; 115 int cpu;
134 struct update_for_cpu ufc = { .buf = buf, .size = size }; 116
117 old = current->cpus_allowed;
135 118
136 for_each_online_cpu(cpu) { 119 for_each_online_cpu(cpu) {
137 struct ucode_cpu_info *uci = ucode_cpu_info + cpu; 120 struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
138 121
139 if (!uci->valid) 122 if (!uci->valid)
140 continue; 123 continue;
141 error = work_on_cpu(cpu, update_for_cpu, &ufc); 124
125 set_cpus_allowed_ptr(current, &cpumask_of_cpu(cpu));
126 error = microcode_ops->request_microcode_user(cpu, buf, size);
142 if (error < 0) 127 if (error < 0)
143 break; 128 goto out;
129 if (!error)
130 microcode_ops->apply_microcode(cpu);
144 } 131 }
132out:
133 set_cpus_allowed_ptr(current, &old);
145 return error; 134 return error;
146} 135}
147 136
@@ -391,8 +380,6 @@ static int mc_sysdev_add(struct sys_device *sys_dev)
391 return err; 380 return err;
392 381
393 err = microcode_init_cpu(cpu); 382 err = microcode_init_cpu(cpu);
394 if (err)
395 sysfs_remove_group(&sys_dev->kobj, &mc_attr_group);
396 383
397 return err; 384 return err;
398} 385}
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index dce99dca6cf8..70fd7e414c15 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -679,7 +679,7 @@ void __init get_smp_config(void)
679 __get_smp_config(0); 679 __get_smp_config(0);
680} 680}
681 681
682static void smp_reserve_bootmem(struct mpf_intel *mpf) 682static void __init smp_reserve_bootmem(struct mpf_intel *mpf)
683{ 683{
684 unsigned long size = get_mpc_size(mpf->physptr); 684 unsigned long size = get_mpc_size(mpf->physptr);
685#ifdef CONFIG_X86_32 685#ifdef CONFIG_X86_32
@@ -838,7 +838,7 @@ static int __init get_MP_intsrc_index(struct mpc_intsrc *m)
838 838
839static struct mpc_intsrc __initdata *m_spare[SPARE_SLOT_NUM]; 839static struct mpc_intsrc __initdata *m_spare[SPARE_SLOT_NUM];
840 840
841static void check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) 841static void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare)
842{ 842{
843 int i; 843 int i;
844 844
@@ -866,7 +866,8 @@ static void check_irq_src(struct mpc_intsrc *m, int *nr_m_spare)
866 } 866 }
867} 867}
868#else /* CONFIG_X86_IO_APIC */ 868#else /* CONFIG_X86_IO_APIC */
869static inline void check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) {} 869static
870inline void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) {}
870#endif /* CONFIG_X86_IO_APIC */ 871#endif /* CONFIG_X86_IO_APIC */
871 872
872static int check_slot(unsigned long mpc_new_phys, unsigned long mpc_new_length, 873static int check_slot(unsigned long mpc_new_phys, unsigned long mpc_new_length,
diff --git a/arch/x86/kernel/pci-swiotlb.c b/arch/x86/kernel/pci-swiotlb.c
index 34f12e9996ed..221a3853e268 100644
--- a/arch/x86/kernel/pci-swiotlb.c
+++ b/arch/x86/kernel/pci-swiotlb.c
@@ -50,7 +50,7 @@ static void *x86_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
50 return swiotlb_alloc_coherent(hwdev, size, dma_handle, flags); 50 return swiotlb_alloc_coherent(hwdev, size, dma_handle, flags);
51} 51}
52 52
53struct dma_map_ops swiotlb_dma_ops = { 53static struct dma_map_ops swiotlb_dma_ops = {
54 .mapping_error = swiotlb_dma_mapping_error, 54 .mapping_error = swiotlb_dma_mapping_error,
55 .alloc_coherent = x86_swiotlb_alloc_coherent, 55 .alloc_coherent = x86_swiotlb_alloc_coherent,
56 .free_coherent = swiotlb_free_coherent, 56 .free_coherent = swiotlb_free_coherent,
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index fe9345c967de..23b7c8f017e2 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -21,7 +21,6 @@
21#include <linux/audit.h> 21#include <linux/audit.h>
22#include <linux/seccomp.h> 22#include <linux/seccomp.h>
23#include <linux/signal.h> 23#include <linux/signal.h>
24#include <linux/ftrace.h>
25 24
26#include <asm/uaccess.h> 25#include <asm/uaccess.h>
27#include <asm/pgtable.h> 26#include <asm/pgtable.h>
@@ -35,6 +34,8 @@
35#include <asm/proto.h> 34#include <asm/proto.h>
36#include <asm/ds.h> 35#include <asm/ds.h>
37 36
37#include <trace/syscall.h>
38
38#include "tls.h" 39#include "tls.h"
39 40
40enum x86_regset { 41enum x86_regset {
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 2aef36d8aca2..1340dad417f4 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -224,6 +224,14 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
224 DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"), 224 DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
225 }, 225 },
226 }, 226 },
227 { /* Handle problems with rebooting on Dell DXP061 */
228 .callback = set_bios_reboot,
229 .ident = "Dell DXP061",
230 .matches = {
231 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
232 DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061"),
233 },
234 },
227 { } 235 { }
228}; 236};
229 237
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
index deb5ebb32c3b..ed0c33761e6d 100644
--- a/arch/x86/kernel/tlb_uv.c
+++ b/arch/x86/kernel/tlb_uv.c
@@ -25,6 +25,8 @@ static int uv_bau_retry_limit __read_mostly;
25 25
26/* position of pnode (which is nasid>>1): */ 26/* position of pnode (which is nasid>>1): */
27static int uv_nshift __read_mostly; 27static int uv_nshift __read_mostly;
28/* base pnode in this partition */
29static int uv_partition_base_pnode __read_mostly;
28 30
29static unsigned long uv_mmask __read_mostly; 31static unsigned long uv_mmask __read_mostly;
30 32
@@ -32,6 +34,34 @@ static DEFINE_PER_CPU(struct ptc_stats, ptcstats);
32static DEFINE_PER_CPU(struct bau_control, bau_control); 34static DEFINE_PER_CPU(struct bau_control, bau_control);
33 35
34/* 36/*
37 * Determine the first node on a blade.
38 */
39static int __init blade_to_first_node(int blade)
40{
41 int node, b;
42
43 for_each_online_node(node) {
44 b = uv_node_to_blade_id(node);
45 if (blade == b)
46 return node;
47 }
48 return -1; /* shouldn't happen */
49}
50
51/*
52 * Determine the apicid of the first cpu on a blade.
53 */
54static int __init blade_to_first_apicid(int blade)
55{
56 int cpu;
57
58 for_each_present_cpu(cpu)
59 if (blade == uv_cpu_to_blade_id(cpu))
60 return per_cpu(x86_cpu_to_apicid, cpu);
61 return -1;
62}
63
64/*
35 * Free a software acknowledge hardware resource by clearing its Pending 65 * Free a software acknowledge hardware resource by clearing its Pending
36 * bit. This will return a reply to the sender. 66 * bit. This will return a reply to the sender.
37 * If the message has timed out, a reply has already been sent by the 67 * If the message has timed out, a reply has already been sent by the
@@ -67,7 +97,7 @@ static void uv_bau_process_message(struct bau_payload_queue_entry *msg,
67 msp = __get_cpu_var(bau_control).msg_statuses + msg_slot; 97 msp = __get_cpu_var(bau_control).msg_statuses + msg_slot;
68 cpu = uv_blade_processor_id(); 98 cpu = uv_blade_processor_id();
69 msg->number_of_cpus = 99 msg->number_of_cpus =
70 uv_blade_nr_online_cpus(uv_node_to_blade_id(numa_node_id())); 100 uv_blade_nr_online_cpus(uv_node_to_blade_id(numa_node_id()));
71 this_cpu_mask = 1UL << cpu; 101 this_cpu_mask = 1UL << cpu;
72 if (msp->seen_by.bits & this_cpu_mask) 102 if (msp->seen_by.bits & this_cpu_mask)
73 return; 103 return;
@@ -215,14 +245,14 @@ static int uv_wait_completion(struct bau_desc *bau_desc,
215 * Returns @flush_mask if some remote flushing remains to be done. The 245 * Returns @flush_mask if some remote flushing remains to be done. The
216 * mask will have some bits still set. 246 * mask will have some bits still set.
217 */ 247 */
218const struct cpumask *uv_flush_send_and_wait(int cpu, int this_blade, 248const struct cpumask *uv_flush_send_and_wait(int cpu, int this_pnode,
219 struct bau_desc *bau_desc, 249 struct bau_desc *bau_desc,
220 struct cpumask *flush_mask) 250 struct cpumask *flush_mask)
221{ 251{
222 int completion_status = 0; 252 int completion_status = 0;
223 int right_shift; 253 int right_shift;
224 int tries = 0; 254 int tries = 0;
225 int blade; 255 int pnode;
226 int bit; 256 int bit;
227 unsigned long mmr_offset; 257 unsigned long mmr_offset;
228 unsigned long index; 258 unsigned long index;
@@ -265,8 +295,8 @@ const struct cpumask *uv_flush_send_and_wait(int cpu, int this_blade,
265 * use the IPI method of shootdown on them. 295 * use the IPI method of shootdown on them.
266 */ 296 */
267 for_each_cpu(bit, flush_mask) { 297 for_each_cpu(bit, flush_mask) {
268 blade = uv_cpu_to_blade_id(bit); 298 pnode = uv_cpu_to_pnode(bit);
269 if (blade == this_blade) 299 if (pnode == this_pnode)
270 continue; 300 continue;
271 cpumask_clear_cpu(bit, flush_mask); 301 cpumask_clear_cpu(bit, flush_mask);
272 } 302 }
@@ -309,16 +339,16 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
309 struct cpumask *flush_mask = __get_cpu_var(uv_flush_tlb_mask); 339 struct cpumask *flush_mask = __get_cpu_var(uv_flush_tlb_mask);
310 int i; 340 int i;
311 int bit; 341 int bit;
312 int blade; 342 int pnode;
313 int uv_cpu; 343 int uv_cpu;
314 int this_blade; 344 int this_pnode;
315 int locals = 0; 345 int locals = 0;
316 struct bau_desc *bau_desc; 346 struct bau_desc *bau_desc;
317 347
318 cpumask_andnot(flush_mask, cpumask, cpumask_of(cpu)); 348 cpumask_andnot(flush_mask, cpumask, cpumask_of(cpu));
319 349
320 uv_cpu = uv_blade_processor_id(); 350 uv_cpu = uv_blade_processor_id();
321 this_blade = uv_numa_blade_id(); 351 this_pnode = uv_hub_info->pnode;
322 bau_desc = __get_cpu_var(bau_control).descriptor_base; 352 bau_desc = __get_cpu_var(bau_control).descriptor_base;
323 bau_desc += UV_ITEMS_PER_DESCRIPTOR * uv_cpu; 353 bau_desc += UV_ITEMS_PER_DESCRIPTOR * uv_cpu;
324 354
@@ -326,13 +356,14 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
326 356
327 i = 0; 357 i = 0;
328 for_each_cpu(bit, flush_mask) { 358 for_each_cpu(bit, flush_mask) {
329 blade = uv_cpu_to_blade_id(bit); 359 pnode = uv_cpu_to_pnode(bit);
330 BUG_ON(blade > (UV_DISTRIBUTION_SIZE - 1)); 360 BUG_ON(pnode > (UV_DISTRIBUTION_SIZE - 1));
331 if (blade == this_blade) { 361 if (pnode == this_pnode) {
332 locals++; 362 locals++;
333 continue; 363 continue;
334 } 364 }
335 bau_node_set(blade, &bau_desc->distribution); 365 bau_node_set(pnode - uv_partition_base_pnode,
366 &bau_desc->distribution);
336 i++; 367 i++;
337 } 368 }
338 if (i == 0) { 369 if (i == 0) {
@@ -350,7 +381,7 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
350 bau_desc->payload.address = va; 381 bau_desc->payload.address = va;
351 bau_desc->payload.sending_cpu = cpu; 382 bau_desc->payload.sending_cpu = cpu;
352 383
353 return uv_flush_send_and_wait(uv_cpu, this_blade, bau_desc, flush_mask); 384 return uv_flush_send_and_wait(uv_cpu, this_pnode, bau_desc, flush_mask);
354} 385}
355 386
356/* 387/*
@@ -418,24 +449,58 @@ void uv_bau_message_interrupt(struct pt_regs *regs)
418 set_irq_regs(old_regs); 449 set_irq_regs(old_regs);
419} 450}
420 451
452/*
453 * uv_enable_timeouts
454 *
455 * Each target blade (i.e. blades that have cpu's) needs to have
456 * shootdown message timeouts enabled. The timeout does not cause
457 * an interrupt, but causes an error message to be returned to
458 * the sender.
459 */
421static void uv_enable_timeouts(void) 460static void uv_enable_timeouts(void)
422{ 461{
423 int i;
424 int blade; 462 int blade;
425 int last_blade; 463 int nblades;
426 int pnode; 464 int pnode;
427 int cur_cpu = 0; 465 unsigned long mmr_image;
428 unsigned long apicid;
429 466
430 last_blade = -1; 467 nblades = uv_num_possible_blades();
431 for_each_online_node(i) { 468
432 blade = uv_node_to_blade_id(i); 469 for (blade = 0; blade < nblades; blade++) {
433 if (blade == last_blade) 470 if (!uv_blade_nr_possible_cpus(blade))
434 continue; 471 continue;
435 last_blade = blade; 472
436 apicid = per_cpu(x86_cpu_to_apicid, cur_cpu);
437 pnode = uv_blade_to_pnode(blade); 473 pnode = uv_blade_to_pnode(blade);
438 cur_cpu += uv_blade_nr_possible_cpus(i); 474 mmr_image =
475 uv_read_global_mmr64(pnode, UVH_LB_BAU_MISC_CONTROL);
476 /*
477 * Set the timeout period and then lock it in, in three
478 * steps; captures and locks in the period.
479 *
480 * To program the period, the SOFT_ACK_MODE must be off.
481 */
482 mmr_image &= ~((unsigned long)1 <<
483 UV_ENABLE_INTD_SOFT_ACK_MODE_SHIFT);
484 uv_write_global_mmr64
485 (pnode, UVH_LB_BAU_MISC_CONTROL, mmr_image);
486 /*
487 * Set the 4-bit period.
488 */
489 mmr_image &= ~((unsigned long)0xf <<
490 UV_INTD_SOFT_ACK_TIMEOUT_PERIOD_SHIFT);
491 mmr_image |= (UV_INTD_SOFT_ACK_TIMEOUT_PERIOD <<
492 UV_INTD_SOFT_ACK_TIMEOUT_PERIOD_SHIFT);
493 uv_write_global_mmr64
494 (pnode, UVH_LB_BAU_MISC_CONTROL, mmr_image);
495 /*
496 * Subsequent reversals of the timebase bit (3) cause an
497 * immediate timeout of one or all INTD resources as
498 * indicated in bits 2:0 (7 causes all of them to timeout).
499 */
500 mmr_image |= ((unsigned long)1 <<
501 UV_ENABLE_INTD_SOFT_ACK_MODE_SHIFT);
502 uv_write_global_mmr64
503 (pnode, UVH_LB_BAU_MISC_CONTROL, mmr_image);
439 } 504 }
440} 505}
441 506
@@ -482,8 +547,7 @@ static int uv_ptc_seq_show(struct seq_file *file, void *data)
482 stat->requestee, stat->onetlb, stat->alltlb, 547 stat->requestee, stat->onetlb, stat->alltlb,
483 stat->s_retry, stat->d_retry, stat->ptc_i); 548 stat->s_retry, stat->d_retry, stat->ptc_i);
484 seq_printf(file, "%lx %ld %ld %ld %ld %ld %ld\n", 549 seq_printf(file, "%lx %ld %ld %ld %ld %ld %ld\n",
485 uv_read_global_mmr64(uv_blade_to_pnode 550 uv_read_global_mmr64(uv_cpu_to_pnode(cpu),
486 (uv_cpu_to_blade_id(cpu)),
487 UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE), 551 UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE),
488 stat->sflush, stat->dflush, 552 stat->sflush, stat->dflush,
489 stat->retriesok, stat->nomsg, 553 stat->retriesok, stat->nomsg,
@@ -617,16 +681,18 @@ static struct bau_control * __init uv_table_bases_init(int blade, int node)
617 * finish the initialization of the per-blade control structures 681 * finish the initialization of the per-blade control structures
618 */ 682 */
619static void __init 683static void __init
620uv_table_bases_finish(int blade, int node, int cur_cpu, 684uv_table_bases_finish(int blade,
621 struct bau_control *bau_tablesp, 685 struct bau_control *bau_tablesp,
622 struct bau_desc *adp) 686 struct bau_desc *adp)
623{ 687{
624 struct bau_control *bcp; 688 struct bau_control *bcp;
625 int i; 689 int cpu;
626 690
627 for (i = cur_cpu; i < cur_cpu + uv_blade_nr_possible_cpus(blade); i++) { 691 for_each_present_cpu(cpu) {
628 bcp = (struct bau_control *)&per_cpu(bau_control, i); 692 if (blade != uv_cpu_to_blade_id(cpu))
693 continue;
629 694
695 bcp = (struct bau_control *)&per_cpu(bau_control, cpu);
630 bcp->bau_msg_head = bau_tablesp->va_queue_first; 696 bcp->bau_msg_head = bau_tablesp->va_queue_first;
631 bcp->va_queue_first = bau_tablesp->va_queue_first; 697 bcp->va_queue_first = bau_tablesp->va_queue_first;
632 bcp->va_queue_last = bau_tablesp->va_queue_last; 698 bcp->va_queue_last = bau_tablesp->va_queue_last;
@@ -649,11 +715,10 @@ uv_activation_descriptor_init(int node, int pnode)
649 struct bau_desc *adp; 715 struct bau_desc *adp;
650 struct bau_desc *ad2; 716 struct bau_desc *ad2;
651 717
652 adp = (struct bau_desc *) 718 adp = (struct bau_desc *)kmalloc_node(16384, GFP_KERNEL, node);
653 kmalloc_node(16384, GFP_KERNEL, node);
654 BUG_ON(!adp); 719 BUG_ON(!adp);
655 720
656 pa = __pa((unsigned long)adp); 721 pa = uv_gpa(adp); /* need the real nasid*/
657 n = pa >> uv_nshift; 722 n = pa >> uv_nshift;
658 m = pa & uv_mmask; 723 m = pa & uv_mmask;
659 724
@@ -667,8 +732,12 @@ uv_activation_descriptor_init(int node, int pnode)
667 for (i = 0, ad2 = adp; i < UV_ACTIVATION_DESCRIPTOR_SIZE; i++, ad2++) { 732 for (i = 0, ad2 = adp; i < UV_ACTIVATION_DESCRIPTOR_SIZE; i++, ad2++) {
668 memset(ad2, 0, sizeof(struct bau_desc)); 733 memset(ad2, 0, sizeof(struct bau_desc));
669 ad2->header.sw_ack_flag = 1; 734 ad2->header.sw_ack_flag = 1;
670 ad2->header.base_dest_nodeid = 735 /*
671 uv_blade_to_pnode(uv_cpu_to_blade_id(0)); 736 * base_dest_nodeid is the first node in the partition, so
737 * the bit map will indicate partition-relative node numbers.
738 * note that base_dest_nodeid is actually a nasid.
739 */
740 ad2->header.base_dest_nodeid = uv_partition_base_pnode << 1;
672 ad2->header.command = UV_NET_ENDPOINT_INTD; 741 ad2->header.command = UV_NET_ENDPOINT_INTD;
673 ad2->header.int_both = 1; 742 ad2->header.int_both = 1;
674 /* 743 /*
@@ -686,6 +755,8 @@ static struct bau_payload_queue_entry * __init
686uv_payload_queue_init(int node, int pnode, struct bau_control *bau_tablesp) 755uv_payload_queue_init(int node, int pnode, struct bau_control *bau_tablesp)
687{ 756{
688 struct bau_payload_queue_entry *pqp; 757 struct bau_payload_queue_entry *pqp;
758 unsigned long pa;
759 int pn;
689 char *cp; 760 char *cp;
690 761
691 pqp = (struct bau_payload_queue_entry *) kmalloc_node( 762 pqp = (struct bau_payload_queue_entry *) kmalloc_node(
@@ -696,10 +767,14 @@ uv_payload_queue_init(int node, int pnode, struct bau_control *bau_tablesp)
696 cp = (char *)pqp + 31; 767 cp = (char *)pqp + 31;
697 pqp = (struct bau_payload_queue_entry *)(((unsigned long)cp >> 5) << 5); 768 pqp = (struct bau_payload_queue_entry *)(((unsigned long)cp >> 5) << 5);
698 bau_tablesp->va_queue_first = pqp; 769 bau_tablesp->va_queue_first = pqp;
770 /*
771 * need the pnode of where the memory was really allocated
772 */
773 pa = uv_gpa(pqp);
774 pn = pa >> uv_nshift;
699 uv_write_global_mmr64(pnode, 775 uv_write_global_mmr64(pnode,
700 UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST, 776 UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST,
701 ((unsigned long)pnode << 777 ((unsigned long)pn << UV_PAYLOADQ_PNODE_SHIFT) |
702 UV_PAYLOADQ_PNODE_SHIFT) |
703 uv_physnodeaddr(pqp)); 778 uv_physnodeaddr(pqp));
704 uv_write_global_mmr64(pnode, UVH_LB_BAU_INTD_PAYLOAD_QUEUE_TAIL, 779 uv_write_global_mmr64(pnode, UVH_LB_BAU_INTD_PAYLOAD_QUEUE_TAIL,
705 uv_physnodeaddr(pqp)); 780 uv_physnodeaddr(pqp));
@@ -715,8 +790,9 @@ uv_payload_queue_init(int node, int pnode, struct bau_control *bau_tablesp)
715/* 790/*
716 * Initialization of each UV blade's structures 791 * Initialization of each UV blade's structures
717 */ 792 */
718static int __init uv_init_blade(int blade, int node, int cur_cpu) 793static int __init uv_init_blade(int blade)
719{ 794{
795 int node;
720 int pnode; 796 int pnode;
721 unsigned long pa; 797 unsigned long pa;
722 unsigned long apicid; 798 unsigned long apicid;
@@ -724,16 +800,17 @@ static int __init uv_init_blade(int blade, int node, int cur_cpu)
724 struct bau_payload_queue_entry *pqp; 800 struct bau_payload_queue_entry *pqp;
725 struct bau_control *bau_tablesp; 801 struct bau_control *bau_tablesp;
726 802
803 node = blade_to_first_node(blade);
727 bau_tablesp = uv_table_bases_init(blade, node); 804 bau_tablesp = uv_table_bases_init(blade, node);
728 pnode = uv_blade_to_pnode(blade); 805 pnode = uv_blade_to_pnode(blade);
729 adp = uv_activation_descriptor_init(node, pnode); 806 adp = uv_activation_descriptor_init(node, pnode);
730 pqp = uv_payload_queue_init(node, pnode, bau_tablesp); 807 pqp = uv_payload_queue_init(node, pnode, bau_tablesp);
731 uv_table_bases_finish(blade, node, cur_cpu, bau_tablesp, adp); 808 uv_table_bases_finish(blade, bau_tablesp, adp);
732 /* 809 /*
733 * the below initialization can't be in firmware because the 810 * the below initialization can't be in firmware because the
734 * messaging IRQ will be determined by the OS 811 * messaging IRQ will be determined by the OS
735 */ 812 */
736 apicid = per_cpu(x86_cpu_to_apicid, cur_cpu); 813 apicid = blade_to_first_apicid(blade);
737 pa = uv_read_global_mmr64(pnode, UVH_BAU_DATA_CONFIG); 814 pa = uv_read_global_mmr64(pnode, UVH_BAU_DATA_CONFIG);
738 if ((pa & 0xff) != UV_BAU_MESSAGE) { 815 if ((pa & 0xff) != UV_BAU_MESSAGE) {
739 uv_write_global_mmr64(pnode, UVH_BAU_DATA_CONFIG, 816 uv_write_global_mmr64(pnode, UVH_BAU_DATA_CONFIG,
@@ -748,9 +825,7 @@ static int __init uv_init_blade(int blade, int node, int cur_cpu)
748static int __init uv_bau_init(void) 825static int __init uv_bau_init(void)
749{ 826{
750 int blade; 827 int blade;
751 int node;
752 int nblades; 828 int nblades;
753 int last_blade;
754 int cur_cpu; 829 int cur_cpu;
755 830
756 if (!is_uv_system()) 831 if (!is_uv_system())
@@ -763,29 +838,21 @@ static int __init uv_bau_init(void)
763 uv_bau_retry_limit = 1; 838 uv_bau_retry_limit = 1;
764 uv_nshift = uv_hub_info->n_val; 839 uv_nshift = uv_hub_info->n_val;
765 uv_mmask = (1UL << uv_hub_info->n_val) - 1; 840 uv_mmask = (1UL << uv_hub_info->n_val) - 1;
766 nblades = 0; 841 nblades = uv_num_possible_blades();
767 last_blade = -1; 842
768 cur_cpu = 0;
769 for_each_online_node(node) {
770 blade = uv_node_to_blade_id(node);
771 if (blade == last_blade)
772 continue;
773 last_blade = blade;
774 nblades++;
775 }
776 uv_bau_table_bases = (struct bau_control **) 843 uv_bau_table_bases = (struct bau_control **)
777 kmalloc(nblades * sizeof(struct bau_control *), GFP_KERNEL); 844 kmalloc(nblades * sizeof(struct bau_control *), GFP_KERNEL);
778 BUG_ON(!uv_bau_table_bases); 845 BUG_ON(!uv_bau_table_bases);
779 846
780 last_blade = -1; 847 uv_partition_base_pnode = 0x7fffffff;
781 for_each_online_node(node) { 848 for (blade = 0; blade < nblades; blade++)
782 blade = uv_node_to_blade_id(node); 849 if (uv_blade_nr_possible_cpus(blade) &&
783 if (blade == last_blade) 850 (uv_blade_to_pnode(blade) < uv_partition_base_pnode))
784 continue; 851 uv_partition_base_pnode = uv_blade_to_pnode(blade);
785 last_blade = blade; 852 for (blade = 0; blade < nblades; blade++)
786 uv_init_blade(blade, node, cur_cpu); 853 if (uv_blade_nr_possible_cpus(blade))
787 cur_cpu += uv_blade_nr_possible_cpus(blade); 854 uv_init_blade(blade);
788 } 855
789 alloc_intr_gate(UV_BAU_MESSAGE, uv_bau_message_intr1); 856 alloc_intr_gate(UV_BAU_MESSAGE, uv_bau_message_intr1);
790 uv_enable_timeouts(); 857 uv_enable_timeouts();
791 858
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 7a567ebe6361..d57de05dc430 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -699,7 +699,7 @@ static struct clocksource clocksource_tsc;
699 * code, which is necessary to support wrapping clocksources like pm 699 * code, which is necessary to support wrapping clocksources like pm
700 * timer. 700 * timer.
701 */ 701 */
702static cycle_t read_tsc(void) 702static cycle_t read_tsc(struct clocksource *cs)
703{ 703{
704 cycle_t ret = (cycle_t)get_cycles(); 704 cycle_t ret = (cycle_t)get_cycles();
705 705
diff --git a/arch/x86/kernel/uv_sysfs.c b/arch/x86/kernel/uv_sysfs.c
index 67f9b9dbf800..36afb98675a4 100644
--- a/arch/x86/kernel/uv_sysfs.c
+++ b/arch/x86/kernel/uv_sysfs.c
@@ -21,6 +21,7 @@
21 21
22#include <linux/sysdev.h> 22#include <linux/sysdev.h>
23#include <asm/uv/bios.h> 23#include <asm/uv/bios.h>
24#include <asm/uv/uv.h>
24 25
25struct kobject *sgi_uv_kobj; 26struct kobject *sgi_uv_kobj;
26 27
@@ -47,6 +48,9 @@ static int __init sgi_uv_sysfs_init(void)
47{ 48{
48 unsigned long ret; 49 unsigned long ret;
49 50
51 if (!is_uv_system())
52 return -ENODEV;
53
50 if (!sgi_uv_kobj) 54 if (!sgi_uv_kobj)
51 sgi_uv_kobj = kobject_create_and_add("sgi_uv", firmware_kobj); 55 sgi_uv_kobj = kobject_create_and_add("sgi_uv", firmware_kobj);
52 if (!sgi_uv_kobj) { 56 if (!sgi_uv_kobj) {
diff --git a/arch/x86/kernel/vmiclock_32.c b/arch/x86/kernel/vmiclock_32.c
index d303369a7bad..2b3eb82efeeb 100644
--- a/arch/x86/kernel/vmiclock_32.c
+++ b/arch/x86/kernel/vmiclock_32.c
@@ -283,7 +283,7 @@ void __devinit vmi_time_ap_init(void)
283/** vmi clocksource */ 283/** vmi clocksource */
284static struct clocksource clocksource_vmi; 284static struct clocksource clocksource_vmi;
285 285
286static cycle_t read_real_cycles(void) 286static cycle_t read_real_cycles(struct clocksource *cs)
287{ 287{
288 cycle_t ret = (cycle_t)vmi_timer_ops.get_cycle_counter(VMI_CYCLES_REAL); 288 cycle_t ret = (cycle_t)vmi_timer_ops.get_cycle_counter(VMI_CYCLES_REAL);
289 return max(ret, clocksource_vmi.cycle_last); 289 return max(ret, clocksource_vmi.cycle_last);
diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
index 2b54fe002e94..0a5b04aa98f1 100644
--- a/arch/x86/kernel/xsave.c
+++ b/arch/x86/kernel/xsave.c
@@ -324,7 +324,7 @@ void __ref xsave_cntxt_init(void)
324 } 324 }
325 325
326 /* 326 /*
327 * for now OS knows only about FP/SSE 327 * Support only the state known to OS.
328 */ 328 */
329 pcntxt_mask = pcntxt_mask & XCNTXT_MASK; 329 pcntxt_mask = pcntxt_mask & XCNTXT_MASK;
330 xsave_init(); 330 xsave_init();
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 2a36f7f7c4c7..b6caf1329b1b 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1248,7 +1248,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,
1248 pgprintk("%s: adding gfn %lx role %x\n", __func__, gfn, role.word); 1248 pgprintk("%s: adding gfn %lx role %x\n", __func__, gfn, role.word);
1249 sp->gfn = gfn; 1249 sp->gfn = gfn;
1250 sp->role = role; 1250 sp->role = role;
1251 sp->global = role.cr4_pge; 1251 sp->global = 0;
1252 hlist_add_head(&sp->hash_link, bucket); 1252 hlist_add_head(&sp->hash_link, bucket);
1253 if (!direct) { 1253 if (!direct) {
1254 if (rmap_write_protect(vcpu->kvm, gfn)) 1254 if (rmap_write_protect(vcpu->kvm, gfn))
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 8ca100a9ecac..7c1ce5ac6131 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2775,6 +2775,9 @@ out:
2775 2775
2776void kvm_arch_exit(void) 2776void kvm_arch_exit(void)
2777{ 2777{
2778 if (!boot_cpu_has(X86_FEATURE_CONSTANT_TSC))
2779 cpufreq_unregister_notifier(&kvmclock_cpufreq_notifier_block,
2780 CPUFREQ_TRANSITION_NOTIFIER);
2778 kvm_x86_ops = NULL; 2781 kvm_x86_ops = NULL;
2779 kvm_mmu_module_exit(); 2782 kvm_mmu_module_exit();
2780} 2783}
@@ -4159,6 +4162,11 @@ EXPORT_SYMBOL_GPL(kvm_put_guest_fpu);
4159 4162
4160void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu) 4163void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)
4161{ 4164{
4165 if (vcpu->arch.time_page) {
4166 kvm_release_page_dirty(vcpu->arch.time_page);
4167 vcpu->arch.time_page = NULL;
4168 }
4169
4162 kvm_x86_ops->vcpu_free(vcpu); 4170 kvm_x86_ops->vcpu_free(vcpu);
4163} 4171}
4164 4172
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index e94a11e42f98..ca7ec44bafc3 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -273,15 +273,15 @@ static void lguest_load_idt(const struct desc_ptr *desc)
273 * controls the entire thing and the Guest asks it to make changes using the 273 * controls the entire thing and the Guest asks it to make changes using the
274 * LOAD_GDT hypercall. 274 * LOAD_GDT hypercall.
275 * 275 *
276 * This is the opposite of the IDT code where we have a LOAD_IDT_ENTRY 276 * This is the exactly like the IDT code.
277 * hypercall and use that repeatedly to load a new IDT. I don't think it
278 * really matters, but wouldn't it be nice if they were the same? Wouldn't
279 * it be even better if you were the one to send the patch to fix it?
280 */ 277 */
281static void lguest_load_gdt(const struct desc_ptr *desc) 278static void lguest_load_gdt(const struct desc_ptr *desc)
282{ 279{
283 BUG_ON((desc->size + 1) / 8 != GDT_ENTRIES); 280 unsigned int i;
284 kvm_hypercall2(LHCALL_LOAD_GDT, __pa(desc->address), GDT_ENTRIES); 281 struct desc_struct *gdt = (void *)desc->address;
282
283 for (i = 0; i < (desc->size+1)/8; i++)
284 kvm_hypercall3(LHCALL_LOAD_GDT_ENTRY, i, gdt[i].a, gdt[i].b);
285} 285}
286 286
287/* For a single GDT entry which changes, we do the lazy thing: alter our GDT, 287/* For a single GDT entry which changes, we do the lazy thing: alter our GDT,
@@ -291,7 +291,9 @@ static void lguest_write_gdt_entry(struct desc_struct *dt, int entrynum,
291 const void *desc, int type) 291 const void *desc, int type)
292{ 292{
293 native_write_gdt_entry(dt, entrynum, desc, type); 293 native_write_gdt_entry(dt, entrynum, desc, type);
294 kvm_hypercall2(LHCALL_LOAD_GDT, __pa(dt), GDT_ENTRIES); 294 /* Tell Host about this new entry. */
295 kvm_hypercall3(LHCALL_LOAD_GDT_ENTRY, entrynum,
296 dt[entrynum].a, dt[entrynum].b);
295} 297}
296 298
297/* OK, I lied. There are three "thread local storage" GDT entries which change 299/* OK, I lied. There are three "thread local storage" GDT entries which change
@@ -661,7 +663,7 @@ static unsigned long lguest_tsc_khz(void)
661 663
662/* If we can't use the TSC, the kernel falls back to our lower-priority 664/* If we can't use the TSC, the kernel falls back to our lower-priority
663 * "lguest_clock", where we read the time value given to us by the Host. */ 665 * "lguest_clock", where we read the time value given to us by the Host. */
664static cycle_t lguest_clock_read(void) 666static cycle_t lguest_clock_read(struct clocksource *cs)
665{ 667{
666 unsigned long sec, nsec; 668 unsigned long sec, nsec;
667 669
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
index be54176e9eb2..6340cef6798a 100644
--- a/arch/x86/mm/gup.c
+++ b/arch/x86/mm/gup.c
@@ -219,6 +219,22 @@ static int gup_pud_range(pgd_t pgd, unsigned long addr, unsigned long end,
219 return 1; 219 return 1;
220} 220}
221 221
222/**
223 * get_user_pages_fast() - pin user pages in memory
224 * @start: starting user address
225 * @nr_pages: number of pages from start to pin
226 * @write: whether pages will be written to
227 * @pages: array that receives pointers to the pages pinned.
228 * Should be at least nr_pages long.
229 *
230 * Attempt to pin user pages in memory without taking mm->mmap_sem.
231 * If not successful, it will fall back to taking the lock and
232 * calling get_user_pages().
233 *
234 * Returns number of pages pinned. This may be fewer than the number
235 * requested. If nr_pages is 0 or negative, returns 0. If no pages
236 * were pinned, returns -errno.
237 */
222int get_user_pages_fast(unsigned long start, int nr_pages, int write, 238int get_user_pages_fast(unsigned long start, int nr_pages, int write,
223 struct page **pages) 239 struct page **pages)
224{ 240{
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 0dfa09d69e80..8a450930834f 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -280,15 +280,16 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
280 return NULL; 280 return NULL;
281 area->phys_addr = phys_addr; 281 area->phys_addr = phys_addr;
282 vaddr = (unsigned long) area->addr; 282 vaddr = (unsigned long) area->addr;
283 if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { 283
284 if (kernel_map_sync_memtype(phys_addr, size, prot_val)) {
284 free_memtype(phys_addr, phys_addr + size); 285 free_memtype(phys_addr, phys_addr + size);
285 free_vm_area(area); 286 free_vm_area(area);
286 return NULL; 287 return NULL;
287 } 288 }
288 289
289 if (ioremap_change_attr(vaddr, size, prot_val) < 0) { 290 if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) {
290 free_memtype(phys_addr, phys_addr + size); 291 free_memtype(phys_addr, phys_addr + size);
291 vunmap(area->addr); 292 free_vm_area(area);
292 return NULL; 293 return NULL;
293 } 294 }
294 295
@@ -374,7 +375,8 @@ static void __iomem *ioremap_default(resource_size_t phys_addr,
374 * - UC_MINUS for non-WB-able memory with no other conflicting mappings 375 * - UC_MINUS for non-WB-able memory with no other conflicting mappings
375 * - Inherit from confliting mappings otherwise 376 * - Inherit from confliting mappings otherwise
376 */ 377 */
377 err = reserve_memtype(phys_addr, phys_addr + size, -1, &flags); 378 err = reserve_memtype(phys_addr, phys_addr + size,
379 _PAGE_CACHE_WB, &flags);
378 if (err < 0) 380 if (err < 0)
379 return NULL; 381 return NULL;
380 382
@@ -547,7 +549,7 @@ void __init early_ioremap_reset(void)
547} 549}
548 550
549static void __init __early_set_fixmap(enum fixed_addresses idx, 551static void __init __early_set_fixmap(enum fixed_addresses idx,
550 unsigned long phys, pgprot_t flags) 552 phys_addr_t phys, pgprot_t flags)
551{ 553{
552 unsigned long addr = __fix_to_virt(idx); 554 unsigned long addr = __fix_to_virt(idx);
553 pte_t *pte; 555 pte_t *pte;
@@ -566,7 +568,7 @@ static void __init __early_set_fixmap(enum fixed_addresses idx,
566} 568}
567 569
568static inline void __init early_set_fixmap(enum fixed_addresses idx, 570static inline void __init early_set_fixmap(enum fixed_addresses idx,
569 unsigned long phys, pgprot_t prot) 571 phys_addr_t phys, pgprot_t prot)
570{ 572{
571 if (after_paging_init) 573 if (after_paging_init)
572 __set_fixmap(idx, phys, prot); 574 __set_fixmap(idx, phys, prot);
@@ -607,9 +609,10 @@ static int __init check_early_ioremap_leak(void)
607late_initcall(check_early_ioremap_leak); 609late_initcall(check_early_ioremap_leak);
608 610
609static void __init __iomem * 611static void __init __iomem *
610__early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot) 612__early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
611{ 613{
612 unsigned long offset, last_addr; 614 unsigned long offset;
615 resource_size_t last_addr;
613 unsigned int nrpages; 616 unsigned int nrpages;
614 enum fixed_addresses idx0, idx; 617 enum fixed_addresses idx0, idx;
615 int i, slot; 618 int i, slot;
@@ -625,15 +628,15 @@ __early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
625 } 628 }
626 629
627 if (slot < 0) { 630 if (slot < 0) {
628 printk(KERN_INFO "early_iomap(%08lx, %08lx) not found slot\n", 631 printk(KERN_INFO "early_iomap(%08llx, %08lx) not found slot\n",
629 phys_addr, size); 632 (u64)phys_addr, size);
630 WARN_ON(1); 633 WARN_ON(1);
631 return NULL; 634 return NULL;
632 } 635 }
633 636
634 if (early_ioremap_debug) { 637 if (early_ioremap_debug) {
635 printk(KERN_INFO "early_ioremap(%08lx, %08lx) [%d] => ", 638 printk(KERN_INFO "early_ioremap(%08llx, %08lx) [%d] => ",
636 phys_addr, size, slot); 639 (u64)phys_addr, size, slot);
637 dump_stack(); 640 dump_stack();
638 } 641 }
639 642
@@ -680,13 +683,15 @@ __early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
680} 683}
681 684
682/* Remap an IO device */ 685/* Remap an IO device */
683void __init __iomem *early_ioremap(unsigned long phys_addr, unsigned long size) 686void __init __iomem *
687early_ioremap(resource_size_t phys_addr, unsigned long size)
684{ 688{
685 return __early_ioremap(phys_addr, size, PAGE_KERNEL_IO); 689 return __early_ioremap(phys_addr, size, PAGE_KERNEL_IO);
686} 690}
687 691
688/* Remap memory */ 692/* Remap memory */
689void __init __iomem *early_memremap(unsigned long phys_addr, unsigned long size) 693void __init __iomem *
694early_memremap(resource_size_t phys_addr, unsigned long size)
690{ 695{
691 return __early_ioremap(phys_addr, size, PAGE_KERNEL); 696 return __early_ioremap(phys_addr, size, PAGE_KERNEL);
692} 697}
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index d71e1b636ce6..797f9f107cb6 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -945,71 +945,94 @@ int _set_memory_uc(unsigned long addr, int numpages)
945 945
946int set_memory_uc(unsigned long addr, int numpages) 946int set_memory_uc(unsigned long addr, int numpages)
947{ 947{
948 int ret;
949
948 /* 950 /*
949 * for now UC MINUS. see comments in ioremap_nocache() 951 * for now UC MINUS. see comments in ioremap_nocache()
950 */ 952 */
951 if (reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, 953 ret = reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE,
952 _PAGE_CACHE_UC_MINUS, NULL)) 954 _PAGE_CACHE_UC_MINUS, NULL);
953 return -EINVAL; 955 if (ret)
956 goto out_err;
957
958 ret = _set_memory_uc(addr, numpages);
959 if (ret)
960 goto out_free;
954 961
955 return _set_memory_uc(addr, numpages); 962 return 0;
963
964out_free:
965 free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE);
966out_err:
967 return ret;
956} 968}
957EXPORT_SYMBOL(set_memory_uc); 969EXPORT_SYMBOL(set_memory_uc);
958 970
959int set_memory_array_uc(unsigned long *addr, int addrinarray) 971int set_memory_array_uc(unsigned long *addr, int addrinarray)
960{ 972{
961 unsigned long start; 973 int i, j;
962 unsigned long end; 974 int ret;
963 int i; 975
964 /* 976 /*
965 * for now UC MINUS. see comments in ioremap_nocache() 977 * for now UC MINUS. see comments in ioremap_nocache()
966 */ 978 */
967 for (i = 0; i < addrinarray; i++) { 979 for (i = 0; i < addrinarray; i++) {
968 start = __pa(addr[i]); 980 ret = reserve_memtype(__pa(addr[i]), __pa(addr[i]) + PAGE_SIZE,
969 for (end = start + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) { 981 _PAGE_CACHE_UC_MINUS, NULL);
970 if (end != __pa(addr[i + 1])) 982 if (ret)
971 break; 983 goto out_free;
972 i++;
973 }
974 if (reserve_memtype(start, end, _PAGE_CACHE_UC_MINUS, NULL))
975 goto out;
976 } 984 }
977 985
978 return change_page_attr_set(addr, addrinarray, 986 ret = change_page_attr_set(addr, addrinarray,
979 __pgprot(_PAGE_CACHE_UC_MINUS), 1); 987 __pgprot(_PAGE_CACHE_UC_MINUS), 1);
980out: 988 if (ret)
981 for (i = 0; i < addrinarray; i++) { 989 goto out_free;
982 unsigned long tmp = __pa(addr[i]); 990
983 991 return 0;
984 if (tmp == start) 992
985 break; 993out_free:
986 for (end = tmp + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) { 994 for (j = 0; j < i; j++)
987 if (end != __pa(addr[i + 1])) 995 free_memtype(__pa(addr[j]), __pa(addr[j]) + PAGE_SIZE);
988 break; 996
989 i++; 997 return ret;
990 }
991 free_memtype(tmp, end);
992 }
993 return -EINVAL;
994} 998}
995EXPORT_SYMBOL(set_memory_array_uc); 999EXPORT_SYMBOL(set_memory_array_uc);
996 1000
997int _set_memory_wc(unsigned long addr, int numpages) 1001int _set_memory_wc(unsigned long addr, int numpages)
998{ 1002{
999 return change_page_attr_set(&addr, numpages, 1003 int ret;
1004 ret = change_page_attr_set(&addr, numpages,
1005 __pgprot(_PAGE_CACHE_UC_MINUS), 0);
1006
1007 if (!ret) {
1008 ret = change_page_attr_set(&addr, numpages,
1000 __pgprot(_PAGE_CACHE_WC), 0); 1009 __pgprot(_PAGE_CACHE_WC), 0);
1010 }
1011 return ret;
1001} 1012}
1002 1013
1003int set_memory_wc(unsigned long addr, int numpages) 1014int set_memory_wc(unsigned long addr, int numpages)
1004{ 1015{
1016 int ret;
1017
1005 if (!pat_enabled) 1018 if (!pat_enabled)
1006 return set_memory_uc(addr, numpages); 1019 return set_memory_uc(addr, numpages);
1007 1020
1008 if (reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, 1021 ret = reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE,
1009 _PAGE_CACHE_WC, NULL)) 1022 _PAGE_CACHE_WC, NULL);
1010 return -EINVAL; 1023 if (ret)
1024 goto out_err;
1025
1026 ret = _set_memory_wc(addr, numpages);
1027 if (ret)
1028 goto out_free;
1029
1030 return 0;
1011 1031
1012 return _set_memory_wc(addr, numpages); 1032out_free:
1033 free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE);
1034out_err:
1035 return ret;
1013} 1036}
1014EXPORT_SYMBOL(set_memory_wc); 1037EXPORT_SYMBOL(set_memory_wc);
1015 1038
@@ -1021,29 +1044,31 @@ int _set_memory_wb(unsigned long addr, int numpages)
1021 1044
1022int set_memory_wb(unsigned long addr, int numpages) 1045int set_memory_wb(unsigned long addr, int numpages)
1023{ 1046{
1024 free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE); 1047 int ret;
1048
1049 ret = _set_memory_wb(addr, numpages);
1050 if (ret)
1051 return ret;
1025 1052
1026 return _set_memory_wb(addr, numpages); 1053 free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE);
1054 return 0;
1027} 1055}
1028EXPORT_SYMBOL(set_memory_wb); 1056EXPORT_SYMBOL(set_memory_wb);
1029 1057
1030int set_memory_array_wb(unsigned long *addr, int addrinarray) 1058int set_memory_array_wb(unsigned long *addr, int addrinarray)
1031{ 1059{
1032 int i; 1060 int i;
1061 int ret;
1033 1062
1034 for (i = 0; i < addrinarray; i++) { 1063 ret = change_page_attr_clear(addr, addrinarray,
1035 unsigned long start = __pa(addr[i]);
1036 unsigned long end;
1037
1038 for (end = start + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) {
1039 if (end != __pa(addr[i + 1]))
1040 break;
1041 i++;
1042 }
1043 free_memtype(start, end);
1044 }
1045 return change_page_attr_clear(addr, addrinarray,
1046 __pgprot(_PAGE_CACHE_MASK), 1); 1064 __pgprot(_PAGE_CACHE_MASK), 1);
1065 if (ret)
1066 return ret;
1067
1068 for (i = 0; i < addrinarray; i++)
1069 free_memtype(__pa(addr[i]), __pa(addr[i]) + PAGE_SIZE);
1070
1071 return 0;
1047} 1072}
1048EXPORT_SYMBOL(set_memory_array_wb); 1073EXPORT_SYMBOL(set_memory_array_wb);
1049 1074
@@ -1136,6 +1161,8 @@ int set_pages_array_wb(struct page **pages, int addrinarray)
1136 1161
1137 retval = cpa_clear_pages_array(pages, addrinarray, 1162 retval = cpa_clear_pages_array(pages, addrinarray,
1138 __pgprot(_PAGE_CACHE_MASK)); 1163 __pgprot(_PAGE_CACHE_MASK));
1164 if (retval)
1165 return retval;
1139 1166
1140 for (i = 0; i < addrinarray; i++) { 1167 for (i = 0; i < addrinarray; i++) {
1141 start = (unsigned long)page_address(pages[i]); 1168 start = (unsigned long)page_address(pages[i]);
@@ -1143,7 +1170,7 @@ int set_pages_array_wb(struct page **pages, int addrinarray)
1143 free_memtype(start, end); 1170 free_memtype(start, end);
1144 } 1171 }
1145 1172
1146 return retval; 1173 return 0;
1147} 1174}
1148EXPORT_SYMBOL(set_pages_array_wb); 1175EXPORT_SYMBOL(set_pages_array_wb);
1149 1176
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index 640339ee4fb2..e6718bb28065 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -31,7 +31,7 @@
31#ifdef CONFIG_X86_PAT 31#ifdef CONFIG_X86_PAT
32int __read_mostly pat_enabled = 1; 32int __read_mostly pat_enabled = 1;
33 33
34void __cpuinit pat_disable(const char *reason) 34static inline void pat_disable(const char *reason)
35{ 35{
36 pat_enabled = 0; 36 pat_enabled = 0;
37 printk(KERN_INFO "%s\n", reason); 37 printk(KERN_INFO "%s\n", reason);
@@ -182,10 +182,10 @@ static unsigned long pat_x_mtrr_type(u64 start, u64 end, unsigned long req_type)
182 u8 mtrr_type; 182 u8 mtrr_type;
183 183
184 mtrr_type = mtrr_type_lookup(start, end); 184 mtrr_type = mtrr_type_lookup(start, end);
185 if (mtrr_type == MTRR_TYPE_UNCACHABLE) 185 if (mtrr_type != MTRR_TYPE_WRBACK)
186 return _PAGE_CACHE_UC; 186 return _PAGE_CACHE_UC_MINUS;
187 if (mtrr_type == MTRR_TYPE_WRCOMB) 187
188 return _PAGE_CACHE_WC; 188 return _PAGE_CACHE_WB;
189 } 189 }
190 190
191 return req_type; 191 return req_type;
@@ -352,23 +352,13 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type,
352 return 0; 352 return 0;
353 } 353 }
354 354
355 if (req_type == -1) { 355 /*
356 /* 356 * Call mtrr_lookup to get the type hint. This is an
357 * Call mtrr_lookup to get the type hint. This is an 357 * optimization for /dev/mem mmap'ers into WB memory (BIOS
358 * optimization for /dev/mem mmap'ers into WB memory (BIOS 358 * tools and ACPI tools). Use WB request for WB memory and use
359 * tools and ACPI tools). Use WB request for WB memory and use 359 * UC_MINUS otherwise.
360 * UC_MINUS otherwise. 360 */
361 */ 361 actual_type = pat_x_mtrr_type(start, end, req_type & _PAGE_CACHE_MASK);
362 u8 mtrr_type = mtrr_type_lookup(start, end);
363
364 if (mtrr_type == MTRR_TYPE_WRBACK)
365 actual_type = _PAGE_CACHE_WB;
366 else
367 actual_type = _PAGE_CACHE_UC_MINUS;
368 } else {
369 actual_type = pat_x_mtrr_type(start, end,
370 req_type & _PAGE_CACHE_MASK);
371 }
372 362
373 if (new_type) 363 if (new_type)
374 *new_type = actual_type; 364 *new_type = actual_type;
@@ -546,9 +536,7 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
546int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, 536int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
547 unsigned long size, pgprot_t *vma_prot) 537 unsigned long size, pgprot_t *vma_prot)
548{ 538{
549 u64 offset = ((u64) pfn) << PAGE_SHIFT; 539 unsigned long flags = _PAGE_CACHE_WB;
550 unsigned long flags = -1;
551 int retval;
552 540
553 if (!range_is_allowed(pfn, size)) 541 if (!range_is_allowed(pfn, size))
554 return 0; 542 return 0;
@@ -576,64 +564,11 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
576 } 564 }
577#endif 565#endif
578 566
579 /*
580 * With O_SYNC, we can only take UC_MINUS mapping. Fail if we cannot.
581 *
582 * Without O_SYNC, we want to get
583 * - WB for WB-able memory and no other conflicting mappings
584 * - UC_MINUS for non-WB-able memory with no other conflicting mappings
585 * - Inherit from confliting mappings otherwise
586 */
587 if (flags != -1) {
588 retval = reserve_memtype(offset, offset + size, flags, NULL);
589 } else {
590 retval = reserve_memtype(offset, offset + size, -1, &flags);
591 }
592
593 if (retval < 0)
594 return 0;
595
596 if (((pfn < max_low_pfn_mapped) ||
597 (pfn >= (1UL<<(32 - PAGE_SHIFT)) && pfn < max_pfn_mapped)) &&
598 ioremap_change_attr((unsigned long)__va(offset), size, flags) < 0) {
599 free_memtype(offset, offset + size);
600 printk(KERN_INFO
601 "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n",
602 current->comm, current->pid,
603 cattr_name(flags),
604 offset, (unsigned long long)(offset + size));
605 return 0;
606 }
607
608 *vma_prot = __pgprot((pgprot_val(*vma_prot) & ~_PAGE_CACHE_MASK) | 567 *vma_prot = __pgprot((pgprot_val(*vma_prot) & ~_PAGE_CACHE_MASK) |
609 flags); 568 flags);
610 return 1; 569 return 1;
611} 570}
612 571
613void map_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot)
614{
615 unsigned long want_flags = (pgprot_val(vma_prot) & _PAGE_CACHE_MASK);
616 u64 addr = (u64)pfn << PAGE_SHIFT;
617 unsigned long flags;
618
619 reserve_memtype(addr, addr + size, want_flags, &flags);
620 if (flags != want_flags) {
621 printk(KERN_INFO
622 "%s:%d /dev/mem expected mapping type %s for %Lx-%Lx, got %s\n",
623 current->comm, current->pid,
624 cattr_name(want_flags),
625 addr, (unsigned long long)(addr + size),
626 cattr_name(flags));
627 }
628}
629
630void unmap_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot)
631{
632 u64 addr = (u64)pfn << PAGE_SHIFT;
633
634 free_memtype(addr, addr + size);
635}
636
637/* 572/*
638 * Change the memory type for the physial address range in kernel identity 573 * Change the memory type for the physial address range in kernel identity
639 * mapping space if that range is a part of identity map. 574 * mapping space if that range is a part of identity map.
@@ -671,8 +606,8 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
671{ 606{
672 int is_ram = 0; 607 int is_ram = 0;
673 int ret; 608 int ret;
674 unsigned long flags;
675 unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK); 609 unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK);
610 unsigned long flags = want_flags;
676 611
677 is_ram = pat_pagerange_is_ram(paddr, paddr + size); 612 is_ram = pat_pagerange_is_ram(paddr, paddr + size);
678 613
@@ -734,29 +669,28 @@ static void free_pfn_range(u64 paddr, unsigned long size)
734 * 669 *
735 * If the vma has a linear pfn mapping for the entire range, we get the prot 670 * If the vma has a linear pfn mapping for the entire range, we get the prot
736 * from pte and reserve the entire vma range with single reserve_pfn_range call. 671 * from pte and reserve the entire vma range with single reserve_pfn_range call.
737 * Otherwise, we reserve the entire vma range, my ging through the PTEs page
738 * by page to get physical address and protection.
739 */ 672 */
740int track_pfn_vma_copy(struct vm_area_struct *vma) 673int track_pfn_vma_copy(struct vm_area_struct *vma)
741{ 674{
742 int retval = 0;
743 unsigned long i, j;
744 resource_size_t paddr; 675 resource_size_t paddr;
745 unsigned long prot; 676 unsigned long prot;
746 unsigned long vma_start = vma->vm_start; 677 unsigned long vma_size = vma->vm_end - vma->vm_start;
747 unsigned long vma_end = vma->vm_end;
748 unsigned long vma_size = vma_end - vma_start;
749 pgprot_t pgprot; 678 pgprot_t pgprot;
750 679
751 if (!pat_enabled) 680 if (!pat_enabled)
752 return 0; 681 return 0;
753 682
683 /*
684 * For now, only handle remap_pfn_range() vmas where
685 * is_linear_pfn_mapping() == TRUE. Handling of
686 * vm_insert_pfn() is TBD.
687 */
754 if (is_linear_pfn_mapping(vma)) { 688 if (is_linear_pfn_mapping(vma)) {
755 /* 689 /*
756 * reserve the whole chunk covered by vma. We need the 690 * reserve the whole chunk covered by vma. We need the
757 * starting address and protection from pte. 691 * starting address and protection from pte.
758 */ 692 */
759 if (follow_phys(vma, vma_start, 0, &prot, &paddr)) { 693 if (follow_phys(vma, vma->vm_start, 0, &prot, &paddr)) {
760 WARN_ON_ONCE(1); 694 WARN_ON_ONCE(1);
761 return -EINVAL; 695 return -EINVAL;
762 } 696 }
@@ -764,28 +698,7 @@ int track_pfn_vma_copy(struct vm_area_struct *vma)
764 return reserve_pfn_range(paddr, vma_size, &pgprot, 1); 698 return reserve_pfn_range(paddr, vma_size, &pgprot, 1);
765 } 699 }
766 700
767 /* reserve entire vma page by page, using pfn and prot from pte */
768 for (i = 0; i < vma_size; i += PAGE_SIZE) {
769 if (follow_phys(vma, vma_start + i, 0, &prot, &paddr))
770 continue;
771
772 pgprot = __pgprot(prot);
773 retval = reserve_pfn_range(paddr, PAGE_SIZE, &pgprot, 1);
774 if (retval)
775 goto cleanup_ret;
776 }
777 return 0; 701 return 0;
778
779cleanup_ret:
780 /* Reserve error: Cleanup partial reservation and return error */
781 for (j = 0; j < i; j += PAGE_SIZE) {
782 if (follow_phys(vma, vma_start + j, 0, &prot, &paddr))
783 continue;
784
785 free_pfn_range(paddr, PAGE_SIZE);
786 }
787
788 return retval;
789} 702}
790 703
791/* 704/*
@@ -795,50 +708,28 @@ cleanup_ret:
795 * prot is passed in as a parameter for the new mapping. If the vma has a 708 * prot is passed in as a parameter for the new mapping. If the vma has a
796 * linear pfn mapping for the entire range reserve the entire vma range with 709 * linear pfn mapping for the entire range reserve the entire vma range with
797 * single reserve_pfn_range call. 710 * single reserve_pfn_range call.
798 * Otherwise, we look t the pfn and size and reserve only the specified range
799 * page by page.
800 *
801 * Note that this function can be called with caller trying to map only a
802 * subrange/page inside the vma.
803 */ 711 */
804int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot, 712int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot,
805 unsigned long pfn, unsigned long size) 713 unsigned long pfn, unsigned long size)
806{ 714{
807 int retval = 0;
808 unsigned long i, j;
809 resource_size_t base_paddr;
810 resource_size_t paddr; 715 resource_size_t paddr;
811 unsigned long vma_start = vma->vm_start; 716 unsigned long vma_size = vma->vm_end - vma->vm_start;
812 unsigned long vma_end = vma->vm_end;
813 unsigned long vma_size = vma_end - vma_start;
814 717
815 if (!pat_enabled) 718 if (!pat_enabled)
816 return 0; 719 return 0;
817 720
721 /*
722 * For now, only handle remap_pfn_range() vmas where
723 * is_linear_pfn_mapping() == TRUE. Handling of
724 * vm_insert_pfn() is TBD.
725 */
818 if (is_linear_pfn_mapping(vma)) { 726 if (is_linear_pfn_mapping(vma)) {
819 /* reserve the whole chunk starting from vm_pgoff */ 727 /* reserve the whole chunk starting from vm_pgoff */
820 paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT; 728 paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT;
821 return reserve_pfn_range(paddr, vma_size, prot, 0); 729 return reserve_pfn_range(paddr, vma_size, prot, 0);
822 } 730 }
823 731
824 /* reserve page by page using pfn and size */
825 base_paddr = (resource_size_t)pfn << PAGE_SHIFT;
826 for (i = 0; i < size; i += PAGE_SIZE) {
827 paddr = base_paddr + i;
828 retval = reserve_pfn_range(paddr, PAGE_SIZE, prot, 0);
829 if (retval)
830 goto cleanup_ret;
831 }
832 return 0; 732 return 0;
833
834cleanup_ret:
835 /* Reserve error: Cleanup partial reservation and return error */
836 for (j = 0; j < i; j += PAGE_SIZE) {
837 paddr = base_paddr + j;
838 free_pfn_range(paddr, PAGE_SIZE);
839 }
840
841 return retval;
842} 733}
843 734
844/* 735/*
@@ -849,39 +740,23 @@ cleanup_ret:
849void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn, 740void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn,
850 unsigned long size) 741 unsigned long size)
851{ 742{
852 unsigned long i;
853 resource_size_t paddr; 743 resource_size_t paddr;
854 unsigned long prot; 744 unsigned long vma_size = vma->vm_end - vma->vm_start;
855 unsigned long vma_start = vma->vm_start;
856 unsigned long vma_end = vma->vm_end;
857 unsigned long vma_size = vma_end - vma_start;
858 745
859 if (!pat_enabled) 746 if (!pat_enabled)
860 return; 747 return;
861 748
749 /*
750 * For now, only handle remap_pfn_range() vmas where
751 * is_linear_pfn_mapping() == TRUE. Handling of
752 * vm_insert_pfn() is TBD.
753 */
862 if (is_linear_pfn_mapping(vma)) { 754 if (is_linear_pfn_mapping(vma)) {
863 /* free the whole chunk starting from vm_pgoff */ 755 /* free the whole chunk starting from vm_pgoff */
864 paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT; 756 paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT;
865 free_pfn_range(paddr, vma_size); 757 free_pfn_range(paddr, vma_size);
866 return; 758 return;
867 } 759 }
868
869 if (size != 0 && size != vma_size) {
870 /* free page by page, using pfn and size */
871 paddr = (resource_size_t)pfn << PAGE_SHIFT;
872 for (i = 0; i < size; i += PAGE_SIZE) {
873 paddr = paddr + i;
874 free_pfn_range(paddr, PAGE_SIZE);
875 }
876 } else {
877 /* free entire vma, page by page, using the pfn from pte */
878 for (i = 0; i < vma_size; i += PAGE_SIZE) {
879 if (follow_phys(vma, vma_start + i, 0, &prot, &paddr))
880 continue;
881
882 free_pfn_range(paddr, PAGE_SIZE);
883 }
884 }
885} 760}
886 761
887pgprot_t pgprot_writecombine(pgprot_t prot) 762pgprot_t pgprot_writecombine(pgprot_t prot)
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
index 5b7c7c8464fe..7aa03a5389f5 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
@@ -345,7 +345,8 @@ void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
345 fixmaps_set++; 345 fixmaps_set++;
346} 346}
347 347
348void native_set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t flags) 348void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys,
349 pgprot_t flags)
349{ 350{
350 __native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags)); 351 __native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags));
351} 352}
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 82cd39a6cbd3..f09e8c36ee80 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -42,6 +42,7 @@
42#include <asm/xen/hypervisor.h> 42#include <asm/xen/hypervisor.h>
43#include <asm/fixmap.h> 43#include <asm/fixmap.h>
44#include <asm/processor.h> 44#include <asm/processor.h>
45#include <asm/proto.h>
45#include <asm/msr-index.h> 46#include <asm/msr-index.h>
46#include <asm/setup.h> 47#include <asm/setup.h>
47#include <asm/desc.h> 48#include <asm/desc.h>
@@ -168,21 +169,23 @@ static void __init xen_banner(void)
168 xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : ""); 169 xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : "");
169} 170}
170 171
172static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0;
173static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
174
171static void xen_cpuid(unsigned int *ax, unsigned int *bx, 175static void xen_cpuid(unsigned int *ax, unsigned int *bx,
172 unsigned int *cx, unsigned int *dx) 176 unsigned int *cx, unsigned int *dx)
173{ 177{
178 unsigned maskecx = ~0;
174 unsigned maskedx = ~0; 179 unsigned maskedx = ~0;
175 180
176 /* 181 /*
177 * Mask out inconvenient features, to try and disable as many 182 * Mask out inconvenient features, to try and disable as many
178 * unsupported kernel subsystems as possible. 183 * unsupported kernel subsystems as possible.
179 */ 184 */
180 if (*ax == 1) 185 if (*ax == 1) {
181 maskedx = ~((1 << X86_FEATURE_APIC) | /* disable APIC */ 186 maskecx = cpuid_leaf1_ecx_mask;
182 (1 << X86_FEATURE_ACPI) | /* disable ACPI */ 187 maskedx = cpuid_leaf1_edx_mask;
183 (1 << X86_FEATURE_MCE) | /* disable MCE */ 188 }
184 (1 << X86_FEATURE_MCA) | /* disable MCA */
185 (1 << X86_FEATURE_ACC)); /* thermal monitoring */
186 189
187 asm(XEN_EMULATE_PREFIX "cpuid" 190 asm(XEN_EMULATE_PREFIX "cpuid"
188 : "=a" (*ax), 191 : "=a" (*ax),
@@ -190,9 +193,43 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
190 "=c" (*cx), 193 "=c" (*cx),
191 "=d" (*dx) 194 "=d" (*dx)
192 : "0" (*ax), "2" (*cx)); 195 : "0" (*ax), "2" (*cx));
196
197 *cx &= maskecx;
193 *dx &= maskedx; 198 *dx &= maskedx;
194} 199}
195 200
201static __init void xen_init_cpuid_mask(void)
202{
203 unsigned int ax, bx, cx, dx;
204
205 cpuid_leaf1_edx_mask =
206 ~((1 << X86_FEATURE_MCE) | /* disable MCE */
207 (1 << X86_FEATURE_MCA) | /* disable MCA */
208 (1 << X86_FEATURE_ACC)); /* thermal monitoring */
209
210 if (!xen_initial_domain())
211 cpuid_leaf1_edx_mask &=
212 ~((1 << X86_FEATURE_APIC) | /* disable local APIC */
213 (1 << X86_FEATURE_ACPI)); /* disable ACPI */
214
215 ax = 1;
216 xen_cpuid(&ax, &bx, &cx, &dx);
217
218 /* cpuid claims we support xsave; try enabling it to see what happens */
219 if (cx & (1 << (X86_FEATURE_XSAVE % 32))) {
220 unsigned long cr4;
221
222 set_in_cr4(X86_CR4_OSXSAVE);
223
224 cr4 = read_cr4();
225
226 if ((cr4 & X86_CR4_OSXSAVE) == 0)
227 cpuid_leaf1_ecx_mask &= ~(1 << (X86_FEATURE_XSAVE % 32));
228
229 clear_in_cr4(X86_CR4_OSXSAVE);
230 }
231}
232
196static void xen_set_debugreg(int reg, unsigned long val) 233static void xen_set_debugreg(int reg, unsigned long val)
197{ 234{
198 HYPERVISOR_set_debugreg(reg, val); 235 HYPERVISOR_set_debugreg(reg, val);
@@ -284,12 +321,11 @@ static void xen_set_ldt(const void *addr, unsigned entries)
284 321
285static void xen_load_gdt(const struct desc_ptr *dtr) 322static void xen_load_gdt(const struct desc_ptr *dtr)
286{ 323{
287 unsigned long *frames;
288 unsigned long va = dtr->address; 324 unsigned long va = dtr->address;
289 unsigned int size = dtr->size + 1; 325 unsigned int size = dtr->size + 1;
290 unsigned pages = (size + PAGE_SIZE - 1) / PAGE_SIZE; 326 unsigned pages = (size + PAGE_SIZE - 1) / PAGE_SIZE;
327 unsigned long frames[pages];
291 int f; 328 int f;
292 struct multicall_space mcs;
293 329
294 /* A GDT can be up to 64k in size, which corresponds to 8192 330 /* A GDT can be up to 64k in size, which corresponds to 8192
295 8-byte entries, or 16 4k pages.. */ 331 8-byte entries, or 16 4k pages.. */
@@ -297,19 +333,26 @@ static void xen_load_gdt(const struct desc_ptr *dtr)
297 BUG_ON(size > 65536); 333 BUG_ON(size > 65536);
298 BUG_ON(va & ~PAGE_MASK); 334 BUG_ON(va & ~PAGE_MASK);
299 335
300 mcs = xen_mc_entry(sizeof(*frames) * pages);
301 frames = mcs.args;
302
303 for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { 336 for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) {
304 frames[f] = arbitrary_virt_to_mfn((void *)va); 337 int level;
338 pte_t *ptep = lookup_address(va, &level);
339 unsigned long pfn, mfn;
340 void *virt;
341
342 BUG_ON(ptep == NULL);
343
344 pfn = pte_pfn(*ptep);
345 mfn = pfn_to_mfn(pfn);
346 virt = __va(PFN_PHYS(pfn));
347
348 frames[f] = mfn;
305 349
306 make_lowmem_page_readonly((void *)va); 350 make_lowmem_page_readonly((void *)va);
307 make_lowmem_page_readonly(mfn_to_virt(frames[f])); 351 make_lowmem_page_readonly(virt);
308 } 352 }
309 353
310 MULTI_set_gdt(mcs.mc, frames, size / sizeof(struct desc_struct)); 354 if (HYPERVISOR_set_gdt(frames, size / sizeof(struct desc_struct)))
311 355 BUG();
312 xen_mc_issue(PARAVIRT_LAZY_CPU);
313} 356}
314 357
315static void load_TLS_descriptor(struct thread_struct *t, 358static void load_TLS_descriptor(struct thread_struct *t,
@@ -385,7 +428,7 @@ static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum,
385static int cvt_gate_to_trap(int vector, const gate_desc *val, 428static int cvt_gate_to_trap(int vector, const gate_desc *val,
386 struct trap_info *info) 429 struct trap_info *info)
387{ 430{
388 if (val->type != 0xf && val->type != 0xe) 431 if (val->type != GATE_TRAP && val->type != GATE_INTERRUPT)
389 return 0; 432 return 0;
390 433
391 info->vector = vector; 434 info->vector = vector;
@@ -393,8 +436,8 @@ static int cvt_gate_to_trap(int vector, const gate_desc *val,
393 info->cs = gate_segment(*val); 436 info->cs = gate_segment(*val);
394 info->flags = val->dpl; 437 info->flags = val->dpl;
395 /* interrupt gates clear IF */ 438 /* interrupt gates clear IF */
396 if (val->type == 0xe) 439 if (val->type == GATE_INTERRUPT)
397 info->flags |= 4; 440 info->flags |= 1 << 2;
398 441
399 return 1; 442 return 1;
400} 443}
@@ -872,7 +915,6 @@ static const struct machine_ops __initdata xen_machine_ops = {
872 .emergency_restart = xen_emergency_restart, 915 .emergency_restart = xen_emergency_restart,
873}; 916};
874 917
875
876/* First C function to be called on Xen boot */ 918/* First C function to be called on Xen boot */
877asmlinkage void __init xen_start_kernel(void) 919asmlinkage void __init xen_start_kernel(void)
878{ 920{
@@ -897,6 +939,8 @@ asmlinkage void __init xen_start_kernel(void)
897 939
898 xen_init_irq_ops(); 940 xen_init_irq_ops();
899 941
942 xen_init_cpuid_mask();
943
900#ifdef CONFIG_X86_LOCAL_APIC 944#ifdef CONFIG_X86_LOCAL_APIC
901 /* 945 /*
902 * set up the basic apic ops. 946 * set up the basic apic ops.
@@ -938,6 +982,11 @@ asmlinkage void __init xen_start_kernel(void)
938 if (!xen_initial_domain()) 982 if (!xen_initial_domain())
939 __supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD); 983 __supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD);
940 984
985#ifdef CONFIG_X86_64
986 /* Work out if we support NX */
987 check_efer();
988#endif
989
941 /* Don't do the full vcpu_info placement stuff until we have a 990 /* Don't do the full vcpu_info placement stuff until we have a
942 possible map and a non-dummy shared_info. */ 991 possible map and a non-dummy shared_info. */
943 per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0]; 992 per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index db3802fb7b84..9842b1212407 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -184,7 +184,7 @@ static inline unsigned p2m_index(unsigned long pfn)
184} 184}
185 185
186/* Build the parallel p2m_top_mfn structures */ 186/* Build the parallel p2m_top_mfn structures */
187void xen_setup_mfn_list_list(void) 187static void __init xen_build_mfn_list_list(void)
188{ 188{
189 unsigned pfn, idx; 189 unsigned pfn, idx;
190 190
@@ -198,7 +198,10 @@ void xen_setup_mfn_list_list(void)
198 unsigned topidx = idx * P2M_ENTRIES_PER_PAGE; 198 unsigned topidx = idx * P2M_ENTRIES_PER_PAGE;
199 p2m_top_mfn_list[idx] = virt_to_mfn(&p2m_top_mfn[topidx]); 199 p2m_top_mfn_list[idx] = virt_to_mfn(&p2m_top_mfn[topidx]);
200 } 200 }
201}
201 202
203void xen_setup_mfn_list_list(void)
204{
202 BUG_ON(HYPERVISOR_shared_info == &xen_dummy_shared_info); 205 BUG_ON(HYPERVISOR_shared_info == &xen_dummy_shared_info);
203 206
204 HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list = 207 HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list =
@@ -218,6 +221,8 @@ void __init xen_build_dynamic_phys_to_machine(void)
218 221
219 p2m_top[topidx] = &mfn_list[pfn]; 222 p2m_top[topidx] = &mfn_list[pfn];
220 } 223 }
224
225 xen_build_mfn_list_list();
221} 226}
222 227
223unsigned long get_phys_to_machine(unsigned long pfn) 228unsigned long get_phys_to_machine(unsigned long pfn)
@@ -233,47 +238,74 @@ unsigned long get_phys_to_machine(unsigned long pfn)
233} 238}
234EXPORT_SYMBOL_GPL(get_phys_to_machine); 239EXPORT_SYMBOL_GPL(get_phys_to_machine);
235 240
236static void alloc_p2m(unsigned long **pp, unsigned long *mfnp) 241/* install a new p2m_top page */
242bool install_p2mtop_page(unsigned long pfn, unsigned long *p)
237{ 243{
238 unsigned long *p; 244 unsigned topidx = p2m_top_index(pfn);
245 unsigned long **pfnp, *mfnp;
239 unsigned i; 246 unsigned i;
240 247
241 p = (void *)__get_free_page(GFP_KERNEL | __GFP_NOFAIL); 248 pfnp = &p2m_top[topidx];
242 BUG_ON(p == NULL); 249 mfnp = &p2m_top_mfn[topidx];
243 250
244 for (i = 0; i < P2M_ENTRIES_PER_PAGE; i++) 251 for (i = 0; i < P2M_ENTRIES_PER_PAGE; i++)
245 p[i] = INVALID_P2M_ENTRY; 252 p[i] = INVALID_P2M_ENTRY;
246 253
247 if (cmpxchg(pp, p2m_missing, p) != p2m_missing) 254 if (cmpxchg(pfnp, p2m_missing, p) == p2m_missing) {
248 free_page((unsigned long)p);
249 else
250 *mfnp = virt_to_mfn(p); 255 *mfnp = virt_to_mfn(p);
256 return true;
257 }
258
259 return false;
251} 260}
252 261
253void set_phys_to_machine(unsigned long pfn, unsigned long mfn) 262static void alloc_p2m(unsigned long pfn)
254{ 263{
255 unsigned topidx, idx; 264 unsigned long *p;
256 265
257 if (unlikely(xen_feature(XENFEAT_auto_translated_physmap))) { 266 p = (void *)__get_free_page(GFP_KERNEL | __GFP_NOFAIL);
258 BUG_ON(pfn != mfn && mfn != INVALID_P2M_ENTRY); 267 BUG_ON(p == NULL);
259 return; 268
260 } 269 if (!install_p2mtop_page(pfn, p))
270 free_page((unsigned long)p);
271}
272
273/* Try to install p2m mapping; fail if intermediate bits missing */
274bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn)
275{
276 unsigned topidx, idx;
261 277
262 if (unlikely(pfn >= MAX_DOMAIN_PAGES)) { 278 if (unlikely(pfn >= MAX_DOMAIN_PAGES)) {
263 BUG_ON(mfn != INVALID_P2M_ENTRY); 279 BUG_ON(mfn != INVALID_P2M_ENTRY);
264 return; 280 return true;
265 } 281 }
266 282
267 topidx = p2m_top_index(pfn); 283 topidx = p2m_top_index(pfn);
268 if (p2m_top[topidx] == p2m_missing) { 284 if (p2m_top[topidx] == p2m_missing) {
269 /* no need to allocate a page to store an invalid entry */
270 if (mfn == INVALID_P2M_ENTRY) 285 if (mfn == INVALID_P2M_ENTRY)
271 return; 286 return true;
272 alloc_p2m(&p2m_top[topidx], &p2m_top_mfn[topidx]); 287 return false;
273 } 288 }
274 289
275 idx = p2m_index(pfn); 290 idx = p2m_index(pfn);
276 p2m_top[topidx][idx] = mfn; 291 p2m_top[topidx][idx] = mfn;
292
293 return true;
294}
295
296void set_phys_to_machine(unsigned long pfn, unsigned long mfn)
297{
298 if (unlikely(xen_feature(XENFEAT_auto_translated_physmap))) {
299 BUG_ON(pfn != mfn && mfn != INVALID_P2M_ENTRY);
300 return;
301 }
302
303 if (unlikely(!__set_phys_to_machine(pfn, mfn))) {
304 alloc_p2m(pfn);
305
306 if (!__set_phys_to_machine(pfn, mfn))
307 BUG();
308 }
277} 309}
278 310
279unsigned long arbitrary_virt_to_mfn(void *vaddr) 311unsigned long arbitrary_virt_to_mfn(void *vaddr)
@@ -987,7 +1019,7 @@ static __init int xen_mark_pinned(struct mm_struct *mm, struct page *page,
987 return 0; 1019 return 0;
988} 1020}
989 1021
990void __init xen_mark_init_mm_pinned(void) 1022static void __init xen_mark_init_mm_pinned(void)
991{ 1023{
992 xen_pgd_walk(&init_mm, xen_mark_pinned, FIXADDR_TOP); 1024 xen_pgd_walk(&init_mm, xen_mark_pinned, FIXADDR_TOP);
993} 1025}
@@ -1270,8 +1302,8 @@ static void xen_flush_tlb_others(const struct cpumask *cpus,
1270 } *args; 1302 } *args;
1271 struct multicall_space mcs; 1303 struct multicall_space mcs;
1272 1304
1273 BUG_ON(cpumask_empty(cpus)); 1305 if (cpumask_empty(cpus))
1274 BUG_ON(!mm); 1306 return; /* nothing to do */
1275 1307
1276 mcs = xen_mc_entry(sizeof(*args)); 1308 mcs = xen_mc_entry(sizeof(*args));
1277 args = mcs.args; 1309 args = mcs.args;
@@ -1438,6 +1470,15 @@ static __init void xen_set_pte_init(pte_t *ptep, pte_t pte)
1438} 1470}
1439#endif 1471#endif
1440 1472
1473static void pin_pagetable_pfn(unsigned cmd, unsigned long pfn)
1474{
1475 struct mmuext_op op;
1476 op.cmd = cmd;
1477 op.arg1.mfn = pfn_to_mfn(pfn);
1478 if (HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF))
1479 BUG();
1480}
1481
1441/* Early in boot, while setting up the initial pagetable, assume 1482/* Early in boot, while setting up the initial pagetable, assume
1442 everything is pinned. */ 1483 everything is pinned. */
1443static __init void xen_alloc_pte_init(struct mm_struct *mm, unsigned long pfn) 1484static __init void xen_alloc_pte_init(struct mm_struct *mm, unsigned long pfn)
@@ -1446,22 +1487,29 @@ static __init void xen_alloc_pte_init(struct mm_struct *mm, unsigned long pfn)
1446 BUG_ON(mem_map); /* should only be used early */ 1487 BUG_ON(mem_map); /* should only be used early */
1447#endif 1488#endif
1448 make_lowmem_page_readonly(__va(PFN_PHYS(pfn))); 1489 make_lowmem_page_readonly(__va(PFN_PHYS(pfn)));
1490 pin_pagetable_pfn(MMUEXT_PIN_L1_TABLE, pfn);
1491}
1492
1493/* Used for pmd and pud */
1494static __init void xen_alloc_pmd_init(struct mm_struct *mm, unsigned long pfn)
1495{
1496#ifdef CONFIG_FLATMEM
1497 BUG_ON(mem_map); /* should only be used early */
1498#endif
1499 make_lowmem_page_readonly(__va(PFN_PHYS(pfn)));
1449} 1500}
1450 1501
1451/* Early release_pte assumes that all pts are pinned, since there's 1502/* Early release_pte assumes that all pts are pinned, since there's
1452 only init_mm and anything attached to that is pinned. */ 1503 only init_mm and anything attached to that is pinned. */
1453static void xen_release_pte_init(unsigned long pfn) 1504static __init void xen_release_pte_init(unsigned long pfn)
1454{ 1505{
1506 pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, pfn);
1455 make_lowmem_page_readwrite(__va(PFN_PHYS(pfn))); 1507 make_lowmem_page_readwrite(__va(PFN_PHYS(pfn)));
1456} 1508}
1457 1509
1458static void pin_pagetable_pfn(unsigned cmd, unsigned long pfn) 1510static __init void xen_release_pmd_init(unsigned long pfn)
1459{ 1511{
1460 struct mmuext_op op; 1512 make_lowmem_page_readwrite(__va(PFN_PHYS(pfn)));
1461 op.cmd = cmd;
1462 op.arg1.mfn = pfn_to_mfn(pfn);
1463 if (HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF))
1464 BUG();
1465} 1513}
1466 1514
1467/* This needs to make sure the new pte page is pinned iff its being 1515/* This needs to make sure the new pte page is pinned iff its being
@@ -1750,7 +1798,7 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
1750} 1798}
1751#endif /* CONFIG_X86_64 */ 1799#endif /* CONFIG_X86_64 */
1752 1800
1753static void xen_set_fixmap(unsigned idx, unsigned long phys, pgprot_t prot) 1801static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
1754{ 1802{
1755 pte_t pte; 1803 pte_t pte;
1756 1804
@@ -1773,6 +1821,9 @@ static void xen_set_fixmap(unsigned idx, unsigned long phys, pgprot_t prot)
1773#ifdef CONFIG_X86_LOCAL_APIC 1821#ifdef CONFIG_X86_LOCAL_APIC
1774 case FIX_APIC_BASE: /* maps dummy local APIC */ 1822 case FIX_APIC_BASE: /* maps dummy local APIC */
1775#endif 1823#endif
1824 case FIX_TEXT_POKE0:
1825 case FIX_TEXT_POKE1:
1826 /* All local page mappings */
1776 pte = pfn_pte(phys, prot); 1827 pte = pfn_pte(phys, prot);
1777 break; 1828 break;
1778 1829
@@ -1819,7 +1870,6 @@ __init void xen_post_allocator_init(void)
1819 xen_mark_init_mm_pinned(); 1870 xen_mark_init_mm_pinned();
1820} 1871}
1821 1872
1822
1823const struct pv_mmu_ops xen_mmu_ops __initdata = { 1873const struct pv_mmu_ops xen_mmu_ops __initdata = {
1824 .pagetable_setup_start = xen_pagetable_setup_start, 1874 .pagetable_setup_start = xen_pagetable_setup_start,
1825 .pagetable_setup_done = xen_pagetable_setup_done, 1875 .pagetable_setup_done = xen_pagetable_setup_done,
@@ -1843,9 +1893,9 @@ const struct pv_mmu_ops xen_mmu_ops __initdata = {
1843 1893
1844 .alloc_pte = xen_alloc_pte_init, 1894 .alloc_pte = xen_alloc_pte_init,
1845 .release_pte = xen_release_pte_init, 1895 .release_pte = xen_release_pte_init,
1846 .alloc_pmd = xen_alloc_pte_init, 1896 .alloc_pmd = xen_alloc_pmd_init,
1847 .alloc_pmd_clone = paravirt_nop, 1897 .alloc_pmd_clone = paravirt_nop,
1848 .release_pmd = xen_release_pte_init, 1898 .release_pmd = xen_release_pmd_init,
1849 1899
1850#ifdef CONFIG_HIGHPTE 1900#ifdef CONFIG_HIGHPTE
1851 .kmap_atomic_pte = xen_kmap_atomic_pte, 1901 .kmap_atomic_pte = xen_kmap_atomic_pte,
@@ -1883,8 +1933,8 @@ const struct pv_mmu_ops xen_mmu_ops __initdata = {
1883 .make_pud = PV_CALLEE_SAVE(xen_make_pud), 1933 .make_pud = PV_CALLEE_SAVE(xen_make_pud),
1884 .set_pgd = xen_set_pgd_hyper, 1934 .set_pgd = xen_set_pgd_hyper,
1885 1935
1886 .alloc_pud = xen_alloc_pte_init, 1936 .alloc_pud = xen_alloc_pmd_init,
1887 .release_pud = xen_release_pte_init, 1937 .release_pud = xen_release_pmd_init,
1888#endif /* PAGETABLE_LEVELS == 4 */ 1938#endif /* PAGETABLE_LEVELS == 4 */
1889 1939
1890 .activate_mm = xen_activate_mm, 1940 .activate_mm = xen_activate_mm,
diff --git a/arch/x86/xen/mmu.h b/arch/x86/xen/mmu.h
index 24d1b44a337d..da7302624897 100644
--- a/arch/x86/xen/mmu.h
+++ b/arch/x86/xen/mmu.h
@@ -11,6 +11,9 @@ enum pt_level {
11}; 11};
12 12
13 13
14bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn);
15bool install_p2mtop_page(unsigned long pfn, unsigned long *p);
16
14void set_pte_mfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags); 17void set_pte_mfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags);
15 18
16 19
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 585a6e330837..429834ec1687 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -317,7 +317,7 @@ static int __cpuinit xen_cpu_up(unsigned int cpu)
317 BUG_ON(rc); 317 BUG_ON(rc);
318 318
319 while(per_cpu(cpu_state, cpu) != CPU_ONLINE) { 319 while(per_cpu(cpu_state, cpu) != CPU_ONLINE) {
320 HYPERVISOR_sched_op(SCHEDOP_yield, 0); 320 HYPERVISOR_sched_op(SCHEDOP_yield, NULL);
321 barrier(); 321 barrier();
322 } 322 }
323 323
@@ -422,7 +422,7 @@ static void xen_smp_send_call_function_ipi(const struct cpumask *mask)
422 /* Make sure other vcpus get a chance to run if they need to. */ 422 /* Make sure other vcpus get a chance to run if they need to. */
423 for_each_cpu(cpu, mask) { 423 for_each_cpu(cpu, mask) {
424 if (xen_vcpu_stolen(cpu)) { 424 if (xen_vcpu_stolen(cpu)) {
425 HYPERVISOR_sched_op(SCHEDOP_yield, 0); 425 HYPERVISOR_sched_op(SCHEDOP_yield, NULL);
426 break; 426 break;
427 } 427 }
428 } 428 }
diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
index 14f240623497..0a5aa44299a5 100644
--- a/arch/x86/xen/time.c
+++ b/arch/x86/xen/time.c
@@ -213,6 +213,11 @@ cycle_t xen_clocksource_read(void)
213 return ret; 213 return ret;
214} 214}
215 215
216static cycle_t xen_clocksource_get_cycles(struct clocksource *cs)
217{
218 return xen_clocksource_read();
219}
220
216static void xen_read_wallclock(struct timespec *ts) 221static void xen_read_wallclock(struct timespec *ts)
217{ 222{
218 struct shared_info *s = HYPERVISOR_shared_info; 223 struct shared_info *s = HYPERVISOR_shared_info;
@@ -241,7 +246,7 @@ int xen_set_wallclock(unsigned long now)
241static struct clocksource xen_clocksource __read_mostly = { 246static struct clocksource xen_clocksource __read_mostly = {
242 .name = "xen", 247 .name = "xen",
243 .rating = 400, 248 .rating = 400,
244 .read = xen_clocksource_read, 249 .read = xen_clocksource_get_cycles,
245 .mask = ~0, 250 .mask = ~0,
246 .mult = 1<<XEN_SHIFT, /* time directly in nanoseconds */ 251 .mult = 1<<XEN_SHIFT, /* time directly in nanoseconds */
247 .shift = XEN_SHIFT, 252 .shift = XEN_SHIFT,
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
index 2f5ef2632ea2..20139464943c 100644
--- a/arch/x86/xen/xen-ops.h
+++ b/arch/x86/xen/xen-ops.h
@@ -57,8 +57,6 @@ irqreturn_t xen_debug_interrupt(int irq, void *dev_id);
57 57
58bool xen_vcpu_stolen(int vcpu); 58bool xen_vcpu_stolen(int vcpu);
59 59
60void xen_mark_init_mm_pinned(void);
61
62void xen_setup_vcpu_info_placement(void); 60void xen_setup_vcpu_info_placement(void);
63 61
64#ifdef CONFIG_SMP 62#ifdef CONFIG_SMP
diff --git a/arch/xtensa/kernel/head.S b/arch/xtensa/kernel/head.S
index 0817f9db836e..d9ddc1ba761c 100644
--- a/arch/xtensa/kernel/head.S
+++ b/arch/xtensa/kernel/head.S
@@ -19,6 +19,7 @@
19#include <asm/page.h> 19#include <asm/page.h>
20#include <asm/cacheasm.h> 20#include <asm/cacheasm.h>
21 21
22#include <linux/init.h>
22#include <linux/linkage.h> 23#include <linux/linkage.h>
23 24
24/* 25/*
@@ -45,7 +46,7 @@
45 * instruction. 46 * instruction.
46 */ 47 */
47 48
48 .section .head.text, "ax" 49 __HEAD
49 .globl _start 50 .globl _start
50_start: _j 2f 51_start: _j 2f
51 .align 4 52 .align 4
diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S
index c1be9a4a740c..5accf51053da 100644
--- a/arch/xtensa/kernel/vmlinux.lds.S
+++ b/arch/xtensa/kernel/vmlinux.lds.S
@@ -85,8 +85,8 @@ SECTIONS
85 85
86 .text : 86 .text :
87 { 87 {
88 /* The .head.text section must be the first section! */ 88 /* The HEAD_TEXT section must be the first section! */
89 *(.head.text) 89 HEAD_TEXT
90 *(.literal .text) 90 *(.literal .text)
91 VMLINUX_SYMBOL(__sched_text_start) = .; 91 VMLINUX_SYMBOL(__sched_text_start) = .;
92 *(.sched.literal .sched.text) 92 *(.sched.literal .sched.text)
diff --git a/block/as-iosched.c b/block/as-iosched.c
index 631f6f44460a..c48fa670d221 100644
--- a/block/as-iosched.c
+++ b/block/as-iosched.c
@@ -17,9 +17,6 @@
17#include <linux/rbtree.h> 17#include <linux/rbtree.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19 19
20#define REQ_SYNC 1
21#define REQ_ASYNC 0
22
23/* 20/*
24 * See Documentation/block/as-iosched.txt 21 * See Documentation/block/as-iosched.txt
25 */ 22 */
@@ -93,7 +90,7 @@ struct as_data {
93 struct list_head fifo_list[2]; 90 struct list_head fifo_list[2];
94 91
95 struct request *next_rq[2]; /* next in sort order */ 92 struct request *next_rq[2]; /* next in sort order */
96 sector_t last_sector[2]; /* last REQ_SYNC & REQ_ASYNC sectors */ 93 sector_t last_sector[2]; /* last SYNC & ASYNC sectors */
97 94
98 unsigned long exit_prob; /* probability a task will exit while 95 unsigned long exit_prob; /* probability a task will exit while
99 being waited on */ 96 being waited on */
@@ -109,7 +106,7 @@ struct as_data {
109 unsigned long last_check_fifo[2]; 106 unsigned long last_check_fifo[2];
110 int changed_batch; /* 1: waiting for old batch to end */ 107 int changed_batch; /* 1: waiting for old batch to end */
111 int new_batch; /* 1: waiting on first read complete */ 108 int new_batch; /* 1: waiting on first read complete */
112 int batch_data_dir; /* current batch REQ_SYNC / REQ_ASYNC */ 109 int batch_data_dir; /* current batch SYNC / ASYNC */
113 int write_batch_count; /* max # of reqs in a write batch */ 110 int write_batch_count; /* max # of reqs in a write batch */
114 int current_write_count; /* how many requests left this batch */ 111 int current_write_count; /* how many requests left this batch */
115 int write_batch_idled; /* has the write batch gone idle? */ 112 int write_batch_idled; /* has the write batch gone idle? */
@@ -554,7 +551,7 @@ static void as_update_iohist(struct as_data *ad, struct as_io_context *aic,
554 if (aic == NULL) 551 if (aic == NULL)
555 return; 552 return;
556 553
557 if (data_dir == REQ_SYNC) { 554 if (data_dir == BLK_RW_SYNC) {
558 unsigned long in_flight = atomic_read(&aic->nr_queued) 555 unsigned long in_flight = atomic_read(&aic->nr_queued)
559 + atomic_read(&aic->nr_dispatched); 556 + atomic_read(&aic->nr_dispatched);
560 spin_lock(&aic->lock); 557 spin_lock(&aic->lock);
@@ -811,7 +808,7 @@ static void as_update_rq(struct as_data *ad, struct request *rq)
811 */ 808 */
812static void update_write_batch(struct as_data *ad) 809static void update_write_batch(struct as_data *ad)
813{ 810{
814 unsigned long batch = ad->batch_expire[REQ_ASYNC]; 811 unsigned long batch = ad->batch_expire[BLK_RW_ASYNC];
815 long write_time; 812 long write_time;
816 813
817 write_time = (jiffies - ad->current_batch_expires) + batch; 814 write_time = (jiffies - ad->current_batch_expires) + batch;
@@ -855,7 +852,7 @@ static void as_completed_request(struct request_queue *q, struct request *rq)
855 kblockd_schedule_work(q, &ad->antic_work); 852 kblockd_schedule_work(q, &ad->antic_work);
856 ad->changed_batch = 0; 853 ad->changed_batch = 0;
857 854
858 if (ad->batch_data_dir == REQ_SYNC) 855 if (ad->batch_data_dir == BLK_RW_SYNC)
859 ad->new_batch = 1; 856 ad->new_batch = 1;
860 } 857 }
861 WARN_ON(ad->nr_dispatched == 0); 858 WARN_ON(ad->nr_dispatched == 0);
@@ -869,7 +866,7 @@ static void as_completed_request(struct request_queue *q, struct request *rq)
869 if (ad->new_batch && ad->batch_data_dir == rq_is_sync(rq)) { 866 if (ad->new_batch && ad->batch_data_dir == rq_is_sync(rq)) {
870 update_write_batch(ad); 867 update_write_batch(ad);
871 ad->current_batch_expires = jiffies + 868 ad->current_batch_expires = jiffies +
872 ad->batch_expire[REQ_SYNC]; 869 ad->batch_expire[BLK_RW_SYNC];
873 ad->new_batch = 0; 870 ad->new_batch = 0;
874 } 871 }
875 872
@@ -960,7 +957,7 @@ static inline int as_batch_expired(struct as_data *ad)
960 if (ad->changed_batch || ad->new_batch) 957 if (ad->changed_batch || ad->new_batch)
961 return 0; 958 return 0;
962 959
963 if (ad->batch_data_dir == REQ_SYNC) 960 if (ad->batch_data_dir == BLK_RW_SYNC)
964 /* TODO! add a check so a complete fifo gets written? */ 961 /* TODO! add a check so a complete fifo gets written? */
965 return time_after(jiffies, ad->current_batch_expires); 962 return time_after(jiffies, ad->current_batch_expires);
966 963
@@ -986,7 +983,7 @@ static void as_move_to_dispatch(struct as_data *ad, struct request *rq)
986 */ 983 */
987 ad->last_sector[data_dir] = rq->sector + rq->nr_sectors; 984 ad->last_sector[data_dir] = rq->sector + rq->nr_sectors;
988 985
989 if (data_dir == REQ_SYNC) { 986 if (data_dir == BLK_RW_SYNC) {
990 struct io_context *ioc = RQ_IOC(rq); 987 struct io_context *ioc = RQ_IOC(rq);
991 /* In case we have to anticipate after this */ 988 /* In case we have to anticipate after this */
992 copy_io_context(&ad->io_context, &ioc); 989 copy_io_context(&ad->io_context, &ioc);
@@ -1025,41 +1022,41 @@ static void as_move_to_dispatch(struct as_data *ad, struct request *rq)
1025static int as_dispatch_request(struct request_queue *q, int force) 1022static int as_dispatch_request(struct request_queue *q, int force)
1026{ 1023{
1027 struct as_data *ad = q->elevator->elevator_data; 1024 struct as_data *ad = q->elevator->elevator_data;
1028 const int reads = !list_empty(&ad->fifo_list[REQ_SYNC]); 1025 const int reads = !list_empty(&ad->fifo_list[BLK_RW_SYNC]);
1029 const int writes = !list_empty(&ad->fifo_list[REQ_ASYNC]); 1026 const int writes = !list_empty(&ad->fifo_list[BLK_RW_ASYNC]);
1030 struct request *rq; 1027 struct request *rq;
1031 1028
1032 if (unlikely(force)) { 1029 if (unlikely(force)) {
1033 /* 1030 /*
1034 * Forced dispatch, accounting is useless. Reset 1031 * Forced dispatch, accounting is useless. Reset
1035 * accounting states and dump fifo_lists. Note that 1032 * accounting states and dump fifo_lists. Note that
1036 * batch_data_dir is reset to REQ_SYNC to avoid 1033 * batch_data_dir is reset to BLK_RW_SYNC to avoid
1037 * screwing write batch accounting as write batch 1034 * screwing write batch accounting as write batch
1038 * accounting occurs on W->R transition. 1035 * accounting occurs on W->R transition.
1039 */ 1036 */
1040 int dispatched = 0; 1037 int dispatched = 0;
1041 1038
1042 ad->batch_data_dir = REQ_SYNC; 1039 ad->batch_data_dir = BLK_RW_SYNC;
1043 ad->changed_batch = 0; 1040 ad->changed_batch = 0;
1044 ad->new_batch = 0; 1041 ad->new_batch = 0;
1045 1042
1046 while (ad->next_rq[REQ_SYNC]) { 1043 while (ad->next_rq[BLK_RW_SYNC]) {
1047 as_move_to_dispatch(ad, ad->next_rq[REQ_SYNC]); 1044 as_move_to_dispatch(ad, ad->next_rq[BLK_RW_SYNC]);
1048 dispatched++; 1045 dispatched++;
1049 } 1046 }
1050 ad->last_check_fifo[REQ_SYNC] = jiffies; 1047 ad->last_check_fifo[BLK_RW_SYNC] = jiffies;
1051 1048
1052 while (ad->next_rq[REQ_ASYNC]) { 1049 while (ad->next_rq[BLK_RW_ASYNC]) {
1053 as_move_to_dispatch(ad, ad->next_rq[REQ_ASYNC]); 1050 as_move_to_dispatch(ad, ad->next_rq[BLK_RW_ASYNC]);
1054 dispatched++; 1051 dispatched++;
1055 } 1052 }
1056 ad->last_check_fifo[REQ_ASYNC] = jiffies; 1053 ad->last_check_fifo[BLK_RW_ASYNC] = jiffies;
1057 1054
1058 return dispatched; 1055 return dispatched;
1059 } 1056 }
1060 1057
1061 /* Signal that the write batch was uncontended, so we can't time it */ 1058 /* Signal that the write batch was uncontended, so we can't time it */
1062 if (ad->batch_data_dir == REQ_ASYNC && !reads) { 1059 if (ad->batch_data_dir == BLK_RW_ASYNC && !reads) {
1063 if (ad->current_write_count == 0 || !writes) 1060 if (ad->current_write_count == 0 || !writes)
1064 ad->write_batch_idled = 1; 1061 ad->write_batch_idled = 1;
1065 } 1062 }
@@ -1076,8 +1073,8 @@ static int as_dispatch_request(struct request_queue *q, int force)
1076 */ 1073 */
1077 rq = ad->next_rq[ad->batch_data_dir]; 1074 rq = ad->next_rq[ad->batch_data_dir];
1078 1075
1079 if (ad->batch_data_dir == REQ_SYNC && ad->antic_expire) { 1076 if (ad->batch_data_dir == BLK_RW_SYNC && ad->antic_expire) {
1080 if (as_fifo_expired(ad, REQ_SYNC)) 1077 if (as_fifo_expired(ad, BLK_RW_SYNC))
1081 goto fifo_expired; 1078 goto fifo_expired;
1082 1079
1083 if (as_can_anticipate(ad, rq)) { 1080 if (as_can_anticipate(ad, rq)) {
@@ -1090,7 +1087,7 @@ static int as_dispatch_request(struct request_queue *q, int force)
1090 /* we have a "next request" */ 1087 /* we have a "next request" */
1091 if (reads && !writes) 1088 if (reads && !writes)
1092 ad->current_batch_expires = 1089 ad->current_batch_expires =
1093 jiffies + ad->batch_expire[REQ_SYNC]; 1090 jiffies + ad->batch_expire[BLK_RW_SYNC];
1094 goto dispatch_request; 1091 goto dispatch_request;
1095 } 1092 }
1096 } 1093 }
@@ -1101,20 +1098,20 @@ static int as_dispatch_request(struct request_queue *q, int force)
1101 */ 1098 */
1102 1099
1103 if (reads) { 1100 if (reads) {
1104 BUG_ON(RB_EMPTY_ROOT(&ad->sort_list[REQ_SYNC])); 1101 BUG_ON(RB_EMPTY_ROOT(&ad->sort_list[BLK_RW_SYNC]));
1105 1102
1106 if (writes && ad->batch_data_dir == REQ_SYNC) 1103 if (writes && ad->batch_data_dir == BLK_RW_SYNC)
1107 /* 1104 /*
1108 * Last batch was a read, switch to writes 1105 * Last batch was a read, switch to writes
1109 */ 1106 */
1110 goto dispatch_writes; 1107 goto dispatch_writes;
1111 1108
1112 if (ad->batch_data_dir == REQ_ASYNC) { 1109 if (ad->batch_data_dir == BLK_RW_ASYNC) {
1113 WARN_ON(ad->new_batch); 1110 WARN_ON(ad->new_batch);
1114 ad->changed_batch = 1; 1111 ad->changed_batch = 1;
1115 } 1112 }
1116 ad->batch_data_dir = REQ_SYNC; 1113 ad->batch_data_dir = BLK_RW_SYNC;
1117 rq = rq_entry_fifo(ad->fifo_list[REQ_SYNC].next); 1114 rq = rq_entry_fifo(ad->fifo_list[BLK_RW_SYNC].next);
1118 ad->last_check_fifo[ad->batch_data_dir] = jiffies; 1115 ad->last_check_fifo[ad->batch_data_dir] = jiffies;
1119 goto dispatch_request; 1116 goto dispatch_request;
1120 } 1117 }
@@ -1125,9 +1122,9 @@ static int as_dispatch_request(struct request_queue *q, int force)
1125 1122
1126 if (writes) { 1123 if (writes) {
1127dispatch_writes: 1124dispatch_writes:
1128 BUG_ON(RB_EMPTY_ROOT(&ad->sort_list[REQ_ASYNC])); 1125 BUG_ON(RB_EMPTY_ROOT(&ad->sort_list[BLK_RW_ASYNC]));
1129 1126
1130 if (ad->batch_data_dir == REQ_SYNC) { 1127 if (ad->batch_data_dir == BLK_RW_SYNC) {
1131 ad->changed_batch = 1; 1128 ad->changed_batch = 1;
1132 1129
1133 /* 1130 /*
@@ -1137,11 +1134,11 @@ dispatch_writes:
1137 */ 1134 */
1138 ad->new_batch = 0; 1135 ad->new_batch = 0;
1139 } 1136 }
1140 ad->batch_data_dir = REQ_ASYNC; 1137 ad->batch_data_dir = BLK_RW_ASYNC;
1141 ad->current_write_count = ad->write_batch_count; 1138 ad->current_write_count = ad->write_batch_count;
1142 ad->write_batch_idled = 0; 1139 ad->write_batch_idled = 0;
1143 rq = rq_entry_fifo(ad->fifo_list[REQ_ASYNC].next); 1140 rq = rq_entry_fifo(ad->fifo_list[BLK_RW_ASYNC].next);
1144 ad->last_check_fifo[REQ_ASYNC] = jiffies; 1141 ad->last_check_fifo[BLK_RW_ASYNC] = jiffies;
1145 goto dispatch_request; 1142 goto dispatch_request;
1146 } 1143 }
1147 1144
@@ -1164,9 +1161,9 @@ fifo_expired:
1164 if (ad->nr_dispatched) 1161 if (ad->nr_dispatched)
1165 return 0; 1162 return 0;
1166 1163
1167 if (ad->batch_data_dir == REQ_ASYNC) 1164 if (ad->batch_data_dir == BLK_RW_ASYNC)
1168 ad->current_batch_expires = jiffies + 1165 ad->current_batch_expires = jiffies +
1169 ad->batch_expire[REQ_ASYNC]; 1166 ad->batch_expire[BLK_RW_ASYNC];
1170 else 1167 else
1171 ad->new_batch = 1; 1168 ad->new_batch = 1;
1172 1169
@@ -1238,8 +1235,8 @@ static int as_queue_empty(struct request_queue *q)
1238{ 1235{
1239 struct as_data *ad = q->elevator->elevator_data; 1236 struct as_data *ad = q->elevator->elevator_data;
1240 1237
1241 return list_empty(&ad->fifo_list[REQ_ASYNC]) 1238 return list_empty(&ad->fifo_list[BLK_RW_ASYNC])
1242 && list_empty(&ad->fifo_list[REQ_SYNC]); 1239 && list_empty(&ad->fifo_list[BLK_RW_SYNC]);
1243} 1240}
1244 1241
1245static int 1242static int
@@ -1346,8 +1343,8 @@ static void as_exit_queue(struct elevator_queue *e)
1346 del_timer_sync(&ad->antic_timer); 1343 del_timer_sync(&ad->antic_timer);
1347 cancel_work_sync(&ad->antic_work); 1344 cancel_work_sync(&ad->antic_work);
1348 1345
1349 BUG_ON(!list_empty(&ad->fifo_list[REQ_SYNC])); 1346 BUG_ON(!list_empty(&ad->fifo_list[BLK_RW_SYNC]));
1350 BUG_ON(!list_empty(&ad->fifo_list[REQ_ASYNC])); 1347 BUG_ON(!list_empty(&ad->fifo_list[BLK_RW_ASYNC]));
1351 1348
1352 put_io_context(ad->io_context); 1349 put_io_context(ad->io_context);
1353 kfree(ad); 1350 kfree(ad);
@@ -1372,18 +1369,18 @@ static void *as_init_queue(struct request_queue *q)
1372 init_timer(&ad->antic_timer); 1369 init_timer(&ad->antic_timer);
1373 INIT_WORK(&ad->antic_work, as_work_handler); 1370 INIT_WORK(&ad->antic_work, as_work_handler);
1374 1371
1375 INIT_LIST_HEAD(&ad->fifo_list[REQ_SYNC]); 1372 INIT_LIST_HEAD(&ad->fifo_list[BLK_RW_SYNC]);
1376 INIT_LIST_HEAD(&ad->fifo_list[REQ_ASYNC]); 1373 INIT_LIST_HEAD(&ad->fifo_list[BLK_RW_ASYNC]);
1377 ad->sort_list[REQ_SYNC] = RB_ROOT; 1374 ad->sort_list[BLK_RW_SYNC] = RB_ROOT;
1378 ad->sort_list[REQ_ASYNC] = RB_ROOT; 1375 ad->sort_list[BLK_RW_ASYNC] = RB_ROOT;
1379 ad->fifo_expire[REQ_SYNC] = default_read_expire; 1376 ad->fifo_expire[BLK_RW_SYNC] = default_read_expire;
1380 ad->fifo_expire[REQ_ASYNC] = default_write_expire; 1377 ad->fifo_expire[BLK_RW_ASYNC] = default_write_expire;
1381 ad->antic_expire = default_antic_expire; 1378 ad->antic_expire = default_antic_expire;
1382 ad->batch_expire[REQ_SYNC] = default_read_batch_expire; 1379 ad->batch_expire[BLK_RW_SYNC] = default_read_batch_expire;
1383 ad->batch_expire[REQ_ASYNC] = default_write_batch_expire; 1380 ad->batch_expire[BLK_RW_ASYNC] = default_write_batch_expire;
1384 1381
1385 ad->current_batch_expires = jiffies + ad->batch_expire[REQ_SYNC]; 1382 ad->current_batch_expires = jiffies + ad->batch_expire[BLK_RW_SYNC];
1386 ad->write_batch_count = ad->batch_expire[REQ_ASYNC] / 10; 1383 ad->write_batch_count = ad->batch_expire[BLK_RW_ASYNC] / 10;
1387 if (ad->write_batch_count < 2) 1384 if (ad->write_batch_count < 2)
1388 ad->write_batch_count = 2; 1385 ad->write_batch_count = 2;
1389 1386
@@ -1432,11 +1429,11 @@ static ssize_t __FUNC(struct elevator_queue *e, char *page) \
1432 struct as_data *ad = e->elevator_data; \ 1429 struct as_data *ad = e->elevator_data; \
1433 return as_var_show(jiffies_to_msecs((__VAR)), (page)); \ 1430 return as_var_show(jiffies_to_msecs((__VAR)), (page)); \
1434} 1431}
1435SHOW_FUNCTION(as_read_expire_show, ad->fifo_expire[REQ_SYNC]); 1432SHOW_FUNCTION(as_read_expire_show, ad->fifo_expire[BLK_RW_SYNC]);
1436SHOW_FUNCTION(as_write_expire_show, ad->fifo_expire[REQ_ASYNC]); 1433SHOW_FUNCTION(as_write_expire_show, ad->fifo_expire[BLK_RW_ASYNC]);
1437SHOW_FUNCTION(as_antic_expire_show, ad->antic_expire); 1434SHOW_FUNCTION(as_antic_expire_show, ad->antic_expire);
1438SHOW_FUNCTION(as_read_batch_expire_show, ad->batch_expire[REQ_SYNC]); 1435SHOW_FUNCTION(as_read_batch_expire_show, ad->batch_expire[BLK_RW_SYNC]);
1439SHOW_FUNCTION(as_write_batch_expire_show, ad->batch_expire[REQ_ASYNC]); 1436SHOW_FUNCTION(as_write_batch_expire_show, ad->batch_expire[BLK_RW_ASYNC]);
1440#undef SHOW_FUNCTION 1437#undef SHOW_FUNCTION
1441 1438
1442#define STORE_FUNCTION(__FUNC, __PTR, MIN, MAX) \ 1439#define STORE_FUNCTION(__FUNC, __PTR, MIN, MAX) \
@@ -1451,13 +1448,14 @@ static ssize_t __FUNC(struct elevator_queue *e, const char *page, size_t count)
1451 *(__PTR) = msecs_to_jiffies(*(__PTR)); \ 1448 *(__PTR) = msecs_to_jiffies(*(__PTR)); \
1452 return ret; \ 1449 return ret; \
1453} 1450}
1454STORE_FUNCTION(as_read_expire_store, &ad->fifo_expire[REQ_SYNC], 0, INT_MAX); 1451STORE_FUNCTION(as_read_expire_store, &ad->fifo_expire[BLK_RW_SYNC], 0, INT_MAX);
1455STORE_FUNCTION(as_write_expire_store, &ad->fifo_expire[REQ_ASYNC], 0, INT_MAX); 1452STORE_FUNCTION(as_write_expire_store,
1453 &ad->fifo_expire[BLK_RW_ASYNC], 0, INT_MAX);
1456STORE_FUNCTION(as_antic_expire_store, &ad->antic_expire, 0, INT_MAX); 1454STORE_FUNCTION(as_antic_expire_store, &ad->antic_expire, 0, INT_MAX);
1457STORE_FUNCTION(as_read_batch_expire_store, 1455STORE_FUNCTION(as_read_batch_expire_store,
1458 &ad->batch_expire[REQ_SYNC], 0, INT_MAX); 1456 &ad->batch_expire[BLK_RW_SYNC], 0, INT_MAX);
1459STORE_FUNCTION(as_write_batch_expire_store, 1457STORE_FUNCTION(as_write_batch_expire_store,
1460 &ad->batch_expire[REQ_ASYNC], 0, INT_MAX); 1458 &ad->batch_expire[BLK_RW_ASYNC], 0, INT_MAX);
1461#undef STORE_FUNCTION 1459#undef STORE_FUNCTION
1462 1460
1463#define AS_ATTR(name) \ 1461#define AS_ATTR(name) \
diff --git a/block/blk-barrier.c b/block/blk-barrier.c
index f7dae57e6cab..20b4111fa050 100644
--- a/block/blk-barrier.c
+++ b/block/blk-barrier.c
@@ -319,9 +319,6 @@ int blkdev_issue_flush(struct block_device *bdev, sector_t *error_sector)
319 return -ENXIO; 319 return -ENXIO;
320 320
321 bio = bio_alloc(GFP_KERNEL, 0); 321 bio = bio_alloc(GFP_KERNEL, 0);
322 if (!bio)
323 return -ENOMEM;
324
325 bio->bi_end_io = bio_end_empty_barrier; 322 bio->bi_end_io = bio_end_empty_barrier;
326 bio->bi_private = &wait; 323 bio->bi_private = &wait;
327 bio->bi_bdev = bdev; 324 bio->bi_bdev = bdev;
diff --git a/block/blk-core.c b/block/blk-core.c
index 07ab75403e1a..2998fe3a2377 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -643,7 +643,7 @@ static inline void blk_free_request(struct request_queue *q, struct request *rq)
643} 643}
644 644
645static struct request * 645static struct request *
646blk_alloc_request(struct request_queue *q, int rw, int priv, gfp_t gfp_mask) 646blk_alloc_request(struct request_queue *q, int flags, int priv, gfp_t gfp_mask)
647{ 647{
648 struct request *rq = mempool_alloc(q->rq.rq_pool, gfp_mask); 648 struct request *rq = mempool_alloc(q->rq.rq_pool, gfp_mask);
649 649
@@ -652,7 +652,7 @@ blk_alloc_request(struct request_queue *q, int rw, int priv, gfp_t gfp_mask)
652 652
653 blk_rq_init(q, rq); 653 blk_rq_init(q, rq);
654 654
655 rq->cmd_flags = rw | REQ_ALLOCED; 655 rq->cmd_flags = flags | REQ_ALLOCED;
656 656
657 if (priv) { 657 if (priv) {
658 if (unlikely(elv_set_request(q, rq, gfp_mask))) { 658 if (unlikely(elv_set_request(q, rq, gfp_mask))) {
@@ -792,6 +792,8 @@ static struct request *get_request(struct request_queue *q, int rw_flags,
792 if (priv) 792 if (priv)
793 rl->elvpriv++; 793 rl->elvpriv++;
794 794
795 if (blk_queue_io_stat(q))
796 rw_flags |= REQ_IO_STAT;
795 spin_unlock_irq(q->queue_lock); 797 spin_unlock_irq(q->queue_lock);
796 798
797 rq = blk_alloc_request(q, rw_flags, priv, gfp_mask); 799 rq = blk_alloc_request(q, rw_flags, priv, gfp_mask);
diff --git a/block/blk-merge.c b/block/blk-merge.c
index 63760ca3da0f..23d2a6fe34a3 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -402,7 +402,10 @@ static int attempt_merge(struct request_queue *q, struct request *req,
402 402
403 elv_merge_requests(q, req, next); 403 elv_merge_requests(q, req, next);
404 404
405 blk_account_io_merge(req); 405 /*
406 * 'next' is going away, so update stats accordingly
407 */
408 blk_account_io_merge(next);
406 409
407 req->ioprio = ioprio_best(req->ioprio, next->ioprio); 410 req->ioprio = ioprio_best(req->ioprio, next->ioprio);
408 if (blk_rq_cpu_valid(next)) 411 if (blk_rq_cpu_valid(next))
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 69c42adde52b..57af728d94bb 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -156,26 +156,28 @@ EXPORT_SYMBOL(blk_queue_make_request);
156 156
157/** 157/**
158 * blk_queue_bounce_limit - set bounce buffer limit for queue 158 * blk_queue_bounce_limit - set bounce buffer limit for queue
159 * @q: the request queue for the device 159 * @q: the request queue for the device
160 * @dma_addr: bus address limit 160 * @dma_mask: the maximum address the device can handle
161 * 161 *
162 * Description: 162 * Description:
163 * Different hardware can have different requirements as to what pages 163 * Different hardware can have different requirements as to what pages
164 * it can do I/O directly to. A low level driver can call 164 * it can do I/O directly to. A low level driver can call
165 * blk_queue_bounce_limit to have lower memory pages allocated as bounce 165 * blk_queue_bounce_limit to have lower memory pages allocated as bounce
166 * buffers for doing I/O to pages residing above @dma_addr. 166 * buffers for doing I/O to pages residing above @dma_mask.
167 **/ 167 **/
168void blk_queue_bounce_limit(struct request_queue *q, u64 dma_addr) 168void blk_queue_bounce_limit(struct request_queue *q, u64 dma_mask)
169{ 169{
170 unsigned long b_pfn = dma_addr >> PAGE_SHIFT; 170 unsigned long b_pfn = dma_mask >> PAGE_SHIFT;
171 int dma = 0; 171 int dma = 0;
172 172
173 q->bounce_gfp = GFP_NOIO; 173 q->bounce_gfp = GFP_NOIO;
174#if BITS_PER_LONG == 64 174#if BITS_PER_LONG == 64
175 /* Assume anything <= 4GB can be handled by IOMMU. 175 /*
176 Actually some IOMMUs can handle everything, but I don't 176 * Assume anything <= 4GB can be handled by IOMMU. Actually
177 know of a way to test this here. */ 177 * some IOMMUs can handle everything, but I don't know of a
178 if (b_pfn < (min_t(u64, 0x100000000UL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) 178 * way to test this here.
179 */
180 if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
179 dma = 1; 181 dma = 1;
180 q->bounce_pfn = max_low_pfn; 182 q->bounce_pfn = max_low_pfn;
181#else 183#else
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index 73f36beff5cd..3ff9bba3379a 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -209,14 +209,10 @@ static ssize_t queue_iostats_store(struct request_queue *q, const char *page,
209 ssize_t ret = queue_var_store(&stats, page, count); 209 ssize_t ret = queue_var_store(&stats, page, count);
210 210
211 spin_lock_irq(q->queue_lock); 211 spin_lock_irq(q->queue_lock);
212 elv_quisce_start(q);
213
214 if (stats) 212 if (stats)
215 queue_flag_set(QUEUE_FLAG_IO_STAT, q); 213 queue_flag_set(QUEUE_FLAG_IO_STAT, q);
216 else 214 else
217 queue_flag_clear(QUEUE_FLAG_IO_STAT, q); 215 queue_flag_clear(QUEUE_FLAG_IO_STAT, q);
218
219 elv_quisce_end(q);
220 spin_unlock_irq(q->queue_lock); 216 spin_unlock_irq(q->queue_lock);
221 217
222 return ret; 218 return ret;
diff --git a/block/blk-timeout.c b/block/blk-timeout.c
index bbbdc4b8ccf2..1ec0d503cacd 100644
--- a/block/blk-timeout.c
+++ b/block/blk-timeout.c
@@ -211,6 +211,12 @@ void blk_abort_queue(struct request_queue *q)
211 struct request *rq, *tmp; 211 struct request *rq, *tmp;
212 LIST_HEAD(list); 212 LIST_HEAD(list);
213 213
214 /*
215 * Not a request based block device, nothing to abort
216 */
217 if (!q->request_fn)
218 return;
219
214 spin_lock_irqsave(q->queue_lock, flags); 220 spin_lock_irqsave(q->queue_lock, flags);
215 221
216 elv_abort_queue(q); 222 elv_abort_queue(q);
@@ -224,6 +230,13 @@ void blk_abort_queue(struct request_queue *q)
224 list_for_each_entry_safe(rq, tmp, &list, timeout_list) 230 list_for_each_entry_safe(rq, tmp, &list, timeout_list)
225 blk_abort_request(rq); 231 blk_abort_request(rq);
226 232
233 /*
234 * Occasionally, blk_abort_request() will return without
235 * deleting the element from the list. Make sure we add those back
236 * instead of leaving them on the local stack list.
237 */
238 list_splice(&list, &q->timeout_list);
239
227 spin_unlock_irqrestore(q->queue_lock, flags); 240 spin_unlock_irqrestore(q->queue_lock, flags);
228 241
229} 242}
diff --git a/block/blk.h b/block/blk.h
index 24fcaeeaf620..79c85f7c9ff5 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -70,8 +70,8 @@ void blk_queue_congestion_threshold(struct request_queue *q);
70 70
71int blk_dev_init(void); 71int blk_dev_init(void);
72 72
73void elv_quisce_start(struct request_queue *q); 73void elv_quiesce_start(struct request_queue *q);
74void elv_quisce_end(struct request_queue *q); 74void elv_quiesce_end(struct request_queue *q);
75 75
76 76
77/* 77/*
@@ -114,12 +114,7 @@ static inline int blk_cpu_to_group(int cpu)
114 114
115static inline int blk_do_io_stat(struct request *rq) 115static inline int blk_do_io_stat(struct request *rq)
116{ 116{
117 struct gendisk *disk = rq->rq_disk; 117 return rq->rq_disk && blk_rq_io_stat(rq);
118
119 if (!disk || !disk->queue)
120 return 0;
121
122 return blk_queue_io_stat(disk->queue) && (rq->cmd_flags & REQ_ELVPRIV);
123} 118}
124 119
125#endif 120#endif
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index a4809de6fea6..a55a9bd75bd1 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -56,9 +56,6 @@ static DEFINE_SPINLOCK(ioc_gone_lock);
56#define cfq_class_idle(cfqq) ((cfqq)->ioprio_class == IOPRIO_CLASS_IDLE) 56#define cfq_class_idle(cfqq) ((cfqq)->ioprio_class == IOPRIO_CLASS_IDLE)
57#define cfq_class_rt(cfqq) ((cfqq)->ioprio_class == IOPRIO_CLASS_RT) 57#define cfq_class_rt(cfqq) ((cfqq)->ioprio_class == IOPRIO_CLASS_RT)
58 58
59#define ASYNC (0)
60#define SYNC (1)
61
62#define sample_valid(samples) ((samples) > 80) 59#define sample_valid(samples) ((samples) > 80)
63 60
64/* 61/*
@@ -83,6 +80,14 @@ struct cfq_data {
83 * rr list of queues with requests and the count of them 80 * rr list of queues with requests and the count of them
84 */ 81 */
85 struct cfq_rb_root service_tree; 82 struct cfq_rb_root service_tree;
83
84 /*
85 * Each priority tree is sorted by next_request position. These
86 * trees are used when determining if two or more queues are
87 * interleaving requests (see cfq_close_cooperator).
88 */
89 struct rb_root prio_trees[CFQ_PRIO_LISTS];
90
86 unsigned int busy_queues; 91 unsigned int busy_queues;
87 /* 92 /*
88 * Used to track any pending rt requests so we can pre-empt current 93 * Used to track any pending rt requests so we can pre-empt current
@@ -147,6 +152,10 @@ struct cfq_queue {
147 struct rb_node rb_node; 152 struct rb_node rb_node;
148 /* service_tree key */ 153 /* service_tree key */
149 unsigned long rb_key; 154 unsigned long rb_key;
155 /* prio tree member */
156 struct rb_node p_node;
157 /* prio tree root we belong to, if any */
158 struct rb_root *p_root;
150 /* sorted list of pending requests */ 159 /* sorted list of pending requests */
151 struct rb_root sort_list; 160 struct rb_root sort_list;
152 /* if fifo isn't expired, next request to serve */ 161 /* if fifo isn't expired, next request to serve */
@@ -185,6 +194,7 @@ enum cfqq_state_flags {
185 CFQ_CFQQ_FLAG_prio_changed, /* task priority has changed */ 194 CFQ_CFQQ_FLAG_prio_changed, /* task priority has changed */
186 CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */ 195 CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */
187 CFQ_CFQQ_FLAG_sync, /* synchronous queue */ 196 CFQ_CFQQ_FLAG_sync, /* synchronous queue */
197 CFQ_CFQQ_FLAG_coop, /* has done a coop jump of the queue */
188}; 198};
189 199
190#define CFQ_CFQQ_FNS(name) \ 200#define CFQ_CFQQ_FNS(name) \
@@ -211,6 +221,7 @@ CFQ_CFQQ_FNS(idle_window);
211CFQ_CFQQ_FNS(prio_changed); 221CFQ_CFQQ_FNS(prio_changed);
212CFQ_CFQQ_FNS(slice_new); 222CFQ_CFQQ_FNS(slice_new);
213CFQ_CFQQ_FNS(sync); 223CFQ_CFQQ_FNS(sync);
224CFQ_CFQQ_FNS(coop);
214#undef CFQ_CFQQ_FNS 225#undef CFQ_CFQQ_FNS
215 226
216#define cfq_log_cfqq(cfqd, cfqq, fmt, args...) \ 227#define cfq_log_cfqq(cfqd, cfqq, fmt, args...) \
@@ -419,13 +430,17 @@ static struct cfq_queue *cfq_rb_first(struct cfq_rb_root *root)
419 return NULL; 430 return NULL;
420} 431}
421 432
433static void rb_erase_init(struct rb_node *n, struct rb_root *root)
434{
435 rb_erase(n, root);
436 RB_CLEAR_NODE(n);
437}
438
422static void cfq_rb_erase(struct rb_node *n, struct cfq_rb_root *root) 439static void cfq_rb_erase(struct rb_node *n, struct cfq_rb_root *root)
423{ 440{
424 if (root->left == n) 441 if (root->left == n)
425 root->left = NULL; 442 root->left = NULL;
426 443 rb_erase_init(n, &root->rb);
427 rb_erase(n, &root->rb);
428 RB_CLEAR_NODE(n);
429} 444}
430 445
431/* 446/*
@@ -470,8 +485,8 @@ static unsigned long cfq_slice_offset(struct cfq_data *cfqd,
470 * requests waiting to be processed. It is sorted in the order that 485 * requests waiting to be processed. It is sorted in the order that
471 * we will service the queues. 486 * we will service the queues.
472 */ 487 */
473static void cfq_service_tree_add(struct cfq_data *cfqd, 488static void cfq_service_tree_add(struct cfq_data *cfqd, struct cfq_queue *cfqq,
474 struct cfq_queue *cfqq, int add_front) 489 int add_front)
475{ 490{
476 struct rb_node **p, *parent; 491 struct rb_node **p, *parent;
477 struct cfq_queue *__cfqq; 492 struct cfq_queue *__cfqq;
@@ -544,6 +559,67 @@ static void cfq_service_tree_add(struct cfq_data *cfqd,
544 rb_insert_color(&cfqq->rb_node, &cfqd->service_tree.rb); 559 rb_insert_color(&cfqq->rb_node, &cfqd->service_tree.rb);
545} 560}
546 561
562static struct cfq_queue *
563cfq_prio_tree_lookup(struct cfq_data *cfqd, struct rb_root *root,
564 sector_t sector, struct rb_node **ret_parent,
565 struct rb_node ***rb_link)
566{
567 struct rb_node **p, *parent;
568 struct cfq_queue *cfqq = NULL;
569
570 parent = NULL;
571 p = &root->rb_node;
572 while (*p) {
573 struct rb_node **n;
574
575 parent = *p;
576 cfqq = rb_entry(parent, struct cfq_queue, p_node);
577
578 /*
579 * Sort strictly based on sector. Smallest to the left,
580 * largest to the right.
581 */
582 if (sector > cfqq->next_rq->sector)
583 n = &(*p)->rb_right;
584 else if (sector < cfqq->next_rq->sector)
585 n = &(*p)->rb_left;
586 else
587 break;
588 p = n;
589 cfqq = NULL;
590 }
591
592 *ret_parent = parent;
593 if (rb_link)
594 *rb_link = p;
595 return cfqq;
596}
597
598static void cfq_prio_tree_add(struct cfq_data *cfqd, struct cfq_queue *cfqq)
599{
600 struct rb_node **p, *parent;
601 struct cfq_queue *__cfqq;
602
603 if (cfqq->p_root) {
604 rb_erase(&cfqq->p_node, cfqq->p_root);
605 cfqq->p_root = NULL;
606 }
607
608 if (cfq_class_idle(cfqq))
609 return;
610 if (!cfqq->next_rq)
611 return;
612
613 cfqq->p_root = &cfqd->prio_trees[cfqq->org_ioprio];
614 __cfqq = cfq_prio_tree_lookup(cfqd, cfqq->p_root, cfqq->next_rq->sector,
615 &parent, &p);
616 if (!__cfqq) {
617 rb_link_node(&cfqq->p_node, parent, p);
618 rb_insert_color(&cfqq->p_node, cfqq->p_root);
619 } else
620 cfqq->p_root = NULL;
621}
622
547/* 623/*
548 * Update cfqq's position in the service tree. 624 * Update cfqq's position in the service tree.
549 */ 625 */
@@ -552,8 +628,10 @@ static void cfq_resort_rr_list(struct cfq_data *cfqd, struct cfq_queue *cfqq)
552 /* 628 /*
553 * Resorting requires the cfqq to be on the RR list already. 629 * Resorting requires the cfqq to be on the RR list already.
554 */ 630 */
555 if (cfq_cfqq_on_rr(cfqq)) 631 if (cfq_cfqq_on_rr(cfqq)) {
556 cfq_service_tree_add(cfqd, cfqq, 0); 632 cfq_service_tree_add(cfqd, cfqq, 0);
633 cfq_prio_tree_add(cfqd, cfqq);
634 }
557} 635}
558 636
559/* 637/*
@@ -584,6 +662,10 @@ static void cfq_del_cfqq_rr(struct cfq_data *cfqd, struct cfq_queue *cfqq)
584 662
585 if (!RB_EMPTY_NODE(&cfqq->rb_node)) 663 if (!RB_EMPTY_NODE(&cfqq->rb_node))
586 cfq_rb_erase(&cfqq->rb_node, &cfqd->service_tree); 664 cfq_rb_erase(&cfqq->rb_node, &cfqd->service_tree);
665 if (cfqq->p_root) {
666 rb_erase(&cfqq->p_node, cfqq->p_root);
667 cfqq->p_root = NULL;
668 }
587 669
588 BUG_ON(!cfqd->busy_queues); 670 BUG_ON(!cfqd->busy_queues);
589 cfqd->busy_queues--; 671 cfqd->busy_queues--;
@@ -613,7 +695,7 @@ static void cfq_add_rq_rb(struct request *rq)
613{ 695{
614 struct cfq_queue *cfqq = RQ_CFQQ(rq); 696 struct cfq_queue *cfqq = RQ_CFQQ(rq);
615 struct cfq_data *cfqd = cfqq->cfqd; 697 struct cfq_data *cfqd = cfqq->cfqd;
616 struct request *__alias; 698 struct request *__alias, *prev;
617 699
618 cfqq->queued[rq_is_sync(rq)]++; 700 cfqq->queued[rq_is_sync(rq)]++;
619 701
@@ -630,7 +712,15 @@ static void cfq_add_rq_rb(struct request *rq)
630 /* 712 /*
631 * check if this request is a better next-serve candidate 713 * check if this request is a better next-serve candidate
632 */ 714 */
715 prev = cfqq->next_rq;
633 cfqq->next_rq = cfq_choose_req(cfqd, cfqq->next_rq, rq); 716 cfqq->next_rq = cfq_choose_req(cfqd, cfqq->next_rq, rq);
717
718 /*
719 * adjust priority tree position, if ->next_rq changes
720 */
721 if (prev != cfqq->next_rq)
722 cfq_prio_tree_add(cfqd, cfqq);
723
634 BUG_ON(!cfqq->next_rq); 724 BUG_ON(!cfqq->next_rq);
635} 725}
636 726
@@ -843,11 +933,15 @@ static struct cfq_queue *cfq_get_next_queue(struct cfq_data *cfqd)
843/* 933/*
844 * Get and set a new active queue for service. 934 * Get and set a new active queue for service.
845 */ 935 */
846static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd) 936static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd,
937 struct cfq_queue *cfqq)
847{ 938{
848 struct cfq_queue *cfqq; 939 if (!cfqq) {
940 cfqq = cfq_get_next_queue(cfqd);
941 if (cfqq)
942 cfq_clear_cfqq_coop(cfqq);
943 }
849 944
850 cfqq = cfq_get_next_queue(cfqd);
851 __cfq_set_active_queue(cfqd, cfqq); 945 __cfq_set_active_queue(cfqd, cfqq);
852 return cfqq; 946 return cfqq;
853} 947}
@@ -861,28 +955,100 @@ static inline sector_t cfq_dist_from_last(struct cfq_data *cfqd,
861 return cfqd->last_position - rq->sector; 955 return cfqd->last_position - rq->sector;
862} 956}
863 957
958#define CIC_SEEK_THR 8 * 1024
959#define CIC_SEEKY(cic) ((cic)->seek_mean > CIC_SEEK_THR)
960
864static inline int cfq_rq_close(struct cfq_data *cfqd, struct request *rq) 961static inline int cfq_rq_close(struct cfq_data *cfqd, struct request *rq)
865{ 962{
866 struct cfq_io_context *cic = cfqd->active_cic; 963 struct cfq_io_context *cic = cfqd->active_cic;
964 sector_t sdist = cic->seek_mean;
867 965
868 if (!sample_valid(cic->seek_samples)) 966 if (!sample_valid(cic->seek_samples))
869 return 0; 967 sdist = CIC_SEEK_THR;
968
969 return cfq_dist_from_last(cfqd, rq) <= sdist;
970}
971
972static struct cfq_queue *cfqq_close(struct cfq_data *cfqd,
973 struct cfq_queue *cur_cfqq)
974{
975 struct rb_root *root = &cfqd->prio_trees[cur_cfqq->org_ioprio];
976 struct rb_node *parent, *node;
977 struct cfq_queue *__cfqq;
978 sector_t sector = cfqd->last_position;
979
980 if (RB_EMPTY_ROOT(root))
981 return NULL;
982
983 /*
984 * First, if we find a request starting at the end of the last
985 * request, choose it.
986 */
987 __cfqq = cfq_prio_tree_lookup(cfqd, root, sector, &parent, NULL);
988 if (__cfqq)
989 return __cfqq;
990
991 /*
992 * If the exact sector wasn't found, the parent of the NULL leaf
993 * will contain the closest sector.
994 */
995 __cfqq = rb_entry(parent, struct cfq_queue, p_node);
996 if (cfq_rq_close(cfqd, __cfqq->next_rq))
997 return __cfqq;
998
999 if (__cfqq->next_rq->sector < sector)
1000 node = rb_next(&__cfqq->p_node);
1001 else
1002 node = rb_prev(&__cfqq->p_node);
1003 if (!node)
1004 return NULL;
870 1005
871 return cfq_dist_from_last(cfqd, rq) <= cic->seek_mean; 1006 __cfqq = rb_entry(node, struct cfq_queue, p_node);
1007 if (cfq_rq_close(cfqd, __cfqq->next_rq))
1008 return __cfqq;
1009
1010 return NULL;
872} 1011}
873 1012
874static int cfq_close_cooperator(struct cfq_data *cfq_data, 1013/*
875 struct cfq_queue *cfqq) 1014 * cfqd - obvious
1015 * cur_cfqq - passed in so that we don't decide that the current queue is
1016 * closely cooperating with itself.
1017 *
1018 * So, basically we're assuming that that cur_cfqq has dispatched at least
1019 * one request, and that cfqd->last_position reflects a position on the disk
1020 * associated with the I/O issued by cur_cfqq. I'm not sure this is a valid
1021 * assumption.
1022 */
1023static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
1024 struct cfq_queue *cur_cfqq,
1025 int probe)
876{ 1026{
1027 struct cfq_queue *cfqq;
1028
1029 /*
1030 * A valid cfq_io_context is necessary to compare requests against
1031 * the seek_mean of the current cfqq.
1032 */
1033 if (!cfqd->active_cic)
1034 return NULL;
1035
877 /* 1036 /*
878 * We should notice if some of the queues are cooperating, eg 1037 * We should notice if some of the queues are cooperating, eg
879 * working closely on the same area of the disk. In that case, 1038 * working closely on the same area of the disk. In that case,
880 * we can group them together and don't waste time idling. 1039 * we can group them together and don't waste time idling.
881 */ 1040 */
882 return 0; 1041 cfqq = cfqq_close(cfqd, cur_cfqq);
883} 1042 if (!cfqq)
1043 return NULL;
884 1044
885#define CIC_SEEKY(cic) ((cic)->seek_mean > (8 * 1024)) 1045 if (cfq_cfqq_coop(cfqq))
1046 return NULL;
1047
1048 if (!probe)
1049 cfq_mark_cfqq_coop(cfqq);
1050 return cfqq;
1051}
886 1052
887static void cfq_arm_slice_timer(struct cfq_data *cfqd) 1053static void cfq_arm_slice_timer(struct cfq_data *cfqd)
888{ 1054{
@@ -920,13 +1086,6 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd)
920 if (!cic || !atomic_read(&cic->ioc->nr_tasks)) 1086 if (!cic || !atomic_read(&cic->ioc->nr_tasks))
921 return; 1087 return;
922 1088
923 /*
924 * See if this prio level has a good candidate
925 */
926 if (cfq_close_cooperator(cfqd, cfqq) &&
927 (sample_valid(cic->ttime_samples) && cic->ttime_mean > 2))
928 return;
929
930 cfq_mark_cfqq_wait_request(cfqq); 1089 cfq_mark_cfqq_wait_request(cfqq);
931 1090
932 /* 1091 /*
@@ -939,7 +1098,7 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd)
939 sl = min(sl, msecs_to_jiffies(CFQ_MIN_TT)); 1098 sl = min(sl, msecs_to_jiffies(CFQ_MIN_TT));
940 1099
941 mod_timer(&cfqd->idle_slice_timer, jiffies + sl); 1100 mod_timer(&cfqd->idle_slice_timer, jiffies + sl);
942 cfq_log(cfqd, "arm_idle: %lu", sl); 1101 cfq_log_cfqq(cfqd, cfqq, "arm_idle: %lu", sl);
943} 1102}
944 1103
945/* 1104/*
@@ -1003,7 +1162,7 @@ cfq_prio_to_maxrq(struct cfq_data *cfqd, struct cfq_queue *cfqq)
1003 */ 1162 */
1004static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd) 1163static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd)
1005{ 1164{
1006 struct cfq_queue *cfqq; 1165 struct cfq_queue *cfqq, *new_cfqq = NULL;
1007 1166
1008 cfqq = cfqd->active_queue; 1167 cfqq = cfqd->active_queue;
1009 if (!cfqq) 1168 if (!cfqq)
@@ -1037,6 +1196,16 @@ static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd)
1037 goto keep_queue; 1196 goto keep_queue;
1038 1197
1039 /* 1198 /*
1199 * If another queue has a request waiting within our mean seek
1200 * distance, let it run. The expire code will check for close
1201 * cooperators and put the close queue at the front of the service
1202 * tree.
1203 */
1204 new_cfqq = cfq_close_cooperator(cfqd, cfqq, 0);
1205 if (new_cfqq)
1206 goto expire;
1207
1208 /*
1040 * No requests pending. If the active queue still has requests in 1209 * No requests pending. If the active queue still has requests in
1041 * flight or is idling for a new request, allow either of these 1210 * flight or is idling for a new request, allow either of these
1042 * conditions to happen (or time out) before selecting a new queue. 1211 * conditions to happen (or time out) before selecting a new queue.
@@ -1050,7 +1219,7 @@ static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd)
1050expire: 1219expire:
1051 cfq_slice_expired(cfqd, 0); 1220 cfq_slice_expired(cfqd, 0);
1052new_queue: 1221new_queue:
1053 cfqq = cfq_set_active_queue(cfqd); 1222 cfqq = cfq_set_active_queue(cfqd, new_cfqq);
1054keep_queue: 1223keep_queue:
1055 return cfqq; 1224 return cfqq;
1056} 1225}
@@ -1333,14 +1502,14 @@ static void __cfq_exit_single_io_context(struct cfq_data *cfqd,
1333 if (ioc->ioc_data == cic) 1502 if (ioc->ioc_data == cic)
1334 rcu_assign_pointer(ioc->ioc_data, NULL); 1503 rcu_assign_pointer(ioc->ioc_data, NULL);
1335 1504
1336 if (cic->cfqq[ASYNC]) { 1505 if (cic->cfqq[BLK_RW_ASYNC]) {
1337 cfq_exit_cfqq(cfqd, cic->cfqq[ASYNC]); 1506 cfq_exit_cfqq(cfqd, cic->cfqq[BLK_RW_ASYNC]);
1338 cic->cfqq[ASYNC] = NULL; 1507 cic->cfqq[BLK_RW_ASYNC] = NULL;
1339 } 1508 }
1340 1509
1341 if (cic->cfqq[SYNC]) { 1510 if (cic->cfqq[BLK_RW_SYNC]) {
1342 cfq_exit_cfqq(cfqd, cic->cfqq[SYNC]); 1511 cfq_exit_cfqq(cfqd, cic->cfqq[BLK_RW_SYNC]);
1343 cic->cfqq[SYNC] = NULL; 1512 cic->cfqq[BLK_RW_SYNC] = NULL;
1344 } 1513 }
1345} 1514}
1346 1515
@@ -1449,17 +1618,18 @@ static void changed_ioprio(struct io_context *ioc, struct cfq_io_context *cic)
1449 1618
1450 spin_lock_irqsave(cfqd->queue->queue_lock, flags); 1619 spin_lock_irqsave(cfqd->queue->queue_lock, flags);
1451 1620
1452 cfqq = cic->cfqq[ASYNC]; 1621 cfqq = cic->cfqq[BLK_RW_ASYNC];
1453 if (cfqq) { 1622 if (cfqq) {
1454 struct cfq_queue *new_cfqq; 1623 struct cfq_queue *new_cfqq;
1455 new_cfqq = cfq_get_queue(cfqd, ASYNC, cic->ioc, GFP_ATOMIC); 1624 new_cfqq = cfq_get_queue(cfqd, BLK_RW_ASYNC, cic->ioc,
1625 GFP_ATOMIC);
1456 if (new_cfqq) { 1626 if (new_cfqq) {
1457 cic->cfqq[ASYNC] = new_cfqq; 1627 cic->cfqq[BLK_RW_ASYNC] = new_cfqq;
1458 cfq_put_queue(cfqq); 1628 cfq_put_queue(cfqq);
1459 } 1629 }
1460 } 1630 }
1461 1631
1462 cfqq = cic->cfqq[SYNC]; 1632 cfqq = cic->cfqq[BLK_RW_SYNC];
1463 if (cfqq) 1633 if (cfqq)
1464 cfq_mark_cfqq_prio_changed(cfqq); 1634 cfq_mark_cfqq_prio_changed(cfqq);
1465 1635
@@ -1510,6 +1680,7 @@ retry:
1510 } 1680 }
1511 1681
1512 RB_CLEAR_NODE(&cfqq->rb_node); 1682 RB_CLEAR_NODE(&cfqq->rb_node);
1683 RB_CLEAR_NODE(&cfqq->p_node);
1513 INIT_LIST_HEAD(&cfqq->fifo); 1684 INIT_LIST_HEAD(&cfqq->fifo);
1514 1685
1515 atomic_set(&cfqq->ref, 0); 1686 atomic_set(&cfqq->ref, 0);
@@ -1745,7 +1916,9 @@ cfq_update_io_seektime(struct cfq_data *cfqd, struct cfq_io_context *cic,
1745 sector_t sdist; 1916 sector_t sdist;
1746 u64 total; 1917 u64 total;
1747 1918
1748 if (cic->last_request_pos < rq->sector) 1919 if (!cic->last_request_pos)
1920 sdist = 0;
1921 else if (cic->last_request_pos < rq->sector)
1749 sdist = rq->sector - cic->last_request_pos; 1922 sdist = rq->sector - cic->last_request_pos;
1750 else 1923 else
1751 sdist = cic->last_request_pos - rq->sector; 1924 sdist = cic->last_request_pos - rq->sector;
@@ -1905,10 +2078,20 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq,
1905 * Remember that we saw a request from this process, but 2078 * Remember that we saw a request from this process, but
1906 * don't start queuing just yet. Otherwise we risk seeing lots 2079 * don't start queuing just yet. Otherwise we risk seeing lots
1907 * of tiny requests, because we disrupt the normal plugging 2080 * of tiny requests, because we disrupt the normal plugging
1908 * and merging. 2081 * and merging. If the request is already larger than a single
2082 * page, let it rip immediately. For that case we assume that
2083 * merging is already done. Ditto for a busy system that
2084 * has other work pending, don't risk delaying until the
2085 * idle timer unplug to continue working.
1909 */ 2086 */
1910 if (cfq_cfqq_wait_request(cfqq)) 2087 if (cfq_cfqq_wait_request(cfqq)) {
2088 if (blk_rq_bytes(rq) > PAGE_CACHE_SIZE ||
2089 cfqd->busy_queues > 1) {
2090 del_timer(&cfqd->idle_slice_timer);
2091 blk_start_queueing(cfqd->queue);
2092 }
1911 cfq_mark_cfqq_must_dispatch(cfqq); 2093 cfq_mark_cfqq_must_dispatch(cfqq);
2094 }
1912 } else if (cfq_should_preempt(cfqd, cfqq, rq)) { 2095 } else if (cfq_should_preempt(cfqd, cfqq, rq)) {
1913 /* 2096 /*
1914 * not the active queue - expire current slice if it is 2097 * not the active queue - expire current slice if it is
@@ -1992,16 +2175,24 @@ static void cfq_completed_request(struct request_queue *q, struct request *rq)
1992 * or if we want to idle in case it has no pending requests. 2175 * or if we want to idle in case it has no pending requests.
1993 */ 2176 */
1994 if (cfqd->active_queue == cfqq) { 2177 if (cfqd->active_queue == cfqq) {
2178 const bool cfqq_empty = RB_EMPTY_ROOT(&cfqq->sort_list);
2179
1995 if (cfq_cfqq_slice_new(cfqq)) { 2180 if (cfq_cfqq_slice_new(cfqq)) {
1996 cfq_set_prio_slice(cfqd, cfqq); 2181 cfq_set_prio_slice(cfqd, cfqq);
1997 cfq_clear_cfqq_slice_new(cfqq); 2182 cfq_clear_cfqq_slice_new(cfqq);
1998 } 2183 }
2184 /*
2185 * If there are no requests waiting in this queue, and
2186 * there are other queues ready to issue requests, AND
2187 * those other queues are issuing requests within our
2188 * mean seek distance, give them a chance to run instead
2189 * of idling.
2190 */
1999 if (cfq_slice_used(cfqq) || cfq_class_idle(cfqq)) 2191 if (cfq_slice_used(cfqq) || cfq_class_idle(cfqq))
2000 cfq_slice_expired(cfqd, 1); 2192 cfq_slice_expired(cfqd, 1);
2001 else if (sync && !rq_noidle(rq) && 2193 else if (cfqq_empty && !cfq_close_cooperator(cfqd, cfqq, 1) &&
2002 RB_EMPTY_ROOT(&cfqq->sort_list)) { 2194 sync && !rq_noidle(rq))
2003 cfq_arm_slice_timer(cfqd); 2195 cfq_arm_slice_timer(cfqd);
2004 }
2005 } 2196 }
2006 2197
2007 if (!cfqd->rq_in_driver) 2198 if (!cfqd->rq_in_driver)
@@ -2062,7 +2253,7 @@ static int cfq_may_queue(struct request_queue *q, int rw)
2062 if (!cic) 2253 if (!cic)
2063 return ELV_MQUEUE_MAY; 2254 return ELV_MQUEUE_MAY;
2064 2255
2065 cfqq = cic_to_cfqq(cic, rw & REQ_RW_SYNC); 2256 cfqq = cic_to_cfqq(cic, rw_is_sync(rw));
2066 if (cfqq) { 2257 if (cfqq) {
2067 cfq_init_prio_data(cfqq, cic->ioc); 2258 cfq_init_prio_data(cfqq, cic->ioc);
2068 cfq_prio_boost(cfqq); 2259 cfq_prio_boost(cfqq);
@@ -2152,11 +2343,10 @@ static void cfq_kick_queue(struct work_struct *work)
2152 struct cfq_data *cfqd = 2343 struct cfq_data *cfqd =
2153 container_of(work, struct cfq_data, unplug_work); 2344 container_of(work, struct cfq_data, unplug_work);
2154 struct request_queue *q = cfqd->queue; 2345 struct request_queue *q = cfqd->queue;
2155 unsigned long flags;
2156 2346
2157 spin_lock_irqsave(q->queue_lock, flags); 2347 spin_lock_irq(q->queue_lock);
2158 blk_start_queueing(q); 2348 blk_start_queueing(q);
2159 spin_unlock_irqrestore(q->queue_lock, flags); 2349 spin_unlock_irq(q->queue_lock);
2160} 2350}
2161 2351
2162/* 2352/*
@@ -2263,12 +2453,22 @@ static void cfq_exit_queue(struct elevator_queue *e)
2263static void *cfq_init_queue(struct request_queue *q) 2453static void *cfq_init_queue(struct request_queue *q)
2264{ 2454{
2265 struct cfq_data *cfqd; 2455 struct cfq_data *cfqd;
2456 int i;
2266 2457
2267 cfqd = kmalloc_node(sizeof(*cfqd), GFP_KERNEL | __GFP_ZERO, q->node); 2458 cfqd = kmalloc_node(sizeof(*cfqd), GFP_KERNEL | __GFP_ZERO, q->node);
2268 if (!cfqd) 2459 if (!cfqd)
2269 return NULL; 2460 return NULL;
2270 2461
2271 cfqd->service_tree = CFQ_RB_ROOT; 2462 cfqd->service_tree = CFQ_RB_ROOT;
2463
2464 /*
2465 * Not strictly needed (since RB_ROOT just clears the node and we
2466 * zeroed cfqd on alloc), but better be safe in case someone decides
2467 * to add magic to the rb code
2468 */
2469 for (i = 0; i < CFQ_PRIO_LISTS; i++)
2470 cfqd->prio_trees[i] = RB_ROOT;
2471
2272 INIT_LIST_HEAD(&cfqd->cic_list); 2472 INIT_LIST_HEAD(&cfqd->cic_list);
2273 2473
2274 cfqd->queue = q; 2474 cfqd->queue = q;
diff --git a/block/elevator.c b/block/elevator.c
index fb81bcc14a8c..7073a9072577 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -590,7 +590,7 @@ void elv_drain_elevator(struct request_queue *q)
590/* 590/*
591 * Call with queue lock held, interrupts disabled 591 * Call with queue lock held, interrupts disabled
592 */ 592 */
593void elv_quisce_start(struct request_queue *q) 593void elv_quiesce_start(struct request_queue *q)
594{ 594{
595 queue_flag_set(QUEUE_FLAG_ELVSWITCH, q); 595 queue_flag_set(QUEUE_FLAG_ELVSWITCH, q);
596 596
@@ -607,7 +607,7 @@ void elv_quisce_start(struct request_queue *q)
607 } 607 }
608} 608}
609 609
610void elv_quisce_end(struct request_queue *q) 610void elv_quiesce_end(struct request_queue *q)
611{ 611{
612 queue_flag_clear(QUEUE_FLAG_ELVSWITCH, q); 612 queue_flag_clear(QUEUE_FLAG_ELVSWITCH, q);
613} 613}
@@ -1126,7 +1126,7 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e)
1126 * Turn on BYPASS and drain all requests w/ elevator private data 1126 * Turn on BYPASS and drain all requests w/ elevator private data
1127 */ 1127 */
1128 spin_lock_irq(q->queue_lock); 1128 spin_lock_irq(q->queue_lock);
1129 elv_quisce_start(q); 1129 elv_quiesce_start(q);
1130 1130
1131 /* 1131 /*
1132 * Remember old elevator. 1132 * Remember old elevator.
@@ -1150,7 +1150,7 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e)
1150 */ 1150 */
1151 elevator_exit(old_elevator); 1151 elevator_exit(old_elevator);
1152 spin_lock_irq(q->queue_lock); 1152 spin_lock_irq(q->queue_lock);
1153 elv_quisce_end(q); 1153 elv_quiesce_end(q);
1154 spin_unlock_irq(q->queue_lock); 1154 spin_unlock_irq(q->queue_lock);
1155 1155
1156 blk_add_trace_msg(q, "elv switch: %s", e->elevator_type->elevator_name); 1156 blk_add_trace_msg(q, "elv switch: %s", e->elevator_type->elevator_name);
diff --git a/block/genhd.c b/block/genhd.c
index a9ec910974c1..1a4916e01732 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -98,7 +98,7 @@ void disk_part_iter_init(struct disk_part_iter *piter, struct gendisk *disk,
98 98
99 if (flags & DISK_PITER_REVERSE) 99 if (flags & DISK_PITER_REVERSE)
100 piter->idx = ptbl->len - 1; 100 piter->idx = ptbl->len - 1;
101 else if (flags & DISK_PITER_INCL_PART0) 101 else if (flags & (DISK_PITER_INCL_PART0 | DISK_PITER_INCL_EMPTY_PART0))
102 piter->idx = 0; 102 piter->idx = 0;
103 else 103 else
104 piter->idx = 1; 104 piter->idx = 1;
@@ -134,7 +134,8 @@ struct hd_struct *disk_part_iter_next(struct disk_part_iter *piter)
134 /* determine iteration parameters */ 134 /* determine iteration parameters */
135 if (piter->flags & DISK_PITER_REVERSE) { 135 if (piter->flags & DISK_PITER_REVERSE) {
136 inc = -1; 136 inc = -1;
137 if (piter->flags & DISK_PITER_INCL_PART0) 137 if (piter->flags & (DISK_PITER_INCL_PART0 |
138 DISK_PITER_INCL_EMPTY_PART0))
138 end = -1; 139 end = -1;
139 else 140 else
140 end = 0; 141 end = 0;
@@ -150,7 +151,10 @@ struct hd_struct *disk_part_iter_next(struct disk_part_iter *piter)
150 part = rcu_dereference(ptbl->part[piter->idx]); 151 part = rcu_dereference(ptbl->part[piter->idx]);
151 if (!part) 152 if (!part)
152 continue; 153 continue;
153 if (!(piter->flags & DISK_PITER_INCL_EMPTY) && !part->nr_sects) 154 if (!part->nr_sects &&
155 !(piter->flags & DISK_PITER_INCL_EMPTY) &&
156 !(piter->flags & DISK_PITER_INCL_EMPTY_PART0 &&
157 piter->idx == 0))
154 continue; 158 continue;
155 159
156 get_device(part_to_dev(part)); 160 get_device(part_to_dev(part));
@@ -1011,7 +1015,7 @@ static int diskstats_show(struct seq_file *seqf, void *v)
1011 "\n\n"); 1015 "\n\n");
1012 */ 1016 */
1013 1017
1014 disk_part_iter_init(&piter, gp, DISK_PITER_INCL_PART0); 1018 disk_part_iter_init(&piter, gp, DISK_PITER_INCL_EMPTY_PART0);
1015 while ((hd = disk_part_iter_next(&piter))) { 1019 while ((hd = disk_part_iter_next(&piter))) {
1016 cpu = part_stat_lock(); 1020 cpu = part_stat_lock();
1017 part_round_stats(cpu, hd); 1021 part_round_stats(cpu, hd);
diff --git a/block/ioctl.c b/block/ioctl.c
index 0f22e629b13c..ad474d4bbcce 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -146,8 +146,6 @@ static int blk_ioctl_discard(struct block_device *bdev, uint64_t start,
146 struct bio *bio; 146 struct bio *bio;
147 147
148 bio = bio_alloc(GFP_KERNEL, 0); 148 bio = bio_alloc(GFP_KERNEL, 0);
149 if (!bio)
150 return -ENOMEM;
151 149
152 bio->bi_end_io = blk_ioc_discard_endio; 150 bio->bi_end_io = blk_ioc_discard_endio;
153 bio->bi_bdev = bdev; 151 bio->bi_bdev = bdev;
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 626ee274c5c4..82a0ca2f6729 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -217,7 +217,7 @@ static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
217static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr, 217static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
218 struct bio *bio) 218 struct bio *bio)
219{ 219{
220 int ret = 0; 220 int r, ret = 0;
221 221
222 /* 222 /*
223 * fill in all the output members 223 * fill in all the output members
@@ -242,7 +242,9 @@ static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
242 ret = -EFAULT; 242 ret = -EFAULT;
243 } 243 }
244 244
245 blk_rq_unmap_user(bio); 245 r = blk_rq_unmap_user(bio);
246 if (!ret)
247 ret = r;
246 blk_put_request(rq); 248 blk_put_request(rq);
247 249
248 return ret; 250 return ret;
@@ -288,6 +290,7 @@ static int sg_io(struct request_queue *q, struct gendisk *bd_disk,
288 290
289 if (hdr->iovec_count) { 291 if (hdr->iovec_count) {
290 const int size = sizeof(struct sg_iovec) * hdr->iovec_count; 292 const int size = sizeof(struct sg_iovec) * hdr->iovec_count;
293 size_t iov_data_len;
291 struct sg_iovec *iov; 294 struct sg_iovec *iov;
292 295
293 iov = kmalloc(size, GFP_KERNEL); 296 iov = kmalloc(size, GFP_KERNEL);
@@ -302,8 +305,18 @@ static int sg_io(struct request_queue *q, struct gendisk *bd_disk,
302 goto out; 305 goto out;
303 } 306 }
304 307
308 /* SG_IO howto says that the shorter of the two wins */
309 iov_data_len = iov_length((struct iovec *)iov,
310 hdr->iovec_count);
311 if (hdr->dxfer_len < iov_data_len) {
312 hdr->iovec_count = iov_shorten((struct iovec *)iov,
313 hdr->iovec_count,
314 hdr->dxfer_len);
315 iov_data_len = hdr->dxfer_len;
316 }
317
305 ret = blk_rq_map_user_iov(q, rq, NULL, iov, hdr->iovec_count, 318 ret = blk_rq_map_user_iov(q, rq, NULL, iov, hdr->iovec_count,
306 hdr->dxfer_len, GFP_KERNEL); 319 iov_data_len, GFP_KERNEL);
307 kfree(iov); 320 kfree(iov);
308 } else if (hdr->dxfer_len) 321 } else if (hdr->dxfer_len)
309 ret = blk_rq_map_user(q, rq, NULL, hdr->dxferp, hdr->dxfer_len, 322 ret = blk_rq_map_user(q, rq, NULL, hdr->dxferp, hdr->dxfer_len,
diff --git a/drivers/acpi/acpica/hwsleep.c b/drivers/acpi/acpica/hwsleep.c
index baa5fc05e124..db307a356f08 100644
--- a/drivers/acpi/acpica/hwsleep.c
+++ b/drivers/acpi/acpica/hwsleep.c
@@ -211,6 +211,12 @@ acpi_status acpi_enter_sleep_state_prep(u8 sleep_state)
211 211
212ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state_prep) 212ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state_prep)
213 213
214static unsigned int gts, bfs;
215module_param(gts, uint, 0644);
216module_param(bfs, uint, 0644);
217MODULE_PARM_DESC(gts, "Enable evaluation of _GTS on suspend.");
218MODULE_PARM_DESC(bfs, "Enable evaluation of _BFS on resume".);
219
214/******************************************************************************* 220/*******************************************************************************
215 * 221 *
216 * FUNCTION: acpi_enter_sleep_state 222 * FUNCTION: acpi_enter_sleep_state
@@ -278,16 +284,18 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)
278 return_ACPI_STATUS(status); 284 return_ACPI_STATUS(status);
279 } 285 }
280 286
281 /* Execute the _GTS method */ 287 if (gts) {
288 /* Execute the _GTS method */
282 289
283 arg_list.count = 1; 290 arg_list.count = 1;
284 arg_list.pointer = &arg; 291 arg_list.pointer = &arg;
285 arg.type = ACPI_TYPE_INTEGER; 292 arg.type = ACPI_TYPE_INTEGER;
286 arg.integer.value = sleep_state; 293 arg.integer.value = sleep_state;
287 294
288 status = acpi_evaluate_object(NULL, METHOD_NAME__GTS, &arg_list, NULL); 295 status = acpi_evaluate_object(NULL, METHOD_NAME__GTS, &arg_list, NULL);
289 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { 296 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
290 return_ACPI_STATUS(status); 297 return_ACPI_STATUS(status);
298 }
291 } 299 }
292 300
293 /* Get current value of PM1A control */ 301 /* Get current value of PM1A control */
@@ -513,18 +521,19 @@ acpi_status acpi_leave_sleep_state_prep(u8 sleep_state)
513 } 521 }
514 } 522 }
515 523
516 /* Execute the _BFS method */ 524 if (bfs) {
525 /* Execute the _BFS method */
517 526
518 arg_list.count = 1; 527 arg_list.count = 1;
519 arg_list.pointer = &arg; 528 arg_list.pointer = &arg;
520 arg.type = ACPI_TYPE_INTEGER; 529 arg.type = ACPI_TYPE_INTEGER;
521 arg.integer.value = sleep_state; 530 arg.integer.value = sleep_state;
522 531
523 status = acpi_evaluate_object(NULL, METHOD_NAME__BFS, &arg_list, NULL); 532 status = acpi_evaluate_object(NULL, METHOD_NAME__BFS, &arg_list, NULL);
524 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { 533 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
525 ACPI_EXCEPTION((AE_INFO, status, "During Method _BFS")); 534 ACPI_EXCEPTION((AE_INFO, status, "During Method _BFS"));
535 }
526 } 536 }
527
528 return_ACPI_STATUS(status); 537 return_ACPI_STATUS(status);
529} 538}
530 539
diff --git a/drivers/acpi/acpica/hwvalid.c b/drivers/acpi/acpica/hwvalid.c
index bd3c937b0ac0..ec33f270c5b7 100644
--- a/drivers/acpi/acpica/hwvalid.c
+++ b/drivers/acpi/acpica/hwvalid.c
@@ -152,7 +152,7 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)
152 ACPI_ERROR((AE_INFO, 152 ACPI_ERROR((AE_INFO,
153 "Illegal I/O port address/length above 64K: 0x%p/%X", 153 "Illegal I/O port address/length above 64K: 0x%p/%X",
154 ACPI_CAST_PTR(void, address), byte_width)); 154 ACPI_CAST_PTR(void, address), byte_width));
155 return_ACPI_STATUS(AE_AML_ILLEGAL_ADDRESS); 155 return_ACPI_STATUS(AE_LIMIT);
156 } 156 }
157 157
158 /* Exit if requested address is not within the protected port table */ 158 /* Exit if requested address is not within the protected port table */
@@ -179,11 +179,12 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)
179 /* Port illegality may depend on the _OSI calls made by the BIOS */ 179 /* Port illegality may depend on the _OSI calls made by the BIOS */
180 180
181 if (acpi_gbl_osi_data >= port_info->osi_dependency) { 181 if (acpi_gbl_osi_data >= port_info->osi_dependency) {
182 ACPI_ERROR((AE_INFO, 182 ACPI_DEBUG_PRINT((ACPI_DB_IO,
183 "Denied AML access to port 0x%p/%X (%s 0x%.4X-0x%.4X)", 183 "Denied AML access to port 0x%p/%X (%s 0x%.4X-0x%.4X)",
184 ACPI_CAST_PTR(void, address), 184 ACPI_CAST_PTR(void, address),
185 byte_width, port_info->name, 185 byte_width, port_info->name,
186 port_info->start, port_info->end)); 186 port_info->start,
187 port_info->end));
187 188
188 return_ACPI_STATUS(AE_AML_ILLEGAL_ADDRESS); 189 return_ACPI_STATUS(AE_AML_ILLEGAL_ADDRESS);
189 } 190 }
@@ -207,7 +208,7 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)
207 * Value Where value is placed 208 * Value Where value is placed
208 * Width Number of bits 209 * Width Number of bits
209 * 210 *
210 * RETURN: Value read from port 211 * RETURN: Status and value read from port
211 * 212 *
212 * DESCRIPTION: Read data from an I/O port or register. This is a front-end 213 * DESCRIPTION: Read data from an I/O port or register. This is a front-end
213 * to acpi_os_read_port that performs validation on both the port 214 * to acpi_os_read_port that performs validation on both the port
@@ -218,14 +219,43 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)
218acpi_status acpi_hw_read_port(acpi_io_address address, u32 *value, u32 width) 219acpi_status acpi_hw_read_port(acpi_io_address address, u32 *value, u32 width)
219{ 220{
220 acpi_status status; 221 acpi_status status;
222 u32 one_byte;
223 u32 i;
224
225 /* Validate the entire request and perform the I/O */
221 226
222 status = acpi_hw_validate_io_request(address, width); 227 status = acpi_hw_validate_io_request(address, width);
223 if (ACPI_FAILURE(status)) { 228 if (ACPI_SUCCESS(status)) {
229 status = acpi_os_read_port(address, value, width);
224 return status; 230 return status;
225 } 231 }
226 232
227 status = acpi_os_read_port(address, value, width); 233 if (status != AE_AML_ILLEGAL_ADDRESS) {
228 return status; 234 return status;
235 }
236
237 /*
238 * There has been a protection violation within the request. Fall
239 * back to byte granularity port I/O and ignore the failing bytes.
240 * This provides Windows compatibility.
241 */
242 for (i = 0, *value = 0; i < width; i += 8) {
243
244 /* Validate and read one byte */
245
246 if (acpi_hw_validate_io_request(address, 8) == AE_OK) {
247 status = acpi_os_read_port(address, &one_byte, 8);
248 if (ACPI_FAILURE(status)) {
249 return status;
250 }
251
252 *value |= (one_byte << i);
253 }
254
255 address++;
256 }
257
258 return AE_OK;
229} 259}
230 260
231/****************************************************************************** 261/******************************************************************************
@@ -236,7 +266,7 @@ acpi_status acpi_hw_read_port(acpi_io_address address, u32 *value, u32 width)
236 * Value Value to write 266 * Value Value to write
237 * Width Number of bits 267 * Width Number of bits
238 * 268 *
239 * RETURN: None 269 * RETURN: Status
240 * 270 *
241 * DESCRIPTION: Write data to an I/O port or register. This is a front-end 271 * DESCRIPTION: Write data to an I/O port or register. This is a front-end
242 * to acpi_os_write_port that performs validation on both the port 272 * to acpi_os_write_port that performs validation on both the port
@@ -247,12 +277,39 @@ acpi_status acpi_hw_read_port(acpi_io_address address, u32 *value, u32 width)
247acpi_status acpi_hw_write_port(acpi_io_address address, u32 value, u32 width) 277acpi_status acpi_hw_write_port(acpi_io_address address, u32 value, u32 width)
248{ 278{
249 acpi_status status; 279 acpi_status status;
280 u32 i;
281
282 /* Validate the entire request and perform the I/O */
250 283
251 status = acpi_hw_validate_io_request(address, width); 284 status = acpi_hw_validate_io_request(address, width);
252 if (ACPI_FAILURE(status)) { 285 if (ACPI_SUCCESS(status)) {
286 status = acpi_os_write_port(address, value, width);
253 return status; 287 return status;
254 } 288 }
255 289
256 status = acpi_os_write_port(address, value, width); 290 if (status != AE_AML_ILLEGAL_ADDRESS) {
257 return status; 291 return status;
292 }
293
294 /*
295 * There has been a protection violation within the request. Fall
296 * back to byte granularity port I/O and ignore the failing bytes.
297 * This provides Windows compatibility.
298 */
299 for (i = 0; i < width; i += 8) {
300
301 /* Validate and write one byte */
302
303 if (acpi_hw_validate_io_request(address, 8) == AE_OK) {
304 status =
305 acpi_os_write_port(address, (value >> i) & 0xFF, 8);
306 if (ACPI_FAILURE(status)) {
307 return status;
308 }
309 }
310
311 address++;
312 }
313
314 return AE_OK;
258} 315}
diff --git a/drivers/acpi/acpica/rscreate.c b/drivers/acpi/acpica/rscreate.c
index 663f692fffcf..a3c23d686d5f 100644
--- a/drivers/acpi/acpica/rscreate.c
+++ b/drivers/acpi/acpica/rscreate.c
@@ -191,8 +191,6 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
191 user_prt = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer); 191 user_prt = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer);
192 192
193 for (index = 0; index < number_of_elements; index++) { 193 for (index = 0; index < number_of_elements; index++) {
194 int source_name_index = 2;
195 int source_index_index = 3;
196 194
197 /* 195 /*
198 * Point user_prt past this current structure 196 * Point user_prt past this current structure
@@ -261,27 +259,6 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
261 return_ACPI_STATUS(AE_BAD_DATA); 259 return_ACPI_STATUS(AE_BAD_DATA);
262 } 260 }
263 261
264 /*
265 * If BIOS erroneously reversed the _PRT source_name and source_index,
266 * then reverse them back.
267 */
268 if ((sub_object_list[3])->common.type !=
269 ACPI_TYPE_INTEGER) {
270 if (acpi_gbl_enable_interpreter_slack) {
271 source_name_index = 3;
272 source_index_index = 2;
273 printk(KERN_WARNING
274 "ACPI: Handling Garbled _PRT entry\n");
275 } else {
276 ACPI_ERROR((AE_INFO,
277 "(PRT[%X].source_index) Need Integer, found %s",
278 index,
279 acpi_ut_get_object_type_name
280 (sub_object_list[3])));
281 return_ACPI_STATUS(AE_BAD_DATA);
282 }
283 }
284
285 user_prt->pin = (u32) obj_desc->integer.value; 262 user_prt->pin = (u32) obj_desc->integer.value;
286 263
287 /* 264 /*
@@ -304,7 +281,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
304 * 3) Third subobject: Dereference the PRT.source_name 281 * 3) Third subobject: Dereference the PRT.source_name
305 * The name may be unresolved (slack mode), so allow a null object 282 * The name may be unresolved (slack mode), so allow a null object
306 */ 283 */
307 obj_desc = sub_object_list[source_name_index]; 284 obj_desc = sub_object_list[2];
308 if (obj_desc) { 285 if (obj_desc) {
309 switch (obj_desc->common.type) { 286 switch (obj_desc->common.type) {
310 case ACPI_TYPE_LOCAL_REFERENCE: 287 case ACPI_TYPE_LOCAL_REFERENCE:
@@ -378,7 +355,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
378 355
379 /* 4) Fourth subobject: Dereference the PRT.source_index */ 356 /* 4) Fourth subobject: Dereference the PRT.source_index */
380 357
381 obj_desc = sub_object_list[source_index_index]; 358 obj_desc = sub_object_list[3];
382 if (obj_desc->common.type != ACPI_TYPE_INTEGER) { 359 if (obj_desc->common.type != ACPI_TYPE_INTEGER) {
383 ACPI_ERROR((AE_INFO, 360 ACPI_ERROR((AE_INFO,
384 "(PRT[%X].SourceIndex) Need Integer, found %s", 361 "(PRT[%X].SourceIndex) Need Integer, found %s",
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
index d73c94b8441d..9195deba9d94 100644
--- a/drivers/acpi/button.c
+++ b/drivers/acpi/button.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * acpi_button.c - ACPI Button Driver ($Revision: 30 $) 2 * button.c - ACPI Button Driver
3 * 3 *
4 * Copyright (C) 2001, 2002 Andy Grover <andrew.grover@intel.com> 4 * Copyright (C) 2001, 2002 Andy Grover <andrew.grover@intel.com>
5 * Copyright (C) 2001, 2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com> 5 * Copyright (C) 2001, 2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
@@ -41,17 +41,13 @@
41 41
42#define ACPI_BUTTON_SUBCLASS_POWER "power" 42#define ACPI_BUTTON_SUBCLASS_POWER "power"
43#define ACPI_BUTTON_HID_POWER "PNP0C0C" 43#define ACPI_BUTTON_HID_POWER "PNP0C0C"
44#define ACPI_BUTTON_DEVICE_NAME_POWER "Power Button (CM)" 44#define ACPI_BUTTON_DEVICE_NAME_POWER "Power Button"
45#define ACPI_BUTTON_DEVICE_NAME_POWERF "Power Button (FF)"
46#define ACPI_BUTTON_TYPE_POWER 0x01 45#define ACPI_BUTTON_TYPE_POWER 0x01
47#define ACPI_BUTTON_TYPE_POWERF 0x02
48 46
49#define ACPI_BUTTON_SUBCLASS_SLEEP "sleep" 47#define ACPI_BUTTON_SUBCLASS_SLEEP "sleep"
50#define ACPI_BUTTON_HID_SLEEP "PNP0C0E" 48#define ACPI_BUTTON_HID_SLEEP "PNP0C0E"
51#define ACPI_BUTTON_DEVICE_NAME_SLEEP "Sleep Button (CM)" 49#define ACPI_BUTTON_DEVICE_NAME_SLEEP "Sleep Button"
52#define ACPI_BUTTON_DEVICE_NAME_SLEEPF "Sleep Button (FF)"
53#define ACPI_BUTTON_TYPE_SLEEP 0x03 50#define ACPI_BUTTON_TYPE_SLEEP 0x03
54#define ACPI_BUTTON_TYPE_SLEEPF 0x04
55 51
56#define ACPI_BUTTON_SUBCLASS_LID "lid" 52#define ACPI_BUTTON_SUBCLASS_LID "lid"
57#define ACPI_BUTTON_HID_LID "PNP0C0D" 53#define ACPI_BUTTON_HID_LID "PNP0C0D"
@@ -95,7 +91,6 @@ static struct acpi_driver acpi_button_driver = {
95}; 91};
96 92
97struct acpi_button { 93struct acpi_button {
98 struct acpi_device *device; /* Fixed button kludge */
99 unsigned int type; 94 unsigned int type;
100 struct input_dev *input; 95 struct input_dev *input;
101 char phys[32]; /* for input device */ 96 char phys[32]; /* for input device */
@@ -126,14 +121,10 @@ static struct proc_dir_entry *acpi_button_dir;
126 121
127static int acpi_button_info_seq_show(struct seq_file *seq, void *offset) 122static int acpi_button_info_seq_show(struct seq_file *seq, void *offset)
128{ 123{
129 struct acpi_button *button = seq->private; 124 struct acpi_device *device = seq->private;
130
131 if (!button || !button->device)
132 return 0;
133 125
134 seq_printf(seq, "type: %s\n", 126 seq_printf(seq, "type: %s\n",
135 acpi_device_name(button->device)); 127 acpi_device_name(device));
136
137 return 0; 128 return 0;
138} 129}
139 130
@@ -144,14 +135,11 @@ static int acpi_button_info_open_fs(struct inode *inode, struct file *file)
144 135
145static int acpi_button_state_seq_show(struct seq_file *seq, void *offset) 136static int acpi_button_state_seq_show(struct seq_file *seq, void *offset)
146{ 137{
147 struct acpi_button *button = seq->private; 138 struct acpi_device *device = seq->private;
148 acpi_status status; 139 acpi_status status;
149 unsigned long long state; 140 unsigned long long state;
150 141
151 if (!button || !button->device) 142 status = acpi_evaluate_integer(device->handle, "_LID", NULL, &state);
152 return 0;
153
154 status = acpi_evaluate_integer(button->device->handle, "_LID", NULL, &state);
155 seq_printf(seq, "state: %s\n", 143 seq_printf(seq, "state: %s\n",
156 ACPI_FAILURE(status) ? "unsupported" : 144 ACPI_FAILURE(status) ? "unsupported" :
157 (state ? "open" : "closed")); 145 (state ? "open" : "closed"));
@@ -169,24 +157,17 @@ static struct proc_dir_entry *acpi_lid_dir;
169 157
170static int acpi_button_add_fs(struct acpi_device *device) 158static int acpi_button_add_fs(struct acpi_device *device)
171{ 159{
160 struct acpi_button *button = acpi_driver_data(device);
172 struct proc_dir_entry *entry = NULL; 161 struct proc_dir_entry *entry = NULL;
173 struct acpi_button *button;
174
175 if (!device || !acpi_driver_data(device))
176 return -EINVAL;
177
178 button = acpi_driver_data(device);
179 162
180 switch (button->type) { 163 switch (button->type) {
181 case ACPI_BUTTON_TYPE_POWER: 164 case ACPI_BUTTON_TYPE_POWER:
182 case ACPI_BUTTON_TYPE_POWERF:
183 if (!acpi_power_dir) 165 if (!acpi_power_dir)
184 acpi_power_dir = proc_mkdir(ACPI_BUTTON_SUBCLASS_POWER, 166 acpi_power_dir = proc_mkdir(ACPI_BUTTON_SUBCLASS_POWER,
185 acpi_button_dir); 167 acpi_button_dir);
186 entry = acpi_power_dir; 168 entry = acpi_power_dir;
187 break; 169 break;
188 case ACPI_BUTTON_TYPE_SLEEP: 170 case ACPI_BUTTON_TYPE_SLEEP:
189 case ACPI_BUTTON_TYPE_SLEEPF:
190 if (!acpi_sleep_dir) 171 if (!acpi_sleep_dir)
191 acpi_sleep_dir = proc_mkdir(ACPI_BUTTON_SUBCLASS_SLEEP, 172 acpi_sleep_dir = proc_mkdir(ACPI_BUTTON_SUBCLASS_SLEEP,
192 acpi_button_dir); 173 acpi_button_dir);
@@ -210,8 +191,7 @@ static int acpi_button_add_fs(struct acpi_device *device)
210 /* 'info' [R] */ 191 /* 'info' [R] */
211 entry = proc_create_data(ACPI_BUTTON_FILE_INFO, 192 entry = proc_create_data(ACPI_BUTTON_FILE_INFO,
212 S_IRUGO, acpi_device_dir(device), 193 S_IRUGO, acpi_device_dir(device),
213 &acpi_button_info_fops, 194 &acpi_button_info_fops, device);
214 acpi_driver_data(device));
215 if (!entry) 195 if (!entry)
216 return -ENODEV; 196 return -ENODEV;
217 197
@@ -219,8 +199,7 @@ static int acpi_button_add_fs(struct acpi_device *device)
219 if (button->type == ACPI_BUTTON_TYPE_LID) { 199 if (button->type == ACPI_BUTTON_TYPE_LID) {
220 entry = proc_create_data(ACPI_BUTTON_FILE_STATE, 200 entry = proc_create_data(ACPI_BUTTON_FILE_STATE,
221 S_IRUGO, acpi_device_dir(device), 201 S_IRUGO, acpi_device_dir(device),
222 &acpi_button_state_fops, 202 &acpi_button_state_fops, device);
223 acpi_driver_data(device));
224 if (!entry) 203 if (!entry)
225 return -ENODEV; 204 return -ENODEV;
226 } 205 }
@@ -250,15 +229,16 @@ static int acpi_button_remove_fs(struct acpi_device *device)
250/* -------------------------------------------------------------------------- 229/* --------------------------------------------------------------------------
251 Driver Interface 230 Driver Interface
252 -------------------------------------------------------------------------- */ 231 -------------------------------------------------------------------------- */
253static int acpi_lid_send_state(struct acpi_button *button) 232static int acpi_lid_send_state(struct acpi_device *device)
254{ 233{
234 struct acpi_button *button = acpi_driver_data(device);
255 unsigned long long state; 235 unsigned long long state;
256 acpi_status status; 236 acpi_status status;
257 237
258 status = acpi_evaluate_integer(button->device->handle, "_LID", NULL, 238 status = acpi_evaluate_integer(device->handle, "_LID", NULL, &state);
259 &state);
260 if (ACPI_FAILURE(status)) 239 if (ACPI_FAILURE(status))
261 return -ENODEV; 240 return -ENODEV;
241
262 /* input layer checks if event is redundant */ 242 /* input layer checks if event is redundant */
263 input_report_switch(button->input, SW_LID, !state); 243 input_report_switch(button->input, SW_LID, !state);
264 input_sync(button->input); 244 input_sync(button->input);
@@ -270,9 +250,6 @@ static void acpi_button_notify(struct acpi_device *device, u32 event)
270 struct acpi_button *button = acpi_driver_data(device); 250 struct acpi_button *button = acpi_driver_data(device);
271 struct input_dev *input; 251 struct input_dev *input;
272 252
273 if (!button || !button->device)
274 return;
275
276 switch (event) { 253 switch (event) {
277 case ACPI_FIXED_HARDWARE_EVENT: 254 case ACPI_FIXED_HARDWARE_EVENT:
278 event = ACPI_BUTTON_NOTIFY_STATUS; 255 event = ACPI_BUTTON_NOTIFY_STATUS;
@@ -280,7 +257,7 @@ static void acpi_button_notify(struct acpi_device *device, u32 event)
280 case ACPI_BUTTON_NOTIFY_STATUS: 257 case ACPI_BUTTON_NOTIFY_STATUS:
281 input = button->input; 258 input = button->input;
282 if (button->type == ACPI_BUTTON_TYPE_LID) { 259 if (button->type == ACPI_BUTTON_TYPE_LID) {
283 acpi_lid_send_state(button); 260 acpi_lid_send_state(device);
284 } else { 261 } else {
285 int keycode = test_bit(KEY_SLEEP, input->keybit) ? 262 int keycode = test_bit(KEY_SLEEP, input->keybit) ?
286 KEY_SLEEP : KEY_POWER; 263 KEY_SLEEP : KEY_POWER;
@@ -291,43 +268,35 @@ static void acpi_button_notify(struct acpi_device *device, u32 event)
291 input_sync(input); 268 input_sync(input);
292 } 269 }
293 270
294 acpi_bus_generate_proc_event(button->device, event, 271 acpi_bus_generate_proc_event(device, event, ++button->pushed);
295 ++button->pushed);
296 break; 272 break;
297 default: 273 default:
298 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 274 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
299 "Unsupported event [0x%x]\n", event)); 275 "Unsupported event [0x%x]\n", event));
300 break; 276 break;
301 } 277 }
302
303 return;
304} 278}
305 279
306static int acpi_button_resume(struct acpi_device *device) 280static int acpi_button_resume(struct acpi_device *device)
307{ 281{
308 struct acpi_button *button; 282 struct acpi_button *button = acpi_driver_data(device);
309 if (!device) 283
310 return -EINVAL; 284 if (button->type == ACPI_BUTTON_TYPE_LID)
311 button = acpi_driver_data(device); 285 return acpi_lid_send_state(device);
312 if (button && button->type == ACPI_BUTTON_TYPE_LID)
313 return acpi_lid_send_state(button);
314 return 0; 286 return 0;
315} 287}
316 288
317static int acpi_button_add(struct acpi_device *device) 289static int acpi_button_add(struct acpi_device *device)
318{ 290{
319 int error;
320 struct acpi_button *button; 291 struct acpi_button *button;
321 struct input_dev *input; 292 struct input_dev *input;
322 293 char *hid, *name, *class;
323 if (!device) 294 int error;
324 return -EINVAL;
325 295
326 button = kzalloc(sizeof(struct acpi_button), GFP_KERNEL); 296 button = kzalloc(sizeof(struct acpi_button), GFP_KERNEL);
327 if (!button) 297 if (!button)
328 return -ENOMEM; 298 return -ENOMEM;
329 299
330 button->device = device;
331 device->driver_data = button; 300 device->driver_data = button;
332 301
333 button->input = input = input_allocate_device(); 302 button->input = input = input_allocate_device();
@@ -336,40 +305,29 @@ static int acpi_button_add(struct acpi_device *device)
336 goto err_free_button; 305 goto err_free_button;
337 } 306 }
338 307
339 /* 308 hid = acpi_device_hid(device);
340 * Determine the button type (via hid), as fixed-feature buttons 309 name = acpi_device_name(device);
341 * need to be handled a bit differently than generic-space. 310 class = acpi_device_class(device);
342 */ 311
343 if (!strcmp(acpi_device_hid(device), ACPI_BUTTON_HID_POWER)) { 312 if (!strcmp(hid, ACPI_BUTTON_HID_POWER) ||
313 !strcmp(hid, ACPI_BUTTON_HID_POWERF)) {
344 button->type = ACPI_BUTTON_TYPE_POWER; 314 button->type = ACPI_BUTTON_TYPE_POWER;
345 strcpy(acpi_device_name(device), ACPI_BUTTON_DEVICE_NAME_POWER); 315 strcpy(name, ACPI_BUTTON_DEVICE_NAME_POWER);
346 sprintf(acpi_device_class(device), "%s/%s", 316 sprintf(class, "%s/%s",
347 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_POWER);
348 } else if (!strcmp(acpi_device_hid(device), ACPI_BUTTON_HID_POWERF)) {
349 button->type = ACPI_BUTTON_TYPE_POWERF;
350 strcpy(acpi_device_name(device),
351 ACPI_BUTTON_DEVICE_NAME_POWERF);
352 sprintf(acpi_device_class(device), "%s/%s",
353 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_POWER); 317 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_POWER);
354 } else if (!strcmp(acpi_device_hid(device), ACPI_BUTTON_HID_SLEEP)) { 318 } else if (!strcmp(hid, ACPI_BUTTON_HID_SLEEP) ||
319 !strcmp(hid, ACPI_BUTTON_HID_SLEEPF)) {
355 button->type = ACPI_BUTTON_TYPE_SLEEP; 320 button->type = ACPI_BUTTON_TYPE_SLEEP;
356 strcpy(acpi_device_name(device), ACPI_BUTTON_DEVICE_NAME_SLEEP); 321 strcpy(name, ACPI_BUTTON_DEVICE_NAME_SLEEP);
357 sprintf(acpi_device_class(device), "%s/%s", 322 sprintf(class, "%s/%s",
358 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_SLEEP);
359 } else if (!strcmp(acpi_device_hid(device), ACPI_BUTTON_HID_SLEEPF)) {
360 button->type = ACPI_BUTTON_TYPE_SLEEPF;
361 strcpy(acpi_device_name(device),
362 ACPI_BUTTON_DEVICE_NAME_SLEEPF);
363 sprintf(acpi_device_class(device), "%s/%s",
364 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_SLEEP); 323 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_SLEEP);
365 } else if (!strcmp(acpi_device_hid(device), ACPI_BUTTON_HID_LID)) { 324 } else if (!strcmp(hid, ACPI_BUTTON_HID_LID)) {
366 button->type = ACPI_BUTTON_TYPE_LID; 325 button->type = ACPI_BUTTON_TYPE_LID;
367 strcpy(acpi_device_name(device), ACPI_BUTTON_DEVICE_NAME_LID); 326 strcpy(name, ACPI_BUTTON_DEVICE_NAME_LID);
368 sprintf(acpi_device_class(device), "%s/%s", 327 sprintf(class, "%s/%s",
369 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_LID); 328 ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_LID);
370 } else { 329 } else {
371 printk(KERN_ERR PREFIX "Unsupported hid [%s]\n", 330 printk(KERN_ERR PREFIX "Unsupported hid [%s]\n", hid);
372 acpi_device_hid(device));
373 error = -ENODEV; 331 error = -ENODEV;
374 goto err_free_input; 332 goto err_free_input;
375 } 333 }
@@ -378,10 +336,9 @@ static int acpi_button_add(struct acpi_device *device)
378 if (error) 336 if (error)
379 goto err_free_input; 337 goto err_free_input;
380 338
381 snprintf(button->phys, sizeof(button->phys), 339 snprintf(button->phys, sizeof(button->phys), "%s/button/input0", hid);
382 "%s/button/input0", acpi_device_hid(device));
383 340
384 input->name = acpi_device_name(device); 341 input->name = name;
385 input->phys = button->phys; 342 input->phys = button->phys;
386 input->id.bustype = BUS_HOST; 343 input->id.bustype = BUS_HOST;
387 input->id.product = button->type; 344 input->id.product = button->type;
@@ -389,13 +346,11 @@ static int acpi_button_add(struct acpi_device *device)
389 346
390 switch (button->type) { 347 switch (button->type) {
391 case ACPI_BUTTON_TYPE_POWER: 348 case ACPI_BUTTON_TYPE_POWER:
392 case ACPI_BUTTON_TYPE_POWERF:
393 input->evbit[0] = BIT_MASK(EV_KEY); 349 input->evbit[0] = BIT_MASK(EV_KEY);
394 set_bit(KEY_POWER, input->keybit); 350 set_bit(KEY_POWER, input->keybit);
395 break; 351 break;
396 352
397 case ACPI_BUTTON_TYPE_SLEEP: 353 case ACPI_BUTTON_TYPE_SLEEP:
398 case ACPI_BUTTON_TYPE_SLEEPF:
399 input->evbit[0] = BIT_MASK(EV_KEY); 354 input->evbit[0] = BIT_MASK(EV_KEY);
400 set_bit(KEY_SLEEP, input->keybit); 355 set_bit(KEY_SLEEP, input->keybit);
401 break; 356 break;
@@ -410,7 +365,7 @@ static int acpi_button_add(struct acpi_device *device)
410 if (error) 365 if (error)
411 goto err_remove_fs; 366 goto err_remove_fs;
412 if (button->type == ACPI_BUTTON_TYPE_LID) 367 if (button->type == ACPI_BUTTON_TYPE_LID)
413 acpi_lid_send_state(button); 368 acpi_lid_send_state(device);
414 369
415 if (device->wakeup.flags.valid) { 370 if (device->wakeup.flags.valid) {
416 /* Button's GPE is run-wake GPE */ 371 /* Button's GPE is run-wake GPE */
@@ -422,9 +377,7 @@ static int acpi_button_add(struct acpi_device *device)
422 device->wakeup.state.enabled = 1; 377 device->wakeup.state.enabled = 1;
423 } 378 }
424 379
425 printk(KERN_INFO PREFIX "%s [%s]\n", 380 printk(KERN_INFO PREFIX "%s [%s]\n", name, acpi_device_bid(device));
426 acpi_device_name(device), acpi_device_bid(device));
427
428 return 0; 381 return 0;
429 382
430 err_remove_fs: 383 err_remove_fs:
@@ -438,17 +391,11 @@ static int acpi_button_add(struct acpi_device *device)
438 391
439static int acpi_button_remove(struct acpi_device *device, int type) 392static int acpi_button_remove(struct acpi_device *device, int type)
440{ 393{
441 struct acpi_button *button; 394 struct acpi_button *button = acpi_driver_data(device);
442
443 if (!device || !acpi_driver_data(device))
444 return -EINVAL;
445
446 button = acpi_driver_data(device);
447 395
448 acpi_button_remove_fs(device); 396 acpi_button_remove_fs(device);
449 input_unregister_device(button->input); 397 input_unregister_device(button->input);
450 kfree(button); 398 kfree(button);
451
452 return 0; 399 return 0;
453} 400}
454 401
@@ -459,6 +406,7 @@ static int __init acpi_button_init(void)
459 acpi_button_dir = proc_mkdir(ACPI_BUTTON_CLASS, acpi_root_dir); 406 acpi_button_dir = proc_mkdir(ACPI_BUTTON_CLASS, acpi_root_dir);
460 if (!acpi_button_dir) 407 if (!acpi_button_dir)
461 return -ENODEV; 408 return -ENODEV;
409
462 result = acpi_bus_register_driver(&acpi_button_driver); 410 result = acpi_bus_register_driver(&acpi_button_driver);
463 if (result < 0) { 411 if (result < 0) {
464 remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir); 412 remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir);
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 04e90443eff7..391f331674c7 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -1065,6 +1065,7 @@ static int acpi_ec_resume(struct acpi_device *device)
1065 struct acpi_ec *ec = acpi_driver_data(device); 1065 struct acpi_ec *ec = acpi_driver_data(device);
1066 /* Enable use of GPE back */ 1066 /* Enable use of GPE back */
1067 clear_bit(EC_FLAGS_NO_GPE, &ec->flags); 1067 clear_bit(EC_FLAGS_NO_GPE, &ec->flags);
1068 set_bit(EC_FLAGS_GPE_MODE, &ec->flags);
1068 acpi_enable_gpe(NULL, ec->gpe); 1069 acpi_enable_gpe(NULL, ec->gpe);
1069 return 0; 1070 return 0;
1070} 1071}
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index d59f08ecaf16..d916bea729f1 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -353,8 +353,10 @@ static irqreturn_t acpi_irq(int irq, void *dev_id)
353 if (handled) { 353 if (handled) {
354 acpi_irq_handled++; 354 acpi_irq_handled++;
355 return IRQ_HANDLED; 355 return IRQ_HANDLED;
356 } else 356 } else {
357 acpi_irq_not_handled++;
357 return IRQ_NONE; 358 return IRQ_NONE;
359 }
358} 360}
359 361
360acpi_status 362acpi_status
diff --git a/drivers/acpi/proc.c b/drivers/acpi/proc.c
index 05dfdc96802e..d0d550d22a6d 100644
--- a/drivers/acpi/proc.c
+++ b/drivers/acpi/proc.c
@@ -343,9 +343,6 @@ acpi_system_write_alarm(struct file *file,
343} 343}
344#endif /* HAVE_ACPI_LEGACY_ALARM */ 344#endif /* HAVE_ACPI_LEGACY_ALARM */
345 345
346extern struct list_head acpi_wakeup_device_list;
347extern spinlock_t acpi_device_lock;
348
349static int 346static int
350acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset) 347acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
351{ 348{
@@ -353,7 +350,7 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
353 350
354 seq_printf(seq, "Device\tS-state\t Status Sysfs node\n"); 351 seq_printf(seq, "Device\tS-state\t Status Sysfs node\n");
355 352
356 spin_lock(&acpi_device_lock); 353 mutex_lock(&acpi_device_lock);
357 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 354 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
358 struct acpi_device *dev = 355 struct acpi_device *dev =
359 container_of(node, struct acpi_device, wakeup_list); 356 container_of(node, struct acpi_device, wakeup_list);
@@ -361,7 +358,6 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
361 358
362 if (!dev->wakeup.flags.valid) 359 if (!dev->wakeup.flags.valid)
363 continue; 360 continue;
364 spin_unlock(&acpi_device_lock);
365 361
366 ldev = acpi_get_physical_device(dev->handle); 362 ldev = acpi_get_physical_device(dev->handle);
367 seq_printf(seq, "%s\t S%d\t%c%-8s ", 363 seq_printf(seq, "%s\t S%d\t%c%-8s ",
@@ -376,9 +372,8 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
376 seq_printf(seq, "\n"); 372 seq_printf(seq, "\n");
377 put_device(ldev); 373 put_device(ldev);
378 374
379 spin_lock(&acpi_device_lock);
380 } 375 }
381 spin_unlock(&acpi_device_lock); 376 mutex_unlock(&acpi_device_lock);
382 return 0; 377 return 0;
383} 378}
384 379
@@ -409,7 +404,7 @@ acpi_system_write_wakeup_device(struct file *file,
409 strbuf[len] = '\0'; 404 strbuf[len] = '\0';
410 sscanf(strbuf, "%s", str); 405 sscanf(strbuf, "%s", str);
411 406
412 spin_lock(&acpi_device_lock); 407 mutex_lock(&acpi_device_lock);
413 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 408 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
414 struct acpi_device *dev = 409 struct acpi_device *dev =
415 container_of(node, struct acpi_device, wakeup_list); 410 container_of(node, struct acpi_device, wakeup_list);
@@ -446,7 +441,7 @@ acpi_system_write_wakeup_device(struct file *file,
446 } 441 }
447 } 442 }
448 } 443 }
449 spin_unlock(&acpi_device_lock); 444 mutex_unlock(&acpi_device_lock);
450 return count; 445 return count;
451} 446}
452 447
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 4e6e758bd397..f7ca8c55956b 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -145,6 +145,9 @@ static void acpi_timer_check_state(int state, struct acpi_processor *pr,
145 struct acpi_processor_power *pwr = &pr->power; 145 struct acpi_processor_power *pwr = &pr->power;
146 u8 type = local_apic_timer_c2_ok ? ACPI_STATE_C3 : ACPI_STATE_C2; 146 u8 type = local_apic_timer_c2_ok ? ACPI_STATE_C3 : ACPI_STATE_C2;
147 147
148 if (cpu_has(&cpu_data(pr->id), X86_FEATURE_ARAT))
149 return;
150
148 /* 151 /*
149 * Check, if one of the previous states already marked the lapic 152 * Check, if one of the previous states already marked the lapic
150 * unstable 153 * unstable
@@ -578,6 +581,11 @@ static int acpi_processor_power_verify(struct acpi_processor *pr)
578 for (i = 1; i < ACPI_PROCESSOR_MAX_POWER; i++) { 581 for (i = 1; i < ACPI_PROCESSOR_MAX_POWER; i++) {
579 struct acpi_processor_cx *cx = &pr->power.states[i]; 582 struct acpi_processor_cx *cx = &pr->power.states[i];
580 583
584#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
585 /* TSC could halt in idle, so notify users */
586 if (tsc_halts_in_c(cx->type))
587 mark_tsc_unstable("TSC halts in idle");;
588#endif
581 switch (cx->type) { 589 switch (cx->type) {
582 case ACPI_STATE_C1: 590 case ACPI_STATE_C1:
583 cx->valid = 1; 591 cx->valid = 1;
@@ -654,11 +662,9 @@ static int acpi_processor_power_seq_show(struct seq_file *seq, void *offset)
654 662
655 seq_printf(seq, "active state: C%zd\n" 663 seq_printf(seq, "active state: C%zd\n"
656 "max_cstate: C%d\n" 664 "max_cstate: C%d\n"
657 "bus master activity: %08x\n"
658 "maximum allowed latency: %d usec\n", 665 "maximum allowed latency: %d usec\n",
659 pr->power.state ? pr->power.state - pr->power.states : 0, 666 pr->power.state ? pr->power.state - pr->power.states : 0,
660 max_cstate, (unsigned)pr->power.bm_activity, 667 max_cstate, pm_qos_requirement(PM_QOS_CPU_DMA_LATENCY));
661 pm_qos_requirement(PM_QOS_CPU_DMA_LATENCY));
662 668
663 seq_puts(seq, "states:\n"); 669 seq_puts(seq, "states:\n");
664 670
@@ -868,11 +874,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
868 kt2 = ktime_get_real(); 874 kt2 = ktime_get_real();
869 idle_time = ktime_to_us(ktime_sub(kt2, kt1)); 875 idle_time = ktime_to_us(ktime_sub(kt2, kt1));
870 876
871#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
872 /* TSC could halt in idle, so notify users */
873 if (tsc_halts_in_c(cx->type))
874 mark_tsc_unstable("TSC halts in idle");;
875#endif
876 sleep_ticks = us_to_pm_timer_ticks(idle_time); 877 sleep_ticks = us_to_pm_timer_ticks(idle_time);
877 878
878 /* Tell the scheduler how much we idled: */ 879 /* Tell the scheduler how much we idled: */
@@ -952,6 +953,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
952 */ 953 */
953 acpi_state_timer_broadcast(pr, cx, 1); 954 acpi_state_timer_broadcast(pr, cx, 1);
954 955
956 kt1 = ktime_get_real();
955 /* 957 /*
956 * disable bus master 958 * disable bus master
957 * bm_check implies we need ARB_DIS 959 * bm_check implies we need ARB_DIS
@@ -973,10 +975,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
973 ACPI_FLUSH_CPU_CACHE(); 975 ACPI_FLUSH_CPU_CACHE();
974 } 976 }
975 977
976 kt1 = ktime_get_real();
977 acpi_idle_do_entry(cx); 978 acpi_idle_do_entry(cx);
978 kt2 = ktime_get_real();
979 idle_time = ktime_to_us(ktime_sub(kt2, kt1));
980 979
981 /* Re-enable bus master arbitration */ 980 /* Re-enable bus master arbitration */
982 if (pr->flags.bm_check && pr->flags.bm_control) { 981 if (pr->flags.bm_check && pr->flags.bm_control) {
@@ -985,12 +984,9 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
985 c3_cpu_count--; 984 c3_cpu_count--;
986 spin_unlock(&c3_lock); 985 spin_unlock(&c3_lock);
987 } 986 }
987 kt2 = ktime_get_real();
988 idle_time = ktime_to_us(ktime_sub(kt2, kt1));
988 989
989#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
990 /* TSC could halt in idle, so notify users */
991 if (tsc_halts_in_c(ACPI_STATE_C3))
992 mark_tsc_unstable("TSC halts in idle");
993#endif
994 sleep_ticks = us_to_pm_timer_ticks(idle_time); 990 sleep_ticks = us_to_pm_timer_ticks(idle_time);
995 /* Tell the scheduler how much we idled: */ 991 /* Tell the scheduler how much we idled: */
996 sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS); 992 sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS);
@@ -1034,6 +1030,9 @@ static int acpi_processor_setup_cpuidle(struct acpi_processor *pr)
1034 dev->states[i].desc[0] = '\0'; 1030 dev->states[i].desc[0] = '\0';
1035 } 1031 }
1036 1032
1033 if (max_cstate == 0)
1034 max_cstate = 1;
1035
1037 for (i = 1; i < ACPI_PROCESSOR_MAX_POWER && i <= max_cstate; i++) { 1036 for (i = 1; i < ACPI_PROCESSOR_MAX_POWER && i <= max_cstate; i++) {
1038 cx = &pr->power.states[i]; 1037 cx = &pr->power.states[i];
1039 state = &dev->states[count]; 1038 state = &dev->states[count];
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 20c23c049207..8ff510b91d88 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -24,7 +24,7 @@ extern struct acpi_device *acpi_root;
24 24
25static LIST_HEAD(acpi_device_list); 25static LIST_HEAD(acpi_device_list);
26static LIST_HEAD(acpi_bus_id_list); 26static LIST_HEAD(acpi_bus_id_list);
27DEFINE_SPINLOCK(acpi_device_lock); 27DEFINE_MUTEX(acpi_device_lock);
28LIST_HEAD(acpi_wakeup_device_list); 28LIST_HEAD(acpi_wakeup_device_list);
29 29
30struct acpi_device_bus_id{ 30struct acpi_device_bus_id{
@@ -491,7 +491,6 @@ static int acpi_device_register(struct acpi_device *device,
491 */ 491 */
492 INIT_LIST_HEAD(&device->children); 492 INIT_LIST_HEAD(&device->children);
493 INIT_LIST_HEAD(&device->node); 493 INIT_LIST_HEAD(&device->node);
494 INIT_LIST_HEAD(&device->g_list);
495 INIT_LIST_HEAD(&device->wakeup_list); 494 INIT_LIST_HEAD(&device->wakeup_list);
496 495
497 new_bus_id = kzalloc(sizeof(struct acpi_device_bus_id), GFP_KERNEL); 496 new_bus_id = kzalloc(sizeof(struct acpi_device_bus_id), GFP_KERNEL);
@@ -500,7 +499,7 @@ static int acpi_device_register(struct acpi_device *device,
500 return -ENOMEM; 499 return -ENOMEM;
501 } 500 }
502 501
503 spin_lock(&acpi_device_lock); 502 mutex_lock(&acpi_device_lock);
504 /* 503 /*
505 * Find suitable bus_id and instance number in acpi_bus_id_list 504 * Find suitable bus_id and instance number in acpi_bus_id_list
506 * If failed, create one and link it into acpi_bus_id_list 505 * If failed, create one and link it into acpi_bus_id_list
@@ -521,14 +520,12 @@ static int acpi_device_register(struct acpi_device *device,
521 } 520 }
522 dev_set_name(&device->dev, "%s:%02x", acpi_device_bus_id->bus_id, acpi_device_bus_id->instance_no); 521 dev_set_name(&device->dev, "%s:%02x", acpi_device_bus_id->bus_id, acpi_device_bus_id->instance_no);
523 522
524 if (device->parent) { 523 if (device->parent)
525 list_add_tail(&device->node, &device->parent->children); 524 list_add_tail(&device->node, &device->parent->children);
526 list_add_tail(&device->g_list, &device->parent->g_list); 525
527 } else
528 list_add_tail(&device->g_list, &acpi_device_list);
529 if (device->wakeup.flags.valid) 526 if (device->wakeup.flags.valid)
530 list_add_tail(&device->wakeup_list, &acpi_wakeup_device_list); 527 list_add_tail(&device->wakeup_list, &acpi_wakeup_device_list);
531 spin_unlock(&acpi_device_lock); 528 mutex_unlock(&acpi_device_lock);
532 529
533 if (device->parent) 530 if (device->parent)
534 device->dev.parent = &parent->dev; 531 device->dev.parent = &parent->dev;
@@ -549,28 +546,22 @@ static int acpi_device_register(struct acpi_device *device,
549 device->removal_type = ACPI_BUS_REMOVAL_NORMAL; 546 device->removal_type = ACPI_BUS_REMOVAL_NORMAL;
550 return 0; 547 return 0;
551 end: 548 end:
552 spin_lock(&acpi_device_lock); 549 mutex_lock(&acpi_device_lock);
553 if (device->parent) { 550 if (device->parent)
554 list_del(&device->node); 551 list_del(&device->node);
555 list_del(&device->g_list);
556 } else
557 list_del(&device->g_list);
558 list_del(&device->wakeup_list); 552 list_del(&device->wakeup_list);
559 spin_unlock(&acpi_device_lock); 553 mutex_unlock(&acpi_device_lock);
560 return result; 554 return result;
561} 555}
562 556
563static void acpi_device_unregister(struct acpi_device *device, int type) 557static void acpi_device_unregister(struct acpi_device *device, int type)
564{ 558{
565 spin_lock(&acpi_device_lock); 559 mutex_lock(&acpi_device_lock);
566 if (device->parent) { 560 if (device->parent)
567 list_del(&device->node); 561 list_del(&device->node);
568 list_del(&device->g_list);
569 } else
570 list_del(&device->g_list);
571 562
572 list_del(&device->wakeup_list); 563 list_del(&device->wakeup_list);
573 spin_unlock(&acpi_device_lock); 564 mutex_unlock(&acpi_device_lock);
574 565
575 acpi_detach_data(device->handle, acpi_bus_data_handler); 566 acpi_detach_data(device->handle, acpi_bus_data_handler);
576 567
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 779e4e500df4..01574a066534 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -300,9 +300,9 @@ static int acpi_suspend_state_valid(suspend_state_t pm_state)
300static struct platform_suspend_ops acpi_suspend_ops = { 300static struct platform_suspend_ops acpi_suspend_ops = {
301 .valid = acpi_suspend_state_valid, 301 .valid = acpi_suspend_state_valid,
302 .begin = acpi_suspend_begin, 302 .begin = acpi_suspend_begin,
303 .prepare = acpi_pm_prepare, 303 .prepare_late = acpi_pm_prepare,
304 .enter = acpi_suspend_enter, 304 .enter = acpi_suspend_enter,
305 .finish = acpi_pm_finish, 305 .wake = acpi_pm_finish,
306 .end = acpi_pm_end, 306 .end = acpi_pm_end,
307}; 307};
308 308
@@ -328,9 +328,9 @@ static int acpi_suspend_begin_old(suspend_state_t pm_state)
328static struct platform_suspend_ops acpi_suspend_ops_old = { 328static struct platform_suspend_ops acpi_suspend_ops_old = {
329 .valid = acpi_suspend_state_valid, 329 .valid = acpi_suspend_state_valid,
330 .begin = acpi_suspend_begin_old, 330 .begin = acpi_suspend_begin_old,
331 .prepare = acpi_pm_disable_gpes, 331 .prepare_late = acpi_pm_disable_gpes,
332 .enter = acpi_suspend_enter, 332 .enter = acpi_suspend_enter,
333 .finish = acpi_pm_finish, 333 .wake = acpi_pm_finish,
334 .end = acpi_pm_end, 334 .end = acpi_pm_end,
335 .recover = acpi_pm_finish, 335 .recover = acpi_pm_finish,
336}; 336};
@@ -713,6 +713,32 @@ static void acpi_power_off(void)
713 acpi_enter_sleep_state(ACPI_STATE_S5); 713 acpi_enter_sleep_state(ACPI_STATE_S5);
714} 714}
715 715
716/*
717 * ACPI 2.0 created the optional _GTS and _BFS,
718 * but industry adoption has been neither rapid nor broad.
719 *
720 * Linux gets into trouble when it executes poorly validated
721 * paths through the BIOS, so disable _GTS and _BFS by default,
722 * but do speak up and offer the option to enable them.
723 */
724void __init acpi_gts_bfs_check(void)
725{
726 acpi_handle dummy;
727
728 if (ACPI_SUCCESS(acpi_get_handle(ACPI_ROOT_OBJECT, METHOD_NAME__GTS, &dummy)))
729 {
730 printk(KERN_NOTICE PREFIX "BIOS offers _GTS\n");
731 printk(KERN_NOTICE PREFIX "If \"acpi.gts=1\" improves suspend, "
732 "please notify linux-acpi@vger.kernel.org\n");
733 }
734 if (ACPI_SUCCESS(acpi_get_handle(ACPI_ROOT_OBJECT, METHOD_NAME__BFS, &dummy)))
735 {
736 printk(KERN_NOTICE PREFIX "BIOS offers _BFS\n");
737 printk(KERN_NOTICE PREFIX "If \"acpi.bfs=1\" improves resume, "
738 "please notify linux-acpi@vger.kernel.org\n");
739 }
740}
741
716int __init acpi_sleep_init(void) 742int __init acpi_sleep_init(void)
717{ 743{
718 acpi_status status; 744 acpi_status status;
@@ -771,5 +797,6 @@ int __init acpi_sleep_init(void)
771 * object can also be evaluated when the system enters S5. 797 * object can also be evaluated when the system enters S5.
772 */ 798 */
773 register_reboot_notifier(&tts_notifier); 799 register_reboot_notifier(&tts_notifier);
800 acpi_gts_bfs_check();
774 return 0; 801 return 0;
775} 802}
diff --git a/drivers/acpi/sleep.h b/drivers/acpi/sleep.h
index cfaf8f5b0a14..8a8f3b3382a6 100644
--- a/drivers/acpi/sleep.h
+++ b/drivers/acpi/sleep.h
@@ -5,3 +5,6 @@ extern int acpi_suspend (u32 state);
5extern void acpi_enable_wakeup_device_prep(u8 sleep_state); 5extern void acpi_enable_wakeup_device_prep(u8 sleep_state);
6extern void acpi_enable_wakeup_device(u8 sleep_state); 6extern void acpi_enable_wakeup_device(u8 sleep_state);
7extern void acpi_disable_wakeup_device(u8 sleep_state); 7extern void acpi_disable_wakeup_device(u8 sleep_state);
8
9extern struct list_head acpi_wakeup_device_list;
10extern struct mutex acpi_device_lock;
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c
index da51f05ef8d8..0944daec064f 100644
--- a/drivers/acpi/system.c
+++ b/drivers/acpi/system.c
@@ -38,6 +38,7 @@ ACPI_MODULE_NAME("system");
38#define ACPI_SYSTEM_DEVICE_NAME "System" 38#define ACPI_SYSTEM_DEVICE_NAME "System"
39 39
40u32 acpi_irq_handled; 40u32 acpi_irq_handled;
41u32 acpi_irq_not_handled;
41 42
42/* 43/*
43 * Make ACPICA version work as module param 44 * Make ACPICA version work as module param
@@ -214,8 +215,9 @@ err:
214 215
215#define COUNT_GPE 0 216#define COUNT_GPE 0
216#define COUNT_SCI 1 /* acpi_irq_handled */ 217#define COUNT_SCI 1 /* acpi_irq_handled */
217#define COUNT_ERROR 2 /* other */ 218#define COUNT_SCI_NOT 2 /* acpi_irq_not_handled */
218#define NUM_COUNTERS_EXTRA 3 219#define COUNT_ERROR 3 /* other */
220#define NUM_COUNTERS_EXTRA 4
219 221
220struct event_counter { 222struct event_counter {
221 u32 count; 223 u32 count;
@@ -317,6 +319,8 @@ static ssize_t counter_show(struct kobject *kobj,
317 319
318 all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI].count = 320 all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI].count =
319 acpi_irq_handled; 321 acpi_irq_handled;
322 all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI_NOT].count =
323 acpi_irq_not_handled;
320 all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_GPE].count = 324 all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_GPE].count =
321 acpi_gpe_count; 325 acpi_gpe_count;
322 326
@@ -363,6 +367,7 @@ static ssize_t counter_set(struct kobject *kobj,
363 all_counters[i].count = 0; 367 all_counters[i].count = 0;
364 acpi_gpe_count = 0; 368 acpi_gpe_count = 0;
365 acpi_irq_handled = 0; 369 acpi_irq_handled = 0;
370 acpi_irq_not_handled = 0;
366 goto end; 371 goto end;
367 } 372 }
368 373
@@ -456,6 +461,8 @@ void acpi_irq_stats_init(void)
456 sprintf(buffer, "gpe_all"); 461 sprintf(buffer, "gpe_all");
457 else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI) 462 else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI)
458 sprintf(buffer, "sci"); 463 sprintf(buffer, "sci");
464 else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI_NOT)
465 sprintf(buffer, "sci_not");
459 else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_ERROR) 466 else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_ERROR)
460 sprintf(buffer, "error"); 467 sprintf(buffer, "error");
461 else 468 else
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index e8c143caf0fd..564ea1424288 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -98,6 +98,7 @@ MODULE_PARM_DESC(psv, "Disable or override all passive trip points.");
98static int acpi_thermal_add(struct acpi_device *device); 98static int acpi_thermal_add(struct acpi_device *device);
99static int acpi_thermal_remove(struct acpi_device *device, int type); 99static int acpi_thermal_remove(struct acpi_device *device, int type);
100static int acpi_thermal_resume(struct acpi_device *device); 100static int acpi_thermal_resume(struct acpi_device *device);
101static void acpi_thermal_notify(struct acpi_device *device, u32 event);
101static int acpi_thermal_state_open_fs(struct inode *inode, struct file *file); 102static int acpi_thermal_state_open_fs(struct inode *inode, struct file *file);
102static int acpi_thermal_temp_open_fs(struct inode *inode, struct file *file); 103static int acpi_thermal_temp_open_fs(struct inode *inode, struct file *file);
103static int acpi_thermal_trip_open_fs(struct inode *inode, struct file *file); 104static int acpi_thermal_trip_open_fs(struct inode *inode, struct file *file);
@@ -123,6 +124,7 @@ static struct acpi_driver acpi_thermal_driver = {
123 .add = acpi_thermal_add, 124 .add = acpi_thermal_add,
124 .remove = acpi_thermal_remove, 125 .remove = acpi_thermal_remove,
125 .resume = acpi_thermal_resume, 126 .resume = acpi_thermal_resume,
127 .notify = acpi_thermal_notify,
126 }, 128 },
127}; 129};
128 130
@@ -192,6 +194,7 @@ struct acpi_thermal {
192 struct acpi_handle_list devices; 194 struct acpi_handle_list devices;
193 struct thermal_zone_device *thermal_zone; 195 struct thermal_zone_device *thermal_zone;
194 int tz_enabled; 196 int tz_enabled;
197 int kelvin_offset;
195 struct mutex lock; 198 struct mutex lock;
196}; 199};
197 200
@@ -581,7 +584,7 @@ static void acpi_thermal_check(void *data)
581} 584}
582 585
583/* sys I/F for generic thermal sysfs support */ 586/* sys I/F for generic thermal sysfs support */
584#define KELVIN_TO_MILLICELSIUS(t) (t * 100 - 273200) 587#define KELVIN_TO_MILLICELSIUS(t, off) (((t) - (off)) * 100)
585 588
586static int thermal_get_temp(struct thermal_zone_device *thermal, 589static int thermal_get_temp(struct thermal_zone_device *thermal,
587 unsigned long *temp) 590 unsigned long *temp)
@@ -596,7 +599,7 @@ static int thermal_get_temp(struct thermal_zone_device *thermal,
596 if (result) 599 if (result)
597 return result; 600 return result;
598 601
599 *temp = KELVIN_TO_MILLICELSIUS(tz->temperature); 602 *temp = KELVIN_TO_MILLICELSIUS(tz->temperature, tz->kelvin_offset);
600 return 0; 603 return 0;
601} 604}
602 605
@@ -702,7 +705,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
702 if (tz->trips.critical.flags.valid) { 705 if (tz->trips.critical.flags.valid) {
703 if (!trip) { 706 if (!trip) {
704 *temp = KELVIN_TO_MILLICELSIUS( 707 *temp = KELVIN_TO_MILLICELSIUS(
705 tz->trips.critical.temperature); 708 tz->trips.critical.temperature,
709 tz->kelvin_offset);
706 return 0; 710 return 0;
707 } 711 }
708 trip--; 712 trip--;
@@ -711,7 +715,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
711 if (tz->trips.hot.flags.valid) { 715 if (tz->trips.hot.flags.valid) {
712 if (!trip) { 716 if (!trip) {
713 *temp = KELVIN_TO_MILLICELSIUS( 717 *temp = KELVIN_TO_MILLICELSIUS(
714 tz->trips.hot.temperature); 718 tz->trips.hot.temperature,
719 tz->kelvin_offset);
715 return 0; 720 return 0;
716 } 721 }
717 trip--; 722 trip--;
@@ -720,7 +725,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
720 if (tz->trips.passive.flags.valid) { 725 if (tz->trips.passive.flags.valid) {
721 if (!trip) { 726 if (!trip) {
722 *temp = KELVIN_TO_MILLICELSIUS( 727 *temp = KELVIN_TO_MILLICELSIUS(
723 tz->trips.passive.temperature); 728 tz->trips.passive.temperature,
729 tz->kelvin_offset);
724 return 0; 730 return 0;
725 } 731 }
726 trip--; 732 trip--;
@@ -730,7 +736,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
730 tz->trips.active[i].flags.valid; i++) { 736 tz->trips.active[i].flags.valid; i++) {
731 if (!trip) { 737 if (!trip) {
732 *temp = KELVIN_TO_MILLICELSIUS( 738 *temp = KELVIN_TO_MILLICELSIUS(
733 tz->trips.active[i].temperature); 739 tz->trips.active[i].temperature,
740 tz->kelvin_offset);
734 return 0; 741 return 0;
735 } 742 }
736 trip--; 743 trip--;
@@ -745,7 +752,8 @@ static int thermal_get_crit_temp(struct thermal_zone_device *thermal,
745 752
746 if (tz->trips.critical.flags.valid) { 753 if (tz->trips.critical.flags.valid) {
747 *temperature = KELVIN_TO_MILLICELSIUS( 754 *temperature = KELVIN_TO_MILLICELSIUS(
748 tz->trips.critical.temperature); 755 tz->trips.critical.temperature,
756 tz->kelvin_offset);
749 return 0; 757 return 0;
750 } else 758 } else
751 return -EINVAL; 759 return -EINVAL;
@@ -901,7 +909,7 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
901 thermal_zone_device_register("acpitz", trips, tz, 909 thermal_zone_device_register("acpitz", trips, tz,
902 &acpi_thermal_zone_ops, 910 &acpi_thermal_zone_ops,
903 0, 0, 0, 911 0, 0, 0,
904 tz->polling_frequency); 912 tz->polling_frequency*100);
905 if (IS_ERR(tz->thermal_zone)) 913 if (IS_ERR(tz->thermal_zone))
906 return -ENODEV; 914 return -ENODEV;
907 915
@@ -1264,17 +1272,14 @@ static int acpi_thermal_remove_fs(struct acpi_device *device)
1264 Driver Interface 1272 Driver Interface
1265 -------------------------------------------------------------------------- */ 1273 -------------------------------------------------------------------------- */
1266 1274
1267static void acpi_thermal_notify(acpi_handle handle, u32 event, void *data) 1275static void acpi_thermal_notify(struct acpi_device *device, u32 event)
1268{ 1276{
1269 struct acpi_thermal *tz = data; 1277 struct acpi_thermal *tz = acpi_driver_data(device);
1270 struct acpi_device *device = NULL;
1271 1278
1272 1279
1273 if (!tz) 1280 if (!tz)
1274 return; 1281 return;
1275 1282
1276 device = tz->device;
1277
1278 switch (event) { 1283 switch (event) {
1279 case ACPI_THERMAL_NOTIFY_TEMPERATURE: 1284 case ACPI_THERMAL_NOTIFY_TEMPERATURE:
1280 acpi_thermal_check(tz); 1285 acpi_thermal_check(tz);
@@ -1298,8 +1303,6 @@ static void acpi_thermal_notify(acpi_handle handle, u32 event, void *data)
1298 "Unsupported event [0x%x]\n", event)); 1303 "Unsupported event [0x%x]\n", event));
1299 break; 1304 break;
1300 } 1305 }
1301
1302 return;
1303} 1306}
1304 1307
1305static int acpi_thermal_get_info(struct acpi_thermal *tz) 1308static int acpi_thermal_get_info(struct acpi_thermal *tz)
@@ -1334,10 +1337,28 @@ static int acpi_thermal_get_info(struct acpi_thermal *tz)
1334 return 0; 1337 return 0;
1335} 1338}
1336 1339
1340/*
1341 * The exact offset between Kelvin and degree Celsius is 273.15. However ACPI
1342 * handles temperature values with a single decimal place. As a consequence,
1343 * some implementations use an offset of 273.1 and others use an offset of
1344 * 273.2. Try to find out which one is being used, to present the most
1345 * accurate and visually appealing number.
1346 *
1347 * The heuristic below should work for all ACPI thermal zones which have a
1348 * critical trip point with a value being a multiple of 0.5 degree Celsius.
1349 */
1350static void acpi_thermal_guess_offset(struct acpi_thermal *tz)
1351{
1352 if (tz->trips.critical.flags.valid &&
1353 (tz->trips.critical.temperature % 5) == 1)
1354 tz->kelvin_offset = 2731;
1355 else
1356 tz->kelvin_offset = 2732;
1357}
1358
1337static int acpi_thermal_add(struct acpi_device *device) 1359static int acpi_thermal_add(struct acpi_device *device)
1338{ 1360{
1339 int result = 0; 1361 int result = 0;
1340 acpi_status status = AE_OK;
1341 struct acpi_thermal *tz = NULL; 1362 struct acpi_thermal *tz = NULL;
1342 1363
1343 1364
@@ -1360,6 +1381,8 @@ static int acpi_thermal_add(struct acpi_device *device)
1360 if (result) 1381 if (result)
1361 goto free_memory; 1382 goto free_memory;
1362 1383
1384 acpi_thermal_guess_offset(tz);
1385
1363 result = acpi_thermal_register_thermal_zone(tz); 1386 result = acpi_thermal_register_thermal_zone(tz);
1364 if (result) 1387 if (result)
1365 goto free_memory; 1388 goto free_memory;
@@ -1368,21 +1391,11 @@ static int acpi_thermal_add(struct acpi_device *device)
1368 if (result) 1391 if (result)
1369 goto unregister_thermal_zone; 1392 goto unregister_thermal_zone;
1370 1393
1371 status = acpi_install_notify_handler(device->handle,
1372 ACPI_DEVICE_NOTIFY,
1373 acpi_thermal_notify, tz);
1374 if (ACPI_FAILURE(status)) {
1375 result = -ENODEV;
1376 goto remove_fs;
1377 }
1378
1379 printk(KERN_INFO PREFIX "%s [%s] (%ld C)\n", 1394 printk(KERN_INFO PREFIX "%s [%s] (%ld C)\n",
1380 acpi_device_name(device), acpi_device_bid(device), 1395 acpi_device_name(device), acpi_device_bid(device),
1381 KELVIN_TO_CELSIUS(tz->temperature)); 1396 KELVIN_TO_CELSIUS(tz->temperature));
1382 goto end; 1397 goto end;
1383 1398
1384remove_fs:
1385 acpi_thermal_remove_fs(device);
1386unregister_thermal_zone: 1399unregister_thermal_zone:
1387 thermal_zone_device_unregister(tz->thermal_zone); 1400 thermal_zone_device_unregister(tz->thermal_zone);
1388free_memory: 1401free_memory:
@@ -1393,7 +1406,6 @@ end:
1393 1406
1394static int acpi_thermal_remove(struct acpi_device *device, int type) 1407static int acpi_thermal_remove(struct acpi_device *device, int type)
1395{ 1408{
1396 acpi_status status = AE_OK;
1397 struct acpi_thermal *tz = NULL; 1409 struct acpi_thermal *tz = NULL;
1398 1410
1399 if (!device || !acpi_driver_data(device)) 1411 if (!device || !acpi_driver_data(device))
@@ -1401,10 +1413,6 @@ static int acpi_thermal_remove(struct acpi_device *device, int type)
1401 1413
1402 tz = acpi_driver_data(device); 1414 tz = acpi_driver_data(device);
1403 1415
1404 status = acpi_remove_notify_handler(device->handle,
1405 ACPI_DEVICE_NOTIFY,
1406 acpi_thermal_notify);
1407
1408 acpi_thermal_remove_fs(device); 1416 acpi_thermal_remove_fs(device);
1409 acpi_thermal_unregister_thermal_zone(tz); 1417 acpi_thermal_unregister_thermal_zone(tz);
1410 mutex_destroy(&tz->lock); 1418 mutex_destroy(&tz->lock);
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index ab06143672bc..1705d947ea09 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -79,6 +79,7 @@ module_param(brightness_switch_enabled, bool, 0644);
79static int acpi_video_bus_add(struct acpi_device *device); 79static int acpi_video_bus_add(struct acpi_device *device);
80static int acpi_video_bus_remove(struct acpi_device *device, int type); 80static int acpi_video_bus_remove(struct acpi_device *device, int type);
81static int acpi_video_resume(struct acpi_device *device); 81static int acpi_video_resume(struct acpi_device *device);
82static void acpi_video_bus_notify(struct acpi_device *device, u32 event);
82 83
83static const struct acpi_device_id video_device_ids[] = { 84static const struct acpi_device_id video_device_ids[] = {
84 {ACPI_VIDEO_HID, 0}, 85 {ACPI_VIDEO_HID, 0},
@@ -94,6 +95,7 @@ static struct acpi_driver acpi_video_bus = {
94 .add = acpi_video_bus_add, 95 .add = acpi_video_bus_add,
95 .remove = acpi_video_bus_remove, 96 .remove = acpi_video_bus_remove,
96 .resume = acpi_video_resume, 97 .resume = acpi_video_resume,
98 .notify = acpi_video_bus_notify,
97 }, 99 },
98}; 100};
99 101
@@ -768,10 +770,12 @@ acpi_video_init_brightness(struct acpi_video_device *device)
768 * In this case, the first two elements in _BCL packages 770 * In this case, the first two elements in _BCL packages
769 * are also supported brightness levels that OS should take care of. 771 * are also supported brightness levels that OS should take care of.
770 */ 772 */
771 for (i = 2; i < count; i++) 773 for (i = 2; i < count; i++) {
772 if (br->levels[i] == br->levels[0] || 774 if (br->levels[i] == br->levels[0])
773 br->levels[i] == br->levels[1])
774 level_ac_battery++; 775 level_ac_battery++;
776 if (br->levels[i] == br->levels[1])
777 level_ac_battery++;
778 }
775 779
776 if (level_ac_battery < 2) { 780 if (level_ac_battery < 2) {
777 level_ac_battery = 2 - level_ac_battery; 781 level_ac_battery = 2 - level_ac_battery;
@@ -805,12 +809,19 @@ acpi_video_init_brightness(struct acpi_video_device *device)
805 br->flags._BCM_use_index = br->flags._BCL_use_index; 809 br->flags._BCM_use_index = br->flags._BCL_use_index;
806 810
807 /* _BQC uses INDEX while _BCL uses VALUE in some laptops */ 811 /* _BQC uses INDEX while _BCL uses VALUE in some laptops */
808 br->curr = max_level; 812 br->curr = level_old = max_level;
813
814 if (!device->cap._BQC)
815 goto set_level;
816
809 result = acpi_video_device_lcd_get_level_current(device, &level_old); 817 result = acpi_video_device_lcd_get_level_current(device, &level_old);
810 if (result) 818 if (result)
811 goto out_free_levels; 819 goto out_free_levels;
812 820
813 result = acpi_video_device_lcd_set_level(device, br->curr); 821 /*
822 * Set the level to maximum and check if _BQC uses indexed value
823 */
824 result = acpi_video_device_lcd_set_level(device, max_level);
814 if (result) 825 if (result)
815 goto out_free_levels; 826 goto out_free_levels;
816 827
@@ -818,25 +829,19 @@ acpi_video_init_brightness(struct acpi_video_device *device)
818 if (result) 829 if (result)
819 goto out_free_levels; 830 goto out_free_levels;
820 831
821 if ((level != level_old) && !br->flags._BCM_use_index) { 832 br->flags._BQC_use_index = (level == max_level ? 0 : 1);
822 /* Note: 833
823 * This piece of code does not work correctly if the current 834 if (!br->flags._BQC_use_index)
824 * brightness levels is 0. 835 goto set_level;
825 * But I guess boxes that boot with such a dark screen are rare 836
826 * and no more code is needed to cover this specifial case. 837 if (br->flags._BCL_reversed)
827 */ 838 level_old = (br->count - 1) - level_old;
828 839 level_old = br->levels[level_old];
829 if (level_ac_battery != 2) { 840
830 /* 841set_level:
831 * For now, we don't support the _BCL like this: 842 result = acpi_video_device_lcd_set_level(device, level_old);
832 * 16, 15, 0, 1, 2, 3, ..., 14, 15, 16 843 if (result)
833 * because we may mess up the index returned by _BQC. 844 goto out_free_levels;
834 * Plus: we have not got a box like this.
835 */
836 ACPI_ERROR((AE_INFO, "_BCL not supported\n"));
837 }
838 br->flags._BQC_use_index = 1;
839 }
840 845
841 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 846 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
842 "found %d brightness levels\n", count - 2)); 847 "found %d brightness levels\n", count - 2));
@@ -1986,17 +1991,15 @@ static int acpi_video_bus_stop_devices(struct acpi_video_bus *video)
1986 return acpi_video_bus_DOS(video, 0, 1); 1991 return acpi_video_bus_DOS(video, 0, 1);
1987} 1992}
1988 1993
1989static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data) 1994static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
1990{ 1995{
1991 struct acpi_video_bus *video = data; 1996 struct acpi_video_bus *video = acpi_driver_data(device);
1992 struct acpi_device *device = NULL;
1993 struct input_dev *input; 1997 struct input_dev *input;
1994 int keycode; 1998 int keycode;
1995 1999
1996 if (!video) 2000 if (!video)
1997 return; 2001 return;
1998 2002
1999 device = video->device;
2000 input = video->input; 2003 input = video->input;
2001 2004
2002 switch (event) { 2005 switch (event) {
@@ -2127,7 +2130,6 @@ static int acpi_video_resume(struct acpi_device *device)
2127 2130
2128static int acpi_video_bus_add(struct acpi_device *device) 2131static int acpi_video_bus_add(struct acpi_device *device)
2129{ 2132{
2130 acpi_status status;
2131 struct acpi_video_bus *video; 2133 struct acpi_video_bus *video;
2132 struct input_dev *input; 2134 struct input_dev *input;
2133 int error; 2135 int error;
@@ -2169,20 +2171,10 @@ static int acpi_video_bus_add(struct acpi_device *device)
2169 acpi_video_bus_get_devices(video, device); 2171 acpi_video_bus_get_devices(video, device);
2170 acpi_video_bus_start_devices(video); 2172 acpi_video_bus_start_devices(video);
2171 2173
2172 status = acpi_install_notify_handler(device->handle,
2173 ACPI_DEVICE_NOTIFY,
2174 acpi_video_bus_notify, video);
2175 if (ACPI_FAILURE(status)) {
2176 printk(KERN_ERR PREFIX
2177 "Error installing notify handler\n");
2178 error = -ENODEV;
2179 goto err_stop_video;
2180 }
2181
2182 video->input = input = input_allocate_device(); 2174 video->input = input = input_allocate_device();
2183 if (!input) { 2175 if (!input) {
2184 error = -ENOMEM; 2176 error = -ENOMEM;
2185 goto err_uninstall_notify; 2177 goto err_stop_video;
2186 } 2178 }
2187 2179
2188 snprintf(video->phys, sizeof(video->phys), 2180 snprintf(video->phys, sizeof(video->phys),
@@ -2218,9 +2210,6 @@ static int acpi_video_bus_add(struct acpi_device *device)
2218 2210
2219 err_free_input_dev: 2211 err_free_input_dev:
2220 input_free_device(input); 2212 input_free_device(input);
2221 err_uninstall_notify:
2222 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
2223 acpi_video_bus_notify);
2224 err_stop_video: 2213 err_stop_video:
2225 acpi_video_bus_stop_devices(video); 2214 acpi_video_bus_stop_devices(video);
2226 acpi_video_bus_put_devices(video); 2215 acpi_video_bus_put_devices(video);
@@ -2235,7 +2224,6 @@ static int acpi_video_bus_add(struct acpi_device *device)
2235 2224
2236static int acpi_video_bus_remove(struct acpi_device *device, int type) 2225static int acpi_video_bus_remove(struct acpi_device *device, int type)
2237{ 2226{
2238 acpi_status status = 0;
2239 struct acpi_video_bus *video = NULL; 2227 struct acpi_video_bus *video = NULL;
2240 2228
2241 2229
@@ -2245,11 +2233,6 @@ static int acpi_video_bus_remove(struct acpi_device *device, int type)
2245 video = acpi_driver_data(device); 2233 video = acpi_driver_data(device);
2246 2234
2247 acpi_video_bus_stop_devices(video); 2235 acpi_video_bus_stop_devices(video);
2248
2249 status = acpi_remove_notify_handler(video->device->handle,
2250 ACPI_DEVICE_NOTIFY,
2251 acpi_video_bus_notify);
2252
2253 acpi_video_bus_put_devices(video); 2236 acpi_video_bus_put_devices(video);
2254 acpi_video_bus_remove_fs(device); 2237 acpi_video_bus_remove_fs(device);
2255 2238
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c
index 5aee8c26cc9f..88725dcdf8bc 100644
--- a/drivers/acpi/wakeup.c
+++ b/drivers/acpi/wakeup.c
@@ -12,12 +12,14 @@
12#include "internal.h" 12#include "internal.h"
13#include "sleep.h" 13#include "sleep.h"
14 14
15/*
16 * We didn't lock acpi_device_lock in the file, because it invokes oops in
17 * suspend/resume and isn't really required as this is called in S-state. At
18 * that time, there is no device hotplug
19 **/
15#define _COMPONENT ACPI_SYSTEM_COMPONENT 20#define _COMPONENT ACPI_SYSTEM_COMPONENT
16ACPI_MODULE_NAME("wakeup_devices") 21ACPI_MODULE_NAME("wakeup_devices")
17 22
18extern struct list_head acpi_wakeup_device_list;
19extern spinlock_t acpi_device_lock;
20
21/** 23/**
22 * acpi_enable_wakeup_device_prep - prepare wakeup devices 24 * acpi_enable_wakeup_device_prep - prepare wakeup devices
23 * @sleep_state: ACPI state 25 * @sleep_state: ACPI state
@@ -29,7 +31,6 @@ void acpi_enable_wakeup_device_prep(u8 sleep_state)
29{ 31{
30 struct list_head *node, *next; 32 struct list_head *node, *next;
31 33
32 spin_lock(&acpi_device_lock);
33 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 34 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
34 struct acpi_device *dev = container_of(node, 35 struct acpi_device *dev = container_of(node,
35 struct acpi_device, 36 struct acpi_device,
@@ -40,11 +41,8 @@ void acpi_enable_wakeup_device_prep(u8 sleep_state)
40 (sleep_state > (u32) dev->wakeup.sleep_state)) 41 (sleep_state > (u32) dev->wakeup.sleep_state))
41 continue; 42 continue;
42 43
43 spin_unlock(&acpi_device_lock);
44 acpi_enable_wakeup_device_power(dev, sleep_state); 44 acpi_enable_wakeup_device_power(dev, sleep_state);
45 spin_lock(&acpi_device_lock);
46 } 45 }
47 spin_unlock(&acpi_device_lock);
48} 46}
49 47
50/** 48/**
@@ -60,7 +58,6 @@ void acpi_enable_wakeup_device(u8 sleep_state)
60 * Caution: this routine must be invoked when interrupt is disabled 58 * Caution: this routine must be invoked when interrupt is disabled
61 * Refer ACPI2.0: P212 59 * Refer ACPI2.0: P212
62 */ 60 */
63 spin_lock(&acpi_device_lock);
64 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 61 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
65 struct acpi_device *dev = 62 struct acpi_device *dev =
66 container_of(node, struct acpi_device, wakeup_list); 63 container_of(node, struct acpi_device, wakeup_list);
@@ -74,22 +71,17 @@ void acpi_enable_wakeup_device(u8 sleep_state)
74 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared) 71 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared)
75 || sleep_state > (u32) dev->wakeup.sleep_state) { 72 || sleep_state > (u32) dev->wakeup.sleep_state) {
76 if (dev->wakeup.flags.run_wake) { 73 if (dev->wakeup.flags.run_wake) {
77 spin_unlock(&acpi_device_lock);
78 /* set_gpe_type will disable GPE, leave it like that */ 74 /* set_gpe_type will disable GPE, leave it like that */
79 acpi_set_gpe_type(dev->wakeup.gpe_device, 75 acpi_set_gpe_type(dev->wakeup.gpe_device,
80 dev->wakeup.gpe_number, 76 dev->wakeup.gpe_number,
81 ACPI_GPE_TYPE_RUNTIME); 77 ACPI_GPE_TYPE_RUNTIME);
82 spin_lock(&acpi_device_lock);
83 } 78 }
84 continue; 79 continue;
85 } 80 }
86 spin_unlock(&acpi_device_lock);
87 if (!dev->wakeup.flags.run_wake) 81 if (!dev->wakeup.flags.run_wake)
88 acpi_enable_gpe(dev->wakeup.gpe_device, 82 acpi_enable_gpe(dev->wakeup.gpe_device,
89 dev->wakeup.gpe_number); 83 dev->wakeup.gpe_number);
90 spin_lock(&acpi_device_lock);
91 } 84 }
92 spin_unlock(&acpi_device_lock);
93} 85}
94 86
95/** 87/**
@@ -101,7 +93,6 @@ void acpi_disable_wakeup_device(u8 sleep_state)
101{ 93{
102 struct list_head *node, *next; 94 struct list_head *node, *next;
103 95
104 spin_lock(&acpi_device_lock);
105 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 96 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
106 struct acpi_device *dev = 97 struct acpi_device *dev =
107 container_of(node, struct acpi_device, wakeup_list); 98 container_of(node, struct acpi_device, wakeup_list);
@@ -112,19 +103,16 @@ void acpi_disable_wakeup_device(u8 sleep_state)
112 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared) 103 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared)
113 || sleep_state > (u32) dev->wakeup.sleep_state) { 104 || sleep_state > (u32) dev->wakeup.sleep_state) {
114 if (dev->wakeup.flags.run_wake) { 105 if (dev->wakeup.flags.run_wake) {
115 spin_unlock(&acpi_device_lock);
116 acpi_set_gpe_type(dev->wakeup.gpe_device, 106 acpi_set_gpe_type(dev->wakeup.gpe_device,
117 dev->wakeup.gpe_number, 107 dev->wakeup.gpe_number,
118 ACPI_GPE_TYPE_WAKE_RUN); 108 ACPI_GPE_TYPE_WAKE_RUN);
119 /* Re-enable it, since set_gpe_type will disable it */ 109 /* Re-enable it, since set_gpe_type will disable it */
120 acpi_enable_gpe(dev->wakeup.gpe_device, 110 acpi_enable_gpe(dev->wakeup.gpe_device,
121 dev->wakeup.gpe_number); 111 dev->wakeup.gpe_number);
122 spin_lock(&acpi_device_lock);
123 } 112 }
124 continue; 113 continue;
125 } 114 }
126 115
127 spin_unlock(&acpi_device_lock);
128 acpi_disable_wakeup_device_power(dev); 116 acpi_disable_wakeup_device_power(dev);
129 /* Never disable run-wake GPE */ 117 /* Never disable run-wake GPE */
130 if (!dev->wakeup.flags.run_wake) { 118 if (!dev->wakeup.flags.run_wake) {
@@ -133,16 +121,14 @@ void acpi_disable_wakeup_device(u8 sleep_state)
133 acpi_clear_gpe(dev->wakeup.gpe_device, 121 acpi_clear_gpe(dev->wakeup.gpe_device,
134 dev->wakeup.gpe_number, ACPI_NOT_ISR); 122 dev->wakeup.gpe_number, ACPI_NOT_ISR);
135 } 123 }
136 spin_lock(&acpi_device_lock);
137 } 124 }
138 spin_unlock(&acpi_device_lock);
139} 125}
140 126
141int __init acpi_wakeup_device_init(void) 127int __init acpi_wakeup_device_init(void)
142{ 128{
143 struct list_head *node, *next; 129 struct list_head *node, *next;
144 130
145 spin_lock(&acpi_device_lock); 131 mutex_lock(&acpi_device_lock);
146 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 132 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
147 struct acpi_device *dev = container_of(node, 133 struct acpi_device *dev = container_of(node,
148 struct acpi_device, 134 struct acpi_device,
@@ -150,15 +136,13 @@ int __init acpi_wakeup_device_init(void)
150 /* In case user doesn't load button driver */ 136 /* In case user doesn't load button driver */
151 if (!dev->wakeup.flags.run_wake || dev->wakeup.state.enabled) 137 if (!dev->wakeup.flags.run_wake || dev->wakeup.state.enabled)
152 continue; 138 continue;
153 spin_unlock(&acpi_device_lock);
154 acpi_set_gpe_type(dev->wakeup.gpe_device, 139 acpi_set_gpe_type(dev->wakeup.gpe_device,
155 dev->wakeup.gpe_number, 140 dev->wakeup.gpe_number,
156 ACPI_GPE_TYPE_WAKE_RUN); 141 ACPI_GPE_TYPE_WAKE_RUN);
157 acpi_enable_gpe(dev->wakeup.gpe_device, 142 acpi_enable_gpe(dev->wakeup.gpe_device,
158 dev->wakeup.gpe_number); 143 dev->wakeup.gpe_number);
159 dev->wakeup.state.enabled = 1; 144 dev->wakeup.state.enabled = 1;
160 spin_lock(&acpi_device_lock);
161 } 145 }
162 spin_unlock(&acpi_device_lock); 146 mutex_unlock(&acpi_device_lock);
163 return 0; 147 return 0;
164} 148}
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 57be6bea48eb..08186ecbaf8d 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -114,6 +114,7 @@ enum {
114 board_ahci_sb700 = 5, /* for SB700 and SB800 */ 114 board_ahci_sb700 = 5, /* for SB700 and SB800 */
115 board_ahci_mcp65 = 6, 115 board_ahci_mcp65 = 6,
116 board_ahci_nopmp = 7, 116 board_ahci_nopmp = 7,
117 board_ahci_yesncq = 8,
117 118
118 /* global controller registers */ 119 /* global controller registers */
119 HOST_CAP = 0x00, /* host capabilities */ 120 HOST_CAP = 0x00, /* host capabilities */
@@ -469,6 +470,14 @@ static const struct ata_port_info ahci_port_info[] = {
469 .udma_mask = ATA_UDMA6, 470 .udma_mask = ATA_UDMA6,
470 .port_ops = &ahci_ops, 471 .port_ops = &ahci_ops,
471 }, 472 },
473 /* board_ahci_yesncq */
474 {
475 AHCI_HFLAGS (AHCI_HFLAG_YES_NCQ),
476 .flags = AHCI_FLAG_COMMON,
477 .pio_mask = ATA_PIO4,
478 .udma_mask = ATA_UDMA6,
479 .port_ops = &ahci_ops,
480 },
472}; 481};
473 482
474static const struct pci_device_id ahci_pci_tbl[] = { 483static const struct pci_device_id ahci_pci_tbl[] = {
@@ -535,30 +544,30 @@ static const struct pci_device_id ahci_pci_tbl[] = {
535 { PCI_VDEVICE(NVIDIA, 0x045d), board_ahci_mcp65 }, /* MCP65 */ 544 { PCI_VDEVICE(NVIDIA, 0x045d), board_ahci_mcp65 }, /* MCP65 */
536 { PCI_VDEVICE(NVIDIA, 0x045e), board_ahci_mcp65 }, /* MCP65 */ 545 { PCI_VDEVICE(NVIDIA, 0x045e), board_ahci_mcp65 }, /* MCP65 */
537 { PCI_VDEVICE(NVIDIA, 0x045f), board_ahci_mcp65 }, /* MCP65 */ 546 { PCI_VDEVICE(NVIDIA, 0x045f), board_ahci_mcp65 }, /* MCP65 */
538 { PCI_VDEVICE(NVIDIA, 0x0550), board_ahci }, /* MCP67 */ 547 { PCI_VDEVICE(NVIDIA, 0x0550), board_ahci_yesncq }, /* MCP67 */
539 { PCI_VDEVICE(NVIDIA, 0x0551), board_ahci }, /* MCP67 */ 548 { PCI_VDEVICE(NVIDIA, 0x0551), board_ahci_yesncq }, /* MCP67 */
540 { PCI_VDEVICE(NVIDIA, 0x0552), board_ahci }, /* MCP67 */ 549 { PCI_VDEVICE(NVIDIA, 0x0552), board_ahci_yesncq }, /* MCP67 */
541 { PCI_VDEVICE(NVIDIA, 0x0553), board_ahci }, /* MCP67 */ 550 { PCI_VDEVICE(NVIDIA, 0x0553), board_ahci_yesncq }, /* MCP67 */
542 { PCI_VDEVICE(NVIDIA, 0x0554), board_ahci }, /* MCP67 */ 551 { PCI_VDEVICE(NVIDIA, 0x0554), board_ahci_yesncq }, /* MCP67 */
543 { PCI_VDEVICE(NVIDIA, 0x0555), board_ahci }, /* MCP67 */ 552 { PCI_VDEVICE(NVIDIA, 0x0555), board_ahci_yesncq }, /* MCP67 */
544 { PCI_VDEVICE(NVIDIA, 0x0556), board_ahci }, /* MCP67 */ 553 { PCI_VDEVICE(NVIDIA, 0x0556), board_ahci_yesncq }, /* MCP67 */
545 { PCI_VDEVICE(NVIDIA, 0x0557), board_ahci }, /* MCP67 */ 554 { PCI_VDEVICE(NVIDIA, 0x0557), board_ahci_yesncq }, /* MCP67 */
546 { PCI_VDEVICE(NVIDIA, 0x0558), board_ahci }, /* MCP67 */ 555 { PCI_VDEVICE(NVIDIA, 0x0558), board_ahci_yesncq }, /* MCP67 */
547 { PCI_VDEVICE(NVIDIA, 0x0559), board_ahci }, /* MCP67 */ 556 { PCI_VDEVICE(NVIDIA, 0x0559), board_ahci_yesncq }, /* MCP67 */
548 { PCI_VDEVICE(NVIDIA, 0x055a), board_ahci }, /* MCP67 */ 557 { PCI_VDEVICE(NVIDIA, 0x055a), board_ahci_yesncq }, /* MCP67 */
549 { PCI_VDEVICE(NVIDIA, 0x055b), board_ahci }, /* MCP67 */ 558 { PCI_VDEVICE(NVIDIA, 0x055b), board_ahci_yesncq }, /* MCP67 */
550 { PCI_VDEVICE(NVIDIA, 0x07f0), board_ahci }, /* MCP73 */ 559 { PCI_VDEVICE(NVIDIA, 0x07f0), board_ahci_yesncq }, /* MCP73 */
551 { PCI_VDEVICE(NVIDIA, 0x07f1), board_ahci }, /* MCP73 */ 560 { PCI_VDEVICE(NVIDIA, 0x07f1), board_ahci_yesncq }, /* MCP73 */
552 { PCI_VDEVICE(NVIDIA, 0x07f2), board_ahci }, /* MCP73 */ 561 { PCI_VDEVICE(NVIDIA, 0x07f2), board_ahci_yesncq }, /* MCP73 */
553 { PCI_VDEVICE(NVIDIA, 0x07f3), board_ahci }, /* MCP73 */ 562 { PCI_VDEVICE(NVIDIA, 0x07f3), board_ahci_yesncq }, /* MCP73 */
554 { PCI_VDEVICE(NVIDIA, 0x07f4), board_ahci }, /* MCP73 */ 563 { PCI_VDEVICE(NVIDIA, 0x07f4), board_ahci_yesncq }, /* MCP73 */
555 { PCI_VDEVICE(NVIDIA, 0x07f5), board_ahci }, /* MCP73 */ 564 { PCI_VDEVICE(NVIDIA, 0x07f5), board_ahci_yesncq }, /* MCP73 */
556 { PCI_VDEVICE(NVIDIA, 0x07f6), board_ahci }, /* MCP73 */ 565 { PCI_VDEVICE(NVIDIA, 0x07f6), board_ahci_yesncq }, /* MCP73 */
557 { PCI_VDEVICE(NVIDIA, 0x07f7), board_ahci }, /* MCP73 */ 566 { PCI_VDEVICE(NVIDIA, 0x07f7), board_ahci_yesncq }, /* MCP73 */
558 { PCI_VDEVICE(NVIDIA, 0x07f8), board_ahci }, /* MCP73 */ 567 { PCI_VDEVICE(NVIDIA, 0x07f8), board_ahci_yesncq }, /* MCP73 */
559 { PCI_VDEVICE(NVIDIA, 0x07f9), board_ahci }, /* MCP73 */ 568 { PCI_VDEVICE(NVIDIA, 0x07f9), board_ahci_yesncq }, /* MCP73 */
560 { PCI_VDEVICE(NVIDIA, 0x07fa), board_ahci }, /* MCP73 */ 569 { PCI_VDEVICE(NVIDIA, 0x07fa), board_ahci_yesncq }, /* MCP73 */
561 { PCI_VDEVICE(NVIDIA, 0x07fb), board_ahci }, /* MCP73 */ 570 { PCI_VDEVICE(NVIDIA, 0x07fb), board_ahci_yesncq }, /* MCP73 */
562 { PCI_VDEVICE(NVIDIA, 0x0ad0), board_ahci }, /* MCP77 */ 571 { PCI_VDEVICE(NVIDIA, 0x0ad0), board_ahci }, /* MCP77 */
563 { PCI_VDEVICE(NVIDIA, 0x0ad1), board_ahci }, /* MCP77 */ 572 { PCI_VDEVICE(NVIDIA, 0x0ad1), board_ahci }, /* MCP77 */
564 { PCI_VDEVICE(NVIDIA, 0x0ad2), board_ahci }, /* MCP77 */ 573 { PCI_VDEVICE(NVIDIA, 0x0ad2), board_ahci }, /* MCP77 */
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index e7ea77cf6069..17c5d48a75d2 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1231,6 +1231,9 @@ unsigned int ata_dev_classify(const struct ata_taskfile *tf)
1231 * 1231 *
1232 * We follow the current spec and consider that 0x69/0x96 1232 * We follow the current spec and consider that 0x69/0x96
1233 * identifies a port multiplier and 0x3c/0xc3 a SEMB device. 1233 * identifies a port multiplier and 0x3c/0xc3 a SEMB device.
1234 * Unfortunately, WDC WD1600JS-62MHB5 (a hard drive) reports
1235 * SEMB signature. This is worked around in
1236 * ata_dev_read_id().
1234 */ 1237 */
1235 if ((tf->lbam == 0) && (tf->lbah == 0)) { 1238 if ((tf->lbam == 0) && (tf->lbah == 0)) {
1236 DPRINTK("found ATA device by sig\n"); 1239 DPRINTK("found ATA device by sig\n");
@@ -1248,8 +1251,8 @@ unsigned int ata_dev_classify(const struct ata_taskfile *tf)
1248 } 1251 }
1249 1252
1250 if ((tf->lbam == 0x3c) && (tf->lbah == 0xc3)) { 1253 if ((tf->lbam == 0x3c) && (tf->lbah == 0xc3)) {
1251 printk(KERN_INFO "ata: SEMB device ignored\n"); 1254 DPRINTK("found SEMB device by sig (could be ATA device)\n");
1252 return ATA_DEV_SEMB_UNSUP; /* not yet */ 1255 return ATA_DEV_SEMB;
1253 } 1256 }
1254 1257
1255 DPRINTK("unknown device\n"); 1258 DPRINTK("unknown device\n");
@@ -1653,8 +1656,8 @@ unsigned long ata_id_xfermask(const u16 *id)
1653 /* 1656 /*
1654 * Process compact flash extended modes 1657 * Process compact flash extended modes
1655 */ 1658 */
1656 int pio = id[163] & 0x7; 1659 int pio = (id[ATA_ID_CFA_MODES] >> 0) & 0x7;
1657 int dma = (id[163] >> 3) & 7; 1660 int dma = (id[ATA_ID_CFA_MODES] >> 3) & 0x7;
1658 1661
1659 if (pio) 1662 if (pio)
1660 pio_mask |= (1 << 5); 1663 pio_mask |= (1 << 5);
@@ -2080,6 +2083,7 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
2080 struct ata_taskfile tf; 2083 struct ata_taskfile tf;
2081 unsigned int err_mask = 0; 2084 unsigned int err_mask = 0;
2082 const char *reason; 2085 const char *reason;
2086 bool is_semb = class == ATA_DEV_SEMB;
2083 int may_fallback = 1, tried_spinup = 0; 2087 int may_fallback = 1, tried_spinup = 0;
2084 int rc; 2088 int rc;
2085 2089
@@ -2090,6 +2094,8 @@ retry:
2090 ata_tf_init(dev, &tf); 2094 ata_tf_init(dev, &tf);
2091 2095
2092 switch (class) { 2096 switch (class) {
2097 case ATA_DEV_SEMB:
2098 class = ATA_DEV_ATA; /* some hard drives report SEMB sig */
2093 case ATA_DEV_ATA: 2099 case ATA_DEV_ATA:
2094 tf.command = ATA_CMD_ID_ATA; 2100 tf.command = ATA_CMD_ID_ATA;
2095 break; 2101 break;
@@ -2126,6 +2132,14 @@ retry:
2126 return -ENOENT; 2132 return -ENOENT;
2127 } 2133 }
2128 2134
2135 if (is_semb) {
2136 ata_dev_printk(dev, KERN_INFO, "IDENTIFY failed on "
2137 "device w/ SEMB sig, disabled\n");
2138 /* SEMB is not supported yet */
2139 *p_class = ATA_DEV_SEMB_UNSUP;
2140 return 0;
2141 }
2142
2129 if ((err_mask == AC_ERR_DEV) && (tf.feature & ATA_ABORTED)) { 2143 if ((err_mask == AC_ERR_DEV) && (tf.feature & ATA_ABORTED)) {
2130 /* Device or controller might have reported 2144 /* Device or controller might have reported
2131 * the wrong device class. Give a shot at the 2145 * the wrong device class. Give a shot at the
@@ -2412,7 +2426,8 @@ int ata_dev_configure(struct ata_device *dev)
2412 /* ATA-specific feature tests */ 2426 /* ATA-specific feature tests */
2413 if (dev->class == ATA_DEV_ATA) { 2427 if (dev->class == ATA_DEV_ATA) {
2414 if (ata_id_is_cfa(id)) { 2428 if (ata_id_is_cfa(id)) {
2415 if (id[162] & 1) /* CPRM may make this media unusable */ 2429 /* CPRM may make this media unusable */
2430 if (id[ATA_ID_CFA_KEY_MGMT] & 1)
2416 ata_dev_printk(dev, KERN_WARNING, 2431 ata_dev_printk(dev, KERN_WARNING,
2417 "supports DRM functions and may " 2432 "supports DRM functions and may "
2418 "not be fully accessable.\n"); 2433 "not be fully accessable.\n");
@@ -6110,13 +6125,11 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
6110 ata_port_printk(ap, KERN_INFO, "DUMMY\n"); 6125 ata_port_printk(ap, KERN_INFO, "DUMMY\n");
6111 } 6126 }
6112 6127
6113 /* perform each probe synchronously */ 6128 /* perform each probe asynchronously */
6114 DPRINTK("probe begin\n");
6115 for (i = 0; i < host->n_ports; i++) { 6129 for (i = 0; i < host->n_ports; i++) {
6116 struct ata_port *ap = host->ports[i]; 6130 struct ata_port *ap = host->ports[i];
6117 async_schedule(async_port_probe, ap); 6131 async_schedule(async_port_probe, ap);
6118 } 6132 }
6119 DPRINTK("probe end\n");
6120 6133
6121 return 0; 6134 return 0;
6122} 6135}
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index b9747fa59e54..2733b0c90b75 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -647,23 +647,45 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
647 return rc; 647 return rc;
648} 648}
649 649
650static int ata_ioc32(struct ata_port *ap)
651{
652 if (ap->flags & ATA_FLAG_PIO_DMA)
653 return 1;
654 if (ap->pflags & ATA_PFLAG_PIO32)
655 return 1;
656 return 0;
657}
658
650int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *scsidev, 659int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *scsidev,
651 int cmd, void __user *arg) 660 int cmd, void __user *arg)
652{ 661{
653 int val = -EINVAL, rc = -EINVAL; 662 int val = -EINVAL, rc = -EINVAL;
663 unsigned long flags;
654 664
655 switch (cmd) { 665 switch (cmd) {
656 case ATA_IOC_GET_IO32: 666 case ATA_IOC_GET_IO32:
657 val = 0; 667 spin_lock_irqsave(ap->lock, flags);
668 val = ata_ioc32(ap);
669 spin_unlock_irqrestore(ap->lock, flags);
658 if (copy_to_user(arg, &val, 1)) 670 if (copy_to_user(arg, &val, 1))
659 return -EFAULT; 671 return -EFAULT;
660 return 0; 672 return 0;
661 673
662 case ATA_IOC_SET_IO32: 674 case ATA_IOC_SET_IO32:
663 val = (unsigned long) arg; 675 val = (unsigned long) arg;
664 if (val != 0) 676 rc = 0;
665 return -EINVAL; 677 spin_lock_irqsave(ap->lock, flags);
666 return 0; 678 if (ap->pflags & ATA_PFLAG_PIO32CHANGE) {
679 if (val)
680 ap->pflags |= ATA_PFLAG_PIO32;
681 else
682 ap->pflags &= ~ATA_PFLAG_PIO32;
683 } else {
684 if (val != ata_ioc32(ap))
685 rc = -EINVAL;
686 }
687 spin_unlock_irqrestore(ap->lock, flags);
688 return rc;
667 689
668 case HDIO_GET_IDENTITY: 690 case HDIO_GET_IDENTITY:
669 return ata_get_identity(ap, scsidev, arg); 691 return ata_get_identity(ap, scsidev, arg);
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 8332e97a9de3..bb18415d3d63 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -87,6 +87,7 @@ const struct ata_port_operations ata_bmdma32_port_ops = {
87 .inherits = &ata_bmdma_port_ops, 87 .inherits = &ata_bmdma_port_ops,
88 88
89 .sff_data_xfer = ata_sff_data_xfer32, 89 .sff_data_xfer = ata_sff_data_xfer32,
90 .port_start = ata_sff_port_start32,
90}; 91};
91EXPORT_SYMBOL_GPL(ata_bmdma32_port_ops); 92EXPORT_SYMBOL_GPL(ata_bmdma32_port_ops);
92 93
@@ -769,6 +770,9 @@ unsigned int ata_sff_data_xfer32(struct ata_device *dev, unsigned char *buf,
769 void __iomem *data_addr = ap->ioaddr.data_addr; 770 void __iomem *data_addr = ap->ioaddr.data_addr;
770 unsigned int words = buflen >> 2; 771 unsigned int words = buflen >> 2;
771 int slop = buflen & 3; 772 int slop = buflen & 3;
773
774 if (!(ap->pflags & ATA_PFLAG_PIO32))
775 return ata_sff_data_xfer(dev, buf, buflen, rw);
772 776
773 /* Transfer multiple of 4 bytes */ 777 /* Transfer multiple of 4 bytes */
774 if (rw == READ) 778 if (rw == READ)
@@ -2402,6 +2406,29 @@ int ata_sff_port_start(struct ata_port *ap)
2402EXPORT_SYMBOL_GPL(ata_sff_port_start); 2406EXPORT_SYMBOL_GPL(ata_sff_port_start);
2403 2407
2404/** 2408/**
2409 * ata_sff_port_start32 - Set port up for dma.
2410 * @ap: Port to initialize
2411 *
2412 * Called just after data structures for each port are
2413 * initialized. Allocates space for PRD table if the device
2414 * is DMA capable SFF.
2415 *
2416 * May be used as the port_start() entry in ata_port_operations for
2417 * devices that are capable of 32bit PIO.
2418 *
2419 * LOCKING:
2420 * Inherited from caller.
2421 */
2422int ata_sff_port_start32(struct ata_port *ap)
2423{
2424 ap->pflags |= ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE;
2425 if (ap->ioaddr.bmdma_addr)
2426 return ata_port_start(ap);
2427 return 0;
2428}
2429EXPORT_SYMBOL_GPL(ata_sff_port_start32);
2430
2431/**
2405 * ata_sff_std_ports - initialize ioaddr with standard port offsets. 2432 * ata_sff_std_ports - initialize ioaddr with standard port offsets.
2406 * @ioaddr: IO address structure to be initialized 2433 * @ioaddr: IO address structure to be initialized
2407 * 2434 *
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c
index 81ab57003aba..122c786449a9 100644
--- a/drivers/ata/pata_hpt37x.c
+++ b/drivers/ata/pata_hpt37x.c
@@ -8,7 +8,7 @@
8 * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> 8 * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org>
9 * Portions Copyright (C) 2001 Sun Microsystems, Inc. 9 * Portions Copyright (C) 2001 Sun Microsystems, Inc.
10 * Portions Copyright (C) 2003 Red Hat Inc 10 * Portions Copyright (C) 2003 Red Hat Inc
11 * Portions Copyright (C) 2005-2007 MontaVista Software, Inc. 11 * Portions Copyright (C) 2005-2009 MontaVista Software, Inc.
12 * 12 *
13 * TODO 13 * TODO
14 * Look into engine reset on timeout errors. Should not be required. 14 * Look into engine reset on timeout errors. Should not be required.
@@ -24,7 +24,7 @@
24#include <linux/libata.h> 24#include <linux/libata.h>
25 25
26#define DRV_NAME "pata_hpt37x" 26#define DRV_NAME "pata_hpt37x"
27#define DRV_VERSION "0.6.11" 27#define DRV_VERSION "0.6.12"
28 28
29struct hpt_clock { 29struct hpt_clock {
30 u8 xfer_speed; 30 u8 xfer_speed;
@@ -445,23 +445,6 @@ static void hpt370_set_dmamode(struct ata_port *ap, struct ata_device *adev)
445} 445}
446 446
447/** 447/**
448 * hpt370_bmdma_start - DMA engine begin
449 * @qc: ATA command
450 *
451 * The 370 and 370A want us to reset the DMA engine each time we
452 * use it. The 372 and later are fine.
453 */
454
455static void hpt370_bmdma_start(struct ata_queued_cmd *qc)
456{
457 struct ata_port *ap = qc->ap;
458 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
459 pci_write_config_byte(pdev, 0x50 + 4 * ap->port_no, 0x37);
460 udelay(10);
461 ata_bmdma_start(qc);
462}
463
464/**
465 * hpt370_bmdma_end - DMA engine stop 448 * hpt370_bmdma_end - DMA engine stop
466 * @qc: ATA command 449 * @qc: ATA command
467 * 450 *
@@ -598,7 +581,6 @@ static struct scsi_host_template hpt37x_sht = {
598static struct ata_port_operations hpt370_port_ops = { 581static struct ata_port_operations hpt370_port_ops = {
599 .inherits = &ata_bmdma_port_ops, 582 .inherits = &ata_bmdma_port_ops,
600 583
601 .bmdma_start = hpt370_bmdma_start,
602 .bmdma_stop = hpt370_bmdma_stop, 584 .bmdma_stop = hpt370_bmdma_stop,
603 585
604 .mode_filter = hpt370_filter, 586 .mode_filter = hpt370_filter,
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
index 3f830f0fe2cc..f72c6c5b820f 100644
--- a/drivers/ata/pata_legacy.c
+++ b/drivers/ata/pata_legacy.c
@@ -108,6 +108,7 @@ struct legacy_controller {
108 struct ata_port_operations *ops; 108 struct ata_port_operations *ops;
109 unsigned int pio_mask; 109 unsigned int pio_mask;
110 unsigned int flags; 110 unsigned int flags;
111 unsigned int pflags;
111 int (*setup)(struct platform_device *, struct legacy_probe *probe, 112 int (*setup)(struct platform_device *, struct legacy_probe *probe,
112 struct legacy_data *data); 113 struct legacy_data *data);
113}; 114};
@@ -284,9 +285,11 @@ static unsigned int pdc_data_xfer_vlb(struct ata_device *dev,
284 unsigned char *buf, unsigned int buflen, int rw) 285 unsigned char *buf, unsigned int buflen, int rw)
285{ 286{
286 int slop = buflen & 3; 287 int slop = buflen & 3;
288 struct ata_port *ap = dev->link->ap;
289
287 /* 32bit I/O capable *and* we need to write a whole number of dwords */ 290 /* 32bit I/O capable *and* we need to write a whole number of dwords */
288 if (ata_id_has_dword_io(dev->id) && (slop == 0 || slop == 3)) { 291 if (ata_id_has_dword_io(dev->id) && (slop == 0 || slop == 3)
289 struct ata_port *ap = dev->link->ap; 292 && (ap->pflags & ATA_PFLAG_PIO32)) {
290 unsigned long flags; 293 unsigned long flags;
291 294
292 local_irq_save(flags); 295 local_irq_save(flags);
@@ -736,7 +739,8 @@ static unsigned int vlb32_data_xfer(struct ata_device *adev, unsigned char *buf,
736 struct ata_port *ap = adev->link->ap; 739 struct ata_port *ap = adev->link->ap;
737 int slop = buflen & 3; 740 int slop = buflen & 3;
738 741
739 if (ata_id_has_dword_io(adev->id) && (slop == 0 || slop == 3)) { 742 if (ata_id_has_dword_io(adev->id) && (slop == 0 || slop == 3)
743 && (ap->pflags & ATA_PFLAG_PIO32)) {
740 if (rw == WRITE) 744 if (rw == WRITE)
741 iowrite32_rep(ap->ioaddr.data_addr, buf, buflen >> 2); 745 iowrite32_rep(ap->ioaddr.data_addr, buf, buflen >> 2);
742 else 746 else
@@ -858,27 +862,30 @@ static struct ata_port_operations winbond_port_ops = {
858 862
859static struct legacy_controller controllers[] = { 863static struct legacy_controller controllers[] = {
860 {"BIOS", &legacy_port_ops, 0x1F, 864 {"BIOS", &legacy_port_ops, 0x1F,
861 ATA_FLAG_NO_IORDY, NULL }, 865 ATA_FLAG_NO_IORDY, 0, NULL },
862 {"Snooping", &simple_port_ops, 0x1F, 866 {"Snooping", &simple_port_ops, 0x1F,
863 0 , NULL }, 867 0, 0, NULL },
864 {"PDC20230", &pdc20230_port_ops, 0x7, 868 {"PDC20230", &pdc20230_port_ops, 0x7,
865 ATA_FLAG_NO_IORDY, NULL }, 869 ATA_FLAG_NO_IORDY,
870 ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE, NULL },
866 {"HT6560A", &ht6560a_port_ops, 0x07, 871 {"HT6560A", &ht6560a_port_ops, 0x07,
867 ATA_FLAG_NO_IORDY, NULL }, 872 ATA_FLAG_NO_IORDY, 0, NULL },
868 {"HT6560B", &ht6560b_port_ops, 0x1F, 873 {"HT6560B", &ht6560b_port_ops, 0x1F,
869 ATA_FLAG_NO_IORDY, NULL }, 874 ATA_FLAG_NO_IORDY, 0, NULL },
870 {"OPTI82C611A", &opti82c611a_port_ops, 0x0F, 875 {"OPTI82C611A", &opti82c611a_port_ops, 0x0F,
871 0 , NULL }, 876 0, 0, NULL },
872 {"OPTI82C46X", &opti82c46x_port_ops, 0x0F, 877 {"OPTI82C46X", &opti82c46x_port_ops, 0x0F,
873 0 , NULL }, 878 0, 0, NULL },
874 {"QDI6500", &qdi6500_port_ops, 0x07, 879 {"QDI6500", &qdi6500_port_ops, 0x07,
875 ATA_FLAG_NO_IORDY, qdi_port }, 880 ATA_FLAG_NO_IORDY,
881 ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE, qdi_port },
876 {"QDI6580", &qdi6580_port_ops, 0x1F, 882 {"QDI6580", &qdi6580_port_ops, 0x1F,
877 0 , qdi_port }, 883 0, ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE, qdi_port },
878 {"QDI6580DP", &qdi6580dp_port_ops, 0x1F, 884 {"QDI6580DP", &qdi6580dp_port_ops, 0x1F,
879 0 , qdi_port }, 885 0, ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE, qdi_port },
880 {"W83759A", &winbond_port_ops, 0x1F, 886 {"W83759A", &winbond_port_ops, 0x1F,
881 0 , winbond_port } 887 0, ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE,
888 winbond_port }
882}; 889};
883 890
884/** 891/**
@@ -1008,6 +1015,7 @@ static __init int legacy_init_one(struct legacy_probe *probe)
1008 ap->ops = ops; 1015 ap->ops = ops;
1009 ap->pio_mask = pio_modes; 1016 ap->pio_mask = pio_modes;
1010 ap->flags |= ATA_FLAG_SLAVE_POSS | iordy; 1017 ap->flags |= ATA_FLAG_SLAVE_POSS | iordy;
1018 ap->pflags |= controller->pflags;
1011 ap->ioaddr.cmd_addr = io_addr; 1019 ap->ioaddr.cmd_addr = io_addr;
1012 ap->ioaddr.altstatus_addr = ctrl_addr; 1020 ap->ioaddr.altstatus_addr = ctrl_addr;
1013 ap->ioaddr.ctl_addr = ctrl_addr; 1021 ap->ioaddr.ctl_addr = ctrl_addr;
@@ -1032,6 +1040,7 @@ static __init int legacy_init_one(struct legacy_probe *probe)
1032 return 0; 1040 return 0;
1033 } 1041 }
1034 } 1042 }
1043 ata_host_detach(host);
1035fail: 1044fail:
1036 platform_device_unregister(pdev); 1045 platform_device_unregister(pdev);
1037 return ret; 1046 return ret;
diff --git a/drivers/ata/pata_ninja32.c b/drivers/ata/pata_ninja32.c
index 0fb6b1b1e634..dd53a66b19e3 100644
--- a/drivers/ata/pata_ninja32.c
+++ b/drivers/ata/pata_ninja32.c
@@ -44,7 +44,7 @@
44#include <linux/libata.h> 44#include <linux/libata.h>
45 45
46#define DRV_NAME "pata_ninja32" 46#define DRV_NAME "pata_ninja32"
47#define DRV_VERSION "0.1.3" 47#define DRV_VERSION "0.1.5"
48 48
49 49
50/** 50/**
@@ -86,6 +86,7 @@ static struct ata_port_operations ninja32_port_ops = {
86 .sff_dev_select = ninja32_dev_select, 86 .sff_dev_select = ninja32_dev_select,
87 .cable_detect = ata_cable_40wire, 87 .cable_detect = ata_cable_40wire,
88 .set_piomode = ninja32_set_piomode, 88 .set_piomode = ninja32_set_piomode,
89 .sff_data_xfer = ata_sff_data_xfer32
89}; 90};
90 91
91static void ninja32_program(void __iomem *base) 92static void ninja32_program(void __iomem *base)
@@ -144,6 +145,7 @@ static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id)
144 ap->ioaddr.altstatus_addr = base + 0x1E; 145 ap->ioaddr.altstatus_addr = base + 0x1E;
145 ap->ioaddr.bmdma_addr = base; 146 ap->ioaddr.bmdma_addr = base;
146 ata_sff_std_ports(&ap->ioaddr); 147 ata_sff_std_ports(&ap->ioaddr);
148 ap->pflags = ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE;
147 149
148 ninja32_program(base); 150 ninja32_program(base);
149 /* FIXME: Should we disable them at remove ? */ 151 /* FIXME: Should we disable them at remove ? */
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c
index b08e6e0f82b6..45657cacec43 100644
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -62,7 +62,7 @@
62#include <linux/dmi.h> 62#include <linux/dmi.h>
63 63
64#define DRV_NAME "pata_via" 64#define DRV_NAME "pata_via"
65#define DRV_VERSION "0.3.3" 65#define DRV_VERSION "0.3.4"
66 66
67/* 67/*
68 * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx 68 * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx
@@ -136,6 +136,9 @@ static const struct via_isa_bridge {
136 { NULL } 136 { NULL }
137}; 137};
138 138
139struct via_port {
140 u8 cached_device;
141};
139 142
140/* 143/*
141 * Cable special cases 144 * Cable special cases
@@ -346,14 +349,70 @@ static void via_set_dmamode(struct ata_port *ap, struct ata_device *adev)
346 */ 349 */
347static void via_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) 350static void via_tf_load(struct ata_port *ap, const struct ata_taskfile *tf)
348{ 351{
349 struct ata_taskfile tmp_tf; 352 struct ata_ioports *ioaddr = &ap->ioaddr;
353 struct via_port *vp = ap->private_data;
354 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR;
355 int newctl = 0;
356
357 if (tf->ctl != ap->last_ctl) {
358 iowrite8(tf->ctl, ioaddr->ctl_addr);
359 ap->last_ctl = tf->ctl;
360 ata_wait_idle(ap);
361 newctl = 1;
362 }
363
364 if (tf->flags & ATA_TFLAG_DEVICE) {
365 iowrite8(tf->device, ioaddr->device_addr);
366 vp->cached_device = tf->device;
367 } else if (newctl)
368 iowrite8(vp->cached_device, ioaddr->device_addr);
369
370 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) {
371 WARN_ON_ONCE(!ioaddr->ctl_addr);
372 iowrite8(tf->hob_feature, ioaddr->feature_addr);
373 iowrite8(tf->hob_nsect, ioaddr->nsect_addr);
374 iowrite8(tf->hob_lbal, ioaddr->lbal_addr);
375 iowrite8(tf->hob_lbam, ioaddr->lbam_addr);
376 iowrite8(tf->hob_lbah, ioaddr->lbah_addr);
377 VPRINTK("hob: feat 0x%X nsect 0x%X, lba 0x%X 0x%X 0x%X\n",
378 tf->hob_feature,
379 tf->hob_nsect,
380 tf->hob_lbal,
381 tf->hob_lbam,
382 tf->hob_lbah);
383 }
350 384
351 if (ap->ctl != ap->last_ctl && !(tf->flags & ATA_TFLAG_DEVICE)) { 385 if (is_addr) {
352 tmp_tf = *tf; 386 iowrite8(tf->feature, ioaddr->feature_addr);
353 tmp_tf.flags |= ATA_TFLAG_DEVICE; 387 iowrite8(tf->nsect, ioaddr->nsect_addr);
354 tf = &tmp_tf; 388 iowrite8(tf->lbal, ioaddr->lbal_addr);
389 iowrite8(tf->lbam, ioaddr->lbam_addr);
390 iowrite8(tf->lbah, ioaddr->lbah_addr);
391 VPRINTK("feat 0x%X nsect 0x%X lba 0x%X 0x%X 0x%X\n",
392 tf->feature,
393 tf->nsect,
394 tf->lbal,
395 tf->lbam,
396 tf->lbah);
355 } 397 }
356 ata_sff_tf_load(ap, tf); 398
399 ata_wait_idle(ap);
400}
401
402static int via_port_start(struct ata_port *ap)
403{
404 struct via_port *vp;
405 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
406
407 int ret = ata_sff_port_start(ap);
408 if (ret < 0)
409 return ret;
410
411 vp = devm_kzalloc(&pdev->dev, sizeof(struct via_port), GFP_KERNEL);
412 if (vp == NULL)
413 return -ENOMEM;
414 ap->private_data = vp;
415 return 0;
357} 416}
358 417
359static struct scsi_host_template via_sht = { 418static struct scsi_host_template via_sht = {
@@ -367,6 +426,7 @@ static struct ata_port_operations via_port_ops = {
367 .set_dmamode = via_set_dmamode, 426 .set_dmamode = via_set_dmamode,
368 .prereset = via_pre_reset, 427 .prereset = via_pre_reset,
369 .sff_tf_load = via_tf_load, 428 .sff_tf_load = via_tf_load,
429 .port_start = via_port_start,
370}; 430};
371 431
372static struct ata_port_operations via_port_ops_noirq = { 432static struct ata_port_operations via_port_ops_noirq = {
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 37ae5dc1070c..870dcfd82357 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -1881,6 +1881,39 @@ static u8 mv_bmdma_status(struct ata_port *ap)
1881 return status; 1881 return status;
1882} 1882}
1883 1883
1884static void mv_rw_multi_errata_sata24(struct ata_queued_cmd *qc)
1885{
1886 struct ata_taskfile *tf = &qc->tf;
1887 /*
1888 * Workaround for 88SX60x1 FEr SATA#24.
1889 *
1890 * Chip may corrupt WRITEs if multi_count >= 4kB.
1891 * Note that READs are unaffected.
1892 *
1893 * It's not clear if this errata really means "4K bytes",
1894 * or if it always happens for multi_count > 7
1895 * regardless of device sector_size.
1896 *
1897 * So, for safety, any write with multi_count > 7
1898 * gets converted here into a regular PIO write instead:
1899 */
1900 if ((tf->flags & ATA_TFLAG_WRITE) && is_multi_taskfile(tf)) {
1901 if (qc->dev->multi_count > 7) {
1902 switch (tf->command) {
1903 case ATA_CMD_WRITE_MULTI:
1904 tf->command = ATA_CMD_PIO_WRITE;
1905 break;
1906 case ATA_CMD_WRITE_MULTI_FUA_EXT:
1907 tf->flags &= ~ATA_TFLAG_FUA; /* ugh */
1908 /* fall through */
1909 case ATA_CMD_WRITE_MULTI_EXT:
1910 tf->command = ATA_CMD_PIO_WRITE_EXT;
1911 break;
1912 }
1913 }
1914 }
1915}
1916
1884/** 1917/**
1885 * mv_qc_prep - Host specific command preparation. 1918 * mv_qc_prep - Host specific command preparation.
1886 * @qc: queued command to prepare 1919 * @qc: queued command to prepare
@@ -1898,17 +1931,24 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
1898 struct ata_port *ap = qc->ap; 1931 struct ata_port *ap = qc->ap;
1899 struct mv_port_priv *pp = ap->private_data; 1932 struct mv_port_priv *pp = ap->private_data;
1900 __le16 *cw; 1933 __le16 *cw;
1901 struct ata_taskfile *tf; 1934 struct ata_taskfile *tf = &qc->tf;
1902 u16 flags = 0; 1935 u16 flags = 0;
1903 unsigned in_index; 1936 unsigned in_index;
1904 1937
1905 if ((qc->tf.protocol != ATA_PROT_DMA) && 1938 switch (tf->protocol) {
1906 (qc->tf.protocol != ATA_PROT_NCQ)) 1939 case ATA_PROT_DMA:
1940 case ATA_PROT_NCQ:
1941 break; /* continue below */
1942 case ATA_PROT_PIO:
1943 mv_rw_multi_errata_sata24(qc);
1944 return;
1945 default:
1907 return; 1946 return;
1947 }
1908 1948
1909 /* Fill in command request block 1949 /* Fill in command request block
1910 */ 1950 */
1911 if (!(qc->tf.flags & ATA_TFLAG_WRITE)) 1951 if (!(tf->flags & ATA_TFLAG_WRITE))
1912 flags |= CRQB_FLAG_READ; 1952 flags |= CRQB_FLAG_READ;
1913 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag); 1953 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag);
1914 flags |= qc->tag << CRQB_TAG_SHIFT; 1954 flags |= qc->tag << CRQB_TAG_SHIFT;
@@ -1924,7 +1964,6 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
1924 pp->crqb[in_index].ctrl_flags = cpu_to_le16(flags); 1964 pp->crqb[in_index].ctrl_flags = cpu_to_le16(flags);
1925 1965
1926 cw = &pp->crqb[in_index].ata_cmd[0]; 1966 cw = &pp->crqb[in_index].ata_cmd[0];
1927 tf = &qc->tf;
1928 1967
1929 /* Sadly, the CRQB cannot accomodate all registers--there are 1968 /* Sadly, the CRQB cannot accomodate all registers--there are
1930 * only 11 bytes...so we must pick and choose required 1969 * only 11 bytes...so we must pick and choose required
@@ -1990,16 +2029,16 @@ static void mv_qc_prep_iie(struct ata_queued_cmd *qc)
1990 struct ata_port *ap = qc->ap; 2029 struct ata_port *ap = qc->ap;
1991 struct mv_port_priv *pp = ap->private_data; 2030 struct mv_port_priv *pp = ap->private_data;
1992 struct mv_crqb_iie *crqb; 2031 struct mv_crqb_iie *crqb;
1993 struct ata_taskfile *tf; 2032 struct ata_taskfile *tf = &qc->tf;
1994 unsigned in_index; 2033 unsigned in_index;
1995 u32 flags = 0; 2034 u32 flags = 0;
1996 2035
1997 if ((qc->tf.protocol != ATA_PROT_DMA) && 2036 if ((tf->protocol != ATA_PROT_DMA) &&
1998 (qc->tf.protocol != ATA_PROT_NCQ)) 2037 (tf->protocol != ATA_PROT_NCQ))
1999 return; 2038 return;
2000 2039
2001 /* Fill in Gen IIE command request block */ 2040 /* Fill in Gen IIE command request block */
2002 if (!(qc->tf.flags & ATA_TFLAG_WRITE)) 2041 if (!(tf->flags & ATA_TFLAG_WRITE))
2003 flags |= CRQB_FLAG_READ; 2042 flags |= CRQB_FLAG_READ;
2004 2043
2005 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag); 2044 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag);
@@ -2015,7 +2054,6 @@ static void mv_qc_prep_iie(struct ata_queued_cmd *qc)
2015 crqb->addr_hi = cpu_to_le32((pp->sg_tbl_dma[qc->tag] >> 16) >> 16); 2054 crqb->addr_hi = cpu_to_le32((pp->sg_tbl_dma[qc->tag] >> 16) >> 16);
2016 crqb->flags = cpu_to_le32(flags); 2055 crqb->flags = cpu_to_le32(flags);
2017 2056
2018 tf = &qc->tf;
2019 crqb->ata_cmd[0] = cpu_to_le32( 2057 crqb->ata_cmd[0] = cpu_to_le32(
2020 (tf->command << 16) | 2058 (tf->command << 16) |
2021 (tf->feature << 24) 2059 (tf->feature << 24)
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index 98e8c50703b3..bdd43c7f432e 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -566,7 +566,7 @@ static int svia_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
566 static int printed_version; 566 static int printed_version;
567 unsigned int i; 567 unsigned int i;
568 int rc; 568 int rc;
569 struct ata_host *host; 569 struct ata_host *host = NULL;
570 int board_id = (int) ent->driver_data; 570 int board_id = (int) ent->driver_data;
571 const unsigned *bar_sizes; 571 const unsigned *bar_sizes;
572 572
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index be204308cc1b..9359613addc5 100644
--- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c
@@ -1059,7 +1059,7 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id)
1059 goto out; 1059 goto out;
1060 } 1060 }
1061 1061
1062 err = pci_set_dma_mask(dev, DMA_32BIT_MASK); 1062 err = pci_set_dma_mask(dev, DMA_BIT_MASK(32));
1063 if (err) { 1063 if (err) {
1064 dev_warn(&dev->dev, "Failed to set 32-bit DMA mask\n"); 1064 dev_warn(&dev->dev, "Failed to set 32-bit DMA mask\n");
1065 goto out; 1065 goto out;
diff --git a/drivers/base/base.h b/drivers/base/base.h
index ddc97496db4a..b528145a078f 100644
--- a/drivers/base/base.h
+++ b/drivers/base/base.h
@@ -115,7 +115,7 @@ extern int driver_probe_device(struct device_driver *drv, struct device *dev);
115static inline int driver_match_device(struct device_driver *drv, 115static inline int driver_match_device(struct device_driver *drv,
116 struct device *dev) 116 struct device *dev)
117{ 117{
118 return drv->bus->match && drv->bus->match(dev, drv); 118 return drv->bus->match ? drv->bus->match(dev, drv) : 1;
119} 119}
120 120
121extern void sysdev_shutdown(void); 121extern void sysdev_shutdown(void);
diff --git a/drivers/base/core.c b/drivers/base/core.c
index e73c92d13a23..4aa527b8a913 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -891,7 +891,8 @@ int device_add(struct device *dev)
891 set_dev_node(dev, dev_to_node(parent)); 891 set_dev_node(dev, dev_to_node(parent));
892 892
893 /* first, register with generic layer. */ 893 /* first, register with generic layer. */
894 error = kobject_add(&dev->kobj, dev->kobj.parent, "%s", dev_name(dev)); 894 /* we require the name to be set before, and pass NULL */
895 error = kobject_add(&dev->kobj, dev->kobj.parent, NULL);
895 if (error) 896 if (error)
896 goto Error; 897 goto Error;
897 898
@@ -1142,6 +1143,9 @@ int device_for_each_child(struct device *parent, void *data,
1142 struct device *child; 1143 struct device *child;
1143 int error = 0; 1144 int error = 0;
1144 1145
1146 if (!parent->p)
1147 return 0;
1148
1145 klist_iter_init(&parent->p->klist_children, &i); 1149 klist_iter_init(&parent->p->klist_children, &i);
1146 while ((child = next_device(&i)) && !error) 1150 while ((child = next_device(&i)) && !error)
1147 error = fn(child, data); 1151 error = fn(child, data);
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index f17c3266a0e0..742cbe6b042b 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -179,6 +179,7 @@ void wait_for_device_probe(void)
179 wait_event(probe_waitqueue, atomic_read(&probe_count) == 0); 179 wait_event(probe_waitqueue, atomic_read(&probe_count) == 0);
180 async_synchronize_full(); 180 async_synchronize_full();
181} 181}
182EXPORT_SYMBOL_GPL(wait_for_device_probe);
182 183
183/** 184/**
184 * driver_probe_device - attempt to bind device & driver together 185 * driver_probe_device - attempt to bind device & driver together
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index d2198f64ad4e..b5b6c973a2e0 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -990,6 +990,8 @@ int __init platform_bus_init(void)
990{ 990{
991 int error; 991 int error;
992 992
993 early_platform_cleanup();
994
993 error = device_register(&platform_bus); 995 error = device_register(&platform_bus);
994 if (error) 996 if (error)
995 return error; 997 return error;
@@ -1020,3 +1022,240 @@ u64 dma_get_required_mask(struct device *dev)
1020} 1022}
1021EXPORT_SYMBOL_GPL(dma_get_required_mask); 1023EXPORT_SYMBOL_GPL(dma_get_required_mask);
1022#endif 1024#endif
1025
1026static __initdata LIST_HEAD(early_platform_driver_list);
1027static __initdata LIST_HEAD(early_platform_device_list);
1028
1029/**
1030 * early_platform_driver_register
1031 * @edrv: early_platform driver structure
1032 * @buf: string passed from early_param()
1033 */
1034int __init early_platform_driver_register(struct early_platform_driver *epdrv,
1035 char *buf)
1036{
1037 unsigned long index;
1038 int n;
1039
1040 /* Simply add the driver to the end of the global list.
1041 * Drivers will by default be put on the list in compiled-in order.
1042 */
1043 if (!epdrv->list.next) {
1044 INIT_LIST_HEAD(&epdrv->list);
1045 list_add_tail(&epdrv->list, &early_platform_driver_list);
1046 }
1047
1048 /* If the user has specified device then make sure the driver
1049 * gets prioritized. The driver of the last device specified on
1050 * command line will be put first on the list.
1051 */
1052 n = strlen(epdrv->pdrv->driver.name);
1053 if (buf && !strncmp(buf, epdrv->pdrv->driver.name, n)) {
1054 list_move(&epdrv->list, &early_platform_driver_list);
1055
1056 if (!strcmp(buf, epdrv->pdrv->driver.name))
1057 epdrv->requested_id = -1;
1058 else if (buf[n] == '.' && strict_strtoul(&buf[n + 1], 10,
1059 &index) == 0)
1060 epdrv->requested_id = index;
1061 else
1062 epdrv->requested_id = EARLY_PLATFORM_ID_ERROR;
1063 }
1064
1065 return 0;
1066}
1067
1068/**
1069 * early_platform_add_devices - add a numbers of early platform devices
1070 * @devs: array of early platform devices to add
1071 * @num: number of early platform devices in array
1072 */
1073void __init early_platform_add_devices(struct platform_device **devs, int num)
1074{
1075 struct device *dev;
1076 int i;
1077
1078 /* simply add the devices to list */
1079 for (i = 0; i < num; i++) {
1080 dev = &devs[i]->dev;
1081
1082 if (!dev->devres_head.next) {
1083 INIT_LIST_HEAD(&dev->devres_head);
1084 list_add_tail(&dev->devres_head,
1085 &early_platform_device_list);
1086 }
1087 }
1088}
1089
1090/**
1091 * early_platform_driver_register_all
1092 * @class_str: string to identify early platform driver class
1093 */
1094void __init early_platform_driver_register_all(char *class_str)
1095{
1096 /* The "class_str" parameter may or may not be present on the kernel
1097 * command line. If it is present then there may be more than one
1098 * matching parameter.
1099 *
1100 * Since we register our early platform drivers using early_param()
1101 * we need to make sure that they also get registered in the case
1102 * when the parameter is missing from the kernel command line.
1103 *
1104 * We use parse_early_options() to make sure the early_param() gets
1105 * called at least once. The early_param() may be called more than
1106 * once since the name of the preferred device may be specified on
1107 * the kernel command line. early_platform_driver_register() handles
1108 * this case for us.
1109 */
1110 parse_early_options(class_str);
1111}
1112
1113/**
1114 * early_platform_match
1115 * @edrv: early platform driver structure
1116 * @id: id to match against
1117 */
1118static __init struct platform_device *
1119early_platform_match(struct early_platform_driver *epdrv, int id)
1120{
1121 struct platform_device *pd;
1122
1123 list_for_each_entry(pd, &early_platform_device_list, dev.devres_head)
1124 if (platform_match(&pd->dev, &epdrv->pdrv->driver))
1125 if (pd->id == id)
1126 return pd;
1127
1128 return NULL;
1129}
1130
1131/**
1132 * early_platform_left
1133 * @edrv: early platform driver structure
1134 * @id: return true if id or above exists
1135 */
1136static __init int early_platform_left(struct early_platform_driver *epdrv,
1137 int id)
1138{
1139 struct platform_device *pd;
1140
1141 list_for_each_entry(pd, &early_platform_device_list, dev.devres_head)
1142 if (platform_match(&pd->dev, &epdrv->pdrv->driver))
1143 if (pd->id >= id)
1144 return 1;
1145
1146 return 0;
1147}
1148
1149/**
1150 * early_platform_driver_probe_id
1151 * @class_str: string to identify early platform driver class
1152 * @id: id to match against
1153 * @nr_probe: number of platform devices to successfully probe before exiting
1154 */
1155static int __init early_platform_driver_probe_id(char *class_str,
1156 int id,
1157 int nr_probe)
1158{
1159 struct early_platform_driver *epdrv;
1160 struct platform_device *match;
1161 int match_id;
1162 int n = 0;
1163 int left = 0;
1164
1165 list_for_each_entry(epdrv, &early_platform_driver_list, list) {
1166 /* only use drivers matching our class_str */
1167 if (strcmp(class_str, epdrv->class_str))
1168 continue;
1169
1170 if (id == -2) {
1171 match_id = epdrv->requested_id;
1172 left = 1;
1173
1174 } else {
1175 match_id = id;
1176 left += early_platform_left(epdrv, id);
1177
1178 /* skip requested id */
1179 switch (epdrv->requested_id) {
1180 case EARLY_PLATFORM_ID_ERROR:
1181 case EARLY_PLATFORM_ID_UNSET:
1182 break;
1183 default:
1184 if (epdrv->requested_id == id)
1185 match_id = EARLY_PLATFORM_ID_UNSET;
1186 }
1187 }
1188
1189 switch (match_id) {
1190 case EARLY_PLATFORM_ID_ERROR:
1191 pr_warning("%s: unable to parse %s parameter\n",
1192 class_str, epdrv->pdrv->driver.name);
1193 /* fall-through */
1194 case EARLY_PLATFORM_ID_UNSET:
1195 match = NULL;
1196 break;
1197 default:
1198 match = early_platform_match(epdrv, match_id);
1199 }
1200
1201 if (match) {
1202 if (epdrv->pdrv->probe(match))
1203 pr_warning("%s: unable to probe %s early.\n",
1204 class_str, match->name);
1205 else
1206 n++;
1207 }
1208
1209 if (n >= nr_probe)
1210 break;
1211 }
1212
1213 if (left)
1214 return n;
1215 else
1216 return -ENODEV;
1217}
1218
1219/**
1220 * early_platform_driver_probe
1221 * @class_str: string to identify early platform driver class
1222 * @nr_probe: number of platform devices to successfully probe before exiting
1223 * @user_only: only probe user specified early platform devices
1224 */
1225int __init early_platform_driver_probe(char *class_str,
1226 int nr_probe,
1227 int user_only)
1228{
1229 int k, n, i;
1230
1231 n = 0;
1232 for (i = -2; n < nr_probe; i++) {
1233 k = early_platform_driver_probe_id(class_str, i, nr_probe - n);
1234
1235 if (k < 0)
1236 break;
1237
1238 n += k;
1239
1240 if (user_only)
1241 break;
1242 }
1243
1244 return n;
1245}
1246
1247/**
1248 * early_platform_cleanup - clean up early platform code
1249 */
1250void __init early_platform_cleanup(void)
1251{
1252 struct platform_device *pd, *pd2;
1253
1254 /* clean up the devres list used to chain devices */
1255 list_for_each_entry_safe(pd, pd2, &early_platform_device_list,
1256 dev.devres_head) {
1257 list_del(&pd->dev.devres_head);
1258 memset(&pd->dev.devres_head, 0, sizeof(pd->dev.devres_head));
1259 }
1260}
1261
diff --git a/drivers/block/brd.c b/drivers/block/brd.c
index bdd4f5f45575..5f7e64ba87e5 100644
--- a/drivers/block/brd.c
+++ b/drivers/block/brd.c
@@ -275,8 +275,10 @@ static int brd_do_bvec(struct brd_device *brd, struct page *page,
275 if (rw == READ) { 275 if (rw == READ) {
276 copy_from_brd(mem + off, brd, sector, len); 276 copy_from_brd(mem + off, brd, sector, len);
277 flush_dcache_page(page); 277 flush_dcache_page(page);
278 } else 278 } else {
279 flush_dcache_page(page);
279 copy_to_brd(brd, mem + off, sector, len); 280 copy_to_brd(brd, mem + off, sector, len);
281 }
280 kunmap_atomic(mem, KM_USER0); 282 kunmap_atomic(mem, KM_USER0);
281 283
282out: 284out:
@@ -436,6 +438,7 @@ static struct brd_device *brd_alloc(int i)
436 if (!brd->brd_queue) 438 if (!brd->brd_queue)
437 goto out_free_dev; 439 goto out_free_dev;
438 blk_queue_make_request(brd->brd_queue, brd_make_request); 440 blk_queue_make_request(brd->brd_queue, brd_make_request);
441 blk_queue_ordered(brd->brd_queue, QUEUE_ORDERED_TAG, NULL);
439 blk_queue_max_sectors(brd->brd_queue, 1024); 442 blk_queue_max_sectors(brd->brd_queue, 1024);
440 blk_queue_bounce_limit(brd->brd_queue, BLK_BOUNCE_ANY); 443 blk_queue_bounce_limit(brd->brd_queue, BLK_BOUNCE_ANY);
441 444
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 0ef6f08aa6ea..4d4d5e0d3fa6 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -3505,7 +3505,7 @@ static __devinit int cciss_message(struct pci_dev *pdev, unsigned char opcode, u
3505 /* The Inbound Post Queue only accepts 32-bit physical addresses for the 3505 /* The Inbound Post Queue only accepts 32-bit physical addresses for the
3506 CCISS commands, so they must be allocated from the lower 4GiB of 3506 CCISS commands, so they must be allocated from the lower 4GiB of
3507 memory. */ 3507 memory. */
3508 err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK); 3508 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
3509 if (err) { 3509 if (err) {
3510 iounmap(vaddr); 3510 iounmap(vaddr);
3511 return -ENOMEM; 3511 return -ENOMEM;
diff --git a/drivers/block/ub.c b/drivers/block/ub.c
index 69b7f8e77596..689cd27ac890 100644
--- a/drivers/block/ub.c
+++ b/drivers/block/ub.c
@@ -1025,6 +1025,7 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
1025{ 1025{
1026 struct urb *urb = &sc->work_urb; 1026 struct urb *urb = &sc->work_urb;
1027 struct bulk_cs_wrap *bcs; 1027 struct bulk_cs_wrap *bcs;
1028 int endp;
1028 int len; 1029 int len;
1029 int rc; 1030 int rc;
1030 1031
@@ -1033,6 +1034,10 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
1033 return; 1034 return;
1034 } 1035 }
1035 1036
1037 endp = usb_pipeendpoint(sc->last_pipe);
1038 if (usb_pipein(sc->last_pipe))
1039 endp |= USB_DIR_IN;
1040
1036 if (cmd->state == UB_CMDST_CLEAR) { 1041 if (cmd->state == UB_CMDST_CLEAR) {
1037 if (urb->status == -EPIPE) { 1042 if (urb->status == -EPIPE) {
1038 /* 1043 /*
@@ -1048,9 +1053,7 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
1048 * We ignore the result for the halt clear. 1053 * We ignore the result for the halt clear.
1049 */ 1054 */
1050 1055
1051 /* reset the endpoint toggle */ 1056 usb_reset_endpoint(sc->dev, endp);
1052 usb_settoggle(sc->dev, usb_pipeendpoint(sc->last_pipe),
1053 usb_pipeout(sc->last_pipe), 0);
1054 1057
1055 ub_state_sense(sc, cmd); 1058 ub_state_sense(sc, cmd);
1056 1059
@@ -1065,9 +1068,7 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
1065 * We ignore the result for the halt clear. 1068 * We ignore the result for the halt clear.
1066 */ 1069 */
1067 1070
1068 /* reset the endpoint toggle */ 1071 usb_reset_endpoint(sc->dev, endp);
1069 usb_settoggle(sc->dev, usb_pipeendpoint(sc->last_pipe),
1070 usb_pipeout(sc->last_pipe), 0);
1071 1072
1072 ub_state_stat(sc, cmd); 1073 ub_state_stat(sc, cmd);
1073 1074
@@ -1082,9 +1083,7 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
1082 * We ignore the result for the halt clear. 1083 * We ignore the result for the halt clear.
1083 */ 1084 */
1084 1085
1085 /* reset the endpoint toggle */ 1086 usb_reset_endpoint(sc->dev, endp);
1086 usb_settoggle(sc->dev, usb_pipeendpoint(sc->last_pipe),
1087 usb_pipeout(sc->last_pipe), 0);
1088 1087
1089 ub_state_stat_counted(sc, cmd); 1088 ub_state_stat_counted(sc, cmd);
1090 1089
@@ -2119,8 +2118,7 @@ static int ub_probe_clear_stall(struct ub_dev *sc, int stalled_pipe)
2119 del_timer_sync(&timer); 2118 del_timer_sync(&timer);
2120 usb_kill_urb(&sc->work_urb); 2119 usb_kill_urb(&sc->work_urb);
2121 2120
2122 /* reset the endpoint toggle */ 2121 usb_reset_endpoint(sc->dev, endp);
2123 usb_settoggle(sc->dev, endp, usb_pipeout(sc->last_pipe), 0);
2124 2122
2125 return 0; 2123 return 0;
2126} 2124}
diff --git a/drivers/block/umem.c b/drivers/block/umem.c
index 9744d59a69f2..858c34dd032d 100644
--- a/drivers/block/umem.c
+++ b/drivers/block/umem.c
@@ -906,6 +906,7 @@ static int __devinit mm_pci_probe(struct pci_dev *dev,
906 goto failed_alloc; 906 goto failed_alloc;
907 907
908 blk_queue_make_request(card->queue, mm_make_request); 908 blk_queue_make_request(card->queue, mm_make_request);
909 card->queue->queue_lock = &card->lock;
909 card->queue->queuedata = card; 910 card->queue->queuedata = card;
910 card->queue->unplug_fn = mm_unplug_device; 911 card->queue->unplug_fn = mm_unplug_device;
911 912
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 6cccdc3f5220..4aecf5dc6a93 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -563,7 +563,7 @@ static void ace_fsm_dostate(struct ace_device *ace)
563 case ACE_FSM_STATE_IDENTIFY_PREPARE: 563 case ACE_FSM_STATE_IDENTIFY_PREPARE:
564 /* Send identify command */ 564 /* Send identify command */
565 ace->fsm_task = ACE_TASK_IDENTIFY; 565 ace->fsm_task = ACE_TASK_IDENTIFY;
566 ace->data_ptr = &ace->cf_id; 566 ace->data_ptr = ace->cf_id;
567 ace->data_count = ACE_BUF_PER_SECTOR; 567 ace->data_count = ACE_BUF_PER_SECTOR;
568 ace_out(ace, ACE_SECCNTCMD, ACE_SECCNTCMD_IDENTIFY); 568 ace_out(ace, ACE_SECCNTCMD, ACE_SECCNTCMD_IDENTIFY);
569 569
@@ -608,8 +608,8 @@ static void ace_fsm_dostate(struct ace_device *ace)
608 break; 608 break;
609 609
610 case ACE_FSM_STATE_IDENTIFY_COMPLETE: 610 case ACE_FSM_STATE_IDENTIFY_COMPLETE:
611 ace_fix_driveid(&ace->cf_id[0]); 611 ace_fix_driveid(ace->cf_id);
612 ace_dump_mem(&ace->cf_id, 512); /* Debug: Dump out disk ID */ 612 ace_dump_mem(ace->cf_id, 512); /* Debug: Dump out disk ID */
613 613
614 if (ace->data_result) { 614 if (ace->data_result) {
615 /* Error occured, disable the disk */ 615 /* Error occured, disable the disk */
@@ -622,9 +622,9 @@ static void ace_fsm_dostate(struct ace_device *ace)
622 622
623 /* Record disk parameters */ 623 /* Record disk parameters */
624 set_capacity(ace->gd, 624 set_capacity(ace->gd,
625 ata_id_u32(&ace->cf_id, ATA_ID_LBA_CAPACITY)); 625 ata_id_u32(ace->cf_id, ATA_ID_LBA_CAPACITY));
626 dev_info(ace->dev, "capacity: %i sectors\n", 626 dev_info(ace->dev, "capacity: %i sectors\n",
627 ata_id_u32(&ace->cf_id, ATA_ID_LBA_CAPACITY)); 627 ata_id_u32(ace->cf_id, ATA_ID_LBA_CAPACITY));
628 } 628 }
629 629
630 /* We're done, drop to IDLE state and notify waiters */ 630 /* We're done, drop to IDLE state and notify waiters */
@@ -923,7 +923,7 @@ static int ace_release(struct gendisk *disk, fmode_t mode)
923static int ace_getgeo(struct block_device *bdev, struct hd_geometry *geo) 923static int ace_getgeo(struct block_device *bdev, struct hd_geometry *geo)
924{ 924{
925 struct ace_device *ace = bdev->bd_disk->private_data; 925 struct ace_device *ace = bdev->bd_disk->private_data;
926 u16 *cf_id = &ace->cf_id[0]; 926 u16 *cf_id = ace->cf_id;
927 927
928 dev_dbg(ace->dev, "ace_getgeo()\n"); 928 dev_dbg(ace->dev, "ace_getgeo()\n");
929 929
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c
index 10d6cbd7c05e..2224b762b7fb 100644
--- a/drivers/char/agp/generic.c
+++ b/drivers/char/agp/generic.c
@@ -1226,7 +1226,7 @@ int agp_generic_alloc_pages(struct agp_bridge_data *bridge, struct agp_memory *m
1226 int i, ret = -ENOMEM; 1226 int i, ret = -ENOMEM;
1227 1227
1228 for (i = 0; i < num_pages; i++) { 1228 for (i = 0; i < num_pages; i++) {
1229 page = alloc_page(GFP_KERNEL | GFP_DMA32); 1229 page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO);
1230 /* agp_free_memory() needs gart address */ 1230 /* agp_free_memory() needs gart address */
1231 if (page == NULL) 1231 if (page == NULL)
1232 goto out; 1232 goto out;
@@ -1257,7 +1257,7 @@ void *agp_generic_alloc_page(struct agp_bridge_data *bridge)
1257{ 1257{
1258 struct page * page; 1258 struct page * page;
1259 1259
1260 page = alloc_page(GFP_KERNEL | GFP_DMA32); 1260 page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO);
1261 if (page == NULL) 1261 if (page == NULL)
1262 return NULL; 1262 return NULL;
1263 1263
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 9d9490e22e07..3686912427ba 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -2131,6 +2131,8 @@ static const struct intel_driver_description {
2131 { PCI_DEVICE_ID_INTEL_82845G_HB, PCI_DEVICE_ID_INTEL_82845G_IG, 0, "830M", 2131 { PCI_DEVICE_ID_INTEL_82845G_HB, PCI_DEVICE_ID_INTEL_82845G_IG, 0, "830M",
2132 &intel_845_driver, &intel_830_driver }, 2132 &intel_845_driver, &intel_830_driver },
2133 { PCI_DEVICE_ID_INTEL_82850_HB, 0, 0, "i850", &intel_850_driver, NULL }, 2133 { PCI_DEVICE_ID_INTEL_82850_HB, 0, 0, "i850", &intel_850_driver, NULL },
2134 { PCI_DEVICE_ID_INTEL_82854_HB, PCI_DEVICE_ID_INTEL_82854_IG, 0, "854",
2135 &intel_845_driver, &intel_830_driver },
2134 { PCI_DEVICE_ID_INTEL_82855PM_HB, 0, 0, "855PM", &intel_845_driver, NULL }, 2136 { PCI_DEVICE_ID_INTEL_82855PM_HB, 0, 0, "855PM", &intel_845_driver, NULL },
2135 { PCI_DEVICE_ID_INTEL_82855GM_HB, PCI_DEVICE_ID_INTEL_82855GM_IG, 0, "855GM", 2137 { PCI_DEVICE_ID_INTEL_82855GM_HB, PCI_DEVICE_ID_INTEL_82855GM_IG, 0, "855GM",
2136 &intel_845_driver, &intel_830_driver }, 2138 &intel_845_driver, &intel_830_driver },
@@ -2355,6 +2357,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
2355 ID(PCI_DEVICE_ID_INTEL_82845_HB), 2357 ID(PCI_DEVICE_ID_INTEL_82845_HB),
2356 ID(PCI_DEVICE_ID_INTEL_82845G_HB), 2358 ID(PCI_DEVICE_ID_INTEL_82845G_HB),
2357 ID(PCI_DEVICE_ID_INTEL_82850_HB), 2359 ID(PCI_DEVICE_ID_INTEL_82850_HB),
2360 ID(PCI_DEVICE_ID_INTEL_82854_HB),
2358 ID(PCI_DEVICE_ID_INTEL_82855PM_HB), 2361 ID(PCI_DEVICE_ID_INTEL_82855PM_HB),
2359 ID(PCI_DEVICE_ID_INTEL_82855GM_HB), 2362 ID(PCI_DEVICE_ID_INTEL_82855GM_HB),
2360 ID(PCI_DEVICE_ID_INTEL_82860_HB), 2363 ID(PCI_DEVICE_ID_INTEL_82860_HB),
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index 50dfa3bc71ce..340ba4f9dc54 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -72,7 +72,7 @@ static u32 hpet_nhpet, hpet_max_freq = HPET_USER_FREQ;
72#ifdef CONFIG_IA64 72#ifdef CONFIG_IA64
73static void __iomem *hpet_mctr; 73static void __iomem *hpet_mctr;
74 74
75static cycle_t read_hpet(void) 75static cycle_t read_hpet(struct clocksource *cs)
76{ 76{
77 return (cycle_t)read_counter((void __iomem *)hpet_mctr); 77 return (cycle_t)read_counter((void __iomem *)hpet_mctr);
78} 78}
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
index d0e563e4fc39..86e83f883139 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -37,9 +37,9 @@ static void random_recv_done(struct virtqueue *vq)
37{ 37{
38 int len; 38 int len;
39 39
40 /* We never get spurious callbacks. */ 40 /* We can get spurious callbacks, e.g. shared IRQs + virtio_pci. */
41 if (!vq->vq_ops->get_buf(vq, &len)) 41 if (!vq->vq_ops->get_buf(vq, &len))
42 BUG(); 42 return;
43 43
44 data_left = len / sizeof(random_data[0]); 44 data_left = len / sizeof(random_data[0]);
45 complete(&have_data); 45 complete(&have_data);
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index e93fc8d22fb2..aa83a0865ec1 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -285,6 +285,11 @@ enum ipmi_stat_indexes {
285 /* Events that were received with the proper format. */ 285 /* Events that were received with the proper format. */
286 IPMI_STAT_events, 286 IPMI_STAT_events,
287 287
288 /* Retransmissions on IPMB that failed. */
289 IPMI_STAT_dropped_rexmit_ipmb_commands,
290
291 /* Retransmissions on LAN that failed. */
292 IPMI_STAT_dropped_rexmit_lan_commands,
288 293
289 /* This *must* remain last, add new values above this. */ 294 /* This *must* remain last, add new values above this. */
290 IPMI_NUM_STATS 295 IPMI_NUM_STATS
@@ -445,6 +450,20 @@ static DEFINE_MUTEX(smi_watchers_mutex);
445#define ipmi_get_stat(intf, stat) \ 450#define ipmi_get_stat(intf, stat) \
446 ((unsigned int) atomic_read(&(intf)->stats[IPMI_STAT_ ## stat])) 451 ((unsigned int) atomic_read(&(intf)->stats[IPMI_STAT_ ## stat]))
447 452
453static int is_lan_addr(struct ipmi_addr *addr)
454{
455 return addr->addr_type == IPMI_LAN_ADDR_TYPE;
456}
457
458static int is_ipmb_addr(struct ipmi_addr *addr)
459{
460 return addr->addr_type == IPMI_IPMB_ADDR_TYPE;
461}
462
463static int is_ipmb_bcast_addr(struct ipmi_addr *addr)
464{
465 return addr->addr_type == IPMI_IPMB_BROADCAST_ADDR_TYPE;
466}
448 467
449static void free_recv_msg_list(struct list_head *q) 468static void free_recv_msg_list(struct list_head *q)
450{ 469{
@@ -601,8 +620,7 @@ ipmi_addr_equal(struct ipmi_addr *addr1, struct ipmi_addr *addr2)
601 return (smi_addr1->lun == smi_addr2->lun); 620 return (smi_addr1->lun == smi_addr2->lun);
602 } 621 }
603 622
604 if ((addr1->addr_type == IPMI_IPMB_ADDR_TYPE) 623 if (is_ipmb_addr(addr1) || is_ipmb_bcast_addr(addr1)) {
605 || (addr1->addr_type == IPMI_IPMB_BROADCAST_ADDR_TYPE)) {
606 struct ipmi_ipmb_addr *ipmb_addr1 624 struct ipmi_ipmb_addr *ipmb_addr1
607 = (struct ipmi_ipmb_addr *) addr1; 625 = (struct ipmi_ipmb_addr *) addr1;
608 struct ipmi_ipmb_addr *ipmb_addr2 626 struct ipmi_ipmb_addr *ipmb_addr2
@@ -612,7 +630,7 @@ ipmi_addr_equal(struct ipmi_addr *addr1, struct ipmi_addr *addr2)
612 && (ipmb_addr1->lun == ipmb_addr2->lun)); 630 && (ipmb_addr1->lun == ipmb_addr2->lun));
613 } 631 }
614 632
615 if (addr1->addr_type == IPMI_LAN_ADDR_TYPE) { 633 if (is_lan_addr(addr1)) {
616 struct ipmi_lan_addr *lan_addr1 634 struct ipmi_lan_addr *lan_addr1
617 = (struct ipmi_lan_addr *) addr1; 635 = (struct ipmi_lan_addr *) addr1;
618 struct ipmi_lan_addr *lan_addr2 636 struct ipmi_lan_addr *lan_addr2
@@ -644,14 +662,13 @@ int ipmi_validate_addr(struct ipmi_addr *addr, int len)
644 || (addr->channel < 0)) 662 || (addr->channel < 0))
645 return -EINVAL; 663 return -EINVAL;
646 664
647 if ((addr->addr_type == IPMI_IPMB_ADDR_TYPE) 665 if (is_ipmb_addr(addr) || is_ipmb_bcast_addr(addr)) {
648 || (addr->addr_type == IPMI_IPMB_BROADCAST_ADDR_TYPE)) {
649 if (len < sizeof(struct ipmi_ipmb_addr)) 666 if (len < sizeof(struct ipmi_ipmb_addr))
650 return -EINVAL; 667 return -EINVAL;
651 return 0; 668 return 0;
652 } 669 }
653 670
654 if (addr->addr_type == IPMI_LAN_ADDR_TYPE) { 671 if (is_lan_addr(addr)) {
655 if (len < sizeof(struct ipmi_lan_addr)) 672 if (len < sizeof(struct ipmi_lan_addr))
656 return -EINVAL; 673 return -EINVAL;
657 return 0; 674 return 0;
@@ -1503,8 +1520,7 @@ static int i_ipmi_request(ipmi_user_t user,
1503 memcpy(&(smi_msg->data[2]), msg->data, msg->data_len); 1520 memcpy(&(smi_msg->data[2]), msg->data, msg->data_len);
1504 smi_msg->data_size = msg->data_len + 2; 1521 smi_msg->data_size = msg->data_len + 2;
1505 ipmi_inc_stat(intf, sent_local_commands); 1522 ipmi_inc_stat(intf, sent_local_commands);
1506 } else if ((addr->addr_type == IPMI_IPMB_ADDR_TYPE) 1523 } else if (is_ipmb_addr(addr) || is_ipmb_bcast_addr(addr)) {
1507 || (addr->addr_type == IPMI_IPMB_BROADCAST_ADDR_TYPE)) {
1508 struct ipmi_ipmb_addr *ipmb_addr; 1524 struct ipmi_ipmb_addr *ipmb_addr;
1509 unsigned char ipmb_seq; 1525 unsigned char ipmb_seq;
1510 long seqid; 1526 long seqid;
@@ -1583,8 +1599,6 @@ static int i_ipmi_request(ipmi_user_t user,
1583 1599
1584 spin_lock_irqsave(&(intf->seq_lock), flags); 1600 spin_lock_irqsave(&(intf->seq_lock), flags);
1585 1601
1586 ipmi_inc_stat(intf, sent_ipmb_commands);
1587
1588 /* 1602 /*
1589 * Create a sequence number with a 1 second 1603 * Create a sequence number with a 1 second
1590 * timeout and 4 retries. 1604 * timeout and 4 retries.
@@ -1606,6 +1620,8 @@ static int i_ipmi_request(ipmi_user_t user,
1606 goto out_err; 1620 goto out_err;
1607 } 1621 }
1608 1622
1623 ipmi_inc_stat(intf, sent_ipmb_commands);
1624
1609 /* 1625 /*
1610 * Store the sequence number in the message, 1626 * Store the sequence number in the message,
1611 * so that when the send message response 1627 * so that when the send message response
@@ -1635,7 +1651,7 @@ static int i_ipmi_request(ipmi_user_t user,
1635 */ 1651 */
1636 spin_unlock_irqrestore(&(intf->seq_lock), flags); 1652 spin_unlock_irqrestore(&(intf->seq_lock), flags);
1637 } 1653 }
1638 } else if (addr->addr_type == IPMI_LAN_ADDR_TYPE) { 1654 } else if (is_lan_addr(addr)) {
1639 struct ipmi_lan_addr *lan_addr; 1655 struct ipmi_lan_addr *lan_addr;
1640 unsigned char ipmb_seq; 1656 unsigned char ipmb_seq;
1641 long seqid; 1657 long seqid;
@@ -1696,8 +1712,6 @@ static int i_ipmi_request(ipmi_user_t user,
1696 1712
1697 spin_lock_irqsave(&(intf->seq_lock), flags); 1713 spin_lock_irqsave(&(intf->seq_lock), flags);
1698 1714
1699 ipmi_inc_stat(intf, sent_lan_commands);
1700
1701 /* 1715 /*
1702 * Create a sequence number with a 1 second 1716 * Create a sequence number with a 1 second
1703 * timeout and 4 retries. 1717 * timeout and 4 retries.
@@ -1719,6 +1733,8 @@ static int i_ipmi_request(ipmi_user_t user,
1719 goto out_err; 1733 goto out_err;
1720 } 1734 }
1721 1735
1736 ipmi_inc_stat(intf, sent_lan_commands);
1737
1722 /* 1738 /*
1723 * Store the sequence number in the message, 1739 * Store the sequence number in the message,
1724 * so that when the send message response 1740 * so that when the send message response
@@ -1937,6 +1953,10 @@ static int stat_file_read_proc(char *page, char **start, off_t off,
1937 ipmi_get_stat(intf, invalid_events)); 1953 ipmi_get_stat(intf, invalid_events));
1938 out += sprintf(out, "events: %u\n", 1954 out += sprintf(out, "events: %u\n",
1939 ipmi_get_stat(intf, events)); 1955 ipmi_get_stat(intf, events));
1956 out += sprintf(out, "failed rexmit LAN msgs: %u\n",
1957 ipmi_get_stat(intf, dropped_rexmit_lan_commands));
1958 out += sprintf(out, "failed rexmit IPMB msgs: %u\n",
1959 ipmi_get_stat(intf, dropped_rexmit_ipmb_commands));
1940 1960
1941 return (out - ((char *) page)); 1961 return (out - ((char *) page));
1942} 1962}
@@ -3264,6 +3284,114 @@ static int handle_lan_get_msg_cmd(ipmi_smi_t intf,
3264 return rv; 3284 return rv;
3265} 3285}
3266 3286
3287/*
3288 * This routine will handle "Get Message" command responses with
3289 * channels that use an OEM Medium. The message format belongs to
3290 * the OEM. See IPMI 2.0 specification, Chapter 6 and
3291 * Chapter 22, sections 22.6 and 22.24 for more details.
3292 */
3293static int handle_oem_get_msg_cmd(ipmi_smi_t intf,
3294 struct ipmi_smi_msg *msg)
3295{
3296 struct cmd_rcvr *rcvr;
3297 int rv = 0;
3298 unsigned char netfn;
3299 unsigned char cmd;
3300 unsigned char chan;
3301 ipmi_user_t user = NULL;
3302 struct ipmi_system_interface_addr *smi_addr;
3303 struct ipmi_recv_msg *recv_msg;
3304
3305 /*
3306 * We expect the OEM SW to perform error checking
3307 * so we just do some basic sanity checks
3308 */
3309 if (msg->rsp_size < 4) {
3310 /* Message not big enough, just ignore it. */
3311 ipmi_inc_stat(intf, invalid_commands);
3312 return 0;
3313 }
3314
3315 if (msg->rsp[2] != 0) {
3316 /* An error getting the response, just ignore it. */
3317 return 0;
3318 }
3319
3320 /*
3321 * This is an OEM Message so the OEM needs to know how
3322 * handle the message. We do no interpretation.
3323 */
3324 netfn = msg->rsp[0] >> 2;
3325 cmd = msg->rsp[1];
3326 chan = msg->rsp[3] & 0xf;
3327
3328 rcu_read_lock();
3329 rcvr = find_cmd_rcvr(intf, netfn, cmd, chan);
3330 if (rcvr) {
3331 user = rcvr->user;
3332 kref_get(&user->refcount);
3333 } else
3334 user = NULL;
3335 rcu_read_unlock();
3336
3337 if (user == NULL) {
3338 /* We didn't find a user, just give up. */
3339 ipmi_inc_stat(intf, unhandled_commands);
3340
3341 /*
3342 * Don't do anything with these messages, just allow
3343 * them to be freed.
3344 */
3345
3346 rv = 0;
3347 } else {
3348 /* Deliver the message to the user. */
3349 ipmi_inc_stat(intf, handled_commands);
3350
3351 recv_msg = ipmi_alloc_recv_msg();
3352 if (!recv_msg) {
3353 /*
3354 * We couldn't allocate memory for the
3355 * message, so requeue it for handling
3356 * later.
3357 */
3358 rv = 1;
3359 kref_put(&user->refcount, free_user);
3360 } else {
3361 /*
3362 * OEM Messages are expected to be delivered via
3363 * the system interface to SMS software. We might
3364 * need to visit this again depending on OEM
3365 * requirements
3366 */
3367 smi_addr = ((struct ipmi_system_interface_addr *)
3368 &(recv_msg->addr));
3369 smi_addr->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
3370 smi_addr->channel = IPMI_BMC_CHANNEL;
3371 smi_addr->lun = msg->rsp[0] & 3;
3372
3373 recv_msg->user = user;
3374 recv_msg->user_msg_data = NULL;
3375 recv_msg->recv_type = IPMI_OEM_RECV_TYPE;
3376 recv_msg->msg.netfn = msg->rsp[0] >> 2;
3377 recv_msg->msg.cmd = msg->rsp[1];
3378 recv_msg->msg.data = recv_msg->msg_data;
3379
3380 /*
3381 * The message starts at byte 4 which follows the
3382 * the Channel Byte in the "GET MESSAGE" command
3383 */
3384 recv_msg->msg.data_len = msg->rsp_size - 4;
3385 memcpy(recv_msg->msg_data,
3386 &(msg->rsp[4]),
3387 msg->rsp_size - 4);
3388 deliver_response(recv_msg);
3389 }
3390 }
3391
3392 return rv;
3393}
3394
3267static void copy_event_into_recv_msg(struct ipmi_recv_msg *recv_msg, 3395static void copy_event_into_recv_msg(struct ipmi_recv_msg *recv_msg,
3268 struct ipmi_smi_msg *msg) 3396 struct ipmi_smi_msg *msg)
3269{ 3397{
@@ -3519,6 +3647,17 @@ static int handle_new_recv_msg(ipmi_smi_t intf,
3519 goto out; 3647 goto out;
3520 } 3648 }
3521 3649
3650 /*
3651 ** We need to make sure the channels have been initialized.
3652 ** The channel_handler routine will set the "curr_channel"
3653 ** equal to or greater than IPMI_MAX_CHANNELS when all the
3654 ** channels for this interface have been initialized.
3655 */
3656 if (intf->curr_channel < IPMI_MAX_CHANNELS) {
3657 requeue = 1; /* Just put the message back for now */
3658 goto out;
3659 }
3660
3522 switch (intf->channels[chan].medium) { 3661 switch (intf->channels[chan].medium) {
3523 case IPMI_CHANNEL_MEDIUM_IPMB: 3662 case IPMI_CHANNEL_MEDIUM_IPMB:
3524 if (msg->rsp[4] & 0x04) { 3663 if (msg->rsp[4] & 0x04) {
@@ -3554,11 +3693,20 @@ static int handle_new_recv_msg(ipmi_smi_t intf,
3554 break; 3693 break;
3555 3694
3556 default: 3695 default:
3557 /* 3696 /* Check for OEM Channels. Clients had better
3558 * We don't handle the channel type, so just 3697 register for these commands. */
3559 * free the message. 3698 if ((intf->channels[chan].medium
3560 */ 3699 >= IPMI_CHANNEL_MEDIUM_OEM_MIN)
3561 requeue = 0; 3700 && (intf->channels[chan].medium
3701 <= IPMI_CHANNEL_MEDIUM_OEM_MAX)) {
3702 requeue = handle_oem_get_msg_cmd(intf, msg);
3703 } else {
3704 /*
3705 * We don't handle the channel type, so just
3706 * free the message.
3707 */
3708 requeue = 0;
3709 }
3562 } 3710 }
3563 3711
3564 } else if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2)) 3712 } else if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2))
@@ -3730,7 +3878,7 @@ static void check_msg_timeout(ipmi_smi_t intf, struct seq_table *ent,
3730 list_add_tail(&msg->link, timeouts); 3878 list_add_tail(&msg->link, timeouts);
3731 if (ent->broadcast) 3879 if (ent->broadcast)
3732 ipmi_inc_stat(intf, timed_out_ipmb_broadcasts); 3880 ipmi_inc_stat(intf, timed_out_ipmb_broadcasts);
3733 else if (ent->recv_msg->addr.addr_type == IPMI_LAN_ADDR_TYPE) 3881 else if (is_lan_addr(&ent->recv_msg->addr))
3734 ipmi_inc_stat(intf, timed_out_lan_commands); 3882 ipmi_inc_stat(intf, timed_out_lan_commands);
3735 else 3883 else
3736 ipmi_inc_stat(intf, timed_out_ipmb_commands); 3884 ipmi_inc_stat(intf, timed_out_ipmb_commands);
@@ -3744,15 +3892,17 @@ static void check_msg_timeout(ipmi_smi_t intf, struct seq_table *ent,
3744 */ 3892 */
3745 ent->timeout = MAX_MSG_TIMEOUT; 3893 ent->timeout = MAX_MSG_TIMEOUT;
3746 ent->retries_left--; 3894 ent->retries_left--;
3747 if (ent->recv_msg->addr.addr_type == IPMI_LAN_ADDR_TYPE)
3748 ipmi_inc_stat(intf, retransmitted_lan_commands);
3749 else
3750 ipmi_inc_stat(intf, retransmitted_ipmb_commands);
3751
3752 smi_msg = smi_from_recv_msg(intf, ent->recv_msg, slot, 3895 smi_msg = smi_from_recv_msg(intf, ent->recv_msg, slot,
3753 ent->seqid); 3896 ent->seqid);
3754 if (!smi_msg) 3897 if (!smi_msg) {
3898 if (is_lan_addr(&ent->recv_msg->addr))
3899 ipmi_inc_stat(intf,
3900 dropped_rexmit_lan_commands);
3901 else
3902 ipmi_inc_stat(intf,
3903 dropped_rexmit_ipmb_commands);
3755 return; 3904 return;
3905 }
3756 3906
3757 spin_unlock_irqrestore(&intf->seq_lock, *flags); 3907 spin_unlock_irqrestore(&intf->seq_lock, *flags);
3758 3908
@@ -3764,10 +3914,17 @@ static void check_msg_timeout(ipmi_smi_t intf, struct seq_table *ent,
3764 * resent. 3914 * resent.
3765 */ 3915 */
3766 handlers = intf->handlers; 3916 handlers = intf->handlers;
3767 if (handlers) 3917 if (handlers) {
3918 if (is_lan_addr(&ent->recv_msg->addr))
3919 ipmi_inc_stat(intf,
3920 retransmitted_lan_commands);
3921 else
3922 ipmi_inc_stat(intf,
3923 retransmitted_ipmb_commands);
3924
3768 intf->handlers->sender(intf->send_info, 3925 intf->handlers->sender(intf->send_info,
3769 smi_msg, 0); 3926 smi_msg, 0);
3770 else 3927 } else
3771 ipmi_free_smi_msg(smi_msg); 3928 ipmi_free_smi_msg(smi_msg);
3772 3929
3773 spin_lock_irqsave(&intf->seq_lock, *flags); 3930 spin_lock_irqsave(&intf->seq_lock, *flags);
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index e58ea4cd55ce..259644646b82 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -82,12 +82,6 @@
82#define SI_SHORT_TIMEOUT_USEC 250 /* .25ms when the SM request a 82#define SI_SHORT_TIMEOUT_USEC 250 /* .25ms when the SM request a
83 short timeout */ 83 short timeout */
84 84
85/* Bit for BMC global enables. */
86#define IPMI_BMC_RCV_MSG_INTR 0x01
87#define IPMI_BMC_EVT_MSG_INTR 0x02
88#define IPMI_BMC_EVT_MSG_BUFF 0x04
89#define IPMI_BMC_SYS_LOG 0x08
90
91enum si_intf_state { 85enum si_intf_state {
92 SI_NORMAL, 86 SI_NORMAL,
93 SI_GETTING_FLAGS, 87 SI_GETTING_FLAGS,
@@ -220,6 +214,9 @@ struct smi_info {
220 OEM2_DATA_AVAIL) 214 OEM2_DATA_AVAIL)
221 unsigned char msg_flags; 215 unsigned char msg_flags;
222 216
217 /* Does the BMC have an event buffer? */
218 char has_event_buffer;
219
223 /* 220 /*
224 * If set to true, this will request events the next time the 221 * If set to true, this will request events the next time the
225 * state machine is idle. 222 * state machine is idle.
@@ -968,7 +965,8 @@ static void request_events(void *send_info)
968{ 965{
969 struct smi_info *smi_info = send_info; 966 struct smi_info *smi_info = send_info;
970 967
971 if (atomic_read(&smi_info->stop_operation)) 968 if (atomic_read(&smi_info->stop_operation) ||
969 !smi_info->has_event_buffer)
972 return; 970 return;
973 971
974 atomic_set(&smi_info->req_events, 1); 972 atomic_set(&smi_info->req_events, 1);
@@ -2407,26 +2405,9 @@ static struct of_platform_driver ipmi_of_platform_driver = {
2407}; 2405};
2408#endif /* CONFIG_PPC_OF */ 2406#endif /* CONFIG_PPC_OF */
2409 2407
2410 2408static int wait_for_msg_done(struct smi_info *smi_info)
2411static int try_get_dev_id(struct smi_info *smi_info)
2412{ 2409{
2413 unsigned char msg[2];
2414 unsigned char *resp;
2415 unsigned long resp_len;
2416 enum si_sm_result smi_result; 2410 enum si_sm_result smi_result;
2417 int rv = 0;
2418
2419 resp = kmalloc(IPMI_MAX_MSG_LENGTH, GFP_KERNEL);
2420 if (!resp)
2421 return -ENOMEM;
2422
2423 /*
2424 * Do a Get Device ID command, since it comes back with some
2425 * useful info.
2426 */
2427 msg[0] = IPMI_NETFN_APP_REQUEST << 2;
2428 msg[1] = IPMI_GET_DEVICE_ID_CMD;
2429 smi_info->handlers->start_transaction(smi_info->si_sm, msg, 2);
2430 2411
2431 smi_result = smi_info->handlers->event(smi_info->si_sm, 0); 2412 smi_result = smi_info->handlers->event(smi_info->si_sm, 0);
2432 for (;;) { 2413 for (;;) {
@@ -2441,16 +2422,39 @@ static int try_get_dev_id(struct smi_info *smi_info)
2441 } else 2422 } else
2442 break; 2423 break;
2443 } 2424 }
2444 if (smi_result == SI_SM_HOSED) { 2425 if (smi_result == SI_SM_HOSED)
2445 /* 2426 /*
2446 * We couldn't get the state machine to run, so whatever's at 2427 * We couldn't get the state machine to run, so whatever's at
2447 * the port is probably not an IPMI SMI interface. 2428 * the port is probably not an IPMI SMI interface.
2448 */ 2429 */
2449 rv = -ENODEV; 2430 return -ENODEV;
2431
2432 return 0;
2433}
2434
2435static int try_get_dev_id(struct smi_info *smi_info)
2436{
2437 unsigned char msg[2];
2438 unsigned char *resp;
2439 unsigned long resp_len;
2440 int rv = 0;
2441
2442 resp = kmalloc(IPMI_MAX_MSG_LENGTH, GFP_KERNEL);
2443 if (!resp)
2444 return -ENOMEM;
2445
2446 /*
2447 * Do a Get Device ID command, since it comes back with some
2448 * useful info.
2449 */
2450 msg[0] = IPMI_NETFN_APP_REQUEST << 2;
2451 msg[1] = IPMI_GET_DEVICE_ID_CMD;
2452 smi_info->handlers->start_transaction(smi_info->si_sm, msg, 2);
2453
2454 rv = wait_for_msg_done(smi_info);
2455 if (rv)
2450 goto out; 2456 goto out;
2451 }
2452 2457
2453 /* Otherwise, we got some data. */
2454 resp_len = smi_info->handlers->get_result(smi_info->si_sm, 2458 resp_len = smi_info->handlers->get_result(smi_info->si_sm,
2455 resp, IPMI_MAX_MSG_LENGTH); 2459 resp, IPMI_MAX_MSG_LENGTH);
2456 2460
@@ -2462,6 +2466,88 @@ static int try_get_dev_id(struct smi_info *smi_info)
2462 return rv; 2466 return rv;
2463} 2467}
2464 2468
2469static int try_enable_event_buffer(struct smi_info *smi_info)
2470{
2471 unsigned char msg[3];
2472 unsigned char *resp;
2473 unsigned long resp_len;
2474 int rv = 0;
2475
2476 resp = kmalloc(IPMI_MAX_MSG_LENGTH, GFP_KERNEL);
2477 if (!resp)
2478 return -ENOMEM;
2479
2480 msg[0] = IPMI_NETFN_APP_REQUEST << 2;
2481 msg[1] = IPMI_GET_BMC_GLOBAL_ENABLES_CMD;
2482 smi_info->handlers->start_transaction(smi_info->si_sm, msg, 2);
2483
2484 rv = wait_for_msg_done(smi_info);
2485 if (rv) {
2486 printk(KERN_WARNING
2487 "ipmi_si: Error getting response from get global,"
2488 " enables command, the event buffer is not"
2489 " enabled.\n");
2490 goto out;
2491 }
2492
2493 resp_len = smi_info->handlers->get_result(smi_info->si_sm,
2494 resp, IPMI_MAX_MSG_LENGTH);
2495
2496 if (resp_len < 4 ||
2497 resp[0] != (IPMI_NETFN_APP_REQUEST | 1) << 2 ||
2498 resp[1] != IPMI_GET_BMC_GLOBAL_ENABLES_CMD ||
2499 resp[2] != 0) {
2500 printk(KERN_WARNING
2501 "ipmi_si: Invalid return from get global"
2502 " enables command, cannot enable the event"
2503 " buffer.\n");
2504 rv = -EINVAL;
2505 goto out;
2506 }
2507
2508 if (resp[3] & IPMI_BMC_EVT_MSG_BUFF)
2509 /* buffer is already enabled, nothing to do. */
2510 goto out;
2511
2512 msg[0] = IPMI_NETFN_APP_REQUEST << 2;
2513 msg[1] = IPMI_SET_BMC_GLOBAL_ENABLES_CMD;
2514 msg[2] = resp[3] | IPMI_BMC_EVT_MSG_BUFF;
2515 smi_info->handlers->start_transaction(smi_info->si_sm, msg, 3);
2516
2517 rv = wait_for_msg_done(smi_info);
2518 if (rv) {
2519 printk(KERN_WARNING
2520 "ipmi_si: Error getting response from set global,"
2521 " enables command, the event buffer is not"
2522 " enabled.\n");
2523 goto out;
2524 }
2525
2526 resp_len = smi_info->handlers->get_result(smi_info->si_sm,
2527 resp, IPMI_MAX_MSG_LENGTH);
2528
2529 if (resp_len < 3 ||
2530 resp[0] != (IPMI_NETFN_APP_REQUEST | 1) << 2 ||
2531 resp[1] != IPMI_SET_BMC_GLOBAL_ENABLES_CMD) {
2532 printk(KERN_WARNING
2533 "ipmi_si: Invalid return from get global,"
2534 "enables command, not enable the event"
2535 " buffer.\n");
2536 rv = -EINVAL;
2537 goto out;
2538 }
2539
2540 if (resp[2] != 0)
2541 /*
2542 * An error when setting the event buffer bit means
2543 * that the event buffer is not supported.
2544 */
2545 rv = -ENOENT;
2546 out:
2547 kfree(resp);
2548 return rv;
2549}
2550
2465static int type_file_read_proc(char *page, char **start, off_t off, 2551static int type_file_read_proc(char *page, char **start, off_t off,
2466 int count, int *eof, void *data) 2552 int count, int *eof, void *data)
2467{ 2553{
@@ -2847,6 +2933,10 @@ static int try_smi_init(struct smi_info *new_smi)
2847 new_smi->intf_num = smi_num; 2933 new_smi->intf_num = smi_num;
2848 smi_num++; 2934 smi_num++;
2849 2935
2936 rv = try_enable_event_buffer(new_smi);
2937 if (rv == 0)
2938 new_smi->has_event_buffer = 1;
2939
2850 /* 2940 /*
2851 * Start clearing the flags before we enable interrupts or the 2941 * Start clearing the flags before we enable interrupts or the
2852 * timer to avoid racing with the timer. 2942 * timer to avoid racing with the timer.
@@ -2863,7 +2953,7 @@ static int try_smi_init(struct smi_info *new_smi)
2863 */ 2953 */
2864 new_smi->pdev = platform_device_alloc("ipmi_si", 2954 new_smi->pdev = platform_device_alloc("ipmi_si",
2865 new_smi->intf_num); 2955 new_smi->intf_num);
2866 if (rv) { 2956 if (!new_smi->pdev) {
2867 printk(KERN_ERR 2957 printk(KERN_ERR
2868 "ipmi_si_intf:" 2958 "ipmi_si_intf:"
2869 " Unable to allocate platform device\n"); 2959 " Unable to allocate platform device\n");
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 3586b3b3df3f..8f05c38c2f06 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -301,33 +301,7 @@ static inline int private_mapping_ok(struct vm_area_struct *vma)
301} 301}
302#endif 302#endif
303 303
304void __attribute__((weak))
305map_devmem(unsigned long pfn, unsigned long len, pgprot_t prot)
306{
307 /* nothing. architectures can override. */
308}
309
310void __attribute__((weak))
311unmap_devmem(unsigned long pfn, unsigned long len, pgprot_t prot)
312{
313 /* nothing. architectures can override. */
314}
315
316static void mmap_mem_open(struct vm_area_struct *vma)
317{
318 map_devmem(vma->vm_pgoff, vma->vm_end - vma->vm_start,
319 vma->vm_page_prot);
320}
321
322static void mmap_mem_close(struct vm_area_struct *vma)
323{
324 unmap_devmem(vma->vm_pgoff, vma->vm_end - vma->vm_start,
325 vma->vm_page_prot);
326}
327
328static struct vm_operations_struct mmap_mem_ops = { 304static struct vm_operations_struct mmap_mem_ops = {
329 .open = mmap_mem_open,
330 .close = mmap_mem_close,
331#ifdef CONFIG_HAVE_IOREMAP_PROT 305#ifdef CONFIG_HAVE_IOREMAP_PROT
332 .access = generic_access_phys 306 .access = generic_access_phys
333#endif 307#endif
@@ -362,7 +336,6 @@ static int mmap_mem(struct file * file, struct vm_area_struct * vma)
362 vma->vm_pgoff, 336 vma->vm_pgoff,
363 size, 337 size,
364 vma->vm_page_prot)) { 338 vma->vm_page_prot)) {
365 unmap_devmem(vma->vm_pgoff, size, vma->vm_page_prot);
366 return -EAGAIN; 339 return -EAGAIN;
367 } 340 }
368 return 0; 341 return 0;
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
index 6de020d078e1..b0a6a3e51924 100644
--- a/drivers/char/sysrq.c
+++ b/drivers/char/sysrq.c
@@ -35,7 +35,6 @@
35#include <linux/vt_kern.h> 35#include <linux/vt_kern.h>
36#include <linux/workqueue.h> 36#include <linux/workqueue.h>
37#include <linux/kexec.h> 37#include <linux/kexec.h>
38#include <linux/interrupt.h>
39#include <linux/hrtimer.h> 38#include <linux/hrtimer.h>
40#include <linux/oom.h> 39#include <linux/oom.h>
41 40
diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index 2c1d133819b5..08151d4de489 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -2274,7 +2274,7 @@ rescan_last_byte:
2274 continue; /* nothing to display */ 2274 continue; /* nothing to display */
2275 } 2275 }
2276 /* Glyph not found */ 2276 /* Glyph not found */
2277 if ((!(vc->vc_utf && !vc->vc_disp_ctrl) && c < 128) && !(c & ~charmask)) { 2277 if ((!(vc->vc_utf && !vc->vc_disp_ctrl) || c < 128) && !(c & ~charmask)) {
2278 /* In legacy mode use the glyph we get by a 1:1 mapping. 2278 /* In legacy mode use the glyph we get by a 1:1 mapping.
2279 This would make absolutely no sense with Unicode in mind, 2279 This would make absolutely no sense with Unicode in mind,
2280 but do this for ASCII characters since a font may lack 2280 but do this for ASCII characters since a font may lack
diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
index ee19b6e8fcb4..40bd8c61c7d7 100644
--- a/drivers/clocksource/acpi_pm.c
+++ b/drivers/clocksource/acpi_pm.c
@@ -57,7 +57,7 @@ u32 acpi_pm_read_verified(void)
57 return v2; 57 return v2;
58} 58}
59 59
60static cycle_t acpi_pm_read(void) 60static cycle_t acpi_pm_read(struct clocksource *cs)
61{ 61{
62 return (cycle_t)read_pmtmr(); 62 return (cycle_t)read_pmtmr();
63} 63}
@@ -83,7 +83,7 @@ static int __init acpi_pm_good_setup(char *__str)
83} 83}
84__setup("acpi_pm_good", acpi_pm_good_setup); 84__setup("acpi_pm_good", acpi_pm_good_setup);
85 85
86static cycle_t acpi_pm_read_slow(void) 86static cycle_t acpi_pm_read_slow(struct clocksource *cs)
87{ 87{
88 return (cycle_t)acpi_pm_read_verified(); 88 return (cycle_t)acpi_pm_read_verified();
89} 89}
@@ -156,9 +156,9 @@ static int verify_pmtmr_rate(void)
156 unsigned long count, delta; 156 unsigned long count, delta;
157 157
158 mach_prepare_counter(); 158 mach_prepare_counter();
159 value1 = clocksource_acpi_pm.read(); 159 value1 = clocksource_acpi_pm.read(&clocksource_acpi_pm);
160 mach_countup(&count); 160 mach_countup(&count);
161 value2 = clocksource_acpi_pm.read(); 161 value2 = clocksource_acpi_pm.read(&clocksource_acpi_pm);
162 delta = (value2 - value1) & ACPI_PM_MASK; 162 delta = (value2 - value1) & ACPI_PM_MASK;
163 163
164 /* Check that the PMTMR delta is within 5% of what we expect */ 164 /* Check that the PMTMR delta is within 5% of what we expect */
@@ -195,9 +195,9 @@ static int __init init_acpi_pm_clocksource(void)
195 /* "verify" this timing source: */ 195 /* "verify" this timing source: */
196 for (j = 0; j < ACPI_PM_MONOTONICITY_CHECKS; j++) { 196 for (j = 0; j < ACPI_PM_MONOTONICITY_CHECKS; j++) {
197 udelay(100 * j); 197 udelay(100 * j);
198 value1 = clocksource_acpi_pm.read(); 198 value1 = clocksource_acpi_pm.read(&clocksource_acpi_pm);
199 for (i = 0; i < ACPI_PM_READ_CHECKS; i++) { 199 for (i = 0; i < ACPI_PM_READ_CHECKS; i++) {
200 value2 = clocksource_acpi_pm.read(); 200 value2 = clocksource_acpi_pm.read(&clocksource_acpi_pm);
201 if (value2 == value1) 201 if (value2 == value1)
202 continue; 202 continue;
203 if (value2 > value1) 203 if (value2 > value1)
diff --git a/drivers/clocksource/cyclone.c b/drivers/clocksource/cyclone.c
index 8615059a8729..64e528e8bfa6 100644
--- a/drivers/clocksource/cyclone.c
+++ b/drivers/clocksource/cyclone.c
@@ -19,7 +19,7 @@
19int use_cyclone = 0; 19int use_cyclone = 0;
20static void __iomem *cyclone_ptr; 20static void __iomem *cyclone_ptr;
21 21
22static cycle_t read_cyclone(void) 22static cycle_t read_cyclone(struct clocksource *cs)
23{ 23{
24 return (cycle_t)readl(cyclone_ptr); 24 return (cycle_t)readl(cyclone_ptr);
25} 25}
diff --git a/drivers/clocksource/scx200_hrt.c b/drivers/clocksource/scx200_hrt.c
index b92da677aa5d..27f4d9637b62 100644
--- a/drivers/clocksource/scx200_hrt.c
+++ b/drivers/clocksource/scx200_hrt.c
@@ -43,7 +43,7 @@ MODULE_PARM_DESC(ppm, "+-adjust to actual XO freq (ppm)");
43/* The base timer frequency, * 27 if selected */ 43/* The base timer frequency, * 27 if selected */
44#define HRT_FREQ 1000000 44#define HRT_FREQ 1000000
45 45
46static cycle_t read_hrt(void) 46static cycle_t read_hrt(struct clocksource *cs)
47{ 47{
48 /* Read the timer value */ 48 /* Read the timer value */
49 return (cycle_t) inl(scx200_cb_base + SCx200_TIMER_OFFSET); 49 return (cycle_t) inl(scx200_cb_base + SCx200_TIMER_OFFSET);
diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
index 254f1064d973..01b886e68822 100644
--- a/drivers/clocksource/tcb_clksrc.c
+++ b/drivers/clocksource/tcb_clksrc.c
@@ -39,7 +39,7 @@
39 39
40static void __iomem *tcaddr; 40static void __iomem *tcaddr;
41 41
42static cycle_t tc_get_cycles(void) 42static cycle_t tc_get_cycles(struct clocksource *cs)
43{ 43{
44 unsigned long flags; 44 unsigned long flags;
45 u32 lower, upper; 45 u32 lower, upper;
diff --git a/drivers/edac/edac_core.h b/drivers/edac/edac_core.h
index 28f2c3f959b5..6ad95c8d6363 100644
--- a/drivers/edac/edac_core.h
+++ b/drivers/edac/edac_core.h
@@ -767,11 +767,19 @@ static inline void pci_write_bits16(struct pci_dev *pdev, int offset,
767 pci_write_config_word(pdev, offset, value); 767 pci_write_config_word(pdev, offset, value);
768} 768}
769 769
770/* write all or some bits in a dword-register*/ 770/*
771 * pci_write_bits32
772 *
773 * edac local routine to do pci_write_config_dword, but adds
774 * a mask parameter. If mask is all ones, ignore the mask.
775 * Otherwise utilize the mask to isolate specified bits
776 *
777 * write all or some bits in a dword-register
778 */
771static inline void pci_write_bits32(struct pci_dev *pdev, int offset, 779static inline void pci_write_bits32(struct pci_dev *pdev, int offset,
772 u32 value, u32 mask) 780 u32 value, u32 mask)
773{ 781{
774 if (mask != 0xffff) { 782 if (mask != 0xffffffff) {
775 u32 buf; 783 u32 buf;
776 784
777 pci_read_config_dword(pdev, offset, &buf); 785 pci_read_config_dword(pdev, offset, &buf);
diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c
index ca9113e1c106..a7d2c717d033 100644
--- a/drivers/edac/edac_device.c
+++ b/drivers/edac/edac_device.c
@@ -389,7 +389,7 @@ static void del_edac_device_from_global_list(struct edac_device_ctl_info
389 */ 389 */
390static void edac_device_workq_function(struct work_struct *work_req) 390static void edac_device_workq_function(struct work_struct *work_req)
391{ 391{
392 struct delayed_work *d_work = (struct delayed_work *)work_req; 392 struct delayed_work *d_work = to_delayed_work(work_req);
393 struct edac_device_ctl_info *edac_dev = to_edac_device_ctl_work(d_work); 393 struct edac_device_ctl_info *edac_dev = to_edac_device_ctl_work(d_work);
394 394
395 mutex_lock(&device_ctls_mutex); 395 mutex_lock(&device_ctls_mutex);
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index 25d66940b4fa..335b7ebdb11c 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -260,7 +260,7 @@ static int edac_mc_assert_error_check_and_clear(void)
260 */ 260 */
261static void edac_mc_workq_function(struct work_struct *work_req) 261static void edac_mc_workq_function(struct work_struct *work_req)
262{ 262{
263 struct delayed_work *d_work = (struct delayed_work *)work_req; 263 struct delayed_work *d_work = to_delayed_work(work_req);
264 struct mem_ctl_info *mci = to_edac_mem_ctl_work(d_work); 264 struct mem_ctl_info *mci = to_edac_mem_ctl_work(d_work);
265 265
266 mutex_lock(&mem_ctls_mutex); 266 mutex_lock(&mem_ctls_mutex);
diff --git a/drivers/edac/edac_pci.c b/drivers/edac/edac_pci.c
index 5b150aea703a..30b585b1d60b 100644
--- a/drivers/edac/edac_pci.c
+++ b/drivers/edac/edac_pci.c
@@ -233,7 +233,7 @@ EXPORT_SYMBOL_GPL(edac_pci_find);
233 */ 233 */
234static void edac_pci_workq_function(struct work_struct *work_req) 234static void edac_pci_workq_function(struct work_struct *work_req)
235{ 235{
236 struct delayed_work *d_work = (struct delayed_work *)work_req; 236 struct delayed_work *d_work = to_delayed_work(work_req);
237 struct edac_pci_ctl_info *pci = to_edac_pci_ctl_work(d_work); 237 struct edac_pci_ctl_info *pci = to_edac_pci_ctl_work(d_work);
238 int msec; 238 int msec;
239 unsigned long delay; 239 unsigned long delay;
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index 4637a4a757df..7c8c2d72916f 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -674,7 +674,7 @@ static void mpc85xx_mc_check(struct mem_ctl_info *mci)
674 int row_index; 674 int row_index;
675 675
676 err_detect = in_be32(pdata->mc_vbase + MPC85XX_MC_ERR_DETECT); 676 err_detect = in_be32(pdata->mc_vbase + MPC85XX_MC_ERR_DETECT);
677 if (err_detect) 677 if (!err_detect)
678 return; 678 return;
679 679
680 mpc85xx_mc_printk(mci, KERN_ERR, "Err Detect Register: %#8.8x\n", 680 mpc85xx_mc_printk(mci, KERN_ERR, "Err Detect Register: %#8.8x\n",
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index d009661781bc..ef878615c49f 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -159,6 +159,9 @@ void drm_master_put(struct drm_master **master)
159int drm_setmaster_ioctl(struct drm_device *dev, void *data, 159int drm_setmaster_ioctl(struct drm_device *dev, void *data,
160 struct drm_file *file_priv) 160 struct drm_file *file_priv)
161{ 161{
162 if (file_priv->is_master)
163 return 0;
164
162 if (file_priv->minor->master && file_priv->minor->master != file_priv->master) 165 if (file_priv->minor->master && file_priv->minor->master != file_priv->master)
163 return -EINVAL; 166 return -EINVAL;
164 167
@@ -169,6 +172,7 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
169 file_priv->minor->master != file_priv->master) { 172 file_priv->minor->master != file_priv->master) {
170 mutex_lock(&dev->struct_mutex); 173 mutex_lock(&dev->struct_mutex);
171 file_priv->minor->master = drm_master_get(file_priv->master); 174 file_priv->minor->master = drm_master_get(file_priv->master);
175 file_priv->is_master = 1;
172 mutex_unlock(&dev->struct_mutex); 176 mutex_unlock(&dev->struct_mutex);
173 } 177 }
174 178
@@ -178,10 +182,15 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
178int drm_dropmaster_ioctl(struct drm_device *dev, void *data, 182int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
179 struct drm_file *file_priv) 183 struct drm_file *file_priv)
180{ 184{
181 if (!file_priv->master) 185 if (!file_priv->is_master)
182 return -EINVAL; 186 return -EINVAL;
187
188 if (!file_priv->minor->master)
189 return -EINVAL;
190
183 mutex_lock(&dev->struct_mutex); 191 mutex_lock(&dev->struct_mutex);
184 drm_master_put(&file_priv->minor->master); 192 drm_master_put(&file_priv->minor->master);
193 file_priv->is_master = 0;
185 mutex_unlock(&dev->struct_mutex); 194 mutex_unlock(&dev->struct_mutex);
186 return 0; 195 return 0;
187} 196}
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index bc0c6849360c..022876ae34f0 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -132,6 +132,7 @@ void drm_sysfs_destroy(void)
132 */ 132 */
133static void drm_sysfs_device_release(struct device *dev) 133static void drm_sysfs_device_release(struct device *dev)
134{ 134{
135 memset(dev, 0, sizeof(struct device));
135 return; 136 return;
136} 137}
137 138
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 3750d8003048..473a8f7fbdb5 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -446,6 +446,9 @@ struct drm_i915_gem_object {
446 uint32_t tiling_mode; 446 uint32_t tiling_mode;
447 uint32_t stride; 447 uint32_t stride;
448 448
449 /** Record of address bit 17 of each page at last unbind. */
450 long *bit_17;
451
449 /** AGP mapping type (AGP_USER_MEMORY or AGP_USER_CACHED_MEMORY */ 452 /** AGP mapping type (AGP_USER_MEMORY or AGP_USER_CACHED_MEMORY */
450 uint32_t agp_type; 453 uint32_t agp_type;
451 454
@@ -635,9 +638,13 @@ int i915_gem_attach_phys_object(struct drm_device *dev,
635void i915_gem_detach_phys_object(struct drm_device *dev, 638void i915_gem_detach_phys_object(struct drm_device *dev,
636 struct drm_gem_object *obj); 639 struct drm_gem_object *obj);
637void i915_gem_free_all_phys_object(struct drm_device *dev); 640void i915_gem_free_all_phys_object(struct drm_device *dev);
641int i915_gem_object_get_pages(struct drm_gem_object *obj);
642void i915_gem_object_put_pages(struct drm_gem_object *obj);
638 643
639/* i915_gem_tiling.c */ 644/* i915_gem_tiling.c */
640void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); 645void i915_gem_detect_bit_6_swizzle(struct drm_device *dev);
646void i915_gem_object_do_bit_17_swizzle(struct drm_gem_object *obj);
647void i915_gem_object_save_bit_17_swizzle(struct drm_gem_object *obj);
641 648
642/* i915_gem_debug.c */ 649/* i915_gem_debug.c */
643void i915_gem_dump_object(struct drm_gem_object *obj, int len, 650void i915_gem_dump_object(struct drm_gem_object *obj, int len,
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 1449b452cc63..4642115902d6 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -43,8 +43,6 @@ static int i915_gem_object_set_cpu_read_domain_range(struct drm_gem_object *obj,
43 uint64_t offset, 43 uint64_t offset,
44 uint64_t size); 44 uint64_t size);
45static void i915_gem_object_set_to_full_cpu_read_domain(struct drm_gem_object *obj); 45static void i915_gem_object_set_to_full_cpu_read_domain(struct drm_gem_object *obj);
46static int i915_gem_object_get_pages(struct drm_gem_object *obj);
47static void i915_gem_object_put_pages(struct drm_gem_object *obj);
48static int i915_gem_object_wait_rendering(struct drm_gem_object *obj); 46static int i915_gem_object_wait_rendering(struct drm_gem_object *obj);
49static int i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, 47static int i915_gem_object_bind_to_gtt(struct drm_gem_object *obj,
50 unsigned alignment); 48 unsigned alignment);
@@ -143,15 +141,27 @@ fast_shmem_read(struct page **pages,
143 int length) 141 int length)
144{ 142{
145 char __iomem *vaddr; 143 char __iomem *vaddr;
146 int ret; 144 int unwritten;
147 145
148 vaddr = kmap_atomic(pages[page_base >> PAGE_SHIFT], KM_USER0); 146 vaddr = kmap_atomic(pages[page_base >> PAGE_SHIFT], KM_USER0);
149 if (vaddr == NULL) 147 if (vaddr == NULL)
150 return -ENOMEM; 148 return -ENOMEM;
151 ret = __copy_to_user_inatomic(data, vaddr + page_offset, length); 149 unwritten = __copy_to_user_inatomic(data, vaddr + page_offset, length);
152 kunmap_atomic(vaddr, KM_USER0); 150 kunmap_atomic(vaddr, KM_USER0);
153 151
154 return ret; 152 if (unwritten)
153 return -EFAULT;
154
155 return 0;
156}
157
158static int i915_gem_object_needs_bit17_swizzle(struct drm_gem_object *obj)
159{
160 drm_i915_private_t *dev_priv = obj->dev->dev_private;
161 struct drm_i915_gem_object *obj_priv = obj->driver_private;
162
163 return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 &&
164 obj_priv->tiling_mode != I915_TILING_NONE;
155} 165}
156 166
157static inline int 167static inline int
@@ -181,6 +191,64 @@ slow_shmem_copy(struct page *dst_page,
181 return 0; 191 return 0;
182} 192}
183 193
194static inline int
195slow_shmem_bit17_copy(struct page *gpu_page,
196 int gpu_offset,
197 struct page *cpu_page,
198 int cpu_offset,
199 int length,
200 int is_read)
201{
202 char *gpu_vaddr, *cpu_vaddr;
203
204 /* Use the unswizzled path if this page isn't affected. */
205 if ((page_to_phys(gpu_page) & (1 << 17)) == 0) {
206 if (is_read)
207 return slow_shmem_copy(cpu_page, cpu_offset,
208 gpu_page, gpu_offset, length);
209 else
210 return slow_shmem_copy(gpu_page, gpu_offset,
211 cpu_page, cpu_offset, length);
212 }
213
214 gpu_vaddr = kmap_atomic(gpu_page, KM_USER0);
215 if (gpu_vaddr == NULL)
216 return -ENOMEM;
217
218 cpu_vaddr = kmap_atomic(cpu_page, KM_USER1);
219 if (cpu_vaddr == NULL) {
220 kunmap_atomic(gpu_vaddr, KM_USER0);
221 return -ENOMEM;
222 }
223
224 /* Copy the data, XORing A6 with A17 (1). The user already knows he's
225 * XORing with the other bits (A9 for Y, A9 and A10 for X)
226 */
227 while (length > 0) {
228 int cacheline_end = ALIGN(gpu_offset + 1, 64);
229 int this_length = min(cacheline_end - gpu_offset, length);
230 int swizzled_gpu_offset = gpu_offset ^ 64;
231
232 if (is_read) {
233 memcpy(cpu_vaddr + cpu_offset,
234 gpu_vaddr + swizzled_gpu_offset,
235 this_length);
236 } else {
237 memcpy(gpu_vaddr + swizzled_gpu_offset,
238 cpu_vaddr + cpu_offset,
239 this_length);
240 }
241 cpu_offset += this_length;
242 gpu_offset += this_length;
243 length -= this_length;
244 }
245
246 kunmap_atomic(cpu_vaddr, KM_USER1);
247 kunmap_atomic(gpu_vaddr, KM_USER0);
248
249 return 0;
250}
251
184/** 252/**
185 * This is the fast shmem pread path, which attempts to copy_from_user directly 253 * This is the fast shmem pread path, which attempts to copy_from_user directly
186 * from the backing pages of the object to the user's address space. On a 254 * from the backing pages of the object to the user's address space. On a
@@ -269,6 +337,7 @@ i915_gem_shmem_pread_slow(struct drm_device *dev, struct drm_gem_object *obj,
269 int page_length; 337 int page_length;
270 int ret; 338 int ret;
271 uint64_t data_ptr = args->data_ptr; 339 uint64_t data_ptr = args->data_ptr;
340 int do_bit17_swizzling;
272 341
273 remain = args->size; 342 remain = args->size;
274 343
@@ -286,13 +355,15 @@ i915_gem_shmem_pread_slow(struct drm_device *dev, struct drm_gem_object *obj,
286 355
287 down_read(&mm->mmap_sem); 356 down_read(&mm->mmap_sem);
288 pinned_pages = get_user_pages(current, mm, (uintptr_t)args->data_ptr, 357 pinned_pages = get_user_pages(current, mm, (uintptr_t)args->data_ptr,
289 num_pages, 0, 0, user_pages, NULL); 358 num_pages, 1, 0, user_pages, NULL);
290 up_read(&mm->mmap_sem); 359 up_read(&mm->mmap_sem);
291 if (pinned_pages < num_pages) { 360 if (pinned_pages < num_pages) {
292 ret = -EFAULT; 361 ret = -EFAULT;
293 goto fail_put_user_pages; 362 goto fail_put_user_pages;
294 } 363 }
295 364
365 do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj);
366
296 mutex_lock(&dev->struct_mutex); 367 mutex_lock(&dev->struct_mutex);
297 368
298 ret = i915_gem_object_get_pages(obj); 369 ret = i915_gem_object_get_pages(obj);
@@ -327,11 +398,20 @@ i915_gem_shmem_pread_slow(struct drm_device *dev, struct drm_gem_object *obj,
327 if ((data_page_offset + page_length) > PAGE_SIZE) 398 if ((data_page_offset + page_length) > PAGE_SIZE)
328 page_length = PAGE_SIZE - data_page_offset; 399 page_length = PAGE_SIZE - data_page_offset;
329 400
330 ret = slow_shmem_copy(user_pages[data_page_index], 401 if (do_bit17_swizzling) {
331 data_page_offset, 402 ret = slow_shmem_bit17_copy(obj_priv->pages[shmem_page_index],
332 obj_priv->pages[shmem_page_index], 403 shmem_page_offset,
333 shmem_page_offset, 404 user_pages[data_page_index],
334 page_length); 405 data_page_offset,
406 page_length,
407 1);
408 } else {
409 ret = slow_shmem_copy(user_pages[data_page_index],
410 data_page_offset,
411 obj_priv->pages[shmem_page_index],
412 shmem_page_offset,
413 page_length);
414 }
335 if (ret) 415 if (ret)
336 goto fail_put_pages; 416 goto fail_put_pages;
337 417
@@ -383,9 +463,14 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data,
383 return -EINVAL; 463 return -EINVAL;
384 } 464 }
385 465
386 ret = i915_gem_shmem_pread_fast(dev, obj, args, file_priv); 466 if (i915_gem_object_needs_bit17_swizzle(obj)) {
387 if (ret != 0)
388 ret = i915_gem_shmem_pread_slow(dev, obj, args, file_priv); 467 ret = i915_gem_shmem_pread_slow(dev, obj, args, file_priv);
468 } else {
469 ret = i915_gem_shmem_pread_fast(dev, obj, args, file_priv);
470 if (ret != 0)
471 ret = i915_gem_shmem_pread_slow(dev, obj, args,
472 file_priv);
473 }
389 474
390 drm_gem_object_unreference(obj); 475 drm_gem_object_unreference(obj);
391 476
@@ -727,6 +812,7 @@ i915_gem_shmem_pwrite_slow(struct drm_device *dev, struct drm_gem_object *obj,
727 int page_length; 812 int page_length;
728 int ret; 813 int ret;
729 uint64_t data_ptr = args->data_ptr; 814 uint64_t data_ptr = args->data_ptr;
815 int do_bit17_swizzling;
730 816
731 remain = args->size; 817 remain = args->size;
732 818
@@ -751,6 +837,8 @@ i915_gem_shmem_pwrite_slow(struct drm_device *dev, struct drm_gem_object *obj,
751 goto fail_put_user_pages; 837 goto fail_put_user_pages;
752 } 838 }
753 839
840 do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj);
841
754 mutex_lock(&dev->struct_mutex); 842 mutex_lock(&dev->struct_mutex);
755 843
756 ret = i915_gem_object_get_pages(obj); 844 ret = i915_gem_object_get_pages(obj);
@@ -785,11 +873,20 @@ i915_gem_shmem_pwrite_slow(struct drm_device *dev, struct drm_gem_object *obj,
785 if ((data_page_offset + page_length) > PAGE_SIZE) 873 if ((data_page_offset + page_length) > PAGE_SIZE)
786 page_length = PAGE_SIZE - data_page_offset; 874 page_length = PAGE_SIZE - data_page_offset;
787 875
788 ret = slow_shmem_copy(obj_priv->pages[shmem_page_index], 876 if (do_bit17_swizzling) {
789 shmem_page_offset, 877 ret = slow_shmem_bit17_copy(obj_priv->pages[shmem_page_index],
790 user_pages[data_page_index], 878 shmem_page_offset,
791 data_page_offset, 879 user_pages[data_page_index],
792 page_length); 880 data_page_offset,
881 page_length,
882 0);
883 } else {
884 ret = slow_shmem_copy(obj_priv->pages[shmem_page_index],
885 shmem_page_offset,
886 user_pages[data_page_index],
887 data_page_offset,
888 page_length);
889 }
793 if (ret) 890 if (ret)
794 goto fail_put_pages; 891 goto fail_put_pages;
795 892
@@ -854,6 +951,8 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
854 ret = i915_gem_gtt_pwrite_slow(dev, obj, args, 951 ret = i915_gem_gtt_pwrite_slow(dev, obj, args,
855 file_priv); 952 file_priv);
856 } 953 }
954 } else if (i915_gem_object_needs_bit17_swizzle(obj)) {
955 ret = i915_gem_shmem_pwrite_slow(dev, obj, args, file_priv);
857 } else { 956 } else {
858 ret = i915_gem_shmem_pwrite_fast(dev, obj, args, file_priv); 957 ret = i915_gem_shmem_pwrite_fast(dev, obj, args, file_priv);
859 if (ret == -EFAULT) { 958 if (ret == -EFAULT) {
@@ -1285,7 +1384,7 @@ i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data,
1285 return 0; 1384 return 0;
1286} 1385}
1287 1386
1288static void 1387void
1289i915_gem_object_put_pages(struct drm_gem_object *obj) 1388i915_gem_object_put_pages(struct drm_gem_object *obj)
1290{ 1389{
1291 struct drm_i915_gem_object *obj_priv = obj->driver_private; 1390 struct drm_i915_gem_object *obj_priv = obj->driver_private;
@@ -1297,6 +1396,9 @@ i915_gem_object_put_pages(struct drm_gem_object *obj)
1297 if (--obj_priv->pages_refcount != 0) 1396 if (--obj_priv->pages_refcount != 0)
1298 return; 1397 return;
1299 1398
1399 if (obj_priv->tiling_mode != I915_TILING_NONE)
1400 i915_gem_object_save_bit_17_swizzle(obj);
1401
1300 for (i = 0; i < page_count; i++) 1402 for (i = 0; i < page_count; i++)
1301 if (obj_priv->pages[i] != NULL) { 1403 if (obj_priv->pages[i] != NULL) {
1302 if (obj_priv->dirty) 1404 if (obj_priv->dirty)
@@ -1494,8 +1596,19 @@ i915_gem_retire_request(struct drm_device *dev,
1494 1596
1495 if (obj->write_domain != 0) 1597 if (obj->write_domain != 0)
1496 i915_gem_object_move_to_flushing(obj); 1598 i915_gem_object_move_to_flushing(obj);
1497 else 1599 else {
1600 /* Take a reference on the object so it won't be
1601 * freed while the spinlock is held. The list
1602 * protection for this spinlock is safe when breaking
1603 * the lock like this since the next thing we do
1604 * is just get the head of the list again.
1605 */
1606 drm_gem_object_reference(obj);
1498 i915_gem_object_move_to_inactive(obj); 1607 i915_gem_object_move_to_inactive(obj);
1608 spin_unlock(&dev_priv->mm.active_list_lock);
1609 drm_gem_object_unreference(obj);
1610 spin_lock(&dev_priv->mm.active_list_lock);
1611 }
1499 } 1612 }
1500out: 1613out:
1501 spin_unlock(&dev_priv->mm.active_list_lock); 1614 spin_unlock(&dev_priv->mm.active_list_lock);
@@ -1884,7 +1997,7 @@ i915_gem_evict_everything(struct drm_device *dev)
1884 return ret; 1997 return ret;
1885} 1998}
1886 1999
1887static int 2000int
1888i915_gem_object_get_pages(struct drm_gem_object *obj) 2001i915_gem_object_get_pages(struct drm_gem_object *obj)
1889{ 2002{
1890 struct drm_i915_gem_object *obj_priv = obj->driver_private; 2003 struct drm_i915_gem_object *obj_priv = obj->driver_private;
@@ -1922,6 +2035,10 @@ i915_gem_object_get_pages(struct drm_gem_object *obj)
1922 } 2035 }
1923 obj_priv->pages[i] = page; 2036 obj_priv->pages[i] = page;
1924 } 2037 }
2038
2039 if (obj_priv->tiling_mode != I915_TILING_NONE)
2040 i915_gem_object_do_bit_17_swizzle(obj);
2041
1925 return 0; 2042 return 0;
1926} 2043}
1927 2044
@@ -3002,13 +3119,13 @@ i915_gem_get_relocs_from_user(struct drm_i915_gem_exec_object *exec_list,
3002 drm_free(*relocs, reloc_count * sizeof(**relocs), 3119 drm_free(*relocs, reloc_count * sizeof(**relocs),
3003 DRM_MEM_DRIVER); 3120 DRM_MEM_DRIVER);
3004 *relocs = NULL; 3121 *relocs = NULL;
3005 return ret; 3122 return -EFAULT;
3006 } 3123 }
3007 3124
3008 reloc_index += exec_list[i].relocation_count; 3125 reloc_index += exec_list[i].relocation_count;
3009 } 3126 }
3010 3127
3011 return ret; 3128 return 0;
3012} 3129}
3013 3130
3014static int 3131static int
@@ -3017,23 +3134,28 @@ i915_gem_put_relocs_to_user(struct drm_i915_gem_exec_object *exec_list,
3017 struct drm_i915_gem_relocation_entry *relocs) 3134 struct drm_i915_gem_relocation_entry *relocs)
3018{ 3135{
3019 uint32_t reloc_count = 0, i; 3136 uint32_t reloc_count = 0, i;
3020 int ret; 3137 int ret = 0;
3021 3138
3022 for (i = 0; i < buffer_count; i++) { 3139 for (i = 0; i < buffer_count; i++) {
3023 struct drm_i915_gem_relocation_entry __user *user_relocs; 3140 struct drm_i915_gem_relocation_entry __user *user_relocs;
3141 int unwritten;
3024 3142
3025 user_relocs = (void __user *)(uintptr_t)exec_list[i].relocs_ptr; 3143 user_relocs = (void __user *)(uintptr_t)exec_list[i].relocs_ptr;
3026 3144
3027 if (ret == 0) { 3145 unwritten = copy_to_user(user_relocs,
3028 ret = copy_to_user(user_relocs, 3146 &relocs[reloc_count],
3029 &relocs[reloc_count], 3147 exec_list[i].relocation_count *
3030 exec_list[i].relocation_count * 3148 sizeof(*relocs));
3031 sizeof(*relocs)); 3149
3150 if (unwritten) {
3151 ret = -EFAULT;
3152 goto err;
3032 } 3153 }
3033 3154
3034 reloc_count += exec_list[i].relocation_count; 3155 reloc_count += exec_list[i].relocation_count;
3035 } 3156 }
3036 3157
3158err:
3037 drm_free(relocs, reloc_count * sizeof(*relocs), DRM_MEM_DRIVER); 3159 drm_free(relocs, reloc_count * sizeof(*relocs), DRM_MEM_DRIVER);
3038 3160
3039 return ret; 3161 return ret;
@@ -3243,7 +3365,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
3243 exec_offset = exec_list[args->buffer_count - 1].offset; 3365 exec_offset = exec_list[args->buffer_count - 1].offset;
3244 3366
3245#if WATCH_EXEC 3367#if WATCH_EXEC
3246 i915_gem_dump_object(object_list[args->buffer_count - 1], 3368 i915_gem_dump_object(batch_obj,
3247 args->batch_len, 3369 args->batch_len,
3248 __func__, 3370 __func__,
3249 ~0); 3371 ~0);
@@ -3308,10 +3430,12 @@ err:
3308 (uintptr_t) args->buffers_ptr, 3430 (uintptr_t) args->buffers_ptr,
3309 exec_list, 3431 exec_list,
3310 sizeof(*exec_list) * args->buffer_count); 3432 sizeof(*exec_list) * args->buffer_count);
3311 if (ret) 3433 if (ret) {
3434 ret = -EFAULT;
3312 DRM_ERROR("failed to copy %d exec entries " 3435 DRM_ERROR("failed to copy %d exec entries "
3313 "back to user (%d)\n", 3436 "back to user (%d)\n",
3314 args->buffer_count, ret); 3437 args->buffer_count, ret);
3438 }
3315 } 3439 }
3316 3440
3317 /* Copy the updated relocations out regardless of current error 3441 /* Copy the updated relocations out regardless of current error
@@ -3593,6 +3717,7 @@ void i915_gem_free_object(struct drm_gem_object *obj)
3593 i915_gem_free_mmap_offset(obj); 3717 i915_gem_free_mmap_offset(obj);
3594 3718
3595 drm_free(obj_priv->page_cpu_valid, 1, DRM_MEM_DRIVER); 3719 drm_free(obj_priv->page_cpu_valid, 1, DRM_MEM_DRIVER);
3720 kfree(obj_priv->bit_17);
3596 drm_free(obj->driver_private, 1, DRM_MEM_DRIVER); 3721 drm_free(obj->driver_private, 1, DRM_MEM_DRIVER);
3597} 3722}
3598 3723
diff --git a/drivers/gpu/drm/i915/i915_gem_debugfs.c b/drivers/gpu/drm/i915/i915_gem_debugfs.c
index a1ac0c5e7307..986f1082c596 100644
--- a/drivers/gpu/drm/i915/i915_gem_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_gem_debugfs.c
@@ -234,6 +234,96 @@ static int i915_hws_info(struct seq_file *m, void *data)
234 return 0; 234 return 0;
235} 235}
236 236
237static void i915_dump_pages(struct seq_file *m, struct page **pages, int page_count)
238{
239 int page, i;
240 uint32_t *mem;
241
242 for (page = 0; page < page_count; page++) {
243 mem = kmap(pages[page]);
244 for (i = 0; i < PAGE_SIZE; i += 4)
245 seq_printf(m, "%08x : %08x\n", i, mem[i / 4]);
246 kunmap(pages[page]);
247 }
248}
249
250static int i915_batchbuffer_info(struct seq_file *m, void *data)
251{
252 struct drm_info_node *node = (struct drm_info_node *) m->private;
253 struct drm_device *dev = node->minor->dev;
254 drm_i915_private_t *dev_priv = dev->dev_private;
255 struct drm_gem_object *obj;
256 struct drm_i915_gem_object *obj_priv;
257 int ret;
258
259 spin_lock(&dev_priv->mm.active_list_lock);
260
261 list_for_each_entry(obj_priv, &dev_priv->mm.active_list, list) {
262 obj = obj_priv->obj;
263 if (obj->read_domains & I915_GEM_DOMAIN_COMMAND) {
264 ret = i915_gem_object_get_pages(obj);
265 if (ret) {
266 DRM_ERROR("Failed to get pages: %d\n", ret);
267 spin_unlock(&dev_priv->mm.active_list_lock);
268 return ret;
269 }
270
271 seq_printf(m, "--- gtt_offset = 0x%08x\n", obj_priv->gtt_offset);
272 i915_dump_pages(m, obj_priv->pages, obj->size / PAGE_SIZE);
273
274 i915_gem_object_put_pages(obj);
275 }
276 }
277
278 spin_unlock(&dev_priv->mm.active_list_lock);
279
280 return 0;
281}
282
283static int i915_ringbuffer_data(struct seq_file *m, void *data)
284{
285 struct drm_info_node *node = (struct drm_info_node *) m->private;
286 struct drm_device *dev = node->minor->dev;
287 drm_i915_private_t *dev_priv = dev->dev_private;
288 u8 *virt;
289 uint32_t *ptr, off;
290
291 if (!dev_priv->ring.ring_obj) {
292 seq_printf(m, "No ringbuffer setup\n");
293 return 0;
294 }
295
296 virt = dev_priv->ring.virtual_start;
297
298 for (off = 0; off < dev_priv->ring.Size; off += 4) {
299 ptr = (uint32_t *)(virt + off);
300 seq_printf(m, "%08x : %08x\n", off, *ptr);
301 }
302
303 return 0;
304}
305
306static int i915_ringbuffer_info(struct seq_file *m, void *data)
307{
308 struct drm_info_node *node = (struct drm_info_node *) m->private;
309 struct drm_device *dev = node->minor->dev;
310 drm_i915_private_t *dev_priv = dev->dev_private;
311 unsigned int head, tail, mask;
312
313 head = I915_READ(PRB0_HEAD) & HEAD_ADDR;
314 tail = I915_READ(PRB0_TAIL) & TAIL_ADDR;
315 mask = dev_priv->ring.tail_mask;
316
317 seq_printf(m, "RingHead : %08x\n", head);
318 seq_printf(m, "RingTail : %08x\n", tail);
319 seq_printf(m, "RingMask : %08x\n", mask);
320 seq_printf(m, "RingSize : %08lx\n", dev_priv->ring.Size);
321 seq_printf(m, "Acthd : %08x\n", I915_READ(IS_I965G(dev) ? ACTHD_I965 : ACTHD));
322
323 return 0;
324}
325
326
237static struct drm_info_list i915_gem_debugfs_list[] = { 327static struct drm_info_list i915_gem_debugfs_list[] = {
238 {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST}, 328 {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST},
239 {"i915_gem_flushing", i915_gem_object_list_info, 0, (void *) FLUSHING_LIST}, 329 {"i915_gem_flushing", i915_gem_object_list_info, 0, (void *) FLUSHING_LIST},
@@ -243,6 +333,9 @@ static struct drm_info_list i915_gem_debugfs_list[] = {
243 {"i915_gem_fence_regs", i915_gem_fence_regs_info, 0}, 333 {"i915_gem_fence_regs", i915_gem_fence_regs_info, 0},
244 {"i915_gem_interrupt", i915_interrupt_info, 0}, 334 {"i915_gem_interrupt", i915_interrupt_info, 0},
245 {"i915_gem_hws", i915_hws_info, 0}, 335 {"i915_gem_hws", i915_hws_info, 0},
336 {"i915_ringbuffer_data", i915_ringbuffer_data, 0},
337 {"i915_ringbuffer_info", i915_ringbuffer_info, 0},
338 {"i915_batchbuffers", i915_batchbuffer_info, 0},
246}; 339};
247#define I915_GEM_DEBUGFS_ENTRIES ARRAY_SIZE(i915_gem_debugfs_list) 340#define I915_GEM_DEBUGFS_ENTRIES ARRAY_SIZE(i915_gem_debugfs_list)
248 341
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c
index 6be3f927c86a..f27e523c764f 100644
--- a/drivers/gpu/drm/i915/i915_gem_tiling.c
+++ b/drivers/gpu/drm/i915/i915_gem_tiling.c
@@ -25,6 +25,8 @@
25 * 25 *
26 */ 26 */
27 27
28#include "linux/string.h"
29#include "linux/bitops.h"
28#include "drmP.h" 30#include "drmP.h"
29#include "drm.h" 31#include "drm.h"
30#include "i915_drm.h" 32#include "i915_drm.h"
@@ -127,8 +129,8 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
127 swizzle_y = I915_BIT_6_SWIZZLE_9_11; 129 swizzle_y = I915_BIT_6_SWIZZLE_9_11;
128 } else { 130 } else {
129 /* Bit 17 swizzling by the CPU in addition. */ 131 /* Bit 17 swizzling by the CPU in addition. */
130 swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN; 132 swizzle_x = I915_BIT_6_SWIZZLE_9_10_17;
131 swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN; 133 swizzle_y = I915_BIT_6_SWIZZLE_9_17;
132 } 134 }
133 break; 135 break;
134 } 136 }
@@ -288,6 +290,19 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
288 args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x; 290 args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x;
289 else 291 else
290 args->swizzle_mode = dev_priv->mm.bit_6_swizzle_y; 292 args->swizzle_mode = dev_priv->mm.bit_6_swizzle_y;
293
294 /* Hide bit 17 swizzling from the user. This prevents old Mesa
295 * from aborting the application on sw fallbacks to bit 17,
296 * and we use the pread/pwrite bit17 paths to swizzle for it.
297 * If there was a user that was relying on the swizzle
298 * information for drm_intel_bo_map()ed reads/writes this would
299 * break it, but we don't have any of those.
300 */
301 if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_17)
302 args->swizzle_mode = I915_BIT_6_SWIZZLE_9;
303 if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_10_17)
304 args->swizzle_mode = I915_BIT_6_SWIZZLE_9_10;
305
291 /* If we can't handle the swizzling, make it untiled. */ 306 /* If we can't handle the swizzling, make it untiled. */
292 if (args->swizzle_mode == I915_BIT_6_SWIZZLE_UNKNOWN) { 307 if (args->swizzle_mode == I915_BIT_6_SWIZZLE_UNKNOWN) {
293 args->tiling_mode = I915_TILING_NONE; 308 args->tiling_mode = I915_TILING_NONE;
@@ -354,8 +369,100 @@ i915_gem_get_tiling(struct drm_device *dev, void *data,
354 DRM_ERROR("unknown tiling mode\n"); 369 DRM_ERROR("unknown tiling mode\n");
355 } 370 }
356 371
372 /* Hide bit 17 from the user -- see comment in i915_gem_set_tiling */
373 if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_17)
374 args->swizzle_mode = I915_BIT_6_SWIZZLE_9;
375 if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_10_17)
376 args->swizzle_mode = I915_BIT_6_SWIZZLE_9_10;
377
357 drm_gem_object_unreference(obj); 378 drm_gem_object_unreference(obj);
358 mutex_unlock(&dev->struct_mutex); 379 mutex_unlock(&dev->struct_mutex);
359 380
360 return 0; 381 return 0;
361} 382}
383
384/**
385 * Swap every 64 bytes of this page around, to account for it having a new
386 * bit 17 of its physical address and therefore being interpreted differently
387 * by the GPU.
388 */
389static int
390i915_gem_swizzle_page(struct page *page)
391{
392 char *vaddr;
393 int i;
394 char temp[64];
395
396 vaddr = kmap(page);
397 if (vaddr == NULL)
398 return -ENOMEM;
399
400 for (i = 0; i < PAGE_SIZE; i += 128) {
401 memcpy(temp, &vaddr[i], 64);
402 memcpy(&vaddr[i], &vaddr[i + 64], 64);
403 memcpy(&vaddr[i + 64], temp, 64);
404 }
405
406 kunmap(page);
407
408 return 0;
409}
410
411void
412i915_gem_object_do_bit_17_swizzle(struct drm_gem_object *obj)
413{
414 struct drm_device *dev = obj->dev;
415 drm_i915_private_t *dev_priv = dev->dev_private;
416 struct drm_i915_gem_object *obj_priv = obj->driver_private;
417 int page_count = obj->size >> PAGE_SHIFT;
418 int i;
419
420 if (dev_priv->mm.bit_6_swizzle_x != I915_BIT_6_SWIZZLE_9_10_17)
421 return;
422
423 if (obj_priv->bit_17 == NULL)
424 return;
425
426 for (i = 0; i < page_count; i++) {
427 char new_bit_17 = page_to_phys(obj_priv->pages[i]) >> 17;
428 if ((new_bit_17 & 0x1) !=
429 (test_bit(i, obj_priv->bit_17) != 0)) {
430 int ret = i915_gem_swizzle_page(obj_priv->pages[i]);
431 if (ret != 0) {
432 DRM_ERROR("Failed to swizzle page\n");
433 return;
434 }
435 set_page_dirty(obj_priv->pages[i]);
436 }
437 }
438}
439
440void
441i915_gem_object_save_bit_17_swizzle(struct drm_gem_object *obj)
442{
443 struct drm_device *dev = obj->dev;
444 drm_i915_private_t *dev_priv = dev->dev_private;
445 struct drm_i915_gem_object *obj_priv = obj->driver_private;
446 int page_count = obj->size >> PAGE_SHIFT;
447 int i;
448
449 if (dev_priv->mm.bit_6_swizzle_x != I915_BIT_6_SWIZZLE_9_10_17)
450 return;
451
452 if (obj_priv->bit_17 == NULL) {
453 obj_priv->bit_17 = kmalloc(BITS_TO_LONGS(page_count) *
454 sizeof(long), GFP_KERNEL);
455 if (obj_priv->bit_17 == NULL) {
456 DRM_ERROR("Failed to allocate memory for bit 17 "
457 "record\n");
458 return;
459 }
460 }
461
462 for (i = 0; i < page_count; i++) {
463 if (page_to_phys(obj_priv->pages[i]) & (1 << 17))
464 __set_bit(i, obj_priv->bit_17);
465 else
466 __clear_bit(i, obj_priv->bit_17);
467 }
468}
diff --git a/drivers/gpu/drm/i915/i915_opregion.c b/drivers/gpu/drm/i915/i915_opregion.c
index 69427722d20e..8dc1fd3115c2 100644
--- a/drivers/gpu/drm/i915/i915_opregion.c
+++ b/drivers/gpu/drm/i915/i915_opregion.c
@@ -370,11 +370,8 @@ int intel_opregion_init(struct drm_device *dev, int resume)
370 if (mboxes & MBOX_ACPI) { 370 if (mboxes & MBOX_ACPI) {
371 DRM_DEBUG("Public ACPI methods supported\n"); 371 DRM_DEBUG("Public ACPI methods supported\n");
372 opregion->acpi = base + OPREGION_ACPI_OFFSET; 372 opregion->acpi = base + OPREGION_ACPI_OFFSET;
373 if (drm_core_check_feature(dev, DRIVER_MODESET)) { 373 if (drm_core_check_feature(dev, DRIVER_MODESET))
374 intel_didl_outputs(dev); 374 intel_didl_outputs(dev);
375 if (!resume)
376 acpi_video_register();
377 }
378 } else { 375 } else {
379 DRM_DEBUG("Public ACPI methods not supported\n"); 376 DRM_DEBUG("Public ACPI methods not supported\n");
380 err = -ENOTSUPP; 377 err = -ENOTSUPP;
@@ -391,6 +388,10 @@ int intel_opregion_init(struct drm_device *dev, int resume)
391 opregion->asle = base + OPREGION_ASLE_OFFSET; 388 opregion->asle = base + OPREGION_ASLE_OFFSET;
392 } 389 }
393 390
391 if (!resume)
392 acpi_video_register();
393
394
394 /* Notify BIOS we are ready to handle ACPI video ext notifs. 395 /* Notify BIOS we are ready to handle ACPI video ext notifs.
395 * Right now, all the events are handled by the ACPI video module. 396 * Right now, all the events are handled by the ACPI video module.
396 * We don't actually need to do anything with them. */ 397 * We don't actually need to do anything with them. */
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 64773ce52964..c2c8e95ff14d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -367,6 +367,7 @@ static const intel_limit_t intel_limits[] = {
367 .p1 = { .min = I9XX_P1_MIN, .max = I9XX_P1_MAX }, 367 .p1 = { .min = I9XX_P1_MIN, .max = I9XX_P1_MAX },
368 .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, 368 .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT,
369 .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, 369 .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST },
370 .find_pll = intel_find_best_PLL,
370 }, 371 },
371 { /* INTEL_LIMIT_IGD_LVDS */ 372 { /* INTEL_LIMIT_IGD_LVDS */
372 .dot = { .min = I9XX_DOT_MIN, .max = I9XX_DOT_MAX }, 373 .dot = { .min = I9XX_DOT_MIN, .max = I9XX_DOT_MAX },
@@ -380,6 +381,7 @@ static const intel_limit_t intel_limits[] = {
380 /* IGD only supports single-channel mode. */ 381 /* IGD only supports single-channel mode. */
381 .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, 382 .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT,
382 .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_SLOW }, 383 .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_SLOW },
384 .find_pll = intel_find_best_PLL,
383 }, 385 },
384 386
385}; 387};
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
index b7f0ebe9f810..3e094beecb99 100644
--- a/drivers/gpu/drm/i915/intel_fb.c
+++ b/drivers/gpu/drm/i915/intel_fb.c
@@ -864,8 +864,8 @@ static void intelfb_sysrq(int dummy1, struct tty_struct *dummy3)
864 864
865static struct sysrq_key_op sysrq_intelfb_restore_op = { 865static struct sysrq_key_op sysrq_intelfb_restore_op = {
866 .handler = intelfb_sysrq, 866 .handler = intelfb_sysrq,
867 .help_msg = "force fb", 867 .help_msg = "force-fb(G)",
868 .action_msg = "force restore of fb console", 868 .action_msg = "Restore framebuffer console",
869}; 869};
870 870
871int intelfb_probe(struct drm_device *dev) 871int intelfb_probe(struct drm_device *dev)
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index b06a4a3ff08d..550374225388 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -38,7 +38,7 @@
38struct intel_hdmi_priv { 38struct intel_hdmi_priv {
39 u32 sdvox_reg; 39 u32 sdvox_reg;
40 u32 save_SDVOX; 40 u32 save_SDVOX;
41 int has_hdmi_sink; 41 bool has_hdmi_sink;
42}; 42};
43 43
44static void intel_hdmi_mode_set(struct drm_encoder *encoder, 44static void intel_hdmi_mode_set(struct drm_encoder *encoder,
@@ -128,6 +128,22 @@ static bool intel_hdmi_mode_fixup(struct drm_encoder *encoder,
128 return true; 128 return true;
129} 129}
130 130
131static void
132intel_hdmi_sink_detect(struct drm_connector *connector)
133{
134 struct intel_output *intel_output = to_intel_output(connector);
135 struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv;
136 struct edid *edid = NULL;
137
138 edid = drm_get_edid(&intel_output->base,
139 &intel_output->ddc_bus->adapter);
140 if (edid != NULL) {
141 hdmi_priv->has_hdmi_sink = drm_detect_hdmi_monitor(edid);
142 kfree(edid);
143 intel_output->base.display_info.raw_edid = NULL;
144 }
145}
146
131static enum drm_connector_status 147static enum drm_connector_status
132intel_hdmi_detect(struct drm_connector *connector) 148intel_hdmi_detect(struct drm_connector *connector)
133{ 149{
@@ -158,9 +174,10 @@ intel_hdmi_detect(struct drm_connector *connector)
158 return connector_status_unknown; 174 return connector_status_unknown;
159 } 175 }
160 176
161 if ((I915_READ(PORT_HOTPLUG_STAT) & bit) != 0) 177 if ((I915_READ(PORT_HOTPLUG_STAT) & bit) != 0) {
178 intel_hdmi_sink_detect(connector);
162 return connector_status_connected; 179 return connector_status_connected;
163 else 180 } else
164 return connector_status_disconnected; 181 return connector_status_disconnected;
165} 182}
166 183
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 7b31f55f55c8..9913651c1e17 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1357,6 +1357,23 @@ void intel_sdvo_set_hotplug(struct drm_connector *connector, int on)
1357 intel_sdvo_read_response(intel_output, &response, 2); 1357 intel_sdvo_read_response(intel_output, &response, 2);
1358} 1358}
1359 1359
1360static void
1361intel_sdvo_hdmi_sink_detect(struct drm_connector *connector)
1362{
1363 struct intel_output *intel_output = to_intel_output(connector);
1364 struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv;
1365 struct edid *edid = NULL;
1366
1367 intel_sdvo_set_control_bus_switch(intel_output, sdvo_priv->ddc_bus);
1368 edid = drm_get_edid(&intel_output->base,
1369 &intel_output->ddc_bus->adapter);
1370 if (edid != NULL) {
1371 sdvo_priv->is_hdmi = drm_detect_hdmi_monitor(edid);
1372 kfree(edid);
1373 intel_output->base.display_info.raw_edid = NULL;
1374 }
1375}
1376
1360static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connector) 1377static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connector)
1361{ 1378{
1362 u8 response[2]; 1379 u8 response[2];
@@ -1371,9 +1388,10 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect
1371 if (status != SDVO_CMD_STATUS_SUCCESS) 1388 if (status != SDVO_CMD_STATUS_SUCCESS)
1372 return connector_status_unknown; 1389 return connector_status_unknown;
1373 1390
1374 if ((response[0] != 0) || (response[1] != 0)) 1391 if ((response[0] != 0) || (response[1] != 0)) {
1392 intel_sdvo_hdmi_sink_detect(connector);
1375 return connector_status_connected; 1393 return connector_status_connected;
1376 else 1394 } else
1377 return connector_status_disconnected; 1395 return connector_status_disconnected;
1378} 1396}
1379 1397
diff --git a/drivers/gpu/drm/via/via_dma.c b/drivers/gpu/drm/via/via_dma.c
index 7a339dba6a69..bfb92d283260 100644
--- a/drivers/gpu/drm/via/via_dma.c
+++ b/drivers/gpu/drm/via/via_dma.c
@@ -481,11 +481,13 @@ static int via_wait_idle(drm_via_private_t * dev_priv)
481{ 481{
482 int count = 10000000; 482 int count = 10000000;
483 483
484 while (!(VIA_READ(VIA_REG_STATUS) & VIA_VR_QUEUE_BUSY) && count--); 484 while (!(VIA_READ(VIA_REG_STATUS) & VIA_VR_QUEUE_BUSY) && --count)
485 ;
485 486
486 while (count-- && (VIA_READ(VIA_REG_STATUS) & 487 while (count && (VIA_READ(VIA_REG_STATUS) &
487 (VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY | 488 (VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY |
488 VIA_3D_ENG_BUSY))) ; 489 VIA_3D_ENG_BUSY)))
490 --count;
489 return count; 491 return count;
490} 492}
491 493
@@ -705,7 +707,7 @@ static int via_cmdbuf_size(struct drm_device *dev, void *data, struct drm_file *
705 switch (d_siz->func) { 707 switch (d_siz->func) {
706 case VIA_CMDBUF_SPACE: 708 case VIA_CMDBUF_SPACE:
707 while (((tmp_size = via_cmdbuf_space(dev_priv)) < d_siz->size) 709 while (((tmp_size = via_cmdbuf_space(dev_priv)) < d_siz->size)
708 && count--) { 710 && --count) {
709 if (!d_siz->wait) { 711 if (!d_siz->wait) {
710 break; 712 break;
711 } 713 }
@@ -717,7 +719,7 @@ static int via_cmdbuf_size(struct drm_device *dev, void *data, struct drm_file *
717 break; 719 break;
718 case VIA_CMDBUF_LAG: 720 case VIA_CMDBUF_LAG:
719 while (((tmp_size = via_cmdbuf_lag(dev_priv)) > d_siz->size) 721 while (((tmp_size = via_cmdbuf_lag(dev_priv)) > d_siz->size)
720 && count--) { 722 && --count) {
721 if (!d_siz->wait) { 723 if (!d_siz->wait) {
722 break; 724 break;
723 } 725 }
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 0e8a9185f676..d73f5f473e38 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -692,6 +692,16 @@ config SENSORS_PCF8591
692 These devices are hard to detect and rarely found on mainstream 692 These devices are hard to detect and rarely found on mainstream
693 hardware. If unsure, say N. 693 hardware. If unsure, say N.
694 694
695config SENSORS_SHT15
696 tristate "Sensiron humidity and temperature sensors. SHT15 and compat."
697 depends on GENERIC_GPIO
698 help
699 If you say yes here you get support for the Sensiron SHT10, SHT11,
700 SHT15, SHT71, SHT75 humidity and temperature sensors.
701
702 This driver can also be built as a module. If so, the module
703 will be called sht15.
704
695config SENSORS_SIS5595 705config SENSORS_SIS5595
696 tristate "Silicon Integrated Systems Corp. SiS5595" 706 tristate "Silicon Integrated Systems Corp. SiS5595"
697 depends on PCI 707 depends on PCI
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 1d3757837b4f..0ae26984ba45 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -76,6 +76,7 @@ obj-$(CONFIG_SENSORS_MAX6650) += max6650.o
76obj-$(CONFIG_SENSORS_PC87360) += pc87360.o 76obj-$(CONFIG_SENSORS_PC87360) += pc87360.o
77obj-$(CONFIG_SENSORS_PC87427) += pc87427.o 77obj-$(CONFIG_SENSORS_PC87427) += pc87427.o
78obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o 78obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
79obj-$(CONFIG_SENSORS_SHT15) += sht15.o
79obj-$(CONFIG_SENSORS_SIS5595) += sis5595.o 80obj-$(CONFIG_SENSORS_SIS5595) += sis5595.o
80obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o 81obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o
81obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o 82obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o
diff --git a/drivers/hwmon/hp_accel.c b/drivers/hwmon/hp_accel.c
index 55d3dc565be6..abca7e9f953b 100644
--- a/drivers/hwmon/hp_accel.c
+++ b/drivers/hwmon/hp_accel.c
@@ -34,7 +34,6 @@
34#include <linux/wait.h> 34#include <linux/wait.h>
35#include <linux/poll.h> 35#include <linux/poll.h>
36#include <linux/freezer.h> 36#include <linux/freezer.h>
37#include <linux/version.h>
38#include <linux/uaccess.h> 37#include <linux/uaccess.h>
39#include <linux/leds.h> 38#include <linux/leds.h>
40#include <acpi/acpi_drivers.h> 39#include <acpi/acpi_drivers.h>
diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
new file mode 100644
index 000000000000..6cbdc2fea734
--- /dev/null
+++ b/drivers/hwmon/sht15.c
@@ -0,0 +1,692 @@
1/*
2 * sht15.c - support for the SHT15 Temperature and Humidity Sensor
3 *
4 * Copyright (c) 2009 Jonathan Cameron
5 *
6 * Copyright (c) 2007 Wouter Horre
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 * Currently ignoring checksum on readings.
13 * Default resolution only (14bit temp, 12bit humidity)
14 * Ignoring battery status.
15 * Heater not enabled.
16 * Timings are all conservative.
17 *
18 * Data sheet available (1/2009) at
19 * http://www.sensirion.ch/en/pdf/product_information/Datasheet-humidity-sensor-SHT1x.pdf
20 *
21 * Regulator supply name = vcc
22 */
23
24#include <linux/interrupt.h>
25#include <linux/irq.h>
26#include <linux/gpio.h>
27#include <linux/module.h>
28#include <linux/init.h>
29#include <linux/hwmon.h>
30#include <linux/hwmon-sysfs.h>
31#include <linux/mutex.h>
32#include <linux/platform_device.h>
33#include <linux/delay.h>
34#include <linux/jiffies.h>
35#include <linux/err.h>
36#include <linux/sht15.h>
37#include <linux/regulator/consumer.h>
38#include <asm/atomic.h>
39
40#define SHT15_MEASURE_TEMP 3
41#define SHT15_MEASURE_RH 5
42
43#define SHT15_READING_NOTHING 0
44#define SHT15_READING_TEMP 1
45#define SHT15_READING_HUMID 2
46
47/* Min timings in nsecs */
48#define SHT15_TSCKL 100 /* clock low */
49#define SHT15_TSCKH 100 /* clock high */
50#define SHT15_TSU 150 /* data setup time */
51
52/**
53 * struct sht15_temppair - elements of voltage dependant temp calc
54 * @vdd: supply voltage in microvolts
55 * @d1: see data sheet
56 */
57struct sht15_temppair {
58 int vdd; /* microvolts */
59 int d1;
60};
61
62/* Table 9 from data sheet - relates temperature calculation
63 * to supply voltage.
64 */
65static const struct sht15_temppair temppoints[] = {
66 { 2500000, -39400 },
67 { 3000000, -39600 },
68 { 3500000, -39700 },
69 { 4000000, -39800 },
70 { 5000000, -40100 },
71};
72
73/**
74 * struct sht15_data - device instance specific data
75 * @pdata: platform data (gpio's etc)
76 * @read_work: bh of interrupt handler
77 * @wait_queue: wait queue for getting values from device
78 * @val_temp: last temperature value read from device
79 * @val_humid: last humidity value read from device
80 * @flag: status flag used to identify what the last request was
81 * @valid: are the current stored values valid (start condition)
82 * @last_updat: time of last update
83 * @read_lock: mutex to ensure only one read in progress
84 * at a time.
85 * @dev: associate device structure
86 * @hwmon_dev: device associated with hwmon subsystem
87 * @reg: associated regulator (if specified)
88 * @nb: notifier block to handle notifications of voltage changes
89 * @supply_uV: local copy of supply voltage used to allow
90 * use of regulator consumer if available
91 * @supply_uV_valid: indicates that an updated value has not yet
92 * been obtained from the regulator and so any calculations
93 * based upon it will be invalid.
94 * @update_supply_work: work struct that is used to update the supply_uV
95 * @interrupt_handled: flag used to indicate a hander has been scheduled
96 */
97struct sht15_data {
98 struct sht15_platform_data *pdata;
99 struct work_struct read_work;
100 wait_queue_head_t wait_queue;
101 uint16_t val_temp;
102 uint16_t val_humid;
103 u8 flag;
104 u8 valid;
105 unsigned long last_updat;
106 struct mutex read_lock;
107 struct device *dev;
108 struct device *hwmon_dev;
109 struct regulator *reg;
110 struct notifier_block nb;
111 int supply_uV;
112 int supply_uV_valid;
113 struct work_struct update_supply_work;
114 atomic_t interrupt_handled;
115};
116
117/**
118 * sht15_connection_reset() - reset the comms interface
119 * @data: sht15 specific data
120 *
121 * This implements section 3.4 of the data sheet
122 */
123static void sht15_connection_reset(struct sht15_data *data)
124{
125 int i;
126 gpio_direction_output(data->pdata->gpio_data, 1);
127 ndelay(SHT15_TSCKL);
128 gpio_set_value(data->pdata->gpio_sck, 0);
129 ndelay(SHT15_TSCKL);
130 for (i = 0; i < 9; ++i) {
131 gpio_set_value(data->pdata->gpio_sck, 1);
132 ndelay(SHT15_TSCKH);
133 gpio_set_value(data->pdata->gpio_sck, 0);
134 ndelay(SHT15_TSCKL);
135 }
136}
137/**
138 * sht15_send_bit() - send an individual bit to the device
139 * @data: device state data
140 * @val: value of bit to be sent
141 **/
142static inline void sht15_send_bit(struct sht15_data *data, int val)
143{
144
145 gpio_set_value(data->pdata->gpio_data, val);
146 ndelay(SHT15_TSU);
147 gpio_set_value(data->pdata->gpio_sck, 1);
148 ndelay(SHT15_TSCKH);
149 gpio_set_value(data->pdata->gpio_sck, 0);
150 ndelay(SHT15_TSCKL); /* clock low time */
151}
152
153/**
154 * sht15_transmission_start() - specific sequence for new transmission
155 *
156 * @data: device state data
157 * Timings for this are not documented on the data sheet, so very
158 * conservative ones used in implementation. This implements
159 * figure 12 on the data sheet.
160 **/
161static void sht15_transmission_start(struct sht15_data *data)
162{
163 /* ensure data is high and output */
164 gpio_direction_output(data->pdata->gpio_data, 1);
165 ndelay(SHT15_TSU);
166 gpio_set_value(data->pdata->gpio_sck, 0);
167 ndelay(SHT15_TSCKL);
168 gpio_set_value(data->pdata->gpio_sck, 1);
169 ndelay(SHT15_TSCKH);
170 gpio_set_value(data->pdata->gpio_data, 0);
171 ndelay(SHT15_TSU);
172 gpio_set_value(data->pdata->gpio_sck, 0);
173 ndelay(SHT15_TSCKL);
174 gpio_set_value(data->pdata->gpio_sck, 1);
175 ndelay(SHT15_TSCKH);
176 gpio_set_value(data->pdata->gpio_data, 1);
177 ndelay(SHT15_TSU);
178 gpio_set_value(data->pdata->gpio_sck, 0);
179 ndelay(SHT15_TSCKL);
180}
181/**
182 * sht15_send_byte() - send a single byte to the device
183 * @data: device state
184 * @byte: value to be sent
185 **/
186static void sht15_send_byte(struct sht15_data *data, u8 byte)
187{
188 int i;
189 for (i = 0; i < 8; i++) {
190 sht15_send_bit(data, !!(byte & 0x80));
191 byte <<= 1;
192 }
193}
194/**
195 * sht15_wait_for_response() - checks for ack from device
196 * @data: device state
197 **/
198static int sht15_wait_for_response(struct sht15_data *data)
199{
200 gpio_direction_input(data->pdata->gpio_data);
201 gpio_set_value(data->pdata->gpio_sck, 1);
202 ndelay(SHT15_TSCKH);
203 if (gpio_get_value(data->pdata->gpio_data)) {
204 gpio_set_value(data->pdata->gpio_sck, 0);
205 dev_err(data->dev, "Command not acknowledged\n");
206 sht15_connection_reset(data);
207 return -EIO;
208 }
209 gpio_set_value(data->pdata->gpio_sck, 0);
210 ndelay(SHT15_TSCKL);
211 return 0;
212}
213
214/**
215 * sht15_send_cmd() - Sends a command to the device.
216 * @data: device state
217 * @cmd: command byte to be sent
218 *
219 * On entry, sck is output low, data is output pull high
220 * and the interrupt disabled.
221 **/
222static int sht15_send_cmd(struct sht15_data *data, u8 cmd)
223{
224 int ret = 0;
225 sht15_transmission_start(data);
226 sht15_send_byte(data, cmd);
227 ret = sht15_wait_for_response(data);
228 return ret;
229}
230/**
231 * sht15_update_single_val() - get a new value from device
232 * @data: device instance specific data
233 * @command: command sent to request value
234 * @timeout_msecs: timeout after which comms are assumed
235 * to have failed are reset.
236 **/
237static inline int sht15_update_single_val(struct sht15_data *data,
238 int command,
239 int timeout_msecs)
240{
241 int ret;
242 ret = sht15_send_cmd(data, command);
243 if (ret)
244 return ret;
245
246 gpio_direction_input(data->pdata->gpio_data);
247 atomic_set(&data->interrupt_handled, 0);
248
249 enable_irq(gpio_to_irq(data->pdata->gpio_data));
250 if (gpio_get_value(data->pdata->gpio_data) == 0) {
251 disable_irq_nosync(gpio_to_irq(data->pdata->gpio_data));
252 /* Only relevant if the interrupt hasn't occured. */
253 if (!atomic_read(&data->interrupt_handled))
254 schedule_work(&data->read_work);
255 }
256 ret = wait_event_timeout(data->wait_queue,
257 (data->flag == SHT15_READING_NOTHING),
258 msecs_to_jiffies(timeout_msecs));
259 if (ret == 0) {/* timeout occurred */
260 disable_irq_nosync(gpio_to_irq(data->pdata->gpio_data));;
261 sht15_connection_reset(data);
262 return -ETIME;
263 }
264 return 0;
265}
266
267/**
268 * sht15_update_vals() - get updated readings from device if too old
269 * @data: device state
270 **/
271static int sht15_update_vals(struct sht15_data *data)
272{
273 int ret = 0;
274 int timeout = HZ;
275
276 mutex_lock(&data->read_lock);
277 if (time_after(jiffies, data->last_updat + timeout)
278 || !data->valid) {
279 data->flag = SHT15_READING_HUMID;
280 ret = sht15_update_single_val(data, SHT15_MEASURE_RH, 160);
281 if (ret)
282 goto error_ret;
283 data->flag = SHT15_READING_TEMP;
284 ret = sht15_update_single_val(data, SHT15_MEASURE_TEMP, 400);
285 if (ret)
286 goto error_ret;
287 data->valid = 1;
288 data->last_updat = jiffies;
289 }
290error_ret:
291 mutex_unlock(&data->read_lock);
292
293 return ret;
294}
295
296/**
297 * sht15_calc_temp() - convert the raw reading to a temperature
298 * @data: device state
299 *
300 * As per section 4.3 of the data sheet.
301 **/
302static inline int sht15_calc_temp(struct sht15_data *data)
303{
304 int d1 = 0;
305 int i;
306
307 for (i = 1; i < ARRAY_SIZE(temppoints) - 1; i++)
308 /* Find pointer to interpolate */
309 if (data->supply_uV > temppoints[i - 1].vdd) {
310 d1 = (data->supply_uV/1000 - temppoints[i - 1].vdd)
311 * (temppoints[i].d1 - temppoints[i - 1].d1)
312 / (temppoints[i].vdd - temppoints[i - 1].vdd)
313 + temppoints[i - 1].d1;
314 break;
315 }
316
317 return data->val_temp*10 + d1;
318}
319
320/**
321 * sht15_calc_humid() - using last temperature convert raw to humid
322 * @data: device state
323 *
324 * This is the temperature compensated version as per section 4.2 of
325 * the data sheet.
326 **/
327static inline int sht15_calc_humid(struct sht15_data *data)
328{
329 int RHlinear; /* milli percent */
330 int temp = sht15_calc_temp(data);
331
332 const int c1 = -4;
333 const int c2 = 40500; /* x 10 ^ -6 */
334 const int c3 = 2800; /* x10 ^ -9 */
335
336 RHlinear = c1*1000
337 + c2 * data->val_humid/1000
338 + (data->val_humid * data->val_humid * c3)/1000000;
339 return (temp - 25000) * (10000 + 800 * data->val_humid)
340 / 1000000 + RHlinear;
341}
342
343static ssize_t sht15_show_temp(struct device *dev,
344 struct device_attribute *attr,
345 char *buf)
346{
347 int ret;
348 struct sht15_data *data = dev_get_drvdata(dev);
349
350 /* Technically no need to read humidity as well */
351 ret = sht15_update_vals(data);
352
353 return ret ? ret : sprintf(buf, "%d\n",
354 sht15_calc_temp(data));
355}
356
357static ssize_t sht15_show_humidity(struct device *dev,
358 struct device_attribute *attr,
359 char *buf)
360{
361 int ret;
362 struct sht15_data *data = dev_get_drvdata(dev);
363
364 ret = sht15_update_vals(data);
365
366 return ret ? ret : sprintf(buf, "%d\n", sht15_calc_humid(data));
367
368};
369static ssize_t show_name(struct device *dev,
370 struct device_attribute *attr,
371 char *buf)
372{
373 struct platform_device *pdev = to_platform_device(dev);
374 return sprintf(buf, "%s\n", pdev->name);
375}
376
377static SENSOR_DEVICE_ATTR(temp1_input,
378 S_IRUGO, sht15_show_temp,
379 NULL, 0);
380static SENSOR_DEVICE_ATTR(humidity1_input,
381 S_IRUGO, sht15_show_humidity,
382 NULL, 0);
383static DEVICE_ATTR(name, S_IRUGO, show_name, NULL);
384static struct attribute *sht15_attrs[] = {
385 &sensor_dev_attr_temp1_input.dev_attr.attr,
386 &sensor_dev_attr_humidity1_input.dev_attr.attr,
387 &dev_attr_name.attr,
388 NULL,
389};
390
391static const struct attribute_group sht15_attr_group = {
392 .attrs = sht15_attrs,
393};
394
395static irqreturn_t sht15_interrupt_fired(int irq, void *d)
396{
397 struct sht15_data *data = d;
398 /* First disable the interrupt */
399 disable_irq_nosync(irq);
400 atomic_inc(&data->interrupt_handled);
401 /* Then schedule a reading work struct */
402 if (data->flag != SHT15_READING_NOTHING)
403 schedule_work(&data->read_work);
404 return IRQ_HANDLED;
405}
406
407/* Each byte of data is acknowledged by pulling the data line
408 * low for one clock pulse.
409 */
410static void sht15_ack(struct sht15_data *data)
411{
412 gpio_direction_output(data->pdata->gpio_data, 0);
413 ndelay(SHT15_TSU);
414 gpio_set_value(data->pdata->gpio_sck, 1);
415 ndelay(SHT15_TSU);
416 gpio_set_value(data->pdata->gpio_sck, 0);
417 ndelay(SHT15_TSU);
418 gpio_set_value(data->pdata->gpio_data, 1);
419
420 gpio_direction_input(data->pdata->gpio_data);
421}
422/**
423 * sht15_end_transmission() - notify device of end of transmission
424 * @data: device state
425 *
426 * This is basically a NAK. (single clock pulse, data high)
427 **/
428static void sht15_end_transmission(struct sht15_data *data)
429{
430 gpio_direction_output(data->pdata->gpio_data, 1);
431 ndelay(SHT15_TSU);
432 gpio_set_value(data->pdata->gpio_sck, 1);
433 ndelay(SHT15_TSCKH);
434 gpio_set_value(data->pdata->gpio_sck, 0);
435 ndelay(SHT15_TSCKL);
436}
437
438static void sht15_bh_read_data(struct work_struct *work_s)
439{
440 int i;
441 uint16_t val = 0;
442 struct sht15_data *data
443 = container_of(work_s, struct sht15_data,
444 read_work);
445 /* Firstly, verify the line is low */
446 if (gpio_get_value(data->pdata->gpio_data)) {
447 /* If not, then start the interrupt again - care
448 here as could have gone low in meantime so verify
449 it hasn't!
450 */
451 atomic_set(&data->interrupt_handled, 0);
452 enable_irq(gpio_to_irq(data->pdata->gpio_data));
453 /* If still not occured or another handler has been scheduled */
454 if (gpio_get_value(data->pdata->gpio_data)
455 || atomic_read(&data->interrupt_handled))
456 return;
457 }
458 /* Read the data back from the device */
459 for (i = 0; i < 16; ++i) {
460 val <<= 1;
461 gpio_set_value(data->pdata->gpio_sck, 1);
462 ndelay(SHT15_TSCKH);
463 val |= !!gpio_get_value(data->pdata->gpio_data);
464 gpio_set_value(data->pdata->gpio_sck, 0);
465 ndelay(SHT15_TSCKL);
466 if (i == 7)
467 sht15_ack(data);
468 }
469 /* Tell the device we are done */
470 sht15_end_transmission(data);
471
472 switch (data->flag) {
473 case SHT15_READING_TEMP:
474 data->val_temp = val;
475 break;
476 case SHT15_READING_HUMID:
477 data->val_humid = val;
478 break;
479 }
480
481 data->flag = SHT15_READING_NOTHING;
482 wake_up(&data->wait_queue);
483}
484
485static void sht15_update_voltage(struct work_struct *work_s)
486{
487 struct sht15_data *data
488 = container_of(work_s, struct sht15_data,
489 update_supply_work);
490 data->supply_uV = regulator_get_voltage(data->reg);
491}
492
493/**
494 * sht15_invalidate_voltage() - mark supply voltage invalid when notified by reg
495 * @nb: associated notification structure
496 * @event: voltage regulator state change event code
497 * @ignored: function parameter - ignored here
498 *
499 * Note that as the notification code holds the regulator lock, we have
500 * to schedule an update of the supply voltage rather than getting it directly.
501 **/
502static int sht15_invalidate_voltage(struct notifier_block *nb,
503 unsigned long event,
504 void *ignored)
505{
506 struct sht15_data *data = container_of(nb, struct sht15_data, nb);
507
508 if (event == REGULATOR_EVENT_VOLTAGE_CHANGE)
509 data->supply_uV_valid = false;
510 schedule_work(&data->update_supply_work);
511
512 return NOTIFY_OK;
513}
514
515static int __devinit sht15_probe(struct platform_device *pdev)
516{
517 int ret = 0;
518 struct sht15_data *data = kzalloc(sizeof(*data), GFP_KERNEL);
519
520 if (!data) {
521 ret = -ENOMEM;
522 dev_err(&pdev->dev, "kzalloc failed");
523 goto error_ret;
524 }
525
526 INIT_WORK(&data->read_work, sht15_bh_read_data);
527 INIT_WORK(&data->update_supply_work, sht15_update_voltage);
528 platform_set_drvdata(pdev, data);
529 mutex_init(&data->read_lock);
530 data->dev = &pdev->dev;
531 init_waitqueue_head(&data->wait_queue);
532
533 if (pdev->dev.platform_data == NULL) {
534 dev_err(&pdev->dev, "no platform data supplied");
535 goto err_free_data;
536 }
537 data->pdata = pdev->dev.platform_data;
538 data->supply_uV = data->pdata->supply_mv*1000;
539
540/* If a regulator is available, query what the supply voltage actually is!*/
541 data->reg = regulator_get(data->dev, "vcc");
542 if (!IS_ERR(data->reg)) {
543 data->supply_uV = regulator_get_voltage(data->reg);
544 regulator_enable(data->reg);
545 /* setup a notifier block to update this if another device
546 * causes the voltage to change */
547 data->nb.notifier_call = &sht15_invalidate_voltage;
548 ret = regulator_register_notifier(data->reg, &data->nb);
549 }
550/* Try requesting the GPIOs */
551 ret = gpio_request(data->pdata->gpio_sck, "SHT15 sck");
552 if (ret) {
553 dev_err(&pdev->dev, "gpio request failed");
554 goto err_free_data;
555 }
556 gpio_direction_output(data->pdata->gpio_sck, 0);
557 ret = gpio_request(data->pdata->gpio_data, "SHT15 data");
558 if (ret) {
559 dev_err(&pdev->dev, "gpio request failed");
560 goto err_release_gpio_sck;
561 }
562 ret = sysfs_create_group(&pdev->dev.kobj, &sht15_attr_group);
563 if (ret) {
564 dev_err(&pdev->dev, "sysfs create failed");
565 goto err_free_data;
566 }
567
568 ret = request_irq(gpio_to_irq(data->pdata->gpio_data),
569 sht15_interrupt_fired,
570 IRQF_TRIGGER_FALLING,
571 "sht15 data",
572 data);
573 if (ret) {
574 dev_err(&pdev->dev, "failed to get irq for data line");
575 goto err_release_gpio_data;
576 }
577 disable_irq_nosync(gpio_to_irq(data->pdata->gpio_data));
578 sht15_connection_reset(data);
579 sht15_send_cmd(data, 0x1E);
580
581 data->hwmon_dev = hwmon_device_register(data->dev);
582 if (IS_ERR(data->hwmon_dev)) {
583 ret = PTR_ERR(data->hwmon_dev);
584 goto err_release_gpio_data;
585 }
586 return 0;
587
588err_release_gpio_data:
589 gpio_free(data->pdata->gpio_data);
590err_release_gpio_sck:
591 gpio_free(data->pdata->gpio_sck);
592err_free_data:
593 kfree(data);
594error_ret:
595
596 return ret;
597}
598
599static int __devexit sht15_remove(struct platform_device *pdev)
600{
601 struct sht15_data *data = platform_get_drvdata(pdev);
602
603 /* Make sure any reads from the device are done and
604 * prevent new ones beginnning */
605 mutex_lock(&data->read_lock);
606 hwmon_device_unregister(data->hwmon_dev);
607 sysfs_remove_group(&pdev->dev.kobj, &sht15_attr_group);
608 if (!IS_ERR(data->reg)) {
609 regulator_unregister_notifier(data->reg, &data->nb);
610 regulator_disable(data->reg);
611 regulator_put(data->reg);
612 }
613
614 free_irq(gpio_to_irq(data->pdata->gpio_data), data);
615 gpio_free(data->pdata->gpio_data);
616 gpio_free(data->pdata->gpio_sck);
617 mutex_unlock(&data->read_lock);
618 kfree(data);
619 return 0;
620}
621
622
623static struct platform_driver sht_drivers[] = {
624 {
625 .driver = {
626 .name = "sht10",
627 .owner = THIS_MODULE,
628 },
629 .probe = sht15_probe,
630 .remove = sht15_remove,
631 }, {
632 .driver = {
633 .name = "sht11",
634 .owner = THIS_MODULE,
635 },
636 .probe = sht15_probe,
637 .remove = sht15_remove,
638 }, {
639 .driver = {
640 .name = "sht15",
641 .owner = THIS_MODULE,
642 },
643 .probe = sht15_probe,
644 .remove = sht15_remove,
645 }, {
646 .driver = {
647 .name = "sht71",
648 .owner = THIS_MODULE,
649 },
650 .probe = sht15_probe,
651 .remove = sht15_remove,
652 }, {
653 .driver = {
654 .name = "sht75",
655 .owner = THIS_MODULE,
656 },
657 .probe = sht15_probe,
658 .remove = sht15_remove,
659 },
660};
661
662
663static int __init sht15_init(void)
664{
665 int ret;
666 int i;
667
668 for (i = 0; i < ARRAY_SIZE(sht_drivers); i++) {
669 ret = platform_driver_register(&sht_drivers[i]);
670 if (ret)
671 goto error_unreg;
672 }
673
674 return 0;
675
676error_unreg:
677 while (--i >= 0)
678 platform_driver_unregister(&sht_drivers[i]);
679
680 return ret;
681}
682module_init(sht15_init);
683
684static void __exit sht15_exit(void)
685{
686 int i;
687 for (i = ARRAY_SIZE(sht_drivers) - 1; i >= 0; i--)
688 platform_driver_unregister(&sht_drivers[i]);
689}
690module_exit(sht15_exit);
691
692MODULE_LICENSE("GPL");
diff --git a/drivers/i2c/algos/i2c-algo-pca.c b/drivers/i2c/algos/i2c-algo-pca.c
index f68e5f8e23ee..6318f7ddc1d4 100644
--- a/drivers/i2c/algos/i2c-algo-pca.c
+++ b/drivers/i2c/algos/i2c-algo-pca.c
@@ -190,7 +190,7 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
190 int completed = 1; 190 int completed = 1;
191 unsigned long timeout = jiffies + i2c_adap->timeout; 191 unsigned long timeout = jiffies + i2c_adap->timeout;
192 192
193 while (pca_status(adap) != 0xf8) { 193 while ((state = pca_status(adap)) != 0xf8) {
194 if (time_before(jiffies, timeout)) { 194 if (time_before(jiffies, timeout)) {
195 msleep(10); 195 msleep(10);
196 } else { 196 } else {
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 94eae5c3cbc7..a48c8aee0218 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -604,12 +604,14 @@ comment "Graphics adapter I2C/DDC channel drivers"
604 depends on PCI 604 depends on PCI
605 605
606config I2C_VOODOO3 606config I2C_VOODOO3
607 tristate "Voodoo 3" 607 tristate "Voodoo 3 (DEPRECATED)"
608 depends on PCI 608 depends on PCI
609 select I2C_ALGOBIT 609 select I2C_ALGOBIT
610 help 610 help
611 If you say yes to this option, support will be included for the 611 If you say yes to this option, support will be included for the
612 Voodoo 3 I2C interface. 612 Voodoo 3 I2C interface. This driver is deprecated and you should
613 use the tdfxfb driver instead, which additionally provides
614 framebuffer support.
613 615
614 This driver can also be built as a module. If so, the module 616 This driver can also be built as a module. If so, the module
615 will be called i2c-voodoo3. 617 will be called i2c-voodoo3.
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index b6f3a0de6ca2..85e2e919d1cd 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -716,8 +716,7 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
716 716
717 /* new style driver methods can't mix with legacy ones */ 717 /* new style driver methods can't mix with legacy ones */
718 if (is_newstyle_driver(driver)) { 718 if (is_newstyle_driver(driver)) {
719 if (driver->attach_adapter || driver->detach_adapter 719 if (driver->detach_adapter || driver->detach_client) {
720 || driver->detach_client) {
721 printk(KERN_WARNING 720 printk(KERN_WARNING
722 "i2c-core: driver [%s] is confused\n", 721 "i2c-core: driver [%s] is confused\n",
723 driver->driver.name); 722 driver->driver.name);
diff --git a/drivers/ide/at91_ide.c b/drivers/ide/at91_ide.c
index 8eda552326e9..403d0e4265db 100644
--- a/drivers/ide/at91_ide.c
+++ b/drivers/ide/at91_ide.c
@@ -20,7 +20,6 @@
20 * 20 *
21 */ 21 */
22 22
23#include <linux/version.h>
24#include <linux/kernel.h> 23#include <linux/kernel.h>
25#include <linux/module.h> 24#include <linux/module.h>
26#include <linux/clk.h> 25#include <linux/clk.h>
@@ -175,90 +174,6 @@ static void at91_ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
175 leave_16bit(chipselect, mode); 174 leave_16bit(chipselect, mode);
176} 175}
177 176
178static u8 ide_mm_inb(unsigned long port)
179{
180 return readb((void __iomem *) port);
181}
182
183static void ide_mm_outb(u8 value, unsigned long port)
184{
185 writeb(value, (void __iomem *) port);
186}
187
188static void at91_ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
189{
190 ide_hwif_t *hwif = drive->hwif;
191 struct ide_io_ports *io_ports = &hwif->io_ports;
192 struct ide_taskfile *tf = &cmd->tf;
193 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
194
195 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
196 HIHI = 0xFF;
197
198 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
199 ide_mm_outb(tf->hob_feature, io_ports->feature_addr);
200 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
201 ide_mm_outb(tf->hob_nsect, io_ports->nsect_addr);
202 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
203 ide_mm_outb(tf->hob_lbal, io_ports->lbal_addr);
204 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
205 ide_mm_outb(tf->hob_lbam, io_ports->lbam_addr);
206 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
207 ide_mm_outb(tf->hob_lbah, io_ports->lbah_addr);
208
209 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
210 ide_mm_outb(tf->feature, io_ports->feature_addr);
211 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
212 ide_mm_outb(tf->nsect, io_ports->nsect_addr);
213 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
214 ide_mm_outb(tf->lbal, io_ports->lbal_addr);
215 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
216 ide_mm_outb(tf->lbam, io_ports->lbam_addr);
217 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
218 ide_mm_outb(tf->lbah, io_ports->lbah_addr);
219
220 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
221 ide_mm_outb((tf->device & HIHI) | drive->select, io_ports->device_addr);
222}
223
224static void at91_ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
225{
226 ide_hwif_t *hwif = drive->hwif;
227 struct ide_io_ports *io_ports = &hwif->io_ports;
228 struct ide_taskfile *tf = &cmd->tf;
229
230 /* be sure we're looking at the low order bits */
231 ide_mm_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
232
233 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
234 tf->error = ide_mm_inb(io_ports->feature_addr);
235 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
236 tf->nsect = ide_mm_inb(io_ports->nsect_addr);
237 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
238 tf->lbal = ide_mm_inb(io_ports->lbal_addr);
239 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
240 tf->lbam = ide_mm_inb(io_ports->lbam_addr);
241 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
242 tf->lbah = ide_mm_inb(io_ports->lbah_addr);
243 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
244 tf->device = ide_mm_inb(io_ports->device_addr);
245
246 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
247 ide_mm_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
248
249 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
250 tf->hob_error = ide_mm_inb(io_ports->feature_addr);
251 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
252 tf->hob_nsect = ide_mm_inb(io_ports->nsect_addr);
253 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
254 tf->hob_lbal = ide_mm_inb(io_ports->lbal_addr);
255 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
256 tf->hob_lbam = ide_mm_inb(io_ports->lbam_addr);
257 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
258 tf->hob_lbah = ide_mm_inb(io_ports->lbah_addr);
259 }
260}
261
262static void at91_ide_set_pio_mode(ide_drive_t *drive, const u8 pio) 177static void at91_ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
263{ 178{
264 struct ide_timing *timing; 179 struct ide_timing *timing;
@@ -284,8 +199,8 @@ static const struct ide_tp_ops at91_ide_tp_ops = {
284 .write_devctl = ide_write_devctl, 199 .write_devctl = ide_write_devctl,
285 200
286 .dev_select = ide_dev_select, 201 .dev_select = ide_dev_select,
287 .tf_load = at91_ide_tf_load, 202 .tf_load = ide_tf_load,
288 .tf_read = at91_ide_tf_read, 203 .tf_read = ide_tf_read,
289 204
290 .input_data = at91_ide_input_data, 205 .input_data = at91_ide_input_data,
291 .output_data = at91_ide_output_data, 206 .output_data = at91_ide_output_data,
@@ -300,7 +215,7 @@ static const struct ide_port_info at91_ide_port_info __initdata = {
300 .tp_ops = &at91_ide_tp_ops, 215 .tp_ops = &at91_ide_tp_ops,
301 .host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA | IDE_HFLAG_SINGLE | 216 .host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA | IDE_HFLAG_SINGLE |
302 IDE_HFLAG_NO_IO_32BIT | IDE_HFLAG_UNMASK_IRQS, 217 IDE_HFLAG_NO_IO_32BIT | IDE_HFLAG_UNMASK_IRQS,
303 .pio_mask = ATA_PIO5, 218 .pio_mask = ATA_PIO6,
304}; 219};
305 220
306/* 221/*
diff --git a/drivers/ide/cs5536.c b/drivers/ide/cs5536.c
index 353a35bbba63..0332a95eefd4 100644
--- a/drivers/ide/cs5536.c
+++ b/drivers/ide/cs5536.c
@@ -236,6 +236,7 @@ static const struct ide_dma_ops cs5536_dma_ops = {
236 .dma_test_irq = ide_dma_test_irq, 236 .dma_test_irq = ide_dma_test_irq,
237 .dma_lost_irq = ide_dma_lost_irq, 237 .dma_lost_irq = ide_dma_lost_irq,
238 .dma_timer_expiry = ide_dma_sff_timer_expiry, 238 .dma_timer_expiry = ide_dma_sff_timer_expiry,
239 .dma_sff_read_status = ide_dma_sff_read_status,
239}; 240};
240 241
241static const struct ide_port_info cs5536_info = { 242static const struct ide_port_info cs5536_info = {
diff --git a/drivers/ide/falconide.c b/drivers/ide/falconide.c
index afa2af9a362b..0e2df6755ec9 100644
--- a/drivers/ide/falconide.c
+++ b/drivers/ide/falconide.c
@@ -20,6 +20,7 @@
20#include <asm/atarihw.h> 20#include <asm/atarihw.h>
21#include <asm/atariints.h> 21#include <asm/atariints.h>
22#include <asm/atari_stdma.h> 22#include <asm/atari_stdma.h>
23#include <asm/ide.h>
23 24
24#define DRV_NAME "falconide" 25#define DRV_NAME "falconide"
25 26
@@ -67,8 +68,10 @@ static void falconide_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
67{ 68{
68 unsigned long data_addr = drive->hwif->io_ports.data_addr; 69 unsigned long data_addr = drive->hwif->io_ports.data_addr;
69 70
70 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 71 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
71 return insw(data_addr, buf, (len + 1) / 2); 72 __ide_mm_insw(data_addr, buf, (len + 1) / 2);
73 return;
74 }
72 75
73 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 76 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
74} 77}
@@ -78,8 +81,10 @@ static void falconide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
78{ 81{
79 unsigned long data_addr = drive->hwif->io_ports.data_addr; 82 unsigned long data_addr = drive->hwif->io_ports.data_addr;
80 83
81 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 84 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
82 return outsw(data_addr, buf, (len + 1) / 2); 85 __ide_mm_outsw(data_addr, buf, (len + 1) / 2);
86 return;
87 }
83 88
84 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 89 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
85} 90}
diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c
index a0eb87f59134..0feb66c720e1 100644
--- a/drivers/ide/hpt366.c
+++ b/drivers/ide/hpt366.c
@@ -3,7 +3,7 @@
3 * Portions Copyright (C) 2001 Sun Microsystems, Inc. 3 * Portions Copyright (C) 2001 Sun Microsystems, Inc.
4 * Portions Copyright (C) 2003 Red Hat Inc 4 * Portions Copyright (C) 2003 Red Hat Inc
5 * Portions Copyright (C) 2007 Bartlomiej Zolnierkiewicz 5 * Portions Copyright (C) 2007 Bartlomiej Zolnierkiewicz
6 * Portions Copyright (C) 2005-2008 MontaVista Software, Inc. 6 * Portions Copyright (C) 2005-2009 MontaVista Software, Inc.
7 * 7 *
8 * Thanks to HighPoint Technologies for their assistance, and hardware. 8 * Thanks to HighPoint Technologies for their assistance, and hardware.
9 * Special Thanks to Jon Burchmore in SanDiego for the deep pockets, his 9 * Special Thanks to Jon Burchmore in SanDiego for the deep pockets, his
@@ -114,6 +114,8 @@
114 * the register setting lists into the table indexed by the clock selected 114 * the register setting lists into the table indexed by the clock selected
115 * - set the correct hwif->ultra_mask for each individual chip 115 * - set the correct hwif->ultra_mask for each individual chip
116 * - add Ultra and MW DMA mode filtering for the HPT37[24] based SATA cards 116 * - add Ultra and MW DMA mode filtering for the HPT37[24] based SATA cards
117 * - stop resetting HPT370's state machine before each DMA transfer as that has
118 * caused more harm than good
117 * Sergei Shtylyov, <sshtylyov@ru.mvista.com> or <source@mvista.com> 119 * Sergei Shtylyov, <sshtylyov@ru.mvista.com> or <source@mvista.com>
118 */ 120 */
119 121
@@ -133,7 +135,7 @@
133#define DRV_NAME "hpt366" 135#define DRV_NAME "hpt366"
134 136
135/* various tuning parameters */ 137/* various tuning parameters */
136#define HPT_RESET_STATE_ENGINE 138#undef HPT_RESET_STATE_ENGINE
137#undef HPT_DELAY_INTERRUPT 139#undef HPT_DELAY_INTERRUPT
138 140
139static const char *quirk_drives[] = { 141static const char *quirk_drives[] = {
@@ -808,7 +810,7 @@ static void hpt370_irq_timeout(ide_drive_t *drive)
808 /* get DMA command mode */ 810 /* get DMA command mode */
809 dma_cmd = inb(hwif->dma_base + ATA_DMA_CMD); 811 dma_cmd = inb(hwif->dma_base + ATA_DMA_CMD);
810 /* stop DMA */ 812 /* stop DMA */
811 outb(dma_cmd & ~0x1, hwif->dma_base + ATA_DMA_CMD); 813 outb(dma_cmd & ~ATA_DMA_START, hwif->dma_base + ATA_DMA_CMD);
812 hpt370_clear_engine(drive); 814 hpt370_clear_engine(drive);
813} 815}
814 816
@@ -825,11 +827,11 @@ static int hpt370_dma_end(ide_drive_t *drive)
825 ide_hwif_t *hwif = drive->hwif; 827 ide_hwif_t *hwif = drive->hwif;
826 u8 dma_stat = inb(hwif->dma_base + ATA_DMA_STATUS); 828 u8 dma_stat = inb(hwif->dma_base + ATA_DMA_STATUS);
827 829
828 if (dma_stat & 0x01) { 830 if (dma_stat & ATA_DMA_ACTIVE) {
829 /* wait a little */ 831 /* wait a little */
830 udelay(20); 832 udelay(20);
831 dma_stat = inb(hwif->dma_base + ATA_DMA_STATUS); 833 dma_stat = inb(hwif->dma_base + ATA_DMA_STATUS);
832 if (dma_stat & 0x01) 834 if (dma_stat & ATA_DMA_ACTIVE)
833 hpt370_irq_timeout(drive); 835 hpt370_irq_timeout(drive);
834 } 836 }
835 return ide_dma_end(drive); 837 return ide_dma_end(drive);
@@ -851,7 +853,7 @@ static int hpt374_dma_test_irq(ide_drive_t *drive)
851 853
852 dma_stat = inb(hwif->dma_base + ATA_DMA_STATUS); 854 dma_stat = inb(hwif->dma_base + ATA_DMA_STATUS);
853 /* return 1 if INTR asserted */ 855 /* return 1 if INTR asserted */
854 if (dma_stat & 4) 856 if (dma_stat & ATA_DMA_INTR)
855 return 1; 857 return 1;
856 858
857 return 0; 859 return 0;
diff --git a/drivers/ide/ide-acpi.c b/drivers/ide/ide-acpi.c
index 12f436951bff..77f79d26b264 100644
--- a/drivers/ide/ide-acpi.c
+++ b/drivers/ide/ide-acpi.c
@@ -318,8 +318,9 @@ static int do_drive_set_taskfiles(ide_drive_t *drive,
318 318
319 /* convert GTF to taskfile */ 319 /* convert GTF to taskfile */
320 memset(&cmd, 0, sizeof(cmd)); 320 memset(&cmd, 0, sizeof(cmd));
321 memcpy(&cmd.tf_array[7], gtf, REGS_PER_GTF); 321 memcpy(&cmd.tf.feature, gtf, REGS_PER_GTF);
322 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 322 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
323 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
323 324
324 err = ide_no_data_taskfile(drive, &cmd); 325 err = ide_no_data_taskfile(drive, &cmd);
325 if (err) { 326 if (err) {
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index 3e43b889dd64..7201b176d75b 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -254,16 +254,13 @@ EXPORT_SYMBOL_GPL(ide_cd_get_xferlen);
254 254
255void ide_read_bcount_and_ireason(ide_drive_t *drive, u16 *bcount, u8 *ireason) 255void ide_read_bcount_and_ireason(ide_drive_t *drive, u16 *bcount, u8 *ireason)
256{ 256{
257 struct ide_cmd cmd; 257 struct ide_taskfile tf;
258 258
259 memset(&cmd, 0, sizeof(cmd)); 259 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT |
260 cmd.tf_flags = IDE_TFLAG_IN_LBAH | IDE_TFLAG_IN_LBAM | 260 IDE_VALID_LBAM | IDE_VALID_LBAH);
261 IDE_TFLAG_IN_NSECT;
262 261
263 drive->hwif->tp_ops->tf_read(drive, &cmd); 262 *bcount = (tf.lbah << 8) | tf.lbam;
264 263 *ireason = tf.nsect & 3;
265 *bcount = (cmd.tf.lbah << 8) | cmd.tf.lbam;
266 *ireason = cmd.tf.nsect & 3;
267} 264}
268EXPORT_SYMBOL_GPL(ide_read_bcount_and_ireason); 265EXPORT_SYMBOL_GPL(ide_read_bcount_and_ireason);
269 266
@@ -439,12 +436,12 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
439 return ide_started; 436 return ide_started;
440} 437}
441 438
442static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags, 439static void ide_init_packet_cmd(struct ide_cmd *cmd, u8 valid_tf,
443 u16 bcount, u8 dma) 440 u16 bcount, u8 dma)
444{ 441{
445 cmd->protocol = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO; 442 cmd->protocol = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO;
446 cmd->tf_flags |= IDE_TFLAG_OUT_LBAH | IDE_TFLAG_OUT_LBAM | 443 cmd->valid.out.tf = IDE_VALID_LBAH | IDE_VALID_LBAM |
447 IDE_TFLAG_OUT_FEATURE | tf_flags; 444 IDE_VALID_FEATURE | valid_tf;
448 cmd->tf.command = ATA_CMD_PACKET; 445 cmd->tf.command = ATA_CMD_PACKET;
449 cmd->tf.feature = dma; /* Use PIO/DMA */ 446 cmd->tf.feature = dma; /* Use PIO/DMA */
450 cmd->tf.lbam = bcount & 0xff; 447 cmd->tf.lbam = bcount & 0xff;
@@ -453,14 +450,11 @@ static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags,
453 450
454static u8 ide_read_ireason(ide_drive_t *drive) 451static u8 ide_read_ireason(ide_drive_t *drive)
455{ 452{
456 struct ide_cmd cmd; 453 struct ide_taskfile tf;
457
458 memset(&cmd, 0, sizeof(cmd));
459 cmd.tf_flags = IDE_TFLAG_IN_NSECT;
460 454
461 drive->hwif->tp_ops->tf_read(drive, &cmd); 455 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT);
462 456
463 return cmd.tf.nsect & 3; 457 return tf.nsect & 3;
464} 458}
465 459
466static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason) 460static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason)
@@ -588,12 +582,12 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
588 ide_expiry_t *expiry = NULL; 582 ide_expiry_t *expiry = NULL;
589 struct request *rq = hwif->rq; 583 struct request *rq = hwif->rq;
590 unsigned int timeout; 584 unsigned int timeout;
591 u32 tf_flags;
592 u16 bcount; 585 u16 bcount;
586 u8 valid_tf;
593 u8 drq_int = !!(drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT); 587 u8 drq_int = !!(drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT);
594 588
595 if (dev_is_idecd(drive)) { 589 if (dev_is_idecd(drive)) {
596 tf_flags = IDE_TFLAG_OUT_NSECT | IDE_TFLAG_OUT_LBAL; 590 valid_tf = IDE_VALID_NSECT | IDE_VALID_LBAL;
597 bcount = ide_cd_get_xferlen(rq); 591 bcount = ide_cd_get_xferlen(rq);
598 expiry = ide_cd_expiry; 592 expiry = ide_cd_expiry;
599 timeout = ATAPI_WAIT_PC; 593 timeout = ATAPI_WAIT_PC;
@@ -607,7 +601,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
607 pc->xferred = 0; 601 pc->xferred = 0;
608 pc->cur_pos = pc->buf; 602 pc->cur_pos = pc->buf;
609 603
610 tf_flags = IDE_TFLAG_OUT_DEVICE; 604 valid_tf = IDE_VALID_DEVICE;
611 bcount = ((drive->media == ide_tape) ? 605 bcount = ((drive->media == ide_tape) ?
612 pc->req_xfer : 606 pc->req_xfer :
613 min(pc->req_xfer, 63 * 1024)); 607 min(pc->req_xfer, 63 * 1024));
@@ -627,7 +621,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
627 : WAIT_TAPE_CMD; 621 : WAIT_TAPE_CMD;
628 } 622 }
629 623
630 ide_init_packet_cmd(cmd, tf_flags, bcount, drive->dma); 624 ide_init_packet_cmd(cmd, valid_tf, bcount, drive->dma);
631 625
632 (void)do_rw_taskfile(drive, cmd); 626 (void)do_rw_taskfile(drive, cmd);
633 627
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 35729a47f797..3d4e09969763 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -265,35 +265,62 @@ static void ide_cd_complete_failed_rq(ide_drive_t *drive, struct request *rq)
265 cdrom_analyze_sense_data(drive, NULL, sense); 265 cdrom_analyze_sense_data(drive, NULL, sense);
266} 266}
267 267
268
268/* 269/*
270 * Allow the drive 5 seconds to recover; some devices will return NOT_READY
271 * while flushing data from cache.
272 *
273 * returns: 0 failed (write timeout expired)
274 * 1 success
275 */
276static int ide_cd_breathe(ide_drive_t *drive, struct request *rq)
277{
278
279 struct cdrom_info *info = drive->driver_data;
280
281 if (!rq->errors)
282 info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
283
284 rq->errors = 1;
285
286 if (time_after(jiffies, info->write_timeout))
287 return 0;
288 else {
289 struct request_queue *q = drive->queue;
290 unsigned long flags;
291
292 /*
293 * take a breather relying on the unplug timer to kick us again
294 */
295
296 spin_lock_irqsave(q->queue_lock, flags);
297 blk_plug_device(q);
298 spin_unlock_irqrestore(q->queue_lock, flags);
299
300 return 1;
301 }
302}
303
304/**
269 * Returns: 305 * Returns:
270 * 0: if the request should be continued. 306 * 0: if the request should be continued.
271 * 1: if the request will be going through error recovery. 307 * 1: if the request will be going through error recovery.
272 * 2: if the request should be ended. 308 * 2: if the request should be ended.
273 */ 309 */
274static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret) 310static int cdrom_decode_status(ide_drive_t *drive, u8 stat)
275{ 311{
276 ide_hwif_t *hwif = drive->hwif; 312 ide_hwif_t *hwif = drive->hwif;
277 struct request *rq = hwif->rq; 313 struct request *rq = hwif->rq;
278 int stat, err, sense_key; 314 int err, sense_key, do_end_request = 0;
279 315 u8 quiet = rq->cmd_flags & REQ_QUIET;
280 /* check for errors */
281 stat = hwif->tp_ops->read_status(hwif);
282
283 if (stat_ret)
284 *stat_ret = stat;
285
286 if (OK_STAT(stat, good_stat, BAD_R_STAT))
287 return 0;
288 316
289 /* get the IDE error register */ 317 /* get the IDE error register */
290 err = ide_read_error(drive); 318 err = ide_read_error(drive);
291 sense_key = err >> 4; 319 sense_key = err >> 4;
292 320
293 ide_debug_log(IDE_DBG_RQ, "stat: 0x%x, good_stat: 0x%x, cmd[0]: 0x%x, " 321 ide_debug_log(IDE_DBG_RQ, "cmd: 0x%x, rq->cmd_type: 0x%x, err: 0x%x, "
294 "rq->cmd_type: 0x%x, err: 0x%x", 322 "stat 0x%x",
295 stat, good_stat, rq->cmd[0], rq->cmd_type, 323 rq->cmd[0], rq->cmd_type, err, stat);
296 err);
297 324
298 if (blk_sense_request(rq)) { 325 if (blk_sense_request(rq)) {
299 /* 326 /*
@@ -303,151 +330,108 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
303 */ 330 */
304 rq->cmd_flags |= REQ_FAILED; 331 rq->cmd_flags |= REQ_FAILED;
305 return 2; 332 return 2;
306 } else if (blk_pc_request(rq) || rq->cmd_type == REQ_TYPE_ATA_PC) { 333 }
307 /* All other functions, except for READ. */
308 334
309 /* 335 /* if we have an error, pass CHECK_CONDITION as the SCSI status byte */
310 * if we have an error, pass back CHECK_CONDITION as the 336 if (blk_pc_request(rq) && !rq->errors)
311 * scsi status byte 337 rq->errors = SAM_STAT_CHECK_CONDITION;
312 */
313 if (blk_pc_request(rq) && !rq->errors)
314 rq->errors = SAM_STAT_CHECK_CONDITION;
315 338
316 /* check for tray open */ 339 if (blk_noretry_request(rq))
317 if (sense_key == NOT_READY) { 340 do_end_request = 1;
318 cdrom_saw_media_change(drive); 341
319 } else if (sense_key == UNIT_ATTENTION) { 342 switch (sense_key) {
320 /* check for media change */ 343 case NOT_READY:
344 if (blk_fs_request(rq) && rq_data_dir(rq) == WRITE) {
345 if (ide_cd_breathe(drive, rq))
346 return 1;
347 } else {
321 cdrom_saw_media_change(drive); 348 cdrom_saw_media_change(drive);
322 return 0; 349
323 } else if (sense_key == ILLEGAL_REQUEST && 350 if (blk_fs_request(rq) && !quiet)
324 rq->cmd[0] == GPCMD_START_STOP_UNIT) { 351 printk(KERN_ERR PFX "%s: tray open\n",
325 /* 352 drive->name);
326 * Don't print error message for this condition--
327 * SFF8090i indicates that 5/24/00 is the correct
328 * response to a request to close the tray if the
329 * drive doesn't have that capability.
330 * cdrom_log_sense() knows this!
331 */
332 } else if (!(rq->cmd_flags & REQ_QUIET)) {
333 /* otherwise, print an error */
334 ide_dump_status(drive, "packet command error", stat);
335 } 353 }
354 do_end_request = 1;
355 break;
356 case UNIT_ATTENTION:
357 cdrom_saw_media_change(drive);
336 358
337 rq->cmd_flags |= REQ_FAILED; 359 if (blk_fs_request(rq) == 0)
360 return 0;
338 361
339 /* 362 /*
340 * instead of playing games with moving completions around, 363 * Arrange to retry the request but be sure to give up if we've
341 * remove failed request completely and end it when the 364 * retried too many times.
342 * request sense has completed
343 */ 365 */
344 goto end_request; 366 if (++rq->errors > ERROR_MAX)
345
346 } else if (blk_fs_request(rq)) {
347 int do_end_request = 0;
348
349 /* handle errors from READ and WRITE requests */
350
351 if (blk_noretry_request(rq))
352 do_end_request = 1; 367 do_end_request = 1;
353 368 break;
354 if (sense_key == NOT_READY) { 369 case ILLEGAL_REQUEST:
355 /* tray open */ 370 /*
356 if (rq_data_dir(rq) == READ) { 371 * Don't print error message for this condition -- SFF8090i
357 cdrom_saw_media_change(drive); 372 * indicates that 5/24/00 is the correct response to a request
358 373 * to close the tray if the drive doesn't have that capability.
359 /* fail the request */ 374 *
360 printk(KERN_ERR PFX "%s: tray open\n", 375 * cdrom_log_sense() knows this!
361 drive->name); 376 */
362 do_end_request = 1; 377 if (rq->cmd[0] == GPCMD_START_STOP_UNIT)
363 } else { 378 break;
364 struct cdrom_info *info = drive->driver_data; 379 /* fall-through */
365 380 case DATA_PROTECT:
366 /* 381 /*
367 * Allow the drive 5 seconds to recover, some 382 * No point in retrying after an illegal request or data
368 * devices will return this error while flushing 383 * protect error.
369 * data from cache. 384 */
370 */ 385 if (!quiet)
371 if (!rq->errors)
372 info->write_timeout = jiffies +
373 ATAPI_WAIT_WRITE_BUSY;
374 rq->errors = 1;
375 if (time_after(jiffies, info->write_timeout))
376 do_end_request = 1;
377 else {
378 struct request_queue *q = drive->queue;
379 unsigned long flags;
380
381 /*
382 * take a breather relying on the unplug
383 * timer to kick us again
384 */
385 spin_lock_irqsave(q->queue_lock, flags);
386 blk_plug_device(q);
387 spin_unlock_irqrestore(q->queue_lock, flags);
388
389 return 1;
390 }
391 }
392 } else if (sense_key == UNIT_ATTENTION) {
393 /* media change */
394 cdrom_saw_media_change(drive);
395
396 /*
397 * Arrange to retry the request but be sure to give up
398 * if we've retried too many times.
399 */
400 if (++rq->errors > ERROR_MAX)
401 do_end_request = 1;
402 } else if (sense_key == ILLEGAL_REQUEST ||
403 sense_key == DATA_PROTECT) {
404 /*
405 * No point in retrying after an illegal request or data
406 * protect error.
407 */
408 ide_dump_status(drive, "command error", stat); 386 ide_dump_status(drive, "command error", stat);
409 do_end_request = 1; 387 do_end_request = 1;
410 } else if (sense_key == MEDIUM_ERROR) { 388 break;
411 /* 389 case MEDIUM_ERROR:
412 * No point in re-trying a zillion times on a bad 390 /*
413 * sector. If we got here the error is not correctable. 391 * No point in re-trying a zillion times on a bad sector.
414 */ 392 * If we got here the error is not correctable.
415 ide_dump_status(drive, "media error (bad sector)", 393 */
394 if (!quiet)
395 ide_dump_status(drive, "media error "
396 "(bad sector)", stat);
397 do_end_request = 1;
398 break;
399 case BLANK_CHECK:
400 /* disk appears blank? */
401 if (!quiet)
402 ide_dump_status(drive, "media error (blank)",
416 stat); 403 stat);
417 do_end_request = 1; 404 do_end_request = 1;
418 } else if (sense_key == BLANK_CHECK) { 405 break;
419 /* disk appears blank ?? */ 406 default:
420 ide_dump_status(drive, "media error (blank)", stat); 407 if (blk_fs_request(rq) == 0)
421 do_end_request = 1; 408 break;
422 } else if ((err & ~ATA_ABORTED) != 0) { 409 if (err & ~ATA_ABORTED) {
423 /* go to the default handler for other errors */ 410 /* go to the default handler for other errors */
424 ide_error(drive, "cdrom_decode_status", stat); 411 ide_error(drive, "cdrom_decode_status", stat);
425 return 1; 412 return 1;
426 } else if ((++rq->errors > ERROR_MAX)) { 413 } else if (++rq->errors > ERROR_MAX)
427 /* we've racked up too many retries, abort */ 414 /* we've racked up too many retries, abort */
428 do_end_request = 1; 415 do_end_request = 1;
429 } 416 }
430
431 /*
432 * End a request through request sense analysis when we have
433 * sense data. We need this in order to perform end of media
434 * processing.
435 */
436 if (do_end_request)
437 goto end_request;
438 417
439 /* 418 if (blk_fs_request(rq) == 0) {
440 * If we got a CHECK_CONDITION status, queue 419 rq->cmd_flags |= REQ_FAILED;
441 * a request sense command. 420 do_end_request = 1;
442 */
443 if (stat & ATA_ERR)
444 cdrom_queue_request_sense(drive, NULL, NULL);
445 return 1;
446 } else {
447 blk_dump_rq_flags(rq, PFX "bad rq");
448 return 2;
449 } 421 }
450 422
423 /*
424 * End a request through request sense analysis when we have sense data.
425 * We need this in order to perform end of media processing.
426 */
427 if (do_end_request)
428 goto end_request;
429
430 /* if we got a CHECK_CONDITION status, queue a request sense command */
431 if (stat & ATA_ERR)
432 cdrom_queue_request_sense(drive, NULL, NULL);
433 return 1;
434
451end_request: 435end_request:
452 if (stat & ATA_ERR) { 436 if (stat & ATA_ERR) {
453 struct request_queue *q = drive->queue; 437 struct request_queue *q = drive->queue;
@@ -624,15 +608,14 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
624 struct ide_cmd *cmd = &hwif->cmd; 608 struct ide_cmd *cmd = &hwif->cmd;
625 struct request *rq = hwif->rq; 609 struct request *rq = hwif->rq;
626 ide_expiry_t *expiry = NULL; 610 ide_expiry_t *expiry = NULL;
627 int dma_error = 0, dma, stat, thislen, uptodate = 0; 611 int dma_error = 0, dma, thislen, uptodate = 0;
628 int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc, nsectors; 612 int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc = 0, nsectors;
629 int sense = blk_sense_request(rq); 613 int sense = blk_sense_request(rq);
630 unsigned int timeout; 614 unsigned int timeout;
631 u16 len; 615 u16 len;
632 u8 ireason; 616 u8 ireason, stat;
633 617
634 ide_debug_log(IDE_DBG_PC, "cmd[0]: 0x%x, write: 0x%x", 618 ide_debug_log(IDE_DBG_PC, "cmd: 0x%x, write: 0x%x", rq->cmd[0], write);
635 rq->cmd[0], write);
636 619
637 /* check for errors */ 620 /* check for errors */
638 dma = drive->dma; 621 dma = drive->dma;
@@ -648,11 +631,16 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
648 } 631 }
649 } 632 }
650 633
651 rc = cdrom_decode_status(drive, 0, &stat); 634 /* check status */
652 if (rc) { 635 stat = hwif->tp_ops->read_status(hwif);
653 if (rc == 2) 636
654 goto out_end; 637 if (!OK_STAT(stat, 0, BAD_R_STAT)) {
655 return ide_stopped; 638 rc = cdrom_decode_status(drive, stat);
639 if (rc) {
640 if (rc == 2)
641 goto out_end;
642 return ide_stopped;
643 }
656 } 644 }
657 645
658 /* using dma, transfer is complete now */ 646 /* using dma, transfer is complete now */
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index c998cf8e971a..a9fbe2c31210 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -97,35 +97,38 @@ static ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
97 } 97 }
98 98
99 memset(&cmd, 0, sizeof(cmd)); 99 memset(&cmd, 0, sizeof(cmd));
100 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 100 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
101 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
101 102
102 if (drive->dev_flags & IDE_DFLAG_LBA) { 103 if (drive->dev_flags & IDE_DFLAG_LBA) {
103 if (lba48) { 104 if (lba48) {
104 pr_debug("%s: LBA=0x%012llx\n", drive->name, 105 pr_debug("%s: LBA=0x%012llx\n", drive->name,
105 (unsigned long long)block); 106 (unsigned long long)block);
106 107
107 tf->hob_nsect = (nsectors >> 8) & 0xff;
108 tf->hob_lbal = (u8)(block >> 24);
109 if (sizeof(block) != 4) {
110 tf->hob_lbam = (u8)((u64)block >> 32);
111 tf->hob_lbah = (u8)((u64)block >> 40);
112 }
113
114 tf->nsect = nsectors & 0xff; 108 tf->nsect = nsectors & 0xff;
115 tf->lbal = (u8) block; 109 tf->lbal = (u8) block;
116 tf->lbam = (u8)(block >> 8); 110 tf->lbam = (u8)(block >> 8);
117 tf->lbah = (u8)(block >> 16); 111 tf->lbah = (u8)(block >> 16);
112 tf->device = ATA_LBA;
118 113
119 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB); 114 tf = &cmd.hob;
115 tf->nsect = (nsectors >> 8) & 0xff;
116 tf->lbal = (u8)(block >> 24);
117 if (sizeof(block) != 4) {
118 tf->lbam = (u8)((u64)block >> 32);
119 tf->lbah = (u8)((u64)block >> 40);
120 }
121
122 cmd.valid.out.hob = IDE_VALID_OUT_HOB;
123 cmd.valid.in.hob = IDE_VALID_IN_HOB;
124 cmd.tf_flags |= IDE_TFLAG_LBA48;
120 } else { 125 } else {
121 tf->nsect = nsectors & 0xff; 126 tf->nsect = nsectors & 0xff;
122 tf->lbal = block; 127 tf->lbal = block;
123 tf->lbam = block >>= 8; 128 tf->lbam = block >>= 8;
124 tf->lbah = block >>= 8; 129 tf->lbah = block >>= 8;
125 tf->device = (block >> 8) & 0xf; 130 tf->device = ((block >> 8) & 0xf) | ATA_LBA;
126 } 131 }
127
128 tf->device |= ATA_LBA;
129 } else { 132 } else {
130 unsigned int sect, head, cyl, track; 133 unsigned int sect, head, cyl, track;
131 134
@@ -220,15 +223,19 @@ static u64 idedisk_read_native_max_address(ide_drive_t *drive, int lba48)
220 tf->command = ATA_CMD_READ_NATIVE_MAX; 223 tf->command = ATA_CMD_READ_NATIVE_MAX;
221 tf->device = ATA_LBA; 224 tf->device = ATA_LBA;
222 225
223 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 226 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
224 if (lba48) 227 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
225 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB); 228 if (lba48) {
229 cmd.valid.out.hob = IDE_VALID_OUT_HOB;
230 cmd.valid.in.hob = IDE_VALID_IN_HOB;
231 cmd.tf_flags = IDE_TFLAG_LBA48;
232 }
226 233
227 ide_no_data_taskfile(drive, &cmd); 234 ide_no_data_taskfile(drive, &cmd);
228 235
229 /* if OK, compute maximum address value */ 236 /* if OK, compute maximum address value */
230 if (!(tf->status & ATA_ERR)) 237 if (!(tf->status & ATA_ERR))
231 addr = ide_get_lba_addr(tf, lba48) + 1; 238 addr = ide_get_lba_addr(&cmd, lba48) + 1;
232 239
233 return addr; 240 return addr;
234} 241}
@@ -250,9 +257,9 @@ static u64 idedisk_set_max_address(ide_drive_t *drive, u64 addr_req, int lba48)
250 tf->lbam = (addr_req >>= 8) & 0xff; 257 tf->lbam = (addr_req >>= 8) & 0xff;
251 tf->lbah = (addr_req >>= 8) & 0xff; 258 tf->lbah = (addr_req >>= 8) & 0xff;
252 if (lba48) { 259 if (lba48) {
253 tf->hob_lbal = (addr_req >>= 8) & 0xff; 260 cmd.hob.lbal = (addr_req >>= 8) & 0xff;
254 tf->hob_lbam = (addr_req >>= 8) & 0xff; 261 cmd.hob.lbam = (addr_req >>= 8) & 0xff;
255 tf->hob_lbah = (addr_req >>= 8) & 0xff; 262 cmd.hob.lbah = (addr_req >>= 8) & 0xff;
256 tf->command = ATA_CMD_SET_MAX_EXT; 263 tf->command = ATA_CMD_SET_MAX_EXT;
257 } else { 264 } else {
258 tf->device = (addr_req >>= 8) & 0x0f; 265 tf->device = (addr_req >>= 8) & 0x0f;
@@ -260,15 +267,19 @@ static u64 idedisk_set_max_address(ide_drive_t *drive, u64 addr_req, int lba48)
260 } 267 }
261 tf->device |= ATA_LBA; 268 tf->device |= ATA_LBA;
262 269
263 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 270 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
264 if (lba48) 271 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
265 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB); 272 if (lba48) {
273 cmd.valid.out.hob = IDE_VALID_OUT_HOB;
274 cmd.valid.in.hob = IDE_VALID_IN_HOB;
275 cmd.tf_flags = IDE_TFLAG_LBA48;
276 }
266 277
267 ide_no_data_taskfile(drive, &cmd); 278 ide_no_data_taskfile(drive, &cmd);
268 279
269 /* if OK, compute maximum address value */ 280 /* if OK, compute maximum address value */
270 if (!(tf->status & ATA_ERR)) 281 if (!(tf->status & ATA_ERR))
271 addr_set = ide_get_lba_addr(tf, lba48) + 1; 282 addr_set = ide_get_lba_addr(&cmd, lba48) + 1;
272 283
273 return addr_set; 284 return addr_set;
274} 285}
@@ -395,8 +406,8 @@ static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
395 cmd->tf.command = ATA_CMD_FLUSH_EXT; 406 cmd->tf.command = ATA_CMD_FLUSH_EXT;
396 else 407 else
397 cmd->tf.command = ATA_CMD_FLUSH; 408 cmd->tf.command = ATA_CMD_FLUSH;
398 cmd->tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE | 409 cmd->valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
399 IDE_TFLAG_DYN; 410 cmd->tf_flags = IDE_TFLAG_DYN;
400 cmd->protocol = ATA_PROT_NODATA; 411 cmd->protocol = ATA_PROT_NODATA;
401 412
402 rq->cmd_type = REQ_TYPE_ATA_TASKFILE; 413 rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
@@ -457,7 +468,8 @@ static int ide_do_setfeature(ide_drive_t *drive, u8 feature, u8 nsect)
457 cmd.tf.feature = feature; 468 cmd.tf.feature = feature;
458 cmd.tf.nsect = nsect; 469 cmd.tf.nsect = nsect;
459 cmd.tf.command = ATA_CMD_SET_FEATURES; 470 cmd.tf.command = ATA_CMD_SET_FEATURES;
460 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 471 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
472 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
461 473
462 return ide_no_data_taskfile(drive, &cmd); 474 return ide_no_data_taskfile(drive, &cmd);
463} 475}
@@ -533,7 +545,8 @@ static int do_idedisk_flushcache(ide_drive_t *drive)
533 cmd.tf.command = ATA_CMD_FLUSH_EXT; 545 cmd.tf.command = ATA_CMD_FLUSH_EXT;
534 else 546 else
535 cmd.tf.command = ATA_CMD_FLUSH; 547 cmd.tf.command = ATA_CMD_FLUSH;
536 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 548 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
549 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
537 550
538 return ide_no_data_taskfile(drive, &cmd); 551 return ide_no_data_taskfile(drive, &cmd);
539} 552}
@@ -715,7 +728,8 @@ static int ide_disk_set_doorlock(ide_drive_t *drive, struct gendisk *disk,
715 728
716 memset(&cmd, 0, sizeof(cmd)); 729 memset(&cmd, 0, sizeof(cmd));
717 cmd.tf.command = on ? ATA_CMD_MEDIA_LOCK : ATA_CMD_MEDIA_UNLOCK; 730 cmd.tf.command = on ? ATA_CMD_MEDIA_LOCK : ATA_CMD_MEDIA_UNLOCK;
718 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 731 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
732 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
719 733
720 ret = ide_no_data_taskfile(drive, &cmd); 734 ret = ide_no_data_taskfile(drive, &cmd);
721 735
diff --git a/drivers/ide/ide-disk_proc.c b/drivers/ide/ide-disk_proc.c
index eaea3bef2073..19f263bf0a9e 100644
--- a/drivers/ide/ide-disk_proc.c
+++ b/drivers/ide/ide-disk_proc.c
@@ -13,7 +13,8 @@ static int smart_enable(ide_drive_t *drive)
13 tf->lbam = ATA_SMART_LBAM_PASS; 13 tf->lbam = ATA_SMART_LBAM_PASS;
14 tf->lbah = ATA_SMART_LBAH_PASS; 14 tf->lbah = ATA_SMART_LBAH_PASS;
15 tf->command = ATA_CMD_SMART; 15 tf->command = ATA_CMD_SMART;
16 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 16 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
17 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
17 18
18 return ide_no_data_taskfile(drive, &cmd); 19 return ide_no_data_taskfile(drive, &cmd);
19} 20}
@@ -29,7 +30,8 @@ static int get_smart_data(ide_drive_t *drive, u8 *buf, u8 sub_cmd)
29 tf->lbam = ATA_SMART_LBAM_PASS; 30 tf->lbam = ATA_SMART_LBAM_PASS;
30 tf->lbah = ATA_SMART_LBAH_PASS; 31 tf->lbah = ATA_SMART_LBAH_PASS;
31 tf->command = ATA_CMD_SMART; 32 tf->command = ATA_CMD_SMART;
32 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 33 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
34 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
33 cmd.protocol = ATA_PROT_PIO; 35 cmd.protocol = ATA_PROT_PIO;
34 36
35 return ide_raw_taskfile(drive, &cmd, buf, 1); 37 return ide_raw_taskfile(drive, &cmd, buf, 1);
diff --git a/drivers/ide/ide-dma-sff.c b/drivers/ide/ide-dma-sff.c
index 16fc46edc32d..e4cdf78cc3e9 100644
--- a/drivers/ide/ide-dma-sff.c
+++ b/drivers/ide/ide-dma-sff.c
@@ -277,8 +277,6 @@ void ide_dma_start(ide_drive_t *drive)
277 dma_cmd = inb(hwif->dma_base + ATA_DMA_CMD); 277 dma_cmd = inb(hwif->dma_base + ATA_DMA_CMD);
278 outb(dma_cmd | ATA_DMA_START, hwif->dma_base + ATA_DMA_CMD); 278 outb(dma_cmd | ATA_DMA_START, hwif->dma_base + ATA_DMA_CMD);
279 } 279 }
280
281 wmb();
282} 280}
283EXPORT_SYMBOL_GPL(ide_dma_start); 281EXPORT_SYMBOL_GPL(ide_dma_start);
284 282
@@ -286,7 +284,7 @@ EXPORT_SYMBOL_GPL(ide_dma_start);
286int ide_dma_end(ide_drive_t *drive) 284int ide_dma_end(ide_drive_t *drive)
287{ 285{
288 ide_hwif_t *hwif = drive->hwif; 286 ide_hwif_t *hwif = drive->hwif;
289 u8 dma_stat = 0, dma_cmd = 0, mask; 287 u8 dma_stat = 0, dma_cmd = 0;
290 288
291 /* stop DMA */ 289 /* stop DMA */
292 if (hwif->host_flags & IDE_HFLAG_MMIO) { 290 if (hwif->host_flags & IDE_HFLAG_MMIO) {
@@ -304,11 +302,10 @@ int ide_dma_end(ide_drive_t *drive)
304 /* clear INTR & ERROR bits */ 302 /* clear INTR & ERROR bits */
305 ide_dma_sff_write_status(hwif, dma_stat | ATA_DMA_ERR | ATA_DMA_INTR); 303 ide_dma_sff_write_status(hwif, dma_stat | ATA_DMA_ERR | ATA_DMA_INTR);
306 304
307 wmb(); 305#define CHECK_DMA_MASK (ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR)
308 306
309 /* verify good DMA status */ 307 /* verify good DMA status */
310 mask = ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR; 308 if ((dma_stat & CHECK_DMA_MASK) != ATA_DMA_INTR)
311 if ((dma_stat & mask) != ATA_DMA_INTR)
312 return 0x10 | dma_stat; 309 return 0x10 | dma_stat;
313 return 0; 310 return 0;
314} 311}
diff --git a/drivers/ide/ide-gd.c b/drivers/ide/ide-gd.c
index 1aebdf1a4f58..4b6b71e2cdf5 100644
--- a/drivers/ide/ide-gd.c
+++ b/drivers/ide/ide-gd.c
@@ -7,6 +7,7 @@
7#include <linux/mutex.h> 7#include <linux/mutex.h>
8#include <linux/ide.h> 8#include <linux/ide.h>
9#include <linux/hdreg.h> 9#include <linux/hdreg.h>
10#include <linux/dmi.h>
10 11
11#if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT) 12#if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT)
12#define IDE_DISK_MINORS (1 << PARTN_BITS) 13#define IDE_DISK_MINORS (1 << PARTN_BITS)
@@ -99,6 +100,19 @@ static void ide_gd_resume(ide_drive_t *drive)
99 (void)drive->disk_ops->get_capacity(drive); 100 (void)drive->disk_ops->get_capacity(drive);
100} 101}
101 102
103static const struct dmi_system_id ide_coldreboot_table[] = {
104 {
105 /* Acer TravelMate 66x cuts power during reboot */
106 .ident = "Acer TravelMate 660",
107 .matches = {
108 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
109 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),
110 },
111 },
112
113 { } /* terminate list */
114};
115
102static void ide_gd_shutdown(ide_drive_t *drive) 116static void ide_gd_shutdown(ide_drive_t *drive)
103{ 117{
104#ifdef CONFIG_ALPHA 118#ifdef CONFIG_ALPHA
@@ -115,7 +129,8 @@ static void ide_gd_shutdown(ide_drive_t *drive)
115 the disk to expire its write cache. */ 129 the disk to expire its write cache. */
116 if (system_state != SYSTEM_POWER_OFF) { 130 if (system_state != SYSTEM_POWER_OFF) {
117#else 131#else
118 if (system_state == SYSTEM_RESTART) { 132 if (system_state == SYSTEM_RESTART &&
133 !dmi_check_system(ide_coldreboot_table)) {
119#endif 134#endif
120 drive->disk_ops->flush(drive); 135 drive->disk_ops->flush(drive);
121 return; 136 return;
diff --git a/drivers/ide/ide-h8300.c b/drivers/ide/ide-h8300.c
index dac9a6d44963..c06ebdc4a130 100644
--- a/drivers/ide/ide-h8300.c
+++ b/drivers/ide/ide-h8300.c
@@ -22,103 +22,6 @@
22 (r); \ 22 (r); \
23}) 23})
24 24
25static void mm_outw(u16 d, unsigned long a)
26{
27 __asm__("mov.b %w0,r2h\n\t"
28 "mov.b %x0,r2l\n\t"
29 "mov.w r2,@%1"
30 :
31 :"r"(d),"r"(a)
32 :"er2");
33}
34
35static u16 mm_inw(unsigned long a)
36{
37 register u16 r __asm__("er0");
38 __asm__("mov.w @%1,r2\n\t"
39 "mov.b r2l,%x0\n\t"
40 "mov.b r2h,%w0"
41 :"=r"(r)
42 :"r"(a)
43 :"er2");
44 return r;
45}
46
47static void h8300_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
48{
49 ide_hwif_t *hwif = drive->hwif;
50 struct ide_io_ports *io_ports = &hwif->io_ports;
51 struct ide_taskfile *tf = &cmd->tf;
52 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
53
54 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
55 HIHI = 0xFF;
56
57 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
58 outb(tf->hob_feature, io_ports->feature_addr);
59 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
60 outb(tf->hob_nsect, io_ports->nsect_addr);
61 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
62 outb(tf->hob_lbal, io_ports->lbal_addr);
63 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
64 outb(tf->hob_lbam, io_ports->lbam_addr);
65 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
66 outb(tf->hob_lbah, io_ports->lbah_addr);
67
68 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
69 outb(tf->feature, io_ports->feature_addr);
70 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
71 outb(tf->nsect, io_ports->nsect_addr);
72 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
73 outb(tf->lbal, io_ports->lbal_addr);
74 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
75 outb(tf->lbam, io_ports->lbam_addr);
76 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
77 outb(tf->lbah, io_ports->lbah_addr);
78
79 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
80 outb((tf->device & HIHI) | drive->select,
81 io_ports->device_addr);
82}
83
84static void h8300_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
85{
86 ide_hwif_t *hwif = drive->hwif;
87 struct ide_io_ports *io_ports = &hwif->io_ports;
88 struct ide_taskfile *tf = &cmd->tf;
89
90 /* be sure we're looking at the low order bits */
91 outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
92
93 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
94 tf->error = inb(io_ports->feature_addr);
95 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
96 tf->nsect = inb(io_ports->nsect_addr);
97 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
98 tf->lbal = inb(io_ports->lbal_addr);
99 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
100 tf->lbam = inb(io_ports->lbam_addr);
101 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
102 tf->lbah = inb(io_ports->lbah_addr);
103 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
104 tf->device = inb(io_ports->device_addr);
105
106 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
107 outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
108
109 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
110 tf->hob_error = inb(io_ports->feature_addr);
111 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
112 tf->hob_nsect = inb(io_ports->nsect_addr);
113 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
114 tf->hob_lbal = inb(io_ports->lbal_addr);
115 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
116 tf->hob_lbam = inb(io_ports->lbam_addr);
117 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
118 tf->hob_lbah = inb(io_ports->lbah_addr);
119 }
120}
121
122static void mm_outsw(unsigned long addr, void *buf, u32 len) 25static void mm_outsw(unsigned long addr, void *buf, u32 len)
123{ 26{
124 unsigned short *bp = (unsigned short *)buf; 27 unsigned short *bp = (unsigned short *)buf;
@@ -152,8 +55,8 @@ static const struct ide_tp_ops h8300_tp_ops = {
152 .write_devctl = ide_write_devctl, 55 .write_devctl = ide_write_devctl,
153 56
154 .dev_select = ide_dev_select, 57 .dev_select = ide_dev_select,
155 .tf_load = h8300_tf_load, 58 .tf_load = ide_tf_load,
156 .tf_read = h8300_tf_read, 59 .tf_read = ide_tf_read,
157 60
158 .input_data = h8300_input_data, 61 .input_data = h8300_input_data,
159 .output_data = h8300_output_data, 62 .output_data = h8300_output_data,
diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c
index 9cac281d82c4..46721c454518 100644
--- a/drivers/ide/ide-io-std.c
+++ b/drivers/ide/ide-io-std.c
@@ -85,98 +85,57 @@ void ide_dev_select(ide_drive_t *drive)
85} 85}
86EXPORT_SYMBOL_GPL(ide_dev_select); 86EXPORT_SYMBOL_GPL(ide_dev_select);
87 87
88void ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) 88void ide_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
89{ 89{
90 ide_hwif_t *hwif = drive->hwif; 90 ide_hwif_t *hwif = drive->hwif;
91 struct ide_io_ports *io_ports = &hwif->io_ports; 91 struct ide_io_ports *io_ports = &hwif->io_ports;
92 struct ide_taskfile *tf = &cmd->tf;
93 void (*tf_outb)(u8 addr, unsigned long port); 92 void (*tf_outb)(u8 addr, unsigned long port);
94 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0; 93 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
95 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
96 94
97 if (mmio) 95 if (mmio)
98 tf_outb = ide_mm_outb; 96 tf_outb = ide_mm_outb;
99 else 97 else
100 tf_outb = ide_outb; 98 tf_outb = ide_outb;
101 99
102 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) 100 if (valid & IDE_VALID_FEATURE)
103 HIHI = 0xFF;
104
105 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
106 tf_outb(tf->hob_feature, io_ports->feature_addr);
107 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
108 tf_outb(tf->hob_nsect, io_ports->nsect_addr);
109 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
110 tf_outb(tf->hob_lbal, io_ports->lbal_addr);
111 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
112 tf_outb(tf->hob_lbam, io_ports->lbam_addr);
113 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
114 tf_outb(tf->hob_lbah, io_ports->lbah_addr);
115
116 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
117 tf_outb(tf->feature, io_ports->feature_addr); 101 tf_outb(tf->feature, io_ports->feature_addr);
118 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT) 102 if (valid & IDE_VALID_NSECT)
119 tf_outb(tf->nsect, io_ports->nsect_addr); 103 tf_outb(tf->nsect, io_ports->nsect_addr);
120 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL) 104 if (valid & IDE_VALID_LBAL)
121 tf_outb(tf->lbal, io_ports->lbal_addr); 105 tf_outb(tf->lbal, io_ports->lbal_addr);
122 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM) 106 if (valid & IDE_VALID_LBAM)
123 tf_outb(tf->lbam, io_ports->lbam_addr); 107 tf_outb(tf->lbam, io_ports->lbam_addr);
124 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH) 108 if (valid & IDE_VALID_LBAH)
125 tf_outb(tf->lbah, io_ports->lbah_addr); 109 tf_outb(tf->lbah, io_ports->lbah_addr);
126 110 if (valid & IDE_VALID_DEVICE)
127 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE) 111 tf_outb(tf->device, io_ports->device_addr);
128 tf_outb((tf->device & HIHI) | drive->select,
129 io_ports->device_addr);
130} 112}
131EXPORT_SYMBOL_GPL(ide_tf_load); 113EXPORT_SYMBOL_GPL(ide_tf_load);
132 114
133void ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 115void ide_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
134{ 116{
135 ide_hwif_t *hwif = drive->hwif; 117 ide_hwif_t *hwif = drive->hwif;
136 struct ide_io_ports *io_ports = &hwif->io_ports; 118 struct ide_io_ports *io_ports = &hwif->io_ports;
137 struct ide_taskfile *tf = &cmd->tf;
138 void (*tf_outb)(u8 addr, unsigned long port);
139 u8 (*tf_inb)(unsigned long port); 119 u8 (*tf_inb)(unsigned long port);
140 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0; 120 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
141 121
142 if (mmio) { 122 if (mmio)
143 tf_outb = ide_mm_outb;
144 tf_inb = ide_mm_inb; 123 tf_inb = ide_mm_inb;
145 } else { 124 else
146 tf_outb = ide_outb;
147 tf_inb = ide_inb; 125 tf_inb = ide_inb;
148 }
149
150 /* be sure we're looking at the low order bits */
151 tf_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
152 126
153 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR) 127 if (valid & IDE_VALID_ERROR)
154 tf->error = tf_inb(io_ports->feature_addr); 128 tf->error = tf_inb(io_ports->feature_addr);
155 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT) 129 if (valid & IDE_VALID_NSECT)
156 tf->nsect = tf_inb(io_ports->nsect_addr); 130 tf->nsect = tf_inb(io_ports->nsect_addr);
157 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL) 131 if (valid & IDE_VALID_LBAL)
158 tf->lbal = tf_inb(io_ports->lbal_addr); 132 tf->lbal = tf_inb(io_ports->lbal_addr);
159 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM) 133 if (valid & IDE_VALID_LBAM)
160 tf->lbam = tf_inb(io_ports->lbam_addr); 134 tf->lbam = tf_inb(io_ports->lbam_addr);
161 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH) 135 if (valid & IDE_VALID_LBAH)
162 tf->lbah = tf_inb(io_ports->lbah_addr); 136 tf->lbah = tf_inb(io_ports->lbah_addr);
163 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE) 137 if (valid & IDE_VALID_DEVICE)
164 tf->device = tf_inb(io_ports->device_addr); 138 tf->device = tf_inb(io_ports->device_addr);
165
166 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
167 tf_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
168
169 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
170 tf->hob_error = tf_inb(io_ports->feature_addr);
171 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
172 tf->hob_nsect = tf_inb(io_ports->nsect_addr);
173 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
174 tf->hob_lbal = tf_inb(io_ports->lbal_addr);
175 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
176 tf->hob_lbam = tf_inb(io_ports->lbam_addr);
177 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
178 tf->hob_lbah = tf_inb(io_ports->lbah_addr);
179 }
180} 139}
181EXPORT_SYMBOL_GPL(ide_tf_read); 140EXPORT_SYMBOL_GPL(ide_tf_read);
182 141
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index 1deb6d29b186..35dc38d3b2c5 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -86,27 +86,30 @@ void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err)
86 86
87 tp_ops->input_data(drive, cmd, data, 2); 87 tp_ops->input_data(drive, cmd, data, 2);
88 88
89 tf->data = data[0]; 89 cmd->tf.data = data[0];
90 tf->hob_data = data[1]; 90 cmd->hob.data = data[1];
91 } 91 }
92 92
93 tp_ops->tf_read(drive, cmd); 93 ide_tf_readback(drive, cmd);
94 94
95 if ((cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) && 95 if ((cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) &&
96 tf_cmd == ATA_CMD_IDLEIMMEDIATE) { 96 tf_cmd == ATA_CMD_IDLEIMMEDIATE) {
97 if (tf->lbal != 0xc4) { 97 if (tf->lbal != 0xc4) {
98 printk(KERN_ERR "%s: head unload failed!\n", 98 printk(KERN_ERR "%s: head unload failed!\n",
99 drive->name); 99 drive->name);
100 ide_tf_dump(drive->name, tf); 100 ide_tf_dump(drive->name, cmd);
101 } else 101 } else
102 drive->dev_flags |= IDE_DFLAG_PARKED; 102 drive->dev_flags |= IDE_DFLAG_PARKED;
103 } 103 }
104 104
105 if (rq && rq->cmd_type == REQ_TYPE_ATA_TASKFILE) 105 if (rq && rq->cmd_type == REQ_TYPE_ATA_TASKFILE) {
106 memcpy(rq->special, cmd, sizeof(*cmd)); 106 struct ide_cmd *orig_cmd = rq->special;
107 107
108 if (cmd->tf_flags & IDE_TFLAG_DYN) 108 if (cmd->tf_flags & IDE_TFLAG_DYN)
109 kfree(cmd); 109 kfree(orig_cmd);
110 else
111 memcpy(orig_cmd, cmd, sizeof(*cmd));
112 }
110} 113}
111 114
112/* obsolete, blk_rq_bytes() should be used instead */ 115/* obsolete, blk_rq_bytes() should be used instead */
@@ -205,8 +208,9 @@ static ide_startstop_t ide_disk_special(ide_drive_t *drive)
205 return ide_stopped; 208 return ide_stopped;
206 } 209 }
207 210
208 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE | 211 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
209 IDE_TFLAG_CUSTOM_HANDLER; 212 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
213 cmd.tf_flags = IDE_TFLAG_CUSTOM_HANDLER;
210 214
211 do_rw_taskfile(drive, &cmd); 215 do_rw_taskfile(drive, &cmd);
212 216
diff --git a/drivers/ide/ide-ioctls.c b/drivers/ide/ide-ioctls.c
index 770142767437..c1c25ebbaa1f 100644
--- a/drivers/ide/ide-ioctls.c
+++ b/drivers/ide/ide-ioctls.c
@@ -141,11 +141,12 @@ static int ide_cmd_ioctl(ide_drive_t *drive, unsigned long arg)
141 tf->lbal = args[1]; 141 tf->lbal = args[1];
142 tf->lbam = 0x4f; 142 tf->lbam = 0x4f;
143 tf->lbah = 0xc2; 143 tf->lbah = 0xc2;
144 cmd.tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_IN_NSECT; 144 cmd.valid.out.tf = IDE_VALID_OUT_TF;
145 cmd.valid.in.tf = IDE_VALID_NSECT;
145 } else { 146 } else {
146 tf->nsect = args[1]; 147 tf->nsect = args[1];
147 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT | 148 cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT;
148 IDE_TFLAG_IN_NSECT; 149 cmd.valid.in.tf = IDE_VALID_NSECT;
149 } 150 }
150 tf->command = args[0]; 151 tf->command = args[0];
151 cmd.protocol = args[3] ? ATA_PROT_PIO : ATA_PROT_NODATA; 152 cmd.protocol = args[3] ? ATA_PROT_PIO : ATA_PROT_NODATA;
@@ -205,14 +206,15 @@ static int ide_task_ioctl(ide_drive_t *drive, unsigned long arg)
205 return -EFAULT; 206 return -EFAULT;
206 207
207 memset(&cmd, 0, sizeof(cmd)); 208 memset(&cmd, 0, sizeof(cmd));
208 memcpy(&cmd.tf_array[7], &args[1], 6); 209 memcpy(&cmd.tf.feature, &args[1], 6);
209 cmd.tf.command = args[0]; 210 cmd.tf.command = args[0];
210 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 211 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
212 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
211 213
212 err = ide_no_data_taskfile(drive, &cmd); 214 err = ide_no_data_taskfile(drive, &cmd);
213 215
214 args[0] = cmd.tf.command; 216 args[0] = cmd.tf.command;
215 memcpy(&args[1], &cmd.tf_array[7], 6); 217 memcpy(&args[1], &cmd.tf.feature, 6);
216 218
217 if (copy_to_user(p, args, 7)) 219 if (copy_to_user(p, args, 7))
218 err = -EFAULT; 220 err = -EFAULT;
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 27bb70ddd459..c19a221b1e18 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -37,14 +37,11 @@ void SELECT_MASK(ide_drive_t *drive, int mask)
37 37
38u8 ide_read_error(ide_drive_t *drive) 38u8 ide_read_error(ide_drive_t *drive)
39{ 39{
40 struct ide_cmd cmd; 40 struct ide_taskfile tf;
41 41
42 memset(&cmd, 0, sizeof(cmd)); 42 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_ERROR);
43 cmd.tf_flags = IDE_TFLAG_IN_ERROR;
44 43
45 drive->hwif->tp_ops->tf_read(drive, &cmd); 44 return tf.error;
46
47 return cmd.tf.error;
48} 45}
49EXPORT_SYMBOL_GPL(ide_read_error); 46EXPORT_SYMBOL_GPL(ide_read_error);
50 47
@@ -312,10 +309,10 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
312{ 309{
313 ide_hwif_t *hwif = drive->hwif; 310 ide_hwif_t *hwif = drive->hwif;
314 const struct ide_tp_ops *tp_ops = hwif->tp_ops; 311 const struct ide_tp_ops *tp_ops = hwif->tp_ops;
312 struct ide_taskfile tf;
315 u16 *id = drive->id, i; 313 u16 *id = drive->id, i;
316 int error = 0; 314 int error = 0;
317 u8 stat; 315 u8 stat;
318 struct ide_cmd cmd;
319 316
320#ifdef CONFIG_BLK_DEV_IDEDMA 317#ifdef CONFIG_BLK_DEV_IDEDMA
321 if (hwif->dma_ops) /* check if host supports DMA */ 318 if (hwif->dma_ops) /* check if host supports DMA */
@@ -347,12 +344,11 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
347 udelay(1); 344 udelay(1);
348 tp_ops->write_devctl(hwif, ATA_NIEN | ATA_DEVCTL_OBS); 345 tp_ops->write_devctl(hwif, ATA_NIEN | ATA_DEVCTL_OBS);
349 346
350 memset(&cmd, 0, sizeof(cmd)); 347 memset(&tf, 0, sizeof(tf));
351 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT; 348 tf.feature = SETFEATURES_XFER;
352 cmd.tf.feature = SETFEATURES_XFER; 349 tf.nsect = speed;
353 cmd.tf.nsect = speed;
354 350
355 tp_ops->tf_load(drive, &cmd); 351 tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE | IDE_VALID_NSECT);
356 352
357 tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES); 353 tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES);
358 354
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c
index 217b7fdf2b17..56ff8c46c7d1 100644
--- a/drivers/ide/ide-lib.c
+++ b/drivers/ide/ide-lib.c
@@ -49,16 +49,17 @@ static void ide_dump_opcode(ide_drive_t *drive)
49 printk(KERN_CONT "0x%02x\n", cmd->tf.command); 49 printk(KERN_CONT "0x%02x\n", cmd->tf.command);
50} 50}
51 51
52u64 ide_get_lba_addr(struct ide_taskfile *tf, int lba48) 52u64 ide_get_lba_addr(struct ide_cmd *cmd, int lba48)
53{ 53{
54 struct ide_taskfile *tf = &cmd->tf;
54 u32 high, low; 55 u32 high, low;
55 56
56 if (lba48)
57 high = (tf->hob_lbah << 16) | (tf->hob_lbam << 8) |
58 tf->hob_lbal;
59 else
60 high = tf->device & 0xf;
61 low = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal; 57 low = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
58 if (lba48) {
59 tf = &cmd->hob;
60 high = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
61 } else
62 high = tf->device & 0xf;
62 63
63 return ((u64)high << 24) | low; 64 return ((u64)high << 24) | low;
64} 65}
@@ -71,17 +72,18 @@ static void ide_dump_sector(ide_drive_t *drive)
71 u8 lba48 = !!(drive->dev_flags & IDE_DFLAG_LBA48); 72 u8 lba48 = !!(drive->dev_flags & IDE_DFLAG_LBA48);
72 73
73 memset(&cmd, 0, sizeof(cmd)); 74 memset(&cmd, 0, sizeof(cmd));
74 if (lba48) 75 if (lba48) {
75 cmd.tf_flags = IDE_TFLAG_IN_LBA | IDE_TFLAG_IN_HOB_LBA | 76 cmd.valid.in.tf = IDE_VALID_LBA;
76 IDE_TFLAG_LBA48; 77 cmd.valid.in.hob = IDE_VALID_LBA;
77 else 78 cmd.tf_flags = IDE_TFLAG_LBA48;
78 cmd.tf_flags = IDE_TFLAG_IN_LBA | IDE_TFLAG_IN_DEVICE; 79 } else
80 cmd.valid.in.tf = IDE_VALID_LBA | IDE_VALID_DEVICE;
79 81
80 drive->hwif->tp_ops->tf_read(drive, &cmd); 82 ide_tf_readback(drive, &cmd);
81 83
82 if (lba48 || (tf->device & ATA_LBA)) 84 if (lba48 || (tf->device & ATA_LBA))
83 printk(KERN_CONT ", LBAsect=%llu", 85 printk(KERN_CONT ", LBAsect=%llu",
84 (unsigned long long)ide_get_lba_addr(tf, lba48)); 86 (unsigned long long)ide_get_lba_addr(&cmd, lba48));
85 else 87 else
86 printk(KERN_CONT ", CHS=%d/%d/%d", (tf->lbah << 8) + tf->lbam, 88 printk(KERN_CONT ", CHS=%d/%d/%d", (tf->lbah << 8) + tf->lbam,
87 tf->device & 0xf, tf->lbal); 89 tf->device & 0xf, tf->lbal);
diff --git a/drivers/ide/ide-park.c b/drivers/ide/ide-park.c
index 9490b446519f..310d03f2b5b7 100644
--- a/drivers/ide/ide-park.c
+++ b/drivers/ide/ide-park.c
@@ -74,7 +74,8 @@ ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq)
74 tf->lbal = 0x4c; 74 tf->lbal = 0x4c;
75 tf->lbam = 0x4e; 75 tf->lbam = 0x4e;
76 tf->lbah = 0x55; 76 tf->lbah = 0x55;
77 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 77 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
78 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
78 } else /* cmd == REQ_UNPARK_HEADS */ 79 } else /* cmd == REQ_UNPARK_HEADS */
79 tf->command = ATA_CMD_CHK_POWER; 80 tf->command = ATA_CMD_CHK_POWER;
80 81
diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c
index bb7858ebb7d1..0d8a151c0a01 100644
--- a/drivers/ide/ide-pm.c
+++ b/drivers/ide/ide-pm.c
@@ -163,7 +163,8 @@ ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq)
163 return ide_stopped; 163 return ide_stopped;
164 164
165out_do_tf: 165out_do_tf:
166 cmd->tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 166 cmd->valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
167 cmd->valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
167 cmd->protocol = ATA_PROT_NODATA; 168 cmd->protocol = ATA_PROT_NODATA;
168 169
169 return do_rw_taskfile(drive, cmd); 170 return do_rw_taskfile(drive, cmd);
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index d8c1c3e735bb..7f264ed1141b 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -283,13 +283,11 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
283 * identify command to be sure of reply 283 * identify command to be sure of reply
284 */ 284 */
285 if (cmd == ATA_CMD_ID_ATAPI) { 285 if (cmd == ATA_CMD_ID_ATAPI) {
286 struct ide_cmd cmd; 286 struct ide_taskfile tf;
287 287
288 memset(&cmd, 0, sizeof(cmd)); 288 memset(&tf, 0, sizeof(tf));
289 /* disable DMA & overlap */ 289 /* disable DMA & overlap */
290 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE; 290 tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE);
291
292 tp_ops->tf_load(drive, &cmd);
293 } 291 }
294 292
295 /* ask drive for ID */ 293 /* ask drive for ID */
@@ -337,14 +335,11 @@ int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
337 335
338static u8 ide_read_device(ide_drive_t *drive) 336static u8 ide_read_device(ide_drive_t *drive)
339{ 337{
340 struct ide_cmd cmd; 338 struct ide_taskfile tf;
341
342 memset(&cmd, 0, sizeof(cmd));
343 cmd.tf_flags = IDE_TFLAG_IN_DEVICE;
344 339
345 drive->hwif->tp_ops->tf_read(drive, &cmd); 340 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_DEVICE);
346 341
347 return cmd.tf.device; 342 return tf.device;
348} 343}
349 344
350/** 345/**
@@ -1314,6 +1309,7 @@ struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws)
1314 host->get_lock = d->get_lock; 1309 host->get_lock = d->get_lock;
1315 host->release_lock = d->release_lock; 1310 host->release_lock = d->release_lock;
1316 host->host_flags = d->host_flags; 1311 host->host_flags = d->host_flags;
1312 host->irq_flags = d->irq_flags;
1317 } 1313 }
1318 1314
1319 return host; 1315 return host;
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c
index 10a88bf3eefa..3242698832a4 100644
--- a/drivers/ide/ide-proc.c
+++ b/drivers/ide/ide-proc.c
@@ -204,8 +204,8 @@ static int set_xfer_rate (ide_drive_t *drive, int arg)
204 cmd.tf.command = ATA_CMD_SET_FEATURES; 204 cmd.tf.command = ATA_CMD_SET_FEATURES;
205 cmd.tf.feature = SETFEATURES_XFER; 205 cmd.tf.feature = SETFEATURES_XFER;
206 cmd.tf.nsect = (u8)arg; 206 cmd.tf.nsect = (u8)arg;
207 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT | 207 cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT;
208 IDE_TFLAG_IN_NSECT; 208 cmd.valid.in.tf = IDE_VALID_NSECT;
209 209
210 err = ide_no_data_taskfile(drive, &cmd); 210 err = ide_no_data_taskfile(drive, &cmd);
211 211
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 243421ce40d0..4aa6223c11be 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -23,17 +23,33 @@
23#include <asm/uaccess.h> 23#include <asm/uaccess.h>
24#include <asm/io.h> 24#include <asm/io.h>
25 25
26void ide_tf_dump(const char *s, struct ide_taskfile *tf) 26void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd)
27{
28 ide_hwif_t *hwif = drive->hwif;
29 const struct ide_tp_ops *tp_ops = hwif->tp_ops;
30
31 /* Be sure we're looking at the low order bytes */
32 tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
33
34 tp_ops->tf_read(drive, &cmd->tf, cmd->valid.in.tf);
35
36 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
37 tp_ops->write_devctl(hwif, ATA_HOB | ATA_DEVCTL_OBS);
38
39 tp_ops->tf_read(drive, &cmd->hob, cmd->valid.in.hob);
40 }
41}
42
43void ide_tf_dump(const char *s, struct ide_cmd *cmd)
27{ 44{
28#ifdef DEBUG 45#ifdef DEBUG
29 printk("%s: tf: feat 0x%02x nsect 0x%02x lbal 0x%02x " 46 printk("%s: tf: feat 0x%02x nsect 0x%02x lbal 0x%02x "
30 "lbam 0x%02x lbah 0x%02x dev 0x%02x cmd 0x%02x\n", 47 "lbam 0x%02x lbah 0x%02x dev 0x%02x cmd 0x%02x\n",
31 s, tf->feature, tf->nsect, tf->lbal, 48 s, cmd->tf.feature, cmd->tf.nsect,
32 tf->lbam, tf->lbah, tf->device, tf->command); 49 cmd->tf.lbal, cmd->tf.lbam, cmd->tf.lbah,
33 printk("%s: hob: nsect 0x%02x lbal 0x%02x " 50 cmd->tf.device, cmd->tf.command);
34 "lbam 0x%02x lbah 0x%02x\n", 51 printk("%s: hob: nsect 0x%02x lbal 0x%02x lbam 0x%02x lbah 0x%02x\n",
35 s, tf->hob_nsect, tf->hob_lbal, 52 s, cmd->hob.nsect, cmd->hob.lbal, cmd->hob.lbam, cmd->hob.lbah);
36 tf->hob_lbam, tf->hob_lbah);
37#endif 53#endif
38} 54}
39 55
@@ -47,7 +63,8 @@ int taskfile_lib_get_identify (ide_drive_t *drive, u8 *buf)
47 cmd.tf.command = ATA_CMD_ID_ATA; 63 cmd.tf.command = ATA_CMD_ID_ATA;
48 else 64 else
49 cmd.tf.command = ATA_CMD_ID_ATAPI; 65 cmd.tf.command = ATA_CMD_ID_ATAPI;
50 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 66 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
67 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
51 cmd.protocol = ATA_PROT_PIO; 68 cmd.protocol = ATA_PROT_PIO;
52 69
53 return ide_raw_taskfile(drive, &cmd, buf, 1); 70 return ide_raw_taskfile(drive, &cmd, buf, 1);
@@ -79,16 +96,27 @@ ide_startstop_t do_rw_taskfile(ide_drive_t *drive, struct ide_cmd *orig_cmd)
79 memcpy(cmd, orig_cmd, sizeof(*cmd)); 96 memcpy(cmd, orig_cmd, sizeof(*cmd));
80 97
81 if ((cmd->tf_flags & IDE_TFLAG_DMA_PIO_FALLBACK) == 0) { 98 if ((cmd->tf_flags & IDE_TFLAG_DMA_PIO_FALLBACK) == 0) {
82 ide_tf_dump(drive->name, tf); 99 ide_tf_dump(drive->name, cmd);
83 tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS); 100 tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
84 SELECT_MASK(drive, 0); 101 SELECT_MASK(drive, 0);
85 102
86 if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { 103 if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) {
87 u8 data[2] = { tf->data, tf->hob_data }; 104 u8 data[2] = { cmd->tf.data, cmd->hob.data };
88 105
89 tp_ops->output_data(drive, cmd, data, 2); 106 tp_ops->output_data(drive, cmd, data, 2);
90 } 107 }
91 tp_ops->tf_load(drive, cmd); 108
109 if (cmd->valid.out.tf & IDE_VALID_DEVICE) {
110 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ?
111 0xE0 : 0xEF;
112
113 if (!(cmd->ftf_flags & IDE_FTFLAG_FLAGGED))
114 cmd->tf.device &= HIHI;
115 cmd->tf.device |= drive->select;
116 }
117
118 tp_ops->tf_load(drive, &cmd->hob, cmd->valid.out.hob);
119 tp_ops->tf_load(drive, &cmd->tf, cmd->valid.out.tf);
92 } 120 }
93 121
94 switch (cmd->protocol) { 122 switch (cmd->protocol) {
@@ -489,16 +517,17 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
489 517
490 memset(&cmd, 0, sizeof(cmd)); 518 memset(&cmd, 0, sizeof(cmd));
491 519
492 memcpy(&cmd.tf_array[0], req_task->hob_ports, 520 memcpy(&cmd.hob, req_task->hob_ports, HDIO_DRIVE_HOB_HDR_SIZE - 2);
493 HDIO_DRIVE_HOB_HDR_SIZE - 2); 521 memcpy(&cmd.tf, req_task->io_ports, HDIO_DRIVE_TASK_HDR_SIZE);
494 memcpy(&cmd.tf_array[6], req_task->io_ports,
495 HDIO_DRIVE_TASK_HDR_SIZE);
496 522
497 cmd.tf_flags = IDE_TFLAG_IO_16BIT | IDE_TFLAG_DEVICE | 523 cmd.valid.out.tf = IDE_VALID_DEVICE;
498 IDE_TFLAG_IN_TF; 524 cmd.valid.in.tf = IDE_VALID_DEVICE | IDE_VALID_IN_TF;
525 cmd.tf_flags = IDE_TFLAG_IO_16BIT;
499 526
500 if (drive->dev_flags & IDE_DFLAG_LBA48) 527 if (drive->dev_flags & IDE_DFLAG_LBA48) {
501 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_IN_HOB); 528 cmd.tf_flags |= IDE_TFLAG_LBA48;
529 cmd.valid.in.hob = IDE_VALID_IN_HOB;
530 }
502 531
503 if (req_task->out_flags.all) { 532 if (req_task->out_flags.all) {
504 cmd.ftf_flags |= IDE_FTFLAG_FLAGGED; 533 cmd.ftf_flags |= IDE_FTFLAG_FLAGGED;
@@ -507,28 +536,28 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
507 cmd.ftf_flags |= IDE_FTFLAG_OUT_DATA; 536 cmd.ftf_flags |= IDE_FTFLAG_OUT_DATA;
508 537
509 if (req_task->out_flags.b.nsector_hob) 538 if (req_task->out_flags.b.nsector_hob)
510 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_NSECT; 539 cmd.valid.out.hob |= IDE_VALID_NSECT;
511 if (req_task->out_flags.b.sector_hob) 540 if (req_task->out_flags.b.sector_hob)
512 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAL; 541 cmd.valid.out.hob |= IDE_VALID_LBAL;
513 if (req_task->out_flags.b.lcyl_hob) 542 if (req_task->out_flags.b.lcyl_hob)
514 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAM; 543 cmd.valid.out.hob |= IDE_VALID_LBAM;
515 if (req_task->out_flags.b.hcyl_hob) 544 if (req_task->out_flags.b.hcyl_hob)
516 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAH; 545 cmd.valid.out.hob |= IDE_VALID_LBAH;
517 546
518 if (req_task->out_flags.b.error_feature) 547 if (req_task->out_flags.b.error_feature)
519 cmd.tf_flags |= IDE_TFLAG_OUT_FEATURE; 548 cmd.valid.out.tf |= IDE_VALID_FEATURE;
520 if (req_task->out_flags.b.nsector) 549 if (req_task->out_flags.b.nsector)
521 cmd.tf_flags |= IDE_TFLAG_OUT_NSECT; 550 cmd.valid.out.tf |= IDE_VALID_NSECT;
522 if (req_task->out_flags.b.sector) 551 if (req_task->out_flags.b.sector)
523 cmd.tf_flags |= IDE_TFLAG_OUT_LBAL; 552 cmd.valid.out.tf |= IDE_VALID_LBAL;
524 if (req_task->out_flags.b.lcyl) 553 if (req_task->out_flags.b.lcyl)
525 cmd.tf_flags |= IDE_TFLAG_OUT_LBAM; 554 cmd.valid.out.tf |= IDE_VALID_LBAM;
526 if (req_task->out_flags.b.hcyl) 555 if (req_task->out_flags.b.hcyl)
527 cmd.tf_flags |= IDE_TFLAG_OUT_LBAH; 556 cmd.valid.out.tf |= IDE_VALID_LBAH;
528 } else { 557 } else {
529 cmd.tf_flags |= IDE_TFLAG_OUT_TF; 558 cmd.valid.out.tf |= IDE_VALID_OUT_TF;
530 if (cmd.tf_flags & IDE_TFLAG_LBA48) 559 if (cmd.tf_flags & IDE_TFLAG_LBA48)
531 cmd.tf_flags |= IDE_TFLAG_OUT_HOB; 560 cmd.valid.out.hob |= IDE_VALID_OUT_HOB;
532 } 561 }
533 562
534 if (req_task->in_flags.b.data) 563 if (req_task->in_flags.b.data)
@@ -594,7 +623,7 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
594 if (req_task->req_cmd == IDE_DRIVE_TASK_NO_DATA) 623 if (req_task->req_cmd == IDE_DRIVE_TASK_NO_DATA)
595 nsect = 0; 624 nsect = 0;
596 else if (!nsect) { 625 else if (!nsect) {
597 nsect = (cmd.tf.hob_nsect << 8) | cmd.tf.nsect; 626 nsect = (cmd.hob.nsect << 8) | cmd.tf.nsect;
598 627
599 if (!nsect) { 628 if (!nsect) {
600 printk(KERN_ERR "%s: in/out command without data\n", 629 printk(KERN_ERR "%s: in/out command without data\n",
@@ -606,10 +635,8 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
606 635
607 err = ide_raw_taskfile(drive, &cmd, data_buf, nsect); 636 err = ide_raw_taskfile(drive, &cmd, data_buf, nsect);
608 637
609 memcpy(req_task->hob_ports, &cmd.tf_array[0], 638 memcpy(req_task->hob_ports, &cmd.hob, HDIO_DRIVE_HOB_HDR_SIZE - 2);
610 HDIO_DRIVE_HOB_HDR_SIZE - 2); 639 memcpy(req_task->io_ports, &cmd.tf, HDIO_DRIVE_TASK_HDR_SIZE);
611 memcpy(req_task->io_ports, &cmd.tf_array[6],
612 HDIO_DRIVE_TASK_HDR_SIZE);
613 640
614 if ((cmd.ftf_flags & IDE_FTFLAG_SET_IN_FLAGS) && 641 if ((cmd.ftf_flags & IDE_FTFLAG_SET_IN_FLAGS) &&
615 req_task->in_flags.all == 0) { 642 req_task->in_flags.all == 0) {
diff --git a/drivers/ide/ns87415.c b/drivers/ide/ns87415.c
index 71a39fb3856f..95327a2c2422 100644
--- a/drivers/ide/ns87415.c
+++ b/drivers/ide/ns87415.c
@@ -61,41 +61,23 @@ static u8 superio_dma_sff_read_status(ide_hwif_t *hwif)
61 return superio_ide_inb(hwif->dma_base + ATA_DMA_STATUS); 61 return superio_ide_inb(hwif->dma_base + ATA_DMA_STATUS);
62} 62}
63 63
64static void superio_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 64static void superio_tf_read(ide_drive_t *drive, struct ide_taskfile *tf,
65 u8 valid)
65{ 66{
66 struct ide_io_ports *io_ports = &drive->hwif->io_ports; 67 struct ide_io_ports *io_ports = &drive->hwif->io_ports;
67 struct ide_taskfile *tf = &cmd->tf;
68 68
69 /* be sure we're looking at the low order bits */ 69 if (valid & IDE_VALID_ERROR)
70 outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
71
72 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
73 tf->error = inb(io_ports->feature_addr); 70 tf->error = inb(io_ports->feature_addr);
74 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT) 71 if (valid & IDE_VALID_NSECT)
75 tf->nsect = inb(io_ports->nsect_addr); 72 tf->nsect = inb(io_ports->nsect_addr);
76 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL) 73 if (valid & IDE_VALID_LBAL)
77 tf->lbal = inb(io_ports->lbal_addr); 74 tf->lbal = inb(io_ports->lbal_addr);
78 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM) 75 if (valid & IDE_VALID_LBAM)
79 tf->lbam = inb(io_ports->lbam_addr); 76 tf->lbam = inb(io_ports->lbam_addr);
80 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH) 77 if (valid & IDE_VALID_LBAH)
81 tf->lbah = inb(io_ports->lbah_addr); 78 tf->lbah = inb(io_ports->lbah_addr);
82 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE) 79 if (valid & IDE_VALID_DEVICE)
83 tf->device = superio_ide_inb(io_ports->device_addr); 80 tf->device = superio_ide_inb(io_ports->device_addr);
84
85 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
86 outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
87
88 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
89 tf->hob_error = inb(io_ports->feature_addr);
90 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
91 tf->hob_nsect = inb(io_ports->nsect_addr);
92 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
93 tf->hob_lbal = inb(io_ports->lbal_addr);
94 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
95 tf->hob_lbam = inb(io_ports->lbam_addr);
96 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
97 tf->hob_lbah = inb(io_ports->lbah_addr);
98 }
99} 81}
100 82
101static void ns87415_dev_select(ide_drive_t *drive); 83static void ns87415_dev_select(ide_drive_t *drive);
diff --git a/drivers/ide/palm_bk3710.c b/drivers/ide/palm_bk3710.c
index c7acca0b8733..09d813d313f4 100644
--- a/drivers/ide/palm_bk3710.c
+++ b/drivers/ide/palm_bk3710.c
@@ -39,27 +39,12 @@
39/* Primary Control Offset */ 39/* Primary Control Offset */
40#define IDE_PALM_ATA_PRI_CTL_OFFSET 0x3F6 40#define IDE_PALM_ATA_PRI_CTL_OFFSET 0x3F6
41 41
42/*
43 * PalmChip 3710 IDE Controller UDMA timing structure Definition
44 */
45struct palm_bk3710_udmatiming {
46 unsigned int rptime; /* Ready to pause time */
47 unsigned int cycletime; /* Cycle Time */
48};
49
50#define BK3710_BMICP 0x00 42#define BK3710_BMICP 0x00
51#define BK3710_BMISP 0x02 43#define BK3710_BMISP 0x02
52#define BK3710_BMIDTP 0x04 44#define BK3710_BMIDTP 0x04
53#define BK3710_BMICS 0x08
54#define BK3710_BMISS 0x0A
55#define BK3710_BMIDTS 0x0C
56#define BK3710_IDETIMP 0x40 45#define BK3710_IDETIMP 0x40
57#define BK3710_IDETIMS 0x42
58#define BK3710_SIDETIM 0x44
59#define BK3710_SLEWCTL 0x45
60#define BK3710_IDESTATUS 0x47 46#define BK3710_IDESTATUS 0x47
61#define BK3710_UDMACTL 0x48 47#define BK3710_UDMACTL 0x48
62#define BK3710_UDMATIM 0x4A
63#define BK3710_MISCCTL 0x50 48#define BK3710_MISCCTL 0x50
64#define BK3710_REGSTB 0x54 49#define BK3710_REGSTB 0x54
65#define BK3710_REGRCVR 0x58 50#define BK3710_REGRCVR 0x58
@@ -71,17 +56,22 @@ struct palm_bk3710_udmatiming {
71#define BK3710_UDMATRP 0x70 56#define BK3710_UDMATRP 0x70
72#define BK3710_UDMAENV 0x74 57#define BK3710_UDMAENV 0x74
73#define BK3710_IORDYTMP 0x78 58#define BK3710_IORDYTMP 0x78
74#define BK3710_IORDYTMS 0x7C
75 59
76static unsigned ideclk_period; /* in nanoseconds */ 60static unsigned ideclk_period; /* in nanoseconds */
77 61
62struct palm_bk3710_udmatiming {
63 unsigned int rptime; /* tRP -- Ready to pause time (nsec) */
64 unsigned int cycletime; /* tCYCTYP2/2 -- avg Cycle Time (nsec) */
65 /* tENV is always a minimum of 20 nsec */
66};
67
78static const struct palm_bk3710_udmatiming palm_bk3710_udmatimings[6] = { 68static const struct palm_bk3710_udmatiming palm_bk3710_udmatimings[6] = {
79 {160, 240}, /* UDMA Mode 0 */ 69 { 160, 240 / 2 }, /* UDMA Mode 0 */
80 {125, 160}, /* UDMA Mode 1 */ 70 { 125, 160 / 2 }, /* UDMA Mode 1 */
81 {100, 120}, /* UDMA Mode 2 */ 71 { 100, 120 / 2 }, /* UDMA Mode 2 */
82 {100, 90}, /* UDMA Mode 3 */ 72 { 100, 90 / 2 }, /* UDMA Mode 3 */
83 {100, 60}, /* UDMA Mode 4 */ 73 { 100, 60 / 2 }, /* UDMA Mode 4 */
84 {85, 40}, /* UDMA Mode 5 */ 74 { 85, 40 / 2 }, /* UDMA Mode 5 */
85}; 75};
86 76
87static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev, 77static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev,
@@ -98,11 +88,6 @@ static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev,
98 trp = DIV_ROUND_UP(palm_bk3710_udmatimings[mode].rptime, 88 trp = DIV_ROUND_UP(palm_bk3710_udmatimings[mode].rptime,
99 ideclk_period) - 1; 89 ideclk_period) - 1;
100 90
101 /* udmatim Register */
102 val16 = readw(base + BK3710_UDMATIM) & (dev ? 0xFF0F : 0xFFF0);
103 val16 |= (mode << (dev ? 4 : 0));
104 writew(val16, base + BK3710_UDMATIM);
105
106 /* udmastb Ultra DMA Access Strobe Width */ 91 /* udmastb Ultra DMA Access Strobe Width */
107 val32 = readl(base + BK3710_UDMASTB) & (0xFF << (dev ? 0 : 8)); 92 val32 = readl(base + BK3710_UDMASTB) & (0xFF << (dev ? 0 : 8));
108 val32 |= (t0 << (dev ? 8 : 0)); 93 val32 |= (t0 << (dev ? 8 : 0));
@@ -163,10 +148,11 @@ static void palm_bk3710_setpiomode(void __iomem *base, ide_drive_t *mate,
163 u32 val32; 148 u32 val32;
164 struct ide_timing *t; 149 struct ide_timing *t;
165 150
151 t = ide_timing_find_mode(XFER_PIO_0 + mode);
152
166 /* PIO Data Setup */ 153 /* PIO Data Setup */
167 t0 = DIV_ROUND_UP(cycletime, ideclk_period); 154 t0 = DIV_ROUND_UP(cycletime, ideclk_period);
168 t2 = DIV_ROUND_UP(ide_timing_find_mode(XFER_PIO_0 + mode)->active, 155 t2 = DIV_ROUND_UP(t->active, ideclk_period);
169 ideclk_period);
170 156
171 t2i = t0 - t2 - 1; 157 t2i = t0 - t2 - 1;
172 t2 -= 1; 158 t2 -= 1;
@@ -187,7 +173,6 @@ static void palm_bk3710_setpiomode(void __iomem *base, ide_drive_t *mate,
187 } 173 }
188 174
189 /* TASKFILE Setup */ 175 /* TASKFILE Setup */
190 t = ide_timing_find_mode(XFER_PIO_0 + mode);
191 t0 = DIV_ROUND_UP(t->cyc8b, ideclk_period); 176 t0 = DIV_ROUND_UP(t->cyc8b, ideclk_period);
192 t2 = DIV_ROUND_UP(t->act8b, ideclk_period); 177 t2 = DIV_ROUND_UP(t->act8b, ideclk_period);
193 178
@@ -236,42 +221,23 @@ static void palm_bk3710_set_pio_mode(ide_drive_t *drive, u8 pio)
236static void __devinit palm_bk3710_chipinit(void __iomem *base) 221static void __devinit palm_bk3710_chipinit(void __iomem *base)
237{ 222{
238 /* 223 /*
239 * enable the reset_en of ATA controller so that when ata signals 224 * REVISIT: the ATA reset signal needs to be managed through a
240 * are brought out, by writing into device config. at that 225 * GPIO, which means it should come from platform_data. Until
241 * time por_n signal should not be 'Z' and have a stable value. 226 * we get and use such information, we have to trust that things
227 * have been reset before we get here.
242 */ 228 */
243 writel(0x0300, base + BK3710_MISCCTL);
244
245 /* wait for some time and deassert the reset of ATA Device. */
246 mdelay(100);
247
248 /* Deassert the Reset */
249 writel(0x0200, base + BK3710_MISCCTL);
250 229
251 /* 230 /*
252 * Program the IDETIMP Register Value based on the following assumptions 231 * Program the IDETIMP Register Value based on the following assumptions
253 * 232 *
254 * (ATA_IDETIMP_IDEEN , ENABLE ) | 233 * (ATA_IDETIMP_IDEEN , ENABLE ) |
255 * (ATA_IDETIMP_SLVTIMEN , DISABLE) |
256 * (ATA_IDETIMP_RDYSMPL , 70NS) |
257 * (ATA_IDETIMP_RDYRCVRY , 50NS) |
258 * (ATA_IDETIMP_DMAFTIM1 , PIOCOMP) |
259 * (ATA_IDETIMP_PREPOST1 , DISABLE) | 234 * (ATA_IDETIMP_PREPOST1 , DISABLE) |
260 * (ATA_IDETIMP_RDYSEN1 , DISABLE) |
261 * (ATA_IDETIMP_PIOFTIM1 , DISABLE) |
262 * (ATA_IDETIMP_DMAFTIM0 , PIOCOMP) |
263 * (ATA_IDETIMP_PREPOST0 , DISABLE) | 235 * (ATA_IDETIMP_PREPOST0 , DISABLE) |
264 * (ATA_IDETIMP_RDYSEN0 , DISABLE) | 236 *
265 * (ATA_IDETIMP_PIOFTIM0 , DISABLE) 237 * DM6446 silicon rev 2.1 and earlier have no observed net benefit
266 */ 238 * from enabling prefetch/postwrite.
267 writew(0xB388, base + BK3710_IDETIMP);
268
269 /*
270 * Configure SIDETIM Register
271 * (ATA_SIDETIM_RDYSMPS1 ,120NS ) |
272 * (ATA_SIDETIM_RDYRCYS1 ,120NS )
273 */ 239 */
274 writeb(0, base + BK3710_SIDETIM); 240 writew(BIT(15), base + BK3710_IDETIMP);
275 241
276 /* 242 /*
277 * UDMACTL Ultra-ATA DMA Control 243 * UDMACTL Ultra-ATA DMA Control
@@ -283,11 +249,11 @@ static void __devinit palm_bk3710_chipinit(void __iomem *base)
283 249
284 /* 250 /*
285 * MISCCTL Miscellaneous Conrol Register 251 * MISCCTL Miscellaneous Conrol Register
286 * (ATA_MISCCTL_RSTMODEP , 1) | 252 * (ATA_MISCCTL_HWNHLD1P , 1 cycle)
287 * (ATA_MISCCTL_RESETP , 0) | 253 * (ATA_MISCCTL_HWNHLD0P , 1 cycle)
288 * (ATA_MISCCTL_TIMORIDE , 1) 254 * (ATA_MISCCTL_TIMORIDE , 1)
289 */ 255 */
290 writel(0x201, base + BK3710_MISCCTL); 256 writel(0x001, base + BK3710_MISCCTL);
291 257
292 /* 258 /*
293 * IORDYTMP IORDY Timer for Primary Register 259 * IORDYTMP IORDY Timer for Primary Register
@@ -357,10 +323,9 @@ static int __init palm_bk3710_probe(struct platform_device *pdev)
357 323
358 clk_enable(clk); 324 clk_enable(clk);
359 rate = clk_get_rate(clk); 325 rate = clk_get_rate(clk);
360 ideclk_period = 1000000000UL / rate;
361 326
362 /* Register the IDE interface with Linux ATA Interface */ 327 /* NOTE: round *down* to meet minimum timings; we count in clocks */
363 memset(&hw, 0, sizeof(hw)); 328 ideclk_period = 1000000000UL / rate;
364 329
365 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 330 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
366 if (mem == NULL) { 331 if (mem == NULL) {
@@ -390,6 +355,7 @@ static int __init palm_bk3710_probe(struct platform_device *pdev)
390 /* Configure the Palm Chip controller */ 355 /* Configure the Palm Chip controller */
391 palm_bk3710_chipinit(base); 356 palm_bk3710_chipinit(base);
392 357
358 memset(&hw, 0, sizeof(hw));
393 for (i = 0; i < IDE_NR_PORTS - 2; i++) 359 for (i = 0; i < IDE_NR_PORTS - 2; i++)
394 hw.io_ports_array[i] = (unsigned long) 360 hw.io_ports_array[i] = (unsigned long)
395 (base + IDE_PALM_ATA_PRI_REG_OFFSET + i); 361 (base + IDE_PALM_ATA_PRI_REG_OFFSET + i);
@@ -402,6 +368,7 @@ static int __init palm_bk3710_probe(struct platform_device *pdev)
402 palm_bk3710_port_info.udma_mask = rate < 100000000 ? ATA_UDMA4 : 368 palm_bk3710_port_info.udma_mask = rate < 100000000 ? ATA_UDMA4 :
403 ATA_UDMA5; 369 ATA_UDMA5;
404 370
371 /* Register the IDE interface with Linux */
405 rc = ide_host_add(&palm_bk3710_port_info, hws, NULL); 372 rc = ide_host_add(&palm_bk3710_port_info, hws, NULL);
406 if (rc) 373 if (rc)
407 goto out; 374 goto out;
diff --git a/drivers/ide/pmac.c b/drivers/ide/pmac.c
index 052b9bf1f8fb..f76e4e6b408f 100644
--- a/drivers/ide/pmac.c
+++ b/drivers/ide/pmac.c
@@ -1682,7 +1682,7 @@ static int __devinit pmac_ide_init_dma(ide_hwif_t *hwif,
1682 * The +2 is +1 for the stop command and +1 to allow for 1682 * The +2 is +1 for the stop command and +1 to allow for
1683 * aligning the start address to a multiple of 16 bytes. 1683 * aligning the start address to a multiple of 16 bytes.
1684 */ 1684 */
1685 pmif->dma_table_cpu = (struct dbdma_cmd*)pci_alloc_consistent( 1685 pmif->dma_table_cpu = pci_alloc_consistent(
1686 dev, 1686 dev,
1687 (MAX_DCMDS + 2) * sizeof(struct dbdma_cmd), 1687 (MAX_DCMDS + 2) * sizeof(struct dbdma_cmd),
1688 &hwif->dmatable_dma); 1688 &hwif->dmatable_dma);
diff --git a/drivers/ide/q40ide.c b/drivers/ide/q40ide.c
index d007e7f66598..c79346679244 100644
--- a/drivers/ide/q40ide.c
+++ b/drivers/ide/q40ide.c
@@ -16,6 +16,8 @@
16#include <linux/blkdev.h> 16#include <linux/blkdev.h>
17#include <linux/ide.h> 17#include <linux/ide.h>
18 18
19#include <asm/ide.h>
20
19 /* 21 /*
20 * Bases of the IDE interfaces 22 * Bases of the IDE interfaces
21 */ 23 */
@@ -77,8 +79,10 @@ static void q40ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
77{ 79{
78 unsigned long data_addr = drive->hwif->io_ports.data_addr; 80 unsigned long data_addr = drive->hwif->io_ports.data_addr;
79 81
80 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 82 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
81 return insw(data_addr, buf, (len + 1) / 2); 83 __ide_mm_insw(data_addr, buf, (len + 1) / 2);
84 return;
85 }
82 86
83 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 87 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
84} 88}
@@ -88,8 +92,10 @@ static void q40ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
88{ 92{
89 unsigned long data_addr = drive->hwif->io_ports.data_addr; 93 unsigned long data_addr = drive->hwif->io_ports.data_addr;
90 94
91 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 95 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
92 return outsw(data_addr, buf, (len + 1) / 2); 96 __ide_mm_outsw(data_addr, buf, (len + 1) / 2);
97 return;
98 }
93 99
94 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 100 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
95} 101}
diff --git a/drivers/ide/scc_pata.c b/drivers/ide/scc_pata.c
index 6d8dbd9c10bc..5be41f25204f 100644
--- a/drivers/ide/scc_pata.c
+++ b/drivers/ide/scc_pata.c
@@ -337,7 +337,6 @@ static void scc_dma_start(ide_drive_t *drive)
337 337
338 /* start DMA */ 338 /* start DMA */
339 scc_ide_outb(dma_cmd | 1, hwif->dma_base); 339 scc_ide_outb(dma_cmd | 1, hwif->dma_base);
340 wmb();
341} 340}
342 341
343static int __scc_dma_end(ide_drive_t *drive) 342static int __scc_dma_end(ide_drive_t *drive)
@@ -354,7 +353,6 @@ static int __scc_dma_end(ide_drive_t *drive)
354 /* clear the INTR & ERROR bits */ 353 /* clear the INTR & ERROR bits */
355 scc_ide_outb(dma_stat | 6, hwif->dma_base + 4); 354 scc_ide_outb(dma_stat | 6, hwif->dma_base + 4);
356 /* verify good DMA status */ 355 /* verify good DMA status */
357 wmb();
358 return (dma_stat & 7) != 4 ? (0x10 | dma_stat) : 0; 356 return (dma_stat & 7) != 4 ? (0x10 | dma_stat) : 0;
359} 357}
360 358
@@ -647,77 +645,40 @@ static int __devinit init_setup_scc(struct pci_dev *dev,
647 return rc; 645 return rc;
648} 646}
649 647
650static void scc_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) 648static void scc_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
651{ 649{
652 struct ide_io_ports *io_ports = &drive->hwif->io_ports; 650 struct ide_io_ports *io_ports = &drive->hwif->io_ports;
653 struct ide_taskfile *tf = &cmd->tf; 651
654 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF; 652 if (valid & IDE_VALID_FEATURE)
655
656 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
657 HIHI = 0xFF;
658
659 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
660 scc_ide_outb(tf->hob_feature, io_ports->feature_addr);
661 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
662 scc_ide_outb(tf->hob_nsect, io_ports->nsect_addr);
663 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
664 scc_ide_outb(tf->hob_lbal, io_ports->lbal_addr);
665 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
666 scc_ide_outb(tf->hob_lbam, io_ports->lbam_addr);
667 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
668 scc_ide_outb(tf->hob_lbah, io_ports->lbah_addr);
669
670 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
671 scc_ide_outb(tf->feature, io_ports->feature_addr); 653 scc_ide_outb(tf->feature, io_ports->feature_addr);
672 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT) 654 if (valid & IDE_VALID_NSECT)
673 scc_ide_outb(tf->nsect, io_ports->nsect_addr); 655 scc_ide_outb(tf->nsect, io_ports->nsect_addr);
674 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL) 656 if (valid & IDE_VALID_LBAL)
675 scc_ide_outb(tf->lbal, io_ports->lbal_addr); 657 scc_ide_outb(tf->lbal, io_ports->lbal_addr);
676 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM) 658 if (valid & IDE_VALID_LBAM)
677 scc_ide_outb(tf->lbam, io_ports->lbam_addr); 659 scc_ide_outb(tf->lbam, io_ports->lbam_addr);
678 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH) 660 if (valid & IDE_VALID_LBAH)
679 scc_ide_outb(tf->lbah, io_ports->lbah_addr); 661 scc_ide_outb(tf->lbah, io_ports->lbah_addr);
680 662 if (valid & IDE_VALID_DEVICE)
681 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE) 663 scc_ide_outb(tf->device, io_ports->device_addr);
682 scc_ide_outb((tf->device & HIHI) | drive->select,
683 io_ports->device_addr);
684} 664}
685 665
686static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 666static void scc_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
687{ 667{
688 struct ide_io_ports *io_ports = &drive->hwif->io_ports; 668 struct ide_io_ports *io_ports = &drive->hwif->io_ports;
689 struct ide_taskfile *tf = &cmd->tf;
690
691 /* be sure we're looking at the low order bits */
692 scc_ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
693 669
694 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR) 670 if (valid & IDE_VALID_ERROR)
695 tf->error = scc_ide_inb(io_ports->feature_addr); 671 tf->error = scc_ide_inb(io_ports->feature_addr);
696 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT) 672 if (valid & IDE_VALID_NSECT)
697 tf->nsect = scc_ide_inb(io_ports->nsect_addr); 673 tf->nsect = scc_ide_inb(io_ports->nsect_addr);
698 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL) 674 if (valid & IDE_VALID_LBAL)
699 tf->lbal = scc_ide_inb(io_ports->lbal_addr); 675 tf->lbal = scc_ide_inb(io_ports->lbal_addr);
700 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM) 676 if (valid & IDE_VALID_LBAM)
701 tf->lbam = scc_ide_inb(io_ports->lbam_addr); 677 tf->lbam = scc_ide_inb(io_ports->lbam_addr);
702 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH) 678 if (valid & IDE_VALID_LBAH)
703 tf->lbah = scc_ide_inb(io_ports->lbah_addr); 679 tf->lbah = scc_ide_inb(io_ports->lbah_addr);
704 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE) 680 if (valid & IDE_VALID_DEVICE)
705 tf->device = scc_ide_inb(io_ports->device_addr); 681 tf->device = scc_ide_inb(io_ports->device_addr);
706
707 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
708 scc_ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
709
710 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
711 tf->hob_error = scc_ide_inb(io_ports->feature_addr);
712 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
713 tf->hob_nsect = scc_ide_inb(io_ports->nsect_addr);
714 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
715 tf->hob_lbal = scc_ide_inb(io_ports->lbal_addr);
716 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
717 tf->hob_lbam = scc_ide_inb(io_ports->lbam_addr);
718 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
719 tf->hob_lbah = scc_ide_inb(io_ports->lbah_addr);
720 }
721} 682}
722 683
723static void scc_input_data(ide_drive_t *drive, struct ide_cmd *cmd, 684static void scc_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
diff --git a/drivers/ide/tx4938ide.c b/drivers/ide/tx4938ide.c
index 4cb79c4c2604..e33d764e2945 100644
--- a/drivers/ide/tx4938ide.c
+++ b/drivers/ide/tx4938ide.c
@@ -72,91 +72,6 @@ static void tx4938ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
72#ifdef __BIG_ENDIAN 72#ifdef __BIG_ENDIAN
73 73
74/* custom iops (independent from SWAP_IO_SPACE) */ 74/* custom iops (independent from SWAP_IO_SPACE) */
75static u8 tx4938ide_inb(unsigned long port)
76{
77 return __raw_readb((void __iomem *)port);
78}
79
80static void tx4938ide_outb(u8 value, unsigned long port)
81{
82 __raw_writeb(value, (void __iomem *)port);
83}
84
85static void tx4938ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
86{
87 ide_hwif_t *hwif = drive->hwif;
88 struct ide_io_ports *io_ports = &hwif->io_ports;
89 struct ide_taskfile *tf = &cmd->tf;
90 u8 HIHI = cmd->tf_flags & IDE_TFLAG_LBA48 ? 0xE0 : 0xEF;
91
92 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
93 HIHI = 0xFF;
94
95 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
96 tx4938ide_outb(tf->hob_feature, io_ports->feature_addr);
97 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
98 tx4938ide_outb(tf->hob_nsect, io_ports->nsect_addr);
99 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
100 tx4938ide_outb(tf->hob_lbal, io_ports->lbal_addr);
101 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
102 tx4938ide_outb(tf->hob_lbam, io_ports->lbam_addr);
103 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
104 tx4938ide_outb(tf->hob_lbah, io_ports->lbah_addr);
105
106 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
107 tx4938ide_outb(tf->feature, io_ports->feature_addr);
108 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
109 tx4938ide_outb(tf->nsect, io_ports->nsect_addr);
110 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
111 tx4938ide_outb(tf->lbal, io_ports->lbal_addr);
112 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
113 tx4938ide_outb(tf->lbam, io_ports->lbam_addr);
114 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
115 tx4938ide_outb(tf->lbah, io_ports->lbah_addr);
116
117 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
118 tx4938ide_outb((tf->device & HIHI) | drive->select,
119 io_ports->device_addr);
120}
121
122static void tx4938ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
123{
124 ide_hwif_t *hwif = drive->hwif;
125 struct ide_io_ports *io_ports = &hwif->io_ports;
126 struct ide_taskfile *tf = &cmd->tf;
127
128 /* be sure we're looking at the low order bits */
129 tx4938ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
130
131 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
132 tf->error = tx4938ide_inb(io_ports->feature_addr);
133 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
134 tf->nsect = tx4938ide_inb(io_ports->nsect_addr);
135 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
136 tf->lbal = tx4938ide_inb(io_ports->lbal_addr);
137 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
138 tf->lbam = tx4938ide_inb(io_ports->lbam_addr);
139 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
140 tf->lbah = tx4938ide_inb(io_ports->lbah_addr);
141 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
142 tf->device = tx4938ide_inb(io_ports->device_addr);
143
144 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
145 tx4938ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
146
147 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
148 tf->hob_error = tx4938ide_inb(io_ports->feature_addr);
149 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
150 tf->hob_nsect = tx4938ide_inb(io_ports->nsect_addr);
151 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
152 tf->hob_lbal = tx4938ide_inb(io_ports->lbal_addr);
153 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
154 tf->hob_lbam = tx4938ide_inb(io_ports->lbam_addr);
155 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
156 tf->hob_lbah = tx4938ide_inb(io_ports->lbah_addr);
157 }
158}
159
160static void tx4938ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd, 75static void tx4938ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
161 void *buf, unsigned int len) 76 void *buf, unsigned int len)
162{ 77{
@@ -190,8 +105,8 @@ static const struct ide_tp_ops tx4938ide_tp_ops = {
190 .write_devctl = ide_write_devctl, 105 .write_devctl = ide_write_devctl,
191 106
192 .dev_select = ide_dev_select, 107 .dev_select = ide_dev_select,
193 .tf_load = tx4938ide_tf_load, 108 .tf_load = ide_tf_load,
194 .tf_read = tx4938ide_tf_read, 109 .tf_read = ide_tf_read,
195 110
196 .input_data = tx4938ide_input_data_swap, 111 .input_data = tx4938ide_input_data_swap,
197 .output_data = tx4938ide_output_data_swap, 112 .output_data = tx4938ide_output_data_swap,
diff --git a/drivers/ide/tx4939ide.c b/drivers/ide/tx4939ide.c
index 0040a9a3e26e..564422d23976 100644
--- a/drivers/ide/tx4939ide.c
+++ b/drivers/ide/tx4939ide.c
@@ -327,15 +327,15 @@ static int tx4939ide_dma_end(ide_drive_t *drive)
327 /* read and clear the INTR & ERROR bits */ 327 /* read and clear the INTR & ERROR bits */
328 dma_stat = tx4939ide_clear_dma_status(base); 328 dma_stat = tx4939ide_clear_dma_status(base);
329 329
330 wmb(); 330#define CHECK_DMA_MASK (ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR)
331 331
332 /* verify good DMA status */ 332 /* verify good DMA status */
333 if ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) == 0 && 333 if ((dma_stat & CHECK_DMA_MASK) == 0 &&
334 (ctl & (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) == 334 (ctl & (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) ==
335 (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) 335 (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST))
336 /* INT_IDE lost... bug? */ 336 /* INT_IDE lost... bug? */
337 return 0; 337 return 0;
338 return ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) != 338 return ((dma_stat & CHECK_DMA_MASK) !=
339 ATA_DMA_INTR) ? 0x10 | dma_stat : 0; 339 ATA_DMA_INTR) ? 0x10 | dma_stat : 0;
340} 340}
341 341
@@ -434,97 +434,19 @@ static void tx4939ide_tf_load_fixup(ide_drive_t *drive)
434 tx4939ide_writew(sysctl, base, TX4939IDE_Sys_Ctl); 434 tx4939ide_writew(sysctl, base, TX4939IDE_Sys_Ctl);
435} 435}
436 436
437#ifdef __BIG_ENDIAN 437static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_taskfile *tf,
438 438 u8 valid)
439/* custom iops (independent from SWAP_IO_SPACE) */
440static u8 tx4939ide_inb(unsigned long port)
441{ 439{
442 return __raw_readb((void __iomem *)port); 440 ide_tf_load(drive, tf, valid);
443}
444 441
445static void tx4939ide_outb(u8 value, unsigned long port) 442 if (valid & IDE_VALID_DEVICE)
446{
447 __raw_writeb(value, (void __iomem *)port);
448}
449
450static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
451{
452 ide_hwif_t *hwif = drive->hwif;
453 struct ide_io_ports *io_ports = &hwif->io_ports;
454 struct ide_taskfile *tf = &cmd->tf;
455 u8 HIHI = cmd->tf_flags & IDE_TFLAG_LBA48 ? 0xE0 : 0xEF;
456
457 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
458 HIHI = 0xFF;
459
460 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
461 tx4939ide_outb(tf->hob_feature, io_ports->feature_addr);
462 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
463 tx4939ide_outb(tf->hob_nsect, io_ports->nsect_addr);
464 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
465 tx4939ide_outb(tf->hob_lbal, io_ports->lbal_addr);
466 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
467 tx4939ide_outb(tf->hob_lbam, io_ports->lbam_addr);
468 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
469 tx4939ide_outb(tf->hob_lbah, io_ports->lbah_addr);
470
471 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
472 tx4939ide_outb(tf->feature, io_ports->feature_addr);
473 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
474 tx4939ide_outb(tf->nsect, io_ports->nsect_addr);
475 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
476 tx4939ide_outb(tf->lbal, io_ports->lbal_addr);
477 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
478 tx4939ide_outb(tf->lbam, io_ports->lbam_addr);
479 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
480 tx4939ide_outb(tf->lbah, io_ports->lbah_addr);
481
482 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE) {
483 tx4939ide_outb((tf->device & HIHI) | drive->select,
484 io_ports->device_addr);
485 tx4939ide_tf_load_fixup(drive); 443 tx4939ide_tf_load_fixup(drive);
486 }
487} 444}
488 445
489static void tx4939ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 446#ifdef __BIG_ENDIAN
490{
491 ide_hwif_t *hwif = drive->hwif;
492 struct ide_io_ports *io_ports = &hwif->io_ports;
493 struct ide_taskfile *tf = &cmd->tf;
494
495 /* be sure we're looking at the low order bits */
496 tx4939ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
497
498 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
499 tf->error = tx4939ide_inb(io_ports->feature_addr);
500 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
501 tf->nsect = tx4939ide_inb(io_ports->nsect_addr);
502 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
503 tf->lbal = tx4939ide_inb(io_ports->lbal_addr);
504 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
505 tf->lbam = tx4939ide_inb(io_ports->lbam_addr);
506 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
507 tf->lbah = tx4939ide_inb(io_ports->lbah_addr);
508 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
509 tf->device = tx4939ide_inb(io_ports->device_addr);
510
511 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
512 tx4939ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
513
514 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
515 tf->hob_error = tx4939ide_inb(io_ports->feature_addr);
516 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
517 tf->hob_nsect = tx4939ide_inb(io_ports->nsect_addr);
518 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
519 tf->hob_lbal = tx4939ide_inb(io_ports->lbal_addr);
520 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
521 tf->hob_lbam = tx4939ide_inb(io_ports->lbam_addr);
522 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
523 tf->hob_lbah = tx4939ide_inb(io_ports->lbah_addr);
524 }
525}
526 447
527static void tx4939ide_input_data_swap(ide_drive_t *drive, struct request *rq, 448/* custom iops (independent from SWAP_IO_SPACE) */
449static void tx4939ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
528 void *buf, unsigned int len) 450 void *buf, unsigned int len)
529{ 451{
530 unsigned long port = drive->hwif->io_ports.data_addr; 452 unsigned long port = drive->hwif->io_ports.data_addr;
@@ -536,7 +458,7 @@ static void tx4939ide_input_data_swap(ide_drive_t *drive, struct request *rq,
536 __ide_flush_dcache_range((unsigned long)buf, roundup(len, 2)); 458 __ide_flush_dcache_range((unsigned long)buf, roundup(len, 2));
537} 459}
538 460
539static void tx4939ide_output_data_swap(ide_drive_t *drive, struct request *rq, 461static void tx4939ide_output_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
540 void *buf, unsigned int len) 462 void *buf, unsigned int len)
541{ 463{
542 unsigned long port = drive->hwif->io_ports.data_addr; 464 unsigned long port = drive->hwif->io_ports.data_addr;
@@ -558,7 +480,7 @@ static const struct ide_tp_ops tx4939ide_tp_ops = {
558 480
559 .dev_select = ide_dev_select, 481 .dev_select = ide_dev_select,
560 .tf_load = tx4939ide_tf_load, 482 .tf_load = tx4939ide_tf_load,
561 .tf_read = tx4939ide_tf_read, 483 .tf_read = ide_tf_read,
562 484
563 .input_data = tx4939ide_input_data_swap, 485 .input_data = tx4939ide_input_data_swap,
564 .output_data = tx4939ide_output_data_swap, 486 .output_data = tx4939ide_output_data_swap,
@@ -566,14 +488,6 @@ static const struct ide_tp_ops tx4939ide_tp_ops = {
566 488
567#else /* __LITTLE_ENDIAN */ 489#else /* __LITTLE_ENDIAN */
568 490
569static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
570{
571 ide_tf_load(drive, cmd);
572
573 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
574 tx4939ide_tf_load_fixup(drive);
575}
576
577static const struct ide_tp_ops tx4939ide_tp_ops = { 491static const struct ide_tp_ops tx4939ide_tp_ops = {
578 .exec_command = ide_exec_command, 492 .exec_command = ide_exec_command,
579 .read_status = ide_read_status, 493 .read_status = ide_read_status,
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 2a2e50871b40..851de83ff455 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -297,21 +297,25 @@ static void cma_detach_from_dev(struct rdma_id_private *id_priv)
297 id_priv->cma_dev = NULL; 297 id_priv->cma_dev = NULL;
298} 298}
299 299
300static int cma_set_qkey(struct ib_device *device, u8 port_num, 300static int cma_set_qkey(struct rdma_id_private *id_priv)
301 enum rdma_port_space ps,
302 struct rdma_dev_addr *dev_addr, u32 *qkey)
303{ 301{
304 struct ib_sa_mcmember_rec rec; 302 struct ib_sa_mcmember_rec rec;
305 int ret = 0; 303 int ret = 0;
306 304
307 switch (ps) { 305 if (id_priv->qkey)
306 return 0;
307
308 switch (id_priv->id.ps) {
308 case RDMA_PS_UDP: 309 case RDMA_PS_UDP:
309 *qkey = RDMA_UDP_QKEY; 310 id_priv->qkey = RDMA_UDP_QKEY;
310 break; 311 break;
311 case RDMA_PS_IPOIB: 312 case RDMA_PS_IPOIB:
312 ib_addr_get_mgid(dev_addr, &rec.mgid); 313 ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid);
313 ret = ib_sa_get_mcmember_rec(device, port_num, &rec.mgid, &rec); 314 ret = ib_sa_get_mcmember_rec(id_priv->id.device,
314 *qkey = be32_to_cpu(rec.qkey); 315 id_priv->id.port_num, &rec.mgid,
316 &rec);
317 if (!ret)
318 id_priv->qkey = be32_to_cpu(rec.qkey);
315 break; 319 break;
316 default: 320 default:
317 break; 321 break;
@@ -341,12 +345,7 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv)
341 ret = ib_find_cached_gid(cma_dev->device, &gid, 345 ret = ib_find_cached_gid(cma_dev->device, &gid,
342 &id_priv->id.port_num, NULL); 346 &id_priv->id.port_num, NULL);
343 if (!ret) { 347 if (!ret) {
344 ret = cma_set_qkey(cma_dev->device, 348 cma_attach_to_dev(id_priv, cma_dev);
345 id_priv->id.port_num,
346 id_priv->id.ps, dev_addr,
347 &id_priv->qkey);
348 if (!ret)
349 cma_attach_to_dev(id_priv, cma_dev);
350 break; 349 break;
351 } 350 }
352 } 351 }
@@ -578,6 +577,10 @@ static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
578 *qp_attr_mask = IB_QP_STATE | IB_QP_PKEY_INDEX | IB_QP_PORT; 577 *qp_attr_mask = IB_QP_STATE | IB_QP_PKEY_INDEX | IB_QP_PORT;
579 578
580 if (cma_is_ud_ps(id_priv->id.ps)) { 579 if (cma_is_ud_ps(id_priv->id.ps)) {
580 ret = cma_set_qkey(id_priv);
581 if (ret)
582 return ret;
583
581 qp_attr->qkey = id_priv->qkey; 584 qp_attr->qkey = id_priv->qkey;
582 *qp_attr_mask |= IB_QP_QKEY; 585 *qp_attr_mask |= IB_QP_QKEY;
583 } else { 586 } else {
@@ -2201,6 +2204,12 @@ static int cma_sidr_rep_handler(struct ib_cm_id *cm_id,
2201 event.status = ib_event->param.sidr_rep_rcvd.status; 2204 event.status = ib_event->param.sidr_rep_rcvd.status;
2202 break; 2205 break;
2203 } 2206 }
2207 ret = cma_set_qkey(id_priv);
2208 if (ret) {
2209 event.event = RDMA_CM_EVENT_ADDR_ERROR;
2210 event.status = -EINVAL;
2211 break;
2212 }
2204 if (id_priv->qkey != rep->qkey) { 2213 if (id_priv->qkey != rep->qkey) {
2205 event.event = RDMA_CM_EVENT_UNREACHABLE; 2214 event.event = RDMA_CM_EVENT_UNREACHABLE;
2206 event.status = -EINVAL; 2215 event.status = -EINVAL;
@@ -2480,10 +2489,14 @@ static int cma_send_sidr_rep(struct rdma_id_private *id_priv,
2480 const void *private_data, int private_data_len) 2489 const void *private_data, int private_data_len)
2481{ 2490{
2482 struct ib_cm_sidr_rep_param rep; 2491 struct ib_cm_sidr_rep_param rep;
2492 int ret;
2483 2493
2484 memset(&rep, 0, sizeof rep); 2494 memset(&rep, 0, sizeof rep);
2485 rep.status = status; 2495 rep.status = status;
2486 if (status == IB_SIDR_SUCCESS) { 2496 if (status == IB_SIDR_SUCCESS) {
2497 ret = cma_set_qkey(id_priv);
2498 if (ret)
2499 return ret;
2487 rep.qp_num = id_priv->qp_num; 2500 rep.qp_num = id_priv->qp_num;
2488 rep.qkey = id_priv->qkey; 2501 rep.qkey = id_priv->qkey;
2489 } 2502 }
@@ -2713,6 +2726,10 @@ static int cma_join_ib_multicast(struct rdma_id_private *id_priv,
2713 IB_SA_MCMEMBER_REC_FLOW_LABEL | 2726 IB_SA_MCMEMBER_REC_FLOW_LABEL |
2714 IB_SA_MCMEMBER_REC_TRAFFIC_CLASS; 2727 IB_SA_MCMEMBER_REC_TRAFFIC_CLASS;
2715 2728
2729 if (id_priv->id.ps == RDMA_PS_IPOIB)
2730 comp_mask |= IB_SA_MCMEMBER_REC_RATE |
2731 IB_SA_MCMEMBER_REC_RATE_SELECTOR;
2732
2716 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, 2733 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device,
2717 id_priv->id.port_num, &rec, 2734 id_priv->id.port_num, &rec,
2718 comp_mask, GFP_KERNEL, 2735 comp_mask, GFP_KERNEL,
diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.c b/drivers/infiniband/hw/cxgb3/cxio_hal.c
index a4a82bff7100..8d71086f5a1c 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.c
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.c
@@ -152,7 +152,7 @@ static int cxio_hal_clear_qp_ctx(struct cxio_rdev *rdev_p, u32 qpid)
152 sge_cmd = qpid << 8 | 3; 152 sge_cmd = qpid << 8 | 3;
153 wqe->sge_cmd = cpu_to_be64(sge_cmd); 153 wqe->sge_cmd = cpu_to_be64(sge_cmd);
154 skb->priority = CPL_PRIORITY_CONTROL; 154 skb->priority = CPL_PRIORITY_CONTROL;
155 return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb)); 155 return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
156} 156}
157 157
158int cxio_create_cq(struct cxio_rdev *rdev_p, struct t3_cq *cq) 158int cxio_create_cq(struct cxio_rdev *rdev_p, struct t3_cq *cq)
@@ -571,7 +571,7 @@ static int cxio_hal_init_ctrl_qp(struct cxio_rdev *rdev_p)
571 (unsigned long long) rdev_p->ctrl_qp.dma_addr, 571 (unsigned long long) rdev_p->ctrl_qp.dma_addr,
572 rdev_p->ctrl_qp.workq, 1 << T3_CTRL_QP_SIZE_LOG2); 572 rdev_p->ctrl_qp.workq, 1 << T3_CTRL_QP_SIZE_LOG2);
573 skb->priority = CPL_PRIORITY_CONTROL; 573 skb->priority = CPL_PRIORITY_CONTROL;
574 return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb)); 574 return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
575err: 575err:
576 kfree_skb(skb); 576 kfree_skb(skb);
577 return err; 577 return err;
@@ -701,7 +701,7 @@ static int __cxio_tpt_op(struct cxio_rdev *rdev_p, u32 reset_tpt_entry,
701 u32 stag_idx; 701 u32 stag_idx;
702 u32 wptr; 702 u32 wptr;
703 703
704 if (rdev_p->flags) 704 if (cxio_fatal_error(rdev_p))
705 return -EIO; 705 return -EIO;
706 706
707 stag_state = stag_state > 0; 707 stag_state = stag_state > 0;
@@ -858,7 +858,7 @@ int cxio_rdma_init(struct cxio_rdev *rdev_p, struct t3_rdma_init_attr *attr)
858 wqe->qp_dma_size = cpu_to_be32(attr->qp_dma_size); 858 wqe->qp_dma_size = cpu_to_be32(attr->qp_dma_size);
859 wqe->irs = cpu_to_be32(attr->irs); 859 wqe->irs = cpu_to_be32(attr->irs);
860 skb->priority = 0; /* 0=>ToeQ; 1=>CtrlQ */ 860 skb->priority = 0; /* 0=>ToeQ; 1=>CtrlQ */
861 return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb)); 861 return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
862} 862}
863 863
864void cxio_register_ev_cb(cxio_hal_ev_callback_func_t ev_cb) 864void cxio_register_ev_cb(cxio_hal_ev_callback_func_t ev_cb)
@@ -1041,9 +1041,9 @@ void cxio_rdev_close(struct cxio_rdev *rdev_p)
1041 cxio_hal_pblpool_destroy(rdev_p); 1041 cxio_hal_pblpool_destroy(rdev_p);
1042 cxio_hal_rqtpool_destroy(rdev_p); 1042 cxio_hal_rqtpool_destroy(rdev_p);
1043 list_del(&rdev_p->entry); 1043 list_del(&rdev_p->entry);
1044 rdev_p->t3cdev_p->ulp = NULL;
1045 cxio_hal_destroy_ctrl_qp(rdev_p); 1044 cxio_hal_destroy_ctrl_qp(rdev_p);
1046 cxio_hal_destroy_resource(rdev_p->rscp); 1045 cxio_hal_destroy_resource(rdev_p->rscp);
1046 rdev_p->t3cdev_p->ulp = NULL;
1047 } 1047 }
1048} 1048}
1049 1049
diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.h b/drivers/infiniband/hw/cxgb3/cxio_hal.h
index 094a66d1480c..bfd03bf8be54 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.h
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.h
@@ -115,6 +115,11 @@ struct cxio_rdev {
115#define CXIO_ERROR_FATAL 1 115#define CXIO_ERROR_FATAL 1
116}; 116};
117 117
118static inline int cxio_fatal_error(struct cxio_rdev *rdev_p)
119{
120 return rdev_p->flags & CXIO_ERROR_FATAL;
121}
122
118static inline int cxio_num_stags(struct cxio_rdev *rdev_p) 123static inline int cxio_num_stags(struct cxio_rdev *rdev_p)
119{ 124{
120 return min((int)T3_MAX_NUM_STAG, (int)((rdev_p->rnic_info.tpt_top - rdev_p->rnic_info.tpt_base) >> 5)); 125 return min((int)T3_MAX_NUM_STAG, (int)((rdev_p->rnic_info.tpt_top - rdev_p->rnic_info.tpt_base) >> 5));
@@ -188,6 +193,7 @@ void cxio_count_scqes(struct t3_cq *cq, struct t3_wq *wq, int *count);
188void cxio_flush_hw_cq(struct t3_cq *cq); 193void cxio_flush_hw_cq(struct t3_cq *cq);
189int cxio_poll_cq(struct t3_wq *wq, struct t3_cq *cq, struct t3_cqe *cqe, 194int cxio_poll_cq(struct t3_wq *wq, struct t3_cq *cq, struct t3_cqe *cqe,
190 u8 *cqe_flushed, u64 *cookie, u32 *credit); 195 u8 *cqe_flushed, u64 *cookie, u32 *credit);
196int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb);
191 197
192#define MOD "iw_cxgb3: " 198#define MOD "iw_cxgb3: "
193#define PDBG(fmt, args...) pr_debug(MOD fmt, ## args) 199#define PDBG(fmt, args...) pr_debug(MOD fmt, ## args)
diff --git a/drivers/infiniband/hw/cxgb3/iwch.c b/drivers/infiniband/hw/cxgb3/iwch.c
index 37a4fc264a07..26fc0a4eaa74 100644
--- a/drivers/infiniband/hw/cxgb3/iwch.c
+++ b/drivers/infiniband/hw/cxgb3/iwch.c
@@ -165,12 +165,19 @@ static void close_rnic_dev(struct t3cdev *tdev)
165static void iwch_err_handler(struct t3cdev *tdev, u32 status, u32 error) 165static void iwch_err_handler(struct t3cdev *tdev, u32 status, u32 error)
166{ 166{
167 struct cxio_rdev *rdev = tdev->ulp; 167 struct cxio_rdev *rdev = tdev->ulp;
168 struct iwch_dev *rnicp = rdev_to_iwch_dev(rdev);
169 struct ib_event event;
168 170
169 if (status == OFFLOAD_STATUS_DOWN) 171 if (status == OFFLOAD_STATUS_DOWN) {
170 rdev->flags = CXIO_ERROR_FATAL; 172 rdev->flags = CXIO_ERROR_FATAL;
171 173
172 return; 174 event.device = &rnicp->ibdev;
175 event.event = IB_EVENT_DEVICE_FATAL;
176 event.element.port_num = 0;
177 ib_dispatch_event(&event);
178 }
173 179
180 return;
174} 181}
175 182
176static int __init iwch_init_module(void) 183static int __init iwch_init_module(void)
diff --git a/drivers/infiniband/hw/cxgb3/iwch.h b/drivers/infiniband/hw/cxgb3/iwch.h
index 3773453b2cf0..84735506333f 100644
--- a/drivers/infiniband/hw/cxgb3/iwch.h
+++ b/drivers/infiniband/hw/cxgb3/iwch.h
@@ -117,6 +117,11 @@ static inline struct iwch_dev *to_iwch_dev(struct ib_device *ibdev)
117 return container_of(ibdev, struct iwch_dev, ibdev); 117 return container_of(ibdev, struct iwch_dev, ibdev);
118} 118}
119 119
120static inline struct iwch_dev *rdev_to_iwch_dev(struct cxio_rdev *rdev)
121{
122 return container_of(rdev, struct iwch_dev, rdev);
123}
124
120static inline int t3b_device(const struct iwch_dev *rhp) 125static inline int t3b_device(const struct iwch_dev *rhp)
121{ 126{
122 return rhp->rdev.t3cdev_p->type == T3B; 127 return rhp->rdev.t3cdev_p->type == T3B;
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
index 8699947aaf6c..fef3f1ae7225 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -139,6 +139,38 @@ static void stop_ep_timer(struct iwch_ep *ep)
139 put_ep(&ep->com); 139 put_ep(&ep->com);
140} 140}
141 141
142int iwch_l2t_send(struct t3cdev *tdev, struct sk_buff *skb, struct l2t_entry *l2e)
143{
144 int error = 0;
145 struct cxio_rdev *rdev;
146
147 rdev = (struct cxio_rdev *)tdev->ulp;
148 if (cxio_fatal_error(rdev)) {
149 kfree_skb(skb);
150 return -EIO;
151 }
152 error = l2t_send(tdev, skb, l2e);
153 if (error)
154 kfree_skb(skb);
155 return error;
156}
157
158int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb)
159{
160 int error = 0;
161 struct cxio_rdev *rdev;
162
163 rdev = (struct cxio_rdev *)tdev->ulp;
164 if (cxio_fatal_error(rdev)) {
165 kfree_skb(skb);
166 return -EIO;
167 }
168 error = cxgb3_ofld_send(tdev, skb);
169 if (error)
170 kfree_skb(skb);
171 return error;
172}
173
142static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb) 174static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
143{ 175{
144 struct cpl_tid_release *req; 176 struct cpl_tid_release *req;
@@ -150,7 +182,7 @@ static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
150 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); 182 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
151 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, hwtid)); 183 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, hwtid));
152 skb->priority = CPL_PRIORITY_SETUP; 184 skb->priority = CPL_PRIORITY_SETUP;
153 cxgb3_ofld_send(tdev, skb); 185 iwch_cxgb3_ofld_send(tdev, skb);
154 return; 186 return;
155} 187}
156 188
@@ -172,8 +204,7 @@ int iwch_quiesce_tid(struct iwch_ep *ep)
172 req->val = cpu_to_be64(1 << S_TCB_RX_QUIESCE); 204 req->val = cpu_to_be64(1 << S_TCB_RX_QUIESCE);
173 205
174 skb->priority = CPL_PRIORITY_DATA; 206 skb->priority = CPL_PRIORITY_DATA;
175 cxgb3_ofld_send(ep->com.tdev, skb); 207 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
176 return 0;
177} 208}
178 209
179int iwch_resume_tid(struct iwch_ep *ep) 210int iwch_resume_tid(struct iwch_ep *ep)
@@ -194,8 +225,7 @@ int iwch_resume_tid(struct iwch_ep *ep)
194 req->val = 0; 225 req->val = 0;
195 226
196 skb->priority = CPL_PRIORITY_DATA; 227 skb->priority = CPL_PRIORITY_DATA;
197 cxgb3_ofld_send(ep->com.tdev, skb); 228 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
198 return 0;
199} 229}
200 230
201static void set_emss(struct iwch_ep *ep, u16 opt) 231static void set_emss(struct iwch_ep *ep, u16 opt)
@@ -252,18 +282,22 @@ static void *alloc_ep(int size, gfp_t gfp)
252 282
253void __free_ep(struct kref *kref) 283void __free_ep(struct kref *kref)
254{ 284{
255 struct iwch_ep_common *epc; 285 struct iwch_ep *ep;
256 epc = container_of(kref, struct iwch_ep_common, kref); 286 ep = container_of(container_of(kref, struct iwch_ep_common, kref),
257 PDBG("%s ep %p state %s\n", __func__, epc, states[state_read(epc)]); 287 struct iwch_ep, com);
258 kfree(epc); 288 PDBG("%s ep %p state %s\n", __func__, ep, states[state_read(&ep->com)]);
289 if (ep->com.flags & RELEASE_RESOURCES) {
290 cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid);
291 dst_release(ep->dst);
292 l2t_release(L2DATA(ep->com.tdev), ep->l2t);
293 }
294 kfree(ep);
259} 295}
260 296
261static void release_ep_resources(struct iwch_ep *ep) 297static void release_ep_resources(struct iwch_ep *ep)
262{ 298{
263 PDBG("%s ep %p tid %d\n", __func__, ep, ep->hwtid); 299 PDBG("%s ep %p tid %d\n", __func__, ep, ep->hwtid);
264 cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid); 300 ep->com.flags |= RELEASE_RESOURCES;
265 dst_release(ep->dst);
266 l2t_release(L2DATA(ep->com.tdev), ep->l2t);
267 put_ep(&ep->com); 301 put_ep(&ep->com);
268} 302}
269 303
@@ -382,7 +416,7 @@ static void abort_arp_failure(struct t3cdev *dev, struct sk_buff *skb)
382 416
383 PDBG("%s t3cdev %p\n", __func__, dev); 417 PDBG("%s t3cdev %p\n", __func__, dev);
384 req->cmd = CPL_ABORT_NO_RST; 418 req->cmd = CPL_ABORT_NO_RST;
385 cxgb3_ofld_send(dev, skb); 419 iwch_cxgb3_ofld_send(dev, skb);
386} 420}
387 421
388static int send_halfclose(struct iwch_ep *ep, gfp_t gfp) 422static int send_halfclose(struct iwch_ep *ep, gfp_t gfp)
@@ -402,8 +436,7 @@ static int send_halfclose(struct iwch_ep *ep, gfp_t gfp)
402 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_CLOSE_CON)); 436 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_CLOSE_CON));
403 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid)); 437 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
404 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_CON_REQ, ep->hwtid)); 438 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_CON_REQ, ep->hwtid));
405 l2t_send(ep->com.tdev, skb, ep->l2t); 439 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
406 return 0;
407} 440}
408 441
409static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp) 442static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp)
@@ -424,8 +457,7 @@ static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp)
424 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid)); 457 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
425 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ABORT_REQ, ep->hwtid)); 458 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ABORT_REQ, ep->hwtid));
426 req->cmd = CPL_ABORT_SEND_RST; 459 req->cmd = CPL_ABORT_SEND_RST;
427 l2t_send(ep->com.tdev, skb, ep->l2t); 460 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
428 return 0;
429} 461}
430 462
431static int send_connect(struct iwch_ep *ep) 463static int send_connect(struct iwch_ep *ep)
@@ -469,8 +501,7 @@ static int send_connect(struct iwch_ep *ep)
469 req->opt0l = htonl(opt0l); 501 req->opt0l = htonl(opt0l);
470 req->params = 0; 502 req->params = 0;
471 req->opt2 = htonl(opt2); 503 req->opt2 = htonl(opt2);
472 l2t_send(ep->com.tdev, skb, ep->l2t); 504 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
473 return 0;
474} 505}
475 506
476static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb) 507static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb)
@@ -527,7 +558,7 @@ static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb)
527 req->sndseq = htonl(ep->snd_seq); 558 req->sndseq = htonl(ep->snd_seq);
528 BUG_ON(ep->mpa_skb); 559 BUG_ON(ep->mpa_skb);
529 ep->mpa_skb = skb; 560 ep->mpa_skb = skb;
530 l2t_send(ep->com.tdev, skb, ep->l2t); 561 iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
531 start_ep_timer(ep); 562 start_ep_timer(ep);
532 state_set(&ep->com, MPA_REQ_SENT); 563 state_set(&ep->com, MPA_REQ_SENT);
533 return; 564 return;
@@ -578,8 +609,7 @@ static int send_mpa_reject(struct iwch_ep *ep, const void *pdata, u8 plen)
578 req->sndseq = htonl(ep->snd_seq); 609 req->sndseq = htonl(ep->snd_seq);
579 BUG_ON(ep->mpa_skb); 610 BUG_ON(ep->mpa_skb);
580 ep->mpa_skb = skb; 611 ep->mpa_skb = skb;
581 l2t_send(ep->com.tdev, skb, ep->l2t); 612 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
582 return 0;
583} 613}
584 614
585static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen) 615static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen)
@@ -630,8 +660,7 @@ static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen)
630 req->sndseq = htonl(ep->snd_seq); 660 req->sndseq = htonl(ep->snd_seq);
631 ep->mpa_skb = skb; 661 ep->mpa_skb = skb;
632 state_set(&ep->com, MPA_REP_SENT); 662 state_set(&ep->com, MPA_REP_SENT);
633 l2t_send(ep->com.tdev, skb, ep->l2t); 663 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
634 return 0;
635} 664}
636 665
637static int act_establish(struct t3cdev *tdev, struct sk_buff *skb, void *ctx) 666static int act_establish(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
@@ -795,7 +824,7 @@ static int update_rx_credits(struct iwch_ep *ep, u32 credits)
795 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, ep->hwtid)); 824 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, ep->hwtid));
796 req->credit_dack = htonl(V_RX_CREDITS(credits) | V_RX_FORCE_ACK(1)); 825 req->credit_dack = htonl(V_RX_CREDITS(credits) | V_RX_FORCE_ACK(1));
797 skb->priority = CPL_PRIORITY_ACK; 826 skb->priority = CPL_PRIORITY_ACK;
798 cxgb3_ofld_send(ep->com.tdev, skb); 827 iwch_cxgb3_ofld_send(ep->com.tdev, skb);
799 return credits; 828 return credits;
800} 829}
801 830
@@ -1127,8 +1156,8 @@ static int abort_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
1127 * We get 2 abort replies from the HW. The first one must 1156 * We get 2 abort replies from the HW. The first one must
1128 * be ignored except for scribbling that we need one more. 1157 * be ignored except for scribbling that we need one more.
1129 */ 1158 */
1130 if (!(ep->flags & ABORT_REQ_IN_PROGRESS)) { 1159 if (!(ep->com.flags & ABORT_REQ_IN_PROGRESS)) {
1131 ep->flags |= ABORT_REQ_IN_PROGRESS; 1160 ep->com.flags |= ABORT_REQ_IN_PROGRESS;
1132 return CPL_RET_BUF_DONE; 1161 return CPL_RET_BUF_DONE;
1133 } 1162 }
1134 1163
@@ -1203,8 +1232,7 @@ static int listen_start(struct iwch_listen_ep *ep)
1203 req->opt1 = htonl(V_CONN_POLICY(CPL_CONN_POLICY_ASK)); 1232 req->opt1 = htonl(V_CONN_POLICY(CPL_CONN_POLICY_ASK));
1204 1233
1205 skb->priority = 1; 1234 skb->priority = 1;
1206 cxgb3_ofld_send(ep->com.tdev, skb); 1235 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
1207 return 0;
1208} 1236}
1209 1237
1210static int pass_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx) 1238static int pass_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
@@ -1237,8 +1265,7 @@ static int listen_stop(struct iwch_listen_ep *ep)
1237 req->cpu_idx = 0; 1265 req->cpu_idx = 0;
1238 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_LISTSRV_REQ, ep->stid)); 1266 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_LISTSRV_REQ, ep->stid));
1239 skb->priority = 1; 1267 skb->priority = 1;
1240 cxgb3_ofld_send(ep->com.tdev, skb); 1268 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
1241 return 0;
1242} 1269}
1243 1270
1244static int close_listsrv_rpl(struct t3cdev *tdev, struct sk_buff *skb, 1271static int close_listsrv_rpl(struct t3cdev *tdev, struct sk_buff *skb,
@@ -1286,7 +1313,7 @@ static void accept_cr(struct iwch_ep *ep, __be32 peer_ip, struct sk_buff *skb)
1286 rpl->opt2 = htonl(opt2); 1313 rpl->opt2 = htonl(opt2);
1287 rpl->rsvd = rpl->opt2; /* workaround for HW bug */ 1314 rpl->rsvd = rpl->opt2; /* workaround for HW bug */
1288 skb->priority = CPL_PRIORITY_SETUP; 1315 skb->priority = CPL_PRIORITY_SETUP;
1289 l2t_send(ep->com.tdev, skb, ep->l2t); 1316 iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
1290 1317
1291 return; 1318 return;
1292} 1319}
@@ -1315,7 +1342,7 @@ static void reject_cr(struct t3cdev *tdev, u32 hwtid, __be32 peer_ip,
1315 rpl->opt0l_status = htonl(CPL_PASS_OPEN_REJECT); 1342 rpl->opt0l_status = htonl(CPL_PASS_OPEN_REJECT);
1316 rpl->opt2 = 0; 1343 rpl->opt2 = 0;
1317 rpl->rsvd = rpl->opt2; 1344 rpl->rsvd = rpl->opt2;
1318 cxgb3_ofld_send(tdev, skb); 1345 iwch_cxgb3_ofld_send(tdev, skb);
1319 } 1346 }
1320} 1347}
1321 1348
@@ -1534,8 +1561,8 @@ static int peer_abort(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
1534 * We get 2 peer aborts from the HW. The first one must 1561 * We get 2 peer aborts from the HW. The first one must
1535 * be ignored except for scribbling that we need one more. 1562 * be ignored except for scribbling that we need one more.
1536 */ 1563 */
1537 if (!(ep->flags & PEER_ABORT_IN_PROGRESS)) { 1564 if (!(ep->com.flags & PEER_ABORT_IN_PROGRESS)) {
1538 ep->flags |= PEER_ABORT_IN_PROGRESS; 1565 ep->com.flags |= PEER_ABORT_IN_PROGRESS;
1539 return CPL_RET_BUF_DONE; 1566 return CPL_RET_BUF_DONE;
1540 } 1567 }
1541 1568
@@ -1613,7 +1640,7 @@ static int peer_abort(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
1613 rpl->wr.wr_lo = htonl(V_WR_TID(ep->hwtid)); 1640 rpl->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
1614 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, ep->hwtid)); 1641 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, ep->hwtid));
1615 rpl->cmd = CPL_ABORT_NO_RST; 1642 rpl->cmd = CPL_ABORT_NO_RST;
1616 cxgb3_ofld_send(ep->com.tdev, rpl_skb); 1643 iwch_cxgb3_ofld_send(ep->com.tdev, rpl_skb);
1617out: 1644out:
1618 if (release) 1645 if (release)
1619 release_ep_resources(ep); 1646 release_ep_resources(ep);
@@ -2017,8 +2044,11 @@ int iwch_destroy_listen(struct iw_cm_id *cm_id)
2017 ep->com.rpl_done = 0; 2044 ep->com.rpl_done = 0;
2018 ep->com.rpl_err = 0; 2045 ep->com.rpl_err = 0;
2019 err = listen_stop(ep); 2046 err = listen_stop(ep);
2047 if (err)
2048 goto done;
2020 wait_event(ep->com.waitq, ep->com.rpl_done); 2049 wait_event(ep->com.waitq, ep->com.rpl_done);
2021 cxgb3_free_stid(ep->com.tdev, ep->stid); 2050 cxgb3_free_stid(ep->com.tdev, ep->stid);
2051done:
2022 err = ep->com.rpl_err; 2052 err = ep->com.rpl_err;
2023 cm_id->rem_ref(cm_id); 2053 cm_id->rem_ref(cm_id);
2024 put_ep(&ep->com); 2054 put_ep(&ep->com);
@@ -2030,12 +2060,22 @@ int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, gfp_t gfp)
2030 int ret=0; 2060 int ret=0;
2031 unsigned long flags; 2061 unsigned long flags;
2032 int close = 0; 2062 int close = 0;
2063 int fatal = 0;
2064 struct t3cdev *tdev;
2065 struct cxio_rdev *rdev;
2033 2066
2034 spin_lock_irqsave(&ep->com.lock, flags); 2067 spin_lock_irqsave(&ep->com.lock, flags);
2035 2068
2036 PDBG("%s ep %p state %s, abrupt %d\n", __func__, ep, 2069 PDBG("%s ep %p state %s, abrupt %d\n", __func__, ep,
2037 states[ep->com.state], abrupt); 2070 states[ep->com.state], abrupt);
2038 2071
2072 tdev = (struct t3cdev *)ep->com.tdev;
2073 rdev = (struct cxio_rdev *)tdev->ulp;
2074 if (cxio_fatal_error(rdev)) {
2075 fatal = 1;
2076 close_complete_upcall(ep);
2077 ep->com.state = DEAD;
2078 }
2039 switch (ep->com.state) { 2079 switch (ep->com.state) {
2040 case MPA_REQ_WAIT: 2080 case MPA_REQ_WAIT:
2041 case MPA_REQ_SENT: 2081 case MPA_REQ_SENT:
@@ -2075,7 +2115,11 @@ int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, gfp_t gfp)
2075 ret = send_abort(ep, NULL, gfp); 2115 ret = send_abort(ep, NULL, gfp);
2076 else 2116 else
2077 ret = send_halfclose(ep, gfp); 2117 ret = send_halfclose(ep, gfp);
2118 if (ret)
2119 fatal = 1;
2078 } 2120 }
2121 if (fatal)
2122 release_ep_resources(ep);
2079 return ret; 2123 return ret;
2080} 2124}
2081 2125
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.h b/drivers/infiniband/hw/cxgb3/iwch_cm.h
index d7c7e09f0996..43c0aea7eadc 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.h
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.h
@@ -147,6 +147,7 @@ enum iwch_ep_state {
147enum iwch_ep_flags { 147enum iwch_ep_flags {
148 PEER_ABORT_IN_PROGRESS = (1 << 0), 148 PEER_ABORT_IN_PROGRESS = (1 << 0),
149 ABORT_REQ_IN_PROGRESS = (1 << 1), 149 ABORT_REQ_IN_PROGRESS = (1 << 1),
150 RELEASE_RESOURCES = (1 << 2),
150}; 151};
151 152
152struct iwch_ep_common { 153struct iwch_ep_common {
@@ -161,6 +162,7 @@ struct iwch_ep_common {
161 wait_queue_head_t waitq; 162 wait_queue_head_t waitq;
162 int rpl_done; 163 int rpl_done;
163 int rpl_err; 164 int rpl_err;
165 u32 flags;
164}; 166};
165 167
166struct iwch_listen_ep { 168struct iwch_listen_ep {
@@ -188,7 +190,6 @@ struct iwch_ep {
188 u16 plen; 190 u16 plen;
189 u32 ird; 191 u32 ird;
190 u32 ord; 192 u32 ord;
191 u32 flags;
192}; 193};
193 194
194static inline struct iwch_ep *to_ep(struct iw_cm_id *cm_id) 195static inline struct iwch_ep *to_ep(struct iw_cm_id *cm_id)
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index c758fbd58478..2f546a625330 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -751,7 +751,7 @@ int iwch_post_zb_read(struct iwch_qp *qhp)
751 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)| 751 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)|
752 V_FW_RIWR_LEN(flit_cnt)); 752 V_FW_RIWR_LEN(flit_cnt));
753 skb->priority = CPL_PRIORITY_DATA; 753 skb->priority = CPL_PRIORITY_DATA;
754 return cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb); 754 return iwch_cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
755} 755}
756 756
757/* 757/*
@@ -783,7 +783,7 @@ int iwch_post_terminate(struct iwch_qp *qhp, struct respQ_msg_t *rsp_msg)
783 V_FW_RIWR_FLAGS(T3_COMPLETION_FLAG | T3_NOTIFY_FLAG)); 783 V_FW_RIWR_FLAGS(T3_COMPLETION_FLAG | T3_NOTIFY_FLAG));
784 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)); 784 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid));
785 skb->priority = CPL_PRIORITY_DATA; 785 skb->priority = CPL_PRIORITY_DATA;
786 return cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb); 786 return iwch_cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
787} 787}
788 788
789/* 789/*
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 2ccb9d31771f..ae3d7590346e 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -394,8 +394,7 @@ static int mlx4_ib_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
394 PAGE_SIZE, vma->vm_page_prot)) 394 PAGE_SIZE, vma->vm_page_prot))
395 return -EAGAIN; 395 return -EAGAIN;
396 } else if (vma->vm_pgoff == 1 && dev->dev->caps.bf_reg_size != 0) { 396 } else if (vma->vm_pgoff == 1 && dev->dev->caps.bf_reg_size != 0) {
397 /* FIXME want pgprot_writecombine() for BlueFlame pages */ 397 vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
398 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
399 398
400 if (io_remap_pfn_range(vma, vma->vm_start, 399 if (io_remap_pfn_range(vma, vma->vm_start,
401 to_mucontext(context)->uar.pfn + 400 to_mucontext(context)->uar.pfn +
diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
index 04b12ad23390..17621de54a9f 100644
--- a/drivers/infiniband/hw/nes/nes.h
+++ b/drivers/infiniband/hw/nes/nes.h
@@ -289,8 +289,8 @@ static inline __le32 get_crc_value(struct nes_v4_quad *nes_quad)
289static inline void 289static inline void
290set_wqe_64bit_value(__le32 *wqe_words, u32 index, u64 value) 290set_wqe_64bit_value(__le32 *wqe_words, u32 index, u64 value)
291{ 291{
292 wqe_words[index] = cpu_to_le32((u32) ((unsigned long)value)); 292 wqe_words[index] = cpu_to_le32((u32) value);
293 wqe_words[index + 1] = cpu_to_le32((u32)(upper_32_bits((unsigned long)value))); 293 wqe_words[index + 1] = cpu_to_le32(upper_32_bits(value));
294} 294}
295 295
296static inline void 296static inline void
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
index 52425154acd4..dbd9a75474e3 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -426,6 +426,7 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
426 if (type == NES_TIMER_TYPE_CLOSE) { 426 if (type == NES_TIMER_TYPE_CLOSE) {
427 new_send->timetosend += (HZ/10); 427 new_send->timetosend += (HZ/10);
428 if (cm_node->recv_entry) { 428 if (cm_node->recv_entry) {
429 kfree(new_send);
429 WARN_ON(1); 430 WARN_ON(1);
430 return -EINVAL; 431 return -EINVAL;
431 } 432 }
@@ -445,8 +446,8 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
445 if (ret != NETDEV_TX_OK) { 446 if (ret != NETDEV_TX_OK) {
446 nes_debug(NES_DBG_CM, "Error sending packet %p " 447 nes_debug(NES_DBG_CM, "Error sending packet %p "
447 "(jiffies = %lu)\n", new_send, jiffies); 448 "(jiffies = %lu)\n", new_send, jiffies);
448 atomic_dec(&new_send->skb->users);
449 new_send->timetosend = jiffies; 449 new_send->timetosend = jiffies;
450 ret = NETDEV_TX_OK;
450 } else { 451 } else {
451 cm_packets_sent++; 452 cm_packets_sent++;
452 if (!send_retrans) { 453 if (!send_retrans) {
@@ -630,7 +631,6 @@ static void nes_cm_timer_tick(unsigned long pass)
630 nes_debug(NES_DBG_CM, "rexmit failed for " 631 nes_debug(NES_DBG_CM, "rexmit failed for "
631 "node=%p\n", cm_node); 632 "node=%p\n", cm_node);
632 cm_packets_bounced++; 633 cm_packets_bounced++;
633 atomic_dec(&send_entry->skb->users);
634 send_entry->retrycount--; 634 send_entry->retrycount--;
635 nexttimeout = jiffies + NES_SHORT_TIME; 635 nexttimeout = jiffies + NES_SHORT_TIME;
636 settimer = 1; 636 settimer = 1;
@@ -666,11 +666,6 @@ static void nes_cm_timer_tick(unsigned long pass)
666 666
667 spin_unlock_irqrestore(&cm_node->retrans_list_lock, flags); 667 spin_unlock_irqrestore(&cm_node->retrans_list_lock, flags);
668 rem_ref_cm_node(cm_node->cm_core, cm_node); 668 rem_ref_cm_node(cm_node->cm_core, cm_node);
669 if (ret != NETDEV_TX_OK) {
670 nes_debug(NES_DBG_CM, "rexmit failed for cm_node=%p\n",
671 cm_node);
672 break;
673 }
674 } 669 }
675 670
676 if (settimer) { 671 if (settimer) {
@@ -1262,7 +1257,6 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
1262 cm_node->nesqp = NULL; 1257 cm_node->nesqp = NULL;
1263 } 1258 }
1264 1259
1265 cm_node->freed = 1;
1266 kfree(cm_node); 1260 kfree(cm_node);
1267 return 0; 1261 return 0;
1268} 1262}
@@ -1999,13 +1993,17 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
1999 if (loopbackremotelistener == NULL) { 1993 if (loopbackremotelistener == NULL) {
2000 create_event(cm_node, NES_CM_EVENT_ABORTED); 1994 create_event(cm_node, NES_CM_EVENT_ABORTED);
2001 } else { 1995 } else {
2002 atomic_inc(&cm_loopbacks);
2003 loopback_cm_info = *cm_info; 1996 loopback_cm_info = *cm_info;
2004 loopback_cm_info.loc_port = cm_info->rem_port; 1997 loopback_cm_info.loc_port = cm_info->rem_port;
2005 loopback_cm_info.rem_port = cm_info->loc_port; 1998 loopback_cm_info.rem_port = cm_info->loc_port;
2006 loopback_cm_info.cm_id = loopbackremotelistener->cm_id; 1999 loopback_cm_info.cm_id = loopbackremotelistener->cm_id;
2007 loopbackremotenode = make_cm_node(cm_core, nesvnic, 2000 loopbackremotenode = make_cm_node(cm_core, nesvnic,
2008 &loopback_cm_info, loopbackremotelistener); 2001 &loopback_cm_info, loopbackremotelistener);
2002 if (!loopbackremotenode) {
2003 rem_ref_cm_node(cm_node->cm_core, cm_node);
2004 return NULL;
2005 }
2006 atomic_inc(&cm_loopbacks);
2009 loopbackremotenode->loopbackpartner = cm_node; 2007 loopbackremotenode->loopbackpartner = cm_node;
2010 loopbackremotenode->tcp_cntxt.rcv_wscale = 2008 loopbackremotenode->tcp_cntxt.rcv_wscale =
2011 NES_CM_DEFAULT_RCV_WND_SCALE; 2009 NES_CM_DEFAULT_RCV_WND_SCALE;
@@ -2690,6 +2688,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
2690 struct ib_mr *ibmr = NULL; 2688 struct ib_mr *ibmr = NULL;
2691 struct ib_phys_buf ibphysbuf; 2689 struct ib_phys_buf ibphysbuf;
2692 struct nes_pd *nespd; 2690 struct nes_pd *nespd;
2691 u64 tagged_offset;
2693 2692
2694 2693
2695 2694
@@ -2755,10 +2754,11 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
2755 ibphysbuf.addr = nesqp->ietf_frame_pbase; 2754 ibphysbuf.addr = nesqp->ietf_frame_pbase;
2756 ibphysbuf.size = conn_param->private_data_len + 2755 ibphysbuf.size = conn_param->private_data_len +
2757 sizeof(struct ietf_mpa_frame); 2756 sizeof(struct ietf_mpa_frame);
2757 tagged_offset = (u64)(unsigned long)nesqp->ietf_frame;
2758 ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd, 2758 ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd,
2759 &ibphysbuf, 1, 2759 &ibphysbuf, 1,
2760 IB_ACCESS_LOCAL_WRITE, 2760 IB_ACCESS_LOCAL_WRITE,
2761 (u64 *)&nesqp->ietf_frame); 2761 &tagged_offset);
2762 if (!ibmr) { 2762 if (!ibmr) {
2763 nes_debug(NES_DBG_CM, "Unable to register memory region" 2763 nes_debug(NES_DBG_CM, "Unable to register memory region"
2764 "for lSMM for cm_node = %p \n", 2764 "for lSMM for cm_node = %p \n",
@@ -2782,7 +2782,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
2782 sizeof(struct ietf_mpa_frame)); 2782 sizeof(struct ietf_mpa_frame));
2783 set_wqe_64bit_value(wqe->wqe_words, 2783 set_wqe_64bit_value(wqe->wqe_words,
2784 NES_IWARP_SQ_WQE_FRAG0_LOW_IDX, 2784 NES_IWARP_SQ_WQE_FRAG0_LOW_IDX,
2785 (u64)nesqp->ietf_frame); 2785 (u64)(unsigned long)nesqp->ietf_frame);
2786 wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] = 2786 wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] =
2787 cpu_to_le32(conn_param->private_data_len + 2787 cpu_to_le32(conn_param->private_data_len +
2788 sizeof(struct ietf_mpa_frame)); 2788 sizeof(struct ietf_mpa_frame));
diff --git a/drivers/infiniband/hw/nes/nes_cm.h b/drivers/infiniband/hw/nes/nes_cm.h
index d5f778202eb7..80bba1892571 100644
--- a/drivers/infiniband/hw/nes/nes_cm.h
+++ b/drivers/infiniband/hw/nes/nes_cm.h
@@ -298,7 +298,6 @@ struct nes_cm_node {
298 struct nes_vnic *nesvnic; 298 struct nes_vnic *nesvnic;
299 int apbvt_set; 299 int apbvt_set;
300 int accept_pend; 300 int accept_pend;
301 int freed;
302 struct list_head timer_entry; 301 struct list_head timer_entry;
303 struct list_head reset_entry; 302 struct list_head reset_entry;
304 struct nes_qp *nesqp; 303 struct nes_qp *nesqp;
diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
index 52e734042b8e..d6fc9ae44062 100644
--- a/drivers/infiniband/hw/nes/nes_hw.c
+++ b/drivers/infiniband/hw/nes/nes_hw.c
@@ -46,6 +46,10 @@ static unsigned int nes_lro_max_aggr = NES_LRO_MAX_AGGR;
46module_param(nes_lro_max_aggr, uint, 0444); 46module_param(nes_lro_max_aggr, uint, 0444);
47MODULE_PARM_DESC(nes_lro_max_aggr, "NIC LRO max packet aggregation"); 47MODULE_PARM_DESC(nes_lro_max_aggr, "NIC LRO max packet aggregation");
48 48
49static int wide_ppm_offset;
50module_param(wide_ppm_offset, int, 0644);
51MODULE_PARM_DESC(wide_ppm_offset, "Increase CX4 interface clock ppm offset, 0=100ppm (default), 1=300ppm");
52
49static u32 crit_err_count; 53static u32 crit_err_count;
50u32 int_mod_timer_init; 54u32 int_mod_timer_init;
51u32 int_mod_cq_depth_256; 55u32 int_mod_cq_depth_256;
@@ -546,8 +550,11 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
546 msleep(1); 550 msleep(1);
547 } 551 }
548 if (int_cnt > 1) { 552 if (int_cnt > 1) {
553 u32 sds;
549 spin_lock_irqsave(&nesadapter->phy_lock, flags); 554 spin_lock_irqsave(&nesadapter->phy_lock, flags);
550 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F088); 555 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
556 sds |= 0x00000040;
557 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
551 mh_detected++; 558 mh_detected++;
552 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); 559 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET);
553 reset_value |= 0x0000003d; 560 reset_value |= 0x0000003d;
@@ -736,39 +743,49 @@ static int nes_init_serdes(struct nes_device *nesdev, u8 hw_rev, u8 port_count,
736{ 743{
737 int i; 744 int i;
738 u32 u32temp; 745 u32 u32temp;
739 u32 serdes_common_control; 746 u32 sds;
740 747
741 if (hw_rev != NE020_REV) { 748 if (hw_rev != NE020_REV) {
742 /* init serdes 0 */ 749 /* init serdes 0 */
750 if (wide_ppm_offset && (nesadapter->phy_type[0] == NES_PHY_TYPE_CX4))
751 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000FFFAA);
752 else
753 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF);
743 754
744 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF);
745 if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) { 755 if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) {
746 serdes_common_control = nes_read_indexed(nesdev, 756 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0);
747 NES_IDX_ETH_SERDES_COMMON_CONTROL0); 757 sds |= 0x00000100;
748 serdes_common_control |= 0x000000100; 758 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds);
749 nes_write_indexed(nesdev,
750 NES_IDX_ETH_SERDES_COMMON_CONTROL0,
751 serdes_common_control);
752 } else if (!OneG_Mode) {
753 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000);
754 } 759 }
755 if (((port_count > 1) && 760 if (!OneG_Mode)
756 (nesadapter->phy_type[0] != NES_PHY_TYPE_PUMA_1G)) || 761 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000);
757 ((port_count > 2) && 762
758 (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G))) { 763 if (port_count < 2)
759 /* init serdes 1 */ 764 return 0;
760 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF); 765
761 if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) { 766 /* init serdes 1 */
762 serdes_common_control = nes_read_indexed(nesdev, 767 switch (nesadapter->phy_type[1]) {
763 NES_IDX_ETH_SERDES_COMMON_CONTROL1); 768 case NES_PHY_TYPE_ARGUS:
764 serdes_common_control |= 0x000000100; 769 case NES_PHY_TYPE_SFP_D:
765 nes_write_indexed(nesdev, 770 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x00000000);
766 NES_IDX_ETH_SERDES_COMMON_CONTROL1, 771 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x00000000);
767 serdes_common_control); 772 break;
768 } else if (!OneG_Mode) { 773 case NES_PHY_TYPE_CX4:
769 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000); 774 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
770 } 775 sds &= 0xFFFFFFBF;
776 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
777 if (wide_ppm_offset)
778 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000FFFAA);
779 else
780 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF);
781 break;
782 case NES_PHY_TYPE_PUMA_1G:
783 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
784 sds |= 0x000000100;
785 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
771 } 786 }
787 if (!OneG_Mode)
788 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000);
772 } else { 789 } else {
773 /* init serdes 0 */ 790 /* init serdes 0 */
774 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, 0x00000008); 791 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, 0x00000008);
@@ -1259,203 +1276,162 @@ int nes_init_phy(struct nes_device *nesdev)
1259{ 1276{
1260 struct nes_adapter *nesadapter = nesdev->nesadapter; 1277 struct nes_adapter *nesadapter = nesdev->nesadapter;
1261 u32 counter = 0; 1278 u32 counter = 0;
1262 u32 sds_common_control0; 1279 u32 sds;
1263 u32 mac_index = nesdev->mac_index; 1280 u32 mac_index = nesdev->mac_index;
1264 u32 tx_config = 0; 1281 u32 tx_config = 0;
1265 u16 phy_data; 1282 u16 phy_data;
1266 u32 temp_phy_data = 0; 1283 u32 temp_phy_data = 0;
1267 u32 temp_phy_data2 = 0; 1284 u32 temp_phy_data2 = 0;
1268 u32 i = 0; 1285 u8 phy_type = nesadapter->phy_type[mac_index];
1286 u8 phy_index = nesadapter->phy_index[mac_index];
1269 1287
1270 if ((nesadapter->OneG_Mode) && 1288 if ((nesadapter->OneG_Mode) &&
1271 (nesadapter->phy_type[mac_index] != NES_PHY_TYPE_PUMA_1G)) { 1289 (phy_type != NES_PHY_TYPE_PUMA_1G)) {
1272 nes_debug(NES_DBG_PHY, "1G PHY, mac_index = %d.\n", mac_index); 1290 nes_debug(NES_DBG_PHY, "1G PHY, mac_index = %d.\n", mac_index);
1273 if (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_1G) { 1291 if (phy_type == NES_PHY_TYPE_1G) {
1274 printk(PFX "%s: Programming mdc config for 1G\n", __func__);
1275 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG); 1292 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
1276 tx_config &= 0xFFFFFFE3; 1293 tx_config &= 0xFFFFFFE3;
1277 tx_config |= 0x04; 1294 tx_config |= 0x04;
1278 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config); 1295 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
1279 } 1296 }
1280 1297
1281 nes_read_1G_phy_reg(nesdev, 1, nesadapter->phy_index[mac_index], &phy_data); 1298 nes_read_1G_phy_reg(nesdev, 1, phy_index, &phy_data);
1282 nes_debug(NES_DBG_PHY, "Phy data from register 1 phy address %u = 0x%X.\n", 1299 nes_write_1G_phy_reg(nesdev, 23, phy_index, 0xb000);
1283 nesadapter->phy_index[mac_index], phy_data);
1284 nes_write_1G_phy_reg(nesdev, 23, nesadapter->phy_index[mac_index], 0xb000);
1285 1300
1286 /* Reset the PHY */ 1301 /* Reset the PHY */
1287 nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], 0x8000); 1302 nes_write_1G_phy_reg(nesdev, 0, phy_index, 0x8000);
1288 udelay(100); 1303 udelay(100);
1289 counter = 0; 1304 counter = 0;
1290 do { 1305 do {
1291 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data); 1306 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1292 nes_debug(NES_DBG_PHY, "Phy data from register 0 = 0x%X.\n", phy_data); 1307 if (counter++ > 100)
1293 if (counter++ > 100) break; 1308 break;
1294 } while (phy_data & 0x8000); 1309 } while (phy_data & 0x8000);
1295 1310
1296 /* Setting no phy loopback */ 1311 /* Setting no phy loopback */
1297 phy_data &= 0xbfff; 1312 phy_data &= 0xbfff;
1298 phy_data |= 0x1140; 1313 phy_data |= 0x1140;
1299 nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], phy_data); 1314 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data);
1300 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data); 1315 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1301 nes_debug(NES_DBG_PHY, "Phy data from register 0 = 0x%X.\n", phy_data); 1316 nes_read_1G_phy_reg(nesdev, 0x17, phy_index, &phy_data);
1302 1317 nes_read_1G_phy_reg(nesdev, 0x1e, phy_index, &phy_data);
1303 nes_read_1G_phy_reg(nesdev, 0x17, nesadapter->phy_index[mac_index], &phy_data);
1304 nes_debug(NES_DBG_PHY, "Phy data from register 0x17 = 0x%X.\n", phy_data);
1305
1306 nes_read_1G_phy_reg(nesdev, 0x1e, nesadapter->phy_index[mac_index], &phy_data);
1307 nes_debug(NES_DBG_PHY, "Phy data from register 0x1e = 0x%X.\n", phy_data);
1308 1318
1309 /* Setting the interrupt mask */ 1319 /* Setting the interrupt mask */
1310 nes_read_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], &phy_data); 1320 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data);
1311 nes_debug(NES_DBG_PHY, "Phy data from register 0x19 = 0x%X.\n", phy_data); 1321 nes_write_1G_phy_reg(nesdev, 0x19, phy_index, 0xffee);
1312 nes_write_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], 0xffee); 1322 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data);
1313
1314 nes_read_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], &phy_data);
1315 nes_debug(NES_DBG_PHY, "Phy data from register 0x19 = 0x%X.\n", phy_data);
1316 1323
1317 /* turning on flow control */ 1324 /* turning on flow control */
1318 nes_read_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], &phy_data); 1325 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data);
1319 nes_debug(NES_DBG_PHY, "Phy data from register 0x4 = 0x%X.\n", phy_data); 1326 nes_write_1G_phy_reg(nesdev, 4, phy_index, (phy_data & ~(0x03E0)) | 0xc00);
1320 nes_write_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], 1327 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data);
1321 (phy_data & ~(0x03E0)) | 0xc00);
1322 /* nes_write_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index],
1323 phy_data | 0xc00); */
1324 nes_read_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], &phy_data);
1325 nes_debug(NES_DBG_PHY, "Phy data from register 0x4 = 0x%X.\n", phy_data);
1326
1327 nes_read_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index], &phy_data);
1328 nes_debug(NES_DBG_PHY, "Phy data from register 0x9 = 0x%X.\n", phy_data);
1329 /* Clear Half duplex */
1330 nes_write_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index],
1331 phy_data & ~(0x0100));
1332 nes_read_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index], &phy_data);
1333 nes_debug(NES_DBG_PHY, "Phy data from register 0x9 = 0x%X.\n", phy_data);
1334
1335 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data);
1336 nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], phy_data | 0x0300);
1337 } else {
1338 if ((nesadapter->phy_type[mac_index] == NES_PHY_TYPE_IRIS) ||
1339 (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_ARGUS)) {
1340 /* setup 10G MDIO operation */
1341 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
1342 tx_config &= 0xFFFFFFE3;
1343 tx_config |= 0x15;
1344 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
1345 }
1346 if ((nesadapter->phy_type[mac_index] == NES_PHY_TYPE_ARGUS)) {
1347 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee);
1348 1328
1349 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1329 /* Clear Half duplex */
1350 mdelay(10); 1330 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data);
1351 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee); 1331 nes_write_1G_phy_reg(nesdev, 9, phy_index, phy_data & ~(0x0100));
1352 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1332 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data);
1353 1333
1354 /* 1334 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1355 * if firmware is already running (like from a 1335 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data | 0x0300);
1356 * driver un-load/load, don't do anything.
1357 */
1358 if (temp_phy_data == temp_phy_data2) {
1359 /* configure QT2505 AMCC PHY */
1360 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0x0000, 0x8000);
1361 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc300, 0x0000);
1362 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc302, 0x0044);
1363 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc318, 0x0052);
1364 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc319, 0x0008);
1365 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc31a, 0x0098);
1366 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0026, 0x0E00);
1367 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0027, 0x0001);
1368 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0028, 0xA528);
1369 1336
1370 /* 1337 return 0;
1371 * remove micro from reset; chip boots from ROM, 1338 }
1372 * uploads EEPROM f/w image, uC executes f/w
1373 */
1374 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc300, 0x0002);
1375 1339
1376 /* 1340 if ((phy_type == NES_PHY_TYPE_IRIS) ||
1377 * wait for heart beat to start to 1341 (phy_type == NES_PHY_TYPE_ARGUS) ||
1378 * know loading is done 1342 (phy_type == NES_PHY_TYPE_SFP_D)) {
1379 */ 1343 /* setup 10G MDIO operation */
1380 counter = 0; 1344 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
1381 do { 1345 tx_config &= 0xFFFFFFE3;
1382 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee); 1346 tx_config |= 0x15;
1383 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1347 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
1384 if (counter++ > 1000) { 1348 }
1385 nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from heartbeat check <this is bad!!!> \n"); 1349 if ((phy_type == NES_PHY_TYPE_ARGUS) ||
1386 break; 1350 (phy_type == NES_PHY_TYPE_SFP_D)) {
1387 } 1351 /* Check firmware heartbeat */
1388 mdelay(100); 1352 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1389 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee); 1353 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1390 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1354 udelay(1500);
1391 } while ((temp_phy_data2 == temp_phy_data)); 1355 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1356 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1357
1358 if (temp_phy_data != temp_phy_data2)
1359 return 0;
1392 1360
1393 /* 1361 /* no heartbeat, configure the PHY */
1394 * wait for tracking to start to know 1362 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0x0000, 0x8000);
1395 * f/w is good to go 1363 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0000);
1396 */ 1364 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A);
1397 counter = 0; 1365 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052);
1398 do { 1366 if (phy_type == NES_PHY_TYPE_ARGUS) {
1399 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7fd); 1367 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x000C);
1400 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1368 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0008);
1401 if (counter++ > 1000) { 1369 } else {
1402 nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from status check <this is bad!!!> \n"); 1370 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x0004);
1403 break; 1371 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0038);
1404 } 1372 }
1405 mdelay(1000); 1373 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0098);
1406 /* 1374 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00);
1407 * nes_debug(NES_DBG_PHY, "AMCC PHY- phy_status not ready yet = 0x%02X\n", 1375 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0001);
1408 * temp_phy_data);
1409 */
1410 } while (((temp_phy_data & 0xff) != 0x50) && ((temp_phy_data & 0xff) != 0x70));
1411
1412 /* set LOS Control invert RXLOSB_I_PADINV */
1413 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd003, 0x0000);
1414 /* set LOS Control to mask of RXLOSB_I */
1415 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc314, 0x0042);
1416 /* set LED1 to input mode (LED1 and LED2 share same LED) */
1417 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd006, 0x0007);
1418 /* set LED2 to RX link_status and activity */
1419 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd007, 0x000A);
1420 /* set LED3 to RX link_status */
1421 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd008, 0x0009);
1422 1376
1423 /* 1377 /* setup LEDs */
1424 * reset the res-calibration on t2 1378 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x0007);
1425 * serdes; ensures it is stable after 1379 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x000A);
1426 * the amcc phy is stable 1380 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0009);
1427 */
1428 1381
1429 sds_common_control0 = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0); 1382 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0028, 0xA528);
1430 sds_common_control0 |= 0x1;
1431 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds_common_control0);
1432 1383
1433 /* release the res-calibration reset */ 1384 /* Bring PHY out of reset */
1434 sds_common_control0 &= 0xfffffffe; 1385 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0002);
1435 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds_common_control0);
1436 1386
1437 i = 0; 1387 /* Check for heartbeat */
1438 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040) 1388 counter = 0;
1439 && (i++ < 5000)) { 1389 mdelay(690);
1440 /* mdelay(1); */ 1390 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1441 } 1391 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1392 do {
1393 if (counter++ > 150) {
1394 nes_debug(NES_DBG_PHY, "No PHY heartbeat\n");
1395 break;
1396 }
1397 mdelay(1);
1398 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1399 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1400 } while ((temp_phy_data2 == temp_phy_data));
1442 1401
1443 /* 1402 /* wait for tracking */
1444 * wait for link train done before moving on, 1403 counter = 0;
1445 * or will get an interupt storm 1404 do {
1446 */ 1405 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7fd);
1447 counter = 0; 1406 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1448 do { 1407 if (counter++ > 300) {
1449 temp_phy_data = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0 + 1408 nes_debug(NES_DBG_PHY, "PHY did not track\n");
1450 (0x200 * (nesdev->mac_index & 1))); 1409 break;
1451 if (counter++ > 1000) {
1452 nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from link train wait <this is bad, link didnt train!!!>\n");
1453 break;
1454 }
1455 mdelay(1);
1456 } while (((temp_phy_data & 0x0f1f0000) != 0x0f0f0000));
1457 } 1410 }
1458 } 1411 mdelay(10);
1412 } while (((temp_phy_data & 0xff) != 0x50) && ((temp_phy_data & 0xff) != 0x70));
1413
1414 /* setup signal integrity */
1415 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd003, 0x0000);
1416 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00D, 0x00FE);
1417 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00E, 0x0032);
1418 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00F, 0x0002);
1419 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc314, 0x0063);
1420
1421 /* reset serdes */
1422 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
1423 mac_index * 0x200);
1424 sds |= 0x1;
1425 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
1426 mac_index * 0x200, sds);
1427 sds &= 0xfffffffe;
1428 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
1429 mac_index * 0x200, sds);
1430
1431 counter = 0;
1432 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040)
1433 && (counter++ < 5000))
1434 ;
1459 } 1435 }
1460 return 0; 1436 return 0;
1461} 1437}
@@ -2359,6 +2335,7 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2359 u16 temp_phy_data; 2335 u16 temp_phy_data;
2360 u32 pcs_val = 0x0f0f0000; 2336 u32 pcs_val = 0x0f0f0000;
2361 u32 pcs_mask = 0x0f1f0000; 2337 u32 pcs_mask = 0x0f1f0000;
2338 u32 cdr_ctrl;
2362 2339
2363 spin_lock_irqsave(&nesadapter->phy_lock, flags); 2340 spin_lock_irqsave(&nesadapter->phy_lock, flags);
2364 if (nesadapter->mac_sw_state[mac_number] != NES_MAC_SW_IDLE) { 2341 if (nesadapter->mac_sw_state[mac_number] != NES_MAC_SW_IDLE) {
@@ -2473,6 +2450,7 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2473 break; 2450 break;
2474 2451
2475 case NES_PHY_TYPE_ARGUS: 2452 case NES_PHY_TYPE_ARGUS:
2453 case NES_PHY_TYPE_SFP_D:
2476 /* clear the alarms */ 2454 /* clear the alarms */
2477 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0x0008); 2455 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0x0008);
2478 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc001); 2456 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc001);
@@ -2483,19 +2461,18 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2483 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9004); 2461 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9004);
2484 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9005); 2462 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9005);
2485 /* check link status */ 2463 /* check link status */
2486 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 1); 2464 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003);
2487 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 2465 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
2488 u32temp = 100;
2489 do {
2490 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 1);
2491 2466
2492 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 2467 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021);
2493 if ((phy_data == temp_phy_data) || (!(--u32temp))) 2468 nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
2494 break; 2469 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021);
2495 temp_phy_data = phy_data; 2470 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
2496 } while (1); 2471
2472 phy_data = (!temp_phy_data && (phy_data == 0x8000)) ? 0x4 : 0x0;
2473
2497 nes_debug(NES_DBG_PHY, "%s: Phy data = 0x%04X, link was %s.\n", 2474 nes_debug(NES_DBG_PHY, "%s: Phy data = 0x%04X, link was %s.\n",
2498 __func__, phy_data, nesadapter->mac_link_down ? "DOWN" : "UP"); 2475 __func__, phy_data, nesadapter->mac_link_down[mac_index] ? "DOWN" : "UP");
2499 break; 2476 break;
2500 2477
2501 case NES_PHY_TYPE_PUMA_1G: 2478 case NES_PHY_TYPE_PUMA_1G:
@@ -2511,6 +2488,17 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2511 } 2488 }
2512 2489
2513 if (phy_data & 0x0004) { 2490 if (phy_data & 0x0004) {
2491 if (wide_ppm_offset &&
2492 (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_CX4) &&
2493 (nesadapter->hw_rev != NE020_REV)) {
2494 cdr_ctrl = nes_read_indexed(nesdev,
2495 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2496 mac_index * 0x200);
2497 nes_write_indexed(nesdev,
2498 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2499 mac_index * 0x200,
2500 cdr_ctrl | 0x000F0000);
2501 }
2514 nesadapter->mac_link_down[mac_index] = 0; 2502 nesadapter->mac_link_down[mac_index] = 0;
2515 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) { 2503 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) {
2516 nes_debug(NES_DBG_PHY, "The Link is UP!!. linkup was %d\n", 2504 nes_debug(NES_DBG_PHY, "The Link is UP!!. linkup was %d\n",
@@ -2525,6 +2513,17 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2525 } 2513 }
2526 } 2514 }
2527 } else { 2515 } else {
2516 if (wide_ppm_offset &&
2517 (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_CX4) &&
2518 (nesadapter->hw_rev != NE020_REV)) {
2519 cdr_ctrl = nes_read_indexed(nesdev,
2520 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2521 mac_index * 0x200);
2522 nes_write_indexed(nesdev,
2523 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2524 mac_index * 0x200,
2525 cdr_ctrl & 0xFFF0FFFF);
2526 }
2528 nesadapter->mac_link_down[mac_index] = 1; 2527 nesadapter->mac_link_down[mac_index] = 1;
2529 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) { 2528 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) {
2530 nes_debug(NES_DBG_PHY, "The Link is Down!!. linkup was %d\n", 2529 nes_debug(NES_DBG_PHY, "The Link is Down!!. linkup was %d\n",
diff --git a/drivers/infiniband/hw/nes/nes_hw.h b/drivers/infiniband/hw/nes/nes_hw.h
index f41a8710d2a8..c3654c6383fe 100644
--- a/drivers/infiniband/hw/nes/nes_hw.h
+++ b/drivers/infiniband/hw/nes/nes_hw.h
@@ -35,12 +35,14 @@
35 35
36#include <linux/inet_lro.h> 36#include <linux/inet_lro.h>
37 37
38#define NES_PHY_TYPE_CX4 1
38#define NES_PHY_TYPE_1G 2 39#define NES_PHY_TYPE_1G 2
39#define NES_PHY_TYPE_IRIS 3 40#define NES_PHY_TYPE_IRIS 3
40#define NES_PHY_TYPE_ARGUS 4 41#define NES_PHY_TYPE_ARGUS 4
41#define NES_PHY_TYPE_PUMA_1G 5 42#define NES_PHY_TYPE_PUMA_1G 5
42#define NES_PHY_TYPE_PUMA_10G 6 43#define NES_PHY_TYPE_PUMA_10G 6
43#define NES_PHY_TYPE_GLADIUS 7 44#define NES_PHY_TYPE_GLADIUS 7
45#define NES_PHY_TYPE_SFP_D 8
44 46
45#define NES_MULTICAST_PF_MAX 8 47#define NES_MULTICAST_PF_MAX 8
46 48
diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
index ecb1f6fd6276..c6e6611d3016 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -1426,49 +1426,55 @@ static int nes_netdev_get_settings(struct net_device *netdev, struct ethtool_cmd
1426 struct nes_vnic *nesvnic = netdev_priv(netdev); 1426 struct nes_vnic *nesvnic = netdev_priv(netdev);
1427 struct nes_device *nesdev = nesvnic->nesdev; 1427 struct nes_device *nesdev = nesvnic->nesdev;
1428 struct nes_adapter *nesadapter = nesdev->nesadapter; 1428 struct nes_adapter *nesadapter = nesdev->nesadapter;
1429 u32 mac_index = nesdev->mac_index;
1430 u8 phy_type = nesadapter->phy_type[mac_index];
1431 u8 phy_index = nesadapter->phy_index[mac_index];
1429 u16 phy_data; 1432 u16 phy_data;
1430 1433
1431 et_cmd->duplex = DUPLEX_FULL; 1434 et_cmd->duplex = DUPLEX_FULL;
1432 et_cmd->port = PORT_MII; 1435 et_cmd->port = PORT_MII;
1436 et_cmd->maxtxpkt = 511;
1437 et_cmd->maxrxpkt = 511;
1433 1438
1434 if (nesadapter->OneG_Mode) { 1439 if (nesadapter->OneG_Mode) {
1435 et_cmd->speed = SPEED_1000; 1440 et_cmd->speed = SPEED_1000;
1436 if (nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_PUMA_1G) { 1441 if (phy_type == NES_PHY_TYPE_PUMA_1G) {
1437 et_cmd->supported = SUPPORTED_1000baseT_Full; 1442 et_cmd->supported = SUPPORTED_1000baseT_Full;
1438 et_cmd->advertising = ADVERTISED_1000baseT_Full; 1443 et_cmd->advertising = ADVERTISED_1000baseT_Full;
1439 et_cmd->autoneg = AUTONEG_DISABLE; 1444 et_cmd->autoneg = AUTONEG_DISABLE;
1440 et_cmd->transceiver = XCVR_INTERNAL; 1445 et_cmd->transceiver = XCVR_INTERNAL;
1441 et_cmd->phy_address = nesdev->mac_index; 1446 et_cmd->phy_address = mac_index;
1442 } else { 1447 } else {
1443 et_cmd->supported = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg; 1448 et_cmd->supported = SUPPORTED_1000baseT_Full
1444 et_cmd->advertising = ADVERTISED_1000baseT_Full | ADVERTISED_Autoneg; 1449 | SUPPORTED_Autoneg;
1445 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[nesdev->mac_index], &phy_data); 1450 et_cmd->advertising = ADVERTISED_1000baseT_Full
1451 | ADVERTISED_Autoneg;
1452 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1446 if (phy_data & 0x1000) 1453 if (phy_data & 0x1000)
1447 et_cmd->autoneg = AUTONEG_ENABLE; 1454 et_cmd->autoneg = AUTONEG_ENABLE;
1448 else 1455 else
1449 et_cmd->autoneg = AUTONEG_DISABLE; 1456 et_cmd->autoneg = AUTONEG_DISABLE;
1450 et_cmd->transceiver = XCVR_EXTERNAL; 1457 et_cmd->transceiver = XCVR_EXTERNAL;
1451 et_cmd->phy_address = nesadapter->phy_index[nesdev->mac_index]; 1458 et_cmd->phy_address = phy_index;
1452 } 1459 }
1460 return 0;
1461 }
1462 if ((phy_type == NES_PHY_TYPE_IRIS) ||
1463 (phy_type == NES_PHY_TYPE_ARGUS) ||
1464 (phy_type == NES_PHY_TYPE_SFP_D)) {
1465 et_cmd->transceiver = XCVR_EXTERNAL;
1466 et_cmd->port = PORT_FIBRE;
1467 et_cmd->supported = SUPPORTED_FIBRE;
1468 et_cmd->advertising = ADVERTISED_FIBRE;
1469 et_cmd->phy_address = phy_index;
1453 } else { 1470 } else {
1454 if ((nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_IRIS) || 1471 et_cmd->transceiver = XCVR_INTERNAL;
1455 (nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_ARGUS)) { 1472 et_cmd->supported = SUPPORTED_10000baseT_Full;
1456 et_cmd->transceiver = XCVR_EXTERNAL; 1473 et_cmd->advertising = ADVERTISED_10000baseT_Full;
1457 et_cmd->port = PORT_FIBRE; 1474 et_cmd->phy_address = mac_index;
1458 et_cmd->supported = SUPPORTED_FIBRE;
1459 et_cmd->advertising = ADVERTISED_FIBRE;
1460 et_cmd->phy_address = nesadapter->phy_index[nesdev->mac_index];
1461 } else {
1462 et_cmd->transceiver = XCVR_INTERNAL;
1463 et_cmd->supported = SUPPORTED_10000baseT_Full;
1464 et_cmd->advertising = ADVERTISED_10000baseT_Full;
1465 et_cmd->phy_address = nesdev->mac_index;
1466 }
1467 et_cmd->speed = SPEED_10000;
1468 et_cmd->autoneg = AUTONEG_DISABLE;
1469 } 1475 }
1470 et_cmd->maxtxpkt = 511; 1476 et_cmd->speed = SPEED_10000;
1471 et_cmd->maxrxpkt = 511; 1477 et_cmd->autoneg = AUTONEG_DISABLE;
1472 return 0; 1478 return 0;
1473} 1479}
1474 1480
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
index 5a76a5510350..4c57f329dd50 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
@@ -70,12 +70,14 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
70 */ 70 */
71 if (ppriv->pkey == pkey) { 71 if (ppriv->pkey == pkey) {
72 result = -ENOTUNIQ; 72 result = -ENOTUNIQ;
73 priv = NULL;
73 goto err; 74 goto err;
74 } 75 }
75 76
76 list_for_each_entry(priv, &ppriv->child_intfs, list) { 77 list_for_each_entry(priv, &ppriv->child_intfs, list) {
77 if (priv->pkey == pkey) { 78 if (priv->pkey == pkey) {
78 result = -ENOTUNIQ; 79 result = -ENOTUNIQ;
80 priv = NULL;
79 goto err; 81 goto err;
80 } 82 }
81 } 83 }
@@ -96,7 +98,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
96 98
97 result = ipoib_set_dev_features(priv, ppriv->ca); 99 result = ipoib_set_dev_features(priv, ppriv->ca);
98 if (result) 100 if (result)
99 goto device_init_failed; 101 goto err;
100 102
101 priv->pkey = pkey; 103 priv->pkey = pkey;
102 104
@@ -109,7 +111,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
109 ipoib_warn(ppriv, "failed to initialize subinterface: " 111 ipoib_warn(ppriv, "failed to initialize subinterface: "
110 "device %s, port %d", 112 "device %s, port %d",
111 ppriv->ca->name, ppriv->port); 113 ppriv->ca->name, ppriv->port);
112 goto device_init_failed; 114 goto err;
113 } 115 }
114 116
115 result = register_netdevice(priv->dev); 117 result = register_netdevice(priv->dev);
@@ -146,19 +148,19 @@ sysfs_failed:
146register_failed: 148register_failed:
147 ipoib_dev_cleanup(priv->dev); 149 ipoib_dev_cleanup(priv->dev);
148 150
149device_init_failed:
150 free_netdev(priv->dev);
151
152err: 151err:
153 mutex_unlock(&ppriv->vlan_mutex); 152 mutex_unlock(&ppriv->vlan_mutex);
154 rtnl_unlock(); 153 rtnl_unlock();
154 if (priv)
155 free_netdev(priv->dev);
156
155 return result; 157 return result;
156} 158}
157 159
158int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey) 160int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
159{ 161{
160 struct ipoib_dev_priv *ppriv, *priv, *tpriv; 162 struct ipoib_dev_priv *ppriv, *priv, *tpriv;
161 int ret = -ENOENT; 163 struct net_device *dev = NULL;
162 164
163 if (!capable(CAP_NET_ADMIN)) 165 if (!capable(CAP_NET_ADMIN))
164 return -EPERM; 166 return -EPERM;
@@ -172,14 +174,17 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
172 unregister_netdevice(priv->dev); 174 unregister_netdevice(priv->dev);
173 ipoib_dev_cleanup(priv->dev); 175 ipoib_dev_cleanup(priv->dev);
174 list_del(&priv->list); 176 list_del(&priv->list);
175 free_netdev(priv->dev); 177 dev = priv->dev;
176
177 ret = 0;
178 break; 178 break;
179 } 179 }
180 } 180 }
181 mutex_unlock(&ppriv->vlan_mutex); 181 mutex_unlock(&ppriv->vlan_mutex);
182 rtnl_unlock(); 182 rtnl_unlock();
183 183
184 return ret; 184 if (dev) {
185 free_netdev(dev);
186 return 0;
187 }
188
189 return -ENODEV;
185} 190}
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
index ebf4be5b7c4e..2d175b5928ff 100644
--- a/drivers/input/gameport/gameport.c
+++ b/drivers/input/gameport/gameport.c
@@ -50,9 +50,8 @@ static LIST_HEAD(gameport_list);
50 50
51static struct bus_type gameport_bus; 51static struct bus_type gameport_bus;
52 52
53static void gameport_add_driver(struct gameport_driver *drv);
54static void gameport_add_port(struct gameport *gameport); 53static void gameport_add_port(struct gameport *gameport);
55static void gameport_destroy_port(struct gameport *gameport); 54static void gameport_attach_driver(struct gameport_driver *drv);
56static void gameport_reconnect_port(struct gameport *gameport); 55static void gameport_reconnect_port(struct gameport *gameport);
57static void gameport_disconnect_port(struct gameport *gameport); 56static void gameport_disconnect_port(struct gameport *gameport);
58 57
@@ -230,7 +229,6 @@ static void gameport_find_driver(struct gameport *gameport)
230 229
231enum gameport_event_type { 230enum gameport_event_type {
232 GAMEPORT_REGISTER_PORT, 231 GAMEPORT_REGISTER_PORT,
233 GAMEPORT_REGISTER_DRIVER,
234 GAMEPORT_ATTACH_DRIVER, 232 GAMEPORT_ATTACH_DRIVER,
235}; 233};
236 234
@@ -374,8 +372,8 @@ static void gameport_handle_event(void)
374 gameport_add_port(event->object); 372 gameport_add_port(event->object);
375 break; 373 break;
376 374
377 case GAMEPORT_REGISTER_DRIVER: 375 case GAMEPORT_ATTACH_DRIVER:
378 gameport_add_driver(event->object); 376 gameport_attach_driver(event->object);
379 break; 377 break;
380 378
381 default: 379 default:
@@ -706,14 +704,14 @@ static int gameport_driver_remove(struct device *dev)
706 return 0; 704 return 0;
707} 705}
708 706
709static void gameport_add_driver(struct gameport_driver *drv) 707static void gameport_attach_driver(struct gameport_driver *drv)
710{ 708{
711 int error; 709 int error;
712 710
713 error = driver_register(&drv->driver); 711 error = driver_attach(&drv->driver);
714 if (error) 712 if (error)
715 printk(KERN_ERR 713 printk(KERN_ERR
716 "gameport: driver_register() failed for %s, error: %d\n", 714 "gameport: driver_attach() failed for %s, error: %d\n",
717 drv->driver.name, error); 715 drv->driver.name, error);
718} 716}
719 717
diff --git a/drivers/input/input.c b/drivers/input/input.c
index ec3db3ade118..935a1835de2d 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -132,6 +132,11 @@ static void input_start_autorepeat(struct input_dev *dev, int code)
132 } 132 }
133} 133}
134 134
135static void input_stop_autorepeat(struct input_dev *dev)
136{
137 del_timer(&dev->timer);
138}
139
135#define INPUT_IGNORE_EVENT 0 140#define INPUT_IGNORE_EVENT 0
136#define INPUT_PASS_TO_HANDLERS 1 141#define INPUT_PASS_TO_HANDLERS 1
137#define INPUT_PASS_TO_DEVICE 2 142#define INPUT_PASS_TO_DEVICE 2
@@ -167,6 +172,8 @@ static void input_handle_event(struct input_dev *dev,
167 __change_bit(code, dev->key); 172 __change_bit(code, dev->key);
168 if (value) 173 if (value)
169 input_start_autorepeat(dev, code); 174 input_start_autorepeat(dev, code);
175 else
176 input_stop_autorepeat(dev);
170 } 177 }
171 178
172 disposition = INPUT_PASS_TO_HANDLERS; 179 disposition = INPUT_PASS_TO_HANDLERS;
@@ -737,11 +744,11 @@ static inline void input_wakeup_procfs_readers(void)
737 744
738static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait) 745static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait)
739{ 746{
740 int state = input_devices_state;
741
742 poll_wait(file, &input_devices_poll_wait, wait); 747 poll_wait(file, &input_devices_poll_wait, wait);
743 if (state != input_devices_state) 748 if (file->f_version != input_devices_state) {
749 file->f_version = input_devices_state;
744 return POLLIN | POLLRDNORM; 750 return POLLIN | POLLRDNORM;
751 }
745 752
746 return 0; 753 return 0;
747} 754}
@@ -1542,7 +1549,6 @@ int input_register_handle(struct input_handle *handle)
1542 return error; 1549 return error;
1543 list_add_tail_rcu(&handle->d_node, &dev->h_list); 1550 list_add_tail_rcu(&handle->d_node, &dev->h_list);
1544 mutex_unlock(&dev->mutex); 1551 mutex_unlock(&dev->mutex);
1545 synchronize_rcu();
1546 1552
1547 /* 1553 /*
1548 * Since we are supposed to be called from ->connect() 1554 * Since we are supposed to be called from ->connect()
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 45470f18d7e9..444dec07e5d8 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -229,7 +229,8 @@ struct atkbd {
229/* 229/*
230 * System-specific ketymap fixup routine 230 * System-specific ketymap fixup routine
231 */ 231 */
232static void (*atkbd_platform_fixup)(struct atkbd *); 232static void (*atkbd_platform_fixup)(struct atkbd *, const void *data);
233static void *atkbd_platform_fixup_data;
233 234
234static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf, 235static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf,
235 ssize_t (*handler)(struct atkbd *, char *)); 236 ssize_t (*handler)(struct atkbd *, char *));
@@ -834,87 +835,64 @@ static void atkbd_disconnect(struct serio *serio)
834} 835}
835 836
836/* 837/*
837 * Most special keys (Fn+F?) on Dell laptops do not generate release 838 * generate release events for the keycodes given in data
838 * events so we have to do it ourselves.
839 */ 839 */
840static void atkbd_dell_laptop_keymap_fixup(struct atkbd *atkbd) 840static void atkbd_apply_forced_release_keylist(struct atkbd* atkbd,
841 const void *data)
841{ 842{
842 static const unsigned int forced_release_keys[] = { 843 const unsigned int *keys = data;
843 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8f, 0x93, 844 unsigned int i;
844 };
845 int i;
846 845
847 if (atkbd->set == 2) 846 if (atkbd->set == 2)
848 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++) 847 for (i = 0; keys[i] != -1U; i++)
849 __set_bit(forced_release_keys[i], 848 __set_bit(keys[i], atkbd->force_release_mask);
850 atkbd->force_release_mask);
851} 849}
852 850
853/* 851/*
852 * Most special keys (Fn+F?) on Dell laptops do not generate release
853 * events so we have to do it ourselves.
854 */
855static unsigned int atkbd_dell_laptop_forced_release_keys[] = {
856 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8f, 0x93, -1U
857};
858
859/*
854 * Perform fixup for HP system that doesn't generate release 860 * Perform fixup for HP system that doesn't generate release
855 * for its video switch 861 * for its video switch
856 */ 862 */
857static void atkbd_hp_keymap_fixup(struct atkbd *atkbd) 863static unsigned int atkbd_hp_forced_release_keys[] = {
858{ 864 0x94, -1U
859 static const unsigned int forced_release_keys[] = { 865};
860 0x94,
861 };
862 int i;
863
864 if (atkbd->set == 2)
865 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
866 __set_bit(forced_release_keys[i],
867 atkbd->force_release_mask);
868}
869 866
870/* 867/*
871 * Inventec system with broken key release on volume keys 868 * Inventec system with broken key release on volume keys
872 */ 869 */
873static void atkbd_inventec_keymap_fixup(struct atkbd *atkbd) 870static unsigned int atkbd_inventec_forced_release_keys[] = {
874{ 871 0xae, 0xb0, -1U
875 const unsigned int forced_release_keys[] = { 872};
876 0xae, 0xb0,
877 };
878 int i;
879
880 if (atkbd->set == 2)
881 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
882 __set_bit(forced_release_keys[i],
883 atkbd->force_release_mask);
884}
885 873
886/* 874/*
887 * Perform fixup for HP Pavilion ZV6100 laptop that doesn't generate release 875 * Perform fixup for HP Pavilion ZV6100 laptop that doesn't generate release
888 * for its volume buttons 876 * for its volume buttons
889 */ 877 */
890static void atkbd_hp_zv6100_keymap_fixup(struct atkbd *atkbd) 878static unsigned int atkbd_hp_zv6100_forced_release_keys[] = {
891{ 879 0xae, 0xb0, -1U
892 const unsigned int forced_release_keys[] = { 880};
893 0xae, 0xb0,
894 };
895 int i;
896
897 if (atkbd->set == 2)
898 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
899 __set_bit(forced_release_keys[i],
900 atkbd->force_release_mask);
901}
902 881
903/* 882/*
904 * Samsung NC10 with Fn+F? key release not working 883 * Samsung NC10,NC20 with Fn+F? key release not working
905 */ 884 */
906static void atkbd_samsung_keymap_fixup(struct atkbd *atkbd) 885static unsigned int atkbd_samsung_forced_release_keys[] = {
907{ 886 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0xb3, 0xf7, 0xf9, -1U
908 const unsigned int forced_release_keys[] = { 887};
909 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0xb3, 0xf7, 0xf9,
910 };
911 int i;
912 888
913 if (atkbd->set == 2) 889/*
914 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++) 890 * The volume up and volume down special keys on a Fujitsu Amilo PA 1510 laptop
915 __set_bit(forced_release_keys[i], 891 * do not generate release events so we have to do it ourselves.
916 atkbd->force_release_mask); 892 */
917} 893static unsigned int atkbd_amilo_pa1510_forced_release_keys[] = {
894 0xb0, 0xae, -1U
895};
918 896
919/* 897/*
920 * atkbd_set_keycode_table() initializes keyboard's keycode table 898 * atkbd_set_keycode_table() initializes keyboard's keycode table
@@ -967,7 +945,7 @@ static void atkbd_set_keycode_table(struct atkbd *atkbd)
967 * Perform additional fixups 945 * Perform additional fixups
968 */ 946 */
969 if (atkbd_platform_fixup) 947 if (atkbd_platform_fixup)
970 atkbd_platform_fixup(atkbd); 948 atkbd_platform_fixup(atkbd, atkbd_platform_fixup_data);
971} 949}
972 950
973/* 951/*
@@ -1492,9 +1470,11 @@ static ssize_t atkbd_show_err_count(struct atkbd *atkbd, char *buf)
1492 return sprintf(buf, "%lu\n", atkbd->err_count); 1470 return sprintf(buf, "%lu\n", atkbd->err_count);
1493} 1471}
1494 1472
1495static int __init atkbd_setup_fixup(const struct dmi_system_id *id) 1473static int __init atkbd_setup_forced_release(const struct dmi_system_id *id)
1496{ 1474{
1497 atkbd_platform_fixup = id->driver_data; 1475 atkbd_platform_fixup = atkbd_apply_forced_release_keylist;
1476 atkbd_platform_fixup_data = id->driver_data;
1477
1498 return 0; 1478 return 0;
1499} 1479}
1500 1480
@@ -1505,8 +1485,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1505 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 1485 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
1506 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */ 1486 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
1507 }, 1487 },
1508 .callback = atkbd_setup_fixup, 1488 .callback = atkbd_setup_forced_release,
1509 .driver_data = atkbd_dell_laptop_keymap_fixup, 1489 .driver_data = atkbd_dell_laptop_forced_release_keys,
1510 }, 1490 },
1511 { 1491 {
1512 .ident = "Dell Laptop", 1492 .ident = "Dell Laptop",
@@ -1514,8 +1494,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1514 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), 1494 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
1515 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */ 1495 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
1516 }, 1496 },
1517 .callback = atkbd_setup_fixup, 1497 .callback = atkbd_setup_forced_release,
1518 .driver_data = atkbd_dell_laptop_keymap_fixup, 1498 .driver_data = atkbd_dell_laptop_forced_release_keys,
1519 }, 1499 },
1520 { 1500 {
1521 .ident = "HP 2133", 1501 .ident = "HP 2133",
@@ -1523,8 +1503,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1523 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 1503 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
1524 DMI_MATCH(DMI_PRODUCT_NAME, "HP 2133"), 1504 DMI_MATCH(DMI_PRODUCT_NAME, "HP 2133"),
1525 }, 1505 },
1526 .callback = atkbd_setup_fixup, 1506 .callback = atkbd_setup_forced_release,
1527 .driver_data = atkbd_hp_keymap_fixup, 1507 .driver_data = atkbd_hp_forced_release_keys,
1528 }, 1508 },
1529 { 1509 {
1530 .ident = "HP Pavilion ZV6100", 1510 .ident = "HP Pavilion ZV6100",
@@ -1532,8 +1512,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1532 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 1512 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
1533 DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ZV6100"), 1513 DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ZV6100"),
1534 }, 1514 },
1535 .callback = atkbd_setup_fixup, 1515 .callback = atkbd_setup_forced_release,
1536 .driver_data = atkbd_hp_zv6100_keymap_fixup, 1516 .driver_data = atkbd_hp_zv6100_forced_release_keys,
1537 }, 1517 },
1538 { 1518 {
1539 .ident = "Inventec Symphony", 1519 .ident = "Inventec Symphony",
@@ -1541,8 +1521,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1541 DMI_MATCH(DMI_SYS_VENDOR, "INVENTEC"), 1521 DMI_MATCH(DMI_SYS_VENDOR, "INVENTEC"),
1542 DMI_MATCH(DMI_PRODUCT_NAME, "SYMPHONY 6.0/7.0"), 1522 DMI_MATCH(DMI_PRODUCT_NAME, "SYMPHONY 6.0/7.0"),
1543 }, 1523 },
1544 .callback = atkbd_setup_fixup, 1524 .callback = atkbd_setup_forced_release,
1545 .driver_data = atkbd_inventec_keymap_fixup, 1525 .driver_data = atkbd_inventec_forced_release_keys,
1546 }, 1526 },
1547 { 1527 {
1548 .ident = "Samsung NC10", 1528 .ident = "Samsung NC10",
@@ -1550,8 +1530,35 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1550 DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), 1530 DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
1551 DMI_MATCH(DMI_PRODUCT_NAME, "NC10"), 1531 DMI_MATCH(DMI_PRODUCT_NAME, "NC10"),
1552 }, 1532 },
1553 .callback = atkbd_setup_fixup, 1533 .callback = atkbd_setup_forced_release,
1554 .driver_data = atkbd_samsung_keymap_fixup, 1534 .driver_data = atkbd_samsung_forced_release_keys,
1535 },
1536 {
1537 .ident = "Samsung NC20",
1538 .matches = {
1539 DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
1540 DMI_MATCH(DMI_PRODUCT_NAME, "NC20"),
1541 },
1542 .callback = atkbd_setup_forced_release,
1543 .driver_data = atkbd_samsung_forced_release_keys,
1544 },
1545 {
1546 .ident = "Samsung SQ45S70S",
1547 .matches = {
1548 DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
1549 DMI_MATCH(DMI_PRODUCT_NAME, "SQ45S70S"),
1550 },
1551 .callback = atkbd_setup_forced_release,
1552 .driver_data = atkbd_samsung_forced_release_keys,
1553 },
1554 {
1555 .ident = "Fujitsu Amilo PA 1510",
1556 .matches = {
1557 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
1558 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pa 1510"),
1559 },
1560 .callback = atkbd_setup_forced_release,
1561 .driver_data = atkbd_amilo_pa1510_forced_release_keys,
1555 }, 1562 },
1556 { } 1563 { }
1557}; 1564};
diff --git a/drivers/input/keyboard/bf54x-keys.c b/drivers/input/keyboard/bf54x-keys.c
index ee855c5202e8..d427f322e207 100644
--- a/drivers/input/keyboard/bf54x-keys.c
+++ b/drivers/input/keyboard/bf54x-keys.c
@@ -211,8 +211,8 @@ static int __devinit bfin_kpad_probe(struct platform_device *pdev)
211 211
212 if (!pdata->debounce_time || pdata->debounce_time > MAX_MULT || 212 if (!pdata->debounce_time || pdata->debounce_time > MAX_MULT ||
213 !pdata->coldrive_time || pdata->coldrive_time > MAX_MULT) { 213 !pdata->coldrive_time || pdata->coldrive_time > MAX_MULT) {
214 printk(KERN_ERR DRV_NAME 214 printk(KERN_WARNING DRV_NAME
215 ": Invalid Debounce/Columdrive Time from pdata\n"); 215 ": Invalid Debounce/Columndrive Time in platform data\n");
216 bfin_write_KPAD_MSEL(0xFF0); /* Default MSEL */ 216 bfin_write_KPAD_MSEL(0xFF0); /* Default MSEL */
217 } else { 217 } else {
218 bfin_write_KPAD_MSEL( 218 bfin_write_KPAD_MSEL(
@@ -252,7 +252,7 @@ static int __devinit bfin_kpad_probe(struct platform_device *pdev)
252 } 252 }
253 253
254 error = request_irq(bf54x_kpad->irq, bfin_kpad_isr, 254 error = request_irq(bf54x_kpad->irq, bfin_kpad_isr,
255 IRQF_SAMPLE_RANDOM, DRV_NAME, pdev); 255 0, DRV_NAME, pdev);
256 if (error) { 256 if (error) {
257 printk(KERN_ERR DRV_NAME 257 printk(KERN_ERR DRV_NAME
258 ": unable to claim irq %d; error %d\n", 258 ": unable to claim irq %d; error %d\n",
diff --git a/drivers/input/keyboard/hilkbd.c b/drivers/input/keyboard/hilkbd.c
index aacf71f3cd44..e9d639ec283d 100644
--- a/drivers/input/keyboard/hilkbd.c
+++ b/drivers/input/keyboard/hilkbd.c
@@ -198,45 +198,28 @@ static void hil_do(unsigned char cmd, unsigned char *data, unsigned int len)
198} 198}
199 199
200 200
201/* initialise HIL */ 201/* initialize HIL */
202static int __init 202static int __devinit hil_keyb_init(void)
203hil_keyb_init(void)
204{ 203{
205 unsigned char c; 204 unsigned char c;
206 unsigned int i, kbid; 205 unsigned int i, kbid;
207 wait_queue_head_t hil_wait; 206 wait_queue_head_t hil_wait;
208 int err; 207 int err;
209 208
210 if (hil_dev.dev) { 209 if (hil_dev.dev)
211 return -ENODEV; /* already initialized */ 210 return -ENODEV; /* already initialized */
212 }
213 211
212 init_waitqueue_head(&hil_wait);
214 spin_lock_init(&hil_dev.lock); 213 spin_lock_init(&hil_dev.lock);
214
215 hil_dev.dev = input_allocate_device(); 215 hil_dev.dev = input_allocate_device();
216 if (!hil_dev.dev) 216 if (!hil_dev.dev)
217 return -ENOMEM; 217 return -ENOMEM;
218 218
219#if defined(CONFIG_HP300)
220 if (!MACH_IS_HP300) {
221 err = -ENODEV;
222 goto err1;
223 }
224 if (!hwreg_present((void *)(HILBASE + HIL_DATA))) {
225 printk(KERN_ERR "HIL: hardware register was not found\n");
226 err = -ENODEV;
227 goto err1;
228 }
229 if (!request_region(HILBASE + HIL_DATA, 2, "hil")) {
230 printk(KERN_ERR "HIL: IOPORT region already used\n");
231 err = -EIO;
232 goto err1;
233 }
234#endif
235
236 err = request_irq(HIL_IRQ, hil_interrupt, 0, "hil", hil_dev.dev_id); 219 err = request_irq(HIL_IRQ, hil_interrupt, 0, "hil", hil_dev.dev_id);
237 if (err) { 220 if (err) {
238 printk(KERN_ERR "HIL: Can't get IRQ\n"); 221 printk(KERN_ERR "HIL: Can't get IRQ\n");
239 goto err2; 222 goto err1;
240 } 223 }
241 224
242 /* Turn on interrupts */ 225 /* Turn on interrupts */
@@ -246,11 +229,9 @@ hil_keyb_init(void)
246 hil_dev.valid = 0; /* clear any pending data */ 229 hil_dev.valid = 0; /* clear any pending data */
247 hil_do(HIL_READKBDSADR, NULL, 0); 230 hil_do(HIL_READKBDSADR, NULL, 0);
248 231
249 init_waitqueue_head(&hil_wait); 232 wait_event_interruptible_timeout(hil_wait, hil_dev.valid, 3 * HZ);
250 wait_event_interruptible_timeout(hil_wait, hil_dev.valid, 3*HZ); 233 if (!hil_dev.valid)
251 if (!hil_dev.valid) {
252 printk(KERN_WARNING "HIL: timed out, assuming no keyboard present\n"); 234 printk(KERN_WARNING "HIL: timed out, assuming no keyboard present\n");
253 }
254 235
255 c = hil_dev.c; 236 c = hil_dev.c;
256 hil_dev.valid = 0; 237 hil_dev.valid = 0;
@@ -268,7 +249,7 @@ hil_keyb_init(void)
268 249
269 for (i = 0; i < HIL_KEYCODES_SET1_TBLSIZE; i++) 250 for (i = 0; i < HIL_KEYCODES_SET1_TBLSIZE; i++)
270 if (hphilkeyb_keycode[i] != KEY_RESERVED) 251 if (hphilkeyb_keycode[i] != KEY_RESERVED)
271 set_bit(hphilkeyb_keycode[i], hil_dev.dev->keybit); 252 __set_bit(hphilkeyb_keycode[i], hil_dev.dev->keybit);
272 253
273 hil_dev.dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP); 254 hil_dev.dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
274 hil_dev.dev->ledbit[0] = BIT_MASK(LED_NUML) | BIT_MASK(LED_CAPSL) | 255 hil_dev.dev->ledbit[0] = BIT_MASK(LED_NUML) | BIT_MASK(LED_CAPSL) |
@@ -287,34 +268,45 @@ hil_keyb_init(void)
287 err = input_register_device(hil_dev.dev); 268 err = input_register_device(hil_dev.dev);
288 if (err) { 269 if (err) {
289 printk(KERN_ERR "HIL: Can't register device\n"); 270 printk(KERN_ERR "HIL: Can't register device\n");
290 goto err3; 271 goto err2;
291 } 272 }
273
292 printk(KERN_INFO "input: %s, ID %d at 0x%08lx (irq %d) found and attached\n", 274 printk(KERN_INFO "input: %s, ID %d at 0x%08lx (irq %d) found and attached\n",
293 hil_dev.dev->name, kbid, HILBASE, HIL_IRQ); 275 hil_dev.dev->name, kbid, HILBASE, HIL_IRQ);
294 276
295 return 0; 277 return 0;
296 278
297err3: 279err2:
298 hil_do(HIL_INTOFF, NULL, 0); 280 hil_do(HIL_INTOFF, NULL, 0);
299 disable_irq(HIL_IRQ);
300 free_irq(HIL_IRQ, hil_dev.dev_id); 281 free_irq(HIL_IRQ, hil_dev.dev_id);
301err2:
302#if defined(CONFIG_HP300)
303 release_region(HILBASE + HIL_DATA, 2);
304err1: 282err1:
305#endif
306 input_free_device(hil_dev.dev); 283 input_free_device(hil_dev.dev);
307 hil_dev.dev = NULL; 284 hil_dev.dev = NULL;
308 return err; 285 return err;
309} 286}
310 287
288static void __devexit hil_keyb_exit(void)
289{
290 if (HIL_IRQ)
291 free_irq(HIL_IRQ, hil_dev.dev_id);
292
293 /* Turn off interrupts */
294 hil_do(HIL_INTOFF, NULL, 0);
295
296 input_unregister_device(hil_dev.dev);
297 hil_dev.dev = NULL;
298}
311 299
312#if defined(CONFIG_PARISC) 300#if defined(CONFIG_PARISC)
313static int __init 301static int __devinit hil_probe_chip(struct parisc_device *dev)
314hil_init_chip(struct parisc_device *dev)
315{ 302{
303 /* Only allow one HIL keyboard */
304 if (hil_dev.dev)
305 return -ENODEV;
306
316 if (!dev->irq) { 307 if (!dev->irq) {
317 printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%08lx\n", dev->hpa.start); 308 printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%p\n",
309 (void *)dev->hpa.start);
318 return -ENODEV; 310 return -ENODEV;
319 } 311 }
320 312
@@ -327,51 +319,79 @@ hil_init_chip(struct parisc_device *dev)
327 return hil_keyb_init(); 319 return hil_keyb_init();
328} 320}
329 321
322static int __devexit hil_remove_chip(struct parisc_device *dev)
323{
324 hil_keyb_exit();
325
326 return 0;
327}
328
330static struct parisc_device_id hil_tbl[] = { 329static struct parisc_device_id hil_tbl[] = {
331 { HPHW_FIO, HVERSION_REV_ANY_ID, HVERSION_ANY_ID, 0x00073 }, 330 { HPHW_FIO, HVERSION_REV_ANY_ID, HVERSION_ANY_ID, 0x00073 },
332 { 0, } 331 { 0, }
333}; 332};
334 333
334#if 0
335/* Disabled to avoid conflicts with the HP SDC HIL drivers */
335MODULE_DEVICE_TABLE(parisc, hil_tbl); 336MODULE_DEVICE_TABLE(parisc, hil_tbl);
337#endif
336 338
337static struct parisc_driver hil_driver = { 339static struct parisc_driver hil_driver = {
338 .name = "hil", 340 .name = "hil",
339 .id_table = hil_tbl, 341 .id_table = hil_tbl,
340 .probe = hil_init_chip, 342 .probe = hil_probe_chip,
343 .remove = __devexit_p(hil_remove_chip),
341}; 344};
342#endif /* CONFIG_PARISC */
343
344 345
345static int __init hil_init(void) 346static int __init hil_init(void)
346{ 347{
347#if defined(CONFIG_PARISC)
348 return register_parisc_driver(&hil_driver); 348 return register_parisc_driver(&hil_driver);
349#else
350 return hil_keyb_init();
351#endif
352} 349}
353 350
354
355static void __exit hil_exit(void) 351static void __exit hil_exit(void)
356{ 352{
357 if (HIL_IRQ) { 353 unregister_parisc_driver(&hil_driver);
358 disable_irq(HIL_IRQ); 354}
359 free_irq(HIL_IRQ, hil_dev.dev_id); 355
356#else /* !CONFIG_PARISC */
357
358static int __init hil_init(void)
359{
360 int error;
361
362 /* Only allow one HIL keyboard */
363 if (hil_dev.dev)
364 return -EBUSY;
365
366 if (!MACH_IS_HP300)
367 return -ENODEV;
368
369 if (!hwreg_present((void *)(HILBASE + HIL_DATA))) {
370 printk(KERN_ERR "HIL: hardware register was not found\n");
371 return -ENODEV;
360 } 372 }
361 373
362 /* Turn off interrupts */ 374 if (!request_region(HILBASE + HIL_DATA, 2, "hil")) {
363 hil_do(HIL_INTOFF, NULL, 0); 375 printk(KERN_ERR "HIL: IOPORT region already used\n");
376 return -EIO;
377 }
364 378
365 input_unregister_device(hil_dev.dev); 379 error = hil_keyb_init();
380 if (error) {
381 release_region(HILBASE + HIL_DATA, 2);
382 return error;
383 }
366 384
367 hil_dev.dev = NULL; 385 return 0;
386}
368 387
369#if defined(CONFIG_PARISC) 388static void __exit hil_exit(void)
370 unregister_parisc_driver(&hil_driver); 389{
371#else 390 hil_keyb_exit();
372 release_region(HILBASE+HIL_DATA, 2); 391 release_region(HILBASE + HIL_DATA, 2);
373#endif
374} 392}
375 393
394#endif /* CONFIG_PARISC */
395
376module_init(hil_init); 396module_init(hil_init);
377module_exit(hil_exit); 397module_exit(hil_exit);
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 67e5553f699a..5c0a631d1455 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -214,7 +214,7 @@ config INPUT_SGI_BTNS
214 214
215config HP_SDC_RTC 215config HP_SDC_RTC
216 tristate "HP SDC Real Time Clock" 216 tristate "HP SDC Real Time Clock"
217 depends on GSC || HP300 217 depends on (GSC || HP300) && SERIO
218 select HP_SDC 218 select HP_SDC
219 help 219 help
220 Say Y here if you want to support the built-in real time clock 220 Say Y here if you want to support the built-in real time clock
@@ -227,4 +227,27 @@ config INPUT_PCF50633_PMU
227 Say Y to include support for delivering PMU events via input 227 Say Y to include support for delivering PMU events via input
228 layer on NXP PCF50633. 228 layer on NXP PCF50633.
229 229
230config INPUT_GPIO_ROTARY_ENCODER
231 tristate "Rotary encoders connected to GPIO pins"
232 depends on GPIOLIB && GENERIC_GPIO
233 help
234 Say Y here to add support for rotary encoders connected to GPIO lines.
235 Check file:Documentation/incput/rotary_encoder.txt for more
236 information.
237
238 To compile this driver as a module, choose M here: the
239 module will be called rotary_encoder.
240
241config INPUT_RB532_BUTTON
242 tristate "Mikrotik Routerboard 532 button interface"
243 depends on MIKROTIK_RB532
244 depends on GPIOLIB && GENERIC_GPIO
245 select INPUT_POLLDEV
246 help
247 Say Y here if you want support for the S1 button built into
248 Mikrotik's Routerboard 532.
249
250 To compile this driver as a module, choose M here: the
251 module will be called rb532_button.
252
230endif 253endif
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index bb62e6efacf3..eb3f407baedf 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -4,21 +4,23 @@
4 4
5# Each configuration option enables a list of files. 5# Each configuration option enables a list of files.
6 6
7obj-$(CONFIG_INPUT_SPARCSPKR) += sparcspkr.o 7obj-$(CONFIG_INPUT_APANEL) += apanel.o
8obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o
9obj-$(CONFIG_INPUT_M68K_BEEP) += m68kspkr.o
10obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o
11obj-$(CONFIG_INPUT_COBALT_BTNS) += cobalt_btns.o
12obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o
13obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
14obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o 8obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o
15obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o 9obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o
16obj-$(CONFIG_INPUT_KEYSPAN_REMOTE) += keyspan_remote.o 10obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
17obj-$(CONFIG_INPUT_POWERMATE) += powermate.o
18obj-$(CONFIG_INPUT_YEALINK) += yealink.o
19obj-$(CONFIG_INPUT_CM109) += cm109.o 11obj-$(CONFIG_INPUT_CM109) += cm109.o
12obj-$(CONFIG_INPUT_COBALT_BTNS) += cobalt_btns.o
20obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o 13obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
21obj-$(CONFIG_INPUT_UINPUT) += uinput.o 14obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o
22obj-$(CONFIG_INPUT_APANEL) += apanel.o 15obj-$(CONFIG_INPUT_KEYSPAN_REMOTE) += keyspan_remote.o
23obj-$(CONFIG_INPUT_SGI_BTNS) += sgi_btns.o 16obj-$(CONFIG_INPUT_M68K_BEEP) += m68kspkr.o
24obj-$(CONFIG_INPUT_PCF50633_PMU) += pcf50633-input.o 17obj-$(CONFIG_INPUT_PCF50633_PMU) += pcf50633-input.o
18obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o
19obj-$(CONFIG_INPUT_POWERMATE) += powermate.o
20obj-$(CONFIG_INPUT_RB532_BUTTON) += rb532_button.o
21obj-$(CONFIG_INPUT_GPIO_ROTARY_ENCODER) += rotary_encoder.o
22obj-$(CONFIG_INPUT_SGI_BTNS) += sgi_btns.o
23obj-$(CONFIG_INPUT_SPARCSPKR) += sparcspkr.o
24obj-$(CONFIG_INPUT_UINPUT) += uinput.o
25obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o
26obj-$(CONFIG_INPUT_YEALINK) += yealink.o
diff --git a/drivers/input/misc/ati_remote2.c b/drivers/input/misc/ati_remote2.c
index 3c9988dc0e9f..922c05141585 100644
--- a/drivers/input/misc/ati_remote2.c
+++ b/drivers/input/misc/ati_remote2.c
@@ -31,12 +31,73 @@ MODULE_LICENSE("GPL");
31 * newly configured "channel". 31 * newly configured "channel".
32 */ 32 */
33 33
34static unsigned int channel_mask = 0xFFFF; 34enum {
35module_param(channel_mask, uint, 0644); 35 ATI_REMOTE2_MAX_CHANNEL_MASK = 0xFFFF,
36 ATI_REMOTE2_MAX_MODE_MASK = 0x1F,
37};
38
39static int ati_remote2_set_mask(const char *val,
40 struct kernel_param *kp, unsigned int max)
41{
42 unsigned long mask;
43 int ret;
44
45 if (!val)
46 return -EINVAL;
47
48 ret = strict_strtoul(val, 0, &mask);
49 if (ret)
50 return ret;
51
52 if (mask & ~max)
53 return -EINVAL;
54
55 *(unsigned int *)kp->arg = mask;
56
57 return 0;
58}
59
60static int ati_remote2_set_channel_mask(const char *val,
61 struct kernel_param *kp)
62{
63 pr_debug("%s()\n", __func__);
64
65 return ati_remote2_set_mask(val, kp, ATI_REMOTE2_MAX_CHANNEL_MASK);
66}
67
68static int ati_remote2_get_channel_mask(char *buffer, struct kernel_param *kp)
69{
70 pr_debug("%s()\n", __func__);
71
72 return sprintf(buffer, "0x%04x", *(unsigned int *)kp->arg);
73}
74
75static int ati_remote2_set_mode_mask(const char *val, struct kernel_param *kp)
76{
77 pr_debug("%s()\n", __func__);
78
79 return ati_remote2_set_mask(val, kp, ATI_REMOTE2_MAX_MODE_MASK);
80}
81
82static int ati_remote2_get_mode_mask(char *buffer, struct kernel_param *kp)
83{
84 pr_debug("%s()\n", __func__);
85
86 return sprintf(buffer, "0x%02x", *(unsigned int *)kp->arg);
87}
88
89static unsigned int channel_mask = ATI_REMOTE2_MAX_CHANNEL_MASK;
90#define param_check_channel_mask(name, p) __param_check(name, p, unsigned int)
91#define param_set_channel_mask ati_remote2_set_channel_mask
92#define param_get_channel_mask ati_remote2_get_channel_mask
93module_param(channel_mask, channel_mask, 0644);
36MODULE_PARM_DESC(channel_mask, "Bitmask of channels to accept <15:Channel16>...<1:Channel2><0:Channel1>"); 94MODULE_PARM_DESC(channel_mask, "Bitmask of channels to accept <15:Channel16>...<1:Channel2><0:Channel1>");
37 95
38static unsigned int mode_mask = 0x1F; 96static unsigned int mode_mask = ATI_REMOTE2_MAX_MODE_MASK;
39module_param(mode_mask, uint, 0644); 97#define param_check_mode_mask(name, p) __param_check(name, p, unsigned int)
98#define param_set_mode_mask ati_remote2_set_mode_mask
99#define param_get_mode_mask ati_remote2_get_mode_mask
100module_param(mode_mask, mode_mask, 0644);
40MODULE_PARM_DESC(mode_mask, "Bitmask of modes to accept <4:PC><3:AUX4><2:AUX3><1:AUX2><0:AUX1>"); 101MODULE_PARM_DESC(mode_mask, "Bitmask of modes to accept <4:PC><3:AUX4><2:AUX3><1:AUX2><0:AUX1>");
41 102
42static struct usb_device_id ati_remote2_id_table[] = { 103static struct usb_device_id ati_remote2_id_table[] = {
@@ -133,12 +194,18 @@ struct ati_remote2 {
133 u16 keycode[ATI_REMOTE2_MODES][ARRAY_SIZE(ati_remote2_key_table)]; 194 u16 keycode[ATI_REMOTE2_MODES][ARRAY_SIZE(ati_remote2_key_table)];
134 195
135 unsigned int flags; 196 unsigned int flags;
197
198 unsigned int channel_mask;
199 unsigned int mode_mask;
136}; 200};
137 201
138static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id); 202static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id);
139static void ati_remote2_disconnect(struct usb_interface *interface); 203static void ati_remote2_disconnect(struct usb_interface *interface);
140static int ati_remote2_suspend(struct usb_interface *interface, pm_message_t message); 204static int ati_remote2_suspend(struct usb_interface *interface, pm_message_t message);
141static int ati_remote2_resume(struct usb_interface *interface); 205static int ati_remote2_resume(struct usb_interface *interface);
206static int ati_remote2_reset_resume(struct usb_interface *interface);
207static int ati_remote2_pre_reset(struct usb_interface *interface);
208static int ati_remote2_post_reset(struct usb_interface *interface);
142 209
143static struct usb_driver ati_remote2_driver = { 210static struct usb_driver ati_remote2_driver = {
144 .name = "ati_remote2", 211 .name = "ati_remote2",
@@ -147,6 +214,9 @@ static struct usb_driver ati_remote2_driver = {
147 .id_table = ati_remote2_id_table, 214 .id_table = ati_remote2_id_table,
148 .suspend = ati_remote2_suspend, 215 .suspend = ati_remote2_suspend,
149 .resume = ati_remote2_resume, 216 .resume = ati_remote2_resume,
217 .reset_resume = ati_remote2_reset_resume,
218 .pre_reset = ati_remote2_pre_reset,
219 .post_reset = ati_remote2_post_reset,
150 .supports_autosuspend = 1, 220 .supports_autosuspend = 1,
151}; 221};
152 222
@@ -238,7 +308,7 @@ static void ati_remote2_input_mouse(struct ati_remote2 *ar2)
238 308
239 channel = data[0] >> 4; 309 channel = data[0] >> 4;
240 310
241 if (!((1 << channel) & channel_mask)) 311 if (!((1 << channel) & ar2->channel_mask))
242 return; 312 return;
243 313
244 mode = data[0] & 0x0F; 314 mode = data[0] & 0x0F;
@@ -250,7 +320,7 @@ static void ati_remote2_input_mouse(struct ati_remote2 *ar2)
250 return; 320 return;
251 } 321 }
252 322
253 if (!((1 << mode) & mode_mask)) 323 if (!((1 << mode) & ar2->mode_mask))
254 return; 324 return;
255 325
256 input_event(idev, EV_REL, REL_X, (s8) data[1]); 326 input_event(idev, EV_REL, REL_X, (s8) data[1]);
@@ -277,7 +347,7 @@ static void ati_remote2_input_key(struct ati_remote2 *ar2)
277 347
278 channel = data[0] >> 4; 348 channel = data[0] >> 4;
279 349
280 if (!((1 << channel) & channel_mask)) 350 if (!((1 << channel) & ar2->channel_mask))
281 return; 351 return;
282 352
283 mode = data[0] & 0x0F; 353 mode = data[0] & 0x0F;
@@ -305,7 +375,7 @@ static void ati_remote2_input_key(struct ati_remote2 *ar2)
305 ar2->mode = mode; 375 ar2->mode = mode;
306 } 376 }
307 377
308 if (!((1 << mode) & mode_mask)) 378 if (!((1 << mode) & ar2->mode_mask))
309 return; 379 return;
310 380
311 index = ati_remote2_lookup(hw_code); 381 index = ati_remote2_lookup(hw_code);
@@ -410,7 +480,7 @@ static int ati_remote2_getkeycode(struct input_dev *idev,
410 int index, mode; 480 int index, mode;
411 481
412 mode = scancode >> 8; 482 mode = scancode >> 8;
413 if (mode > ATI_REMOTE2_PC || !((1 << mode) & mode_mask)) 483 if (mode > ATI_REMOTE2_PC || !((1 << mode) & ar2->mode_mask))
414 return -EINVAL; 484 return -EINVAL;
415 485
416 index = ati_remote2_lookup(scancode & 0xFF); 486 index = ati_remote2_lookup(scancode & 0xFF);
@@ -427,7 +497,7 @@ static int ati_remote2_setkeycode(struct input_dev *idev, int scancode, int keyc
427 int index, mode, old_keycode; 497 int index, mode, old_keycode;
428 498
429 mode = scancode >> 8; 499 mode = scancode >> 8;
430 if (mode > ATI_REMOTE2_PC || !((1 << mode) & mode_mask)) 500 if (mode > ATI_REMOTE2_PC || !((1 << mode) & ar2->mode_mask))
431 return -EINVAL; 501 return -EINVAL;
432 502
433 index = ati_remote2_lookup(scancode & 0xFF); 503 index = ati_remote2_lookup(scancode & 0xFF);
@@ -550,7 +620,7 @@ static void ati_remote2_urb_cleanup(struct ati_remote2 *ar2)
550 } 620 }
551} 621}
552 622
553static int ati_remote2_setup(struct ati_remote2 *ar2) 623static int ati_remote2_setup(struct ati_remote2 *ar2, unsigned int ch_mask)
554{ 624{
555 int r, i, channel; 625 int r, i, channel;
556 626
@@ -565,8 +635,8 @@ static int ati_remote2_setup(struct ati_remote2 *ar2)
565 635
566 channel = 0; 636 channel = 0;
567 for (i = 0; i < 16; i++) { 637 for (i = 0; i < 16; i++) {
568 if ((1 << i) & channel_mask) { 638 if ((1 << i) & ch_mask) {
569 if (!(~(1 << i) & 0xFFFF & channel_mask)) 639 if (!(~(1 << i) & ch_mask))
570 channel = i + 1; 640 channel = i + 1;
571 break; 641 break;
572 } 642 }
@@ -585,6 +655,99 @@ static int ati_remote2_setup(struct ati_remote2 *ar2)
585 return 0; 655 return 0;
586} 656}
587 657
658static ssize_t ati_remote2_show_channel_mask(struct device *dev,
659 struct device_attribute *attr,
660 char *buf)
661{
662 struct usb_device *udev = to_usb_device(dev);
663 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
664 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
665
666 return sprintf(buf, "0x%04x\n", ar2->channel_mask);
667}
668
669static ssize_t ati_remote2_store_channel_mask(struct device *dev,
670 struct device_attribute *attr,
671 const char *buf, size_t count)
672{
673 struct usb_device *udev = to_usb_device(dev);
674 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
675 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
676 unsigned long mask;
677 int r;
678
679 if (strict_strtoul(buf, 0, &mask))
680 return -EINVAL;
681
682 if (mask & ~ATI_REMOTE2_MAX_CHANNEL_MASK)
683 return -EINVAL;
684
685 r = usb_autopm_get_interface(ar2->intf[0]);
686 if (r) {
687 dev_err(&ar2->intf[0]->dev,
688 "%s(): usb_autopm_get_interface() = %d\n", __func__, r);
689 return r;
690 }
691
692 mutex_lock(&ati_remote2_mutex);
693
694 if (mask != ar2->channel_mask && !ati_remote2_setup(ar2, mask))
695 ar2->channel_mask = mask;
696
697 mutex_unlock(&ati_remote2_mutex);
698
699 usb_autopm_put_interface(ar2->intf[0]);
700
701 return count;
702}
703
704static ssize_t ati_remote2_show_mode_mask(struct device *dev,
705 struct device_attribute *attr,
706 char *buf)
707{
708 struct usb_device *udev = to_usb_device(dev);
709 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
710 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
711
712 return sprintf(buf, "0x%02x\n", ar2->mode_mask);
713}
714
715static ssize_t ati_remote2_store_mode_mask(struct device *dev,
716 struct device_attribute *attr,
717 const char *buf, size_t count)
718{
719 struct usb_device *udev = to_usb_device(dev);
720 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
721 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
722 unsigned long mask;
723
724 if (strict_strtoul(buf, 0, &mask))
725 return -EINVAL;
726
727 if (mask & ~ATI_REMOTE2_MAX_MODE_MASK)
728 return -EINVAL;
729
730 ar2->mode_mask = mask;
731
732 return count;
733}
734
735static DEVICE_ATTR(channel_mask, 0644, ati_remote2_show_channel_mask,
736 ati_remote2_store_channel_mask);
737
738static DEVICE_ATTR(mode_mask, 0644, ati_remote2_show_mode_mask,
739 ati_remote2_store_mode_mask);
740
741static struct attribute *ati_remote2_attrs[] = {
742 &dev_attr_channel_mask.attr,
743 &dev_attr_mode_mask.attr,
744 NULL,
745};
746
747static struct attribute_group ati_remote2_attr_group = {
748 .attrs = ati_remote2_attrs,
749};
750
588static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id) 751static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id)
589{ 752{
590 struct usb_device *udev = interface_to_usbdev(interface); 753 struct usb_device *udev = interface_to_usbdev(interface);
@@ -615,7 +778,10 @@ static int ati_remote2_probe(struct usb_interface *interface, const struct usb_d
615 if (r) 778 if (r)
616 goto fail2; 779 goto fail2;
617 780
618 r = ati_remote2_setup(ar2); 781 ar2->channel_mask = channel_mask;
782 ar2->mode_mask = mode_mask;
783
784 r = ati_remote2_setup(ar2, ar2->channel_mask);
619 if (r) 785 if (r)
620 goto fail2; 786 goto fail2;
621 787
@@ -624,19 +790,24 @@ static int ati_remote2_probe(struct usb_interface *interface, const struct usb_d
624 790
625 strlcat(ar2->name, "ATI Remote Wonder II", sizeof(ar2->name)); 791 strlcat(ar2->name, "ATI Remote Wonder II", sizeof(ar2->name));
626 792
627 r = ati_remote2_input_init(ar2); 793 r = sysfs_create_group(&udev->dev.kobj, &ati_remote2_attr_group);
628 if (r) 794 if (r)
629 goto fail2; 795 goto fail2;
630 796
797 r = ati_remote2_input_init(ar2);
798 if (r)
799 goto fail3;
800
631 usb_set_intfdata(interface, ar2); 801 usb_set_intfdata(interface, ar2);
632 802
633 interface->needs_remote_wakeup = 1; 803 interface->needs_remote_wakeup = 1;
634 804
635 return 0; 805 return 0;
636 806
807 fail3:
808 sysfs_remove_group(&udev->dev.kobj, &ati_remote2_attr_group);
637 fail2: 809 fail2:
638 ati_remote2_urb_cleanup(ar2); 810 ati_remote2_urb_cleanup(ar2);
639
640 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]); 811 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]);
641 fail1: 812 fail1:
642 kfree(ar2); 813 kfree(ar2);
@@ -657,6 +828,8 @@ static void ati_remote2_disconnect(struct usb_interface *interface)
657 828
658 input_unregister_device(ar2->idev); 829 input_unregister_device(ar2->idev);
659 830
831 sysfs_remove_group(&ar2->udev->dev.kobj, &ati_remote2_attr_group);
832
660 ati_remote2_urb_cleanup(ar2); 833 ati_remote2_urb_cleanup(ar2);
661 834
662 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]); 835 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]);
@@ -715,6 +888,78 @@ static int ati_remote2_resume(struct usb_interface *interface)
715 return r; 888 return r;
716} 889}
717 890
891static int ati_remote2_reset_resume(struct usb_interface *interface)
892{
893 struct ati_remote2 *ar2;
894 struct usb_host_interface *alt = interface->cur_altsetting;
895 int r = 0;
896
897 if (alt->desc.bInterfaceNumber)
898 return 0;
899
900 ar2 = usb_get_intfdata(interface);
901
902 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
903
904 mutex_lock(&ati_remote2_mutex);
905
906 r = ati_remote2_setup(ar2, ar2->channel_mask);
907 if (r)
908 goto out;
909
910 if (ar2->flags & ATI_REMOTE2_OPENED)
911 r = ati_remote2_submit_urbs(ar2);
912
913 if (!r)
914 ar2->flags &= ~ATI_REMOTE2_SUSPENDED;
915
916 out:
917 mutex_unlock(&ati_remote2_mutex);
918
919 return r;
920}
921
922static int ati_remote2_pre_reset(struct usb_interface *interface)
923{
924 struct ati_remote2 *ar2;
925 struct usb_host_interface *alt = interface->cur_altsetting;
926
927 if (alt->desc.bInterfaceNumber)
928 return 0;
929
930 ar2 = usb_get_intfdata(interface);
931
932 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
933
934 mutex_lock(&ati_remote2_mutex);
935
936 if (ar2->flags == ATI_REMOTE2_OPENED)
937 ati_remote2_kill_urbs(ar2);
938
939 return 0;
940}
941
942static int ati_remote2_post_reset(struct usb_interface *interface)
943{
944 struct ati_remote2 *ar2;
945 struct usb_host_interface *alt = interface->cur_altsetting;
946 int r = 0;
947
948 if (alt->desc.bInterfaceNumber)
949 return 0;
950
951 ar2 = usb_get_intfdata(interface);
952
953 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
954
955 if (ar2->flags == ATI_REMOTE2_OPENED)
956 r = ati_remote2_submit_urbs(ar2);
957
958 mutex_unlock(&ati_remote2_mutex);
959
960 return r;
961}
962
718static int __init ati_remote2_init(void) 963static int __init ati_remote2_init(void)
719{ 964{
720 int r; 965 int r;
diff --git a/drivers/input/misc/rb532_button.c b/drivers/input/misc/rb532_button.c
new file mode 100644
index 000000000000..e2c7f622a0b5
--- /dev/null
+++ b/drivers/input/misc/rb532_button.c
@@ -0,0 +1,120 @@
1/*
2 * Support for the S1 button on Routerboard 532
3 *
4 * Copyright (C) 2009 Phil Sutter <n0-1@freewrt.org>
5 */
6
7#include <linux/input-polldev.h>
8#include <linux/module.h>
9#include <linux/platform_device.h>
10
11#include <asm/mach-rc32434/gpio.h>
12#include <asm/mach-rc32434/rb.h>
13
14#define DRV_NAME "rb532-button"
15
16#define RB532_BTN_RATE 100 /* msec */
17#define RB532_BTN_KSYM BTN_0
18
19/* The S1 button state is provided by GPIO pin 1. But as this
20 * pin is also used for uart input as alternate function, the
21 * operational modes must be switched first:
22 * 1) disable uart using set_latch_u5()
23 * 2) turn off alternate function implicitly through
24 * gpio_direction_input()
25 * 3) read the GPIO's current value
26 * 4) undo step 2 by enabling alternate function (in this
27 * mode the GPIO direction is fixed, so no change needed)
28 * 5) turn on uart again
29 * The GPIO value occurs to be inverted, so pin high means
30 * button is not pressed.
31 */
32static bool rb532_button_pressed(void)
33{
34 int val;
35
36 set_latch_u5(0, LO_FOFF);
37 gpio_direction_input(GPIO_BTN_S1);
38
39 val = gpio_get_value(GPIO_BTN_S1);
40
41 rb532_gpio_set_func(GPIO_BTN_S1);
42 set_latch_u5(LO_FOFF, 0);
43
44 return !val;
45}
46
47static void rb532_button_poll(struct input_polled_dev *poll_dev)
48{
49 input_report_key(poll_dev->input, RB532_BTN_KSYM,
50 rb532_button_pressed());
51 input_sync(poll_dev->input);
52}
53
54static int __devinit rb532_button_probe(struct platform_device *pdev)
55{
56 struct input_polled_dev *poll_dev;
57 int error;
58
59 poll_dev = input_allocate_polled_device();
60 if (!poll_dev)
61 return -ENOMEM;
62
63 poll_dev->poll = rb532_button_poll;
64 poll_dev->poll_interval = RB532_BTN_RATE;
65
66 poll_dev->input->name = "rb532 button";
67 poll_dev->input->phys = "rb532/button0";
68 poll_dev->input->id.bustype = BUS_HOST;
69 poll_dev->input->dev.parent = &pdev->dev;
70
71 dev_set_drvdata(&pdev->dev, poll_dev);
72
73 input_set_capability(poll_dev->input, EV_KEY, RB532_BTN_KSYM);
74
75 error = input_register_polled_device(poll_dev);
76 if (error) {
77 input_free_polled_device(poll_dev);
78 return error;
79 }
80
81 return 0;
82}
83
84static int __devexit rb532_button_remove(struct platform_device *pdev)
85{
86 struct input_polled_dev *poll_dev = dev_get_drvdata(&pdev->dev);
87
88 input_unregister_polled_device(poll_dev);
89 input_free_polled_device(poll_dev);
90 dev_set_drvdata(&pdev->dev, NULL);
91
92 return 0;
93}
94
95static struct platform_driver rb532_button_driver = {
96 .probe = rb532_button_probe,
97 .remove = __devexit_p(rb532_button_remove),
98 .driver = {
99 .name = DRV_NAME,
100 .owner = THIS_MODULE,
101 },
102};
103
104static int __init rb532_button_init(void)
105{
106 return platform_driver_register(&rb532_button_driver);
107}
108
109static void __exit rb532_button_exit(void)
110{
111 platform_driver_unregister(&rb532_button_driver);
112}
113
114module_init(rb532_button_init);
115module_exit(rb532_button_exit);
116
117MODULE_AUTHOR("Phil Sutter <n0-1@freewrt.org>");
118MODULE_LICENSE("GPL");
119MODULE_DESCRIPTION("Support for S1 button on Routerboard 532");
120MODULE_ALIAS("platform:" DRV_NAME);
diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
new file mode 100644
index 000000000000..5bb3ab51b8c6
--- /dev/null
+++ b/drivers/input/misc/rotary_encoder.c
@@ -0,0 +1,221 @@
1/*
2 * rotary_encoder.c
3 *
4 * (c) 2009 Daniel Mack <daniel@caiaq.de>
5 *
6 * state machine code inspired by code from Tim Ruetz
7 *
8 * A generic driver for rotary encoders connected to GPIO lines.
9 * See file:Documentation/input/rotary_encoder.txt for more information
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15
16#include <linux/kernel.h>
17#include <linux/module.h>
18#include <linux/init.h>
19#include <linux/interrupt.h>
20#include <linux/input.h>
21#include <linux/device.h>
22#include <linux/platform_device.h>
23#include <linux/gpio.h>
24#include <linux/rotary_encoder.h>
25
26#define DRV_NAME "rotary-encoder"
27
28struct rotary_encoder {
29 unsigned int irq_a;
30 unsigned int irq_b;
31 unsigned int pos;
32 unsigned int armed;
33 unsigned int dir;
34 struct input_dev *input;
35 struct rotary_encoder_platform_data *pdata;
36};
37
38static irqreturn_t rotary_encoder_irq(int irq, void *dev_id)
39{
40 struct rotary_encoder *encoder = dev_id;
41 struct rotary_encoder_platform_data *pdata = encoder->pdata;
42 int a = !!gpio_get_value(pdata->gpio_a);
43 int b = !!gpio_get_value(pdata->gpio_b);
44 int state;
45
46 a ^= pdata->inverted_a;
47 b ^= pdata->inverted_b;
48 state = (a << 1) | b;
49
50 switch (state) {
51
52 case 0x0:
53 if (!encoder->armed)
54 break;
55
56 if (encoder->dir) {
57 /* turning counter-clockwise */
58 encoder->pos += pdata->steps;
59 encoder->pos--;
60 encoder->pos %= pdata->steps;
61 } else {
62 /* turning clockwise */
63 encoder->pos++;
64 encoder->pos %= pdata->steps;
65 }
66
67 input_report_abs(encoder->input, pdata->axis, encoder->pos);
68 input_sync(encoder->input);
69
70 encoder->armed = 0;
71 break;
72
73 case 0x1:
74 case 0x2:
75 if (encoder->armed)
76 encoder->dir = state - 1;
77 break;
78
79 case 0x3:
80 encoder->armed = 1;
81 break;
82 }
83
84 return IRQ_HANDLED;
85}
86
87static int __devinit rotary_encoder_probe(struct platform_device *pdev)
88{
89 struct rotary_encoder_platform_data *pdata = pdev->dev.platform_data;
90 struct rotary_encoder *encoder;
91 struct input_dev *input;
92 int err;
93
94 if (!pdata || !pdata->steps) {
95 dev_err(&pdev->dev, "invalid platform data\n");
96 return -ENOENT;
97 }
98
99 encoder = kzalloc(sizeof(struct rotary_encoder), GFP_KERNEL);
100 input = input_allocate_device();
101 if (!encoder || !input) {
102 dev_err(&pdev->dev, "failed to allocate memory for device\n");
103 err = -ENOMEM;
104 goto exit_free_mem;
105 }
106
107 encoder->input = input;
108 encoder->pdata = pdata;
109 encoder->irq_a = gpio_to_irq(pdata->gpio_a);
110 encoder->irq_b = gpio_to_irq(pdata->gpio_b);
111
112 /* create and register the input driver */
113 input->name = pdev->name;
114 input->id.bustype = BUS_HOST;
115 input->dev.parent = &pdev->dev;
116 input->evbit[0] = BIT_MASK(EV_ABS);
117 input_set_abs_params(encoder->input,
118 pdata->axis, 0, pdata->steps, 0, 1);
119
120 err = input_register_device(input);
121 if (err) {
122 dev_err(&pdev->dev, "failed to register input device\n");
123 goto exit_free_mem;
124 }
125
126 /* request the GPIOs */
127 err = gpio_request(pdata->gpio_a, DRV_NAME);
128 if (err) {
129 dev_err(&pdev->dev, "unable to request GPIO %d\n",
130 pdata->gpio_a);
131 goto exit_unregister_input;
132 }
133
134 err = gpio_request(pdata->gpio_b, DRV_NAME);
135 if (err) {
136 dev_err(&pdev->dev, "unable to request GPIO %d\n",
137 pdata->gpio_b);
138 goto exit_free_gpio_a;
139 }
140
141 /* request the IRQs */
142 err = request_irq(encoder->irq_a, &rotary_encoder_irq,
143 IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,
144 DRV_NAME, encoder);
145 if (err) {
146 dev_err(&pdev->dev, "unable to request IRQ %d\n",
147 encoder->irq_a);
148 goto exit_free_gpio_b;
149 }
150
151 err = request_irq(encoder->irq_b, &rotary_encoder_irq,
152 IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,
153 DRV_NAME, encoder);
154 if (err) {
155 dev_err(&pdev->dev, "unable to request IRQ %d\n",
156 encoder->irq_b);
157 goto exit_free_irq_a;
158 }
159
160 platform_set_drvdata(pdev, encoder);
161
162 return 0;
163
164exit_free_irq_a:
165 free_irq(encoder->irq_a, encoder);
166exit_free_gpio_b:
167 gpio_free(pdata->gpio_b);
168exit_free_gpio_a:
169 gpio_free(pdata->gpio_a);
170exit_unregister_input:
171 input_unregister_device(input);
172 input = NULL; /* so we don't try to free it */
173exit_free_mem:
174 input_free_device(input);
175 kfree(encoder);
176 return err;
177}
178
179static int __devexit rotary_encoder_remove(struct platform_device *pdev)
180{
181 struct rotary_encoder *encoder = platform_get_drvdata(pdev);
182 struct rotary_encoder_platform_data *pdata = pdev->dev.platform_data;
183
184 free_irq(encoder->irq_a, encoder);
185 free_irq(encoder->irq_b, encoder);
186 gpio_free(pdata->gpio_a);
187 gpio_free(pdata->gpio_b);
188 input_unregister_device(encoder->input);
189 platform_set_drvdata(pdev, NULL);
190 kfree(encoder);
191
192 return 0;
193}
194
195static struct platform_driver rotary_encoder_driver = {
196 .probe = rotary_encoder_probe,
197 .remove = __devexit_p(rotary_encoder_remove),
198 .driver = {
199 .name = DRV_NAME,
200 .owner = THIS_MODULE,
201 }
202};
203
204static int __init rotary_encoder_init(void)
205{
206 return platform_driver_register(&rotary_encoder_driver);
207}
208
209static void __exit rotary_encoder_exit(void)
210{
211 platform_driver_unregister(&rotary_encoder_driver);
212}
213
214module_init(rotary_encoder_init);
215module_exit(rotary_encoder_exit);
216
217MODULE_ALIAS("platform:" DRV_NAME);
218MODULE_DESCRIPTION("GPIO rotary encoder driver");
219MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>");
220MODULE_LICENSE("GPL v2");
221
diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig
index 4f38e6f7dfdd..c66cc3d08c2f 100644
--- a/drivers/input/mouse/Kconfig
+++ b/drivers/input/mouse/Kconfig
@@ -292,4 +292,15 @@ config MOUSE_PXA930_TRKBALL
292 help 292 help
293 Say Y here to support PXA930 Trackball mouse. 293 Say Y here to support PXA930 Trackball mouse.
294 294
295config MOUSE_MAPLE
296 tristate "Maple mouse (for the Dreamcast)"
297 depends on MAPLE
298 help
299 This driver supports the Maple mouse on the SEGA Dreamcast.
300
301 Most Dreamcast users, who have a mouse, will say Y here.
302
303 To compile this driver as a module choose M here: the module will be
304 called maplemouse.
305
295endif 306endif
diff --git a/drivers/input/mouse/Makefile b/drivers/input/mouse/Makefile
index 8c8a1f236e28..472189468d67 100644
--- a/drivers/input/mouse/Makefile
+++ b/drivers/input/mouse/Makefile
@@ -6,18 +6,19 @@
6 6
7obj-$(CONFIG_MOUSE_AMIGA) += amimouse.o 7obj-$(CONFIG_MOUSE_AMIGA) += amimouse.o
8obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch.o 8obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch.o
9obj-$(CONFIG_MOUSE_BCM5974) += bcm5974.o
10obj-$(CONFIG_MOUSE_ATARI) += atarimouse.o 9obj-$(CONFIG_MOUSE_ATARI) += atarimouse.o
11obj-$(CONFIG_MOUSE_RISCPC) += rpcmouse.o 10obj-$(CONFIG_MOUSE_BCM5974) += bcm5974.o
11obj-$(CONFIG_MOUSE_GPIO) += gpio_mouse.o
12obj-$(CONFIG_MOUSE_HIL) += hil_ptr.o
12obj-$(CONFIG_MOUSE_INPORT) += inport.o 13obj-$(CONFIG_MOUSE_INPORT) += inport.o
13obj-$(CONFIG_MOUSE_LOGIBM) += logibm.o 14obj-$(CONFIG_MOUSE_LOGIBM) += logibm.o
15obj-$(CONFIG_MOUSE_MAPLE) += maplemouse.o
14obj-$(CONFIG_MOUSE_PC110PAD) += pc110pad.o 16obj-$(CONFIG_MOUSE_PC110PAD) += pc110pad.o
15obj-$(CONFIG_MOUSE_PS2) += psmouse.o 17obj-$(CONFIG_MOUSE_PS2) += psmouse.o
16obj-$(CONFIG_MOUSE_PXA930_TRKBALL) += pxa930_trkball.o 18obj-$(CONFIG_MOUSE_PXA930_TRKBALL) += pxa930_trkball.o
19obj-$(CONFIG_MOUSE_RISCPC) += rpcmouse.o
17obj-$(CONFIG_MOUSE_SERIAL) += sermouse.o 20obj-$(CONFIG_MOUSE_SERIAL) += sermouse.o
18obj-$(CONFIG_MOUSE_HIL) += hil_ptr.o
19obj-$(CONFIG_MOUSE_VSXXXAA) += vsxxxaa.o 21obj-$(CONFIG_MOUSE_VSXXXAA) += vsxxxaa.o
20obj-$(CONFIG_MOUSE_GPIO) += gpio_mouse.o
21 22
22psmouse-objs := psmouse-base.o synaptics.o 23psmouse-objs := psmouse-base.o synaptics.o
23 24
diff --git a/drivers/input/mouse/hgpk.c b/drivers/input/mouse/hgpk.c
index 55cd0fa68339..a1ad2f1a7bb3 100644
--- a/drivers/input/mouse/hgpk.c
+++ b/drivers/input/mouse/hgpk.c
@@ -472,7 +472,7 @@ static enum hgpk_model_t hgpk_get_model(struct psmouse *psmouse)
472 return -EIO; 472 return -EIO;
473 } 473 }
474 474
475 hgpk_dbg(psmouse, "ID: %02x %02x %02x", param[0], param[1], param[2]); 475 hgpk_dbg(psmouse, "ID: %02x %02x %02x\n", param[0], param[1], param[2]);
476 476
477 /* HGPK signature: 0x67, 0x00, 0x<model> */ 477 /* HGPK signature: 0x67, 0x00, 0x<model> */
478 if (param[0] != 0x67 || param[1] != 0x00) 478 if (param[0] != 0x67 || param[1] != 0x00)
diff --git a/drivers/input/mouse/maplemouse.c b/drivers/input/mouse/maplemouse.c
new file mode 100644
index 000000000000..d196abfb68bc
--- /dev/null
+++ b/drivers/input/mouse/maplemouse.c
@@ -0,0 +1,147 @@
1/*
2 * SEGA Dreamcast mouse driver
3 * Based on drivers/usb/usbmouse.c
4 *
5 * Copyright Yaegashi Takeshi, 2001
6 * Adrian McMenamin, 2008
7 */
8
9#include <linux/kernel.h>
10#include <linux/slab.h>
11#include <linux/input.h>
12#include <linux/module.h>
13#include <linux/init.h>
14#include <linux/timer.h>
15#include <linux/maple.h>
16
17MODULE_AUTHOR("Adrian McMenamin <adrian@mcmen.demon.co.uk>");
18MODULE_DESCRIPTION("SEGA Dreamcast mouse driver");
19MODULE_LICENSE("GPL");
20
21struct dc_mouse {
22 struct input_dev *dev;
23 struct maple_device *mdev;
24};
25
26static void dc_mouse_callback(struct mapleq *mq)
27{
28 int buttons, relx, rely, relz;
29 struct maple_device *mapledev = mq->dev;
30 struct dc_mouse *mse = maple_get_drvdata(mapledev);
31 struct input_dev *dev = mse->dev;
32 unsigned char *res = mq->recvbuf;
33
34 buttons = ~res[8];
35 relx = *(unsigned short *)(res + 12) - 512;
36 rely = *(unsigned short *)(res + 14) - 512;
37 relz = *(unsigned short *)(res + 16) - 512;
38
39 input_report_key(dev, BTN_LEFT, buttons & 4);
40 input_report_key(dev, BTN_MIDDLE, buttons & 9);
41 input_report_key(dev, BTN_RIGHT, buttons & 2);
42 input_report_rel(dev, REL_X, relx);
43 input_report_rel(dev, REL_Y, rely);
44 input_report_rel(dev, REL_WHEEL, relz);
45 input_sync(dev);
46}
47
48static int dc_mouse_open(struct input_dev *dev)
49{
50 struct dc_mouse *mse = dev->dev.platform_data;
51
52 maple_getcond_callback(mse->mdev, dc_mouse_callback, HZ/50,
53 MAPLE_FUNC_MOUSE);
54
55 return 0;
56}
57
58static void dc_mouse_close(struct input_dev *dev)
59{
60 struct dc_mouse *mse = dev->dev.platform_data;
61
62 maple_getcond_callback(mse->mdev, dc_mouse_callback, 0,
63 MAPLE_FUNC_MOUSE);
64}
65
66
67static int __devinit probe_maple_mouse(struct device *dev)
68{
69 struct maple_device *mdev = to_maple_dev(dev);
70 struct maple_driver *mdrv = to_maple_driver(dev->driver);
71 struct input_dev *input_dev;
72 struct dc_mouse *mse;
73 int error;
74
75 mse = kzalloc(sizeof(struct dc_mouse), GFP_KERNEL);
76 input_dev = input_allocate_device();
77
78 if (!mse || !input_dev) {
79 error = -ENOMEM;
80 goto fail;
81 }
82
83 mse->dev = input_dev;
84 mse->mdev = mdev;
85
86 input_set_drvdata(input_dev, mse);
87 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
88 input_dev->keybit[BIT_WORD(BTN_MOUSE)] = BIT_MASK(BTN_LEFT) |
89 BIT_MASK(BTN_RIGHT) | BIT_MASK(BTN_MIDDLE);
90 input_dev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y) |
91 BIT_MASK(REL_WHEEL);
92 input_dev->name = mdev->product_name;
93 input_dev->id.bustype = BUS_HOST;
94 input_dev->open = dc_mouse_open;
95 input_dev->close = dc_mouse_close;
96
97 mdev->driver = mdrv;
98 maple_set_drvdata(mdev, mse);
99
100 error = input_register_device(input_dev);
101 if (error)
102 goto fail;
103
104 return 0;
105
106fail:
107 input_free_device(input_dev);
108 maple_set_drvdata(mdev, NULL);
109 kfree(mse);
110 mdev->driver = NULL;
111 return error;
112}
113
114static int __devexit remove_maple_mouse(struct device *dev)
115{
116 struct maple_device *mdev = to_maple_dev(dev);
117 struct dc_mouse *mse = maple_get_drvdata(mdev);
118
119 mdev->callback = NULL;
120 input_unregister_device(mse->dev);
121 maple_set_drvdata(mdev, NULL);
122 kfree(mse);
123
124 return 0;
125}
126
127static struct maple_driver dc_mouse_driver = {
128 .function = MAPLE_FUNC_MOUSE,
129 .drv = {
130 .name = "Dreamcast_mouse",
131 .probe = probe_maple_mouse,
132 .remove = __devexit_p(remove_maple_mouse),
133 },
134};
135
136static int __init dc_mouse_init(void)
137{
138 return maple_driver_register(&dc_mouse_driver);
139}
140
141static void __exit dc_mouse_exit(void)
142{
143 maple_driver_unregister(&dc_mouse_driver);
144}
145
146module_init(dc_mouse_init);
147module_exit(dc_mouse_exit);
diff --git a/drivers/input/mouse/pc110pad.c b/drivers/input/mouse/pc110pad.c
index fd09c8df81f2..3941f97cfa60 100644
--- a/drivers/input/mouse/pc110pad.c
+++ b/drivers/input/mouse/pc110pad.c
@@ -108,14 +108,10 @@ static int pc110pad_open(struct input_dev *dev)
108 */ 108 */
109static int __init pc110pad_init(void) 109static int __init pc110pad_init(void)
110{ 110{
111 struct pci_dev *dev;
112 int err; 111 int err;
113 112
114 dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, NULL); 113 if (!no_pci_devices())
115 if (dev) {
116 pci_dev_put(dev);
117 return -ENODEV; 114 return -ENODEV;
118 }
119 115
120 if (!request_region(pc110pad_io, 4, "pc110pad")) { 116 if (!request_region(pc110pad_io, 4, "pc110pad")) {
121 printk(KERN_ERR "pc110pad: I/O area %#x-%#x in use.\n", 117 printk(KERN_ERR "pc110pad: I/O area %#x-%#x in use.\n",
diff --git a/drivers/input/serio/hp_sdc.c b/drivers/input/serio/hp_sdc.c
index bfe49243f38b..1c9410d1822c 100644
--- a/drivers/input/serio/hp_sdc.c
+++ b/drivers/input/serio/hp_sdc.c
@@ -819,6 +819,7 @@ static const struct parisc_device_id hp_sdc_tbl[] = {
819MODULE_DEVICE_TABLE(parisc, hp_sdc_tbl); 819MODULE_DEVICE_TABLE(parisc, hp_sdc_tbl);
820 820
821static int __init hp_sdc_init_hppa(struct parisc_device *d); 821static int __init hp_sdc_init_hppa(struct parisc_device *d);
822static struct delayed_work moduleloader_work;
822 823
823static struct parisc_driver hp_sdc_driver = { 824static struct parisc_driver hp_sdc_driver = {
824 .name = "hp_sdc", 825 .name = "hp_sdc",
@@ -930,8 +931,15 @@ static int __init hp_sdc_init(void)
930 931
931#if defined(__hppa__) 932#if defined(__hppa__)
932 933
934static void request_module_delayed(struct work_struct *work)
935{
936 request_module("hp_sdc_mlc");
937}
938
933static int __init hp_sdc_init_hppa(struct parisc_device *d) 939static int __init hp_sdc_init_hppa(struct parisc_device *d)
934{ 940{
941 int ret;
942
935 if (!d) 943 if (!d)
936 return 1; 944 return 1;
937 if (hp_sdc.dev != NULL) 945 if (hp_sdc.dev != NULL)
@@ -944,13 +952,26 @@ static int __init hp_sdc_init_hppa(struct parisc_device *d)
944 hp_sdc.data_io = d->hpa.start + 0x800; 952 hp_sdc.data_io = d->hpa.start + 0x800;
945 hp_sdc.status_io = d->hpa.start + 0x801; 953 hp_sdc.status_io = d->hpa.start + 0x801;
946 954
947 return hp_sdc_init(); 955 INIT_DELAYED_WORK(&moduleloader_work, request_module_delayed);
956
957 ret = hp_sdc_init();
958 /* after sucessfull initialization give SDC some time to settle
959 * and then load the hp_sdc_mlc upper layer driver */
960 if (!ret)
961 schedule_delayed_work(&moduleloader_work,
962 msecs_to_jiffies(2000));
963
964 return ret;
948} 965}
949 966
950#endif /* __hppa__ */ 967#endif /* __hppa__ */
951 968
952static void hp_sdc_exit(void) 969static void hp_sdc_exit(void)
953{ 970{
971 /* do nothing if we don't have a SDC */
972 if (!hp_sdc.dev)
973 return;
974
954 write_lock_irq(&hp_sdc.lock); 975 write_lock_irq(&hp_sdc.lock);
955 976
956 /* Turn off all maskable "sub-function" irq's. */ 977 /* Turn off all maskable "sub-function" irq's. */
@@ -969,6 +990,7 @@ static void hp_sdc_exit(void)
969 tasklet_kill(&hp_sdc.task); 990 tasklet_kill(&hp_sdc.task);
970 991
971#if defined(__hppa__) 992#if defined(__hppa__)
993 cancel_delayed_work_sync(&moduleloader_work);
972 if (unregister_parisc_driver(&hp_sdc_driver)) 994 if (unregister_parisc_driver(&hp_sdc_driver))
973 printk(KERN_WARNING PREFIX "Error unregistering HP SDC"); 995 printk(KERN_WARNING PREFIX "Error unregistering HP SDC");
974#endif 996#endif
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 6fa2deff7446..fb8a3cd3ffd0 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -151,6 +151,14 @@ static struct dmi_system_id __initdata i8042_dmi_noloop_table[] = {
151 DMI_MATCH(DMI_PRODUCT_VERSION, "01"), 151 DMI_MATCH(DMI_PRODUCT_VERSION, "01"),
152 }, 152 },
153 }, 153 },
154 {
155 .ident = "HP DV9700",
156 .matches = {
157 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
158 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"),
159 DMI_MATCH(DMI_PRODUCT_VERSION, "Rev 1"),
160 },
161 },
154 { } 162 { }
155}; 163};
156 164
@@ -369,6 +377,24 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {
369 { } 377 { }
370}; 378};
371 379
380static struct dmi_system_id __initdata i8042_dmi_reset_table[] = {
381 {
382 .ident = "MSI Wind U-100",
383 .matches = {
384 DMI_MATCH(DMI_BOARD_NAME, "U-100"),
385 DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
386 },
387 },
388 {
389 .ident = "LG Electronics X110",
390 .matches = {
391 DMI_MATCH(DMI_BOARD_NAME, "X110"),
392 DMI_MATCH(DMI_BOARD_VENDOR, "LG Electronics Inc."),
393 },
394 },
395 { }
396};
397
372#ifdef CONFIG_PNP 398#ifdef CONFIG_PNP
373static struct dmi_system_id __initdata i8042_dmi_nopnp_table[] = { 399static struct dmi_system_id __initdata i8042_dmi_nopnp_table[] = {
374 { 400 {
@@ -378,6 +404,13 @@ static struct dmi_system_id __initdata i8042_dmi_nopnp_table[] = {
378 DMI_MATCH(DMI_BOARD_VENDOR, "Intel Corporation"), 404 DMI_MATCH(DMI_BOARD_VENDOR, "Intel Corporation"),
379 }, 405 },
380 }, 406 },
407 {
408 .ident = "MSI Wind U-100",
409 .matches = {
410 DMI_MATCH(DMI_BOARD_NAME, "U-100"),
411 DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
412 },
413 },
381 { } 414 { }
382}; 415};
383#endif 416#endif
@@ -690,6 +723,9 @@ static int __init i8042_platform_init(void)
690#endif 723#endif
691 724
692#ifdef CONFIG_X86 725#ifdef CONFIG_X86
726 if (dmi_check_system(i8042_dmi_reset_table))
727 i8042_reset = 1;
728
693 if (dmi_check_system(i8042_dmi_noloop_table)) 729 if (dmi_check_system(i8042_dmi_noloop_table))
694 i8042_noloop = 1; 730 i8042_noloop = 1;
695 731
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 170f71ee5772..3cffb704e374 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -712,22 +712,43 @@ static int i8042_controller_check(void)
712static int i8042_controller_selftest(void) 712static int i8042_controller_selftest(void)
713{ 713{
714 unsigned char param; 714 unsigned char param;
715 int i = 0;
715 716
716 if (!i8042_reset) 717 if (!i8042_reset)
717 return 0; 718 return 0;
718 719
719 if (i8042_command(&param, I8042_CMD_CTL_TEST)) { 720 /*
720 printk(KERN_ERR "i8042.c: i8042 controller self test timeout.\n"); 721 * We try this 5 times; on some really fragile systems this does not
721 return -ENODEV; 722 * take the first time...
722 } 723 */
724 do {
725
726 if (i8042_command(&param, I8042_CMD_CTL_TEST)) {
727 printk(KERN_ERR "i8042.c: i8042 controller self test timeout.\n");
728 return -ENODEV;
729 }
730
731 if (param == I8042_RET_CTL_TEST)
732 return 0;
723 733
724 if (param != I8042_RET_CTL_TEST) {
725 printk(KERN_ERR "i8042.c: i8042 controller selftest failed. (%#x != %#x)\n", 734 printk(KERN_ERR "i8042.c: i8042 controller selftest failed. (%#x != %#x)\n",
726 param, I8042_RET_CTL_TEST); 735 param, I8042_RET_CTL_TEST);
727 return -EIO; 736 msleep(50);
728 } 737 } while (i++ < 5);
729 738
739#ifdef CONFIG_X86
740 /*
741 * On x86, we don't fail entire i8042 initialization if controller
742 * reset fails in hopes that keyboard port will still be functional
743 * and user will still get a working keyboard. This is especially
744 * important on netbooks. On other arches we trust hardware more.
745 */
746 printk(KERN_INFO
747 "i8042: giving up on controller selftest, continuing anyway...\n");
730 return 0; 748 return 0;
749#else
750 return -EIO;
751#endif
731} 752}
732 753
733/* 754/*
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index bb6486a8c070..b01fd61dadcc 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -29,6 +29,51 @@ config TOUCHSCREEN_ADS7846
29 To compile this driver as a module, choose M here: the 29 To compile this driver as a module, choose M here: the
30 module will be called ads7846. 30 module will be called ads7846.
31 31
32config TOUCHSCREEN_AD7877
33 tristate "AD7877 based touchscreens"
34 depends on SPI_MASTER
35 help
36 Say Y here if you have a touchscreen interface using the
37 AD7877 controller, and your board-specific initialization
38 code includes that in its table of SPI devices.
39
40 If unsure, say N (but it's safe to say "Y").
41
42 To compile this driver as a module, choose M here: the
43 module will be called ad7877.
44
45config TOUCHSCREEN_AD7879_I2C
46 tristate "AD7879 based touchscreens: AD7879-1 I2C Interface"
47 depends on I2C
48 select TOUCHSCREEN_AD7879
49 help
50 Say Y here if you have a touchscreen interface using the
51 AD7879-1 controller, and your board-specific initialization
52 code includes that in its table of I2C devices.
53
54 If unsure, say N (but it's safe to say "Y").
55
56 To compile this driver as a module, choose M here: the
57 module will be called ad7879.
58
59config TOUCHSCREEN_AD7879_SPI
60 tristate "AD7879 based touchscreens: AD7879 SPI Interface"
61 depends on SPI_MASTER && TOUCHSCREEN_AD7879_I2C = n
62 select TOUCHSCREEN_AD7879
63 help
64 Say Y here if you have a touchscreen interface using the
65 AD7879 controller, and your board-specific initialization
66 code includes that in its table of SPI devices.
67
68 If unsure, say N (but it's safe to say "Y").
69
70 To compile this driver as a module, choose M here: the
71 module will be called ad7879.
72
73config TOUCHSCREEN_AD7879
74 tristate
75 default n
76
32config TOUCHSCREEN_BITSY 77config TOUCHSCREEN_BITSY
33 tristate "Compaq iPAQ H3600 (Bitsy) touchscreen" 78 tristate "Compaq iPAQ H3600 (Bitsy) touchscreen"
34 depends on SA1100_BITSY 79 depends on SA1100_BITSY
@@ -308,6 +353,19 @@ config TOUCHSCREEN_WM97XX_MAINSTONE
308 To compile this driver as a module, choose M here: the 353 To compile this driver as a module, choose M here: the
309 module will be called mainstone-wm97xx. 354 module will be called mainstone-wm97xx.
310 355
356config TOUCHSCREEN_WM97XX_ZYLONITE
357 tristate "Zylonite accelerated touch"
358 depends on TOUCHSCREEN_WM97XX && MACH_ZYLONITE
359 select TOUCHSCREEN_WM9713
360 help
361 Say Y here for support for streaming mode with the touchscreen
362 on Zylonite systems.
363
364 If unsure, say N.
365
366 To compile this driver as a module, choose M here: the
367 module will be called zylonite-wm97xx.
368
311config TOUCHSCREEN_USB_COMPOSITE 369config TOUCHSCREEN_USB_COMPOSITE
312 tristate "USB Touchscreen Driver" 370 tristate "USB Touchscreen Driver"
313 depends on USB_ARCH_HAS_HCD 371 depends on USB_ARCH_HAS_HCD
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index d3375aff46fe..6700f7b9d165 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -6,6 +6,8 @@
6 6
7wm97xx-ts-y := wm97xx-core.o 7wm97xx-ts-y := wm97xx-core.o
8 8
9obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o
10obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o
9obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o 11obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o
10obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) += atmel_tsadcc.o 12obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) += atmel_tsadcc.o
11obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o 13obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o
@@ -34,3 +36,4 @@ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9705) += wm9705.o
34wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o 36wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o
35wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o 37wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o
36obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o 38obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o
39obj-$(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE) += zylonite-wm97xx.o
diff --git a/drivers/input/touchscreen/ad7877.c b/drivers/input/touchscreen/ad7877.c
new file mode 100644
index 000000000000..ecaeb7e8e75e
--- /dev/null
+++ b/drivers/input/touchscreen/ad7877.c
@@ -0,0 +1,844 @@
1/*
2 * Copyright (C) 2006-2008 Michael Hennerich, Analog Devices Inc.
3 *
4 * Description: AD7877 based touchscreen, sensor (ADCs), DAC and GPIO driver
5 * Based on: ads7846.c
6 *
7 * Bugs: Enter bugs at http://blackfin.uclinux.org/
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, see the file COPYING, or write
21 * to the Free Software Foundation, Inc.,
22 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23 *
24 * History:
25 * Copyright (c) 2005 David Brownell
26 * Copyright (c) 2006 Nokia Corporation
27 * Various changes: Imre Deak <imre.deak@nokia.com>
28 *
29 * Using code from:
30 * - corgi_ts.c
31 * Copyright (C) 2004-2005 Richard Purdie
32 * - omap_ts.[hc], ads7846.h, ts_osk.c
33 * Copyright (C) 2002 MontaVista Software
34 * Copyright (C) 2004 Texas Instruments
35 * Copyright (C) 2005 Dirk Behme
36 */
37
38
39#include <linux/device.h>
40#include <linux/init.h>
41#include <linux/delay.h>
42#include <linux/input.h>
43#include <linux/interrupt.h>
44#include <linux/slab.h>
45#include <linux/spi/spi.h>
46#include <linux/spi/ad7877.h>
47#include <asm/irq.h>
48
49#define TS_PEN_UP_TIMEOUT msecs_to_jiffies(50)
50
51#define MAX_SPI_FREQ_HZ 20000000
52#define MAX_12BIT ((1<<12)-1)
53
54#define AD7877_REG_ZEROS 0
55#define AD7877_REG_CTRL1 1
56#define AD7877_REG_CTRL2 2
57#define AD7877_REG_ALERT 3
58#define AD7877_REG_AUX1HIGH 4
59#define AD7877_REG_AUX1LOW 5
60#define AD7877_REG_BAT1HIGH 6
61#define AD7877_REG_BAT1LOW 7
62#define AD7877_REG_BAT2HIGH 8
63#define AD7877_REG_BAT2LOW 9
64#define AD7877_REG_TEMP1HIGH 10
65#define AD7877_REG_TEMP1LOW 11
66#define AD7877_REG_SEQ0 12
67#define AD7877_REG_SEQ1 13
68#define AD7877_REG_DAC 14
69#define AD7877_REG_NONE1 15
70#define AD7877_REG_EXTWRITE 15
71#define AD7877_REG_XPLUS 16
72#define AD7877_REG_YPLUS 17
73#define AD7877_REG_Z2 18
74#define AD7877_REG_aux1 19
75#define AD7877_REG_aux2 20
76#define AD7877_REG_aux3 21
77#define AD7877_REG_bat1 22
78#define AD7877_REG_bat2 23
79#define AD7877_REG_temp1 24
80#define AD7877_REG_temp2 25
81#define AD7877_REG_Z1 26
82#define AD7877_REG_GPIOCTRL1 27
83#define AD7877_REG_GPIOCTRL2 28
84#define AD7877_REG_GPIODATA 29
85#define AD7877_REG_NONE2 30
86#define AD7877_REG_NONE3 31
87
88#define AD7877_SEQ_YPLUS_BIT (1<<11)
89#define AD7877_SEQ_XPLUS_BIT (1<<10)
90#define AD7877_SEQ_Z2_BIT (1<<9)
91#define AD7877_SEQ_AUX1_BIT (1<<8)
92#define AD7877_SEQ_AUX2_BIT (1<<7)
93#define AD7877_SEQ_AUX3_BIT (1<<6)
94#define AD7877_SEQ_BAT1_BIT (1<<5)
95#define AD7877_SEQ_BAT2_BIT (1<<4)
96#define AD7877_SEQ_TEMP1_BIT (1<<3)
97#define AD7877_SEQ_TEMP2_BIT (1<<2)
98#define AD7877_SEQ_Z1_BIT (1<<1)
99
100enum {
101 AD7877_SEQ_YPOS = 0,
102 AD7877_SEQ_XPOS = 1,
103 AD7877_SEQ_Z2 = 2,
104 AD7877_SEQ_AUX1 = 3,
105 AD7877_SEQ_AUX2 = 4,
106 AD7877_SEQ_AUX3 = 5,
107 AD7877_SEQ_BAT1 = 6,
108 AD7877_SEQ_BAT2 = 7,
109 AD7877_SEQ_TEMP1 = 8,
110 AD7877_SEQ_TEMP2 = 9,
111 AD7877_SEQ_Z1 = 10,
112 AD7877_NR_SENSE = 11,
113};
114
115/* DAC Register Default RANGE 0 to Vcc, Volatge Mode, DAC On */
116#define AD7877_DAC_CONF 0x1
117
118/* If gpio3 is set AUX3/GPIO3 acts as GPIO Output */
119#define AD7877_EXTW_GPIO_3_CONF 0x1C4
120#define AD7877_EXTW_GPIO_DATA 0x200
121
122/* Control REG 2 */
123#define AD7877_TMR(x) ((x & 0x3) << 0)
124#define AD7877_REF(x) ((x & 0x1) << 2)
125#define AD7877_POL(x) ((x & 0x1) << 3)
126#define AD7877_FCD(x) ((x & 0x3) << 4)
127#define AD7877_PM(x) ((x & 0x3) << 6)
128#define AD7877_ACQ(x) ((x & 0x3) << 8)
129#define AD7877_AVG(x) ((x & 0x3) << 10)
130
131/* Control REG 1 */
132#define AD7877_SER (1 << 11) /* non-differential */
133#define AD7877_DFR (0 << 11) /* differential */
134
135#define AD7877_MODE_NOC (0) /* Do not convert */
136#define AD7877_MODE_SCC (1) /* Single channel conversion */
137#define AD7877_MODE_SEQ0 (2) /* Sequence 0 in Slave Mode */
138#define AD7877_MODE_SEQ1 (3) /* Sequence 1 in Master Mode */
139
140#define AD7877_CHANADD(x) ((x&0xF)<<7)
141#define AD7877_READADD(x) ((x)<<2)
142#define AD7877_WRITEADD(x) ((x)<<12)
143
144#define AD7877_READ_CHAN(x) (AD7877_WRITEADD(AD7877_REG_CTRL1) | AD7877_SER | \
145 AD7877_MODE_SCC | AD7877_CHANADD(AD7877_REG_ ## x) | \
146 AD7877_READADD(AD7877_REG_ ## x))
147
148#define AD7877_MM_SEQUENCE (AD7877_SEQ_YPLUS_BIT | AD7877_SEQ_XPLUS_BIT | \
149 AD7877_SEQ_Z2_BIT | AD7877_SEQ_Z1_BIT)
150
151/*
152 * Non-touchscreen sensors only use single-ended conversions.
153 */
154
155struct ser_req {
156 u16 reset;
157 u16 ref_on;
158 u16 command;
159 u16 sample;
160 struct spi_message msg;
161 struct spi_transfer xfer[6];
162};
163
164struct ad7877 {
165 struct input_dev *input;
166 char phys[32];
167
168 struct spi_device *spi;
169 u16 model;
170 u16 vref_delay_usecs;
171 u16 x_plate_ohms;
172 u16 pressure_max;
173
174 u16 cmd_crtl1;
175 u16 cmd_crtl2;
176 u16 cmd_dummy;
177 u16 dac;
178
179 u8 stopacq_polarity;
180 u8 first_conversion_delay;
181 u8 acquisition_time;
182 u8 averaging;
183 u8 pen_down_acc_interval;
184
185 u16 conversion_data[AD7877_NR_SENSE];
186
187 struct spi_transfer xfer[AD7877_NR_SENSE + 2];
188 struct spi_message msg;
189
190 struct mutex mutex;
191 unsigned disabled:1; /* P: mutex */
192 unsigned gpio3:1; /* P: mutex */
193 unsigned gpio4:1; /* P: mutex */
194
195 spinlock_t lock;
196 struct timer_list timer; /* P: lock */
197 unsigned pending:1; /* P: lock */
198};
199
200static int gpio3;
201module_param(gpio3, int, 0);
202MODULE_PARM_DESC(gpio3, "If gpio3 is set to 1 AUX3 acts as GPIO3");
203
204/*
205 * ad7877_read/write are only used for initial setup and for sysfs controls.
206 * The main traffic is done using spi_async() in the interrupt handler.
207 */
208
209static int ad7877_read(struct spi_device *spi, u16 reg)
210{
211 struct ser_req *req;
212 int status, ret;
213
214 req = kzalloc(sizeof *req, GFP_KERNEL);
215 if (!req)
216 return -ENOMEM;
217
218 spi_message_init(&req->msg);
219
220 req->command = (u16) (AD7877_WRITEADD(AD7877_REG_CTRL1) |
221 AD7877_READADD(reg));
222 req->xfer[0].tx_buf = &req->command;
223 req->xfer[0].len = 2;
224
225 req->xfer[1].rx_buf = &req->sample;
226 req->xfer[1].len = 2;
227
228 spi_message_add_tail(&req->xfer[0], &req->msg);
229 spi_message_add_tail(&req->xfer[1], &req->msg);
230
231 status = spi_sync(spi, &req->msg);
232 ret = status ? : req->sample;
233
234 kfree(req);
235
236 return ret;
237}
238
239static int ad7877_write(struct spi_device *spi, u16 reg, u16 val)
240{
241 struct ser_req *req;
242 int status;
243
244 req = kzalloc(sizeof *req, GFP_KERNEL);
245 if (!req)
246 return -ENOMEM;
247
248 spi_message_init(&req->msg);
249
250 req->command = (u16) (AD7877_WRITEADD(reg) | (val & MAX_12BIT));
251 req->xfer[0].tx_buf = &req->command;
252 req->xfer[0].len = 2;
253
254 spi_message_add_tail(&req->xfer[0], &req->msg);
255
256 status = spi_sync(spi, &req->msg);
257
258 kfree(req);
259
260 return status;
261}
262
263static int ad7877_read_adc(struct spi_device *spi, unsigned command)
264{
265 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
266 struct ser_req *req;
267 int status;
268 int sample;
269 int i;
270
271 req = kzalloc(sizeof *req, GFP_KERNEL);
272 if (!req)
273 return -ENOMEM;
274
275 spi_message_init(&req->msg);
276
277 /* activate reference, so it has time to settle; */
278 req->ref_on = AD7877_WRITEADD(AD7877_REG_CTRL2) |
279 AD7877_POL(ts->stopacq_polarity) |
280 AD7877_AVG(0) | AD7877_PM(2) | AD7877_TMR(0) |
281 AD7877_ACQ(ts->acquisition_time) | AD7877_FCD(0);
282
283 req->reset = AD7877_WRITEADD(AD7877_REG_CTRL1) | AD7877_MODE_NOC;
284
285 req->command = (u16) command;
286
287 req->xfer[0].tx_buf = &req->reset;
288 req->xfer[0].len = 2;
289
290 req->xfer[1].tx_buf = &req->ref_on;
291 req->xfer[1].len = 2;
292 req->xfer[1].delay_usecs = ts->vref_delay_usecs;
293
294 req->xfer[2].tx_buf = &req->command;
295 req->xfer[2].len = 2;
296 req->xfer[2].delay_usecs = ts->vref_delay_usecs;
297
298 req->xfer[3].rx_buf = &req->sample;
299 req->xfer[3].len = 2;
300
301 req->xfer[4].tx_buf = &ts->cmd_crtl2; /*REF OFF*/
302 req->xfer[4].len = 2;
303
304 req->xfer[5].tx_buf = &ts->cmd_crtl1; /*DEFAULT*/
305 req->xfer[5].len = 2;
306
307 /* group all the transfers together, so we can't interfere with
308 * reading touchscreen state; disable penirq while sampling
309 */
310 for (i = 0; i < 6; i++)
311 spi_message_add_tail(&req->xfer[i], &req->msg);
312
313 status = spi_sync(spi, &req->msg);
314 sample = req->sample;
315
316 kfree(req);
317
318 return status ? : sample;
319}
320
321static void ad7877_rx(struct ad7877 *ts)
322{
323 struct input_dev *input_dev = ts->input;
324 unsigned Rt;
325 u16 x, y, z1, z2;
326
327 x = ts->conversion_data[AD7877_SEQ_XPOS] & MAX_12BIT;
328 y = ts->conversion_data[AD7877_SEQ_YPOS] & MAX_12BIT;
329 z1 = ts->conversion_data[AD7877_SEQ_Z1] & MAX_12BIT;
330 z2 = ts->conversion_data[AD7877_SEQ_Z2] & MAX_12BIT;
331
332 /*
333 * The samples processed here are already preprocessed by the AD7877.
334 * The preprocessing function consists of an averaging filter.
335 * The combination of 'first conversion delay' and averaging provides a robust solution,
336 * discarding the spurious noise in the signal and keeping only the data of interest.
337 * The size of the averaging filter is programmable. (dev.platform_data, see linux/spi/ad7877.h)
338 * Other user-programmable conversion controls include variable acquisition time,
339 * and first conversion delay. Up to 16 averages can be taken per conversion.
340 */
341
342 if (likely(x && z1)) {
343 /* compute touch pressure resistance using equation #1 */
344 Rt = (z2 - z1) * x * ts->x_plate_ohms;
345 Rt /= z1;
346 Rt = (Rt + 2047) >> 12;
347
348 input_report_abs(input_dev, ABS_X, x);
349 input_report_abs(input_dev, ABS_Y, y);
350 input_report_abs(input_dev, ABS_PRESSURE, Rt);
351 input_sync(input_dev);
352 }
353}
354
355static inline void ad7877_ts_event_release(struct ad7877 *ts)
356{
357 struct input_dev *input_dev = ts->input;
358
359 input_report_abs(input_dev, ABS_PRESSURE, 0);
360 input_sync(input_dev);
361}
362
363static void ad7877_timer(unsigned long handle)
364{
365 struct ad7877 *ts = (void *)handle;
366
367 ad7877_ts_event_release(ts);
368}
369
370static irqreturn_t ad7877_irq(int irq, void *handle)
371{
372 struct ad7877 *ts = handle;
373 unsigned long flags;
374 int status;
375
376 /*
377 * The repeated conversion sequencer controlled by TMR kicked off
378 * too fast. We ignore the last and process the sample sequence
379 * currently in the queue. It can't be older than 9.4ms, and we
380 * need to avoid that ts->msg doesn't get issued twice while in work.
381 */
382
383 spin_lock_irqsave(&ts->lock, flags);
384 if (!ts->pending) {
385 ts->pending = 1;
386
387 status = spi_async(ts->spi, &ts->msg);
388 if (status)
389 dev_err(&ts->spi->dev, "spi_sync --> %d\n", status);
390 }
391 spin_unlock_irqrestore(&ts->lock, flags);
392
393 return IRQ_HANDLED;
394}
395
396static void ad7877_callback(void *_ts)
397{
398 struct ad7877 *ts = _ts;
399
400 spin_lock_irq(&ts->lock);
401
402 ad7877_rx(ts);
403 ts->pending = 0;
404 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT);
405
406 spin_unlock_irq(&ts->lock);
407}
408
409static void ad7877_disable(struct ad7877 *ts)
410{
411 mutex_lock(&ts->mutex);
412
413 if (!ts->disabled) {
414 ts->disabled = 1;
415 disable_irq(ts->spi->irq);
416
417 /* Wait for spi_async callback */
418 while (ts->pending)
419 msleep(1);
420
421 if (del_timer_sync(&ts->timer))
422 ad7877_ts_event_release(ts);
423 }
424
425 /* we know the chip's in lowpower mode since we always
426 * leave it that way after every request
427 */
428
429 mutex_unlock(&ts->mutex);
430}
431
432static void ad7877_enable(struct ad7877 *ts)
433{
434 mutex_lock(&ts->mutex);
435
436 if (ts->disabled) {
437 ts->disabled = 0;
438 enable_irq(ts->spi->irq);
439 }
440
441 mutex_unlock(&ts->mutex);
442}
443
444#define SHOW(name) static ssize_t \
445name ## _show(struct device *dev, struct device_attribute *attr, char *buf) \
446{ \
447 struct ad7877 *ts = dev_get_drvdata(dev); \
448 ssize_t v = ad7877_read_adc(ts->spi, \
449 AD7877_READ_CHAN(name)); \
450 if (v < 0) \
451 return v; \
452 return sprintf(buf, "%u\n", (unsigned) v); \
453} \
454static DEVICE_ATTR(name, S_IRUGO, name ## _show, NULL);
455
456SHOW(aux1)
457SHOW(aux2)
458SHOW(aux3)
459SHOW(bat1)
460SHOW(bat2)
461SHOW(temp1)
462SHOW(temp2)
463
464static ssize_t ad7877_disable_show(struct device *dev,
465 struct device_attribute *attr, char *buf)
466{
467 struct ad7877 *ts = dev_get_drvdata(dev);
468
469 return sprintf(buf, "%u\n", ts->disabled);
470}
471
472static ssize_t ad7877_disable_store(struct device *dev,
473 struct device_attribute *attr,
474 const char *buf, size_t count)
475{
476 struct ad7877 *ts = dev_get_drvdata(dev);
477 unsigned long val;
478 int error;
479
480 error = strict_strtoul(buf, 10, &val);
481 if (error)
482 return error;
483
484 if (val)
485 ad7877_disable(ts);
486 else
487 ad7877_enable(ts);
488
489 return count;
490}
491
492static DEVICE_ATTR(disable, 0664, ad7877_disable_show, ad7877_disable_store);
493
494static ssize_t ad7877_dac_show(struct device *dev,
495 struct device_attribute *attr, char *buf)
496{
497 struct ad7877 *ts = dev_get_drvdata(dev);
498
499 return sprintf(buf, "%u\n", ts->dac);
500}
501
502static ssize_t ad7877_dac_store(struct device *dev,
503 struct device_attribute *attr,
504 const char *buf, size_t count)
505{
506 struct ad7877 *ts = dev_get_drvdata(dev);
507 unsigned long val;
508 int error;
509
510 error = strict_strtoul(buf, 10, &val);
511 if (error)
512 return error;
513
514 mutex_lock(&ts->mutex);
515 ts->dac = val & 0xFF;
516 ad7877_write(ts->spi, AD7877_REG_DAC, (ts->dac << 4) | AD7877_DAC_CONF);
517 mutex_unlock(&ts->mutex);
518
519 return count;
520}
521
522static DEVICE_ATTR(dac, 0664, ad7877_dac_show, ad7877_dac_store);
523
524static ssize_t ad7877_gpio3_show(struct device *dev,
525 struct device_attribute *attr, char *buf)
526{
527 struct ad7877 *ts = dev_get_drvdata(dev);
528
529 return sprintf(buf, "%u\n", ts->gpio3);
530}
531
532static ssize_t ad7877_gpio3_store(struct device *dev,
533 struct device_attribute *attr,
534 const char *buf, size_t count)
535{
536 struct ad7877 *ts = dev_get_drvdata(dev);
537 unsigned long val;
538 int error;
539
540 error = strict_strtoul(buf, 10, &val);
541 if (error)
542 return error;
543
544 mutex_lock(&ts->mutex);
545 ts->gpio3 = !!val;
546 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA |
547 (ts->gpio4 << 4) | (ts->gpio3 << 5));
548 mutex_unlock(&ts->mutex);
549
550 return count;
551}
552
553static DEVICE_ATTR(gpio3, 0664, ad7877_gpio3_show, ad7877_gpio3_store);
554
555static ssize_t ad7877_gpio4_show(struct device *dev,
556 struct device_attribute *attr, char *buf)
557{
558 struct ad7877 *ts = dev_get_drvdata(dev);
559
560 return sprintf(buf, "%u\n", ts->gpio4);
561}
562
563static ssize_t ad7877_gpio4_store(struct device *dev,
564 struct device_attribute *attr,
565 const char *buf, size_t count)
566{
567 struct ad7877 *ts = dev_get_drvdata(dev);
568 unsigned long val;
569 int error;
570
571 error = strict_strtoul(buf, 10, &val);
572 if (error)
573 return error;
574
575 mutex_lock(&ts->mutex);
576 ts->gpio4 = !!val;
577 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA |
578 (ts->gpio4 << 4) | (ts->gpio3 << 5));
579 mutex_unlock(&ts->mutex);
580
581 return count;
582}
583
584static DEVICE_ATTR(gpio4, 0664, ad7877_gpio4_show, ad7877_gpio4_store);
585
586static struct attribute *ad7877_attributes[] = {
587 &dev_attr_temp1.attr,
588 &dev_attr_temp2.attr,
589 &dev_attr_aux1.attr,
590 &dev_attr_aux2.attr,
591 &dev_attr_bat1.attr,
592 &dev_attr_bat2.attr,
593 &dev_attr_disable.attr,
594 &dev_attr_dac.attr,
595 &dev_attr_gpio4.attr,
596 NULL
597};
598
599static const struct attribute_group ad7877_attr_group = {
600 .attrs = ad7877_attributes,
601};
602
603static void ad7877_setup_ts_def_msg(struct spi_device *spi, struct ad7877 *ts)
604{
605 struct spi_message *m;
606 int i;
607
608 ts->cmd_crtl2 = AD7877_WRITEADD(AD7877_REG_CTRL2) |
609 AD7877_POL(ts->stopacq_polarity) |
610 AD7877_AVG(ts->averaging) | AD7877_PM(1) |
611 AD7877_TMR(ts->pen_down_acc_interval) |
612 AD7877_ACQ(ts->acquisition_time) |
613 AD7877_FCD(ts->first_conversion_delay);
614
615 ad7877_write(spi, AD7877_REG_CTRL2, ts->cmd_crtl2);
616
617 ts->cmd_crtl1 = AD7877_WRITEADD(AD7877_REG_CTRL1) |
618 AD7877_READADD(AD7877_REG_XPLUS-1) |
619 AD7877_MODE_SEQ1 | AD7877_DFR;
620
621 ad7877_write(spi, AD7877_REG_CTRL1, ts->cmd_crtl1);
622
623 ts->cmd_dummy = 0;
624
625 m = &ts->msg;
626
627 spi_message_init(m);
628
629 m->complete = ad7877_callback;
630 m->context = ts;
631
632 ts->xfer[0].tx_buf = &ts->cmd_crtl1;
633 ts->xfer[0].len = 2;
634
635 spi_message_add_tail(&ts->xfer[0], m);
636
637 ts->xfer[1].tx_buf = &ts->cmd_dummy; /* Send ZERO */
638 ts->xfer[1].len = 2;
639
640 spi_message_add_tail(&ts->xfer[1], m);
641
642 for (i = 0; i < 11; i++) {
643 ts->xfer[i + 2].rx_buf = &ts->conversion_data[AD7877_SEQ_YPOS + i];
644 ts->xfer[i + 2].len = 2;
645 spi_message_add_tail(&ts->xfer[i + 2], m);
646 }
647}
648
649static int __devinit ad7877_probe(struct spi_device *spi)
650{
651 struct ad7877 *ts;
652 struct input_dev *input_dev;
653 struct ad7877_platform_data *pdata = spi->dev.platform_data;
654 int err;
655 u16 verify;
656
657 if (!spi->irq) {
658 dev_dbg(&spi->dev, "no IRQ?\n");
659 return -ENODEV;
660 }
661
662 if (!pdata) {
663 dev_dbg(&spi->dev, "no platform data?\n");
664 return -ENODEV;
665 }
666
667 /* don't exceed max specified SPI CLK frequency */
668 if (spi->max_speed_hz > MAX_SPI_FREQ_HZ) {
669 dev_dbg(&spi->dev, "SPI CLK %d Hz?\n",spi->max_speed_hz);
670 return -EINVAL;
671 }
672
673 ts = kzalloc(sizeof(struct ad7877), GFP_KERNEL);
674 input_dev = input_allocate_device();
675 if (!ts || !input_dev) {
676 err = -ENOMEM;
677 goto err_free_mem;
678 }
679
680 dev_set_drvdata(&spi->dev, ts);
681 ts->spi = spi;
682 ts->input = input_dev;
683
684 setup_timer(&ts->timer, ad7877_timer, (unsigned long) ts);
685 mutex_init(&ts->mutex);
686 spin_lock_init(&ts->lock);
687
688 ts->model = pdata->model ? : 7877;
689 ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100;
690 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
691 ts->pressure_max = pdata->pressure_max ? : ~0;
692
693 ts->stopacq_polarity = pdata->stopacq_polarity;
694 ts->first_conversion_delay = pdata->first_conversion_delay;
695 ts->acquisition_time = pdata->acquisition_time;
696 ts->averaging = pdata->averaging;
697 ts->pen_down_acc_interval = pdata->pen_down_acc_interval;
698
699 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev));
700
701 input_dev->name = "AD7877 Touchscreen";
702 input_dev->phys = ts->phys;
703 input_dev->dev.parent = &spi->dev;
704
705 __set_bit(EV_ABS, input_dev->evbit);
706 __set_bit(ABS_X, input_dev->absbit);
707 __set_bit(ABS_Y, input_dev->absbit);
708 __set_bit(ABS_PRESSURE, input_dev->absbit);
709
710 input_set_abs_params(input_dev, ABS_X,
711 pdata->x_min ? : 0,
712 pdata->x_max ? : MAX_12BIT,
713 0, 0);
714 input_set_abs_params(input_dev, ABS_Y,
715 pdata->y_min ? : 0,
716 pdata->y_max ? : MAX_12BIT,
717 0, 0);
718 input_set_abs_params(input_dev, ABS_PRESSURE,
719 pdata->pressure_min, pdata->pressure_max, 0, 0);
720
721 ad7877_write(spi, AD7877_REG_SEQ1, AD7877_MM_SEQUENCE);
722
723 verify = ad7877_read(spi, AD7877_REG_SEQ1);
724
725 if (verify != AD7877_MM_SEQUENCE){
726 dev_err(&spi->dev, "%s: Failed to probe %s\n",
727 dev_name(&spi->dev), input_dev->name);
728 err = -ENODEV;
729 goto err_free_mem;
730 }
731
732 if (gpio3)
733 ad7877_write(spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_3_CONF);
734
735 ad7877_setup_ts_def_msg(spi, ts);
736
737 /* Request AD7877 /DAV GPIO interrupt */
738
739 err = request_irq(spi->irq, ad7877_irq, IRQF_TRIGGER_FALLING,
740 spi->dev.driver->name, ts);
741 if (err) {
742 dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq);
743 goto err_free_mem;
744 }
745
746 err = sysfs_create_group(&spi->dev.kobj, &ad7877_attr_group);
747 if (err)
748 goto err_free_irq;
749
750 err = device_create_file(&spi->dev,
751 gpio3 ? &dev_attr_gpio3 : &dev_attr_aux3);
752 if (err)
753 goto err_remove_attr_group;
754
755 err = input_register_device(input_dev);
756 if (err)
757 goto err_remove_attr;
758
759 return 0;
760
761err_remove_attr:
762 device_remove_file(&spi->dev,
763 gpio3 ? &dev_attr_gpio3 : &dev_attr_aux3);
764err_remove_attr_group:
765 sysfs_remove_group(&spi->dev.kobj, &ad7877_attr_group);
766err_free_irq:
767 free_irq(spi->irq, ts);
768err_free_mem:
769 input_free_device(input_dev);
770 kfree(ts);
771 dev_set_drvdata(&spi->dev, NULL);
772 return err;
773}
774
775static int __devexit ad7877_remove(struct spi_device *spi)
776{
777 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
778
779 sysfs_remove_group(&spi->dev.kobj, &ad7877_attr_group);
780 device_remove_file(&spi->dev,
781 gpio3 ? &dev_attr_gpio3 : &dev_attr_aux3);
782
783 ad7877_disable(ts);
784 free_irq(ts->spi->irq, ts);
785
786 input_unregister_device(ts->input);
787 kfree(ts);
788
789 dev_dbg(&spi->dev, "unregistered touchscreen\n");
790 dev_set_drvdata(&spi->dev, NULL);
791
792 return 0;
793}
794
795#ifdef CONFIG_PM
796static int ad7877_suspend(struct spi_device *spi, pm_message_t message)
797{
798 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
799
800 ad7877_disable(ts);
801
802 return 0;
803}
804
805static int ad7877_resume(struct spi_device *spi)
806{
807 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
808
809 ad7877_enable(ts);
810
811 return 0;
812}
813#else
814#define ad7877_suspend NULL
815#define ad7877_resume NULL
816#endif
817
818static struct spi_driver ad7877_driver = {
819 .driver = {
820 .name = "ad7877",
821 .bus = &spi_bus_type,
822 .owner = THIS_MODULE,
823 },
824 .probe = ad7877_probe,
825 .remove = __devexit_p(ad7877_remove),
826 .suspend = ad7877_suspend,
827 .resume = ad7877_resume,
828};
829
830static int __init ad7877_init(void)
831{
832 return spi_register_driver(&ad7877_driver);
833}
834module_init(ad7877_init);
835
836static void __exit ad7877_exit(void)
837{
838 spi_unregister_driver(&ad7877_driver);
839}
840module_exit(ad7877_exit);
841
842MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
843MODULE_DESCRIPTION("AD7877 touchscreen Driver");
844MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/ad7879.c b/drivers/input/touchscreen/ad7879.c
new file mode 100644
index 000000000000..5d8a70398807
--- /dev/null
+++ b/drivers/input/touchscreen/ad7879.c
@@ -0,0 +1,781 @@
1/*
2 * Copyright (C) 2008 Michael Hennerich, Analog Devices Inc.
3 *
4 * Description: AD7879 based touchscreen, and GPIO driver (I2C/SPI Interface)
5 *
6 * Bugs: Enter bugs at http://blackfin.uclinux.org/
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, see the file COPYING, or write
20 * to the Free Software Foundation, Inc.,
21 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 *
23 * History:
24 * Copyright (c) 2005 David Brownell
25 * Copyright (c) 2006 Nokia Corporation
26 * Various changes: Imre Deak <imre.deak@nokia.com>
27 *
28 * Using code from:
29 * - corgi_ts.c
30 * Copyright (C) 2004-2005 Richard Purdie
31 * - omap_ts.[hc], ads7846.h, ts_osk.c
32 * Copyright (C) 2002 MontaVista Software
33 * Copyright (C) 2004 Texas Instruments
34 * Copyright (C) 2005 Dirk Behme
35 * - ad7877.c
36 * Copyright (C) 2006-2008 Analog Devices Inc.
37 */
38
39#include <linux/device.h>
40#include <linux/init.h>
41#include <linux/delay.h>
42#include <linux/input.h>
43#include <linux/interrupt.h>
44#include <linux/irq.h>
45#include <linux/slab.h>
46#include <linux/workqueue.h>
47#include <linux/spi/spi.h>
48#include <linux/i2c.h>
49
50#include <linux/spi/ad7879.h>
51
52#define AD7879_REG_ZEROS 0
53#define AD7879_REG_CTRL1 1
54#define AD7879_REG_CTRL2 2
55#define AD7879_REG_CTRL3 3
56#define AD7879_REG_AUX1HIGH 4
57#define AD7879_REG_AUX1LOW 5
58#define AD7879_REG_TEMP1HIGH 6
59#define AD7879_REG_TEMP1LOW 7
60#define AD7879_REG_XPLUS 8
61#define AD7879_REG_YPLUS 9
62#define AD7879_REG_Z1 10
63#define AD7879_REG_Z2 11
64#define AD7879_REG_AUXVBAT 12
65#define AD7879_REG_TEMP 13
66#define AD7879_REG_REVID 14
67
68/* Control REG 1 */
69#define AD7879_TMR(x) ((x & 0xFF) << 0)
70#define AD7879_ACQ(x) ((x & 0x3) << 8)
71#define AD7879_MODE_NOC (0 << 10) /* Do not convert */
72#define AD7879_MODE_SCC (1 << 10) /* Single channel conversion */
73#define AD7879_MODE_SEQ0 (2 << 10) /* Sequence 0 in Slave Mode */
74#define AD7879_MODE_SEQ1 (3 << 10) /* Sequence 1 in Master Mode */
75#define AD7879_MODE_INT (1 << 15) /* PENIRQ disabled INT enabled */
76
77/* Control REG 2 */
78#define AD7879_FCD(x) ((x & 0x3) << 0)
79#define AD7879_RESET (1 << 4)
80#define AD7879_MFS(x) ((x & 0x3) << 5)
81#define AD7879_AVG(x) ((x & 0x3) << 7)
82#define AD7879_SER (1 << 9) /* non-differential */
83#define AD7879_DFR (0 << 9) /* differential */
84#define AD7879_GPIOPOL (1 << 10)
85#define AD7879_GPIODIR (1 << 11)
86#define AD7879_GPIO_DATA (1 << 12)
87#define AD7879_GPIO_EN (1 << 13)
88#define AD7879_PM(x) ((x & 0x3) << 14)
89#define AD7879_PM_SHUTDOWN (0)
90#define AD7879_PM_DYN (1)
91#define AD7879_PM_FULLON (2)
92
93/* Control REG 3 */
94#define AD7879_TEMPMASK_BIT (1<<15)
95#define AD7879_AUXVBATMASK_BIT (1<<14)
96#define AD7879_INTMODE_BIT (1<<13)
97#define AD7879_GPIOALERTMASK_BIT (1<<12)
98#define AD7879_AUXLOW_BIT (1<<11)
99#define AD7879_AUXHIGH_BIT (1<<10)
100#define AD7879_TEMPLOW_BIT (1<<9)
101#define AD7879_TEMPHIGH_BIT (1<<8)
102#define AD7879_YPLUS_BIT (1<<7)
103#define AD7879_XPLUS_BIT (1<<6)
104#define AD7879_Z1_BIT (1<<5)
105#define AD7879_Z2_BIT (1<<4)
106#define AD7879_AUX_BIT (1<<3)
107#define AD7879_VBAT_BIT (1<<2)
108#define AD7879_TEMP_BIT (1<<1)
109
110enum {
111 AD7879_SEQ_XPOS = 0,
112 AD7879_SEQ_YPOS = 1,
113 AD7879_SEQ_Z1 = 2,
114 AD7879_SEQ_Z2 = 3,
115 AD7879_NR_SENSE = 4,
116};
117
118#define MAX_12BIT ((1<<12)-1)
119#define TS_PEN_UP_TIMEOUT msecs_to_jiffies(50)
120
121#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
122#define AD7879_DEVID 0x7A
123typedef struct spi_device bus_device;
124#elif defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
125#define AD7879_DEVID 0x79
126typedef struct i2c_client bus_device;
127#endif
128
129struct ad7879 {
130 bus_device *bus;
131 struct input_dev *input;
132 struct work_struct work;
133 struct timer_list timer;
134
135 struct mutex mutex;
136 unsigned disabled:1; /* P: mutex */
137
138#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
139 struct spi_message msg;
140 struct spi_transfer xfer[AD7879_NR_SENSE + 1];
141 u16 cmd;
142#endif
143 u16 conversion_data[AD7879_NR_SENSE];
144 char phys[32];
145 u8 first_conversion_delay;
146 u8 acquisition_time;
147 u8 averaging;
148 u8 pen_down_acc_interval;
149 u8 median;
150 u16 x_plate_ohms;
151 u16 pressure_max;
152 u16 gpio_init;
153 u16 cmd_crtl1;
154 u16 cmd_crtl2;
155 u16 cmd_crtl3;
156 unsigned gpio:1;
157};
158
159static int ad7879_read(bus_device *, u8);
160static int ad7879_write(bus_device *, u8, u16);
161static void ad7879_collect(struct ad7879 *);
162
163static void ad7879_report(struct ad7879 *ts)
164{
165 struct input_dev *input_dev = ts->input;
166 unsigned Rt;
167 u16 x, y, z1, z2;
168
169 x = ts->conversion_data[AD7879_SEQ_XPOS] & MAX_12BIT;
170 y = ts->conversion_data[AD7879_SEQ_YPOS] & MAX_12BIT;
171 z1 = ts->conversion_data[AD7879_SEQ_Z1] & MAX_12BIT;
172 z2 = ts->conversion_data[AD7879_SEQ_Z2] & MAX_12BIT;
173
174 /*
175 * The samples processed here are already preprocessed by the AD7879.
176 * The preprocessing function consists of a median and an averaging filter.
177 * The combination of these two techniques provides a robust solution,
178 * discarding the spurious noise in the signal and keeping only the data of interest.
179 * The size of both filters is programmable. (dev.platform_data, see linux/spi/ad7879.h)
180 * Other user-programmable conversion controls include variable acquisition time,
181 * and first conversion delay. Up to 16 averages can be taken per conversion.
182 */
183
184 if (likely(x && z1)) {
185 /* compute touch pressure resistance using equation #1 */
186 Rt = (z2 - z1) * x * ts->x_plate_ohms;
187 Rt /= z1;
188 Rt = (Rt + 2047) >> 12;
189
190 input_report_abs(input_dev, ABS_X, x);
191 input_report_abs(input_dev, ABS_Y, y);
192 input_report_abs(input_dev, ABS_PRESSURE, Rt);
193 input_sync(input_dev);
194 }
195}
196
197static void ad7879_work(struct work_struct *work)
198{
199 struct ad7879 *ts = container_of(work, struct ad7879, work);
200
201 /* use keventd context to read the result registers */
202 ad7879_collect(ts);
203 ad7879_report(ts);
204 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT);
205}
206
207static void ad7879_ts_event_release(struct ad7879 *ts)
208{
209 struct input_dev *input_dev = ts->input;
210
211 input_report_abs(input_dev, ABS_PRESSURE, 0);
212 input_sync(input_dev);
213}
214
215static void ad7879_timer(unsigned long handle)
216{
217 struct ad7879 *ts = (void *)handle;
218
219 ad7879_ts_event_release(ts);
220}
221
222static irqreturn_t ad7879_irq(int irq, void *handle)
223{
224 struct ad7879 *ts = handle;
225
226 /* The repeated conversion sequencer controlled by TMR kicked off too fast.
227 * We ignore the last and process the sample sequence currently in the queue.
228 * It can't be older than 9.4ms
229 */
230
231 if (!work_pending(&ts->work))
232 schedule_work(&ts->work);
233
234 return IRQ_HANDLED;
235}
236
237static void ad7879_setup(struct ad7879 *ts)
238{
239 ts->cmd_crtl3 = AD7879_YPLUS_BIT |
240 AD7879_XPLUS_BIT |
241 AD7879_Z2_BIT |
242 AD7879_Z1_BIT |
243 AD7879_TEMPMASK_BIT |
244 AD7879_AUXVBATMASK_BIT |
245 AD7879_GPIOALERTMASK_BIT;
246
247 ts->cmd_crtl2 = AD7879_PM(AD7879_PM_DYN) | AD7879_DFR |
248 AD7879_AVG(ts->averaging) |
249 AD7879_MFS(ts->median) |
250 AD7879_FCD(ts->first_conversion_delay) |
251 ts->gpio_init;
252
253 ts->cmd_crtl1 = AD7879_MODE_INT | AD7879_MODE_SEQ1 |
254 AD7879_ACQ(ts->acquisition_time) |
255 AD7879_TMR(ts->pen_down_acc_interval);
256
257 ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2);
258 ad7879_write(ts->bus, AD7879_REG_CTRL3, ts->cmd_crtl3);
259 ad7879_write(ts->bus, AD7879_REG_CTRL1, ts->cmd_crtl1);
260}
261
262static void ad7879_disable(struct ad7879 *ts)
263{
264 mutex_lock(&ts->mutex);
265
266 if (!ts->disabled) {
267
268 ts->disabled = 1;
269 disable_irq(ts->bus->irq);
270
271 cancel_work_sync(&ts->work);
272
273 if (del_timer_sync(&ts->timer))
274 ad7879_ts_event_release(ts);
275
276 ad7879_write(ts->bus, AD7879_REG_CTRL2,
277 AD7879_PM(AD7879_PM_SHUTDOWN));
278 }
279
280 mutex_unlock(&ts->mutex);
281}
282
283static void ad7879_enable(struct ad7879 *ts)
284{
285 mutex_lock(&ts->mutex);
286
287 if (ts->disabled) {
288 ad7879_setup(ts);
289 ts->disabled = 0;
290 enable_irq(ts->bus->irq);
291 }
292
293 mutex_unlock(&ts->mutex);
294}
295
296static ssize_t ad7879_disable_show(struct device *dev,
297 struct device_attribute *attr, char *buf)
298{
299 struct ad7879 *ts = dev_get_drvdata(dev);
300
301 return sprintf(buf, "%u\n", ts->disabled);
302}
303
304static ssize_t ad7879_disable_store(struct device *dev,
305 struct device_attribute *attr,
306 const char *buf, size_t count)
307{
308 struct ad7879 *ts = dev_get_drvdata(dev);
309 unsigned long val;
310 int error;
311
312 error = strict_strtoul(buf, 10, &val);
313 if (error)
314 return error;
315
316 if (val)
317 ad7879_disable(ts);
318 else
319 ad7879_enable(ts);
320
321 return count;
322}
323
324static DEVICE_ATTR(disable, 0664, ad7879_disable_show, ad7879_disable_store);
325
326static ssize_t ad7879_gpio_show(struct device *dev,
327 struct device_attribute *attr, char *buf)
328{
329 struct ad7879 *ts = dev_get_drvdata(dev);
330
331 return sprintf(buf, "%u\n", ts->gpio);
332}
333
334static ssize_t ad7879_gpio_store(struct device *dev,
335 struct device_attribute *attr,
336 const char *buf, size_t count)
337{
338 struct ad7879 *ts = dev_get_drvdata(dev);
339 unsigned long val;
340 int error;
341
342 error = strict_strtoul(buf, 10, &val);
343 if (error)
344 return error;
345
346 mutex_lock(&ts->mutex);
347 ts->gpio = !!val;
348 error = ad7879_write(ts->bus, AD7879_REG_CTRL2,
349 ts->gpio ?
350 ts->cmd_crtl2 & ~AD7879_GPIO_DATA :
351 ts->cmd_crtl2 | AD7879_GPIO_DATA);
352 mutex_unlock(&ts->mutex);
353
354 return error ? : count;
355}
356
357static DEVICE_ATTR(gpio, 0664, ad7879_gpio_show, ad7879_gpio_store);
358
359static struct attribute *ad7879_attributes[] = {
360 &dev_attr_disable.attr,
361 &dev_attr_gpio.attr,
362 NULL
363};
364
365static const struct attribute_group ad7879_attr_group = {
366 .attrs = ad7879_attributes,
367};
368
369static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts)
370{
371 struct input_dev *input_dev;
372 struct ad7879_platform_data *pdata = bus->dev.platform_data;
373 int err;
374 u16 revid;
375
376 if (!bus->irq) {
377 dev_err(&bus->dev, "no IRQ?\n");
378 return -ENODEV;
379 }
380
381 if (!pdata) {
382 dev_err(&bus->dev, "no platform data?\n");
383 return -ENODEV;
384 }
385
386 input_dev = input_allocate_device();
387 if (!input_dev)
388 return -ENOMEM;
389
390 ts->input = input_dev;
391
392 setup_timer(&ts->timer, ad7879_timer, (unsigned long) ts);
393 INIT_WORK(&ts->work, ad7879_work);
394 mutex_init(&ts->mutex);
395
396 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
397 ts->pressure_max = pdata->pressure_max ? : ~0;
398
399 ts->first_conversion_delay = pdata->first_conversion_delay;
400 ts->acquisition_time = pdata->acquisition_time;
401 ts->averaging = pdata->averaging;
402 ts->pen_down_acc_interval = pdata->pen_down_acc_interval;
403 ts->median = pdata->median;
404
405 if (pdata->gpio_output)
406 ts->gpio_init = AD7879_GPIO_EN |
407 (pdata->gpio_default ? 0 : AD7879_GPIO_DATA);
408 else
409 ts->gpio_init = AD7879_GPIO_EN | AD7879_GPIODIR;
410
411 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&bus->dev));
412
413 input_dev->name = "AD7879 Touchscreen";
414 input_dev->phys = ts->phys;
415 input_dev->dev.parent = &bus->dev;
416
417 __set_bit(EV_ABS, input_dev->evbit);
418 __set_bit(ABS_X, input_dev->absbit);
419 __set_bit(ABS_Y, input_dev->absbit);
420 __set_bit(ABS_PRESSURE, input_dev->absbit);
421
422 input_set_abs_params(input_dev, ABS_X,
423 pdata->x_min ? : 0,
424 pdata->x_max ? : MAX_12BIT,
425 0, 0);
426 input_set_abs_params(input_dev, ABS_Y,
427 pdata->y_min ? : 0,
428 pdata->y_max ? : MAX_12BIT,
429 0, 0);
430 input_set_abs_params(input_dev, ABS_PRESSURE,
431 pdata->pressure_min, pdata->pressure_max, 0, 0);
432
433 err = ad7879_write(bus, AD7879_REG_CTRL2, AD7879_RESET);
434
435 if (err < 0) {
436 dev_err(&bus->dev, "Failed to write %s\n", input_dev->name);
437 goto err_free_mem;
438 }
439
440 revid = ad7879_read(bus, AD7879_REG_REVID);
441
442 if ((revid & 0xFF) != AD7879_DEVID) {
443 dev_err(&bus->dev, "Failed to probe %s\n", input_dev->name);
444 err = -ENODEV;
445 goto err_free_mem;
446 }
447
448 ad7879_setup(ts);
449
450 err = request_irq(bus->irq, ad7879_irq,
451 IRQF_TRIGGER_FALLING, bus->dev.driver->name, ts);
452
453 if (err) {
454 dev_err(&bus->dev, "irq %d busy?\n", bus->irq);
455 goto err_free_mem;
456 }
457
458 err = sysfs_create_group(&bus->dev.kobj, &ad7879_attr_group);
459 if (err)
460 goto err_free_irq;
461
462 err = input_register_device(input_dev);
463 if (err)
464 goto err_remove_attr;
465
466 dev_info(&bus->dev, "Rev.%d touchscreen, irq %d\n",
467 revid >> 8, bus->irq);
468
469 return 0;
470
471err_remove_attr:
472 sysfs_remove_group(&bus->dev.kobj, &ad7879_attr_group);
473err_free_irq:
474 free_irq(bus->irq, ts);
475err_free_mem:
476 input_free_device(input_dev);
477
478 return err;
479}
480
481static int __devexit ad7879_destroy(bus_device *bus, struct ad7879 *ts)
482{
483 ad7879_disable(ts);
484 sysfs_remove_group(&ts->bus->dev.kobj, &ad7879_attr_group);
485 free_irq(ts->bus->irq, ts);
486 input_unregister_device(ts->input);
487 dev_dbg(&bus->dev, "unregistered touchscreen\n");
488
489 return 0;
490}
491
492#ifdef CONFIG_PM
493static int ad7879_suspend(bus_device *bus, pm_message_t message)
494{
495 struct ad7879 *ts = dev_get_drvdata(&bus->dev);
496
497 ad7879_disable(ts);
498
499 return 0;
500}
501
502static int ad7879_resume(bus_device *bus)
503{
504 struct ad7879 *ts = dev_get_drvdata(&bus->dev);
505
506 ad7879_enable(ts);
507
508 return 0;
509}
510#else
511#define ad7879_suspend NULL
512#define ad7879_resume NULL
513#endif
514
515#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
516#define MAX_SPI_FREQ_HZ 5000000
517#define AD7879_CMD_MAGIC 0xE000
518#define AD7879_CMD_READ (1 << 10)
519#define AD7879_WRITECMD(reg) (AD7879_CMD_MAGIC | (reg & 0xF))
520#define AD7879_READCMD(reg) (AD7879_CMD_MAGIC | AD7879_CMD_READ | (reg & 0xF))
521
522struct ser_req {
523 u16 command;
524 u16 data;
525 struct spi_message msg;
526 struct spi_transfer xfer[2];
527};
528
529/*
530 * ad7879_read/write are only used for initial setup and for sysfs controls.
531 * The main traffic is done in ad7879_collect().
532 */
533
534static int ad7879_read(struct spi_device *spi, u8 reg)
535{
536 struct ser_req *req;
537 int status, ret;
538
539 req = kzalloc(sizeof *req, GFP_KERNEL);
540 if (!req)
541 return -ENOMEM;
542
543 spi_message_init(&req->msg);
544
545 req->command = (u16) AD7879_READCMD(reg);
546 req->xfer[0].tx_buf = &req->command;
547 req->xfer[0].len = 2;
548
549 req->xfer[1].rx_buf = &req->data;
550 req->xfer[1].len = 2;
551
552 spi_message_add_tail(&req->xfer[0], &req->msg);
553 spi_message_add_tail(&req->xfer[1], &req->msg);
554
555 status = spi_sync(spi, &req->msg);
556 ret = status ? : req->data;
557
558 kfree(req);
559
560 return ret;
561}
562
563static int ad7879_write(struct spi_device *spi, u8 reg, u16 val)
564{
565 struct ser_req *req;
566 int status;
567
568 req = kzalloc(sizeof *req, GFP_KERNEL);
569 if (!req)
570 return -ENOMEM;
571
572 spi_message_init(&req->msg);
573
574 req->command = (u16) AD7879_WRITECMD(reg);
575 req->xfer[0].tx_buf = &req->command;
576 req->xfer[0].len = 2;
577
578 req->data = val;
579 req->xfer[1].tx_buf = &req->data;
580 req->xfer[1].len = 2;
581
582 spi_message_add_tail(&req->xfer[0], &req->msg);
583 spi_message_add_tail(&req->xfer[1], &req->msg);
584
585 status = spi_sync(spi, &req->msg);
586
587 kfree(req);
588
589 return status;
590}
591
592static void ad7879_collect(struct ad7879 *ts)
593{
594 int status = spi_sync(ts->bus, &ts->msg);
595
596 if (status)
597 dev_err(&ts->bus->dev, "spi_sync --> %d\n", status);
598}
599
600static void ad7879_setup_ts_def_msg(struct ad7879 *ts)
601{
602 struct spi_message *m;
603 int i;
604
605 ts->cmd = (u16) AD7879_READCMD(AD7879_REG_XPLUS);
606
607 m = &ts->msg;
608 spi_message_init(m);
609 ts->xfer[0].tx_buf = &ts->cmd;
610 ts->xfer[0].len = 2;
611
612 spi_message_add_tail(&ts->xfer[0], m);
613
614 for (i = 0; i < AD7879_NR_SENSE; i++) {
615 ts->xfer[i + 1].rx_buf = &ts->conversion_data[i];
616 ts->xfer[i + 1].len = 2;
617 spi_message_add_tail(&ts->xfer[i + 1], m);
618 }
619}
620
621static int __devinit ad7879_probe(struct spi_device *spi)
622{
623 struct ad7879 *ts;
624 int error;
625
626 /* don't exceed max specified SPI CLK frequency */
627 if (spi->max_speed_hz > MAX_SPI_FREQ_HZ) {
628 dev_err(&spi->dev, "SPI CLK %d Hz?\n", spi->max_speed_hz);
629 return -EINVAL;
630 }
631
632 ts = kzalloc(sizeof(struct ad7879), GFP_KERNEL);
633 if (!ts)
634 return -ENOMEM;
635
636 dev_set_drvdata(&spi->dev, ts);
637 ts->bus = spi;
638
639 ad7879_setup_ts_def_msg(ts);
640
641 error = ad7879_construct(spi, ts);
642 if (error) {
643 dev_set_drvdata(&spi->dev, NULL);
644 kfree(ts);
645 }
646
647 return 0;
648}
649
650static int __devexit ad7879_remove(struct spi_device *spi)
651{
652 struct ad7879 *ts = dev_get_drvdata(&spi->dev);
653
654 ad7879_destroy(spi, ts);
655 dev_set_drvdata(&spi->dev, NULL);
656 kfree(ts);
657
658 return 0;
659}
660
661static struct spi_driver ad7879_driver = {
662 .driver = {
663 .name = "ad7879",
664 .bus = &spi_bus_type,
665 .owner = THIS_MODULE,
666 },
667 .probe = ad7879_probe,
668 .remove = __devexit_p(ad7879_remove),
669 .suspend = ad7879_suspend,
670 .resume = ad7879_resume,
671};
672
673static int __init ad7879_init(void)
674{
675 return spi_register_driver(&ad7879_driver);
676}
677module_init(ad7879_init);
678
679static void __exit ad7879_exit(void)
680{
681 spi_unregister_driver(&ad7879_driver);
682}
683module_exit(ad7879_exit);
684
685#elif defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
686
687/* All registers are word-sized.
688 * AD7879 uses a high-byte first convention.
689 */
690static int ad7879_read(struct i2c_client *client, u8 reg)
691{
692 return swab16(i2c_smbus_read_word_data(client, reg));
693}
694
695static int ad7879_write(struct i2c_client *client, u8 reg, u16 val)
696{
697 return i2c_smbus_write_word_data(client, reg, swab16(val));
698}
699
700static void ad7879_collect(struct ad7879 *ts)
701{
702 int i;
703
704 for (i = 0; i < AD7879_NR_SENSE; i++)
705 ts->conversion_data[i] = ad7879_read(ts->bus,
706 AD7879_REG_XPLUS + i);
707}
708
709static int __devinit ad7879_probe(struct i2c_client *client,
710 const struct i2c_device_id *id)
711{
712 struct ad7879 *ts;
713 int error;
714
715 if (!i2c_check_functionality(client->adapter,
716 I2C_FUNC_SMBUS_WORD_DATA)) {
717 dev_err(&client->dev, "SMBUS Word Data not Supported\n");
718 return -EIO;
719 }
720
721 ts = kzalloc(sizeof(struct ad7879), GFP_KERNEL);
722 if (!ts)
723 return -ENOMEM;
724
725 i2c_set_clientdata(client, ts);
726 ts->bus = client;
727
728 error = ad7879_construct(client, ts);
729 if (error) {
730 i2c_set_clientdata(client, NULL);
731 kfree(ts);
732 }
733
734 return 0;
735}
736
737static int __devexit ad7879_remove(struct i2c_client *client)
738{
739 struct ad7879 *ts = dev_get_drvdata(&client->dev);
740
741 ad7879_destroy(client, ts);
742 i2c_set_clientdata(client, NULL);
743 kfree(ts);
744
745 return 0;
746}
747
748static const struct i2c_device_id ad7879_id[] = {
749 { "ad7879", 0 },
750 { }
751};
752MODULE_DEVICE_TABLE(i2c, ad7879_id);
753
754static struct i2c_driver ad7879_driver = {
755 .driver = {
756 .name = "ad7879",
757 .owner = THIS_MODULE,
758 },
759 .probe = ad7879_probe,
760 .remove = __devexit_p(ad7879_remove),
761 .suspend = ad7879_suspend,
762 .resume = ad7879_resume,
763 .id_table = ad7879_id,
764};
765
766static int __init ad7879_init(void)
767{
768 return i2c_add_driver(&ad7879_driver);
769}
770module_init(ad7879_init);
771
772static void __exit ad7879_exit(void)
773{
774 i2c_del_driver(&ad7879_driver);
775}
776module_exit(ad7879_exit);
777#endif
778
779MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
780MODULE_DESCRIPTION("AD7879(-1) touchscreen Driver");
781MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 056ac77e2cf0..2b01e56568f8 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -127,6 +127,8 @@ struct ads7846 {
127 void (*filter_cleanup)(void *data); 127 void (*filter_cleanup)(void *data);
128 int (*get_pendown_state)(void); 128 int (*get_pendown_state)(void);
129 int gpio_pendown; 129 int gpio_pendown;
130
131 void (*wait_for_sync)(void);
130}; 132};
131 133
132/* leave chip selected when we're done, for quicker re-select? */ 134/* leave chip selected when we're done, for quicker re-select? */
@@ -511,6 +513,10 @@ static int get_pendown_state(struct ads7846 *ts)
511 return !gpio_get_value(ts->gpio_pendown); 513 return !gpio_get_value(ts->gpio_pendown);
512} 514}
513 515
516static void null_wait_for_sync(void)
517{
518}
519
514/* 520/*
515 * PENIRQ only kicks the timer. The timer only reissues the SPI transfer, 521 * PENIRQ only kicks the timer. The timer only reissues the SPI transfer,
516 * to retrieve touchscreen status. 522 * to retrieve touchscreen status.
@@ -686,6 +692,7 @@ static void ads7846_rx_val(void *ads)
686 default: 692 default:
687 BUG(); 693 BUG();
688 } 694 }
695 ts->wait_for_sync();
689 status = spi_async(ts->spi, m); 696 status = spi_async(ts->spi, m);
690 if (status) 697 if (status)
691 dev_err(&ts->spi->dev, "spi_async --> %d\n", 698 dev_err(&ts->spi->dev, "spi_async --> %d\n",
@@ -723,6 +730,7 @@ static enum hrtimer_restart ads7846_timer(struct hrtimer *handle)
723 } else { 730 } else {
724 /* pen is still down, continue with the measurement */ 731 /* pen is still down, continue with the measurement */
725 ts->msg_idx = 0; 732 ts->msg_idx = 0;
733 ts->wait_for_sync();
726 status = spi_async(ts->spi, &ts->msg[0]); 734 status = spi_async(ts->spi, &ts->msg[0]);
727 if (status) 735 if (status)
728 dev_err(&ts->spi->dev, "spi_async --> %d\n", status); 736 dev_err(&ts->spi->dev, "spi_async --> %d\n", status);
@@ -746,7 +754,7 @@ static irqreturn_t ads7846_irq(int irq, void *handle)
746 * that here. (The "generic irq" framework may help...) 754 * that here. (The "generic irq" framework may help...)
747 */ 755 */
748 ts->irq_disabled = 1; 756 ts->irq_disabled = 1;
749 disable_irq(ts->spi->irq); 757 disable_irq_nosync(ts->spi->irq);
750 ts->pending = 1; 758 ts->pending = 1;
751 hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_DELAY), 759 hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_DELAY),
752 HRTIMER_MODE_REL); 760 HRTIMER_MODE_REL);
@@ -947,6 +955,8 @@ static int __devinit ads7846_probe(struct spi_device *spi)
947 ts->penirq_recheck_delay_usecs = 955 ts->penirq_recheck_delay_usecs =
948 pdata->penirq_recheck_delay_usecs; 956 pdata->penirq_recheck_delay_usecs;
949 957
958 ts->wait_for_sync = pdata->wait_for_sync ? : null_wait_for_sync;
959
950 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev)); 960 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev));
951 961
952 input_dev->name = "ADS784x Touchscreen"; 962 input_dev->name = "ADS784x Touchscreen";
diff --git a/drivers/input/touchscreen/da9034-ts.c b/drivers/input/touchscreen/da9034-ts.c
index fa67d782c3c3..3ffd4c4b170c 100644
--- a/drivers/input/touchscreen/da9034-ts.c
+++ b/drivers/input/touchscreen/da9034-ts.c
@@ -3,6 +3,7 @@
3 * 3 *
4 * Copyright (C) 2006-2008 Marvell International Ltd. 4 * Copyright (C) 2006-2008 Marvell International Ltd.
5 * Fengwei Yin <fengwei.yin@marvell.com> 5 * Fengwei Yin <fengwei.yin@marvell.com>
6 * Bin Yang <bin.yang@marvell.com>
6 * Eric Miao <eric.miao@marvell.com> 7 * Eric Miao <eric.miao@marvell.com>
7 * 8 *
8 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
@@ -175,6 +176,16 @@ static void da9034_event_handler(struct da9034_touch *touch, int event)
175 goto err_reset; 176 goto err_reset;
176 177
177 touch->state = STATE_STOP; 178 touch->state = STATE_STOP;
179
180 /* FIXME: PEN_{UP/DOWN} events are expected to be
181 * available by stopping TSI, but this is found not
182 * always true, delay and simulate such an event
183 * here is more reliable
184 */
185 mdelay(1);
186 da9034_event_handler(touch,
187 is_pen_down(touch) ? EVENT_PEN_DOWN :
188 EVENT_PEN_UP);
178 break; 189 break;
179 190
180 case STATE_STOP: 191 case STATE_STOP:
@@ -189,8 +200,6 @@ static void da9034_event_handler(struct da9034_touch *touch, int event)
189 report_pen_up(touch); 200 report_pen_up(touch);
190 touch->state = STATE_IDLE; 201 touch->state = STATE_IDLE;
191 } 202 }
192
193 input_sync(touch->input_dev);
194 break; 203 break;
195 204
196 case STATE_WAIT: 205 case STATE_WAIT:
@@ -200,8 +209,10 @@ static void da9034_event_handler(struct da9034_touch *touch, int event)
200 if (is_pen_down(touch)) { 209 if (is_pen_down(touch)) {
201 start_tsi(touch); 210 start_tsi(touch);
202 touch->state = STATE_BUSY; 211 touch->state = STATE_BUSY;
203 } else 212 } else {
213 report_pen_up(touch);
204 touch->state = STATE_IDLE; 214 touch->state = STATE_IDLE;
215 }
205 break; 216 break;
206 } 217 }
207 return; 218 return;
@@ -226,16 +237,12 @@ static int da9034_touch_notifier(struct notifier_block *nb,
226 struct da9034_touch *touch = 237 struct da9034_touch *touch =
227 container_of(nb, struct da9034_touch, notifier); 238 container_of(nb, struct da9034_touch, notifier);
228 239
229 if (event & DA9034_EVENT_PEN_DOWN) {
230 if (is_pen_down(touch))
231 da9034_event_handler(touch, EVENT_PEN_DOWN);
232 else
233 da9034_event_handler(touch, EVENT_PEN_UP);
234 }
235
236 if (event & DA9034_EVENT_TSI_READY) 240 if (event & DA9034_EVENT_TSI_READY)
237 da9034_event_handler(touch, EVENT_TSI_READY); 241 da9034_event_handler(touch, EVENT_TSI_READY);
238 242
243 if ((event & DA9034_EVENT_PEN_DOWN) && touch->state == STATE_IDLE)
244 da9034_event_handler(touch, EVENT_PEN_DOWN);
245
239 return 0; 246 return 0;
240} 247}
241 248
@@ -385,6 +392,6 @@ static void __exit da9034_touch_exit(void)
385module_exit(da9034_touch_exit); 392module_exit(da9034_touch_exit);
386 393
387MODULE_DESCRIPTION("Touchscreen driver for Dialog Semiconductor DA9034"); 394MODULE_DESCRIPTION("Touchscreen driver for Dialog Semiconductor DA9034");
388MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>"); 395MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>, Bin Yang <bin.yang@marvell.com>");
389MODULE_LICENSE("GPL"); 396MODULE_LICENSE("GPL");
390MODULE_ALIAS("platform:da9034-touch"); 397MODULE_ALIAS("platform:da9034-touch");
diff --git a/drivers/input/touchscreen/mainstone-wm97xx.c b/drivers/input/touchscreen/mainstone-wm97xx.c
index 1d11e2be9ef8..4cc047a5116e 100644
--- a/drivers/input/touchscreen/mainstone-wm97xx.c
+++ b/drivers/input/touchscreen/mainstone-wm97xx.c
@@ -111,13 +111,12 @@ static void wm97xx_acc_pen_up(struct wm97xx *wm)
111#else 111#else
112static void wm97xx_acc_pen_up(struct wm97xx *wm) 112static void wm97xx_acc_pen_up(struct wm97xx *wm)
113{ 113{
114 int count = 16; 114 unsigned int count;
115
115 schedule_timeout_uninterruptible(1); 116 schedule_timeout_uninterruptible(1);
116 117
117 while (count < 16) { 118 for (count = 0; count < 16; count++)
118 MODR; 119 MODR;
119 count--;
120 }
121} 120}
122#endif 121#endif
123 122
@@ -162,6 +161,7 @@ static int wm97xx_acc_pen_down(struct wm97xx *wm)
162 input_report_abs(wm->input_dev, ABS_X, x & 0xfff); 161 input_report_abs(wm->input_dev, ABS_X, x & 0xfff);
163 input_report_abs(wm->input_dev, ABS_Y, y & 0xfff); 162 input_report_abs(wm->input_dev, ABS_Y, y & 0xfff);
164 input_report_abs(wm->input_dev, ABS_PRESSURE, p & 0xfff); 163 input_report_abs(wm->input_dev, ABS_PRESSURE, p & 0xfff);
164 input_report_key(wm->input_dev, BTN_TOUCH, (p != 0));
165 input_sync(wm->input_dev); 165 input_sync(wm->input_dev);
166 reads++; 166 reads++;
167 } while (reads < cinfo[sp_idx].reads); 167 } while (reads < cinfo[sp_idx].reads);
@@ -245,7 +245,7 @@ static void wm97xx_irq_enable(struct wm97xx *wm, int enable)
245 if (enable) 245 if (enable)
246 enable_irq(wm->pen_irq); 246 enable_irq(wm->pen_irq);
247 else 247 else
248 disable_irq(wm->pen_irq); 248 disable_irq_nosync(wm->pen_irq);
249} 249}
250 250
251static struct wm97xx_mach_ops mainstone_mach_ops = { 251static struct wm97xx_mach_ops mainstone_mach_ops = {
diff --git a/drivers/input/touchscreen/ucb1400_ts.c b/drivers/input/touchscreen/ucb1400_ts.c
index 54986627def0..e868264fe799 100644
--- a/drivers/input/touchscreen/ucb1400_ts.c
+++ b/drivers/input/touchscreen/ucb1400_ts.c
@@ -151,12 +151,14 @@ static void ucb1400_ts_evt_add(struct input_dev *idev, u16 pressure, u16 x, u16
151 input_report_abs(idev, ABS_X, x); 151 input_report_abs(idev, ABS_X, x);
152 input_report_abs(idev, ABS_Y, y); 152 input_report_abs(idev, ABS_Y, y);
153 input_report_abs(idev, ABS_PRESSURE, pressure); 153 input_report_abs(idev, ABS_PRESSURE, pressure);
154 input_report_key(idev, BTN_TOUCH, 1);
154 input_sync(idev); 155 input_sync(idev);
155} 156}
156 157
157static void ucb1400_ts_event_release(struct input_dev *idev) 158static void ucb1400_ts_event_release(struct input_dev *idev)
158{ 159{
159 input_report_abs(idev, ABS_PRESSURE, 0); 160 input_report_abs(idev, ABS_PRESSURE, 0);
161 input_report_key(idev, BTN_TOUCH, 0);
160 input_sync(idev); 162 input_sync(idev);
161} 163}
162 164
@@ -377,7 +379,8 @@ static int ucb1400_ts_probe(struct platform_device *dev)
377 ucb->ts_idev->id.product = ucb->id; 379 ucb->ts_idev->id.product = ucb->id;
378 ucb->ts_idev->open = ucb1400_ts_open; 380 ucb->ts_idev->open = ucb1400_ts_open;
379 ucb->ts_idev->close = ucb1400_ts_close; 381 ucb->ts_idev->close = ucb1400_ts_close;
380 ucb->ts_idev->evbit[0] = BIT_MASK(EV_ABS); 382 ucb->ts_idev->evbit[0] = BIT_MASK(EV_ABS) | BIT_MASK(EV_KEY);
383 ucb->ts_idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
381 384
382 ucb1400_adc_enable(ucb->ac97); 385 ucb1400_adc_enable(ucb->ac97);
383 x_res = ucb1400_ts_read_xres(ucb); 386 x_res = ucb1400_ts_read_xres(ucb);
diff --git a/drivers/input/touchscreen/wm97xx-core.c b/drivers/input/touchscreen/wm97xx-core.c
index d15aa11d7056..69af8385ab14 100644
--- a/drivers/input/touchscreen/wm97xx-core.c
+++ b/drivers/input/touchscreen/wm97xx-core.c
@@ -370,8 +370,7 @@ static int wm97xx_init_pen_irq(struct wm97xx *wm)
370 * provided. */ 370 * provided. */
371 BUG_ON(!wm->mach_ops->irq_enable); 371 BUG_ON(!wm->mach_ops->irq_enable);
372 372
373 if (request_irq(wm->pen_irq, wm97xx_pen_interrupt, 373 if (request_irq(wm->pen_irq, wm97xx_pen_interrupt, IRQF_SHARED,
374 IRQF_SHARED | IRQF_SAMPLE_RANDOM,
375 "wm97xx-pen", wm)) { 374 "wm97xx-pen", wm)) {
376 dev_err(wm->dev, 375 dev_err(wm->dev,
377 "Failed to register pen down interrupt, polling"); 376 "Failed to register pen down interrupt, polling");
@@ -409,6 +408,7 @@ static int wm97xx_read_samples(struct wm97xx *wm)
409 wm->pen_is_down = 0; 408 wm->pen_is_down = 0;
410 dev_dbg(wm->dev, "pen up\n"); 409 dev_dbg(wm->dev, "pen up\n");
411 input_report_abs(wm->input_dev, ABS_PRESSURE, 0); 410 input_report_abs(wm->input_dev, ABS_PRESSURE, 0);
411 input_report_key(wm->input_dev, BTN_TOUCH, 0);
412 input_sync(wm->input_dev); 412 input_sync(wm->input_dev);
413 } else if (!(rc & RC_AGAIN)) { 413 } else if (!(rc & RC_AGAIN)) {
414 /* We need high frequency updates only while 414 /* We need high frequency updates only while
@@ -433,6 +433,7 @@ static int wm97xx_read_samples(struct wm97xx *wm)
433 input_report_abs(wm->input_dev, ABS_X, data.x & 0xfff); 433 input_report_abs(wm->input_dev, ABS_X, data.x & 0xfff);
434 input_report_abs(wm->input_dev, ABS_Y, data.y & 0xfff); 434 input_report_abs(wm->input_dev, ABS_Y, data.y & 0xfff);
435 input_report_abs(wm->input_dev, ABS_PRESSURE, data.p & 0xfff); 435 input_report_abs(wm->input_dev, ABS_PRESSURE, data.p & 0xfff);
436 input_report_key(wm->input_dev, BTN_TOUCH, 1);
436 input_sync(wm->input_dev); 437 input_sync(wm->input_dev);
437 wm->pen_is_down = 1; 438 wm->pen_is_down = 1;
438 wm->ts_reader_interval = wm->ts_reader_min_interval; 439 wm->ts_reader_interval = wm->ts_reader_min_interval;
@@ -628,18 +629,21 @@ static int wm97xx_probe(struct device *dev)
628 wm->input_dev->phys = "wm97xx"; 629 wm->input_dev->phys = "wm97xx";
629 wm->input_dev->open = wm97xx_ts_input_open; 630 wm->input_dev->open = wm97xx_ts_input_open;
630 wm->input_dev->close = wm97xx_ts_input_close; 631 wm->input_dev->close = wm97xx_ts_input_close;
631 set_bit(EV_ABS, wm->input_dev->evbit); 632
632 set_bit(ABS_X, wm->input_dev->absbit); 633 __set_bit(EV_ABS, wm->input_dev->evbit);
633 set_bit(ABS_Y, wm->input_dev->absbit); 634 __set_bit(EV_KEY, wm->input_dev->evbit);
634 set_bit(ABS_PRESSURE, wm->input_dev->absbit); 635 __set_bit(BTN_TOUCH, wm->input_dev->keybit);
636
635 input_set_abs_params(wm->input_dev, ABS_X, abs_x[0], abs_x[1], 637 input_set_abs_params(wm->input_dev, ABS_X, abs_x[0], abs_x[1],
636 abs_x[2], 0); 638 abs_x[2], 0);
637 input_set_abs_params(wm->input_dev, ABS_Y, abs_y[0], abs_y[1], 639 input_set_abs_params(wm->input_dev, ABS_Y, abs_y[0], abs_y[1],
638 abs_y[2], 0); 640 abs_y[2], 0);
639 input_set_abs_params(wm->input_dev, ABS_PRESSURE, abs_p[0], abs_p[1], 641 input_set_abs_params(wm->input_dev, ABS_PRESSURE, abs_p[0], abs_p[1],
640 abs_p[2], 0); 642 abs_p[2], 0);
643
641 input_set_drvdata(wm->input_dev, wm); 644 input_set_drvdata(wm->input_dev, wm);
642 wm->input_dev->dev.parent = dev; 645 wm->input_dev->dev.parent = dev;
646
643 ret = input_register_device(wm->input_dev); 647 ret = input_register_device(wm->input_dev);
644 if (ret < 0) 648 if (ret < 0)
645 goto dev_alloc_err; 649 goto dev_alloc_err;
diff --git a/drivers/input/touchscreen/zylonite-wm97xx.c b/drivers/input/touchscreen/zylonite-wm97xx.c
new file mode 100644
index 000000000000..41e4359c277c
--- /dev/null
+++ b/drivers/input/touchscreen/zylonite-wm97xx.c
@@ -0,0 +1,240 @@
1/*
2 * zylonite-wm97xx.c -- Zylonite Continuous Touch screen driver
3 *
4 * Copyright 2004, 2007, 2008 Wolfson Microelectronics PLC.
5 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
6 * Parts Copyright : Ian Molton <spyro@f2s.com>
7 * Andrew Zabolotny <zap@homelink.ru>
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version.
13 *
14 * Notes:
15 * This is a wm97xx extended touch driver supporting interrupt driven
16 * and continuous operation on Marvell Zylonite development systems
17 * (which have a WM9713 on board).
18 */
19
20#include <linux/module.h>
21#include <linux/moduleparam.h>
22#include <linux/kernel.h>
23#include <linux/init.h>
24#include <linux/delay.h>
25#include <linux/irq.h>
26#include <linux/interrupt.h>
27#include <linux/io.h>
28#include <linux/wm97xx.h>
29
30#include <mach/hardware.h>
31#include <mach/mfp.h>
32#include <mach/regs-ac97.h>
33
34struct continuous {
35 u16 id; /* codec id */
36 u8 code; /* continuous code */
37 u8 reads; /* number of coord reads per read cycle */
38 u32 speed; /* number of coords per second */
39};
40
41#define WM_READS(sp) ((sp / HZ) + 1)
42
43static const struct continuous cinfo[] = {
44 { WM9713_ID2, 0, WM_READS(94), 94 },
45 { WM9713_ID2, 1, WM_READS(120), 120 },
46 { WM9713_ID2, 2, WM_READS(154), 154 },
47 { WM9713_ID2, 3, WM_READS(188), 188 },
48};
49
50/* continuous speed index */
51static int sp_idx;
52
53/*
54 * Pen sampling frequency (Hz) in continuous mode.
55 */
56static int cont_rate = 200;
57module_param(cont_rate, int, 0);
58MODULE_PARM_DESC(cont_rate, "Sampling rate in continuous mode (Hz)");
59
60/*
61 * Pressure readback.
62 *
63 * Set to 1 to read back pen down pressure
64 */
65static int pressure;
66module_param(pressure, int, 0);
67MODULE_PARM_DESC(pressure, "Pressure readback (1 = pressure, 0 = no pressure)");
68
69/*
70 * AC97 touch data slot.
71 *
72 * Touch screen readback data ac97 slot
73 */
74static int ac97_touch_slot = 5;
75module_param(ac97_touch_slot, int, 0);
76MODULE_PARM_DESC(ac97_touch_slot, "Touch screen data slot AC97 number");
77
78
79/* flush AC97 slot 5 FIFO machines */
80static void wm97xx_acc_pen_up(struct wm97xx *wm)
81{
82 int i;
83
84 msleep(1);
85
86 for (i = 0; i < 16; i++)
87 MODR;
88}
89
90static int wm97xx_acc_pen_down(struct wm97xx *wm)
91{
92 u16 x, y, p = 0x100 | WM97XX_ADCSEL_PRES;
93 int reads = 0;
94 static u16 last, tries;
95
96 /* When the AC97 queue has been drained we need to allow time
97 * to buffer up samples otherwise we end up spinning polling
98 * for samples. The controller can't have a suitably low
99 * threashold set to use the notifications it gives.
100 */
101 msleep(1);
102
103 if (tries > 5) {
104 tries = 0;
105 return RC_PENUP;
106 }
107
108 x = MODR;
109 if (x == last) {
110 tries++;
111 return RC_AGAIN;
112 }
113 last = x;
114 do {
115 if (reads)
116 x = MODR;
117 y = MODR;
118 if (pressure)
119 p = MODR;
120
121 /* are samples valid */
122 if ((x & WM97XX_ADCSRC_MASK) != WM97XX_ADCSEL_X ||
123 (y & WM97XX_ADCSRC_MASK) != WM97XX_ADCSEL_Y ||
124 (p & WM97XX_ADCSRC_MASK) != WM97XX_ADCSEL_PRES)
125 goto up;
126
127 /* coordinate is good */
128 tries = 0;
129 input_report_abs(wm->input_dev, ABS_X, x & 0xfff);
130 input_report_abs(wm->input_dev, ABS_Y, y & 0xfff);
131 input_report_abs(wm->input_dev, ABS_PRESSURE, p & 0xfff);
132 input_report_key(wm->input_dev, BTN_TOUCH, (p != 0));
133 input_sync(wm->input_dev);
134 reads++;
135 } while (reads < cinfo[sp_idx].reads);
136up:
137 return RC_PENDOWN | RC_AGAIN;
138}
139
140static int wm97xx_acc_startup(struct wm97xx *wm)
141{
142 int idx;
143
144 /* check we have a codec */
145 if (wm->ac97 == NULL)
146 return -ENODEV;
147
148 /* Go you big red fire engine */
149 for (idx = 0; idx < ARRAY_SIZE(cinfo); idx++) {
150 if (wm->id != cinfo[idx].id)
151 continue;
152 sp_idx = idx;
153 if (cont_rate <= cinfo[idx].speed)
154 break;
155 }
156 wm->acc_rate = cinfo[sp_idx].code;
157 wm->acc_slot = ac97_touch_slot;
158 dev_info(wm->dev,
159 "zylonite accelerated touchscreen driver, %d samples/sec\n",
160 cinfo[sp_idx].speed);
161
162 return 0;
163}
164
165static void wm97xx_irq_enable(struct wm97xx *wm, int enable)
166{
167 if (enable)
168 enable_irq(wm->pen_irq);
169 else
170 disable_irq_nosync(wm->pen_irq);
171}
172
173static struct wm97xx_mach_ops zylonite_mach_ops = {
174 .acc_enabled = 1,
175 .acc_pen_up = wm97xx_acc_pen_up,
176 .acc_pen_down = wm97xx_acc_pen_down,
177 .acc_startup = wm97xx_acc_startup,
178 .irq_enable = wm97xx_irq_enable,
179 .irq_gpio = WM97XX_GPIO_2,
180};
181
182static int zylonite_wm97xx_probe(struct platform_device *pdev)
183{
184 struct wm97xx *wm = platform_get_drvdata(pdev);
185 int gpio_touch_irq;
186
187 if (cpu_is_pxa320())
188 gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO15);
189 else
190 gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO26);
191
192 wm->pen_irq = IRQ_GPIO(gpio_touch_irq);
193 set_irq_type(IRQ_GPIO(gpio_touch_irq), IRQ_TYPE_EDGE_BOTH);
194
195 wm97xx_config_gpio(wm, WM97XX_GPIO_13, WM97XX_GPIO_IN,
196 WM97XX_GPIO_POL_HIGH,
197 WM97XX_GPIO_STICKY,
198 WM97XX_GPIO_WAKE);
199 wm97xx_config_gpio(wm, WM97XX_GPIO_2, WM97XX_GPIO_OUT,
200 WM97XX_GPIO_POL_HIGH,
201 WM97XX_GPIO_NOTSTICKY,
202 WM97XX_GPIO_NOWAKE);
203
204 return wm97xx_register_mach_ops(wm, &zylonite_mach_ops);
205}
206
207static int zylonite_wm97xx_remove(struct platform_device *pdev)
208{
209 struct wm97xx *wm = platform_get_drvdata(pdev);
210
211 wm97xx_unregister_mach_ops(wm);
212
213 return 0;
214}
215
216static struct platform_driver zylonite_wm97xx_driver = {
217 .probe = zylonite_wm97xx_probe,
218 .remove = zylonite_wm97xx_remove,
219 .driver = {
220 .name = "wm97xx-touch",
221 },
222};
223
224static int __init zylonite_wm97xx_init(void)
225{
226 return platform_driver_register(&zylonite_wm97xx_driver);
227}
228
229static void __exit zylonite_wm97xx_exit(void)
230{
231 platform_driver_unregister(&zylonite_wm97xx_driver);
232}
233
234module_init(zylonite_wm97xx_init);
235module_exit(zylonite_wm97xx_exit);
236
237/* Module information */
238MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>");
239MODULE_DESCRIPTION("wm97xx continuous touch driver for Zylonite");
240MODULE_LICENSE("GPL");
diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c
index ec3c0e507669..2b3a055059ea 100644
--- a/drivers/isdn/hisax/st5481_usb.c
+++ b/drivers/isdn/hisax/st5481_usb.c
@@ -149,14 +149,7 @@ static void usb_ctrl_complete(struct urb *urb)
149 if (ctrl_msg->dr.bRequest == USB_REQ_CLEAR_FEATURE) { 149 if (ctrl_msg->dr.bRequest == USB_REQ_CLEAR_FEATURE) {
150 /* Special case handling for pipe reset */ 150 /* Special case handling for pipe reset */
151 le16_to_cpus(&ctrl_msg->dr.wIndex); 151 le16_to_cpus(&ctrl_msg->dr.wIndex);
152 152 usb_reset_endpoint(adapter->usb_dev, ctrl_msg->dr.wIndex);
153 /* toggle is reset on clear */
154 usb_settoggle(adapter->usb_dev,
155 ctrl_msg->dr.wIndex & ~USB_DIR_IN,
156 (ctrl_msg->dr.wIndex & USB_DIR_IN) == 0,
157 0);
158
159
160 } 153 }
161 154
162 if (ctrl_msg->complete) 155 if (ctrl_msg->complete)
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
index 102ef4a14c5f..d2109054de85 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -82,7 +82,7 @@ static int __devinit create_gpio_led(const struct gpio_led *template,
82 if (!gpio_is_valid(template->gpio)) { 82 if (!gpio_is_valid(template->gpio)) {
83 printk(KERN_INFO "Skipping unavilable LED gpio %d (%s)\n", 83 printk(KERN_INFO "Skipping unavilable LED gpio %d (%s)\n",
84 template->gpio, template->name); 84 template->gpio, template->name);
85 return; 85 return 0;
86 } 86 }
87 87
88 ret = gpio_request(template->gpio, template->name); 88 ret = gpio_request(template->gpio, template->name);
diff --git a/drivers/lguest/lg.h b/drivers/lguest/lg.h
index ac8a4a3741b8..af92a176697f 100644
--- a/drivers/lguest/lg.h
+++ b/drivers/lguest/lg.h
@@ -158,7 +158,8 @@ void free_interrupts(void);
158/* segments.c: */ 158/* segments.c: */
159void setup_default_gdt_entries(struct lguest_ro_state *state); 159void setup_default_gdt_entries(struct lguest_ro_state *state);
160void setup_guest_gdt(struct lg_cpu *cpu); 160void setup_guest_gdt(struct lg_cpu *cpu);
161void load_guest_gdt(struct lg_cpu *cpu, unsigned long table, u32 num); 161void load_guest_gdt_entry(struct lg_cpu *cpu, unsigned int i,
162 u32 low, u32 hi);
162void guest_load_tls(struct lg_cpu *cpu, unsigned long tls_array); 163void guest_load_tls(struct lg_cpu *cpu, unsigned long tls_array);
163void copy_gdt(const struct lg_cpu *cpu, struct desc_struct *gdt); 164void copy_gdt(const struct lg_cpu *cpu, struct desc_struct *gdt);
164void copy_gdt_tls(const struct lg_cpu *cpu, struct desc_struct *gdt); 165void copy_gdt_tls(const struct lg_cpu *cpu, struct desc_struct *gdt);
diff --git a/drivers/lguest/segments.c b/drivers/lguest/segments.c
index 4f15439b7f12..7ede64ffeef9 100644
--- a/drivers/lguest/segments.c
+++ b/drivers/lguest/segments.c
@@ -144,18 +144,19 @@ void copy_gdt(const struct lg_cpu *cpu, struct desc_struct *gdt)
144 gdt[i] = cpu->arch.gdt[i]; 144 gdt[i] = cpu->arch.gdt[i];
145} 145}
146 146
147/*H:620 This is where the Guest asks us to load a new GDT (LHCALL_LOAD_GDT). 147/*H:620 This is where the Guest asks us to load a new GDT entry
148 * We copy it from the Guest and tweak the entries. */ 148 * (LHCALL_LOAD_GDT_ENTRY). We tweak the entry and copy it in. */
149void load_guest_gdt(struct lg_cpu *cpu, unsigned long table, u32 num) 149void load_guest_gdt_entry(struct lg_cpu *cpu, u32 num, u32 lo, u32 hi)
150{ 150{
151 /* We assume the Guest has the same number of GDT entries as the 151 /* We assume the Guest has the same number of GDT entries as the
152 * Host, otherwise we'd have to dynamically allocate the Guest GDT. */ 152 * Host, otherwise we'd have to dynamically allocate the Guest GDT. */
153 if (num > ARRAY_SIZE(cpu->arch.gdt)) 153 if (num > ARRAY_SIZE(cpu->arch.gdt))
154 kill_guest(cpu, "too many gdt entries %i", num); 154 kill_guest(cpu, "too many gdt entries %i", num);
155 155
156 /* We read the whole thing in, then fix it up. */ 156 /* Set it up, then fix it. */
157 __lgread(cpu, cpu->arch.gdt, table, num * sizeof(cpu->arch.gdt[0])); 157 cpu->arch.gdt[num].a = lo;
158 fixup_gdt_table(cpu, 0, ARRAY_SIZE(cpu->arch.gdt)); 158 cpu->arch.gdt[num].b = hi;
159 fixup_gdt_table(cpu, num, num+1);
159 /* Mark that the GDT changed so the core knows it has to copy it again, 160 /* Mark that the GDT changed so the core knows it has to copy it again,
160 * even if the Guest is run on the same CPU. */ 161 * even if the Guest is run on the same CPU. */
161 cpu->changed |= CHANGED_GDT; 162 cpu->changed |= CHANGED_GDT;
diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c
index a6b717644be0..1a83910f674f 100644
--- a/drivers/lguest/x86/core.c
+++ b/drivers/lguest/x86/core.c
@@ -324,6 +324,11 @@ static void rewrite_hypercall(struct lg_cpu *cpu)
324 u8 insn[3] = {0xcd, 0x1f, 0x90}; 324 u8 insn[3] = {0xcd, 0x1f, 0x90};
325 325
326 __lgwrite(cpu, guest_pa(cpu, cpu->regs->eip), insn, sizeof(insn)); 326 __lgwrite(cpu, guest_pa(cpu, cpu->regs->eip), insn, sizeof(insn));
327 /* The above write might have caused a copy of that page to be made
328 * (if it was read-only). We need to make sure the Guest has
329 * up-to-date pagetables. As this doesn't happen often, we can just
330 * drop them all. */
331 guest_pagetable_clear_all(cpu);
327} 332}
328 333
329static bool is_hypercall(struct lg_cpu *cpu) 334static bool is_hypercall(struct lg_cpu *cpu)
@@ -563,8 +568,8 @@ void __exit lguest_arch_host_fini(void)
563int lguest_arch_do_hcall(struct lg_cpu *cpu, struct hcall_args *args) 568int lguest_arch_do_hcall(struct lg_cpu *cpu, struct hcall_args *args)
564{ 569{
565 switch (args->arg0) { 570 switch (args->arg0) {
566 case LHCALL_LOAD_GDT: 571 case LHCALL_LOAD_GDT_ENTRY:
567 load_guest_gdt(cpu, args->arg1, args->arg2); 572 load_guest_gdt_entry(cpu, args->arg1, args->arg2, args->arg3);
568 break; 573 break;
569 case LHCALL_LOAD_IDT_ENTRY: 574 case LHCALL_LOAD_IDT_ENTRY:
570 load_guest_idt_entry(cpu, args->arg1, args->arg2, args->arg3); 575 load_guest_idt_entry(cpu, args->arg1, args->arg2, args->arg3);
diff --git a/drivers/macintosh/Kconfig b/drivers/macintosh/Kconfig
index 173cf55c64d0..3d906833948d 100644
--- a/drivers/macintosh/Kconfig
+++ b/drivers/macintosh/Kconfig
@@ -123,7 +123,7 @@ config PMAC_APM_EMU
123 123
124config PMAC_MEDIABAY 124config PMAC_MEDIABAY
125 bool "Support PowerBook hotswap media bay" 125 bool "Support PowerBook hotswap media bay"
126 depends on PPC_PMAC && PPC32 126 depends on PPC_PMAC && PPC32 && BLOCK
127 help 127 help
128 This option adds support for older PowerBook's hotswap media bay 128 This option adds support for older PowerBook's hotswap media bay
129 that can contains batteries, floppy drives, or IDE devices. PCI 129 that can contains batteries, floppy drives, or IDE devices. PCI
diff --git a/drivers/macintosh/mediabay.c b/drivers/macintosh/mediabay.c
index d7e46d345d9e..029ad8ce8a7e 100644
--- a/drivers/macintosh/mediabay.c
+++ b/drivers/macintosh/mediabay.c
@@ -18,7 +18,6 @@
18#include <linux/timer.h> 18#include <linux/timer.h>
19#include <linux/stddef.h> 19#include <linux/stddef.h>
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/ide.h>
22#include <linux/kthread.h> 21#include <linux/kthread.h>
23#include <linux/mutex.h> 22#include <linux/mutex.h>
24#include <asm/prom.h> 23#include <asm/prom.h>
@@ -447,6 +446,7 @@ int check_media_bay_by_base(unsigned long base, int what)
447 446
448 return -ENODEV; 447 return -ENODEV;
449} 448}
449EXPORT_SYMBOL_GPL(check_media_bay_by_base);
450 450
451int media_bay_set_ide_infos(struct device_node* which_bay, unsigned long base, 451int media_bay_set_ide_infos(struct device_node* which_bay, unsigned long base,
452 int irq, ide_hwif_t *hwif) 452 int irq, ide_hwif_t *hwif)
@@ -486,6 +486,7 @@ int media_bay_set_ide_infos(struct device_node* which_bay, unsigned long base,
486 486
487 return -ENODEV; 487 return -ENODEV;
488} 488}
489EXPORT_SYMBOL_GPL(media_bay_set_ide_infos);
489#endif /* CONFIG_BLK_DEV_IDE_PMAC */ 490#endif /* CONFIG_BLK_DEV_IDE_PMAC */
490 491
491static void media_bay_step(int i) 492static void media_bay_step(int i)
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index f8a9f7ab2cb8..1fb91edc7de2 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -1479,6 +1479,7 @@ void bitmap_cond_end_sync(struct bitmap *bitmap, sector_t sector)
1479 s += blocks; 1479 s += blocks;
1480 } 1480 }
1481 bitmap->last_end_sync = jiffies; 1481 bitmap->last_end_sync = jiffies;
1482 sysfs_notify(&bitmap->mddev->kobj, NULL, "sync_completed");
1482} 1483}
1483 1484
1484static void bitmap_set_memory_bits(struct bitmap *bitmap, sector_t offset, int needed) 1485static void bitmap_set_memory_bits(struct bitmap *bitmap, sector_t offset, int needed)
@@ -1589,7 +1590,7 @@ void bitmap_destroy(mddev_t *mddev)
1589int bitmap_create(mddev_t *mddev) 1590int bitmap_create(mddev_t *mddev)
1590{ 1591{
1591 struct bitmap *bitmap; 1592 struct bitmap *bitmap;
1592 unsigned long blocks = mddev->resync_max_sectors; 1593 sector_t blocks = mddev->resync_max_sectors;
1593 unsigned long chunks; 1594 unsigned long chunks;
1594 unsigned long pages; 1595 unsigned long pages;
1595 struct file *file = mddev->bitmap_file; 1596 struct file *file = mddev->bitmap_file;
@@ -1631,8 +1632,8 @@ int bitmap_create(mddev_t *mddev)
1631 bitmap->chunkshift = ffz(~bitmap->chunksize); 1632 bitmap->chunkshift = ffz(~bitmap->chunksize);
1632 1633
1633 /* now that chunksize and chunkshift are set, we can use these macros */ 1634 /* now that chunksize and chunkshift are set, we can use these macros */
1634 chunks = (blocks + CHUNK_BLOCK_RATIO(bitmap) - 1) / 1635 chunks = (blocks + CHUNK_BLOCK_RATIO(bitmap) - 1) >>
1635 CHUNK_BLOCK_RATIO(bitmap); 1636 CHUNK_BLOCK_SHIFT(bitmap);
1636 pages = (chunks + PAGE_COUNTER_RATIO - 1) / PAGE_COUNTER_RATIO; 1637 pages = (chunks + PAGE_COUNTER_RATIO - 1) / PAGE_COUNTER_RATIO;
1637 1638
1638 BUG_ON(!pages); 1639 BUG_ON(!pages);
diff --git a/drivers/md/dm-bio-list.h b/drivers/md/dm-bio-list.h
deleted file mode 100644
index 345098b4ca77..000000000000
--- a/drivers/md/dm-bio-list.h
+++ /dev/null
@@ -1,117 +0,0 @@
1/*
2 * Copyright (C) 2004 Red Hat UK Ltd.
3 *
4 * This file is released under the GPL.
5 */
6
7#ifndef DM_BIO_LIST_H
8#define DM_BIO_LIST_H
9
10#include <linux/bio.h>
11
12#ifdef CONFIG_BLOCK
13
14struct bio_list {
15 struct bio *head;
16 struct bio *tail;
17};
18
19static inline int bio_list_empty(const struct bio_list *bl)
20{
21 return bl->head == NULL;
22}
23
24static inline void bio_list_init(struct bio_list *bl)
25{
26 bl->head = bl->tail = NULL;
27}
28
29#define bio_list_for_each(bio, bl) \
30 for (bio = (bl)->head; bio; bio = bio->bi_next)
31
32static inline unsigned bio_list_size(const struct bio_list *bl)
33{
34 unsigned sz = 0;
35 struct bio *bio;
36
37 bio_list_for_each(bio, bl)
38 sz++;
39
40 return sz;
41}
42
43static inline void bio_list_add(struct bio_list *bl, struct bio *bio)
44{
45 bio->bi_next = NULL;
46
47 if (bl->tail)
48 bl->tail->bi_next = bio;
49 else
50 bl->head = bio;
51
52 bl->tail = bio;
53}
54
55static inline void bio_list_add_head(struct bio_list *bl, struct bio *bio)
56{
57 bio->bi_next = bl->head;
58
59 bl->head = bio;
60
61 if (!bl->tail)
62 bl->tail = bio;
63}
64
65static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2)
66{
67 if (!bl2->head)
68 return;
69
70 if (bl->tail)
71 bl->tail->bi_next = bl2->head;
72 else
73 bl->head = bl2->head;
74
75 bl->tail = bl2->tail;
76}
77
78static inline void bio_list_merge_head(struct bio_list *bl,
79 struct bio_list *bl2)
80{
81 if (!bl2->head)
82 return;
83
84 if (bl->head)
85 bl2->tail->bi_next = bl->head;
86 else
87 bl->tail = bl2->tail;
88
89 bl->head = bl2->head;
90}
91
92static inline struct bio *bio_list_pop(struct bio_list *bl)
93{
94 struct bio *bio = bl->head;
95
96 if (bio) {
97 bl->head = bl->head->bi_next;
98 if (!bl->head)
99 bl->tail = NULL;
100
101 bio->bi_next = NULL;
102 }
103
104 return bio;
105}
106
107static inline struct bio *bio_list_get(struct bio_list *bl)
108{
109 struct bio *bio = bl->head;
110
111 bl->head = bl->tail = NULL;
112
113 return bio;
114}
115
116#endif /* CONFIG_BLOCK */
117#endif
diff --git a/drivers/md/dm-delay.c b/drivers/md/dm-delay.c
index 59ee1b015d2d..559dbb52bc85 100644
--- a/drivers/md/dm-delay.c
+++ b/drivers/md/dm-delay.c
@@ -15,8 +15,6 @@
15 15
16#include <linux/device-mapper.h> 16#include <linux/device-mapper.h>
17 17
18#include "dm-bio-list.h"
19
20#define DM_MSG_PREFIX "delay" 18#define DM_MSG_PREFIX "delay"
21 19
22struct delay_c { 20struct delay_c {
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index f01096549a93..823ceba6efa8 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -1047,6 +1047,19 @@ static int populate_table(struct dm_table *table,
1047 return dm_table_complete(table); 1047 return dm_table_complete(table);
1048} 1048}
1049 1049
1050static int table_prealloc_integrity(struct dm_table *t,
1051 struct mapped_device *md)
1052{
1053 struct list_head *devices = dm_table_get_devices(t);
1054 struct dm_dev_internal *dd;
1055
1056 list_for_each_entry(dd, devices, list)
1057 if (bdev_get_integrity(dd->dm_dev.bdev))
1058 return blk_integrity_register(dm_disk(md), NULL);
1059
1060 return 0;
1061}
1062
1050static int table_load(struct dm_ioctl *param, size_t param_size) 1063static int table_load(struct dm_ioctl *param, size_t param_size)
1051{ 1064{
1052 int r; 1065 int r;
@@ -1068,6 +1081,14 @@ static int table_load(struct dm_ioctl *param, size_t param_size)
1068 goto out; 1081 goto out;
1069 } 1082 }
1070 1083
1084 r = table_prealloc_integrity(t, md);
1085 if (r) {
1086 DMERR("%s: could not register integrity profile.",
1087 dm_device_name(md));
1088 dm_table_destroy(t);
1089 goto out;
1090 }
1091
1071 down_write(&_hash_lock); 1092 down_write(&_hash_lock);
1072 hc = dm_get_mdptr(md); 1093 hc = dm_get_mdptr(md);
1073 if (!hc || hc->md != md) { 1094 if (!hc || hc->md != md) {
diff --git a/drivers/md/dm-kcopyd.c b/drivers/md/dm-kcopyd.c
index 0a225da21272..3e3fc06cb861 100644
--- a/drivers/md/dm-kcopyd.c
+++ b/drivers/md/dm-kcopyd.c
@@ -297,7 +297,8 @@ static int run_complete_job(struct kcopyd_job *job)
297 dm_kcopyd_notify_fn fn = job->fn; 297 dm_kcopyd_notify_fn fn = job->fn;
298 struct dm_kcopyd_client *kc = job->kc; 298 struct dm_kcopyd_client *kc = job->kc;
299 299
300 kcopyd_put_pages(kc, job->pages); 300 if (job->pages)
301 kcopyd_put_pages(kc, job->pages);
301 mempool_free(job, kc->job_pool); 302 mempool_free(job, kc->job_pool);
302 fn(read_err, write_err, context); 303 fn(read_err, write_err, context);
303 304
@@ -461,6 +462,7 @@ static void segment_complete(int read_err, unsigned long write_err,
461 sector_t progress = 0; 462 sector_t progress = 0;
462 sector_t count = 0; 463 sector_t count = 0;
463 struct kcopyd_job *job = (struct kcopyd_job *) context; 464 struct kcopyd_job *job = (struct kcopyd_job *) context;
465 struct dm_kcopyd_client *kc = job->kc;
464 466
465 mutex_lock(&job->lock); 467 mutex_lock(&job->lock);
466 468
@@ -490,7 +492,7 @@ static void segment_complete(int read_err, unsigned long write_err,
490 492
491 if (count) { 493 if (count) {
492 int i; 494 int i;
493 struct kcopyd_job *sub_job = mempool_alloc(job->kc->job_pool, 495 struct kcopyd_job *sub_job = mempool_alloc(kc->job_pool,
494 GFP_NOIO); 496 GFP_NOIO);
495 497
496 *sub_job = *job; 498 *sub_job = *job;
@@ -509,13 +511,16 @@ static void segment_complete(int read_err, unsigned long write_err,
509 } else if (atomic_dec_and_test(&job->sub_jobs)) { 511 } else if (atomic_dec_and_test(&job->sub_jobs)) {
510 512
511 /* 513 /*
512 * To avoid a race we must keep the job around 514 * Queue the completion callback to the kcopyd thread.
513 * until after the notify function has completed. 515 *
514 * Otherwise the client may try and stop the job 516 * Some callers assume that all the completions are called
515 * after we've completed. 517 * from a single thread and don't race with each other.
518 *
519 * We must not call the callback directly here because this
520 * code may not be executing in the thread.
516 */ 521 */
517 job->fn(read_err, write_err, job->context); 522 push(&kc->complete_jobs, job);
518 mempool_free(job, job->kc->job_pool); 523 wake(kc);
519 } 524 }
520} 525}
521 526
@@ -528,6 +533,8 @@ static void split_job(struct kcopyd_job *job)
528{ 533{
529 int i; 534 int i;
530 535
536 atomic_inc(&job->kc->nr_jobs);
537
531 atomic_set(&job->sub_jobs, SPLIT_COUNT); 538 atomic_set(&job->sub_jobs, SPLIT_COUNT);
532 for (i = 0; i < SPLIT_COUNT; i++) 539 for (i = 0; i < SPLIT_COUNT; i++)
533 segment_complete(0, 0u, job); 540 segment_complete(0, 0u, job);
diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c
index bfa107f59d96..79fb53e51c70 100644
--- a/drivers/md/dm-linear.c
+++ b/drivers/md/dm-linear.c
@@ -142,7 +142,6 @@ static struct target_type linear_target = {
142 .status = linear_status, 142 .status = linear_status,
143 .ioctl = linear_ioctl, 143 .ioctl = linear_ioctl,
144 .merge = linear_merge, 144 .merge = linear_merge,
145 .features = DM_TARGET_SUPPORTS_BARRIERS,
146}; 145};
147 146
148int __init dm_linear_init(void) 147int __init dm_linear_init(void)
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index 095f77bf9681..6a386ab4f7eb 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -8,7 +8,6 @@
8#include <linux/device-mapper.h> 8#include <linux/device-mapper.h>
9 9
10#include "dm-path-selector.h" 10#include "dm-path-selector.h"
11#include "dm-bio-list.h"
12#include "dm-bio-record.h" 11#include "dm-bio-record.h"
13#include "dm-uevent.h" 12#include "dm-uevent.h"
14 13
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
index 536ef0bef154..076fbb4e967a 100644
--- a/drivers/md/dm-raid1.c
+++ b/drivers/md/dm-raid1.c
@@ -5,7 +5,6 @@
5 * This file is released under the GPL. 5 * This file is released under the GPL.
6 */ 6 */
7 7
8#include "dm-bio-list.h"
9#include "dm-bio-record.h" 8#include "dm-bio-record.h"
10 9
11#include <linux/init.h> 10#include <linux/init.h>
diff --git a/drivers/md/dm-region-hash.c b/drivers/md/dm-region-hash.c
index 59f8d9df9e1a..7b899be0b087 100644
--- a/drivers/md/dm-region-hash.c
+++ b/drivers/md/dm-region-hash.c
@@ -14,7 +14,6 @@
14#include <linux/vmalloc.h> 14#include <linux/vmalloc.h>
15 15
16#include "dm.h" 16#include "dm.h"
17#include "dm-bio-list.h"
18 17
19#define DM_MSG_PREFIX "region hash" 18#define DM_MSG_PREFIX "region hash"
20 19
diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c
index 981a0413068f..d73f17fc7778 100644
--- a/drivers/md/dm-snap.c
+++ b/drivers/md/dm-snap.c
@@ -22,7 +22,6 @@
22#include <linux/workqueue.h> 22#include <linux/workqueue.h>
23 23
24#include "dm-exception-store.h" 24#include "dm-exception-store.h"
25#include "dm-bio-list.h"
26 25
27#define DM_MSG_PREFIX "snapshots" 26#define DM_MSG_PREFIX "snapshots"
28 27
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index e8361b191b9b..429b50b975d5 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -52,8 +52,6 @@ struct dm_table {
52 sector_t *highs; 52 sector_t *highs;
53 struct dm_target *targets; 53 struct dm_target *targets;
54 54
55 unsigned barriers_supported:1;
56
57 /* 55 /*
58 * Indicates the rw permissions for the new logical 56 * Indicates the rw permissions for the new logical
59 * device. This should be a combination of FMODE_READ 57 * device. This should be a combination of FMODE_READ
@@ -243,7 +241,6 @@ int dm_table_create(struct dm_table **result, fmode_t mode,
243 241
244 INIT_LIST_HEAD(&t->devices); 242 INIT_LIST_HEAD(&t->devices);
245 atomic_set(&t->holders, 0); 243 atomic_set(&t->holders, 0);
246 t->barriers_supported = 1;
247 244
248 if (!num_targets) 245 if (!num_targets)
249 num_targets = KEYS_PER_NODE; 246 num_targets = KEYS_PER_NODE;
@@ -751,10 +748,6 @@ int dm_table_add_target(struct dm_table *t, const char *type,
751 /* FIXME: the plan is to combine high here and then have 748 /* FIXME: the plan is to combine high here and then have
752 * the merge fn apply the target level restrictions. */ 749 * the merge fn apply the target level restrictions. */
753 combine_restrictions_low(&t->limits, &tgt->limits); 750 combine_restrictions_low(&t->limits, &tgt->limits);
754
755 if (!(tgt->type->features & DM_TARGET_SUPPORTS_BARRIERS))
756 t->barriers_supported = 0;
757
758 return 0; 751 return 0;
759 752
760 bad: 753 bad:
@@ -799,12 +792,6 @@ int dm_table_complete(struct dm_table *t)
799 792
800 check_for_valid_limits(&t->limits); 793 check_for_valid_limits(&t->limits);
801 794
802 /*
803 * We only support barriers if there is exactly one underlying device.
804 */
805 if (!list_is_singular(&t->devices))
806 t->barriers_supported = 0;
807
808 /* how many indexes will the btree have ? */ 795 /* how many indexes will the btree have ? */
809 leaf_nodes = dm_div_up(t->num_targets, KEYS_PER_NODE); 796 leaf_nodes = dm_div_up(t->num_targets, KEYS_PER_NODE);
810 t->depth = 1 + int_log(leaf_nodes, CHILDREN_PER_NODE); 797 t->depth = 1 + int_log(leaf_nodes, CHILDREN_PER_NODE);
@@ -879,6 +866,45 @@ struct dm_target *dm_table_find_target(struct dm_table *t, sector_t sector)
879 return &t->targets[(KEYS_PER_NODE * n) + k]; 866 return &t->targets[(KEYS_PER_NODE * n) + k];
880} 867}
881 868
869/*
870 * Set the integrity profile for this device if all devices used have
871 * matching profiles.
872 */
873static void dm_table_set_integrity(struct dm_table *t)
874{
875 struct list_head *devices = dm_table_get_devices(t);
876 struct dm_dev_internal *prev = NULL, *dd = NULL;
877
878 if (!blk_get_integrity(dm_disk(t->md)))
879 return;
880
881 list_for_each_entry(dd, devices, list) {
882 if (prev &&
883 blk_integrity_compare(prev->dm_dev.bdev->bd_disk,
884 dd->dm_dev.bdev->bd_disk) < 0) {
885 DMWARN("%s: integrity not set: %s and %s mismatch",
886 dm_device_name(t->md),
887 prev->dm_dev.bdev->bd_disk->disk_name,
888 dd->dm_dev.bdev->bd_disk->disk_name);
889 goto no_integrity;
890 }
891 prev = dd;
892 }
893
894 if (!prev || !bdev_get_integrity(prev->dm_dev.bdev))
895 goto no_integrity;
896
897 blk_integrity_register(dm_disk(t->md),
898 bdev_get_integrity(prev->dm_dev.bdev));
899
900 return;
901
902no_integrity:
903 blk_integrity_register(dm_disk(t->md), NULL);
904
905 return;
906}
907
882void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q) 908void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q)
883{ 909{
884 /* 910 /*
@@ -899,6 +925,7 @@ void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q)
899 else 925 else
900 queue_flag_set_unlocked(QUEUE_FLAG_CLUSTER, q); 926 queue_flag_set_unlocked(QUEUE_FLAG_CLUSTER, q);
901 927
928 dm_table_set_integrity(t);
902} 929}
903 930
904unsigned int dm_table_get_num_targets(struct dm_table *t) 931unsigned int dm_table_get_num_targets(struct dm_table *t)
@@ -1019,12 +1046,6 @@ struct mapped_device *dm_table_get_md(struct dm_table *t)
1019 return t->md; 1046 return t->md;
1020} 1047}
1021 1048
1022int dm_table_barrier_ok(struct dm_table *t)
1023{
1024 return t->barriers_supported;
1025}
1026EXPORT_SYMBOL(dm_table_barrier_ok);
1027
1028EXPORT_SYMBOL(dm_vcalloc); 1049EXPORT_SYMBOL(dm_vcalloc);
1029EXPORT_SYMBOL(dm_get_device); 1050EXPORT_SYMBOL(dm_get_device);
1030EXPORT_SYMBOL(dm_put_device); 1051EXPORT_SYMBOL(dm_put_device);
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 788ba96a6256..424f7b048c30 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -6,7 +6,6 @@
6 */ 6 */
7 7
8#include "dm.h" 8#include "dm.h"
9#include "dm-bio-list.h"
10#include "dm-uevent.h" 9#include "dm-uevent.h"
11 10
12#include <linux/init.h> 11#include <linux/init.h>
@@ -89,12 +88,13 @@ union map_info *dm_get_mapinfo(struct bio *bio)
89/* 88/*
90 * Bits for the md->flags field. 89 * Bits for the md->flags field.
91 */ 90 */
92#define DMF_BLOCK_IO 0 91#define DMF_BLOCK_IO_FOR_SUSPEND 0
93#define DMF_SUSPENDED 1 92#define DMF_SUSPENDED 1
94#define DMF_FROZEN 2 93#define DMF_FROZEN 2
95#define DMF_FREEING 3 94#define DMF_FREEING 3
96#define DMF_DELETING 4 95#define DMF_DELETING 4
97#define DMF_NOFLUSH_SUSPENDING 5 96#define DMF_NOFLUSH_SUSPENDING 5
97#define DMF_QUEUE_IO_TO_THREAD 6
98 98
99/* 99/*
100 * Work processed by per-device workqueue. 100 * Work processed by per-device workqueue.
@@ -124,6 +124,11 @@ struct mapped_device {
124 spinlock_t deferred_lock; 124 spinlock_t deferred_lock;
125 125
126 /* 126 /*
127 * An error from the barrier request currently being processed.
128 */
129 int barrier_error;
130
131 /*
127 * Processing queue (flush/barriers) 132 * Processing queue (flush/barriers)
128 */ 133 */
129 struct workqueue_struct *wq; 134 struct workqueue_struct *wq;
@@ -424,6 +429,10 @@ static void end_io_acct(struct dm_io *io)
424 part_stat_add(cpu, &dm_disk(md)->part0, ticks[rw], duration); 429 part_stat_add(cpu, &dm_disk(md)->part0, ticks[rw], duration);
425 part_stat_unlock(); 430 part_stat_unlock();
426 431
432 /*
433 * After this is decremented the bio must not be touched if it is
434 * a barrier.
435 */
427 dm_disk(md)->part0.in_flight = pending = 436 dm_disk(md)->part0.in_flight = pending =
428 atomic_dec_return(&md->pending); 437 atomic_dec_return(&md->pending);
429 438
@@ -435,21 +444,18 @@ static void end_io_acct(struct dm_io *io)
435/* 444/*
436 * Add the bio to the list of deferred io. 445 * Add the bio to the list of deferred io.
437 */ 446 */
438static int queue_io(struct mapped_device *md, struct bio *bio) 447static void queue_io(struct mapped_device *md, struct bio *bio)
439{ 448{
440 down_write(&md->io_lock); 449 down_write(&md->io_lock);
441 450
442 if (!test_bit(DMF_BLOCK_IO, &md->flags)) {
443 up_write(&md->io_lock);
444 return 1;
445 }
446
447 spin_lock_irq(&md->deferred_lock); 451 spin_lock_irq(&md->deferred_lock);
448 bio_list_add(&md->deferred, bio); 452 bio_list_add(&md->deferred, bio);
449 spin_unlock_irq(&md->deferred_lock); 453 spin_unlock_irq(&md->deferred_lock);
450 454
455 if (!test_and_set_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags))
456 queue_work(md->wq, &md->work);
457
451 up_write(&md->io_lock); 458 up_write(&md->io_lock);
452 return 0; /* deferred successfully */
453} 459}
454 460
455/* 461/*
@@ -533,25 +539,35 @@ static void dec_pending(struct dm_io *io, int error)
533 */ 539 */
534 spin_lock_irqsave(&md->deferred_lock, flags); 540 spin_lock_irqsave(&md->deferred_lock, flags);
535 if (__noflush_suspending(md)) 541 if (__noflush_suspending(md))
536 bio_list_add(&md->deferred, io->bio); 542 bio_list_add_head(&md->deferred, io->bio);
537 else 543 else
538 /* noflush suspend was interrupted. */ 544 /* noflush suspend was interrupted. */
539 io->error = -EIO; 545 io->error = -EIO;
540 spin_unlock_irqrestore(&md->deferred_lock, flags); 546 spin_unlock_irqrestore(&md->deferred_lock, flags);
541 } 547 }
542 548
543 end_io_acct(io);
544
545 io_error = io->error; 549 io_error = io->error;
546 bio = io->bio; 550 bio = io->bio;
547 551
548 free_io(md, io); 552 if (bio_barrier(bio)) {
553 /*
554 * There can be just one barrier request so we use
555 * a per-device variable for error reporting.
556 * Note that you can't touch the bio after end_io_acct
557 */
558 md->barrier_error = io_error;
559 end_io_acct(io);
560 } else {
561 end_io_acct(io);
549 562
550 if (io_error != DM_ENDIO_REQUEUE) { 563 if (io_error != DM_ENDIO_REQUEUE) {
551 trace_block_bio_complete(md->queue, bio); 564 trace_block_bio_complete(md->queue, bio);
552 565
553 bio_endio(bio, io_error); 566 bio_endio(bio, io_error);
567 }
554 } 568 }
569
570 free_io(md, io);
555 } 571 }
556} 572}
557 573
@@ -693,13 +709,19 @@ static struct bio *split_bvec(struct bio *bio, sector_t sector,
693 709
694 clone->bi_sector = sector; 710 clone->bi_sector = sector;
695 clone->bi_bdev = bio->bi_bdev; 711 clone->bi_bdev = bio->bi_bdev;
696 clone->bi_rw = bio->bi_rw; 712 clone->bi_rw = bio->bi_rw & ~(1 << BIO_RW_BARRIER);
697 clone->bi_vcnt = 1; 713 clone->bi_vcnt = 1;
698 clone->bi_size = to_bytes(len); 714 clone->bi_size = to_bytes(len);
699 clone->bi_io_vec->bv_offset = offset; 715 clone->bi_io_vec->bv_offset = offset;
700 clone->bi_io_vec->bv_len = clone->bi_size; 716 clone->bi_io_vec->bv_len = clone->bi_size;
701 clone->bi_flags |= 1 << BIO_CLONED; 717 clone->bi_flags |= 1 << BIO_CLONED;
702 718
719 if (bio_integrity(bio)) {
720 bio_integrity_clone(clone, bio, GFP_NOIO);
721 bio_integrity_trim(clone,
722 bio_sector_offset(bio, idx, offset), len);
723 }
724
703 return clone; 725 return clone;
704} 726}
705 727
@@ -714,6 +736,7 @@ static struct bio *clone_bio(struct bio *bio, sector_t sector,
714 736
715 clone = bio_alloc_bioset(GFP_NOIO, bio->bi_max_vecs, bs); 737 clone = bio_alloc_bioset(GFP_NOIO, bio->bi_max_vecs, bs);
716 __bio_clone(clone, bio); 738 __bio_clone(clone, bio);
739 clone->bi_rw &= ~(1 << BIO_RW_BARRIER);
717 clone->bi_destructor = dm_bio_destructor; 740 clone->bi_destructor = dm_bio_destructor;
718 clone->bi_sector = sector; 741 clone->bi_sector = sector;
719 clone->bi_idx = idx; 742 clone->bi_idx = idx;
@@ -721,6 +744,14 @@ static struct bio *clone_bio(struct bio *bio, sector_t sector,
721 clone->bi_size = to_bytes(len); 744 clone->bi_size = to_bytes(len);
722 clone->bi_flags &= ~(1 << BIO_SEG_VALID); 745 clone->bi_flags &= ~(1 << BIO_SEG_VALID);
723 746
747 if (bio_integrity(bio)) {
748 bio_integrity_clone(clone, bio, GFP_NOIO);
749
750 if (idx != bio->bi_idx || clone->bi_size < bio->bi_size)
751 bio_integrity_trim(clone,
752 bio_sector_offset(bio, idx, 0), len);
753 }
754
724 return clone; 755 return clone;
725} 756}
726 757
@@ -834,14 +865,13 @@ static void __split_and_process_bio(struct mapped_device *md, struct bio *bio)
834 865
835 ci.map = dm_get_table(md); 866 ci.map = dm_get_table(md);
836 if (unlikely(!ci.map)) { 867 if (unlikely(!ci.map)) {
837 bio_io_error(bio); 868 if (!bio_barrier(bio))
838 return; 869 bio_io_error(bio);
839 } 870 else
840 if (unlikely(bio_barrier(bio) && !dm_table_barrier_ok(ci.map))) { 871 md->barrier_error = -EIO;
841 dm_table_put(ci.map);
842 bio_endio(bio, -EOPNOTSUPP);
843 return; 872 return;
844 } 873 }
874
845 ci.md = md; 875 ci.md = md;
846 ci.bio = bio; 876 ci.bio = bio;
847 ci.io = alloc_io(md); 877 ci.io = alloc_io(md);
@@ -918,7 +948,6 @@ out:
918 */ 948 */
919static int dm_request(struct request_queue *q, struct bio *bio) 949static int dm_request(struct request_queue *q, struct bio *bio)
920{ 950{
921 int r = -EIO;
922 int rw = bio_data_dir(bio); 951 int rw = bio_data_dir(bio);
923 struct mapped_device *md = q->queuedata; 952 struct mapped_device *md = q->queuedata;
924 int cpu; 953 int cpu;
@@ -931,34 +960,27 @@ static int dm_request(struct request_queue *q, struct bio *bio)
931 part_stat_unlock(); 960 part_stat_unlock();
932 961
933 /* 962 /*
934 * If we're suspended we have to queue 963 * If we're suspended or the thread is processing barriers
935 * this io for later. 964 * we have to queue this io for later.
936 */ 965 */
937 while (test_bit(DMF_BLOCK_IO, &md->flags)) { 966 if (unlikely(test_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags)) ||
967 unlikely(bio_barrier(bio))) {
938 up_read(&md->io_lock); 968 up_read(&md->io_lock);
939 969
940 if (bio_rw(bio) != READA) 970 if (unlikely(test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) &&
941 r = queue_io(md, bio); 971 bio_rw(bio) == READA) {
972 bio_io_error(bio);
973 return 0;
974 }
942 975
943 if (r <= 0) 976 queue_io(md, bio);
944 goto out_req;
945 977
946 /* 978 return 0;
947 * We're in a while loop, because someone could suspend
948 * before we get to the following read lock.
949 */
950 down_read(&md->io_lock);
951 } 979 }
952 980
953 __split_and_process_bio(md, bio); 981 __split_and_process_bio(md, bio);
954 up_read(&md->io_lock); 982 up_read(&md->io_lock);
955 return 0; 983 return 0;
956
957out_req:
958 if (r < 0)
959 bio_io_error(bio);
960
961 return 0;
962} 984}
963 985
964static void dm_unplug_all(struct request_queue *q) 986static void dm_unplug_all(struct request_queue *q)
@@ -978,7 +1000,7 @@ static int dm_any_congested(void *congested_data, int bdi_bits)
978 struct mapped_device *md = congested_data; 1000 struct mapped_device *md = congested_data;
979 struct dm_table *map; 1001 struct dm_table *map;
980 1002
981 if (!test_bit(DMF_BLOCK_IO, &md->flags)) { 1003 if (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) {
982 map = dm_get_table(md); 1004 map = dm_get_table(md);
983 if (map) { 1005 if (map) {
984 r = dm_table_any_congested(map, bdi_bits); 1006 r = dm_table_any_congested(map, bdi_bits);
@@ -1193,6 +1215,7 @@ static void free_dev(struct mapped_device *md)
1193 mempool_destroy(md->tio_pool); 1215 mempool_destroy(md->tio_pool);
1194 mempool_destroy(md->io_pool); 1216 mempool_destroy(md->io_pool);
1195 bioset_free(md->bs); 1217 bioset_free(md->bs);
1218 blk_integrity_unregister(md->disk);
1196 del_gendisk(md->disk); 1219 del_gendisk(md->disk);
1197 free_minor(minor); 1220 free_minor(minor);
1198 1221
@@ -1406,6 +1429,36 @@ static int dm_wait_for_completion(struct mapped_device *md, int interruptible)
1406 return r; 1429 return r;
1407} 1430}
1408 1431
1432static int dm_flush(struct mapped_device *md)
1433{
1434 dm_wait_for_completion(md, TASK_UNINTERRUPTIBLE);
1435 return 0;
1436}
1437
1438static void process_barrier(struct mapped_device *md, struct bio *bio)
1439{
1440 int error = dm_flush(md);
1441
1442 if (unlikely(error)) {
1443 bio_endio(bio, error);
1444 return;
1445 }
1446 if (bio_empty_barrier(bio)) {
1447 bio_endio(bio, 0);
1448 return;
1449 }
1450
1451 __split_and_process_bio(md, bio);
1452
1453 error = dm_flush(md);
1454
1455 if (!error && md->barrier_error)
1456 error = md->barrier_error;
1457
1458 if (md->barrier_error != DM_ENDIO_REQUEUE)
1459 bio_endio(bio, error);
1460}
1461
1409/* 1462/*
1410 * Process the deferred bios 1463 * Process the deferred bios
1411 */ 1464 */
@@ -1417,25 +1470,34 @@ static void dm_wq_work(struct work_struct *work)
1417 1470
1418 down_write(&md->io_lock); 1471 down_write(&md->io_lock);
1419 1472
1420next_bio: 1473 while (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) {
1421 spin_lock_irq(&md->deferred_lock); 1474 spin_lock_irq(&md->deferred_lock);
1422 c = bio_list_pop(&md->deferred); 1475 c = bio_list_pop(&md->deferred);
1423 spin_unlock_irq(&md->deferred_lock); 1476 spin_unlock_irq(&md->deferred_lock);
1424 1477
1425 if (c) { 1478 if (!c) {
1426 __split_and_process_bio(md, c); 1479 clear_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags);
1427 goto next_bio; 1480 break;
1428 } 1481 }
1429 1482
1430 clear_bit(DMF_BLOCK_IO, &md->flags); 1483 up_write(&md->io_lock);
1484
1485 if (bio_barrier(c))
1486 process_barrier(md, c);
1487 else
1488 __split_and_process_bio(md, c);
1489
1490 down_write(&md->io_lock);
1491 }
1431 1492
1432 up_write(&md->io_lock); 1493 up_write(&md->io_lock);
1433} 1494}
1434 1495
1435static void dm_queue_flush(struct mapped_device *md) 1496static void dm_queue_flush(struct mapped_device *md)
1436{ 1497{
1498 clear_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags);
1499 smp_mb__after_clear_bit();
1437 queue_work(md->wq, &md->work); 1500 queue_work(md->wq, &md->work);
1438 flush_workqueue(md->wq);
1439} 1501}
1440 1502
1441/* 1503/*
@@ -1553,20 +1615,36 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
1553 } 1615 }
1554 1616
1555 /* 1617 /*
1556 * First we set the BLOCK_IO flag so no more ios will be mapped. 1618 * Here we must make sure that no processes are submitting requests
1619 * to target drivers i.e. no one may be executing
1620 * __split_and_process_bio. This is called from dm_request and
1621 * dm_wq_work.
1622 *
1623 * To get all processes out of __split_and_process_bio in dm_request,
1624 * we take the write lock. To prevent any process from reentering
1625 * __split_and_process_bio from dm_request, we set
1626 * DMF_QUEUE_IO_TO_THREAD.
1627 *
1628 * To quiesce the thread (dm_wq_work), we set DMF_BLOCK_IO_FOR_SUSPEND
1629 * and call flush_workqueue(md->wq). flush_workqueue will wait until
1630 * dm_wq_work exits and DMF_BLOCK_IO_FOR_SUSPEND will prevent any
1631 * further calls to __split_and_process_bio from dm_wq_work.
1557 */ 1632 */
1558 down_write(&md->io_lock); 1633 down_write(&md->io_lock);
1559 set_bit(DMF_BLOCK_IO, &md->flags); 1634 set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags);
1560 1635 set_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags);
1561 up_write(&md->io_lock); 1636 up_write(&md->io_lock);
1562 1637
1638 flush_workqueue(md->wq);
1639
1563 /* 1640 /*
1564 * Wait for the already-mapped ios to complete. 1641 * At this point no more requests are entering target request routines.
1642 * We call dm_wait_for_completion to wait for all existing requests
1643 * to finish.
1565 */ 1644 */
1566 r = dm_wait_for_completion(md, TASK_INTERRUPTIBLE); 1645 r = dm_wait_for_completion(md, TASK_INTERRUPTIBLE);
1567 1646
1568 down_write(&md->io_lock); 1647 down_write(&md->io_lock);
1569
1570 if (noflush) 1648 if (noflush)
1571 clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); 1649 clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
1572 up_write(&md->io_lock); 1650 up_write(&md->io_lock);
@@ -1579,6 +1657,12 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
1579 goto out; /* pushback list is already flushed, so skip flush */ 1657 goto out; /* pushback list is already flushed, so skip flush */
1580 } 1658 }
1581 1659
1660 /*
1661 * If dm_wait_for_completion returned 0, the device is completely
1662 * quiescent now. There is no request-processing activity. All new
1663 * requests are being added to md->deferred list.
1664 */
1665
1582 dm_table_postsuspend_targets(map); 1666 dm_table_postsuspend_targets(map);
1583 1667
1584 set_bit(DMF_SUSPENDED, &md->flags); 1668 set_bit(DMF_SUSPENDED, &md->flags);
diff --git a/drivers/md/dm.h b/drivers/md/dm.h
index b48397c0abbd..a31506d93e91 100644
--- a/drivers/md/dm.h
+++ b/drivers/md/dm.h
@@ -52,7 +52,6 @@ int dm_table_any_congested(struct dm_table *t, int bdi_bits);
52 * To check the return value from dm_table_find_target(). 52 * To check the return value from dm_table_find_target().
53 */ 53 */
54#define dm_target_is_valid(t) ((t)->table) 54#define dm_target_is_valid(t) ((t)->table)
55int dm_table_barrier_ok(struct dm_table *t);
56 55
57/*----------------------------------------------------------------- 56/*-----------------------------------------------------------------
58 * A registry of target types. 57 * A registry of target types.
diff --git a/drivers/md/md.c b/drivers/md/md.c
index ed5727c089a9..612343fdde94 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2017,6 +2017,8 @@ repeat:
2017 clear_bit(MD_CHANGE_PENDING, &mddev->flags); 2017 clear_bit(MD_CHANGE_PENDING, &mddev->flags);
2018 spin_unlock_irq(&mddev->write_lock); 2018 spin_unlock_irq(&mddev->write_lock);
2019 wake_up(&mddev->sb_wait); 2019 wake_up(&mddev->sb_wait);
2020 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
2021 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
2020 2022
2021} 2023}
2022 2024
@@ -2086,6 +2088,7 @@ state_store(mdk_rdev_t *rdev, const char *buf, size_t len)
2086 * -writemostly - clears write_mostly 2088 * -writemostly - clears write_mostly
2087 * blocked - sets the Blocked flag 2089 * blocked - sets the Blocked flag
2088 * -blocked - clears the Blocked flag 2090 * -blocked - clears the Blocked flag
2091 * insync - sets Insync providing device isn't active
2089 */ 2092 */
2090 int err = -EINVAL; 2093 int err = -EINVAL;
2091 if (cmd_match(buf, "faulty") && rdev->mddev->pers) { 2094 if (cmd_match(buf, "faulty") && rdev->mddev->pers) {
@@ -2118,6 +2121,9 @@ state_store(mdk_rdev_t *rdev, const char *buf, size_t len)
2118 md_wakeup_thread(rdev->mddev->thread); 2121 md_wakeup_thread(rdev->mddev->thread);
2119 2122
2120 err = 0; 2123 err = 0;
2124 } else if (cmd_match(buf, "insync") && rdev->raid_disk == -1) {
2125 set_bit(In_sync, &rdev->flags);
2126 err = 0;
2121 } 2127 }
2122 if (!err && rdev->sysfs_state) 2128 if (!err && rdev->sysfs_state)
2123 sysfs_notify_dirent(rdev->sysfs_state); 2129 sysfs_notify_dirent(rdev->sysfs_state);
@@ -2190,7 +2196,7 @@ slot_store(mdk_rdev_t *rdev, const char *buf, size_t len)
2190 } else if (rdev->mddev->pers) { 2196 } else if (rdev->mddev->pers) {
2191 mdk_rdev_t *rdev2; 2197 mdk_rdev_t *rdev2;
2192 /* Activating a spare .. or possibly reactivating 2198 /* Activating a spare .. or possibly reactivating
2193 * if we every get bitmaps working here. 2199 * if we ever get bitmaps working here.
2194 */ 2200 */
2195 2201
2196 if (rdev->raid_disk != -1) 2202 if (rdev->raid_disk != -1)
@@ -3482,12 +3488,15 @@ sync_completed_show(mddev_t *mddev, char *page)
3482{ 3488{
3483 unsigned long max_sectors, resync; 3489 unsigned long max_sectors, resync;
3484 3490
3491 if (!test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
3492 return sprintf(page, "none\n");
3493
3485 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) 3494 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery))
3486 max_sectors = mddev->resync_max_sectors; 3495 max_sectors = mddev->resync_max_sectors;
3487 else 3496 else
3488 max_sectors = mddev->dev_sectors; 3497 max_sectors = mddev->dev_sectors;
3489 3498
3490 resync = (mddev->curr_resync - atomic_read(&mddev->recovery_active)); 3499 resync = mddev->curr_resync_completed;
3491 return sprintf(page, "%lu / %lu\n", resync, max_sectors); 3500 return sprintf(page, "%lu / %lu\n", resync, max_sectors);
3492} 3501}
3493 3502
@@ -6334,18 +6343,13 @@ void md_do_sync(mddev_t *mddev)
6334 sector_t sectors; 6343 sector_t sectors;
6335 6344
6336 skipped = 0; 6345 skipped = 0;
6337 if (j >= mddev->resync_max) {
6338 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
6339 wait_event(mddev->recovery_wait,
6340 mddev->resync_max > j
6341 || kthread_should_stop());
6342 }
6343 if (kthread_should_stop())
6344 goto interrupted;
6345 6346
6346 if (mddev->curr_resync > mddev->curr_resync_completed && 6347 if ((mddev->curr_resync > mddev->curr_resync_completed &&
6347 (mddev->curr_resync - mddev->curr_resync_completed) 6348 (mddev->curr_resync - mddev->curr_resync_completed)
6348 > (max_sectors >> 4)) { 6349 > (max_sectors >> 4)) ||
6350 (j - mddev->curr_resync_completed)*2
6351 >= mddev->resync_max - mddev->curr_resync_completed
6352 ) {
6349 /* time to update curr_resync_completed */ 6353 /* time to update curr_resync_completed */
6350 blk_unplug(mddev->queue); 6354 blk_unplug(mddev->queue);
6351 wait_event(mddev->recovery_wait, 6355 wait_event(mddev->recovery_wait,
@@ -6353,7 +6357,17 @@ void md_do_sync(mddev_t *mddev)
6353 mddev->curr_resync_completed = 6357 mddev->curr_resync_completed =
6354 mddev->curr_resync; 6358 mddev->curr_resync;
6355 set_bit(MD_CHANGE_CLEAN, &mddev->flags); 6359 set_bit(MD_CHANGE_CLEAN, &mddev->flags);
6360 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
6356 } 6361 }
6362
6363 if (j >= mddev->resync_max)
6364 wait_event(mddev->recovery_wait,
6365 mddev->resync_max > j
6366 || kthread_should_stop());
6367
6368 if (kthread_should_stop())
6369 goto interrupted;
6370
6357 sectors = mddev->pers->sync_request(mddev, j, &skipped, 6371 sectors = mddev->pers->sync_request(mddev, j, &skipped,
6358 currspeed < speed_min(mddev)); 6372 currspeed < speed_min(mddev));
6359 if (sectors == 0) { 6373 if (sectors == 0) {
@@ -6461,6 +6475,7 @@ void md_do_sync(mddev_t *mddev)
6461 6475
6462 skip: 6476 skip:
6463 mddev->curr_resync = 0; 6477 mddev->curr_resync = 0;
6478 mddev->curr_resync_completed = 0;
6464 mddev->resync_min = 0; 6479 mddev->resync_min = 0;
6465 mddev->resync_max = MaxSector; 6480 mddev->resync_max = MaxSector;
6466 sysfs_notify(&mddev->kobj, NULL, "sync_completed"); 6481 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
diff --git a/drivers/md/md.h b/drivers/md/md.h
index e9b7f54c24d6..8227ab909d44 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -12,10 +12,17 @@
12 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 12 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
13*/ 13*/
14 14
15#ifndef _MD_K_H 15#ifndef _MD_MD_H
16#define _MD_K_H 16#define _MD_MD_H
17 17
18#ifdef CONFIG_BLOCK 18#include <linux/blkdev.h>
19#include <linux/kobject.h>
20#include <linux/list.h>
21#include <linux/mm.h>
22#include <linux/mutex.h>
23#include <linux/timer.h>
24#include <linux/wait.h>
25#include <linux/workqueue.h>
19 26
20#define MaxSector (~(sector_t)0) 27#define MaxSector (~(sector_t)0)
21 28
@@ -408,10 +415,6 @@ static inline void safe_put_page(struct page *p)
408 if (p) put_page(p); 415 if (p) put_page(p);
409} 416}
410 417
411#endif /* CONFIG_BLOCK */
412#endif
413
414
415extern int register_md_personality(struct mdk_personality *p); 418extern int register_md_personality(struct mdk_personality *p);
416extern int unregister_md_personality(struct mdk_personality *p); 419extern int unregister_md_personality(struct mdk_personality *p);
417extern mdk_thread_t * md_register_thread(void (*run) (mddev_t *mddev), 420extern mdk_thread_t * md_register_thread(void (*run) (mddev_t *mddev),
@@ -434,3 +437,5 @@ extern void md_new_event(mddev_t *mddev);
434extern int md_allow_write(mddev_t *mddev); 437extern int md_allow_write(mddev_t *mddev);
435extern void md_wait_for_blocked_rdev(mdk_rdev_t *rdev, mddev_t *mddev); 438extern void md_wait_for_blocked_rdev(mdk_rdev_t *rdev, mddev_t *mddev);
436extern void md_set_array_sectors(mddev_t *mddev, sector_t array_sectors); 439extern void md_set_array_sectors(mddev_t *mddev, sector_t array_sectors);
440
441#endif /* _MD_MD_H */
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 274b491a11c1..36df9109cde1 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -35,7 +35,6 @@
35#include <linux/blkdev.h> 35#include <linux/blkdev.h>
36#include <linux/seq_file.h> 36#include <linux/seq_file.h>
37#include "md.h" 37#include "md.h"
38#include "dm-bio-list.h"
39#include "raid1.h" 38#include "raid1.h"
40#include "bitmap.h" 39#include "bitmap.h"
41 40
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index e293d92641ac..81a54f17417e 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -22,7 +22,6 @@
22#include <linux/blkdev.h> 22#include <linux/blkdev.h>
23#include <linux/seq_file.h> 23#include <linux/seq_file.h>
24#include "md.h" 24#include "md.h"
25#include "dm-bio-list.h"
26#include "raid10.h" 25#include "raid10.h"
27#include "bitmap.h" 26#include "bitmap.h"
28 27
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 3bbc6d647044..4616bc3a6e71 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3845,6 +3845,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
3845 wait_event(conf->wait_for_overlap, 3845 wait_event(conf->wait_for_overlap,
3846 atomic_read(&conf->reshape_stripes)==0); 3846 atomic_read(&conf->reshape_stripes)==0);
3847 mddev->reshape_position = conf->reshape_progress; 3847 mddev->reshape_position = conf->reshape_progress;
3848 mddev->curr_resync_completed = mddev->curr_resync;
3848 conf->reshape_checkpoint = jiffies; 3849 conf->reshape_checkpoint = jiffies;
3849 set_bit(MD_CHANGE_DEVS, &mddev->flags); 3850 set_bit(MD_CHANGE_DEVS, &mddev->flags);
3850 md_wakeup_thread(mddev->thread); 3851 md_wakeup_thread(mddev->thread);
@@ -3854,6 +3855,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
3854 conf->reshape_safe = mddev->reshape_position; 3855 conf->reshape_safe = mddev->reshape_position;
3855 spin_unlock_irq(&conf->device_lock); 3856 spin_unlock_irq(&conf->device_lock);
3856 wake_up(&conf->wait_for_overlap); 3857 wake_up(&conf->wait_for_overlap);
3858 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
3857 } 3859 }
3858 3860
3859 if (mddev->delta_disks < 0) { 3861 if (mddev->delta_disks < 0) {
@@ -3938,11 +3940,13 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
3938 * then we need to write out the superblock. 3940 * then we need to write out the superblock.
3939 */ 3941 */
3940 sector_nr += reshape_sectors; 3942 sector_nr += reshape_sectors;
3941 if (sector_nr >= mddev->resync_max) { 3943 if ((sector_nr - mddev->curr_resync_completed) * 2
3944 >= mddev->resync_max - mddev->curr_resync_completed) {
3942 /* Cannot proceed until we've updated the superblock... */ 3945 /* Cannot proceed until we've updated the superblock... */
3943 wait_event(conf->wait_for_overlap, 3946 wait_event(conf->wait_for_overlap,
3944 atomic_read(&conf->reshape_stripes) == 0); 3947 atomic_read(&conf->reshape_stripes) == 0);
3945 mddev->reshape_position = conf->reshape_progress; 3948 mddev->reshape_position = conf->reshape_progress;
3949 mddev->curr_resync_completed = mddev->curr_resync;
3946 conf->reshape_checkpoint = jiffies; 3950 conf->reshape_checkpoint = jiffies;
3947 set_bit(MD_CHANGE_DEVS, &mddev->flags); 3951 set_bit(MD_CHANGE_DEVS, &mddev->flags);
3948 md_wakeup_thread(mddev->thread); 3952 md_wakeup_thread(mddev->thread);
@@ -3953,6 +3957,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
3953 conf->reshape_safe = mddev->reshape_position; 3957 conf->reshape_safe = mddev->reshape_position;
3954 spin_unlock_irq(&conf->device_lock); 3958 spin_unlock_irq(&conf->device_lock);
3955 wake_up(&conf->wait_for_overlap); 3959 wake_up(&conf->wait_for_overlap);
3960 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
3956 } 3961 }
3957 return reshape_sectors; 3962 return reshape_sectors;
3958} 3963}
diff --git a/drivers/media/dvb/ttpci/Kconfig b/drivers/media/dvb/ttpci/Kconfig
index 772990415f99..68eb4493f991 100644
--- a/drivers/media/dvb/ttpci/Kconfig
+++ b/drivers/media/dvb/ttpci/Kconfig
@@ -28,25 +28,12 @@ config DVB_AV7110
28 download/extract it, and then copy it to /usr/lib/hotplug/firmware 28 download/extract it, and then copy it to /usr/lib/hotplug/firmware
29 or /lib/firmware (depending on configuration of firmware hotplug). 29 or /lib/firmware (depending on configuration of firmware hotplug).
30 30
31 Say Y if you own such a card and want to use it. 31 Alternatively, you can download the file and use the kernel's
32 32 EXTRA_FIRMWARE configuration option to build it into your
33config DVB_AV7110_FIRMWARE 33 kernel image by adding the filename to the EXTRA_FIRMWARE
34 bool "Compile AV7110 firmware into the driver" 34 configuration option string.
35 depends on DVB_AV7110 && !STANDALONE
36 default y if DVB_AV7110=y
37 help
38 The AV7110 firmware is normally loaded by the firmware hotplug manager.
39 If you want to compile the firmware into the driver you need to say
40 Y here and provide the correct path of the firmware. You need this
41 option if you want to compile the whole driver statically into the
42 kernel.
43 35
44 All other people say N. 36 Say Y if you own such a card and want to use it.
45
46config DVB_AV7110_FIRMWARE_FILE
47 string "Full pathname of av7110 firmware file"
48 depends on DVB_AV7110_FIRMWARE
49 default "/usr/lib/hotplug/firmware/dvb-ttpci-01.fw"
50 37
51config DVB_AV7110_OSD 38config DVB_AV7110_OSD
52 bool "AV7110 OSD support" 39 bool "AV7110 OSD support"
diff --git a/drivers/media/dvb/ttpci/Makefile b/drivers/media/dvb/ttpci/Makefile
index 71451237294c..8a4d5bb20a5b 100644
--- a/drivers/media/dvb/ttpci/Makefile
+++ b/drivers/media/dvb/ttpci/Makefile
@@ -19,12 +19,3 @@ obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o
19 19
20EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ 20EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
21EXTRA_CFLAGS += -Idrivers/media/common/tuners 21EXTRA_CFLAGS += -Idrivers/media/common/tuners
22
23hostprogs-y := fdump
24
25ifeq ($(CONFIG_DVB_AV7110_FIRMWARE),y)
26$(obj)/av7110.o: $(obj)/av7110_firm.h
27
28$(obj)/av7110_firm.h: $(obj)/fdump
29 $(obj)/fdump $(CONFIG_DVB_AV7110_FIRMWARE_FILE) dvb_ttpci_fw $@
30endif
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c
index 4624cee93e74..d1d959ed37b7 100644
--- a/drivers/media/dvb/ttpci/av7110.c
+++ b/drivers/media/dvb/ttpci/av7110.c
@@ -1518,20 +1518,6 @@ static int check_firmware(struct av7110* av7110)
1518 return 0; 1518 return 0;
1519} 1519}
1520 1520
1521#ifdef CONFIG_DVB_AV7110_FIRMWARE_FILE
1522#include "av7110_firm.h"
1523static void put_firmware(struct av7110* av7110)
1524{
1525 av7110->bin_fw = NULL;
1526}
1527
1528static inline int get_firmware(struct av7110* av7110)
1529{
1530 av7110->bin_fw = dvb_ttpci_fw;
1531 av7110->size_fw = sizeof(dvb_ttpci_fw);
1532 return check_firmware(av7110);
1533}
1534#else
1535static void put_firmware(struct av7110* av7110) 1521static void put_firmware(struct av7110* av7110)
1536{ 1522{
1537 vfree(av7110->bin_fw); 1523 vfree(av7110->bin_fw);
@@ -1580,8 +1566,6 @@ static int get_firmware(struct av7110* av7110)
1580 release_firmware(fw); 1566 release_firmware(fw);
1581 return ret; 1567 return ret;
1582} 1568}
1583#endif
1584
1585 1569
1586static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1570static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1587{ 1571{
diff --git a/drivers/media/dvb/ttpci/av7110_hw.c b/drivers/media/dvb/ttpci/av7110_hw.c
index 3a3f5279e927..5e3f88911a1d 100644
--- a/drivers/media/dvb/ttpci/av7110_hw.c
+++ b/drivers/media/dvb/ttpci/av7110_hw.c
@@ -198,29 +198,10 @@ static int load_dram(struct av7110 *av7110, u32 *data, int len)
198 198
199/* we cannot write av7110 DRAM directly, so load a bootloader into 199/* we cannot write av7110 DRAM directly, so load a bootloader into
200 * the DPRAM which implements a simple boot protocol */ 200 * the DPRAM which implements a simple boot protocol */
201static u8 bootcode[] = {
202 0xea, 0x00, 0x00, 0x0e, 0xe1, 0xb0, 0xf0, 0x0e, 0xe2, 0x5e, 0xf0, 0x04,
203 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x08, 0xe2, 0x5e, 0xf0, 0x04,
204 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, 0x2c, 0x00, 0x00, 0x24,
205 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x34,
206 0x00, 0x00, 0x00, 0x00, 0xa5, 0xa5, 0x5a, 0x5a, 0x00, 0x1f, 0x15, 0x55,
207 0x00, 0x00, 0x00, 0x09, 0xe5, 0x9f, 0xd0, 0x7c, 0xe5, 0x9f, 0x40, 0x74,
208 0xe3, 0xa0, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x04,
209 0xe5, 0x9f, 0x10, 0x70, 0xe5, 0x9f, 0x20, 0x70, 0xe5, 0x9f, 0x30, 0x64,
210 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe1, 0x51, 0x00, 0x02,
211 0xda, 0xff, 0xff, 0xfb, 0xe5, 0x9f, 0xf0, 0x50, 0xe1, 0xd4, 0x10, 0xb0,
212 0xe3, 0x51, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xfc, 0xe1, 0xa0, 0x10, 0x0d,
213 0xe5, 0x94, 0x30, 0x04, 0xe1, 0xd4, 0x20, 0xb2, 0xe2, 0x82, 0x20, 0x3f,
214 0xe1, 0xb0, 0x23, 0x22, 0x03, 0xa0, 0x00, 0x02, 0xe1, 0xc4, 0x00, 0xb0,
215 0x0a, 0xff, 0xff, 0xf4, 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0,
216 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe2, 0x52, 0x20, 0x01,
217 0x1a, 0xff, 0xff, 0xf9, 0xe2, 0x2d, 0xdb, 0x05, 0xea, 0xff, 0xff, 0xec,
218 0x2c, 0x00, 0x03, 0xf8, 0x2c, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x08, 0x00,
219 0x2c, 0x00, 0x00, 0x74, 0x2c, 0x00, 0x00, 0xc0
220};
221
222int av7110_bootarm(struct av7110 *av7110) 201int av7110_bootarm(struct av7110 *av7110)
223{ 202{
203 const struct firmware *fw;
204 const char *fw_name = "av7110/bootcode.bin";
224 struct saa7146_dev *dev = av7110->dev; 205 struct saa7146_dev *dev = av7110->dev;
225 u32 ret; 206 u32 ret;
226 int i; 207 int i;
@@ -261,7 +242,15 @@ int av7110_bootarm(struct av7110 *av7110)
261 //saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT); 242 //saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT);
262 //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT); 243 //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
263 244
264 mwdebi(av7110, DEBISWAB, DPRAM_BASE, bootcode, sizeof(bootcode)); 245 ret = request_firmware(&fw, fw_name, &dev->pci->dev);
246 if (ret) {
247 printk(KERN_ERR "dvb-ttpci: Failed to load firmware \"%s\"\n",
248 fw_name);
249 return ret;
250 }
251
252 mwdebi(av7110, DEBISWAB, DPRAM_BASE, fw->data, fw->size);
253 release_firmware(fw);
265 iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); 254 iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
266 255
267 if (saa7146_wait_for_debi_done(av7110->dev, 1)) { 256 if (saa7146_wait_for_debi_done(av7110->dev, 1)) {
@@ -302,7 +291,7 @@ int av7110_bootarm(struct av7110 *av7110)
302 av7110->arm_ready = 1; 291 av7110->arm_ready = 1;
303 return 0; 292 return 0;
304} 293}
305 294MODULE_FIRMWARE("av7110/bootcode.bin");
306 295
307/**************************************************************************** 296/****************************************************************************
308 * DEBI command polling 297 * DEBI command polling
diff --git a/drivers/media/dvb/ttpci/av7110_hw.h b/drivers/media/dvb/ttpci/av7110_hw.h
index ca99e5c1fc8a..1634aba5cb84 100644
--- a/drivers/media/dvb/ttpci/av7110_hw.h
+++ b/drivers/media/dvb/ttpci/av7110_hw.h
@@ -390,7 +390,8 @@ static inline void iwdebi(struct av7110 *av7110, u32 config, int addr, u32 val,
390} 390}
391 391
392/* buffer writes */ 392/* buffer writes */
393static inline void mwdebi(struct av7110 *av7110, u32 config, int addr, u8 *val, int count) 393static inline void mwdebi(struct av7110 *av7110, u32 config, int addr,
394 const u8 *val, int count)
394{ 395{
395 memcpy(av7110->debi_virt, val, count); 396 memcpy(av7110->debi_virt, val, count);
396 av7110_debiwrite(av7110, config, addr, 0, count); 397 av7110_debiwrite(av7110, config, addr, 0, count);
diff --git a/drivers/media/dvb/ttpci/fdump.c b/drivers/media/dvb/ttpci/fdump.c
deleted file mode 100644
index c90001d35e7d..000000000000
--- a/drivers/media/dvb/ttpci/fdump.c
+++ /dev/null
@@ -1,44 +0,0 @@
1#include <stdio.h>
2#include <sys/types.h>
3#include <sys/stat.h>
4#include <fcntl.h>
5#include <unistd.h>
6
7int main(int argc, char **argv)
8{
9 unsigned char buf[8];
10 unsigned int i, count, bytes = 0;
11 FILE *fd_in, *fd_out;
12
13 if (argc != 4) {
14 fprintf(stderr, "\n\tusage: %s <ucode.bin> <array_name> <output_name>\n\n", argv[0]);
15 return -1;
16 }
17
18 fd_in = fopen(argv[1], "rb");
19 if (fd_in == NULL) {
20 fprintf(stderr, "firmware file '%s' not found\n", argv[1]);
21 return -1;
22 }
23
24 fd_out = fopen(argv[3], "w+");
25 if (fd_out == NULL) {
26 fprintf(stderr, "cannot create output file '%s'\n", argv[3]);
27 return -1;
28 }
29
30 fprintf(fd_out, "\n#include <asm/types.h>\n\nu8 %s [] = {", argv[2]);
31
32 while ((count = fread(buf, 1, 8, fd_in)) > 0) {
33 fprintf(fd_out, "\n\t");
34 for (i = 0; i < count; i++, bytes++)
35 fprintf(fd_out, "0x%02x, ", buf[i]);
36 }
37
38 fprintf(fd_out, "\n};\n\n");
39
40 fclose(fd_in);
41 fclose(fd_out);
42
43 return 0;
44}
diff --git a/drivers/media/radio/radio-si470x.c b/drivers/media/radio/radio-si470x.c
index 92c297796a9f..bd945d04dc90 100644
--- a/drivers/media/radio/radio-si470x.c
+++ b/drivers/media/radio/radio-si470x.c
@@ -1200,7 +1200,7 @@ static int si470x_fops_release(struct file *file)
1200 video_unregister_device(radio->videodev); 1200 video_unregister_device(radio->videodev);
1201 kfree(radio->buffer); 1201 kfree(radio->buffer);
1202 kfree(radio); 1202 kfree(radio);
1203 goto unlock; 1203 goto done;
1204 } 1204 }
1205 1205
1206 /* stop rds reception */ 1206 /* stop rds reception */
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index d9d974a8f52a..add3395d3248 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1461,7 +1461,6 @@ static int pvr2_upload_firmware1(struct pvr2_hdw *hdw)
1461 return ret; 1461 return ret;
1462 } 1462 }
1463 1463
1464 usb_settoggle(hdw->usb_dev, 0 & 0xf, !(0 & USB_DIR_IN), 0);
1465 usb_clear_halt(hdw->usb_dev, usb_sndbulkpipe(hdw->usb_dev, 0 & 0x7f)); 1464 usb_clear_halt(hdw->usb_dev, usb_sndbulkpipe(hdw->usb_dev, 0 & 0x7f));
1466 1465
1467 pipe = usb_sndctrlpipe(hdw->usb_dev, 0); 1466 pipe = usb_sndctrlpipe(hdw->usb_dev, 0);
diff --git a/drivers/media/video/pwc/pwc-ctrl.c b/drivers/media/video/pwc/pwc-ctrl.c
index f9fbe02e0f69..50b415e07eda 100644
--- a/drivers/media/video/pwc/pwc-ctrl.c
+++ b/drivers/media/video/pwc/pwc-ctrl.c
@@ -159,35 +159,67 @@ static void pwc_set_image_buffer_size(struct pwc_device *pdev);
159 159
160/****************************************************************************/ 160/****************************************************************************/
161 161
162static int _send_control_msg(struct pwc_device *pdev,
163 u8 request, u16 value, int index, void *buf, int buflen, int timeout)
164{
165 int rc;
166 void *kbuf = NULL;
167
168 if (buflen) {
169 kbuf = kmalloc(buflen, GFP_KERNEL); /* not allowed on stack */
170 if (kbuf == NULL)
171 return -ENOMEM;
172 memcpy(kbuf, buf, buflen);
173 }
162 174
163#define SendControlMsg(request, value, buflen) \ 175 rc = usb_control_msg(pdev->udev, usb_sndctrlpipe(pdev->udev, 0),
164 usb_control_msg(pdev->udev, usb_sndctrlpipe(pdev->udev, 0), \ 176 request,
165 request, \ 177 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
166 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, \ 178 value,
167 value, \ 179 index,
168 pdev->vcinterface, \ 180 kbuf, buflen, timeout);
169 &buf, buflen, 500)
170 181
171#define RecvControlMsg(request, value, buflen) \ 182 kfree(kbuf);
172 usb_control_msg(pdev->udev, usb_rcvctrlpipe(pdev->udev, 0), \ 183 return rc;
173 request, \ 184}
174 USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, \
175 value, \
176 pdev->vcinterface, \
177 &buf, buflen, 500)
178 185
186static int recv_control_msg(struct pwc_device *pdev,
187 u8 request, u16 value, void *buf, int buflen)
188{
189 int rc;
190 void *kbuf = kmalloc(buflen, GFP_KERNEL); /* not allowed on stack */
191
192 if (kbuf == NULL)
193 return -ENOMEM;
194
195 rc = usb_control_msg(pdev->udev, usb_rcvctrlpipe(pdev->udev, 0),
196 request,
197 USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
198 value,
199 pdev->vcinterface,
200 kbuf, buflen, 500);
201 memcpy(buf, kbuf, buflen);
202 kfree(kbuf);
203 return rc;
204}
179 205
180static int send_video_command(struct usb_device *udev, int index, void *buf, int buflen) 206static inline int send_video_command(struct pwc_device *pdev,
207 int index, void *buf, int buflen)
181{ 208{
182 return usb_control_msg(udev, 209 return _send_control_msg(pdev,
183 usb_sndctrlpipe(udev, 0),
184 SET_EP_STREAM_CTL, 210 SET_EP_STREAM_CTL,
185 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
186 VIDEO_OUTPUT_CONTROL_FORMATTER, 211 VIDEO_OUTPUT_CONTROL_FORMATTER,
187 index, 212 index,
188 buf, buflen, 1000); 213 buf, buflen, 1000);
189} 214}
190 215
216static inline int send_control_msg(struct pwc_device *pdev,
217 u8 request, u16 value, void *buf, int buflen)
218{
219 return _send_control_msg(pdev,
220 request, value, pdev->vcinterface, buf, buflen, 500);
221}
222
191 223
192 224
193static int set_video_mode_Nala(struct pwc_device *pdev, int size, int frames) 225static int set_video_mode_Nala(struct pwc_device *pdev, int size, int frames)
@@ -224,7 +256,7 @@ static int set_video_mode_Nala(struct pwc_device *pdev, int size, int frames)
224 return -EINVAL; 256 return -EINVAL;
225 257
226 memcpy(buf, pEntry->mode, 3); 258 memcpy(buf, pEntry->mode, 3);
227 ret = send_video_command(pdev->udev, pdev->vendpoint, buf, 3); 259 ret = send_video_command(pdev, pdev->vendpoint, buf, 3);
228 if (ret < 0) { 260 if (ret < 0) {
229 PWC_DEBUG_MODULE("Failed to send video command... %d\n", ret); 261 PWC_DEBUG_MODULE("Failed to send video command... %d\n", ret);
230 return ret; 262 return ret;
@@ -285,7 +317,7 @@ static int set_video_mode_Timon(struct pwc_device *pdev, int size, int frames, i
285 memcpy(buf, pChoose->mode, 13); 317 memcpy(buf, pChoose->mode, 13);
286 if (snapshot) 318 if (snapshot)
287 buf[0] |= 0x80; 319 buf[0] |= 0x80;
288 ret = send_video_command(pdev->udev, pdev->vendpoint, buf, 13); 320 ret = send_video_command(pdev, pdev->vendpoint, buf, 13);
289 if (ret < 0) 321 if (ret < 0)
290 return ret; 322 return ret;
291 323
@@ -358,7 +390,7 @@ static int set_video_mode_Kiara(struct pwc_device *pdev, int size, int frames, i
358 buf[0] |= 0x80; 390 buf[0] |= 0x80;
359 391
360 /* Firmware bug: video endpoint is 5, but commands are sent to endpoint 4 */ 392 /* Firmware bug: video endpoint is 5, but commands are sent to endpoint 4 */
361 ret = send_video_command(pdev->udev, 4 /* pdev->vendpoint */, buf, 12); 393 ret = send_video_command(pdev, 4 /* pdev->vendpoint */, buf, 12);
362 if (ret < 0) 394 if (ret < 0)
363 return ret; 395 return ret;
364 396
@@ -530,7 +562,8 @@ int pwc_get_brightness(struct pwc_device *pdev)
530 char buf; 562 char buf;
531 int ret; 563 int ret;
532 564
533 ret = RecvControlMsg(GET_LUM_CTL, BRIGHTNESS_FORMATTER, 1); 565 ret = recv_control_msg(pdev,
566 GET_LUM_CTL, BRIGHTNESS_FORMATTER, &buf, sizeof(buf));
534 if (ret < 0) 567 if (ret < 0)
535 return ret; 568 return ret;
536 return buf; 569 return buf;
@@ -545,7 +578,8 @@ int pwc_set_brightness(struct pwc_device *pdev, int value)
545 if (value > 0xffff) 578 if (value > 0xffff)
546 value = 0xffff; 579 value = 0xffff;
547 buf = (value >> 9) & 0x7f; 580 buf = (value >> 9) & 0x7f;
548 return SendControlMsg(SET_LUM_CTL, BRIGHTNESS_FORMATTER, 1); 581 return send_control_msg(pdev,
582 SET_LUM_CTL, BRIGHTNESS_FORMATTER, &buf, sizeof(buf));
549} 583}
550 584
551/* CONTRAST */ 585/* CONTRAST */
@@ -555,7 +589,8 @@ int pwc_get_contrast(struct pwc_device *pdev)
555 char buf; 589 char buf;
556 int ret; 590 int ret;
557 591
558 ret = RecvControlMsg(GET_LUM_CTL, CONTRAST_FORMATTER, 1); 592 ret = recv_control_msg(pdev,
593 GET_LUM_CTL, CONTRAST_FORMATTER, &buf, sizeof(buf));
559 if (ret < 0) 594 if (ret < 0)
560 return ret; 595 return ret;
561 return buf; 596 return buf;
@@ -570,7 +605,8 @@ int pwc_set_contrast(struct pwc_device *pdev, int value)
570 if (value > 0xffff) 605 if (value > 0xffff)
571 value = 0xffff; 606 value = 0xffff;
572 buf = (value >> 10) & 0x3f; 607 buf = (value >> 10) & 0x3f;
573 return SendControlMsg(SET_LUM_CTL, CONTRAST_FORMATTER, 1); 608 return send_control_msg(pdev,
609 SET_LUM_CTL, CONTRAST_FORMATTER, &buf, sizeof(buf));
574} 610}
575 611
576/* GAMMA */ 612/* GAMMA */
@@ -580,7 +616,8 @@ int pwc_get_gamma(struct pwc_device *pdev)
580 char buf; 616 char buf;
581 int ret; 617 int ret;
582 618
583 ret = RecvControlMsg(GET_LUM_CTL, GAMMA_FORMATTER, 1); 619 ret = recv_control_msg(pdev,
620 GET_LUM_CTL, GAMMA_FORMATTER, &buf, sizeof(buf));
584 if (ret < 0) 621 if (ret < 0)
585 return ret; 622 return ret;
586 return buf; 623 return buf;
@@ -595,7 +632,8 @@ int pwc_set_gamma(struct pwc_device *pdev, int value)
595 if (value > 0xffff) 632 if (value > 0xffff)
596 value = 0xffff; 633 value = 0xffff;
597 buf = (value >> 11) & 0x1f; 634 buf = (value >> 11) & 0x1f;
598 return SendControlMsg(SET_LUM_CTL, GAMMA_FORMATTER, 1); 635 return send_control_msg(pdev,
636 SET_LUM_CTL, GAMMA_FORMATTER, &buf, sizeof(buf));
599} 637}
600 638
601 639
@@ -613,7 +651,8 @@ int pwc_get_saturation(struct pwc_device *pdev, int *value)
613 saturation_register = SATURATION_MODE_FORMATTER2; 651 saturation_register = SATURATION_MODE_FORMATTER2;
614 else 652 else
615 saturation_register = SATURATION_MODE_FORMATTER1; 653 saturation_register = SATURATION_MODE_FORMATTER1;
616 ret = RecvControlMsg(GET_CHROM_CTL, saturation_register, 1); 654 ret = recv_control_msg(pdev,
655 GET_CHROM_CTL, saturation_register, &buf, sizeof(buf));
617 if (ret < 0) 656 if (ret < 0)
618 return ret; 657 return ret;
619 *value = (signed)buf; 658 *value = (signed)buf;
@@ -636,7 +675,8 @@ int pwc_set_saturation(struct pwc_device *pdev, int value)
636 saturation_register = SATURATION_MODE_FORMATTER2; 675 saturation_register = SATURATION_MODE_FORMATTER2;
637 else 676 else
638 saturation_register = SATURATION_MODE_FORMATTER1; 677 saturation_register = SATURATION_MODE_FORMATTER1;
639 return SendControlMsg(SET_CHROM_CTL, saturation_register, 1); 678 return send_control_msg(pdev,
679 SET_CHROM_CTL, saturation_register, &buf, sizeof(buf));
640} 680}
641 681
642/* AGC */ 682/* AGC */
@@ -651,7 +691,8 @@ int pwc_set_agc(struct pwc_device *pdev, int mode, int value)
651 else 691 else
652 buf = 0xff; /* fixed */ 692 buf = 0xff; /* fixed */
653 693
654 ret = SendControlMsg(SET_LUM_CTL, AGC_MODE_FORMATTER, 1); 694 ret = send_control_msg(pdev,
695 SET_LUM_CTL, AGC_MODE_FORMATTER, &buf, sizeof(buf));
655 696
656 if (!mode && ret >= 0) { 697 if (!mode && ret >= 0) {
657 if (value < 0) 698 if (value < 0)
@@ -659,7 +700,8 @@ int pwc_set_agc(struct pwc_device *pdev, int mode, int value)
659 if (value > 0xffff) 700 if (value > 0xffff)
660 value = 0xffff; 701 value = 0xffff;
661 buf = (value >> 10) & 0x3F; 702 buf = (value >> 10) & 0x3F;
662 ret = SendControlMsg(SET_LUM_CTL, PRESET_AGC_FORMATTER, 1); 703 ret = send_control_msg(pdev,
704 SET_LUM_CTL, PRESET_AGC_FORMATTER, &buf, sizeof(buf));
663 } 705 }
664 if (ret < 0) 706 if (ret < 0)
665 return ret; 707 return ret;
@@ -671,12 +713,14 @@ int pwc_get_agc(struct pwc_device *pdev, int *value)
671 unsigned char buf; 713 unsigned char buf;
672 int ret; 714 int ret;
673 715
674 ret = RecvControlMsg(GET_LUM_CTL, AGC_MODE_FORMATTER, 1); 716 ret = recv_control_msg(pdev,
717 GET_LUM_CTL, AGC_MODE_FORMATTER, &buf, sizeof(buf));
675 if (ret < 0) 718 if (ret < 0)
676 return ret; 719 return ret;
677 720
678 if (buf != 0) { /* fixed */ 721 if (buf != 0) { /* fixed */
679 ret = RecvControlMsg(GET_LUM_CTL, PRESET_AGC_FORMATTER, 1); 722 ret = recv_control_msg(pdev,
723 GET_LUM_CTL, PRESET_AGC_FORMATTER, &buf, sizeof(buf));
680 if (ret < 0) 724 if (ret < 0)
681 return ret; 725 return ret;
682 if (buf > 0x3F) 726 if (buf > 0x3F)
@@ -684,7 +728,8 @@ int pwc_get_agc(struct pwc_device *pdev, int *value)
684 *value = (buf << 10); 728 *value = (buf << 10);
685 } 729 }
686 else { /* auto */ 730 else { /* auto */
687 ret = RecvControlMsg(GET_STATUS_CTL, READ_AGC_FORMATTER, 1); 731 ret = recv_control_msg(pdev,
732 GET_STATUS_CTL, READ_AGC_FORMATTER, &buf, sizeof(buf));
688 if (ret < 0) 733 if (ret < 0)
689 return ret; 734 return ret;
690 /* Gah... this value ranges from 0x00 ... 0x9F */ 735 /* Gah... this value ranges from 0x00 ... 0x9F */
@@ -707,7 +752,8 @@ int pwc_set_shutter_speed(struct pwc_device *pdev, int mode, int value)
707 else 752 else
708 buf[0] = 0xff; /* fixed */ 753 buf[0] = 0xff; /* fixed */
709 754
710 ret = SendControlMsg(SET_LUM_CTL, SHUTTER_MODE_FORMATTER, 1); 755 ret = send_control_msg(pdev,
756 SET_LUM_CTL, SHUTTER_MODE_FORMATTER, &buf, sizeof(buf));
711 757
712 if (!mode && ret >= 0) { 758 if (!mode && ret >= 0) {
713 if (value < 0) 759 if (value < 0)
@@ -726,7 +772,9 @@ int pwc_set_shutter_speed(struct pwc_device *pdev, int mode, int value)
726 buf[0] = value >> 8; 772 buf[0] = value >> 8;
727 } 773 }
728 774
729 ret = SendControlMsg(SET_LUM_CTL, PRESET_SHUTTER_FORMATTER, 2); 775 ret = send_control_msg(pdev,
776 SET_LUM_CTL, PRESET_SHUTTER_FORMATTER,
777 &buf, sizeof(buf));
730 } 778 }
731 return ret; 779 return ret;
732} 780}
@@ -737,7 +785,8 @@ int pwc_get_shutter_speed(struct pwc_device *pdev, int *value)
737 unsigned char buf[2]; 785 unsigned char buf[2];
738 int ret; 786 int ret;
739 787
740 ret = RecvControlMsg(GET_STATUS_CTL, READ_SHUTTER_FORMATTER, 2); 788 ret = recv_control_msg(pdev,
789 GET_STATUS_CTL, READ_SHUTTER_FORMATTER, &buf, sizeof(buf));
741 if (ret < 0) 790 if (ret < 0)
742 return ret; 791 return ret;
743 *value = buf[0] + (buf[1] << 8); 792 *value = buf[0] + (buf[1] << 8);
@@ -764,7 +813,9 @@ int pwc_camera_power(struct pwc_device *pdev, int power)
764 buf = 0x00; /* active */ 813 buf = 0x00; /* active */
765 else 814 else
766 buf = 0xFF; /* power save */ 815 buf = 0xFF; /* power save */
767 return SendControlMsg(SET_STATUS_CTL, SET_POWER_SAVE_MODE_FORMATTER, 1); 816 return send_control_msg(pdev,
817 SET_STATUS_CTL, SET_POWER_SAVE_MODE_FORMATTER,
818 &buf, sizeof(buf));
768} 819}
769 820
770 821
@@ -773,20 +824,20 @@ int pwc_camera_power(struct pwc_device *pdev, int power)
773 824
774int pwc_restore_user(struct pwc_device *pdev) 825int pwc_restore_user(struct pwc_device *pdev)
775{ 826{
776 char buf; /* dummy */ 827 return send_control_msg(pdev,
777 return SendControlMsg(SET_STATUS_CTL, RESTORE_USER_DEFAULTS_FORMATTER, 0); 828 SET_STATUS_CTL, RESTORE_USER_DEFAULTS_FORMATTER, NULL, 0);
778} 829}
779 830
780int pwc_save_user(struct pwc_device *pdev) 831int pwc_save_user(struct pwc_device *pdev)
781{ 832{
782 char buf; /* dummy */ 833 return send_control_msg(pdev,
783 return SendControlMsg(SET_STATUS_CTL, SAVE_USER_DEFAULTS_FORMATTER, 0); 834 SET_STATUS_CTL, SAVE_USER_DEFAULTS_FORMATTER, NULL, 0);
784} 835}
785 836
786int pwc_restore_factory(struct pwc_device *pdev) 837int pwc_restore_factory(struct pwc_device *pdev)
787{ 838{
788 char buf; /* dummy */ 839 return send_control_msg(pdev,
789 return SendControlMsg(SET_STATUS_CTL, RESTORE_FACTORY_DEFAULTS_FORMATTER, 0); 840 SET_STATUS_CTL, RESTORE_FACTORY_DEFAULTS_FORMATTER, NULL, 0);
790} 841}
791 842
792 /* ************************************************* */ 843 /* ************************************************* */
@@ -814,7 +865,8 @@ int pwc_set_awb(struct pwc_device *pdev, int mode)
814 865
815 buf = mode & 0x07; /* just the lowest three bits */ 866 buf = mode & 0x07; /* just the lowest three bits */
816 867
817 ret = SendControlMsg(SET_CHROM_CTL, WB_MODE_FORMATTER, 1); 868 ret = send_control_msg(pdev,
869 SET_CHROM_CTL, WB_MODE_FORMATTER, &buf, sizeof(buf));
818 870
819 if (ret < 0) 871 if (ret < 0)
820 return ret; 872 return ret;
@@ -826,7 +878,8 @@ int pwc_get_awb(struct pwc_device *pdev)
826 unsigned char buf; 878 unsigned char buf;
827 int ret; 879 int ret;
828 880
829 ret = RecvControlMsg(GET_CHROM_CTL, WB_MODE_FORMATTER, 1); 881 ret = recv_control_msg(pdev,
882 GET_CHROM_CTL, WB_MODE_FORMATTER, &buf, sizeof(buf));
830 883
831 if (ret < 0) 884 if (ret < 0)
832 return ret; 885 return ret;
@@ -843,7 +896,9 @@ int pwc_set_red_gain(struct pwc_device *pdev, int value)
843 value = 0xffff; 896 value = 0xffff;
844 /* only the msb is considered */ 897 /* only the msb is considered */
845 buf = value >> 8; 898 buf = value >> 8;
846 return SendControlMsg(SET_CHROM_CTL, PRESET_MANUAL_RED_GAIN_FORMATTER, 1); 899 return send_control_msg(pdev,
900 SET_CHROM_CTL, PRESET_MANUAL_RED_GAIN_FORMATTER,
901 &buf, sizeof(buf));
847} 902}
848 903
849int pwc_get_red_gain(struct pwc_device *pdev, int *value) 904int pwc_get_red_gain(struct pwc_device *pdev, int *value)
@@ -851,7 +906,9 @@ int pwc_get_red_gain(struct pwc_device *pdev, int *value)
851 unsigned char buf; 906 unsigned char buf;
852 int ret; 907 int ret;
853 908
854 ret = RecvControlMsg(GET_CHROM_CTL, PRESET_MANUAL_RED_GAIN_FORMATTER, 1); 909 ret = recv_control_msg(pdev,
910 GET_CHROM_CTL, PRESET_MANUAL_RED_GAIN_FORMATTER,
911 &buf, sizeof(buf));
855 if (ret < 0) 912 if (ret < 0)
856 return ret; 913 return ret;
857 *value = buf << 8; 914 *value = buf << 8;
@@ -869,7 +926,9 @@ int pwc_set_blue_gain(struct pwc_device *pdev, int value)
869 value = 0xffff; 926 value = 0xffff;
870 /* only the msb is considered */ 927 /* only the msb is considered */
871 buf = value >> 8; 928 buf = value >> 8;
872 return SendControlMsg(SET_CHROM_CTL, PRESET_MANUAL_BLUE_GAIN_FORMATTER, 1); 929 return send_control_msg(pdev,
930 SET_CHROM_CTL, PRESET_MANUAL_BLUE_GAIN_FORMATTER,
931 &buf, sizeof(buf));
873} 932}
874 933
875int pwc_get_blue_gain(struct pwc_device *pdev, int *value) 934int pwc_get_blue_gain(struct pwc_device *pdev, int *value)
@@ -877,7 +936,9 @@ int pwc_get_blue_gain(struct pwc_device *pdev, int *value)
877 unsigned char buf; 936 unsigned char buf;
878 int ret; 937 int ret;
879 938
880 ret = RecvControlMsg(GET_CHROM_CTL, PRESET_MANUAL_BLUE_GAIN_FORMATTER, 1); 939 ret = recv_control_msg(pdev,
940 GET_CHROM_CTL, PRESET_MANUAL_BLUE_GAIN_FORMATTER,
941 &buf, sizeof(buf));
881 if (ret < 0) 942 if (ret < 0)
882 return ret; 943 return ret;
883 *value = buf << 8; 944 *value = buf << 8;
@@ -894,7 +955,8 @@ static int pwc_read_red_gain(struct pwc_device *pdev, int *value)
894 unsigned char buf; 955 unsigned char buf;
895 int ret; 956 int ret;
896 957
897 ret = RecvControlMsg(GET_STATUS_CTL, READ_RED_GAIN_FORMATTER, 1); 958 ret = recv_control_msg(pdev,
959 GET_STATUS_CTL, READ_RED_GAIN_FORMATTER, &buf, sizeof(buf));
898 if (ret < 0) 960 if (ret < 0)
899 return ret; 961 return ret;
900 *value = buf << 8; 962 *value = buf << 8;
@@ -906,7 +968,8 @@ static int pwc_read_blue_gain(struct pwc_device *pdev, int *value)
906 unsigned char buf; 968 unsigned char buf;
907 int ret; 969 int ret;
908 970
909 ret = RecvControlMsg(GET_STATUS_CTL, READ_BLUE_GAIN_FORMATTER, 1); 971 ret = recv_control_msg(pdev,
972 GET_STATUS_CTL, READ_BLUE_GAIN_FORMATTER, &buf, sizeof(buf));
910 if (ret < 0) 973 if (ret < 0)
911 return ret; 974 return ret;
912 *value = buf << 8; 975 *value = buf << 8;
@@ -920,7 +983,8 @@ static int pwc_set_wb_speed(struct pwc_device *pdev, int speed)
920 983
921 /* useful range is 0x01..0x20 */ 984 /* useful range is 0x01..0x20 */
922 buf = speed / 0x7f0; 985 buf = speed / 0x7f0;
923 return SendControlMsg(SET_CHROM_CTL, AWB_CONTROL_SPEED_FORMATTER, 1); 986 return send_control_msg(pdev,
987 SET_CHROM_CTL, AWB_CONTROL_SPEED_FORMATTER, &buf, sizeof(buf));
924} 988}
925 989
926static int pwc_get_wb_speed(struct pwc_device *pdev, int *value) 990static int pwc_get_wb_speed(struct pwc_device *pdev, int *value)
@@ -928,7 +992,8 @@ static int pwc_get_wb_speed(struct pwc_device *pdev, int *value)
928 unsigned char buf; 992 unsigned char buf;
929 int ret; 993 int ret;
930 994
931 ret = RecvControlMsg(GET_CHROM_CTL, AWB_CONTROL_SPEED_FORMATTER, 1); 995 ret = recv_control_msg(pdev,
996 GET_CHROM_CTL, AWB_CONTROL_SPEED_FORMATTER, &buf, sizeof(buf));
932 if (ret < 0) 997 if (ret < 0)
933 return ret; 998 return ret;
934 *value = buf * 0x7f0; 999 *value = buf * 0x7f0;
@@ -942,7 +1007,8 @@ static int pwc_set_wb_delay(struct pwc_device *pdev, int delay)
942 1007
943 /* useful range is 0x01..0x3F */ 1008 /* useful range is 0x01..0x3F */
944 buf = (delay >> 10); 1009 buf = (delay >> 10);
945 return SendControlMsg(SET_CHROM_CTL, AWB_CONTROL_DELAY_FORMATTER, 1); 1010 return send_control_msg(pdev,
1011 SET_CHROM_CTL, AWB_CONTROL_DELAY_FORMATTER, &buf, sizeof(buf));
946} 1012}
947 1013
948static int pwc_get_wb_delay(struct pwc_device *pdev, int *value) 1014static int pwc_get_wb_delay(struct pwc_device *pdev, int *value)
@@ -950,7 +1016,8 @@ static int pwc_get_wb_delay(struct pwc_device *pdev, int *value)
950 unsigned char buf; 1016 unsigned char buf;
951 int ret; 1017 int ret;
952 1018
953 ret = RecvControlMsg(GET_CHROM_CTL, AWB_CONTROL_DELAY_FORMATTER, 1); 1019 ret = recv_control_msg(pdev,
1020 GET_CHROM_CTL, AWB_CONTROL_DELAY_FORMATTER, &buf, sizeof(buf));
954 if (ret < 0) 1021 if (ret < 0)
955 return ret; 1022 return ret;
956 *value = buf << 10; 1023 *value = buf << 10;
@@ -978,7 +1045,8 @@ int pwc_set_leds(struct pwc_device *pdev, int on_value, int off_value)
978 buf[0] = on_value; 1045 buf[0] = on_value;
979 buf[1] = off_value; 1046 buf[1] = off_value;
980 1047
981 return SendControlMsg(SET_STATUS_CTL, LED_FORMATTER, 2); 1048 return send_control_msg(pdev,
1049 SET_STATUS_CTL, LED_FORMATTER, &buf, sizeof(buf));
982} 1050}
983 1051
984static int pwc_get_leds(struct pwc_device *pdev, int *on_value, int *off_value) 1052static int pwc_get_leds(struct pwc_device *pdev, int *on_value, int *off_value)
@@ -992,7 +1060,8 @@ static int pwc_get_leds(struct pwc_device *pdev, int *on_value, int *off_value)
992 return 0; 1060 return 0;
993 } 1061 }
994 1062
995 ret = RecvControlMsg(GET_STATUS_CTL, LED_FORMATTER, 2); 1063 ret = recv_control_msg(pdev,
1064 GET_STATUS_CTL, LED_FORMATTER, &buf, sizeof(buf));
996 if (ret < 0) 1065 if (ret < 0)
997 return ret; 1066 return ret;
998 *on_value = buf[0] * 100; 1067 *on_value = buf[0] * 100;
@@ -1009,7 +1078,8 @@ int pwc_set_contour(struct pwc_device *pdev, int contour)
1009 buf = 0xff; /* auto contour on */ 1078 buf = 0xff; /* auto contour on */
1010 else 1079 else
1011 buf = 0x0; /* auto contour off */ 1080 buf = 0x0; /* auto contour off */
1012 ret = SendControlMsg(SET_LUM_CTL, AUTO_CONTOUR_FORMATTER, 1); 1081 ret = send_control_msg(pdev,
1082 SET_LUM_CTL, AUTO_CONTOUR_FORMATTER, &buf, sizeof(buf));
1013 if (ret < 0) 1083 if (ret < 0)
1014 return ret; 1084 return ret;
1015 1085
@@ -1019,7 +1089,8 @@ int pwc_set_contour(struct pwc_device *pdev, int contour)
1019 contour = 0xffff; 1089 contour = 0xffff;
1020 1090
1021 buf = (contour >> 10); /* contour preset is [0..3f] */ 1091 buf = (contour >> 10); /* contour preset is [0..3f] */
1022 ret = SendControlMsg(SET_LUM_CTL, PRESET_CONTOUR_FORMATTER, 1); 1092 ret = send_control_msg(pdev,
1093 SET_LUM_CTL, PRESET_CONTOUR_FORMATTER, &buf, sizeof(buf));
1023 if (ret < 0) 1094 if (ret < 0)
1024 return ret; 1095 return ret;
1025 return 0; 1096 return 0;
@@ -1030,13 +1101,16 @@ int pwc_get_contour(struct pwc_device *pdev, int *contour)
1030 unsigned char buf; 1101 unsigned char buf;
1031 int ret; 1102 int ret;
1032 1103
1033 ret = RecvControlMsg(GET_LUM_CTL, AUTO_CONTOUR_FORMATTER, 1); 1104 ret = recv_control_msg(pdev,
1105 GET_LUM_CTL, AUTO_CONTOUR_FORMATTER, &buf, sizeof(buf));
1034 if (ret < 0) 1106 if (ret < 0)
1035 return ret; 1107 return ret;
1036 1108
1037 if (buf == 0) { 1109 if (buf == 0) {
1038 /* auto mode off, query current preset value */ 1110 /* auto mode off, query current preset value */
1039 ret = RecvControlMsg(GET_LUM_CTL, PRESET_CONTOUR_FORMATTER, 1); 1111 ret = recv_control_msg(pdev,
1112 GET_LUM_CTL, PRESET_CONTOUR_FORMATTER,
1113 &buf, sizeof(buf));
1040 if (ret < 0) 1114 if (ret < 0)
1041 return ret; 1115 return ret;
1042 *contour = buf << 10; 1116 *contour = buf << 10;
@@ -1055,7 +1129,9 @@ int pwc_set_backlight(struct pwc_device *pdev, int backlight)
1055 buf = 0xff; 1129 buf = 0xff;
1056 else 1130 else
1057 buf = 0x0; 1131 buf = 0x0;
1058 return SendControlMsg(SET_LUM_CTL, BACK_LIGHT_COMPENSATION_FORMATTER, 1); 1132 return send_control_msg(pdev,
1133 SET_LUM_CTL, BACK_LIGHT_COMPENSATION_FORMATTER,
1134 &buf, sizeof(buf));
1059} 1135}
1060 1136
1061int pwc_get_backlight(struct pwc_device *pdev, int *backlight) 1137int pwc_get_backlight(struct pwc_device *pdev, int *backlight)
@@ -1063,7 +1139,9 @@ int pwc_get_backlight(struct pwc_device *pdev, int *backlight)
1063 int ret; 1139 int ret;
1064 unsigned char buf; 1140 unsigned char buf;
1065 1141
1066 ret = RecvControlMsg(GET_LUM_CTL, BACK_LIGHT_COMPENSATION_FORMATTER, 1); 1142 ret = recv_control_msg(pdev,
1143 GET_LUM_CTL, BACK_LIGHT_COMPENSATION_FORMATTER,
1144 &buf, sizeof(buf));
1067 if (ret < 0) 1145 if (ret < 0)
1068 return ret; 1146 return ret;
1069 *backlight = !!buf; 1147 *backlight = !!buf;
@@ -1078,7 +1156,8 @@ int pwc_set_colour_mode(struct pwc_device *pdev, int colour)
1078 buf = 0xff; 1156 buf = 0xff;
1079 else 1157 else
1080 buf = 0x0; 1158 buf = 0x0;
1081 return SendControlMsg(SET_CHROM_CTL, COLOUR_MODE_FORMATTER, 1); 1159 return send_control_msg(pdev,
1160 SET_CHROM_CTL, COLOUR_MODE_FORMATTER, &buf, sizeof(buf));
1082} 1161}
1083 1162
1084int pwc_get_colour_mode(struct pwc_device *pdev, int *colour) 1163int pwc_get_colour_mode(struct pwc_device *pdev, int *colour)
@@ -1086,7 +1165,8 @@ int pwc_get_colour_mode(struct pwc_device *pdev, int *colour)
1086 int ret; 1165 int ret;
1087 unsigned char buf; 1166 unsigned char buf;
1088 1167
1089 ret = RecvControlMsg(GET_CHROM_CTL, COLOUR_MODE_FORMATTER, 1); 1168 ret = recv_control_msg(pdev,
1169 GET_CHROM_CTL, COLOUR_MODE_FORMATTER, &buf, sizeof(buf));
1090 if (ret < 0) 1170 if (ret < 0)
1091 return ret; 1171 return ret;
1092 *colour = !!buf; 1172 *colour = !!buf;
@@ -1102,7 +1182,8 @@ int pwc_set_flicker(struct pwc_device *pdev, int flicker)
1102 buf = 0xff; 1182 buf = 0xff;
1103 else 1183 else
1104 buf = 0x0; 1184 buf = 0x0;
1105 return SendControlMsg(SET_LUM_CTL, FLICKERLESS_MODE_FORMATTER, 1); 1185 return send_control_msg(pdev,
1186 SET_LUM_CTL, FLICKERLESS_MODE_FORMATTER, &buf, sizeof(buf));
1106} 1187}
1107 1188
1108int pwc_get_flicker(struct pwc_device *pdev, int *flicker) 1189int pwc_get_flicker(struct pwc_device *pdev, int *flicker)
@@ -1110,7 +1191,8 @@ int pwc_get_flicker(struct pwc_device *pdev, int *flicker)
1110 int ret; 1191 int ret;
1111 unsigned char buf; 1192 unsigned char buf;
1112 1193
1113 ret = RecvControlMsg(GET_LUM_CTL, FLICKERLESS_MODE_FORMATTER, 1); 1194 ret = recv_control_msg(pdev,
1195 GET_LUM_CTL, FLICKERLESS_MODE_FORMATTER, &buf, sizeof(buf));
1114 if (ret < 0) 1196 if (ret < 0)
1115 return ret; 1197 return ret;
1116 *flicker = !!buf; 1198 *flicker = !!buf;
@@ -1126,7 +1208,9 @@ int pwc_set_dynamic_noise(struct pwc_device *pdev, int noise)
1126 if (noise > 3) 1208 if (noise > 3)
1127 noise = 3; 1209 noise = 3;
1128 buf = noise; 1210 buf = noise;
1129 return SendControlMsg(SET_LUM_CTL, DYNAMIC_NOISE_CONTROL_FORMATTER, 1); 1211 return send_control_msg(pdev,
1212 SET_LUM_CTL, DYNAMIC_NOISE_CONTROL_FORMATTER,
1213 &buf, sizeof(buf));
1130} 1214}
1131 1215
1132int pwc_get_dynamic_noise(struct pwc_device *pdev, int *noise) 1216int pwc_get_dynamic_noise(struct pwc_device *pdev, int *noise)
@@ -1134,7 +1218,9 @@ int pwc_get_dynamic_noise(struct pwc_device *pdev, int *noise)
1134 int ret; 1218 int ret;
1135 unsigned char buf; 1219 unsigned char buf;
1136 1220
1137 ret = RecvControlMsg(GET_LUM_CTL, DYNAMIC_NOISE_CONTROL_FORMATTER, 1); 1221 ret = recv_control_msg(pdev,
1222 GET_LUM_CTL, DYNAMIC_NOISE_CONTROL_FORMATTER,
1223 &buf, sizeof(buf));
1138 if (ret < 0) 1224 if (ret < 0)
1139 return ret; 1225 return ret;
1140 *noise = buf; 1226 *noise = buf;
@@ -1146,7 +1232,8 @@ static int _pwc_mpt_reset(struct pwc_device *pdev, int flags)
1146 unsigned char buf; 1232 unsigned char buf;
1147 1233
1148 buf = flags & 0x03; // only lower two bits are currently used 1234 buf = flags & 0x03; // only lower two bits are currently used
1149 return SendControlMsg(SET_MPT_CTL, PT_RESET_CONTROL_FORMATTER, 1); 1235 return send_control_msg(pdev,
1236 SET_MPT_CTL, PT_RESET_CONTROL_FORMATTER, &buf, sizeof(buf));
1150} 1237}
1151 1238
1152int pwc_mpt_reset(struct pwc_device *pdev, int flags) 1239int pwc_mpt_reset(struct pwc_device *pdev, int flags)
@@ -1175,7 +1262,8 @@ static int _pwc_mpt_set_angle(struct pwc_device *pdev, int pan, int tilt)
1175 buf[1] = (pan >> 8) & 0xFF; 1262 buf[1] = (pan >> 8) & 0xFF;
1176 buf[2] = tilt & 0xFF; 1263 buf[2] = tilt & 0xFF;
1177 buf[3] = (tilt >> 8) & 0xFF; 1264 buf[3] = (tilt >> 8) & 0xFF;
1178 return SendControlMsg(SET_MPT_CTL, PT_RELATIVE_CONTROL_FORMATTER, 4); 1265 return send_control_msg(pdev,
1266 SET_MPT_CTL, PT_RELATIVE_CONTROL_FORMATTER, &buf, sizeof(buf));
1179} 1267}
1180 1268
1181int pwc_mpt_set_angle(struct pwc_device *pdev, int pan, int tilt) 1269int pwc_mpt_set_angle(struct pwc_device *pdev, int pan, int tilt)
@@ -1211,7 +1299,8 @@ static int pwc_mpt_get_status(struct pwc_device *pdev, struct pwc_mpt_status *st
1211 int ret; 1299 int ret;
1212 unsigned char buf[5]; 1300 unsigned char buf[5];
1213 1301
1214 ret = RecvControlMsg(GET_MPT_CTL, PT_STATUS_FORMATTER, 5); 1302 ret = recv_control_msg(pdev,
1303 GET_MPT_CTL, PT_STATUS_FORMATTER, &buf, sizeof(buf));
1215 if (ret < 0) 1304 if (ret < 0)
1216 return ret; 1305 return ret;
1217 status->status = buf[0] & 0x7; // 3 bits are used for reporting 1306 status->status = buf[0] & 0x7; // 3 bits are used for reporting
@@ -1233,7 +1322,8 @@ int pwc_get_cmos_sensor(struct pwc_device *pdev, int *sensor)
1233 else 1322 else
1234 request = SENSOR_TYPE_FORMATTER2; 1323 request = SENSOR_TYPE_FORMATTER2;
1235 1324
1236 ret = RecvControlMsg(GET_STATUS_CTL, request, 1); 1325 ret = recv_control_msg(pdev,
1326 GET_STATUS_CTL, request, &buf, sizeof(buf));
1237 if (ret < 0) 1327 if (ret < 0)
1238 return ret; 1328 return ret;
1239 if (pdev->type < 675) 1329 if (pdev->type < 675)
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index d0d126c69354..5d496a99e034 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -5934,7 +5934,7 @@ mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS *pCfg)
5934 5934
5935 /* Initalize the timer 5935 /* Initalize the timer
5936 */ 5936 */
5937 init_timer(&pCfg->timer); 5937 init_timer_on_stack(&pCfg->timer);
5938 pCfg->timer.data = (unsigned long) ioc; 5938 pCfg->timer.data = (unsigned long) ioc;
5939 pCfg->timer.function = mpt_timer_expired; 5939 pCfg->timer.function = mpt_timer_expired;
5940 pCfg->wait_done = 0; 5940 pCfg->wait_done = 0;
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index d184dfab9631..db39f4a52f53 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -278,7 +278,7 @@ static ssize_t at24_bin_read(struct kobject *kobj, struct bin_attribute *attr,
278 * We only use page mode writes; the alternative is sloooow. This routine 278 * We only use page mode writes; the alternative is sloooow. This routine
279 * writes at most one page. 279 * writes at most one page.
280 */ 280 */
281static ssize_t at24_eeprom_write(struct at24_data *at24, char *buf, 281static ssize_t at24_eeprom_write(struct at24_data *at24, const char *buf,
282 unsigned offset, size_t count) 282 unsigned offset, size_t count)
283{ 283{
284 struct i2c_client *client; 284 struct i2c_client *client;
@@ -347,8 +347,8 @@ static ssize_t at24_eeprom_write(struct at24_data *at24, char *buf,
347 return -ETIMEDOUT; 347 return -ETIMEDOUT;
348} 348}
349 349
350static ssize_t at24_write(struct at24_data *at24, 350static ssize_t at24_write(struct at24_data *at24, const char *buf, loff_t off,
351 char *buf, loff_t off, size_t count) 351 size_t count)
352{ 352{
353 ssize_t retval = 0; 353 ssize_t retval = 0;
354 354
@@ -406,7 +406,7 @@ static ssize_t at24_macc_read(struct memory_accessor *macc, char *buf,
406 return at24_read(at24, buf, offset, count); 406 return at24_read(at24, buf, offset, count);
407} 407}
408 408
409static ssize_t at24_macc_write(struct memory_accessor *macc, char *buf, 409static ssize_t at24_macc_write(struct memory_accessor *macc, const char *buf,
410 off_t offset, size_t count) 410 off_t offset, size_t count)
411{ 411{
412 struct at24_data *at24 = container_of(macc, struct at24_data, macc); 412 struct at24_data *at24 = container_of(macc, struct at24_data, macc);
diff --git a/drivers/misc/eeprom/at25.c b/drivers/misc/eeprom/at25.c
index 6bc0dac5c1e8..b34cb5f79eea 100644
--- a/drivers/misc/eeprom/at25.c
+++ b/drivers/misc/eeprom/at25.c
@@ -140,7 +140,8 @@ at25_bin_read(struct kobject *kobj, struct bin_attribute *bin_attr,
140 140
141 141
142static ssize_t 142static ssize_t
143at25_ee_write(struct at25_data *at25, char *buf, loff_t off, size_t count) 143at25_ee_write(struct at25_data *at25, const char *buf, loff_t off,
144 size_t count)
144{ 145{
145 ssize_t status = 0; 146 ssize_t status = 0;
146 unsigned written = 0; 147 unsigned written = 0;
@@ -276,7 +277,7 @@ static ssize_t at25_mem_read(struct memory_accessor *mem, char *buf,
276 return at25_ee_read(at25, buf, offset, count); 277 return at25_ee_read(at25, buf, offset, count);
277} 278}
278 279
279static ssize_t at25_mem_write(struct memory_accessor *mem, char *buf, 280static ssize_t at25_mem_write(struct memory_accessor *mem, const char *buf,
280 off_t offset, size_t count) 281 off_t offset, size_t count)
281{ 282{
282 struct at25_data *at25 = container_of(mem, struct at25_data, mem); 283 struct at25_data *at25 = container_of(mem, struct at25_data, mem);
diff --git a/drivers/misc/sgi-gru/grufile.c b/drivers/misc/sgi-gru/grufile.c
index 3e6e42d2f01b..bbefe77c67a9 100644
--- a/drivers/misc/sgi-gru/grufile.c
+++ b/drivers/misc/sgi-gru/grufile.c
@@ -375,7 +375,7 @@ static int __init gru_init(void)
375 void *gru_start_vaddr; 375 void *gru_start_vaddr;
376 376
377 if (!is_uv_system()) 377 if (!is_uv_system())
378 return -ENODEV; 378 return 0;
379 379
380#if defined CONFIG_IA64 380#if defined CONFIG_IA64
381 gru_start_paddr = 0xd000000000UL; /* ZZZZZZZZZZZZZZZZZZZ fixme */ 381 gru_start_paddr = 0xd000000000UL; /* ZZZZZZZZZZZZZZZZZZZ fixme */
diff --git a/drivers/misc/sgi-xp/xp_main.c b/drivers/misc/sgi-xp/xp_main.c
index 16f8dcab2da4..7896849b16dc 100644
--- a/drivers/misc/sgi-xp/xp_main.c
+++ b/drivers/misc/sgi-xp/xp_main.c
@@ -248,19 +248,19 @@ xp_init(void)
248 enum xp_retval ret; 248 enum xp_retval ret;
249 int ch_number; 249 int ch_number;
250 250
251 /* initialize the connection registration mutex */
252 for (ch_number = 0; ch_number < XPC_MAX_NCHANNELS; ch_number++)
253 mutex_init(&xpc_registrations[ch_number].mutex);
254
251 if (is_shub()) 255 if (is_shub())
252 ret = xp_init_sn2(); 256 ret = xp_init_sn2();
253 else if (is_uv()) 257 else if (is_uv())
254 ret = xp_init_uv(); 258 ret = xp_init_uv();
255 else 259 else
256 ret = xpUnsupported; 260 ret = 0;
257 261
258 if (ret != xpSuccess) 262 if (ret != xpSuccess)
259 return -ENODEV; 263 return ret;
260
261 /* initialize the connection registration mutex */
262 for (ch_number = 0; ch_number < XPC_MAX_NCHANNELS; ch_number++)
263 mutex_init(&xpc_registrations[ch_number].mutex);
264 264
265 return 0; 265 return 0;
266} 266}
diff --git a/drivers/misc/sgi-xp/xpc.h b/drivers/misc/sgi-xp/xpc.h
index 114444cfd496..b94d5f767703 100644
--- a/drivers/misc/sgi-xp/xpc.h
+++ b/drivers/misc/sgi-xp/xpc.h
@@ -90,18 +90,21 @@ struct xpc_rsvd_page {
90 short max_npartitions; /* value of XPC_MAX_PARTITIONS */ 90 short max_npartitions; /* value of XPC_MAX_PARTITIONS */
91 u8 version; 91 u8 version;
92 u8 pad1[3]; /* align to next u64 in 1st 64-byte cacheline */ 92 u8 pad1[3]; /* align to next u64 in 1st 64-byte cacheline */
93 unsigned long ts_jiffies; /* timestamp when rsvd pg was setup by XPC */
93 union { 94 union {
94 unsigned long vars_pa; /* phys address of struct xpc_vars */ 95 struct {
95 unsigned long activate_gru_mq_desc_gpa; /* phys addr of */ 96 unsigned long vars_pa; /* phys addr */
96 /* activate mq's */ 97 } sn2;
97 /* gru mq descriptor */ 98 struct {
99 unsigned long heartbeat_gpa; /* phys addr */
100 unsigned long activate_gru_mq_desc_gpa; /* phys addr */
101 } uv;
98 } sn; 102 } sn;
99 unsigned long ts_jiffies; /* timestamp when rsvd pg was setup by XPC */ 103 u64 pad2[9]; /* align to last u64 in 2nd 64-byte cacheline */
100 u64 pad2[10]; /* align to last u64 in 2nd 64-byte cacheline */
101 u64 SAL_nasids_size; /* SAL: size of each nasid mask in bytes */ 104 u64 SAL_nasids_size; /* SAL: size of each nasid mask in bytes */
102}; 105};
103 106
104#define XPC_RP_VERSION _XPC_VERSION(2, 0) /* version 2.0 of the reserved page */ 107#define XPC_RP_VERSION _XPC_VERSION(3, 0) /* version 3.0 of the reserved page */
105 108
106/* 109/*
107 * Define the structures by which XPC variables can be exported to other 110 * Define the structures by which XPC variables can be exported to other
@@ -182,6 +185,17 @@ struct xpc_vars_part_sn2 {
182 (XPC_RP_MACH_NASIDS(_rp) + \ 185 (XPC_RP_MACH_NASIDS(_rp) + \
183 xpc_nasid_mask_nlongs)) 186 xpc_nasid_mask_nlongs))
184 187
188
189/*
190 * The following structure describes the partition's heartbeat info which
191 * will be periodically read by other partitions to determine whether this
192 * XPC is still 'alive'.
193 */
194struct xpc_heartbeat_uv {
195 unsigned long value;
196 unsigned long offline; /* if 0, heartbeat should be changing */
197};
198
185/* 199/*
186 * Info pertinent to a GRU message queue using a watch list for irq generation. 200 * Info pertinent to a GRU message queue using a watch list for irq generation.
187 */ 201 */
@@ -198,7 +212,7 @@ struct xpc_gru_mq_uv {
198 212
199/* 213/*
200 * The activate_mq is used to send/receive GRU messages that affect XPC's 214 * The activate_mq is used to send/receive GRU messages that affect XPC's
201 * heartbeat, partition active state, and channel state. This is UV only. 215 * partition active state and channel state. This is uv only.
202 */ 216 */
203struct xpc_activate_mq_msghdr_uv { 217struct xpc_activate_mq_msghdr_uv {
204 unsigned int gru_msg_hdr; /* FOR GRU INTERNAL USE ONLY */ 218 unsigned int gru_msg_hdr; /* FOR GRU INTERNAL USE ONLY */
@@ -210,33 +224,27 @@ struct xpc_activate_mq_msghdr_uv {
210 224
211/* activate_mq defined message types */ 225/* activate_mq defined message types */
212#define XPC_ACTIVATE_MQ_MSG_SYNC_ACT_STATE_UV 0 226#define XPC_ACTIVATE_MQ_MSG_SYNC_ACT_STATE_UV 0
213#define XPC_ACTIVATE_MQ_MSG_INC_HEARTBEAT_UV 1
214#define XPC_ACTIVATE_MQ_MSG_OFFLINE_HEARTBEAT_UV 2
215#define XPC_ACTIVATE_MQ_MSG_ONLINE_HEARTBEAT_UV 3
216 227
217#define XPC_ACTIVATE_MQ_MSG_ACTIVATE_REQ_UV 4 228#define XPC_ACTIVATE_MQ_MSG_ACTIVATE_REQ_UV 1
218#define XPC_ACTIVATE_MQ_MSG_DEACTIVATE_REQ_UV 5 229#define XPC_ACTIVATE_MQ_MSG_DEACTIVATE_REQ_UV 2
219 230
220#define XPC_ACTIVATE_MQ_MSG_CHCTL_CLOSEREQUEST_UV 6 231#define XPC_ACTIVATE_MQ_MSG_CHCTL_CLOSEREQUEST_UV 3
221#define XPC_ACTIVATE_MQ_MSG_CHCTL_CLOSEREPLY_UV 7 232#define XPC_ACTIVATE_MQ_MSG_CHCTL_CLOSEREPLY_UV 4
222#define XPC_ACTIVATE_MQ_MSG_CHCTL_OPENREQUEST_UV 8 233#define XPC_ACTIVATE_MQ_MSG_CHCTL_OPENREQUEST_UV 5
223#define XPC_ACTIVATE_MQ_MSG_CHCTL_OPENREPLY_UV 9 234#define XPC_ACTIVATE_MQ_MSG_CHCTL_OPENREPLY_UV 6
235#define XPC_ACTIVATE_MQ_MSG_CHCTL_OPENCOMPLETE_UV 7
224 236
225#define XPC_ACTIVATE_MQ_MSG_MARK_ENGAGED_UV 10 237#define XPC_ACTIVATE_MQ_MSG_MARK_ENGAGED_UV 8
226#define XPC_ACTIVATE_MQ_MSG_MARK_DISENGAGED_UV 11 238#define XPC_ACTIVATE_MQ_MSG_MARK_DISENGAGED_UV 9
227 239
228struct xpc_activate_mq_msg_uv { 240struct xpc_activate_mq_msg_uv {
229 struct xpc_activate_mq_msghdr_uv hdr; 241 struct xpc_activate_mq_msghdr_uv hdr;
230}; 242};
231 243
232struct xpc_activate_mq_msg_heartbeat_req_uv {
233 struct xpc_activate_mq_msghdr_uv hdr;
234 u64 heartbeat;
235};
236
237struct xpc_activate_mq_msg_activate_req_uv { 244struct xpc_activate_mq_msg_activate_req_uv {
238 struct xpc_activate_mq_msghdr_uv hdr; 245 struct xpc_activate_mq_msghdr_uv hdr;
239 unsigned long rp_gpa; 246 unsigned long rp_gpa;
247 unsigned long heartbeat_gpa;
240 unsigned long activate_gru_mq_desc_gpa; 248 unsigned long activate_gru_mq_desc_gpa;
241}; 249};
242 250
@@ -271,6 +279,11 @@ struct xpc_activate_mq_msg_chctl_openreply_uv {
271 unsigned long notify_gru_mq_desc_gpa; 279 unsigned long notify_gru_mq_desc_gpa;
272}; 280};
273 281
282struct xpc_activate_mq_msg_chctl_opencomplete_uv {
283 struct xpc_activate_mq_msghdr_uv hdr;
284 short ch_number;
285};
286
274/* 287/*
275 * Functions registered by add_timer() or called by kernel_thread() only 288 * Functions registered by add_timer() or called by kernel_thread() only
276 * allow for a single 64-bit argument. The following macros can be used to 289 * allow for a single 64-bit argument. The following macros can be used to
@@ -576,30 +589,32 @@ struct xpc_channel {
576 589
577#define XPC_C_WASCONNECTED 0x00000001 /* channel was connected */ 590#define XPC_C_WASCONNECTED 0x00000001 /* channel was connected */
578 591
579#define XPC_C_ROPENREPLY 0x00000002 /* remote open channel reply */ 592#define XPC_C_ROPENCOMPLETE 0x00000002 /* remote open channel complete */
580#define XPC_C_OPENREPLY 0x00000004 /* local open channel reply */ 593#define XPC_C_OPENCOMPLETE 0x00000004 /* local open channel complete */
581#define XPC_C_ROPENREQUEST 0x00000008 /* remote open channel request */ 594#define XPC_C_ROPENREPLY 0x00000008 /* remote open channel reply */
582#define XPC_C_OPENREQUEST 0x00000010 /* local open channel request */ 595#define XPC_C_OPENREPLY 0x00000010 /* local open channel reply */
596#define XPC_C_ROPENREQUEST 0x00000020 /* remote open channel request */
597#define XPC_C_OPENREQUEST 0x00000040 /* local open channel request */
583 598
584#define XPC_C_SETUP 0x00000020 /* channel's msgqueues are alloc'd */ 599#define XPC_C_SETUP 0x00000080 /* channel's msgqueues are alloc'd */
585#define XPC_C_CONNECTEDCALLOUT 0x00000040 /* connected callout initiated */ 600#define XPC_C_CONNECTEDCALLOUT 0x00000100 /* connected callout initiated */
586#define XPC_C_CONNECTEDCALLOUT_MADE \ 601#define XPC_C_CONNECTEDCALLOUT_MADE \
587 0x00000080 /* connected callout completed */ 602 0x00000200 /* connected callout completed */
588#define XPC_C_CONNECTED 0x00000100 /* local channel is connected */ 603#define XPC_C_CONNECTED 0x00000400 /* local channel is connected */
589#define XPC_C_CONNECTING 0x00000200 /* channel is being connected */ 604#define XPC_C_CONNECTING 0x00000800 /* channel is being connected */
590 605
591#define XPC_C_RCLOSEREPLY 0x00000400 /* remote close channel reply */ 606#define XPC_C_RCLOSEREPLY 0x00001000 /* remote close channel reply */
592#define XPC_C_CLOSEREPLY 0x00000800 /* local close channel reply */ 607#define XPC_C_CLOSEREPLY 0x00002000 /* local close channel reply */
593#define XPC_C_RCLOSEREQUEST 0x00001000 /* remote close channel request */ 608#define XPC_C_RCLOSEREQUEST 0x00004000 /* remote close channel request */
594#define XPC_C_CLOSEREQUEST 0x00002000 /* local close channel request */ 609#define XPC_C_CLOSEREQUEST 0x00008000 /* local close channel request */
595 610
596#define XPC_C_DISCONNECTED 0x00004000 /* channel is disconnected */ 611#define XPC_C_DISCONNECTED 0x00010000 /* channel is disconnected */
597#define XPC_C_DISCONNECTING 0x00008000 /* channel is being disconnected */ 612#define XPC_C_DISCONNECTING 0x00020000 /* channel is being disconnected */
598#define XPC_C_DISCONNECTINGCALLOUT \ 613#define XPC_C_DISCONNECTINGCALLOUT \
599 0x00010000 /* disconnecting callout initiated */ 614 0x00040000 /* disconnecting callout initiated */
600#define XPC_C_DISCONNECTINGCALLOUT_MADE \ 615#define XPC_C_DISCONNECTINGCALLOUT_MADE \
601 0x00020000 /* disconnecting callout completed */ 616 0x00080000 /* disconnecting callout completed */
602#define XPC_C_WDISCONNECT 0x00040000 /* waiting for channel disconnect */ 617#define XPC_C_WDISCONNECT 0x00100000 /* waiting for channel disconnect */
603 618
604/* 619/*
605 * The channel control flags (chctl) union consists of a 64-bit variable which 620 * The channel control flags (chctl) union consists of a 64-bit variable which
@@ -618,11 +633,13 @@ union xpc_channel_ctl_flags {
618#define XPC_CHCTL_CLOSEREPLY 0x02 633#define XPC_CHCTL_CLOSEREPLY 0x02
619#define XPC_CHCTL_OPENREQUEST 0x04 634#define XPC_CHCTL_OPENREQUEST 0x04
620#define XPC_CHCTL_OPENREPLY 0x08 635#define XPC_CHCTL_OPENREPLY 0x08
621#define XPC_CHCTL_MSGREQUEST 0x10 636#define XPC_CHCTL_OPENCOMPLETE 0x10
637#define XPC_CHCTL_MSGREQUEST 0x20
622 638
623#define XPC_OPENCLOSE_CHCTL_FLAGS \ 639#define XPC_OPENCLOSE_CHCTL_FLAGS \
624 (XPC_CHCTL_CLOSEREQUEST | XPC_CHCTL_CLOSEREPLY | \ 640 (XPC_CHCTL_CLOSEREQUEST | XPC_CHCTL_CLOSEREPLY | \
625 XPC_CHCTL_OPENREQUEST | XPC_CHCTL_OPENREPLY) 641 XPC_CHCTL_OPENREQUEST | XPC_CHCTL_OPENREPLY | \
642 XPC_CHCTL_OPENCOMPLETE)
626#define XPC_MSG_CHCTL_FLAGS XPC_CHCTL_MSGREQUEST 643#define XPC_MSG_CHCTL_FLAGS XPC_CHCTL_MSGREQUEST
627 644
628static inline int 645static inline int
@@ -687,6 +704,9 @@ struct xpc_partition_sn2 {
687}; 704};
688 705
689struct xpc_partition_uv { 706struct xpc_partition_uv {
707 unsigned long heartbeat_gpa; /* phys addr of partition's heartbeat */
708 struct xpc_heartbeat_uv cached_heartbeat; /* cached copy of */
709 /* partition's heartbeat */
690 unsigned long activate_gru_mq_desc_gpa; /* phys addr of parititon's */ 710 unsigned long activate_gru_mq_desc_gpa; /* phys addr of parititon's */
691 /* activate mq's gru mq */ 711 /* activate mq's gru mq */
692 /* descriptor */ 712 /* descriptor */
@@ -698,14 +718,12 @@ struct xpc_partition_uv {
698 u8 remote_act_state; /* remote partition's act_state */ 718 u8 remote_act_state; /* remote partition's act_state */
699 u8 act_state_req; /* act_state request from remote partition */ 719 u8 act_state_req; /* act_state request from remote partition */
700 enum xp_retval reason; /* reason for deactivate act_state request */ 720 enum xp_retval reason; /* reason for deactivate act_state request */
701 u64 heartbeat; /* incremented by remote partition */
702}; 721};
703 722
704/* struct xpc_partition_uv flags */ 723/* struct xpc_partition_uv flags */
705 724
706#define XPC_P_HEARTBEAT_OFFLINE_UV 0x00000001 725#define XPC_P_CACHED_ACTIVATE_GRU_MQ_DESC_UV 0x00000001
707#define XPC_P_ENGAGED_UV 0x00000002 726#define XPC_P_ENGAGED_UV 0x00000002
708#define XPC_P_CACHED_ACTIVATE_GRU_MQ_DESC_UV 0x00000004
709 727
710/* struct xpc_partition_uv act_state change requests */ 728/* struct xpc_partition_uv act_state change requests */
711 729
@@ -762,6 +780,62 @@ struct xpc_partition {
762 780
763} ____cacheline_aligned; 781} ____cacheline_aligned;
764 782
783struct xpc_arch_operations {
784 int (*setup_partitions) (void);
785 void (*teardown_partitions) (void);
786 void (*process_activate_IRQ_rcvd) (void);
787 enum xp_retval (*get_partition_rsvd_page_pa)
788 (void *, u64 *, unsigned long *, size_t *);
789 int (*setup_rsvd_page) (struct xpc_rsvd_page *);
790
791 void (*allow_hb) (short);
792 void (*disallow_hb) (short);
793 void (*disallow_all_hbs) (void);
794 void (*increment_heartbeat) (void);
795 void (*offline_heartbeat) (void);
796 void (*online_heartbeat) (void);
797 void (*heartbeat_init) (void);
798 void (*heartbeat_exit) (void);
799 enum xp_retval (*get_remote_heartbeat) (struct xpc_partition *);
800
801 void (*request_partition_activation) (struct xpc_rsvd_page *,
802 unsigned long, int);
803 void (*request_partition_reactivation) (struct xpc_partition *);
804 void (*request_partition_deactivation) (struct xpc_partition *);
805 void (*cancel_partition_deactivation_request) (struct xpc_partition *);
806 enum xp_retval (*setup_ch_structures) (struct xpc_partition *);
807 void (*teardown_ch_structures) (struct xpc_partition *);
808
809 enum xp_retval (*make_first_contact) (struct xpc_partition *);
810
811 u64 (*get_chctl_all_flags) (struct xpc_partition *);
812 void (*send_chctl_closerequest) (struct xpc_channel *, unsigned long *);
813 void (*send_chctl_closereply) (struct xpc_channel *, unsigned long *);
814 void (*send_chctl_openrequest) (struct xpc_channel *, unsigned long *);
815 void (*send_chctl_openreply) (struct xpc_channel *, unsigned long *);
816 void (*send_chctl_opencomplete) (struct xpc_channel *, unsigned long *);
817 void (*process_msg_chctl_flags) (struct xpc_partition *, int);
818
819 enum xp_retval (*save_remote_msgqueue_pa) (struct xpc_channel *,
820 unsigned long);
821
822 enum xp_retval (*setup_msg_structures) (struct xpc_channel *);
823 void (*teardown_msg_structures) (struct xpc_channel *);
824
825 void (*indicate_partition_engaged) (struct xpc_partition *);
826 void (*indicate_partition_disengaged) (struct xpc_partition *);
827 void (*assume_partition_disengaged) (short);
828 int (*partition_engaged) (short);
829 int (*any_partition_engaged) (void);
830
831 int (*n_of_deliverable_payloads) (struct xpc_channel *);
832 enum xp_retval (*send_payload) (struct xpc_channel *, u32, void *,
833 u16, u8, xpc_notify_func, void *);
834 void *(*get_deliverable_payload) (struct xpc_channel *);
835 void (*received_payload) (struct xpc_channel *, void *);
836 void (*notify_senders_of_disconnect) (struct xpc_channel *);
837};
838
765/* struct xpc_partition act_state values (for XPC HB) */ 839/* struct xpc_partition act_state values (for XPC HB) */
766 840
767#define XPC_P_AS_INACTIVE 0x00 /* partition is not active */ 841#define XPC_P_AS_INACTIVE 0x00 /* partition is not active */
@@ -802,67 +876,17 @@ extern struct xpc_registration xpc_registrations[];
802/* found in xpc_main.c */ 876/* found in xpc_main.c */
803extern struct device *xpc_part; 877extern struct device *xpc_part;
804extern struct device *xpc_chan; 878extern struct device *xpc_chan;
879extern struct xpc_arch_operations xpc_arch_ops;
805extern int xpc_disengage_timelimit; 880extern int xpc_disengage_timelimit;
806extern int xpc_disengage_timedout; 881extern int xpc_disengage_timedout;
807extern int xpc_activate_IRQ_rcvd; 882extern int xpc_activate_IRQ_rcvd;
808extern spinlock_t xpc_activate_IRQ_rcvd_lock; 883extern spinlock_t xpc_activate_IRQ_rcvd_lock;
809extern wait_queue_head_t xpc_activate_IRQ_wq; 884extern wait_queue_head_t xpc_activate_IRQ_wq;
810extern void *xpc_heartbeating_to_mask;
811extern void *xpc_kzalloc_cacheline_aligned(size_t, gfp_t, void **); 885extern void *xpc_kzalloc_cacheline_aligned(size_t, gfp_t, void **);
812extern void xpc_activate_partition(struct xpc_partition *); 886extern void xpc_activate_partition(struct xpc_partition *);
813extern void xpc_activate_kthreads(struct xpc_channel *, int); 887extern void xpc_activate_kthreads(struct xpc_channel *, int);
814extern void xpc_create_kthreads(struct xpc_channel *, int, int); 888extern void xpc_create_kthreads(struct xpc_channel *, int, int);
815extern void xpc_disconnect_wait(int); 889extern void xpc_disconnect_wait(int);
816extern int (*xpc_setup_partitions_sn) (void);
817extern void (*xpc_teardown_partitions_sn) (void);
818extern enum xp_retval (*xpc_get_partition_rsvd_page_pa) (void *, u64 *,
819 unsigned long *,
820 size_t *);
821extern int (*xpc_setup_rsvd_page_sn) (struct xpc_rsvd_page *);
822extern void (*xpc_heartbeat_init) (void);
823extern void (*xpc_heartbeat_exit) (void);
824extern void (*xpc_increment_heartbeat) (void);
825extern void (*xpc_offline_heartbeat) (void);
826extern void (*xpc_online_heartbeat) (void);
827extern enum xp_retval (*xpc_get_remote_heartbeat) (struct xpc_partition *);
828extern enum xp_retval (*xpc_make_first_contact) (struct xpc_partition *);
829extern u64 (*xpc_get_chctl_all_flags) (struct xpc_partition *);
830extern enum xp_retval (*xpc_setup_msg_structures) (struct xpc_channel *);
831extern void (*xpc_teardown_msg_structures) (struct xpc_channel *);
832extern void (*xpc_notify_senders_of_disconnect) (struct xpc_channel *);
833extern void (*xpc_process_msg_chctl_flags) (struct xpc_partition *, int);
834extern int (*xpc_n_of_deliverable_payloads) (struct xpc_channel *);
835extern void *(*xpc_get_deliverable_payload) (struct xpc_channel *);
836extern void (*xpc_request_partition_activation) (struct xpc_rsvd_page *,
837 unsigned long, int);
838extern void (*xpc_request_partition_reactivation) (struct xpc_partition *);
839extern void (*xpc_request_partition_deactivation) (struct xpc_partition *);
840extern void (*xpc_cancel_partition_deactivation_request) (
841 struct xpc_partition *);
842extern void (*xpc_process_activate_IRQ_rcvd) (void);
843extern enum xp_retval (*xpc_setup_ch_structures_sn) (struct xpc_partition *);
844extern void (*xpc_teardown_ch_structures_sn) (struct xpc_partition *);
845
846extern void (*xpc_indicate_partition_engaged) (struct xpc_partition *);
847extern int (*xpc_partition_engaged) (short);
848extern int (*xpc_any_partition_engaged) (void);
849extern void (*xpc_indicate_partition_disengaged) (struct xpc_partition *);
850extern void (*xpc_assume_partition_disengaged) (short);
851
852extern void (*xpc_send_chctl_closerequest) (struct xpc_channel *,
853 unsigned long *);
854extern void (*xpc_send_chctl_closereply) (struct xpc_channel *,
855 unsigned long *);
856extern void (*xpc_send_chctl_openrequest) (struct xpc_channel *,
857 unsigned long *);
858extern void (*xpc_send_chctl_openreply) (struct xpc_channel *, unsigned long *);
859
860extern enum xp_retval (*xpc_save_remote_msgqueue_pa) (struct xpc_channel *,
861 unsigned long);
862
863extern enum xp_retval (*xpc_send_payload) (struct xpc_channel *, u32, void *,
864 u16, u8, xpc_notify_func, void *);
865extern void (*xpc_received_payload) (struct xpc_channel *, void *);
866 890
867/* found in xpc_sn2.c */ 891/* found in xpc_sn2.c */
868extern int xpc_init_sn2(void); 892extern int xpc_init_sn2(void);
@@ -909,40 +933,6 @@ extern void xpc_disconnect_channel(const int, struct xpc_channel *,
909extern void xpc_disconnect_callout(struct xpc_channel *, enum xp_retval); 933extern void xpc_disconnect_callout(struct xpc_channel *, enum xp_retval);
910extern void xpc_partition_going_down(struct xpc_partition *, enum xp_retval); 934extern void xpc_partition_going_down(struct xpc_partition *, enum xp_retval);
911 935
912static inline int
913xpc_hb_allowed(short partid, void *heartbeating_to_mask)
914{
915 return test_bit(partid, heartbeating_to_mask);
916}
917
918static inline int
919xpc_any_hbs_allowed(void)
920{
921 DBUG_ON(xpc_heartbeating_to_mask == NULL);
922 return !bitmap_empty(xpc_heartbeating_to_mask, xp_max_npartitions);
923}
924
925static inline void
926xpc_allow_hb(short partid)
927{
928 DBUG_ON(xpc_heartbeating_to_mask == NULL);
929 set_bit(partid, xpc_heartbeating_to_mask);
930}
931
932static inline void
933xpc_disallow_hb(short partid)
934{
935 DBUG_ON(xpc_heartbeating_to_mask == NULL);
936 clear_bit(partid, xpc_heartbeating_to_mask);
937}
938
939static inline void
940xpc_disallow_all_hbs(void)
941{
942 DBUG_ON(xpc_heartbeating_to_mask == NULL);
943 bitmap_zero(xpc_heartbeating_to_mask, xp_max_npartitions);
944}
945
946static inline void 936static inline void
947xpc_wakeup_channel_mgr(struct xpc_partition *part) 937xpc_wakeup_channel_mgr(struct xpc_partition *part)
948{ 938{
diff --git a/drivers/misc/sgi-xp/xpc_channel.c b/drivers/misc/sgi-xp/xpc_channel.c
index 99a2534c38a1..652593fc486d 100644
--- a/drivers/misc/sgi-xp/xpc_channel.c
+++ b/drivers/misc/sgi-xp/xpc_channel.c
@@ -3,7 +3,7 @@
3 * License. See the file "COPYING" in the main directory of this archive 3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details. 4 * for more details.
5 * 5 *
6 * Copyright (c) 2004-2008 Silicon Graphics, Inc. All Rights Reserved. 6 * Copyright (c) 2004-2009 Silicon Graphics, Inc. All Rights Reserved.
7 */ 7 */
8 8
9/* 9/*
@@ -39,34 +39,38 @@ xpc_process_connect(struct xpc_channel *ch, unsigned long *irq_flags)
39 39
40 if (!(ch->flags & XPC_C_SETUP)) { 40 if (!(ch->flags & XPC_C_SETUP)) {
41 spin_unlock_irqrestore(&ch->lock, *irq_flags); 41 spin_unlock_irqrestore(&ch->lock, *irq_flags);
42 ret = xpc_setup_msg_structures(ch); 42 ret = xpc_arch_ops.setup_msg_structures(ch);
43 spin_lock_irqsave(&ch->lock, *irq_flags); 43 spin_lock_irqsave(&ch->lock, *irq_flags);
44 44
45 if (ret != xpSuccess) 45 if (ret != xpSuccess)
46 XPC_DISCONNECT_CHANNEL(ch, ret, irq_flags); 46 XPC_DISCONNECT_CHANNEL(ch, ret, irq_flags);
47 else
48 ch->flags |= XPC_C_SETUP;
47 49
48 ch->flags |= XPC_C_SETUP; 50 if (ch->flags & XPC_C_DISCONNECTING)
49
50 if (ch->flags & (XPC_C_CONNECTED | XPC_C_DISCONNECTING))
51 return; 51 return;
52 } 52 }
53 53
54 if (!(ch->flags & XPC_C_OPENREPLY)) { 54 if (!(ch->flags & XPC_C_OPENREPLY)) {
55 ch->flags |= XPC_C_OPENREPLY; 55 ch->flags |= XPC_C_OPENREPLY;
56 xpc_send_chctl_openreply(ch, irq_flags); 56 xpc_arch_ops.send_chctl_openreply(ch, irq_flags);
57 } 57 }
58 58
59 if (!(ch->flags & XPC_C_ROPENREPLY)) 59 if (!(ch->flags & XPC_C_ROPENREPLY))
60 return; 60 return;
61 61
62 ch->flags = (XPC_C_CONNECTED | XPC_C_SETUP); /* clear all else */ 62 if (!(ch->flags & XPC_C_OPENCOMPLETE)) {
63 ch->flags |= (XPC_C_OPENCOMPLETE | XPC_C_CONNECTED);
64 xpc_arch_ops.send_chctl_opencomplete(ch, irq_flags);
65 }
66
67 if (!(ch->flags & XPC_C_ROPENCOMPLETE))
68 return;
63 69
64 dev_info(xpc_chan, "channel %d to partition %d connected\n", 70 dev_info(xpc_chan, "channel %d to partition %d connected\n",
65 ch->number, ch->partid); 71 ch->number, ch->partid);
66 72
67 spin_unlock_irqrestore(&ch->lock, *irq_flags); 73 ch->flags = (XPC_C_CONNECTED | XPC_C_SETUP); /* clear all else */
68 xpc_create_kthreads(ch, 1, 0);
69 spin_lock_irqsave(&ch->lock, *irq_flags);
70} 74}
71 75
72/* 76/*
@@ -96,7 +100,7 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
96 100
97 if (part->act_state == XPC_P_AS_DEACTIVATING) { 101 if (part->act_state == XPC_P_AS_DEACTIVATING) {
98 /* can't proceed until the other side disengages from us */ 102 /* can't proceed until the other side disengages from us */
99 if (xpc_partition_engaged(ch->partid)) 103 if (xpc_arch_ops.partition_engaged(ch->partid))
100 return; 104 return;
101 105
102 } else { 106 } else {
@@ -108,7 +112,7 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
108 112
109 if (!(ch->flags & XPC_C_CLOSEREPLY)) { 113 if (!(ch->flags & XPC_C_CLOSEREPLY)) {
110 ch->flags |= XPC_C_CLOSEREPLY; 114 ch->flags |= XPC_C_CLOSEREPLY;
111 xpc_send_chctl_closereply(ch, irq_flags); 115 xpc_arch_ops.send_chctl_closereply(ch, irq_flags);
112 } 116 }
113 117
114 if (!(ch->flags & XPC_C_RCLOSEREPLY)) 118 if (!(ch->flags & XPC_C_RCLOSEREPLY))
@@ -118,7 +122,7 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
118 /* wake those waiting for notify completion */ 122 /* wake those waiting for notify completion */
119 if (atomic_read(&ch->n_to_notify) > 0) { 123 if (atomic_read(&ch->n_to_notify) > 0) {
120 /* we do callout while holding ch->lock, callout can't block */ 124 /* we do callout while holding ch->lock, callout can't block */
121 xpc_notify_senders_of_disconnect(ch); 125 xpc_arch_ops.notify_senders_of_disconnect(ch);
122 } 126 }
123 127
124 /* both sides are disconnected now */ 128 /* both sides are disconnected now */
@@ -132,7 +136,7 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
132 DBUG_ON(atomic_read(&ch->n_to_notify) != 0); 136 DBUG_ON(atomic_read(&ch->n_to_notify) != 0);
133 137
134 /* it's now safe to free the channel's message queues */ 138 /* it's now safe to free the channel's message queues */
135 xpc_teardown_msg_structures(ch); 139 xpc_arch_ops.teardown_msg_structures(ch);
136 140
137 ch->func = NULL; 141 ch->func = NULL;
138 ch->key = NULL; 142 ch->key = NULL;
@@ -144,8 +148,9 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
144 148
145 /* 149 /*
146 * Mark the channel disconnected and clear all other flags, including 150 * Mark the channel disconnected and clear all other flags, including
147 * XPC_C_SETUP (because of call to xpc_teardown_msg_structures()) but 151 * XPC_C_SETUP (because of call to
148 * not including XPC_C_WDISCONNECT (if it was set). 152 * xpc_arch_ops.teardown_msg_structures()) but not including
153 * XPC_C_WDISCONNECT (if it was set).
149 */ 154 */
150 ch->flags = (XPC_C_DISCONNECTED | (ch->flags & XPC_C_WDISCONNECT)); 155 ch->flags = (XPC_C_DISCONNECTED | (ch->flags & XPC_C_WDISCONNECT));
151 156
@@ -184,6 +189,7 @@ xpc_process_openclose_chctl_flags(struct xpc_partition *part, int ch_number,
184 struct xpc_channel *ch = &part->channels[ch_number]; 189 struct xpc_channel *ch = &part->channels[ch_number];
185 enum xp_retval reason; 190 enum xp_retval reason;
186 enum xp_retval ret; 191 enum xp_retval ret;
192 int create_kthread = 0;
187 193
188 spin_lock_irqsave(&ch->lock, irq_flags); 194 spin_lock_irqsave(&ch->lock, irq_flags);
189 195
@@ -196,8 +202,7 @@ again:
196 * has had a chance to see that the channel is disconnected. 202 * has had a chance to see that the channel is disconnected.
197 */ 203 */
198 ch->delayed_chctl_flags |= chctl_flags; 204 ch->delayed_chctl_flags |= chctl_flags;
199 spin_unlock_irqrestore(&ch->lock, irq_flags); 205 goto out;
200 return;
201 } 206 }
202 207
203 if (chctl_flags & XPC_CHCTL_CLOSEREQUEST) { 208 if (chctl_flags & XPC_CHCTL_CLOSEREQUEST) {
@@ -239,8 +244,7 @@ again:
239 XPC_CHCTL_CLOSEREQUEST; 244 XPC_CHCTL_CLOSEREQUEST;
240 spin_unlock(&part->chctl_lock); 245 spin_unlock(&part->chctl_lock);
241 } 246 }
242 spin_unlock_irqrestore(&ch->lock, irq_flags); 247 goto out;
243 return;
244 } 248 }
245 249
246 XPC_SET_REASON(ch, 0, 0); 250 XPC_SET_REASON(ch, 0, 0);
@@ -250,7 +254,8 @@ again:
250 ch->flags |= (XPC_C_CONNECTING | XPC_C_ROPENREQUEST); 254 ch->flags |= (XPC_C_CONNECTING | XPC_C_ROPENREQUEST);
251 } 255 }
252 256
253 chctl_flags &= ~(XPC_CHCTL_OPENREQUEST | XPC_CHCTL_OPENREPLY); 257 chctl_flags &= ~(XPC_CHCTL_OPENREQUEST | XPC_CHCTL_OPENREPLY |
258 XPC_CHCTL_OPENCOMPLETE);
254 259
255 /* 260 /*
256 * The meaningful CLOSEREQUEST connection state fields are: 261 * The meaningful CLOSEREQUEST connection state fields are:
@@ -269,8 +274,7 @@ again:
269 XPC_DISCONNECT_CHANNEL(ch, reason, &irq_flags); 274 XPC_DISCONNECT_CHANNEL(ch, reason, &irq_flags);
270 275
271 DBUG_ON(chctl_flags & XPC_CHCTL_CLOSEREPLY); 276 DBUG_ON(chctl_flags & XPC_CHCTL_CLOSEREPLY);
272 spin_unlock_irqrestore(&ch->lock, irq_flags); 277 goto out;
273 return;
274 } 278 }
275 279
276 xpc_process_disconnect(ch, &irq_flags); 280 xpc_process_disconnect(ch, &irq_flags);
@@ -283,8 +287,7 @@ again:
283 287
284 if (ch->flags & XPC_C_DISCONNECTED) { 288 if (ch->flags & XPC_C_DISCONNECTED) {
285 DBUG_ON(part->act_state != XPC_P_AS_DEACTIVATING); 289 DBUG_ON(part->act_state != XPC_P_AS_DEACTIVATING);
286 spin_unlock_irqrestore(&ch->lock, irq_flags); 290 goto out;
287 return;
288 } 291 }
289 292
290 DBUG_ON(!(ch->flags & XPC_C_CLOSEREQUEST)); 293 DBUG_ON(!(ch->flags & XPC_C_CLOSEREQUEST));
@@ -299,8 +302,7 @@ again:
299 XPC_CHCTL_CLOSEREPLY; 302 XPC_CHCTL_CLOSEREPLY;
300 spin_unlock(&part->chctl_lock); 303 spin_unlock(&part->chctl_lock);
301 } 304 }
302 spin_unlock_irqrestore(&ch->lock, irq_flags); 305 goto out;
303 return;
304 } 306 }
305 307
306 ch->flags |= XPC_C_RCLOSEREPLY; 308 ch->flags |= XPC_C_RCLOSEREPLY;
@@ -320,14 +322,12 @@ again:
320 322
321 if (part->act_state == XPC_P_AS_DEACTIVATING || 323 if (part->act_state == XPC_P_AS_DEACTIVATING ||
322 (ch->flags & XPC_C_ROPENREQUEST)) { 324 (ch->flags & XPC_C_ROPENREQUEST)) {
323 spin_unlock_irqrestore(&ch->lock, irq_flags); 325 goto out;
324 return;
325 } 326 }
326 327
327 if (ch->flags & (XPC_C_DISCONNECTING | XPC_C_WDISCONNECT)) { 328 if (ch->flags & (XPC_C_DISCONNECTING | XPC_C_WDISCONNECT)) {
328 ch->delayed_chctl_flags |= XPC_CHCTL_OPENREQUEST; 329 ch->delayed_chctl_flags |= XPC_CHCTL_OPENREQUEST;
329 spin_unlock_irqrestore(&ch->lock, irq_flags); 330 goto out;
330 return;
331 } 331 }
332 DBUG_ON(!(ch->flags & (XPC_C_DISCONNECTED | 332 DBUG_ON(!(ch->flags & (XPC_C_DISCONNECTED |
333 XPC_C_OPENREQUEST))); 333 XPC_C_OPENREQUEST)));
@@ -341,8 +341,7 @@ again:
341 */ 341 */
342 if (args->entry_size == 0 || args->local_nentries == 0) { 342 if (args->entry_size == 0 || args->local_nentries == 0) {
343 /* assume OPENREQUEST was delayed by mistake */ 343 /* assume OPENREQUEST was delayed by mistake */
344 spin_unlock_irqrestore(&ch->lock, irq_flags); 344 goto out;
345 return;
346 } 345 }
347 346
348 ch->flags |= (XPC_C_ROPENREQUEST | XPC_C_CONNECTING); 347 ch->flags |= (XPC_C_ROPENREQUEST | XPC_C_CONNECTING);
@@ -352,8 +351,7 @@ again:
352 if (args->entry_size != ch->entry_size) { 351 if (args->entry_size != ch->entry_size) {
353 XPC_DISCONNECT_CHANNEL(ch, xpUnequalMsgSizes, 352 XPC_DISCONNECT_CHANNEL(ch, xpUnequalMsgSizes,
354 &irq_flags); 353 &irq_flags);
355 spin_unlock_irqrestore(&ch->lock, irq_flags); 354 goto out;
356 return;
357 } 355 }
358 } else { 356 } else {
359 ch->entry_size = args->entry_size; 357 ch->entry_size = args->entry_size;
@@ -375,15 +373,13 @@ again:
375 args->local_msgqueue_pa, args->local_nentries, 373 args->local_msgqueue_pa, args->local_nentries,
376 args->remote_nentries, ch->partid, ch->number); 374 args->remote_nentries, ch->partid, ch->number);
377 375
378 if (ch->flags & (XPC_C_DISCONNECTING | XPC_C_DISCONNECTED)) { 376 if (ch->flags & (XPC_C_DISCONNECTING | XPC_C_DISCONNECTED))
379 spin_unlock_irqrestore(&ch->lock, irq_flags); 377 goto out;
380 return; 378
381 }
382 if (!(ch->flags & XPC_C_OPENREQUEST)) { 379 if (!(ch->flags & XPC_C_OPENREQUEST)) {
383 XPC_DISCONNECT_CHANNEL(ch, xpOpenCloseError, 380 XPC_DISCONNECT_CHANNEL(ch, xpOpenCloseError,
384 &irq_flags); 381 &irq_flags);
385 spin_unlock_irqrestore(&ch->lock, irq_flags); 382 goto out;
386 return;
387 } 383 }
388 384
389 DBUG_ON(!(ch->flags & XPC_C_ROPENREQUEST)); 385 DBUG_ON(!(ch->flags & XPC_C_ROPENREQUEST));
@@ -400,11 +396,11 @@ again:
400 DBUG_ON(args->local_nentries == 0); 396 DBUG_ON(args->local_nentries == 0);
401 DBUG_ON(args->remote_nentries == 0); 397 DBUG_ON(args->remote_nentries == 0);
402 398
403 ret = xpc_save_remote_msgqueue_pa(ch, args->local_msgqueue_pa); 399 ret = xpc_arch_ops.save_remote_msgqueue_pa(ch,
400 args->local_msgqueue_pa);
404 if (ret != xpSuccess) { 401 if (ret != xpSuccess) {
405 XPC_DISCONNECT_CHANNEL(ch, ret, &irq_flags); 402 XPC_DISCONNECT_CHANNEL(ch, ret, &irq_flags);
406 spin_unlock_irqrestore(&ch->lock, irq_flags); 403 goto out;
407 return;
408 } 404 }
409 ch->flags |= XPC_C_ROPENREPLY; 405 ch->flags |= XPC_C_ROPENREPLY;
410 406
@@ -430,7 +426,36 @@ again:
430 xpc_process_connect(ch, &irq_flags); 426 xpc_process_connect(ch, &irq_flags);
431 } 427 }
432 428
429 if (chctl_flags & XPC_CHCTL_OPENCOMPLETE) {
430
431 dev_dbg(xpc_chan, "XPC_CHCTL_OPENCOMPLETE received from "
432 "partid=%d, channel=%d\n", ch->partid, ch->number);
433
434 if (ch->flags & (XPC_C_DISCONNECTING | XPC_C_DISCONNECTED))
435 goto out;
436
437 if (!(ch->flags & XPC_C_OPENREQUEST) ||
438 !(ch->flags & XPC_C_OPENREPLY)) {
439 XPC_DISCONNECT_CHANNEL(ch, xpOpenCloseError,
440 &irq_flags);
441 goto out;
442 }
443
444 DBUG_ON(!(ch->flags & XPC_C_ROPENREQUEST));
445 DBUG_ON(!(ch->flags & XPC_C_ROPENREPLY));
446 DBUG_ON(!(ch->flags & XPC_C_CONNECTED));
447
448 ch->flags |= XPC_C_ROPENCOMPLETE;
449
450 xpc_process_connect(ch, &irq_flags);
451 create_kthread = 1;
452 }
453
454out:
433 spin_unlock_irqrestore(&ch->lock, irq_flags); 455 spin_unlock_irqrestore(&ch->lock, irq_flags);
456
457 if (create_kthread)
458 xpc_create_kthreads(ch, 1, 0);
434} 459}
435 460
436/* 461/*
@@ -508,7 +533,7 @@ xpc_connect_channel(struct xpc_channel *ch)
508 /* initiate the connection */ 533 /* initiate the connection */
509 534
510 ch->flags |= (XPC_C_OPENREQUEST | XPC_C_CONNECTING); 535 ch->flags |= (XPC_C_OPENREQUEST | XPC_C_CONNECTING);
511 xpc_send_chctl_openrequest(ch, &irq_flags); 536 xpc_arch_ops.send_chctl_openrequest(ch, &irq_flags);
512 537
513 xpc_process_connect(ch, &irq_flags); 538 xpc_process_connect(ch, &irq_flags);
514 539
@@ -526,7 +551,7 @@ xpc_process_sent_chctl_flags(struct xpc_partition *part)
526 int ch_number; 551 int ch_number;
527 u32 ch_flags; 552 u32 ch_flags;
528 553
529 chctl.all_flags = xpc_get_chctl_all_flags(part); 554 chctl.all_flags = xpc_arch_ops.get_chctl_all_flags(part);
530 555
531 /* 556 /*
532 * Initiate channel connections for registered channels. 557 * Initiate channel connections for registered channels.
@@ -564,10 +589,6 @@ xpc_process_sent_chctl_flags(struct xpc_partition *part)
564 if (!(ch_flags & XPC_C_OPENREQUEST)) { 589 if (!(ch_flags & XPC_C_OPENREQUEST)) {
565 DBUG_ON(ch_flags & XPC_C_SETUP); 590 DBUG_ON(ch_flags & XPC_C_SETUP);
566 (void)xpc_connect_channel(ch); 591 (void)xpc_connect_channel(ch);
567 } else {
568 spin_lock_irqsave(&ch->lock, irq_flags);
569 xpc_process_connect(ch, &irq_flags);
570 spin_unlock_irqrestore(&ch->lock, irq_flags);
571 } 592 }
572 continue; 593 continue;
573 } 594 }
@@ -579,7 +600,7 @@ xpc_process_sent_chctl_flags(struct xpc_partition *part)
579 */ 600 */
580 601
581 if (chctl.flags[ch_number] & XPC_MSG_CHCTL_FLAGS) 602 if (chctl.flags[ch_number] & XPC_MSG_CHCTL_FLAGS)
582 xpc_process_msg_chctl_flags(part, ch_number); 603 xpc_arch_ops.process_msg_chctl_flags(part, ch_number);
583 } 604 }
584} 605}
585 606
@@ -755,7 +776,7 @@ xpc_disconnect_channel(const int line, struct xpc_channel *ch,
755 XPC_C_ROPENREQUEST | XPC_C_ROPENREPLY | 776 XPC_C_ROPENREQUEST | XPC_C_ROPENREPLY |
756 XPC_C_CONNECTING | XPC_C_CONNECTED); 777 XPC_C_CONNECTING | XPC_C_CONNECTED);
757 778
758 xpc_send_chctl_closerequest(ch, irq_flags); 779 xpc_arch_ops.send_chctl_closerequest(ch, irq_flags);
759 780
760 if (channel_was_connected) 781 if (channel_was_connected)
761 ch->flags |= XPC_C_WASCONNECTED; 782 ch->flags |= XPC_C_WASCONNECTED;
@@ -862,8 +883,8 @@ xpc_initiate_send(short partid, int ch_number, u32 flags, void *payload,
862 DBUG_ON(payload == NULL); 883 DBUG_ON(payload == NULL);
863 884
864 if (xpc_part_ref(part)) { 885 if (xpc_part_ref(part)) {
865 ret = xpc_send_payload(&part->channels[ch_number], flags, 886 ret = xpc_arch_ops.send_payload(&part->channels[ch_number],
866 payload, payload_size, 0, NULL, NULL); 887 flags, payload, payload_size, 0, NULL, NULL);
867 xpc_part_deref(part); 888 xpc_part_deref(part);
868 } 889 }
869 890
@@ -914,9 +935,8 @@ xpc_initiate_send_notify(short partid, int ch_number, u32 flags, void *payload,
914 DBUG_ON(func == NULL); 935 DBUG_ON(func == NULL);
915 936
916 if (xpc_part_ref(part)) { 937 if (xpc_part_ref(part)) {
917 ret = xpc_send_payload(&part->channels[ch_number], flags, 938 ret = xpc_arch_ops.send_payload(&part->channels[ch_number],
918 payload, payload_size, XPC_N_CALL, func, 939 flags, payload, payload_size, XPC_N_CALL, func, key);
919 key);
920 xpc_part_deref(part); 940 xpc_part_deref(part);
921 } 941 }
922 return ret; 942 return ret;
@@ -930,7 +950,7 @@ xpc_deliver_payload(struct xpc_channel *ch)
930{ 950{
931 void *payload; 951 void *payload;
932 952
933 payload = xpc_get_deliverable_payload(ch); 953 payload = xpc_arch_ops.get_deliverable_payload(ch);
934 if (payload != NULL) { 954 if (payload != NULL) {
935 955
936 /* 956 /*
@@ -984,7 +1004,7 @@ xpc_initiate_received(short partid, int ch_number, void *payload)
984 DBUG_ON(ch_number < 0 || ch_number >= part->nchannels); 1004 DBUG_ON(ch_number < 0 || ch_number >= part->nchannels);
985 1005
986 ch = &part->channels[ch_number]; 1006 ch = &part->channels[ch_number];
987 xpc_received_payload(ch, payload); 1007 xpc_arch_ops.received_payload(ch, payload);
988 1008
989 /* the call to xpc_msgqueue_ref() was done by xpc_deliver_payload() */ 1009 /* the call to xpc_msgqueue_ref() was done by xpc_deliver_payload() */
990 xpc_msgqueue_deref(ch); 1010 xpc_msgqueue_deref(ch);
diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c
index 1ab9fda87fab..fd3688a3e23f 100644
--- a/drivers/misc/sgi-xp/xpc_main.c
+++ b/drivers/misc/sgi-xp/xpc_main.c
@@ -3,7 +3,7 @@
3 * License. See the file "COPYING" in the main directory of this archive 3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details. 4 * for more details.
5 * 5 *
6 * Copyright (c) 2004-2008 Silicon Graphics, Inc. All Rights Reserved. 6 * Copyright (c) 2004-2009 Silicon Graphics, Inc. All Rights Reserved.
7 */ 7 */
8 8
9/* 9/*
@@ -150,7 +150,6 @@ DECLARE_WAIT_QUEUE_HEAD(xpc_activate_IRQ_wq);
150 150
151static unsigned long xpc_hb_check_timeout; 151static unsigned long xpc_hb_check_timeout;
152static struct timer_list xpc_hb_timer; 152static struct timer_list xpc_hb_timer;
153void *xpc_heartbeating_to_mask;
154 153
155/* notification that the xpc_hb_checker thread has exited */ 154/* notification that the xpc_hb_checker thread has exited */
156static DECLARE_COMPLETION(xpc_hb_checker_exited); 155static DECLARE_COMPLETION(xpc_hb_checker_exited);
@@ -170,62 +169,7 @@ static struct notifier_block xpc_die_notifier = {
170 .notifier_call = xpc_system_die, 169 .notifier_call = xpc_system_die,
171}; 170};
172 171
173int (*xpc_setup_partitions_sn) (void); 172struct xpc_arch_operations xpc_arch_ops;
174void (*xpc_teardown_partitions_sn) (void);
175enum xp_retval (*xpc_get_partition_rsvd_page_pa) (void *buf, u64 *cookie,
176 unsigned long *rp_pa,
177 size_t *len);
178int (*xpc_setup_rsvd_page_sn) (struct xpc_rsvd_page *rp);
179void (*xpc_heartbeat_init) (void);
180void (*xpc_heartbeat_exit) (void);
181void (*xpc_increment_heartbeat) (void);
182void (*xpc_offline_heartbeat) (void);
183void (*xpc_online_heartbeat) (void);
184enum xp_retval (*xpc_get_remote_heartbeat) (struct xpc_partition *part);
185
186enum xp_retval (*xpc_make_first_contact) (struct xpc_partition *part);
187void (*xpc_notify_senders_of_disconnect) (struct xpc_channel *ch);
188u64 (*xpc_get_chctl_all_flags) (struct xpc_partition *part);
189enum xp_retval (*xpc_setup_msg_structures) (struct xpc_channel *ch);
190void (*xpc_teardown_msg_structures) (struct xpc_channel *ch);
191void (*xpc_process_msg_chctl_flags) (struct xpc_partition *part, int ch_number);
192int (*xpc_n_of_deliverable_payloads) (struct xpc_channel *ch);
193void *(*xpc_get_deliverable_payload) (struct xpc_channel *ch);
194
195void (*xpc_request_partition_activation) (struct xpc_rsvd_page *remote_rp,
196 unsigned long remote_rp_pa,
197 int nasid);
198void (*xpc_request_partition_reactivation) (struct xpc_partition *part);
199void (*xpc_request_partition_deactivation) (struct xpc_partition *part);
200void (*xpc_cancel_partition_deactivation_request) (struct xpc_partition *part);
201
202void (*xpc_process_activate_IRQ_rcvd) (void);
203enum xp_retval (*xpc_setup_ch_structures_sn) (struct xpc_partition *part);
204void (*xpc_teardown_ch_structures_sn) (struct xpc_partition *part);
205
206void (*xpc_indicate_partition_engaged) (struct xpc_partition *part);
207int (*xpc_partition_engaged) (short partid);
208int (*xpc_any_partition_engaged) (void);
209void (*xpc_indicate_partition_disengaged) (struct xpc_partition *part);
210void (*xpc_assume_partition_disengaged) (short partid);
211
212void (*xpc_send_chctl_closerequest) (struct xpc_channel *ch,
213 unsigned long *irq_flags);
214void (*xpc_send_chctl_closereply) (struct xpc_channel *ch,
215 unsigned long *irq_flags);
216void (*xpc_send_chctl_openrequest) (struct xpc_channel *ch,
217 unsigned long *irq_flags);
218void (*xpc_send_chctl_openreply) (struct xpc_channel *ch,
219 unsigned long *irq_flags);
220
221enum xp_retval (*xpc_save_remote_msgqueue_pa) (struct xpc_channel *ch,
222 unsigned long msgqueue_pa);
223
224enum xp_retval (*xpc_send_payload) (struct xpc_channel *ch, u32 flags,
225 void *payload, u16 payload_size,
226 u8 notify_type, xpc_notify_func func,
227 void *key);
228void (*xpc_received_payload) (struct xpc_channel *ch, void *payload);
229 173
230/* 174/*
231 * Timer function to enforce the timelimit on the partition disengage. 175 * Timer function to enforce the timelimit on the partition disengage.
@@ -240,7 +184,7 @@ xpc_timeout_partition_disengage(unsigned long data)
240 (void)xpc_partition_disengaged(part); 184 (void)xpc_partition_disengaged(part);
241 185
242 DBUG_ON(part->disengage_timeout != 0); 186 DBUG_ON(part->disengage_timeout != 0);
243 DBUG_ON(xpc_partition_engaged(XPC_PARTID(part))); 187 DBUG_ON(xpc_arch_ops.partition_engaged(XPC_PARTID(part)));
244} 188}
245 189
246/* 190/*
@@ -251,7 +195,7 @@ xpc_timeout_partition_disengage(unsigned long data)
251static void 195static void
252xpc_hb_beater(unsigned long dummy) 196xpc_hb_beater(unsigned long dummy)
253{ 197{
254 xpc_increment_heartbeat(); 198 xpc_arch_ops.increment_heartbeat();
255 199
256 if (time_is_before_eq_jiffies(xpc_hb_check_timeout)) 200 if (time_is_before_eq_jiffies(xpc_hb_check_timeout))
257 wake_up_interruptible(&xpc_activate_IRQ_wq); 201 wake_up_interruptible(&xpc_activate_IRQ_wq);
@@ -263,7 +207,7 @@ xpc_hb_beater(unsigned long dummy)
263static void 207static void
264xpc_start_hb_beater(void) 208xpc_start_hb_beater(void)
265{ 209{
266 xpc_heartbeat_init(); 210 xpc_arch_ops.heartbeat_init();
267 init_timer(&xpc_hb_timer); 211 init_timer(&xpc_hb_timer);
268 xpc_hb_timer.function = xpc_hb_beater; 212 xpc_hb_timer.function = xpc_hb_beater;
269 xpc_hb_beater(0); 213 xpc_hb_beater(0);
@@ -273,7 +217,7 @@ static void
273xpc_stop_hb_beater(void) 217xpc_stop_hb_beater(void)
274{ 218{
275 del_timer_sync(&xpc_hb_timer); 219 del_timer_sync(&xpc_hb_timer);
276 xpc_heartbeat_exit(); 220 xpc_arch_ops.heartbeat_exit();
277} 221}
278 222
279/* 223/*
@@ -302,7 +246,7 @@ xpc_check_remote_hb(void)
302 continue; 246 continue;
303 } 247 }
304 248
305 ret = xpc_get_remote_heartbeat(part); 249 ret = xpc_arch_ops.get_remote_heartbeat(part);
306 if (ret != xpSuccess) 250 if (ret != xpSuccess)
307 XPC_DEACTIVATE_PARTITION(part, ret); 251 XPC_DEACTIVATE_PARTITION(part, ret);
308 } 252 }
@@ -353,7 +297,7 @@ xpc_hb_checker(void *ignore)
353 force_IRQ = 0; 297 force_IRQ = 0;
354 dev_dbg(xpc_part, "processing activate IRQs " 298 dev_dbg(xpc_part, "processing activate IRQs "
355 "received\n"); 299 "received\n");
356 xpc_process_activate_IRQ_rcvd(); 300 xpc_arch_ops.process_activate_IRQ_rcvd();
357 } 301 }
358 302
359 /* wait for IRQ or timeout */ 303 /* wait for IRQ or timeout */
@@ -528,7 +472,7 @@ xpc_setup_ch_structures(struct xpc_partition *part)
528 init_waitqueue_head(&ch->idle_wq); 472 init_waitqueue_head(&ch->idle_wq);
529 } 473 }
530 474
531 ret = xpc_setup_ch_structures_sn(part); 475 ret = xpc_arch_ops.setup_ch_structures(part);
532 if (ret != xpSuccess) 476 if (ret != xpSuccess)
533 goto out_2; 477 goto out_2;
534 478
@@ -572,7 +516,7 @@ xpc_teardown_ch_structures(struct xpc_partition *part)
572 516
573 /* now we can begin tearing down the infrastructure */ 517 /* now we can begin tearing down the infrastructure */
574 518
575 xpc_teardown_ch_structures_sn(part); 519 xpc_arch_ops.teardown_ch_structures(part);
576 520
577 kfree(part->remote_openclose_args_base); 521 kfree(part->remote_openclose_args_base);
578 part->remote_openclose_args = NULL; 522 part->remote_openclose_args = NULL;
@@ -620,12 +564,12 @@ xpc_activating(void *__partid)
620 564
621 dev_dbg(xpc_part, "activating partition %d\n", partid); 565 dev_dbg(xpc_part, "activating partition %d\n", partid);
622 566
623 xpc_allow_hb(partid); 567 xpc_arch_ops.allow_hb(partid);
624 568
625 if (xpc_setup_ch_structures(part) == xpSuccess) { 569 if (xpc_setup_ch_structures(part) == xpSuccess) {
626 (void)xpc_part_ref(part); /* this will always succeed */ 570 (void)xpc_part_ref(part); /* this will always succeed */
627 571
628 if (xpc_make_first_contact(part) == xpSuccess) { 572 if (xpc_arch_ops.make_first_contact(part) == xpSuccess) {
629 xpc_mark_partition_active(part); 573 xpc_mark_partition_active(part);
630 xpc_channel_mgr(part); 574 xpc_channel_mgr(part);
631 /* won't return until partition is deactivating */ 575 /* won't return until partition is deactivating */
@@ -635,12 +579,12 @@ xpc_activating(void *__partid)
635 xpc_teardown_ch_structures(part); 579 xpc_teardown_ch_structures(part);
636 } 580 }
637 581
638 xpc_disallow_hb(partid); 582 xpc_arch_ops.disallow_hb(partid);
639 xpc_mark_partition_inactive(part); 583 xpc_mark_partition_inactive(part);
640 584
641 if (part->reason == xpReactivating) { 585 if (part->reason == xpReactivating) {
642 /* interrupting ourselves results in activating partition */ 586 /* interrupting ourselves results in activating partition */
643 xpc_request_partition_reactivation(part); 587 xpc_arch_ops.request_partition_reactivation(part);
644 } 588 }
645 589
646 return 0; 590 return 0;
@@ -713,10 +657,13 @@ xpc_activate_kthreads(struct xpc_channel *ch, int needed)
713static void 657static void
714xpc_kthread_waitmsgs(struct xpc_partition *part, struct xpc_channel *ch) 658xpc_kthread_waitmsgs(struct xpc_partition *part, struct xpc_channel *ch)
715{ 659{
660 int (*n_of_deliverable_payloads) (struct xpc_channel *) =
661 xpc_arch_ops.n_of_deliverable_payloads;
662
716 do { 663 do {
717 /* deliver messages to their intended recipients */ 664 /* deliver messages to their intended recipients */
718 665
719 while (xpc_n_of_deliverable_payloads(ch) > 0 && 666 while (n_of_deliverable_payloads(ch) > 0 &&
720 !(ch->flags & XPC_C_DISCONNECTING)) { 667 !(ch->flags & XPC_C_DISCONNECTING)) {
721 xpc_deliver_payload(ch); 668 xpc_deliver_payload(ch);
722 } 669 }
@@ -732,7 +679,7 @@ xpc_kthread_waitmsgs(struct xpc_partition *part, struct xpc_channel *ch)
732 "wait_event_interruptible_exclusive()\n"); 679 "wait_event_interruptible_exclusive()\n");
733 680
734 (void)wait_event_interruptible_exclusive(ch->idle_wq, 681 (void)wait_event_interruptible_exclusive(ch->idle_wq,
735 (xpc_n_of_deliverable_payloads(ch) > 0 || 682 (n_of_deliverable_payloads(ch) > 0 ||
736 (ch->flags & XPC_C_DISCONNECTING))); 683 (ch->flags & XPC_C_DISCONNECTING)));
737 684
738 atomic_dec(&ch->kthreads_idle); 685 atomic_dec(&ch->kthreads_idle);
@@ -749,6 +696,8 @@ xpc_kthread_start(void *args)
749 struct xpc_channel *ch; 696 struct xpc_channel *ch;
750 int n_needed; 697 int n_needed;
751 unsigned long irq_flags; 698 unsigned long irq_flags;
699 int (*n_of_deliverable_payloads) (struct xpc_channel *) =
700 xpc_arch_ops.n_of_deliverable_payloads;
752 701
753 dev_dbg(xpc_chan, "kthread starting, partid=%d, channel=%d\n", 702 dev_dbg(xpc_chan, "kthread starting, partid=%d, channel=%d\n",
754 partid, ch_number); 703 partid, ch_number);
@@ -777,7 +726,7 @@ xpc_kthread_start(void *args)
777 * additional kthreads to help deliver them. We only 726 * additional kthreads to help deliver them. We only
778 * need one less than total #of messages to deliver. 727 * need one less than total #of messages to deliver.
779 */ 728 */
780 n_needed = xpc_n_of_deliverable_payloads(ch) - 1; 729 n_needed = n_of_deliverable_payloads(ch) - 1;
781 if (n_needed > 0 && !(ch->flags & XPC_C_DISCONNECTING)) 730 if (n_needed > 0 && !(ch->flags & XPC_C_DISCONNECTING))
782 xpc_activate_kthreads(ch, n_needed); 731 xpc_activate_kthreads(ch, n_needed);
783 732
@@ -805,7 +754,7 @@ xpc_kthread_start(void *args)
805 754
806 if (atomic_dec_return(&ch->kthreads_assigned) == 0 && 755 if (atomic_dec_return(&ch->kthreads_assigned) == 0 &&
807 atomic_dec_return(&part->nchannels_engaged) == 0) { 756 atomic_dec_return(&part->nchannels_engaged) == 0) {
808 xpc_indicate_partition_disengaged(part); 757 xpc_arch_ops.indicate_partition_disengaged(part);
809 } 758 }
810 759
811 xpc_msgqueue_deref(ch); 760 xpc_msgqueue_deref(ch);
@@ -837,6 +786,8 @@ xpc_create_kthreads(struct xpc_channel *ch, int needed,
837 u64 args = XPC_PACK_ARGS(ch->partid, ch->number); 786 u64 args = XPC_PACK_ARGS(ch->partid, ch->number);
838 struct xpc_partition *part = &xpc_partitions[ch->partid]; 787 struct xpc_partition *part = &xpc_partitions[ch->partid];
839 struct task_struct *kthread; 788 struct task_struct *kthread;
789 void (*indicate_partition_disengaged) (struct xpc_partition *) =
790 xpc_arch_ops.indicate_partition_disengaged;
840 791
841 while (needed-- > 0) { 792 while (needed-- > 0) {
842 793
@@ -858,7 +809,7 @@ xpc_create_kthreads(struct xpc_channel *ch, int needed,
858 809
859 } else if (atomic_inc_return(&ch->kthreads_assigned) == 1 && 810 } else if (atomic_inc_return(&ch->kthreads_assigned) == 1 &&
860 atomic_inc_return(&part->nchannels_engaged) == 1) { 811 atomic_inc_return(&part->nchannels_engaged) == 1) {
861 xpc_indicate_partition_engaged(part); 812 xpc_arch_ops.indicate_partition_engaged(part);
862 } 813 }
863 (void)xpc_part_ref(part); 814 (void)xpc_part_ref(part);
864 xpc_msgqueue_ref(ch); 815 xpc_msgqueue_ref(ch);
@@ -880,7 +831,7 @@ xpc_create_kthreads(struct xpc_channel *ch, int needed,
880 831
881 if (atomic_dec_return(&ch->kthreads_assigned) == 0 && 832 if (atomic_dec_return(&ch->kthreads_assigned) == 0 &&
882 atomic_dec_return(&part->nchannels_engaged) == 0) { 833 atomic_dec_return(&part->nchannels_engaged) == 0) {
883 xpc_indicate_partition_disengaged(part); 834 indicate_partition_disengaged(part);
884 } 835 }
885 xpc_msgqueue_deref(ch); 836 xpc_msgqueue_deref(ch);
886 xpc_part_deref(part); 837 xpc_part_deref(part);
@@ -993,13 +944,13 @@ xpc_setup_partitions(void)
993 atomic_set(&part->references, 0); 944 atomic_set(&part->references, 0);
994 } 945 }
995 946
996 return xpc_setup_partitions_sn(); 947 return xpc_arch_ops.setup_partitions();
997} 948}
998 949
999static void 950static void
1000xpc_teardown_partitions(void) 951xpc_teardown_partitions(void)
1001{ 952{
1002 xpc_teardown_partitions_sn(); 953 xpc_arch_ops.teardown_partitions();
1003 kfree(xpc_partitions); 954 kfree(xpc_partitions);
1004} 955}
1005 956
@@ -1055,7 +1006,7 @@ xpc_do_exit(enum xp_retval reason)
1055 disengage_timeout = part->disengage_timeout; 1006 disengage_timeout = part->disengage_timeout;
1056 } 1007 }
1057 1008
1058 if (xpc_any_partition_engaged()) { 1009 if (xpc_arch_ops.any_partition_engaged()) {
1059 if (time_is_before_jiffies(printmsg_time)) { 1010 if (time_is_before_jiffies(printmsg_time)) {
1060 dev_info(xpc_part, "waiting for remote " 1011 dev_info(xpc_part, "waiting for remote "
1061 "partitions to deactivate, timeout in " 1012 "partitions to deactivate, timeout in "
@@ -1086,8 +1037,7 @@ xpc_do_exit(enum xp_retval reason)
1086 1037
1087 } while (1); 1038 } while (1);
1088 1039
1089 DBUG_ON(xpc_any_partition_engaged()); 1040 DBUG_ON(xpc_arch_ops.any_partition_engaged());
1090 DBUG_ON(xpc_any_hbs_allowed() != 0);
1091 1041
1092 xpc_teardown_rsvd_page(); 1042 xpc_teardown_rsvd_page();
1093 1043
@@ -1152,15 +1102,15 @@ xpc_die_deactivate(void)
1152 /* keep xpc_hb_checker thread from doing anything (just in case) */ 1102 /* keep xpc_hb_checker thread from doing anything (just in case) */
1153 xpc_exiting = 1; 1103 xpc_exiting = 1;
1154 1104
1155 xpc_disallow_all_hbs(); /*indicate we're deactivated */ 1105 xpc_arch_ops.disallow_all_hbs(); /*indicate we're deactivated */
1156 1106
1157 for (partid = 0; partid < xp_max_npartitions; partid++) { 1107 for (partid = 0; partid < xp_max_npartitions; partid++) {
1158 part = &xpc_partitions[partid]; 1108 part = &xpc_partitions[partid];
1159 1109
1160 if (xpc_partition_engaged(partid) || 1110 if (xpc_arch_ops.partition_engaged(partid) ||
1161 part->act_state != XPC_P_AS_INACTIVE) { 1111 part->act_state != XPC_P_AS_INACTIVE) {
1162 xpc_request_partition_deactivation(part); 1112 xpc_arch_ops.request_partition_deactivation(part);
1163 xpc_indicate_partition_disengaged(part); 1113 xpc_arch_ops.indicate_partition_disengaged(part);
1164 } 1114 }
1165 } 1115 }
1166 1116
@@ -1177,7 +1127,7 @@ xpc_die_deactivate(void)
1177 wait_to_print = XPC_DEACTIVATE_PRINTMSG_INTERVAL * 1000 * 5; 1127 wait_to_print = XPC_DEACTIVATE_PRINTMSG_INTERVAL * 1000 * 5;
1178 1128
1179 while (1) { 1129 while (1) {
1180 any_engaged = xpc_any_partition_engaged(); 1130 any_engaged = xpc_arch_ops.any_partition_engaged();
1181 if (!any_engaged) { 1131 if (!any_engaged) {
1182 dev_info(xpc_part, "all partitions have deactivated\n"); 1132 dev_info(xpc_part, "all partitions have deactivated\n");
1183 break; 1133 break;
@@ -1186,7 +1136,7 @@ xpc_die_deactivate(void)
1186 if (!keep_waiting--) { 1136 if (!keep_waiting--) {
1187 for (partid = 0; partid < xp_max_npartitions; 1137 for (partid = 0; partid < xp_max_npartitions;
1188 partid++) { 1138 partid++) {
1189 if (xpc_partition_engaged(partid)) { 1139 if (xpc_arch_ops.partition_engaged(partid)) {
1190 dev_info(xpc_part, "deactivate from " 1140 dev_info(xpc_part, "deactivate from "
1191 "remote partition %d timed " 1141 "remote partition %d timed "
1192 "out\n", partid); 1142 "out\n", partid);
@@ -1233,7 +1183,7 @@ xpc_system_die(struct notifier_block *nb, unsigned long event, void *unused)
1233 /* fall through */ 1183 /* fall through */
1234 case DIE_MCA_MONARCH_ENTER: 1184 case DIE_MCA_MONARCH_ENTER:
1235 case DIE_INIT_MONARCH_ENTER: 1185 case DIE_INIT_MONARCH_ENTER:
1236 xpc_offline_heartbeat(); 1186 xpc_arch_ops.offline_heartbeat();
1237 break; 1187 break;
1238 1188
1239 case DIE_KDEBUG_LEAVE: 1189 case DIE_KDEBUG_LEAVE:
@@ -1244,7 +1194,7 @@ xpc_system_die(struct notifier_block *nb, unsigned long event, void *unused)
1244 /* fall through */ 1194 /* fall through */
1245 case DIE_MCA_MONARCH_LEAVE: 1195 case DIE_MCA_MONARCH_LEAVE:
1246 case DIE_INIT_MONARCH_LEAVE: 1196 case DIE_INIT_MONARCH_LEAVE:
1247 xpc_online_heartbeat(); 1197 xpc_arch_ops.online_heartbeat();
1248 break; 1198 break;
1249 } 1199 }
1250#else 1200#else
diff --git a/drivers/misc/sgi-xp/xpc_partition.c b/drivers/misc/sgi-xp/xpc_partition.c
index 6722f6fe4dc7..65877bc5edaa 100644
--- a/drivers/misc/sgi-xp/xpc_partition.c
+++ b/drivers/misc/sgi-xp/xpc_partition.c
@@ -70,6 +70,9 @@ xpc_get_rsvd_page_pa(int nasid)
70 size_t buf_len = 0; 70 size_t buf_len = 0;
71 void *buf = buf; 71 void *buf = buf;
72 void *buf_base = NULL; 72 void *buf_base = NULL;
73 enum xp_retval (*get_partition_rsvd_page_pa)
74 (void *, u64 *, unsigned long *, size_t *) =
75 xpc_arch_ops.get_partition_rsvd_page_pa;
73 76
74 while (1) { 77 while (1) {
75 78
@@ -79,8 +82,7 @@ xpc_get_rsvd_page_pa(int nasid)
79 * ??? function or have two versions? Rename rp_pa for UV to 82 * ??? function or have two versions? Rename rp_pa for UV to
80 * ??? rp_gpa? 83 * ??? rp_gpa?
81 */ 84 */
82 ret = xpc_get_partition_rsvd_page_pa(buf, &cookie, &rp_pa, 85 ret = get_partition_rsvd_page_pa(buf, &cookie, &rp_pa, &len);
83 &len);
84 86
85 dev_dbg(xpc_part, "SAL returned with ret=%d, cookie=0x%016lx, " 87 dev_dbg(xpc_part, "SAL returned with ret=%d, cookie=0x%016lx, "
86 "address=0x%016lx, len=0x%016lx\n", ret, 88 "address=0x%016lx, len=0x%016lx\n", ret,
@@ -172,7 +174,7 @@ xpc_setup_rsvd_page(void)
172 xpc_part_nasids = XPC_RP_PART_NASIDS(rp); 174 xpc_part_nasids = XPC_RP_PART_NASIDS(rp);
173 xpc_mach_nasids = XPC_RP_MACH_NASIDS(rp); 175 xpc_mach_nasids = XPC_RP_MACH_NASIDS(rp);
174 176
175 ret = xpc_setup_rsvd_page_sn(rp); 177 ret = xpc_arch_ops.setup_rsvd_page(rp);
176 if (ret != 0) 178 if (ret != 0)
177 return ret; 179 return ret;
178 180
@@ -264,7 +266,7 @@ xpc_partition_disengaged(struct xpc_partition *part)
264 short partid = XPC_PARTID(part); 266 short partid = XPC_PARTID(part);
265 int disengaged; 267 int disengaged;
266 268
267 disengaged = !xpc_partition_engaged(partid); 269 disengaged = !xpc_arch_ops.partition_engaged(partid);
268 if (part->disengage_timeout) { 270 if (part->disengage_timeout) {
269 if (!disengaged) { 271 if (!disengaged) {
270 if (time_is_after_jiffies(part->disengage_timeout)) { 272 if (time_is_after_jiffies(part->disengage_timeout)) {
@@ -280,7 +282,7 @@ xpc_partition_disengaged(struct xpc_partition *part)
280 dev_info(xpc_part, "deactivate request to remote " 282 dev_info(xpc_part, "deactivate request to remote "
281 "partition %d timed out\n", partid); 283 "partition %d timed out\n", partid);
282 xpc_disengage_timedout = 1; 284 xpc_disengage_timedout = 1;
283 xpc_assume_partition_disengaged(partid); 285 xpc_arch_ops.assume_partition_disengaged(partid);
284 disengaged = 1; 286 disengaged = 1;
285 } 287 }
286 part->disengage_timeout = 0; 288 part->disengage_timeout = 0;
@@ -294,7 +296,7 @@ xpc_partition_disengaged(struct xpc_partition *part)
294 if (part->act_state != XPC_P_AS_INACTIVE) 296 if (part->act_state != XPC_P_AS_INACTIVE)
295 xpc_wakeup_channel_mgr(part); 297 xpc_wakeup_channel_mgr(part);
296 298
297 xpc_cancel_partition_deactivation_request(part); 299 xpc_arch_ops.cancel_partition_deactivation_request(part);
298 } 300 }
299 return disengaged; 301 return disengaged;
300} 302}
@@ -339,7 +341,7 @@ xpc_deactivate_partition(const int line, struct xpc_partition *part,
339 spin_unlock_irqrestore(&part->act_lock, irq_flags); 341 spin_unlock_irqrestore(&part->act_lock, irq_flags);
340 if (reason == xpReactivating) { 342 if (reason == xpReactivating) {
341 /* we interrupt ourselves to reactivate partition */ 343 /* we interrupt ourselves to reactivate partition */
342 xpc_request_partition_reactivation(part); 344 xpc_arch_ops.request_partition_reactivation(part);
343 } 345 }
344 return; 346 return;
345 } 347 }
@@ -358,7 +360,7 @@ xpc_deactivate_partition(const int line, struct xpc_partition *part,
358 spin_unlock_irqrestore(&part->act_lock, irq_flags); 360 spin_unlock_irqrestore(&part->act_lock, irq_flags);
359 361
360 /* ask remote partition to deactivate with regard to us */ 362 /* ask remote partition to deactivate with regard to us */
361 xpc_request_partition_deactivation(part); 363 xpc_arch_ops.request_partition_deactivation(part);
362 364
363 /* set a timelimit on the disengage phase of the deactivation request */ 365 /* set a timelimit on the disengage phase of the deactivation request */
364 part->disengage_timeout = jiffies + (xpc_disengage_timelimit * HZ); 366 part->disengage_timeout = jiffies + (xpc_disengage_timelimit * HZ);
@@ -496,7 +498,7 @@ xpc_discovery(void)
496 continue; 498 continue;
497 } 499 }
498 500
499 xpc_request_partition_activation(remote_rp, 501 xpc_arch_ops.request_partition_activation(remote_rp,
500 remote_rp_pa, nasid); 502 remote_rp_pa, nasid);
501 } 503 }
502 } 504 }
diff --git a/drivers/misc/sgi-xp/xpc_sn2.c b/drivers/misc/sgi-xp/xpc_sn2.c
index eaaa964942de..915a3b495da5 100644
--- a/drivers/misc/sgi-xp/xpc_sn2.c
+++ b/drivers/misc/sgi-xp/xpc_sn2.c
@@ -3,7 +3,7 @@
3 * License. See the file "COPYING" in the main directory of this archive 3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details. 4 * for more details.
5 * 5 *
6 * Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. 6 * Copyright (c) 2008-2009 Silicon Graphics, Inc. All Rights Reserved.
7 */ 7 */
8 8
9/* 9/*
@@ -60,14 +60,14 @@ static struct xpc_vars_sn2 *xpc_vars_sn2;
60static struct xpc_vars_part_sn2 *xpc_vars_part_sn2; 60static struct xpc_vars_part_sn2 *xpc_vars_part_sn2;
61 61
62static int 62static int
63xpc_setup_partitions_sn_sn2(void) 63xpc_setup_partitions_sn2(void)
64{ 64{
65 /* nothing needs to be done */ 65 /* nothing needs to be done */
66 return 0; 66 return 0;
67} 67}
68 68
69static void 69static void
70xpc_teardown_partitions_sn_sn2(void) 70xpc_teardown_partitions_sn2(void)
71{ 71{
72 /* nothing needs to be done */ 72 /* nothing needs to be done */
73} 73}
@@ -431,6 +431,13 @@ xpc_send_chctl_openreply_sn2(struct xpc_channel *ch, unsigned long *irq_flags)
431} 431}
432 432
433static void 433static void
434xpc_send_chctl_opencomplete_sn2(struct xpc_channel *ch,
435 unsigned long *irq_flags)
436{
437 XPC_SEND_NOTIFY_IRQ_SN2(ch, XPC_CHCTL_OPENCOMPLETE, irq_flags);
438}
439
440static void
434xpc_send_chctl_msgrequest_sn2(struct xpc_channel *ch) 441xpc_send_chctl_msgrequest_sn2(struct xpc_channel *ch)
435{ 442{
436 XPC_SEND_NOTIFY_IRQ_SN2(ch, XPC_CHCTL_MSGREQUEST, NULL); 443 XPC_SEND_NOTIFY_IRQ_SN2(ch, XPC_CHCTL_MSGREQUEST, NULL);
@@ -621,7 +628,7 @@ xpc_get_partition_rsvd_page_pa_sn2(void *buf, u64 *cookie, unsigned long *rp_pa,
621 628
622 629
623static int 630static int
624xpc_setup_rsvd_page_sn_sn2(struct xpc_rsvd_page *rp) 631xpc_setup_rsvd_page_sn2(struct xpc_rsvd_page *rp)
625{ 632{
626 struct amo *amos_page; 633 struct amo *amos_page;
627 int i; 634 int i;
@@ -629,7 +636,7 @@ xpc_setup_rsvd_page_sn_sn2(struct xpc_rsvd_page *rp)
629 636
630 xpc_vars_sn2 = XPC_RP_VARS(rp); 637 xpc_vars_sn2 = XPC_RP_VARS(rp);
631 638
632 rp->sn.vars_pa = xp_pa(xpc_vars_sn2); 639 rp->sn.sn2.vars_pa = xp_pa(xpc_vars_sn2);
633 640
634 /* vars_part array follows immediately after vars */ 641 /* vars_part array follows immediately after vars */
635 xpc_vars_part_sn2 = (struct xpc_vars_part_sn2 *)((u8 *)XPC_RP_VARS(rp) + 642 xpc_vars_part_sn2 = (struct xpc_vars_part_sn2 *)((u8 *)XPC_RP_VARS(rp) +
@@ -693,6 +700,33 @@ xpc_setup_rsvd_page_sn_sn2(struct xpc_rsvd_page *rp)
693 return 0; 700 return 0;
694} 701}
695 702
703static int
704xpc_hb_allowed_sn2(short partid, void *heartbeating_to_mask)
705{
706 return test_bit(partid, heartbeating_to_mask);
707}
708
709static void
710xpc_allow_hb_sn2(short partid)
711{
712 DBUG_ON(xpc_vars_sn2 == NULL);
713 set_bit(partid, xpc_vars_sn2->heartbeating_to_mask);
714}
715
716static void
717xpc_disallow_hb_sn2(short partid)
718{
719 DBUG_ON(xpc_vars_sn2 == NULL);
720 clear_bit(partid, xpc_vars_sn2->heartbeating_to_mask);
721}
722
723static void
724xpc_disallow_all_hbs_sn2(void)
725{
726 DBUG_ON(xpc_vars_sn2 == NULL);
727 bitmap_zero(xpc_vars_sn2->heartbeating_to_mask, xp_max_npartitions);
728}
729
696static void 730static void
697xpc_increment_heartbeat_sn2(void) 731xpc_increment_heartbeat_sn2(void)
698{ 732{
@@ -719,7 +753,6 @@ xpc_heartbeat_init_sn2(void)
719 DBUG_ON(xpc_vars_sn2 == NULL); 753 DBUG_ON(xpc_vars_sn2 == NULL);
720 754
721 bitmap_zero(xpc_vars_sn2->heartbeating_to_mask, XP_MAX_NPARTITIONS_SN2); 755 bitmap_zero(xpc_vars_sn2->heartbeating_to_mask, XP_MAX_NPARTITIONS_SN2);
722 xpc_heartbeating_to_mask = &xpc_vars_sn2->heartbeating_to_mask[0];
723 xpc_online_heartbeat_sn2(); 756 xpc_online_heartbeat_sn2();
724} 757}
725 758
@@ -751,9 +784,9 @@ xpc_get_remote_heartbeat_sn2(struct xpc_partition *part)
751 remote_vars->heartbeating_to_mask[0]); 784 remote_vars->heartbeating_to_mask[0]);
752 785
753 if ((remote_vars->heartbeat == part->last_heartbeat && 786 if ((remote_vars->heartbeat == part->last_heartbeat &&
754 remote_vars->heartbeat_offline == 0) || 787 !remote_vars->heartbeat_offline) ||
755 !xpc_hb_allowed(sn_partition_id, 788 !xpc_hb_allowed_sn2(sn_partition_id,
756 &remote_vars->heartbeating_to_mask)) { 789 remote_vars->heartbeating_to_mask)) {
757 ret = xpNoHeartbeat; 790 ret = xpNoHeartbeat;
758 } else { 791 } else {
759 part->last_heartbeat = remote_vars->heartbeat; 792 part->last_heartbeat = remote_vars->heartbeat;
@@ -972,7 +1005,7 @@ xpc_identify_activate_IRQ_req_sn2(int nasid)
972 return; 1005 return;
973 } 1006 }
974 1007
975 remote_vars_pa = remote_rp->sn.vars_pa; 1008 remote_vars_pa = remote_rp->sn.sn2.vars_pa;
976 remote_rp_version = remote_rp->version; 1009 remote_rp_version = remote_rp->version;
977 remote_rp_ts_jiffies = remote_rp->ts_jiffies; 1010 remote_rp_ts_jiffies = remote_rp->ts_jiffies;
978 1011
@@ -1129,7 +1162,7 @@ xpc_process_activate_IRQ_rcvd_sn2(void)
1129 * Setup the channel structures that are sn2 specific. 1162 * Setup the channel structures that are sn2 specific.
1130 */ 1163 */
1131static enum xp_retval 1164static enum xp_retval
1132xpc_setup_ch_structures_sn_sn2(struct xpc_partition *part) 1165xpc_setup_ch_structures_sn2(struct xpc_partition *part)
1133{ 1166{
1134 struct xpc_partition_sn2 *part_sn2 = &part->sn.sn2; 1167 struct xpc_partition_sn2 *part_sn2 = &part->sn.sn2;
1135 struct xpc_channel_sn2 *ch_sn2; 1168 struct xpc_channel_sn2 *ch_sn2;
@@ -1251,7 +1284,7 @@ out_1:
1251 * Teardown the channel structures that are sn2 specific. 1284 * Teardown the channel structures that are sn2 specific.
1252 */ 1285 */
1253static void 1286static void
1254xpc_teardown_ch_structures_sn_sn2(struct xpc_partition *part) 1287xpc_teardown_ch_structures_sn2(struct xpc_partition *part)
1255{ 1288{
1256 struct xpc_partition_sn2 *part_sn2 = &part->sn.sn2; 1289 struct xpc_partition_sn2 *part_sn2 = &part->sn.sn2;
1257 short partid = XPC_PARTID(part); 1290 short partid = XPC_PARTID(part);
@@ -2315,61 +2348,70 @@ xpc_received_payload_sn2(struct xpc_channel *ch, void *payload)
2315 xpc_acknowledge_msgs_sn2(ch, get, msg->flags); 2348 xpc_acknowledge_msgs_sn2(ch, get, msg->flags);
2316} 2349}
2317 2350
2351static struct xpc_arch_operations xpc_arch_ops_sn2 = {
2352 .setup_partitions = xpc_setup_partitions_sn2,
2353 .teardown_partitions = xpc_teardown_partitions_sn2,
2354 .process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_sn2,
2355 .get_partition_rsvd_page_pa = xpc_get_partition_rsvd_page_pa_sn2,
2356 .setup_rsvd_page = xpc_setup_rsvd_page_sn2,
2357
2358 .allow_hb = xpc_allow_hb_sn2,
2359 .disallow_hb = xpc_disallow_hb_sn2,
2360 .disallow_all_hbs = xpc_disallow_all_hbs_sn2,
2361 .increment_heartbeat = xpc_increment_heartbeat_sn2,
2362 .offline_heartbeat = xpc_offline_heartbeat_sn2,
2363 .online_heartbeat = xpc_online_heartbeat_sn2,
2364 .heartbeat_init = xpc_heartbeat_init_sn2,
2365 .heartbeat_exit = xpc_heartbeat_exit_sn2,
2366 .get_remote_heartbeat = xpc_get_remote_heartbeat_sn2,
2367
2368 .request_partition_activation =
2369 xpc_request_partition_activation_sn2,
2370 .request_partition_reactivation =
2371 xpc_request_partition_reactivation_sn2,
2372 .request_partition_deactivation =
2373 xpc_request_partition_deactivation_sn2,
2374 .cancel_partition_deactivation_request =
2375 xpc_cancel_partition_deactivation_request_sn2,
2376
2377 .setup_ch_structures = xpc_setup_ch_structures_sn2,
2378 .teardown_ch_structures = xpc_teardown_ch_structures_sn2,
2379
2380 .make_first_contact = xpc_make_first_contact_sn2,
2381
2382 .get_chctl_all_flags = xpc_get_chctl_all_flags_sn2,
2383 .send_chctl_closerequest = xpc_send_chctl_closerequest_sn2,
2384 .send_chctl_closereply = xpc_send_chctl_closereply_sn2,
2385 .send_chctl_openrequest = xpc_send_chctl_openrequest_sn2,
2386 .send_chctl_openreply = xpc_send_chctl_openreply_sn2,
2387 .send_chctl_opencomplete = xpc_send_chctl_opencomplete_sn2,
2388 .process_msg_chctl_flags = xpc_process_msg_chctl_flags_sn2,
2389
2390 .save_remote_msgqueue_pa = xpc_save_remote_msgqueue_pa_sn2,
2391
2392 .setup_msg_structures = xpc_setup_msg_structures_sn2,
2393 .teardown_msg_structures = xpc_teardown_msg_structures_sn2,
2394
2395 .indicate_partition_engaged = xpc_indicate_partition_engaged_sn2,
2396 .indicate_partition_disengaged = xpc_indicate_partition_disengaged_sn2,
2397 .partition_engaged = xpc_partition_engaged_sn2,
2398 .any_partition_engaged = xpc_any_partition_engaged_sn2,
2399 .assume_partition_disengaged = xpc_assume_partition_disengaged_sn2,
2400
2401 .n_of_deliverable_payloads = xpc_n_of_deliverable_payloads_sn2,
2402 .send_payload = xpc_send_payload_sn2,
2403 .get_deliverable_payload = xpc_get_deliverable_payload_sn2,
2404 .received_payload = xpc_received_payload_sn2,
2405 .notify_senders_of_disconnect = xpc_notify_senders_of_disconnect_sn2,
2406};
2407
2318int 2408int
2319xpc_init_sn2(void) 2409xpc_init_sn2(void)
2320{ 2410{
2321 int ret; 2411 int ret;
2322 size_t buf_size; 2412 size_t buf_size;
2323 2413
2324 xpc_setup_partitions_sn = xpc_setup_partitions_sn_sn2; 2414 xpc_arch_ops = xpc_arch_ops_sn2;
2325 xpc_teardown_partitions_sn = xpc_teardown_partitions_sn_sn2;
2326 xpc_get_partition_rsvd_page_pa = xpc_get_partition_rsvd_page_pa_sn2;
2327 xpc_setup_rsvd_page_sn = xpc_setup_rsvd_page_sn_sn2;
2328 xpc_increment_heartbeat = xpc_increment_heartbeat_sn2;
2329 xpc_offline_heartbeat = xpc_offline_heartbeat_sn2;
2330 xpc_online_heartbeat = xpc_online_heartbeat_sn2;
2331 xpc_heartbeat_init = xpc_heartbeat_init_sn2;
2332 xpc_heartbeat_exit = xpc_heartbeat_exit_sn2;
2333 xpc_get_remote_heartbeat = xpc_get_remote_heartbeat_sn2;
2334
2335 xpc_request_partition_activation = xpc_request_partition_activation_sn2;
2336 xpc_request_partition_reactivation =
2337 xpc_request_partition_reactivation_sn2;
2338 xpc_request_partition_deactivation =
2339 xpc_request_partition_deactivation_sn2;
2340 xpc_cancel_partition_deactivation_request =
2341 xpc_cancel_partition_deactivation_request_sn2;
2342
2343 xpc_process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_sn2;
2344 xpc_setup_ch_structures_sn = xpc_setup_ch_structures_sn_sn2;
2345 xpc_teardown_ch_structures_sn = xpc_teardown_ch_structures_sn_sn2;
2346 xpc_make_first_contact = xpc_make_first_contact_sn2;
2347
2348 xpc_get_chctl_all_flags = xpc_get_chctl_all_flags_sn2;
2349 xpc_send_chctl_closerequest = xpc_send_chctl_closerequest_sn2;
2350 xpc_send_chctl_closereply = xpc_send_chctl_closereply_sn2;
2351 xpc_send_chctl_openrequest = xpc_send_chctl_openrequest_sn2;
2352 xpc_send_chctl_openreply = xpc_send_chctl_openreply_sn2;
2353
2354 xpc_save_remote_msgqueue_pa = xpc_save_remote_msgqueue_pa_sn2;
2355
2356 xpc_setup_msg_structures = xpc_setup_msg_structures_sn2;
2357 xpc_teardown_msg_structures = xpc_teardown_msg_structures_sn2;
2358
2359 xpc_notify_senders_of_disconnect = xpc_notify_senders_of_disconnect_sn2;
2360 xpc_process_msg_chctl_flags = xpc_process_msg_chctl_flags_sn2;
2361 xpc_n_of_deliverable_payloads = xpc_n_of_deliverable_payloads_sn2;
2362 xpc_get_deliverable_payload = xpc_get_deliverable_payload_sn2;
2363
2364 xpc_indicate_partition_engaged = xpc_indicate_partition_engaged_sn2;
2365 xpc_indicate_partition_disengaged =
2366 xpc_indicate_partition_disengaged_sn2;
2367 xpc_partition_engaged = xpc_partition_engaged_sn2;
2368 xpc_any_partition_engaged = xpc_any_partition_engaged_sn2;
2369 xpc_assume_partition_disengaged = xpc_assume_partition_disengaged_sn2;
2370
2371 xpc_send_payload = xpc_send_payload_sn2;
2372 xpc_received_payload = xpc_received_payload_sn2;
2373 2415
2374 if (offsetof(struct xpc_msg_sn2, payload) > XPC_MSG_HDR_MAX_SIZE) { 2416 if (offsetof(struct xpc_msg_sn2, payload) > XPC_MSG_HDR_MAX_SIZE) {
2375 dev_err(xpc_part, "header portion of struct xpc_msg_sn2 is " 2417 dev_err(xpc_part, "header portion of struct xpc_msg_sn2 is "
diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c
index f7fff4727edb..9172fcdee4e2 100644
--- a/drivers/misc/sgi-xp/xpc_uv.c
+++ b/drivers/misc/sgi-xp/xpc_uv.c
@@ -46,8 +46,7 @@ struct uv_IO_APIC_route_entry {
46}; 46};
47#endif 47#endif
48 48
49static atomic64_t xpc_heartbeat_uv; 49static struct xpc_heartbeat_uv *xpc_heartbeat_uv;
50static DECLARE_BITMAP(xpc_heartbeating_to_mask_uv, XP_MAX_NPARTITIONS_UV);
51 50
52#define XPC_ACTIVATE_MSG_SIZE_UV (1 * GRU_CACHE_LINE_BYTES) 51#define XPC_ACTIVATE_MSG_SIZE_UV (1 * GRU_CACHE_LINE_BYTES)
53#define XPC_ACTIVATE_MQ_SIZE_UV (4 * XP_MAX_NPARTITIONS_UV * \ 52#define XPC_ACTIVATE_MQ_SIZE_UV (4 * XP_MAX_NPARTITIONS_UV * \
@@ -63,7 +62,7 @@ static struct xpc_gru_mq_uv *xpc_activate_mq_uv;
63static struct xpc_gru_mq_uv *xpc_notify_mq_uv; 62static struct xpc_gru_mq_uv *xpc_notify_mq_uv;
64 63
65static int 64static int
66xpc_setup_partitions_sn_uv(void) 65xpc_setup_partitions_uv(void)
67{ 66{
68 short partid; 67 short partid;
69 struct xpc_partition_uv *part_uv; 68 struct xpc_partition_uv *part_uv;
@@ -79,7 +78,7 @@ xpc_setup_partitions_sn_uv(void)
79} 78}
80 79
81static void 80static void
82xpc_teardown_partitions_sn_uv(void) 81xpc_teardown_partitions_uv(void)
83{ 82{
84 short partid; 83 short partid;
85 struct xpc_partition_uv *part_uv; 84 struct xpc_partition_uv *part_uv;
@@ -423,41 +422,6 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
423 /* syncing of remote_act_state was just done above */ 422 /* syncing of remote_act_state was just done above */
424 break; 423 break;
425 424
426 case XPC_ACTIVATE_MQ_MSG_INC_HEARTBEAT_UV: {
427 struct xpc_activate_mq_msg_heartbeat_req_uv *msg;
428
429 msg = container_of(msg_hdr,
430 struct xpc_activate_mq_msg_heartbeat_req_uv,
431 hdr);
432 part_uv->heartbeat = msg->heartbeat;
433 break;
434 }
435 case XPC_ACTIVATE_MQ_MSG_OFFLINE_HEARTBEAT_UV: {
436 struct xpc_activate_mq_msg_heartbeat_req_uv *msg;
437
438 msg = container_of(msg_hdr,
439 struct xpc_activate_mq_msg_heartbeat_req_uv,
440 hdr);
441 part_uv->heartbeat = msg->heartbeat;
442
443 spin_lock_irqsave(&part_uv->flags_lock, irq_flags);
444 part_uv->flags |= XPC_P_HEARTBEAT_OFFLINE_UV;
445 spin_unlock_irqrestore(&part_uv->flags_lock, irq_flags);
446 break;
447 }
448 case XPC_ACTIVATE_MQ_MSG_ONLINE_HEARTBEAT_UV: {
449 struct xpc_activate_mq_msg_heartbeat_req_uv *msg;
450
451 msg = container_of(msg_hdr,
452 struct xpc_activate_mq_msg_heartbeat_req_uv,
453 hdr);
454 part_uv->heartbeat = msg->heartbeat;
455
456 spin_lock_irqsave(&part_uv->flags_lock, irq_flags);
457 part_uv->flags &= ~XPC_P_HEARTBEAT_OFFLINE_UV;
458 spin_unlock_irqrestore(&part_uv->flags_lock, irq_flags);
459 break;
460 }
461 case XPC_ACTIVATE_MQ_MSG_ACTIVATE_REQ_UV: { 425 case XPC_ACTIVATE_MQ_MSG_ACTIVATE_REQ_UV: {
462 struct xpc_activate_mq_msg_activate_req_uv *msg; 426 struct xpc_activate_mq_msg_activate_req_uv *msg;
463 427
@@ -475,6 +439,7 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
475 part_uv->act_state_req = XPC_P_ASR_ACTIVATE_UV; 439 part_uv->act_state_req = XPC_P_ASR_ACTIVATE_UV;
476 part->remote_rp_pa = msg->rp_gpa; /* !!! _pa is _gpa */ 440 part->remote_rp_pa = msg->rp_gpa; /* !!! _pa is _gpa */
477 part->remote_rp_ts_jiffies = msg_hdr->rp_ts_jiffies; 441 part->remote_rp_ts_jiffies = msg_hdr->rp_ts_jiffies;
442 part_uv->heartbeat_gpa = msg->heartbeat_gpa;
478 443
479 if (msg->activate_gru_mq_desc_gpa != 444 if (msg->activate_gru_mq_desc_gpa !=
480 part_uv->activate_gru_mq_desc_gpa) { 445 part_uv->activate_gru_mq_desc_gpa) {
@@ -569,6 +534,17 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
569 xpc_wakeup_channel_mgr(part); 534 xpc_wakeup_channel_mgr(part);
570 break; 535 break;
571 } 536 }
537 case XPC_ACTIVATE_MQ_MSG_CHCTL_OPENCOMPLETE_UV: {
538 struct xpc_activate_mq_msg_chctl_opencomplete_uv *msg;
539
540 msg = container_of(msg_hdr, struct
541 xpc_activate_mq_msg_chctl_opencomplete_uv, hdr);
542 spin_lock_irqsave(&part->chctl_lock, irq_flags);
543 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_OPENCOMPLETE;
544 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
545
546 xpc_wakeup_channel_mgr(part);
547 }
572 case XPC_ACTIVATE_MQ_MSG_MARK_ENGAGED_UV: 548 case XPC_ACTIVATE_MQ_MSG_MARK_ENGAGED_UV:
573 spin_lock_irqsave(&part_uv->flags_lock, irq_flags); 549 spin_lock_irqsave(&part_uv->flags_lock, irq_flags);
574 part_uv->flags |= XPC_P_ENGAGED_UV; 550 part_uv->flags |= XPC_P_ENGAGED_UV;
@@ -759,7 +735,7 @@ xpc_send_local_activate_IRQ_uv(struct xpc_partition *part, int act_state_req)
759 735
760 /* 736 /*
761 * !!! Make our side think that the remote partition sent an activate 737 * !!! Make our side think that the remote partition sent an activate
762 * !!! message our way by doing what the activate IRQ handler would 738 * !!! mq message our way by doing what the activate IRQ handler would
763 * !!! do had one really been sent. 739 * !!! do had one really been sent.
764 */ 740 */
765 741
@@ -806,90 +782,82 @@ xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa,
806} 782}
807 783
808static int 784static int
809xpc_setup_rsvd_page_sn_uv(struct xpc_rsvd_page *rp) 785xpc_setup_rsvd_page_uv(struct xpc_rsvd_page *rp)
810{ 786{
811 rp->sn.activate_gru_mq_desc_gpa = 787 xpc_heartbeat_uv =
788 &xpc_partitions[sn_partition_id].sn.uv.cached_heartbeat;
789 rp->sn.uv.heartbeat_gpa = uv_gpa(xpc_heartbeat_uv);
790 rp->sn.uv.activate_gru_mq_desc_gpa =
812 uv_gpa(xpc_activate_mq_uv->gru_mq_desc); 791 uv_gpa(xpc_activate_mq_uv->gru_mq_desc);
813 return 0; 792 return 0;
814} 793}
815 794
816static void 795static void
817xpc_send_heartbeat_uv(int msg_type) 796xpc_allow_hb_uv(short partid)
818{ 797{
819 short partid; 798}
820 struct xpc_partition *part;
821 struct xpc_activate_mq_msg_heartbeat_req_uv msg;
822
823 /*
824 * !!! On uv we're broadcasting a heartbeat message every 5 seconds.
825 * !!! Whereas on sn2 we're bte_copy'ng the heartbeat info every 20
826 * !!! seconds. This is an increase in numalink traffic.
827 * ??? Is this good?
828 */
829
830 msg.heartbeat = atomic64_inc_return(&xpc_heartbeat_uv);
831
832 partid = find_first_bit(xpc_heartbeating_to_mask_uv,
833 XP_MAX_NPARTITIONS_UV);
834
835 while (partid < XP_MAX_NPARTITIONS_UV) {
836 part = &xpc_partitions[partid];
837 799
838 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg), 800static void
839 msg_type); 801xpc_disallow_hb_uv(short partid)
802{
803}
840 804
841 partid = find_next_bit(xpc_heartbeating_to_mask_uv, 805static void
842 XP_MAX_NPARTITIONS_UV, partid + 1); 806xpc_disallow_all_hbs_uv(void)
843 } 807{
844} 808}
845 809
846static void 810static void
847xpc_increment_heartbeat_uv(void) 811xpc_increment_heartbeat_uv(void)
848{ 812{
849 xpc_send_heartbeat_uv(XPC_ACTIVATE_MQ_MSG_INC_HEARTBEAT_UV); 813 xpc_heartbeat_uv->value++;
850} 814}
851 815
852static void 816static void
853xpc_offline_heartbeat_uv(void) 817xpc_offline_heartbeat_uv(void)
854{ 818{
855 xpc_send_heartbeat_uv(XPC_ACTIVATE_MQ_MSG_OFFLINE_HEARTBEAT_UV); 819 xpc_increment_heartbeat_uv();
820 xpc_heartbeat_uv->offline = 1;
856} 821}
857 822
858static void 823static void
859xpc_online_heartbeat_uv(void) 824xpc_online_heartbeat_uv(void)
860{ 825{
861 xpc_send_heartbeat_uv(XPC_ACTIVATE_MQ_MSG_ONLINE_HEARTBEAT_UV); 826 xpc_increment_heartbeat_uv();
827 xpc_heartbeat_uv->offline = 0;
862} 828}
863 829
864static void 830static void
865xpc_heartbeat_init_uv(void) 831xpc_heartbeat_init_uv(void)
866{ 832{
867 atomic64_set(&xpc_heartbeat_uv, 0); 833 xpc_heartbeat_uv->value = 1;
868 bitmap_zero(xpc_heartbeating_to_mask_uv, XP_MAX_NPARTITIONS_UV); 834 xpc_heartbeat_uv->offline = 0;
869 xpc_heartbeating_to_mask = &xpc_heartbeating_to_mask_uv[0];
870} 835}
871 836
872static void 837static void
873xpc_heartbeat_exit_uv(void) 838xpc_heartbeat_exit_uv(void)
874{ 839{
875 xpc_send_heartbeat_uv(XPC_ACTIVATE_MQ_MSG_OFFLINE_HEARTBEAT_UV); 840 xpc_offline_heartbeat_uv();
876} 841}
877 842
878static enum xp_retval 843static enum xp_retval
879xpc_get_remote_heartbeat_uv(struct xpc_partition *part) 844xpc_get_remote_heartbeat_uv(struct xpc_partition *part)
880{ 845{
881 struct xpc_partition_uv *part_uv = &part->sn.uv; 846 struct xpc_partition_uv *part_uv = &part->sn.uv;
882 enum xp_retval ret = xpNoHeartbeat; 847 enum xp_retval ret;
883 848
884 if (part_uv->remote_act_state != XPC_P_AS_INACTIVE && 849 ret = xp_remote_memcpy(uv_gpa(&part_uv->cached_heartbeat),
885 part_uv->remote_act_state != XPC_P_AS_DEACTIVATING) { 850 part_uv->heartbeat_gpa,
851 sizeof(struct xpc_heartbeat_uv));
852 if (ret != xpSuccess)
853 return ret;
886 854
887 if (part_uv->heartbeat != part->last_heartbeat || 855 if (part_uv->cached_heartbeat.value == part->last_heartbeat &&
888 (part_uv->flags & XPC_P_HEARTBEAT_OFFLINE_UV)) { 856 !part_uv->cached_heartbeat.offline) {
889 857
890 part->last_heartbeat = part_uv->heartbeat; 858 ret = xpNoHeartbeat;
891 ret = xpSuccess; 859 } else {
892 } 860 part->last_heartbeat = part_uv->cached_heartbeat.value;
893 } 861 }
894 return ret; 862 return ret;
895} 863}
@@ -904,8 +872,9 @@ xpc_request_partition_activation_uv(struct xpc_rsvd_page *remote_rp,
904 872
905 part->remote_rp_pa = remote_rp_gpa; /* !!! _pa here is really _gpa */ 873 part->remote_rp_pa = remote_rp_gpa; /* !!! _pa here is really _gpa */
906 part->remote_rp_ts_jiffies = remote_rp->ts_jiffies; 874 part->remote_rp_ts_jiffies = remote_rp->ts_jiffies;
875 part->sn.uv.heartbeat_gpa = remote_rp->sn.uv.heartbeat_gpa;
907 part->sn.uv.activate_gru_mq_desc_gpa = 876 part->sn.uv.activate_gru_mq_desc_gpa =
908 remote_rp->sn.activate_gru_mq_desc_gpa; 877 remote_rp->sn.uv.activate_gru_mq_desc_gpa;
909 878
910 /* 879 /*
911 * ??? Is it a good idea to make this conditional on what is 880 * ??? Is it a good idea to make this conditional on what is
@@ -913,8 +882,9 @@ xpc_request_partition_activation_uv(struct xpc_rsvd_page *remote_rp,
913 */ 882 */
914 if (part->sn.uv.remote_act_state == XPC_P_AS_INACTIVE) { 883 if (part->sn.uv.remote_act_state == XPC_P_AS_INACTIVE) {
915 msg.rp_gpa = uv_gpa(xpc_rsvd_page); 884 msg.rp_gpa = uv_gpa(xpc_rsvd_page);
885 msg.heartbeat_gpa = xpc_rsvd_page->sn.uv.heartbeat_gpa;
916 msg.activate_gru_mq_desc_gpa = 886 msg.activate_gru_mq_desc_gpa =
917 xpc_rsvd_page->sn.activate_gru_mq_desc_gpa; 887 xpc_rsvd_page->sn.uv.activate_gru_mq_desc_gpa;
918 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg), 888 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
919 XPC_ACTIVATE_MQ_MSG_ACTIVATE_REQ_UV); 889 XPC_ACTIVATE_MQ_MSG_ACTIVATE_REQ_UV);
920 } 890 }
@@ -1010,7 +980,7 @@ xpc_n_of_fifo_entries_uv(struct xpc_fifo_head_uv *head)
1010 * Setup the channel structures that are uv specific. 980 * Setup the channel structures that are uv specific.
1011 */ 981 */
1012static enum xp_retval 982static enum xp_retval
1013xpc_setup_ch_structures_sn_uv(struct xpc_partition *part) 983xpc_setup_ch_structures_uv(struct xpc_partition *part)
1014{ 984{
1015 struct xpc_channel_uv *ch_uv; 985 struct xpc_channel_uv *ch_uv;
1016 int ch_number; 986 int ch_number;
@@ -1029,7 +999,7 @@ xpc_setup_ch_structures_sn_uv(struct xpc_partition *part)
1029 * Teardown the channel structures that are uv specific. 999 * Teardown the channel structures that are uv specific.
1030 */ 1000 */
1031static void 1001static void
1032xpc_teardown_ch_structures_sn_uv(struct xpc_partition *part) 1002xpc_teardown_ch_structures_uv(struct xpc_partition *part)
1033{ 1003{
1034 /* nothing needs to be done */ 1004 /* nothing needs to be done */
1035 return; 1005 return;
@@ -1243,6 +1213,16 @@ xpc_send_chctl_openreply_uv(struct xpc_channel *ch, unsigned long *irq_flags)
1243} 1213}
1244 1214
1245static void 1215static void
1216xpc_send_chctl_opencomplete_uv(struct xpc_channel *ch, unsigned long *irq_flags)
1217{
1218 struct xpc_activate_mq_msg_chctl_opencomplete_uv msg;
1219
1220 msg.ch_number = ch->number;
1221 xpc_send_activate_IRQ_ch_uv(ch, irq_flags, &msg, sizeof(msg),
1222 XPC_ACTIVATE_MQ_MSG_CHCTL_OPENCOMPLETE_UV);
1223}
1224
1225static void
1246xpc_send_chctl_local_msgrequest_uv(struct xpc_partition *part, int ch_number) 1226xpc_send_chctl_local_msgrequest_uv(struct xpc_partition *part, int ch_number)
1247{ 1227{
1248 unsigned long irq_flags; 1228 unsigned long irq_flags;
@@ -1669,58 +1649,67 @@ xpc_received_payload_uv(struct xpc_channel *ch, void *payload)
1669 msg->hdr.msg_slot_number += ch->remote_nentries; 1649 msg->hdr.msg_slot_number += ch->remote_nentries;
1670} 1650}
1671 1651
1652static struct xpc_arch_operations xpc_arch_ops_uv = {
1653 .setup_partitions = xpc_setup_partitions_uv,
1654 .teardown_partitions = xpc_teardown_partitions_uv,
1655 .process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_uv,
1656 .get_partition_rsvd_page_pa = xpc_get_partition_rsvd_page_pa_uv,
1657 .setup_rsvd_page = xpc_setup_rsvd_page_uv,
1658
1659 .allow_hb = xpc_allow_hb_uv,
1660 .disallow_hb = xpc_disallow_hb_uv,
1661 .disallow_all_hbs = xpc_disallow_all_hbs_uv,
1662 .increment_heartbeat = xpc_increment_heartbeat_uv,
1663 .offline_heartbeat = xpc_offline_heartbeat_uv,
1664 .online_heartbeat = xpc_online_heartbeat_uv,
1665 .heartbeat_init = xpc_heartbeat_init_uv,
1666 .heartbeat_exit = xpc_heartbeat_exit_uv,
1667 .get_remote_heartbeat = xpc_get_remote_heartbeat_uv,
1668
1669 .request_partition_activation =
1670 xpc_request_partition_activation_uv,
1671 .request_partition_reactivation =
1672 xpc_request_partition_reactivation_uv,
1673 .request_partition_deactivation =
1674 xpc_request_partition_deactivation_uv,
1675 .cancel_partition_deactivation_request =
1676 xpc_cancel_partition_deactivation_request_uv,
1677
1678 .setup_ch_structures = xpc_setup_ch_structures_uv,
1679 .teardown_ch_structures = xpc_teardown_ch_structures_uv,
1680
1681 .make_first_contact = xpc_make_first_contact_uv,
1682
1683 .get_chctl_all_flags = xpc_get_chctl_all_flags_uv,
1684 .send_chctl_closerequest = xpc_send_chctl_closerequest_uv,
1685 .send_chctl_closereply = xpc_send_chctl_closereply_uv,
1686 .send_chctl_openrequest = xpc_send_chctl_openrequest_uv,
1687 .send_chctl_openreply = xpc_send_chctl_openreply_uv,
1688 .send_chctl_opencomplete = xpc_send_chctl_opencomplete_uv,
1689 .process_msg_chctl_flags = xpc_process_msg_chctl_flags_uv,
1690
1691 .save_remote_msgqueue_pa = xpc_save_remote_msgqueue_pa_uv,
1692
1693 .setup_msg_structures = xpc_setup_msg_structures_uv,
1694 .teardown_msg_structures = xpc_teardown_msg_structures_uv,
1695
1696 .indicate_partition_engaged = xpc_indicate_partition_engaged_uv,
1697 .indicate_partition_disengaged = xpc_indicate_partition_disengaged_uv,
1698 .assume_partition_disengaged = xpc_assume_partition_disengaged_uv,
1699 .partition_engaged = xpc_partition_engaged_uv,
1700 .any_partition_engaged = xpc_any_partition_engaged_uv,
1701
1702 .n_of_deliverable_payloads = xpc_n_of_deliverable_payloads_uv,
1703 .send_payload = xpc_send_payload_uv,
1704 .get_deliverable_payload = xpc_get_deliverable_payload_uv,
1705 .received_payload = xpc_received_payload_uv,
1706 .notify_senders_of_disconnect = xpc_notify_senders_of_disconnect_uv,
1707};
1708
1672int 1709int
1673xpc_init_uv(void) 1710xpc_init_uv(void)
1674{ 1711{
1675 xpc_setup_partitions_sn = xpc_setup_partitions_sn_uv; 1712 xpc_arch_ops = xpc_arch_ops_uv;
1676 xpc_teardown_partitions_sn = xpc_teardown_partitions_sn_uv;
1677 xpc_process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_uv;
1678 xpc_get_partition_rsvd_page_pa = xpc_get_partition_rsvd_page_pa_uv;
1679 xpc_setup_rsvd_page_sn = xpc_setup_rsvd_page_sn_uv;
1680 xpc_increment_heartbeat = xpc_increment_heartbeat_uv;
1681 xpc_offline_heartbeat = xpc_offline_heartbeat_uv;
1682 xpc_online_heartbeat = xpc_online_heartbeat_uv;
1683 xpc_heartbeat_init = xpc_heartbeat_init_uv;
1684 xpc_heartbeat_exit = xpc_heartbeat_exit_uv;
1685 xpc_get_remote_heartbeat = xpc_get_remote_heartbeat_uv;
1686
1687 xpc_request_partition_activation = xpc_request_partition_activation_uv;
1688 xpc_request_partition_reactivation =
1689 xpc_request_partition_reactivation_uv;
1690 xpc_request_partition_deactivation =
1691 xpc_request_partition_deactivation_uv;
1692 xpc_cancel_partition_deactivation_request =
1693 xpc_cancel_partition_deactivation_request_uv;
1694
1695 xpc_setup_ch_structures_sn = xpc_setup_ch_structures_sn_uv;
1696 xpc_teardown_ch_structures_sn = xpc_teardown_ch_structures_sn_uv;
1697
1698 xpc_make_first_contact = xpc_make_first_contact_uv;
1699
1700 xpc_get_chctl_all_flags = xpc_get_chctl_all_flags_uv;
1701 xpc_send_chctl_closerequest = xpc_send_chctl_closerequest_uv;
1702 xpc_send_chctl_closereply = xpc_send_chctl_closereply_uv;
1703 xpc_send_chctl_openrequest = xpc_send_chctl_openrequest_uv;
1704 xpc_send_chctl_openreply = xpc_send_chctl_openreply_uv;
1705
1706 xpc_save_remote_msgqueue_pa = xpc_save_remote_msgqueue_pa_uv;
1707
1708 xpc_setup_msg_structures = xpc_setup_msg_structures_uv;
1709 xpc_teardown_msg_structures = xpc_teardown_msg_structures_uv;
1710
1711 xpc_indicate_partition_engaged = xpc_indicate_partition_engaged_uv;
1712 xpc_indicate_partition_disengaged =
1713 xpc_indicate_partition_disengaged_uv;
1714 xpc_assume_partition_disengaged = xpc_assume_partition_disengaged_uv;
1715 xpc_partition_engaged = xpc_partition_engaged_uv;
1716 xpc_any_partition_engaged = xpc_any_partition_engaged_uv;
1717
1718 xpc_n_of_deliverable_payloads = xpc_n_of_deliverable_payloads_uv;
1719 xpc_process_msg_chctl_flags = xpc_process_msg_chctl_flags_uv;
1720 xpc_send_payload = xpc_send_payload_uv;
1721 xpc_notify_senders_of_disconnect = xpc_notify_senders_of_disconnect_uv;
1722 xpc_get_deliverable_payload = xpc_get_deliverable_payload_uv;
1723 xpc_received_payload = xpc_received_payload_uv;
1724 1713
1725 if (sizeof(struct xpc_notify_mq_msghdr_uv) > XPC_MSG_HDR_MAX_SIZE) { 1714 if (sizeof(struct xpc_notify_mq_msghdr_uv) > XPC_MSG_HDR_MAX_SIZE) {
1726 dev_err(xpc_part, "xpc_notify_mq_msghdr_uv is larger than %d\n", 1715 dev_err(xpc_part, "xpc_notify_mq_msghdr_uv is larger than %d\n",
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index c232d11a7ed4..06084dbf1277 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -208,7 +208,7 @@ static int mmc_read_ext_csd(struct mmc_card *card)
208 } 208 }
209 209
210 ext_csd_struct = ext_csd[EXT_CSD_REV]; 210 ext_csd_struct = ext_csd[EXT_CSD_REV];
211 if (ext_csd_struct > 2) { 211 if (ext_csd_struct > 3) {
212 printk(KERN_ERR "%s: unrecognised EXT_CSD structure " 212 printk(KERN_ERR "%s: unrecognised EXT_CSD structure "
213 "version %d\n", mmc_hostname(card->host), 213 "version %d\n", mmc_hostname(card->host),
214 ext_csd_struct); 214 ext_csd_struct);
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 26fc098d77cd..cd81c395e164 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -363,15 +363,6 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
363 goto err; 363 goto err;
364 364
365 /* 365 /*
366 * For SPI, enable CRC as appropriate.
367 */
368 if (mmc_host_is_spi(host)) {
369 err = mmc_spi_set_crc(host, use_spi_crc);
370 if (err)
371 goto err;
372 }
373
374 /*
375 * Fetch CID from card. 366 * Fetch CID from card.
376 */ 367 */
377 if (mmc_host_is_spi(host)) 368 if (mmc_host_is_spi(host))
@@ -458,6 +449,18 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
458 } 449 }
459 450
460 /* 451 /*
452 * For SPI, enable CRC as appropriate.
453 * This CRC enable is located AFTER the reading of the
454 * card registers because some SDHC cards are not able
455 * to provide valid CRCs for non-512-byte blocks.
456 */
457 if (mmc_host_is_spi(host)) {
458 err = mmc_spi_set_crc(host, use_spi_crc);
459 if (err)
460 goto free_card;
461 }
462
463 /*
461 * Attempt to change to high-speed (if supported) 464 * Attempt to change to high-speed (if supported)
462 */ 465 */
463 err = mmc_switch_hs(card); 466 err = mmc_switch_hs(card);
diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c
index eb29b1d933ac..e0be21a4a696 100644
--- a/drivers/mmc/host/imxmmc.c
+++ b/drivers/mmc/host/imxmmc.c
@@ -307,13 +307,6 @@ static void imxmci_setup_data(struct imxmci_host *host, struct mmc_data *data)
307 307
308 wmb(); 308 wmb();
309 309
310 if (host->actual_bus_width == MMC_BUS_WIDTH_4)
311 BLR(host->dma) = 0; /* burst 64 byte read / 64 bytes write */
312 else
313 BLR(host->dma) = 16; /* burst 16 byte read / 16 bytes write */
314
315 RSSR(host->dma) = DMA_REQ_SDHC;
316
317 set_bit(IMXMCI_PEND_DMA_DATA_b, &host->pending_events); 310 set_bit(IMXMCI_PEND_DMA_DATA_b, &host->pending_events);
318 clear_bit(IMXMCI_PEND_CPU_DATA_b, &host->pending_events); 311 clear_bit(IMXMCI_PEND_CPU_DATA_b, &host->pending_events);
319 312
@@ -818,9 +811,11 @@ static void imxmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
818 if (ios->bus_width == MMC_BUS_WIDTH_4) { 811 if (ios->bus_width == MMC_BUS_WIDTH_4) {
819 host->actual_bus_width = MMC_BUS_WIDTH_4; 812 host->actual_bus_width = MMC_BUS_WIDTH_4;
820 imx_gpio_mode(PB11_PF_SD_DAT3); 813 imx_gpio_mode(PB11_PF_SD_DAT3);
814 BLR(host->dma) = 0; /* burst 64 byte read/write */
821 } else { 815 } else {
822 host->actual_bus_width = MMC_BUS_WIDTH_1; 816 host->actual_bus_width = MMC_BUS_WIDTH_1;
823 imx_gpio_mode(GPIO_PORTB | GPIO_IN | GPIO_PUEN | 11); 817 imx_gpio_mode(GPIO_PORTB | GPIO_IN | GPIO_PUEN | 11);
818 BLR(host->dma) = 16; /* burst 16 byte read/write */
824 } 819 }
825 820
826 if (host->power_mode != ios->power_mode) { 821 if (host->power_mode != ios->power_mode) {
@@ -938,7 +933,7 @@ static void imxmci_check_status(unsigned long data)
938 mod_timer(&host->timer, jiffies + (HZ>>1)); 933 mod_timer(&host->timer, jiffies + (HZ>>1));
939} 934}
940 935
941static int imxmci_probe(struct platform_device *pdev) 936static int __init imxmci_probe(struct platform_device *pdev)
942{ 937{
943 struct mmc_host *mmc; 938 struct mmc_host *mmc;
944 struct imxmci_host *host = NULL; 939 struct imxmci_host *host = NULL;
@@ -1034,6 +1029,7 @@ static int imxmci_probe(struct platform_device *pdev)
1034 } 1029 }
1035 host->dma_allocated = 1; 1030 host->dma_allocated = 1;
1036 imx_dma_setup_handlers(host->dma, imxmci_dma_irq, NULL, host); 1031 imx_dma_setup_handlers(host->dma, imxmci_dma_irq, NULL, host);
1032 RSSR(host->dma) = DMA_REQ_SDHC;
1037 1033
1038 tasklet_init(&host->tasklet, imxmci_tasklet_fnc, (unsigned long)host); 1034 tasklet_init(&host->tasklet, imxmci_tasklet_fnc, (unsigned long)host);
1039 host->status_reg=0; 1035 host->status_reg=0;
@@ -1079,7 +1075,7 @@ out:
1079 return ret; 1075 return ret;
1080} 1076}
1081 1077
1082static int imxmci_remove(struct platform_device *pdev) 1078static int __exit imxmci_remove(struct platform_device *pdev)
1083{ 1079{
1084 struct mmc_host *mmc = platform_get_drvdata(pdev); 1080 struct mmc_host *mmc = platform_get_drvdata(pdev);
1085 1081
@@ -1145,8 +1141,7 @@ static int imxmci_resume(struct platform_device *dev)
1145#endif /* CONFIG_PM */ 1141#endif /* CONFIG_PM */
1146 1142
1147static struct platform_driver imxmci_driver = { 1143static struct platform_driver imxmci_driver = {
1148 .probe = imxmci_probe, 1144 .remove = __exit_p(imxmci_remove),
1149 .remove = imxmci_remove,
1150 .suspend = imxmci_suspend, 1145 .suspend = imxmci_suspend,
1151 .resume = imxmci_resume, 1146 .resume = imxmci_resume,
1152 .driver = { 1147 .driver = {
@@ -1157,7 +1152,7 @@ static struct platform_driver imxmci_driver = {
1157 1152
1158static int __init imxmci_init(void) 1153static int __init imxmci_init(void)
1159{ 1154{
1160 return platform_driver_register(&imxmci_driver); 1155 return platform_driver_probe(&imxmci_driver, imxmci_probe);
1161} 1156}
1162 1157
1163static void __exit imxmci_exit(void) 1158static void __exit imxmci_exit(void)
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index 72f8bde4877a..f48349d18c92 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -24,7 +24,7 @@
24 * along with this program; if not, write to the Free Software 24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 */ 26 */
27#include <linux/hrtimer.h> 27#include <linux/sched.h>
28#include <linux/delay.h> 28#include <linux/delay.h>
29#include <linux/bio.h> 29#include <linux/bio.h>
30#include <linux/dma-mapping.h> 30#include <linux/dma-mapping.h>
@@ -95,7 +95,7 @@
95 * reads which takes nowhere near that long. Older cards may be able to use 95 * reads which takes nowhere near that long. Older cards may be able to use
96 * shorter timeouts ... but why bother? 96 * shorter timeouts ... but why bother?
97 */ 97 */
98#define r1b_timeout ktime_set(3, 0) 98#define r1b_timeout (HZ * 3)
99 99
100 100
101/****************************************************************************/ 101/****************************************************************************/
@@ -183,12 +183,11 @@ mmc_spi_readbytes(struct mmc_spi_host *host, unsigned len)
183 return status; 183 return status;
184} 184}
185 185
186static int 186static int mmc_spi_skip(struct mmc_spi_host *host, unsigned long timeout,
187mmc_spi_skip(struct mmc_spi_host *host, ktime_t timeout, unsigned n, u8 byte) 187 unsigned n, u8 byte)
188{ 188{
189 u8 *cp = host->data->status; 189 u8 *cp = host->data->status;
190 190 unsigned long start = jiffies;
191 timeout = ktime_add(timeout, ktime_get());
192 191
193 while (1) { 192 while (1) {
194 int status; 193 int status;
@@ -203,22 +202,26 @@ mmc_spi_skip(struct mmc_spi_host *host, ktime_t timeout, unsigned n, u8 byte)
203 return cp[i]; 202 return cp[i];
204 } 203 }
205 204
206 /* REVISIT investigate msleep() to avoid busy-wait I/O 205 if (time_is_before_jiffies(start + timeout))
207 * in at least some cases.
208 */
209 if (ktime_to_ns(ktime_sub(ktime_get(), timeout)) > 0)
210 break; 206 break;
207
208 /* If we need long timeouts, we may release the CPU.
209 * We use jiffies here because we want to have a relation
210 * between elapsed time and the blocking of the scheduler.
211 */
212 if (time_is_before_jiffies(start+1))
213 schedule();
211 } 214 }
212 return -ETIMEDOUT; 215 return -ETIMEDOUT;
213} 216}
214 217
215static inline int 218static inline int
216mmc_spi_wait_unbusy(struct mmc_spi_host *host, ktime_t timeout) 219mmc_spi_wait_unbusy(struct mmc_spi_host *host, unsigned long timeout)
217{ 220{
218 return mmc_spi_skip(host, timeout, sizeof(host->data->status), 0); 221 return mmc_spi_skip(host, timeout, sizeof(host->data->status), 0);
219} 222}
220 223
221static int mmc_spi_readtoken(struct mmc_spi_host *host, ktime_t timeout) 224static int mmc_spi_readtoken(struct mmc_spi_host *host, unsigned long timeout)
222{ 225{
223 return mmc_spi_skip(host, timeout, 1, 0xff); 226 return mmc_spi_skip(host, timeout, 1, 0xff);
224} 227}
@@ -251,6 +254,10 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,
251 u8 *cp = host->data->status; 254 u8 *cp = host->data->status;
252 u8 *end = cp + host->t.len; 255 u8 *end = cp + host->t.len;
253 int value = 0; 256 int value = 0;
257 int bitshift;
258 u8 leftover = 0;
259 unsigned short rotator;
260 int i;
254 char tag[32]; 261 char tag[32];
255 262
256 snprintf(tag, sizeof(tag), " ... CMD%d response SPI_%s", 263 snprintf(tag, sizeof(tag), " ... CMD%d response SPI_%s",
@@ -268,9 +275,8 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,
268 275
269 /* Data block reads (R1 response types) may need more data... */ 276 /* Data block reads (R1 response types) may need more data... */
270 if (cp == end) { 277 if (cp == end) {
271 unsigned i;
272
273 cp = host->data->status; 278 cp = host->data->status;
279 end = cp+1;
274 280
275 /* Card sends N(CR) (== 1..8) bytes of all-ones then one 281 /* Card sends N(CR) (== 1..8) bytes of all-ones then one
276 * status byte ... and we already scanned 2 bytes. 282 * status byte ... and we already scanned 2 bytes.
@@ -295,20 +301,34 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,
295 } 301 }
296 302
297checkstatus: 303checkstatus:
298 if (*cp & 0x80) { 304 bitshift = 0;
299 dev_dbg(&host->spi->dev, "%s: INVALID RESPONSE, %02x\n", 305 if (*cp & 0x80) {
300 tag, *cp); 306 /* Houston, we have an ugly card with a bit-shifted response */
301 value = -EBADR; 307 rotator = *cp++ << 8;
302 goto done; 308 /* read the next byte */
309 if (cp == end) {
310 value = mmc_spi_readbytes(host, 1);
311 if (value < 0)
312 goto done;
313 cp = host->data->status;
314 end = cp+1;
315 }
316 rotator |= *cp++;
317 while (rotator & 0x8000) {
318 bitshift++;
319 rotator <<= 1;
320 }
321 cmd->resp[0] = rotator >> 8;
322 leftover = rotator;
323 } else {
324 cmd->resp[0] = *cp++;
303 } 325 }
304
305 cmd->resp[0] = *cp++;
306 cmd->error = 0; 326 cmd->error = 0;
307 327
308 /* Status byte: the entire seven-bit R1 response. */ 328 /* Status byte: the entire seven-bit R1 response. */
309 if (cmd->resp[0] != 0) { 329 if (cmd->resp[0] != 0) {
310 if ((R1_SPI_PARAMETER | R1_SPI_ADDRESS 330 if ((R1_SPI_PARAMETER | R1_SPI_ADDRESS
311 | R1_SPI_ILLEGAL_COMMAND) 331 | R1_SPI_ILLEGAL_COMMAND)
312 & cmd->resp[0]) 332 & cmd->resp[0])
313 value = -EINVAL; 333 value = -EINVAL;
314 else if (R1_SPI_COM_CRC & cmd->resp[0]) 334 else if (R1_SPI_COM_CRC & cmd->resp[0])
@@ -336,12 +356,45 @@ checkstatus:
336 * SPI R5 == R1 + data byte; IO_RW_DIRECT 356 * SPI R5 == R1 + data byte; IO_RW_DIRECT
337 */ 357 */
338 case MMC_RSP_SPI_R2: 358 case MMC_RSP_SPI_R2:
339 cmd->resp[0] |= *cp << 8; 359 /* read the next byte */
360 if (cp == end) {
361 value = mmc_spi_readbytes(host, 1);
362 if (value < 0)
363 goto done;
364 cp = host->data->status;
365 end = cp+1;
366 }
367 if (bitshift) {
368 rotator = leftover << 8;
369 rotator |= *cp << bitshift;
370 cmd->resp[0] |= (rotator & 0xFF00);
371 } else {
372 cmd->resp[0] |= *cp << 8;
373 }
340 break; 374 break;
341 375
342 /* SPI R3, R4, or R7 == R1 + 4 bytes */ 376 /* SPI R3, R4, or R7 == R1 + 4 bytes */
343 case MMC_RSP_SPI_R3: 377 case MMC_RSP_SPI_R3:
344 cmd->resp[1] = get_unaligned_be32(cp); 378 rotator = leftover << 8;
379 cmd->resp[1] = 0;
380 for (i = 0; i < 4; i++) {
381 cmd->resp[1] <<= 8;
382 /* read the next byte */
383 if (cp == end) {
384 value = mmc_spi_readbytes(host, 1);
385 if (value < 0)
386 goto done;
387 cp = host->data->status;
388 end = cp+1;
389 }
390 if (bitshift) {
391 rotator |= *cp++ << bitshift;
392 cmd->resp[1] |= (rotator >> 8);
393 rotator <<= 8;
394 } else {
395 cmd->resp[1] |= *cp++;
396 }
397 }
345 break; 398 break;
346 399
347 /* SPI R1 == just one status byte */ 400 /* SPI R1 == just one status byte */
@@ -607,7 +660,7 @@ mmc_spi_setup_data_message(
607 */ 660 */
608static int 661static int
609mmc_spi_writeblock(struct mmc_spi_host *host, struct spi_transfer *t, 662mmc_spi_writeblock(struct mmc_spi_host *host, struct spi_transfer *t,
610 ktime_t timeout) 663 unsigned long timeout)
611{ 664{
612 struct spi_device *spi = host->spi; 665 struct spi_device *spi = host->spi;
613 int status, i; 666 int status, i;
@@ -717,11 +770,13 @@ mmc_spi_writeblock(struct mmc_spi_host *host, struct spi_transfer *t,
717 */ 770 */
718static int 771static int
719mmc_spi_readblock(struct mmc_spi_host *host, struct spi_transfer *t, 772mmc_spi_readblock(struct mmc_spi_host *host, struct spi_transfer *t,
720 ktime_t timeout) 773 unsigned long timeout)
721{ 774{
722 struct spi_device *spi = host->spi; 775 struct spi_device *spi = host->spi;
723 int status; 776 int status;
724 struct scratch *scratch = host->data; 777 struct scratch *scratch = host->data;
778 unsigned int bitshift;
779 u8 leftover;
725 780
726 /* At least one SD card sends an all-zeroes byte when N(CX) 781 /* At least one SD card sends an all-zeroes byte when N(CX)
727 * applies, before the all-ones bytes ... just cope with that. 782 * applies, before the all-ones bytes ... just cope with that.
@@ -733,38 +788,60 @@ mmc_spi_readblock(struct mmc_spi_host *host, struct spi_transfer *t,
733 if (status == 0xff || status == 0) 788 if (status == 0xff || status == 0)
734 status = mmc_spi_readtoken(host, timeout); 789 status = mmc_spi_readtoken(host, timeout);
735 790
736 if (status == SPI_TOKEN_SINGLE) { 791 if (status < 0) {
737 if (host->dma_dev) { 792 dev_dbg(&spi->dev, "read error %02x (%d)\n", status, status);
738 dma_sync_single_for_device(host->dma_dev, 793 return status;
739 host->data_dma, sizeof(*scratch), 794 }
740 DMA_BIDIRECTIONAL);
741 dma_sync_single_for_device(host->dma_dev,
742 t->rx_dma, t->len,
743 DMA_FROM_DEVICE);
744 }
745 795
746 status = spi_sync(spi, &host->m); 796 /* The token may be bit-shifted...
797 * the first 0-bit precedes the data stream.
798 */
799 bitshift = 7;
800 while (status & 0x80) {
801 status <<= 1;
802 bitshift--;
803 }
804 leftover = status << 1;
747 805
748 if (host->dma_dev) { 806 if (host->dma_dev) {
749 dma_sync_single_for_cpu(host->dma_dev, 807 dma_sync_single_for_device(host->dma_dev,
750 host->data_dma, sizeof(*scratch), 808 host->data_dma, sizeof(*scratch),
751 DMA_BIDIRECTIONAL); 809 DMA_BIDIRECTIONAL);
752 dma_sync_single_for_cpu(host->dma_dev, 810 dma_sync_single_for_device(host->dma_dev,
753 t->rx_dma, t->len, 811 t->rx_dma, t->len,
754 DMA_FROM_DEVICE); 812 DMA_FROM_DEVICE);
755 } 813 }
756 814
757 } else { 815 status = spi_sync(spi, &host->m);
758 dev_dbg(&spi->dev, "read error %02x (%d)\n", status, status);
759 816
760 /* we've read extra garbage, timed out, etc */ 817 if (host->dma_dev) {
761 if (status < 0) 818 dma_sync_single_for_cpu(host->dma_dev,
762 return status; 819 host->data_dma, sizeof(*scratch),
820 DMA_BIDIRECTIONAL);
821 dma_sync_single_for_cpu(host->dma_dev,
822 t->rx_dma, t->len,
823 DMA_FROM_DEVICE);
824 }
763 825
764 /* low four bits are an R2 subset, fifth seems to be 826 if (bitshift) {
765 * vendor specific ... map them all to generic error.. 827 /* Walk through the data and the crc and do
828 * all the magic to get byte-aligned data.
766 */ 829 */
767 return -EIO; 830 u8 *cp = t->rx_buf;
831 unsigned int len;
832 unsigned int bitright = 8 - bitshift;
833 u8 temp;
834 for (len = t->len; len; len--) {
835 temp = *cp;
836 *cp++ = leftover | (temp >> bitshift);
837 leftover = temp << bitright;
838 }
839 cp = (u8 *) &scratch->crc_val;
840 temp = *cp;
841 *cp++ = leftover | (temp >> bitshift);
842 leftover = temp << bitright;
843 temp = *cp;
844 *cp = leftover | (temp >> bitshift);
768 } 845 }
769 846
770 if (host->mmc->use_spi_crc) { 847 if (host->mmc->use_spi_crc) {
@@ -803,7 +880,7 @@ mmc_spi_data_do(struct mmc_spi_host *host, struct mmc_command *cmd,
803 unsigned n_sg; 880 unsigned n_sg;
804 int multiple = (data->blocks > 1); 881 int multiple = (data->blocks > 1);
805 u32 clock_rate; 882 u32 clock_rate;
806 ktime_t timeout; 883 unsigned long timeout;
807 884
808 if (data->flags & MMC_DATA_READ) 885 if (data->flags & MMC_DATA_READ)
809 direction = DMA_FROM_DEVICE; 886 direction = DMA_FROM_DEVICE;
@@ -817,8 +894,9 @@ mmc_spi_data_do(struct mmc_spi_host *host, struct mmc_command *cmd,
817 else 894 else
818 clock_rate = spi->max_speed_hz; 895 clock_rate = spi->max_speed_hz;
819 896
820 timeout = ktime_add_ns(ktime_set(0, 0), data->timeout_ns + 897 timeout = data->timeout_ns +
821 data->timeout_clks * 1000000 / clock_rate); 898 data->timeout_clks * 1000000 / clock_rate;
899 timeout = usecs_to_jiffies((unsigned int)(timeout / 1000)) + 1;
822 900
823 /* Handle scatterlist segments one at a time, with synch for 901 /* Handle scatterlist segments one at a time, with synch for
824 * each 512-byte block 902 * each 512-byte block
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index d183be6f2a5f..e62a22a7f00c 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -298,7 +298,6 @@ mmc_omap_xfer_done(struct mmc_omap_host *host, struct mmc_data *data)
298 struct mmc_request *mrq = host->mrq; 298 struct mmc_request *mrq = host->mrq;
299 299
300 host->mrq = NULL; 300 host->mrq = NULL;
301 mmc_omap_fclk_lazy_disable(host);
302 mmc_request_done(host->mmc, mrq); 301 mmc_request_done(host->mmc, mrq);
303 return; 302 return;
304 } 303 }
@@ -434,6 +433,8 @@ static irqreturn_t mmc_omap_irq(int irq, void *dev_id)
434 if (host->mrq == NULL) { 433 if (host->mrq == NULL) {
435 OMAP_HSMMC_WRITE(host->base, STAT, 434 OMAP_HSMMC_WRITE(host->base, STAT,
436 OMAP_HSMMC_READ(host->base, STAT)); 435 OMAP_HSMMC_READ(host->base, STAT));
436 /* Flush posted write */
437 OMAP_HSMMC_READ(host->base, STAT);
437 return IRQ_HANDLED; 438 return IRQ_HANDLED;
438 } 439 }
439 440
@@ -489,8 +490,10 @@ static irqreturn_t mmc_omap_irq(int irq, void *dev_id)
489 } 490 }
490 491
491 OMAP_HSMMC_WRITE(host->base, STAT, status); 492 OMAP_HSMMC_WRITE(host->base, STAT, status);
493 /* Flush posted write */
494 OMAP_HSMMC_READ(host->base, STAT);
492 495
493 if (end_cmd || (status & CC)) 496 if (end_cmd || ((status & CC) && host->cmd))
494 mmc_omap_cmd_done(host, host->cmd); 497 mmc_omap_cmd_done(host, host->cmd);
495 if (end_trans || (status & TC)) 498 if (end_trans || (status & TC))
496 mmc_omap_xfer_done(host, data); 499 mmc_omap_xfer_done(host, data);
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index c5b316e22371..cd37962ec44f 100644
--- a/drivers/mmc/host/sdhci-pci.c
+++ b/drivers/mmc/host/sdhci-pci.c
@@ -729,6 +729,6 @@ static void __exit sdhci_drv_exit(void)
729module_init(sdhci_drv_init); 729module_init(sdhci_drv_init);
730module_exit(sdhci_drv_exit); 730module_exit(sdhci_drv_exit);
731 731
732MODULE_AUTHOR("Pierre Ossman <drzeus@drzeus.cx>"); 732MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>");
733MODULE_DESCRIPTION("Secure Digital Host Controller Interface PCI driver"); 733MODULE_DESCRIPTION("Secure Digital Host Controller Interface PCI driver");
734MODULE_LICENSE("GPL"); 734MODULE_LICENSE("GPL");
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 30d8e3d4e6fd..9234be2226e7 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1935,7 +1935,7 @@ module_exit(sdhci_drv_exit);
1935 1935
1936module_param(debug_quirks, uint, 0444); 1936module_param(debug_quirks, uint, 0444);
1937 1937
1938MODULE_AUTHOR("Pierre Ossman <drzeus@drzeus.cx>"); 1938MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>");
1939MODULE_DESCRIPTION("Secure Digital Host Controller Interface core driver"); 1939MODULE_DESCRIPTION("Secure Digital Host Controller Interface core driver");
1940MODULE_LICENSE("GPL"); 1940MODULE_LICENSE("GPL");
1941 1941
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c
index adda37952032..89bf8cd25cac 100644
--- a/drivers/mmc/host/wbsd.c
+++ b/drivers/mmc/host/wbsd.c
@@ -2036,7 +2036,7 @@ module_param_named(irq, param_irq, uint, 0444);
2036module_param_named(dma, param_dma, int, 0444); 2036module_param_named(dma, param_dma, int, 0444);
2037 2037
2038MODULE_LICENSE("GPL"); 2038MODULE_LICENSE("GPL");
2039MODULE_AUTHOR("Pierre Ossman <drzeus@drzeus.cx>"); 2039MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>");
2040MODULE_DESCRIPTION("Winbond W83L51xD SD/MMC card interface driver"); 2040MODULE_DESCRIPTION("Winbond W83L51xD SD/MMC card interface driver");
2041 2041
2042#ifdef CONFIG_PNP 2042#ifdef CONFIG_PNP
diff --git a/drivers/mtd/nand/cafe_nand.c b/drivers/mtd/nand/cafe_nand.c
index 7c5b257ce8e4..29acd06b1c39 100644
--- a/drivers/mtd/nand/cafe_nand.c
+++ b/drivers/mtd/nand/cafe_nand.c
@@ -332,7 +332,7 @@ static void cafe_select_chip(struct mtd_info *mtd, int chipnr)
332 cafe->ctl1 &= ~CTRL1_CHIPSELECT; 332 cafe->ctl1 &= ~CTRL1_CHIPSELECT;
333} 333}
334 334
335static int cafe_nand_interrupt(int irq, void *id) 335static irqreturn_t cafe_nand_interrupt(int irq, void *id)
336{ 336{
337 struct mtd_info *mtd = id; 337 struct mtd_info *mtd = id;
338 struct cafe_priv *cafe = mtd->priv; 338 struct cafe_priv *cafe = mtd->priv;
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 29df398b7727..1fc45431a620 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -1383,6 +1383,11 @@ static void rtl8139_hw_start (struct net_device *dev)
1383 RTL_W32_F (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0))); 1383 RTL_W32_F (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0)));
1384 RTL_W32_F (MAC0 + 4, le16_to_cpu (*(__le16 *) (dev->dev_addr + 4))); 1384 RTL_W32_F (MAC0 + 4, le16_to_cpu (*(__le16 *) (dev->dev_addr + 4)));
1385 1385
1386 tp->cur_rx = 0;
1387
1388 /* init Rx ring buffer DMA address */
1389 RTL_W32_F (RxBuf, tp->rx_ring_dma);
1390
1386 /* Must enable Tx/Rx before setting transfer thresholds! */ 1391 /* Must enable Tx/Rx before setting transfer thresholds! */
1387 RTL_W8 (ChipCmd, CmdRxEnb | CmdTxEnb); 1392 RTL_W8 (ChipCmd, CmdRxEnb | CmdTxEnb);
1388 1393
@@ -1390,8 +1395,6 @@ static void rtl8139_hw_start (struct net_device *dev)
1390 RTL_W32 (RxConfig, tp->rx_config); 1395 RTL_W32 (RxConfig, tp->rx_config);
1391 RTL_W32 (TxConfig, rtl8139_tx_config); 1396 RTL_W32 (TxConfig, rtl8139_tx_config);
1392 1397
1393 tp->cur_rx = 0;
1394
1395 rtl_check_media (dev, 1); 1398 rtl_check_media (dev, 1);
1396 1399
1397 if (tp->chipset >= CH_8139B) { 1400 if (tp->chipset >= CH_8139B) {
@@ -1406,9 +1409,6 @@ static void rtl8139_hw_start (struct net_device *dev)
1406 /* Lock Config[01234] and BMCR register writes */ 1409 /* Lock Config[01234] and BMCR register writes */
1407 RTL_W8 (Cfg9346, Cfg9346_Lock); 1410 RTL_W8 (Cfg9346, Cfg9346_Lock);
1408 1411
1409 /* init Rx ring buffer DMA address */
1410 RTL_W32_F (RxBuf, tp->rx_ring_dma);
1411
1412 /* init Tx buffer DMA addresses */ 1412 /* init Tx buffer DMA addresses */
1413 for (i = 0; i < NUM_TX_DESC; i++) 1413 for (i = 0; i < NUM_TX_DESC; i++)
1414 RTL_W32_F (TxAddr0 + (i * 4), tp->tx_bufs_dma + (tp->tx_buf[i] - tp->tx_bufs)); 1414 RTL_W32_F (TxAddr0 + (i * 4), tp->tx_bufs_dma + (tp->tx_buf[i] - tp->tx_bufs));
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 9e7baec45720..214a92d1ef75 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -28,9 +28,9 @@ if NETDEVICES
28 28
29config COMPAT_NET_DEV_OPS 29config COMPAT_NET_DEV_OPS
30 default y 30 default y
31 bool "Enable older network device API compatiablity" 31 bool "Enable older network device API compatibility"
32 ---help--- 32 ---help---
33 This option enables kernel compatiability with older network devices 33 This option enables kernel compatibility with older network devices
34 that do not use net_device_ops interface. 34 that do not use net_device_ops interface.
35 35
36 If unsure, say Y. 36 If unsure, say Y.
@@ -977,6 +977,8 @@ config ETHOC
977 depends on NET_ETHERNET && HAS_IOMEM 977 depends on NET_ETHERNET && HAS_IOMEM
978 select MII 978 select MII
979 select PHYLIB 979 select PHYLIB
980 select CRC32
981 select BITREVERSE
980 help 982 help
981 Say Y here if you want to use the OpenCores 10/100 Mbps Ethernet MAC. 983 Say Y here if you want to use the OpenCores 10/100 Mbps Ethernet MAC.
982 984
@@ -2056,6 +2058,27 @@ config IGB_DCA
2056 driver. DCA is a method for warming the CPU cache before data 2058 driver. DCA is a method for warming the CPU cache before data
2057 is used, with the intent of lessening the impact of cache misses. 2059 is used, with the intent of lessening the impact of cache misses.
2058 2060
2061config IGBVF
2062 tristate "Intel(R) 82576 Virtual Function Ethernet support"
2063 depends on PCI
2064 ---help---
2065 This driver supports Intel(R) 82576 virtual functions. For more
2066 information on how to identify your adapter, go to the Adapter &
2067 Driver ID Guide at:
2068
2069 <http://support.intel.com/support/network/adapter/pro100/21397.htm>
2070
2071 For general information and support, go to the Intel support
2072 website at:
2073
2074 <http://support.intel.com>
2075
2076 More specific information on configuring the driver is in
2077 <file:Documentation/networking/e1000.txt>.
2078
2079 To compile this driver as a module, choose M here. The module
2080 will be called igbvf.
2081
2059source "drivers/net/ixp2000/Kconfig" 2082source "drivers/net/ixp2000/Kconfig"
2060 2083
2061config MYRI_SBUS 2084config MYRI_SBUS
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index edc9a0d6171d..1fc4602a6ff2 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -6,6 +6,7 @@ obj-$(CONFIG_E1000) += e1000/
6obj-$(CONFIG_E1000E) += e1000e/ 6obj-$(CONFIG_E1000E) += e1000e/
7obj-$(CONFIG_IBM_NEW_EMAC) += ibm_newemac/ 7obj-$(CONFIG_IBM_NEW_EMAC) += ibm_newemac/
8obj-$(CONFIG_IGB) += igb/ 8obj-$(CONFIG_IGB) += igb/
9obj-$(CONFIG_IGBVF) += igbvf/
9obj-$(CONFIG_IXGBE) += ixgbe/ 10obj-$(CONFIG_IXGBE) += ixgbe/
10obj-$(CONFIG_IXGB) += ixgb/ 11obj-$(CONFIG_IXGB) += ixgb/
11obj-$(CONFIG_IP1000) += ipg.o 12obj-$(CONFIG_IP1000) += ipg.o
diff --git a/drivers/net/a2065.c b/drivers/net/a2065.c
index d0d0c2fee054..02f64d578641 100644
--- a/drivers/net/a2065.c
+++ b/drivers/net/a2065.c
@@ -692,6 +692,17 @@ static struct zorro_driver a2065_driver = {
692 .remove = __devexit_p(a2065_remove_one), 692 .remove = __devexit_p(a2065_remove_one),
693}; 693};
694 694
695static const struct net_device_ops lance_netdev_ops = {
696 .ndo_open = lance_open,
697 .ndo_stop = lance_close,
698 .ndo_start_xmit = lance_start_xmit,
699 .ndo_tx_timeout = lance_tx_timeout,
700 .ndo_set_multicast_list = lance_set_multicast,
701 .ndo_validate_addr = eth_validate_addr,
702 .ndo_change_mtu = eth_change_mtu,
703 .ndo_set_mac_address = eth_mac_addr,
704};
705
695static int __devinit a2065_init_one(struct zorro_dev *z, 706static int __devinit a2065_init_one(struct zorro_dev *z,
696 const struct zorro_device_id *ent) 707 const struct zorro_device_id *ent)
697{ 708{
@@ -753,12 +764,8 @@ static int __devinit a2065_init_one(struct zorro_dev *z,
753 priv->rx_ring_mod_mask = RX_RING_MOD_MASK; 764 priv->rx_ring_mod_mask = RX_RING_MOD_MASK;
754 priv->tx_ring_mod_mask = TX_RING_MOD_MASK; 765 priv->tx_ring_mod_mask = TX_RING_MOD_MASK;
755 766
756 dev->open = &lance_open; 767 dev->netdev_ops = &lance_netdev_ops;
757 dev->stop = &lance_close;
758 dev->hard_start_xmit = &lance_start_xmit;
759 dev->tx_timeout = &lance_tx_timeout;
760 dev->watchdog_timeo = 5*HZ; 768 dev->watchdog_timeo = 5*HZ;
761 dev->set_multicast_list = &lance_set_multicast;
762 dev->dma = 0; 769 dev->dma = 0;
763 770
764 init_timer(&priv->multicast_timer); 771 init_timer(&priv->multicast_timer);
diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c
index e1d72e06f3e1..58e8d522e5bc 100644
--- a/drivers/net/ariadne.c
+++ b/drivers/net/ariadne.c
@@ -155,6 +155,18 @@ static struct zorro_driver ariadne_driver = {
155 .remove = __devexit_p(ariadne_remove_one), 155 .remove = __devexit_p(ariadne_remove_one),
156}; 156};
157 157
158static const struct net_device_ops ariadne_netdev_ops = {
159 .ndo_open = ariadne_open,
160 .ndo_stop = ariadne_close,
161 .ndo_start_xmit = ariadne_start_xmit,
162 .ndo_tx_timeout = ariadne_tx_timeout,
163 .ndo_get_stats = ariadne_get_stats,
164 .ndo_set_multicast_list = set_multicast_list,
165 .ndo_validate_addr = eth_validate_addr,
166 .ndo_change_mtu = eth_change_mtu,
167 .ndo_set_mac_address = eth_mac_addr,
168};
169
158static int __devinit ariadne_init_one(struct zorro_dev *z, 170static int __devinit ariadne_init_one(struct zorro_dev *z,
159 const struct zorro_device_id *ent) 171 const struct zorro_device_id *ent)
160{ 172{
@@ -197,13 +209,8 @@ static int __devinit ariadne_init_one(struct zorro_dev *z,
197 dev->mem_start = ZTWO_VADDR(mem_start); 209 dev->mem_start = ZTWO_VADDR(mem_start);
198 dev->mem_end = dev->mem_start+ARIADNE_RAM_SIZE; 210 dev->mem_end = dev->mem_start+ARIADNE_RAM_SIZE;
199 211
200 dev->open = &ariadne_open; 212 dev->netdev_ops = &ariadne_netdev_ops;
201 dev->stop = &ariadne_close;
202 dev->hard_start_xmit = &ariadne_start_xmit;
203 dev->tx_timeout = &ariadne_tx_timeout;
204 dev->watchdog_timeo = 5*HZ; 213 dev->watchdog_timeo = 5*HZ;
205 dev->get_stats = &ariadne_get_stats;
206 dev->set_multicast_list = &set_multicast_list;
207 214
208 err = register_netdev(dev); 215 err = register_netdev(dev);
209 if (err) { 216 if (err) {
diff --git a/drivers/net/arm/am79c961a.c b/drivers/net/arm/am79c961a.c
index 4bc6901b3819..627bc75da17d 100644
--- a/drivers/net/arm/am79c961a.c
+++ b/drivers/net/arm/am79c961a.c
@@ -665,6 +665,20 @@ static void __init am79c961_banner(void)
665 if (net_debug && version_printed++ == 0) 665 if (net_debug && version_printed++ == 0)
666 printk(KERN_INFO "%s", version); 666 printk(KERN_INFO "%s", version);
667} 667}
668static const struct net_device_ops am79c961_netdev_ops = {
669 .ndo_open = am79c961_open,
670 .ndo_stop = am79c961_close,
671 .ndo_start_xmit = am79c961_sendpacket,
672 .ndo_get_stats = am79c961_getstats,
673 .ndo_set_multicast_list = am79c961_setmulticastlist,
674 .ndo_tx_timeout = am79c961_timeout,
675 .ndo_validate_addr = eth_validate_addr,
676 .ndo_change_mtu = eth_change_mtu,
677 .ndo_set_mac_address = eth_mac_addr,
678#ifdef CONFIG_NET_POLL_CONTROLLER
679 .ndo_poll_controller = am79c961_poll_controller,
680#endif
681};
668 682
669static int __init am79c961_probe(struct platform_device *pdev) 683static int __init am79c961_probe(struct platform_device *pdev)
670{ 684{
@@ -732,15 +746,7 @@ static int __init am79c961_probe(struct platform_device *pdev)
732 if (am79c961_hw_init(dev)) 746 if (am79c961_hw_init(dev))
733 goto release; 747 goto release;
734 748
735 dev->open = am79c961_open; 749 dev->netdev_ops = &am79c961_netdev_ops;
736 dev->stop = am79c961_close;
737 dev->hard_start_xmit = am79c961_sendpacket;
738 dev->get_stats = am79c961_getstats;
739 dev->set_multicast_list = am79c961_setmulticastlist;
740 dev->tx_timeout = am79c961_timeout;
741#ifdef CONFIG_NET_POLL_CONTROLLER
742 dev->poll_controller = am79c961_poll_controller;
743#endif
744 750
745 ret = register_netdev(dev); 751 ret = register_netdev(dev);
746 if (ret == 0) { 752 if (ret == 0) {
diff --git a/drivers/net/arm/at91_ether.c b/drivers/net/arm/at91_ether.c
index 442938d50380..7f4bc8ae5462 100644
--- a/drivers/net/arm/at91_ether.c
+++ b/drivers/net/arm/at91_ether.c
@@ -577,7 +577,7 @@ static void at91ether_sethashtable(struct net_device *dev)
577/* 577/*
578 * Enable/Disable promiscuous and multicast modes. 578 * Enable/Disable promiscuous and multicast modes.
579 */ 579 */
580static void at91ether_set_rx_mode(struct net_device *dev) 580static void at91ether_set_multicast_list(struct net_device *dev)
581{ 581{
582 unsigned long cfg; 582 unsigned long cfg;
583 583
@@ -808,7 +808,7 @@ static int at91ether_close(struct net_device *dev)
808/* 808/*
809 * Transmit packet. 809 * Transmit packet.
810 */ 810 */
811static int at91ether_tx(struct sk_buff *skb, struct net_device *dev) 811static int at91ether_start_xmit(struct sk_buff *skb, struct net_device *dev)
812{ 812{
813 struct at91_private *lp = netdev_priv(dev); 813 struct at91_private *lp = netdev_priv(dev);
814 814
@@ -828,7 +828,7 @@ static int at91ether_tx(struct sk_buff *skb, struct net_device *dev)
828 828
829 dev->trans_start = jiffies; 829 dev->trans_start = jiffies;
830 } else { 830 } else {
831 printk(KERN_ERR "at91_ether.c: at91ether_tx() called, but device is busy!\n"); 831 printk(KERN_ERR "at91_ether.c: at91ether_start_xmit() called, but device is busy!\n");
832 return 1; /* if we return anything but zero, dev.c:1055 calls kfree_skb(skb) 832 return 1; /* if we return anything but zero, dev.c:1055 calls kfree_skb(skb)
833 on this skb, he also reports -ENETDOWN and printk's, so either 833 on this skb, he also reports -ENETDOWN and printk's, so either
834 we free and return(0) or don't free and return 1 */ 834 we free and return(0) or don't free and return 1 */
@@ -965,6 +965,21 @@ static void at91ether_poll_controller(struct net_device *dev)
965} 965}
966#endif 966#endif
967 967
968static const struct net_device_ops at91ether_netdev_ops = {
969 .ndo_open = at91ether_open,
970 .ndo_stop = at91ether_close,
971 .ndo_start_xmit = at91ether_start_xmit,
972 .ndo_get_stats = at91ether_stats,
973 .ndo_set_multicast_list = at91ether_set_multicast_list,
974 .ndo_set_mac_address = set_mac_address,
975 .ndo_do_ioctl = at91ether_ioctl,
976 .ndo_validate_addr = eth_validate_addr,
977 .ndo_change_mtu = eth_change_mtu,
978#ifdef CONFIG_NET_POLL_CONTROLLER
979 .ndo_poll_controller = at91ether_poll_controller,
980#endif
981};
982
968/* 983/*
969 * Initialize the ethernet interface 984 * Initialize the ethernet interface
970 */ 985 */
@@ -1005,17 +1020,8 @@ static int __init at91ether_setup(unsigned long phy_type, unsigned short phy_add
1005 spin_lock_init(&lp->lock); 1020 spin_lock_init(&lp->lock);
1006 1021
1007 ether_setup(dev); 1022 ether_setup(dev);
1008 dev->open = at91ether_open; 1023 dev->netdev_ops = &at91ether_netdev_ops;
1009 dev->stop = at91ether_close;
1010 dev->hard_start_xmit = at91ether_tx;
1011 dev->get_stats = at91ether_stats;
1012 dev->set_multicast_list = at91ether_set_rx_mode;
1013 dev->set_mac_address = set_mac_address;
1014 dev->ethtool_ops = &at91ether_ethtool_ops; 1024 dev->ethtool_ops = &at91ether_ethtool_ops;
1015 dev->do_ioctl = at91ether_ioctl;
1016#ifdef CONFIG_NET_POLL_CONTROLLER
1017 dev->poll_controller = at91ether_poll_controller;
1018#endif
1019 1025
1020 SET_NETDEV_DEV(dev, &pdev->dev); 1026 SET_NETDEV_DEV(dev, &pdev->dev);
1021 1027
diff --git a/drivers/net/arm/ep93xx_eth.c b/drivers/net/arm/ep93xx_eth.c
index cc7708775da0..b72b3d639f6e 100644
--- a/drivers/net/arm/ep93xx_eth.c
+++ b/drivers/net/arm/ep93xx_eth.c
@@ -153,7 +153,7 @@ struct ep93xx_descs
153struct ep93xx_priv 153struct ep93xx_priv
154{ 154{
155 struct resource *res; 155 struct resource *res;
156 void *base_addr; 156 void __iomem *base_addr;
157 int irq; 157 int irq;
158 158
159 struct ep93xx_descs *descs; 159 struct ep93xx_descs *descs;
@@ -770,7 +770,18 @@ static struct ethtool_ops ep93xx_ethtool_ops = {
770 .get_link = ep93xx_get_link, 770 .get_link = ep93xx_get_link,
771}; 771};
772 772
773struct net_device *ep93xx_dev_alloc(struct ep93xx_eth_data *data) 773static const struct net_device_ops ep93xx_netdev_ops = {
774 .ndo_open = ep93xx_open,
775 .ndo_stop = ep93xx_close,
776 .ndo_start_xmit = ep93xx_xmit,
777 .ndo_get_stats = ep93xx_get_stats,
778 .ndo_do_ioctl = ep93xx_ioctl,
779 .ndo_validate_addr = eth_validate_addr,
780 .ndo_change_mtu = eth_change_mtu,
781 .ndo_set_mac_address = eth_mac_addr,
782};
783
784static struct net_device *ep93xx_dev_alloc(struct ep93xx_eth_data *data)
774{ 785{
775 struct net_device *dev; 786 struct net_device *dev;
776 787
@@ -780,12 +791,8 @@ struct net_device *ep93xx_dev_alloc(struct ep93xx_eth_data *data)
780 791
781 memcpy(dev->dev_addr, data->dev_addr, ETH_ALEN); 792 memcpy(dev->dev_addr, data->dev_addr, ETH_ALEN);
782 793
783 dev->get_stats = ep93xx_get_stats;
784 dev->ethtool_ops = &ep93xx_ethtool_ops; 794 dev->ethtool_ops = &ep93xx_ethtool_ops;
785 dev->hard_start_xmit = ep93xx_xmit; 795 dev->netdev_ops = &ep93xx_netdev_ops;
786 dev->open = ep93xx_open;
787 dev->stop = ep93xx_close;
788 dev->do_ioctl = ep93xx_ioctl;
789 796
790 dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; 797 dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM;
791 798
diff --git a/drivers/net/arm/ether1.c b/drivers/net/arm/ether1.c
index e380de454463..edf770f639fa 100644
--- a/drivers/net/arm/ether1.c
+++ b/drivers/net/arm/ether1.c
@@ -991,6 +991,18 @@ static void __devinit ether1_banner(void)
991 printk(KERN_INFO "%s", version); 991 printk(KERN_INFO "%s", version);
992} 992}
993 993
994static const struct net_device_ops ether1_netdev_ops = {
995 .ndo_open = ether1_open,
996 .ndo_stop = ether1_close,
997 .ndo_start_xmit = ether1_sendpacket,
998 .ndo_get_stats = ether1_getstats,
999 .ndo_set_multicast_list = ether1_setmulticastlist,
1000 .ndo_tx_timeout = ether1_timeout,
1001 .ndo_validate_addr = eth_validate_addr,
1002 .ndo_change_mtu = eth_change_mtu,
1003 .ndo_set_mac_address = eth_mac_addr,
1004};
1005
994static int __devinit 1006static int __devinit
995ether1_probe(struct expansion_card *ec, const struct ecard_id *id) 1007ether1_probe(struct expansion_card *ec, const struct ecard_id *id)
996{ 1008{
@@ -1031,12 +1043,7 @@ ether1_probe(struct expansion_card *ec, const struct ecard_id *id)
1031 goto free; 1043 goto free;
1032 } 1044 }
1033 1045
1034 dev->open = ether1_open; 1046 dev->netdev_ops = &ether1_netdev_ops;
1035 dev->stop = ether1_close;
1036 dev->hard_start_xmit = ether1_sendpacket;
1037 dev->get_stats = ether1_getstats;
1038 dev->set_multicast_list = ether1_setmulticastlist;
1039 dev->tx_timeout = ether1_timeout;
1040 dev->watchdog_timeo = 5 * HZ / 100; 1047 dev->watchdog_timeo = 5 * HZ / 100;
1041 1048
1042 ret = register_netdev(dev); 1049 ret = register_netdev(dev);
diff --git a/drivers/net/arm/ether3.c b/drivers/net/arm/ether3.c
index 21a7bef12d3b..ec8a1ae1e887 100644
--- a/drivers/net/arm/ether3.c
+++ b/drivers/net/arm/ether3.c
@@ -770,6 +770,18 @@ static void __devinit ether3_banner(void)
770 printk(KERN_INFO "%s", version); 770 printk(KERN_INFO "%s", version);
771} 771}
772 772
773static const struct net_device_ops ether3_netdev_ops = {
774 .ndo_open = ether3_open,
775 .ndo_stop = ether3_close,
776 .ndo_start_xmit = ether3_sendpacket,
777 .ndo_get_stats = ether3_getstats,
778 .ndo_set_multicast_list = ether3_setmulticastlist,
779 .ndo_tx_timeout = ether3_timeout,
780 .ndo_validate_addr = eth_validate_addr,
781 .ndo_change_mtu = eth_change_mtu,
782 .ndo_set_mac_address = eth_mac_addr,
783};
784
773static int __devinit 785static int __devinit
774ether3_probe(struct expansion_card *ec, const struct ecard_id *id) 786ether3_probe(struct expansion_card *ec, const struct ecard_id *id)
775{ 787{
@@ -846,12 +858,7 @@ ether3_probe(struct expansion_card *ec, const struct ecard_id *id)
846 goto free; 858 goto free;
847 } 859 }
848 860
849 dev->open = ether3_open; 861 dev->netdev_ops = &ether3_netdev_ops;
850 dev->stop = ether3_close;
851 dev->hard_start_xmit = ether3_sendpacket;
852 dev->get_stats = ether3_getstats;
853 dev->set_multicast_list = ether3_setmulticastlist;
854 dev->tx_timeout = ether3_timeout;
855 dev->watchdog_timeo = 5 * HZ / 100; 862 dev->watchdog_timeo = 5 * HZ / 100;
856 863
857 ret = register_netdev(dev); 864 ret = register_netdev(dev);
diff --git a/drivers/net/atarilance.c b/drivers/net/atarilance.c
index 2d81f6afcb58..5425ab0c38c0 100644
--- a/drivers/net/atarilance.c
+++ b/drivers/net/atarilance.c
@@ -453,6 +453,16 @@ static noinline int __init addr_accessible(volatile void *regp, int wordflag,
453 return( ret ); 453 return( ret );
454} 454}
455 455
456static const struct net_device_ops lance_netdev_ops = {
457 .ndo_open = lance_open,
458 .ndo_stop = lance_close,
459 .ndo_start_xmit = lance_start_xmit,
460 .ndo_set_multicast_list = set_multicast_list,
461 .ndo_set_mac_address = lance_set_mac_address,
462 .ndo_tx_timeout = lance_tx_timeout,
463 .ndo_validate_addr = eth_validate_addr,
464 .ndo_change_mtu = eth_change_mtu,
465};
456 466
457static unsigned long __init lance_probe1( struct net_device *dev, 467static unsigned long __init lance_probe1( struct net_device *dev,
458 struct lance_addr *init_rec ) 468 struct lance_addr *init_rec )
@@ -623,15 +633,9 @@ static unsigned long __init lance_probe1( struct net_device *dev,
623 if (did_version++ == 0) 633 if (did_version++ == 0)
624 DPRINTK( 1, ( version )); 634 DPRINTK( 1, ( version ));
625 635
626 /* The LANCE-specific entries in the device structure. */ 636 dev->netdev_ops = &lance_netdev_ops;
627 dev->open = &lance_open;
628 dev->hard_start_xmit = &lance_start_xmit;
629 dev->stop = &lance_close;
630 dev->set_multicast_list = &set_multicast_list;
631 dev->set_mac_address = &lance_set_mac_address;
632 637
633 /* XXX MSch */ 638 /* XXX MSch */
634 dev->tx_timeout = lance_tx_timeout;
635 dev->watchdog_timeo = TX_TIMEOUT; 639 dev->watchdog_timeo = TX_TIMEOUT;
636 640
637 return( 1 ); 641 return( 1 );
diff --git a/drivers/net/atl1c/atl1c_main.c b/drivers/net/atl1c/atl1c_main.c
index deb7b53167ee..83a12125b94e 100644
--- a/drivers/net/atl1c/atl1c_main.c
+++ b/drivers/net/atl1c/atl1c_main.c
@@ -2532,8 +2532,8 @@ static int __devinit atl1c_probe(struct pci_dev *pdev,
2532 * various kernel subsystems to support the mechanics required by a 2532 * various kernel subsystems to support the mechanics required by a
2533 * fixed-high-32-bit system. 2533 * fixed-high-32-bit system.
2534 */ 2534 */
2535 if ((pci_set_dma_mask(pdev, DMA_32BIT_MASK) != 0) || 2535 if ((pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0) ||
2536 (pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK) != 0)) { 2536 (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) != 0)) {
2537 dev_err(&pdev->dev, "No usable DMA configuration,aborting\n"); 2537 dev_err(&pdev->dev, "No usable DMA configuration,aborting\n");
2538 goto err_dma; 2538 goto err_dma;
2539 } 2539 }
diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
index 4274e4ac963b..d58c105fc779 100644
--- a/drivers/net/au1000_eth.c
+++ b/drivers/net/au1000_eth.c
@@ -1004,12 +1004,12 @@ static void au1000_tx_timeout(struct net_device *dev)
1004 netif_wake_queue(dev); 1004 netif_wake_queue(dev);
1005} 1005}
1006 1006
1007static void set_rx_mode(struct net_device *dev) 1007static void au1000_multicast_list(struct net_device *dev)
1008{ 1008{
1009 struct au1000_private *aup = netdev_priv(dev); 1009 struct au1000_private *aup = netdev_priv(dev);
1010 1010
1011 if (au1000_debug > 4) 1011 if (au1000_debug > 4)
1012 printk("%s: set_rx_mode: flags=%x\n", dev->name, dev->flags); 1012 printk("%s: au1000_multicast_list: flags=%x\n", dev->name, dev->flags);
1013 1013
1014 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ 1014 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
1015 aup->mac->control |= MAC_PROMISCUOUS; 1015 aup->mac->control |= MAC_PROMISCUOUS;
@@ -1047,6 +1047,18 @@ static int au1000_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
1047 return phy_mii_ioctl(aup->phy_dev, if_mii(rq), cmd); 1047 return phy_mii_ioctl(aup->phy_dev, if_mii(rq), cmd);
1048} 1048}
1049 1049
1050static const struct net_device_ops au1000_netdev_ops = {
1051 .ndo_open = au1000_open,
1052 .ndo_stop = au1000_close,
1053 .ndo_start_xmit = au1000_tx,
1054 .ndo_set_multicast_list = au1000_multicast_list,
1055 .ndo_do_ioctl = au1000_ioctl,
1056 .ndo_tx_timeout = au1000_tx_timeout,
1057 .ndo_set_mac_address = eth_mac_addr,
1058 .ndo_validate_addr = eth_validate_addr,
1059 .ndo_change_mtu = eth_change_mtu,
1060};
1061
1050static struct net_device * au1000_probe(int port_num) 1062static struct net_device * au1000_probe(int port_num)
1051{ 1063{
1052 static unsigned version_printed = 0; 1064 static unsigned version_printed = 0;
@@ -1197,13 +1209,8 @@ static struct net_device * au1000_probe(int port_num)
1197 1209
1198 dev->base_addr = base; 1210 dev->base_addr = base;
1199 dev->irq = irq; 1211 dev->irq = irq;
1200 dev->open = au1000_open; 1212 dev->netdev_ops = &au1000_netdev_ops;
1201 dev->hard_start_xmit = au1000_tx;
1202 dev->stop = au1000_close;
1203 dev->set_multicast_list = &set_rx_mode;
1204 dev->do_ioctl = &au1000_ioctl;
1205 SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops); 1213 SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops);
1206 dev->tx_timeout = au1000_tx_timeout;
1207 dev->watchdog_timeo = ETH_TX_TIMEOUT; 1214 dev->watchdog_timeo = ETH_TX_TIMEOUT;
1208 1215
1209 /* 1216 /*
diff --git a/drivers/net/benet/be_ethtool.c b/drivers/net/benet/be_ethtool.c
index 04f4b73fa8d8..9592f22e4c8c 100644
--- a/drivers/net/benet/be_ethtool.c
+++ b/drivers/net/benet/be_ethtool.c
@@ -319,7 +319,7 @@ be_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
319 319
320 be_cmd_get_flow_control(&adapter->ctrl, &ecmd->tx_pause, 320 be_cmd_get_flow_control(&adapter->ctrl, &ecmd->tx_pause,
321 &ecmd->rx_pause); 321 &ecmd->rx_pause);
322 ecmd->autoneg = AUTONEG_ENABLE; 322 ecmd->autoneg = 0;
323} 323}
324 324
325static int 325static int
@@ -328,7 +328,7 @@ be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
328 struct be_adapter *adapter = netdev_priv(netdev); 328 struct be_adapter *adapter = netdev_priv(netdev);
329 int status; 329 int status;
330 330
331 if (ecmd->autoneg != AUTONEG_ENABLE) 331 if (ecmd->autoneg != 0)
332 return -EINVAL; 332 return -EINVAL;
333 333
334 status = be_cmd_set_flow_control(&adapter->ctrl, ecmd->tx_pause, 334 status = be_cmd_set_flow_control(&adapter->ctrl, ecmd->tx_pause,
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 9b75aa630062..30d0c81c989e 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1821,11 +1821,11 @@ static int __devinit be_probe(struct pci_dev *pdev,
1821 1821
1822 be_msix_enable(adapter); 1822 be_msix_enable(adapter);
1823 1823
1824 status = pci_set_dma_mask(pdev, DMA_64BIT_MASK); 1824 status = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
1825 if (!status) { 1825 if (!status) {
1826 netdev->features |= NETIF_F_HIGHDMA; 1826 netdev->features |= NETIF_F_HIGHDMA;
1827 } else { 1827 } else {
1828 status = pci_set_dma_mask(pdev, DMA_32BIT_MASK); 1828 status = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
1829 if (status) { 1829 if (status) {
1830 dev_err(&pdev->dev, "Could not set PCI DMA Mask\n"); 1830 dev_err(&pdev->dev, "Could not set PCI DMA Mask\n");
1831 goto free_netdev; 1831 goto free_netdev;
diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 9afe8092dfc4..9f971ed6b58d 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -979,6 +979,20 @@ static int bfin_mac_open(struct net_device *dev)
979 return 0; 979 return 0;
980} 980}
981 981
982static const struct net_device_ops bfin_mac_netdev_ops = {
983 .ndo_open = bfin_mac_open,
984 .ndo_stop = bfin_mac_close,
985 .ndo_start_xmit = bfin_mac_hard_start_xmit,
986 .ndo_set_mac_address = bfin_mac_set_mac_address,
987 .ndo_tx_timeout = bfin_mac_timeout,
988 .ndo_set_multicast_list = bfin_mac_set_multicast_list,
989 .ndo_validate_addr = eth_validate_addr,
990 .ndo_change_mtu = eth_change_mtu,
991#ifdef CONFIG_NET_POLL_CONTROLLER
992 .ndo_poll_controller = bfin_mac_poll,
993#endif
994};
995
982/* 996/*
983 * 997 *
984 * this makes the board clean up everything that it can 998 * this makes the board clean up everything that it can
@@ -1086,15 +1100,7 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
1086 /* Fill in the fields of the device structure with ethernet values. */ 1100 /* Fill in the fields of the device structure with ethernet values. */
1087 ether_setup(ndev); 1101 ether_setup(ndev);
1088 1102
1089 ndev->open = bfin_mac_open; 1103 ndev->netdev_ops = &bfin_mac_netdev_ops;
1090 ndev->stop = bfin_mac_close;
1091 ndev->hard_start_xmit = bfin_mac_hard_start_xmit;
1092 ndev->set_mac_address = bfin_mac_set_mac_address;
1093 ndev->tx_timeout = bfin_mac_timeout;
1094 ndev->set_multicast_list = bfin_mac_set_multicast_list;
1095#ifdef CONFIG_NET_POLL_CONTROLLER
1096 ndev->poll_controller = bfin_mac_poll;
1097#endif
1098 ndev->ethtool_ops = &bfin_mac_ethtool_ops; 1104 ndev->ethtool_ops = &bfin_mac_ethtool_ops;
1099 1105
1100 spin_lock_init(&lp->lock); 1106 spin_lock_init(&lp->lock);
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 9d268be0b670..d47839184a06 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -3427,8 +3427,8 @@ static int __devinit
3427bnx2_request_firmware(struct bnx2 *bp) 3427bnx2_request_firmware(struct bnx2 *bp)
3428{ 3428{
3429 const char *mips_fw_file, *rv2p_fw_file; 3429 const char *mips_fw_file, *rv2p_fw_file;
3430 const struct bnx2_mips_fw_file *mips; 3430 const struct bnx2_mips_fw_file *mips_fw;
3431 const struct bnx2_rv2p_fw_file *rv2p; 3431 const struct bnx2_rv2p_fw_file *rv2p_fw;
3432 int rc; 3432 int rc;
3433 3433
3434 if (CHIP_NUM(bp) == CHIP_NUM_5709) { 3434 if (CHIP_NUM(bp) == CHIP_NUM_5709) {
@@ -3452,21 +3452,21 @@ bnx2_request_firmware(struct bnx2 *bp)
3452 rv2p_fw_file); 3452 rv2p_fw_file);
3453 return rc; 3453 return rc;
3454 } 3454 }
3455 mips = (const struct bnx2_mips_fw_file *) bp->mips_firmware->data; 3455 mips_fw = (const struct bnx2_mips_fw_file *) bp->mips_firmware->data;
3456 rv2p = (const struct bnx2_rv2p_fw_file *) bp->rv2p_firmware->data; 3456 rv2p_fw = (const struct bnx2_rv2p_fw_file *) bp->rv2p_firmware->data;
3457 if (bp->mips_firmware->size < sizeof(*mips) || 3457 if (bp->mips_firmware->size < sizeof(*mips_fw) ||
3458 check_mips_fw_entry(bp->mips_firmware, &mips->com) || 3458 check_mips_fw_entry(bp->mips_firmware, &mips_fw->com) ||
3459 check_mips_fw_entry(bp->mips_firmware, &mips->cp) || 3459 check_mips_fw_entry(bp->mips_firmware, &mips_fw->cp) ||
3460 check_mips_fw_entry(bp->mips_firmware, &mips->rxp) || 3460 check_mips_fw_entry(bp->mips_firmware, &mips_fw->rxp) ||
3461 check_mips_fw_entry(bp->mips_firmware, &mips->tpat) || 3461 check_mips_fw_entry(bp->mips_firmware, &mips_fw->tpat) ||
3462 check_mips_fw_entry(bp->mips_firmware, &mips->txp)) { 3462 check_mips_fw_entry(bp->mips_firmware, &mips_fw->txp)) {
3463 printk(KERN_ERR PFX "Firmware file \"%s\" is invalid\n", 3463 printk(KERN_ERR PFX "Firmware file \"%s\" is invalid\n",
3464 mips_fw_file); 3464 mips_fw_file);
3465 return -EINVAL; 3465 return -EINVAL;
3466 } 3466 }
3467 if (bp->rv2p_firmware->size < sizeof(*rv2p) || 3467 if (bp->rv2p_firmware->size < sizeof(*rv2p_fw) ||
3468 check_fw_section(bp->rv2p_firmware, &rv2p->proc1.rv2p, 8, true) || 3468 check_fw_section(bp->rv2p_firmware, &rv2p_fw->proc1.rv2p, 8, true) ||
3469 check_fw_section(bp->rv2p_firmware, &rv2p->proc2.rv2p, 8, true)) { 3469 check_fw_section(bp->rv2p_firmware, &rv2p_fw->proc2.rv2p, 8, true)) {
3470 printk(KERN_ERR PFX "Firmware file \"%s\" is invalid\n", 3470 printk(KERN_ERR PFX "Firmware file \"%s\" is invalid\n",
3471 rv2p_fw_file); 3471 rv2p_fw_file);
3472 return -EINVAL; 3472 return -EINVAL;
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 8dc6fbb9a41e..553a89919778 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -370,8 +370,6 @@ static int rlb_arp_recv(struct sk_buff *skb, struct net_device *bond_dev, struct
370 370
371 if (arp->op_code == htons(ARPOP_REPLY)) { 371 if (arp->op_code == htons(ARPOP_REPLY)) {
372 /* update rx hash table for this ARP */ 372 /* update rx hash table for this ARP */
373 printk("rar: update orig %s bond_dev %s\n", orig_dev->name,
374 bond_dev->name);
375 bond = netdev_priv(bond_dev); 373 bond = netdev_priv(bond_dev);
376 rlb_update_entry_from_arp(bond, arp); 374 rlb_update_entry_from_arp(bond, arp);
377 pr_debug("Server received an ARP Reply from client\n"); 375 pr_debug("Server received an ARP Reply from client\n");
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 99610f358c40..63369b6b14d4 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2570,7 +2570,7 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave)
2570 2570
2571 for (i = 0; (i < BOND_MAX_ARP_TARGETS); i++) { 2571 for (i = 0; (i < BOND_MAX_ARP_TARGETS); i++) {
2572 if (!targets[i]) 2572 if (!targets[i])
2573 continue; 2573 break;
2574 pr_debug("basa: target %x\n", targets[i]); 2574 pr_debug("basa: target %x\n", targets[i]);
2575 if (list_empty(&bond->vlan_list)) { 2575 if (list_empty(&bond->vlan_list)) {
2576 pr_debug("basa: empty vlan: arp_send\n"); 2576 pr_debug("basa: empty vlan: arp_send\n");
@@ -2677,7 +2677,6 @@ static void bond_validate_arp(struct bonding *bond, struct slave *slave, __be32
2677 int i; 2677 int i;
2678 __be32 *targets = bond->params.arp_targets; 2678 __be32 *targets = bond->params.arp_targets;
2679 2679
2680 targets = bond->params.arp_targets;
2681 for (i = 0; (i < BOND_MAX_ARP_TARGETS) && targets[i]; i++) { 2680 for (i = 0; (i < BOND_MAX_ARP_TARGETS) && targets[i]; i++) {
2682 pr_debug("bva: sip %pI4 tip %pI4 t[%d] %pI4 bhti(tip) %d\n", 2681 pr_debug("bva: sip %pI4 tip %pI4 t[%d] %pI4 bhti(tip) %d\n",
2683 &sip, &tip, i, &targets[i], bond_has_this_ip(bond, tip)); 2682 &sip, &tip, i, &targets[i], bond_has_this_ip(bond, tip));
@@ -3303,7 +3302,7 @@ static void bond_info_show_master(struct seq_file *seq)
3303 3302
3304 for(i = 0; (i < BOND_MAX_ARP_TARGETS) ;i++) { 3303 for(i = 0; (i < BOND_MAX_ARP_TARGETS) ;i++) {
3305 if (!bond->params.arp_targets[i]) 3304 if (!bond->params.arp_targets[i])
3306 continue; 3305 break;
3307 if (printed) 3306 if (printed)
3308 seq_printf(seq, ","); 3307 seq_printf(seq, ",");
3309 seq_printf(seq, " %pI4", &bond->params.arp_targets[i]); 3308 seq_printf(seq, " %pI4", &bond->params.arp_targets[i]);
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
index 18cf4787874c..d28731535226 100644
--- a/drivers/net/bonding/bond_sysfs.c
+++ b/drivers/net/bonding/bond_sysfs.c
@@ -684,17 +684,15 @@ static ssize_t bonding_store_arp_targets(struct device *d,
684 goto out; 684 goto out;
685 } 685 }
686 /* look for an empty slot to put the target in, and check for dupes */ 686 /* look for an empty slot to put the target in, and check for dupes */
687 for (i = 0; (i < BOND_MAX_ARP_TARGETS); i++) { 687 for (i = 0; (i < BOND_MAX_ARP_TARGETS) && !done; i++) {
688 if (targets[i] == newtarget) { /* duplicate */ 688 if (targets[i] == newtarget) { /* duplicate */
689 printk(KERN_ERR DRV_NAME 689 printk(KERN_ERR DRV_NAME
690 ": %s: ARP target %pI4 is already present\n", 690 ": %s: ARP target %pI4 is already present\n",
691 bond->dev->name, &newtarget); 691 bond->dev->name, &newtarget);
692 if (done)
693 targets[i] = 0;
694 ret = -EINVAL; 692 ret = -EINVAL;
695 goto out; 693 goto out;
696 } 694 }
697 if (targets[i] == 0 && !done) { 695 if (targets[i] == 0) {
698 printk(KERN_INFO DRV_NAME 696 printk(KERN_INFO DRV_NAME
699 ": %s: adding ARP target %pI4.\n", 697 ": %s: adding ARP target %pI4.\n",
700 bond->dev->name, &newtarget); 698 bond->dev->name, &newtarget);
@@ -720,12 +718,16 @@ static ssize_t bonding_store_arp_targets(struct device *d,
720 goto out; 718 goto out;
721 } 719 }
722 720
723 for (i = 0; (i < BOND_MAX_ARP_TARGETS); i++) { 721 for (i = 0; (i < BOND_MAX_ARP_TARGETS) && !done; i++) {
724 if (targets[i] == newtarget) { 722 if (targets[i] == newtarget) {
723 int j;
725 printk(KERN_INFO DRV_NAME 724 printk(KERN_INFO DRV_NAME
726 ": %s: removing ARP target %pI4.\n", 725 ": %s: removing ARP target %pI4.\n",
727 bond->dev->name, &newtarget); 726 bond->dev->name, &newtarget);
728 targets[i] = 0; 727 for (j = i; (j < (BOND_MAX_ARP_TARGETS-1)) && targets[j+1]; j++)
728 targets[j] = targets[j+1];
729
730 targets[j] = 0;
729 done = 1; 731 done = 1;
730 } 732 }
731 } 733 }
diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index c9806c58b2fd..7a18dc7e5c7f 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -257,6 +257,23 @@ struct transceiver_ops transceivers[] =
257 257
258struct transceiver_ops* transceiver = &transceivers[0]; 258struct transceiver_ops* transceiver = &transceivers[0];
259 259
260static const struct net_device_ops e100_netdev_ops = {
261 .ndo_open = e100_open,
262 .ndo_stop = e100_close,
263 .ndo_start_xmit = e100_send_packet,
264 .ndo_tx_timeout = e100_tx_timeout,
265 .ndo_get_stats = e100_get_stats,
266 .ndo_set_multicast_list = set_multicast_list,
267 .ndo_do_ioctl = e100_ioctl,
268 .ndo_set_mac_address = e100_set_mac_address,
269 .ndo_validate_addr = eth_validate_addr,
270 .ndo_change_mtu = eth_change_mtu,
271 .ndo_set_config = e100_set_config,
272#ifdef CONFIG_NET_POLL_CONTROLLER
273 .ndo_poll_controller = e100_netpoll,
274#endif
275};
276
260#define tx_done(dev) (*R_DMA_CH0_CMD == 0) 277#define tx_done(dev) (*R_DMA_CH0_CMD == 0)
261 278
262/* 279/*
@@ -300,19 +317,8 @@ etrax_ethernet_init(void)
300 317
301 /* fill in our handlers so the network layer can talk to us in the future */ 318 /* fill in our handlers so the network layer can talk to us in the future */
302 319
303 dev->open = e100_open;
304 dev->hard_start_xmit = e100_send_packet;
305 dev->stop = e100_close;
306 dev->get_stats = e100_get_stats;
307 dev->set_multicast_list = set_multicast_list;
308 dev->set_mac_address = e100_set_mac_address;
309 dev->ethtool_ops = &e100_ethtool_ops; 320 dev->ethtool_ops = &e100_ethtool_ops;
310 dev->do_ioctl = e100_ioctl; 321 dev->netdev_ops = &e100_netdev_ops;
311 dev->set_config = e100_set_config;
312 dev->tx_timeout = e100_tx_timeout;
313#ifdef CONFIG_NET_POLL_CONTROLLER
314 dev->poll_controller = e100_netpoll;
315#endif
316 322
317 spin_lock_init(&np->lock); 323 spin_lock_init(&np->lock);
318 spin_lock_init(&np->led_lock); 324 spin_lock_init(&np->led_lock);
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index ab0e5febef83..7ea48414c6cb 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -1117,8 +1117,8 @@ static void cxgb_down(struct adapter *adapter)
1117 spin_unlock_irq(&adapter->work_lock); 1117 spin_unlock_irq(&adapter->work_lock);
1118 1118
1119 free_irq_resources(adapter); 1119 free_irq_resources(adapter);
1120 flush_workqueue(cxgb3_wq); /* wait for external IRQ handler */
1121 quiesce_rx(adapter); 1120 quiesce_rx(adapter);
1121 flush_workqueue(cxgb3_wq); /* wait for external IRQ handler */
1122} 1122}
1123 1123
1124static void schedule_chk_task(struct adapter *adap) 1124static void schedule_chk_task(struct adapter *adap)
@@ -1187,6 +1187,9 @@ static int offload_close(struct t3cdev *tdev)
1187 1187
1188 sysfs_remove_group(&tdev->lldev->dev.kobj, &offload_attr_group); 1188 sysfs_remove_group(&tdev->lldev->dev.kobj, &offload_attr_group);
1189 1189
1190 /* Flush work scheduled while releasing TIDs */
1191 flush_scheduled_work();
1192
1190 tdev->lldev = NULL; 1193 tdev->lldev = NULL;
1191 cxgb3_set_dummy_ops(tdev); 1194 cxgb3_set_dummy_ops(tdev);
1192 t3_tp_set_offload_mode(adapter, 0); 1195 t3_tp_set_offload_mode(adapter, 0);
@@ -1232,6 +1235,10 @@ static int cxgb_close(struct net_device *dev)
1232 struct port_info *pi = netdev_priv(dev); 1235 struct port_info *pi = netdev_priv(dev);
1233 struct adapter *adapter = pi->adapter; 1236 struct adapter *adapter = pi->adapter;
1234 1237
1238
1239 if (!adapter->open_device_map)
1240 return 0;
1241
1235 /* Stop link fault interrupts */ 1242 /* Stop link fault interrupts */
1236 t3_xgm_intr_disable(adapter, pi->port_id); 1243 t3_xgm_intr_disable(adapter, pi->port_id);
1237 t3_read_reg(adapter, A_XGM_INT_STATUS + pi->mac.offset); 1244 t3_read_reg(adapter, A_XGM_INT_STATUS + pi->mac.offset);
@@ -1247,8 +1254,7 @@ static int cxgb_close(struct net_device *dev)
1247 spin_unlock_irq(&adapter->work_lock); 1254 spin_unlock_irq(&adapter->work_lock);
1248 1255
1249 if (!(adapter->open_device_map & PORT_MASK)) 1256 if (!(adapter->open_device_map & PORT_MASK))
1250 cancel_rearming_delayed_workqueue(cxgb3_wq, 1257 cancel_delayed_work_sync(&adapter->adap_check_task);
1251 &adapter->adap_check_task);
1252 1258
1253 if (!adapter->open_device_map) 1259 if (!adapter->open_device_map)
1254 cxgb_down(adapter); 1260 cxgb_down(adapter);
@@ -2493,6 +2499,7 @@ static void check_link_status(struct adapter *adapter)
2493 2499
2494 spin_lock_irq(&adapter->work_lock); 2500 spin_lock_irq(&adapter->work_lock);
2495 if (p->link_fault) { 2501 if (p->link_fault) {
2502 t3_link_fault(adapter, i);
2496 spin_unlock_irq(&adapter->work_lock); 2503 spin_unlock_irq(&adapter->work_lock);
2497 continue; 2504 continue;
2498 } 2505 }
@@ -2554,9 +2561,7 @@ static void t3_adap_check_task(struct work_struct *work)
2554 2561
2555 adapter->check_task_cnt++; 2562 adapter->check_task_cnt++;
2556 2563
2557 /* Check link status for PHYs without interrupts */ 2564 check_link_status(adapter);
2558 if (p->linkpoll_period)
2559 check_link_status(adapter);
2560 2565
2561 /* Accumulate MAC stats if needed */ 2566 /* Accumulate MAC stats if needed */
2562 if (!p->linkpoll_period || 2567 if (!p->linkpoll_period ||
@@ -2680,21 +2685,6 @@ void t3_os_ext_intr_handler(struct adapter *adapter)
2680 spin_unlock(&adapter->work_lock); 2685 spin_unlock(&adapter->work_lock);
2681} 2686}
2682 2687
2683static void link_fault_task(struct work_struct *work)
2684{
2685 struct adapter *adapter = container_of(work, struct adapter,
2686 link_fault_handler_task);
2687 int i;
2688
2689 for_each_port(adapter, i) {
2690 struct net_device *netdev = adapter->port[i];
2691 struct port_info *pi = netdev_priv(netdev);
2692
2693 if (pi->link_fault)
2694 t3_link_fault(adapter, i);
2695 }
2696}
2697
2698void t3_os_link_fault_handler(struct adapter *adapter, int port_id) 2688void t3_os_link_fault_handler(struct adapter *adapter, int port_id)
2699{ 2689{
2700 struct net_device *netdev = adapter->port[port_id]; 2690 struct net_device *netdev = adapter->port[port_id];
@@ -2702,7 +2692,6 @@ void t3_os_link_fault_handler(struct adapter *adapter, int port_id)
2702 2692
2703 spin_lock(&adapter->work_lock); 2693 spin_lock(&adapter->work_lock);
2704 pi->link_fault = 1; 2694 pi->link_fault = 1;
2705 queue_work(cxgb3_wq, &adapter->link_fault_handler_task);
2706 spin_unlock(&adapter->work_lock); 2695 spin_unlock(&adapter->work_lock);
2707} 2696}
2708 2697
@@ -2838,6 +2827,9 @@ static pci_ers_result_t t3_io_error_detected(struct pci_dev *pdev,
2838 struct adapter *adapter = pci_get_drvdata(pdev); 2827 struct adapter *adapter = pci_get_drvdata(pdev);
2839 int ret; 2828 int ret;
2840 2829
2830 if (state == pci_channel_io_perm_failure)
2831 return PCI_ERS_RESULT_DISCONNECT;
2832
2841 ret = t3_adapter_error(adapter, 0); 2833 ret = t3_adapter_error(adapter, 0);
2842 2834
2843 /* Request a slot reset. */ 2835 /* Request a slot reset. */
@@ -2932,8 +2924,13 @@ static int __devinit cxgb_enable_msix(struct adapter *adap)
2932 while ((err = pci_enable_msix(adap->pdev, entries, vectors)) > 0) 2924 while ((err = pci_enable_msix(adap->pdev, entries, vectors)) > 0)
2933 vectors = err; 2925 vectors = err;
2934 2926
2935 if (!err && vectors < (adap->params.nports + 1)) 2927 if (err < 0)
2928 pci_disable_msix(adap->pdev);
2929
2930 if (!err && vectors < (adap->params.nports + 1)) {
2931 pci_disable_msix(adap->pdev);
2936 err = -1; 2932 err = -1;
2933 }
2937 2934
2938 if (!err) { 2935 if (!err) {
2939 for (i = 0; i < vectors; ++i) 2936 for (i = 0; i < vectors; ++i)
@@ -3082,7 +3079,6 @@ static int __devinit init_one(struct pci_dev *pdev,
3082 3079
3083 INIT_LIST_HEAD(&adapter->adapter_list); 3080 INIT_LIST_HEAD(&adapter->adapter_list);
3084 INIT_WORK(&adapter->ext_intr_handler_task, ext_intr_task); 3081 INIT_WORK(&adapter->ext_intr_handler_task, ext_intr_task);
3085 INIT_WORK(&adapter->link_fault_handler_task, link_fault_task);
3086 INIT_WORK(&adapter->fatal_error_handler_task, fatal_error_task); 3082 INIT_WORK(&adapter->fatal_error_handler_task, fatal_error_task);
3087 INIT_DELAYED_WORK(&adapter->adap_check_task, t3_adap_check_task); 3083 INIT_DELAYED_WORK(&adapter->adap_check_task, t3_adap_check_task);
3088 3084
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c
index 31ed31a3428b..e1bd690ff831 100644
--- a/drivers/net/cxgb3/t3_hw.c
+++ b/drivers/net/cxgb3/t3_hw.c
@@ -1202,7 +1202,6 @@ void t3_link_changed(struct adapter *adapter, int port_id)
1202 struct cphy *phy = &pi->phy; 1202 struct cphy *phy = &pi->phy;
1203 struct cmac *mac = &pi->mac; 1203 struct cmac *mac = &pi->mac;
1204 struct link_config *lc = &pi->link_config; 1204 struct link_config *lc = &pi->link_config;
1205 int force_link_down = 0;
1206 1205
1207 phy->ops->get_link_status(phy, &link_ok, &speed, &duplex, &fc); 1206 phy->ops->get_link_status(phy, &link_ok, &speed, &duplex, &fc);
1208 1207
@@ -1218,14 +1217,9 @@ void t3_link_changed(struct adapter *adapter, int port_id)
1218 status = t3_read_reg(adapter, A_XGM_INT_STATUS + mac->offset); 1217 status = t3_read_reg(adapter, A_XGM_INT_STATUS + mac->offset);
1219 if (status & F_LINKFAULTCHANGE) { 1218 if (status & F_LINKFAULTCHANGE) {
1220 mac->stats.link_faults++; 1219 mac->stats.link_faults++;
1221 force_link_down = 1; 1220 pi->link_fault = 1;
1222 } 1221 }
1223 t3_open_rx_traffic(mac, rx_cfg, rx_hash_high, rx_hash_low); 1222 t3_open_rx_traffic(mac, rx_cfg, rx_hash_high, rx_hash_low);
1224
1225 if (force_link_down) {
1226 t3_os_link_fault_handler(adapter, port_id);
1227 return;
1228 }
1229 } 1223 }
1230 1224
1231 if (lc->requested_fc & PAUSE_AUTONEG) 1225 if (lc->requested_fc & PAUSE_AUTONEG)
@@ -1292,9 +1286,6 @@ void t3_link_fault(struct adapter *adapter, int port_id)
1292 /* Account link faults only when the phy reports a link up */ 1286 /* Account link faults only when the phy reports a link up */
1293 if (link_ok) 1287 if (link_ok)
1294 mac->stats.link_faults++; 1288 mac->stats.link_faults++;
1295
1296 msleep(1000);
1297 t3_os_link_fault_handler(adapter, port_id);
1298 } else { 1289 } else {
1299 if (link_ok) 1290 if (link_ok)
1300 t3_write_reg(adapter, A_XGM_XAUI_ACT_CTRL + mac->offset, 1291 t3_write_reg(adapter, A_XGM_XAUI_ACT_CTRL + mac->offset,
diff --git a/drivers/net/declance.c b/drivers/net/declance.c
index 861c867fca87..b62405a69180 100644
--- a/drivers/net/declance.c
+++ b/drivers/net/declance.c
@@ -1010,6 +1010,17 @@ static void lance_set_multicast_retry(unsigned long _opaque)
1010 lance_set_multicast(dev); 1010 lance_set_multicast(dev);
1011} 1011}
1012 1012
1013static const struct net_device_ops lance_netdev_ops = {
1014 .ndo_open = lance_open,
1015 .ndo_stop = lance_close,
1016 .ndo_start_xmit = lance_start_xmit,
1017 .ndo_tx_timeout = lance_tx_timeout,
1018 .ndo_set_multicast_list = lance_set_multicast,
1019 .ndo_change_mtu = eth_change_mtu,
1020 .ndo_validate_addr = eth_validate_addr,
1021 .ndo_set_mac_address = eth_mac_addr,
1022};
1023
1013static int __init dec_lance_probe(struct device *bdev, const int type) 1024static int __init dec_lance_probe(struct device *bdev, const int type)
1014{ 1025{
1015 static unsigned version_printed; 1026 static unsigned version_printed;
@@ -1223,12 +1234,8 @@ static int __init dec_lance_probe(struct device *bdev, const int type)
1223 1234
1224 printk(", addr = %pM, irq = %d\n", dev->dev_addr, dev->irq); 1235 printk(", addr = %pM, irq = %d\n", dev->dev_addr, dev->irq);
1225 1236
1226 dev->open = &lance_open; 1237 dev->netdev_ops = &lance_netdev_ops;
1227 dev->stop = &lance_close;
1228 dev->hard_start_xmit = &lance_start_xmit;
1229 dev->tx_timeout = &lance_tx_timeout;
1230 dev->watchdog_timeo = 5*HZ; 1238 dev->watchdog_timeo = 5*HZ;
1231 dev->set_multicast_list = &lance_set_multicast;
1232 1239
1233 /* lp->ll is the location of the registers for lance card */ 1240 /* lp->ll is the location of the registers for lance card */
1234 lp->ll = ll; 1241 lp->ll = ll;
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index ddc5c533e89c..6a46ceed9436 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -156,8 +156,8 @@ static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid);
156static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid); 156static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid);
157static void e1000_restore_vlan(struct e1000_adapter *adapter); 157static void e1000_restore_vlan(struct e1000_adapter *adapter);
158 158
159static int e1000_suspend(struct pci_dev *pdev, pm_message_t state);
160#ifdef CONFIG_PM 159#ifdef CONFIG_PM
160static int e1000_suspend(struct pci_dev *pdev, pm_message_t state);
161static int e1000_resume(struct pci_dev *pdev); 161static int e1000_resume(struct pci_dev *pdev);
162#endif 162#endif
163static void e1000_shutdown(struct pci_dev *pdev); 163static void e1000_shutdown(struct pci_dev *pdev);
@@ -3834,7 +3834,6 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
3834 struct e1000_buffer *buffer_info; 3834 struct e1000_buffer *buffer_info;
3835 unsigned int i, eop; 3835 unsigned int i, eop;
3836 unsigned int count = 0; 3836 unsigned int count = 0;
3837 bool cleaned;
3838 unsigned int total_tx_bytes=0, total_tx_packets=0; 3837 unsigned int total_tx_bytes=0, total_tx_packets=0;
3839 3838
3840 i = tx_ring->next_to_clean; 3839 i = tx_ring->next_to_clean;
@@ -3843,7 +3842,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
3843 3842
3844 while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) && 3843 while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) &&
3845 (count < tx_ring->count)) { 3844 (count < tx_ring->count)) {
3846 for (cleaned = false; !cleaned; count++) { 3845 bool cleaned = false;
3846 for ( ; !cleaned; count++) {
3847 tx_desc = E1000_TX_DESC(*tx_ring, i); 3847 tx_desc = E1000_TX_DESC(*tx_ring, i);
3848 buffer_info = &tx_ring->buffer_info[i]; 3848 buffer_info = &tx_ring->buffer_info[i];
3849 cleaned = (i == eop); 3849 cleaned = (i == eop);
@@ -3871,7 +3871,7 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
3871 tx_ring->next_to_clean = i; 3871 tx_ring->next_to_clean = i;
3872 3872
3873#define TX_WAKE_THRESHOLD 32 3873#define TX_WAKE_THRESHOLD 32
3874 if (unlikely(cleaned && netif_carrier_ok(netdev) && 3874 if (unlikely(count && netif_carrier_ok(netdev) &&
3875 E1000_DESC_UNUSED(tx_ring) >= TX_WAKE_THRESHOLD)) { 3875 E1000_DESC_UNUSED(tx_ring) >= TX_WAKE_THRESHOLD)) {
3876 /* Make sure that anybody stopping the queue after this 3876 /* Make sure that anybody stopping the queue after this
3877 * sees the new next_to_clean. 3877 * sees the new next_to_clean.
@@ -4601,7 +4601,7 @@ int e1000_set_spd_dplx(struct e1000_adapter *adapter, u16 spddplx)
4601 return 0; 4601 return 0;
4602} 4602}
4603 4603
4604static int e1000_suspend(struct pci_dev *pdev, pm_message_t state) 4604static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
4605{ 4605{
4606 struct net_device *netdev = pci_get_drvdata(pdev); 4606 struct net_device *netdev = pci_get_drvdata(pdev);
4607 struct e1000_adapter *adapter = netdev_priv(netdev); 4607 struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -4664,22 +4664,18 @@ static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
4664 4664
4665 ew32(WUC, E1000_WUC_PME_EN); 4665 ew32(WUC, E1000_WUC_PME_EN);
4666 ew32(WUFC, wufc); 4666 ew32(WUFC, wufc);
4667 pci_enable_wake(pdev, PCI_D3hot, 1);
4668 pci_enable_wake(pdev, PCI_D3cold, 1);
4669 } else { 4667 } else {
4670 ew32(WUC, 0); 4668 ew32(WUC, 0);
4671 ew32(WUFC, 0); 4669 ew32(WUFC, 0);
4672 pci_enable_wake(pdev, PCI_D3hot, 0);
4673 pci_enable_wake(pdev, PCI_D3cold, 0);
4674 } 4670 }
4675 4671
4676 e1000_release_manageability(adapter); 4672 e1000_release_manageability(adapter);
4677 4673
4674 *enable_wake = !!wufc;
4675
4678 /* make sure adapter isn't asleep if manageability is enabled */ 4676 /* make sure adapter isn't asleep if manageability is enabled */
4679 if (adapter->en_mng_pt) { 4677 if (adapter->en_mng_pt)
4680 pci_enable_wake(pdev, PCI_D3hot, 1); 4678 *enable_wake = true;
4681 pci_enable_wake(pdev, PCI_D3cold, 1);
4682 }
4683 4679
4684 if (hw->phy_type == e1000_phy_igp_3) 4680 if (hw->phy_type == e1000_phy_igp_3)
4685 e1000_phy_powerdown_workaround(hw); 4681 e1000_phy_powerdown_workaround(hw);
@@ -4693,12 +4689,29 @@ static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
4693 4689
4694 pci_disable_device(pdev); 4690 pci_disable_device(pdev);
4695 4691
4696 pci_set_power_state(pdev, pci_choose_state(pdev, state));
4697
4698 return 0; 4692 return 0;
4699} 4693}
4700 4694
4701#ifdef CONFIG_PM 4695#ifdef CONFIG_PM
4696static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
4697{
4698 int retval;
4699 bool wake;
4700
4701 retval = __e1000_shutdown(pdev, &wake);
4702 if (retval)
4703 return retval;
4704
4705 if (wake) {
4706 pci_prepare_to_sleep(pdev);
4707 } else {
4708 pci_wake_from_d3(pdev, false);
4709 pci_set_power_state(pdev, PCI_D3hot);
4710 }
4711
4712 return 0;
4713}
4714
4702static int e1000_resume(struct pci_dev *pdev) 4715static int e1000_resume(struct pci_dev *pdev)
4703{ 4716{
4704 struct net_device *netdev = pci_get_drvdata(pdev); 4717 struct net_device *netdev = pci_get_drvdata(pdev);
@@ -4753,7 +4766,14 @@ static int e1000_resume(struct pci_dev *pdev)
4753 4766
4754static void e1000_shutdown(struct pci_dev *pdev) 4767static void e1000_shutdown(struct pci_dev *pdev)
4755{ 4768{
4756 e1000_suspend(pdev, PMSG_SUSPEND); 4769 bool wake;
4770
4771 __e1000_shutdown(pdev, &wake);
4772
4773 if (system_state == SYSTEM_POWER_OFF) {
4774 pci_wake_from_d3(pdev, wake);
4775 pci_set_power_state(pdev, PCI_D3hot);
4776 }
4757} 4777}
4758 4778
4759#ifdef CONFIG_NET_POLL_CONTROLLER 4779#ifdef CONFIG_NET_POLL_CONTROLLER
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 409b58cad0e5..ca82f19a7ed1 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -621,7 +621,6 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
621 struct e1000_buffer *buffer_info; 621 struct e1000_buffer *buffer_info;
622 unsigned int i, eop; 622 unsigned int i, eop;
623 unsigned int count = 0; 623 unsigned int count = 0;
624 bool cleaned;
625 unsigned int total_tx_bytes = 0, total_tx_packets = 0; 624 unsigned int total_tx_bytes = 0, total_tx_packets = 0;
626 625
627 i = tx_ring->next_to_clean; 626 i = tx_ring->next_to_clean;
@@ -630,7 +629,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
630 629
631 while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) && 630 while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) &&
632 (count < tx_ring->count)) { 631 (count < tx_ring->count)) {
633 for (cleaned = 0; !cleaned; count++) { 632 bool cleaned = false;
633 for (; !cleaned; count++) {
634 tx_desc = E1000_TX_DESC(*tx_ring, i); 634 tx_desc = E1000_TX_DESC(*tx_ring, i);
635 buffer_info = &tx_ring->buffer_info[i]; 635 buffer_info = &tx_ring->buffer_info[i];
636 cleaned = (i == eop); 636 cleaned = (i == eop);
@@ -661,8 +661,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
661 tx_ring->next_to_clean = i; 661 tx_ring->next_to_clean = i;
662 662
663#define TX_WAKE_THRESHOLD 32 663#define TX_WAKE_THRESHOLD 32
664 if (cleaned && netif_carrier_ok(netdev) && 664 if (count && netif_carrier_ok(netdev) &&
665 e1000_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD) { 665 e1000_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD) {
666 /* Make sure that anybody stopping the queue after this 666 /* Make sure that anybody stopping the queue after this
667 * sees the new next_to_clean. 667 * sees the new next_to_clean.
668 */ 668 */
@@ -4346,7 +4346,7 @@ static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
4346 } 4346 }
4347} 4347}
4348 4348
4349static int e1000_suspend(struct pci_dev *pdev, pm_message_t state) 4349static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
4350{ 4350{
4351 struct net_device *netdev = pci_get_drvdata(pdev); 4351 struct net_device *netdev = pci_get_drvdata(pdev);
4352 struct e1000_adapter *adapter = netdev_priv(netdev); 4352 struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -4409,20 +4409,16 @@ static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
4409 4409
4410 ew32(WUC, E1000_WUC_PME_EN); 4410 ew32(WUC, E1000_WUC_PME_EN);
4411 ew32(WUFC, wufc); 4411 ew32(WUFC, wufc);
4412 pci_enable_wake(pdev, PCI_D3hot, 1);
4413 pci_enable_wake(pdev, PCI_D3cold, 1);
4414 } else { 4412 } else {
4415 ew32(WUC, 0); 4413 ew32(WUC, 0);
4416 ew32(WUFC, 0); 4414 ew32(WUFC, 0);
4417 pci_enable_wake(pdev, PCI_D3hot, 0);
4418 pci_enable_wake(pdev, PCI_D3cold, 0);
4419 } 4415 }
4420 4416
4417 *enable_wake = !!wufc;
4418
4421 /* make sure adapter isn't asleep if manageability is enabled */ 4419 /* make sure adapter isn't asleep if manageability is enabled */
4422 if (adapter->flags & FLAG_MNG_PT_ENABLED) { 4420 if (adapter->flags & FLAG_MNG_PT_ENABLED)
4423 pci_enable_wake(pdev, PCI_D3hot, 1); 4421 *enable_wake = true;
4424 pci_enable_wake(pdev, PCI_D3cold, 1);
4425 }
4426 4422
4427 if (adapter->hw.phy.type == e1000_phy_igp_3) 4423 if (adapter->hw.phy.type == e1000_phy_igp_3)
4428 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); 4424 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw);
@@ -4435,6 +4431,26 @@ static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
4435 4431
4436 pci_disable_device(pdev); 4432 pci_disable_device(pdev);
4437 4433
4434 return 0;
4435}
4436
4437static void e1000_power_off(struct pci_dev *pdev, bool sleep, bool wake)
4438{
4439 if (sleep && wake) {
4440 pci_prepare_to_sleep(pdev);
4441 return;
4442 }
4443
4444 pci_wake_from_d3(pdev, wake);
4445 pci_set_power_state(pdev, PCI_D3hot);
4446}
4447
4448static void e1000_complete_shutdown(struct pci_dev *pdev, bool sleep,
4449 bool wake)
4450{
4451 struct net_device *netdev = pci_get_drvdata(pdev);
4452 struct e1000_adapter *adapter = netdev_priv(netdev);
4453
4438 /* 4454 /*
4439 * The pci-e switch on some quad port adapters will report a 4455 * The pci-e switch on some quad port adapters will report a
4440 * correctable error when the MAC transitions from D0 to D3. To 4456 * correctable error when the MAC transitions from D0 to D3. To
@@ -4450,14 +4466,12 @@ static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
4450 pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL, 4466 pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL,
4451 (devctl & ~PCI_EXP_DEVCTL_CERE)); 4467 (devctl & ~PCI_EXP_DEVCTL_CERE));
4452 4468
4453 pci_set_power_state(pdev, pci_choose_state(pdev, state)); 4469 e1000_power_off(pdev, sleep, wake);
4454 4470
4455 pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL, devctl); 4471 pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL, devctl);
4456 } else { 4472 } else {
4457 pci_set_power_state(pdev, pci_choose_state(pdev, state)); 4473 e1000_power_off(pdev, sleep, wake);
4458 } 4474 }
4459
4460 return 0;
4461} 4475}
4462 4476
4463static void e1000e_disable_l1aspm(struct pci_dev *pdev) 4477static void e1000e_disable_l1aspm(struct pci_dev *pdev)
@@ -4486,6 +4500,18 @@ static void e1000e_disable_l1aspm(struct pci_dev *pdev)
4486} 4500}
4487 4501
4488#ifdef CONFIG_PM 4502#ifdef CONFIG_PM
4503static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
4504{
4505 int retval;
4506 bool wake;
4507
4508 retval = __e1000_shutdown(pdev, &wake);
4509 if (!retval)
4510 e1000_complete_shutdown(pdev, true, wake);
4511
4512 return retval;
4513}
4514
4489static int e1000_resume(struct pci_dev *pdev) 4515static int e1000_resume(struct pci_dev *pdev)
4490{ 4516{
4491 struct net_device *netdev = pci_get_drvdata(pdev); 4517 struct net_device *netdev = pci_get_drvdata(pdev);
@@ -4549,7 +4575,12 @@ static int e1000_resume(struct pci_dev *pdev)
4549 4575
4550static void e1000_shutdown(struct pci_dev *pdev) 4576static void e1000_shutdown(struct pci_dev *pdev)
4551{ 4577{
4552 e1000_suspend(pdev, PMSG_SUSPEND); 4578 bool wake = false;
4579
4580 __e1000_shutdown(pdev, &wake);
4581
4582 if (system_state == SYSTEM_POWER_OFF)
4583 e1000_complete_shutdown(pdev, false, wake);
4553} 4584}
4554 4585
4555#ifdef CONFIG_NET_POLL_CONTROLLER 4586#ifdef CONFIG_NET_POLL_CONTROLLER
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index ac0c5b438e0a..604c844d0769 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -3080,7 +3080,8 @@ static const struct net_device_ops ehea_netdev_ops = {
3080 .ndo_change_mtu = ehea_change_mtu, 3080 .ndo_change_mtu = ehea_change_mtu,
3081 .ndo_vlan_rx_register = ehea_vlan_rx_register, 3081 .ndo_vlan_rx_register = ehea_vlan_rx_register,
3082 .ndo_vlan_rx_add_vid = ehea_vlan_rx_add_vid, 3082 .ndo_vlan_rx_add_vid = ehea_vlan_rx_add_vid,
3083 .ndo_vlan_rx_kill_vid = ehea_vlan_rx_kill_vid 3083 .ndo_vlan_rx_kill_vid = ehea_vlan_rx_kill_vid,
3084 .ndo_tx_timeout = ehea_tx_watchdog,
3084}; 3085};
3085 3086
3086struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter, 3087struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
@@ -3142,7 +3143,6 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
3142 | NETIF_F_HIGHDMA | NETIF_F_IP_CSUM | NETIF_F_HW_VLAN_TX 3143 | NETIF_F_HIGHDMA | NETIF_F_IP_CSUM | NETIF_F_HW_VLAN_TX
3143 | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER 3144 | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER
3144 | NETIF_F_LLTX; 3145 | NETIF_F_LLTX;
3145 dev->tx_timeout = &ehea_tx_watchdog;
3146 dev->watchdog_timeo = EHEA_WATCH_DOG_TIMEOUT; 3146 dev->watchdog_timeo = EHEA_WATCH_DOG_TIMEOUT;
3147 3147
3148 INIT_WORK(&port->reset_task, ehea_reset_port); 3148 INIT_WORK(&port->reset_task, ehea_reset_port);
diff --git a/drivers/net/eql.c b/drivers/net/eql.c
index 51ead7941f83..5210bb1027cc 100644
--- a/drivers/net/eql.c
+++ b/drivers/net/eql.c
@@ -542,6 +542,8 @@ static int eql_s_slave_cfg(struct net_device *dev, slave_config_t __user *scp)
542 } 542 }
543 spin_unlock_bh(&eql->queue.lock); 543 spin_unlock_bh(&eql->queue.lock);
544 544
545 dev_put(slave_dev);
546
545 return ret; 547 return ret;
546} 548}
547 549
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index a515acccc61f..682e7f0b5581 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -1240,6 +1240,7 @@ static void __inline__ fec_phy_ack_intr(void)
1240 icrp = (volatile unsigned long *) (MCF_MBAR + MCFSIM_ICR1); 1240 icrp = (volatile unsigned long *) (MCF_MBAR + MCFSIM_ICR1);
1241 *icrp = 0x0d000000; 1241 *icrp = 0x0d000000;
1242} 1242}
1243#endif
1243 1244
1244#ifdef CONFIG_M5272 1245#ifdef CONFIG_M5272
1245static void __inline__ fec_get_mac(struct net_device *dev) 1246static void __inline__ fec_get_mac(struct net_device *dev)
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index d37465020bcc..11d5db16ed9c 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -3745,14 +3745,14 @@ static int nv_napi_poll(struct napi_struct *napi, int budget)
3745 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 3745 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
3746 } 3746 }
3747 spin_unlock_irqrestore(&np->lock, flags); 3747 spin_unlock_irqrestore(&np->lock, flags);
3748 __napi_complete(napi); 3748 napi_complete(napi);
3749 return rx_work; 3749 return rx_work;
3750 } 3750 }
3751 3751
3752 if (rx_work < budget) { 3752 if (rx_work < budget) {
3753 /* re-enable interrupts 3753 /* re-enable interrupts
3754 (msix not enabled in napi) */ 3754 (msix not enabled in napi) */
3755 __napi_complete(napi); 3755 napi_complete(napi);
3756 3756
3757 writel(np->irqmask, base + NvRegIrqMask); 3757 writel(np->irqmask, base + NvRegIrqMask);
3758 } 3758 }
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c
index b037ce9857bf..a9cbc3191a2a 100644
--- a/drivers/net/fs_enet/fs_enet-main.c
+++ b/drivers/net/fs_enet/fs_enet-main.c
@@ -1019,6 +1019,22 @@ out_put_phy:
1019#define IS_FEC(match) 0 1019#define IS_FEC(match) 0
1020#endif 1020#endif
1021 1021
1022static const struct net_device_ops fs_enet_netdev_ops = {
1023 .ndo_open = fs_enet_open,
1024 .ndo_stop = fs_enet_close,
1025 .ndo_get_stats = fs_enet_get_stats,
1026 .ndo_start_xmit = fs_enet_start_xmit,
1027 .ndo_tx_timeout = fs_timeout,
1028 .ndo_set_multicast_list = fs_set_multicast_list,
1029 .ndo_do_ioctl = fs_ioctl,
1030 .ndo_validate_addr = eth_validate_addr,
1031 .ndo_set_mac_address = eth_mac_addr,
1032 .ndo_change_mtu = eth_change_mtu,
1033#ifdef CONFIG_NET_POLL_CONTROLLER
1034 .ndo_poll_controller = fs_enet_netpoll,
1035#endif
1036};
1037
1022static int __devinit fs_enet_probe(struct of_device *ofdev, 1038static int __devinit fs_enet_probe(struct of_device *ofdev,
1023 const struct of_device_id *match) 1039 const struct of_device_id *match)
1024{ 1040{
@@ -1093,22 +1109,13 @@ static int __devinit fs_enet_probe(struct of_device *ofdev,
1093 fep->tx_ring = fpi->tx_ring; 1109 fep->tx_ring = fpi->tx_ring;
1094 fep->rx_ring = fpi->rx_ring; 1110 fep->rx_ring = fpi->rx_ring;
1095 1111
1096 ndev->open = fs_enet_open; 1112 ndev->netdev_ops = &fs_enet_netdev_ops;
1097 ndev->hard_start_xmit = fs_enet_start_xmit;
1098 ndev->tx_timeout = fs_timeout;
1099 ndev->watchdog_timeo = 2 * HZ; 1113 ndev->watchdog_timeo = 2 * HZ;
1100 ndev->stop = fs_enet_close;
1101 ndev->get_stats = fs_enet_get_stats;
1102 ndev->set_multicast_list = fs_set_multicast_list;
1103#ifdef CONFIG_NET_POLL_CONTROLLER
1104 ndev->poll_controller = fs_enet_netpoll;
1105#endif
1106 if (fpi->use_napi) 1114 if (fpi->use_napi)
1107 netif_napi_add(ndev, &fep->napi, fs_enet_rx_napi, 1115 netif_napi_add(ndev, &fep->napi, fs_enet_rx_napi,
1108 fpi->napi_weight); 1116 fpi->napi_weight);
1109 1117
1110 ndev->ethtool_ops = &fs_ethtool_ops; 1118 ndev->ethtool_ops = &fs_ethtool_ops;
1111 ndev->do_ioctl = fs_ioctl;
1112 1119
1113 init_timer(&fep->phy_timer_list); 1120 init_timer(&fep->phy_timer_list);
1114 1121
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 65f55877be95..b2c49679bba7 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -1583,8 +1583,10 @@ static void gfar_reset_task(struct work_struct *work)
1583 struct net_device *dev = priv->ndev; 1583 struct net_device *dev = priv->ndev;
1584 1584
1585 if (dev->flags & IFF_UP) { 1585 if (dev->flags & IFF_UP) {
1586 netif_stop_queue(dev);
1586 stop_gfar(dev); 1587 stop_gfar(dev);
1587 startup_gfar(dev); 1588 startup_gfar(dev);
1589 netif_start_queue(dev);
1588 } 1590 }
1589 1591
1590 netif_tx_schedule_all(dev); 1592 netif_tx_schedule_all(dev);
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c
index 77e4b5b52fc8..806533c831c7 100644
--- a/drivers/net/ibm_newemac/core.c
+++ b/drivers/net/ibm_newemac/core.c
@@ -2686,6 +2686,32 @@ static int __devinit emac_init_config(struct emac_instance *dev)
2686 return 0; 2686 return 0;
2687} 2687}
2688 2688
2689static const struct net_device_ops emac_netdev_ops = {
2690 .ndo_open = emac_open,
2691 .ndo_stop = emac_close,
2692 .ndo_get_stats = emac_stats,
2693 .ndo_set_multicast_list = emac_set_multicast_list,
2694 .ndo_do_ioctl = emac_ioctl,
2695 .ndo_tx_timeout = emac_tx_timeout,
2696 .ndo_validate_addr = eth_validate_addr,
2697 .ndo_set_mac_address = eth_mac_addr,
2698 .ndo_start_xmit = emac_start_xmit,
2699 .ndo_change_mtu = eth_change_mtu,
2700};
2701
2702static const struct net_device_ops emac_gige_netdev_ops = {
2703 .ndo_open = emac_open,
2704 .ndo_stop = emac_close,
2705 .ndo_get_stats = emac_stats,
2706 .ndo_set_multicast_list = emac_set_multicast_list,
2707 .ndo_do_ioctl = emac_ioctl,
2708 .ndo_tx_timeout = emac_tx_timeout,
2709 .ndo_validate_addr = eth_validate_addr,
2710 .ndo_set_mac_address = eth_mac_addr,
2711 .ndo_start_xmit = emac_start_xmit_sg,
2712 .ndo_change_mtu = emac_change_mtu,
2713};
2714
2689static int __devinit emac_probe(struct of_device *ofdev, 2715static int __devinit emac_probe(struct of_device *ofdev,
2690 const struct of_device_id *match) 2716 const struct of_device_id *match)
2691{ 2717{
@@ -2827,23 +2853,14 @@ static int __devinit emac_probe(struct of_device *ofdev,
2827 if (err != 0) 2853 if (err != 0)
2828 goto err_detach_tah; 2854 goto err_detach_tah;
2829 2855
2830 /* Fill in the driver function table */
2831 ndev->open = &emac_open;
2832 if (dev->tah_dev) 2856 if (dev->tah_dev)
2833 ndev->features |= NETIF_F_IP_CSUM | NETIF_F_SG; 2857 ndev->features |= NETIF_F_IP_CSUM | NETIF_F_SG;
2834 ndev->tx_timeout = &emac_tx_timeout;
2835 ndev->watchdog_timeo = 5 * HZ; 2858 ndev->watchdog_timeo = 5 * HZ;
2836 ndev->stop = &emac_close;
2837 ndev->get_stats = &emac_stats;
2838 ndev->set_multicast_list = &emac_set_multicast_list;
2839 ndev->do_ioctl = &emac_ioctl;
2840 if (emac_phy_supports_gige(dev->phy_mode)) { 2859 if (emac_phy_supports_gige(dev->phy_mode)) {
2841 ndev->hard_start_xmit = &emac_start_xmit_sg; 2860 ndev->netdev_ops = &emac_gige_netdev_ops;
2842 ndev->change_mtu = &emac_change_mtu;
2843 dev->commac.ops = &emac_commac_sg_ops; 2861 dev->commac.ops = &emac_commac_sg_ops;
2844 } else { 2862 } else
2845 ndev->hard_start_xmit = &emac_start_xmit; 2863 ndev->netdev_ops = &emac_netdev_ops;
2846 }
2847 SET_ETHTOOL_OPS(ndev, &emac_ethtool_ops); 2864 SET_ETHTOOL_OPS(ndev, &emac_ethtool_ops);
2848 2865
2849 netif_carrier_off(ndev); 2866 netif_carrier_off(ndev);
diff --git a/drivers/net/igb/e1000_mac.c b/drivers/net/igb/e1000_mac.c
index f4c315b5a900..472f3f124840 100644
--- a/drivers/net/igb/e1000_mac.c
+++ b/drivers/net/igb/e1000_mac.c
@@ -111,7 +111,7 @@ void igb_clear_vfta(struct e1000_hw *hw)
111 * Writes value at the given offset in the register array which stores 111 * Writes value at the given offset in the register array which stores
112 * the VLAN filter table. 112 * the VLAN filter table.
113 **/ 113 **/
114void igb_write_vfta(struct e1000_hw *hw, u32 offset, u32 value) 114static void igb_write_vfta(struct e1000_hw *hw, u32 offset, u32 value)
115{ 115{
116 array_wr32(E1000_VFTA, offset, value); 116 array_wr32(E1000_VFTA, offset, value);
117 wrfl(); 117 wrfl();
diff --git a/drivers/net/igb/e1000_mac.h b/drivers/net/igb/e1000_mac.h
index a34de5269637..1d690b4c9ae4 100644
--- a/drivers/net/igb/e1000_mac.h
+++ b/drivers/net/igb/e1000_mac.h
@@ -66,7 +66,6 @@ void igb_rar_set(struct e1000_hw *hw, u8 *addr, u32 index);
66s32 igb_check_alt_mac_addr(struct e1000_hw *hw); 66s32 igb_check_alt_mac_addr(struct e1000_hw *hw);
67void igb_reset_adaptive(struct e1000_hw *hw); 67void igb_reset_adaptive(struct e1000_hw *hw);
68void igb_update_adaptive(struct e1000_hw *hw); 68void igb_update_adaptive(struct e1000_hw *hw);
69void igb_write_vfta(struct e1000_hw *hw, u32 offset, u32 value);
70 69
71bool igb_enable_mng_pass_thru(struct e1000_hw *hw); 70bool igb_enable_mng_pass_thru(struct e1000_hw *hw);
72 71
diff --git a/drivers/net/igb/e1000_mbx.c b/drivers/net/igb/e1000_mbx.c
index fe71c7ddaa05..840782fb5736 100644
--- a/drivers/net/igb/e1000_mbx.c
+++ b/drivers/net/igb/e1000_mbx.c
@@ -188,7 +188,7 @@ out:
188 * returns SUCCESS if it successfully received a message notification and 188 * returns SUCCESS if it successfully received a message notification and
189 * copied it into the receive buffer. 189 * copied it into the receive buffer.
190 **/ 190 **/
191s32 igb_read_posted_mbx(struct e1000_hw *hw, u32 *msg, u16 size, u16 mbx_id) 191static s32 igb_read_posted_mbx(struct e1000_hw *hw, u32 *msg, u16 size, u16 mbx_id)
192{ 192{
193 struct e1000_mbx_info *mbx = &hw->mbx; 193 struct e1000_mbx_info *mbx = &hw->mbx;
194 s32 ret_val = -E1000_ERR_MBX; 194 s32 ret_val = -E1000_ERR_MBX;
@@ -214,7 +214,7 @@ out:
214 * returns SUCCESS if it successfully copied message into the buffer and 214 * returns SUCCESS if it successfully copied message into the buffer and
215 * received an ack to that message within delay * timeout period 215 * received an ack to that message within delay * timeout period
216 **/ 216 **/
217s32 igb_write_posted_mbx(struct e1000_hw *hw, u32 *msg, u16 size, u16 mbx_id) 217static s32 igb_write_posted_mbx(struct e1000_hw *hw, u32 *msg, u16 size, u16 mbx_id)
218{ 218{
219 struct e1000_mbx_info *mbx = &hw->mbx; 219 struct e1000_mbx_info *mbx = &hw->mbx;
220 s32 ret_val = 0; 220 s32 ret_val = 0;
@@ -232,19 +232,6 @@ out:
232 return ret_val; 232 return ret_val;
233} 233}
234 234
235/**
236 * e1000_init_mbx_ops_generic - Initialize NVM function pointers
237 * @hw: pointer to the HW structure
238 *
239 * Setups up the function pointers to no-op functions
240 **/
241void e1000_init_mbx_ops_generic(struct e1000_hw *hw)
242{
243 struct e1000_mbx_info *mbx = &hw->mbx;
244 mbx->ops.read_posted = igb_read_posted_mbx;
245 mbx->ops.write_posted = igb_write_posted_mbx;
246}
247
248static s32 igb_check_for_bit_pf(struct e1000_hw *hw, u32 mask) 235static s32 igb_check_for_bit_pf(struct e1000_hw *hw, u32 mask)
249{ 236{
250 u32 mbvficr = rd32(E1000_MBVFICR); 237 u32 mbvficr = rd32(E1000_MBVFICR);
diff --git a/drivers/net/igb/e1000_mbx.h b/drivers/net/igb/e1000_mbx.h
index 6ec9890a8f7a..ebc02ea3f198 100644
--- a/drivers/net/igb/e1000_mbx.h
+++ b/drivers/net/igb/e1000_mbx.h
@@ -67,8 +67,6 @@
67 67
68s32 igb_read_mbx(struct e1000_hw *, u32 *, u16, u16); 68s32 igb_read_mbx(struct e1000_hw *, u32 *, u16, u16);
69s32 igb_write_mbx(struct e1000_hw *, u32 *, u16, u16); 69s32 igb_write_mbx(struct e1000_hw *, u32 *, u16, u16);
70s32 igb_read_posted_mbx(struct e1000_hw *, u32 *, u16, u16);
71s32 igb_write_posted_mbx(struct e1000_hw *, u32 *, u16, u16);
72s32 igb_check_for_msg(struct e1000_hw *, u16); 70s32 igb_check_for_msg(struct e1000_hw *, u16);
73s32 igb_check_for_ack(struct e1000_hw *, u16); 71s32 igb_check_for_ack(struct e1000_hw *, u16);
74s32 igb_check_for_rst(struct e1000_hw *, u16); 72s32 igb_check_for_rst(struct e1000_hw *, u16);
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 6b0697c565b9..08c801490c72 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -152,14 +152,13 @@ static struct notifier_block dca_notifier = {
152/* for netdump / net console */ 152/* for netdump / net console */
153static void igb_netpoll(struct net_device *); 153static void igb_netpoll(struct net_device *);
154#endif 154#endif
155
156#ifdef CONFIG_PCI_IOV 155#ifdef CONFIG_PCI_IOV
157static ssize_t igb_set_num_vfs(struct device *, struct device_attribute *, 156static unsigned int max_vfs = 0;
158 const char *, size_t); 157module_param(max_vfs, uint, 0);
159static ssize_t igb_show_num_vfs(struct device *, struct device_attribute *, 158MODULE_PARM_DESC(max_vfs, "Maximum number of virtual functions to allocate "
160 char *); 159 "per physical function");
161DEVICE_ATTR(num_vfs, S_IRUGO | S_IWUSR, igb_show_num_vfs, igb_set_num_vfs); 160#endif /* CONFIG_PCI_IOV */
162#endif 161
163static pci_ers_result_t igb_io_error_detected(struct pci_dev *, 162static pci_ers_result_t igb_io_error_detected(struct pci_dev *,
164 pci_channel_state_t); 163 pci_channel_state_t);
165static pci_ers_result_t igb_io_slot_reset(struct pci_dev *); 164static pci_ers_result_t igb_io_slot_reset(struct pci_dev *);
@@ -671,6 +670,21 @@ static void igb_set_interrupt_capability(struct igb_adapter *adapter)
671 670
672 /* If we can't do MSI-X, try MSI */ 671 /* If we can't do MSI-X, try MSI */
673msi_only: 672msi_only:
673#ifdef CONFIG_PCI_IOV
674 /* disable SR-IOV for non MSI-X configurations */
675 if (adapter->vf_data) {
676 struct e1000_hw *hw = &adapter->hw;
677 /* disable iov and allow time for transactions to clear */
678 pci_disable_sriov(adapter->pdev);
679 msleep(500);
680
681 kfree(adapter->vf_data);
682 adapter->vf_data = NULL;
683 wr32(E1000_IOVCTL, E1000_IOVCTL_REUSE_VFQ);
684 msleep(100);
685 dev_info(&adapter->pdev->dev, "IOV Disabled\n");
686 }
687#endif
674 adapter->num_rx_queues = 1; 688 adapter->num_rx_queues = 1;
675 adapter->num_tx_queues = 1; 689 adapter->num_tx_queues = 1;
676 if (!pci_enable_msi(adapter->pdev)) 690 if (!pci_enable_msi(adapter->pdev))
@@ -1238,6 +1252,46 @@ static int __devinit igb_probe(struct pci_dev *pdev,
1238 if (err) 1252 if (err)
1239 goto err_sw_init; 1253 goto err_sw_init;
1240 1254
1255#ifdef CONFIG_PCI_IOV
1256 /* since iov functionality isn't critical to base device function we
1257 * can accept failure. If it fails we don't allow iov to be enabled */
1258 if (hw->mac.type == e1000_82576) {
1259 /* 82576 supports a maximum of 7 VFs in addition to the PF */
1260 unsigned int num_vfs = (max_vfs > 7) ? 7 : max_vfs;
1261 int i;
1262 unsigned char mac_addr[ETH_ALEN];
1263
1264 if (num_vfs) {
1265 adapter->vf_data = kcalloc(num_vfs,
1266 sizeof(struct vf_data_storage),
1267 GFP_KERNEL);
1268 if (!adapter->vf_data) {
1269 dev_err(&pdev->dev,
1270 "Could not allocate VF private data - "
1271 "IOV enable failed\n");
1272 } else {
1273 err = pci_enable_sriov(pdev, num_vfs);
1274 if (!err) {
1275 adapter->vfs_allocated_count = num_vfs;
1276 dev_info(&pdev->dev,
1277 "%d vfs allocated\n",
1278 num_vfs);
1279 for (i = 0;
1280 i < adapter->vfs_allocated_count;
1281 i++) {
1282 random_ether_addr(mac_addr);
1283 igb_set_vf_mac(adapter, i,
1284 mac_addr);
1285 }
1286 } else {
1287 kfree(adapter->vf_data);
1288 adapter->vf_data = NULL;
1289 }
1290 }
1291 }
1292 }
1293
1294#endif
1241 /* setup the private structure */ 1295 /* setup the private structure */
1242 err = igb_sw_init(adapter); 1296 err = igb_sw_init(adapter);
1243 if (err) 1297 if (err)
@@ -1397,19 +1451,6 @@ static int __devinit igb_probe(struct pci_dev *pdev,
1397 if (err) 1451 if (err)
1398 goto err_register; 1452 goto err_register;
1399 1453
1400#ifdef CONFIG_PCI_IOV
1401 /* since iov functionality isn't critical to base device function we
1402 * can accept failure. If it fails we don't allow iov to be enabled */
1403 if (hw->mac.type == e1000_82576) {
1404 err = pci_enable_sriov(pdev, 0);
1405 if (!err)
1406 err = device_create_file(&netdev->dev,
1407 &dev_attr_num_vfs);
1408 if (err)
1409 dev_err(&pdev->dev, "Failed to initialize IOV\n");
1410 }
1411
1412#endif
1413#ifdef CONFIG_IGB_DCA 1454#ifdef CONFIG_IGB_DCA
1414 if (dca_add_requester(&pdev->dev) == 0) { 1455 if (dca_add_requester(&pdev->dev) == 0) {
1415 adapter->flags |= IGB_FLAG_DCA_ENABLED; 1456 adapter->flags |= IGB_FLAG_DCA_ENABLED;
@@ -5422,89 +5463,4 @@ static void igb_vmm_control(struct igb_adapter *adapter)
5422 igb_vmdq_set_replication_pf(hw, true); 5463 igb_vmdq_set_replication_pf(hw, true);
5423} 5464}
5424 5465
5425#ifdef CONFIG_PCI_IOV
5426static ssize_t igb_show_num_vfs(struct device *dev,
5427 struct device_attribute *attr, char *buf)
5428{
5429 struct igb_adapter *adapter = netdev_priv(to_net_dev(dev));
5430
5431 return sprintf(buf, "%d\n", adapter->vfs_allocated_count);
5432}
5433
5434static ssize_t igb_set_num_vfs(struct device *dev,
5435 struct device_attribute *attr,
5436 const char *buf, size_t count)
5437{
5438 struct net_device *netdev = to_net_dev(dev);
5439 struct igb_adapter *adapter = netdev_priv(netdev);
5440 struct e1000_hw *hw = &adapter->hw;
5441 struct pci_dev *pdev = adapter->pdev;
5442 unsigned int num_vfs, i;
5443 unsigned char mac_addr[ETH_ALEN];
5444 int err;
5445
5446 sscanf(buf, "%u", &num_vfs);
5447
5448 if (num_vfs > 7)
5449 num_vfs = 7;
5450
5451 /* value unchanged do nothing */
5452 if (num_vfs == adapter->vfs_allocated_count)
5453 return count;
5454
5455 if (netdev->flags & IFF_UP)
5456 igb_close(netdev);
5457
5458 igb_reset_interrupt_capability(adapter);
5459 igb_free_queues(adapter);
5460 adapter->tx_ring = NULL;
5461 adapter->rx_ring = NULL;
5462 adapter->vfs_allocated_count = 0;
5463
5464 /* reclaim resources allocated to VFs since we are changing count */
5465 if (adapter->vf_data) {
5466 /* disable iov and allow time for transactions to clear */
5467 pci_disable_sriov(pdev);
5468 msleep(500);
5469
5470 kfree(adapter->vf_data);
5471 adapter->vf_data = NULL;
5472 wr32(E1000_IOVCTL, E1000_IOVCTL_REUSE_VFQ);
5473 msleep(100);
5474 dev_info(&pdev->dev, "IOV Disabled\n");
5475 }
5476
5477 if (num_vfs) {
5478 adapter->vf_data = kcalloc(num_vfs,
5479 sizeof(struct vf_data_storage),
5480 GFP_KERNEL);
5481 if (!adapter->vf_data) {
5482 dev_err(&pdev->dev, "Could not allocate VF private "
5483 "data - IOV enable failed\n");
5484 } else {
5485 err = pci_enable_sriov(pdev, num_vfs);
5486 if (!err) {
5487 adapter->vfs_allocated_count = num_vfs;
5488 dev_info(&pdev->dev, "%d vfs allocated\n", num_vfs);
5489 for (i = 0; i < adapter->vfs_allocated_count; i++) {
5490 random_ether_addr(mac_addr);
5491 igb_set_vf_mac(adapter, i, mac_addr);
5492 }
5493 } else {
5494 kfree(adapter->vf_data);
5495 adapter->vf_data = NULL;
5496 }
5497 }
5498 }
5499
5500 igb_set_interrupt_capability(adapter);
5501 igb_alloc_queues(adapter);
5502 igb_reset(adapter);
5503
5504 if (netdev->flags & IFF_UP)
5505 igb_open(netdev);
5506
5507 return count;
5508}
5509#endif /* CONFIG_PCI_IOV */
5510/* igb_main.c */ 5466/* igb_main.c */
diff --git a/drivers/net/igbvf/Makefile b/drivers/net/igbvf/Makefile
new file mode 100644
index 000000000000..c2f150d8f2d9
--- /dev/null
+++ b/drivers/net/igbvf/Makefile
@@ -0,0 +1,38 @@
1################################################################################
2#
3# Intel(R) 82576 Virtual Function Linux driver
4# Copyright(c) 2009 Intel Corporation.
5#
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,
8# version 2, as 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 for
13# more details.
14#
15# You should have received a copy of the GNU General Public License along with
16# this program; if not, write to the Free Software Foundation, Inc.,
17# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18#
19# The full GNU General Public License is included in this distribution in
20# the file called "COPYING".
21#
22# Contact Information:
23# e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24# Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25#
26################################################################################
27
28#
29# Makefile for the Intel(R) 82576 VF ethernet driver
30#
31
32obj-$(CONFIG_IGBVF) += igbvf.o
33
34igbvf-objs := vf.o \
35 mbx.o \
36 ethtool.o \
37 netdev.o
38
diff --git a/drivers/net/igbvf/defines.h b/drivers/net/igbvf/defines.h
new file mode 100644
index 000000000000..88a47537518a
--- /dev/null
+++ b/drivers/net/igbvf/defines.h
@@ -0,0 +1,125 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28#ifndef _E1000_DEFINES_H_
29#define _E1000_DEFINES_H_
30
31/* Number of Transmit and Receive Descriptors must be a multiple of 8 */
32#define REQ_TX_DESCRIPTOR_MULTIPLE 8
33#define REQ_RX_DESCRIPTOR_MULTIPLE 8
34
35/* IVAR valid bit */
36#define E1000_IVAR_VALID 0x80
37
38/* Receive Descriptor bit definitions */
39#define E1000_RXD_STAT_DD 0x01 /* Descriptor Done */
40#define E1000_RXD_STAT_EOP 0x02 /* End of Packet */
41#define E1000_RXD_STAT_IXSM 0x04 /* Ignore checksum */
42#define E1000_RXD_STAT_VP 0x08 /* IEEE VLAN Packet */
43#define E1000_RXD_STAT_UDPCS 0x10 /* UDP xsum calculated */
44#define E1000_RXD_STAT_TCPCS 0x20 /* TCP xsum calculated */
45#define E1000_RXD_STAT_IPCS 0x40 /* IP xsum calculated */
46#define E1000_RXD_ERR_SE 0x02 /* Symbol Error */
47#define E1000_RXD_SPC_VLAN_MASK 0x0FFF /* VLAN ID is in lower 12 bits */
48
49#define E1000_RXDEXT_STATERR_CE 0x01000000
50#define E1000_RXDEXT_STATERR_SE 0x02000000
51#define E1000_RXDEXT_STATERR_SEQ 0x04000000
52#define E1000_RXDEXT_STATERR_CXE 0x10000000
53#define E1000_RXDEXT_STATERR_TCPE 0x20000000
54#define E1000_RXDEXT_STATERR_IPE 0x40000000
55#define E1000_RXDEXT_STATERR_RXE 0x80000000
56
57
58/* Same mask, but for extended and packet split descriptors */
59#define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \
60 E1000_RXDEXT_STATERR_CE | \
61 E1000_RXDEXT_STATERR_SE | \
62 E1000_RXDEXT_STATERR_SEQ | \
63 E1000_RXDEXT_STATERR_CXE | \
64 E1000_RXDEXT_STATERR_RXE)
65
66/* Device Control */
67#define E1000_CTRL_RST 0x04000000 /* Global reset */
68
69/* Device Status */
70#define E1000_STATUS_FD 0x00000001 /* Full duplex.0=half,1=full */
71#define E1000_STATUS_LU 0x00000002 /* Link up.0=no,1=link */
72#define E1000_STATUS_TXOFF 0x00000010 /* transmission paused */
73#define E1000_STATUS_SPEED_10 0x00000000 /* Speed 10Mb/s */
74#define E1000_STATUS_SPEED_100 0x00000040 /* Speed 100Mb/s */
75#define E1000_STATUS_SPEED_1000 0x00000080 /* Speed 1000Mb/s */
76
77#define SPEED_10 10
78#define SPEED_100 100
79#define SPEED_1000 1000
80#define HALF_DUPLEX 1
81#define FULL_DUPLEX 2
82
83/* Transmit Descriptor bit definitions */
84#define E1000_TXD_POPTS_IXSM 0x01 /* Insert IP checksum */
85#define E1000_TXD_POPTS_TXSM 0x02 /* Insert TCP/UDP checksum */
86#define E1000_TXD_CMD_DEXT 0x20000000 /* Descriptor extension (0 = legacy) */
87#define E1000_TXD_STAT_DD 0x00000001 /* Descriptor Done */
88
89#define MAX_JUMBO_FRAME_SIZE 0x3F00
90
91/* 802.1q VLAN Packet Size */
92#define VLAN_TAG_SIZE 4 /* 802.3ac tag (not DMA'd) */
93
94/* Error Codes */
95#define E1000_SUCCESS 0
96#define E1000_ERR_CONFIG 3
97#define E1000_ERR_MAC_INIT 5
98#define E1000_ERR_MBX 15
99
100#ifndef ETH_ADDR_LEN
101#define ETH_ADDR_LEN 6
102#endif
103
104/* SRRCTL bit definitions */
105#define E1000_SRRCTL_BSIZEPKT_SHIFT 10 /* Shift _right_ */
106#define E1000_SRRCTL_BSIZEHDRSIZE_MASK 0x00000F00
107#define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT 2 /* Shift _left_ */
108#define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF 0x02000000
109#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS 0x0A000000
110#define E1000_SRRCTL_DESCTYPE_MASK 0x0E000000
111#define E1000_SRRCTL_DROP_EN 0x80000000
112
113#define E1000_SRRCTL_BSIZEPKT_MASK 0x0000007F
114#define E1000_SRRCTL_BSIZEHDR_MASK 0x00003F00
115
116/* Additional Descriptor Control definitions */
117#define E1000_TXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Tx Queue */
118#define E1000_RXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Rx Queue */
119
120/* Direct Cache Access (DCA) definitions */
121#define E1000_DCA_TXCTRL_TX_WB_RO_EN (1 << 11) /* Tx Desc writeback RO bit */
122
123#define E1000_VF_INIT_TIMEOUT 200 /* Number of retries to clear RSTI */
124
125#endif /* _E1000_DEFINES_H_ */
diff --git a/drivers/net/igbvf/ethtool.c b/drivers/net/igbvf/ethtool.c
new file mode 100644
index 000000000000..1dcaa6905312
--- /dev/null
+++ b/drivers/net/igbvf/ethtool.c
@@ -0,0 +1,540 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28/* ethtool support for igbvf */
29
30#include <linux/netdevice.h>
31#include <linux/ethtool.h>
32#include <linux/pci.h>
33#include <linux/vmalloc.h>
34#include <linux/delay.h>
35
36#include "igbvf.h"
37#include <linux/if_vlan.h>
38
39
40struct igbvf_stats {
41 char stat_string[ETH_GSTRING_LEN];
42 int sizeof_stat;
43 int stat_offset;
44 int base_stat_offset;
45};
46
47#define IGBVF_STAT(current, base) \
48 sizeof(((struct igbvf_adapter *)0)->current), \
49 offsetof(struct igbvf_adapter, current), \
50 offsetof(struct igbvf_adapter, base)
51
52static const struct igbvf_stats igbvf_gstrings_stats[] = {
53 { "rx_packets", IGBVF_STAT(stats.gprc, stats.base_gprc) },
54 { "tx_packets", IGBVF_STAT(stats.gptc, stats.base_gptc) },
55 { "rx_bytes", IGBVF_STAT(stats.gorc, stats.base_gorc) },
56 { "tx_bytes", IGBVF_STAT(stats.gotc, stats.base_gotc) },
57 { "multicast", IGBVF_STAT(stats.mprc, stats.base_mprc) },
58 { "lbrx_bytes", IGBVF_STAT(stats.gorlbc, stats.base_gorlbc) },
59 { "lbrx_packets", IGBVF_STAT(stats.gprlbc, stats.base_gprlbc) },
60 { "tx_restart_queue", IGBVF_STAT(restart_queue, zero_base) },
61 { "rx_long_byte_count", IGBVF_STAT(stats.gorc, stats.base_gorc) },
62 { "rx_csum_offload_good", IGBVF_STAT(hw_csum_good, zero_base) },
63 { "rx_csum_offload_errors", IGBVF_STAT(hw_csum_err, zero_base) },
64 { "rx_header_split", IGBVF_STAT(rx_hdr_split, zero_base) },
65 { "alloc_rx_buff_failed", IGBVF_STAT(alloc_rx_buff_failed, zero_base) },
66};
67
68#define IGBVF_GLOBAL_STATS_LEN ARRAY_SIZE(igbvf_gstrings_stats)
69
70static const char igbvf_gstrings_test[][ETH_GSTRING_LEN] = {
71 "Link test (on/offline)"
72};
73
74#define IGBVF_TEST_LEN ARRAY_SIZE(igbvf_gstrings_test)
75
76static int igbvf_get_settings(struct net_device *netdev,
77 struct ethtool_cmd *ecmd)
78{
79 struct igbvf_adapter *adapter = netdev_priv(netdev);
80 struct e1000_hw *hw = &adapter->hw;
81 u32 status;
82
83 ecmd->supported = SUPPORTED_1000baseT_Full;
84
85 ecmd->advertising = ADVERTISED_1000baseT_Full;
86
87 ecmd->port = -1;
88 ecmd->transceiver = XCVR_DUMMY1;
89
90 status = er32(STATUS);
91 if (status & E1000_STATUS_LU) {
92 if (status & E1000_STATUS_SPEED_1000)
93 ecmd->speed = 1000;
94 else if (status & E1000_STATUS_SPEED_100)
95 ecmd->speed = 100;
96 else
97 ecmd->speed = 10;
98
99 if (status & E1000_STATUS_FD)
100 ecmd->duplex = DUPLEX_FULL;
101 else
102 ecmd->duplex = DUPLEX_HALF;
103 } else {
104 ecmd->speed = -1;
105 ecmd->duplex = -1;
106 }
107
108 ecmd->autoneg = AUTONEG_DISABLE;
109
110 return 0;
111}
112
113static u32 igbvf_get_link(struct net_device *netdev)
114{
115 return netif_carrier_ok(netdev);
116}
117
118static int igbvf_set_settings(struct net_device *netdev,
119 struct ethtool_cmd *ecmd)
120{
121 return -EOPNOTSUPP;
122}
123
124static void igbvf_get_pauseparam(struct net_device *netdev,
125 struct ethtool_pauseparam *pause)
126{
127 return;
128}
129
130static int igbvf_set_pauseparam(struct net_device *netdev,
131 struct ethtool_pauseparam *pause)
132{
133 return -EOPNOTSUPP;
134}
135
136static u32 igbvf_get_tx_csum(struct net_device *netdev)
137{
138 return ((netdev->features & NETIF_F_IP_CSUM) != 0);
139}
140
141static int igbvf_set_tx_csum(struct net_device *netdev, u32 data)
142{
143 if (data)
144 netdev->features |= (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM);
145 else
146 netdev->features &= ~(NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM);
147 return 0;
148}
149
150static int igbvf_set_tso(struct net_device *netdev, u32 data)
151{
152 struct igbvf_adapter *adapter = netdev_priv(netdev);
153 int i;
154 struct net_device *v_netdev;
155
156 if (data) {
157 netdev->features |= NETIF_F_TSO;
158 netdev->features |= NETIF_F_TSO6;
159 } else {
160 netdev->features &= ~NETIF_F_TSO;
161 netdev->features &= ~NETIF_F_TSO6;
162 /* disable TSO on all VLANs if they're present */
163 if (!adapter->vlgrp)
164 goto tso_out;
165 for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) {
166 v_netdev = vlan_group_get_device(adapter->vlgrp, i);
167 if (!v_netdev)
168 continue;
169
170 v_netdev->features &= ~NETIF_F_TSO;
171 v_netdev->features &= ~NETIF_F_TSO6;
172 vlan_group_set_device(adapter->vlgrp, i, v_netdev);
173 }
174 }
175
176tso_out:
177 dev_info(&adapter->pdev->dev, "TSO is %s\n",
178 data ? "Enabled" : "Disabled");
179 adapter->flags |= FLAG_TSO_FORCE;
180 return 0;
181}
182
183static u32 igbvf_get_msglevel(struct net_device *netdev)
184{
185 struct igbvf_adapter *adapter = netdev_priv(netdev);
186 return adapter->msg_enable;
187}
188
189static void igbvf_set_msglevel(struct net_device *netdev, u32 data)
190{
191 struct igbvf_adapter *adapter = netdev_priv(netdev);
192 adapter->msg_enable = data;
193}
194
195static int igbvf_get_regs_len(struct net_device *netdev)
196{
197#define IGBVF_REGS_LEN 8
198 return IGBVF_REGS_LEN * sizeof(u32);
199}
200
201static void igbvf_get_regs(struct net_device *netdev,
202 struct ethtool_regs *regs, void *p)
203{
204 struct igbvf_adapter *adapter = netdev_priv(netdev);
205 struct e1000_hw *hw = &adapter->hw;
206 u32 *regs_buff = p;
207 u8 revision_id;
208
209 memset(p, 0, IGBVF_REGS_LEN * sizeof(u32));
210
211 pci_read_config_byte(adapter->pdev, PCI_REVISION_ID, &revision_id);
212
213 regs->version = (1 << 24) | (revision_id << 16) | adapter->pdev->device;
214
215 regs_buff[0] = er32(CTRL);
216 regs_buff[1] = er32(STATUS);
217
218 regs_buff[2] = er32(RDLEN(0));
219 regs_buff[3] = er32(RDH(0));
220 regs_buff[4] = er32(RDT(0));
221
222 regs_buff[5] = er32(TDLEN(0));
223 regs_buff[6] = er32(TDH(0));
224 regs_buff[7] = er32(TDT(0));
225}
226
227static int igbvf_get_eeprom_len(struct net_device *netdev)
228{
229 return 0;
230}
231
232static int igbvf_get_eeprom(struct net_device *netdev,
233 struct ethtool_eeprom *eeprom, u8 *bytes)
234{
235 return -EOPNOTSUPP;
236}
237
238static int igbvf_set_eeprom(struct net_device *netdev,
239 struct ethtool_eeprom *eeprom, u8 *bytes)
240{
241 return -EOPNOTSUPP;
242}
243
244static void igbvf_get_drvinfo(struct net_device *netdev,
245 struct ethtool_drvinfo *drvinfo)
246{
247 struct igbvf_adapter *adapter = netdev_priv(netdev);
248 char firmware_version[32] = "N/A";
249
250 strncpy(drvinfo->driver, igbvf_driver_name, 32);
251 strncpy(drvinfo->version, igbvf_driver_version, 32);
252 strncpy(drvinfo->fw_version, firmware_version, 32);
253 strncpy(drvinfo->bus_info, pci_name(adapter->pdev), 32);
254 drvinfo->regdump_len = igbvf_get_regs_len(netdev);
255 drvinfo->eedump_len = igbvf_get_eeprom_len(netdev);
256}
257
258static void igbvf_get_ringparam(struct net_device *netdev,
259 struct ethtool_ringparam *ring)
260{
261 struct igbvf_adapter *adapter = netdev_priv(netdev);
262 struct igbvf_ring *tx_ring = adapter->tx_ring;
263 struct igbvf_ring *rx_ring = adapter->rx_ring;
264
265 ring->rx_max_pending = IGBVF_MAX_RXD;
266 ring->tx_max_pending = IGBVF_MAX_TXD;
267 ring->rx_mini_max_pending = 0;
268 ring->rx_jumbo_max_pending = 0;
269 ring->rx_pending = rx_ring->count;
270 ring->tx_pending = tx_ring->count;
271 ring->rx_mini_pending = 0;
272 ring->rx_jumbo_pending = 0;
273}
274
275static int igbvf_set_ringparam(struct net_device *netdev,
276 struct ethtool_ringparam *ring)
277{
278 struct igbvf_adapter *adapter = netdev_priv(netdev);
279 struct igbvf_ring *temp_ring;
280 int err;
281 u32 new_rx_count, new_tx_count;
282
283 if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
284 return -EINVAL;
285
286 new_rx_count = max(ring->rx_pending, (u32)IGBVF_MIN_RXD);
287 new_rx_count = min(new_rx_count, (u32)IGBVF_MAX_RXD);
288 new_rx_count = ALIGN(new_rx_count, REQ_RX_DESCRIPTOR_MULTIPLE);
289
290 new_tx_count = max(ring->tx_pending, (u32)IGBVF_MIN_TXD);
291 new_tx_count = min(new_tx_count, (u32)IGBVF_MAX_TXD);
292 new_tx_count = ALIGN(new_tx_count, REQ_TX_DESCRIPTOR_MULTIPLE);
293
294 if ((new_tx_count == adapter->tx_ring->count) &&
295 (new_rx_count == adapter->rx_ring->count)) {
296 /* nothing to do */
297 return 0;
298 }
299
300 temp_ring = vmalloc(sizeof(struct igbvf_ring));
301 if (!temp_ring)
302 return -ENOMEM;
303
304 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
305 msleep(1);
306
307 if (netif_running(adapter->netdev))
308 igbvf_down(adapter);
309
310 /*
311 * We can't just free everything and then setup again,
312 * because the ISRs in MSI-X mode get passed pointers
313 * to the tx and rx ring structs.
314 */
315 if (new_tx_count != adapter->tx_ring->count) {
316 memcpy(temp_ring, adapter->tx_ring, sizeof(struct igbvf_ring));
317
318 temp_ring->count = new_tx_count;
319 err = igbvf_setup_tx_resources(adapter, temp_ring);
320 if (err)
321 goto err_setup;
322
323 igbvf_free_tx_resources(adapter->tx_ring);
324
325 memcpy(adapter->tx_ring, temp_ring, sizeof(struct igbvf_ring));
326 }
327
328 if (new_rx_count != adapter->rx_ring->count) {
329 memcpy(temp_ring, adapter->rx_ring, sizeof(struct igbvf_ring));
330
331 temp_ring->count = new_rx_count;
332 err = igbvf_setup_rx_resources(adapter, temp_ring);
333 if (err)
334 goto err_setup;
335
336 igbvf_free_rx_resources(adapter->rx_ring);
337
338 memcpy(adapter->rx_ring, temp_ring,sizeof(struct igbvf_ring));
339 }
340
341 err = 0;
342err_setup:
343 if (netif_running(adapter->netdev))
344 igbvf_up(adapter);
345
346 clear_bit(__IGBVF_RESETTING, &adapter->state);
347 vfree(temp_ring);
348 return err;
349}
350
351static int igbvf_link_test(struct igbvf_adapter *adapter, u64 *data)
352{
353 struct e1000_hw *hw = &adapter->hw;
354 *data = 0;
355
356 hw->mac.ops.check_for_link(hw);
357
358 if (!(er32(STATUS) & E1000_STATUS_LU))
359 *data = 1;
360
361 return *data;
362}
363
364static int igbvf_get_self_test_count(struct net_device *netdev)
365{
366 return IGBVF_TEST_LEN;
367}
368
369static int igbvf_get_stats_count(struct net_device *netdev)
370{
371 return IGBVF_GLOBAL_STATS_LEN;
372}
373
374static void igbvf_diag_test(struct net_device *netdev,
375 struct ethtool_test *eth_test, u64 *data)
376{
377 struct igbvf_adapter *adapter = netdev_priv(netdev);
378
379 set_bit(__IGBVF_TESTING, &adapter->state);
380
381 /*
382 * Link test performed before hardware reset so autoneg doesn't
383 * interfere with test result
384 */
385 if (igbvf_link_test(adapter, &data[0]))
386 eth_test->flags |= ETH_TEST_FL_FAILED;
387
388 clear_bit(__IGBVF_TESTING, &adapter->state);
389 msleep_interruptible(4 * 1000);
390}
391
392static void igbvf_get_wol(struct net_device *netdev,
393 struct ethtool_wolinfo *wol)
394{
395 wol->supported = 0;
396 wol->wolopts = 0;
397
398 return;
399}
400
401static int igbvf_set_wol(struct net_device *netdev,
402 struct ethtool_wolinfo *wol)
403{
404 return -EOPNOTSUPP;
405}
406
407static int igbvf_phys_id(struct net_device *netdev, u32 data)
408{
409 return 0;
410}
411
412static int igbvf_get_coalesce(struct net_device *netdev,
413 struct ethtool_coalesce *ec)
414{
415 struct igbvf_adapter *adapter = netdev_priv(netdev);
416
417 if (adapter->itr_setting <= 3)
418 ec->rx_coalesce_usecs = adapter->itr_setting;
419 else
420 ec->rx_coalesce_usecs = adapter->itr_setting >> 2;
421
422 return 0;
423}
424
425static int igbvf_set_coalesce(struct net_device *netdev,
426 struct ethtool_coalesce *ec)
427{
428 struct igbvf_adapter *adapter = netdev_priv(netdev);
429 struct e1000_hw *hw = &adapter->hw;
430
431 if ((ec->rx_coalesce_usecs > IGBVF_MAX_ITR_USECS) ||
432 ((ec->rx_coalesce_usecs > 3) &&
433 (ec->rx_coalesce_usecs < IGBVF_MIN_ITR_USECS)) ||
434 (ec->rx_coalesce_usecs == 2))
435 return -EINVAL;
436
437 /* convert to rate of irq's per second */
438 if (ec->rx_coalesce_usecs && ec->rx_coalesce_usecs <= 3) {
439 adapter->itr = IGBVF_START_ITR;
440 adapter->itr_setting = ec->rx_coalesce_usecs;
441 } else {
442 adapter->itr = ec->rx_coalesce_usecs << 2;
443 adapter->itr_setting = adapter->itr;
444 }
445
446 writel(adapter->itr,
447 hw->hw_addr + adapter->rx_ring[0].itr_register);
448
449 return 0;
450}
451
452static int igbvf_nway_reset(struct net_device *netdev)
453{
454 struct igbvf_adapter *adapter = netdev_priv(netdev);
455 if (netif_running(netdev))
456 igbvf_reinit_locked(adapter);
457 return 0;
458}
459
460
461static void igbvf_get_ethtool_stats(struct net_device *netdev,
462 struct ethtool_stats *stats,
463 u64 *data)
464{
465 struct igbvf_adapter *adapter = netdev_priv(netdev);
466 int i;
467
468 igbvf_update_stats(adapter);
469 for (i = 0; i < IGBVF_GLOBAL_STATS_LEN; i++) {
470 char *p = (char *)adapter +
471 igbvf_gstrings_stats[i].stat_offset;
472 char *b = (char *)adapter +
473 igbvf_gstrings_stats[i].base_stat_offset;
474 data[i] = ((igbvf_gstrings_stats[i].sizeof_stat ==
475 sizeof(u64)) ? (*(u64 *)p - *(u64 *)b) :
476 (*(u32 *)p - *(u32 *)b));
477 }
478
479}
480
481static void igbvf_get_strings(struct net_device *netdev, u32 stringset,
482 u8 *data)
483{
484 u8 *p = data;
485 int i;
486
487 switch (stringset) {
488 case ETH_SS_TEST:
489 memcpy(data, *igbvf_gstrings_test, sizeof(igbvf_gstrings_test));
490 break;
491 case ETH_SS_STATS:
492 for (i = 0; i < IGBVF_GLOBAL_STATS_LEN; i++) {
493 memcpy(p, igbvf_gstrings_stats[i].stat_string,
494 ETH_GSTRING_LEN);
495 p += ETH_GSTRING_LEN;
496 }
497 break;
498 }
499}
500
501static const struct ethtool_ops igbvf_ethtool_ops = {
502 .get_settings = igbvf_get_settings,
503 .set_settings = igbvf_set_settings,
504 .get_drvinfo = igbvf_get_drvinfo,
505 .get_regs_len = igbvf_get_regs_len,
506 .get_regs = igbvf_get_regs,
507 .get_wol = igbvf_get_wol,
508 .set_wol = igbvf_set_wol,
509 .get_msglevel = igbvf_get_msglevel,
510 .set_msglevel = igbvf_set_msglevel,
511 .nway_reset = igbvf_nway_reset,
512 .get_link = igbvf_get_link,
513 .get_eeprom_len = igbvf_get_eeprom_len,
514 .get_eeprom = igbvf_get_eeprom,
515 .set_eeprom = igbvf_set_eeprom,
516 .get_ringparam = igbvf_get_ringparam,
517 .set_ringparam = igbvf_set_ringparam,
518 .get_pauseparam = igbvf_get_pauseparam,
519 .set_pauseparam = igbvf_set_pauseparam,
520 .get_tx_csum = igbvf_get_tx_csum,
521 .set_tx_csum = igbvf_set_tx_csum,
522 .get_sg = ethtool_op_get_sg,
523 .set_sg = ethtool_op_set_sg,
524 .get_tso = ethtool_op_get_tso,
525 .set_tso = igbvf_set_tso,
526 .self_test = igbvf_diag_test,
527 .get_strings = igbvf_get_strings,
528 .phys_id = igbvf_phys_id,
529 .get_ethtool_stats = igbvf_get_ethtool_stats,
530 .self_test_count = igbvf_get_self_test_count,
531 .get_stats_count = igbvf_get_stats_count,
532 .get_coalesce = igbvf_get_coalesce,
533 .set_coalesce = igbvf_set_coalesce,
534};
535
536void igbvf_set_ethtool_ops(struct net_device *netdev)
537{
538 /* have to "undeclare" const on this struct to remove warnings */
539 SET_ETHTOOL_OPS(netdev, (struct ethtool_ops *)&igbvf_ethtool_ops);
540}
diff --git a/drivers/net/igbvf/igbvf.h b/drivers/net/igbvf/igbvf.h
new file mode 100644
index 000000000000..4bff35e46871
--- /dev/null
+++ b/drivers/net/igbvf/igbvf.h
@@ -0,0 +1,332 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28/* Linux PRO/1000 Ethernet Driver main header file */
29
30#ifndef _IGBVF_H_
31#define _IGBVF_H_
32
33#include <linux/types.h>
34#include <linux/timer.h>
35#include <linux/io.h>
36#include <linux/netdevice.h>
37
38
39#include "vf.h"
40
41/* Forward declarations */
42struct igbvf_info;
43struct igbvf_adapter;
44
45/* Interrupt defines */
46#define IGBVF_START_ITR 648 /* ~6000 ints/sec */
47
48/* Interrupt modes, as used by the IntMode paramter */
49#define IGBVF_INT_MODE_LEGACY 0
50#define IGBVF_INT_MODE_MSI 1
51#define IGBVF_INT_MODE_MSIX 2
52
53/* Tx/Rx descriptor defines */
54#define IGBVF_DEFAULT_TXD 256
55#define IGBVF_MAX_TXD 4096
56#define IGBVF_MIN_TXD 80
57
58#define IGBVF_DEFAULT_RXD 256
59#define IGBVF_MAX_RXD 4096
60#define IGBVF_MIN_RXD 80
61
62#define IGBVF_MIN_ITR_USECS 10 /* 100000 irq/sec */
63#define IGBVF_MAX_ITR_USECS 10000 /* 100 irq/sec */
64
65/* RX descriptor control thresholds.
66 * PTHRESH - MAC will consider prefetch if it has fewer than this number of
67 * descriptors available in its onboard memory.
68 * Setting this to 0 disables RX descriptor prefetch.
69 * HTHRESH - MAC will only prefetch if there are at least this many descriptors
70 * available in host memory.
71 * If PTHRESH is 0, this should also be 0.
72 * WTHRESH - RX descriptor writeback threshold - MAC will delay writing back
73 * descriptors until either it has this many to write back, or the
74 * ITR timer expires.
75 */
76#define IGBVF_RX_PTHRESH 16
77#define IGBVF_RX_HTHRESH 8
78#define IGBVF_RX_WTHRESH 1
79
80/* this is the size past which hardware will drop packets when setting LPE=0 */
81#define MAXIMUM_ETHERNET_VLAN_SIZE 1522
82
83#define IGBVF_FC_PAUSE_TIME 0x0680 /* 858 usec */
84
85/* How many Tx Descriptors do we need to call netif_wake_queue ? */
86#define IGBVF_TX_QUEUE_WAKE 32
87/* How many Rx Buffers do we bundle into one write to the hardware ? */
88#define IGBVF_RX_BUFFER_WRITE 16 /* Must be power of 2 */
89
90#define AUTO_ALL_MODES 0
91#define IGBVF_EEPROM_APME 0x0400
92
93#define IGBVF_MNG_VLAN_NONE (-1)
94
95/* Number of packet split data buffers (not including the header buffer) */
96#define PS_PAGE_BUFFERS (MAX_PS_BUFFERS - 1)
97
98enum igbvf_boards {
99 board_vf,
100};
101
102struct igbvf_queue_stats {
103 u64 packets;
104 u64 bytes;
105};
106
107/*
108 * wrappers around a pointer to a socket buffer,
109 * so a DMA handle can be stored along with the buffer
110 */
111struct igbvf_buffer {
112 dma_addr_t dma;
113 struct sk_buff *skb;
114 union {
115 /* Tx */
116 struct {
117 unsigned long time_stamp;
118 u16 length;
119 u16 next_to_watch;
120 };
121 /* Rx */
122 struct {
123 struct page *page;
124 u64 page_dma;
125 unsigned int page_offset;
126 };
127 };
128 struct page *page;
129};
130
131union igbvf_desc {
132 union e1000_adv_rx_desc rx_desc;
133 union e1000_adv_tx_desc tx_desc;
134 struct e1000_adv_tx_context_desc tx_context_desc;
135};
136
137struct igbvf_ring {
138 struct igbvf_adapter *adapter; /* backlink */
139 union igbvf_desc *desc; /* pointer to ring memory */
140 dma_addr_t dma; /* phys address of ring */
141 unsigned int size; /* length of ring in bytes */
142 unsigned int count; /* number of desc. in ring */
143
144 u16 next_to_use;
145 u16 next_to_clean;
146
147 u16 head;
148 u16 tail;
149
150 /* array of buffer information structs */
151 struct igbvf_buffer *buffer_info;
152 struct napi_struct napi;
153
154 char name[IFNAMSIZ + 5];
155 u32 eims_value;
156 u32 itr_val;
157 u16 itr_register;
158 int set_itr;
159
160 struct sk_buff *rx_skb_top;
161
162 struct igbvf_queue_stats stats;
163};
164
165/* board specific private data structure */
166struct igbvf_adapter {
167 struct timer_list watchdog_timer;
168 struct timer_list blink_timer;
169
170 struct work_struct reset_task;
171 struct work_struct watchdog_task;
172
173 const struct igbvf_info *ei;
174
175 struct vlan_group *vlgrp;
176 u32 bd_number;
177 u32 rx_buffer_len;
178 u32 polling_interval;
179 u16 mng_vlan_id;
180 u16 link_speed;
181 u16 link_duplex;
182
183 spinlock_t tx_queue_lock; /* prevent concurrent tail updates */
184
185 /* track device up/down/testing state */
186 unsigned long state;
187
188 /* Interrupt Throttle Rate */
189 u32 itr;
190 u32 itr_setting;
191 u16 tx_itr;
192 u16 rx_itr;
193
194 /*
195 * Tx
196 */
197 struct igbvf_ring *tx_ring /* One per active queue */
198 ____cacheline_aligned_in_smp;
199
200 unsigned long tx_queue_len;
201 unsigned int restart_queue;
202 u32 txd_cmd;
203
204 bool detect_tx_hung;
205 u8 tx_timeout_factor;
206
207 u32 tx_int_delay;
208 u32 tx_abs_int_delay;
209
210 unsigned int total_tx_bytes;
211 unsigned int total_tx_packets;
212 unsigned int total_rx_bytes;
213 unsigned int total_rx_packets;
214
215 /* Tx stats */
216 u32 tx_timeout_count;
217 u32 tx_fifo_head;
218 u32 tx_head_addr;
219 u32 tx_fifo_size;
220 u32 tx_dma_failed;
221
222 /*
223 * Rx
224 */
225 struct igbvf_ring *rx_ring;
226
227 u32 rx_int_delay;
228 u32 rx_abs_int_delay;
229
230 /* Rx stats */
231 u64 hw_csum_err;
232 u64 hw_csum_good;
233 u64 rx_hdr_split;
234 u32 alloc_rx_buff_failed;
235 u32 rx_dma_failed;
236
237 unsigned int rx_ps_hdr_size;
238 u32 max_frame_size;
239 u32 min_frame_size;
240
241 /* OS defined structs */
242 struct net_device *netdev;
243 struct pci_dev *pdev;
244 struct net_device_stats net_stats;
245 spinlock_t stats_lock; /* prevent concurrent stats updates */
246
247 /* structs defined in e1000_hw.h */
248 struct e1000_hw hw;
249
250 /* The VF counters don't clear on read so we have to get a base
251 * count on driver start up and always subtract that base on
252 * on the first update, thus the flag..
253 */
254 struct e1000_vf_stats stats;
255 u64 zero_base;
256
257 struct igbvf_ring test_tx_ring;
258 struct igbvf_ring test_rx_ring;
259 u32 test_icr;
260
261 u32 msg_enable;
262 struct msix_entry *msix_entries;
263 int int_mode;
264 u32 eims_enable_mask;
265 u32 eims_other;
266 u32 int_counter0;
267 u32 int_counter1;
268
269 u32 eeprom_wol;
270 u32 wol;
271 u32 pba;
272
273 bool fc_autoneg;
274
275 unsigned long led_status;
276
277 unsigned int flags;
278};
279
280struct igbvf_info {
281 enum e1000_mac_type mac;
282 unsigned int flags;
283 u32 pba;
284 void (*init_ops)(struct e1000_hw *);
285 s32 (*get_variants)(struct igbvf_adapter *);
286};
287
288/* hardware capability, feature, and workaround flags */
289#define FLAG_HAS_HW_VLAN_FILTER (1 << 0)
290#define FLAG_HAS_JUMBO_FRAMES (1 << 1)
291#define FLAG_MSI_ENABLED (1 << 2)
292#define FLAG_RX_CSUM_ENABLED (1 << 3)
293#define FLAG_TSO_FORCE (1 << 4)
294
295#define IGBVF_RX_DESC_ADV(R, i) \
296 (&((((R).desc))[i].rx_desc))
297#define IGBVF_TX_DESC_ADV(R, i) \
298 (&((((R).desc))[i].tx_desc))
299#define IGBVF_TX_CTXTDESC_ADV(R, i) \
300 (&((((R).desc))[i].tx_context_desc))
301
302enum igbvf_state_t {
303 __IGBVF_TESTING,
304 __IGBVF_RESETTING,
305 __IGBVF_DOWN
306};
307
308enum latency_range {
309 lowest_latency = 0,
310 low_latency = 1,
311 bulk_latency = 2,
312 latency_invalid = 255
313};
314
315extern char igbvf_driver_name[];
316extern const char igbvf_driver_version[];
317
318extern void igbvf_check_options(struct igbvf_adapter *);
319extern void igbvf_set_ethtool_ops(struct net_device *);
320
321extern int igbvf_up(struct igbvf_adapter *);
322extern void igbvf_down(struct igbvf_adapter *);
323extern void igbvf_reinit_locked(struct igbvf_adapter *);
324extern int igbvf_setup_rx_resources(struct igbvf_adapter *, struct igbvf_ring *);
325extern int igbvf_setup_tx_resources(struct igbvf_adapter *, struct igbvf_ring *);
326extern void igbvf_free_rx_resources(struct igbvf_ring *);
327extern void igbvf_free_tx_resources(struct igbvf_ring *);
328extern void igbvf_update_stats(struct igbvf_adapter *);
329
330extern unsigned int copybreak;
331
332#endif /* _IGBVF_H_ */
diff --git a/drivers/net/igbvf/mbx.c b/drivers/net/igbvf/mbx.c
new file mode 100644
index 000000000000..819a8ec901dc
--- /dev/null
+++ b/drivers/net/igbvf/mbx.c
@@ -0,0 +1,350 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28#include "mbx.h"
29
30/**
31 * e1000_poll_for_msg - Wait for message notification
32 * @hw: pointer to the HW structure
33 *
34 * returns SUCCESS if it successfully received a message notification
35 **/
36static s32 e1000_poll_for_msg(struct e1000_hw *hw)
37{
38 struct e1000_mbx_info *mbx = &hw->mbx;
39 int countdown = mbx->timeout;
40
41 if (!mbx->ops.check_for_msg)
42 goto out;
43
44 while (countdown && mbx->ops.check_for_msg(hw)) {
45 countdown--;
46 udelay(mbx->usec_delay);
47 }
48
49 /* if we failed, all future posted messages fail until reset */
50 if (!countdown)
51 mbx->timeout = 0;
52out:
53 return countdown ? E1000_SUCCESS : -E1000_ERR_MBX;
54}
55
56/**
57 * e1000_poll_for_ack - Wait for message acknowledgement
58 * @hw: pointer to the HW structure
59 *
60 * returns SUCCESS if it successfully received a message acknowledgement
61 **/
62static s32 e1000_poll_for_ack(struct e1000_hw *hw)
63{
64 struct e1000_mbx_info *mbx = &hw->mbx;
65 int countdown = mbx->timeout;
66
67 if (!mbx->ops.check_for_ack)
68 goto out;
69
70 while (countdown && mbx->ops.check_for_ack(hw)) {
71 countdown--;
72 udelay(mbx->usec_delay);
73 }
74
75 /* if we failed, all future posted messages fail until reset */
76 if (!countdown)
77 mbx->timeout = 0;
78out:
79 return countdown ? E1000_SUCCESS : -E1000_ERR_MBX;
80}
81
82/**
83 * e1000_read_posted_mbx - Wait for message notification and receive message
84 * @hw: pointer to the HW structure
85 * @msg: The message buffer
86 * @size: Length of buffer
87 *
88 * returns SUCCESS if it successfully received a message notification and
89 * copied it into the receive buffer.
90 **/
91static s32 e1000_read_posted_mbx(struct e1000_hw *hw, u32 *msg, u16 size)
92{
93 struct e1000_mbx_info *mbx = &hw->mbx;
94 s32 ret_val = -E1000_ERR_MBX;
95
96 if (!mbx->ops.read)
97 goto out;
98
99 ret_val = e1000_poll_for_msg(hw);
100
101 /* if ack received read message, otherwise we timed out */
102 if (!ret_val)
103 ret_val = mbx->ops.read(hw, msg, size);
104out:
105 return ret_val;
106}
107
108/**
109 * e1000_write_posted_mbx - Write a message to the mailbox, wait for ack
110 * @hw: pointer to the HW structure
111 * @msg: The message buffer
112 * @size: Length of buffer
113 *
114 * returns SUCCESS if it successfully copied message into the buffer and
115 * received an ack to that message within delay * timeout period
116 **/
117static s32 e1000_write_posted_mbx(struct e1000_hw *hw, u32 *msg, u16 size)
118{
119 struct e1000_mbx_info *mbx = &hw->mbx;
120 s32 ret_val = -E1000_ERR_MBX;
121
122 /* exit if we either can't write or there isn't a defined timeout */
123 if (!mbx->ops.write || !mbx->timeout)
124 goto out;
125
126 /* send msg*/
127 ret_val = mbx->ops.write(hw, msg, size);
128
129 /* if msg sent wait until we receive an ack */
130 if (!ret_val)
131 ret_val = e1000_poll_for_ack(hw);
132out:
133 return ret_val;
134}
135
136/**
137 * e1000_read_v2p_mailbox - read v2p mailbox
138 * @hw: pointer to the HW structure
139 *
140 * This function is used to read the v2p mailbox without losing the read to
141 * clear status bits.
142 **/
143static u32 e1000_read_v2p_mailbox(struct e1000_hw *hw)
144{
145 u32 v2p_mailbox = er32(V2PMAILBOX(0));
146
147 v2p_mailbox |= hw->dev_spec.vf.v2p_mailbox;
148 hw->dev_spec.vf.v2p_mailbox |= v2p_mailbox & E1000_V2PMAILBOX_R2C_BITS;
149
150 return v2p_mailbox;
151}
152
153/**
154 * e1000_check_for_bit_vf - Determine if a status bit was set
155 * @hw: pointer to the HW structure
156 * @mask: bitmask for bits to be tested and cleared
157 *
158 * This function is used to check for the read to clear bits within
159 * the V2P mailbox.
160 **/
161static s32 e1000_check_for_bit_vf(struct e1000_hw *hw, u32 mask)
162{
163 u32 v2p_mailbox = e1000_read_v2p_mailbox(hw);
164 s32 ret_val = -E1000_ERR_MBX;
165
166 if (v2p_mailbox & mask)
167 ret_val = E1000_SUCCESS;
168
169 hw->dev_spec.vf.v2p_mailbox &= ~mask;
170
171 return ret_val;
172}
173
174/**
175 * e1000_check_for_msg_vf - checks to see if the PF has sent mail
176 * @hw: pointer to the HW structure
177 *
178 * returns SUCCESS if the PF has set the Status bit or else ERR_MBX
179 **/
180static s32 e1000_check_for_msg_vf(struct e1000_hw *hw)
181{
182 s32 ret_val = -E1000_ERR_MBX;
183
184 if (!e1000_check_for_bit_vf(hw, E1000_V2PMAILBOX_PFSTS)) {
185 ret_val = E1000_SUCCESS;
186 hw->mbx.stats.reqs++;
187 }
188
189 return ret_val;
190}
191
192/**
193 * e1000_check_for_ack_vf - checks to see if the PF has ACK'd
194 * @hw: pointer to the HW structure
195 *
196 * returns SUCCESS if the PF has set the ACK bit or else ERR_MBX
197 **/
198static s32 e1000_check_for_ack_vf(struct e1000_hw *hw)
199{
200 s32 ret_val = -E1000_ERR_MBX;
201
202 if (!e1000_check_for_bit_vf(hw, E1000_V2PMAILBOX_PFACK)) {
203 ret_val = E1000_SUCCESS;
204 hw->mbx.stats.acks++;
205 }
206
207 return ret_val;
208}
209
210/**
211 * e1000_check_for_rst_vf - checks to see if the PF has reset
212 * @hw: pointer to the HW structure
213 *
214 * returns true if the PF has set the reset done bit or else false
215 **/
216static s32 e1000_check_for_rst_vf(struct e1000_hw *hw)
217{
218 s32 ret_val = -E1000_ERR_MBX;
219
220 if (!e1000_check_for_bit_vf(hw, (E1000_V2PMAILBOX_RSTD |
221 E1000_V2PMAILBOX_RSTI))) {
222 ret_val = E1000_SUCCESS;
223 hw->mbx.stats.rsts++;
224 }
225
226 return ret_val;
227}
228
229/**
230 * e1000_obtain_mbx_lock_vf - obtain mailbox lock
231 * @hw: pointer to the HW structure
232 *
233 * return SUCCESS if we obtained the mailbox lock
234 **/
235static s32 e1000_obtain_mbx_lock_vf(struct e1000_hw *hw)
236{
237 s32 ret_val = -E1000_ERR_MBX;
238
239 /* Take ownership of the buffer */
240 ew32(V2PMAILBOX(0), E1000_V2PMAILBOX_VFU);
241
242 /* reserve mailbox for vf use */
243 if (e1000_read_v2p_mailbox(hw) & E1000_V2PMAILBOX_VFU)
244 ret_val = E1000_SUCCESS;
245
246 return ret_val;
247}
248
249/**
250 * e1000_write_mbx_vf - Write a message to the mailbox
251 * @hw: pointer to the HW structure
252 * @msg: The message buffer
253 * @size: Length of buffer
254 *
255 * returns SUCCESS if it successfully copied message into the buffer
256 **/
257static s32 e1000_write_mbx_vf(struct e1000_hw *hw, u32 *msg, u16 size)
258{
259 s32 err;
260 u16 i;
261
262 /* lock the mailbox to prevent pf/vf race condition */
263 err = e1000_obtain_mbx_lock_vf(hw);
264 if (err)
265 goto out_no_write;
266
267 /* flush any ack or msg as we are going to overwrite mailbox */
268 e1000_check_for_ack_vf(hw);
269 e1000_check_for_msg_vf(hw);
270
271 /* copy the caller specified message to the mailbox memory buffer */
272 for (i = 0; i < size; i++)
273 array_ew32(VMBMEM(0), i, msg[i]);
274
275 /* update stats */
276 hw->mbx.stats.msgs_tx++;
277
278 /* Drop VFU and interrupt the PF to tell it a message has been sent */
279 ew32(V2PMAILBOX(0), E1000_V2PMAILBOX_REQ);
280
281out_no_write:
282 return err;
283}
284
285/**
286 * e1000_read_mbx_vf - Reads a message from the inbox intended for vf
287 * @hw: pointer to the HW structure
288 * @msg: The message buffer
289 * @size: Length of buffer
290 *
291 * returns SUCCESS if it successfuly read message from buffer
292 **/
293static s32 e1000_read_mbx_vf(struct e1000_hw *hw, u32 *msg, u16 size)
294{
295 s32 err;
296 u16 i;
297
298 /* lock the mailbox to prevent pf/vf race condition */
299 err = e1000_obtain_mbx_lock_vf(hw);
300 if (err)
301 goto out_no_read;
302
303 /* copy the message from the mailbox memory buffer */
304 for (i = 0; i < size; i++)
305 msg[i] = array_er32(VMBMEM(0), i);
306
307 /* Acknowledge receipt and release mailbox, then we're done */
308 ew32(V2PMAILBOX(0), E1000_V2PMAILBOX_ACK);
309
310 /* update stats */
311 hw->mbx.stats.msgs_rx++;
312
313out_no_read:
314 return err;
315}
316
317/**
318 * e1000_init_mbx_params_vf - set initial values for vf mailbox
319 * @hw: pointer to the HW structure
320 *
321 * Initializes the hw->mbx struct to correct values for vf mailbox
322 */
323s32 e1000_init_mbx_params_vf(struct e1000_hw *hw)
324{
325 struct e1000_mbx_info *mbx = &hw->mbx;
326
327 /* start mailbox as timed out and let the reset_hw call set the timeout
328 * value to being communications */
329 mbx->timeout = 0;
330 mbx->usec_delay = E1000_VF_MBX_INIT_DELAY;
331
332 mbx->size = E1000_VFMAILBOX_SIZE;
333
334 mbx->ops.read = e1000_read_mbx_vf;
335 mbx->ops.write = e1000_write_mbx_vf;
336 mbx->ops.read_posted = e1000_read_posted_mbx;
337 mbx->ops.write_posted = e1000_write_posted_mbx;
338 mbx->ops.check_for_msg = e1000_check_for_msg_vf;
339 mbx->ops.check_for_ack = e1000_check_for_ack_vf;
340 mbx->ops.check_for_rst = e1000_check_for_rst_vf;
341
342 mbx->stats.msgs_tx = 0;
343 mbx->stats.msgs_rx = 0;
344 mbx->stats.reqs = 0;
345 mbx->stats.acks = 0;
346 mbx->stats.rsts = 0;
347
348 return E1000_SUCCESS;
349}
350
diff --git a/drivers/net/igbvf/mbx.h b/drivers/net/igbvf/mbx.h
new file mode 100644
index 000000000000..4938609dbfb5
--- /dev/null
+++ b/drivers/net/igbvf/mbx.h
@@ -0,0 +1,75 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28#ifndef _E1000_MBX_H_
29#define _E1000_MBX_H_
30
31#include "vf.h"
32
33#define E1000_V2PMAILBOX_REQ 0x00000001 /* Request for PF Ready bit */
34#define E1000_V2PMAILBOX_ACK 0x00000002 /* Ack PF message received */
35#define E1000_V2PMAILBOX_VFU 0x00000004 /* VF owns the mailbox buffer */
36#define E1000_V2PMAILBOX_PFU 0x00000008 /* PF owns the mailbox buffer */
37#define E1000_V2PMAILBOX_PFSTS 0x00000010 /* PF wrote a message in the MB */
38#define E1000_V2PMAILBOX_PFACK 0x00000020 /* PF ack the previous VF msg */
39#define E1000_V2PMAILBOX_RSTI 0x00000040 /* PF has reset indication */
40#define E1000_V2PMAILBOX_RSTD 0x00000080 /* PF has indicated reset done */
41#define E1000_V2PMAILBOX_R2C_BITS 0x000000B0 /* All read to clear bits */
42
43#define E1000_VFMAILBOX_SIZE 16 /* 16 32 bit words - 64 bytes */
44
45/* If it's a E1000_VF_* msg then it originates in the VF and is sent to the
46 * PF. The reverse is true if it is E1000_PF_*.
47 * Message ACK's are the value or'd with 0xF0000000
48 */
49#define E1000_VT_MSGTYPE_ACK 0x80000000 /* Messages below or'd with
50 * this are the ACK */
51#define E1000_VT_MSGTYPE_NACK 0x40000000 /* Messages below or'd with
52 * this are the NACK */
53#define E1000_VT_MSGTYPE_CTS 0x20000000 /* Indicates that VF is still
54 clear to send requests */
55
56/* We have a total wait time of 1s for vf mailbox posted messages */
57#define E1000_VF_MBX_INIT_TIMEOUT 2000 /* retry count for mailbox timeout */
58#define E1000_VF_MBX_INIT_DELAY 500 /* usec delay between retries */
59
60#define E1000_VT_MSGINFO_SHIFT 16
61/* bits 23:16 are used for exra info for certain messages */
62#define E1000_VT_MSGINFO_MASK (0xFF << E1000_VT_MSGINFO_SHIFT)
63
64#define E1000_VF_RESET 0x01 /* VF requests reset */
65#define E1000_VF_SET_MAC_ADDR 0x02 /* VF requests PF to set MAC addr */
66#define E1000_VF_SET_MULTICAST 0x03 /* VF requests PF to set MC addr */
67#define E1000_VF_SET_VLAN 0x04 /* VF requests PF to set VLAN */
68#define E1000_VF_SET_LPE 0x05 /* VF requests PF to set VMOLR.LPE */
69
70#define E1000_PF_CONTROL_MSG 0x0100 /* PF control message */
71
72void e1000_init_mbx_ops_generic(struct e1000_hw *hw);
73s32 e1000_init_mbx_params_vf(struct e1000_hw *);
74
75#endif /* _E1000_MBX_H_ */
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c
new file mode 100644
index 000000000000..b774666ad3cf
--- /dev/null
+++ b/drivers/net/igbvf/netdev.c
@@ -0,0 +1,2922 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28#include <linux/module.h>
29#include <linux/types.h>
30#include <linux/init.h>
31#include <linux/pci.h>
32#include <linux/vmalloc.h>
33#include <linux/pagemap.h>
34#include <linux/delay.h>
35#include <linux/netdevice.h>
36#include <linux/tcp.h>
37#include <linux/ipv6.h>
38#include <net/checksum.h>
39#include <net/ip6_checksum.h>
40#include <linux/mii.h>
41#include <linux/ethtool.h>
42#include <linux/if_vlan.h>
43#include <linux/pm_qos_params.h>
44
45#include "igbvf.h"
46
47#define DRV_VERSION "1.0.0-k0"
48char igbvf_driver_name[] = "igbvf";
49const char igbvf_driver_version[] = DRV_VERSION;
50static const char igbvf_driver_string[] =
51 "Intel(R) Virtual Function Network Driver";
52static const char igbvf_copyright[] = "Copyright (c) 2009 Intel Corporation.";
53
54static int igbvf_poll(struct napi_struct *napi, int budget);
55static void igbvf_reset(struct igbvf_adapter *);
56static void igbvf_set_interrupt_capability(struct igbvf_adapter *);
57static void igbvf_reset_interrupt_capability(struct igbvf_adapter *);
58
59static struct igbvf_info igbvf_vf_info = {
60 .mac = e1000_vfadapt,
61 .flags = FLAG_HAS_JUMBO_FRAMES
62 | FLAG_RX_CSUM_ENABLED,
63 .pba = 10,
64 .init_ops = e1000_init_function_pointers_vf,
65};
66
67static const struct igbvf_info *igbvf_info_tbl[] = {
68 [board_vf] = &igbvf_vf_info,
69};
70
71/**
72 * igbvf_desc_unused - calculate if we have unused descriptors
73 **/
74static int igbvf_desc_unused(struct igbvf_ring *ring)
75{
76 if (ring->next_to_clean > ring->next_to_use)
77 return ring->next_to_clean - ring->next_to_use - 1;
78
79 return ring->count + ring->next_to_clean - ring->next_to_use - 1;
80}
81
82/**
83 * igbvf_receive_skb - helper function to handle Rx indications
84 * @adapter: board private structure
85 * @status: descriptor status field as written by hardware
86 * @vlan: descriptor vlan field as written by hardware (no le/be conversion)
87 * @skb: pointer to sk_buff to be indicated to stack
88 **/
89static void igbvf_receive_skb(struct igbvf_adapter *adapter,
90 struct net_device *netdev,
91 struct sk_buff *skb,
92 u32 status, u16 vlan)
93{
94 if (adapter->vlgrp && (status & E1000_RXD_STAT_VP))
95 vlan_hwaccel_receive_skb(skb, adapter->vlgrp,
96 le16_to_cpu(vlan) &
97 E1000_RXD_SPC_VLAN_MASK);
98 else
99 netif_receive_skb(skb);
100
101 netdev->last_rx = jiffies;
102}
103
104static inline void igbvf_rx_checksum_adv(struct igbvf_adapter *adapter,
105 u32 status_err, struct sk_buff *skb)
106{
107 skb->ip_summed = CHECKSUM_NONE;
108
109 /* Ignore Checksum bit is set or checksum is disabled through ethtool */
110 if ((status_err & E1000_RXD_STAT_IXSM))
111 return;
112 /* TCP/UDP checksum error bit is set */
113 if (status_err &
114 (E1000_RXDEXT_STATERR_TCPE | E1000_RXDEXT_STATERR_IPE)) {
115 /* let the stack verify checksum errors */
116 adapter->hw_csum_err++;
117 return;
118 }
119 /* It must be a TCP or UDP packet with a valid checksum */
120 if (status_err & (E1000_RXD_STAT_TCPCS | E1000_RXD_STAT_UDPCS))
121 skb->ip_summed = CHECKSUM_UNNECESSARY;
122
123 adapter->hw_csum_good++;
124}
125
126/**
127 * igbvf_alloc_rx_buffers - Replace used receive buffers; packet split
128 * @rx_ring: address of ring structure to repopulate
129 * @cleaned_count: number of buffers to repopulate
130 **/
131static void igbvf_alloc_rx_buffers(struct igbvf_ring *rx_ring,
132 int cleaned_count)
133{
134 struct igbvf_adapter *adapter = rx_ring->adapter;
135 struct net_device *netdev = adapter->netdev;
136 struct pci_dev *pdev = adapter->pdev;
137 union e1000_adv_rx_desc *rx_desc;
138 struct igbvf_buffer *buffer_info;
139 struct sk_buff *skb;
140 unsigned int i;
141 int bufsz;
142
143 i = rx_ring->next_to_use;
144 buffer_info = &rx_ring->buffer_info[i];
145
146 if (adapter->rx_ps_hdr_size)
147 bufsz = adapter->rx_ps_hdr_size;
148 else
149 bufsz = adapter->rx_buffer_len;
150 bufsz += NET_IP_ALIGN;
151
152 while (cleaned_count--) {
153 rx_desc = IGBVF_RX_DESC_ADV(*rx_ring, i);
154
155 if (adapter->rx_ps_hdr_size && !buffer_info->page_dma) {
156 if (!buffer_info->page) {
157 buffer_info->page = alloc_page(GFP_ATOMIC);
158 if (!buffer_info->page) {
159 adapter->alloc_rx_buff_failed++;
160 goto no_buffers;
161 }
162 buffer_info->page_offset = 0;
163 } else {
164 buffer_info->page_offset ^= PAGE_SIZE / 2;
165 }
166 buffer_info->page_dma =
167 pci_map_page(pdev, buffer_info->page,
168 buffer_info->page_offset,
169 PAGE_SIZE / 2,
170 PCI_DMA_FROMDEVICE);
171 }
172
173 if (!buffer_info->skb) {
174 skb = netdev_alloc_skb(netdev, bufsz);
175 if (!skb) {
176 adapter->alloc_rx_buff_failed++;
177 goto no_buffers;
178 }
179
180 /* Make buffer alignment 2 beyond a 16 byte boundary
181 * this will result in a 16 byte aligned IP header after
182 * the 14 byte MAC header is removed
183 */
184 skb_reserve(skb, NET_IP_ALIGN);
185
186 buffer_info->skb = skb;
187 buffer_info->dma = pci_map_single(pdev, skb->data,
188 bufsz,
189 PCI_DMA_FROMDEVICE);
190 }
191 /* Refresh the desc even if buffer_addrs didn't change because
192 * each write-back erases this info. */
193 if (adapter->rx_ps_hdr_size) {
194 rx_desc->read.pkt_addr =
195 cpu_to_le64(buffer_info->page_dma);
196 rx_desc->read.hdr_addr = cpu_to_le64(buffer_info->dma);
197 } else {
198 rx_desc->read.pkt_addr =
199 cpu_to_le64(buffer_info->dma);
200 rx_desc->read.hdr_addr = 0;
201 }
202
203 i++;
204 if (i == rx_ring->count)
205 i = 0;
206 buffer_info = &rx_ring->buffer_info[i];
207 }
208
209no_buffers:
210 if (rx_ring->next_to_use != i) {
211 rx_ring->next_to_use = i;
212 if (i == 0)
213 i = (rx_ring->count - 1);
214 else
215 i--;
216
217 /* Force memory writes to complete before letting h/w
218 * know there are new descriptors to fetch. (Only
219 * applicable for weak-ordered memory model archs,
220 * such as IA-64). */
221 wmb();
222 writel(i, adapter->hw.hw_addr + rx_ring->tail);
223 }
224}
225
226/**
227 * igbvf_clean_rx_irq - Send received data up the network stack; legacy
228 * @adapter: board private structure
229 *
230 * the return value indicates whether actual cleaning was done, there
231 * is no guarantee that everything was cleaned
232 **/
233static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter,
234 int *work_done, int work_to_do)
235{
236 struct igbvf_ring *rx_ring = adapter->rx_ring;
237 struct net_device *netdev = adapter->netdev;
238 struct pci_dev *pdev = adapter->pdev;
239 union e1000_adv_rx_desc *rx_desc, *next_rxd;
240 struct igbvf_buffer *buffer_info, *next_buffer;
241 struct sk_buff *skb;
242 bool cleaned = false;
243 int cleaned_count = 0;
244 unsigned int total_bytes = 0, total_packets = 0;
245 unsigned int i;
246 u32 length, hlen, staterr;
247
248 i = rx_ring->next_to_clean;
249 rx_desc = IGBVF_RX_DESC_ADV(*rx_ring, i);
250 staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
251
252 while (staterr & E1000_RXD_STAT_DD) {
253 if (*work_done >= work_to_do)
254 break;
255 (*work_done)++;
256
257 buffer_info = &rx_ring->buffer_info[i];
258
259 /* HW will not DMA in data larger than the given buffer, even
260 * if it parses the (NFS, of course) header to be larger. In
261 * that case, it fills the header buffer and spills the rest
262 * into the page.
263 */
264 hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.hdr_info) &
265 E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT;
266 if (hlen > adapter->rx_ps_hdr_size)
267 hlen = adapter->rx_ps_hdr_size;
268
269 length = le16_to_cpu(rx_desc->wb.upper.length);
270 cleaned = true;
271 cleaned_count++;
272
273 skb = buffer_info->skb;
274 prefetch(skb->data - NET_IP_ALIGN);
275 buffer_info->skb = NULL;
276 if (!adapter->rx_ps_hdr_size) {
277 pci_unmap_single(pdev, buffer_info->dma,
278 adapter->rx_buffer_len,
279 PCI_DMA_FROMDEVICE);
280 buffer_info->dma = 0;
281 skb_put(skb, length);
282 goto send_up;
283 }
284
285 if (!skb_shinfo(skb)->nr_frags) {
286 pci_unmap_single(pdev, buffer_info->dma,
287 adapter->rx_ps_hdr_size + NET_IP_ALIGN,
288 PCI_DMA_FROMDEVICE);
289 skb_put(skb, hlen);
290 }
291
292 if (length) {
293 pci_unmap_page(pdev, buffer_info->page_dma,
294 PAGE_SIZE / 2,
295 PCI_DMA_FROMDEVICE);
296 buffer_info->page_dma = 0;
297
298 skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags++,
299 buffer_info->page,
300 buffer_info->page_offset,
301 length);
302
303 if ((adapter->rx_buffer_len > (PAGE_SIZE / 2)) ||
304 (page_count(buffer_info->page) != 1))
305 buffer_info->page = NULL;
306 else
307 get_page(buffer_info->page);
308
309 skb->len += length;
310 skb->data_len += length;
311 skb->truesize += length;
312 }
313send_up:
314 i++;
315 if (i == rx_ring->count)
316 i = 0;
317 next_rxd = IGBVF_RX_DESC_ADV(*rx_ring, i);
318 prefetch(next_rxd);
319 next_buffer = &rx_ring->buffer_info[i];
320
321 if (!(staterr & E1000_RXD_STAT_EOP)) {
322 buffer_info->skb = next_buffer->skb;
323 buffer_info->dma = next_buffer->dma;
324 next_buffer->skb = skb;
325 next_buffer->dma = 0;
326 goto next_desc;
327 }
328
329 if (staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) {
330 dev_kfree_skb_irq(skb);
331 goto next_desc;
332 }
333
334 total_bytes += skb->len;
335 total_packets++;
336
337 igbvf_rx_checksum_adv(adapter, staterr, skb);
338
339 skb->protocol = eth_type_trans(skb, netdev);
340
341 igbvf_receive_skb(adapter, netdev, skb, staterr,
342 rx_desc->wb.upper.vlan);
343
344 netdev->last_rx = jiffies;
345
346next_desc:
347 rx_desc->wb.upper.status_error = 0;
348
349 /* return some buffers to hardware, one at a time is too slow */
350 if (cleaned_count >= IGBVF_RX_BUFFER_WRITE) {
351 igbvf_alloc_rx_buffers(rx_ring, cleaned_count);
352 cleaned_count = 0;
353 }
354
355 /* use prefetched values */
356 rx_desc = next_rxd;
357 buffer_info = next_buffer;
358
359 staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
360 }
361
362 rx_ring->next_to_clean = i;
363 cleaned_count = igbvf_desc_unused(rx_ring);
364
365 if (cleaned_count)
366 igbvf_alloc_rx_buffers(rx_ring, cleaned_count);
367
368 adapter->total_rx_packets += total_packets;
369 adapter->total_rx_bytes += total_bytes;
370 adapter->net_stats.rx_bytes += total_bytes;
371 adapter->net_stats.rx_packets += total_packets;
372 return cleaned;
373}
374
375static void igbvf_put_txbuf(struct igbvf_adapter *adapter,
376 struct igbvf_buffer *buffer_info)
377{
378 buffer_info->dma = 0;
379 if (buffer_info->skb) {
380 skb_dma_unmap(&adapter->pdev->dev, buffer_info->skb,
381 DMA_TO_DEVICE);
382 dev_kfree_skb_any(buffer_info->skb);
383 buffer_info->skb = NULL;
384 }
385 buffer_info->time_stamp = 0;
386}
387
388static void igbvf_print_tx_hang(struct igbvf_adapter *adapter)
389{
390 struct igbvf_ring *tx_ring = adapter->tx_ring;
391 unsigned int i = tx_ring->next_to_clean;
392 unsigned int eop = tx_ring->buffer_info[i].next_to_watch;
393 union e1000_adv_tx_desc *eop_desc = IGBVF_TX_DESC_ADV(*tx_ring, eop);
394
395 /* detected Tx unit hang */
396 dev_err(&adapter->pdev->dev,
397 "Detected Tx Unit Hang:\n"
398 " TDH <%x>\n"
399 " TDT <%x>\n"
400 " next_to_use <%x>\n"
401 " next_to_clean <%x>\n"
402 "buffer_info[next_to_clean]:\n"
403 " time_stamp <%lx>\n"
404 " next_to_watch <%x>\n"
405 " jiffies <%lx>\n"
406 " next_to_watch.status <%x>\n",
407 readl(adapter->hw.hw_addr + tx_ring->head),
408 readl(adapter->hw.hw_addr + tx_ring->tail),
409 tx_ring->next_to_use,
410 tx_ring->next_to_clean,
411 tx_ring->buffer_info[eop].time_stamp,
412 eop,
413 jiffies,
414 eop_desc->wb.status);
415}
416
417/**
418 * igbvf_setup_tx_resources - allocate Tx resources (Descriptors)
419 * @adapter: board private structure
420 *
421 * Return 0 on success, negative on failure
422 **/
423int igbvf_setup_tx_resources(struct igbvf_adapter *adapter,
424 struct igbvf_ring *tx_ring)
425{
426 struct pci_dev *pdev = adapter->pdev;
427 int size;
428
429 size = sizeof(struct igbvf_buffer) * tx_ring->count;
430 tx_ring->buffer_info = vmalloc(size);
431 if (!tx_ring->buffer_info)
432 goto err;
433 memset(tx_ring->buffer_info, 0, size);
434
435 /* round up to nearest 4K */
436 tx_ring->size = tx_ring->count * sizeof(union e1000_adv_tx_desc);
437 tx_ring->size = ALIGN(tx_ring->size, 4096);
438
439 tx_ring->desc = pci_alloc_consistent(pdev, tx_ring->size,
440 &tx_ring->dma);
441
442 if (!tx_ring->desc)
443 goto err;
444
445 tx_ring->adapter = adapter;
446 tx_ring->next_to_use = 0;
447 tx_ring->next_to_clean = 0;
448
449 return 0;
450err:
451 vfree(tx_ring->buffer_info);
452 dev_err(&adapter->pdev->dev,
453 "Unable to allocate memory for the transmit descriptor ring\n");
454 return -ENOMEM;
455}
456
457/**
458 * igbvf_setup_rx_resources - allocate Rx resources (Descriptors)
459 * @adapter: board private structure
460 *
461 * Returns 0 on success, negative on failure
462 **/
463int igbvf_setup_rx_resources(struct igbvf_adapter *adapter,
464 struct igbvf_ring *rx_ring)
465{
466 struct pci_dev *pdev = adapter->pdev;
467 int size, desc_len;
468
469 size = sizeof(struct igbvf_buffer) * rx_ring->count;
470 rx_ring->buffer_info = vmalloc(size);
471 if (!rx_ring->buffer_info)
472 goto err;
473 memset(rx_ring->buffer_info, 0, size);
474
475 desc_len = sizeof(union e1000_adv_rx_desc);
476
477 /* Round up to nearest 4K */
478 rx_ring->size = rx_ring->count * desc_len;
479 rx_ring->size = ALIGN(rx_ring->size, 4096);
480
481 rx_ring->desc = pci_alloc_consistent(pdev, rx_ring->size,
482 &rx_ring->dma);
483
484 if (!rx_ring->desc)
485 goto err;
486
487 rx_ring->next_to_clean = 0;
488 rx_ring->next_to_use = 0;
489
490 rx_ring->adapter = adapter;
491
492 return 0;
493
494err:
495 vfree(rx_ring->buffer_info);
496 rx_ring->buffer_info = NULL;
497 dev_err(&adapter->pdev->dev,
498 "Unable to allocate memory for the receive descriptor ring\n");
499 return -ENOMEM;
500}
501
502/**
503 * igbvf_clean_tx_ring - Free Tx Buffers
504 * @tx_ring: ring to be cleaned
505 **/
506static void igbvf_clean_tx_ring(struct igbvf_ring *tx_ring)
507{
508 struct igbvf_adapter *adapter = tx_ring->adapter;
509 struct igbvf_buffer *buffer_info;
510 unsigned long size;
511 unsigned int i;
512
513 if (!tx_ring->buffer_info)
514 return;
515
516 /* Free all the Tx ring sk_buffs */
517 for (i = 0; i < tx_ring->count; i++) {
518 buffer_info = &tx_ring->buffer_info[i];
519 igbvf_put_txbuf(adapter, buffer_info);
520 }
521
522 size = sizeof(struct igbvf_buffer) * tx_ring->count;
523 memset(tx_ring->buffer_info, 0, size);
524
525 /* Zero out the descriptor ring */
526 memset(tx_ring->desc, 0, tx_ring->size);
527
528 tx_ring->next_to_use = 0;
529 tx_ring->next_to_clean = 0;
530
531 writel(0, adapter->hw.hw_addr + tx_ring->head);
532 writel(0, adapter->hw.hw_addr + tx_ring->tail);
533}
534
535/**
536 * igbvf_free_tx_resources - Free Tx Resources per Queue
537 * @tx_ring: ring to free resources from
538 *
539 * Free all transmit software resources
540 **/
541void igbvf_free_tx_resources(struct igbvf_ring *tx_ring)
542{
543 struct pci_dev *pdev = tx_ring->adapter->pdev;
544
545 igbvf_clean_tx_ring(tx_ring);
546
547 vfree(tx_ring->buffer_info);
548 tx_ring->buffer_info = NULL;
549
550 pci_free_consistent(pdev, tx_ring->size, tx_ring->desc, tx_ring->dma);
551
552 tx_ring->desc = NULL;
553}
554
555/**
556 * igbvf_clean_rx_ring - Free Rx Buffers per Queue
557 * @adapter: board private structure
558 **/
559static void igbvf_clean_rx_ring(struct igbvf_ring *rx_ring)
560{
561 struct igbvf_adapter *adapter = rx_ring->adapter;
562 struct igbvf_buffer *buffer_info;
563 struct pci_dev *pdev = adapter->pdev;
564 unsigned long size;
565 unsigned int i;
566
567 if (!rx_ring->buffer_info)
568 return;
569
570 /* Free all the Rx ring sk_buffs */
571 for (i = 0; i < rx_ring->count; i++) {
572 buffer_info = &rx_ring->buffer_info[i];
573 if (buffer_info->dma) {
574 if (adapter->rx_ps_hdr_size){
575 pci_unmap_single(pdev, buffer_info->dma,
576 adapter->rx_ps_hdr_size,
577 PCI_DMA_FROMDEVICE);
578 } else {
579 pci_unmap_single(pdev, buffer_info->dma,
580 adapter->rx_buffer_len,
581 PCI_DMA_FROMDEVICE);
582 }
583 buffer_info->dma = 0;
584 }
585
586 if (buffer_info->skb) {
587 dev_kfree_skb(buffer_info->skb);
588 buffer_info->skb = NULL;
589 }
590
591 if (buffer_info->page) {
592 if (buffer_info->page_dma)
593 pci_unmap_page(pdev, buffer_info->page_dma,
594 PAGE_SIZE / 2,
595 PCI_DMA_FROMDEVICE);
596 put_page(buffer_info->page);
597 buffer_info->page = NULL;
598 buffer_info->page_dma = 0;
599 buffer_info->page_offset = 0;
600 }
601 }
602
603 size = sizeof(struct igbvf_buffer) * rx_ring->count;
604 memset(rx_ring->buffer_info, 0, size);
605
606 /* Zero out the descriptor ring */
607 memset(rx_ring->desc, 0, rx_ring->size);
608
609 rx_ring->next_to_clean = 0;
610 rx_ring->next_to_use = 0;
611
612 writel(0, adapter->hw.hw_addr + rx_ring->head);
613 writel(0, adapter->hw.hw_addr + rx_ring->tail);
614}
615
616/**
617 * igbvf_free_rx_resources - Free Rx Resources
618 * @rx_ring: ring to clean the resources from
619 *
620 * Free all receive software resources
621 **/
622
623void igbvf_free_rx_resources(struct igbvf_ring *rx_ring)
624{
625 struct pci_dev *pdev = rx_ring->adapter->pdev;
626
627 igbvf_clean_rx_ring(rx_ring);
628
629 vfree(rx_ring->buffer_info);
630 rx_ring->buffer_info = NULL;
631
632 dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
633 rx_ring->dma);
634 rx_ring->desc = NULL;
635}
636
637/**
638 * igbvf_update_itr - update the dynamic ITR value based on statistics
639 * @adapter: pointer to adapter
640 * @itr_setting: current adapter->itr
641 * @packets: the number of packets during this measurement interval
642 * @bytes: the number of bytes during this measurement interval
643 *
644 * Stores a new ITR value based on packets and byte
645 * counts during the last interrupt. The advantage of per interrupt
646 * computation is faster updates and more accurate ITR for the current
647 * traffic pattern. Constants in this function were computed
648 * based on theoretical maximum wire speed and thresholds were set based
649 * on testing data as well as attempting to minimize response time
650 * while increasing bulk throughput. This functionality is controlled
651 * by the InterruptThrottleRate module parameter.
652 **/
653static unsigned int igbvf_update_itr(struct igbvf_adapter *adapter,
654 u16 itr_setting, int packets,
655 int bytes)
656{
657 unsigned int retval = itr_setting;
658
659 if (packets == 0)
660 goto update_itr_done;
661
662 switch (itr_setting) {
663 case lowest_latency:
664 /* handle TSO and jumbo frames */
665 if (bytes/packets > 8000)
666 retval = bulk_latency;
667 else if ((packets < 5) && (bytes > 512))
668 retval = low_latency;
669 break;
670 case low_latency: /* 50 usec aka 20000 ints/s */
671 if (bytes > 10000) {
672 /* this if handles the TSO accounting */
673 if (bytes/packets > 8000)
674 retval = bulk_latency;
675 else if ((packets < 10) || ((bytes/packets) > 1200))
676 retval = bulk_latency;
677 else if ((packets > 35))
678 retval = lowest_latency;
679 } else if (bytes/packets > 2000) {
680 retval = bulk_latency;
681 } else if (packets <= 2 && bytes < 512) {
682 retval = lowest_latency;
683 }
684 break;
685 case bulk_latency: /* 250 usec aka 4000 ints/s */
686 if (bytes > 25000) {
687 if (packets > 35)
688 retval = low_latency;
689 } else if (bytes < 6000) {
690 retval = low_latency;
691 }
692 break;
693 }
694
695update_itr_done:
696 return retval;
697}
698
699static void igbvf_set_itr(struct igbvf_adapter *adapter)
700{
701 struct e1000_hw *hw = &adapter->hw;
702 u16 current_itr;
703 u32 new_itr = adapter->itr;
704
705 adapter->tx_itr = igbvf_update_itr(adapter, adapter->tx_itr,
706 adapter->total_tx_packets,
707 adapter->total_tx_bytes);
708 /* conservative mode (itr 3) eliminates the lowest_latency setting */
709 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency)
710 adapter->tx_itr = low_latency;
711
712 adapter->rx_itr = igbvf_update_itr(adapter, adapter->rx_itr,
713 adapter->total_rx_packets,
714 adapter->total_rx_bytes);
715 /* conservative mode (itr 3) eliminates the lowest_latency setting */
716 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency)
717 adapter->rx_itr = low_latency;
718
719 current_itr = max(adapter->rx_itr, adapter->tx_itr);
720
721 switch (current_itr) {
722 /* counts and packets in update_itr are dependent on these numbers */
723 case lowest_latency:
724 new_itr = 70000;
725 break;
726 case low_latency:
727 new_itr = 20000; /* aka hwitr = ~200 */
728 break;
729 case bulk_latency:
730 new_itr = 4000;
731 break;
732 default:
733 break;
734 }
735
736 if (new_itr != adapter->itr) {
737 /*
738 * this attempts to bias the interrupt rate towards Bulk
739 * by adding intermediate steps when interrupt rate is
740 * increasing
741 */
742 new_itr = new_itr > adapter->itr ?
743 min(adapter->itr + (new_itr >> 2), new_itr) :
744 new_itr;
745 adapter->itr = new_itr;
746 adapter->rx_ring->itr_val = 1952;
747
748 if (adapter->msix_entries)
749 adapter->rx_ring->set_itr = 1;
750 else
751 ew32(ITR, 1952);
752 }
753}
754
755/**
756 * igbvf_clean_tx_irq - Reclaim resources after transmit completes
757 * @adapter: board private structure
758 * returns true if ring is completely cleaned
759 **/
760static bool igbvf_clean_tx_irq(struct igbvf_ring *tx_ring)
761{
762 struct igbvf_adapter *adapter = tx_ring->adapter;
763 struct e1000_hw *hw = &adapter->hw;
764 struct net_device *netdev = adapter->netdev;
765 struct igbvf_buffer *buffer_info;
766 struct sk_buff *skb;
767 union e1000_adv_tx_desc *tx_desc, *eop_desc;
768 unsigned int total_bytes = 0, total_packets = 0;
769 unsigned int i, eop, count = 0;
770 bool cleaned = false;
771
772 i = tx_ring->next_to_clean;
773 eop = tx_ring->buffer_info[i].next_to_watch;
774 eop_desc = IGBVF_TX_DESC_ADV(*tx_ring, eop);
775
776 while ((eop_desc->wb.status & cpu_to_le32(E1000_TXD_STAT_DD)) &&
777 (count < tx_ring->count)) {
778 for (cleaned = false; !cleaned; count++) {
779 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
780 buffer_info = &tx_ring->buffer_info[i];
781 cleaned = (i == eop);
782 skb = buffer_info->skb;
783
784 if (skb) {
785 unsigned int segs, bytecount;
786
787 /* gso_segs is currently only valid for tcp */
788 segs = skb_shinfo(skb)->gso_segs ?: 1;
789 /* multiply data chunks by size of headers */
790 bytecount = ((segs - 1) * skb_headlen(skb)) +
791 skb->len;
792 total_packets += segs;
793 total_bytes += bytecount;
794 }
795
796 igbvf_put_txbuf(adapter, buffer_info);
797 tx_desc->wb.status = 0;
798
799 i++;
800 if (i == tx_ring->count)
801 i = 0;
802 }
803 eop = tx_ring->buffer_info[i].next_to_watch;
804 eop_desc = IGBVF_TX_DESC_ADV(*tx_ring, eop);
805 }
806
807 tx_ring->next_to_clean = i;
808
809 if (unlikely(count &&
810 netif_carrier_ok(netdev) &&
811 igbvf_desc_unused(tx_ring) >= IGBVF_TX_QUEUE_WAKE)) {
812 /* Make sure that anybody stopping the queue after this
813 * sees the new next_to_clean.
814 */
815 smp_mb();
816 if (netif_queue_stopped(netdev) &&
817 !(test_bit(__IGBVF_DOWN, &adapter->state))) {
818 netif_wake_queue(netdev);
819 ++adapter->restart_queue;
820 }
821 }
822
823 if (adapter->detect_tx_hung) {
824 /* Detect a transmit hang in hardware, this serializes the
825 * check with the clearing of time_stamp and movement of i */
826 adapter->detect_tx_hung = false;
827 if (tx_ring->buffer_info[i].time_stamp &&
828 time_after(jiffies, tx_ring->buffer_info[i].time_stamp +
829 (adapter->tx_timeout_factor * HZ))
830 && !(er32(STATUS) & E1000_STATUS_TXOFF)) {
831
832 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
833 /* detected Tx unit hang */
834 igbvf_print_tx_hang(adapter);
835
836 netif_stop_queue(netdev);
837 }
838 }
839 adapter->net_stats.tx_bytes += total_bytes;
840 adapter->net_stats.tx_packets += total_packets;
841 return (count < tx_ring->count);
842}
843
844static irqreturn_t igbvf_msix_other(int irq, void *data)
845{
846 struct net_device *netdev = data;
847 struct igbvf_adapter *adapter = netdev_priv(netdev);
848 struct e1000_hw *hw = &adapter->hw;
849
850 adapter->int_counter1++;
851
852 netif_carrier_off(netdev);
853 hw->mac.get_link_status = 1;
854 if (!test_bit(__IGBVF_DOWN, &adapter->state))
855 mod_timer(&adapter->watchdog_timer, jiffies + 1);
856
857 ew32(EIMS, adapter->eims_other);
858
859 return IRQ_HANDLED;
860}
861
862static irqreturn_t igbvf_intr_msix_tx(int irq, void *data)
863{
864 struct net_device *netdev = data;
865 struct igbvf_adapter *adapter = netdev_priv(netdev);
866 struct e1000_hw *hw = &adapter->hw;
867 struct igbvf_ring *tx_ring = adapter->tx_ring;
868
869
870 adapter->total_tx_bytes = 0;
871 adapter->total_tx_packets = 0;
872
873 /* auto mask will automatically reenable the interrupt when we write
874 * EICS */
875 if (!igbvf_clean_tx_irq(tx_ring))
876 /* Ring was not completely cleaned, so fire another interrupt */
877 ew32(EICS, tx_ring->eims_value);
878 else
879 ew32(EIMS, tx_ring->eims_value);
880
881 return IRQ_HANDLED;
882}
883
884static irqreturn_t igbvf_intr_msix_rx(int irq, void *data)
885{
886 struct net_device *netdev = data;
887 struct igbvf_adapter *adapter = netdev_priv(netdev);
888
889 adapter->int_counter0++;
890
891 /* Write the ITR value calculated at the end of the
892 * previous interrupt.
893 */
894 if (adapter->rx_ring->set_itr) {
895 writel(adapter->rx_ring->itr_val,
896 adapter->hw.hw_addr + adapter->rx_ring->itr_register);
897 adapter->rx_ring->set_itr = 0;
898 }
899
900 if (napi_schedule_prep(&adapter->rx_ring->napi)) {
901 adapter->total_rx_bytes = 0;
902 adapter->total_rx_packets = 0;
903 __napi_schedule(&adapter->rx_ring->napi);
904 }
905
906 return IRQ_HANDLED;
907}
908
909#define IGBVF_NO_QUEUE -1
910
911static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue,
912 int tx_queue, int msix_vector)
913{
914 struct e1000_hw *hw = &adapter->hw;
915 u32 ivar, index;
916
917 /* 82576 uses a table-based method for assigning vectors.
918 Each queue has a single entry in the table to which we write
919 a vector number along with a "valid" bit. Sadly, the layout
920 of the table is somewhat counterintuitive. */
921 if (rx_queue > IGBVF_NO_QUEUE) {
922 index = (rx_queue >> 1);
923 ivar = array_er32(IVAR0, index);
924 if (rx_queue & 0x1) {
925 /* vector goes into third byte of register */
926 ivar = ivar & 0xFF00FFFF;
927 ivar |= (msix_vector | E1000_IVAR_VALID) << 16;
928 } else {
929 /* vector goes into low byte of register */
930 ivar = ivar & 0xFFFFFF00;
931 ivar |= msix_vector | E1000_IVAR_VALID;
932 }
933 adapter->rx_ring[rx_queue].eims_value = 1 << msix_vector;
934 array_ew32(IVAR0, index, ivar);
935 }
936 if (tx_queue > IGBVF_NO_QUEUE) {
937 index = (tx_queue >> 1);
938 ivar = array_er32(IVAR0, index);
939 if (tx_queue & 0x1) {
940 /* vector goes into high byte of register */
941 ivar = ivar & 0x00FFFFFF;
942 ivar |= (msix_vector | E1000_IVAR_VALID) << 24;
943 } else {
944 /* vector goes into second byte of register */
945 ivar = ivar & 0xFFFF00FF;
946 ivar |= (msix_vector | E1000_IVAR_VALID) << 8;
947 }
948 adapter->tx_ring[tx_queue].eims_value = 1 << msix_vector;
949 array_ew32(IVAR0, index, ivar);
950 }
951}
952
953/**
954 * igbvf_configure_msix - Configure MSI-X hardware
955 *
956 * igbvf_configure_msix sets up the hardware to properly
957 * generate MSI-X interrupts.
958 **/
959static void igbvf_configure_msix(struct igbvf_adapter *adapter)
960{
961 u32 tmp;
962 struct e1000_hw *hw = &adapter->hw;
963 struct igbvf_ring *tx_ring = adapter->tx_ring;
964 struct igbvf_ring *rx_ring = adapter->rx_ring;
965 int vector = 0;
966
967 adapter->eims_enable_mask = 0;
968
969 igbvf_assign_vector(adapter, IGBVF_NO_QUEUE, 0, vector++);
970 adapter->eims_enable_mask |= tx_ring->eims_value;
971 if (tx_ring->itr_val)
972 writel(tx_ring->itr_val,
973 hw->hw_addr + tx_ring->itr_register);
974 else
975 writel(1952, hw->hw_addr + tx_ring->itr_register);
976
977 igbvf_assign_vector(adapter, 0, IGBVF_NO_QUEUE, vector++);
978 adapter->eims_enable_mask |= rx_ring->eims_value;
979 if (rx_ring->itr_val)
980 writel(rx_ring->itr_val,
981 hw->hw_addr + rx_ring->itr_register);
982 else
983 writel(1952, hw->hw_addr + rx_ring->itr_register);
984
985 /* set vector for other causes, i.e. link changes */
986
987 tmp = (vector++ | E1000_IVAR_VALID);
988
989 ew32(IVAR_MISC, tmp);
990
991 adapter->eims_enable_mask = (1 << (vector)) - 1;
992 adapter->eims_other = 1 << (vector - 1);
993 e1e_flush();
994}
995
996static void igbvf_reset_interrupt_capability(struct igbvf_adapter *adapter)
997{
998 if (adapter->msix_entries) {
999 pci_disable_msix(adapter->pdev);
1000 kfree(adapter->msix_entries);
1001 adapter->msix_entries = NULL;
1002 }
1003}
1004
1005/**
1006 * igbvf_set_interrupt_capability - set MSI or MSI-X if supported
1007 *
1008 * Attempt to configure interrupts using the best available
1009 * capabilities of the hardware and kernel.
1010 **/
1011static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter)
1012{
1013 int err = -ENOMEM;
1014 int i;
1015
1016 /* we allocate 3 vectors, 1 for tx, 1 for rx, one for pf messages */
1017 adapter->msix_entries = kcalloc(3, sizeof(struct msix_entry),
1018 GFP_KERNEL);
1019 if (adapter->msix_entries) {
1020 for (i = 0; i < 3; i++)
1021 adapter->msix_entries[i].entry = i;
1022
1023 err = pci_enable_msix(adapter->pdev,
1024 adapter->msix_entries, 3);
1025 }
1026
1027 if (err) {
1028 /* MSI-X failed */
1029 dev_err(&adapter->pdev->dev,
1030 "Failed to initialize MSI-X interrupts.\n");
1031 igbvf_reset_interrupt_capability(adapter);
1032 }
1033}
1034
1035/**
1036 * igbvf_request_msix - Initialize MSI-X interrupts
1037 *
1038 * igbvf_request_msix allocates MSI-X vectors and requests interrupts from the
1039 * kernel.
1040 **/
1041static int igbvf_request_msix(struct igbvf_adapter *adapter)
1042{
1043 struct net_device *netdev = adapter->netdev;
1044 int err = 0, vector = 0;
1045
1046 if (strlen(netdev->name) < (IFNAMSIZ - 5)) {
1047 sprintf(adapter->tx_ring->name, "%s-tx-0", netdev->name);
1048 sprintf(adapter->rx_ring->name, "%s-rx-0", netdev->name);
1049 } else {
1050 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ);
1051 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ);
1052 }
1053
1054 err = request_irq(adapter->msix_entries[vector].vector,
1055 &igbvf_intr_msix_tx, 0, adapter->tx_ring->name,
1056 netdev);
1057 if (err)
1058 goto out;
1059
1060 adapter->tx_ring->itr_register = E1000_EITR(vector);
1061 adapter->tx_ring->itr_val = 1952;
1062 vector++;
1063
1064 err = request_irq(adapter->msix_entries[vector].vector,
1065 &igbvf_intr_msix_rx, 0, adapter->rx_ring->name,
1066 netdev);
1067 if (err)
1068 goto out;
1069
1070 adapter->rx_ring->itr_register = E1000_EITR(vector);
1071 adapter->rx_ring->itr_val = 1952;
1072 vector++;
1073
1074 err = request_irq(adapter->msix_entries[vector].vector,
1075 &igbvf_msix_other, 0, netdev->name, netdev);
1076 if (err)
1077 goto out;
1078
1079 igbvf_configure_msix(adapter);
1080 return 0;
1081out:
1082 return err;
1083}
1084
1085/**
1086 * igbvf_alloc_queues - Allocate memory for all rings
1087 * @adapter: board private structure to initialize
1088 **/
1089static int __devinit igbvf_alloc_queues(struct igbvf_adapter *adapter)
1090{
1091 struct net_device *netdev = adapter->netdev;
1092
1093 adapter->tx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL);
1094 if (!adapter->tx_ring)
1095 return -ENOMEM;
1096
1097 adapter->rx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL);
1098 if (!adapter->rx_ring) {
1099 kfree(adapter->tx_ring);
1100 return -ENOMEM;
1101 }
1102
1103 netif_napi_add(netdev, &adapter->rx_ring->napi, igbvf_poll, 64);
1104
1105 return 0;
1106}
1107
1108/**
1109 * igbvf_request_irq - initialize interrupts
1110 *
1111 * Attempts to configure interrupts using the best available
1112 * capabilities of the hardware and kernel.
1113 **/
1114static int igbvf_request_irq(struct igbvf_adapter *adapter)
1115{
1116 int err = -1;
1117
1118 /* igbvf supports msi-x only */
1119 if (adapter->msix_entries)
1120 err = igbvf_request_msix(adapter);
1121
1122 if (!err)
1123 return err;
1124
1125 dev_err(&adapter->pdev->dev,
1126 "Unable to allocate interrupt, Error: %d\n", err);
1127
1128 return err;
1129}
1130
1131static void igbvf_free_irq(struct igbvf_adapter *adapter)
1132{
1133 struct net_device *netdev = adapter->netdev;
1134 int vector;
1135
1136 if (adapter->msix_entries) {
1137 for (vector = 0; vector < 3; vector++)
1138 free_irq(adapter->msix_entries[vector].vector, netdev);
1139 }
1140}
1141
1142/**
1143 * igbvf_irq_disable - Mask off interrupt generation on the NIC
1144 **/
1145static void igbvf_irq_disable(struct igbvf_adapter *adapter)
1146{
1147 struct e1000_hw *hw = &adapter->hw;
1148
1149 ew32(EIMC, ~0);
1150
1151 if (adapter->msix_entries)
1152 ew32(EIAC, 0);
1153}
1154
1155/**
1156 * igbvf_irq_enable - Enable default interrupt generation settings
1157 **/
1158static void igbvf_irq_enable(struct igbvf_adapter *adapter)
1159{
1160 struct e1000_hw *hw = &adapter->hw;
1161
1162 ew32(EIAC, adapter->eims_enable_mask);
1163 ew32(EIAM, adapter->eims_enable_mask);
1164 ew32(EIMS, adapter->eims_enable_mask);
1165}
1166
1167/**
1168 * igbvf_poll - NAPI Rx polling callback
1169 * @napi: struct associated with this polling callback
1170 * @budget: amount of packets driver is allowed to process this poll
1171 **/
1172static int igbvf_poll(struct napi_struct *napi, int budget)
1173{
1174 struct igbvf_ring *rx_ring = container_of(napi, struct igbvf_ring, napi);
1175 struct igbvf_adapter *adapter = rx_ring->adapter;
1176 struct e1000_hw *hw = &adapter->hw;
1177 int work_done = 0;
1178
1179 igbvf_clean_rx_irq(adapter, &work_done, budget);
1180
1181 /* If not enough Rx work done, exit the polling mode */
1182 if (work_done < budget) {
1183 napi_complete(napi);
1184
1185 if (adapter->itr_setting & 3)
1186 igbvf_set_itr(adapter);
1187
1188 if (!test_bit(__IGBVF_DOWN, &adapter->state))
1189 ew32(EIMS, adapter->rx_ring->eims_value);
1190 }
1191
1192 return work_done;
1193}
1194
1195/**
1196 * igbvf_set_rlpml - set receive large packet maximum length
1197 * @adapter: board private structure
1198 *
1199 * Configure the maximum size of packets that will be received
1200 */
1201static void igbvf_set_rlpml(struct igbvf_adapter *adapter)
1202{
1203 int max_frame_size = adapter->max_frame_size;
1204 struct e1000_hw *hw = &adapter->hw;
1205
1206 if (adapter->vlgrp)
1207 max_frame_size += VLAN_TAG_SIZE;
1208
1209 e1000_rlpml_set_vf(hw, max_frame_size);
1210}
1211
1212static void igbvf_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
1213{
1214 struct igbvf_adapter *adapter = netdev_priv(netdev);
1215 struct e1000_hw *hw = &adapter->hw;
1216
1217 if (hw->mac.ops.set_vfta(hw, vid, true))
1218 dev_err(&adapter->pdev->dev, "Failed to add vlan id %d\n", vid);
1219}
1220
1221static void igbvf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
1222{
1223 struct igbvf_adapter *adapter = netdev_priv(netdev);
1224 struct e1000_hw *hw = &adapter->hw;
1225
1226 igbvf_irq_disable(adapter);
1227 vlan_group_set_device(adapter->vlgrp, vid, NULL);
1228
1229 if (!test_bit(__IGBVF_DOWN, &adapter->state))
1230 igbvf_irq_enable(adapter);
1231
1232 if (hw->mac.ops.set_vfta(hw, vid, false))
1233 dev_err(&adapter->pdev->dev,
1234 "Failed to remove vlan id %d\n", vid);
1235}
1236
1237static void igbvf_vlan_rx_register(struct net_device *netdev,
1238 struct vlan_group *grp)
1239{
1240 struct igbvf_adapter *adapter = netdev_priv(netdev);
1241
1242 adapter->vlgrp = grp;
1243}
1244
1245static void igbvf_restore_vlan(struct igbvf_adapter *adapter)
1246{
1247 u16 vid;
1248
1249 if (!adapter->vlgrp)
1250 return;
1251
1252 for (vid = 0; vid < VLAN_GROUP_ARRAY_LEN; vid++) {
1253 if (!vlan_group_get_device(adapter->vlgrp, vid))
1254 continue;
1255 igbvf_vlan_rx_add_vid(adapter->netdev, vid);
1256 }
1257
1258 igbvf_set_rlpml(adapter);
1259}
1260
1261/**
1262 * igbvf_configure_tx - Configure Transmit Unit after Reset
1263 * @adapter: board private structure
1264 *
1265 * Configure the Tx unit of the MAC after a reset.
1266 **/
1267static void igbvf_configure_tx(struct igbvf_adapter *adapter)
1268{
1269 struct e1000_hw *hw = &adapter->hw;
1270 struct igbvf_ring *tx_ring = adapter->tx_ring;
1271 u64 tdba;
1272 u32 txdctl, dca_txctrl;
1273
1274 /* disable transmits */
1275 txdctl = er32(TXDCTL(0));
1276 ew32(TXDCTL(0), txdctl & ~E1000_TXDCTL_QUEUE_ENABLE);
1277 msleep(10);
1278
1279 /* Setup the HW Tx Head and Tail descriptor pointers */
1280 ew32(TDLEN(0), tx_ring->count * sizeof(union e1000_adv_tx_desc));
1281 tdba = tx_ring->dma;
1282 ew32(TDBAL(0), (tdba & DMA_32BIT_MASK));
1283 ew32(TDBAH(0), (tdba >> 32));
1284 ew32(TDH(0), 0);
1285 ew32(TDT(0), 0);
1286 tx_ring->head = E1000_TDH(0);
1287 tx_ring->tail = E1000_TDT(0);
1288
1289 /* Turn off Relaxed Ordering on head write-backs. The writebacks
1290 * MUST be delivered in order or it will completely screw up
1291 * our bookeeping.
1292 */
1293 dca_txctrl = er32(DCA_TXCTRL(0));
1294 dca_txctrl &= ~E1000_DCA_TXCTRL_TX_WB_RO_EN;
1295 ew32(DCA_TXCTRL(0), dca_txctrl);
1296
1297 /* enable transmits */
1298 txdctl |= E1000_TXDCTL_QUEUE_ENABLE;
1299 ew32(TXDCTL(0), txdctl);
1300
1301 /* Setup Transmit Descriptor Settings for eop descriptor */
1302 adapter->txd_cmd = E1000_ADVTXD_DCMD_EOP | E1000_ADVTXD_DCMD_IFCS;
1303
1304 /* enable Report Status bit */
1305 adapter->txd_cmd |= E1000_ADVTXD_DCMD_RS;
1306
1307 adapter->tx_queue_len = adapter->netdev->tx_queue_len;
1308}
1309
1310/**
1311 * igbvf_setup_srrctl - configure the receive control registers
1312 * @adapter: Board private structure
1313 **/
1314static void igbvf_setup_srrctl(struct igbvf_adapter *adapter)
1315{
1316 struct e1000_hw *hw = &adapter->hw;
1317 u32 srrctl = 0;
1318
1319 srrctl &= ~(E1000_SRRCTL_DESCTYPE_MASK |
1320 E1000_SRRCTL_BSIZEHDR_MASK |
1321 E1000_SRRCTL_BSIZEPKT_MASK);
1322
1323 /* Enable queue drop to avoid head of line blocking */
1324 srrctl |= E1000_SRRCTL_DROP_EN;
1325
1326 /* Setup buffer sizes */
1327 srrctl |= ALIGN(adapter->rx_buffer_len, 1024) >>
1328 E1000_SRRCTL_BSIZEPKT_SHIFT;
1329
1330 if (adapter->rx_buffer_len < 2048) {
1331 adapter->rx_ps_hdr_size = 0;
1332 srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF;
1333 } else {
1334 adapter->rx_ps_hdr_size = 128;
1335 srrctl |= adapter->rx_ps_hdr_size <<
1336 E1000_SRRCTL_BSIZEHDRSIZE_SHIFT;
1337 srrctl |= E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS;
1338 }
1339
1340 ew32(SRRCTL(0), srrctl);
1341}
1342
1343/**
1344 * igbvf_configure_rx - Configure Receive Unit after Reset
1345 * @adapter: board private structure
1346 *
1347 * Configure the Rx unit of the MAC after a reset.
1348 **/
1349static void igbvf_configure_rx(struct igbvf_adapter *adapter)
1350{
1351 struct e1000_hw *hw = &adapter->hw;
1352 struct igbvf_ring *rx_ring = adapter->rx_ring;
1353 u64 rdba;
1354 u32 rdlen, rxdctl;
1355
1356 /* disable receives */
1357 rxdctl = er32(RXDCTL(0));
1358 ew32(RXDCTL(0), rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
1359 msleep(10);
1360
1361 rdlen = rx_ring->count * sizeof(union e1000_adv_rx_desc);
1362
1363 /*
1364 * Setup the HW Rx Head and Tail Descriptor Pointers and
1365 * the Base and Length of the Rx Descriptor Ring
1366 */
1367 rdba = rx_ring->dma;
1368 ew32(RDBAL(0), (rdba & DMA_32BIT_MASK));
1369 ew32(RDBAH(0), (rdba >> 32));
1370 ew32(RDLEN(0), rx_ring->count * sizeof(union e1000_adv_rx_desc));
1371 rx_ring->head = E1000_RDH(0);
1372 rx_ring->tail = E1000_RDT(0);
1373 ew32(RDH(0), 0);
1374 ew32(RDT(0), 0);
1375
1376 rxdctl |= E1000_RXDCTL_QUEUE_ENABLE;
1377 rxdctl &= 0xFFF00000;
1378 rxdctl |= IGBVF_RX_PTHRESH;
1379 rxdctl |= IGBVF_RX_HTHRESH << 8;
1380 rxdctl |= IGBVF_RX_WTHRESH << 16;
1381
1382 igbvf_set_rlpml(adapter);
1383
1384 /* enable receives */
1385 ew32(RXDCTL(0), rxdctl);
1386}
1387
1388/**
1389 * igbvf_set_multi - Multicast and Promiscuous mode set
1390 * @netdev: network interface device structure
1391 *
1392 * The set_multi entry point is called whenever the multicast address
1393 * list or the network interface flags are updated. This routine is
1394 * responsible for configuring the hardware for proper multicast,
1395 * promiscuous mode, and all-multi behavior.
1396 **/
1397static void igbvf_set_multi(struct net_device *netdev)
1398{
1399 struct igbvf_adapter *adapter = netdev_priv(netdev);
1400 struct e1000_hw *hw = &adapter->hw;
1401 struct dev_mc_list *mc_ptr;
1402 u8 *mta_list = NULL;
1403 int i;
1404
1405 if (netdev->mc_count) {
1406 mta_list = kmalloc(netdev->mc_count * 6, GFP_ATOMIC);
1407 if (!mta_list) {
1408 dev_err(&adapter->pdev->dev,
1409 "failed to allocate multicast filter list\n");
1410 return;
1411 }
1412 }
1413
1414 /* prepare a packed array of only addresses. */
1415 mc_ptr = netdev->mc_list;
1416
1417 for (i = 0; i < netdev->mc_count; i++) {
1418 if (!mc_ptr)
1419 break;
1420 memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr,
1421 ETH_ALEN);
1422 mc_ptr = mc_ptr->next;
1423 }
1424
1425 hw->mac.ops.update_mc_addr_list(hw, mta_list, i, 0, 0);
1426 kfree(mta_list);
1427}
1428
1429/**
1430 * igbvf_configure - configure the hardware for Rx and Tx
1431 * @adapter: private board structure
1432 **/
1433static void igbvf_configure(struct igbvf_adapter *adapter)
1434{
1435 igbvf_set_multi(adapter->netdev);
1436
1437 igbvf_restore_vlan(adapter);
1438
1439 igbvf_configure_tx(adapter);
1440 igbvf_setup_srrctl(adapter);
1441 igbvf_configure_rx(adapter);
1442 igbvf_alloc_rx_buffers(adapter->rx_ring,
1443 igbvf_desc_unused(adapter->rx_ring));
1444}
1445
1446/* igbvf_reset - bring the hardware into a known good state
1447 *
1448 * This function boots the hardware and enables some settings that
1449 * require a configuration cycle of the hardware - those cannot be
1450 * set/changed during runtime. After reset the device needs to be
1451 * properly configured for Rx, Tx etc.
1452 */
1453static void igbvf_reset(struct igbvf_adapter *adapter)
1454{
1455 struct e1000_mac_info *mac = &adapter->hw.mac;
1456 struct net_device *netdev = adapter->netdev;
1457 struct e1000_hw *hw = &adapter->hw;
1458
1459 /* Allow time for pending master requests to run */
1460 if (mac->ops.reset_hw(hw))
1461 dev_err(&adapter->pdev->dev, "PF still resetting\n");
1462
1463 mac->ops.init_hw(hw);
1464
1465 if (is_valid_ether_addr(adapter->hw.mac.addr)) {
1466 memcpy(netdev->dev_addr, adapter->hw.mac.addr,
1467 netdev->addr_len);
1468 memcpy(netdev->perm_addr, adapter->hw.mac.addr,
1469 netdev->addr_len);
1470 }
1471}
1472
1473int igbvf_up(struct igbvf_adapter *adapter)
1474{
1475 struct e1000_hw *hw = &adapter->hw;
1476
1477 /* hardware has been reset, we need to reload some things */
1478 igbvf_configure(adapter);
1479
1480 clear_bit(__IGBVF_DOWN, &adapter->state);
1481
1482 napi_enable(&adapter->rx_ring->napi);
1483 if (adapter->msix_entries)
1484 igbvf_configure_msix(adapter);
1485
1486 /* Clear any pending interrupts. */
1487 er32(EICR);
1488 igbvf_irq_enable(adapter);
1489
1490 /* start the watchdog */
1491 hw->mac.get_link_status = 1;
1492 mod_timer(&adapter->watchdog_timer, jiffies + 1);
1493
1494
1495 return 0;
1496}
1497
1498void igbvf_down(struct igbvf_adapter *adapter)
1499{
1500 struct net_device *netdev = adapter->netdev;
1501 struct e1000_hw *hw = &adapter->hw;
1502 u32 rxdctl, txdctl;
1503
1504 /*
1505 * signal that we're down so the interrupt handler does not
1506 * reschedule our watchdog timer
1507 */
1508 set_bit(__IGBVF_DOWN, &adapter->state);
1509
1510 /* disable receives in the hardware */
1511 rxdctl = er32(RXDCTL(0));
1512 ew32(RXDCTL(0), rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
1513
1514 netif_stop_queue(netdev);
1515
1516 /* disable transmits in the hardware */
1517 txdctl = er32(TXDCTL(0));
1518 ew32(TXDCTL(0), txdctl & ~E1000_TXDCTL_QUEUE_ENABLE);
1519
1520 /* flush both disables and wait for them to finish */
1521 e1e_flush();
1522 msleep(10);
1523
1524 napi_disable(&adapter->rx_ring->napi);
1525
1526 igbvf_irq_disable(adapter);
1527
1528 del_timer_sync(&adapter->watchdog_timer);
1529
1530 netdev->tx_queue_len = adapter->tx_queue_len;
1531 netif_carrier_off(netdev);
1532
1533 /* record the stats before reset*/
1534 igbvf_update_stats(adapter);
1535
1536 adapter->link_speed = 0;
1537 adapter->link_duplex = 0;
1538
1539 igbvf_reset(adapter);
1540 igbvf_clean_tx_ring(adapter->tx_ring);
1541 igbvf_clean_rx_ring(adapter->rx_ring);
1542}
1543
1544void igbvf_reinit_locked(struct igbvf_adapter *adapter)
1545{
1546 might_sleep();
1547 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
1548 msleep(1);
1549 igbvf_down(adapter);
1550 igbvf_up(adapter);
1551 clear_bit(__IGBVF_RESETTING, &adapter->state);
1552}
1553
1554/**
1555 * igbvf_sw_init - Initialize general software structures (struct igbvf_adapter)
1556 * @adapter: board private structure to initialize
1557 *
1558 * igbvf_sw_init initializes the Adapter private data structure.
1559 * Fields are initialized based on PCI device information and
1560 * OS network device settings (MTU size).
1561 **/
1562static int __devinit igbvf_sw_init(struct igbvf_adapter *adapter)
1563{
1564 struct net_device *netdev = adapter->netdev;
1565 s32 rc;
1566
1567 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN;
1568 adapter->rx_ps_hdr_size = 0;
1569 adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
1570 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
1571
1572 adapter->tx_int_delay = 8;
1573 adapter->tx_abs_int_delay = 32;
1574 adapter->rx_int_delay = 0;
1575 adapter->rx_abs_int_delay = 8;
1576 adapter->itr_setting = 3;
1577 adapter->itr = 20000;
1578
1579 /* Set various function pointers */
1580 adapter->ei->init_ops(&adapter->hw);
1581
1582 rc = adapter->hw.mac.ops.init_params(&adapter->hw);
1583 if (rc)
1584 return rc;
1585
1586 rc = adapter->hw.mbx.ops.init_params(&adapter->hw);
1587 if (rc)
1588 return rc;
1589
1590 igbvf_set_interrupt_capability(adapter);
1591
1592 if (igbvf_alloc_queues(adapter))
1593 return -ENOMEM;
1594
1595 spin_lock_init(&adapter->tx_queue_lock);
1596
1597 /* Explicitly disable IRQ since the NIC can be in any state. */
1598 igbvf_irq_disable(adapter);
1599
1600 spin_lock_init(&adapter->stats_lock);
1601
1602 set_bit(__IGBVF_DOWN, &adapter->state);
1603 return 0;
1604}
1605
1606static void igbvf_initialize_last_counter_stats(struct igbvf_adapter *adapter)
1607{
1608 struct e1000_hw *hw = &adapter->hw;
1609
1610 adapter->stats.last_gprc = er32(VFGPRC);
1611 adapter->stats.last_gorc = er32(VFGORC);
1612 adapter->stats.last_gptc = er32(VFGPTC);
1613 adapter->stats.last_gotc = er32(VFGOTC);
1614 adapter->stats.last_mprc = er32(VFMPRC);
1615 adapter->stats.last_gotlbc = er32(VFGOTLBC);
1616 adapter->stats.last_gptlbc = er32(VFGPTLBC);
1617 adapter->stats.last_gorlbc = er32(VFGORLBC);
1618 adapter->stats.last_gprlbc = er32(VFGPRLBC);
1619
1620 adapter->stats.base_gprc = er32(VFGPRC);
1621 adapter->stats.base_gorc = er32(VFGORC);
1622 adapter->stats.base_gptc = er32(VFGPTC);
1623 adapter->stats.base_gotc = er32(VFGOTC);
1624 adapter->stats.base_mprc = er32(VFMPRC);
1625 adapter->stats.base_gotlbc = er32(VFGOTLBC);
1626 adapter->stats.base_gptlbc = er32(VFGPTLBC);
1627 adapter->stats.base_gorlbc = er32(VFGORLBC);
1628 adapter->stats.base_gprlbc = er32(VFGPRLBC);
1629}
1630
1631/**
1632 * igbvf_open - Called when a network interface is made active
1633 * @netdev: network interface device structure
1634 *
1635 * Returns 0 on success, negative value on failure
1636 *
1637 * The open entry point is called when a network interface is made
1638 * active by the system (IFF_UP). At this point all resources needed
1639 * for transmit and receive operations are allocated, the interrupt
1640 * handler is registered with the OS, the watchdog timer is started,
1641 * and the stack is notified that the interface is ready.
1642 **/
1643static int igbvf_open(struct net_device *netdev)
1644{
1645 struct igbvf_adapter *adapter = netdev_priv(netdev);
1646 struct e1000_hw *hw = &adapter->hw;
1647 int err;
1648
1649 /* disallow open during test */
1650 if (test_bit(__IGBVF_TESTING, &adapter->state))
1651 return -EBUSY;
1652
1653 /* allocate transmit descriptors */
1654 err = igbvf_setup_tx_resources(adapter, adapter->tx_ring);
1655 if (err)
1656 goto err_setup_tx;
1657
1658 /* allocate receive descriptors */
1659 err = igbvf_setup_rx_resources(adapter, adapter->rx_ring);
1660 if (err)
1661 goto err_setup_rx;
1662
1663 /*
1664 * before we allocate an interrupt, we must be ready to handle it.
1665 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
1666 * as soon as we call pci_request_irq, so we have to setup our
1667 * clean_rx handler before we do so.
1668 */
1669 igbvf_configure(adapter);
1670
1671 err = igbvf_request_irq(adapter);
1672 if (err)
1673 goto err_req_irq;
1674
1675 /* From here on the code is the same as igbvf_up() */
1676 clear_bit(__IGBVF_DOWN, &adapter->state);
1677
1678 napi_enable(&adapter->rx_ring->napi);
1679
1680 /* clear any pending interrupts */
1681 er32(EICR);
1682
1683 igbvf_irq_enable(adapter);
1684
1685 /* start the watchdog */
1686 hw->mac.get_link_status = 1;
1687 mod_timer(&adapter->watchdog_timer, jiffies + 1);
1688
1689 return 0;
1690
1691err_req_irq:
1692 igbvf_free_rx_resources(adapter->rx_ring);
1693err_setup_rx:
1694 igbvf_free_tx_resources(adapter->tx_ring);
1695err_setup_tx:
1696 igbvf_reset(adapter);
1697
1698 return err;
1699}
1700
1701/**
1702 * igbvf_close - Disables a network interface
1703 * @netdev: network interface device structure
1704 *
1705 * Returns 0, this is not allowed to fail
1706 *
1707 * The close entry point is called when an interface is de-activated
1708 * by the OS. The hardware is still under the drivers control, but
1709 * needs to be disabled. A global MAC reset is issued to stop the
1710 * hardware, and all transmit and receive resources are freed.
1711 **/
1712static int igbvf_close(struct net_device *netdev)
1713{
1714 struct igbvf_adapter *adapter = netdev_priv(netdev);
1715
1716 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state));
1717 igbvf_down(adapter);
1718
1719 igbvf_free_irq(adapter);
1720
1721 igbvf_free_tx_resources(adapter->tx_ring);
1722 igbvf_free_rx_resources(adapter->rx_ring);
1723
1724 return 0;
1725}
1726/**
1727 * igbvf_set_mac - Change the Ethernet Address of the NIC
1728 * @netdev: network interface device structure
1729 * @p: pointer to an address structure
1730 *
1731 * Returns 0 on success, negative on failure
1732 **/
1733static int igbvf_set_mac(struct net_device *netdev, void *p)
1734{
1735 struct igbvf_adapter *adapter = netdev_priv(netdev);
1736 struct e1000_hw *hw = &adapter->hw;
1737 struct sockaddr *addr = p;
1738
1739 if (!is_valid_ether_addr(addr->sa_data))
1740 return -EADDRNOTAVAIL;
1741
1742 memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
1743
1744 hw->mac.ops.rar_set(hw, hw->mac.addr, 0);
1745
1746 if (memcmp(addr->sa_data, hw->mac.addr, 6))
1747 return -EADDRNOTAVAIL;
1748
1749 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
1750
1751 return 0;
1752}
1753
1754#define UPDATE_VF_COUNTER(reg, name) \
1755 { \
1756 u32 current_counter = er32(reg); \
1757 if (current_counter < adapter->stats.last_##name) \
1758 adapter->stats.name += 0x100000000LL; \
1759 adapter->stats.last_##name = current_counter; \
1760 adapter->stats.name &= 0xFFFFFFFF00000000LL; \
1761 adapter->stats.name |= current_counter; \
1762 }
1763
1764/**
1765 * igbvf_update_stats - Update the board statistics counters
1766 * @adapter: board private structure
1767**/
1768void igbvf_update_stats(struct igbvf_adapter *adapter)
1769{
1770 struct e1000_hw *hw = &adapter->hw;
1771 struct pci_dev *pdev = adapter->pdev;
1772
1773 /*
1774 * Prevent stats update while adapter is being reset, link is down
1775 * or if the pci connection is down.
1776 */
1777 if (adapter->link_speed == 0)
1778 return;
1779
1780 if (test_bit(__IGBVF_RESETTING, &adapter->state))
1781 return;
1782
1783 if (pci_channel_offline(pdev))
1784 return;
1785
1786 UPDATE_VF_COUNTER(VFGPRC, gprc);
1787 UPDATE_VF_COUNTER(VFGORC, gorc);
1788 UPDATE_VF_COUNTER(VFGPTC, gptc);
1789 UPDATE_VF_COUNTER(VFGOTC, gotc);
1790 UPDATE_VF_COUNTER(VFMPRC, mprc);
1791 UPDATE_VF_COUNTER(VFGOTLBC, gotlbc);
1792 UPDATE_VF_COUNTER(VFGPTLBC, gptlbc);
1793 UPDATE_VF_COUNTER(VFGORLBC, gorlbc);
1794 UPDATE_VF_COUNTER(VFGPRLBC, gprlbc);
1795
1796 /* Fill out the OS statistics structure */
1797 adapter->net_stats.multicast = adapter->stats.mprc;
1798}
1799
1800static void igbvf_print_link_info(struct igbvf_adapter *adapter)
1801{
1802 dev_info(&adapter->pdev->dev, "Link is Up %d Mbps %s\n",
1803 adapter->link_speed,
1804 ((adapter->link_duplex == FULL_DUPLEX) ?
1805 "Full Duplex" : "Half Duplex"));
1806}
1807
1808static bool igbvf_has_link(struct igbvf_adapter *adapter)
1809{
1810 struct e1000_hw *hw = &adapter->hw;
1811 s32 ret_val = E1000_SUCCESS;
1812 bool link_active;
1813
1814 ret_val = hw->mac.ops.check_for_link(hw);
1815 link_active = !hw->mac.get_link_status;
1816
1817 /* if check for link returns error we will need to reset */
1818 if (ret_val)
1819 schedule_work(&adapter->reset_task);
1820
1821 return link_active;
1822}
1823
1824/**
1825 * igbvf_watchdog - Timer Call-back
1826 * @data: pointer to adapter cast into an unsigned long
1827 **/
1828static void igbvf_watchdog(unsigned long data)
1829{
1830 struct igbvf_adapter *adapter = (struct igbvf_adapter *) data;
1831
1832 /* Do the rest outside of interrupt context */
1833 schedule_work(&adapter->watchdog_task);
1834}
1835
1836static void igbvf_watchdog_task(struct work_struct *work)
1837{
1838 struct igbvf_adapter *adapter = container_of(work,
1839 struct igbvf_adapter,
1840 watchdog_task);
1841 struct net_device *netdev = adapter->netdev;
1842 struct e1000_mac_info *mac = &adapter->hw.mac;
1843 struct igbvf_ring *tx_ring = adapter->tx_ring;
1844 struct e1000_hw *hw = &adapter->hw;
1845 u32 link;
1846 int tx_pending = 0;
1847
1848 link = igbvf_has_link(adapter);
1849
1850 if (link) {
1851 if (!netif_carrier_ok(netdev)) {
1852 bool txb2b = 1;
1853
1854 mac->ops.get_link_up_info(&adapter->hw,
1855 &adapter->link_speed,
1856 &adapter->link_duplex);
1857 igbvf_print_link_info(adapter);
1858
1859 /*
1860 * tweak tx_queue_len according to speed/duplex
1861 * and adjust the timeout factor
1862 */
1863 netdev->tx_queue_len = adapter->tx_queue_len;
1864 adapter->tx_timeout_factor = 1;
1865 switch (adapter->link_speed) {
1866 case SPEED_10:
1867 txb2b = 0;
1868 netdev->tx_queue_len = 10;
1869 adapter->tx_timeout_factor = 16;
1870 break;
1871 case SPEED_100:
1872 txb2b = 0;
1873 netdev->tx_queue_len = 100;
1874 /* maybe add some timeout factor ? */
1875 break;
1876 }
1877
1878 netif_carrier_on(netdev);
1879 netif_wake_queue(netdev);
1880 }
1881 } else {
1882 if (netif_carrier_ok(netdev)) {
1883 adapter->link_speed = 0;
1884 adapter->link_duplex = 0;
1885 dev_info(&adapter->pdev->dev, "Link is Down\n");
1886 netif_carrier_off(netdev);
1887 netif_stop_queue(netdev);
1888 }
1889 }
1890
1891 if (netif_carrier_ok(netdev)) {
1892 igbvf_update_stats(adapter);
1893 } else {
1894 tx_pending = (igbvf_desc_unused(tx_ring) + 1 <
1895 tx_ring->count);
1896 if (tx_pending) {
1897 /*
1898 * We've lost link, so the controller stops DMA,
1899 * but we've got queued Tx work that's never going
1900 * to get done, so reset controller to flush Tx.
1901 * (Do the reset outside of interrupt context).
1902 */
1903 adapter->tx_timeout_count++;
1904 schedule_work(&adapter->reset_task);
1905 }
1906 }
1907
1908 /* Cause software interrupt to ensure Rx ring is cleaned */
1909 ew32(EICS, adapter->rx_ring->eims_value);
1910
1911 /* Force detection of hung controller every watchdog period */
1912 adapter->detect_tx_hung = 1;
1913
1914 /* Reset the timer */
1915 if (!test_bit(__IGBVF_DOWN, &adapter->state))
1916 mod_timer(&adapter->watchdog_timer,
1917 round_jiffies(jiffies + (2 * HZ)));
1918}
1919
1920#define IGBVF_TX_FLAGS_CSUM 0x00000001
1921#define IGBVF_TX_FLAGS_VLAN 0x00000002
1922#define IGBVF_TX_FLAGS_TSO 0x00000004
1923#define IGBVF_TX_FLAGS_IPV4 0x00000008
1924#define IGBVF_TX_FLAGS_VLAN_MASK 0xffff0000
1925#define IGBVF_TX_FLAGS_VLAN_SHIFT 16
1926
1927static int igbvf_tso(struct igbvf_adapter *adapter,
1928 struct igbvf_ring *tx_ring,
1929 struct sk_buff *skb, u32 tx_flags, u8 *hdr_len)
1930{
1931 struct e1000_adv_tx_context_desc *context_desc;
1932 unsigned int i;
1933 int err;
1934 struct igbvf_buffer *buffer_info;
1935 u32 info = 0, tu_cmd = 0;
1936 u32 mss_l4len_idx, l4len;
1937 *hdr_len = 0;
1938
1939 if (skb_header_cloned(skb)) {
1940 err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
1941 if (err) {
1942 dev_err(&adapter->pdev->dev,
1943 "igbvf_tso returning an error\n");
1944 return err;
1945 }
1946 }
1947
1948 l4len = tcp_hdrlen(skb);
1949 *hdr_len += l4len;
1950
1951 if (skb->protocol == htons(ETH_P_IP)) {
1952 struct iphdr *iph = ip_hdr(skb);
1953 iph->tot_len = 0;
1954 iph->check = 0;
1955 tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
1956 iph->daddr, 0,
1957 IPPROTO_TCP,
1958 0);
1959 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
1960 ipv6_hdr(skb)->payload_len = 0;
1961 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
1962 &ipv6_hdr(skb)->daddr,
1963 0, IPPROTO_TCP, 0);
1964 }
1965
1966 i = tx_ring->next_to_use;
1967
1968 buffer_info = &tx_ring->buffer_info[i];
1969 context_desc = IGBVF_TX_CTXTDESC_ADV(*tx_ring, i);
1970 /* VLAN MACLEN IPLEN */
1971 if (tx_flags & IGBVF_TX_FLAGS_VLAN)
1972 info |= (tx_flags & IGBVF_TX_FLAGS_VLAN_MASK);
1973 info |= (skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT);
1974 *hdr_len += skb_network_offset(skb);
1975 info |= (skb_transport_header(skb) - skb_network_header(skb));
1976 *hdr_len += (skb_transport_header(skb) - skb_network_header(skb));
1977 context_desc->vlan_macip_lens = cpu_to_le32(info);
1978
1979 /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
1980 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
1981
1982 if (skb->protocol == htons(ETH_P_IP))
1983 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
1984 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
1985
1986 context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd);
1987
1988 /* MSS L4LEN IDX */
1989 mss_l4len_idx = (skb_shinfo(skb)->gso_size << E1000_ADVTXD_MSS_SHIFT);
1990 mss_l4len_idx |= (l4len << E1000_ADVTXD_L4LEN_SHIFT);
1991
1992 context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx);
1993 context_desc->seqnum_seed = 0;
1994
1995 buffer_info->time_stamp = jiffies;
1996 buffer_info->next_to_watch = i;
1997 buffer_info->dma = 0;
1998 i++;
1999 if (i == tx_ring->count)
2000 i = 0;
2001
2002 tx_ring->next_to_use = i;
2003
2004 return true;
2005}
2006
2007static inline bool igbvf_tx_csum(struct igbvf_adapter *adapter,
2008 struct igbvf_ring *tx_ring,
2009 struct sk_buff *skb, u32 tx_flags)
2010{
2011 struct e1000_adv_tx_context_desc *context_desc;
2012 unsigned int i;
2013 struct igbvf_buffer *buffer_info;
2014 u32 info = 0, tu_cmd = 0;
2015
2016 if ((skb->ip_summed == CHECKSUM_PARTIAL) ||
2017 (tx_flags & IGBVF_TX_FLAGS_VLAN)) {
2018 i = tx_ring->next_to_use;
2019 buffer_info = &tx_ring->buffer_info[i];
2020 context_desc = IGBVF_TX_CTXTDESC_ADV(*tx_ring, i);
2021
2022 if (tx_flags & IGBVF_TX_FLAGS_VLAN)
2023 info |= (tx_flags & IGBVF_TX_FLAGS_VLAN_MASK);
2024
2025 info |= (skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT);
2026 if (skb->ip_summed == CHECKSUM_PARTIAL)
2027 info |= (skb_transport_header(skb) -
2028 skb_network_header(skb));
2029
2030
2031 context_desc->vlan_macip_lens = cpu_to_le32(info);
2032
2033 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
2034
2035 if (skb->ip_summed == CHECKSUM_PARTIAL) {
2036 switch (skb->protocol) {
2037 case __constant_htons(ETH_P_IP):
2038 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
2039 if (ip_hdr(skb)->protocol == IPPROTO_TCP)
2040 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
2041 break;
2042 case __constant_htons(ETH_P_IPV6):
2043 if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
2044 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
2045 break;
2046 default:
2047 break;
2048 }
2049 }
2050
2051 context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd);
2052 context_desc->seqnum_seed = 0;
2053 context_desc->mss_l4len_idx = 0;
2054
2055 buffer_info->time_stamp = jiffies;
2056 buffer_info->next_to_watch = i;
2057 buffer_info->dma = 0;
2058 i++;
2059 if (i == tx_ring->count)
2060 i = 0;
2061 tx_ring->next_to_use = i;
2062
2063 return true;
2064 }
2065
2066 return false;
2067}
2068
2069static int igbvf_maybe_stop_tx(struct net_device *netdev, int size)
2070{
2071 struct igbvf_adapter *adapter = netdev_priv(netdev);
2072
2073 /* there is enough descriptors then we don't need to worry */
2074 if (igbvf_desc_unused(adapter->tx_ring) >= size)
2075 return 0;
2076
2077 netif_stop_queue(netdev);
2078
2079 smp_mb();
2080
2081 /* We need to check again just in case room has been made available */
2082 if (igbvf_desc_unused(adapter->tx_ring) < size)
2083 return -EBUSY;
2084
2085 netif_wake_queue(netdev);
2086
2087 ++adapter->restart_queue;
2088 return 0;
2089}
2090
2091#define IGBVF_MAX_TXD_PWR 16
2092#define IGBVF_MAX_DATA_PER_TXD (1 << IGBVF_MAX_TXD_PWR)
2093
2094static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
2095 struct igbvf_ring *tx_ring,
2096 struct sk_buff *skb,
2097 unsigned int first)
2098{
2099 struct igbvf_buffer *buffer_info;
2100 unsigned int len = skb_headlen(skb);
2101 unsigned int count = 0, i;
2102 unsigned int f;
2103 dma_addr_t *map;
2104
2105 i = tx_ring->next_to_use;
2106
2107 if (skb_dma_map(&adapter->pdev->dev, skb, DMA_TO_DEVICE)) {
2108 dev_err(&adapter->pdev->dev, "TX DMA map failed\n");
2109 return 0;
2110 }
2111
2112 map = skb_shinfo(skb)->dma_maps;
2113
2114 buffer_info = &tx_ring->buffer_info[i];
2115 BUG_ON(len >= IGBVF_MAX_DATA_PER_TXD);
2116 buffer_info->length = len;
2117 /* set time_stamp *before* dma to help avoid a possible race */
2118 buffer_info->time_stamp = jiffies;
2119 buffer_info->next_to_watch = i;
2120 buffer_info->dma = map[count];
2121 count++;
2122
2123 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
2124 struct skb_frag_struct *frag;
2125
2126 i++;
2127 if (i == tx_ring->count)
2128 i = 0;
2129
2130 frag = &skb_shinfo(skb)->frags[f];
2131 len = frag->size;
2132
2133 buffer_info = &tx_ring->buffer_info[i];
2134 BUG_ON(len >= IGBVF_MAX_DATA_PER_TXD);
2135 buffer_info->length = len;
2136 buffer_info->time_stamp = jiffies;
2137 buffer_info->next_to_watch = i;
2138 buffer_info->dma = map[count];
2139 count++;
2140 }
2141
2142 tx_ring->buffer_info[i].skb = skb;
2143 tx_ring->buffer_info[first].next_to_watch = i;
2144
2145 return count;
2146}
2147
2148static inline void igbvf_tx_queue_adv(struct igbvf_adapter *adapter,
2149 struct igbvf_ring *tx_ring,
2150 int tx_flags, int count, u32 paylen,
2151 u8 hdr_len)
2152{
2153 union e1000_adv_tx_desc *tx_desc = NULL;
2154 struct igbvf_buffer *buffer_info;
2155 u32 olinfo_status = 0, cmd_type_len;
2156 unsigned int i;
2157
2158 cmd_type_len = (E1000_ADVTXD_DTYP_DATA | E1000_ADVTXD_DCMD_IFCS |
2159 E1000_ADVTXD_DCMD_DEXT);
2160
2161 if (tx_flags & IGBVF_TX_FLAGS_VLAN)
2162 cmd_type_len |= E1000_ADVTXD_DCMD_VLE;
2163
2164 if (tx_flags & IGBVF_TX_FLAGS_TSO) {
2165 cmd_type_len |= E1000_ADVTXD_DCMD_TSE;
2166
2167 /* insert tcp checksum */
2168 olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
2169
2170 /* insert ip checksum */
2171 if (tx_flags & IGBVF_TX_FLAGS_IPV4)
2172 olinfo_status |= E1000_TXD_POPTS_IXSM << 8;
2173
2174 } else if (tx_flags & IGBVF_TX_FLAGS_CSUM) {
2175 olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
2176 }
2177
2178 olinfo_status |= ((paylen - hdr_len) << E1000_ADVTXD_PAYLEN_SHIFT);
2179
2180 i = tx_ring->next_to_use;
2181 while (count--) {
2182 buffer_info = &tx_ring->buffer_info[i];
2183 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
2184 tx_desc->read.buffer_addr = cpu_to_le64(buffer_info->dma);
2185 tx_desc->read.cmd_type_len =
2186 cpu_to_le32(cmd_type_len | buffer_info->length);
2187 tx_desc->read.olinfo_status = cpu_to_le32(olinfo_status);
2188 i++;
2189 if (i == tx_ring->count)
2190 i = 0;
2191 }
2192
2193 tx_desc->read.cmd_type_len |= cpu_to_le32(adapter->txd_cmd);
2194 /* Force memory writes to complete before letting h/w
2195 * know there are new descriptors to fetch. (Only
2196 * applicable for weak-ordered memory model archs,
2197 * such as IA-64). */
2198 wmb();
2199
2200 tx_ring->next_to_use = i;
2201 writel(i, adapter->hw.hw_addr + tx_ring->tail);
2202 /* we need this if more than one processor can write to our tail
2203 * at a time, it syncronizes IO on IA64/Altix systems */
2204 mmiowb();
2205}
2206
2207static int igbvf_xmit_frame_ring_adv(struct sk_buff *skb,
2208 struct net_device *netdev,
2209 struct igbvf_ring *tx_ring)
2210{
2211 struct igbvf_adapter *adapter = netdev_priv(netdev);
2212 unsigned int first, tx_flags = 0;
2213 u8 hdr_len = 0;
2214 int count = 0;
2215 int tso = 0;
2216
2217 if (test_bit(__IGBVF_DOWN, &adapter->state)) {
2218 dev_kfree_skb_any(skb);
2219 return NETDEV_TX_OK;
2220 }
2221
2222 if (skb->len <= 0) {
2223 dev_kfree_skb_any(skb);
2224 return NETDEV_TX_OK;
2225 }
2226
2227 /*
2228 * need: count + 4 desc gap to keep tail from touching
2229 * + 2 desc gap to keep tail from touching head,
2230 * + 1 desc for skb->data,
2231 * + 1 desc for context descriptor,
2232 * head, otherwise try next time
2233 */
2234 if (igbvf_maybe_stop_tx(netdev, skb_shinfo(skb)->nr_frags + 4)) {
2235 /* this is a hard error */
2236 return NETDEV_TX_BUSY;
2237 }
2238
2239 if (adapter->vlgrp && vlan_tx_tag_present(skb)) {
2240 tx_flags |= IGBVF_TX_FLAGS_VLAN;
2241 tx_flags |= (vlan_tx_tag_get(skb) << IGBVF_TX_FLAGS_VLAN_SHIFT);
2242 }
2243
2244 if (skb->protocol == htons(ETH_P_IP))
2245 tx_flags |= IGBVF_TX_FLAGS_IPV4;
2246
2247 first = tx_ring->next_to_use;
2248
2249 tso = skb_is_gso(skb) ?
2250 igbvf_tso(adapter, tx_ring, skb, tx_flags, &hdr_len) : 0;
2251 if (unlikely(tso < 0)) {
2252 dev_kfree_skb_any(skb);
2253 return NETDEV_TX_OK;
2254 }
2255
2256 if (tso)
2257 tx_flags |= IGBVF_TX_FLAGS_TSO;
2258 else if (igbvf_tx_csum(adapter, tx_ring, skb, tx_flags) &&
2259 (skb->ip_summed == CHECKSUM_PARTIAL))
2260 tx_flags |= IGBVF_TX_FLAGS_CSUM;
2261
2262 /*
2263 * count reflects descriptors mapped, if 0 then mapping error
2264 * has occured and we need to rewind the descriptor queue
2265 */
2266 count = igbvf_tx_map_adv(adapter, tx_ring, skb, first);
2267
2268 if (count) {
2269 igbvf_tx_queue_adv(adapter, tx_ring, tx_flags, count,
2270 skb->len, hdr_len);
2271 netdev->trans_start = jiffies;
2272 /* Make sure there is space in the ring for the next send. */
2273 igbvf_maybe_stop_tx(netdev, MAX_SKB_FRAGS + 4);
2274 } else {
2275 dev_kfree_skb_any(skb);
2276 tx_ring->buffer_info[first].time_stamp = 0;
2277 tx_ring->next_to_use = first;
2278 }
2279
2280 return NETDEV_TX_OK;
2281}
2282
2283static int igbvf_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
2284{
2285 struct igbvf_adapter *adapter = netdev_priv(netdev);
2286 struct igbvf_ring *tx_ring;
2287 int retval;
2288
2289 if (test_bit(__IGBVF_DOWN, &adapter->state)) {
2290 dev_kfree_skb_any(skb);
2291 return NETDEV_TX_OK;
2292 }
2293
2294 tx_ring = &adapter->tx_ring[0];
2295
2296 retval = igbvf_xmit_frame_ring_adv(skb, netdev, tx_ring);
2297
2298 return retval;
2299}
2300
2301/**
2302 * igbvf_tx_timeout - Respond to a Tx Hang
2303 * @netdev: network interface device structure
2304 **/
2305static void igbvf_tx_timeout(struct net_device *netdev)
2306{
2307 struct igbvf_adapter *adapter = netdev_priv(netdev);
2308
2309 /* Do the reset outside of interrupt context */
2310 adapter->tx_timeout_count++;
2311 schedule_work(&adapter->reset_task);
2312}
2313
2314static void igbvf_reset_task(struct work_struct *work)
2315{
2316 struct igbvf_adapter *adapter;
2317 adapter = container_of(work, struct igbvf_adapter, reset_task);
2318
2319 igbvf_reinit_locked(adapter);
2320}
2321
2322/**
2323 * igbvf_get_stats - Get System Network Statistics
2324 * @netdev: network interface device structure
2325 *
2326 * Returns the address of the device statistics structure.
2327 * The statistics are actually updated from the timer callback.
2328 **/
2329static struct net_device_stats *igbvf_get_stats(struct net_device *netdev)
2330{
2331 struct igbvf_adapter *adapter = netdev_priv(netdev);
2332
2333 /* only return the current stats */
2334 return &adapter->net_stats;
2335}
2336
2337/**
2338 * igbvf_change_mtu - Change the Maximum Transfer Unit
2339 * @netdev: network interface device structure
2340 * @new_mtu: new value for maximum frame size
2341 *
2342 * Returns 0 on success, negative on failure
2343 **/
2344static int igbvf_change_mtu(struct net_device *netdev, int new_mtu)
2345{
2346 struct igbvf_adapter *adapter = netdev_priv(netdev);
2347 int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
2348
2349 if ((new_mtu < 68) || (max_frame > MAX_JUMBO_FRAME_SIZE)) {
2350 dev_err(&adapter->pdev->dev, "Invalid MTU setting\n");
2351 return -EINVAL;
2352 }
2353
2354 /* Jumbo frame size limits */
2355 if (max_frame > ETH_FRAME_LEN + ETH_FCS_LEN) {
2356 if (!(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) {
2357 dev_err(&adapter->pdev->dev,
2358 "Jumbo Frames not supported.\n");
2359 return -EINVAL;
2360 }
2361 }
2362
2363#define MAX_STD_JUMBO_FRAME_SIZE 9234
2364 if (max_frame > MAX_STD_JUMBO_FRAME_SIZE) {
2365 dev_err(&adapter->pdev->dev, "MTU > 9216 not supported.\n");
2366 return -EINVAL;
2367 }
2368
2369 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
2370 msleep(1);
2371 /* igbvf_down has a dependency on max_frame_size */
2372 adapter->max_frame_size = max_frame;
2373 if (netif_running(netdev))
2374 igbvf_down(adapter);
2375
2376 /*
2377 * NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
2378 * means we reserve 2 more, this pushes us to allocate from the next
2379 * larger slab size.
2380 * i.e. RXBUFFER_2048 --> size-4096 slab
2381 * However with the new *_jumbo_rx* routines, jumbo receives will use
2382 * fragmented skbs
2383 */
2384
2385 if (max_frame <= 1024)
2386 adapter->rx_buffer_len = 1024;
2387 else if (max_frame <= 2048)
2388 adapter->rx_buffer_len = 2048;
2389 else
2390#if (PAGE_SIZE / 2) > 16384
2391 adapter->rx_buffer_len = 16384;
2392#else
2393 adapter->rx_buffer_len = PAGE_SIZE / 2;
2394#endif
2395
2396
2397 /* adjust allocation if LPE protects us, and we aren't using SBP */
2398 if ((max_frame == ETH_FRAME_LEN + ETH_FCS_LEN) ||
2399 (max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN))
2400 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN +
2401 ETH_FCS_LEN;
2402
2403 dev_info(&adapter->pdev->dev, "changing MTU from %d to %d\n",
2404 netdev->mtu, new_mtu);
2405 netdev->mtu = new_mtu;
2406
2407 if (netif_running(netdev))
2408 igbvf_up(adapter);
2409 else
2410 igbvf_reset(adapter);
2411
2412 clear_bit(__IGBVF_RESETTING, &adapter->state);
2413
2414 return 0;
2415}
2416
2417static int igbvf_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
2418{
2419 switch (cmd) {
2420 default:
2421 return -EOPNOTSUPP;
2422 }
2423}
2424
2425static int igbvf_suspend(struct pci_dev *pdev, pm_message_t state)
2426{
2427 struct net_device *netdev = pci_get_drvdata(pdev);
2428 struct igbvf_adapter *adapter = netdev_priv(netdev);
2429#ifdef CONFIG_PM
2430 int retval = 0;
2431#endif
2432
2433 netif_device_detach(netdev);
2434
2435 if (netif_running(netdev)) {
2436 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state));
2437 igbvf_down(adapter);
2438 igbvf_free_irq(adapter);
2439 }
2440
2441#ifdef CONFIG_PM
2442 retval = pci_save_state(pdev);
2443 if (retval)
2444 return retval;
2445#endif
2446
2447 pci_disable_device(pdev);
2448
2449 return 0;
2450}
2451
2452#ifdef CONFIG_PM
2453static int igbvf_resume(struct pci_dev *pdev)
2454{
2455 struct net_device *netdev = pci_get_drvdata(pdev);
2456 struct igbvf_adapter *adapter = netdev_priv(netdev);
2457 u32 err;
2458
2459 pci_restore_state(pdev);
2460 err = pci_enable_device_mem(pdev);
2461 if (err) {
2462 dev_err(&pdev->dev, "Cannot enable PCI device from suspend\n");
2463 return err;
2464 }
2465
2466 pci_set_master(pdev);
2467
2468 if (netif_running(netdev)) {
2469 err = igbvf_request_irq(adapter);
2470 if (err)
2471 return err;
2472 }
2473
2474 igbvf_reset(adapter);
2475
2476 if (netif_running(netdev))
2477 igbvf_up(adapter);
2478
2479 netif_device_attach(netdev);
2480
2481 return 0;
2482}
2483#endif
2484
2485static void igbvf_shutdown(struct pci_dev *pdev)
2486{
2487 igbvf_suspend(pdev, PMSG_SUSPEND);
2488}
2489
2490#ifdef CONFIG_NET_POLL_CONTROLLER
2491/*
2492 * Polling 'interrupt' - used by things like netconsole to send skbs
2493 * without having to re-enable interrupts. It's not called while
2494 * the interrupt routine is executing.
2495 */
2496static void igbvf_netpoll(struct net_device *netdev)
2497{
2498 struct igbvf_adapter *adapter = netdev_priv(netdev);
2499
2500 disable_irq(adapter->pdev->irq);
2501
2502 igbvf_clean_tx_irq(adapter->tx_ring);
2503
2504 enable_irq(adapter->pdev->irq);
2505}
2506#endif
2507
2508/**
2509 * igbvf_io_error_detected - called when PCI error is detected
2510 * @pdev: Pointer to PCI device
2511 * @state: The current pci connection state
2512 *
2513 * This function is called after a PCI bus error affecting
2514 * this device has been detected.
2515 */
2516static pci_ers_result_t igbvf_io_error_detected(struct pci_dev *pdev,
2517 pci_channel_state_t state)
2518{
2519 struct net_device *netdev = pci_get_drvdata(pdev);
2520 struct igbvf_adapter *adapter = netdev_priv(netdev);
2521
2522 netif_device_detach(netdev);
2523
2524 if (netif_running(netdev))
2525 igbvf_down(adapter);
2526 pci_disable_device(pdev);
2527
2528 /* Request a slot slot reset. */
2529 return PCI_ERS_RESULT_NEED_RESET;
2530}
2531
2532/**
2533 * igbvf_io_slot_reset - called after the pci bus has been reset.
2534 * @pdev: Pointer to PCI device
2535 *
2536 * Restart the card from scratch, as if from a cold-boot. Implementation
2537 * resembles the first-half of the igbvf_resume routine.
2538 */
2539static pci_ers_result_t igbvf_io_slot_reset(struct pci_dev *pdev)
2540{
2541 struct net_device *netdev = pci_get_drvdata(pdev);
2542 struct igbvf_adapter *adapter = netdev_priv(netdev);
2543
2544 if (pci_enable_device_mem(pdev)) {
2545 dev_err(&pdev->dev,
2546 "Cannot re-enable PCI device after reset.\n");
2547 return PCI_ERS_RESULT_DISCONNECT;
2548 }
2549 pci_set_master(pdev);
2550
2551 igbvf_reset(adapter);
2552
2553 return PCI_ERS_RESULT_RECOVERED;
2554}
2555
2556/**
2557 * igbvf_io_resume - called when traffic can start flowing again.
2558 * @pdev: Pointer to PCI device
2559 *
2560 * This callback is called when the error recovery driver tells us that
2561 * its OK to resume normal operation. Implementation resembles the
2562 * second-half of the igbvf_resume routine.
2563 */
2564static void igbvf_io_resume(struct pci_dev *pdev)
2565{
2566 struct net_device *netdev = pci_get_drvdata(pdev);
2567 struct igbvf_adapter *adapter = netdev_priv(netdev);
2568
2569 if (netif_running(netdev)) {
2570 if (igbvf_up(adapter)) {
2571 dev_err(&pdev->dev,
2572 "can't bring device back up after reset\n");
2573 return;
2574 }
2575 }
2576
2577 netif_device_attach(netdev);
2578}
2579
2580static void igbvf_print_device_info(struct igbvf_adapter *adapter)
2581{
2582 struct e1000_hw *hw = &adapter->hw;
2583 struct net_device *netdev = adapter->netdev;
2584 struct pci_dev *pdev = adapter->pdev;
2585
2586 dev_info(&pdev->dev, "Intel(R) 82576 Virtual Function\n");
2587 dev_info(&pdev->dev, "Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
2588 /* MAC address */
2589 netdev->dev_addr[0], netdev->dev_addr[1],
2590 netdev->dev_addr[2], netdev->dev_addr[3],
2591 netdev->dev_addr[4], netdev->dev_addr[5]);
2592 dev_info(&pdev->dev, "MAC: %d\n", hw->mac.type);
2593}
2594
2595static const struct net_device_ops igbvf_netdev_ops = {
2596 .ndo_open = igbvf_open,
2597 .ndo_stop = igbvf_close,
2598 .ndo_start_xmit = igbvf_xmit_frame,
2599 .ndo_get_stats = igbvf_get_stats,
2600 .ndo_set_multicast_list = igbvf_set_multi,
2601 .ndo_set_mac_address = igbvf_set_mac,
2602 .ndo_change_mtu = igbvf_change_mtu,
2603 .ndo_do_ioctl = igbvf_ioctl,
2604 .ndo_tx_timeout = igbvf_tx_timeout,
2605 .ndo_vlan_rx_register = igbvf_vlan_rx_register,
2606 .ndo_vlan_rx_add_vid = igbvf_vlan_rx_add_vid,
2607 .ndo_vlan_rx_kill_vid = igbvf_vlan_rx_kill_vid,
2608#ifdef CONFIG_NET_POLL_CONTROLLER
2609 .ndo_poll_controller = igbvf_netpoll,
2610#endif
2611};
2612
2613/**
2614 * igbvf_probe - Device Initialization Routine
2615 * @pdev: PCI device information struct
2616 * @ent: entry in igbvf_pci_tbl
2617 *
2618 * Returns 0 on success, negative on failure
2619 *
2620 * igbvf_probe initializes an adapter identified by a pci_dev structure.
2621 * The OS initialization, configuring of the adapter private structure,
2622 * and a hardware reset occur.
2623 **/
2624static int __devinit igbvf_probe(struct pci_dev *pdev,
2625 const struct pci_device_id *ent)
2626{
2627 struct net_device *netdev;
2628 struct igbvf_adapter *adapter;
2629 struct e1000_hw *hw;
2630 const struct igbvf_info *ei = igbvf_info_tbl[ent->driver_data];
2631
2632 static int cards_found;
2633 int err, pci_using_dac;
2634
2635 err = pci_enable_device_mem(pdev);
2636 if (err)
2637 return err;
2638
2639 pci_using_dac = 0;
2640 err = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
2641 if (!err) {
2642 err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK);
2643 if (!err)
2644 pci_using_dac = 1;
2645 } else {
2646 err = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
2647 if (err) {
2648 err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK);
2649 if (err) {
2650 dev_err(&pdev->dev, "No usable DMA "
2651 "configuration, aborting\n");
2652 goto err_dma;
2653 }
2654 }
2655 }
2656
2657 err = pci_request_regions(pdev, igbvf_driver_name);
2658 if (err)
2659 goto err_pci_reg;
2660
2661 pci_set_master(pdev);
2662
2663 err = -ENOMEM;
2664 netdev = alloc_etherdev(sizeof(struct igbvf_adapter));
2665 if (!netdev)
2666 goto err_alloc_etherdev;
2667
2668 SET_NETDEV_DEV(netdev, &pdev->dev);
2669
2670 pci_set_drvdata(pdev, netdev);
2671 adapter = netdev_priv(netdev);
2672 hw = &adapter->hw;
2673 adapter->netdev = netdev;
2674 adapter->pdev = pdev;
2675 adapter->ei = ei;
2676 adapter->pba = ei->pba;
2677 adapter->flags = ei->flags;
2678 adapter->hw.back = adapter;
2679 adapter->hw.mac.type = ei->mac;
2680 adapter->msg_enable = (1 << NETIF_MSG_DRV | NETIF_MSG_PROBE) - 1;
2681
2682 /* PCI config space info */
2683
2684 hw->vendor_id = pdev->vendor;
2685 hw->device_id = pdev->device;
2686 hw->subsystem_vendor_id = pdev->subsystem_vendor;
2687 hw->subsystem_device_id = pdev->subsystem_device;
2688
2689 pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
2690
2691 err = -EIO;
2692 adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, 0),
2693 pci_resource_len(pdev, 0));
2694
2695 if (!adapter->hw.hw_addr)
2696 goto err_ioremap;
2697
2698 if (ei->get_variants) {
2699 err = ei->get_variants(adapter);
2700 if (err)
2701 goto err_ioremap;
2702 }
2703
2704 /* setup adapter struct */
2705 err = igbvf_sw_init(adapter);
2706 if (err)
2707 goto err_sw_init;
2708
2709 /* construct the net_device struct */
2710 netdev->netdev_ops = &igbvf_netdev_ops;
2711
2712 igbvf_set_ethtool_ops(netdev);
2713 netdev->watchdog_timeo = 5 * HZ;
2714 strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
2715
2716 adapter->bd_number = cards_found++;
2717
2718 netdev->features = NETIF_F_SG |
2719 NETIF_F_IP_CSUM |
2720 NETIF_F_HW_VLAN_TX |
2721 NETIF_F_HW_VLAN_RX |
2722 NETIF_F_HW_VLAN_FILTER;
2723
2724 netdev->features |= NETIF_F_IPV6_CSUM;
2725 netdev->features |= NETIF_F_TSO;
2726 netdev->features |= NETIF_F_TSO6;
2727
2728 if (pci_using_dac)
2729 netdev->features |= NETIF_F_HIGHDMA;
2730
2731 netdev->vlan_features |= NETIF_F_TSO;
2732 netdev->vlan_features |= NETIF_F_TSO6;
2733 netdev->vlan_features |= NETIF_F_IP_CSUM;
2734 netdev->vlan_features |= NETIF_F_IPV6_CSUM;
2735 netdev->vlan_features |= NETIF_F_SG;
2736
2737 /*reset the controller to put the device in a known good state */
2738 err = hw->mac.ops.reset_hw(hw);
2739 if (err) {
2740 dev_info(&pdev->dev,
2741 "PF still in reset state, assigning new address\n");
2742 random_ether_addr(hw->mac.addr);
2743 } else {
2744 err = hw->mac.ops.read_mac_addr(hw);
2745 if (err) {
2746 dev_err(&pdev->dev, "Error reading MAC address\n");
2747 goto err_hw_init;
2748 }
2749 }
2750
2751 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
2752 memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
2753
2754 if (!is_valid_ether_addr(netdev->perm_addr)) {
2755 dev_err(&pdev->dev, "Invalid MAC Address: "
2756 "%02x:%02x:%02x:%02x:%02x:%02x\n",
2757 netdev->dev_addr[0], netdev->dev_addr[1],
2758 netdev->dev_addr[2], netdev->dev_addr[3],
2759 netdev->dev_addr[4], netdev->dev_addr[5]);
2760 err = -EIO;
2761 goto err_hw_init;
2762 }
2763
2764 setup_timer(&adapter->watchdog_timer, &igbvf_watchdog,
2765 (unsigned long) adapter);
2766
2767 INIT_WORK(&adapter->reset_task, igbvf_reset_task);
2768 INIT_WORK(&adapter->watchdog_task, igbvf_watchdog_task);
2769
2770 /* ring size defaults */
2771 adapter->rx_ring->count = 1024;
2772 adapter->tx_ring->count = 1024;
2773
2774 /* reset the hardware with the new settings */
2775 igbvf_reset(adapter);
2776
2777 /* tell the stack to leave us alone until igbvf_open() is called */
2778 netif_carrier_off(netdev);
2779 netif_stop_queue(netdev);
2780
2781 strcpy(netdev->name, "eth%d");
2782 err = register_netdev(netdev);
2783 if (err)
2784 goto err_hw_init;
2785
2786 igbvf_print_device_info(adapter);
2787
2788 igbvf_initialize_last_counter_stats(adapter);
2789
2790 return 0;
2791
2792err_hw_init:
2793 kfree(adapter->tx_ring);
2794 kfree(adapter->rx_ring);
2795err_sw_init:
2796 igbvf_reset_interrupt_capability(adapter);
2797 iounmap(adapter->hw.hw_addr);
2798err_ioremap:
2799 free_netdev(netdev);
2800err_alloc_etherdev:
2801 pci_release_regions(pdev);
2802err_pci_reg:
2803err_dma:
2804 pci_disable_device(pdev);
2805 return err;
2806}
2807
2808/**
2809 * igbvf_remove - Device Removal Routine
2810 * @pdev: PCI device information struct
2811 *
2812 * igbvf_remove is called by the PCI subsystem to alert the driver
2813 * that it should release a PCI device. The could be caused by a
2814 * Hot-Plug event, or because the driver is going to be removed from
2815 * memory.
2816 **/
2817static void __devexit igbvf_remove(struct pci_dev *pdev)
2818{
2819 struct net_device *netdev = pci_get_drvdata(pdev);
2820 struct igbvf_adapter *adapter = netdev_priv(netdev);
2821 struct e1000_hw *hw = &adapter->hw;
2822
2823 /*
2824 * flush_scheduled work may reschedule our watchdog task, so
2825 * explicitly disable watchdog tasks from being rescheduled
2826 */
2827 set_bit(__IGBVF_DOWN, &adapter->state);
2828 del_timer_sync(&adapter->watchdog_timer);
2829
2830 flush_scheduled_work();
2831
2832 unregister_netdev(netdev);
2833
2834 igbvf_reset_interrupt_capability(adapter);
2835
2836 /*
2837 * it is important to delete the napi struct prior to freeing the
2838 * rx ring so that you do not end up with null pointer refs
2839 */
2840 netif_napi_del(&adapter->rx_ring->napi);
2841 kfree(adapter->tx_ring);
2842 kfree(adapter->rx_ring);
2843
2844 iounmap(hw->hw_addr);
2845 if (hw->flash_address)
2846 iounmap(hw->flash_address);
2847 pci_release_regions(pdev);
2848
2849 free_netdev(netdev);
2850
2851 pci_disable_device(pdev);
2852}
2853
2854/* PCI Error Recovery (ERS) */
2855static struct pci_error_handlers igbvf_err_handler = {
2856 .error_detected = igbvf_io_error_detected,
2857 .slot_reset = igbvf_io_slot_reset,
2858 .resume = igbvf_io_resume,
2859};
2860
2861static struct pci_device_id igbvf_pci_tbl[] = {
2862 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_VF), board_vf },
2863 { } /* terminate list */
2864};
2865MODULE_DEVICE_TABLE(pci, igbvf_pci_tbl);
2866
2867/* PCI Device API Driver */
2868static struct pci_driver igbvf_driver = {
2869 .name = igbvf_driver_name,
2870 .id_table = igbvf_pci_tbl,
2871 .probe = igbvf_probe,
2872 .remove = __devexit_p(igbvf_remove),
2873#ifdef CONFIG_PM
2874 /* Power Management Hooks */
2875 .suspend = igbvf_suspend,
2876 .resume = igbvf_resume,
2877#endif
2878 .shutdown = igbvf_shutdown,
2879 .err_handler = &igbvf_err_handler
2880};
2881
2882/**
2883 * igbvf_init_module - Driver Registration Routine
2884 *
2885 * igbvf_init_module is the first routine called when the driver is
2886 * loaded. All it does is register with the PCI subsystem.
2887 **/
2888static int __init igbvf_init_module(void)
2889{
2890 int ret;
2891 printk(KERN_INFO "%s - version %s\n",
2892 igbvf_driver_string, igbvf_driver_version);
2893 printk(KERN_INFO "%s\n", igbvf_copyright);
2894
2895 ret = pci_register_driver(&igbvf_driver);
2896 pm_qos_add_requirement(PM_QOS_CPU_DMA_LATENCY, igbvf_driver_name,
2897 PM_QOS_DEFAULT_VALUE);
2898
2899 return ret;
2900}
2901module_init(igbvf_init_module);
2902
2903/**
2904 * igbvf_exit_module - Driver Exit Cleanup Routine
2905 *
2906 * igbvf_exit_module is called just before the driver is removed
2907 * from memory.
2908 **/
2909static void __exit igbvf_exit_module(void)
2910{
2911 pci_unregister_driver(&igbvf_driver);
2912 pm_qos_remove_requirement(PM_QOS_CPU_DMA_LATENCY, igbvf_driver_name);
2913}
2914module_exit(igbvf_exit_module);
2915
2916
2917MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>");
2918MODULE_DESCRIPTION("Intel(R) 82576 Virtual Function Network Driver");
2919MODULE_LICENSE("GPL");
2920MODULE_VERSION(DRV_VERSION);
2921
2922/* netdev.c */
diff --git a/drivers/net/igbvf/regs.h b/drivers/net/igbvf/regs.h
new file mode 100644
index 000000000000..b9e24ed70d0a
--- /dev/null
+++ b/drivers/net/igbvf/regs.h
@@ -0,0 +1,108 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28#ifndef _E1000_REGS_H_
29#define _E1000_REGS_H_
30
31#define E1000_CTRL 0x00000 /* Device Control - RW */
32#define E1000_STATUS 0x00008 /* Device Status - RO */
33#define E1000_ITR 0x000C4 /* Interrupt Throttling Rate - RW */
34#define E1000_EICR 0x01580 /* Ext. Interrupt Cause Read - R/clr */
35#define E1000_EITR(_n) (0x01680 + (0x4 * (_n)))
36#define E1000_EICS 0x01520 /* Ext. Interrupt Cause Set - W0 */
37#define E1000_EIMS 0x01524 /* Ext. Interrupt Mask Set/Read - RW */
38#define E1000_EIMC 0x01528 /* Ext. Interrupt Mask Clear - WO */
39#define E1000_EIAC 0x0152C /* Ext. Interrupt Auto Clear - RW */
40#define E1000_EIAM 0x01530 /* Ext. Interrupt Ack Auto Clear Mask - RW */
41#define E1000_IVAR0 0x01700 /* Interrupt Vector Allocation (array) - RW */
42#define E1000_IVAR_MISC 0x01740 /* IVAR for "other" causes - RW */
43/*
44 * Convenience macros
45 *
46 * Note: "_n" is the queue number of the register to be written to.
47 *
48 * Example usage:
49 * E1000_RDBAL_REG(current_rx_queue)
50 */
51#define E1000_RDBAL(_n) ((_n) < 4 ? (0x02800 + ((_n) * 0x100)) : \
52 (0x0C000 + ((_n) * 0x40)))
53#define E1000_RDBAH(_n) ((_n) < 4 ? (0x02804 + ((_n) * 0x100)) : \
54 (0x0C004 + ((_n) * 0x40)))
55#define E1000_RDLEN(_n) ((_n) < 4 ? (0x02808 + ((_n) * 0x100)) : \
56 (0x0C008 + ((_n) * 0x40)))
57#define E1000_SRRCTL(_n) ((_n) < 4 ? (0x0280C + ((_n) * 0x100)) : \
58 (0x0C00C + ((_n) * 0x40)))
59#define E1000_RDH(_n) ((_n) < 4 ? (0x02810 + ((_n) * 0x100)) : \
60 (0x0C010 + ((_n) * 0x40)))
61#define E1000_RDT(_n) ((_n) < 4 ? (0x02818 + ((_n) * 0x100)) : \
62 (0x0C018 + ((_n) * 0x40)))
63#define E1000_RXDCTL(_n) ((_n) < 4 ? (0x02828 + ((_n) * 0x100)) : \
64 (0x0C028 + ((_n) * 0x40)))
65#define E1000_TDBAL(_n) ((_n) < 4 ? (0x03800 + ((_n) * 0x100)) : \
66 (0x0E000 + ((_n) * 0x40)))
67#define E1000_TDBAH(_n) ((_n) < 4 ? (0x03804 + ((_n) * 0x100)) : \
68 (0x0E004 + ((_n) * 0x40)))
69#define E1000_TDLEN(_n) ((_n) < 4 ? (0x03808 + ((_n) * 0x100)) : \
70 (0x0E008 + ((_n) * 0x40)))
71#define E1000_TDH(_n) ((_n) < 4 ? (0x03810 + ((_n) * 0x100)) : \
72 (0x0E010 + ((_n) * 0x40)))
73#define E1000_TDT(_n) ((_n) < 4 ? (0x03818 + ((_n) * 0x100)) : \
74 (0x0E018 + ((_n) * 0x40)))
75#define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) : \
76 (0x0E028 + ((_n) * 0x40)))
77#define E1000_DCA_TXCTRL(_n) (0x03814 + (_n << 8))
78#define E1000_DCA_RXCTRL(_n) (0x02814 + (_n << 8))
79#define E1000_RAL(_i) (((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \
80 (0x054E0 + ((_i - 16) * 8)))
81#define E1000_RAH(_i) (((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \
82 (0x054E4 + ((_i - 16) * 8)))
83
84/* Statistics registers */
85#define E1000_VFGPRC 0x00F10
86#define E1000_VFGORC 0x00F18
87#define E1000_VFMPRC 0x00F3C
88#define E1000_VFGPTC 0x00F14
89#define E1000_VFGOTC 0x00F34
90#define E1000_VFGOTLBC 0x00F50
91#define E1000_VFGPTLBC 0x00F44
92#define E1000_VFGORLBC 0x00F48
93#define E1000_VFGPRLBC 0x00F40
94
95/* These act per VF so an array friendly macro is used */
96#define E1000_V2PMAILBOX(_n) (0x00C40 + (4 * (_n)))
97#define E1000_VMBMEM(_n) (0x00800 + (64 * (_n)))
98
99/* Define macros for handling registers */
100#define er32(reg) readl(hw->hw_addr + E1000_##reg)
101#define ew32(reg, val) writel((val), hw->hw_addr + E1000_##reg)
102#define array_er32(reg, offset) \
103 readl(hw->hw_addr + E1000_##reg + (offset << 2))
104#define array_ew32(reg, offset, val) \
105 writel((val), hw->hw_addr + E1000_##reg + (offset << 2))
106#define e1e_flush() er32(STATUS)
107
108#endif
diff --git a/drivers/net/igbvf/vf.c b/drivers/net/igbvf/vf.c
new file mode 100644
index 000000000000..2a4faf9ade69
--- /dev/null
+++ b/drivers/net/igbvf/vf.c
@@ -0,0 +1,398 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28
29#include "vf.h"
30
31static s32 e1000_check_for_link_vf(struct e1000_hw *hw);
32static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed,
33 u16 *duplex);
34static s32 e1000_init_hw_vf(struct e1000_hw *hw);
35static s32 e1000_reset_hw_vf(struct e1000_hw *hw);
36
37static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, u8 *,
38 u32, u32, u32);
39static void e1000_rar_set_vf(struct e1000_hw *, u8 *, u32);
40static s32 e1000_read_mac_addr_vf(struct e1000_hw *);
41static s32 e1000_set_vfta_vf(struct e1000_hw *, u16, bool);
42
43/**
44 * e1000_init_mac_params_vf - Inits MAC params
45 * @hw: pointer to the HW structure
46 **/
47static s32 e1000_init_mac_params_vf(struct e1000_hw *hw)
48{
49 struct e1000_mac_info *mac = &hw->mac;
50
51 /* VF's have no MTA Registers - PF feature only */
52 mac->mta_reg_count = 128;
53 /* VF's have no access to RAR entries */
54 mac->rar_entry_count = 1;
55
56 /* Function pointers */
57 /* reset */
58 mac->ops.reset_hw = e1000_reset_hw_vf;
59 /* hw initialization */
60 mac->ops.init_hw = e1000_init_hw_vf;
61 /* check for link */
62 mac->ops.check_for_link = e1000_check_for_link_vf;
63 /* link info */
64 mac->ops.get_link_up_info = e1000_get_link_up_info_vf;
65 /* multicast address update */
66 mac->ops.update_mc_addr_list = e1000_update_mc_addr_list_vf;
67 /* set mac address */
68 mac->ops.rar_set = e1000_rar_set_vf;
69 /* read mac address */
70 mac->ops.read_mac_addr = e1000_read_mac_addr_vf;
71 /* set vlan filter table array */
72 mac->ops.set_vfta = e1000_set_vfta_vf;
73
74 return E1000_SUCCESS;
75}
76
77/**
78 * e1000_init_function_pointers_vf - Inits function pointers
79 * @hw: pointer to the HW structure
80 **/
81void e1000_init_function_pointers_vf(struct e1000_hw *hw)
82{
83 hw->mac.ops.init_params = e1000_init_mac_params_vf;
84 hw->mbx.ops.init_params = e1000_init_mbx_params_vf;
85}
86
87/**
88 * e1000_get_link_up_info_vf - Gets link info.
89 * @hw: pointer to the HW structure
90 * @speed: pointer to 16 bit value to store link speed.
91 * @duplex: pointer to 16 bit value to store duplex.
92 *
93 * Since we cannot read the PHY and get accurate link info, we must rely upon
94 * the status register's data which is often stale and inaccurate.
95 **/
96static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed,
97 u16 *duplex)
98{
99 s32 status;
100
101 status = er32(STATUS);
102 if (status & E1000_STATUS_SPEED_1000)
103 *speed = SPEED_1000;
104 else if (status & E1000_STATUS_SPEED_100)
105 *speed = SPEED_100;
106 else
107 *speed = SPEED_10;
108
109 if (status & E1000_STATUS_FD)
110 *duplex = FULL_DUPLEX;
111 else
112 *duplex = HALF_DUPLEX;
113
114 return E1000_SUCCESS;
115}
116
117/**
118 * e1000_reset_hw_vf - Resets the HW
119 * @hw: pointer to the HW structure
120 *
121 * VF's provide a function level reset. This is done using bit 26 of ctrl_reg.
122 * This is all the reset we can perform on a VF.
123 **/
124static s32 e1000_reset_hw_vf(struct e1000_hw *hw)
125{
126 struct e1000_mbx_info *mbx = &hw->mbx;
127 u32 timeout = E1000_VF_INIT_TIMEOUT;
128 u32 ret_val = -E1000_ERR_MAC_INIT;
129 u32 msgbuf[3];
130 u8 *addr = (u8 *)(&msgbuf[1]);
131 u32 ctrl;
132
133 /* assert vf queue/interrupt reset */
134 ctrl = er32(CTRL);
135 ew32(CTRL, ctrl | E1000_CTRL_RST);
136
137 /* we cannot initialize while the RSTI / RSTD bits are asserted */
138 while (!mbx->ops.check_for_rst(hw) && timeout) {
139 timeout--;
140 udelay(5);
141 }
142
143 if (timeout) {
144 /* mailbox timeout can now become active */
145 mbx->timeout = E1000_VF_MBX_INIT_TIMEOUT;
146
147 /* notify pf of vf reset completion */
148 msgbuf[0] = E1000_VF_RESET;
149 mbx->ops.write_posted(hw, msgbuf, 1);
150
151 msleep(10);
152
153 /* set our "perm_addr" based on info provided by PF */
154 ret_val = mbx->ops.read_posted(hw, msgbuf, 3);
155 if (!ret_val) {
156 if (msgbuf[0] == (E1000_VF_RESET | E1000_VT_MSGTYPE_ACK))
157 memcpy(hw->mac.perm_addr, addr, 6);
158 else
159 ret_val = -E1000_ERR_MAC_INIT;
160 }
161 }
162
163 return ret_val;
164}
165
166/**
167 * e1000_init_hw_vf - Inits the HW
168 * @hw: pointer to the HW structure
169 *
170 * Not much to do here except clear the PF Reset indication if there is one.
171 **/
172static s32 e1000_init_hw_vf(struct e1000_hw *hw)
173{
174 /* attempt to set and restore our mac address */
175 e1000_rar_set_vf(hw, hw->mac.addr, 0);
176
177 return E1000_SUCCESS;
178}
179
180/**
181 * e1000_hash_mc_addr_vf - Generate a multicast hash value
182 * @hw: pointer to the HW structure
183 * @mc_addr: pointer to a multicast address
184 *
185 * Generates a multicast address hash value which is used to determine
186 * the multicast filter table array address and new table value. See
187 * e1000_mta_set_generic()
188 **/
189static u32 e1000_hash_mc_addr_vf(struct e1000_hw *hw, u8 *mc_addr)
190{
191 u32 hash_value, hash_mask;
192 u8 bit_shift = 0;
193
194 /* Register count multiplied by bits per register */
195 hash_mask = (hw->mac.mta_reg_count * 32) - 1;
196
197 /*
198 * The bit_shift is the number of left-shifts
199 * where 0xFF would still fall within the hash mask.
200 */
201 while (hash_mask >> bit_shift != 0xFF)
202 bit_shift++;
203
204 hash_value = hash_mask & (((mc_addr[4] >> (8 - bit_shift)) |
205 (((u16) mc_addr[5]) << bit_shift)));
206
207 return hash_value;
208}
209
210/**
211 * e1000_update_mc_addr_list_vf - Update Multicast addresses
212 * @hw: pointer to the HW structure
213 * @mc_addr_list: array of multicast addresses to program
214 * @mc_addr_count: number of multicast addresses to program
215 * @rar_used_count: the first RAR register free to program
216 * @rar_count: total number of supported Receive Address Registers
217 *
218 * Updates the Receive Address Registers and Multicast Table Array.
219 * The caller must have a packed mc_addr_list of multicast addresses.
220 * The parameter rar_count will usually be hw->mac.rar_entry_count
221 * unless there are workarounds that change this.
222 **/
223void e1000_update_mc_addr_list_vf(struct e1000_hw *hw,
224 u8 *mc_addr_list, u32 mc_addr_count,
225 u32 rar_used_count, u32 rar_count)
226{
227 struct e1000_mbx_info *mbx = &hw->mbx;
228 u32 msgbuf[E1000_VFMAILBOX_SIZE];
229 u16 *hash_list = (u16 *)&msgbuf[1];
230 u32 hash_value;
231 u32 cnt, i;
232
233 /* Each entry in the list uses 1 16 bit word. We have 30
234 * 16 bit words available in our HW msg buffer (minus 1 for the
235 * msg type). That's 30 hash values if we pack 'em right. If
236 * there are more than 30 MC addresses to add then punt the
237 * extras for now and then add code to handle more than 30 later.
238 * It would be unusual for a server to request that many multi-cast
239 * addresses except for in large enterprise network environments.
240 */
241
242 cnt = (mc_addr_count > 30) ? 30 : mc_addr_count;
243 msgbuf[0] = E1000_VF_SET_MULTICAST;
244 msgbuf[0] |= cnt << E1000_VT_MSGINFO_SHIFT;
245
246 for (i = 0; i < cnt; i++) {
247 hash_value = e1000_hash_mc_addr_vf(hw, mc_addr_list);
248 hash_list[i] = hash_value & 0x0FFFF;
249 mc_addr_list += ETH_ADDR_LEN;
250 }
251
252 mbx->ops.write_posted(hw, msgbuf, E1000_VFMAILBOX_SIZE);
253}
254
255/**
256 * e1000_set_vfta_vf - Set/Unset vlan filter table address
257 * @hw: pointer to the HW structure
258 * @vid: determines the vfta register and bit to set/unset
259 * @set: if true then set bit, else clear bit
260 **/
261static s32 e1000_set_vfta_vf(struct e1000_hw *hw, u16 vid, bool set)
262{
263 struct e1000_mbx_info *mbx = &hw->mbx;
264 u32 msgbuf[2];
265 s32 err;
266
267 msgbuf[0] = E1000_VF_SET_VLAN;
268 msgbuf[1] = vid;
269 /* Setting the 8 bit field MSG INFO to true indicates "add" */
270 if (set)
271 msgbuf[0] |= 1 << E1000_VT_MSGINFO_SHIFT;
272
273 mbx->ops.write_posted(hw, msgbuf, 2);
274
275 err = mbx->ops.read_posted(hw, msgbuf, 2);
276
277 /* if nacked the vlan was rejected */
278 if (!err && (msgbuf[0] == (E1000_VF_SET_VLAN | E1000_VT_MSGTYPE_NACK)))
279 err = -E1000_ERR_MAC_INIT;
280
281 return err;
282}
283
284/** e1000_rlpml_set_vf - Set the maximum receive packet length
285 * @hw: pointer to the HW structure
286 * @max_size: value to assign to max frame size
287 **/
288void e1000_rlpml_set_vf(struct e1000_hw *hw, u16 max_size)
289{
290 struct e1000_mbx_info *mbx = &hw->mbx;
291 u32 msgbuf[2];
292
293 msgbuf[0] = E1000_VF_SET_LPE;
294 msgbuf[1] = max_size;
295
296 mbx->ops.write_posted(hw, msgbuf, 2);
297}
298
299/**
300 * e1000_rar_set_vf - set device MAC address
301 * @hw: pointer to the HW structure
302 * @addr: pointer to the receive address
303 * @index receive address array register
304 **/
305static void e1000_rar_set_vf(struct e1000_hw *hw, u8 * addr, u32 index)
306{
307 struct e1000_mbx_info *mbx = &hw->mbx;
308 u32 msgbuf[3];
309 u8 *msg_addr = (u8 *)(&msgbuf[1]);
310 s32 ret_val;
311
312 memset(msgbuf, 0, 12);
313 msgbuf[0] = E1000_VF_SET_MAC_ADDR;
314 memcpy(msg_addr, addr, 6);
315 ret_val = mbx->ops.write_posted(hw, msgbuf, 3);
316
317 if (!ret_val)
318 ret_val = mbx->ops.read_posted(hw, msgbuf, 3);
319
320 /* if nacked the address was rejected, use "perm_addr" */
321 if (!ret_val &&
322 (msgbuf[0] == (E1000_VF_SET_MAC_ADDR | E1000_VT_MSGTYPE_NACK)))
323 e1000_read_mac_addr_vf(hw);
324}
325
326/**
327 * e1000_read_mac_addr_vf - Read device MAC address
328 * @hw: pointer to the HW structure
329 **/
330static s32 e1000_read_mac_addr_vf(struct e1000_hw *hw)
331{
332 int i;
333
334 for (i = 0; i < ETH_ADDR_LEN; i++)
335 hw->mac.addr[i] = hw->mac.perm_addr[i];
336
337 return E1000_SUCCESS;
338}
339
340/**
341 * e1000_check_for_link_vf - Check for link for a virtual interface
342 * @hw: pointer to the HW structure
343 *
344 * Checks to see if the underlying PF is still talking to the VF and
345 * if it is then it reports the link state to the hardware, otherwise
346 * it reports link down and returns an error.
347 **/
348static s32 e1000_check_for_link_vf(struct e1000_hw *hw)
349{
350 struct e1000_mbx_info *mbx = &hw->mbx;
351 struct e1000_mac_info *mac = &hw->mac;
352 s32 ret_val = E1000_SUCCESS;
353 u32 in_msg = 0;
354
355 /*
356 * We only want to run this if there has been a rst asserted.
357 * in this case that could mean a link change, device reset,
358 * or a virtual function reset
359 */
360
361 /* If we were hit with a reset drop the link */
362 if (!mbx->ops.check_for_rst(hw))
363 mac->get_link_status = true;
364
365 if (!mac->get_link_status)
366 goto out;
367
368 /* if link status is down no point in checking to see if pf is up */
369 if (!(er32(STATUS) & E1000_STATUS_LU))
370 goto out;
371
372 /* if the read failed it could just be a mailbox collision, best wait
373 * until we are called again and don't report an error */
374 if (mbx->ops.read(hw, &in_msg, 1))
375 goto out;
376
377 /* if incoming message isn't clear to send we are waiting on response */
378 if (!(in_msg & E1000_VT_MSGTYPE_CTS)) {
379 /* message is not CTS and is NACK we must have lost CTS status */
380 if (in_msg & E1000_VT_MSGTYPE_NACK)
381 ret_val = -E1000_ERR_MAC_INIT;
382 goto out;
383 }
384
385 /* the pf is talking, if we timed out in the past we reinit */
386 if (!mbx->timeout) {
387 ret_val = -E1000_ERR_MAC_INIT;
388 goto out;
389 }
390
391 /* if we passed all the tests above then the link is up and we no
392 * longer need to check for link */
393 mac->get_link_status = false;
394
395out:
396 return ret_val;
397}
398
diff --git a/drivers/net/igbvf/vf.h b/drivers/net/igbvf/vf.h
new file mode 100644
index 000000000000..1e8ce3741a67
--- /dev/null
+++ b/drivers/net/igbvf/vf.h
@@ -0,0 +1,264 @@
1/*******************************************************************************
2
3 Intel(R) 82576 Virtual Function Linux driver
4 Copyright(c) 2009 Intel Corporation.
5
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,
8 version 2, as 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 for
13 more details.
14
15 You should have received a copy of the GNU General Public License along with
16 this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19 The full GNU General Public License is included in this distribution in
20 the file called "COPYING".
21
22 Contact Information:
23 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25
26*******************************************************************************/
27
28#ifndef _E1000_VF_H_
29#define _E1000_VF_H_
30
31#include <linux/pci.h>
32#include <linux/delay.h>
33#include <linux/interrupt.h>
34#include <linux/if_ether.h>
35
36#include "regs.h"
37#include "defines.h"
38
39struct e1000_hw;
40
41#define E1000_DEV_ID_82576_VF 0x10CA
42#define E1000_REVISION_0 0
43#define E1000_REVISION_1 1
44#define E1000_REVISION_2 2
45#define E1000_REVISION_3 3
46#define E1000_REVISION_4 4
47
48#define E1000_FUNC_0 0
49#define E1000_FUNC_1 1
50
51/*
52 * Receive Address Register Count
53 * Number of high/low register pairs in the RAR. The RAR (Receive Address
54 * Registers) holds the directed and multicast addresses that we monitor.
55 * These entries are also used for MAC-based filtering.
56 */
57#define E1000_RAR_ENTRIES_VF 1
58
59/* Receive Descriptor - Advanced */
60union e1000_adv_rx_desc {
61 struct {
62 u64 pkt_addr; /* Packet buffer address */
63 u64 hdr_addr; /* Header buffer address */
64 } read;
65 struct {
66 struct {
67 union {
68 u32 data;
69 struct {
70 u16 pkt_info; /* RSS/Packet type */
71 u16 hdr_info; /* Split Header,
72 * hdr buffer length */
73 } hs_rss;
74 } lo_dword;
75 union {
76 u32 rss; /* RSS Hash */
77 struct {
78 u16 ip_id; /* IP id */
79 u16 csum; /* Packet Checksum */
80 } csum_ip;
81 } hi_dword;
82 } lower;
83 struct {
84 u32 status_error; /* ext status/error */
85 u16 length; /* Packet length */
86 u16 vlan; /* VLAN tag */
87 } upper;
88 } wb; /* writeback */
89};
90
91#define E1000_RXDADV_HDRBUFLEN_MASK 0x7FE0
92#define E1000_RXDADV_HDRBUFLEN_SHIFT 5
93
94/* Transmit Descriptor - Advanced */
95union e1000_adv_tx_desc {
96 struct {
97 u64 buffer_addr; /* Address of descriptor's data buf */
98 u32 cmd_type_len;
99 u32 olinfo_status;
100 } read;
101 struct {
102 u64 rsvd; /* Reserved */
103 u32 nxtseq_seed;
104 u32 status;
105 } wb;
106};
107
108/* Adv Transmit Descriptor Config Masks */
109#define E1000_ADVTXD_DTYP_CTXT 0x00200000 /* Advanced Context Descriptor */
110#define E1000_ADVTXD_DTYP_DATA 0x00300000 /* Advanced Data Descriptor */
111#define E1000_ADVTXD_DCMD_EOP 0x01000000 /* End of Packet */
112#define E1000_ADVTXD_DCMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */
113#define E1000_ADVTXD_DCMD_RS 0x08000000 /* Report Status */
114#define E1000_ADVTXD_DCMD_DEXT 0x20000000 /* Descriptor extension (1=Adv) */
115#define E1000_ADVTXD_DCMD_VLE 0x40000000 /* VLAN pkt enable */
116#define E1000_ADVTXD_DCMD_TSE 0x80000000 /* TCP Seg enable */
117#define E1000_ADVTXD_PAYLEN_SHIFT 14 /* Adv desc PAYLEN shift */
118
119/* Context descriptors */
120struct e1000_adv_tx_context_desc {
121 u32 vlan_macip_lens;
122 u32 seqnum_seed;
123 u32 type_tucmd_mlhl;
124 u32 mss_l4len_idx;
125};
126
127#define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */
128#define E1000_ADVTXD_TUCMD_IPV4 0x00000400 /* IP Packet Type: 1=IPv4 */
129#define E1000_ADVTXD_TUCMD_L4T_TCP 0x00000800 /* L4 Packet TYPE of TCP */
130#define E1000_ADVTXD_L4LEN_SHIFT 8 /* Adv ctxt L4LEN shift */
131#define E1000_ADVTXD_MSS_SHIFT 16 /* Adv ctxt MSS shift */
132
133enum e1000_mac_type {
134 e1000_undefined = 0,
135 e1000_vfadapt,
136 e1000_num_macs /* List is 1-based, so subtract 1 for true count. */
137};
138
139struct e1000_vf_stats {
140 u64 base_gprc;
141 u64 base_gptc;
142 u64 base_gorc;
143 u64 base_gotc;
144 u64 base_mprc;
145 u64 base_gotlbc;
146 u64 base_gptlbc;
147 u64 base_gorlbc;
148 u64 base_gprlbc;
149
150 u32 last_gprc;
151 u32 last_gptc;
152 u32 last_gorc;
153 u32 last_gotc;
154 u32 last_mprc;
155 u32 last_gotlbc;
156 u32 last_gptlbc;
157 u32 last_gorlbc;
158 u32 last_gprlbc;
159
160 u64 gprc;
161 u64 gptc;
162 u64 gorc;
163 u64 gotc;
164 u64 mprc;
165 u64 gotlbc;
166 u64 gptlbc;
167 u64 gorlbc;
168 u64 gprlbc;
169};
170
171#include "mbx.h"
172
173struct e1000_mac_operations {
174 /* Function pointers for the MAC. */
175 s32 (*init_params)(struct e1000_hw *);
176 s32 (*check_for_link)(struct e1000_hw *);
177 void (*clear_vfta)(struct e1000_hw *);
178 s32 (*get_bus_info)(struct e1000_hw *);
179 s32 (*get_link_up_info)(struct e1000_hw *, u16 *, u16 *);
180 void (*update_mc_addr_list)(struct e1000_hw *, u8 *, u32, u32, u32);
181 s32 (*reset_hw)(struct e1000_hw *);
182 s32 (*init_hw)(struct e1000_hw *);
183 s32 (*setup_link)(struct e1000_hw *);
184 void (*write_vfta)(struct e1000_hw *, u32, u32);
185 void (*mta_set)(struct e1000_hw *, u32);
186 void (*rar_set)(struct e1000_hw *, u8*, u32);
187 s32 (*read_mac_addr)(struct e1000_hw *);
188 s32 (*set_vfta)(struct e1000_hw *, u16, bool);
189};
190
191struct e1000_mac_info {
192 struct e1000_mac_operations ops;
193 u8 addr[6];
194 u8 perm_addr[6];
195
196 enum e1000_mac_type type;
197
198 u16 mta_reg_count;
199 u16 rar_entry_count;
200
201 bool get_link_status;
202};
203
204struct e1000_mbx_operations {
205 s32 (*init_params)(struct e1000_hw *hw);
206 s32 (*read)(struct e1000_hw *, u32 *, u16);
207 s32 (*write)(struct e1000_hw *, u32 *, u16);
208 s32 (*read_posted)(struct e1000_hw *, u32 *, u16);
209 s32 (*write_posted)(struct e1000_hw *, u32 *, u16);
210 s32 (*check_for_msg)(struct e1000_hw *);
211 s32 (*check_for_ack)(struct e1000_hw *);
212 s32 (*check_for_rst)(struct e1000_hw *);
213};
214
215struct e1000_mbx_stats {
216 u32 msgs_tx;
217 u32 msgs_rx;
218
219 u32 acks;
220 u32 reqs;
221 u32 rsts;
222};
223
224struct e1000_mbx_info {
225 struct e1000_mbx_operations ops;
226 struct e1000_mbx_stats stats;
227 u32 timeout;
228 u32 usec_delay;
229 u16 size;
230};
231
232struct e1000_dev_spec_vf {
233 u32 vf_number;
234 u32 v2p_mailbox;
235};
236
237struct e1000_hw {
238 void *back;
239
240 u8 __iomem *hw_addr;
241 u8 __iomem *flash_address;
242 unsigned long io_base;
243
244 struct e1000_mac_info mac;
245 struct e1000_mbx_info mbx;
246
247 union {
248 struct e1000_dev_spec_vf vf;
249 } dev_spec;
250
251 u16 device_id;
252 u16 subsystem_vendor_id;
253 u16 subsystem_device_id;
254 u16 vendor_id;
255
256 u8 revision_id;
257};
258
259/* These functions must be implemented by drivers */
260void e1000_rlpml_set_vf(struct e1000_hw *, u16);
261void e1000_init_function_pointers_vf(struct e1000_hw *hw);
262
263
264#endif /* _E1000_VF_H_ */
diff --git a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c
index cbc63ff13add..c5593f4665a4 100644
--- a/drivers/net/ioc3-eth.c
+++ b/drivers/net/ioc3-eth.c
@@ -1214,6 +1214,19 @@ static void __devinit ioc3_serial_probe(struct pci_dev *pdev, struct ioc3 *ioc3)
1214} 1214}
1215#endif 1215#endif
1216 1216
1217static const struct net_device_ops ioc3_netdev_ops = {
1218 .ndo_open = ioc3_open,
1219 .ndo_stop = ioc3_close,
1220 .ndo_start_xmit = ioc3_start_xmit,
1221 .ndo_tx_timeout = ioc3_timeout,
1222 .ndo_get_stats = ioc3_get_stats,
1223 .ndo_set_multicast_list = ioc3_set_multicast_list,
1224 .ndo_do_ioctl = ioc3_ioctl,
1225 .ndo_validate_addr = eth_validate_addr,
1226 .ndo_set_mac_address = ioc3_set_mac_address,
1227 .ndo_change_mtu = eth_change_mtu,
1228};
1229
1217static int __devinit ioc3_probe(struct pci_dev *pdev, 1230static int __devinit ioc3_probe(struct pci_dev *pdev,
1218 const struct pci_device_id *ent) 1231 const struct pci_device_id *ent)
1219{ 1232{
@@ -1310,15 +1323,8 @@ static int __devinit ioc3_probe(struct pci_dev *pdev,
1310 ioc3_get_eaddr(ip); 1323 ioc3_get_eaddr(ip);
1311 1324
1312 /* The IOC3-specific entries in the device structure. */ 1325 /* The IOC3-specific entries in the device structure. */
1313 dev->open = ioc3_open;
1314 dev->hard_start_xmit = ioc3_start_xmit;
1315 dev->tx_timeout = ioc3_timeout;
1316 dev->watchdog_timeo = 5 * HZ; 1326 dev->watchdog_timeo = 5 * HZ;
1317 dev->stop = ioc3_close; 1327 dev->netdev_ops = &ioc3_netdev_ops;
1318 dev->get_stats = ioc3_get_stats;
1319 dev->do_ioctl = ioc3_ioctl;
1320 dev->set_multicast_list = ioc3_set_multicast_list;
1321 dev->set_mac_address = ioc3_set_mac_address;
1322 dev->ethtool_ops = &ioc3_ethtool_ops; 1328 dev->ethtool_ops = &ioc3_ethtool_ops;
1323 dev->features = NETIF_F_IP_CSUM; 1329 dev->features = NETIF_F_IP_CSUM;
1324 1330
diff --git a/drivers/net/isa-skeleton.c b/drivers/net/isa-skeleton.c
index 3126678bdd3c..73585fd8f29f 100644
--- a/drivers/net/isa-skeleton.c
+++ b/drivers/net/isa-skeleton.c
@@ -181,6 +181,18 @@ out:
181} 181}
182#endif 182#endif
183 183
184static const struct net_device_ops netcard_netdev_ops = {
185 .ndo_open = net_open,
186 .ndo_stop = net_close,
187 .ndo_start_xmit = net_send_packet,
188 .ndo_get_stats = net_get_stats,
189 .ndo_set_multicast_list = set_multicast_list,
190 .ndo_tx_timeout = net_tx_timeout,
191 .ndo_validate_addr = eth_validate_addr,
192 .ndo_set_mac_address = eth_mac_addr,
193 .ndo_change_mtu = eth_change_mtu,
194};
195
184/* 196/*
185 * This is the real probe routine. Linux has a history of friendly device 197 * This is the real probe routine. Linux has a history of friendly device
186 * probes on the ISA bus. A good device probes avoids doing writes, and 198 * probes on the ISA bus. A good device probes avoids doing writes, and
@@ -303,13 +315,7 @@ static int __init netcard_probe1(struct net_device *dev, int ioaddr)
303 np = netdev_priv(dev); 315 np = netdev_priv(dev);
304 spin_lock_init(&np->lock); 316 spin_lock_init(&np->lock);
305 317
306 dev->open = net_open; 318 dev->netdev_ops = &netcard_netdev_ops;
307 dev->stop = net_close;
308 dev->hard_start_xmit = net_send_packet;
309 dev->get_stats = net_get_stats;
310 dev->set_multicast_list = &set_multicast_list;
311
312 dev->tx_timeout = &net_tx_timeout;
313 dev->watchdog_timeo = MY_TX_TIMEOUT; 319 dev->watchdog_timeo = MY_TX_TIMEOUT;
314 320
315 err = register_netdev(dev); 321 err = register_netdev(dev);
diff --git a/drivers/net/ixgbe/ixgbe_82598.c b/drivers/net/ixgbe/ixgbe_82598.c
index de4db0dc7879..4791238c3f6e 100644
--- a/drivers/net/ixgbe/ixgbe_82598.c
+++ b/drivers/net/ixgbe/ixgbe_82598.c
@@ -885,61 +885,6 @@ static s32 ixgbe_clear_vfta_82598(struct ixgbe_hw *hw)
885} 885}
886 886
887/** 887/**
888 * ixgbe_blink_led_start_82598 - Blink LED based on index.
889 * @hw: pointer to hardware structure
890 * @index: led number to blink
891 **/
892static s32 ixgbe_blink_led_start_82598(struct ixgbe_hw *hw, u32 index)
893{
894 ixgbe_link_speed speed = 0;
895 bool link_up = 0;
896 u32 autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);
897 u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
898
899 /*
900 * Link must be up to auto-blink the LEDs on the 82598EB MAC;
901 * force it if link is down.
902 */
903 hw->mac.ops.check_link(hw, &speed, &link_up, false);
904
905 if (!link_up) {
906 autoc_reg |= IXGBE_AUTOC_FLU;
907 IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);
908 msleep(10);
909 }
910
911 led_reg &= ~IXGBE_LED_MODE_MASK(index);
912 led_reg |= IXGBE_LED_BLINK(index);
913 IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
914 IXGBE_WRITE_FLUSH(hw);
915
916 return 0;
917}
918
919/**
920 * ixgbe_blink_led_stop_82598 - Stop blinking LED based on index.
921 * @hw: pointer to hardware structure
922 * @index: led number to stop blinking
923 **/
924static s32 ixgbe_blink_led_stop_82598(struct ixgbe_hw *hw, u32 index)
925{
926 u32 autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);
927 u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
928
929 autoc_reg &= ~IXGBE_AUTOC_FLU;
930 autoc_reg |= IXGBE_AUTOC_AN_RESTART;
931 IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);
932
933 led_reg &= ~IXGBE_LED_MODE_MASK(index);
934 led_reg &= ~IXGBE_LED_BLINK(index);
935 led_reg |= IXGBE_LED_LINK_ACTIVE << IXGBE_LED_MODE_SHIFT(index);
936 IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
937 IXGBE_WRITE_FLUSH(hw);
938
939 return 0;
940}
941
942/**
943 * ixgbe_read_analog_reg8_82598 - Reads 8 bit Atlas analog register 888 * ixgbe_read_analog_reg8_82598 - Reads 8 bit Atlas analog register
944 * @hw: pointer to hardware structure 889 * @hw: pointer to hardware structure
945 * @reg: analog register to read 890 * @reg: analog register to read
@@ -1128,8 +1073,8 @@ static struct ixgbe_mac_operations mac_ops_82598 = {
1128 .get_link_capabilities = &ixgbe_get_link_capabilities_82598, 1073 .get_link_capabilities = &ixgbe_get_link_capabilities_82598,
1129 .led_on = &ixgbe_led_on_generic, 1074 .led_on = &ixgbe_led_on_generic,
1130 .led_off = &ixgbe_led_off_generic, 1075 .led_off = &ixgbe_led_off_generic,
1131 .blink_led_start = &ixgbe_blink_led_start_82598, 1076 .blink_led_start = &ixgbe_blink_led_start_generic,
1132 .blink_led_stop = &ixgbe_blink_led_stop_82598, 1077 .blink_led_stop = &ixgbe_blink_led_stop_generic,
1133 .set_rar = &ixgbe_set_rar_generic, 1078 .set_rar = &ixgbe_set_rar_generic,
1134 .clear_rar = &ixgbe_clear_rar_generic, 1079 .clear_rar = &ixgbe_clear_rar_generic,
1135 .set_vmdq = &ixgbe_set_vmdq_82598, 1080 .set_vmdq = &ixgbe_set_vmdq_82598,
diff --git a/drivers/net/ixgbe/ixgbe_82599.c b/drivers/net/ixgbe/ixgbe_82599.c
index beae7e012609..29771fbaa42d 100644
--- a/drivers/net/ixgbe/ixgbe_82599.c
+++ b/drivers/net/ixgbe/ixgbe_82599.c
@@ -68,8 +68,6 @@ s32 ixgbe_clear_vmdq_82599(struct ixgbe_hw *hw, u32 rar, u32 vmdq);
68s32 ixgbe_set_vfta_82599(struct ixgbe_hw *hw, u32 vlan, 68s32 ixgbe_set_vfta_82599(struct ixgbe_hw *hw, u32 vlan,
69 u32 vind, bool vlan_on); 69 u32 vind, bool vlan_on);
70s32 ixgbe_clear_vfta_82599(struct ixgbe_hw *hw); 70s32 ixgbe_clear_vfta_82599(struct ixgbe_hw *hw);
71s32 ixgbe_blink_led_stop_82599(struct ixgbe_hw *hw, u32 index);
72s32 ixgbe_blink_led_start_82599(struct ixgbe_hw *hw, u32 index);
73s32 ixgbe_init_uta_tables_82599(struct ixgbe_hw *hw); 71s32 ixgbe_init_uta_tables_82599(struct ixgbe_hw *hw);
74s32 ixgbe_read_analog_reg8_82599(struct ixgbe_hw *hw, u32 reg, u8 *val); 72s32 ixgbe_read_analog_reg8_82599(struct ixgbe_hw *hw, u32 reg, u8 *val);
75s32 ixgbe_write_analog_reg8_82599(struct ixgbe_hw *hw, u32 reg, u8 val); 73s32 ixgbe_write_analog_reg8_82599(struct ixgbe_hw *hw, u32 reg, u8 val);
@@ -991,40 +989,6 @@ s32 ixgbe_clear_vfta_82599(struct ixgbe_hw *hw)
991} 989}
992 990
993/** 991/**
994 * ixgbe_blink_led_start_82599 - Blink LED based on index.
995 * @hw: pointer to hardware structure
996 * @index: led number to blink
997 **/
998s32 ixgbe_blink_led_start_82599(struct ixgbe_hw *hw, u32 index)
999{
1000 u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
1001
1002 led_reg &= ~IXGBE_LED_MODE_MASK(index);
1003 led_reg |= IXGBE_LED_BLINK(index);
1004 IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
1005 IXGBE_WRITE_FLUSH(hw);
1006
1007 return 0;
1008}
1009
1010/**
1011 * ixgbe_blink_led_stop_82599 - Stop blinking LED based on index.
1012 * @hw: pointer to hardware structure
1013 * @index: led number to stop blinking
1014 **/
1015s32 ixgbe_blink_led_stop_82599(struct ixgbe_hw *hw, u32 index)
1016{
1017 u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
1018
1019 led_reg &= ~IXGBE_LED_MODE_MASK(index);
1020 led_reg &= ~IXGBE_LED_BLINK(index);
1021 IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
1022 IXGBE_WRITE_FLUSH(hw);
1023
1024 return 0;
1025}
1026
1027/**
1028 * ixgbe_init_uta_tables_82599 - Initialize the Unicast Table Array 992 * ixgbe_init_uta_tables_82599 - Initialize the Unicast Table Array
1029 * @hw: pointer to hardware structure 993 * @hw: pointer to hardware structure
1030 **/ 994 **/
@@ -1243,8 +1207,8 @@ static struct ixgbe_mac_operations mac_ops_82599 = {
1243 .get_link_capabilities = &ixgbe_get_link_capabilities_82599, 1207 .get_link_capabilities = &ixgbe_get_link_capabilities_82599,
1244 .led_on = &ixgbe_led_on_generic, 1208 .led_on = &ixgbe_led_on_generic,
1245 .led_off = &ixgbe_led_off_generic, 1209 .led_off = &ixgbe_led_off_generic,
1246 .blink_led_start = &ixgbe_blink_led_start_82599, 1210 .blink_led_start = &ixgbe_blink_led_start_generic,
1247 .blink_led_stop = &ixgbe_blink_led_stop_82599, 1211 .blink_led_stop = &ixgbe_blink_led_stop_generic,
1248 .set_rar = &ixgbe_set_rar_generic, 1212 .set_rar = &ixgbe_set_rar_generic,
1249 .clear_rar = &ixgbe_clear_rar_generic, 1213 .clear_rar = &ixgbe_clear_rar_generic,
1250 .set_vmdq = &ixgbe_set_vmdq_82599, 1214 .set_vmdq = &ixgbe_set_vmdq_82599,
diff --git a/drivers/net/ixgbe/ixgbe_common.c b/drivers/net/ixgbe/ixgbe_common.c
index 63ab6671d08e..5567519676d5 100644
--- a/drivers/net/ixgbe/ixgbe_common.c
+++ b/drivers/net/ixgbe/ixgbe_common.c
@@ -2071,3 +2071,58 @@ s32 ixgbe_enable_rx_dma_generic(struct ixgbe_hw *hw, u32 regval)
2071 2071
2072 return 0; 2072 return 0;
2073} 2073}
2074
2075/**
2076 * ixgbe_blink_led_start_generic - Blink LED based on index.
2077 * @hw: pointer to hardware structure
2078 * @index: led number to blink
2079 **/
2080s32 ixgbe_blink_led_start_generic(struct ixgbe_hw *hw, u32 index)
2081{
2082 ixgbe_link_speed speed = 0;
2083 bool link_up = 0;
2084 u32 autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);
2085 u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
2086
2087 /*
2088 * Link must be up to auto-blink the LEDs;
2089 * Force it if link is down.
2090 */
2091 hw->mac.ops.check_link(hw, &speed, &link_up, false);
2092
2093 if (!link_up) {
2094 autoc_reg |= IXGBE_AUTOC_FLU;
2095 IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);
2096 msleep(10);
2097 }
2098
2099 led_reg &= ~IXGBE_LED_MODE_MASK(index);
2100 led_reg |= IXGBE_LED_BLINK(index);
2101 IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
2102 IXGBE_WRITE_FLUSH(hw);
2103
2104 return 0;
2105}
2106
2107/**
2108 * ixgbe_blink_led_stop_generic - Stop blinking LED based on index.
2109 * @hw: pointer to hardware structure
2110 * @index: led number to stop blinking
2111 **/
2112s32 ixgbe_blink_led_stop_generic(struct ixgbe_hw *hw, u32 index)
2113{
2114 u32 autoc_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC);
2115 u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
2116
2117 autoc_reg &= ~IXGBE_AUTOC_FLU;
2118 autoc_reg |= IXGBE_AUTOC_AN_RESTART;
2119 IXGBE_WRITE_REG(hw, IXGBE_AUTOC, autoc_reg);
2120
2121 led_reg &= ~IXGBE_LED_MODE_MASK(index);
2122 led_reg &= ~IXGBE_LED_BLINK(index);
2123 led_reg |= IXGBE_LED_LINK_ACTIVE << IXGBE_LED_MODE_SHIFT(index);
2124 IXGBE_WRITE_REG(hw, IXGBE_LEDCTL, led_reg);
2125 IXGBE_WRITE_FLUSH(hw);
2126
2127 return 0;
2128}
diff --git a/drivers/net/ixgbe/ixgbe_common.h b/drivers/net/ixgbe/ixgbe_common.h
index 24f73e719c3f..dd260890ad0a 100644
--- a/drivers/net/ixgbe/ixgbe_common.h
+++ b/drivers/net/ixgbe/ixgbe_common.h
@@ -76,6 +76,9 @@ s32 ixgbe_disable_pcie_master(struct ixgbe_hw *hw);
76s32 ixgbe_read_analog_reg8_generic(struct ixgbe_hw *hw, u32 reg, u8 *val); 76s32 ixgbe_read_analog_reg8_generic(struct ixgbe_hw *hw, u32 reg, u8 *val);
77s32 ixgbe_write_analog_reg8_generic(struct ixgbe_hw *hw, u32 reg, u8 val); 77s32 ixgbe_write_analog_reg8_generic(struct ixgbe_hw *hw, u32 reg, u8 val);
78 78
79s32 ixgbe_blink_led_start_generic(struct ixgbe_hw *hw, u32 index);
80s32 ixgbe_blink_led_stop_generic(struct ixgbe_hw *hw, u32 index);
81
79#define IXGBE_WRITE_REG(a, reg, value) writel((value), ((a)->hw_addr + (reg))) 82#define IXGBE_WRITE_REG(a, reg, value) writel((value), ((a)->hw_addr + (reg)))
80 83
81#ifndef writeq 84#ifndef writeq
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.c b/drivers/net/ixgbe/ixgbe_dcb_82599.c
index 470b676c1dae..f4417fc3b0fd 100644
--- a/drivers/net/ixgbe/ixgbe_dcb_82599.c
+++ b/drivers/net/ixgbe/ixgbe_dcb_82599.c
@@ -290,7 +290,7 @@ s32 ixgbe_dcb_config_tx_data_arbiter_82599(struct ixgbe_hw *hw,
290s32 ixgbe_dcb_config_pfc_82599(struct ixgbe_hw *hw, 290s32 ixgbe_dcb_config_pfc_82599(struct ixgbe_hw *hw,
291 struct ixgbe_dcb_config *dcb_config) 291 struct ixgbe_dcb_config *dcb_config)
292{ 292{
293 u32 i, reg; 293 u32 i, reg, rx_pba_size;
294 294
295 /* If PFC is disabled globally then fall back to LFC. */ 295 /* If PFC is disabled globally then fall back to LFC. */
296 if (!dcb_config->pfc_mode_enable) { 296 if (!dcb_config->pfc_mode_enable) {
@@ -301,17 +301,23 @@ s32 ixgbe_dcb_config_pfc_82599(struct ixgbe_hw *hw,
301 301
302 /* Configure PFC Tx thresholds per TC */ 302 /* Configure PFC Tx thresholds per TC */
303 for (i = 0; i < MAX_TRAFFIC_CLASS; i++) { 303 for (i = 0; i < MAX_TRAFFIC_CLASS; i++) {
304 /* Config and remember Tx */ 304 if (dcb_config->rx_pba_cfg == pba_equal)
305 rx_pba_size = IXGBE_RXPBSIZE_64KB;
306 else
307 rx_pba_size = (i < 4) ? IXGBE_RXPBSIZE_80KB
308 : IXGBE_RXPBSIZE_48KB;
309
310 reg = ((rx_pba_size >> 5) & 0xFFE0);
305 if (dcb_config->tc_config[i].dcb_pfc == pfc_enabled_full || 311 if (dcb_config->tc_config[i].dcb_pfc == pfc_enabled_full ||
306 dcb_config->tc_config[i].dcb_pfc == pfc_enabled_tx) { 312 dcb_config->tc_config[i].dcb_pfc == pfc_enabled_tx)
307 reg = hw->fc.high_water | IXGBE_FCRTH_FCEN; 313 reg |= IXGBE_FCRTL_XONE;
308 IXGBE_WRITE_REG(hw, IXGBE_FCRTH_82599(i), reg); 314 IXGBE_WRITE_REG(hw, IXGBE_FCRTL_82599(i), reg);
309 reg = hw->fc.low_water | IXGBE_FCRTL_XONE; 315
310 IXGBE_WRITE_REG(hw, IXGBE_FCRTL_82599(i), reg); 316 reg = ((rx_pba_size >> 2) & 0xFFE0);
311 } else { 317 if (dcb_config->tc_config[i].dcb_pfc == pfc_enabled_full ||
312 IXGBE_WRITE_REG(hw, IXGBE_FCRTH_82599(i), 0); 318 dcb_config->tc_config[i].dcb_pfc == pfc_enabled_tx)
313 IXGBE_WRITE_REG(hw, IXGBE_FCRTL_82599(i), 0); 319 reg |= IXGBE_FCRTH_FCEN;
314 } 320 IXGBE_WRITE_REG(hw, IXGBE_FCRTH_82599(i), reg);
315 } 321 }
316 322
317 /* Configure pause time (2 TCs per register) */ 323 /* Configure pause time (2 TCs per register) */
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/ixgbe/ixgbe_ethtool.c
index aafc120f164e..f0a20facc650 100644
--- a/drivers/net/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ixgbe/ixgbe_ethtool.c
@@ -943,6 +943,24 @@ static void ixgbe_get_strings(struct net_device *netdev, u32 stringset,
943} 943}
944 944
945 945
946static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter,
947 struct ethtool_wolinfo *wol)
948{
949 struct ixgbe_hw *hw = &adapter->hw;
950 int retval = 1;
951
952 switch(hw->device_id) {
953 case IXGBE_DEV_ID_82599_KX4:
954 retval = 0;
955 break;
956 default:
957 wol->supported = 0;
958 retval = 0;
959 }
960
961 return retval;
962}
963
946static void ixgbe_get_wol(struct net_device *netdev, 964static void ixgbe_get_wol(struct net_device *netdev,
947 struct ethtool_wolinfo *wol) 965 struct ethtool_wolinfo *wol)
948{ 966{
@@ -952,7 +970,8 @@ static void ixgbe_get_wol(struct net_device *netdev,
952 WAKE_BCAST | WAKE_MAGIC; 970 WAKE_BCAST | WAKE_MAGIC;
953 wol->wolopts = 0; 971 wol->wolopts = 0;
954 972
955 if (!device_can_wakeup(&adapter->pdev->dev)) 973 if (ixgbe_wol_exclusion(adapter, wol) ||
974 !device_can_wakeup(&adapter->pdev->dev))
956 return; 975 return;
957 976
958 if (adapter->wol & IXGBE_WUFC_EX) 977 if (adapter->wol & IXGBE_WUFC_EX)
@@ -974,6 +993,9 @@ static int ixgbe_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
974 if (wol->wolopts & (WAKE_PHY | WAKE_ARP | WAKE_MAGICSECURE)) 993 if (wol->wolopts & (WAKE_PHY | WAKE_ARP | WAKE_MAGICSECURE))
975 return -EOPNOTSUPP; 994 return -EOPNOTSUPP;
976 995
996 if (ixgbe_wol_exclusion(adapter, wol))
997 return wol->wolopts ? -EOPNOTSUPP : 0;
998
977 adapter->wol = 0; 999 adapter->wol = 0;
978 1000
979 if (wol->wolopts & WAKE_UCAST) 1001 if (wol->wolopts & WAKE_UCAST)
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 9ef128ae6458..01884256f4c9 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -2723,17 +2723,21 @@ static inline bool ixgbe_set_rss_queues(struct ixgbe_adapter *adapter)
2723 **/ 2723 **/
2724static void ixgbe_set_num_queues(struct ixgbe_adapter *adapter) 2724static void ixgbe_set_num_queues(struct ixgbe_adapter *adapter)
2725{ 2725{
2726 /* Start with base case */
2727 adapter->num_rx_queues = 1;
2728 adapter->num_tx_queues = 1;
2729
2730#ifdef CONFIG_IXGBE_DCB 2726#ifdef CONFIG_IXGBE_DCB
2731 if (ixgbe_set_dcb_queues(adapter)) 2727 if (ixgbe_set_dcb_queues(adapter))
2732 return; 2728 goto done;
2733 2729
2734#endif 2730#endif
2735 if (ixgbe_set_rss_queues(adapter)) 2731 if (ixgbe_set_rss_queues(adapter))
2736 return; 2732 goto done;
2733
2734 /* fallback to base case */
2735 adapter->num_rx_queues = 1;
2736 adapter->num_tx_queues = 1;
2737
2738done:
2739 /* Notify the stack of the (possibly) reduced Tx Queue count. */
2740 adapter->netdev->real_num_tx_queues = adapter->num_tx_queues;
2737} 2741}
2738 2742
2739static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter, 2743static void ixgbe_acquire_msix_vectors(struct ixgbe_adapter *adapter,
@@ -2837,11 +2841,55 @@ static inline bool ixgbe_cache_ring_dcb(struct ixgbe_adapter *adapter)
2837 } 2841 }
2838 ret = true; 2842 ret = true;
2839 } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) { 2843 } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) {
2840 for (i = 0; i < dcb_i; i++) { 2844 if (dcb_i == 8) {
2841 adapter->rx_ring[i].reg_idx = i << 4; 2845 /*
2842 adapter->tx_ring[i].reg_idx = i << 4; 2846 * Tx TC0 starts at: descriptor queue 0
2847 * Tx TC1 starts at: descriptor queue 32
2848 * Tx TC2 starts at: descriptor queue 64
2849 * Tx TC3 starts at: descriptor queue 80
2850 * Tx TC4 starts at: descriptor queue 96
2851 * Tx TC5 starts at: descriptor queue 104
2852 * Tx TC6 starts at: descriptor queue 112
2853 * Tx TC7 starts at: descriptor queue 120
2854 *
2855 * Rx TC0-TC7 are offset by 16 queues each
2856 */
2857 for (i = 0; i < 3; i++) {
2858 adapter->tx_ring[i].reg_idx = i << 5;
2859 adapter->rx_ring[i].reg_idx = i << 4;
2860 }
2861 for ( ; i < 5; i++) {
2862 adapter->tx_ring[i].reg_idx =
2863 ((i + 2) << 4);
2864 adapter->rx_ring[i].reg_idx = i << 4;
2865 }
2866 for ( ; i < dcb_i; i++) {
2867 adapter->tx_ring[i].reg_idx =
2868 ((i + 8) << 3);
2869 adapter->rx_ring[i].reg_idx = i << 4;
2870 }
2871
2872 ret = true;
2873 } else if (dcb_i == 4) {
2874 /*
2875 * Tx TC0 starts at: descriptor queue 0
2876 * Tx TC1 starts at: descriptor queue 64
2877 * Tx TC2 starts at: descriptor queue 96
2878 * Tx TC3 starts at: descriptor queue 112
2879 *
2880 * Rx TC0-TC3 are offset by 32 queues each
2881 */
2882 adapter->tx_ring[0].reg_idx = 0;
2883 adapter->tx_ring[1].reg_idx = 64;
2884 adapter->tx_ring[2].reg_idx = 96;
2885 adapter->tx_ring[3].reg_idx = 112;
2886 for (i = 0 ; i < dcb_i; i++)
2887 adapter->rx_ring[i].reg_idx = i << 5;
2888
2889 ret = true;
2890 } else {
2891 ret = false;
2843 } 2892 }
2844 ret = true;
2845 } else { 2893 } else {
2846 ret = false; 2894 ret = false;
2847 } 2895 }
@@ -2992,9 +3040,6 @@ try_msi:
2992 } 3040 }
2993 3041
2994out: 3042out:
2995 /* Notify the stack of the (possibly) reduced Tx Queue count. */
2996 adapter->netdev->real_num_tx_queues = adapter->num_tx_queues;
2997
2998 return err; 3043 return err;
2999} 3044}
3000 3045
@@ -3611,9 +3656,9 @@ static int ixgbe_resume(struct pci_dev *pdev)
3611 3656
3612 return 0; 3657 return 0;
3613} 3658}
3614
3615#endif /* CONFIG_PM */ 3659#endif /* CONFIG_PM */
3616static int ixgbe_suspend(struct pci_dev *pdev, pm_message_t state) 3660
3661static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake)
3617{ 3662{
3618 struct net_device *netdev = pci_get_drvdata(pdev); 3663 struct net_device *netdev = pci_get_drvdata(pdev);
3619 struct ixgbe_adapter *adapter = netdev_priv(netdev); 3664 struct ixgbe_adapter *adapter = netdev_priv(netdev);
@@ -3672,18 +3717,46 @@ static int ixgbe_suspend(struct pci_dev *pdev, pm_message_t state)
3672 pci_enable_wake(pdev, PCI_D3cold, 0); 3717 pci_enable_wake(pdev, PCI_D3cold, 0);
3673 } 3718 }
3674 3719
3720 *enable_wake = !!wufc;
3721
3675 ixgbe_release_hw_control(adapter); 3722 ixgbe_release_hw_control(adapter);
3676 3723
3677 pci_disable_device(pdev); 3724 pci_disable_device(pdev);
3678 3725
3679 pci_set_power_state(pdev, pci_choose_state(pdev, state)); 3726 return 0;
3727}
3728
3729#ifdef CONFIG_PM
3730static int ixgbe_suspend(struct pci_dev *pdev, pm_message_t state)
3731{
3732 int retval;
3733 bool wake;
3734
3735 retval = __ixgbe_shutdown(pdev, &wake);
3736 if (retval)
3737 return retval;
3738
3739 if (wake) {
3740 pci_prepare_to_sleep(pdev);
3741 } else {
3742 pci_wake_from_d3(pdev, false);
3743 pci_set_power_state(pdev, PCI_D3hot);
3744 }
3680 3745
3681 return 0; 3746 return 0;
3682} 3747}
3748#endif /* CONFIG_PM */
3683 3749
3684static void ixgbe_shutdown(struct pci_dev *pdev) 3750static void ixgbe_shutdown(struct pci_dev *pdev)
3685{ 3751{
3686 ixgbe_suspend(pdev, PMSG_SUSPEND); 3752 bool wake;
3753
3754 __ixgbe_shutdown(pdev, &wake);
3755
3756 if (system_state == SYSTEM_POWER_OFF) {
3757 pci_wake_from_d3(pdev, wake);
3758 pci_set_power_state(pdev, PCI_D3hot);
3759 }
3687} 3760}
3688 3761
3689/** 3762/**
@@ -3917,7 +3990,7 @@ static void ixgbe_sfp_config_module_task(struct work_struct *work)
3917 } 3990 }
3918 hw->mac.ops.setup_sfp(hw); 3991 hw->mac.ops.setup_sfp(hw);
3919 3992
3920 if (!adapter->flags & IXGBE_FLAG_IN_SFP_LINK_TASK) 3993 if (!(adapter->flags & IXGBE_FLAG_IN_SFP_LINK_TASK))
3921 /* This will also work for DA Twinax connections */ 3994 /* This will also work for DA Twinax connections */
3922 schedule_work(&adapter->multispeed_fiber_task); 3995 schedule_work(&adapter->multispeed_fiber_task);
3923 adapter->flags &= ~IXGBE_FLAG_IN_SFP_MOD_TASK; 3996 adapter->flags &= ~IXGBE_FLAG_IN_SFP_MOD_TASK;
@@ -4342,7 +4415,7 @@ static int ixgbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
4342 int count = 0; 4415 int count = 0;
4343 unsigned int f; 4416 unsigned int f;
4344 4417
4345 r_idx = (adapter->num_tx_queues - 1) & skb->queue_mapping; 4418 r_idx = skb->queue_mapping;
4346 tx_ring = &adapter->tx_ring[r_idx]; 4419 tx_ring = &adapter->tx_ring[r_idx];
4347 4420
4348 if (adapter->vlgrp && vlan_tx_tag_present(skb)) { 4421 if (adapter->vlgrp && vlan_tx_tag_present(skb)) {
diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index ece35040288c..621a7c0c46ba 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c
@@ -2591,13 +2591,13 @@ static int
2591jme_pci_dma64(struct pci_dev *pdev) 2591jme_pci_dma64(struct pci_dev *pdev)
2592{ 2592{
2593 if (pdev->device == PCI_DEVICE_ID_JMICRON_JMC250 && 2593 if (pdev->device == PCI_DEVICE_ID_JMICRON_JMC250 &&
2594 !pci_set_dma_mask(pdev, DMA_64BIT_MASK)) 2594 !pci_set_dma_mask(pdev, DMA_BIT_MASK(64)))
2595 if (!pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) 2595 if (!pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))
2596 return 1; 2596 return 1;
2597 2597
2598 if (pdev->device == PCI_DEVICE_ID_JMICRON_JMC250 && 2598 if (pdev->device == PCI_DEVICE_ID_JMICRON_JMC250 &&
2599 !pci_set_dma_mask(pdev, DMA_40BIT_MASK)) 2599 !pci_set_dma_mask(pdev, DMA_BIT_MASK(40)))
2600 if (!pci_set_consistent_dma_mask(pdev, DMA_40BIT_MASK)) 2600 if (!pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(40)))
2601 return 1; 2601 return 1;
2602 2602
2603 if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) 2603 if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))
diff --git a/drivers/net/mac89x0.c b/drivers/net/mac89x0.c
index 380a1a54d530..384e072de2e7 100644
--- a/drivers/net/mac89x0.c
+++ b/drivers/net/mac89x0.c
@@ -168,6 +168,17 @@ writereg(struct net_device *dev, int portno, int value)
168 nubus_writew(swab16(value), dev->mem_start + portno); 168 nubus_writew(swab16(value), dev->mem_start + portno);
169} 169}
170 170
171static const struct net_device_ops mac89x0_netdev_ops = {
172 .ndo_open = net_open,
173 .ndo_stop = net_close,
174 .ndo_start_xmit = net_send_packet,
175 .ndo_get_stats = net_get_stats,
176 .ndo_set_multicast_list = set_multicast_list,
177 .ndo_set_mac_address = set_mac_address,
178 .ndo_validate_addr = eth_validate_addr,
179 .ndo_change_mtu = eth_change_mtu,
180};
181
171/* Probe for the CS8900 card in slot E. We won't bother looking 182/* Probe for the CS8900 card in slot E. We won't bother looking
172 anywhere else until we have a really good reason to do so. */ 183 anywhere else until we have a really good reason to do so. */
173struct net_device * __init mac89x0_probe(int unit) 184struct net_device * __init mac89x0_probe(int unit)
@@ -280,12 +291,7 @@ struct net_device * __init mac89x0_probe(int unit)
280 291
281 printk(" IRQ %d ADDR %pM\n", dev->irq, dev->dev_addr); 292 printk(" IRQ %d ADDR %pM\n", dev->irq, dev->dev_addr);
282 293
283 dev->open = net_open; 294 dev->netdev_ops = &mac89x0_netdev_ops;
284 dev->stop = net_close;
285 dev->hard_start_xmit = net_send_packet;
286 dev->get_stats = net_get_stats;
287 dev->set_multicast_list = &set_multicast_list;
288 dev->set_mac_address = &set_mac_address;
289 295
290 err = register_netdev(dev); 296 err = register_netdev(dev);
291 if (err) 297 if (err)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index f50501013b1c..e82aee41d77e 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -316,10 +316,11 @@ static void macb_tx(struct macb *bp)
316 dev_dbg(&bp->pdev->dev, "macb_tx status = %02lx\n", 316 dev_dbg(&bp->pdev->dev, "macb_tx status = %02lx\n",
317 (unsigned long)status); 317 (unsigned long)status);
318 318
319 if (status & MACB_BIT(UND)) { 319 if (status & (MACB_BIT(UND) | MACB_BIT(TSR_RLE))) {
320 int i; 320 int i;
321 printk(KERN_ERR "%s: TX underrun, resetting buffers\n", 321 printk(KERN_ERR "%s: TX %s, resetting buffers\n",
322 bp->dev->name); 322 bp->dev->name, status & MACB_BIT(UND) ?
323 "underrun" : "retry limit exceeded");
323 324
324 /* Transfer ongoing, disable transmitter, to avoid confusion */ 325 /* Transfer ongoing, disable transmitter, to avoid confusion */
325 if (status & MACB_BIT(TGO)) 326 if (status & MACB_BIT(TGO))
@@ -520,27 +521,10 @@ static int macb_poll(struct napi_struct *napi, int budget)
520 macb_writel(bp, RSR, status); 521 macb_writel(bp, RSR, status);
521 522
522 work_done = 0; 523 work_done = 0;
523 if (!status) {
524 /*
525 * This may happen if an interrupt was pending before
526 * this function was called last time, and no packets
527 * have been received since.
528 */
529 napi_complete(napi);
530 goto out;
531 }
532 524
533 dev_dbg(&bp->pdev->dev, "poll: status = %08lx, budget = %d\n", 525 dev_dbg(&bp->pdev->dev, "poll: status = %08lx, budget = %d\n",
534 (unsigned long)status, budget); 526 (unsigned long)status, budget);
535 527
536 if (!(status & MACB_BIT(REC))) {
537 dev_warn(&bp->pdev->dev,
538 "No RX buffers complete, status = %02lx\n",
539 (unsigned long)status);
540 napi_complete(napi);
541 goto out;
542 }
543
544 work_done = macb_rx(bp, budget); 528 work_done = macb_rx(bp, budget);
545 if (work_done < budget) 529 if (work_done < budget)
546 napi_complete(napi); 530 napi_complete(napi);
@@ -549,7 +533,6 @@ static int macb_poll(struct napi_struct *napi, int budget)
549 * We've done what we can to clean the buffers. Make sure we 533 * We've done what we can to clean the buffers. Make sure we
550 * get notified when new packets arrive. 534 * get notified when new packets arrive.
551 */ 535 */
552out:
553 macb_writel(bp, IER, MACB_RX_INT_FLAGS); 536 macb_writel(bp, IER, MACB_RX_INT_FLAGS);
554 537
555 /* TODO: Handle errors */ 538 /* TODO: Handle errors */
@@ -590,7 +573,8 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
590 } 573 }
591 } 574 }
592 575
593 if (status & (MACB_BIT(TCOMP) | MACB_BIT(ISR_TUND))) 576 if (status & (MACB_BIT(TCOMP) | MACB_BIT(ISR_TUND) |
577 MACB_BIT(ISR_RLE)))
594 macb_tx(bp); 578 macb_tx(bp);
595 579
596 /* 580 /*
@@ -1100,6 +1084,18 @@ static int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
1100 return phy_mii_ioctl(phydev, if_mii(rq), cmd); 1084 return phy_mii_ioctl(phydev, if_mii(rq), cmd);
1101} 1085}
1102 1086
1087static const struct net_device_ops macb_netdev_ops = {
1088 .ndo_open = macb_open,
1089 .ndo_stop = macb_close,
1090 .ndo_start_xmit = macb_start_xmit,
1091 .ndo_set_multicast_list = macb_set_rx_mode,
1092 .ndo_get_stats = macb_get_stats,
1093 .ndo_do_ioctl = macb_ioctl,
1094 .ndo_validate_addr = eth_validate_addr,
1095 .ndo_change_mtu = eth_change_mtu,
1096 .ndo_set_mac_address = eth_mac_addr,
1097};
1098
1103static int __init macb_probe(struct platform_device *pdev) 1099static int __init macb_probe(struct platform_device *pdev)
1104{ 1100{
1105 struct eth_platform_data *pdata; 1101 struct eth_platform_data *pdata;
@@ -1175,12 +1171,7 @@ static int __init macb_probe(struct platform_device *pdev)
1175 goto err_out_iounmap; 1171 goto err_out_iounmap;
1176 } 1172 }
1177 1173
1178 dev->open = macb_open; 1174 dev->netdev_ops = &macb_netdev_ops;
1179 dev->stop = macb_close;
1180 dev->hard_start_xmit = macb_start_xmit;
1181 dev->get_stats = macb_get_stats;
1182 dev->set_multicast_list = macb_set_rx_mode;
1183 dev->do_ioctl = macb_ioctl;
1184 netif_napi_add(dev, &bp->napi, macb_poll, 64); 1175 netif_napi_add(dev, &bp->napi, macb_poll, 64);
1185 dev->ethtool_ops = &macb_ethtool_ops; 1176 dev->ethtool_ops = &macb_ethtool_ops;
1186 1177
diff --git a/drivers/net/macsonic.c b/drivers/net/macsonic.c
index 527166e35d56..acd143da161d 100644
--- a/drivers/net/macsonic.c
+++ b/drivers/net/macsonic.c
@@ -167,6 +167,18 @@ static int macsonic_close(struct net_device* dev)
167 return err; 167 return err;
168} 168}
169 169
170static const struct net_device_ops macsonic_netdev_ops = {
171 .ndo_open = macsonic_open,
172 .ndo_stop = macsonic_close,
173 .ndo_start_xmit = sonic_send_packet,
174 .ndo_set_multicast_list = sonic_multicast_list,
175 .ndo_tx_timeout = sonic_tx_timeout,
176 .ndo_get_stats = sonic_get_stats,
177 .ndo_validate_addr = eth_validate_addr,
178 .ndo_change_mtu = eth_change_mtu,
179 .ndo_set_mac_address = eth_mac_addr,
180};
181
170static int __init macsonic_init(struct net_device *dev) 182static int __init macsonic_init(struct net_device *dev)
171{ 183{
172 struct sonic_local* lp = netdev_priv(dev); 184 struct sonic_local* lp = netdev_priv(dev);
@@ -198,12 +210,7 @@ static int __init macsonic_init(struct net_device *dev)
198 lp->rra_laddr = lp->rda_laddr + (SIZEOF_SONIC_RD * SONIC_NUM_RDS 210 lp->rra_laddr = lp->rda_laddr + (SIZEOF_SONIC_RD * SONIC_NUM_RDS
199 * SONIC_BUS_SCALE(lp->dma_bitmode)); 211 * SONIC_BUS_SCALE(lp->dma_bitmode));
200 212
201 dev->open = macsonic_open; 213 dev->netdev_ops = &macsonic_netdev_ops;
202 dev->stop = macsonic_close;
203 dev->hard_start_xmit = sonic_send_packet;
204 dev->get_stats = sonic_get_stats;
205 dev->set_multicast_list = &sonic_multicast_list;
206 dev->tx_timeout = sonic_tx_timeout;
207 dev->watchdog_timeo = TX_TIMEOUT; 214 dev->watchdog_timeo = TX_TIMEOUT;
208 215
209 /* 216 /*
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 70d3ef4a2c5f..214a8cf2b708 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -376,7 +376,8 @@ static u32 macvlan_ethtool_get_rx_csum(struct net_device *dev)
376 const struct macvlan_dev *vlan = netdev_priv(dev); 376 const struct macvlan_dev *vlan = netdev_priv(dev);
377 struct net_device *lowerdev = vlan->lowerdev; 377 struct net_device *lowerdev = vlan->lowerdev;
378 378
379 if (lowerdev->ethtool_ops->get_rx_csum == NULL) 379 if (lowerdev->ethtool_ops == NULL ||
380 lowerdev->ethtool_ops->get_rx_csum == NULL)
380 return 0; 381 return 0;
381 return lowerdev->ethtool_ops->get_rx_csum(lowerdev); 382 return lowerdev->ethtool_ops->get_rx_csum(lowerdev);
382} 383}
@@ -387,7 +388,8 @@ static int macvlan_ethtool_get_settings(struct net_device *dev,
387 const struct macvlan_dev *vlan = netdev_priv(dev); 388 const struct macvlan_dev *vlan = netdev_priv(dev);
388 struct net_device *lowerdev = vlan->lowerdev; 389 struct net_device *lowerdev = vlan->lowerdev;
389 390
390 if (!lowerdev->ethtool_ops->get_settings) 391 if (!lowerdev->ethtool_ops ||
392 !lowerdev->ethtool_ops->get_settings)
391 return -EOPNOTSUPP; 393 return -EOPNOTSUPP;
392 394
393 return lowerdev->ethtool_ops->get_settings(lowerdev, cmd); 395 return lowerdev->ethtool_ops->get_settings(lowerdev, cmd);
@@ -398,7 +400,8 @@ static u32 macvlan_ethtool_get_flags(struct net_device *dev)
398 const struct macvlan_dev *vlan = netdev_priv(dev); 400 const struct macvlan_dev *vlan = netdev_priv(dev);
399 struct net_device *lowerdev = vlan->lowerdev; 401 struct net_device *lowerdev = vlan->lowerdev;
400 402
401 if (!lowerdev->ethtool_ops->get_flags) 403 if (!lowerdev->ethtool_ops ||
404 !lowerdev->ethtool_ops->get_flags)
402 return 0; 405 return 0;
403 return lowerdev->ethtool_ops->get_flags(lowerdev); 406 return lowerdev->ethtool_ops->get_flags(lowerdev);
404} 407}
diff --git a/drivers/net/mlx4/en_main.c b/drivers/net/mlx4/en_main.c
index eda72dd2120f..510633fd57f6 100644
--- a/drivers/net/mlx4/en_main.c
+++ b/drivers/net/mlx4/en_main.c
@@ -181,7 +181,7 @@ static void *mlx4_en_add(struct mlx4_dev *dev)
181 mdev->workqueue = create_singlethread_workqueue("mlx4_en"); 181 mdev->workqueue = create_singlethread_workqueue("mlx4_en");
182 if (!mdev->workqueue) { 182 if (!mdev->workqueue) {
183 err = -ENOMEM; 183 err = -ENOMEM;
184 goto err_close_nic; 184 goto err_mr;
185 } 185 }
186 186
187 /* At this stage all non-port specific tasks are complete: 187 /* At this stage all non-port specific tasks are complete:
@@ -214,9 +214,8 @@ err_free_netdev:
214 flush_workqueue(mdev->workqueue); 214 flush_workqueue(mdev->workqueue);
215 215
216 /* Stop event queue before we drop down to release shared SW state */ 216 /* Stop event queue before we drop down to release shared SW state */
217
218err_close_nic:
219 destroy_workqueue(mdev->workqueue); 217 destroy_workqueue(mdev->workqueue);
218
220err_mr: 219err_mr:
221 mlx4_mr_free(dev, &mdev->mr); 220 mlx4_mr_free(dev, &mdev->mr);
222err_uar: 221err_uar:
diff --git a/drivers/net/mlx4/en_netdev.c b/drivers/net/mlx4/en_netdev.c
index 303c23de6cac..438678ab2a10 100644
--- a/drivers/net/mlx4/en_netdev.c
+++ b/drivers/net/mlx4/en_netdev.c
@@ -348,11 +348,9 @@ static void mlx4_en_tx_timeout(struct net_device *dev)
348 if (netif_msg_timer(priv)) 348 if (netif_msg_timer(priv))
349 mlx4_warn(mdev, "Tx timeout called on port:%d\n", priv->port); 349 mlx4_warn(mdev, "Tx timeout called on port:%d\n", priv->port);
350 350
351 if (netif_carrier_ok(dev)) { 351 priv->port_stats.tx_timeout++;
352 priv->port_stats.tx_timeout++; 352 mlx4_dbg(DRV, priv, "Scheduling watchdog\n");
353 mlx4_dbg(DRV, priv, "Scheduling watchdog\n"); 353 queue_work(mdev->workqueue, &priv->watchdog_task);
354 queue_work(mdev->workqueue, &priv->watchdog_task);
355 }
356} 354}
357 355
358 356
@@ -761,9 +759,14 @@ static void mlx4_en_restart(struct work_struct *work)
761 struct net_device *dev = priv->dev; 759 struct net_device *dev = priv->dev;
762 760
763 mlx4_dbg(DRV, priv, "Watchdog task called for port %d\n", priv->port); 761 mlx4_dbg(DRV, priv, "Watchdog task called for port %d\n", priv->port);
764 mlx4_en_stop_port(dev); 762
765 if (mlx4_en_start_port(dev)) 763 mutex_lock(&mdev->state_lock);
766 mlx4_err(mdev, "Failed restarting port %d\n", priv->port); 764 if (priv->port_up) {
765 mlx4_en_stop_port(dev);
766 if (mlx4_en_start_port(dev))
767 mlx4_err(mdev, "Failed restarting port %d\n", priv->port);
768 }
769 mutex_unlock(&mdev->state_lock);
767} 770}
768 771
769 772
@@ -1054,7 +1057,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
1054 * Set driver features 1057 * Set driver features
1055 */ 1058 */
1056 dev->features |= NETIF_F_SG; 1059 dev->features |= NETIF_F_SG;
1057 dev->features |= NETIF_F_HW_CSUM; 1060 dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
1058 dev->features |= NETIF_F_HIGHDMA; 1061 dev->features |= NETIF_F_HIGHDMA;
1059 dev->features |= NETIF_F_HW_VLAN_TX | 1062 dev->features |= NETIF_F_HW_VLAN_TX |
1060 NETIF_F_HW_VLAN_RX | 1063 NETIF_F_HW_VLAN_RX |
diff --git a/drivers/net/mlx4/en_port.c b/drivers/net/mlx4/en_port.c
index c5a4c0389752..a29abe845d2e 100644
--- a/drivers/net/mlx4/en_port.c
+++ b/drivers/net/mlx4/en_port.c
@@ -151,6 +151,7 @@ int mlx4_en_DUMP_ETH_STATS(struct mlx4_en_dev *mdev, u8 port, u8 reset)
151 struct mlx4_cmd_mailbox *mailbox; 151 struct mlx4_cmd_mailbox *mailbox;
152 u64 in_mod = reset << 8 | port; 152 u64 in_mod = reset << 8 | port;
153 int err; 153 int err;
154 int i;
154 155
155 mailbox = mlx4_alloc_cmd_mailbox(mdev->dev); 156 mailbox = mlx4_alloc_cmd_mailbox(mdev->dev);
156 if (IS_ERR(mailbox)) 157 if (IS_ERR(mailbox))
@@ -165,38 +166,18 @@ int mlx4_en_DUMP_ETH_STATS(struct mlx4_en_dev *mdev, u8 port, u8 reset)
165 166
166 spin_lock_bh(&priv->stats_lock); 167 spin_lock_bh(&priv->stats_lock);
167 168
168 stats->rx_packets = be32_to_cpu(mlx4_en_stats->RTOTFRMS) - 169 stats->rx_packets = 0;
169 be32_to_cpu(mlx4_en_stats->RDROP); 170 stats->rx_bytes = 0;
170 stats->tx_packets = be64_to_cpu(mlx4_en_stats->TTOT_prio_0) + 171 for (i = 0; i < priv->rx_ring_num; i++) {
171 be64_to_cpu(mlx4_en_stats->TTOT_prio_1) + 172 stats->rx_packets += priv->rx_ring[i].packets;
172 be64_to_cpu(mlx4_en_stats->TTOT_prio_2) + 173 stats->rx_bytes += priv->rx_ring[i].bytes;
173 be64_to_cpu(mlx4_en_stats->TTOT_prio_3) + 174 }
174 be64_to_cpu(mlx4_en_stats->TTOT_prio_4) + 175 stats->tx_packets = 0;
175 be64_to_cpu(mlx4_en_stats->TTOT_prio_5) + 176 stats->tx_bytes = 0;
176 be64_to_cpu(mlx4_en_stats->TTOT_prio_6) + 177 for (i = 0; i <= priv->tx_ring_num; i++) {
177 be64_to_cpu(mlx4_en_stats->TTOT_prio_7) + 178 stats->tx_packets += priv->tx_ring[i].packets;
178 be64_to_cpu(mlx4_en_stats->TTOT_novlan) + 179 stats->tx_bytes += priv->tx_ring[i].bytes;
179 be64_to_cpu(mlx4_en_stats->TTOT_loopbk); 180 }
180 stats->rx_bytes = be64_to_cpu(mlx4_en_stats->ROCT_prio_0) +
181 be64_to_cpu(mlx4_en_stats->ROCT_prio_1) +
182 be64_to_cpu(mlx4_en_stats->ROCT_prio_2) +
183 be64_to_cpu(mlx4_en_stats->ROCT_prio_3) +
184 be64_to_cpu(mlx4_en_stats->ROCT_prio_4) +
185 be64_to_cpu(mlx4_en_stats->ROCT_prio_5) +
186 be64_to_cpu(mlx4_en_stats->ROCT_prio_6) +
187 be64_to_cpu(mlx4_en_stats->ROCT_prio_7) +
188 be64_to_cpu(mlx4_en_stats->ROCT_novlan);
189
190 stats->tx_bytes = be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_0) +
191 be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_1) +
192 be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_2) +
193 be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_3) +
194 be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_4) +
195 be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_5) +
196 be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_6) +
197 be64_to_cpu(mlx4_en_stats->TTTLOCT_prio_7) +
198 be64_to_cpu(mlx4_en_stats->TTTLOCT_novlan) +
199 be64_to_cpu(mlx4_en_stats->TTTLOCT_loopbk);
200 181
201 stats->rx_errors = be64_to_cpu(mlx4_en_stats->PCS) + 182 stats->rx_errors = be64_to_cpu(mlx4_en_stats->PCS) +
202 be32_to_cpu(mlx4_en_stats->RdropLength) + 183 be32_to_cpu(mlx4_en_stats->RdropLength) +
diff --git a/drivers/net/mlx4/en_resources.c b/drivers/net/mlx4/en_resources.c
index a0545209e507..65ca706c04bb 100644
--- a/drivers/net/mlx4/en_resources.c
+++ b/drivers/net/mlx4/en_resources.c
@@ -94,3 +94,9 @@ void mlx4_en_unmap_buffer(struct mlx4_buf *buf)
94 94
95 vunmap(buf->direct.buf); 95 vunmap(buf->direct.buf);
96} 96}
97
98void mlx4_en_sqp_event(struct mlx4_qp *qp, enum mlx4_event event)
99{
100 return;
101}
102
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c
index 7e40741fb7d8..0cbb78ca7b29 100644
--- a/drivers/net/mlx4/en_rx.c
+++ b/drivers/net/mlx4/en_rx.c
@@ -436,8 +436,9 @@ int mlx4_en_activate_rx_rings(struct mlx4_en_priv *priv)
436 /* Initialize page allocators */ 436 /* Initialize page allocators */
437 err = mlx4_en_init_allocator(priv, ring); 437 err = mlx4_en_init_allocator(priv, ring);
438 if (err) { 438 if (err) {
439 mlx4_err(mdev, "Failed initializing ring allocator\n"); 439 mlx4_err(mdev, "Failed initializing ring allocator\n");
440 goto err_allocator; 440 ring_ind--;
441 goto err_allocator;
441 } 442 }
442 443
443 /* Fill Rx buffers */ 444 /* Fill Rx buffers */
@@ -467,6 +468,7 @@ int mlx4_en_activate_rx_rings(struct mlx4_en_priv *priv)
467 ring->wqres.db.dma, &ring->srq); 468 ring->wqres.db.dma, &ring->srq);
468 if (err){ 469 if (err){
469 mlx4_err(mdev, "Failed to allocate srq\n"); 470 mlx4_err(mdev, "Failed to allocate srq\n");
471 ring_ind--;
470 goto err_srq; 472 goto err_srq;
471 } 473 }
472 ring->srq.event = mlx4_en_srq_event; 474 ring->srq.event = mlx4_en_srq_event;
@@ -926,12 +928,6 @@ void mlx4_en_set_default_rss_map(struct mlx4_en_priv *priv,
926 } 928 }
927} 929}
928 930
929static void mlx4_en_sqp_event(struct mlx4_qp *qp, enum mlx4_event event)
930{
931 return;
932}
933
934
935static int mlx4_en_config_rss_qp(struct mlx4_en_priv *priv, 931static int mlx4_en_config_rss_qp(struct mlx4_en_priv *priv,
936 int qpn, int srqn, int cqn, 932 int qpn, int srqn, int cqn,
937 enum mlx4_qp_state *state, 933 enum mlx4_qp_state *state,
diff --git a/drivers/net/mlx4/en_tx.c b/drivers/net/mlx4/en_tx.c
index 4afd5993e31c..ac6fc499b280 100644
--- a/drivers/net/mlx4/en_tx.c
+++ b/drivers/net/mlx4/en_tx.c
@@ -112,6 +112,7 @@ int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
112 mlx4_err(mdev, "Failed allocating qp %d\n", ring->qpn); 112 mlx4_err(mdev, "Failed allocating qp %d\n", ring->qpn);
113 goto err_reserve; 113 goto err_reserve;
114 } 114 }
115 ring->qp.event = mlx4_en_sqp_event;
115 116
116 return 0; 117 return 0;
117 118
diff --git a/drivers/net/mlx4/mlx4_en.h b/drivers/net/mlx4/mlx4_en.h
index e9af32d41ca4..ef840abbcd39 100644
--- a/drivers/net/mlx4/mlx4_en.h
+++ b/drivers/net/mlx4/mlx4_en.h
@@ -538,6 +538,7 @@ int mlx4_en_poll_rx_cq(struct napi_struct *napi, int budget);
538void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride, 538void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride,
539 int is_tx, int rss, int qpn, int cqn, int srqn, 539 int is_tx, int rss, int qpn, int cqn, int srqn,
540 struct mlx4_qp_context *context); 540 struct mlx4_qp_context *context);
541void mlx4_en_sqp_event(struct mlx4_qp *qp, enum mlx4_event event);
541int mlx4_en_map_buffer(struct mlx4_buf *buf); 542int mlx4_en_map_buffer(struct mlx4_buf *buf);
542void mlx4_en_unmap_buffer(struct mlx4_buf *buf); 543void mlx4_en_unmap_buffer(struct mlx4_buf *buf);
543 544
diff --git a/drivers/net/mlx4/port.c b/drivers/net/mlx4/port.c
index 7cce3342ef8c..606aa58afdea 100644
--- a/drivers/net/mlx4/port.c
+++ b/drivers/net/mlx4/port.c
@@ -299,13 +299,14 @@ int mlx4_SET_PORT(struct mlx4_dev *dev, u8 port)
299 struct mlx4_cmd_mailbox *mailbox; 299 struct mlx4_cmd_mailbox *mailbox;
300 int err; 300 int err;
301 301
302 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
303 return 0;
304
302 mailbox = mlx4_alloc_cmd_mailbox(dev); 305 mailbox = mlx4_alloc_cmd_mailbox(dev);
303 if (IS_ERR(mailbox)) 306 if (IS_ERR(mailbox))
304 return PTR_ERR(mailbox); 307 return PTR_ERR(mailbox);
305 308
306 memset(mailbox->buf, 0, 256); 309 memset(mailbox->buf, 0, 256);
307 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
308 return 0;
309 310
310 ((__be32 *) mailbox->buf)[1] = dev->caps.ib_port_def_cap[port]; 311 ((__be32 *) mailbox->buf)[1] = dev->caps.ib_port_def_cap[port];
311 err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_PORT, 312 err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_PORT,
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index a56d9d2df73f..b3185bf2c158 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -2274,8 +2274,6 @@ static void port_start(struct mv643xx_eth_private *mp)
2274 pscr |= FORCE_LINK_PASS; 2274 pscr |= FORCE_LINK_PASS;
2275 wrlp(mp, PORT_SERIAL_CONTROL, pscr); 2275 wrlp(mp, PORT_SERIAL_CONTROL, pscr);
2276 2276
2277 wrlp(mp, SDMA_CONFIG, PORT_SDMA_CONFIG_DEFAULT_VALUE);
2278
2279 /* 2277 /*
2280 * Configure TX path and queues. 2278 * Configure TX path and queues.
2281 */ 2279 */
@@ -2957,6 +2955,8 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
2957 2955
2958 netif_carrier_off(dev); 2956 netif_carrier_off(dev);
2959 2957
2958 wrlp(mp, SDMA_CONFIG, PORT_SDMA_CONFIG_DEFAULT_VALUE);
2959
2960 set_rx_coal(mp, 250); 2960 set_rx_coal(mp, 250);
2961 set_tx_coal(mp, 0); 2961 set_tx_coal(mp, 0);
2962 2962
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 9eed126a82f0..f2c4a665e93f 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -2447,6 +2447,7 @@ static int myri10ge_open(struct net_device *dev)
2447 lro_mgr->lro_arr = ss->rx_done.lro_desc; 2447 lro_mgr->lro_arr = ss->rx_done.lro_desc;
2448 lro_mgr->get_frag_header = myri10ge_get_frag_header; 2448 lro_mgr->get_frag_header = myri10ge_get_frag_header;
2449 lro_mgr->max_aggr = myri10ge_lro_max_pkts; 2449 lro_mgr->max_aggr = myri10ge_lro_max_pkts;
2450 lro_mgr->frag_align_pad = 2;
2450 if (lro_mgr->max_aggr > MAX_SKB_FRAGS) 2451 if (lro_mgr->max_aggr > MAX_SKB_FRAGS)
2451 lro_mgr->max_aggr = MAX_SKB_FRAGS; 2452 lro_mgr->max_aggr = MAX_SKB_FRAGS;
2452 2453
diff --git a/drivers/net/niu.c b/drivers/net/niu.c
index 73cac6c78cb6..2b1745328cf7 100644
--- a/drivers/net/niu.c
+++ b/drivers/net/niu.c
@@ -4834,6 +4834,7 @@ static int niu_compute_rbr_cfig_b(struct rx_ring_info *rp, u64 *ret)
4834{ 4834{
4835 u64 val = 0; 4835 u64 val = 0;
4836 4836
4837 *ret = 0;
4837 switch (rp->rbr_block_size) { 4838 switch (rp->rbr_block_size) {
4838 case 4 * 1024: 4839 case 4 * 1024:
4839 val |= (RBR_BLKSIZE_4K << RBR_CFIG_B_BLKSIZE_SHIFT); 4840 val |= (RBR_BLKSIZE_4K << RBR_CFIG_B_BLKSIZE_SHIFT);
@@ -9542,7 +9543,7 @@ static struct niu_parent * __devinit niu_new_parent(struct niu *np,
9542 9543
9543 plat_dev = platform_device_register_simple("niu", niu_parent_index, 9544 plat_dev = platform_device_register_simple("niu", niu_parent_index,
9544 NULL, 0); 9545 NULL, 0);
9545 if (!plat_dev) 9546 if (IS_ERR(plat_dev))
9546 return NULL; 9547 return NULL;
9547 9548
9548 for (i = 0; attr_name(niu_parent_attributes[i]); i++) { 9549 for (i = 0; attr_name(niu_parent_attributes[i]); i++) {
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index 2fbf9f9ddd37..652a36888361 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -1758,7 +1758,7 @@ static struct pcmcia_device_id pcnet_ids[] = {
1758 PCMCIA_MFC_DEVICE_CIS_PROD_ID12(0, "DAYNA COMMUNICATIONS", "LAN AND MODEM MULTIFUNCTION", 0x8fdf8f89, 0xdd5ed9e8, "DP83903.cis"), 1758 PCMCIA_MFC_DEVICE_CIS_PROD_ID12(0, "DAYNA COMMUNICATIONS", "LAN AND MODEM MULTIFUNCTION", 0x8fdf8f89, 0xdd5ed9e8, "DP83903.cis"),
1759 PCMCIA_MFC_DEVICE_CIS_PROD_ID4(0, "NSC MF LAN/Modem", 0x58fc6056, "DP83903.cis"), 1759 PCMCIA_MFC_DEVICE_CIS_PROD_ID4(0, "NSC MF LAN/Modem", 0x58fc6056, "DP83903.cis"),
1760 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0175, 0x0000, "DP83903.cis"), 1760 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0175, 0x0000, "DP83903.cis"),
1761 PCMCIA_DEVICE_CIS_MANF_CARD(0xc00f, 0x0002, "LA-PCM.cis"), 1761 PCMCIA_DEVICE_CIS_MANF_CARD(0xc00f, 0x0002, "cis/LA-PCM.cis"),
1762 PCMCIA_DEVICE_CIS_PROD_ID12("KTI", "PE520 PLUS", 0xad180345, 0x9d58d392, "PE520.cis"), 1762 PCMCIA_DEVICE_CIS_PROD_ID12("KTI", "PE520 PLUS", 0xad180345, 0x9d58d392, "PE520.cis"),
1763 PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "NE2K.cis"), 1763 PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "NE2K.cis"),
1764 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "PE-200.cis"), 1764 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "PE-200.cis"),
diff --git a/drivers/net/phy/fixed.c b/drivers/net/phy/fixed.c
index cf24cc34debe..e7070515d2e3 100644
--- a/drivers/net/phy/fixed.c
+++ b/drivers/net/phy/fixed.c
@@ -19,6 +19,7 @@
19#include <linux/mii.h> 19#include <linux/mii.h>
20#include <linux/phy.h> 20#include <linux/phy.h>
21#include <linux/phy_fixed.h> 21#include <linux/phy_fixed.h>
22#include <linux/err.h>
22 23
23#define MII_REGS_NUM 29 24#define MII_REGS_NUM 29
24 25
@@ -207,8 +208,8 @@ static int __init fixed_mdio_bus_init(void)
207 int ret; 208 int ret;
208 209
209 pdev = platform_device_register_simple("Fixed MDIO bus", 0, NULL, 0); 210 pdev = platform_device_register_simple("Fixed MDIO bus", 0, NULL, 0);
210 if (!pdev) { 211 if (IS_ERR(pdev)) {
211 ret = -ENOMEM; 212 ret = PTR_ERR(pdev);
212 goto err_pdev; 213 goto err_pdev;
213 } 214 }
214 215
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index eb6411c4694f..7a3ec9d39a9a 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -69,6 +69,11 @@
69#define MII_M1111_COPPER 0 69#define MII_M1111_COPPER 0
70#define MII_M1111_FIBER 1 70#define MII_M1111_FIBER 1
71 71
72#define MII_88E1121_PHY_LED_CTRL 16
73#define MII_88E1121_PHY_LED_PAGE 3
74#define MII_88E1121_PHY_LED_DEF 0x0030
75#define MII_88E1121_PHY_PAGE 22
76
72#define MII_M1011_PHY_STATUS 0x11 77#define MII_M1011_PHY_STATUS 0x11
73#define MII_M1011_PHY_STATUS_1000 0x8000 78#define MII_M1011_PHY_STATUS_1000 0x8000
74#define MII_M1011_PHY_STATUS_100 0x4000 79#define MII_M1011_PHY_STATUS_100 0x4000
@@ -154,6 +159,30 @@ static int marvell_config_aneg(struct phy_device *phydev)
154 return err; 159 return err;
155} 160}
156 161
162static int m88e1121_config_aneg(struct phy_device *phydev)
163{
164 int err, temp;
165
166 err = phy_write(phydev, MII_BMCR, BMCR_RESET);
167 if (err < 0)
168 return err;
169
170 err = phy_write(phydev, MII_M1011_PHY_SCR,
171 MII_M1011_PHY_SCR_AUTO_CROSS);
172 if (err < 0)
173 return err;
174
175 temp = phy_read(phydev, MII_88E1121_PHY_PAGE);
176
177 phy_write(phydev, MII_88E1121_PHY_PAGE, MII_88E1121_PHY_LED_PAGE);
178 phy_write(phydev, MII_88E1121_PHY_LED_CTRL, MII_88E1121_PHY_LED_DEF);
179 phy_write(phydev, MII_88E1121_PHY_PAGE, temp);
180
181 err = genphy_config_aneg(phydev);
182
183 return err;
184}
185
157static int m88e1111_config_init(struct phy_device *phydev) 186static int m88e1111_config_init(struct phy_device *phydev)
158{ 187{
159 int err; 188 int err;
@@ -429,6 +458,18 @@ static int marvell_read_status(struct phy_device *phydev)
429 return 0; 458 return 0;
430} 459}
431 460
461static int m88e1121_did_interrupt(struct phy_device *phydev)
462{
463 int imask;
464
465 imask = phy_read(phydev, MII_M1011_IEVENT);
466
467 if (imask & MII_M1011_IMASK_INIT)
468 return 1;
469
470 return 0;
471}
472
432static struct phy_driver marvell_drivers[] = { 473static struct phy_driver marvell_drivers[] = {
433 { 474 {
434 .phy_id = 0x01410c60, 475 .phy_id = 0x01410c60,
@@ -482,6 +523,19 @@ static struct phy_driver marvell_drivers[] = {
482 .driver = {.owner = THIS_MODULE,}, 523 .driver = {.owner = THIS_MODULE,},
483 }, 524 },
484 { 525 {
526 .phy_id = 0x01410cb0,
527 .phy_id_mask = 0xfffffff0,
528 .name = "Marvell 88E1121R",
529 .features = PHY_GBIT_FEATURES,
530 .flags = PHY_HAS_INTERRUPT,
531 .config_aneg = &m88e1121_config_aneg,
532 .read_status = &marvell_read_status,
533 .ack_interrupt = &marvell_ack_interrupt,
534 .config_intr = &marvell_config_intr,
535 .did_interrupt = &m88e1121_did_interrupt,
536 .driver = { .owner = THIS_MODULE },
537 },
538 {
485 .phy_id = 0x01410cd0, 539 .phy_id = 0x01410cd0,
486 .phy_id_mask = 0xfffffff0, 540 .phy_id_mask = 0xfffffff0,
487 .name = "Marvell 88E1145", 541 .name = "Marvell 88E1145",
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 3ff1f425f1bb..61755cbd978e 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -434,7 +434,7 @@ void phy_start_machine(struct phy_device *phydev,
434 phydev->adjust_state = handler; 434 phydev->adjust_state = handler;
435 435
436 INIT_DELAYED_WORK(&phydev->state_queue, phy_state_machine); 436 INIT_DELAYED_WORK(&phydev->state_queue, phy_state_machine);
437 schedule_delayed_work(&phydev->state_queue, jiffies + HZ); 437 schedule_delayed_work(&phydev->state_queue, HZ);
438} 438}
439 439
440/** 440/**
@@ -655,6 +655,10 @@ static void phy_change(struct work_struct *work)
655 struct phy_device *phydev = 655 struct phy_device *phydev =
656 container_of(work, struct phy_device, phy_queue); 656 container_of(work, struct phy_device, phy_queue);
657 657
658 if (phydev->drv->did_interrupt &&
659 !phydev->drv->did_interrupt(phydev))
660 goto ignore;
661
658 err = phy_disable_interrupts(phydev); 662 err = phy_disable_interrupts(phydev);
659 663
660 if (err) 664 if (err)
@@ -681,6 +685,11 @@ static void phy_change(struct work_struct *work)
681 685
682 return; 686 return;
683 687
688ignore:
689 atomic_dec(&phydev->irq_disable);
690 enable_irq(phydev->irq);
691 return;
692
684irq_enable_err: 693irq_enable_err:
685 disable_irq(phydev->irq); 694 disable_irq(phydev->irq);
686 atomic_inc(&phydev->irq_disable); 695 atomic_inc(&phydev->irq_disable);
@@ -937,6 +946,5 @@ static void phy_state_machine(struct work_struct *work)
937 if (err < 0) 946 if (err < 0)
938 phy_error(phydev); 947 phy_error(phydev);
939 948
940 schedule_delayed_work(&phydev->state_queue, 949 schedule_delayed_work(&phydev->state_queue, PHY_STATE_TIME * HZ);
941 jiffies + PHY_STATE_TIME * HZ);
942} 950}
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c
index a5ac2bd58b5b..4f3ada622f9b 100644
--- a/drivers/net/ps3_gelic_wireless.c
+++ b/drivers/net/ps3_gelic_wireless.c
@@ -2101,6 +2101,9 @@ static int gelic_wl_associate_bss(struct gelic_wl_info *wl,
2101 if (ret) { 2101 if (ret) {
2102 pr_debug("%s: WEP/WPA setup failed %d\n", __func__, 2102 pr_debug("%s: WEP/WPA setup failed %d\n", __func__,
2103 ret); 2103 ret);
2104 ret = -EPERM;
2105 gelic_wl_send_iwap_event(wl, NULL);
2106 goto out;
2104 } 2107 }
2105 2108
2106 /* start association */ 2109 /* start association */
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index 5e8540b6ffa1..6f97b47d74a6 100644
--- a/drivers/net/r6040.c
+++ b/drivers/net/r6040.c
@@ -160,6 +160,7 @@ MODULE_AUTHOR("Sten Wang <sten.wang@rdc.com.tw>,"
160 "Florian Fainelli <florian@openwrt.org>"); 160 "Florian Fainelli <florian@openwrt.org>");
161MODULE_LICENSE("GPL"); 161MODULE_LICENSE("GPL");
162MODULE_DESCRIPTION("RDC R6040 NAPI PCI FastEthernet driver"); 162MODULE_DESCRIPTION("RDC R6040 NAPI PCI FastEthernet driver");
163MODULE_VERSION(DRV_VERSION " " DRV_RELDATE);
163 164
164/* RX and TX interrupts that we handle */ 165/* RX and TX interrupts that we handle */
165#define RX_INTS (RX_FIFO_FULL | RX_NO_DESC | RX_FINISH) 166#define RX_INTS (RX_FIFO_FULL | RX_NO_DESC | RX_FINISH)
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index dee23b159df2..7269a426051c 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -448,9 +448,6 @@ static void efx_init_channels(struct efx_nic *efx)
448 448
449 WARN_ON(channel->rx_pkt != NULL); 449 WARN_ON(channel->rx_pkt != NULL);
450 efx_rx_strategy(channel); 450 efx_rx_strategy(channel);
451
452 netif_napi_add(channel->napi_dev, &channel->napi_str,
453 efx_poll, napi_weight);
454 } 451 }
455} 452}
456 453
@@ -1321,6 +1318,8 @@ static int efx_init_napi(struct efx_nic *efx)
1321 1318
1322 efx_for_each_channel(channel, efx) { 1319 efx_for_each_channel(channel, efx) {
1323 channel->napi_dev = efx->net_dev; 1320 channel->napi_dev = efx->net_dev;
1321 netif_napi_add(channel->napi_dev, &channel->napi_str,
1322 efx_poll, napi_weight);
1324 } 1323 }
1325 return 0; 1324 return 0;
1326} 1325}
@@ -1330,6 +1329,8 @@ static void efx_fini_napi(struct efx_nic *efx)
1330 struct efx_channel *channel; 1329 struct efx_channel *channel;
1331 1330
1332 efx_for_each_channel(channel, efx) { 1331 efx_for_each_channel(channel, efx) {
1332 if (channel->napi_dev)
1333 netif_napi_del(&channel->napi_str);
1333 channel->napi_dev = NULL; 1334 channel->napi_dev = NULL;
1334 } 1335 }
1335} 1336}
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c
index d4629ab2c614..466a8abb0053 100644
--- a/drivers/net/sfc/falcon.c
+++ b/drivers/net/sfc/falcon.c
@@ -1176,9 +1176,9 @@ void falcon_sim_phy_event(struct efx_nic *efx)
1176 1176
1177 EFX_POPULATE_QWORD_1(phy_event, EV_CODE, GLOBAL_EV_DECODE); 1177 EFX_POPULATE_QWORD_1(phy_event, EV_CODE, GLOBAL_EV_DECODE);
1178 if (EFX_IS10G(efx)) 1178 if (EFX_IS10G(efx))
1179 EFX_SET_OWORD_FIELD(phy_event, XG_PHY_INTR, 1); 1179 EFX_SET_QWORD_FIELD(phy_event, XG_PHY_INTR, 1);
1180 else 1180 else
1181 EFX_SET_OWORD_FIELD(phy_event, G_PHY0_INTR, 1); 1181 EFX_SET_QWORD_FIELD(phy_event, G_PHY0_INTR, 1);
1182 1182
1183 falcon_generate_event(&efx->channel[0], &phy_event); 1183 falcon_generate_event(&efx->channel[0], &phy_event);
1184} 1184}
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
index 7b1882765a0c..3ab28bb00c12 100644
--- a/drivers/net/sh_eth.c
+++ b/drivers/net/sh_eth.c
@@ -1188,6 +1188,19 @@ out:
1188 return ret; 1188 return ret;
1189} 1189}
1190 1190
1191static const struct net_device_ops sh_eth_netdev_ops = {
1192 .ndo_open = sh_eth_open,
1193 .ndo_stop = sh_eth_close,
1194 .ndo_start_xmit = sh_eth_start_xmit,
1195 .ndo_get_stats = sh_eth_get_stats,
1196 .ndo_set_multicast_list = sh_eth_set_multicast_list,
1197 .ndo_tx_timeout = sh_eth_tx_timeout,
1198 .ndo_do_ioctl = sh_eth_do_ioctl,
1199 .ndo_validate_addr = eth_validate_addr,
1200 .ndo_set_mac_address = eth_mac_addr,
1201 .ndo_change_mtu = eth_change_mtu,
1202};
1203
1191static int sh_eth_drv_probe(struct platform_device *pdev) 1204static int sh_eth_drv_probe(struct platform_device *pdev)
1192{ 1205{
1193 int ret, i, devno = 0; 1206 int ret, i, devno = 0;
@@ -1240,13 +1253,7 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
1240 mdp->edmac_endian = pd->edmac_endian; 1253 mdp->edmac_endian = pd->edmac_endian;
1241 1254
1242 /* set function */ 1255 /* set function */
1243 ndev->open = sh_eth_open; 1256 ndev->netdev_ops = &sh_eth_netdev_ops;
1244 ndev->hard_start_xmit = sh_eth_start_xmit;
1245 ndev->stop = sh_eth_close;
1246 ndev->get_stats = sh_eth_get_stats;
1247 ndev->set_multicast_list = sh_eth_set_multicast_list;
1248 ndev->do_ioctl = sh_eth_do_ioctl;
1249 ndev->tx_timeout = sh_eth_tx_timeout;
1250 ndev->watchdog_timeo = TX_TIMEOUT; 1257 ndev->watchdog_timeo = TX_TIMEOUT;
1251 1258
1252 mdp->post_rx = POST_RX >> (devno << 1); 1259 mdp->post_rx = POST_RX >> (devno << 1);
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index b8978d4af1b7..c11cdd08ec57 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2674,7 +2674,7 @@ static int skge_down(struct net_device *dev)
2674 if (netif_msg_ifdown(skge)) 2674 if (netif_msg_ifdown(skge))
2675 printk(KERN_INFO PFX "%s: disabling interface\n", dev->name); 2675 printk(KERN_INFO PFX "%s: disabling interface\n", dev->name);
2676 2676
2677 netif_stop_queue(dev); 2677 netif_tx_disable(dev);
2678 2678
2679 if (hw->chip_id == CHIP_ID_GENESIS && hw->phy_type == SK_PHY_XMAC) 2679 if (hw->chip_id == CHIP_ID_GENESIS && hw->phy_type == SK_PHY_XMAC)
2680 del_timer_sync(&skge->link_timer); 2680 del_timer_sync(&skge->link_timer);
@@ -2881,7 +2881,6 @@ static void skge_tx_clean(struct net_device *dev)
2881 } 2881 }
2882 2882
2883 skge->tx_ring.to_clean = e; 2883 skge->tx_ring.to_clean = e;
2884 netif_wake_queue(dev);
2885} 2884}
2886 2885
2887static void skge_tx_timeout(struct net_device *dev) 2886static void skge_tx_timeout(struct net_device *dev)
@@ -2893,6 +2892,7 @@ static void skge_tx_timeout(struct net_device *dev)
2893 2892
2894 skge_write8(skge->hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_STOP); 2893 skge_write8(skge->hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_STOP);
2895 skge_tx_clean(dev); 2894 skge_tx_clean(dev);
2895 netif_wake_queue(dev);
2896} 2896}
2897 2897
2898static int skge_change_mtu(struct net_device *dev, int new_mtu) 2898static int skge_change_mtu(struct net_device *dev, int new_mtu)
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h
index 912308eec865..329f890e2903 100644
--- a/drivers/net/smc91x.h
+++ b/drivers/net/smc91x.h
@@ -369,7 +369,7 @@ static inline void LPD7_SMC_outsw (unsigned char* a, int r,
369 * MN10300/AM33 configuration 369 * MN10300/AM33 configuration
370 */ 370 */
371 371
372#include <asm/unit/smc91111.h> 372#include <unit/smc91111.h>
373 373
374#else 374#else
375 375
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c
index 6da678129828..eb7db032a780 100644
--- a/drivers/net/smsc911x.c
+++ b/drivers/net/smsc911x.c
@@ -317,7 +317,7 @@ static int smsc911x_mii_read(struct mii_bus *bus, int phyaddr, int regidx)
317 goto out; 317 goto out;
318 } 318 }
319 319
320 SMSC_WARNING(HW, "Timed out waiting for MII write to finish"); 320 SMSC_WARNING(HW, "Timed out waiting for MII read to finish");
321 reg = -EIO; 321 reg = -EIO;
322 322
323out: 323out:
diff --git a/drivers/net/sun3_82586.c b/drivers/net/sun3_82586.c
index e0d84772771c..a39c0b9ba8b6 100644
--- a/drivers/net/sun3_82586.c
+++ b/drivers/net/sun3_82586.c
@@ -331,6 +331,18 @@ out:
331 return ERR_PTR(err); 331 return ERR_PTR(err);
332} 332}
333 333
334static const struct net_device_ops sun3_82586_netdev_ops = {
335 .ndo_open = sun3_82586_open,
336 .ndo_stop = sun3_82586_close,
337 .ndo_start_xmit = sun3_82586_send_packet,
338 .ndo_set_multicast_list = set_multicast_list,
339 .ndo_tx_timeout = sun3_82586_timeout,
340 .ndo_get_stats = sun3_82586_get_stats,
341 .ndo_validate_addr = eth_validate_addr,
342 .ndo_set_mac_address = eth_mac_addr,
343 .ndo_change_mtu = eth_change_mtu,
344};
345
334static int __init sun3_82586_probe1(struct net_device *dev,int ioaddr) 346static int __init sun3_82586_probe1(struct net_device *dev,int ioaddr)
335{ 347{
336 int i, size, retval; 348 int i, size, retval;
@@ -381,13 +393,8 @@ static int __init sun3_82586_probe1(struct net_device *dev,int ioaddr)
381 393
382 printk("Memaddr: 0x%lx, Memsize: %d, IRQ %d\n",dev->mem_start,size, dev->irq); 394 printk("Memaddr: 0x%lx, Memsize: %d, IRQ %d\n",dev->mem_start,size, dev->irq);
383 395
384 dev->open = sun3_82586_open; 396 dev->netdev_ops = &sun3_82586_netdev_ops;
385 dev->stop = sun3_82586_close;
386 dev->get_stats = sun3_82586_get_stats;
387 dev->tx_timeout = sun3_82586_timeout;
388 dev->watchdog_timeo = HZ/20; 397 dev->watchdog_timeo = HZ/20;
389 dev->hard_start_xmit = sun3_82586_send_packet;
390 dev->set_multicast_list = set_multicast_list;
391 398
392 dev->if_port = 0; 399 dev->if_port = 0;
393 return 0; 400 return 0;
diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c
index d91e95b237b7..0ce2db6ce2bf 100644
--- a/drivers/net/tc35815.c
+++ b/drivers/net/tc35815.c
@@ -862,6 +862,22 @@ static int __devinit tc35815_init_dev_addr(struct net_device *dev)
862 return 0; 862 return 0;
863} 863}
864 864
865static const struct net_device_ops tc35815_netdev_ops = {
866 .ndo_open = tc35815_open,
867 .ndo_stop = tc35815_close,
868 .ndo_start_xmit = tc35815_send_packet,
869 .ndo_get_stats = tc35815_get_stats,
870 .ndo_set_multicast_list = tc35815_set_multicast_list,
871 .ndo_tx_timeout = tc35815_tx_timeout,
872 .ndo_do_ioctl = tc35815_ioctl,
873 .ndo_validate_addr = eth_validate_addr,
874 .ndo_change_mtu = eth_change_mtu,
875 .ndo_set_mac_address = eth_mac_addr,
876#ifdef CONFIG_NET_POLL_CONTROLLER
877 .ndo_poll_controller = tc35815_poll_controller,
878#endif
879};
880
865static int __devinit tc35815_init_one(struct pci_dev *pdev, 881static int __devinit tc35815_init_one(struct pci_dev *pdev,
866 const struct pci_device_id *ent) 882 const struct pci_device_id *ent)
867{ 883{
@@ -904,21 +920,12 @@ static int __devinit tc35815_init_one(struct pci_dev *pdev,
904 ioaddr = pcim_iomap_table(pdev)[1]; 920 ioaddr = pcim_iomap_table(pdev)[1];
905 921
906 /* Initialize the device structure. */ 922 /* Initialize the device structure. */
907 dev->open = tc35815_open; 923 dev->netdev_ops = &tc35815_netdev_ops;
908 dev->hard_start_xmit = tc35815_send_packet;
909 dev->stop = tc35815_close;
910 dev->get_stats = tc35815_get_stats;
911 dev->set_multicast_list = tc35815_set_multicast_list;
912 dev->do_ioctl = tc35815_ioctl;
913 dev->ethtool_ops = &tc35815_ethtool_ops; 924 dev->ethtool_ops = &tc35815_ethtool_ops;
914 dev->tx_timeout = tc35815_tx_timeout;
915 dev->watchdog_timeo = TC35815_TX_TIMEOUT; 925 dev->watchdog_timeo = TC35815_TX_TIMEOUT;
916#ifdef TC35815_NAPI 926#ifdef TC35815_NAPI
917 netif_napi_add(dev, &lp->napi, tc35815_poll, NAPI_WEIGHT); 927 netif_napi_add(dev, &lp->napi, tc35815_poll, NAPI_WEIGHT);
918#endif 928#endif
919#ifdef CONFIG_NET_POLL_CONTROLLER
920 dev->poll_controller = tc35815_poll_controller;
921#endif
922 929
923 dev->irq = pdev->irq; 930 dev->irq = pdev->irq;
924 dev->base_addr = (unsigned long)ioaddr; 931 dev->base_addr = (unsigned long)ioaddr;
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 6a736dda3ee2..201be425643a 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -2190,7 +2190,14 @@ static int tg3_nvram_read_using_eeprom(struct tg3 *tp,
2190 if (!(tmp & EEPROM_ADDR_COMPLETE)) 2190 if (!(tmp & EEPROM_ADDR_COMPLETE))
2191 return -EBUSY; 2191 return -EBUSY;
2192 2192
2193 *val = tr32(GRC_EEPROM_DATA); 2193 tmp = tr32(GRC_EEPROM_DATA);
2194
2195 /*
2196 * The data will always be opposite the native endian
2197 * format. Perform a blind byteswap to compensate.
2198 */
2199 *val = swab32(tmp);
2200
2194 return 0; 2201 return 0;
2195} 2202}
2196 2203
@@ -10663,7 +10670,13 @@ static int tg3_nvram_write_block_using_eeprom(struct tg3 *tp,
10663 10670
10664 memcpy(&data, buf + i, 4); 10671 memcpy(&data, buf + i, 4);
10665 10672
10666 tw32(GRC_EEPROM_DATA, be32_to_cpu(data)); 10673 /*
10674 * The SEEPROM interface expects the data to always be opposite
10675 * the native endian format. We accomplish this by reversing
10676 * all the operations that would have been performed on the
10677 * data from a call to tg3_nvram_read_be32().
10678 */
10679 tw32(GRC_EEPROM_DATA, swab32(be32_to_cpu(data)));
10667 10680
10668 val = tr32(GRC_EEPROM_ADDR); 10681 val = tr32(GRC_EEPROM_ADDR);
10669 tw32(GRC_EEPROM_ADDR, val | EEPROM_ADDR_COMPLETE); 10682 tw32(GRC_EEPROM_ADDR, val | EEPROM_ADDR_COMPLETE);
diff --git a/drivers/net/tsi108_eth.c b/drivers/net/tsi108_eth.c
index bb43e7fb2a50..0f78f99f9b20 100644
--- a/drivers/net/tsi108_eth.c
+++ b/drivers/net/tsi108_eth.c
@@ -1561,6 +1561,18 @@ static const struct ethtool_ops tsi108_ethtool_ops = {
1561 .set_settings = tsi108_set_settings, 1561 .set_settings = tsi108_set_settings,
1562}; 1562};
1563 1563
1564static const struct net_device_ops tsi108_netdev_ops = {
1565 .ndo_open = tsi108_open,
1566 .ndo_stop = tsi108_close,
1567 .ndo_start_xmit = tsi108_send_packet,
1568 .ndo_set_multicast_list = tsi108_set_rx_mode,
1569 .ndo_get_stats = tsi108_get_stats,
1570 .ndo_do_ioctl = tsi108_do_ioctl,
1571 .ndo_set_mac_address = tsi108_set_mac,
1572 .ndo_validate_addr = eth_validate_addr,
1573 .ndo_change_mtu = eth_change_mtu,
1574};
1575
1564static int 1576static int
1565tsi108_init_one(struct platform_device *pdev) 1577tsi108_init_one(struct platform_device *pdev)
1566{ 1578{
@@ -1616,14 +1628,8 @@ tsi108_init_one(struct platform_device *pdev)
1616 data->phy_type = einfo->phy_type; 1628 data->phy_type = einfo->phy_type;
1617 data->irq_num = einfo->irq_num; 1629 data->irq_num = einfo->irq_num;
1618 data->id = pdev->id; 1630 data->id = pdev->id;
1619 dev->open = tsi108_open;
1620 dev->stop = tsi108_close;
1621 dev->hard_start_xmit = tsi108_send_packet;
1622 dev->set_mac_address = tsi108_set_mac;
1623 dev->set_multicast_list = tsi108_set_rx_mode;
1624 dev->get_stats = tsi108_get_stats;
1625 netif_napi_add(dev, &data->napi, tsi108_poll, 64); 1631 netif_napi_add(dev, &data->napi, tsi108_poll, 64);
1626 dev->do_ioctl = tsi108_do_ioctl; 1632 dev->netdev_ops = &tsi108_netdev_ops;
1627 dev->ethtool_ops = &tsi108_ethtool_ops; 1633 dev->ethtool_ops = &tsi108_ethtool_ops;
1628 1634
1629 /* Apparently, the Linux networking code won't use scatter-gather 1635 /* Apparently, the Linux networking code won't use scatter-gather
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index a1b0697340ba..735bf41c654a 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -93,7 +93,6 @@ struct tun_file {
93 atomic_t count; 93 atomic_t count;
94 struct tun_struct *tun; 94 struct tun_struct *tun;
95 struct net *net; 95 struct net *net;
96 wait_queue_head_t read_wait;
97}; 96};
98 97
99struct tun_sock; 98struct tun_sock;
@@ -156,6 +155,7 @@ static int tun_attach(struct tun_struct *tun, struct file *file)
156 tfile->tun = tun; 155 tfile->tun = tun;
157 tun->tfile = tfile; 156 tun->tfile = tfile;
158 dev_hold(tun->dev); 157 dev_hold(tun->dev);
158 sock_hold(tun->sk);
159 atomic_inc(&tfile->count); 159 atomic_inc(&tfile->count);
160 160
161out: 161out:
@@ -165,11 +165,8 @@ out:
165 165
166static void __tun_detach(struct tun_struct *tun) 166static void __tun_detach(struct tun_struct *tun)
167{ 167{
168 struct tun_file *tfile = tun->tfile;
169
170 /* Detach from net device */ 168 /* Detach from net device */
171 netif_tx_lock_bh(tun->dev); 169 netif_tx_lock_bh(tun->dev);
172 tfile->tun = NULL;
173 tun->tfile = NULL; 170 tun->tfile = NULL;
174 netif_tx_unlock_bh(tun->dev); 171 netif_tx_unlock_bh(tun->dev);
175 172
@@ -333,12 +330,19 @@ static void tun_net_uninit(struct net_device *dev)
333 /* Inform the methods they need to stop using the dev. 330 /* Inform the methods they need to stop using the dev.
334 */ 331 */
335 if (tfile) { 332 if (tfile) {
336 wake_up_all(&tfile->read_wait); 333 wake_up_all(&tun->socket.wait);
337 if (atomic_dec_and_test(&tfile->count)) 334 if (atomic_dec_and_test(&tfile->count))
338 __tun_detach(tun); 335 __tun_detach(tun);
339 } 336 }
340} 337}
341 338
339static void tun_free_netdev(struct net_device *dev)
340{
341 struct tun_struct *tun = netdev_priv(dev);
342
343 sock_put(tun->sk);
344}
345
342/* Net device open. */ 346/* Net device open. */
343static int tun_net_open(struct net_device *dev) 347static int tun_net_open(struct net_device *dev)
344{ 348{
@@ -393,7 +397,7 @@ static int tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
393 /* Notify and wake up reader process */ 397 /* Notify and wake up reader process */
394 if (tun->flags & TUN_FASYNC) 398 if (tun->flags & TUN_FASYNC)
395 kill_fasync(&tun->fasync, SIGIO, POLL_IN); 399 kill_fasync(&tun->fasync, SIGIO, POLL_IN);
396 wake_up_interruptible(&tun->tfile->read_wait); 400 wake_up_interruptible(&tun->socket.wait);
397 return 0; 401 return 0;
398 402
399drop: 403drop:
@@ -490,7 +494,7 @@ static unsigned int tun_chr_poll(struct file *file, poll_table * wait)
490 494
491 DBG(KERN_INFO "%s: tun_chr_poll\n", tun->dev->name); 495 DBG(KERN_INFO "%s: tun_chr_poll\n", tun->dev->name);
492 496
493 poll_wait(file, &tfile->read_wait, wait); 497 poll_wait(file, &tun->socket.wait, wait);
494 498
495 if (!skb_queue_empty(&tun->readq)) 499 if (!skb_queue_empty(&tun->readq))
496 mask |= POLLIN | POLLRDNORM; 500 mask |= POLLIN | POLLRDNORM;
@@ -518,7 +522,7 @@ static inline struct sk_buff *tun_alloc_skb(struct tun_struct *tun,
518 int err; 522 int err;
519 523
520 /* Under a page? Don't bother with paged skb. */ 524 /* Under a page? Don't bother with paged skb. */
521 if (prepad + len < PAGE_SIZE) 525 if (prepad + len < PAGE_SIZE || !linear)
522 linear = len; 526 linear = len;
523 527
524 skb = sock_alloc_send_pskb(sk, prepad + linear, len - linear, noblock, 528 skb = sock_alloc_send_pskb(sk, prepad + linear, len - linear, noblock,
@@ -565,7 +569,8 @@ static __inline__ ssize_t tun_get_user(struct tun_struct *tun,
565 569
566 if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV) { 570 if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV) {
567 align = NET_IP_ALIGN; 571 align = NET_IP_ALIGN;
568 if (unlikely(len < ETH_HLEN)) 572 if (unlikely(len < ETH_HLEN ||
573 (gso.hdr_len && gso.hdr_len < ETH_HLEN)))
569 return -EINVAL; 574 return -EINVAL;
570 } 575 }
571 576
@@ -762,7 +767,7 @@ static ssize_t tun_chr_aio_read(struct kiocb *iocb, const struct iovec *iv,
762 goto out; 767 goto out;
763 } 768 }
764 769
765 add_wait_queue(&tfile->read_wait, &wait); 770 add_wait_queue(&tun->socket.wait, &wait);
766 while (len) { 771 while (len) {
767 current->state = TASK_INTERRUPTIBLE; 772 current->state = TASK_INTERRUPTIBLE;
768 773
@@ -793,7 +798,7 @@ static ssize_t tun_chr_aio_read(struct kiocb *iocb, const struct iovec *iv,
793 } 798 }
794 799
795 current->state = TASK_RUNNING; 800 current->state = TASK_RUNNING;
796 remove_wait_queue(&tfile->read_wait, &wait); 801 remove_wait_queue(&tun->socket.wait, &wait);
797 802
798out: 803out:
799 tun_put(tun); 804 tun_put(tun);
@@ -810,7 +815,7 @@ static void tun_setup(struct net_device *dev)
810 tun->group = -1; 815 tun->group = -1;
811 816
812 dev->ethtool_ops = &tun_ethtool_ops; 817 dev->ethtool_ops = &tun_ethtool_ops;
813 dev->destructor = free_netdev; 818 dev->destructor = tun_free_netdev;
814} 819}
815 820
816/* Trivial set of netlink ops to allow deleting tun or tap 821/* Trivial set of netlink ops to allow deleting tun or tap
@@ -847,7 +852,7 @@ static void tun_sock_write_space(struct sock *sk)
847 852
848static void tun_sock_destruct(struct sock *sk) 853static void tun_sock_destruct(struct sock *sk)
849{ 854{
850 dev_put(container_of(sk, struct tun_sock, sk)->tun->dev); 855 free_netdev(container_of(sk, struct tun_sock, sk)->tun->dev);
851} 856}
852 857
853static struct proto tun_proto = { 858static struct proto tun_proto = {
@@ -861,7 +866,6 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
861 struct sock *sk; 866 struct sock *sk;
862 struct tun_struct *tun; 867 struct tun_struct *tun;
863 struct net_device *dev; 868 struct net_device *dev;
864 struct tun_file *tfile = file->private_data;
865 int err; 869 int err;
866 870
867 dev = __dev_get_by_name(net, ifr->ifr_name); 871 dev = __dev_get_by_name(net, ifr->ifr_name);
@@ -919,13 +923,10 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
919 if (!sk) 923 if (!sk)
920 goto err_free_dev; 924 goto err_free_dev;
921 925
922 /* This ref count is for tun->sk. */ 926 init_waitqueue_head(&tun->socket.wait);
923 dev_hold(dev);
924 sock_init_data(&tun->socket, sk); 927 sock_init_data(&tun->socket, sk);
925 sk->sk_write_space = tun_sock_write_space; 928 sk->sk_write_space = tun_sock_write_space;
926 sk->sk_destruct = tun_sock_destruct;
927 sk->sk_sndbuf = INT_MAX; 929 sk->sk_sndbuf = INT_MAX;
928 sk->sk_sleep = &tfile->read_wait;
929 930
930 tun->sk = sk; 931 tun->sk = sk;
931 container_of(sk, struct tun_sock, sk)->tun = tun; 932 container_of(sk, struct tun_sock, sk)->tun = tun;
@@ -941,11 +942,13 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
941 err = -EINVAL; 942 err = -EINVAL;
942 err = register_netdevice(tun->dev); 943 err = register_netdevice(tun->dev);
943 if (err < 0) 944 if (err < 0)
944 goto err_free_dev; 945 goto err_free_sk;
946
947 sk->sk_destruct = tun_sock_destruct;
945 948
946 err = tun_attach(tun, file); 949 err = tun_attach(tun, file);
947 if (err < 0) 950 if (err < 0)
948 goto err_free_dev; 951 goto failed;
949 } 952 }
950 953
951 DBG(KERN_INFO "%s: tun_set_iff\n", tun->dev->name); 954 DBG(KERN_INFO "%s: tun_set_iff\n", tun->dev->name);
@@ -1265,7 +1268,6 @@ static int tun_chr_open(struct inode *inode, struct file * file)
1265 atomic_set(&tfile->count, 0); 1268 atomic_set(&tfile->count, 0);
1266 tfile->tun = NULL; 1269 tfile->tun = NULL;
1267 tfile->net = get_net(current->nsproxy->net_ns); 1270 tfile->net = get_net(current->nsproxy->net_ns);
1268 init_waitqueue_head(&tfile->read_wait);
1269 file->private_data = tfile; 1271 file->private_data = tfile;
1270 return 0; 1272 return 0;
1271} 1273}
@@ -1283,14 +1285,16 @@ static int tun_chr_close(struct inode *inode, struct file *file)
1283 __tun_detach(tun); 1285 __tun_detach(tun);
1284 1286
1285 /* If desireable, unregister the netdevice. */ 1287 /* If desireable, unregister the netdevice. */
1286 if (!(tun->flags & TUN_PERSIST)) { 1288 if (!(tun->flags & TUN_PERSIST))
1287 sock_put(tun->sk);
1288 unregister_netdevice(tun->dev); 1289 unregister_netdevice(tun->dev);
1289 }
1290 1290
1291 rtnl_unlock(); 1291 rtnl_unlock();
1292 } 1292 }
1293 1293
1294 tun = tfile->tun;
1295 if (tun)
1296 sock_put(tun->sk);
1297
1294 put_net(tfile->net); 1298 put_net(tfile->net);
1295 kfree(tfile); 1299 kfree(tfile);
1296 1300
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index d3f39e86eb95..44f8392da117 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -1394,7 +1394,8 @@ static int adjust_enet_interface(struct ucc_geth_private *ugeth)
1394 (ugeth->phy_interface == PHY_INTERFACE_MODE_RGMII_RXID) || 1394 (ugeth->phy_interface == PHY_INTERFACE_MODE_RGMII_RXID) ||
1395 (ugeth->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID) || 1395 (ugeth->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID) ||
1396 (ugeth->phy_interface == PHY_INTERFACE_MODE_RTBI)) { 1396 (ugeth->phy_interface == PHY_INTERFACE_MODE_RTBI)) {
1397 upsmr |= UCC_GETH_UPSMR_RPM; 1397 if (ugeth->phy_interface != PHY_INTERFACE_MODE_RMII)
1398 upsmr |= UCC_GETH_UPSMR_RPM;
1398 switch (ugeth->max_speed) { 1399 switch (ugeth->max_speed) {
1399 case SPEED_10: 1400 case SPEED_10:
1400 upsmr |= UCC_GETH_UPSMR_R10M; 1401 upsmr |= UCC_GETH_UPSMR_R10M;
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
index a8228d87c8cf..2138535f2339 100644
--- a/drivers/net/usb/pegasus.c
+++ b/drivers/net/usb/pegasus.c
@@ -899,6 +899,7 @@ static int pegasus_start_xmit(struct sk_buff *skb, struct net_device *net)
899 /* cleanup should already have been scheduled */ 899 /* cleanup should already have been scheduled */
900 break; 900 break;
901 case -ENODEV: /* disconnect() upcoming */ 901 case -ENODEV: /* disconnect() upcoming */
902 case -EPERM:
902 netif_device_detach(pegasus->net); 903 netif_device_detach(pegasus->net);
903 break; 904 break;
904 default: 905 default:
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index fb53ef872df3..754a4b182c1d 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -377,7 +377,7 @@ static void velocity_print_info(struct velocity_info *vptr);
377static int velocity_open(struct net_device *dev); 377static int velocity_open(struct net_device *dev);
378static int velocity_change_mtu(struct net_device *dev, int mtu); 378static int velocity_change_mtu(struct net_device *dev, int mtu);
379static int velocity_xmit(struct sk_buff *skb, struct net_device *dev); 379static int velocity_xmit(struct sk_buff *skb, struct net_device *dev);
380static int velocity_intr(int irq, void *dev_instance); 380static irqreturn_t velocity_intr(int irq, void *dev_instance);
381static void velocity_set_multi(struct net_device *dev); 381static void velocity_set_multi(struct net_device *dev);
382static struct net_device_stats *velocity_get_stats(struct net_device *dev); 382static struct net_device_stats *velocity_get_stats(struct net_device *dev);
383static int velocity_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 383static int velocity_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
@@ -2215,7 +2215,7 @@ out:
2215 * efficiently as possible. 2215 * efficiently as possible.
2216 */ 2216 */
2217 2217
2218static int velocity_intr(int irq, void *dev_instance) 2218static irqreturn_t velocity_intr(int irq, void *dev_instance)
2219{ 2219{
2220 struct net_device *dev = dev_instance; 2220 struct net_device *dev = dev_instance;
2221 struct velocity_info *vptr = netdev_priv(dev); 2221 struct velocity_info *vptr = netdev_priv(dev);
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index f21a6171c691..c36d3a3d655f 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -6713,11 +6713,11 @@ static int airo_set_auth(struct net_device *dev,
6713 local->config.authType = AUTH_ENCRYPT; 6713 local->config.authType = AUTH_ENCRYPT;
6714 } else 6714 } else
6715 return -EINVAL; 6715 return -EINVAL;
6716 break;
6717 6716
6718 /* Commit the changes to flags if needed */ 6717 /* Commit the changes to flags if needed */
6719 if (local->config.authType != currentAuthType) 6718 if (local->config.authType != currentAuthType)
6720 set_bit (FLAG_COMMIT, &local->flags); 6719 set_bit (FLAG_COMMIT, &local->flags);
6720 break;
6721 } 6721 }
6722 6722
6723 case IW_AUTH_WPA_ENABLED: 6723 case IW_AUTH_WPA_ENABLED:
diff --git a/drivers/net/wireless/ar9170/hw.h b/drivers/net/wireless/ar9170/hw.h
index 13091bd9d815..53e250a4278f 100644
--- a/drivers/net/wireless/ar9170/hw.h
+++ b/drivers/net/wireless/ar9170/hw.h
@@ -310,7 +310,7 @@ struct ar9170_tx_control {
310 310
311struct ar9170_rx_head { 311struct ar9170_rx_head {
312 u8 plcp[12]; 312 u8 plcp[12];
313}; 313} __packed;
314 314
315struct ar9170_rx_tail { 315struct ar9170_rx_tail {
316 union { 316 union {
@@ -318,16 +318,16 @@ struct ar9170_rx_tail {
318 u8 rssi_ant0, rssi_ant1, rssi_ant2, 318 u8 rssi_ant0, rssi_ant1, rssi_ant2,
319 rssi_ant0x, rssi_ant1x, rssi_ant2x, 319 rssi_ant0x, rssi_ant1x, rssi_ant2x,
320 rssi_combined; 320 rssi_combined;
321 }; 321 } __packed;
322 u8 rssi[7]; 322 u8 rssi[7];
323 }; 323 } __packed;
324 324
325 u8 evm_stream0[6], evm_stream1[6]; 325 u8 evm_stream0[6], evm_stream1[6];
326 u8 phy_err; 326 u8 phy_err;
327 u8 SAidx, DAidx; 327 u8 SAidx, DAidx;
328 u8 error; 328 u8 error;
329 u8 status; 329 u8 status;
330}; 330} __packed;
331 331
332#define AR9170_ENC_ALG_NONE 0x0 332#define AR9170_ENC_ALG_NONE 0x0
333#define AR9170_ENC_ALG_WEP64 0x1 333#define AR9170_ENC_ALG_WEP64 0x1
diff --git a/drivers/net/wireless/ar9170/usb.c b/drivers/net/wireless/ar9170/usb.c
index ad296840893e..fddda477095c 100644
--- a/drivers/net/wireless/ar9170/usb.c
+++ b/drivers/net/wireless/ar9170/usb.c
@@ -59,6 +59,8 @@ static struct usb_device_id ar9170_usb_ids[] = {
59 { USB_DEVICE(0x0cf3, 0x9170) }, 59 { USB_DEVICE(0x0cf3, 0x9170) },
60 /* Atheros TG121N */ 60 /* Atheros TG121N */
61 { USB_DEVICE(0x0cf3, 0x1001) }, 61 { USB_DEVICE(0x0cf3, 0x1001) },
62 /* Cace Airpcap NX */
63 { USB_DEVICE(0xcace, 0x0300) },
62 /* D-Link DWA 160A */ 64 /* D-Link DWA 160A */
63 { USB_DEVICE(0x07d1, 0x3c10) }, 65 { USB_DEVICE(0x07d1, 0x3c10) },
64 /* Netgear WNDA3100 */ 66 /* Netgear WNDA3100 */
@@ -67,6 +69,8 @@ static struct usb_device_id ar9170_usb_ids[] = {
67 { USB_DEVICE(0x0846, 0x9001) }, 69 { USB_DEVICE(0x0846, 0x9001) },
68 /* Zydas ZD1221 */ 70 /* Zydas ZD1221 */
69 { USB_DEVICE(0x0ace, 0x1221) }, 71 { USB_DEVICE(0x0ace, 0x1221) },
72 /* ZyXEL NWD271N */
73 { USB_DEVICE(0x0586, 0x3417) },
70 /* Z-Com UB81 BG */ 74 /* Z-Com UB81 BG */
71 { USB_DEVICE(0x0cde, 0x0023) }, 75 { USB_DEVICE(0x0cde, 0x0023) },
72 /* Z-Com UB82 ABG */ 76 /* Z-Com UB82 ABG */
@@ -619,6 +623,39 @@ static int ar9170_usb_open(struct ar9170 *ar)
619 return 0; 623 return 0;
620} 624}
621 625
626static int ar9170_usb_init_device(struct ar9170_usb *aru)
627{
628 int err;
629
630 err = ar9170_usb_alloc_rx_irq_urb(aru);
631 if (err)
632 goto err_out;
633
634 err = ar9170_usb_alloc_rx_bulk_urbs(aru);
635 if (err)
636 goto err_unrx;
637
638 err = ar9170_usb_upload_firmware(aru);
639 if (err) {
640 err = ar9170_echo_test(&aru->common, 0x60d43110);
641 if (err) {
642 /* force user invention, by disabling the device */
643 err = usb_driver_set_configuration(aru->udev, -1);
644 dev_err(&aru->udev->dev, "device is in a bad state. "
645 "please reconnect it!\n");
646 goto err_unrx;
647 }
648 }
649
650 return 0;
651
652err_unrx:
653 ar9170_usb_cancel_urbs(aru);
654
655err_out:
656 return err;
657}
658
622static int ar9170_usb_probe(struct usb_interface *intf, 659static int ar9170_usb_probe(struct usb_interface *intf,
623 const struct usb_device_id *id) 660 const struct usb_device_id *id)
624{ 661{
@@ -654,32 +691,16 @@ static int ar9170_usb_probe(struct usb_interface *intf,
654 691
655 err = ar9170_usb_reset(aru); 692 err = ar9170_usb_reset(aru);
656 if (err) 693 if (err)
657 goto err_unlock; 694 goto err_freehw;
658 695
659 err = ar9170_usb_request_firmware(aru); 696 err = ar9170_usb_request_firmware(aru);
660 if (err) 697 if (err)
661 goto err_unlock; 698 goto err_freehw;
662 699
663 err = ar9170_usb_alloc_rx_irq_urb(aru); 700 err = ar9170_usb_init_device(aru);
664 if (err) 701 if (err)
665 goto err_freefw; 702 goto err_freefw;
666 703
667 err = ar9170_usb_alloc_rx_bulk_urbs(aru);
668 if (err)
669 goto err_unrx;
670
671 err = ar9170_usb_upload_firmware(aru);
672 if (err) {
673 err = ar9170_echo_test(&aru->common, 0x60d43110);
674 if (err) {
675 /* force user invention, by disabling the device */
676 err = usb_driver_set_configuration(aru->udev, -1);
677 dev_err(&aru->udev->dev, "device is in a bad state. "
678 "please reconnect it!\n");
679 goto err_unrx;
680 }
681 }
682
683 err = ar9170_usb_open(ar); 704 err = ar9170_usb_open(ar);
684 if (err) 705 if (err)
685 goto err_unrx; 706 goto err_unrx;
@@ -699,7 +720,7 @@ err_freefw:
699 release_firmware(aru->init_values); 720 release_firmware(aru->init_values);
700 release_firmware(aru->firmware); 721 release_firmware(aru->firmware);
701 722
702err_unlock: 723err_freehw:
703 usb_set_intfdata(intf, NULL); 724 usb_set_intfdata(intf, NULL);
704 usb_put_dev(udev); 725 usb_put_dev(udev);
705 ieee80211_free_hw(ar->hw); 726 ieee80211_free_hw(ar->hw);
@@ -726,12 +747,65 @@ static void ar9170_usb_disconnect(struct usb_interface *intf)
726 ieee80211_free_hw(aru->common.hw); 747 ieee80211_free_hw(aru->common.hw);
727} 748}
728 749
750#ifdef CONFIG_PM
751static int ar9170_suspend(struct usb_interface *intf,
752 pm_message_t message)
753{
754 struct ar9170_usb *aru = usb_get_intfdata(intf);
755
756 if (!aru)
757 return -ENODEV;
758
759 aru->common.state = AR9170_IDLE;
760 ar9170_usb_cancel_urbs(aru);
761
762 return 0;
763}
764
765static int ar9170_resume(struct usb_interface *intf)
766{
767 struct ar9170_usb *aru = usb_get_intfdata(intf);
768 int err;
769
770 if (!aru)
771 return -ENODEV;
772
773 usb_unpoison_anchored_urbs(&aru->rx_submitted);
774 usb_unpoison_anchored_urbs(&aru->tx_submitted);
775
776 /*
777 * FIXME: firmware upload will fail on resume.
778 * but this is better than a hang!
779 */
780
781 err = ar9170_usb_init_device(aru);
782 if (err)
783 goto err_unrx;
784
785 err = ar9170_usb_open(&aru->common);
786 if (err)
787 goto err_unrx;
788
789 return 0;
790
791err_unrx:
792 aru->common.state = AR9170_IDLE;
793 ar9170_usb_cancel_urbs(aru);
794
795 return err;
796}
797#endif /* CONFIG_PM */
798
729static struct usb_driver ar9170_driver = { 799static struct usb_driver ar9170_driver = {
730 .name = "ar9170usb", 800 .name = "ar9170usb",
731 .probe = ar9170_usb_probe, 801 .probe = ar9170_usb_probe,
732 .disconnect = ar9170_usb_disconnect, 802 .disconnect = ar9170_usb_disconnect,
733 .id_table = ar9170_usb_ids, 803 .id_table = ar9170_usb_ids,
734 .soft_unbind = 1, 804 .soft_unbind = 1,
805#ifdef CONFIG_PM
806 .suspend = ar9170_suspend,
807 .resume = ar9170_resume,
808#endif /* CONFIG_PM */
735}; 809};
736 810
737static int __init ar9170_init(void) 811static int __init ar9170_init(void)
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 0c02f1c2bd94..744f4f4dd3d1 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -250,6 +250,8 @@ static struct usb_device_id dev_table[] = {
250 { USB_DEVICE(0x03eb, 0x7617), USB_DEVICE_DATA(BOARD_505A) }, 250 { USB_DEVICE(0x03eb, 0x7617), USB_DEVICE_DATA(BOARD_505A) },
251 /* Siemens Gigaset USB WLAN Adapter 11 */ 251 /* Siemens Gigaset USB WLAN Adapter 11 */
252 { USB_DEVICE(0x1690, 0x0701), USB_DEVICE_DATA(BOARD_505A) }, 252 { USB_DEVICE(0x1690, 0x0701), USB_DEVICE_DATA(BOARD_505A) },
253 /* OQO Model 01+ Internal Wi-Fi */
254 { USB_DEVICE(0x1557, 0x0002), USB_DEVICE_DATA(BOARD_505A) },
253 /* 255 /*
254 * at76c505amx-rfmd 256 * at76c505amx-rfmd
255 */ 257 */
diff --git a/drivers/net/wireless/ath9k/pci.c b/drivers/net/wireless/ath9k/pci.c
index 6dbc58580abb..168411d322a2 100644
--- a/drivers/net/wireless/ath9k/pci.c
+++ b/drivers/net/wireless/ath9k/pci.c
@@ -93,14 +93,14 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
93 if (pci_enable_device(pdev)) 93 if (pci_enable_device(pdev))
94 return -EIO; 94 return -EIO;
95 95
96 ret = pci_set_dma_mask(pdev, DMA_32BIT_MASK); 96 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
97 97
98 if (ret) { 98 if (ret) {
99 printk(KERN_ERR "ath9k: 32-bit DMA not available\n"); 99 printk(KERN_ERR "ath9k: 32-bit DMA not available\n");
100 goto bad; 100 goto bad;
101 } 101 }
102 102
103 ret = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK); 103 ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
104 104
105 if (ret) { 105 if (ret) {
106 printk(KERN_ERR "ath9k: 32-bit DMA consistent " 106 printk(KERN_ERR "ath9k: 32-bit DMA consistent "
diff --git a/drivers/net/wireless/ath9k/recv.c b/drivers/net/wireless/ath9k/recv.c
index 71cb18d6757d..dd1f30156740 100644
--- a/drivers/net/wireless/ath9k/recv.c
+++ b/drivers/net/wireless/ath9k/recv.c
@@ -493,6 +493,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush)
493 int hdrlen, padsize, retval; 493 int hdrlen, padsize, retval;
494 bool decrypt_error = false; 494 bool decrypt_error = false;
495 u8 keyix; 495 u8 keyix;
496 __le16 fc;
496 497
497 spin_lock_bh(&sc->rx.rxbuflock); 498 spin_lock_bh(&sc->rx.rxbuflock);
498 499
@@ -606,6 +607,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush)
606 /* see if any padding is done by the hw and remove it */ 607 /* see if any padding is done by the hw and remove it */
607 hdr = (struct ieee80211_hdr *)skb->data; 608 hdr = (struct ieee80211_hdr *)skb->data;
608 hdrlen = ieee80211_get_hdrlen_from_skb(skb); 609 hdrlen = ieee80211_get_hdrlen_from_skb(skb);
610 fc = hdr->frame_control;
609 611
610 /* The MAC header is padded to have 32-bit boundary if the 612 /* The MAC header is padded to have 32-bit boundary if the
611 * packet payload is non-zero. The general calculation for 613 * packet payload is non-zero. The general calculation for
@@ -690,7 +692,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush)
690 sc->rx.rxotherant = 0; 692 sc->rx.rxotherant = 0;
691 } 693 }
692 694
693 if (ieee80211_is_beacon(hdr->frame_control) && 695 if (ieee80211_is_beacon(fc) &&
694 (sc->sc_flags & SC_OP_WAIT_FOR_BEACON)) { 696 (sc->sc_flags & SC_OP_WAIT_FOR_BEACON)) {
695 sc->sc_flags &= ~SC_OP_WAIT_FOR_BEACON; 697 sc->sc_flags &= ~SC_OP_WAIT_FOR_BEACON;
696 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_NETWORK_SLEEP); 698 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_NETWORK_SLEEP);
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 857d84148b1d..27eef8fb7107 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1502,7 +1502,6 @@ static const struct net_device_ops atmel_netdev_ops = {
1502 .ndo_set_mac_address = atmel_set_mac_address, 1502 .ndo_set_mac_address = atmel_set_mac_address,
1503 .ndo_start_xmit = start_tx, 1503 .ndo_start_xmit = start_tx,
1504 .ndo_do_ioctl = atmel_ioctl, 1504 .ndo_do_ioctl = atmel_ioctl,
1505 .ndo_change_mtu = eth_change_mtu,
1506 .ndo_validate_addr = eth_validate_addr, 1505 .ndo_validate_addr = eth_validate_addr,
1507}; 1506};
1508 1507
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index e228c1de6e11..eae680b53052 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -555,11 +555,32 @@ address_error:
555 return 1; 555 return 1;
556} 556}
557 557
558static bool b43_rx_buffer_is_poisoned(struct b43_dmaring *ring, struct sk_buff *skb)
559{
560 unsigned char *f = skb->data + ring->frameoffset;
561
562 return ((f[0] & f[1] & f[2] & f[3] & f[4] & f[5] & f[6] & f[7]) == 0xFF);
563}
564
565static void b43_poison_rx_buffer(struct b43_dmaring *ring, struct sk_buff *skb)
566{
567 struct b43_rxhdr_fw4 *rxhdr;
568 unsigned char *frame;
569
570 /* This poisons the RX buffer to detect DMA failures. */
571
572 rxhdr = (struct b43_rxhdr_fw4 *)(skb->data);
573 rxhdr->frame_len = 0;
574
575 B43_WARN_ON(ring->rx_buffersize < ring->frameoffset + sizeof(struct b43_plcp_hdr6) + 2);
576 frame = skb->data + ring->frameoffset;
577 memset(frame, 0xFF, sizeof(struct b43_plcp_hdr6) + 2 /* padding */);
578}
579
558static int setup_rx_descbuffer(struct b43_dmaring *ring, 580static int setup_rx_descbuffer(struct b43_dmaring *ring,
559 struct b43_dmadesc_generic *desc, 581 struct b43_dmadesc_generic *desc,
560 struct b43_dmadesc_meta *meta, gfp_t gfp_flags) 582 struct b43_dmadesc_meta *meta, gfp_t gfp_flags)
561{ 583{
562 struct b43_rxhdr_fw4 *rxhdr;
563 dma_addr_t dmaaddr; 584 dma_addr_t dmaaddr;
564 struct sk_buff *skb; 585 struct sk_buff *skb;
565 586
@@ -568,6 +589,7 @@ static int setup_rx_descbuffer(struct b43_dmaring *ring,
568 skb = __dev_alloc_skb(ring->rx_buffersize, gfp_flags); 589 skb = __dev_alloc_skb(ring->rx_buffersize, gfp_flags);
569 if (unlikely(!skb)) 590 if (unlikely(!skb))
570 return -ENOMEM; 591 return -ENOMEM;
592 b43_poison_rx_buffer(ring, skb);
571 dmaaddr = map_descbuffer(ring, skb->data, ring->rx_buffersize, 0); 593 dmaaddr = map_descbuffer(ring, skb->data, ring->rx_buffersize, 0);
572 if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { 594 if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) {
573 /* ugh. try to realloc in zone_dma */ 595 /* ugh. try to realloc in zone_dma */
@@ -578,6 +600,7 @@ static int setup_rx_descbuffer(struct b43_dmaring *ring,
578 skb = __dev_alloc_skb(ring->rx_buffersize, gfp_flags); 600 skb = __dev_alloc_skb(ring->rx_buffersize, gfp_flags);
579 if (unlikely(!skb)) 601 if (unlikely(!skb))
580 return -ENOMEM; 602 return -ENOMEM;
603 b43_poison_rx_buffer(ring, skb);
581 dmaaddr = map_descbuffer(ring, skb->data, 604 dmaaddr = map_descbuffer(ring, skb->data,
582 ring->rx_buffersize, 0); 605 ring->rx_buffersize, 0);
583 if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { 606 if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) {
@@ -592,9 +615,6 @@ static int setup_rx_descbuffer(struct b43_dmaring *ring,
592 ring->ops->fill_descriptor(ring, desc, dmaaddr, 615 ring->ops->fill_descriptor(ring, desc, dmaaddr,
593 ring->rx_buffersize, 0, 0, 0); 616 ring->rx_buffersize, 0, 0, 0);
594 617
595 rxhdr = (struct b43_rxhdr_fw4 *)(skb->data);
596 rxhdr->frame_len = 0;
597
598 return 0; 618 return 0;
599} 619}
600 620
@@ -1483,12 +1503,17 @@ static void dma_rx(struct b43_dmaring *ring, int *slot)
1483 len = le16_to_cpu(rxhdr->frame_len); 1503 len = le16_to_cpu(rxhdr->frame_len);
1484 } while (len == 0 && i++ < 5); 1504 } while (len == 0 && i++ < 5);
1485 if (unlikely(len == 0)) { 1505 if (unlikely(len == 0)) {
1486 /* recycle the descriptor buffer. */ 1506 dmaaddr = meta->dmaaddr;
1487 sync_descbuffer_for_device(ring, meta->dmaaddr, 1507 goto drop_recycle_buffer;
1488 ring->rx_buffersize);
1489 goto drop;
1490 } 1508 }
1491 } 1509 }
1510 if (unlikely(b43_rx_buffer_is_poisoned(ring, skb))) {
1511 /* Something went wrong with the DMA.
1512 * The device did not touch the buffer and did not overwrite the poison. */
1513 b43dbg(ring->dev->wl, "DMA RX: Dropping poisoned buffer.\n");
1514 dmaaddr = meta->dmaaddr;
1515 goto drop_recycle_buffer;
1516 }
1492 if (unlikely(len > ring->rx_buffersize)) { 1517 if (unlikely(len > ring->rx_buffersize)) {
1493 /* The data did not fit into one descriptor buffer 1518 /* The data did not fit into one descriptor buffer
1494 * and is split over multiple buffers. 1519 * and is split over multiple buffers.
@@ -1501,6 +1526,7 @@ static void dma_rx(struct b43_dmaring *ring, int *slot)
1501 while (1) { 1526 while (1) {
1502 desc = ops->idx2desc(ring, *slot, &meta); 1527 desc = ops->idx2desc(ring, *slot, &meta);
1503 /* recycle the descriptor buffer. */ 1528 /* recycle the descriptor buffer. */
1529 b43_poison_rx_buffer(ring, meta->skb);
1504 sync_descbuffer_for_device(ring, meta->dmaaddr, 1530 sync_descbuffer_for_device(ring, meta->dmaaddr,
1505 ring->rx_buffersize); 1531 ring->rx_buffersize);
1506 *slot = next_slot(ring, *slot); 1532 *slot = next_slot(ring, *slot);
@@ -1519,8 +1545,7 @@ static void dma_rx(struct b43_dmaring *ring, int *slot)
1519 err = setup_rx_descbuffer(ring, desc, meta, GFP_ATOMIC); 1545 err = setup_rx_descbuffer(ring, desc, meta, GFP_ATOMIC);
1520 if (unlikely(err)) { 1546 if (unlikely(err)) {
1521 b43dbg(ring->dev->wl, "DMA RX: setup_rx_descbuffer() failed\n"); 1547 b43dbg(ring->dev->wl, "DMA RX: setup_rx_descbuffer() failed\n");
1522 sync_descbuffer_for_device(ring, dmaaddr, ring->rx_buffersize); 1548 goto drop_recycle_buffer;
1523 goto drop;
1524 } 1549 }
1525 1550
1526 unmap_descbuffer(ring, dmaaddr, ring->rx_buffersize, 0); 1551 unmap_descbuffer(ring, dmaaddr, ring->rx_buffersize, 0);
@@ -1530,6 +1555,11 @@ static void dma_rx(struct b43_dmaring *ring, int *slot)
1530 b43_rx(ring->dev, skb, rxhdr); 1555 b43_rx(ring->dev, skb, rxhdr);
1531drop: 1556drop:
1532 return; 1557 return;
1558
1559drop_recycle_buffer:
1560 /* Poison and recycle the RX buffer. */
1561 b43_poison_rx_buffer(ring, skb);
1562 sync_descbuffer_for_device(ring, dmaaddr, ring->rx_buffersize);
1533} 1563}
1534 1564
1535void b43_dma_rx(struct b43_dmaring *ring) 1565void b43_dma_rx(struct b43_dmaring *ring)
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 4896e0831114..79b685e300c7 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -3974,6 +3974,11 @@ static void setup_struct_phy_for_init(struct b43_wldev *dev,
3974 phy->next_txpwr_check_time = jiffies; 3974 phy->next_txpwr_check_time = jiffies;
3975 /* PHY TX errors counter. */ 3975 /* PHY TX errors counter. */
3976 atomic_set(&phy->txerr_cnt, B43_PHY_TX_BADNESS_LIMIT); 3976 atomic_set(&phy->txerr_cnt, B43_PHY_TX_BADNESS_LIMIT);
3977
3978#if B43_DEBUG
3979 phy->phy_locked = 0;
3980 phy->radio_locked = 0;
3981#endif
3977} 3982}
3978 3983
3979static void setup_struct_wldev_for_init(struct b43_wldev *dev) 3984static void setup_struct_wldev_for_init(struct b43_wldev *dev)
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index 026b61c03fb9..e176b6e0d9cf 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -131,12 +131,16 @@ void b43_radio_lock(struct b43_wldev *dev)
131{ 131{
132 u32 macctl; 132 u32 macctl;
133 133
134#if B43_DEBUG
135 B43_WARN_ON(dev->phy.radio_locked);
136 dev->phy.radio_locked = 1;
137#endif
138
134 macctl = b43_read32(dev, B43_MMIO_MACCTL); 139 macctl = b43_read32(dev, B43_MMIO_MACCTL);
135 B43_WARN_ON(macctl & B43_MACCTL_RADIOLOCK);
136 macctl |= B43_MACCTL_RADIOLOCK; 140 macctl |= B43_MACCTL_RADIOLOCK;
137 b43_write32(dev, B43_MMIO_MACCTL, macctl); 141 b43_write32(dev, B43_MMIO_MACCTL, macctl);
138 /* Commit the write and wait for the device 142 /* Commit the write and wait for the firmware
139 * to exit any radio register access. */ 143 * to finish any radio register access. */
140 b43_read32(dev, B43_MMIO_MACCTL); 144 b43_read32(dev, B43_MMIO_MACCTL);
141 udelay(10); 145 udelay(10);
142} 146}
@@ -145,11 +149,15 @@ void b43_radio_unlock(struct b43_wldev *dev)
145{ 149{
146 u32 macctl; 150 u32 macctl;
147 151
152#if B43_DEBUG
153 B43_WARN_ON(!dev->phy.radio_locked);
154 dev->phy.radio_locked = 0;
155#endif
156
148 /* Commit any write */ 157 /* Commit any write */
149 b43_read16(dev, B43_MMIO_PHY_VER); 158 b43_read16(dev, B43_MMIO_PHY_VER);
150 /* unlock */ 159 /* unlock */
151 macctl = b43_read32(dev, B43_MMIO_MACCTL); 160 macctl = b43_read32(dev, B43_MMIO_MACCTL);
152 B43_WARN_ON(!(macctl & B43_MACCTL_RADIOLOCK));
153 macctl &= ~B43_MACCTL_RADIOLOCK; 161 macctl &= ~B43_MACCTL_RADIOLOCK;
154 b43_write32(dev, B43_MMIO_MACCTL, macctl); 162 b43_write32(dev, B43_MMIO_MACCTL, macctl);
155} 163}
diff --git a/drivers/net/wireless/b43/phy_common.h b/drivers/net/wireless/b43/phy_common.h
index c9f5430d1d7d..b2d99101947b 100644
--- a/drivers/net/wireless/b43/phy_common.h
+++ b/drivers/net/wireless/b43/phy_common.h
@@ -245,8 +245,10 @@ struct b43_phy {
245 atomic_t txerr_cnt; 245 atomic_t txerr_cnt;
246 246
247#ifdef CONFIG_B43_DEBUG 247#ifdef CONFIG_B43_DEBUG
248 /* PHY registers locked by b43_phy_lock()? */ 248 /* PHY registers locked (w.r.t. firmware) */
249 bool phy_locked; 249 bool phy_locked;
250 /* Radio registers locked (w.r.t. firmware) */
251 bool radio_locked;
250#endif /* B43_DEBUG */ 252#endif /* B43_DEBUG */
251}; 253};
252 254
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 2399328e8de7..527525cc0919 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -1192,7 +1192,7 @@ int iwl3945_hw_nic_init(struct iwl_priv *priv)
1192 return -ENOMEM; 1192 return -ENOMEM;
1193 } 1193 }
1194 } else 1194 } else
1195 iwl_rx_queue_reset(priv, rxq); 1195 iwl3945_rx_queue_reset(priv, rxq);
1196 1196
1197 iwl3945_rx_replenish(priv); 1197 iwl3945_rx_replenish(priv);
1198 1198
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.h b/drivers/net/wireless/iwlwifi/iwl-3945.h
index ab7aaf6872c7..55188844657b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.h
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.h
@@ -215,6 +215,7 @@ extern int iwl3945_calc_sig_qual(int rssi_dbm, int noise_dbm);
215extern int iwl3945_tx_queue_init(struct iwl_priv *priv, 215extern int iwl3945_tx_queue_init(struct iwl_priv *priv,
216 struct iwl_tx_queue *txq, int count, u32 id); 216 struct iwl_tx_queue *txq, int count, u32 id);
217extern void iwl3945_rx_replenish(void *data); 217extern void iwl3945_rx_replenish(void *data);
218extern void iwl3945_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq);
218extern void iwl3945_tx_queue_free(struct iwl_priv *priv, struct iwl_tx_queue *txq); 219extern void iwl3945_tx_queue_free(struct iwl_priv *priv, struct iwl_tx_queue *txq);
219extern int iwl3945_send_cmd_pdu(struct iwl_priv *priv, u8 id, u16 len, 220extern int iwl3945_send_cmd_pdu(struct iwl_priv *priv, u8 id, u16 len,
220 const void *data); 221 const void *data);
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 3889158b359c..1ef4192207a5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -976,11 +976,9 @@ void iwl_rx_handle(struct iwl_priv *priv)
976 976
977 rxq->queue[i] = NULL; 977 rxq->queue[i] = NULL;
978 978
979 dma_sync_single_range_for_cpu( 979 pci_unmap_single(priv->pci_dev, rxb->real_dma_addr,
980 &priv->pci_dev->dev, rxb->real_dma_addr, 980 priv->hw_params.rx_buf_size + 256,
981 rxb->aligned_dma_addr - rxb->real_dma_addr, 981 PCI_DMA_FROMDEVICE);
982 priv->hw_params.rx_buf_size,
983 PCI_DMA_FROMDEVICE);
984 pkt = (struct iwl_rx_packet *)rxb->skb->data; 982 pkt = (struct iwl_rx_packet *)rxb->skb->data;
985 983
986 /* Reclaim a command buffer only if this packet is a response 984 /* Reclaim a command buffer only if this packet is a response
@@ -1031,9 +1029,6 @@ void iwl_rx_handle(struct iwl_priv *priv)
1031 rxb->skb = NULL; 1029 rxb->skb = NULL;
1032 } 1030 }
1033 1031
1034 pci_unmap_single(priv->pci_dev, rxb->real_dma_addr,
1035 priv->hw_params.rx_buf_size + 256,
1036 PCI_DMA_FROMDEVICE);
1037 spin_lock_irqsave(&rxq->lock, flags); 1032 spin_lock_irqsave(&rxq->lock, flags);
1038 list_add_tail(&rxb->list, &priv->rxq.rx_used); 1033 list_add_tail(&rxb->list, &priv->rxq.rx_used);
1039 spin_unlock_irqrestore(&rxq->lock, flags); 1034 spin_unlock_irqrestore(&rxq->lock, flags);
diff --git a/drivers/net/wireless/iwlwifi/iwl-csr.h b/drivers/net/wireless/iwlwifi/iwl-csr.h
index 2f1242447b3b..6e983149b83b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-csr.h
+++ b/drivers/net/wireless/iwlwifi/iwl-csr.h
@@ -223,7 +223,7 @@
223#define CSR_EEPROM_REG_MSK_DATA (0xFFFF0000) 223#define CSR_EEPROM_REG_MSK_DATA (0xFFFF0000)
224 224
225/* EEPROM GP */ 225/* EEPROM GP */
226#define CSR_EEPROM_GP_VALID_MSK (0x00000006) 226#define CSR_EEPROM_GP_VALID_MSK (0x00000007)
227#define CSR_EEPROM_GP_BAD_SIGNATURE (0x00000000) 227#define CSR_EEPROM_GP_BAD_SIGNATURE (0x00000000)
228#define CSR_EEPROM_GP_IF_OWNER_MSK (0x00000180) 228#define CSR_EEPROM_GP_IF_OWNER_MSK (0x00000180)
229 229
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index ec9a13846edd..cf7f0db58fcf 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -360,12 +360,16 @@ struct iwl_host_cmd {
360 360
361/** 361/**
362 * struct iwl_rx_queue - Rx queue 362 * struct iwl_rx_queue - Rx queue
363 * @bd: driver's pointer to buffer of receive buffer descriptors (rbd)
364 * @dma_addr: bus address of buffer of receive buffer descriptors (rbd)
363 * @read: Shared index to newest available Rx buffer 365 * @read: Shared index to newest available Rx buffer
364 * @write: Shared index to oldest written Rx packet 366 * @write: Shared index to oldest written Rx packet
365 * @free_count: Number of pre-allocated buffers in rx_free 367 * @free_count: Number of pre-allocated buffers in rx_free
366 * @rx_free: list of free SKBs for use 368 * @rx_free: list of free SKBs for use
367 * @rx_used: List of Rx buffers with no SKB 369 * @rx_used: List of Rx buffers with no SKB
368 * @need_update: flag to indicate we need to update read/write index 370 * @need_update: flag to indicate we need to update read/write index
371 * @rb_stts: driver's pointer to receive buffer status
372 * @rb_stts_dma: bus address of receive buffer status
369 * 373 *
370 * NOTE: rx_free and rx_used are used as a FIFO for iwl_rx_mem_buffers 374 * NOTE: rx_free and rx_used are used as a FIFO for iwl_rx_mem_buffers
371 */ 375 */
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
index 1f117a49c569..71d5b8a1a73e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
@@ -799,6 +799,22 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
799 /* Copy MAC header from skb into command buffer */ 799 /* Copy MAC header from skb into command buffer */
800 memcpy(tx_cmd->hdr, hdr, hdr_len); 800 memcpy(tx_cmd->hdr, hdr, hdr_len);
801 801
802
803 /* Total # bytes to be transmitted */
804 len = (u16)skb->len;
805 tx_cmd->len = cpu_to_le16(len);
806
807 if (info->control.hw_key)
808 iwl_tx_cmd_build_hwcrypto(priv, info, tx_cmd, skb, sta_id);
809
810 /* TODO need this for burst mode later on */
811 iwl_tx_cmd_build_basic(priv, tx_cmd, info, hdr, sta_id);
812
813 /* set is_hcca to 0; it probably will never be implemented */
814 iwl_tx_cmd_build_rate(priv, tx_cmd, info, fc, sta_id, 0);
815
816 iwl_update_tx_stats(priv, le16_to_cpu(fc), len);
817
802 /* 818 /*
803 * Use the first empty entry in this queue's command buffer array 819 * Use the first empty entry in this queue's command buffer array
804 * to contain the Tx command and MAC header concatenated together 820 * to contain the Tx command and MAC header concatenated together
@@ -819,21 +835,30 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
819 else 835 else
820 len_org = 0; 836 len_org = 0;
821 837
838 /* Tell NIC about any 2-byte padding after MAC header */
839 if (len_org)
840 tx_cmd->tx_flags |= TX_CMD_FLG_MH_PAD_MSK;
841
822 /* Physical address of this Tx command's header (not MAC header!), 842 /* Physical address of this Tx command's header (not MAC header!),
823 * within command buffer array. */ 843 * within command buffer array. */
824 txcmd_phys = pci_map_single(priv->pci_dev, 844 txcmd_phys = pci_map_single(priv->pci_dev,
825 out_cmd, sizeof(struct iwl_cmd), 845 &out_cmd->hdr, len,
826 PCI_DMA_BIDIRECTIONAL); 846 PCI_DMA_BIDIRECTIONAL);
827 pci_unmap_addr_set(&out_cmd->meta, mapping, txcmd_phys); 847 pci_unmap_addr_set(&out_cmd->meta, mapping, txcmd_phys);
828 pci_unmap_len_set(&out_cmd->meta, len, sizeof(struct iwl_cmd)); 848 pci_unmap_len_set(&out_cmd->meta, len, len);
829 /* Add buffer containing Tx command and MAC(!) header to TFD's 849 /* Add buffer containing Tx command and MAC(!) header to TFD's
830 * first entry */ 850 * first entry */
831 txcmd_phys += offsetof(struct iwl_cmd, hdr);
832 priv->cfg->ops->lib->txq_attach_buf_to_tfd(priv, txq, 851 priv->cfg->ops->lib->txq_attach_buf_to_tfd(priv, txq,
833 txcmd_phys, len, 1, 0); 852 txcmd_phys, len, 1, 0);
834 853
835 if (info->control.hw_key) 854 if (!ieee80211_has_morefrags(hdr->frame_control)) {
836 iwl_tx_cmd_build_hwcrypto(priv, info, tx_cmd, skb, sta_id); 855 txq->need_update = 1;
856 if (qc)
857 priv->stations[sta_id].tid[tid].seq_number = seq_number;
858 } else {
859 wait_write_ptr = 1;
860 txq->need_update = 0;
861 }
837 862
838 /* Set up TFD's 2nd entry to point directly to remainder of skb, 863 /* Set up TFD's 2nd entry to point directly to remainder of skb,
839 * if any (802.11 null frames have no payload). */ 864 * if any (802.11 null frames have no payload). */
@@ -846,41 +871,29 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
846 0, 0); 871 0, 0);
847 } 872 }
848 873
849 /* Tell NIC about any 2-byte padding after MAC header */
850 if (len_org)
851 tx_cmd->tx_flags |= TX_CMD_FLG_MH_PAD_MSK;
852
853 /* Total # bytes to be transmitted */
854 len = (u16)skb->len;
855 tx_cmd->len = cpu_to_le16(len);
856 /* TODO need this for burst mode later on */
857 iwl_tx_cmd_build_basic(priv, tx_cmd, info, hdr, sta_id);
858
859 /* set is_hcca to 0; it probably will never be implemented */
860 iwl_tx_cmd_build_rate(priv, tx_cmd, info, fc, sta_id, 0);
861
862 iwl_update_tx_stats(priv, le16_to_cpu(fc), len);
863
864 scratch_phys = txcmd_phys + sizeof(struct iwl_cmd_header) + 874 scratch_phys = txcmd_phys + sizeof(struct iwl_cmd_header) +
865 offsetof(struct iwl_tx_cmd, scratch); 875 offsetof(struct iwl_tx_cmd, scratch);
876
877 len = sizeof(struct iwl_tx_cmd) +
878 sizeof(struct iwl_cmd_header) + hdr_len;
879 /* take back ownership of DMA buffer to enable update */
880 pci_dma_sync_single_for_cpu(priv->pci_dev, txcmd_phys,
881 len, PCI_DMA_BIDIRECTIONAL);
866 tx_cmd->dram_lsb_ptr = cpu_to_le32(scratch_phys); 882 tx_cmd->dram_lsb_ptr = cpu_to_le32(scratch_phys);
867 tx_cmd->dram_msb_ptr = iwl_get_dma_hi_addr(scratch_phys); 883 tx_cmd->dram_msb_ptr = iwl_get_dma_hi_addr(scratch_phys);
868 884
869 if (!ieee80211_has_morefrags(hdr->frame_control)) { 885 IWL_DEBUG_TX(priv, "sequence nr = 0X%x \n",
870 txq->need_update = 1; 886 le16_to_cpu(out_cmd->hdr.sequence));
871 if (qc) 887 IWL_DEBUG_TX(priv, "tx_flags = 0X%x \n", le32_to_cpu(tx_cmd->tx_flags));
872 priv->stations[sta_id].tid[tid].seq_number = seq_number;
873 } else {
874 wait_write_ptr = 1;
875 txq->need_update = 0;
876 }
877
878 iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx_cmd, sizeof(*tx_cmd)); 888 iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx_cmd, sizeof(*tx_cmd));
879
880 iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx_cmd->hdr, hdr_len); 889 iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx_cmd->hdr, hdr_len);
881 890
882 /* Set up entry for this TFD in Tx byte-count array */ 891 /* Set up entry for this TFD in Tx byte-count array */
883 priv->cfg->ops->lib->txq_update_byte_cnt_tbl(priv, txq, len); 892 priv->cfg->ops->lib->txq_update_byte_cnt_tbl(priv, txq,
893 le16_to_cpu(tx_cmd->len));
894
895 pci_dma_sync_single_for_device(priv->pci_dev, txcmd_phys,
896 len, PCI_DMA_BIDIRECTIONAL);
884 897
885 /* Tell device the write index *just past* this latest filled TFD */ 898 /* Tell device the write index *just past* this latest filled TFD */
886 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd); 899 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd);
@@ -968,18 +981,9 @@ int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
968 INDEX_TO_SEQ(q->write_ptr)); 981 INDEX_TO_SEQ(q->write_ptr));
969 if (out_cmd->meta.flags & CMD_SIZE_HUGE) 982 if (out_cmd->meta.flags & CMD_SIZE_HUGE)
970 out_cmd->hdr.sequence |= SEQ_HUGE_FRAME; 983 out_cmd->hdr.sequence |= SEQ_HUGE_FRAME;
971 len = (idx == TFD_CMD_SLOTS) ? 984 len = sizeof(struct iwl_cmd) - sizeof(struct iwl_cmd_meta);
972 IWL_MAX_SCAN_SIZE : sizeof(struct iwl_cmd); 985 len += (idx == TFD_CMD_SLOTS) ? IWL_MAX_SCAN_SIZE : 0;
973
974 phys_addr = pci_map_single(priv->pci_dev, out_cmd,
975 len, PCI_DMA_BIDIRECTIONAL);
976 pci_unmap_addr_set(&out_cmd->meta, mapping, phys_addr);
977 pci_unmap_len_set(&out_cmd->meta, len, len);
978 phys_addr += offsetof(struct iwl_cmd, hdr);
979 986
980 priv->cfg->ops->lib->txq_attach_buf_to_tfd(priv, txq,
981 phys_addr, fix_size, 1,
982 U32_PAD(cmd->len));
983 987
984#ifdef CONFIG_IWLWIFI_DEBUG 988#ifdef CONFIG_IWLWIFI_DEBUG
985 switch (out_cmd->hdr.cmd) { 989 switch (out_cmd->hdr.cmd) {
@@ -1007,6 +1011,15 @@ int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
1007 /* Set up entry in queue's byte count circular buffer */ 1011 /* Set up entry in queue's byte count circular buffer */
1008 priv->cfg->ops->lib->txq_update_byte_cnt_tbl(priv, txq, 0); 1012 priv->cfg->ops->lib->txq_update_byte_cnt_tbl(priv, txq, 0);
1009 1013
1014 phys_addr = pci_map_single(priv->pci_dev, &out_cmd->hdr,
1015 fix_size, PCI_DMA_BIDIRECTIONAL);
1016 pci_unmap_addr_set(&out_cmd->meta, mapping, phys_addr);
1017 pci_unmap_len_set(&out_cmd->meta, len, fix_size);
1018
1019 priv->cfg->ops->lib->txq_attach_buf_to_tfd(priv, txq,
1020 phys_addr, fix_size, 1,
1021 U32_PAD(cmd->len));
1022
1010 /* Increment and update queue's write index */ 1023 /* Increment and update queue's write index */
1011 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd); 1024 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd);
1012 ret = iwl_txq_update_write_ptr(priv, txq); 1025 ret = iwl_txq_update_write_ptr(priv, txq);
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index ce729281ff62..617c4235d971 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -972,7 +972,7 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
972 dma_addr_t phys_addr; 972 dma_addr_t phys_addr;
973 dma_addr_t txcmd_phys; 973 dma_addr_t txcmd_phys;
974 int txq_id = skb_get_queue_mapping(skb); 974 int txq_id = skb_get_queue_mapping(skb);
975 u16 len, idx, len_org, hdr_len; 975 u16 len, idx, len_org, hdr_len; /* TODO: len_org is not used */
976 u8 id; 976 u8 id;
977 u8 unicast; 977 u8 unicast;
978 u8 sta_id; 978 u8 sta_id;
@@ -1074,6 +1074,40 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
1074 /* Copy MAC header from skb into command buffer */ 1074 /* Copy MAC header from skb into command buffer */
1075 memcpy(tx->hdr, hdr, hdr_len); 1075 memcpy(tx->hdr, hdr, hdr_len);
1076 1076
1077
1078 if (info->control.hw_key)
1079 iwl3945_build_tx_cmd_hwcrypto(priv, info, out_cmd, skb, sta_id);
1080
1081 /* TODO need this for burst mode later on */
1082 iwl3945_build_tx_cmd_basic(priv, out_cmd, info, hdr, sta_id);
1083
1084 /* set is_hcca to 0; it probably will never be implemented */
1085 iwl3945_hw_build_tx_cmd_rate(priv, out_cmd, info, hdr, sta_id, 0);
1086
1087 /* Total # bytes to be transmitted */
1088 len = (u16)skb->len;
1089 tx->len = cpu_to_le16(len);
1090
1091
1092 tx->tx_flags &= ~TX_CMD_FLG_ANT_A_MSK;
1093 tx->tx_flags &= ~TX_CMD_FLG_ANT_B_MSK;
1094
1095 if (!ieee80211_has_morefrags(hdr->frame_control)) {
1096 txq->need_update = 1;
1097 if (qc)
1098 priv->stations_39[sta_id].tid[tid].seq_number = seq_number;
1099 } else {
1100 wait_write_ptr = 1;
1101 txq->need_update = 0;
1102 }
1103
1104 IWL_DEBUG_TX(priv, "sequence nr = 0X%x \n",
1105 le16_to_cpu(out_cmd->hdr.sequence));
1106 IWL_DEBUG_TX(priv, "tx_flags = 0X%x \n", le32_to_cpu(tx->tx_flags));
1107 iwl_print_hex_dump(priv, IWL_DL_TX, tx, sizeof(*tx));
1108 iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx->hdr,
1109 ieee80211_hdrlen(fc));
1110
1077 /* 1111 /*
1078 * Use the first empty entry in this queue's command buffer array 1112 * Use the first empty entry in this queue's command buffer array
1079 * to contain the Tx command and MAC header concatenated together 1113 * to contain the Tx command and MAC header concatenated together
@@ -1096,22 +1130,18 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
1096 1130
1097 /* Physical address of this Tx command's header (not MAC header!), 1131 /* Physical address of this Tx command's header (not MAC header!),
1098 * within command buffer array. */ 1132 * within command buffer array. */
1099 txcmd_phys = pci_map_single(priv->pci_dev, 1133 txcmd_phys = pci_map_single(priv->pci_dev, &out_cmd->hdr,
1100 out_cmd, sizeof(struct iwl_cmd), 1134 len, PCI_DMA_TODEVICE);
1101 PCI_DMA_TODEVICE); 1135 /* we do not map meta data ... so we can safely access address to
1136 * provide to unmap command*/
1102 pci_unmap_addr_set(&out_cmd->meta, mapping, txcmd_phys); 1137 pci_unmap_addr_set(&out_cmd->meta, mapping, txcmd_phys);
1103 pci_unmap_len_set(&out_cmd->meta, len, sizeof(struct iwl_cmd)); 1138 pci_unmap_len_set(&out_cmd->meta, len, len);
1104 /* Add buffer containing Tx command and MAC(!) header to TFD's
1105 * first entry */
1106 txcmd_phys += offsetof(struct iwl_cmd, hdr);
1107 1139
1108 /* Add buffer containing Tx command and MAC(!) header to TFD's 1140 /* Add buffer containing Tx command and MAC(!) header to TFD's
1109 * first entry */ 1141 * first entry */
1110 priv->cfg->ops->lib->txq_attach_buf_to_tfd(priv, txq, 1142 priv->cfg->ops->lib->txq_attach_buf_to_tfd(priv, txq,
1111 txcmd_phys, len, 1, 0); 1143 txcmd_phys, len, 1, 0);
1112 1144
1113 if (info->control.hw_key)
1114 iwl3945_build_tx_cmd_hwcrypto(priv, info, out_cmd, skb, sta_id);
1115 1145
1116 /* Set up TFD's 2nd entry to point directly to remainder of skb, 1146 /* Set up TFD's 2nd entry to point directly to remainder of skb,
1117 * if any (802.11 null frames have no payload). */ 1147 * if any (802.11 null frames have no payload). */
@@ -1124,32 +1154,6 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
1124 0, U32_PAD(len)); 1154 0, U32_PAD(len));
1125 } 1155 }
1126 1156
1127 /* Total # bytes to be transmitted */
1128 len = (u16)skb->len;
1129 tx->len = cpu_to_le16(len);
1130
1131 /* TODO need this for burst mode later on */
1132 iwl3945_build_tx_cmd_basic(priv, out_cmd, info, hdr, sta_id);
1133
1134 /* set is_hcca to 0; it probably will never be implemented */
1135 iwl3945_hw_build_tx_cmd_rate(priv, out_cmd, info, hdr, sta_id, 0);
1136
1137 tx->tx_flags &= ~TX_CMD_FLG_ANT_A_MSK;
1138 tx->tx_flags &= ~TX_CMD_FLG_ANT_B_MSK;
1139
1140 if (!ieee80211_has_morefrags(hdr->frame_control)) {
1141 txq->need_update = 1;
1142 if (qc)
1143 priv->stations_39[sta_id].tid[tid].seq_number = seq_number;
1144 } else {
1145 wait_write_ptr = 1;
1146 txq->need_update = 0;
1147 }
1148
1149 iwl_print_hex_dump(priv, IWL_DL_TX, tx, sizeof(*tx));
1150
1151 iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx->hdr,
1152 ieee80211_hdrlen(fc));
1153 1157
1154 /* Tell device the write index *just past* this latest filled TFD */ 1158 /* Tell device the write index *just past* this latest filled TFD */
1155 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd); 1159 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd);
@@ -1661,6 +1665,37 @@ static void iwl3945_rx_allocate(struct iwl_priv *priv)
1661 spin_unlock_irqrestore(&rxq->lock, flags); 1665 spin_unlock_irqrestore(&rxq->lock, flags);
1662} 1666}
1663 1667
1668void iwl3945_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
1669{
1670 unsigned long flags;
1671 int i;
1672 spin_lock_irqsave(&rxq->lock, flags);
1673 INIT_LIST_HEAD(&rxq->rx_free);
1674 INIT_LIST_HEAD(&rxq->rx_used);
1675 /* Fill the rx_used queue with _all_ of the Rx buffers */
1676 for (i = 0; i < RX_FREE_BUFFERS + RX_QUEUE_SIZE; i++) {
1677 /* In the reset function, these buffers may have been allocated
1678 * to an SKB, so we need to unmap and free potential storage */
1679 if (rxq->pool[i].skb != NULL) {
1680 pci_unmap_single(priv->pci_dev,
1681 rxq->pool[i].real_dma_addr,
1682 priv->hw_params.rx_buf_size,
1683 PCI_DMA_FROMDEVICE);
1684 priv->alloc_rxb_skb--;
1685 dev_kfree_skb(rxq->pool[i].skb);
1686 rxq->pool[i].skb = NULL;
1687 }
1688 list_add_tail(&rxq->pool[i].list, &rxq->rx_used);
1689 }
1690
1691 /* Set us so that we have processed and used all buffers, but have
1692 * not restocked the Rx queue with fresh buffers */
1693 rxq->read = rxq->write = 0;
1694 rxq->free_count = 0;
1695 spin_unlock_irqrestore(&rxq->lock, flags);
1696}
1697EXPORT_SYMBOL(iwl3945_rx_queue_reset);
1698
1664/* 1699/*
1665 * this should be called while priv->lock is locked 1700 * this should be called while priv->lock is locked
1666 */ 1701 */
@@ -1685,6 +1720,34 @@ void iwl3945_rx_replenish(void *data)
1685 spin_unlock_irqrestore(&priv->lock, flags); 1720 spin_unlock_irqrestore(&priv->lock, flags);
1686} 1721}
1687 1722
1723/* Assumes that the skb field of the buffers in 'pool' is kept accurate.
1724 * If an SKB has been detached, the POOL needs to have its SKB set to NULL
1725 * This free routine walks the list of POOL entries and if SKB is set to
1726 * non NULL it is unmapped and freed
1727 */
1728static void iwl3945_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
1729{
1730 int i;
1731 for (i = 0; i < RX_QUEUE_SIZE + RX_FREE_BUFFERS; i++) {
1732 if (rxq->pool[i].skb != NULL) {
1733 pci_unmap_single(priv->pci_dev,
1734 rxq->pool[i].real_dma_addr,
1735 priv->hw_params.rx_buf_size,
1736 PCI_DMA_FROMDEVICE);
1737 dev_kfree_skb(rxq->pool[i].skb);
1738 }
1739 }
1740
1741 pci_free_consistent(priv->pci_dev, 4 * RX_QUEUE_SIZE, rxq->bd,
1742 rxq->dma_addr);
1743 pci_free_consistent(priv->pci_dev, sizeof(struct iwl_rb_status),
1744 rxq->rb_stts, rxq->rb_stts_dma);
1745 rxq->bd = NULL;
1746 rxq->rb_stts = NULL;
1747}
1748EXPORT_SYMBOL(iwl3945_rx_queue_free);
1749
1750
1688/* Convert linear signal-to-noise ratio into dB */ 1751/* Convert linear signal-to-noise ratio into dB */
1689static u8 ratio2dB[100] = { 1752static u8 ratio2dB[100] = {
1690/* 0 1 2 3 4 5 6 7 8 9 */ 1753/* 0 1 2 3 4 5 6 7 8 9 */
@@ -1802,9 +1865,9 @@ static void iwl3945_rx_handle(struct iwl_priv *priv)
1802 1865
1803 rxq->queue[i] = NULL; 1866 rxq->queue[i] = NULL;
1804 1867
1805 pci_dma_sync_single_for_cpu(priv->pci_dev, rxb->real_dma_addr, 1868 pci_unmap_single(priv->pci_dev, rxb->real_dma_addr,
1806 priv->hw_params.rx_buf_size, 1869 priv->hw_params.rx_buf_size,
1807 PCI_DMA_FROMDEVICE); 1870 PCI_DMA_FROMDEVICE);
1808 pkt = (struct iwl_rx_packet *)rxb->skb->data; 1871 pkt = (struct iwl_rx_packet *)rxb->skb->data;
1809 1872
1810 /* Reclaim a command buffer only if this packet is a response 1873 /* Reclaim a command buffer only if this packet is a response
@@ -1852,9 +1915,6 @@ static void iwl3945_rx_handle(struct iwl_priv *priv)
1852 rxb->skb = NULL; 1915 rxb->skb = NULL;
1853 } 1916 }
1854 1917
1855 pci_unmap_single(priv->pci_dev, rxb->real_dma_addr,
1856 priv->hw_params.rx_buf_size,
1857 PCI_DMA_FROMDEVICE);
1858 spin_lock_irqsave(&rxq->lock, flags); 1918 spin_lock_irqsave(&rxq->lock, flags);
1859 list_add_tail(&rxb->list, &priv->rxq.rx_used); 1919 list_add_tail(&rxb->list, &priv->rxq.rx_used);
1860 spin_unlock_irqrestore(&rxq->lock, flags); 1920 spin_unlock_irqrestore(&rxq->lock, flags);
@@ -4075,7 +4135,7 @@ static int iwl3945_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
4075 if (!static_key) { 4135 if (!static_key) {
4076 sta_id = iwl3945_hw_find_station(priv, addr); 4136 sta_id = iwl3945_hw_find_station(priv, addr);
4077 if (sta_id == IWL_INVALID_STATION) { 4137 if (sta_id == IWL_INVALID_STATION) {
4078 IWL_DEBUG_MAC80211(priv, "leave - %pMnot in station map.\n", 4138 IWL_DEBUG_MAC80211(priv, "leave - %pM not in station map.\n",
4079 addr); 4139 addr);
4080 return -EINVAL; 4140 return -EINVAL;
4081 } 4141 }
@@ -4913,6 +4973,8 @@ static int iwl3945_setup_mac(struct iwl_priv *priv)
4913 4973
4914 hw->wiphy->custom_regulatory = true; 4974 hw->wiphy->custom_regulatory = true;
4915 4975
4976 hw->wiphy->max_scan_ssids = 1; /* WILL FIX */
4977
4916 /* Default value; 4 EDCA QOS priorities */ 4978 /* Default value; 4 EDCA QOS priorities */
4917 hw->queues = 4; 4979 hw->queues = 4;
4918 4980
@@ -5194,12 +5256,12 @@ static void __devexit iwl3945_pci_remove(struct pci_dev *pdev)
5194 sysfs_remove_group(&pdev->dev.kobj, &iwl3945_attribute_group); 5256 sysfs_remove_group(&pdev->dev.kobj, &iwl3945_attribute_group);
5195 5257
5196 iwl_rfkill_unregister(priv); 5258 iwl_rfkill_unregister(priv);
5197 cancel_delayed_work(&priv->rfkill_poll); 5259 cancel_delayed_work_sync(&priv->rfkill_poll);
5198 5260
5199 iwl3945_dealloc_ucode_pci(priv); 5261 iwl3945_dealloc_ucode_pci(priv);
5200 5262
5201 if (priv->rxq.bd) 5263 if (priv->rxq.bd)
5202 iwl_rx_queue_free(priv, &priv->rxq); 5264 iwl3945_rx_queue_free(priv, &priv->rxq);
5203 iwl3945_hw_txq_ctx_free(priv); 5265 iwl3945_hw_txq_ctx_free(priv);
5204 5266
5205 iwl3945_unset_hw_params(priv); 5267 iwl3945_unset_hw_params(priv);
diff --git a/drivers/net/wireless/libertas/rx.c b/drivers/net/wireless/libertas/rx.c
index 63d7e19ce9bd..8e669775cb5d 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c
@@ -170,6 +170,7 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
170 lbs_deb_rx("rx err: frame received with bad length\n"); 170 lbs_deb_rx("rx err: frame received with bad length\n");
171 dev->stats.rx_length_errors++; 171 dev->stats.rx_length_errors++;
172 ret = 0; 172 ret = 0;
173 dev_kfree_skb(skb);
173 goto done; 174 goto done;
174 } 175 }
175 176
@@ -181,6 +182,7 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
181 lbs_pr_alert("rxpd not ok\n"); 182 lbs_pr_alert("rxpd not ok\n");
182 dev->stats.rx_errors++; 183 dev->stats.rx_errors++;
183 ret = 0; 184 ret = 0;
185 dev_kfree_skb(skb);
184 goto done; 186 goto done;
185 } 187 }
186 188
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index 57a0268d1bae..a9a970469c2a 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -893,8 +893,7 @@ static int mwl8k_rxq_init(struct ieee80211_hw *hw, int index)
893 rx_desc->next_rx_desc_phys_addr = 893 rx_desc->next_rx_desc_phys_addr =
894 cpu_to_le32(rxq->rx_desc_dma 894 cpu_to_le32(rxq->rx_desc_dma
895 + nexti * sizeof(*rx_desc)); 895 + nexti * sizeof(*rx_desc));
896 rx_desc->rx_ctrl = 896 rx_desc->rx_ctrl = MWL8K_RX_CTRL_OWNED_BY_HOST;
897 cpu_to_le32(MWL8K_RX_CTRL_OWNED_BY_HOST);
898 } 897 }
899 898
900 return 0; 899 return 0;
@@ -3720,12 +3719,12 @@ err_free_reg:
3720 return rc; 3719 return rc;
3721} 3720}
3722 3721
3723static void __devexit mwl8k_remove(struct pci_dev *pdev) 3722static void __devexit mwl8k_shutdown(struct pci_dev *pdev)
3724{ 3723{
3725 printk(KERN_ERR "===>%s(%u)\n", __func__, __LINE__); 3724 printk(KERN_ERR "===>%s(%u)\n", __func__, __LINE__);
3726} 3725}
3727 3726
3728static void __devexit mwl8k_shutdown(struct pci_dev *pdev) 3727static void __devexit mwl8k_remove(struct pci_dev *pdev)
3729{ 3728{
3730 struct ieee80211_hw *hw = pci_get_drvdata(pdev); 3729 struct ieee80211_hw *hw = pci_get_drvdata(pdev);
3731 struct mwl8k_priv *priv; 3730 struct mwl8k_priv *priv;
diff --git a/drivers/net/wireless/orinoco/hw.c b/drivers/net/wireless/orinoco/hw.c
index 081428d9409e..632fac86a308 100644
--- a/drivers/net/wireless/orinoco/hw.c
+++ b/drivers/net/wireless/orinoco/hw.c
@@ -372,15 +372,13 @@ int __orinoco_hw_set_tkip_key(hermes_t *hw, int key_idx, int set_tx,
372 } 372 }
373 373
374 /* Wait upto 100ms for tx queue to empty */ 374 /* Wait upto 100ms for tx queue to empty */
375 k = 100; 375 for (k = 100; k > 0; k--) {
376 do {
377 k--;
378 udelay(1000); 376 udelay(1000);
379 ret = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_TXQUEUEEMPTY, 377 ret = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_TXQUEUEEMPTY,
380 &xmitting); 378 &xmitting);
381 if (ret) 379 if (ret || !xmitting)
382 break; 380 break;
383 } while ((k > 0) && xmitting); 381 }
384 382
385 if (k == 0) 383 if (k == 0)
386 ret = -ETIMEDOUT; 384 ret = -ETIMEDOUT;
diff --git a/drivers/net/wireless/p54/p54.h b/drivers/net/wireless/p54/p54.h
index 2dda5fe418b6..ecf8b6ed5a47 100644
--- a/drivers/net/wireless/p54/p54.h
+++ b/drivers/net/wireless/p54/p54.h
@@ -14,9 +14,9 @@
14 * published by the Free Software Foundation. 14 * published by the Free Software Foundation.
15 */ 15 */
16 16
17#ifdef CONFIG_MAC80211_LEDS 17#ifdef CONFIG_P54_LEDS
18#include <linux/leds.h> 18#include <linux/leds.h>
19#endif /* CONFIG_MAC80211_LEDS */ 19#endif /* CONFIG_P54_LEDS */
20 20
21enum p54_control_frame_types { 21enum p54_control_frame_types {
22 P54_CONTROL_TYPE_SETUP = 0, 22 P54_CONTROL_TYPE_SETUP = 0,
@@ -116,7 +116,7 @@ enum fw_state {
116 FW_STATE_RESETTING, 116 FW_STATE_RESETTING,
117}; 117};
118 118
119#ifdef CONFIG_MAC80211_LEDS 119#ifdef CONFIG_P54_LEDS
120 120
121#define P54_LED_MAX_NAME_LEN 31 121#define P54_LED_MAX_NAME_LEN 31
122 122
@@ -129,7 +129,7 @@ struct p54_led_dev {
129 unsigned int registered; 129 unsigned int registered;
130}; 130};
131 131
132#endif /* CONFIG_MAC80211_LEDS */ 132#endif /* CONFIG_P54_LEDS */
133 133
134struct p54_common { 134struct p54_common {
135 struct ieee80211_hw *hw; 135 struct ieee80211_hw *hw;
@@ -177,10 +177,10 @@ struct p54_common {
177 u8 privacy_caps; 177 u8 privacy_caps;
178 u8 rx_keycache_size; 178 u8 rx_keycache_size;
179 /* LED management */ 179 /* LED management */
180 #ifdef CONFIG_MAC80211_LEDS 180#ifdef CONFIG_P54_LEDS
181 struct p54_led_dev assoc_led; 181 struct p54_led_dev assoc_led;
182 struct p54_led_dev tx_led; 182 struct p54_led_dev tx_led;
183 #endif /* CONFIG_MAC80211_LEDS */ 183#endif /* CONFIG_P54_LEDS */
184 u16 softled_state; /* bit field of glowing LEDs */ 184 u16 softled_state; /* bit field of glowing LEDs */
185}; 185};
186 186
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
index 0c1b0577d4ee..c8f0232ee5e0 100644
--- a/drivers/net/wireless/p54/p54common.c
+++ b/drivers/net/wireless/p54/p54common.c
@@ -2543,8 +2543,6 @@ struct ieee80211_hw *p54_init_common(size_t priv_data_len)
2543 priv->basic_rate_mask = 0x15f; 2543 priv->basic_rate_mask = 0x15f;
2544 skb_queue_head_init(&priv->tx_queue); 2544 skb_queue_head_init(&priv->tx_queue);
2545 dev->flags = IEEE80211_HW_RX_INCLUDES_FCS | 2545 dev->flags = IEEE80211_HW_RX_INCLUDES_FCS |
2546 IEEE80211_HW_SUPPORTS_PS |
2547 IEEE80211_HW_PS_NULLFUNC_STACK |
2548 IEEE80211_HW_SIGNAL_DBM | 2546 IEEE80211_HW_SIGNAL_DBM |
2549 IEEE80211_HW_NOISE_DBM; 2547 IEEE80211_HW_NOISE_DBM;
2550 2548
diff --git a/drivers/net/wireless/p54/p54pci.c b/drivers/net/wireless/p54/p54pci.c
index e3569a0a952d..b1610ea4bb3d 100644
--- a/drivers/net/wireless/p54/p54pci.c
+++ b/drivers/net/wireless/p54/p54pci.c
@@ -492,8 +492,8 @@ static int __devinit p54p_probe(struct pci_dev *pdev,
492 goto err_disable_dev; 492 goto err_disable_dev;
493 } 493 }
494 494
495 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK) || 495 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) ||
496 pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) { 496 pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) {
497 dev_err(&pdev->dev, "No suitable DMA available\n"); 497 dev_err(&pdev->dev, "No suitable DMA available\n");
498 goto err_free_reg; 498 goto err_free_reg;
499 } 499 }
diff --git a/drivers/net/wireless/p54/p54spi.c b/drivers/net/wireless/p54/p54spi.c
index 2b222aaa6f0a..d1fe577de3d4 100644
--- a/drivers/net/wireless/p54/p54spi.c
+++ b/drivers/net/wireless/p54/p54spi.c
@@ -457,9 +457,10 @@ static int p54spi_wq_tx(struct p54s_priv *priv)
457 struct ieee80211_tx_info *info; 457 struct ieee80211_tx_info *info;
458 struct p54_tx_info *minfo; 458 struct p54_tx_info *minfo;
459 struct p54s_tx_info *dinfo; 459 struct p54s_tx_info *dinfo;
460 unsigned long flags;
460 int ret = 0; 461 int ret = 0;
461 462
462 spin_lock_bh(&priv->tx_lock); 463 spin_lock_irqsave(&priv->tx_lock, flags);
463 464
464 while (!list_empty(&priv->tx_pending)) { 465 while (!list_empty(&priv->tx_pending)) {
465 entry = list_entry(priv->tx_pending.next, 466 entry = list_entry(priv->tx_pending.next,
@@ -467,7 +468,7 @@ static int p54spi_wq_tx(struct p54s_priv *priv)
467 468
468 list_del_init(&entry->tx_list); 469 list_del_init(&entry->tx_list);
469 470
470 spin_unlock_bh(&priv->tx_lock); 471 spin_unlock_irqrestore(&priv->tx_lock, flags);
471 472
472 dinfo = container_of((void *) entry, struct p54s_tx_info, 473 dinfo = container_of((void *) entry, struct p54s_tx_info,
473 tx_list); 474 tx_list);
@@ -479,16 +480,14 @@ static int p54spi_wq_tx(struct p54s_priv *priv)
479 480
480 ret = p54spi_tx_frame(priv, skb); 481 ret = p54spi_tx_frame(priv, skb);
481 482
482 spin_lock_bh(&priv->tx_lock);
483
484 if (ret < 0) { 483 if (ret < 0) {
485 p54_free_skb(priv->hw, skb); 484 p54_free_skb(priv->hw, skb);
486 goto out; 485 return ret;
487 } 486 }
488 }
489 487
490out: 488 spin_lock_irqsave(&priv->tx_lock, flags);
491 spin_unlock_bh(&priv->tx_lock); 489 }
490 spin_unlock_irqrestore(&priv->tx_lock, flags);
492 return ret; 491 return ret;
493} 492}
494 493
@@ -498,12 +497,13 @@ static void p54spi_op_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
498 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 497 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
499 struct p54_tx_info *mi = (struct p54_tx_info *) info->rate_driver_data; 498 struct p54_tx_info *mi = (struct p54_tx_info *) info->rate_driver_data;
500 struct p54s_tx_info *di = (struct p54s_tx_info *) mi->data; 499 struct p54s_tx_info *di = (struct p54s_tx_info *) mi->data;
500 unsigned long flags;
501 501
502 BUILD_BUG_ON(sizeof(*di) > sizeof((mi->data))); 502 BUILD_BUG_ON(sizeof(*di) > sizeof((mi->data)));
503 503
504 spin_lock_bh(&priv->tx_lock); 504 spin_lock_irqsave(&priv->tx_lock, flags);
505 list_add_tail(&di->tx_list, &priv->tx_pending); 505 list_add_tail(&di->tx_list, &priv->tx_pending);
506 spin_unlock_bh(&priv->tx_lock); 506 spin_unlock_irqrestore(&priv->tx_lock, flags);
507 507
508 queue_work(priv->hw->workqueue, &priv->work); 508 queue_work(priv->hw->workqueue, &priv->work);
509} 509}
@@ -604,6 +604,7 @@ out:
604static void p54spi_op_stop(struct ieee80211_hw *dev) 604static void p54spi_op_stop(struct ieee80211_hw *dev)
605{ 605{
606 struct p54s_priv *priv = dev->priv; 606 struct p54s_priv *priv = dev->priv;
607 unsigned long flags;
607 608
608 if (mutex_lock_interruptible(&priv->mutex)) { 609 if (mutex_lock_interruptible(&priv->mutex)) {
609 /* FIXME: how to handle this error? */ 610 /* FIXME: how to handle this error? */
@@ -615,9 +616,9 @@ static void p54spi_op_stop(struct ieee80211_hw *dev)
615 cancel_work_sync(&priv->work); 616 cancel_work_sync(&priv->work);
616 617
617 p54spi_power_off(priv); 618 p54spi_power_off(priv);
618 spin_lock_bh(&priv->tx_lock); 619 spin_lock_irqsave(&priv->tx_lock, flags);
619 INIT_LIST_HEAD(&priv->tx_pending); 620 INIT_LIST_HEAD(&priv->tx_pending);
620 spin_unlock_bh(&priv->tx_lock); 621 spin_unlock_irqrestore(&priv->tx_lock, flags);
621 622
622 priv->fw_state = FW_STATE_OFF; 623 priv->fw_state = FW_STATE_OFF;
623 mutex_unlock(&priv->mutex); 624 mutex_unlock(&priv->mutex);
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c
index da6640afc835..6cc6cbc9234f 100644
--- a/drivers/net/wireless/p54/p54usb.c
+++ b/drivers/net/wireless/p54/p54usb.c
@@ -71,6 +71,7 @@ static struct usb_device_id p54u_table[] __devinitdata = {
71 {USB_DEVICE(0x1260, 0xee22)}, /* SMC 2862W-G version 2 */ 71 {USB_DEVICE(0x1260, 0xee22)}, /* SMC 2862W-G version 2 */
72 {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */ 72 {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */
73 {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ 73 {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */
74 {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */
74 {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ 75 {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */
75 {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ 76 {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */
76 {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */ 77 {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 05f94e21b423..5752aaae906b 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -646,10 +646,8 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
646 * Register HW. 646 * Register HW.
647 */ 647 */
648 status = ieee80211_register_hw(rt2x00dev->hw); 648 status = ieee80211_register_hw(rt2x00dev->hw);
649 if (status) { 649 if (status)
650 rt2x00lib_remove_hw(rt2x00dev);
651 return status; 650 return status;
652 }
653 651
654 set_bit(DEVICE_STATE_REGISTERED_HW, &rt2x00dev->flags); 652 set_bit(DEVICE_STATE_REGISTERED_HW, &rt2x00dev->flags);
655 653
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
index 43fa0f849003..9730b4f8fd26 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
@@ -369,8 +369,6 @@ int rt2x00pci_suspend(struct pci_dev *pci_dev, pm_message_t state)
369 if (retval) 369 if (retval)
370 return retval; 370 return retval;
371 371
372 rt2x00pci_free_reg(rt2x00dev);
373
374 pci_save_state(pci_dev); 372 pci_save_state(pci_dev);
375 pci_disable_device(pci_dev); 373 pci_disable_device(pci_dev);
376 return pci_set_power_state(pci_dev, pci_choose_state(pci_dev, state)); 374 return pci_set_power_state(pci_dev, pci_choose_state(pci_dev, state));
@@ -381,7 +379,6 @@ int rt2x00pci_resume(struct pci_dev *pci_dev)
381{ 379{
382 struct ieee80211_hw *hw = pci_get_drvdata(pci_dev); 380 struct ieee80211_hw *hw = pci_get_drvdata(pci_dev);
383 struct rt2x00_dev *rt2x00dev = hw->priv; 381 struct rt2x00_dev *rt2x00dev = hw->priv;
384 int retval;
385 382
386 if (pci_set_power_state(pci_dev, PCI_D0) || 383 if (pci_set_power_state(pci_dev, PCI_D0) ||
387 pci_enable_device(pci_dev) || 384 pci_enable_device(pci_dev) ||
@@ -390,20 +387,7 @@ int rt2x00pci_resume(struct pci_dev *pci_dev)
390 return -EIO; 387 return -EIO;
391 } 388 }
392 389
393 retval = rt2x00pci_alloc_reg(rt2x00dev); 390 return rt2x00lib_resume(rt2x00dev);
394 if (retval)
395 return retval;
396
397 retval = rt2x00lib_resume(rt2x00dev);
398 if (retval)
399 goto exit_free_reg;
400
401 return 0;
402
403exit_free_reg:
404 rt2x00pci_free_reg(rt2x00dev);
405
406 return retval;
407} 391}
408EXPORT_SYMBOL_GPL(rt2x00pci_resume); 392EXPORT_SYMBOL_GPL(rt2x00pci_resume);
409#endif /* CONFIG_PM */ 393#endif /* CONFIG_PM */
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 7d50ca82375e..501544882c2c 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -702,8 +702,6 @@ int rt2x00usb_suspend(struct usb_interface *usb_intf, pm_message_t state)
702 if (retval) 702 if (retval)
703 return retval; 703 return retval;
704 704
705 rt2x00usb_free_reg(rt2x00dev);
706
707 /* 705 /*
708 * Decrease usbdev refcount. 706 * Decrease usbdev refcount.
709 */ 707 */
@@ -717,24 +715,10 @@ int rt2x00usb_resume(struct usb_interface *usb_intf)
717{ 715{
718 struct ieee80211_hw *hw = usb_get_intfdata(usb_intf); 716 struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
719 struct rt2x00_dev *rt2x00dev = hw->priv; 717 struct rt2x00_dev *rt2x00dev = hw->priv;
720 int retval;
721 718
722 usb_get_dev(interface_to_usbdev(usb_intf)); 719 usb_get_dev(interface_to_usbdev(usb_intf));
723 720
724 retval = rt2x00usb_alloc_reg(rt2x00dev); 721 return rt2x00lib_resume(rt2x00dev);
725 if (retval)
726 return retval;
727
728 retval = rt2x00lib_resume(rt2x00dev);
729 if (retval)
730 goto exit_free_reg;
731
732 return 0;
733
734exit_free_reg:
735 rt2x00usb_free_reg(rt2x00dev);
736
737 return retval;
738} 722}
739EXPORT_SYMBOL_GPL(rt2x00usb_resume); 723EXPORT_SYMBOL_GPL(rt2x00usb_resume);
740#endif /* CONFIG_PM */ 724#endif /* CONFIG_PM */
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 420fff42c0dd..853b2b279b64 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -2369,6 +2369,8 @@ static struct usb_device_id rt73usb_device_table[] = {
2369 /* Buffalo */ 2369 /* Buffalo */
2370 { USB_DEVICE(0x0411, 0x00d8), USB_DEVICE_DATA(&rt73usb_ops) }, 2370 { USB_DEVICE(0x0411, 0x00d8), USB_DEVICE_DATA(&rt73usb_ops) },
2371 { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) }, 2371 { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) },
2372 { USB_DEVICE(0x0411, 0x0116), USB_DEVICE_DATA(&rt73usb_ops) },
2373 { USB_DEVICE(0x0411, 0x0119), USB_DEVICE_DATA(&rt73usb_ops) },
2372 /* CNet */ 2374 /* CNet */
2373 { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) }, 2375 { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) },
2374 { USB_DEVICE(0x1371, 0x9032), USB_DEVICE_DATA(&rt73usb_ops) }, 2376 { USB_DEVICE(0x1371, 0x9032), USB_DEVICE_DATA(&rt73usb_ops) },
diff --git a/drivers/net/xtsonic.c b/drivers/net/xtsonic.c
index a12a7211c982..5a4ad156f63e 100644
--- a/drivers/net/xtsonic.c
+++ b/drivers/net/xtsonic.c
@@ -108,6 +108,18 @@ static int xtsonic_close(struct net_device *dev)
108 return err; 108 return err;
109} 109}
110 110
111static const struct net_device_ops xtsonic_netdev_ops = {
112 .ndo_open = xtsonic_open,
113 .ndo_stop = xtsonic_close,
114 .ndo_start_xmit = sonic_send_packet,
115 .ndo_get_stats = sonic_get_stats,
116 .ndo_set_multicast_list = sonic_multicast_list,
117 .ndo_tx_timeout = sonic_tx_timeout,
118 .ndo_validate_addr = eth_validate_addr,
119 .ndo_change_mtu = eth_change_mtu,
120 .ndo_set_mac_address = eth_mac_addr,
121};
122
111static int __init sonic_probe1(struct net_device *dev) 123static int __init sonic_probe1(struct net_device *dev)
112{ 124{
113 static unsigned version_printed = 0; 125 static unsigned version_printed = 0;
@@ -205,12 +217,7 @@ static int __init sonic_probe1(struct net_device *dev)
205 lp->rra_laddr = lp->rda_laddr + (SIZEOF_SONIC_RD * SONIC_NUM_RDS 217 lp->rra_laddr = lp->rda_laddr + (SIZEOF_SONIC_RD * SONIC_NUM_RDS
206 * SONIC_BUS_SCALE(lp->dma_bitmode)); 218 * SONIC_BUS_SCALE(lp->dma_bitmode));
207 219
208 dev->open = xtsonic_open; 220 dev->netdev_ops = &xtsonic_netdev_ops;
209 dev->stop = xtsonic_close;
210 dev->hard_start_xmit = sonic_send_packet;
211 dev->get_stats = sonic_get_stats;
212 dev->set_multicast_list = &sonic_multicast_list;
213 dev->tx_timeout = sonic_tx_timeout;
214 dev->watchdog_timeo = TX_TIMEOUT; 221 dev->watchdog_timeo = TX_TIMEOUT;
215 222
216 /* 223 /*
diff --git a/drivers/parisc/superio.c b/drivers/parisc/superio.c
index 4fa3bb2ddfe4..33e5ade774ca 100644
--- a/drivers/parisc/superio.c
+++ b/drivers/parisc/superio.c
@@ -434,7 +434,8 @@ static void __init superio_parport_init(void)
434 0 /*base_hi*/, 434 0 /*base_hi*/,
435 PAR_IRQ, 435 PAR_IRQ,
436 PARPORT_DMA_NONE /* dma */, 436 PARPORT_DMA_NONE /* dma */,
437 NULL /*struct pci_dev* */) ) 437 NULL /*struct pci_dev* */),
438 0 /* shared irq flags */ )
438 439
439 printk(KERN_WARNING PFX "Probing parallel port failed.\n"); 440 printk(KERN_WARNING PFX "Probing parallel port failed.\n");
440#endif /* CONFIG_PARPORT_PC */ 441#endif /* CONFIG_PARPORT_PC */
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index 25a00ce4f24d..fa3a11365ec3 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -173,12 +173,21 @@ dmar_parse_one_drhd(struct acpi_dmar_header *header)
173 struct dmar_drhd_unit *dmaru; 173 struct dmar_drhd_unit *dmaru;
174 int ret = 0; 174 int ret = 0;
175 175
176 drhd = (struct acpi_dmar_hardware_unit *)header;
177 if (!drhd->address) {
178 /* Promote an attitude of violence to a BIOS engineer today */
179 WARN(1, "Your BIOS is broken; DMAR reported at address zero!\n"
180 "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
181 dmi_get_system_info(DMI_BIOS_VENDOR),
182 dmi_get_system_info(DMI_BIOS_VERSION),
183 dmi_get_system_info(DMI_PRODUCT_VERSION));
184 return -ENODEV;
185 }
176 dmaru = kzalloc(sizeof(*dmaru), GFP_KERNEL); 186 dmaru = kzalloc(sizeof(*dmaru), GFP_KERNEL);
177 if (!dmaru) 187 if (!dmaru)
178 return -ENOMEM; 188 return -ENOMEM;
179 189
180 dmaru->hdr = header; 190 dmaru->hdr = header;
181 drhd = (struct acpi_dmar_hardware_unit *)header;
182 dmaru->reg_base_addr = drhd->address; 191 dmaru->reg_base_addr = drhd->address;
183 dmaru->segment = drhd->segment; 192 dmaru->segment = drhd->segment;
184 dmaru->include_all = drhd->flags & 0x1; /* BIT0: INCLUDE_ALL */ 193 dmaru->include_all = drhd->flags & 0x1; /* BIT0: INCLUDE_ALL */
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index fb3a3f3fca7a..001b328adf80 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -733,8 +733,8 @@ static void dma_pte_clear_range(struct dmar_domain *domain, u64 start, u64 end)
733 start &= (((u64)1) << addr_width) - 1; 733 start &= (((u64)1) << addr_width) - 1;
734 end &= (((u64)1) << addr_width) - 1; 734 end &= (((u64)1) << addr_width) - 1;
735 /* in case it's partial page */ 735 /* in case it's partial page */
736 start = PAGE_ALIGN(start); 736 start &= PAGE_MASK;
737 end &= PAGE_MASK; 737 end = PAGE_ALIGN(end);
738 npages = (end - start) / VTD_PAGE_SIZE; 738 npages = (end - start) / VTD_PAGE_SIZE;
739 739
740 /* we don't need lock here, nobody else touches the iova range */ 740 /* we don't need lock here, nobody else touches the iova range */
diff --git a/drivers/pcmcia/pxa2xx_sharpsl.c b/drivers/pcmcia/pxa2xx_sharpsl.c
index 1cd02f5a23a0..bc43f78f6f0b 100644
--- a/drivers/pcmcia/pxa2xx_sharpsl.c
+++ b/drivers/pcmcia/pxa2xx_sharpsl.c
@@ -255,6 +255,9 @@ static int __init sharpsl_pcmcia_init(void)
255{ 255{
256 int ret; 256 int ret;
257 257
258 if (!platform_scoop_config)
259 return -ENODEV;
260
258 sharpsl_pcmcia_ops.nr = platform_scoop_config->num_devs; 261 sharpsl_pcmcia_ops.nr = platform_scoop_config->num_devs;
259 sharpsl_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1); 262 sharpsl_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
260 263
diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c
index 45940f31fe9e..218b9a16ac3f 100644
--- a/drivers/platform/x86/fujitsu-laptop.c
+++ b/drivers/platform/x86/fujitsu-laptop.c
@@ -174,8 +174,7 @@ struct fujitsu_hotkey_t {
174 174
175static struct fujitsu_hotkey_t *fujitsu_hotkey; 175static struct fujitsu_hotkey_t *fujitsu_hotkey;
176 176
177static void acpi_fujitsu_hotkey_notify(acpi_handle handle, u32 event, 177static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event);
178 void *data);
179 178
180#ifdef CONFIG_LEDS_CLASS 179#ifdef CONFIG_LEDS_CLASS
181static enum led_brightness logolamp_get(struct led_classdev *cdev); 180static enum led_brightness logolamp_get(struct led_classdev *cdev);
@@ -203,7 +202,7 @@ struct led_classdev kblamps_led = {
203static u32 dbg_level = 0x03; 202static u32 dbg_level = 0x03;
204#endif 203#endif
205 204
206static void acpi_fujitsu_notify(acpi_handle handle, u32 event, void *data); 205static void acpi_fujitsu_notify(struct acpi_device *device, u32 event);
207 206
208/* Fujitsu ACPI interface function */ 207/* Fujitsu ACPI interface function */
209 208
@@ -658,7 +657,6 @@ static struct dmi_system_id fujitsu_dmi_table[] = {
658 657
659static int acpi_fujitsu_add(struct acpi_device *device) 658static int acpi_fujitsu_add(struct acpi_device *device)
660{ 659{
661 acpi_status status;
662 acpi_handle handle; 660 acpi_handle handle;
663 int result = 0; 661 int result = 0;
664 int state = 0; 662 int state = 0;
@@ -673,20 +671,10 @@ static int acpi_fujitsu_add(struct acpi_device *device)
673 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS); 671 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS);
674 device->driver_data = fujitsu; 672 device->driver_data = fujitsu;
675 673
676 status = acpi_install_notify_handler(device->handle,
677 ACPI_DEVICE_NOTIFY,
678 acpi_fujitsu_notify, fujitsu);
679
680 if (ACPI_FAILURE(status)) {
681 printk(KERN_ERR "Error installing notify handler\n");
682 error = -ENODEV;
683 goto err_stop;
684 }
685
686 fujitsu->input = input = input_allocate_device(); 674 fujitsu->input = input = input_allocate_device();
687 if (!input) { 675 if (!input) {
688 error = -ENOMEM; 676 error = -ENOMEM;
689 goto err_uninstall_notify; 677 goto err_stop;
690 } 678 }
691 679
692 snprintf(fujitsu->phys, sizeof(fujitsu->phys), 680 snprintf(fujitsu->phys, sizeof(fujitsu->phys),
@@ -743,9 +731,6 @@ static int acpi_fujitsu_add(struct acpi_device *device)
743end: 731end:
744err_free_input_dev: 732err_free_input_dev:
745 input_free_device(input); 733 input_free_device(input);
746err_uninstall_notify:
747 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
748 acpi_fujitsu_notify);
749err_stop: 734err_stop:
750 735
751 return result; 736 return result;
@@ -753,7 +738,6 @@ err_stop:
753 738
754static int acpi_fujitsu_remove(struct acpi_device *device, int type) 739static int acpi_fujitsu_remove(struct acpi_device *device, int type)
755{ 740{
756 acpi_status status;
757 struct fujitsu_t *fujitsu = NULL; 741 struct fujitsu_t *fujitsu = NULL;
758 742
759 if (!device || !acpi_driver_data(device)) 743 if (!device || !acpi_driver_data(device))
@@ -761,10 +745,6 @@ static int acpi_fujitsu_remove(struct acpi_device *device, int type)
761 745
762 fujitsu = acpi_driver_data(device); 746 fujitsu = acpi_driver_data(device);
763 747
764 status = acpi_remove_notify_handler(fujitsu->acpi_handle,
765 ACPI_DEVICE_NOTIFY,
766 acpi_fujitsu_notify);
767
768 if (!device || !acpi_driver_data(device)) 748 if (!device || !acpi_driver_data(device))
769 return -EINVAL; 749 return -EINVAL;
770 750
@@ -775,7 +755,7 @@ static int acpi_fujitsu_remove(struct acpi_device *device, int type)
775 755
776/* Brightness notify */ 756/* Brightness notify */
777 757
778static void acpi_fujitsu_notify(acpi_handle handle, u32 event, void *data) 758static void acpi_fujitsu_notify(struct acpi_device *device, u32 event)
779{ 759{
780 struct input_dev *input; 760 struct input_dev *input;
781 int keycode; 761 int keycode;
@@ -829,15 +809,12 @@ static void acpi_fujitsu_notify(acpi_handle handle, u32 event, void *data)
829 input_report_key(input, keycode, 0); 809 input_report_key(input, keycode, 0);
830 input_sync(input); 810 input_sync(input);
831 } 811 }
832
833 return;
834} 812}
835 813
836/* ACPI device for hotkey handling */ 814/* ACPI device for hotkey handling */
837 815
838static int acpi_fujitsu_hotkey_add(struct acpi_device *device) 816static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
839{ 817{
840 acpi_status status;
841 acpi_handle handle; 818 acpi_handle handle;
842 int result = 0; 819 int result = 0;
843 int state = 0; 820 int state = 0;
@@ -854,17 +831,6 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
854 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS); 831 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS);
855 device->driver_data = fujitsu_hotkey; 832 device->driver_data = fujitsu_hotkey;
856 833
857 status = acpi_install_notify_handler(device->handle,
858 ACPI_DEVICE_NOTIFY,
859 acpi_fujitsu_hotkey_notify,
860 fujitsu_hotkey);
861
862 if (ACPI_FAILURE(status)) {
863 printk(KERN_ERR "Error installing notify handler\n");
864 error = -ENODEV;
865 goto err_stop;
866 }
867
868 /* kfifo */ 834 /* kfifo */
869 spin_lock_init(&fujitsu_hotkey->fifo_lock); 835 spin_lock_init(&fujitsu_hotkey->fifo_lock);
870 fujitsu_hotkey->fifo = 836 fujitsu_hotkey->fifo =
@@ -879,7 +845,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
879 fujitsu_hotkey->input = input = input_allocate_device(); 845 fujitsu_hotkey->input = input = input_allocate_device();
880 if (!input) { 846 if (!input) {
881 error = -ENOMEM; 847 error = -ENOMEM;
882 goto err_uninstall_notify; 848 goto err_free_fifo;
883 } 849 }
884 850
885 snprintf(fujitsu_hotkey->phys, sizeof(fujitsu_hotkey->phys), 851 snprintf(fujitsu_hotkey->phys, sizeof(fujitsu_hotkey->phys),
@@ -975,9 +941,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
975end: 941end:
976err_free_input_dev: 942err_free_input_dev:
977 input_free_device(input); 943 input_free_device(input);
978err_uninstall_notify: 944err_free_fifo:
979 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
980 acpi_fujitsu_hotkey_notify);
981 kfifo_free(fujitsu_hotkey->fifo); 945 kfifo_free(fujitsu_hotkey->fifo);
982err_stop: 946err_stop:
983 947
@@ -986,7 +950,6 @@ err_stop:
986 950
987static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type) 951static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type)
988{ 952{
989 acpi_status status;
990 struct fujitsu_hotkey_t *fujitsu_hotkey = NULL; 953 struct fujitsu_hotkey_t *fujitsu_hotkey = NULL;
991 954
992 if (!device || !acpi_driver_data(device)) 955 if (!device || !acpi_driver_data(device))
@@ -994,10 +957,6 @@ static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type)
994 957
995 fujitsu_hotkey = acpi_driver_data(device); 958 fujitsu_hotkey = acpi_driver_data(device);
996 959
997 status = acpi_remove_notify_handler(fujitsu_hotkey->acpi_handle,
998 ACPI_DEVICE_NOTIFY,
999 acpi_fujitsu_hotkey_notify);
1000
1001 fujitsu_hotkey->acpi_handle = NULL; 960 fujitsu_hotkey->acpi_handle = NULL;
1002 961
1003 kfifo_free(fujitsu_hotkey->fifo); 962 kfifo_free(fujitsu_hotkey->fifo);
@@ -1005,8 +964,7 @@ static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type)
1005 return 0; 964 return 0;
1006} 965}
1007 966
1008static void acpi_fujitsu_hotkey_notify(acpi_handle handle, u32 event, 967static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event)
1009 void *data)
1010{ 968{
1011 struct input_dev *input; 969 struct input_dev *input;
1012 int keycode, keycode_r; 970 int keycode, keycode_r;
@@ -1089,8 +1047,6 @@ static void acpi_fujitsu_hotkey_notify(acpi_handle handle, u32 event,
1089 input_sync(input); 1047 input_sync(input);
1090 break; 1048 break;
1091 } 1049 }
1092
1093 return;
1094} 1050}
1095 1051
1096/* Initialization */ 1052/* Initialization */
@@ -1107,6 +1063,7 @@ static struct acpi_driver acpi_fujitsu_driver = {
1107 .ops = { 1063 .ops = {
1108 .add = acpi_fujitsu_add, 1064 .add = acpi_fujitsu_add,
1109 .remove = acpi_fujitsu_remove, 1065 .remove = acpi_fujitsu_remove,
1066 .notify = acpi_fujitsu_notify,
1110 }, 1067 },
1111}; 1068};
1112 1069
@@ -1122,6 +1079,7 @@ static struct acpi_driver acpi_fujitsu_hotkey_driver = {
1122 .ops = { 1079 .ops = {
1123 .add = acpi_fujitsu_hotkey_add, 1080 .add = acpi_fujitsu_hotkey_add,
1124 .remove = acpi_fujitsu_hotkey_remove, 1081 .remove = acpi_fujitsu_hotkey_remove,
1082 .notify = acpi_fujitsu_hotkey_notify,
1125 }, 1083 },
1126}; 1084};
1127 1085
diff --git a/drivers/platform/x86/panasonic-laptop.c b/drivers/platform/x86/panasonic-laptop.c
index a5ce4bc202e3..fe7cf0188acc 100644
--- a/drivers/platform/x86/panasonic-laptop.c
+++ b/drivers/platform/x86/panasonic-laptop.c
@@ -176,6 +176,7 @@ enum SINF_BITS { SINF_NUM_BATTERIES = 0,
176static int acpi_pcc_hotkey_add(struct acpi_device *device); 176static int acpi_pcc_hotkey_add(struct acpi_device *device);
177static int acpi_pcc_hotkey_remove(struct acpi_device *device, int type); 177static int acpi_pcc_hotkey_remove(struct acpi_device *device, int type);
178static int acpi_pcc_hotkey_resume(struct acpi_device *device); 178static int acpi_pcc_hotkey_resume(struct acpi_device *device);
179static void acpi_pcc_hotkey_notify(struct acpi_device *device, u32 event);
179 180
180static const struct acpi_device_id pcc_device_ids[] = { 181static const struct acpi_device_id pcc_device_ids[] = {
181 { "MAT0012", 0}, 182 { "MAT0012", 0},
@@ -194,6 +195,7 @@ static struct acpi_driver acpi_pcc_driver = {
194 .add = acpi_pcc_hotkey_add, 195 .add = acpi_pcc_hotkey_add,
195 .remove = acpi_pcc_hotkey_remove, 196 .remove = acpi_pcc_hotkey_remove,
196 .resume = acpi_pcc_hotkey_resume, 197 .resume = acpi_pcc_hotkey_resume,
198 .notify = acpi_pcc_hotkey_notify,
197 }, 199 },
198}; 200};
199 201
@@ -271,7 +273,7 @@ static int acpi_pcc_retrieve_biosdata(struct pcc_acpi *pcc, u32 *sinf)
271 union acpi_object *hkey = NULL; 273 union acpi_object *hkey = NULL;
272 int i; 274 int i;
273 275
274 status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SINF, 0, 276 status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SINF, NULL,
275 &buffer); 277 &buffer);
276 if (ACPI_FAILURE(status)) { 278 if (ACPI_FAILURE(status)) {
277 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 279 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
@@ -527,9 +529,9 @@ static void acpi_pcc_generate_keyinput(struct pcc_acpi *pcc)
527 return; 529 return;
528} 530}
529 531
530static void acpi_pcc_hotkey_notify(acpi_handle handle, u32 event, void *data) 532static void acpi_pcc_hotkey_notify(struct acpi_device *device, u32 event)
531{ 533{
532 struct pcc_acpi *pcc = (struct pcc_acpi *) data; 534 struct pcc_acpi *pcc = acpi_driver_data(device);
533 535
534 switch (event) { 536 switch (event) {
535 case HKEY_NOTIFY: 537 case HKEY_NOTIFY:
@@ -599,7 +601,6 @@ static int acpi_pcc_hotkey_resume(struct acpi_device *device)
599 601
600static int acpi_pcc_hotkey_add(struct acpi_device *device) 602static int acpi_pcc_hotkey_add(struct acpi_device *device)
601{ 603{
602 acpi_status status;
603 struct pcc_acpi *pcc; 604 struct pcc_acpi *pcc;
604 int num_sifr, result; 605 int num_sifr, result;
605 606
@@ -640,22 +641,11 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
640 goto out_sinf; 641 goto out_sinf;
641 } 642 }
642 643
643 /* initialize hotkey input device */
644 status = acpi_install_notify_handler(pcc->handle, ACPI_DEVICE_NOTIFY,
645 acpi_pcc_hotkey_notify, pcc);
646
647 if (ACPI_FAILURE(status)) {
648 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
649 "Error installing notify handler\n"));
650 result = -ENODEV;
651 goto out_input;
652 }
653
654 /* initialize backlight */ 644 /* initialize backlight */
655 pcc->backlight = backlight_device_register("panasonic", NULL, pcc, 645 pcc->backlight = backlight_device_register("panasonic", NULL, pcc,
656 &pcc_backlight_ops); 646 &pcc_backlight_ops);
657 if (IS_ERR(pcc->backlight)) 647 if (IS_ERR(pcc->backlight))
658 goto out_notify; 648 goto out_input;
659 649
660 if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) { 650 if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) {
661 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 651 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
@@ -680,9 +670,6 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
680 670
681out_backlight: 671out_backlight:
682 backlight_device_unregister(pcc->backlight); 672 backlight_device_unregister(pcc->backlight);
683out_notify:
684 acpi_remove_notify_handler(pcc->handle, ACPI_DEVICE_NOTIFY,
685 acpi_pcc_hotkey_notify);
686out_input: 673out_input:
687 input_unregister_device(pcc->input_dev); 674 input_unregister_device(pcc->input_dev);
688 /* no need to input_free_device() since core input API refcount and 675 /* no need to input_free_device() since core input API refcount and
@@ -723,9 +710,6 @@ static int acpi_pcc_hotkey_remove(struct acpi_device *device, int type)
723 710
724 backlight_device_unregister(pcc->backlight); 711 backlight_device_unregister(pcc->backlight);
725 712
726 acpi_remove_notify_handler(pcc->handle, ACPI_DEVICE_NOTIFY,
727 acpi_pcc_hotkey_notify);
728
729 input_unregister_device(pcc->input_dev); 713 input_unregister_device(pcc->input_dev);
730 /* no need to input_free_device() since core input API refcount and 714 /* no need to input_free_device() since core input API refcount and
731 * free()s the device */ 715 * free()s the device */
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
index a90ec5cb2f20..552958545f94 100644
--- a/drivers/platform/x86/sony-laptop.c
+++ b/drivers/platform/x86/sony-laptop.c
@@ -317,7 +317,8 @@ static void sony_laptop_report_input_event(u8 event)
317 struct input_dev *key_dev = sony_laptop_input.key_dev; 317 struct input_dev *key_dev = sony_laptop_input.key_dev;
318 struct sony_laptop_keypress kp = { NULL }; 318 struct sony_laptop_keypress kp = { NULL };
319 319
320 if (event == SONYPI_EVENT_FNKEY_RELEASED) { 320 if (event == SONYPI_EVENT_FNKEY_RELEASED ||
321 event == SONYPI_EVENT_ANYBUTTON_RELEASED) {
321 /* Nothing, not all VAIOs generate this event */ 322 /* Nothing, not all VAIOs generate this event */
322 return; 323 return;
323 } 324 }
@@ -905,7 +906,6 @@ static struct sony_nc_event sony_127_events[] = {
905 { 0x05, SONYPI_EVENT_ANYBUTTON_RELEASED }, 906 { 0x05, SONYPI_EVENT_ANYBUTTON_RELEASED },
906 { 0x86, SONYPI_EVENT_PKEY_P5 }, 907 { 0x86, SONYPI_EVENT_PKEY_P5 },
907 { 0x06, SONYPI_EVENT_ANYBUTTON_RELEASED }, 908 { 0x06, SONYPI_EVENT_ANYBUTTON_RELEASED },
908 { 0x06, SONYPI_EVENT_ANYBUTTON_RELEASED },
909 { 0x87, SONYPI_EVENT_SETTINGKEY_PRESSED }, 909 { 0x87, SONYPI_EVENT_SETTINGKEY_PRESSED },
910 { 0x07, SONYPI_EVENT_ANYBUTTON_RELEASED }, 910 { 0x07, SONYPI_EVENT_ANYBUTTON_RELEASED },
911 { 0, 0 }, 911 { 0, 0 },
@@ -914,7 +914,7 @@ static struct sony_nc_event sony_127_events[] = {
914/* 914/*
915 * ACPI callbacks 915 * ACPI callbacks
916 */ 916 */
917static void sony_acpi_notify(acpi_handle handle, u32 event, void *data) 917static void sony_nc_notify(struct acpi_device *device, u32 event)
918{ 918{
919 u32 ev = event; 919 u32 ev = event;
920 920
@@ -933,7 +933,7 @@ static void sony_acpi_notify(acpi_handle handle, u32 event, void *data)
933 struct sony_nc_event *key_event; 933 struct sony_nc_event *key_event;
934 934
935 if (sony_call_snc_handle(key_handle, 0x200, &result)) { 935 if (sony_call_snc_handle(key_handle, 0x200, &result)) {
936 dprintk("sony_acpi_notify, unable to decode" 936 dprintk("sony_nc_notify, unable to decode"
937 " event 0x%.2x 0x%.2x\n", key_handle, 937 " event 0x%.2x 0x%.2x\n", key_handle,
938 ev); 938 ev);
939 /* restore the original event */ 939 /* restore the original event */
@@ -968,7 +968,7 @@ static void sony_acpi_notify(acpi_handle handle, u32 event, void *data)
968 } else 968 } else
969 sony_laptop_report_input_event(ev); 969 sony_laptop_report_input_event(ev);
970 970
971 dprintk("sony_acpi_notify, event: 0x%.2x\n", ev); 971 dprintk("sony_nc_notify, event: 0x%.2x\n", ev);
972 acpi_bus_generate_proc_event(sony_nc_acpi_device, 1, ev); 972 acpi_bus_generate_proc_event(sony_nc_acpi_device, 1, ev);
973} 973}
974 974
@@ -1004,6 +1004,7 @@ static int sony_nc_function_setup(struct acpi_device *device)
1004 sony_call_snc_handle(0x0100, 0, &result); 1004 sony_call_snc_handle(0x0100, 0, &result);
1005 sony_call_snc_handle(0x0101, 0, &result); 1005 sony_call_snc_handle(0x0101, 0, &result);
1006 sony_call_snc_handle(0x0102, 0x100, &result); 1006 sony_call_snc_handle(0x0102, 0x100, &result);
1007 sony_call_snc_handle(0x0127, 0, &result);
1007 1008
1008 return 0; 1009 return 0;
1009} 1010}
@@ -1040,7 +1041,7 @@ static int sony_nc_resume(struct acpi_device *device)
1040 1041
1041 /* set the last requested brightness level */ 1042 /* set the last requested brightness level */
1042 if (sony_backlight_device && 1043 if (sony_backlight_device &&
1043 !sony_backlight_update_status(sony_backlight_device)) 1044 sony_backlight_update_status(sony_backlight_device) < 0)
1044 printk(KERN_WARNING DRV_PFX "unable to restore brightness level\n"); 1045 printk(KERN_WARNING DRV_PFX "unable to restore brightness level\n");
1045 1046
1046 return 0; 1047 return 0;
@@ -1102,8 +1103,11 @@ static int sony_nc_setup_wifi_rfkill(struct acpi_device *device)
1102 err = rfkill_register(sony_wifi_rfkill); 1103 err = rfkill_register(sony_wifi_rfkill);
1103 if (err) 1104 if (err)
1104 rfkill_free(sony_wifi_rfkill); 1105 rfkill_free(sony_wifi_rfkill);
1105 else 1106 else {
1106 sony_rfkill_devices[SONY_WIFI] = sony_wifi_rfkill; 1107 sony_rfkill_devices[SONY_WIFI] = sony_wifi_rfkill;
1108 sony_nc_rfkill_set(sony_wifi_rfkill->data,
1109 RFKILL_STATE_UNBLOCKED);
1110 }
1107 return err; 1111 return err;
1108} 1112}
1109 1113
@@ -1124,8 +1128,11 @@ static int sony_nc_setup_bluetooth_rfkill(struct acpi_device *device)
1124 err = rfkill_register(sony_bluetooth_rfkill); 1128 err = rfkill_register(sony_bluetooth_rfkill);
1125 if (err) 1129 if (err)
1126 rfkill_free(sony_bluetooth_rfkill); 1130 rfkill_free(sony_bluetooth_rfkill);
1127 else 1131 else {
1128 sony_rfkill_devices[SONY_BLUETOOTH] = sony_bluetooth_rfkill; 1132 sony_rfkill_devices[SONY_BLUETOOTH] = sony_bluetooth_rfkill;
1133 sony_nc_rfkill_set(sony_bluetooth_rfkill->data,
1134 RFKILL_STATE_UNBLOCKED);
1135 }
1129 return err; 1136 return err;
1130} 1137}
1131 1138
@@ -1145,8 +1152,11 @@ static int sony_nc_setup_wwan_rfkill(struct acpi_device *device)
1145 err = rfkill_register(sony_wwan_rfkill); 1152 err = rfkill_register(sony_wwan_rfkill);
1146 if (err) 1153 if (err)
1147 rfkill_free(sony_wwan_rfkill); 1154 rfkill_free(sony_wwan_rfkill);
1148 else 1155 else {
1149 sony_rfkill_devices[SONY_WWAN] = sony_wwan_rfkill; 1156 sony_rfkill_devices[SONY_WWAN] = sony_wwan_rfkill;
1157 sony_nc_rfkill_set(sony_wwan_rfkill->data,
1158 RFKILL_STATE_UNBLOCKED);
1159 }
1150 return err; 1160 return err;
1151} 1161}
1152 1162
@@ -1166,8 +1176,11 @@ static int sony_nc_setup_wimax_rfkill(struct acpi_device *device)
1166 err = rfkill_register(sony_wimax_rfkill); 1176 err = rfkill_register(sony_wimax_rfkill);
1167 if (err) 1177 if (err)
1168 rfkill_free(sony_wimax_rfkill); 1178 rfkill_free(sony_wimax_rfkill);
1169 else 1179 else {
1170 sony_rfkill_devices[SONY_WIMAX] = sony_wimax_rfkill; 1180 sony_rfkill_devices[SONY_WIMAX] = sony_wimax_rfkill;
1181 sony_nc_rfkill_set(sony_wimax_rfkill->data,
1182 RFKILL_STATE_UNBLOCKED);
1183 }
1171 return err; 1184 return err;
1172} 1185}
1173 1186
@@ -1276,15 +1289,6 @@ static int sony_nc_add(struct acpi_device *device)
1276 goto outwalk; 1289 goto outwalk;
1277 } 1290 }
1278 1291
1279 status = acpi_install_notify_handler(sony_nc_acpi_handle,
1280 ACPI_DEVICE_NOTIFY,
1281 sony_acpi_notify, NULL);
1282 if (ACPI_FAILURE(status)) {
1283 printk(KERN_WARNING DRV_PFX "unable to install notify handler (%u)\n", status);
1284 result = -ENODEV;
1285 goto outinput;
1286 }
1287
1288 if (acpi_video_backlight_support()) { 1292 if (acpi_video_backlight_support()) {
1289 printk(KERN_INFO DRV_PFX "brightness ignored, must be " 1293 printk(KERN_INFO DRV_PFX "brightness ignored, must be "
1290 "controlled by ACPI video driver\n"); 1294 "controlled by ACPI video driver\n");
@@ -1362,13 +1366,6 @@ static int sony_nc_add(struct acpi_device *device)
1362 if (sony_backlight_device) 1366 if (sony_backlight_device)
1363 backlight_device_unregister(sony_backlight_device); 1367 backlight_device_unregister(sony_backlight_device);
1364 1368
1365 status = acpi_remove_notify_handler(sony_nc_acpi_handle,
1366 ACPI_DEVICE_NOTIFY,
1367 sony_acpi_notify);
1368 if (ACPI_FAILURE(status))
1369 printk(KERN_WARNING DRV_PFX "unable to remove notify handler\n");
1370
1371 outinput:
1372 sony_laptop_remove_input(); 1369 sony_laptop_remove_input();
1373 1370
1374 outwalk: 1371 outwalk:
@@ -1378,7 +1375,6 @@ static int sony_nc_add(struct acpi_device *device)
1378 1375
1379static int sony_nc_remove(struct acpi_device *device, int type) 1376static int sony_nc_remove(struct acpi_device *device, int type)
1380{ 1377{
1381 acpi_status status;
1382 struct sony_nc_value *item; 1378 struct sony_nc_value *item;
1383 1379
1384 if (sony_backlight_device) 1380 if (sony_backlight_device)
@@ -1386,12 +1382,6 @@ static int sony_nc_remove(struct acpi_device *device, int type)
1386 1382
1387 sony_nc_acpi_device = NULL; 1383 sony_nc_acpi_device = NULL;
1388 1384
1389 status = acpi_remove_notify_handler(sony_nc_acpi_handle,
1390 ACPI_DEVICE_NOTIFY,
1391 sony_acpi_notify);
1392 if (ACPI_FAILURE(status))
1393 printk(KERN_WARNING DRV_PFX "unable to remove notify handler\n");
1394
1395 for (item = sony_nc_values; item->name; ++item) { 1385 for (item = sony_nc_values; item->name; ++item) {
1396 device_remove_file(&sony_pf_device->dev, &item->devattr); 1386 device_remove_file(&sony_pf_device->dev, &item->devattr);
1397 } 1387 }
@@ -1425,6 +1415,7 @@ static struct acpi_driver sony_nc_driver = {
1425 .add = sony_nc_add, 1415 .add = sony_nc_add,
1426 .remove = sony_nc_remove, 1416 .remove = sony_nc_remove,
1427 .resume = sony_nc_resume, 1417 .resume = sony_nc_resume,
1418 .notify = sony_nc_notify,
1428 }, 1419 },
1429}; 1420};
1430 1421
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index a40b075743d9..912be65b6261 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -21,7 +21,7 @@
21 * 02110-1301, USA. 21 * 02110-1301, USA.
22 */ 22 */
23 23
24#define TPACPI_VERSION "0.22" 24#define TPACPI_VERSION "0.23"
25#define TPACPI_SYSFS_VERSION 0x020300 25#define TPACPI_SYSFS_VERSION 0x020300
26 26
27/* 27/*
@@ -303,11 +303,17 @@ static u32 dbg_level;
303 303
304static struct workqueue_struct *tpacpi_wq; 304static struct workqueue_struct *tpacpi_wq;
305 305
306enum led_status_t {
307 TPACPI_LED_OFF = 0,
308 TPACPI_LED_ON,
309 TPACPI_LED_BLINK,
310};
311
306/* Special LED class that can defer work */ 312/* Special LED class that can defer work */
307struct tpacpi_led_classdev { 313struct tpacpi_led_classdev {
308 struct led_classdev led_classdev; 314 struct led_classdev led_classdev;
309 struct work_struct work; 315 struct work_struct work;
310 enum led_brightness new_brightness; 316 enum led_status_t new_state;
311 unsigned int led; 317 unsigned int led;
312}; 318};
313 319
@@ -2946,12 +2952,18 @@ static int hotkey_read(char *p)
2946 return len; 2952 return len;
2947} 2953}
2948 2954
2949static void hotkey_enabledisable_warn(void) 2955static void hotkey_enabledisable_warn(bool enable)
2950{ 2956{
2951 tpacpi_log_usertask("procfs hotkey enable/disable"); 2957 tpacpi_log_usertask("procfs hotkey enable/disable");
2952 WARN(1, TPACPI_WARN 2958 if (!WARN((tpacpi_lifecycle == TPACPI_LIFE_RUNNING || !enable),
2953 "hotkey enable/disable functionality has been " 2959 TPACPI_WARN
2954 "removed from the driver. Hotkeys are always enabled.\n"); 2960 "hotkey enable/disable functionality has been "
2961 "removed from the driver. Hotkeys are always "
2962 "enabled\n"))
2963 printk(TPACPI_ERR
2964 "Please remove the hotkey=enable module "
2965 "parameter, it is deprecated. Hotkeys are always "
2966 "enabled\n");
2955} 2967}
2956 2968
2957static int hotkey_write(char *buf) 2969static int hotkey_write(char *buf)
@@ -2971,9 +2983,9 @@ static int hotkey_write(char *buf)
2971 res = 0; 2983 res = 0;
2972 while ((cmd = next_cmd(&buf))) { 2984 while ((cmd = next_cmd(&buf))) {
2973 if (strlencmp(cmd, "enable") == 0) { 2985 if (strlencmp(cmd, "enable") == 0) {
2974 hotkey_enabledisable_warn(); 2986 hotkey_enabledisable_warn(1);
2975 } else if (strlencmp(cmd, "disable") == 0) { 2987 } else if (strlencmp(cmd, "disable") == 0) {
2976 hotkey_enabledisable_warn(); 2988 hotkey_enabledisable_warn(0);
2977 res = -EPERM; 2989 res = -EPERM;
2978 } else if (strlencmp(cmd, "reset") == 0) { 2990 } else if (strlencmp(cmd, "reset") == 0) {
2979 mask = hotkey_orig_mask; 2991 mask = hotkey_orig_mask;
@@ -4207,7 +4219,7 @@ static void light_set_status_worker(struct work_struct *work)
4207 container_of(work, struct tpacpi_led_classdev, work); 4219 container_of(work, struct tpacpi_led_classdev, work);
4208 4220
4209 if (likely(tpacpi_lifecycle == TPACPI_LIFE_RUNNING)) 4221 if (likely(tpacpi_lifecycle == TPACPI_LIFE_RUNNING))
4210 light_set_status((data->new_brightness != LED_OFF)); 4222 light_set_status((data->new_state != TPACPI_LED_OFF));
4211} 4223}
4212 4224
4213static void light_sysfs_set(struct led_classdev *led_cdev, 4225static void light_sysfs_set(struct led_classdev *led_cdev,
@@ -4217,7 +4229,8 @@ static void light_sysfs_set(struct led_classdev *led_cdev,
4217 container_of(led_cdev, 4229 container_of(led_cdev,
4218 struct tpacpi_led_classdev, 4230 struct tpacpi_led_classdev,
4219 led_classdev); 4231 led_classdev);
4220 data->new_brightness = brightness; 4232 data->new_state = (brightness != LED_OFF) ?
4233 TPACPI_LED_ON : TPACPI_LED_OFF;
4221 queue_work(tpacpi_wq, &data->work); 4234 queue_work(tpacpi_wq, &data->work);
4222} 4235}
4223 4236
@@ -4724,12 +4737,6 @@ enum { /* For TPACPI_LED_OLD */
4724 TPACPI_LED_EC_HLMS = 0x0e, /* EC reg to select led to command */ 4737 TPACPI_LED_EC_HLMS = 0x0e, /* EC reg to select led to command */
4725}; 4738};
4726 4739
4727enum led_status_t {
4728 TPACPI_LED_OFF = 0,
4729 TPACPI_LED_ON,
4730 TPACPI_LED_BLINK,
4731};
4732
4733static enum led_access_mode led_supported; 4740static enum led_access_mode led_supported;
4734 4741
4735TPACPI_HANDLE(led, ec, "SLED", /* 570 */ 4742TPACPI_HANDLE(led, ec, "SLED", /* 570 */
@@ -4841,23 +4848,13 @@ static int led_set_status(const unsigned int led,
4841 return rc; 4848 return rc;
4842} 4849}
4843 4850
4844static void led_sysfs_set_status(unsigned int led,
4845 enum led_brightness brightness)
4846{
4847 led_set_status(led,
4848 (brightness == LED_OFF) ?
4849 TPACPI_LED_OFF :
4850 (tpacpi_led_state_cache[led] == TPACPI_LED_BLINK) ?
4851 TPACPI_LED_BLINK : TPACPI_LED_ON);
4852}
4853
4854static void led_set_status_worker(struct work_struct *work) 4851static void led_set_status_worker(struct work_struct *work)
4855{ 4852{
4856 struct tpacpi_led_classdev *data = 4853 struct tpacpi_led_classdev *data =
4857 container_of(work, struct tpacpi_led_classdev, work); 4854 container_of(work, struct tpacpi_led_classdev, work);
4858 4855
4859 if (likely(tpacpi_lifecycle == TPACPI_LIFE_RUNNING)) 4856 if (likely(tpacpi_lifecycle == TPACPI_LIFE_RUNNING))
4860 led_sysfs_set_status(data->led, data->new_brightness); 4857 led_set_status(data->led, data->new_state);
4861} 4858}
4862 4859
4863static void led_sysfs_set(struct led_classdev *led_cdev, 4860static void led_sysfs_set(struct led_classdev *led_cdev,
@@ -4866,7 +4863,13 @@ static void led_sysfs_set(struct led_classdev *led_cdev,
4866 struct tpacpi_led_classdev *data = container_of(led_cdev, 4863 struct tpacpi_led_classdev *data = container_of(led_cdev,
4867 struct tpacpi_led_classdev, led_classdev); 4864 struct tpacpi_led_classdev, led_classdev);
4868 4865
4869 data->new_brightness = brightness; 4866 if (brightness == LED_OFF)
4867 data->new_state = TPACPI_LED_OFF;
4868 else if (tpacpi_led_state_cache[data->led] != TPACPI_LED_BLINK)
4869 data->new_state = TPACPI_LED_ON;
4870 else
4871 data->new_state = TPACPI_LED_BLINK;
4872
4870 queue_work(tpacpi_wq, &data->work); 4873 queue_work(tpacpi_wq, &data->work);
4871} 4874}
4872 4875
@@ -4884,7 +4887,7 @@ static int led_sysfs_blink_set(struct led_classdev *led_cdev,
4884 } else if ((*delay_on != 500) || (*delay_off != 500)) 4887 } else if ((*delay_on != 500) || (*delay_off != 500))
4885 return -EINVAL; 4888 return -EINVAL;
4886 4889
4887 data->new_brightness = TPACPI_LED_BLINK; 4890 data->new_state = TPACPI_LED_BLINK;
4888 queue_work(tpacpi_wq, &data->work); 4891 queue_work(tpacpi_wq, &data->work);
4889 4892
4890 return 0; 4893 return 0;
@@ -7858,6 +7861,15 @@ static int __init thinkpad_acpi_module_init(void)
7858MODULE_ALIAS(TPACPI_DRVR_SHORTNAME); 7861MODULE_ALIAS(TPACPI_DRVR_SHORTNAME);
7859 7862
7860/* 7863/*
7864 * This will autoload the driver in almost every ThinkPad
7865 * in widespread use.
7866 *
7867 * Only _VERY_ old models, like the 240, 240x and 570 lack
7868 * the HKEY event interface.
7869 */
7870MODULE_DEVICE_TABLE(acpi, ibm_htk_device_ids);
7871
7872/*
7861 * DMI matching for module autoloading 7873 * DMI matching for module autoloading
7862 * 7874 *
7863 * See http://thinkwiki.org/wiki/List_of_DMI_IDs 7875 * See http://thinkwiki.org/wiki/List_of_DMI_IDs
@@ -7869,18 +7881,13 @@ MODULE_ALIAS(TPACPI_DRVR_SHORTNAME);
7869#define IBM_BIOS_MODULE_ALIAS(__type) \ 7881#define IBM_BIOS_MODULE_ALIAS(__type) \
7870 MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW*") 7882 MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW*")
7871 7883
7872/* Non-ancient thinkpads */
7873MODULE_ALIAS("dmi:bvnIBM:*:svnIBM:*:pvrThinkPad*:rvnIBM:*");
7874MODULE_ALIAS("dmi:bvnLENOVO:*:svnLENOVO:*:pvrThinkPad*:rvnLENOVO:*");
7875
7876/* Ancient thinkpad BIOSes have to be identified by 7884/* Ancient thinkpad BIOSes have to be identified by
7877 * BIOS type or model number, and there are far less 7885 * BIOS type or model number, and there are far less
7878 * BIOS types than model numbers... */ 7886 * BIOS types than model numbers... */
7879IBM_BIOS_MODULE_ALIAS("I[BDHIMNOTWVYZ]"); 7887IBM_BIOS_MODULE_ALIAS("I[MU]"); /* 570, 570e */
7880IBM_BIOS_MODULE_ALIAS("1[0368A-GIKM-PST]");
7881IBM_BIOS_MODULE_ALIAS("K[UX-Z]");
7882 7888
7883MODULE_AUTHOR("Borislav Deianov, Henrique de Moraes Holschuh"); 7889MODULE_AUTHOR("Borislav Deianov <borislav@users.sf.net>");
7890MODULE_AUTHOR("Henrique de Moraes Holschuh <hmh@hmh.eng.br>");
7884MODULE_DESCRIPTION(TPACPI_DESC); 7891MODULE_DESCRIPTION(TPACPI_DESC);
7885MODULE_VERSION(TPACPI_VERSION); 7892MODULE_VERSION(TPACPI_VERSION);
7886MODULE_LICENSE("GPL"); 7893MODULE_LICENSE("GPL");
diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index 2f269e117b8f..043b208d971d 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -81,6 +81,7 @@ static struct wmi_block wmi_blocks;
81 81
82static int acpi_wmi_remove(struct acpi_device *device, int type); 82static int acpi_wmi_remove(struct acpi_device *device, int type);
83static int acpi_wmi_add(struct acpi_device *device); 83static int acpi_wmi_add(struct acpi_device *device);
84static void acpi_wmi_notify(struct acpi_device *device, u32 event);
84 85
85static const struct acpi_device_id wmi_device_ids[] = { 86static const struct acpi_device_id wmi_device_ids[] = {
86 {"PNP0C14", 0}, 87 {"PNP0C14", 0},
@@ -96,6 +97,7 @@ static struct acpi_driver acpi_wmi_driver = {
96 .ops = { 97 .ops = {
97 .add = acpi_wmi_add, 98 .add = acpi_wmi_add,
98 .remove = acpi_wmi_remove, 99 .remove = acpi_wmi_remove,
100 .notify = acpi_wmi_notify,
99 }, 101 },
100}; 102};
101 103
@@ -643,12 +645,11 @@ acpi_wmi_ec_space_handler(u32 function, acpi_physical_address address,
643 } 645 }
644} 646}
645 647
646static void acpi_wmi_notify(acpi_handle handle, u32 event, void *data) 648static void acpi_wmi_notify(struct acpi_device *device, u32 event)
647{ 649{
648 struct guid_block *block; 650 struct guid_block *block;
649 struct wmi_block *wblock; 651 struct wmi_block *wblock;
650 struct list_head *p; 652 struct list_head *p;
651 struct acpi_device *device = data;
652 653
653 list_for_each(p, &wmi_blocks.list) { 654 list_for_each(p, &wmi_blocks.list) {
654 wblock = list_entry(p, struct wmi_block, list); 655 wblock = list_entry(p, struct wmi_block, list);
@@ -669,9 +670,6 @@ static void acpi_wmi_notify(acpi_handle handle, u32 event, void *data)
669 670
670static int acpi_wmi_remove(struct acpi_device *device, int type) 671static int acpi_wmi_remove(struct acpi_device *device, int type)
671{ 672{
672 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
673 acpi_wmi_notify);
674
675 acpi_remove_address_space_handler(device->handle, 673 acpi_remove_address_space_handler(device->handle,
676 ACPI_ADR_SPACE_EC, &acpi_wmi_ec_space_handler); 674 ACPI_ADR_SPACE_EC, &acpi_wmi_ec_space_handler);
677 675
@@ -683,13 +681,6 @@ static int __init acpi_wmi_add(struct acpi_device *device)
683 acpi_status status; 681 acpi_status status;
684 int result = 0; 682 int result = 0;
685 683
686 status = acpi_install_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
687 acpi_wmi_notify, device);
688 if (ACPI_FAILURE(status)) {
689 printk(KERN_ERR PREFIX "Error installing notify handler\n");
690 return -ENODEV;
691 }
692
693 status = acpi_install_address_space_handler(device->handle, 684 status = acpi_install_address_space_handler(device->handle,
694 ACPI_ADR_SPACE_EC, 685 ACPI_ADR_SPACE_EC,
695 &acpi_wmi_ec_space_handler, 686 &acpi_wmi_ec_space_handler,
diff --git a/drivers/power/pcf50633-charger.c b/drivers/power/pcf50633-charger.c
index 41aec2acbb91..e8b278f71781 100644
--- a/drivers/power/pcf50633-charger.c
+++ b/drivers/power/pcf50633-charger.c
@@ -36,6 +36,8 @@ struct pcf50633_mbc {
36 36
37 struct power_supply usb; 37 struct power_supply usb;
38 struct power_supply adapter; 38 struct power_supply adapter;
39
40 struct delayed_work charging_restart_work;
39}; 41};
40 42
41int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma) 43int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
@@ -43,6 +45,8 @@ int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
43 struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev); 45 struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev);
44 int ret = 0; 46 int ret = 0;
45 u8 bits; 47 u8 bits;
48 int charging_start = 1;
49 u8 mbcs2, chgmod;
46 50
47 if (ma >= 1000) 51 if (ma >= 1000)
48 bits = PCF50633_MBCC7_USB_1000mA; 52 bits = PCF50633_MBCC7_USB_1000mA;
@@ -50,8 +54,10 @@ int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
50 bits = PCF50633_MBCC7_USB_500mA; 54 bits = PCF50633_MBCC7_USB_500mA;
51 else if (ma >= 100) 55 else if (ma >= 100)
52 bits = PCF50633_MBCC7_USB_100mA; 56 bits = PCF50633_MBCC7_USB_100mA;
53 else 57 else {
54 bits = PCF50633_MBCC7_USB_SUSPEND; 58 bits = PCF50633_MBCC7_USB_SUSPEND;
59 charging_start = 0;
60 }
55 61
56 ret = pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC7, 62 ret = pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC7,
57 PCF50633_MBCC7_USB_MASK, bits); 63 PCF50633_MBCC7_USB_MASK, bits);
@@ -60,6 +66,22 @@ int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
60 else 66 else
61 dev_info(pcf->dev, "usb curlim to %d mA\n", ma); 67 dev_info(pcf->dev, "usb curlim to %d mA\n", ma);
62 68
69 /* Manual charging start */
70 mbcs2 = pcf50633_reg_read(pcf, PCF50633_REG_MBCS2);
71 chgmod = (mbcs2 & PCF50633_MBCS2_MBC_MASK);
72
73 /* If chgmod == BATFULL, setting chgena has no effect.
74 * We need to set resume instead.
75 */
76 if (chgmod != PCF50633_MBCS2_MBC_BAT_FULL)
77 pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC1,
78 PCF50633_MBCC1_CHGENA, PCF50633_MBCC1_CHGENA);
79 else
80 pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC1,
81 PCF50633_MBCC1_RESUME, PCF50633_MBCC1_RESUME);
82
83 mbc->usb_active = charging_start;
84
63 power_supply_changed(&mbc->usb); 85 power_supply_changed(&mbc->usb);
64 86
65 return ret; 87 return ret;
@@ -84,21 +106,6 @@ int pcf50633_mbc_get_status(struct pcf50633 *pcf)
84} 106}
85EXPORT_SYMBOL_GPL(pcf50633_mbc_get_status); 107EXPORT_SYMBOL_GPL(pcf50633_mbc_get_status);
86 108
87void pcf50633_mbc_set_status(struct pcf50633 *pcf, int what, int status)
88{
89 struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev);
90
91 if (what & PCF50633_MBC_USB_ONLINE)
92 mbc->usb_online = !!status;
93 if (what & PCF50633_MBC_USB_ACTIVE)
94 mbc->usb_active = !!status;
95 if (what & PCF50633_MBC_ADAPTER_ONLINE)
96 mbc->adapter_online = !!status;
97 if (what & PCF50633_MBC_ADAPTER_ACTIVE)
98 mbc->adapter_active = !!status;
99}
100EXPORT_SYMBOL_GPL(pcf50633_mbc_set_status);
101
102static ssize_t 109static ssize_t
103show_chgmode(struct device *dev, struct device_attribute *attr, char *buf) 110show_chgmode(struct device *dev, struct device_attribute *attr, char *buf)
104{ 111{
@@ -160,10 +167,44 @@ static struct attribute_group mbc_attr_group = {
160 .attrs = pcf50633_mbc_sysfs_entries, 167 .attrs = pcf50633_mbc_sysfs_entries,
161}; 168};
162 169
170/* MBC state machine switches into charging mode when the battery voltage
171 * falls below 96% of a battery float voltage. But the voltage drop in Li-ion
172 * batteries is marginal(1~2 %) till about 80% of its capacity - which means,
173 * after a BATFULL, charging won't be restarted until 80%.
174 *
175 * This work_struct function restarts charging at regular intervals to make
176 * sure we don't discharge too much
177 */
178
179static void pcf50633_mbc_charging_restart(struct work_struct *work)
180{
181 struct pcf50633_mbc *mbc;
182 u8 mbcs2, chgmod;
183
184 mbc = container_of(work, struct pcf50633_mbc,
185 charging_restart_work.work);
186
187 mbcs2 = pcf50633_reg_read(mbc->pcf, PCF50633_REG_MBCS2);
188 chgmod = (mbcs2 & PCF50633_MBCS2_MBC_MASK);
189
190 if (chgmod != PCF50633_MBCS2_MBC_BAT_FULL)
191 return;
192
193 /* Restart charging */
194 pcf50633_reg_set_bit_mask(mbc->pcf, PCF50633_REG_MBCC1,
195 PCF50633_MBCC1_RESUME, PCF50633_MBCC1_RESUME);
196 mbc->usb_active = 1;
197 power_supply_changed(&mbc->usb);
198
199 dev_info(mbc->pcf->dev, "Charging restarted\n");
200}
201
163static void 202static void
164pcf50633_mbc_irq_handler(int irq, void *data) 203pcf50633_mbc_irq_handler(int irq, void *data)
165{ 204{
166 struct pcf50633_mbc *mbc = data; 205 struct pcf50633_mbc *mbc = data;
206 int chg_restart_interval =
207 mbc->pcf->pdata->charging_restart_interval;
167 208
168 /* USB */ 209 /* USB */
169 if (irq == PCF50633_IRQ_USBINS) { 210 if (irq == PCF50633_IRQ_USBINS) {
@@ -172,6 +213,7 @@ pcf50633_mbc_irq_handler(int irq, void *data)
172 mbc->usb_online = 0; 213 mbc->usb_online = 0;
173 mbc->usb_active = 0; 214 mbc->usb_active = 0;
174 pcf50633_mbc_usb_curlim_set(mbc->pcf, 0); 215 pcf50633_mbc_usb_curlim_set(mbc->pcf, 0);
216 cancel_delayed_work_sync(&mbc->charging_restart_work);
175 } 217 }
176 218
177 /* Adapter */ 219 /* Adapter */
@@ -186,7 +228,14 @@ pcf50633_mbc_irq_handler(int irq, void *data)
186 if (irq == PCF50633_IRQ_BATFULL) { 228 if (irq == PCF50633_IRQ_BATFULL) {
187 mbc->usb_active = 0; 229 mbc->usb_active = 0;
188 mbc->adapter_active = 0; 230 mbc->adapter_active = 0;
189 } 231
232 if (chg_restart_interval > 0)
233 schedule_delayed_work(&mbc->charging_restart_work,
234 chg_restart_interval);
235 } else if (irq == PCF50633_IRQ_USBLIMON)
236 mbc->usb_active = 0;
237 else if (irq == PCF50633_IRQ_USBLIMOFF)
238 mbc->usb_active = 1;
190 239
191 power_supply_changed(&mbc->usb); 240 power_supply_changed(&mbc->usb);
192 power_supply_changed(&mbc->adapter); 241 power_supply_changed(&mbc->adapter);
@@ -303,6 +352,9 @@ static int __devinit pcf50633_mbc_probe(struct platform_device *pdev)
303 return ret; 352 return ret;
304 } 353 }
305 354
355 INIT_DELAYED_WORK(&mbc->charging_restart_work,
356 pcf50633_mbc_charging_restart);
357
306 ret = sysfs_create_group(&pdev->dev.kobj, &mbc_attr_group); 358 ret = sysfs_create_group(&pdev->dev.kobj, &mbc_attr_group);
307 if (ret) 359 if (ret)
308 dev_err(mbc->pcf->dev, "failed to create sysfs entries\n"); 360 dev_err(mbc->pcf->dev, "failed to create sysfs entries\n");
@@ -328,6 +380,8 @@ static int __devexit pcf50633_mbc_remove(struct platform_device *pdev)
328 power_supply_unregister(&mbc->usb); 380 power_supply_unregister(&mbc->usb);
329 power_supply_unregister(&mbc->adapter); 381 power_supply_unregister(&mbc->adapter);
330 382
383 cancel_delayed_work_sync(&mbc->charging_restart_work);
384
331 kfree(mbc); 385 kfree(mbc);
332 386
333 return 0; 387 return 0;
diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c
index b56a704409d2..a232de6a5703 100644
--- a/drivers/power/pda_power.c
+++ b/drivers/power/pda_power.c
@@ -12,11 +12,14 @@
12 12
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/err.h>
15#include <linux/interrupt.h> 16#include <linux/interrupt.h>
16#include <linux/power_supply.h> 17#include <linux/power_supply.h>
17#include <linux/pda_power.h> 18#include <linux/pda_power.h>
19#include <linux/regulator/consumer.h>
18#include <linux/timer.h> 20#include <linux/timer.h>
19#include <linux/jiffies.h> 21#include <linux/jiffies.h>
22#include <linux/usb/otg.h>
20 23
21static inline unsigned int get_irq_flags(struct resource *res) 24static inline unsigned int get_irq_flags(struct resource *res)
22{ 25{
@@ -35,6 +38,11 @@ static struct timer_list supply_timer;
35static struct timer_list polling_timer; 38static struct timer_list polling_timer;
36static int polling; 39static int polling;
37 40
41#ifdef CONFIG_USB_OTG_UTILS
42static struct otg_transceiver *transceiver;
43#endif
44static struct regulator *ac_draw;
45
38enum { 46enum {
39 PDA_PSY_OFFLINE = 0, 47 PDA_PSY_OFFLINE = 0,
40 PDA_PSY_ONLINE = 1, 48 PDA_PSY_ONLINE = 1,
@@ -104,18 +112,35 @@ static void update_status(void)
104 112
105static void update_charger(void) 113static void update_charger(void)
106{ 114{
107 if (!pdata->set_charge) 115 static int regulator_enabled;
108 return; 116 int max_uA = pdata->ac_max_uA;
109 117
110 if (new_ac_status > 0) { 118 if (pdata->set_charge) {
111 dev_dbg(dev, "charger on (AC)\n"); 119 if (new_ac_status > 0) {
112 pdata->set_charge(PDA_POWER_CHARGE_AC); 120 dev_dbg(dev, "charger on (AC)\n");
113 } else if (new_usb_status > 0) { 121 pdata->set_charge(PDA_POWER_CHARGE_AC);
114 dev_dbg(dev, "charger on (USB)\n"); 122 } else if (new_usb_status > 0) {
115 pdata->set_charge(PDA_POWER_CHARGE_USB); 123 dev_dbg(dev, "charger on (USB)\n");
116 } else { 124 pdata->set_charge(PDA_POWER_CHARGE_USB);
117 dev_dbg(dev, "charger off\n"); 125 } else {
118 pdata->set_charge(0); 126 dev_dbg(dev, "charger off\n");
127 pdata->set_charge(0);
128 }
129 } else if (ac_draw) {
130 if (new_ac_status > 0) {
131 regulator_set_current_limit(ac_draw, max_uA, max_uA);
132 if (!regulator_enabled) {
133 dev_dbg(dev, "charger on (AC)\n");
134 regulator_enable(ac_draw);
135 regulator_enabled = 1;
136 }
137 } else {
138 if (regulator_enabled) {
139 dev_dbg(dev, "charger off\n");
140 regulator_disable(ac_draw);
141 regulator_enabled = 0;
142 }
143 }
119 } 144 }
120} 145}
121 146
@@ -194,6 +219,13 @@ static void polling_timer_func(unsigned long unused)
194 jiffies + msecs_to_jiffies(pdata->polling_interval)); 219 jiffies + msecs_to_jiffies(pdata->polling_interval));
195} 220}
196 221
222#ifdef CONFIG_USB_OTG_UTILS
223static int otg_is_usb_online(void)
224{
225 return (transceiver->state == OTG_STATE_B_PERIPHERAL);
226}
227#endif
228
197static int pda_power_probe(struct platform_device *pdev) 229static int pda_power_probe(struct platform_device *pdev)
198{ 230{
199 int ret = 0; 231 int ret = 0;
@@ -227,6 +259,9 @@ static int pda_power_probe(struct platform_device *pdev)
227 if (!pdata->polling_interval) 259 if (!pdata->polling_interval)
228 pdata->polling_interval = 2000; 260 pdata->polling_interval = 2000;
229 261
262 if (!pdata->ac_max_uA)
263 pdata->ac_max_uA = 500000;
264
230 setup_timer(&charger_timer, charger_timer_func, 0); 265 setup_timer(&charger_timer, charger_timer_func, 0);
231 setup_timer(&supply_timer, supply_timer_func, 0); 266 setup_timer(&supply_timer, supply_timer_func, 0);
232 267
@@ -240,6 +275,13 @@ static int pda_power_probe(struct platform_device *pdev)
240 pda_psy_usb.num_supplicants = pdata->num_supplicants; 275 pda_psy_usb.num_supplicants = pdata->num_supplicants;
241 } 276 }
242 277
278 ac_draw = regulator_get(dev, "ac_draw");
279 if (IS_ERR(ac_draw)) {
280 dev_dbg(dev, "couldn't get ac_draw regulator\n");
281 ac_draw = NULL;
282 ret = PTR_ERR(ac_draw);
283 }
284
243 if (pdata->is_ac_online) { 285 if (pdata->is_ac_online) {
244 ret = power_supply_register(&pdev->dev, &pda_psy_ac); 286 ret = power_supply_register(&pdev->dev, &pda_psy_ac);
245 if (ret) { 287 if (ret) {
@@ -261,6 +303,13 @@ static int pda_power_probe(struct platform_device *pdev)
261 } 303 }
262 } 304 }
263 305
306#ifdef CONFIG_USB_OTG_UTILS
307 transceiver = otg_get_transceiver();
308 if (transceiver && !pdata->is_usb_online) {
309 pdata->is_usb_online = otg_is_usb_online;
310 }
311#endif
312
264 if (pdata->is_usb_online) { 313 if (pdata->is_usb_online) {
265 ret = power_supply_register(&pdev->dev, &pda_psy_usb); 314 ret = power_supply_register(&pdev->dev, &pda_psy_usb);
266 if (ret) { 315 if (ret) {
@@ -300,10 +349,18 @@ usb_irq_failed:
300usb_supply_failed: 349usb_supply_failed:
301 if (pdata->is_ac_online && ac_irq) 350 if (pdata->is_ac_online && ac_irq)
302 free_irq(ac_irq->start, &pda_psy_ac); 351 free_irq(ac_irq->start, &pda_psy_ac);
352#ifdef CONFIG_USB_OTG_UTILS
353 if (transceiver)
354 otg_put_transceiver(transceiver);
355#endif
303ac_irq_failed: 356ac_irq_failed:
304 if (pdata->is_ac_online) 357 if (pdata->is_ac_online)
305 power_supply_unregister(&pda_psy_ac); 358 power_supply_unregister(&pda_psy_ac);
306ac_supply_failed: 359ac_supply_failed:
360 if (ac_draw) {
361 regulator_put(ac_draw);
362 ac_draw = NULL;
363 }
307 if (pdata->exit) 364 if (pdata->exit)
308 pdata->exit(dev); 365 pdata->exit(dev);
309init_failed: 366init_failed:
@@ -327,6 +384,14 @@ static int pda_power_remove(struct platform_device *pdev)
327 power_supply_unregister(&pda_psy_usb); 384 power_supply_unregister(&pda_psy_usb);
328 if (pdata->is_ac_online) 385 if (pdata->is_ac_online)
329 power_supply_unregister(&pda_psy_ac); 386 power_supply_unregister(&pda_psy_ac);
387#ifdef CONFIG_USB_OTG_UTILS
388 if (transceiver)
389 otg_put_transceiver(transceiver);
390#endif
391 if (ac_draw) {
392 regulator_put(ac_draw);
393 ac_draw = NULL;
394 }
330 if (pdata->exit) 395 if (pdata->exit)
331 pdata->exit(dev); 396 pdata->exit(dev);
332 397
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index ffe34a12f446..4e9851fc1746 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -573,7 +573,7 @@ config RTC_DRV_SA1100
573 573
574config RTC_DRV_SH 574config RTC_DRV_SH
575 tristate "SuperH On-Chip RTC" 575 tristate "SuperH On-Chip RTC"
576 depends on RTC_CLASS && SUPERH 576 depends on RTC_CLASS && SUPERH && HAVE_CLK
577 help 577 help
578 Say Y here to enable support for the on-chip RTC found in 578 Say Y here to enable support for the on-chip RTC found in
579 most SuperH processors. 579 most SuperH processors.
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
index b6d35f50e404..23e10b6263d6 100644
--- a/drivers/rtc/rtc-cmos.c
+++ b/drivers/rtc/rtc-cmos.c
@@ -797,17 +797,15 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
797 goto cleanup2; 797 goto cleanup2;
798 } 798 }
799 799
800 pr_info("%s: alarms up to one %s%s, %zd bytes nvram%s\n", 800 pr_info("%s: %s%s, %zd bytes nvram%s\n",
801 dev_name(&cmos_rtc.rtc->dev), 801 dev_name(&cmos_rtc.rtc->dev),
802 is_valid_irq(rtc_irq) 802 !is_valid_irq(rtc_irq) ? "no alarms" :
803 ? (cmos_rtc.mon_alrm 803 cmos_rtc.mon_alrm ? "alarms up to one year" :
804 ? "year" 804 cmos_rtc.day_alrm ? "alarms up to one month" :
805 : (cmos_rtc.day_alrm 805 "alarms up to one day",
806 ? "month" : "day")) 806 cmos_rtc.century ? ", y3k" : "",
807 : "no", 807 nvram.size,
808 cmos_rtc.century ? ", y3k" : "", 808 is_hpet_enabled() ? ", hpet irqs" : "");
809 nvram.size,
810 is_hpet_enabled() ? ", hpet irqs" : "");
811 809
812 return 0; 810 return 0;
813 811
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index 9b1ff12bf947..d7310adb7152 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * SuperH On-Chip RTC Support 2 * SuperH On-Chip RTC Support
3 * 3 *
4 * Copyright (C) 2006, 2007, 2008 Paul Mundt 4 * Copyright (C) 2006 - 2009 Paul Mundt
5 * Copyright (C) 2006 Jamie Lenehan 5 * Copyright (C) 2006 Jamie Lenehan
6 * Copyright (C) 2008 Angelo Castello 6 * Copyright (C) 2008 Angelo Castello
7 * 7 *
@@ -25,10 +25,11 @@
25#include <linux/spinlock.h> 25#include <linux/spinlock.h>
26#include <linux/io.h> 26#include <linux/io.h>
27#include <linux/log2.h> 27#include <linux/log2.h>
28#include <linux/clk.h>
28#include <asm/rtc.h> 29#include <asm/rtc.h>
29 30
30#define DRV_NAME "sh-rtc" 31#define DRV_NAME "sh-rtc"
31#define DRV_VERSION "0.2.1" 32#define DRV_VERSION "0.2.2"
32 33
33#define RTC_REG(r) ((r) * rtc_reg_size) 34#define RTC_REG(r) ((r) * rtc_reg_size)
34 35
@@ -87,16 +88,17 @@
87#define RCR2_START 0x01 /* Start bit */ 88#define RCR2_START 0x01 /* Start bit */
88 89
89struct sh_rtc { 90struct sh_rtc {
90 void __iomem *regbase; 91 void __iomem *regbase;
91 unsigned long regsize; 92 unsigned long regsize;
92 struct resource *res; 93 struct resource *res;
93 int alarm_irq; 94 int alarm_irq;
94 int periodic_irq; 95 int periodic_irq;
95 int carry_irq; 96 int carry_irq;
96 struct rtc_device *rtc_dev; 97 struct clk *clk;
97 spinlock_t lock; 98 struct rtc_device *rtc_dev;
98 unsigned long capabilities; /* See asm-sh/rtc.h for cap bits */ 99 spinlock_t lock;
99 unsigned short periodic_freq; 100 unsigned long capabilities; /* See asm/rtc.h for cap bits */
101 unsigned short periodic_freq;
100}; 102};
101 103
102static int __sh_rtc_interrupt(struct sh_rtc *rtc) 104static int __sh_rtc_interrupt(struct sh_rtc *rtc)
@@ -294,10 +296,10 @@ static inline void sh_rtc_setaie(struct device *dev, unsigned int enable)
294 296
295 tmp = readb(rtc->regbase + RCR1); 297 tmp = readb(rtc->regbase + RCR1);
296 298
297 if (!enable) 299 if (enable)
298 tmp &= ~RCR1_AIE;
299 else
300 tmp |= RCR1_AIE; 300 tmp |= RCR1_AIE;
301 else
302 tmp &= ~RCR1_AIE;
301 303
302 writeb(tmp, rtc->regbase + RCR1); 304 writeb(tmp, rtc->regbase + RCR1);
303 305
@@ -618,6 +620,7 @@ static int sh_rtc_irq_set_freq(struct device *dev, int freq)
618{ 620{
619 if (!is_power_of_2(freq)) 621 if (!is_power_of_2(freq))
620 return -EINVAL; 622 return -EINVAL;
623
621 return sh_rtc_ioctl(dev, RTC_IRQP_SET, freq); 624 return sh_rtc_ioctl(dev, RTC_IRQP_SET, freq);
622} 625}
623 626
@@ -637,7 +640,8 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
637 struct sh_rtc *rtc; 640 struct sh_rtc *rtc;
638 struct resource *res; 641 struct resource *res;
639 struct rtc_time r; 642 struct rtc_time r;
640 int ret; 643 char clk_name[6];
644 int clk_id, ret;
641 645
642 rtc = kzalloc(sizeof(struct sh_rtc), GFP_KERNEL); 646 rtc = kzalloc(sizeof(struct sh_rtc), GFP_KERNEL);
643 if (unlikely(!rtc)) 647 if (unlikely(!rtc))
@@ -652,6 +656,7 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
652 dev_err(&pdev->dev, "No IRQ resource\n"); 656 dev_err(&pdev->dev, "No IRQ resource\n");
653 goto err_badres; 657 goto err_badres;
654 } 658 }
659
655 rtc->periodic_irq = ret; 660 rtc->periodic_irq = ret;
656 rtc->carry_irq = platform_get_irq(pdev, 1); 661 rtc->carry_irq = platform_get_irq(pdev, 1);
657 rtc->alarm_irq = platform_get_irq(pdev, 2); 662 rtc->alarm_irq = platform_get_irq(pdev, 2);
@@ -663,7 +668,7 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
663 goto err_badres; 668 goto err_badres;
664 } 669 }
665 670
666 rtc->regsize = res->end - res->start + 1; 671 rtc->regsize = resource_size(res);
667 672
668 rtc->res = request_mem_region(res->start, rtc->regsize, pdev->name); 673 rtc->res = request_mem_region(res->start, rtc->regsize, pdev->name);
669 if (unlikely(!rtc->res)) { 674 if (unlikely(!rtc->res)) {
@@ -677,6 +682,26 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
677 goto err_badmap; 682 goto err_badmap;
678 } 683 }
679 684
685 clk_id = pdev->id;
686 /* With a single device, the clock id is still "rtc0" */
687 if (clk_id < 0)
688 clk_id = 0;
689
690 snprintf(clk_name, sizeof(clk_name), "rtc%d", clk_id);
691
692 rtc->clk = clk_get(&pdev->dev, clk_name);
693 if (IS_ERR(rtc->clk)) {
694 /*
695 * No error handling for rtc->clk intentionally, not all
696 * platforms will have a unique clock for the RTC, and
697 * the clk API can handle the struct clk pointer being
698 * NULL.
699 */
700 rtc->clk = NULL;
701 }
702
703 clk_enable(rtc->clk);
704
680 rtc->rtc_dev = rtc_device_register("sh", &pdev->dev, 705 rtc->rtc_dev = rtc_device_register("sh", &pdev->dev,
681 &sh_rtc_ops, THIS_MODULE); 706 &sh_rtc_ops, THIS_MODULE);
682 if (IS_ERR(rtc->rtc_dev)) { 707 if (IS_ERR(rtc->rtc_dev)) {
@@ -759,6 +784,8 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
759 return 0; 784 return 0;
760 785
761err_unmap: 786err_unmap:
787 clk_disable(rtc->clk);
788 clk_put(rtc->clk);
762 iounmap(rtc->regbase); 789 iounmap(rtc->regbase);
763err_badmap: 790err_badmap:
764 release_resource(rtc->res); 791 release_resource(rtc->res);
@@ -780,6 +807,7 @@ static int __devexit sh_rtc_remove(struct platform_device *pdev)
780 sh_rtc_setcie(&pdev->dev, 0); 807 sh_rtc_setcie(&pdev->dev, 0);
781 808
782 free_irq(rtc->periodic_irq, rtc); 809 free_irq(rtc->periodic_irq, rtc);
810
783 if (rtc->carry_irq > 0) { 811 if (rtc->carry_irq > 0) {
784 free_irq(rtc->carry_irq, rtc); 812 free_irq(rtc->carry_irq, rtc);
785 free_irq(rtc->alarm_irq, rtc); 813 free_irq(rtc->alarm_irq, rtc);
@@ -789,6 +817,9 @@ static int __devexit sh_rtc_remove(struct platform_device *pdev)
789 817
790 iounmap(rtc->regbase); 818 iounmap(rtc->regbase);
791 819
820 clk_disable(rtc->clk);
821 clk_put(rtc->clk);
822
792 platform_set_drvdata(pdev, NULL); 823 platform_set_drvdata(pdev, NULL);
793 824
794 kfree(rtc); 825 kfree(rtc);
@@ -802,11 +833,11 @@ static void sh_rtc_set_irq_wake(struct device *dev, int enabled)
802 struct sh_rtc *rtc = platform_get_drvdata(pdev); 833 struct sh_rtc *rtc = platform_get_drvdata(pdev);
803 834
804 set_irq_wake(rtc->periodic_irq, enabled); 835 set_irq_wake(rtc->periodic_irq, enabled);
836
805 if (rtc->carry_irq > 0) { 837 if (rtc->carry_irq > 0) {
806 set_irq_wake(rtc->carry_irq, enabled); 838 set_irq_wake(rtc->carry_irq, enabled);
807 set_irq_wake(rtc->alarm_irq, enabled); 839 set_irq_wake(rtc->alarm_irq, enabled);
808 } 840 }
809
810} 841}
811 842
812static int sh_rtc_suspend(struct device *dev) 843static int sh_rtc_suspend(struct device *dev)
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 0570794ccf1c..d1815272c435 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -20,6 +20,7 @@
20#include <linux/slab.h> 20#include <linux/slab.h>
21#include <linux/buffer_head.h> 21#include <linux/buffer_head.h>
22#include <linux/hdreg.h> 22#include <linux/hdreg.h>
23#include <linux/async.h>
23 24
24#include <asm/ccwdev.h> 25#include <asm/ccwdev.h>
25#include <asm/ebcdic.h> 26#include <asm/ebcdic.h>
@@ -480,8 +481,10 @@ static void dasd_change_state(struct dasd_device *device)
480 if (rc && rc != -EAGAIN) 481 if (rc && rc != -EAGAIN)
481 device->target = device->state; 482 device->target = device->state;
482 483
483 if (device->state == device->target) 484 if (device->state == device->target) {
484 wake_up(&dasd_init_waitq); 485 wake_up(&dasd_init_waitq);
486 dasd_put_device(device);
487 }
485 488
486 /* let user-space know that the device status changed */ 489 /* let user-space know that the device status changed */
487 kobject_uevent(&device->cdev->dev.kobj, KOBJ_CHANGE); 490 kobject_uevent(&device->cdev->dev.kobj, KOBJ_CHANGE);
@@ -513,12 +516,15 @@ void dasd_kick_device(struct dasd_device *device)
513 */ 516 */
514void dasd_set_target_state(struct dasd_device *device, int target) 517void dasd_set_target_state(struct dasd_device *device, int target)
515{ 518{
519 dasd_get_device(device);
516 /* If we are in probeonly mode stop at DASD_STATE_READY. */ 520 /* If we are in probeonly mode stop at DASD_STATE_READY. */
517 if (dasd_probeonly && target > DASD_STATE_READY) 521 if (dasd_probeonly && target > DASD_STATE_READY)
518 target = DASD_STATE_READY; 522 target = DASD_STATE_READY;
519 if (device->target != target) { 523 if (device->target != target) {
520 if (device->state == target) 524 if (device->state == target) {
521 wake_up(&dasd_init_waitq); 525 wake_up(&dasd_init_waitq);
526 dasd_put_device(device);
527 }
522 device->target = target; 528 device->target = target;
523 } 529 }
524 if (device->state != device->target) 530 if (device->state != device->target)
@@ -2148,6 +2154,22 @@ dasd_exit(void)
2148 * SECTION: common functions for ccw_driver use 2154 * SECTION: common functions for ccw_driver use
2149 */ 2155 */
2150 2156
2157static void dasd_generic_auto_online(void *data, async_cookie_t cookie)
2158{
2159 struct ccw_device *cdev = data;
2160 int ret;
2161
2162 ret = ccw_device_set_online(cdev);
2163 if (ret)
2164 pr_warning("%s: Setting the DASD online failed with rc=%d\n",
2165 dev_name(&cdev->dev), ret);
2166 else {
2167 struct dasd_device *device = dasd_device_from_cdev(cdev);
2168 wait_event(dasd_init_waitq, _wait_for_device(device));
2169 dasd_put_device(device);
2170 }
2171}
2172
2151/* 2173/*
2152 * Initial attempt at a probe function. this can be simplified once 2174 * Initial attempt at a probe function. this can be simplified once
2153 * the other detection code is gone. 2175 * the other detection code is gone.
@@ -2180,10 +2202,7 @@ int dasd_generic_probe(struct ccw_device *cdev,
2180 */ 2202 */
2181 if ((dasd_get_feature(cdev, DASD_FEATURE_INITIAL_ONLINE) > 0 ) || 2203 if ((dasd_get_feature(cdev, DASD_FEATURE_INITIAL_ONLINE) > 0 ) ||
2182 (dasd_autodetect && dasd_busid_known(dev_name(&cdev->dev)) != 0)) 2204 (dasd_autodetect && dasd_busid_known(dev_name(&cdev->dev)) != 0))
2183 ret = ccw_device_set_online(cdev); 2205 async_schedule(dasd_generic_auto_online, cdev);
2184 if (ret)
2185 pr_warning("%s: Setting the DASD online failed with rc=%d\n",
2186 dev_name(&cdev->dev), ret);
2187 return 0; 2206 return 0;
2188} 2207}
2189 2208
@@ -2290,13 +2309,7 @@ int dasd_generic_set_online(struct ccw_device *cdev,
2290 } else 2309 } else
2291 pr_debug("dasd_generic device %s found\n", 2310 pr_debug("dasd_generic device %s found\n",
2292 dev_name(&cdev->dev)); 2311 dev_name(&cdev->dev));
2293
2294 /* FIXME: we have to wait for the root device but we don't want
2295 * to wait for each single device but for all at once. */
2296 wait_event(dasd_init_waitq, _wait_for_device(device));
2297
2298 dasd_put_device(device); 2312 dasd_put_device(device);
2299
2300 return rc; 2313 return rc;
2301} 2314}
2302 2315
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 21254793c604..cb52da033f06 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -2019,15 +2019,23 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_track(
2019 ccw++; 2019 ccw++;
2020 recid += count; 2020 recid += count;
2021 new_track = 0; 2021 new_track = 0;
2022 /* first idaw for a ccw may start anywhere */
2023 if (!idaw_dst)
2024 idaw_dst = dst;
2022 } 2025 }
2023 /* If we start a new idaw, everything is fine and the 2026 /* If we start a new idaw, we must make sure that it
2024 * start of the new idaw is the start of this segment. 2027 * starts on an IDA_BLOCK_SIZE boundary.
2025 * If we continue an idaw, we must make sure that the 2028 * If we continue an idaw, we must make sure that the
2026 * current segment begins where the so far accumulated 2029 * current segment begins where the so far accumulated
2027 * idaw ends 2030 * idaw ends
2028 */ 2031 */
2029 if (!idaw_dst) 2032 if (!idaw_dst) {
2030 idaw_dst = dst; 2033 if (__pa(dst) & (IDA_BLOCK_SIZE-1)) {
2034 dasd_sfree_request(cqr, startdev);
2035 return ERR_PTR(-ERANGE);
2036 } else
2037 idaw_dst = dst;
2038 }
2031 if ((idaw_dst + idaw_len) != dst) { 2039 if ((idaw_dst + idaw_len) != dst) {
2032 dasd_sfree_request(cqr, startdev); 2040 dasd_sfree_request(cqr, startdev);
2033 return ERR_PTR(-ERANGE); 2041 return ERR_PTR(-ERANGE);
diff --git a/drivers/s390/char/tape.h b/drivers/s390/char/tape.h
index c07809c8016a..5469e099597e 100644
--- a/drivers/s390/char/tape.h
+++ b/drivers/s390/char/tape.h
@@ -285,7 +285,7 @@ extern int tape_mtop(struct tape_device *, int, int);
285extern void tape_state_set(struct tape_device *, enum tape_state); 285extern void tape_state_set(struct tape_device *, enum tape_state);
286 286
287extern int tape_generic_online(struct tape_device *, struct tape_discipline *); 287extern int tape_generic_online(struct tape_device *, struct tape_discipline *);
288extern int tape_generic_offline(struct tape_device *device); 288extern int tape_generic_offline(struct ccw_device *);
289 289
290/* Externals from tape_devmap.c */ 290/* Externals from tape_devmap.c */
291extern int tape_generic_probe(struct ccw_device *); 291extern int tape_generic_probe(struct ccw_device *);
diff --git a/drivers/s390/char/tape_34xx.c b/drivers/s390/char/tape_34xx.c
index 807ded5eb049..5f8e8ef43dd3 100644
--- a/drivers/s390/char/tape_34xx.c
+++ b/drivers/s390/char/tape_34xx.c
@@ -1294,12 +1294,6 @@ tape_34xx_online(struct ccw_device *cdev)
1294 ); 1294 );
1295} 1295}
1296 1296
1297static int
1298tape_34xx_offline(struct ccw_device *cdev)
1299{
1300 return tape_generic_offline(cdev->dev.driver_data);
1301}
1302
1303static struct ccw_driver tape_34xx_driver = { 1297static struct ccw_driver tape_34xx_driver = {
1304 .name = "tape_34xx", 1298 .name = "tape_34xx",
1305 .owner = THIS_MODULE, 1299 .owner = THIS_MODULE,
@@ -1307,7 +1301,7 @@ static struct ccw_driver tape_34xx_driver = {
1307 .probe = tape_generic_probe, 1301 .probe = tape_generic_probe,
1308 .remove = tape_generic_remove, 1302 .remove = tape_generic_remove,
1309 .set_online = tape_34xx_online, 1303 .set_online = tape_34xx_online,
1310 .set_offline = tape_34xx_offline, 1304 .set_offline = tape_generic_offline,
1311}; 1305};
1312 1306
1313static int 1307static int
diff --git a/drivers/s390/char/tape_3590.c b/drivers/s390/char/tape_3590.c
index fc1d91294143..823b05bd0dd7 100644
--- a/drivers/s390/char/tape_3590.c
+++ b/drivers/s390/char/tape_3590.c
@@ -1707,19 +1707,13 @@ tape_3590_online(struct ccw_device *cdev)
1707 &tape_discipline_3590); 1707 &tape_discipline_3590);
1708} 1708}
1709 1709
1710static int
1711tape_3590_offline(struct ccw_device *cdev)
1712{
1713 return tape_generic_offline(cdev->dev.driver_data);
1714}
1715
1716static struct ccw_driver tape_3590_driver = { 1710static struct ccw_driver tape_3590_driver = {
1717 .name = "tape_3590", 1711 .name = "tape_3590",
1718 .owner = THIS_MODULE, 1712 .owner = THIS_MODULE,
1719 .ids = tape_3590_ids, 1713 .ids = tape_3590_ids,
1720 .probe = tape_generic_probe, 1714 .probe = tape_generic_probe,
1721 .remove = tape_generic_remove, 1715 .remove = tape_generic_remove,
1722 .set_offline = tape_3590_offline, 1716 .set_offline = tape_generic_offline,
1723 .set_online = tape_3590_online, 1717 .set_online = tape_3590_online,
1724}; 1718};
1725 1719
diff --git a/drivers/s390/char/tape_core.c b/drivers/s390/char/tape_core.c
index 08c09d3503cf..8a109f3b69c6 100644
--- a/drivers/s390/char/tape_core.c
+++ b/drivers/s390/char/tape_core.c
@@ -387,8 +387,11 @@ tape_cleanup_device(struct tape_device *device)
387 * Manual offline is only allowed while the drive is not in use. 387 * Manual offline is only allowed while the drive is not in use.
388 */ 388 */
389int 389int
390tape_generic_offline(struct tape_device *device) 390tape_generic_offline(struct ccw_device *cdev)
391{ 391{
392 struct tape_device *device;
393
394 device = cdev->dev.driver_data;
392 if (!device) { 395 if (!device) {
393 return -ENODEV; 396 return -ENODEV;
394 } 397 }
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index 9e8a2914259b..accd957454e7 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -881,42 +881,6 @@ no_handler:
881 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED); 881 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
882} 882}
883 883
884static void qdio_call_shutdown(struct work_struct *work)
885{
886 struct ccw_device_private *priv;
887 struct ccw_device *cdev;
888
889 priv = container_of(work, struct ccw_device_private, kick_work);
890 cdev = priv->cdev;
891 qdio_shutdown(cdev, QDIO_FLAG_CLEANUP_USING_CLEAR);
892 put_device(&cdev->dev);
893}
894
895static void qdio_int_error(struct ccw_device *cdev)
896{
897 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
898
899 switch (irq_ptr->state) {
900 case QDIO_IRQ_STATE_INACTIVE:
901 case QDIO_IRQ_STATE_CLEANUP:
902 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
903 break;
904 case QDIO_IRQ_STATE_ESTABLISHED:
905 case QDIO_IRQ_STATE_ACTIVE:
906 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
907 if (get_device(&cdev->dev)) {
908 /* Can't call shutdown from interrupt context. */
909 PREPARE_WORK(&cdev->private->kick_work,
910 qdio_call_shutdown);
911 queue_work(ccw_device_work, &cdev->private->kick_work);
912 }
913 break;
914 default:
915 WARN_ON(1);
916 }
917 wake_up(&cdev->private->wait_q);
918}
919
920static int qdio_establish_check_errors(struct ccw_device *cdev, int cstat, 884static int qdio_establish_check_errors(struct ccw_device *cdev, int cstat,
921 int dstat) 885 int dstat)
922{ 886{
@@ -973,10 +937,8 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm,
973 switch (PTR_ERR(irb)) { 937 switch (PTR_ERR(irb)) {
974 case -EIO: 938 case -EIO:
975 DBF_ERROR("%4x IO error", irq_ptr->schid.sch_no); 939 DBF_ERROR("%4x IO error", irq_ptr->schid.sch_no);
976 return; 940 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
977 case -ETIMEDOUT: 941 wake_up(&cdev->private->wait_q);
978 DBF_ERROR("%4x IO timeout", irq_ptr->schid.sch_no);
979 qdio_int_error(cdev);
980 return; 942 return;
981 default: 943 default:
982 WARN_ON(1); 944 WARN_ON(1);
@@ -1001,7 +963,6 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm,
1001 case QDIO_IRQ_STATE_ACTIVE: 963 case QDIO_IRQ_STATE_ACTIVE:
1002 if (cstat & SCHN_STAT_PCI) { 964 if (cstat & SCHN_STAT_PCI) {
1003 qdio_int_handler_pci(irq_ptr); 965 qdio_int_handler_pci(irq_ptr);
1004 /* no state change so no need to wake up wait_q */
1005 return; 966 return;
1006 } 967 }
1007 if ((cstat & ~SCHN_STAT_PCI) || dstat) { 968 if ((cstat & ~SCHN_STAT_PCI) || dstat) {
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c
index e6d1fc8c54f1..a85ad05e8548 100644
--- a/drivers/sbus/char/jsflash.c
+++ b/drivers/sbus/char/jsflash.c
@@ -383,18 +383,22 @@ static int jsf_ioctl_program(void __user *arg)
383 return 0; 383 return 0;
384} 384}
385 385
386static int jsf_ioctl(struct inode *inode, struct file *f, unsigned int cmd, 386static long jsf_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
387 unsigned long arg)
388{ 387{
388 lock_kernel();
389 int error = -ENOTTY; 389 int error = -ENOTTY;
390 void __user *argp = (void __user *)arg; 390 void __user *argp = (void __user *)arg;
391 391
392 if (!capable(CAP_SYS_ADMIN)) 392 if (!capable(CAP_SYS_ADMIN)) {
393 unlock_kernel();
393 return -EPERM; 394 return -EPERM;
395 }
394 switch (cmd) { 396 switch (cmd) {
395 case JSFLASH_IDENT: 397 case JSFLASH_IDENT:
396 if (copy_to_user(argp, &jsf0.id, JSFIDSZ)) 398 if (copy_to_user(argp, &jsf0.id, JSFIDSZ)) {
399 unlock_kernel();
397 return -EFAULT; 400 return -EFAULT;
401 }
398 break; 402 break;
399 case JSFLASH_ERASE: 403 case JSFLASH_ERASE:
400 error = jsf_ioctl_erase(arg); 404 error = jsf_ioctl_erase(arg);
@@ -404,6 +408,7 @@ static int jsf_ioctl(struct inode *inode, struct file *f, unsigned int cmd,
404 break; 408 break;
405 } 409 }
406 410
411 unlock_kernel();
407 return error; 412 return error;
408} 413}
409 414
@@ -439,7 +444,7 @@ static const struct file_operations jsf_fops = {
439 .llseek = jsf_lseek, 444 .llseek = jsf_lseek,
440 .read = jsf_read, 445 .read = jsf_read,
441 .write = jsf_write, 446 .write = jsf_write,
442 .ioctl = jsf_ioctl, 447 .unlocked_ioctl = jsf_ioctl,
443 .mmap = jsf_mmap, 448 .mmap = jsf_mmap,
444 .open = jsf_open, 449 .open = jsf_open,
445 .release = jsf_release, 450 .release = jsf_release,
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c
index 27993c37775d..2c56fd56ec63 100644
--- a/drivers/sbus/char/uctrl.c
+++ b/drivers/sbus/char/uctrl.c
@@ -197,9 +197,8 @@ static struct uctrl_driver {
197static void uctrl_get_event_status(struct uctrl_driver *); 197static void uctrl_get_event_status(struct uctrl_driver *);
198static void uctrl_get_external_status(struct uctrl_driver *); 198static void uctrl_get_external_status(struct uctrl_driver *);
199 199
200static int 200static long
201uctrl_ioctl(struct inode *inode, struct file *file, 201uctrl_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
202 unsigned int cmd, unsigned long arg)
203{ 202{
204 switch (cmd) { 203 switch (cmd) {
205 default: 204 default:
@@ -226,7 +225,7 @@ static irqreturn_t uctrl_interrupt(int irq, void *dev_id)
226static const struct file_operations uctrl_fops = { 225static const struct file_operations uctrl_fops = {
227 .owner = THIS_MODULE, 226 .owner = THIS_MODULE,
228 .llseek = no_llseek, 227 .llseek = no_llseek,
229 .ioctl = uctrl_ioctl, 228 .unlocked_ioctl = uctrl_ioctl,
230 .open = uctrl_open, 229 .open = uctrl_open,
231}; 230};
232 231
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c
index fdb14ec4fd47..8b7983aba8f7 100644
--- a/drivers/scsi/3w-9xxx.c
+++ b/drivers/scsi/3w-9xxx.c
@@ -2234,10 +2234,10 @@ static int twa_resume(struct pci_dev *pdev)
2234 pci_set_master(pdev); 2234 pci_set_master(pdev);
2235 pci_try_set_mwi(pdev); 2235 pci_try_set_mwi(pdev);
2236 2236
2237 if (pci_set_dma_mask(pdev, DMA_64BIT_MASK) 2237 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64))
2238 || pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) 2238 || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))
2239 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK) 2239 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))
2240 || pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) { 2240 || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) {
2241 TW_PRINTK(host, TW_DRIVER, 0x40, "Failed to set dma mask during resume"); 2241 TW_PRINTK(host, TW_DRIVER, 0x40, "Failed to set dma mask during resume");
2242 retval = -ENODEV; 2242 retval = -ENODEV;
2243 goto out_disable_device; 2243 goto out_disable_device;
diff --git a/drivers/scsi/a4000t.c b/drivers/scsi/a4000t.c
index 61af3d91ac8a..e3519fa5a3ba 100644
--- a/drivers/scsi/a4000t.c
+++ b/drivers/scsi/a4000t.c
@@ -129,7 +129,7 @@ static int __init a4000t_scsi_init(void)
129 a4000t_scsi_device = platform_device_register_simple("a4000t-scsi", 129 a4000t_scsi_device = platform_device_register_simple("a4000t-scsi",
130 -1, NULL, 0); 130 -1, NULL, 0);
131 if (IS_ERR(a4000t_scsi_device)) { 131 if (IS_ERR(a4000t_scsi_device)) {
132 platform_driver_register(&a4000t_scsi_driver); 132 platform_driver_unregister(&a4000t_scsi_driver);
133 return PTR_ERR(a4000t_scsi_device); 133 return PTR_ERR(a4000t_scsi_device);
134 } 134 }
135 135
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 280261c451d6..2a889853a106 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -1378,7 +1378,7 @@ int aac_get_adapter_info(struct aac_dev* dev)
1378 if (dev->nondasd_support && !dev->in_reset) 1378 if (dev->nondasd_support && !dev->in_reset)
1379 printk(KERN_INFO "%s%d: Non-DASD support enabled.\n",dev->name, dev->id); 1379 printk(KERN_INFO "%s%d: Non-DASD support enabled.\n",dev->name, dev->id);
1380 1380
1381 if (dma_get_required_mask(&dev->pdev->dev) > DMA_32BIT_MASK) 1381 if (dma_get_required_mask(&dev->pdev->dev) > DMA_BIT_MASK(32))
1382 dev->needs_dac = 1; 1382 dev->needs_dac = 1;
1383 dev->dac_support = 0; 1383 dev->dac_support = 0;
1384 if ((sizeof(dma_addr_t) > 4) && dev->needs_dac && 1384 if ((sizeof(dma_addr_t) > 4) && dev->needs_dac &&
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index b1bd3fc7bae8..36fd2e75da1c 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -1394,7 +1394,7 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd,
1394 */ 1394 */
1395 cmd->sense_buffer[8] = 0; /* Information */ 1395 cmd->sense_buffer[8] = 0; /* Information */
1396 cmd->sense_buffer[9] = 0xa; /* Add. length */ 1396 cmd->sense_buffer[9] = 0xa; /* Add. length */
1397 do_div(bghm, cmd->device->sector_size); 1397 bghm /= cmd->device->sector_size;
1398 1398
1399 failing_sector = scsi_get_lba(cmd); 1399 failing_sector = scsi_get_lba(cmd);
1400 failing_sector += bghm; 1400 failing_sector += bghm;
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
index 52427a8324f5..a91f5143ceac 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
@@ -855,9 +855,9 @@ _base_config_dma_addressing(struct MPT2SAS_ADAPTER *ioc, struct pci_dev *pdev)
855 if (sizeof(dma_addr_t) > 4) { 855 if (sizeof(dma_addr_t) > 4) {
856 const uint64_t required_mask = 856 const uint64_t required_mask =
857 dma_get_required_mask(&pdev->dev); 857 dma_get_required_mask(&pdev->dev);
858 if ((required_mask > DMA_32BIT_MASK) && !pci_set_dma_mask(pdev, 858 if ((required_mask > DMA_BIT_MASK(32)) && !pci_set_dma_mask(pdev,
859 DMA_64BIT_MASK) && !pci_set_consistent_dma_mask(pdev, 859 DMA_BIT_MASK(64)) && !pci_set_consistent_dma_mask(pdev,
860 DMA_64BIT_MASK)) { 860 DMA_BIT_MASK(64))) {
861 ioc->base_add_sg_single = &_base_add_sg_single_64; 861 ioc->base_add_sg_single = &_base_add_sg_single_64;
862 ioc->sge_size = sizeof(Mpi2SGESimple64_t); 862 ioc->sge_size = sizeof(Mpi2SGESimple64_t);
863 desc = "64"; 863 desc = "64";
@@ -865,8 +865,8 @@ _base_config_dma_addressing(struct MPT2SAS_ADAPTER *ioc, struct pci_dev *pdev)
865 } 865 }
866 } 866 }
867 867
868 if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK) 868 if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))
869 && !pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) { 869 && !pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) {
870 ioc->base_add_sg_single = &_base_add_sg_single_32; 870 ioc->base_add_sg_single = &_base_add_sg_single_32;
871 ioc->sge_size = sizeof(Mpi2SGESimple32_t); 871 ioc->sge_size = sizeof(Mpi2SGESimple32_t);
872 desc = "32"; 872 desc = "32";
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index 687dcf2d0154..5defe5ea5eda 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -1663,7 +1663,7 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha)
1663 1663
1664 /* Load RISC code. */ 1664 /* Load RISC code. */
1665 risc_address = ha->fwstart; 1665 risc_address = ha->fwstart;
1666 fw_data = (const __le16 *)&fw->data[4]; 1666 fw_data = (const __le16 *)&fw->data[6];
1667 risc_code_size = (fw->size - 6) / 2; 1667 risc_code_size = (fw->size - 6) / 2;
1668 1668
1669 for (i = 0; i < risc_code_size; i++) { 1669 for (i = 0; i < risc_code_size; i++) {
@@ -1722,7 +1722,7 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha)
1722 1722
1723 /* Load RISC code. */ 1723 /* Load RISC code. */
1724 risc_address = ha->fwstart; 1724 risc_address = ha->fwstart;
1725 fw_data = (const __le16 *)&fw->data[4]; 1725 fw_data = (const __le16 *)&fw->data[6];
1726 risc_code_size = (fw->size - 6) / 2; 1726 risc_code_size = (fw->size - 6) / 2;
1727 1727
1728 dprintk(1, "%s: DMA RISC code (%i) words\n", 1728 dprintk(1, "%s: DMA RISC code (%i) words\n",
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index e1850904ff73..fbc83bebdd8e 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -38,9 +38,6 @@ static inline void scsi_log_completion(struct scsi_cmnd *cmd, int disposition)
38 { }; 38 { };
39#endif 39#endif
40 40
41/* scsi_scan.c */
42int scsi_complete_async_scans(void);
43
44/* scsi_devinfo.c */ 41/* scsi_devinfo.c */
45extern int scsi_get_device_flags(struct scsi_device *sdev, 42extern int scsi_get_device_flags(struct scsi_device *sdev,
46 const unsigned char *vendor, 43 const unsigned char *vendor,
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index a14d245a66b8..6f51ca485f35 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -180,8 +180,6 @@ int scsi_complete_async_scans(void)
180 spin_unlock(&async_scan_lock); 180 spin_unlock(&async_scan_lock);
181 181
182 kfree(data); 182 kfree(data);
183 /* Synchronize async operations globally */
184 async_synchronize_full();
185 return 0; 183 return 0;
186} 184}
187 185
diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c
index 8a636103083d..74708fcaf82f 100644
--- a/drivers/scsi/scsi_wait_scan.c
+++ b/drivers/scsi/scsi_wait_scan.c
@@ -11,10 +11,21 @@
11 */ 11 */
12 12
13#include <linux/module.h> 13#include <linux/module.h>
14#include "scsi_priv.h" 14#include <linux/device.h>
15#include <scsi/scsi_scan.h>
15 16
16static int __init wait_scan_init(void) 17static int __init wait_scan_init(void)
17{ 18{
19 /*
20 * First we need to wait for device probing to finish;
21 * the drivers we just loaded might just still be probing
22 * and might not yet have reached the scsi async scanning
23 */
24 wait_for_device_probe();
25 /*
26 * and then we wait for the actual asynchronous scsi scan
27 * to finish.
28 */
18 scsi_complete_async_scans(); 29 scsi_complete_async_scans();
19 return 0; 30 return 0;
20} 31}
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index 7ddff3f55087..938bc1b6c3fa 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -771,8 +771,6 @@ static int pci_netmos_init(struct pci_dev *dev)
771} 771}
772 772
773/* 773/*
774 * ITE support by Niels de Vos <niels.devos@wincor-nixdorf.com>
775 *
776 * These chips are available with optionally one parallel port and up to 774 * These chips are available with optionally one parallel port and up to
777 * two serial ports. Unfortunately they all have the same product id. 775 * two serial ports. Unfortunately they all have the same product id.
778 * 776 *
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 0328fd4006e5..343e3a35b6a3 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -854,7 +854,7 @@ config SERIAL_IMX_CONSOLE
854 854
855config SERIAL_UARTLITE 855config SERIAL_UARTLITE
856 tristate "Xilinx uartlite serial port support" 856 tristate "Xilinx uartlite serial port support"
857 depends on PPC32 857 depends on PPC32 || MICROBLAZE
858 select SERIAL_CORE 858 select SERIAL_CORE
859 help 859 help
860 Say Y here if you want to use the Xilinx uartlite serial controller. 860 Say Y here if you want to use the Xilinx uartlite serial controller.
@@ -1340,7 +1340,7 @@ config SERIAL_NETX_CONSOLE
1340 1340
1341config SERIAL_OF_PLATFORM 1341config SERIAL_OF_PLATFORM
1342 tristate "Serial port on Open Firmware platform bus" 1342 tristate "Serial port on Open Firmware platform bus"
1343 depends on PPC_OF 1343 depends on PPC_OF || MICROBLAZE
1344 depends on SERIAL_8250 || SERIAL_OF_PLATFORM_NWPSERIAL 1344 depends on SERIAL_8250 || SERIAL_OF_PLATFORM_NWPSERIAL
1345 help 1345 help
1346 If you have a PowerPC based system that has serial ports 1346 If you have a PowerPC based system that has serial ports
diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
index 18ba812a4f84..d86123e03391 100644
--- a/drivers/serial/bfin_5xx.c
+++ b/drivers/serial/bfin_5xx.c
@@ -166,7 +166,7 @@ static void bfin_serial_start_tx(struct uart_port *port)
166 struct tty_struct *tty = uart->port.info->port.tty; 166 struct tty_struct *tty = uart->port.info->port.tty;
167 167
168#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS 168#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS
169 if (uart->scts && (!bfin_serial_get_mctrl(&uart->port)&TIOCM_CTS)) { 169 if (uart->scts && !(bfin_serial_get_mctrl(&uart->port) & TIOCM_CTS)) {
170 uart->scts = 0; 170 uart->scts = 0;
171 uart_handle_cts_change(&uart->port, uart->scts); 171 uart_handle_cts_change(&uart->port, uart->scts);
172 } 172 }
@@ -368,7 +368,7 @@ static irqreturn_t bfin_serial_tx_int(int irq, void *dev_id)
368 struct bfin_serial_port *uart = dev_id; 368 struct bfin_serial_port *uart = dev_id;
369 369
370#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS 370#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS
371 if (uart->scts && (!bfin_serial_get_mctrl(&uart->port)&TIOCM_CTS)) { 371 if (uart->scts && !(bfin_serial_get_mctrl(&uart->port) & TIOCM_CTS)) {
372 uart->scts = 0; 372 uart->scts = 0;
373 uart_handle_cts_change(&uart->port, uart->scts); 373 uart_handle_cts_change(&uart->port, uart->scts);
374 } 374 }
@@ -504,7 +504,7 @@ static irqreturn_t bfin_serial_dma_tx_int(int irq, void *dev_id)
504 struct circ_buf *xmit = &uart->port.info->xmit; 504 struct circ_buf *xmit = &uart->port.info->xmit;
505 505
506#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS 506#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS
507 if (uart->scts && (!bfin_serial_get_mctrl(&uart->port)&TIOCM_CTS)) { 507 if (uart->scts && !(bfin_serial_get_mctrl(&uart->port)&TIOCM_CTS)) {
508 uart->scts = 0; 508 uart->scts = 0;
509 uart_handle_cts_change(&uart->port, uart->scts); 509 uart_handle_cts_change(&uart->port, uart->scts);
510 } 510 }
diff --git a/drivers/serial/max3100.c b/drivers/serial/max3100.c
new file mode 100644
index 000000000000..9fd33e5622bd
--- /dev/null
+++ b/drivers/serial/max3100.c
@@ -0,0 +1,927 @@
1/*
2 *
3 * Copyright (C) 2008 Christian Pellegrin <chripell@evolware.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 as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 *
11 * Notes: the MAX3100 doesn't provide an interrupt on CTS so we have
12 * to use polling for flow control. TX empty IRQ is unusable, since
13 * writing conf clears FIFO buffer and we cannot have this interrupt
14 * always asking us for attention.
15 *
16 * Example platform data:
17
18 static struct plat_max3100 max3100_plat_data = {
19 .loopback = 0,
20 .crystal = 0,
21 .poll_time = 100,
22 };
23
24 static struct spi_board_info spi_board_info[] = {
25 {
26 .modalias = "max3100",
27 .platform_data = &max3100_plat_data,
28 .irq = IRQ_EINT12,
29 .max_speed_hz = 5*1000*1000,
30 .chip_select = 0,
31 },
32 };
33
34 * The initial minor number is 209 in the low-density serial port:
35 * mknod /dev/ttyMAX0 c 204 209
36 */
37
38#define MAX3100_MAJOR 204
39#define MAX3100_MINOR 209
40/* 4 MAX3100s should be enough for everyone */
41#define MAX_MAX3100 4
42
43#include <linux/delay.h>
44#include <linux/device.h>
45#include <linux/serial_core.h>
46#include <linux/serial.h>
47#include <linux/spi/spi.h>
48#include <linux/freezer.h>
49
50#include <linux/serial_max3100.h>
51
52#define MAX3100_C (1<<14)
53#define MAX3100_D (0<<14)
54#define MAX3100_W (1<<15)
55#define MAX3100_RX (0<<15)
56
57#define MAX3100_WC (MAX3100_W | MAX3100_C)
58#define MAX3100_RC (MAX3100_RX | MAX3100_C)
59#define MAX3100_WD (MAX3100_W | MAX3100_D)
60#define MAX3100_RD (MAX3100_RX | MAX3100_D)
61#define MAX3100_CMD (3 << 14)
62
63#define MAX3100_T (1<<14)
64#define MAX3100_R (1<<15)
65
66#define MAX3100_FEN (1<<13)
67#define MAX3100_SHDN (1<<12)
68#define MAX3100_TM (1<<11)
69#define MAX3100_RM (1<<10)
70#define MAX3100_PM (1<<9)
71#define MAX3100_RAM (1<<8)
72#define MAX3100_IR (1<<7)
73#define MAX3100_ST (1<<6)
74#define MAX3100_PE (1<<5)
75#define MAX3100_L (1<<4)
76#define MAX3100_BAUD (0xf)
77
78#define MAX3100_TE (1<<10)
79#define MAX3100_RAFE (1<<10)
80#define MAX3100_RTS (1<<9)
81#define MAX3100_CTS (1<<9)
82#define MAX3100_PT (1<<8)
83#define MAX3100_DATA (0xff)
84
85#define MAX3100_RT (MAX3100_R | MAX3100_T)
86#define MAX3100_RTC (MAX3100_RT | MAX3100_CTS | MAX3100_RAFE)
87
88/* the following simulate a status reg for ignore_status_mask */
89#define MAX3100_STATUS_PE 1
90#define MAX3100_STATUS_FE 2
91#define MAX3100_STATUS_OE 4
92
93struct max3100_port {
94 struct uart_port port;
95 struct spi_device *spi;
96
97 int cts; /* last CTS received for flow ctrl */
98 int tx_empty; /* last TX empty bit */
99
100 spinlock_t conf_lock; /* shared data */
101 int conf_commit; /* need to make changes */
102 int conf; /* configuration for the MAX31000
103 * (bits 0-7, bits 8-11 are irqs) */
104 int rts_commit; /* need to change rts */
105 int rts; /* rts status */
106 int baud; /* current baud rate */
107
108 int parity; /* keeps track if we should send parity */
109#define MAX3100_PARITY_ON 1
110#define MAX3100_PARITY_ODD 2
111#define MAX3100_7BIT 4
112 int rx_enabled; /* if we should rx chars */
113
114 int irq; /* irq assigned to the max3100 */
115
116 int minor; /* minor number */
117 int crystal; /* 1 if 3.6864Mhz crystal 0 for 1.8432 */
118 int loopback; /* 1 if we are in loopback mode */
119
120 /* for handling irqs: need workqueue since we do spi_sync */
121 struct workqueue_struct *workqueue;
122 struct work_struct work;
123 /* set to 1 to make the workhandler exit as soon as possible */
124 int force_end_work;
125 /* need to know we are suspending to avoid deadlock on workqueue */
126 int suspending;
127
128 /* hook for suspending MAX3100 via dedicated pin */
129 void (*max3100_hw_suspend) (int suspend);
130
131 /* poll time (in ms) for ctrl lines */
132 int poll_time;
133 /* and its timer */
134 struct timer_list timer;
135};
136
137static struct max3100_port *max3100s[MAX_MAX3100]; /* the chips */
138static DEFINE_MUTEX(max3100s_lock); /* race on probe */
139
140static int max3100_do_parity(struct max3100_port *s, u16 c)
141{
142 int parity;
143
144 if (s->parity & MAX3100_PARITY_ODD)
145 parity = 1;
146 else
147 parity = 0;
148
149 if (s->parity & MAX3100_7BIT)
150 c &= 0x7f;
151 else
152 c &= 0xff;
153
154 parity = parity ^ (hweight8(c) & 1);
155 return parity;
156}
157
158static int max3100_check_parity(struct max3100_port *s, u16 c)
159{
160 return max3100_do_parity(s, c) == ((c >> 8) & 1);
161}
162
163static void max3100_calc_parity(struct max3100_port *s, u16 *c)
164{
165 if (s->parity & MAX3100_7BIT)
166 *c &= 0x7f;
167 else
168 *c &= 0xff;
169
170 if (s->parity & MAX3100_PARITY_ON)
171 *c |= max3100_do_parity(s, *c) << 8;
172}
173
174static void max3100_work(struct work_struct *w);
175
176static void max3100_dowork(struct max3100_port *s)
177{
178 if (!s->force_end_work && !work_pending(&s->work) &&
179 !freezing(current) && !s->suspending)
180 queue_work(s->workqueue, &s->work);
181}
182
183static void max3100_timeout(unsigned long data)
184{
185 struct max3100_port *s = (struct max3100_port *)data;
186
187 if (s->port.info) {
188 max3100_dowork(s);
189 mod_timer(&s->timer, jiffies + s->poll_time);
190 }
191}
192
193static int max3100_sr(struct max3100_port *s, u16 tx, u16 *rx)
194{
195 struct spi_message message;
196 u16 etx, erx;
197 int status;
198 struct spi_transfer tran = {
199 .tx_buf = &etx,
200 .rx_buf = &erx,
201 .len = 2,
202 };
203
204 etx = cpu_to_be16(tx);
205 spi_message_init(&message);
206 spi_message_add_tail(&tran, &message);
207 status = spi_sync(s->spi, &message);
208 if (status) {
209 dev_warn(&s->spi->dev, "error while calling spi_sync\n");
210 return -EIO;
211 }
212 *rx = be16_to_cpu(erx);
213 s->tx_empty = (*rx & MAX3100_T) > 0;
214 dev_dbg(&s->spi->dev, "%04x - %04x\n", tx, *rx);
215 return 0;
216}
217
218static int max3100_handlerx(struct max3100_port *s, u16 rx)
219{
220 unsigned int ch, flg, status = 0;
221 int ret = 0, cts;
222
223 if (rx & MAX3100_R && s->rx_enabled) {
224 dev_dbg(&s->spi->dev, "%s\n", __func__);
225 ch = rx & (s->parity & MAX3100_7BIT ? 0x7f : 0xff);
226 if (rx & MAX3100_RAFE) {
227 s->port.icount.frame++;
228 flg = TTY_FRAME;
229 status |= MAX3100_STATUS_FE;
230 } else {
231 if (s->parity & MAX3100_PARITY_ON) {
232 if (max3100_check_parity(s, rx)) {
233 s->port.icount.rx++;
234 flg = TTY_NORMAL;
235 } else {
236 s->port.icount.parity++;
237 flg = TTY_PARITY;
238 status |= MAX3100_STATUS_PE;
239 }
240 } else {
241 s->port.icount.rx++;
242 flg = TTY_NORMAL;
243 }
244 }
245 uart_insert_char(&s->port, status, MAX3100_STATUS_OE, ch, flg);
246 ret = 1;
247 }
248
249 cts = (rx & MAX3100_CTS) > 0;
250 if (s->cts != cts) {
251 s->cts = cts;
252 uart_handle_cts_change(&s->port, cts ? TIOCM_CTS : 0);
253 }
254
255 return ret;
256}
257
258static void max3100_work(struct work_struct *w)
259{
260 struct max3100_port *s = container_of(w, struct max3100_port, work);
261 int rxchars;
262 u16 tx, rx;
263 int conf, cconf, rts, crts;
264 struct circ_buf *xmit = &s->port.info->xmit;
265
266 dev_dbg(&s->spi->dev, "%s\n", __func__);
267
268 rxchars = 0;
269 do {
270 spin_lock(&s->conf_lock);
271 conf = s->conf;
272 cconf = s->conf_commit;
273 s->conf_commit = 0;
274 rts = s->rts;
275 crts = s->rts_commit;
276 s->rts_commit = 0;
277 spin_unlock(&s->conf_lock);
278 if (cconf)
279 max3100_sr(s, MAX3100_WC | conf, &rx);
280 if (crts) {
281 max3100_sr(s, MAX3100_WD | MAX3100_TE |
282 (s->rts ? MAX3100_RTS : 0), &rx);
283 rxchars += max3100_handlerx(s, rx);
284 }
285
286 max3100_sr(s, MAX3100_RD, &rx);
287 rxchars += max3100_handlerx(s, rx);
288
289 if (rx & MAX3100_T) {
290 tx = 0xffff;
291 if (s->port.x_char) {
292 tx = s->port.x_char;
293 s->port.icount.tx++;
294 s->port.x_char = 0;
295 } else if (!uart_circ_empty(xmit) &&
296 !uart_tx_stopped(&s->port)) {
297 tx = xmit->buf[xmit->tail];
298 xmit->tail = (xmit->tail + 1) &
299 (UART_XMIT_SIZE - 1);
300 s->port.icount.tx++;
301 }
302 if (tx != 0xffff) {
303 max3100_calc_parity(s, &tx);
304 tx |= MAX3100_WD | (s->rts ? MAX3100_RTS : 0);
305 max3100_sr(s, tx, &rx);
306 rxchars += max3100_handlerx(s, rx);
307 }
308 }
309
310 if (rxchars > 16 && s->port.info->port.tty != NULL) {
311 tty_flip_buffer_push(s->port.info->port.tty);
312 rxchars = 0;
313 }
314 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
315 uart_write_wakeup(&s->port);
316
317 } while (!s->force_end_work &&
318 !freezing(current) &&
319 ((rx & MAX3100_R) ||
320 (!uart_circ_empty(xmit) &&
321 !uart_tx_stopped(&s->port))));
322
323 if (rxchars > 0 && s->port.info->port.tty != NULL)
324 tty_flip_buffer_push(s->port.info->port.tty);
325}
326
327static irqreturn_t max3100_irq(int irqno, void *dev_id)
328{
329 struct max3100_port *s = dev_id;
330
331 dev_dbg(&s->spi->dev, "%s\n", __func__);
332
333 max3100_dowork(s);
334 return IRQ_HANDLED;
335}
336
337static void max3100_enable_ms(struct uart_port *port)
338{
339 struct max3100_port *s = container_of(port,
340 struct max3100_port,
341 port);
342
343 if (s->poll_time > 0)
344 mod_timer(&s->timer, jiffies);
345 dev_dbg(&s->spi->dev, "%s\n", __func__);
346}
347
348static void max3100_start_tx(struct uart_port *port)
349{
350 struct max3100_port *s = container_of(port,
351 struct max3100_port,
352 port);
353
354 dev_dbg(&s->spi->dev, "%s\n", __func__);
355
356 max3100_dowork(s);
357}
358
359static void max3100_stop_rx(struct uart_port *port)
360{
361 struct max3100_port *s = container_of(port,
362 struct max3100_port,
363 port);
364
365 dev_dbg(&s->spi->dev, "%s\n", __func__);
366
367 s->rx_enabled = 0;
368 spin_lock(&s->conf_lock);
369 s->conf &= ~MAX3100_RM;
370 s->conf_commit = 1;
371 spin_unlock(&s->conf_lock);
372 max3100_dowork(s);
373}
374
375static unsigned int max3100_tx_empty(struct uart_port *port)
376{
377 struct max3100_port *s = container_of(port,
378 struct max3100_port,
379 port);
380
381 dev_dbg(&s->spi->dev, "%s\n", __func__);
382
383 /* may not be truly up-to-date */
384 max3100_dowork(s);
385 return s->tx_empty;
386}
387
388static unsigned int max3100_get_mctrl(struct uart_port *port)
389{
390 struct max3100_port *s = container_of(port,
391 struct max3100_port,
392 port);
393
394 dev_dbg(&s->spi->dev, "%s\n", __func__);
395
396 /* may not be truly up-to-date */
397 max3100_dowork(s);
398 /* always assert DCD and DSR since these lines are not wired */
399 return (s->cts ? TIOCM_CTS : 0) | TIOCM_DSR | TIOCM_CAR;
400}
401
402static void max3100_set_mctrl(struct uart_port *port, unsigned int mctrl)
403{
404 struct max3100_port *s = container_of(port,
405 struct max3100_port,
406 port);
407 int rts;
408
409 dev_dbg(&s->spi->dev, "%s\n", __func__);
410
411 rts = (mctrl & TIOCM_RTS) > 0;
412
413 spin_lock(&s->conf_lock);
414 if (s->rts != rts) {
415 s->rts = rts;
416 s->rts_commit = 1;
417 max3100_dowork(s);
418 }
419 spin_unlock(&s->conf_lock);
420}
421
422static void
423max3100_set_termios(struct uart_port *port, struct ktermios *termios,
424 struct ktermios *old)
425{
426 struct max3100_port *s = container_of(port,
427 struct max3100_port,
428 port);
429 int baud = 0;
430 unsigned cflag;
431 u32 param_new, param_mask, parity = 0;
432 struct tty_struct *tty = s->port.info->port.tty;
433
434 dev_dbg(&s->spi->dev, "%s\n", __func__);
435 if (!tty)
436 return;
437
438 cflag = termios->c_cflag;
439 param_new = 0;
440 param_mask = 0;
441
442 baud = tty_get_baud_rate(tty);
443 param_new = s->conf & MAX3100_BAUD;
444 switch (baud) {
445 case 300:
446 if (s->crystal)
447 baud = s->baud;
448 else
449 param_new = 15;
450 break;
451 case 600:
452 param_new = 14 + s->crystal;
453 break;
454 case 1200:
455 param_new = 13 + s->crystal;
456 break;
457 case 2400:
458 param_new = 12 + s->crystal;
459 break;
460 case 4800:
461 param_new = 11 + s->crystal;
462 break;
463 case 9600:
464 param_new = 10 + s->crystal;
465 break;
466 case 19200:
467 param_new = 9 + s->crystal;
468 break;
469 case 38400:
470 param_new = 8 + s->crystal;
471 break;
472 case 57600:
473 param_new = 1 + s->crystal;
474 break;
475 case 115200:
476 param_new = 0 + s->crystal;
477 break;
478 case 230400:
479 if (s->crystal)
480 param_new = 0;
481 else
482 baud = s->baud;
483 break;
484 default:
485 baud = s->baud;
486 }
487 tty_encode_baud_rate(tty, baud, baud);
488 s->baud = baud;
489 param_mask |= MAX3100_BAUD;
490
491 if ((cflag & CSIZE) == CS8) {
492 param_new &= ~MAX3100_L;
493 parity &= ~MAX3100_7BIT;
494 } else {
495 param_new |= MAX3100_L;
496 parity |= MAX3100_7BIT;
497 cflag = (cflag & ~CSIZE) | CS7;
498 }
499 param_mask |= MAX3100_L;
500
501 if (cflag & CSTOPB)
502 param_new |= MAX3100_ST;
503 else
504 param_new &= ~MAX3100_ST;
505 param_mask |= MAX3100_ST;
506
507 if (cflag & PARENB) {
508 param_new |= MAX3100_PE;
509 parity |= MAX3100_PARITY_ON;
510 } else {
511 param_new &= ~MAX3100_PE;
512 parity &= ~MAX3100_PARITY_ON;
513 }
514 param_mask |= MAX3100_PE;
515
516 if (cflag & PARODD)
517 parity |= MAX3100_PARITY_ODD;
518 else
519 parity &= ~MAX3100_PARITY_ODD;
520
521 /* mask termios capabilities we don't support */
522 cflag &= ~CMSPAR;
523 termios->c_cflag = cflag;
524
525 s->port.ignore_status_mask = 0;
526 if (termios->c_iflag & IGNPAR)
527 s->port.ignore_status_mask |=
528 MAX3100_STATUS_PE | MAX3100_STATUS_FE |
529 MAX3100_STATUS_OE;
530
531 /* we are sending char from a workqueue so enable */
532 s->port.info->port.tty->low_latency = 1;
533
534 if (s->poll_time > 0)
535 del_timer_sync(&s->timer);
536
537 uart_update_timeout(port, termios->c_cflag, baud);
538
539 spin_lock(&s->conf_lock);
540 s->conf = (s->conf & ~param_mask) | (param_new & param_mask);
541 s->conf_commit = 1;
542 s->parity = parity;
543 spin_unlock(&s->conf_lock);
544 max3100_dowork(s);
545
546 if (UART_ENABLE_MS(&s->port, termios->c_cflag))
547 max3100_enable_ms(&s->port);
548}
549
550static void max3100_shutdown(struct uart_port *port)
551{
552 struct max3100_port *s = container_of(port,
553 struct max3100_port,
554 port);
555
556 dev_dbg(&s->spi->dev, "%s\n", __func__);
557
558 if (s->suspending)
559 return;
560
561 s->force_end_work = 1;
562
563 if (s->poll_time > 0)
564 del_timer_sync(&s->timer);
565
566 if (s->workqueue) {
567 flush_workqueue(s->workqueue);
568 destroy_workqueue(s->workqueue);
569 s->workqueue = NULL;
570 }
571 if (s->irq)
572 free_irq(s->irq, s);
573
574 /* set shutdown mode to save power */
575 if (s->max3100_hw_suspend)
576 s->max3100_hw_suspend(1);
577 else {
578 u16 tx, rx;
579
580 tx = MAX3100_WC | MAX3100_SHDN;
581 max3100_sr(s, tx, &rx);
582 }
583}
584
585static int max3100_startup(struct uart_port *port)
586{
587 struct max3100_port *s = container_of(port,
588 struct max3100_port,
589 port);
590 char b[12];
591
592 dev_dbg(&s->spi->dev, "%s\n", __func__);
593
594 s->conf = MAX3100_RM;
595 s->baud = s->crystal ? 230400 : 115200;
596 s->rx_enabled = 1;
597
598 if (s->suspending)
599 return 0;
600
601 s->force_end_work = 0;
602 s->parity = 0;
603 s->rts = 0;
604
605 sprintf(b, "max3100-%d", s->minor);
606 s->workqueue = create_freezeable_workqueue(b);
607 if (!s->workqueue) {
608 dev_warn(&s->spi->dev, "cannot create workqueue\n");
609 return -EBUSY;
610 }
611 INIT_WORK(&s->work, max3100_work);
612
613 if (request_irq(s->irq, max3100_irq,
614 IRQF_TRIGGER_FALLING, "max3100", s) < 0) {
615 dev_warn(&s->spi->dev, "cannot allocate irq %d\n", s->irq);
616 s->irq = 0;
617 destroy_workqueue(s->workqueue);
618 s->workqueue = NULL;
619 return -EBUSY;
620 }
621
622 if (s->loopback) {
623 u16 tx, rx;
624 tx = 0x4001;
625 max3100_sr(s, tx, &rx);
626 }
627
628 if (s->max3100_hw_suspend)
629 s->max3100_hw_suspend(0);
630 s->conf_commit = 1;
631 max3100_dowork(s);
632 /* wait for clock to settle */
633 msleep(50);
634
635 max3100_enable_ms(&s->port);
636
637 return 0;
638}
639
640static const char *max3100_type(struct uart_port *port)
641{
642 struct max3100_port *s = container_of(port,
643 struct max3100_port,
644 port);
645
646 dev_dbg(&s->spi->dev, "%s\n", __func__);
647
648 return s->port.type == PORT_MAX3100 ? "MAX3100" : NULL;
649}
650
651static void max3100_release_port(struct uart_port *port)
652{
653 struct max3100_port *s = container_of(port,
654 struct max3100_port,
655 port);
656
657 dev_dbg(&s->spi->dev, "%s\n", __func__);
658}
659
660static void max3100_config_port(struct uart_port *port, int flags)
661{
662 struct max3100_port *s = container_of(port,
663 struct max3100_port,
664 port);
665
666 dev_dbg(&s->spi->dev, "%s\n", __func__);
667
668 if (flags & UART_CONFIG_TYPE)
669 s->port.type = PORT_MAX3100;
670}
671
672static int max3100_verify_port(struct uart_port *port,
673 struct serial_struct *ser)
674{
675 struct max3100_port *s = container_of(port,
676 struct max3100_port,
677 port);
678 int ret = -EINVAL;
679
680 dev_dbg(&s->spi->dev, "%s\n", __func__);
681
682 if (ser->type == PORT_UNKNOWN || ser->type == PORT_MAX3100)
683 ret = 0;
684 return ret;
685}
686
687static void max3100_stop_tx(struct uart_port *port)
688{
689 struct max3100_port *s = container_of(port,
690 struct max3100_port,
691 port);
692
693 dev_dbg(&s->spi->dev, "%s\n", __func__);
694}
695
696static int max3100_request_port(struct uart_port *port)
697{
698 struct max3100_port *s = container_of(port,
699 struct max3100_port,
700 port);
701
702 dev_dbg(&s->spi->dev, "%s\n", __func__);
703 return 0;
704}
705
706static void max3100_break_ctl(struct uart_port *port, int break_state)
707{
708 struct max3100_port *s = container_of(port,
709 struct max3100_port,
710 port);
711
712 dev_dbg(&s->spi->dev, "%s\n", __func__);
713}
714
715static struct uart_ops max3100_ops = {
716 .tx_empty = max3100_tx_empty,
717 .set_mctrl = max3100_set_mctrl,
718 .get_mctrl = max3100_get_mctrl,
719 .stop_tx = max3100_stop_tx,
720 .start_tx = max3100_start_tx,
721 .stop_rx = max3100_stop_rx,
722 .enable_ms = max3100_enable_ms,
723 .break_ctl = max3100_break_ctl,
724 .startup = max3100_startup,
725 .shutdown = max3100_shutdown,
726 .set_termios = max3100_set_termios,
727 .type = max3100_type,
728 .release_port = max3100_release_port,
729 .request_port = max3100_request_port,
730 .config_port = max3100_config_port,
731 .verify_port = max3100_verify_port,
732};
733
734static struct uart_driver max3100_uart_driver = {
735 .owner = THIS_MODULE,
736 .driver_name = "ttyMAX",
737 .dev_name = "ttyMAX",
738 .major = MAX3100_MAJOR,
739 .minor = MAX3100_MINOR,
740 .nr = MAX_MAX3100,
741};
742static int uart_driver_registered;
743
744static int __devinit max3100_probe(struct spi_device *spi)
745{
746 int i, retval;
747 struct plat_max3100 *pdata;
748 u16 tx, rx;
749
750 mutex_lock(&max3100s_lock);
751
752 if (!uart_driver_registered) {
753 uart_driver_registered = 1;
754 retval = uart_register_driver(&max3100_uart_driver);
755 if (retval) {
756 printk(KERN_ERR "Couldn't register max3100 uart driver\n");
757 mutex_unlock(&max3100s_lock);
758 return retval;
759 }
760 }
761
762 for (i = 0; i < MAX_MAX3100; i++)
763 if (!max3100s[i])
764 break;
765 if (i == MAX_MAX3100) {
766 dev_warn(&spi->dev, "too many MAX3100 chips\n");
767 mutex_unlock(&max3100s_lock);
768 return -ENOMEM;
769 }
770
771 max3100s[i] = kzalloc(sizeof(struct max3100_port), GFP_KERNEL);
772 if (!max3100s[i]) {
773 dev_warn(&spi->dev,
774 "kmalloc for max3100 structure %d failed!\n", i);
775 mutex_unlock(&max3100s_lock);
776 return -ENOMEM;
777 }
778 max3100s[i]->spi = spi;
779 max3100s[i]->irq = spi->irq;
780 spin_lock_init(&max3100s[i]->conf_lock);
781 dev_set_drvdata(&spi->dev, max3100s[i]);
782 pdata = spi->dev.platform_data;
783 max3100s[i]->crystal = pdata->crystal;
784 max3100s[i]->loopback = pdata->loopback;
785 max3100s[i]->poll_time = pdata->poll_time * HZ / 1000;
786 if (pdata->poll_time > 0 && max3100s[i]->poll_time == 0)
787 max3100s[i]->poll_time = 1;
788 max3100s[i]->max3100_hw_suspend = pdata->max3100_hw_suspend;
789 max3100s[i]->minor = i;
790 init_timer(&max3100s[i]->timer);
791 max3100s[i]->timer.function = max3100_timeout;
792 max3100s[i]->timer.data = (unsigned long) max3100s[i];
793
794 dev_dbg(&spi->dev, "%s: adding port %d\n", __func__, i);
795 max3100s[i]->port.irq = max3100s[i]->irq;
796 max3100s[i]->port.uartclk = max3100s[i]->crystal ? 3686400 : 1843200;
797 max3100s[i]->port.fifosize = 16;
798 max3100s[i]->port.ops = &max3100_ops;
799 max3100s[i]->port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;
800 max3100s[i]->port.line = i;
801 max3100s[i]->port.type = PORT_MAX3100;
802 max3100s[i]->port.dev = &spi->dev;
803 retval = uart_add_one_port(&max3100_uart_driver, &max3100s[i]->port);
804 if (retval < 0)
805 dev_warn(&spi->dev,
806 "uart_add_one_port failed for line %d with error %d\n",
807 i, retval);
808
809 /* set shutdown mode to save power. Will be woken-up on open */
810 if (max3100s[i]->max3100_hw_suspend)
811 max3100s[i]->max3100_hw_suspend(1);
812 else {
813 tx = MAX3100_WC | MAX3100_SHDN;
814 max3100_sr(max3100s[i], tx, &rx);
815 }
816 mutex_unlock(&max3100s_lock);
817 return 0;
818}
819
820static int __devexit max3100_remove(struct spi_device *spi)
821{
822 struct max3100_port *s = dev_get_drvdata(&spi->dev);
823 int i;
824
825 mutex_lock(&max3100s_lock);
826
827 /* find out the index for the chip we are removing */
828 for (i = 0; i < MAX_MAX3100; i++)
829 if (max3100s[i] == s)
830 break;
831
832 dev_dbg(&spi->dev, "%s: removing port %d\n", __func__, i);
833 uart_remove_one_port(&max3100_uart_driver, &max3100s[i]->port);
834 kfree(max3100s[i]);
835 max3100s[i] = NULL;
836
837 /* check if this is the last chip we have */
838 for (i = 0; i < MAX_MAX3100; i++)
839 if (max3100s[i]) {
840 mutex_unlock(&max3100s_lock);
841 return 0;
842 }
843 pr_debug("removing max3100 driver\n");
844 uart_unregister_driver(&max3100_uart_driver);
845
846 mutex_unlock(&max3100s_lock);
847 return 0;
848}
849
850#ifdef CONFIG_PM
851
852static int max3100_suspend(struct spi_device *spi, pm_message_t state)
853{
854 struct max3100_port *s = dev_get_drvdata(&spi->dev);
855
856 dev_dbg(&s->spi->dev, "%s\n", __func__);
857
858 disable_irq(s->irq);
859
860 s->suspending = 1;
861 uart_suspend_port(&max3100_uart_driver, &s->port);
862
863 if (s->max3100_hw_suspend)
864 s->max3100_hw_suspend(1);
865 else {
866 /* no HW suspend, so do SW one */
867 u16 tx, rx;
868
869 tx = MAX3100_WC | MAX3100_SHDN;
870 max3100_sr(s, tx, &rx);
871 }
872 return 0;
873}
874
875static int max3100_resume(struct spi_device *spi)
876{
877 struct max3100_port *s = dev_get_drvdata(&spi->dev);
878
879 dev_dbg(&s->spi->dev, "%s\n", __func__);
880
881 if (s->max3100_hw_suspend)
882 s->max3100_hw_suspend(0);
883 uart_resume_port(&max3100_uart_driver, &s->port);
884 s->suspending = 0;
885
886 enable_irq(s->irq);
887
888 s->conf_commit = 1;
889 if (s->workqueue)
890 max3100_dowork(s);
891
892 return 0;
893}
894
895#else
896#define max3100_suspend NULL
897#define max3100_resume NULL
898#endif
899
900static struct spi_driver max3100_driver = {
901 .driver = {
902 .name = "max3100",
903 .bus = &spi_bus_type,
904 .owner = THIS_MODULE,
905 },
906
907 .probe = max3100_probe,
908 .remove = __devexit_p(max3100_remove),
909 .suspend = max3100_suspend,
910 .resume = max3100_resume,
911};
912
913static int __init max3100_init(void)
914{
915 return spi_register_driver(&max3100_driver);
916}
917module_init(max3100_init);
918
919static void __exit max3100_exit(void)
920{
921 spi_unregister_driver(&max3100_driver);
922}
923module_exit(max3100_exit);
924
925MODULE_DESCRIPTION("MAX3100 driver");
926MODULE_AUTHOR("Christian Pellegrin <chripell@evolware.org>");
927MODULE_LICENSE("GPL");
diff --git a/drivers/serial/samsung.c b/drivers/serial/samsung.c
index 41ac94872b8d..e06686ae858b 100644
--- a/drivers/serial/samsung.c
+++ b/drivers/serial/samsung.c
@@ -127,7 +127,7 @@ static void s3c24xx_serial_stop_tx(struct uart_port *port)
127 struct s3c24xx_uart_port *ourport = to_ourport(port); 127 struct s3c24xx_uart_port *ourport = to_ourport(port);
128 128
129 if (tx_enabled(port)) { 129 if (tx_enabled(port)) {
130 disable_irq(ourport->tx_irq); 130 disable_irq_nosync(ourport->tx_irq);
131 tx_enabled(port) = 0; 131 tx_enabled(port) = 0;
132 if (port->flags & UPF_CONS_FLOW) 132 if (port->flags & UPF_CONS_FLOW)
133 s3c24xx_serial_rx_enable(port); 133 s3c24xx_serial_rx_enable(port);
@@ -154,7 +154,7 @@ static void s3c24xx_serial_stop_rx(struct uart_port *port)
154 154
155 if (rx_enabled(port)) { 155 if (rx_enabled(port)) {
156 dbg("s3c24xx_serial_stop_rx: port=%p\n", port); 156 dbg("s3c24xx_serial_stop_rx: port=%p\n", port);
157 disable_irq(ourport->rx_irq); 157 disable_irq_nosync(ourport->rx_irq);
158 rx_enabled(port) = 0; 158 rx_enabled(port) = 0;
159 } 159 }
160} 160}
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index a4dc79b1d7ab..47c6837850b1 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -1178,7 +1178,7 @@ static struct uart_driver sunsu_reg = {
1178 .major = TTY_MAJOR, 1178 .major = TTY_MAJOR,
1179}; 1179};
1180 1180
1181static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up) 1181static int __devinit sunsu_kbd_ms_init(struct uart_sunsu_port *up)
1182{ 1182{
1183 int quot, baud; 1183 int quot, baud;
1184#ifdef CONFIG_SERIO 1184#ifdef CONFIG_SERIO
diff --git a/drivers/sh/intc.c b/drivers/sh/intc.c
index 7fb9b5c4669a..12d13d99b6f0 100644
--- a/drivers/sh/intc.c
+++ b/drivers/sh/intc.c
@@ -44,6 +44,7 @@ struct intc_handle_int {
44struct intc_desc_int { 44struct intc_desc_int {
45 struct list_head list; 45 struct list_head list;
46 struct sys_device sysdev; 46 struct sys_device sysdev;
47 pm_message_t state;
47 unsigned long *reg; 48 unsigned long *reg;
48#ifdef CONFIG_SMP 49#ifdef CONFIG_SMP
49 unsigned long *smp; 50 unsigned long *smp;
@@ -786,18 +787,44 @@ static int intc_suspend(struct sys_device *dev, pm_message_t state)
786 /* get intc controller associated with this sysdev */ 787 /* get intc controller associated with this sysdev */
787 d = container_of(dev, struct intc_desc_int, sysdev); 788 d = container_of(dev, struct intc_desc_int, sysdev);
788 789
789 /* enable wakeup irqs belonging to this intc controller */ 790 switch (state.event) {
790 for_each_irq_desc(irq, desc) { 791 case PM_EVENT_ON:
791 if ((desc->status & IRQ_WAKEUP) && (desc->chip == &d->chip)) 792 if (d->state.event != PM_EVENT_FREEZE)
792 intc_enable(irq); 793 break;
794 for_each_irq_desc(irq, desc) {
795 if (desc->chip != &d->chip)
796 continue;
797 if (desc->status & IRQ_DISABLED)
798 intc_disable(irq);
799 else
800 intc_enable(irq);
801 }
802 break;
803 case PM_EVENT_FREEZE:
804 /* nothing has to be done */
805 break;
806 case PM_EVENT_SUSPEND:
807 /* enable wakeup irqs belonging to this intc controller */
808 for_each_irq_desc(irq, desc) {
809 if ((desc->status & IRQ_WAKEUP) && (desc->chip == &d->chip))
810 intc_enable(irq);
811 }
812 break;
793 } 813 }
814 d->state = state;
794 815
795 return 0; 816 return 0;
796} 817}
797 818
819static int intc_resume(struct sys_device *dev)
820{
821 return intc_suspend(dev, PMSG_ON);
822}
823
798static struct sysdev_class intc_sysdev_class = { 824static struct sysdev_class intc_sysdev_class = {
799 .name = "intc", 825 .name = "intc",
800 .suspend = intc_suspend, 826 .suspend = intc_suspend,
827 .resume = intc_resume,
801}; 828};
802 829
803/* register this intc as sysdev to allow suspend/resume */ 830/* register this intc as sysdev to allow suspend/resume */
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c
index c1688c71f052..885194a07418 100644
--- a/drivers/spi/pxa2xx_spi.c
+++ b/drivers/spi/pxa2xx_spi.c
@@ -195,7 +195,7 @@ static void cs_deassert(struct driver_data *drv_data)
195 struct chip_data *chip = drv_data->cur_chip; 195 struct chip_data *chip = drv_data->cur_chip;
196 196
197 if (chip->cs_control) { 197 if (chip->cs_control) {
198 chip->cs_control(PXA2XX_CS_ASSERT); 198 chip->cs_control(PXA2XX_CS_DEASSERT);
199 return; 199 return;
200 } 200 }
201 201
@@ -213,7 +213,7 @@ static int flush(struct driver_data *drv_data)
213 while (read_SSSR(reg) & SSSR_RNE) { 213 while (read_SSSR(reg) & SSSR_RNE) {
214 read_SSDR(reg); 214 read_SSDR(reg);
215 } 215 }
216 } while ((read_SSSR(reg) & SSSR_BSY) && limit--); 216 } while ((read_SSSR(reg) & SSSR_BSY) && --limit);
217 write_SSSR(SSSR_ROR, reg); 217 write_SSSR(SSSR_ROR, reg);
218 218
219 return limit; 219 return limit;
@@ -484,7 +484,7 @@ static int wait_ssp_rx_stall(void const __iomem *ioaddr)
484{ 484{
485 unsigned long limit = loops_per_jiffy << 1; 485 unsigned long limit = loops_per_jiffy << 1;
486 486
487 while ((read_SSSR(ioaddr) & SSSR_BSY) && limit--) 487 while ((read_SSSR(ioaddr) & SSSR_BSY) && --limit)
488 cpu_relax(); 488 cpu_relax();
489 489
490 return limit; 490 return limit;
@@ -494,7 +494,7 @@ static int wait_dma_channel_stop(int channel)
494{ 494{
495 unsigned long limit = loops_per_jiffy << 1; 495 unsigned long limit = loops_per_jiffy << 1;
496 496
497 while (!(DCSR(channel) & DCSR_STOPSTATE) && limit--) 497 while (!(DCSR(channel) & DCSR_STOPSTATE) && --limit)
498 cpu_relax(); 498 cpu_relax();
499 499
500 return limit; 500 return limit;
@@ -1700,6 +1700,13 @@ static int pxa2xx_spi_resume(struct platform_device *pdev)
1700 struct ssp_device *ssp = drv_data->ssp; 1700 struct ssp_device *ssp = drv_data->ssp;
1701 int status = 0; 1701 int status = 0;
1702 1702
1703 if (drv_data->rx_channel != -1)
1704 DRCMR(drv_data->ssp->drcmr_rx) =
1705 DRCMR_MAPVLD | drv_data->rx_channel;
1706 if (drv_data->tx_channel != -1)
1707 DRCMR(drv_data->ssp->drcmr_tx) =
1708 DRCMR_MAPVLD | drv_data->tx_channel;
1709
1703 /* Enable the SSP clock */ 1710 /* Enable the SSP clock */
1704 clk_enable(ssp->clk); 1711 clk_enable(ssp->clk);
1705 1712
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 643908b74bc0..8eba98c8ed1e 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -658,7 +658,7 @@ int spi_write_then_read(struct spi_device *spi,
658 658
659 int status; 659 int status;
660 struct spi_message message; 660 struct spi_message message;
661 struct spi_transfer x; 661 struct spi_transfer x[2];
662 u8 *local_buf; 662 u8 *local_buf;
663 663
664 /* Use preallocated DMA-safe buffer. We can't avoid copying here, 664 /* Use preallocated DMA-safe buffer. We can't avoid copying here,
@@ -669,9 +669,15 @@ int spi_write_then_read(struct spi_device *spi,
669 return -EINVAL; 669 return -EINVAL;
670 670
671 spi_message_init(&message); 671 spi_message_init(&message);
672 memset(&x, 0, sizeof x); 672 memset(x, 0, sizeof x);
673 x.len = n_tx + n_rx; 673 if (n_tx) {
674 spi_message_add_tail(&x, &message); 674 x[0].len = n_tx;
675 spi_message_add_tail(&x[0], &message);
676 }
677 if (n_rx) {
678 x[1].len = n_rx;
679 spi_message_add_tail(&x[1], &message);
680 }
675 681
676 /* ... unless someone else is using the pre-allocated buffer */ 682 /* ... unless someone else is using the pre-allocated buffer */
677 if (!mutex_trylock(&lock)) { 683 if (!mutex_trylock(&lock)) {
@@ -682,15 +688,15 @@ int spi_write_then_read(struct spi_device *spi,
682 local_buf = buf; 688 local_buf = buf;
683 689
684 memcpy(local_buf, txbuf, n_tx); 690 memcpy(local_buf, txbuf, n_tx);
685 x.tx_buf = local_buf; 691 x[0].tx_buf = local_buf;
686 x.rx_buf = local_buf; 692 x[1].rx_buf = local_buf + n_tx;
687 693
688 /* do the i/o */ 694 /* do the i/o */
689 status = spi_sync(spi, &message); 695 status = spi_sync(spi, &message);
690 if (status == 0) 696 if (status == 0)
691 memcpy(rxbuf, x.rx_buf + n_tx, n_rx); 697 memcpy(rxbuf, x[1].rx_buf, n_rx);
692 698
693 if (x.tx_buf == buf) 699 if (x[0].tx_buf == buf)
694 mutex_unlock(&lock); 700 mutex_unlock(&lock);
695 else 701 else
696 kfree(local_buf); 702 kfree(local_buf);
diff --git a/drivers/staging/android/binder.c b/drivers/staging/android/binder.c
index 79e90fed27d3..299d29d1dadb 100644
--- a/drivers/staging/android/binder.c
+++ b/drivers/staging/android/binder.c
@@ -41,6 +41,8 @@ static int binder_last_id;
41static struct proc_dir_entry *binder_proc_dir_entry_root; 41static struct proc_dir_entry *binder_proc_dir_entry_root;
42static struct proc_dir_entry *binder_proc_dir_entry_proc; 42static struct proc_dir_entry *binder_proc_dir_entry_proc;
43static struct hlist_head binder_dead_nodes; 43static struct hlist_head binder_dead_nodes;
44static HLIST_HEAD(binder_deferred_list);
45static DEFINE_MUTEX(binder_deferred_lock);
44 46
45static int binder_read_proc_proc( 47static int binder_read_proc_proc(
46 char *page, char **start, off_t off, int count, int *eof, void *data); 48 char *page, char **start, off_t off, int count, int *eof, void *data);
@@ -54,11 +56,7 @@ static int binder_read_proc_proc(
54#define SZ_4M 0x400000 56#define SZ_4M 0x400000
55#endif 57#endif
56 58
57#ifndef __i386__
58#define FORBIDDEN_MMAP_FLAGS (VM_WRITE | VM_EXEC)
59#else
60#define FORBIDDEN_MMAP_FLAGS (VM_WRITE) 59#define FORBIDDEN_MMAP_FLAGS (VM_WRITE)
61#endif
62 60
63#define BINDER_SMALL_BUF_SIZE (PAGE_SIZE * 64) 61#define BINDER_SMALL_BUF_SIZE (PAGE_SIZE * 64)
64 62
@@ -236,6 +234,12 @@ struct binder_buffer {
236 uint8_t data[0]; 234 uint8_t data[0];
237}; 235};
238 236
237enum {
238 BINDER_DEFERRED_PUT_FILES = 0x01,
239 BINDER_DEFERRED_FLUSH = 0x02,
240 BINDER_DEFERRED_RELEASE = 0x04,
241};
242
239struct binder_proc { 243struct binder_proc {
240 struct hlist_node proc_node; 244 struct hlist_node proc_node;
241 struct rb_root threads; 245 struct rb_root threads;
@@ -245,8 +249,11 @@ struct binder_proc {
245 int pid; 249 int pid;
246 struct vm_area_struct *vma; 250 struct vm_area_struct *vma;
247 struct task_struct *tsk; 251 struct task_struct *tsk;
252 struct files_struct *files;
253 struct hlist_node deferred_work_node;
254 int deferred_work;
248 void *buffer; 255 void *buffer;
249 size_t user_buffer_offset; 256 ptrdiff_t user_buffer_offset;
250 257
251 struct list_head buffers; 258 struct list_head buffers;
252 struct rb_root free_buffers; 259 struct rb_root free_buffers;
@@ -310,12 +317,14 @@ struct binder_transaction {
310 uid_t sender_euid; 317 uid_t sender_euid;
311}; 318};
312 319
320static void binder_defer_work(struct binder_proc *proc, int defer);
321
313/* 322/*
314 * copied from get_unused_fd_flags 323 * copied from get_unused_fd_flags
315 */ 324 */
316int task_get_unused_fd_flags(struct task_struct *tsk, int flags) 325int task_get_unused_fd_flags(struct binder_proc *proc, int flags)
317{ 326{
318 struct files_struct *files = get_files_struct(tsk); 327 struct files_struct *files = proc->files;
319 int fd, error; 328 int fd, error;
320 struct fdtable *fdt; 329 struct fdtable *fdt;
321 unsigned long rlim_cur; 330 unsigned long rlim_cur;
@@ -337,9 +346,9 @@ repeat:
337 * will limit the total number of files that can be opened. 346 * will limit the total number of files that can be opened.
338 */ 347 */
339 rlim_cur = 0; 348 rlim_cur = 0;
340 if (lock_task_sighand(tsk, &irqs)) { 349 if (lock_task_sighand(proc->tsk, &irqs)) {
341 rlim_cur = tsk->signal->rlim[RLIMIT_NOFILE].rlim_cur; 350 rlim_cur = proc->tsk->signal->rlim[RLIMIT_NOFILE].rlim_cur;
342 unlock_task_sighand(tsk, &irqs); 351 unlock_task_sighand(proc->tsk, &irqs);
343 } 352 }
344 if (fd >= rlim_cur) 353 if (fd >= rlim_cur)
345 goto out; 354 goto out;
@@ -375,7 +384,6 @@ repeat:
375 384
376out: 385out:
377 spin_unlock(&files->file_lock); 386 spin_unlock(&files->file_lock);
378 put_files_struct(files);
379 return error; 387 return error;
380} 388}
381 389
@@ -383,9 +391,9 @@ out:
383 * copied from fd_install 391 * copied from fd_install
384 */ 392 */
385static void task_fd_install( 393static void task_fd_install(
386 struct task_struct *tsk, unsigned int fd, struct file *file) 394 struct binder_proc *proc, unsigned int fd, struct file *file)
387{ 395{
388 struct files_struct *files = get_files_struct(tsk); 396 struct files_struct *files = proc->files;
389 struct fdtable *fdt; 397 struct fdtable *fdt;
390 398
391 if (files == NULL) 399 if (files == NULL)
@@ -396,7 +404,6 @@ static void task_fd_install(
396 BUG_ON(fdt->fd[fd] != NULL); 404 BUG_ON(fdt->fd[fd] != NULL);
397 rcu_assign_pointer(fdt->fd[fd], file); 405 rcu_assign_pointer(fdt->fd[fd], file);
398 spin_unlock(&files->file_lock); 406 spin_unlock(&files->file_lock);
399 put_files_struct(files);
400} 407}
401 408
402/* 409/*
@@ -413,10 +420,10 @@ static void __put_unused_fd(struct files_struct *files, unsigned int fd)
413/* 420/*
414 * copied from sys_close 421 * copied from sys_close
415 */ 422 */
416static long task_close_fd(struct task_struct *tsk, unsigned int fd) 423static long task_close_fd(struct binder_proc *proc, unsigned int fd)
417{ 424{
418 struct file *filp; 425 struct file *filp;
419 struct files_struct *files = get_files_struct(tsk); 426 struct files_struct *files = proc->files;
420 struct fdtable *fdt; 427 struct fdtable *fdt;
421 int retval; 428 int retval;
422 429
@@ -443,12 +450,10 @@ static long task_close_fd(struct task_struct *tsk, unsigned int fd)
443 retval == -ERESTART_RESTARTBLOCK)) 450 retval == -ERESTART_RESTARTBLOCK))
444 retval = -EINTR; 451 retval = -EINTR;
445 452
446 put_files_struct(files);
447 return retval; 453 return retval;
448 454
449out_unlock: 455out_unlock:
450 spin_unlock(&files->file_lock); 456 spin_unlock(&files->file_lock);
451 put_files_struct(files);
452 return -EBADF; 457 return -EBADF;
453} 458}
454 459
@@ -618,7 +623,8 @@ static int binder_update_page_range(struct binder_proc *proc, int allocate,
618 proc->pid, page_addr); 623 proc->pid, page_addr);
619 goto err_map_kernel_failed; 624 goto err_map_kernel_failed;
620 } 625 }
621 user_page_addr = (size_t)page_addr + proc->user_buffer_offset; 626 user_page_addr =
627 (uintptr_t)page_addr + proc->user_buffer_offset;
622 ret = vm_insert_page(vma, user_page_addr, page[0]); 628 ret = vm_insert_page(vma, user_page_addr, page[0]);
623 if (ret) { 629 if (ret) {
624 printk(KERN_ERR "binder: %d: binder_alloc_buf failed " 630 printk(KERN_ERR "binder: %d: binder_alloc_buf failed "
@@ -639,7 +645,7 @@ free_range:
639 page_addr -= PAGE_SIZE) { 645 page_addr -= PAGE_SIZE) {
640 page = &proc->pages[(page_addr - proc->buffer) / PAGE_SIZE]; 646 page = &proc->pages[(page_addr - proc->buffer) / PAGE_SIZE];
641 if (vma) 647 if (vma)
642 zap_page_range(vma, (size_t)page_addr + 648 zap_page_range(vma, (uintptr_t)page_addr +
643 proc->user_buffer_offset, PAGE_SIZE, NULL); 649 proc->user_buffer_offset, PAGE_SIZE, NULL);
644err_vm_insert_page_failed: 650err_vm_insert_page_failed:
645 unmap_kernel_range((unsigned long)page_addr, PAGE_SIZE); 651 unmap_kernel_range((unsigned long)page_addr, PAGE_SIZE);
@@ -720,18 +726,19 @@ static struct binder_buffer *binder_alloc_buf(struct binder_proc *proc,
720 "er %p size %zd\n", proc->pid, size, buffer, buffer_size); 726 "er %p size %zd\n", proc->pid, size, buffer, buffer_size);
721 727
722 has_page_addr = 728 has_page_addr =
723 (void *)(((size_t)buffer->data + buffer_size) & PAGE_MASK); 729 (void *)(((uintptr_t)buffer->data + buffer_size) & PAGE_MASK);
724 if (n == NULL) { 730 if (n == NULL) {
725 if (size + sizeof(struct binder_buffer) + 4 >= buffer_size) 731 if (size + sizeof(struct binder_buffer) + 4 >= buffer_size)
726 buffer_size = size; /* no room for other buffers */ 732 buffer_size = size; /* no room for other buffers */
727 else 733 else
728 buffer_size = size + sizeof(struct binder_buffer); 734 buffer_size = size + sizeof(struct binder_buffer);
729 } 735 }
730 end_page_addr = (void *)PAGE_ALIGN((size_t)buffer->data + buffer_size); 736 end_page_addr =
737 (void *)PAGE_ALIGN((uintptr_t)buffer->data + buffer_size);
731 if (end_page_addr > has_page_addr) 738 if (end_page_addr > has_page_addr)
732 end_page_addr = has_page_addr; 739 end_page_addr = has_page_addr;
733 if (binder_update_page_range(proc, 1, 740 if (binder_update_page_range(proc, 1,
734 (void *)PAGE_ALIGN((size_t)buffer->data), end_page_addr, NULL)) 741 (void *)PAGE_ALIGN((uintptr_t)buffer->data), end_page_addr, NULL))
735 return NULL; 742 return NULL;
736 743
737 rb_erase(best_fit, &proc->free_buffers); 744 rb_erase(best_fit, &proc->free_buffers);
@@ -762,12 +769,12 @@ static struct binder_buffer *binder_alloc_buf(struct binder_proc *proc,
762 769
763static void *buffer_start_page(struct binder_buffer *buffer) 770static void *buffer_start_page(struct binder_buffer *buffer)
764{ 771{
765 return (void *)((size_t)buffer & PAGE_MASK); 772 return (void *)((uintptr_t)buffer & PAGE_MASK);
766} 773}
767 774
768static void *buffer_end_page(struct binder_buffer *buffer) 775static void *buffer_end_page(struct binder_buffer *buffer)
769{ 776{
770 return (void *)(((size_t)(buffer + 1) - 1) & PAGE_MASK); 777 return (void *)(((uintptr_t)(buffer + 1) - 1) & PAGE_MASK);
771} 778}
772 779
773static void binder_delete_free_buffer( 780static void binder_delete_free_buffer(
@@ -845,8 +852,8 @@ static void binder_free_buf(
845 } 852 }
846 853
847 binder_update_page_range(proc, 0, 854 binder_update_page_range(proc, 0,
848 (void *)PAGE_ALIGN((size_t)buffer->data), 855 (void *)PAGE_ALIGN((uintptr_t)buffer->data),
849 (void *)(((size_t)buffer->data + buffer_size) & PAGE_MASK), 856 (void *)(((uintptr_t)buffer->data + buffer_size) & PAGE_MASK),
850 NULL); 857 NULL);
851 rb_erase(&buffer->rb_node, &proc->allocated_buffers); 858 rb_erase(&buffer->rb_node, &proc->allocated_buffers);
852 buffer->free = 1; 859 buffer->free = 1;
@@ -1345,6 +1352,17 @@ binder_transaction(struct binder_proc *proc, struct binder_thread *thread,
1345 if (!(tr->flags & TF_ONE_WAY) && thread->transaction_stack) { 1352 if (!(tr->flags & TF_ONE_WAY) && thread->transaction_stack) {
1346 struct binder_transaction *tmp; 1353 struct binder_transaction *tmp;
1347 tmp = thread->transaction_stack; 1354 tmp = thread->transaction_stack;
1355 if (tmp->to_thread != thread) {
1356 binder_user_error("binder: %d:%d got new "
1357 "transaction with bad transaction stack"
1358 ", transaction %d has target %d:%d\n",
1359 proc->pid, thread->pid, tmp->debug_id,
1360 tmp->to_proc ? tmp->to_proc->pid : 0,
1361 tmp->to_thread ?
1362 tmp->to_thread->pid : 0);
1363 return_error = BR_FAILED_REPLY;
1364 goto err_bad_call_stack;
1365 }
1348 while (tmp) { 1366 while (tmp) {
1349 if (tmp->from && tmp->from->proc == target_proc) 1367 if (tmp->from && tmp->from->proc == target_proc)
1350 target_thread = tmp->from; 1368 target_thread = tmp->from;
@@ -1434,10 +1452,19 @@ binder_transaction(struct binder_proc *proc, struct binder_thread *thread,
1434 return_error = BR_FAILED_REPLY; 1452 return_error = BR_FAILED_REPLY;
1435 goto err_copy_data_failed; 1453 goto err_copy_data_failed;
1436 } 1454 }
1455 if (!IS_ALIGNED(tr->offsets_size, sizeof(size_t))) {
1456 binder_user_error("binder: %d:%d got transaction with "
1457 "invalid offsets size, %zd\n",
1458 proc->pid, thread->pid, tr->offsets_size);
1459 return_error = BR_FAILED_REPLY;
1460 goto err_bad_offset;
1461 }
1437 off_end = (void *)offp + tr->offsets_size; 1462 off_end = (void *)offp + tr->offsets_size;
1438 for (; offp < off_end; offp++) { 1463 for (; offp < off_end; offp++) {
1439 struct flat_binder_object *fp; 1464 struct flat_binder_object *fp;
1440 if (*offp > t->buffer->data_size - sizeof(*fp)) { 1465 if (*offp > t->buffer->data_size - sizeof(*fp) ||
1466 t->buffer->data_size < sizeof(*fp) ||
1467 !IS_ALIGNED(*offp, sizeof(void *))) {
1441 binder_user_error("binder: %d:%d got transaction with " 1468 binder_user_error("binder: %d:%d got transaction with "
1442 "invalid offset, %zd\n", 1469 "invalid offset, %zd\n",
1443 proc->pid, thread->pid, *offp); 1470 proc->pid, thread->pid, *offp);
@@ -1544,13 +1571,13 @@ binder_transaction(struct binder_proc *proc, struct binder_thread *thread,
1544 return_error = BR_FAILED_REPLY; 1571 return_error = BR_FAILED_REPLY;
1545 goto err_fget_failed; 1572 goto err_fget_failed;
1546 } 1573 }
1547 target_fd = task_get_unused_fd_flags(target_proc->tsk, O_CLOEXEC); 1574 target_fd = task_get_unused_fd_flags(target_proc, O_CLOEXEC);
1548 if (target_fd < 0) { 1575 if (target_fd < 0) {
1549 fput(file); 1576 fput(file);
1550 return_error = BR_FAILED_REPLY; 1577 return_error = BR_FAILED_REPLY;
1551 goto err_get_unused_fd_failed; 1578 goto err_get_unused_fd_failed;
1552 } 1579 }
1553 task_fd_install(target_proc->tsk, target_fd, file); 1580 task_fd_install(target_proc, target_fd, file);
1554 if (binder_debug_mask & BINDER_DEBUG_TRANSACTION) 1581 if (binder_debug_mask & BINDER_DEBUG_TRANSACTION)
1555 printk(KERN_INFO " fd %ld -> %d\n", fp->handle, target_fd); 1582 printk(KERN_INFO " fd %ld -> %d\n", fp->handle, target_fd);
1556 /* TODO: fput? */ 1583 /* TODO: fput? */
@@ -1655,7 +1682,9 @@ binder_transaction_buffer_release(struct binder_proc *proc, struct binder_buffer
1655 off_end = (void *)offp + buffer->offsets_size; 1682 off_end = (void *)offp + buffer->offsets_size;
1656 for (; offp < off_end; offp++) { 1683 for (; offp < off_end; offp++) {
1657 struct flat_binder_object *fp; 1684 struct flat_binder_object *fp;
1658 if (*offp > buffer->data_size - sizeof(*fp)) { 1685 if (*offp > buffer->data_size - sizeof(*fp) ||
1686 buffer->data_size < sizeof(*fp) ||
1687 !IS_ALIGNED(*offp, sizeof(void *))) {
1659 printk(KERN_ERR "binder: transaction release %d bad" 1688 printk(KERN_ERR "binder: transaction release %d bad"
1660 "offset %zd, size %zd\n", debug_id, *offp, buffer->data_size); 1689 "offset %zd, size %zd\n", debug_id, *offp, buffer->data_size);
1661 continue; 1690 continue;
@@ -1691,7 +1720,7 @@ binder_transaction_buffer_release(struct binder_proc *proc, struct binder_buffer
1691 if (binder_debug_mask & BINDER_DEBUG_TRANSACTION) 1720 if (binder_debug_mask & BINDER_DEBUG_TRANSACTION)
1692 printk(KERN_INFO " fd %ld\n", fp->handle); 1721 printk(KERN_INFO " fd %ld\n", fp->handle);
1693 if (failed_at) 1722 if (failed_at)
1694 task_close_fd(proc->tsk, fp->handle); 1723 task_close_fd(proc, fp->handle);
1695 break; 1724 break;
1696 1725
1697 default: 1726 default:
@@ -2340,7 +2369,7 @@ retry:
2340 2369
2341 tr.data_size = t->buffer->data_size; 2370 tr.data_size = t->buffer->data_size;
2342 tr.offsets_size = t->buffer->offsets_size; 2371 tr.offsets_size = t->buffer->offsets_size;
2343 tr.data.ptr.buffer = (void *)((void *)t->buffer->data + proc->user_buffer_offset); 2372 tr.data.ptr.buffer = (void *)t->buffer->data + proc->user_buffer_offset;
2344 tr.data.ptr.offsets = tr.data.ptr.buffer + ALIGN(t->buffer->data_size, sizeof(void *)); 2373 tr.data.ptr.offsets = tr.data.ptr.buffer + ALIGN(t->buffer->data_size, sizeof(void *));
2345 2374
2346 if (put_user(cmd, (uint32_t __user *)ptr)) 2375 if (put_user(cmd, (uint32_t __user *)ptr))
@@ -2656,6 +2685,7 @@ static void binder_vma_open(struct vm_area_struct *vma)
2656 (unsigned long)pgprot_val(vma->vm_page_prot)); 2685 (unsigned long)pgprot_val(vma->vm_page_prot));
2657 dump_stack(); 2686 dump_stack();
2658} 2687}
2688
2659static void binder_vma_close(struct vm_area_struct *vma) 2689static void binder_vma_close(struct vm_area_struct *vma)
2660{ 2690{
2661 struct binder_proc *proc = vma->vm_private_data; 2691 struct binder_proc *proc = vma->vm_private_data;
@@ -2666,6 +2696,7 @@ static void binder_vma_close(struct vm_area_struct *vma)
2666 (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags, 2696 (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags,
2667 (unsigned long)pgprot_val(vma->vm_page_prot)); 2697 (unsigned long)pgprot_val(vma->vm_page_prot));
2668 proc->vma = NULL; 2698 proc->vma = NULL;
2699 binder_defer_work(proc, BINDER_DEFERRED_PUT_FILES);
2669} 2700}
2670 2701
2671static struct vm_operations_struct binder_vm_ops = { 2702static struct vm_operations_struct binder_vm_ops = {
@@ -2698,6 +2729,12 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
2698 } 2729 }
2699 vma->vm_flags = (vma->vm_flags | VM_DONTCOPY) & ~VM_MAYWRITE; 2730 vma->vm_flags = (vma->vm_flags | VM_DONTCOPY) & ~VM_MAYWRITE;
2700 2731
2732 if (proc->buffer) {
2733 ret = -EBUSY;
2734 failure_string = "already mapped";
2735 goto err_already_mapped;
2736 }
2737
2701 area = get_vm_area(vma->vm_end - vma->vm_start, VM_IOREMAP); 2738 area = get_vm_area(vma->vm_end - vma->vm_start, VM_IOREMAP);
2702 if (area == NULL) { 2739 if (area == NULL) {
2703 ret = -ENOMEM; 2740 ret = -ENOMEM;
@@ -2705,7 +2742,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
2705 goto err_get_vm_area_failed; 2742 goto err_get_vm_area_failed;
2706 } 2743 }
2707 proc->buffer = area->addr; 2744 proc->buffer = area->addr;
2708 proc->user_buffer_offset = vma->vm_start - (size_t)proc->buffer; 2745 proc->user_buffer_offset = vma->vm_start - (uintptr_t)proc->buffer;
2709 2746
2710#ifdef CONFIG_CPU_CACHE_VIPT 2747#ifdef CONFIG_CPU_CACHE_VIPT
2711 if (cache_is_vipt_aliasing()) { 2748 if (cache_is_vipt_aliasing()) {
@@ -2738,6 +2775,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
2738 binder_insert_free_buffer(proc, buffer); 2775 binder_insert_free_buffer(proc, buffer);
2739 proc->free_async_space = proc->buffer_size / 2; 2776 proc->free_async_space = proc->buffer_size / 2;
2740 barrier(); 2777 barrier();
2778 proc->files = get_files_struct(current);
2741 proc->vma = vma; 2779 proc->vma = vma;
2742 2780
2743 /*printk(KERN_INFO "binder_mmap: %d %lx-%lx maps %p\n", proc->pid, vma->vm_start, vma->vm_end, proc->buffer);*/ 2781 /*printk(KERN_INFO "binder_mmap: %d %lx-%lx maps %p\n", proc->pid, vma->vm_start, vma->vm_end, proc->buffer);*/
@@ -2745,10 +2783,12 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
2745 2783
2746err_alloc_small_buf_failed: 2784err_alloc_small_buf_failed:
2747 kfree(proc->pages); 2785 kfree(proc->pages);
2786 proc->pages = NULL;
2748err_alloc_pages_failed: 2787err_alloc_pages_failed:
2749 vfree(proc->buffer); 2788 vfree(proc->buffer);
2789 proc->buffer = NULL;
2750err_get_vm_area_failed: 2790err_get_vm_area_failed:
2751 mutex_unlock(&binder_lock); 2791err_already_mapped:
2752err_bad_arg: 2792err_bad_arg:
2753 printk(KERN_ERR "binder_mmap: %d %lx-%lx %s failed %d\n", proc->pid, vma->vm_start, vma->vm_end, failure_string, ret); 2793 printk(KERN_ERR "binder_mmap: %d %lx-%lx %s failed %d\n", proc->pid, vma->vm_start, vma->vm_end, failure_string, ret);
2754 return ret; 2794 return ret;
@@ -2780,6 +2820,7 @@ static int binder_open(struct inode *nodp, struct file *filp)
2780 if (binder_proc_dir_entry_proc) { 2820 if (binder_proc_dir_entry_proc) {
2781 char strbuf[11]; 2821 char strbuf[11];
2782 snprintf(strbuf, sizeof(strbuf), "%u", proc->pid); 2822 snprintf(strbuf, sizeof(strbuf), "%u", proc->pid);
2823 remove_proc_entry(strbuf, binder_proc_dir_entry_proc);
2783 create_proc_read_entry(strbuf, S_IRUGO, binder_proc_dir_entry_proc, binder_read_proc_proc, proc); 2824 create_proc_read_entry(strbuf, S_IRUGO, binder_proc_dir_entry_proc, binder_read_proc_proc, proc);
2784 } 2825 }
2785 2826
@@ -2788,11 +2829,17 @@ static int binder_open(struct inode *nodp, struct file *filp)
2788 2829
2789static int binder_flush(struct file *filp, fl_owner_t id) 2830static int binder_flush(struct file *filp, fl_owner_t id)
2790{ 2831{
2791 struct rb_node *n;
2792 struct binder_proc *proc = filp->private_data; 2832 struct binder_proc *proc = filp->private_data;
2793 int wake_count = 0;
2794 2833
2795 mutex_lock(&binder_lock); 2834 binder_defer_work(proc, BINDER_DEFERRED_FLUSH);
2835
2836 return 0;
2837}
2838
2839static void binder_deferred_flush(struct binder_proc *proc)
2840{
2841 struct rb_node *n;
2842 int wake_count = 0;
2796 for (n = rb_first(&proc->threads); n != NULL; n = rb_next(n)) { 2843 for (n = rb_first(&proc->threads); n != NULL; n = rb_next(n)) {
2797 struct binder_thread *thread = rb_entry(n, struct binder_thread, rb_node); 2844 struct binder_thread *thread = rb_entry(n, struct binder_thread, rb_node);
2798 thread->looper |= BINDER_LOOPER_STATE_NEED_RETURN; 2845 thread->looper |= BINDER_LOOPER_STATE_NEED_RETURN;
@@ -2802,28 +2849,35 @@ static int binder_flush(struct file *filp, fl_owner_t id)
2802 } 2849 }
2803 } 2850 }
2804 wake_up_interruptible_all(&proc->wait); 2851 wake_up_interruptible_all(&proc->wait);
2805 mutex_unlock(&binder_lock);
2806 2852
2807 if (binder_debug_mask & BINDER_DEBUG_OPEN_CLOSE) 2853 if (binder_debug_mask & BINDER_DEBUG_OPEN_CLOSE)
2808 printk(KERN_INFO "binder_flush: %d woke %d threads\n", proc->pid, wake_count); 2854 printk(KERN_INFO "binder_flush: %d woke %d threads\n", proc->pid, wake_count);
2809
2810 return 0;
2811} 2855}
2812 2856
2813static int binder_release(struct inode *nodp, struct file *filp) 2857static int binder_release(struct inode *nodp, struct file *filp)
2814{ 2858{
2815 struct hlist_node *pos;
2816 struct binder_transaction *t;
2817 struct rb_node *n;
2818 struct binder_proc *proc = filp->private_data; 2859 struct binder_proc *proc = filp->private_data;
2819 int threads, nodes, incoming_refs, outgoing_refs, buffers, active_transactions, page_count;
2820
2821 if (binder_proc_dir_entry_proc) { 2860 if (binder_proc_dir_entry_proc) {
2822 char strbuf[11]; 2861 char strbuf[11];
2823 snprintf(strbuf, sizeof(strbuf), "%u", proc->pid); 2862 snprintf(strbuf, sizeof(strbuf), "%u", proc->pid);
2824 remove_proc_entry(strbuf, binder_proc_dir_entry_proc); 2863 remove_proc_entry(strbuf, binder_proc_dir_entry_proc);
2825 } 2864 }
2826 mutex_lock(&binder_lock); 2865
2866 binder_defer_work(proc, BINDER_DEFERRED_RELEASE);
2867
2868 return 0;
2869}
2870
2871static void binder_deferred_release(struct binder_proc *proc)
2872{
2873 struct hlist_node *pos;
2874 struct binder_transaction *t;
2875 struct rb_node *n;
2876 int threads, nodes, incoming_refs, outgoing_refs, buffers, active_transactions, page_count;
2877
2878 BUG_ON(proc->vma);
2879 BUG_ON(proc->files);
2880
2827 hlist_del(&proc->proc_node); 2881 hlist_del(&proc->proc_node);
2828 if (binder_context_mgr_node && binder_context_mgr_node->proc == proc) { 2882 if (binder_context_mgr_node && binder_context_mgr_node->proc == proc) {
2829 if (binder_debug_mask & BINDER_DEBUG_DEAD_BINDER) 2883 if (binder_debug_mask & BINDER_DEBUG_DEAD_BINDER)
@@ -2897,7 +2951,6 @@ static int binder_release(struct inode *nodp, struct file *filp)
2897 } 2951 }
2898 2952
2899 binder_stats.obj_deleted[BINDER_STAT_PROC]++; 2953 binder_stats.obj_deleted[BINDER_STAT_PROC]++;
2900 mutex_unlock(&binder_lock);
2901 2954
2902 page_count = 0; 2955 page_count = 0;
2903 if (proc->pages) { 2956 if (proc->pages) {
@@ -2921,7 +2974,57 @@ static int binder_release(struct inode *nodp, struct file *filp)
2921 proc->pid, threads, nodes, incoming_refs, outgoing_refs, active_transactions, buffers, page_count); 2974 proc->pid, threads, nodes, incoming_refs, outgoing_refs, active_transactions, buffers, page_count);
2922 2975
2923 kfree(proc); 2976 kfree(proc);
2924 return 0; 2977}
2978
2979static void binder_deferred_func(struct work_struct *work)
2980{
2981 struct binder_proc *proc;
2982 struct files_struct *files;
2983
2984 int defer;
2985 do {
2986 mutex_lock(&binder_lock);
2987 mutex_lock(&binder_deferred_lock);
2988 if (!hlist_empty(&binder_deferred_list)) {
2989 proc = hlist_entry(binder_deferred_list.first,
2990 struct binder_proc, deferred_work_node);
2991 hlist_del_init(&proc->deferred_work_node);
2992 defer = proc->deferred_work;
2993 proc->deferred_work = 0;
2994 } else {
2995 proc = NULL;
2996 defer = 0;
2997 }
2998 mutex_unlock(&binder_deferred_lock);
2999
3000 files = NULL;
3001 if (defer & BINDER_DEFERRED_PUT_FILES)
3002 if ((files = proc->files))
3003 proc->files = NULL;
3004
3005 if (defer & BINDER_DEFERRED_FLUSH)
3006 binder_deferred_flush(proc);
3007
3008 if (defer & BINDER_DEFERRED_RELEASE)
3009 binder_deferred_release(proc); /* frees proc */
3010
3011 mutex_unlock(&binder_lock);
3012 if (files)
3013 put_files_struct(files);
3014 } while (proc);
3015}
3016static DECLARE_WORK(binder_deferred_work, binder_deferred_func);
3017
3018static void binder_defer_work(struct binder_proc *proc, int defer)
3019{
3020 mutex_lock(&binder_deferred_lock);
3021 proc->deferred_work |= defer;
3022 if (hlist_unhashed(&proc->deferred_work_node)) {
3023 hlist_add_head(&proc->deferred_work_node,
3024 &binder_deferred_list);
3025 schedule_work(&binder_deferred_work);
3026 }
3027 mutex_unlock(&binder_deferred_lock);
2925} 3028}
2926 3029
2927static char *print_binder_transaction(char *buf, char *end, const char *prefix, struct binder_transaction *t) 3030static char *print_binder_transaction(char *buf, char *end, const char *prefix, struct binder_transaction *t)
diff --git a/drivers/staging/at76_usb/at76_usb.c b/drivers/staging/at76_usb/at76_usb.c
index 6f6e36a3bd9f..c8af9a868d62 100644
--- a/drivers/staging/at76_usb/at76_usb.c
+++ b/drivers/staging/at76_usb/at76_usb.c
@@ -5259,6 +5259,18 @@ static int at76_alloc_urbs(struct at76_priv *priv,
5259 return 0; 5259 return 0;
5260} 5260}
5261 5261
5262static const struct net_device_ops at76_netdev_ops = {
5263 .ndo_open = at76_open,
5264 .ndo_stop = at76_stop,
5265 .ndo_get_stats = at76_get_stats,
5266 .ndo_start_xmit = at76_tx,
5267 .ndo_tx_timeout = at76_tx_timeout,
5268 .ndo_set_multicast_list = at76_set_multicast,
5269 .ndo_set_mac_address = at76_set_mac_address,
5270 .ndo_validate_addr = eth_validate_addr,
5271 .ndo_change_mtu = eth_change_mtu,
5272};
5273
5262/* Register network device and initialize the hardware */ 5274/* Register network device and initialize the hardware */
5263static int at76_init_new_device(struct at76_priv *priv, 5275static int at76_init_new_device(struct at76_priv *priv,
5264 struct usb_interface *interface) 5276 struct usb_interface *interface)
@@ -5303,21 +5315,15 @@ static int at76_init_new_device(struct at76_priv *priv,
5303 priv->scan_mode = SCAN_TYPE_ACTIVE; 5315 priv->scan_mode = SCAN_TYPE_ACTIVE;
5304 5316
5305 netdev->flags &= ~IFF_MULTICAST; /* not yet or never */ 5317 netdev->flags &= ~IFF_MULTICAST; /* not yet or never */
5306 netdev->open = at76_open; 5318 netdev->netdev_ops = &at76_netdev_ops;
5307 netdev->stop = at76_stop;
5308 netdev->get_stats = at76_get_stats;
5309 netdev->ethtool_ops = &at76_ethtool_ops; 5319 netdev->ethtool_ops = &at76_ethtool_ops;
5310 5320
5311 /* Add pointers to enable iwspy support. */ 5321 /* Add pointers to enable iwspy support. */
5312 priv->wireless_data.spy_data = &priv->spy_data; 5322 priv->wireless_data.spy_data = &priv->spy_data;
5313 netdev->wireless_data = &priv->wireless_data; 5323 netdev->wireless_data = &priv->wireless_data;
5314 5324
5315 netdev->hard_start_xmit = at76_tx;
5316 netdev->tx_timeout = at76_tx_timeout;
5317 netdev->watchdog_timeo = 2 * HZ; 5325 netdev->watchdog_timeo = 2 * HZ;
5318 netdev->wireless_handlers = &at76_handler_def; 5326 netdev->wireless_handlers = &at76_handler_def;
5319 netdev->set_multicast_list = at76_set_multicast;
5320 netdev->set_mac_address = at76_set_mac_address;
5321 dev_alloc_name(netdev, "wlan%d"); 5327 dev_alloc_name(netdev, "wlan%d");
5322 5328
5323 ret = register_netdev(priv->netdev); 5329 ret = register_netdev(priv->netdev);
diff --git a/drivers/staging/b3dfg/b3dfg.c b/drivers/staging/b3dfg/b3dfg.c
index 0348072b3ab5..75ebe338c6f2 100644
--- a/drivers/staging/b3dfg/b3dfg.c
+++ b/drivers/staging/b3dfg/b3dfg.c
@@ -1000,7 +1000,7 @@ static int __devinit b3dfg_probe(struct pci_dev *pdev,
1000 1000
1001 pci_set_master(pdev); 1001 pci_set_master(pdev);
1002 1002
1003 r = pci_set_dma_mask(pdev, DMA_32BIT_MASK); 1003 r = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
1004 if (r) { 1004 if (r) {
1005 dev_err(&pdev->dev, "no usable DMA configuration\n"); 1005 dev_err(&pdev->dev, "no usable DMA configuration\n");
1006 goto err_free_res; 1006 goto err_free_res;
diff --git a/drivers/staging/epl/VirtualEthernetLinux.c b/drivers/staging/epl/VirtualEthernetLinux.c
index 21206c4d22ff..077724a556cc 100644
--- a/drivers/staging/epl/VirtualEthernetLinux.c
+++ b/drivers/staging/epl/VirtualEthernetLinux.c
@@ -284,6 +284,17 @@ static tEplKernel VEthRecvFrame(tEplFrameInfo * pFrameInfo_p)
284 return Ret; 284 return Ret;
285} 285}
286 286
287static const struct net_device_ops epl_netdev_ops = {
288 .ndo_open = VEthOpen,
289 .ndo_stop = VEthClose,
290 .ndo_get_stats = VEthGetStats,
291 .ndo_start_xmit = VEthXmit,
292 .ndo_tx_timeout = VEthTimeout,
293 .ndo_change_mtu = eth_change_mtu,
294 .ndo_set_mac_address = eth_mac_addr,
295 .ndo_validate_addr = eth_validate_addr,
296};
297
287tEplKernel VEthAddInstance(tEplDllkInitParam *pInitParam_p) 298tEplKernel VEthAddInstance(tEplDllkInitParam *pInitParam_p)
288{ 299{
289 tEplKernel Ret = kEplSuccessful; 300 tEplKernel Ret = kEplSuccessful;
@@ -299,11 +310,7 @@ tEplKernel VEthAddInstance(tEplDllkInitParam *pInitParam_p)
299 goto Exit; 310 goto Exit;
300 } 311 }
301 312
302 pVEthNetDevice_g->open = VEthOpen; 313 pVEthNetDevice_g->netdev_ops = &epl_netdev_ops;
303 pVEthNetDevice_g->stop = VEthClose;
304 pVEthNetDevice_g->get_stats = VEthGetStats;
305 pVEthNetDevice_g->hard_start_xmit = VEthXmit;
306 pVEthNetDevice_g->tx_timeout = VEthTimeout;
307 pVEthNetDevice_g->watchdog_timeo = EPL_VETH_TX_TIMEOUT; 314 pVEthNetDevice_g->watchdog_timeo = EPL_VETH_TX_TIMEOUT;
308 pVEthNetDevice_g->destructor = free_netdev; 315 pVEthNetDevice_g->destructor = free_netdev;
309 316
diff --git a/drivers/staging/et131x/et131x_netdev.c b/drivers/staging/et131x/et131x_netdev.c
index de65972ff362..951c73d5db20 100644
--- a/drivers/staging/et131x/et131x_netdev.c
+++ b/drivers/staging/et131x/et131x_netdev.c
@@ -112,6 +112,19 @@ void et131x_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp);
112void et131x_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid); 112void et131x_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid);
113void et131x_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid); 113void et131x_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid);
114 114
115static const struct net_device_ops et131x_netdev_ops = {
116 .ndo_open = et131x_open,
117 .ndo_stop = et131x_close,
118 .ndo_start_xmit = et131x_tx,
119 .ndo_set_multicast_list = et131x_multicast,
120 .ndo_tx_timeout = et131x_tx_timeout,
121 .ndo_change_mtu = et131x_change_mtu,
122 .ndo_set_mac_address = et131x_set_mac_addr,
123 .ndo_validate_addr = eth_validate_addr,
124 .ndo_get_stats = et131x_stats,
125 .ndo_do_ioctl = et131x_ioctl,
126};
127
115/** 128/**
116 * et131x_device_alloc 129 * et131x_device_alloc
117 * 130 *
@@ -142,16 +155,8 @@ struct net_device *et131x_device_alloc(void)
142 */ 155 */
143 //netdev->init = &et131x_init; 156 //netdev->init = &et131x_init;
144 //netdev->set_config = &et131x_config; 157 //netdev->set_config = &et131x_config;
145 netdev->get_stats = &et131x_stats;
146 netdev->open = &et131x_open;
147 netdev->stop = &et131x_close;
148 netdev->do_ioctl = &et131x_ioctl;
149 netdev->set_multicast_list = &et131x_multicast;
150 netdev->hard_start_xmit = &et131x_tx;
151 netdev->tx_timeout = &et131x_tx_timeout;
152 netdev->watchdog_timeo = ET131X_TX_TIMEOUT; 158 netdev->watchdog_timeo = ET131X_TX_TIMEOUT;
153 netdev->change_mtu = &et131x_change_mtu; 159 netdev->netdev_ops = &et131x_netdev_ops;
154 netdev->set_mac_address = &et131x_set_mac_addr;
155 160
156 //netdev->ethtool_ops = &et131x_ethtool_ops; 161 //netdev->ethtool_ops = &et131x_ethtool_ops;
157 162
diff --git a/drivers/staging/go7007/go7007-driver.c b/drivers/staging/go7007/go7007-driver.c
index 58bfc8d81b3b..77b1e769ac92 100644
--- a/drivers/staging/go7007/go7007-driver.c
+++ b/drivers/staging/go7007/go7007-driver.c
@@ -191,8 +191,10 @@ int go7007_reset_encoder(struct go7007 *go)
191/* 191/*
192 * Attempt to instantiate an I2C client by ID, probably loading a module. 192 * Attempt to instantiate an I2C client by ID, probably loading a module.
193 */ 193 */
194static int init_i2c_module(struct i2c_adapter *adapter, int id, int addr) 194static int init_i2c_module(struct i2c_adapter *adapter, const char *type,
195 int id, int addr)
195{ 196{
197 struct i2c_board_info info;
196 char *modname; 198 char *modname;
197 199
198 switch (id) { 200 switch (id) {
@@ -226,7 +228,11 @@ static int init_i2c_module(struct i2c_adapter *adapter, int id, int addr)
226 } 228 }
227 if (modname != NULL) 229 if (modname != NULL)
228 request_module(modname); 230 request_module(modname);
229 if (wis_i2c_probe_device(adapter, id, addr) == 1) 231
232 memset(&info, 0, sizeof(struct i2c_board_info));
233 info.addr = addr;
234 strlcpy(info.type, type, I2C_NAME_SIZE);
235 if (!i2c_new_device(adapter, &info))
230 return 0; 236 return 0;
231 if (modname != NULL) 237 if (modname != NULL)
232 printk(KERN_INFO 238 printk(KERN_INFO
@@ -266,23 +272,9 @@ int go7007_register_encoder(struct go7007 *go)
266 if (go->i2c_adapter_online) { 272 if (go->i2c_adapter_online) {
267 for (i = 0; i < go->board_info->num_i2c_devs; ++i) 273 for (i = 0; i < go->board_info->num_i2c_devs; ++i)
268 init_i2c_module(&go->i2c_adapter, 274 init_i2c_module(&go->i2c_adapter,
275 go->board_info->i2c_devs[i].type,
269 go->board_info->i2c_devs[i].id, 276 go->board_info->i2c_devs[i].id,
270 go->board_info->i2c_devs[i].addr); 277 go->board_info->i2c_devs[i].addr);
271#ifdef TUNER_SET_TYPE_ADDR
272 if (go->tuner_type >= 0) {
273 struct tuner_setup tun_setup = {
274 .mode_mask = T_ANALOG_TV,
275 .addr = ADDR_UNSET,
276 .type = go->tuner_type
277 };
278 i2c_clients_command(&go->i2c_adapter,
279 TUNER_SET_TYPE_ADDR, &tun_setup);
280 }
281#else
282 if (go->tuner_type >= 0)
283 i2c_clients_command(&go->i2c_adapter,
284 TUNER_SET_TYPE, &go->tuner_type);
285#endif
286 if (go->board_id == GO7007_BOARDID_ADLINK_MPG24) 278 if (go->board_id == GO7007_BOARDID_ADLINK_MPG24)
287 i2c_clients_command(&go->i2c_adapter, 279 i2c_clients_command(&go->i2c_adapter,
288 DECODER_SET_CHANNEL, &go->channel_number); 280 DECODER_SET_CHANNEL, &go->channel_number);
diff --git a/drivers/staging/go7007/go7007-i2c.c b/drivers/staging/go7007/go7007-i2c.c
index cd55b76eabc7..c82867fdd28d 100644
--- a/drivers/staging/go7007/go7007-i2c.c
+++ b/drivers/staging/go7007/go7007-i2c.c
@@ -31,87 +31,6 @@
31#include "go7007-priv.h" 31#include "go7007-priv.h"
32#include "wis-i2c.h" 32#include "wis-i2c.h"
33 33
34/************** Registration interface for I2C client drivers **************/
35
36/* Since there's no way to auto-probe the I2C devices connected to the I2C
37 * bus on the go7007, we have this silly little registration system that
38 * client drivers can use to register their I2C driver ID and their
39 * detect_client function (the one that's normally passed to i2c_probe).
40 *
41 * When a new go7007 device is connected, we can look up in a board info
42 * table by the USB or PCI vendor/product/revision ID to determine
43 * which I2C client module to load. The client driver module will register
44 * itself here, and then we can call the registered detect_client function
45 * to force-load a new client at the address listed in the board info table.
46 *
47 * Really the I2C subsystem should have a way to force-load I2C client
48 * drivers when we have a priori knowledge of what's on the bus, especially
49 * since the existing I2C auto-probe mechanism is so hokey, but we'll use
50 * our own mechanism for the time being. */
51
52struct wis_i2c_client_driver {
53 unsigned int id;
54 found_proc found_proc;
55 struct list_head list;
56};
57
58static LIST_HEAD(i2c_client_drivers);
59static DECLARE_MUTEX(i2c_client_driver_list_lock);
60
61/* Client drivers register here by their I2C driver ID */
62int wis_i2c_add_driver(unsigned int id, found_proc found_proc)
63{
64 struct wis_i2c_client_driver *driver;
65
66 driver = kmalloc(sizeof(struct wis_i2c_client_driver), GFP_KERNEL);
67 if (driver == NULL)
68 return -ENOMEM;
69 driver->id = id;
70 driver->found_proc = found_proc;
71
72 down(&i2c_client_driver_list_lock);
73 list_add_tail(&driver->list, &i2c_client_drivers);
74 up(&i2c_client_driver_list_lock);
75
76 return 0;
77}
78EXPORT_SYMBOL(wis_i2c_add_driver);
79
80void wis_i2c_del_driver(found_proc found_proc)
81{
82 struct wis_i2c_client_driver *driver, *next;
83
84 down(&i2c_client_driver_list_lock);
85 list_for_each_entry_safe(driver, next, &i2c_client_drivers, list)
86 if (driver->found_proc == found_proc) {
87 list_del(&driver->list);
88 kfree(driver);
89 }
90 up(&i2c_client_driver_list_lock);
91}
92EXPORT_SYMBOL(wis_i2c_del_driver);
93
94/* The main go7007 driver calls this to instantiate a client by driver
95 * ID and bus address, which are both stored in the board info table */
96int wis_i2c_probe_device(struct i2c_adapter *adapter,
97 unsigned int id, int addr)
98{
99 struct wis_i2c_client_driver *driver;
100 int found = 0;
101
102 if (addr < 0 || addr > 0x7f)
103 return -1;
104 down(&i2c_client_driver_list_lock);
105 list_for_each_entry(driver, &i2c_client_drivers, list)
106 if (driver->id == id) {
107 if (driver->found_proc(adapter, addr, 0) == 0)
108 found = 1;
109 break;
110 }
111 up(&i2c_client_driver_list_lock);
112 return found;
113}
114
115/********************* Driver for on-board I2C adapter *********************/ 34/********************* Driver for on-board I2C adapter *********************/
116 35
117/* #define GO7007_I2C_DEBUG */ 36/* #define GO7007_I2C_DEBUG */
@@ -287,9 +206,7 @@ static struct i2c_algorithm go7007_algo = {
287 206
288static struct i2c_adapter go7007_adap_templ = { 207static struct i2c_adapter go7007_adap_templ = {
289 .owner = THIS_MODULE, 208 .owner = THIS_MODULE,
290 .class = I2C_CLASS_TV_ANALOG,
291 .name = "WIS GO7007SB", 209 .name = "WIS GO7007SB",
292 .id = I2C_ALGO_GO7007,
293 .algo = &go7007_algo, 210 .algo = &go7007_algo,
294}; 211};
295 212
diff --git a/drivers/staging/go7007/go7007-priv.h b/drivers/staging/go7007/go7007-priv.h
index 372f1f1c09b2..178d18119faa 100644
--- a/drivers/staging/go7007/go7007-priv.h
+++ b/drivers/staging/go7007/go7007-priv.h
@@ -87,6 +87,7 @@ struct go7007_board_info {
87 int audio_main_div; 87 int audio_main_div;
88 int num_i2c_devs; 88 int num_i2c_devs;
89 struct { 89 struct {
90 const char *type;
90 int id; 91 int id;
91 int addr; 92 int addr;
92 } i2c_devs[4]; 93 } i2c_devs[4];
diff --git a/drivers/staging/go7007/go7007-usb.c b/drivers/staging/go7007/go7007-usb.c
index 83eec920c7d3..aa4a9e0b9954 100644
--- a/drivers/staging/go7007/go7007-usb.c
+++ b/drivers/staging/go7007/go7007-usb.c
@@ -91,6 +91,7 @@ static struct go7007_usb_board board_matrix_ii = {
91 .num_i2c_devs = 1, 91 .num_i2c_devs = 1,
92 .i2c_devs = { 92 .i2c_devs = {
93 { 93 {
94 .type = "wis_saa7115",
94 .id = I2C_DRIVERID_WIS_SAA7115, 95 .id = I2C_DRIVERID_WIS_SAA7115,
95 .addr = 0x20, 96 .addr = 0x20,
96 }, 97 },
@@ -127,6 +128,7 @@ static struct go7007_usb_board board_matrix_reload = {
127 .num_i2c_devs = 1, 128 .num_i2c_devs = 1,
128 .i2c_devs = { 129 .i2c_devs = {
129 { 130 {
131 .type = "wis_saa7113",
130 .id = I2C_DRIVERID_WIS_SAA7113, 132 .id = I2C_DRIVERID_WIS_SAA7113,
131 .addr = 0x25, 133 .addr = 0x25,
132 }, 134 },
@@ -164,6 +166,7 @@ static struct go7007_usb_board board_star_trek = {
164 .num_i2c_devs = 1, 166 .num_i2c_devs = 1,
165 .i2c_devs = { 167 .i2c_devs = {
166 { 168 {
169 .type = "wis_saa7115",
167 .id = I2C_DRIVERID_WIS_SAA7115, 170 .id = I2C_DRIVERID_WIS_SAA7115,
168 .addr = 0x20, 171 .addr = 0x20,
169 }, 172 },
@@ -209,14 +212,17 @@ static struct go7007_usb_board board_px_tv402u = {
209 .num_i2c_devs = 3, 212 .num_i2c_devs = 3,
210 .i2c_devs = { 213 .i2c_devs = {
211 { 214 {
215 .type = "wis_saa7115",
212 .id = I2C_DRIVERID_WIS_SAA7115, 216 .id = I2C_DRIVERID_WIS_SAA7115,
213 .addr = 0x20, 217 .addr = 0x20,
214 }, 218 },
215 { 219 {
220 .type = "wis_uda1342",
216 .id = I2C_DRIVERID_WIS_UDA1342, 221 .id = I2C_DRIVERID_WIS_UDA1342,
217 .addr = 0x1a, 222 .addr = 0x1a,
218 }, 223 },
219 { 224 {
225 .type = "wis_sony_tuner",
220 .id = I2C_DRIVERID_WIS_SONY_TUNER, 226 .id = I2C_DRIVERID_WIS_SONY_TUNER,
221 .addr = 0x60, 227 .addr = 0x60,
222 }, 228 },
@@ -264,6 +270,7 @@ static struct go7007_usb_board board_xmen = {
264 .num_i2c_devs = 1, 270 .num_i2c_devs = 1,
265 .i2c_devs = { 271 .i2c_devs = {
266 { 272 {
273 .type = "wis_ov7640",
267 .id = I2C_DRIVERID_WIS_OV7640, 274 .id = I2C_DRIVERID_WIS_OV7640,
268 .addr = 0x21, 275 .addr = 0x21,
269 }, 276 },
@@ -296,6 +303,7 @@ static struct go7007_usb_board board_matrix_revolution = {
296 .num_i2c_devs = 1, 303 .num_i2c_devs = 1,
297 .i2c_devs = { 304 .i2c_devs = {
298 { 305 {
306 .type = "wis_tw9903",
299 .id = I2C_DRIVERID_WIS_TW9903, 307 .id = I2C_DRIVERID_WIS_TW9903,
300 .addr = 0x44, 308 .addr = 0x44,
301 }, 309 },
@@ -385,6 +393,7 @@ static struct go7007_usb_board board_adlink_mpg24 = {
385 .num_i2c_devs = 1, 393 .num_i2c_devs = 1,
386 .i2c_devs = { 394 .i2c_devs = {
387 { 395 {
396 .type = "wis_twTW2804",
388 .id = I2C_DRIVERID_WIS_TW2804, 397 .id = I2C_DRIVERID_WIS_TW2804,
389 .addr = 0x00, /* yes, really */ 398 .addr = 0x00, /* yes, really */
390 }, 399 },
@@ -415,8 +424,9 @@ static struct go7007_usb_board board_sensoray_2250 = {
415 .num_i2c_devs = 1, 424 .num_i2c_devs = 1,
416 .i2c_devs = { 425 .i2c_devs = {
417 { 426 {
427 .type = "s2250_board",
418 .id = I2C_DRIVERID_S2250, 428 .id = I2C_DRIVERID_S2250,
419 .addr = 0x34, 429 .addr = 0x43,
420 }, 430 },
421 }, 431 },
422 .num_inputs = 2, 432 .num_inputs = 2,
@@ -943,9 +953,7 @@ static struct i2c_algorithm go7007_usb_algo = {
943 953
944static struct i2c_adapter go7007_usb_adap_templ = { 954static struct i2c_adapter go7007_usb_adap_templ = {
945 .owner = THIS_MODULE, 955 .owner = THIS_MODULE,
946 .class = I2C_CLASS_TV_ANALOG,
947 .name = "WIS GO7007SB EZ-USB", 956 .name = "WIS GO7007SB EZ-USB",
948 .id = I2C_ALGO_GO7007_USB,
949 .algo = &go7007_usb_algo, 957 .algo = &go7007_usb_algo,
950}; 958};
951 959
diff --git a/drivers/staging/go7007/s2250-board.c b/drivers/staging/go7007/s2250-board.c
index d333ea2cd774..1706fbf06847 100644
--- a/drivers/staging/go7007/s2250-board.c
+++ b/drivers/staging/go7007/s2250-board.c
@@ -28,7 +28,6 @@ extern int s2250loader_init(void);
28extern void s2250loader_cleanup(void); 28extern void s2250loader_cleanup(void);
29 29
30#define TLV320_ADDRESS 0x34 30#define TLV320_ADDRESS 0x34
31#define S2250_VIDDEC 0x86
32#define VPX322_ADDR_ANALOGCONTROL1 0x02 31#define VPX322_ADDR_ANALOGCONTROL1 0x02
33#define VPX322_ADDR_BRIGHTNESS0 0x0127 32#define VPX322_ADDR_BRIGHTNESS0 0x0127
34#define VPX322_ADDR_BRIGHTNESS1 0x0131 33#define VPX322_ADDR_BRIGHTNESS1 0x0131
@@ -123,6 +122,7 @@ struct s2250 {
123 int hue; 122 int hue;
124 int reg12b_val; 123 int reg12b_val;
125 int audio_input; 124 int audio_input;
125 struct i2c_client *audio;
126}; 126};
127 127
128/* from go7007-usb.c which is Copyright (C) 2005-2006 Micronas USA Inc.*/ 128/* from go7007-usb.c which is Copyright (C) 2005-2006 Micronas USA Inc.*/
@@ -452,16 +452,15 @@ static int s2250_command(struct i2c_client *client,
452 { 452 {
453 struct v4l2_audio *audio = arg; 453 struct v4l2_audio *audio = arg;
454 454
455 client->addr = TLV320_ADDRESS;
456 switch (audio->index) { 455 switch (audio->index) {
457 case 0: 456 case 0:
458 write_reg(client, 0x08, 0x02); /* Line In */ 457 write_reg(dec->audio, 0x08, 0x02); /* Line In */
459 break; 458 break;
460 case 1: 459 case 1:
461 write_reg(client, 0x08, 0x04); /* Mic */ 460 write_reg(dec->audio, 0x08, 0x04); /* Mic */
462 break; 461 break;
463 case 2: 462 case 2:
464 write_reg(client, 0x08, 0x05); /* Mic Boost */ 463 write_reg(dec->audio, 0x08, 0x05); /* Mic Boost */
465 break; 464 break;
466 default: 465 default:
467 return -EINVAL; 466 return -EINVAL;
@@ -477,31 +476,23 @@ static int s2250_command(struct i2c_client *client,
477 return 0; 476 return 0;
478} 477}
479 478
480static struct i2c_driver s2250_driver; 479static int s2250_probe(struct i2c_client *client,
481 480 const struct i2c_device_id *id)
482static struct i2c_client s2250_client_templ = {
483 .name = "Sensoray 2250",
484 .driver = &s2250_driver,
485};
486
487static int s2250_detect(struct i2c_adapter *adapter, int addr, int kind)
488{ 481{
489 struct i2c_client *client; 482 struct i2c_client *audio;
483 struct i2c_adapter *adapter = client->adapter;
490 struct s2250 *dec; 484 struct s2250 *dec;
491 u8 *data; 485 u8 *data;
492 struct go7007 *go = i2c_get_adapdata(adapter); 486 struct go7007 *go = i2c_get_adapdata(adapter);
493 struct go7007_usb *usb = go->hpi_context; 487 struct go7007_usb *usb = go->hpi_context;
494 488
495 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); 489 audio = i2c_new_dummy(adapter, TLV320_ADDRESS >> 1);
496 if (client == NULL) 490 if (audio == NULL)
497 return -ENOMEM; 491 return -ENOMEM;
498 memcpy(client, &s2250_client_templ,
499 sizeof(s2250_client_templ));
500 client->adapter = adapter;
501 492
502 dec = kmalloc(sizeof(struct s2250), GFP_KERNEL); 493 dec = kmalloc(sizeof(struct s2250), GFP_KERNEL);
503 if (dec == NULL) { 494 if (dec == NULL) {
504 kfree(client); 495 i2c_unregister_device(audio);
505 return -ENOMEM; 496 return -ENOMEM;
506 } 497 }
507 498
@@ -510,7 +501,7 @@ static int s2250_detect(struct i2c_adapter *adapter, int addr, int kind)
510 dec->contrast = 50; 501 dec->contrast = 50;
511 dec->saturation = 50; 502 dec->saturation = 50;
512 dec->hue = 0; 503 dec->hue = 0;
513 client->addr = TLV320_ADDRESS; 504 dec->audio = audio;
514 i2c_set_clientdata(client, dec); 505 i2c_set_clientdata(client, dec);
515 506
516 printk(KERN_DEBUG 507 printk(KERN_DEBUG
@@ -518,28 +509,25 @@ static int s2250_detect(struct i2c_adapter *adapter, int addr, int kind)
518 adapter->name); 509 adapter->name);
519 510
520 /* initialize the audio */ 511 /* initialize the audio */
521 client->addr = TLV320_ADDRESS; 512 if (write_regs(audio, aud_regs) < 0) {
522 if (write_regs(client, aud_regs) < 0) {
523 printk(KERN_ERR 513 printk(KERN_ERR
524 "s2250: error initializing audio\n"); 514 "s2250: error initializing audio\n");
525 kfree(client); 515 i2c_unregister_device(audio);
526 kfree(dec); 516 kfree(dec);
527 return 0; 517 return 0;
528 } 518 }
529 client->addr = S2250_VIDDEC;
530 i2c_set_clientdata(client, dec);
531 519
532 if (write_regs(client, vid_regs) < 0) { 520 if (write_regs(client, vid_regs) < 0) {
533 printk(KERN_ERR 521 printk(KERN_ERR
534 "s2250: error initializing decoder\n"); 522 "s2250: error initializing decoder\n");
535 kfree(client); 523 i2c_unregister_device(audio);
536 kfree(dec); 524 kfree(dec);
537 return 0; 525 return 0;
538 } 526 }
539 if (write_regs_fp(client, vid_regs_fp) < 0) { 527 if (write_regs_fp(client, vid_regs_fp) < 0) {
540 printk(KERN_ERR 528 printk(KERN_ERR
541 "s2250: error initializing decoder\n"); 529 "s2250: error initializing decoder\n");
542 kfree(client); 530 i2c_unregister_device(audio);
543 kfree(dec); 531 kfree(dec);
544 return 0; 532 return 0;
545 } 533 }
@@ -575,32 +563,33 @@ static int s2250_detect(struct i2c_adapter *adapter, int addr, int kind)
575 up(&usb->i2c_lock); 563 up(&usb->i2c_lock);
576 } 564 }
577 565
578 i2c_attach_client(client);
579 printk("s2250: initialized successfully\n"); 566 printk("s2250: initialized successfully\n");
580 return 0; 567 return 0;
581} 568}
582 569
583static int s2250_detach(struct i2c_client *client) 570static int s2250_remove(struct i2c_client *client)
584{ 571{
585 struct s2250 *dec = i2c_get_clientdata(client); 572 struct s2250 *dec = i2c_get_clientdata(client);
586 int r;
587
588 r = i2c_detach_client(client);
589 if (r < 0)
590 return r;
591 573
592 kfree(client); 574 i2c_set_clientdata(client, NULL);
575 i2c_unregister_device(dec->audio);
593 kfree(dec); 576 kfree(dec);
594 return 0; 577 return 0;
595} 578}
596 579
580static struct i2c_device_id s2250_id[] = {
581 { "s2250_board", 0 },
582 { }
583};
584
597static struct i2c_driver s2250_driver = { 585static struct i2c_driver s2250_driver = {
598 .driver = { 586 .driver = {
599 .name = "Sensoray 2250 board driver", 587 .name = "Sensoray 2250 board driver",
600 }, 588 },
601 .id = I2C_DRIVERID_S2250, 589 .probe = s2250_probe,
602 .detach_client = s2250_detach, 590 .remove = s2250_remove,
603 .command = s2250_command, 591 .command = s2250_command,
592 .id_table = s2250_id,
604}; 593};
605 594
606static int __init s2250_init(void) 595static int __init s2250_init(void)
@@ -613,13 +602,13 @@ static int __init s2250_init(void)
613 602
614 r = i2c_add_driver(&s2250_driver); 603 r = i2c_add_driver(&s2250_driver);
615 if (r < 0) 604 if (r < 0)
616 return r; 605 s2250loader_cleanup();
617 return wis_i2c_add_driver(s2250_driver.id, s2250_detect); 606
607 return r;
618} 608}
619 609
620static void __exit s2250_cleanup(void) 610static void __exit s2250_cleanup(void)
621{ 611{
622 wis_i2c_del_driver(s2250_detect);
623 i2c_del_driver(&s2250_driver); 612 i2c_del_driver(&s2250_driver);
624 613
625 s2250loader_cleanup(); 614 s2250loader_cleanup();
diff --git a/drivers/staging/go7007/wis-i2c.h b/drivers/staging/go7007/wis-i2c.h
index 431f41dd3966..3c2b9be455df 100644
--- a/drivers/staging/go7007/wis-i2c.h
+++ b/drivers/staging/go7007/wis-i2c.h
@@ -24,21 +24,12 @@
24#define I2C_DRIVERID_WIS_OV7640 0xf0f5 24#define I2C_DRIVERID_WIS_OV7640 0xf0f5
25#define I2C_DRIVERID_WIS_TW2804 0xf0f6 25#define I2C_DRIVERID_WIS_TW2804 0xf0f6
26#define I2C_DRIVERID_S2250 0xf0f7 26#define I2C_DRIVERID_S2250 0xf0f7
27#define I2C_ALGO_GO7007 0xf00000
28#define I2C_ALGO_GO7007_USB 0xf10000
29 27
30/* Flag to indicate that the client needs to be accessed with SCCB semantics */ 28/* Flag to indicate that the client needs to be accessed with SCCB semantics */
31/* We re-use the I2C_M_TEN value so the flag passes through the masks in the 29/* We re-use the I2C_M_TEN value so the flag passes through the masks in the
32 * core I2C code. Major kludge, but the I2C layer ain't exactly flexible. */ 30 * core I2C code. Major kludge, but the I2C layer ain't exactly flexible. */
33#define I2C_CLIENT_SCCB 0x10 31#define I2C_CLIENT_SCCB 0x10
34 32
35typedef int (*found_proc) (struct i2c_adapter *, int, int);
36int wis_i2c_add_driver(unsigned int id, found_proc found_proc);
37void wis_i2c_del_driver(found_proc found_proc);
38
39int wis_i2c_probe_device(struct i2c_adapter *adapter,
40 unsigned int id, int addr);
41
42/* Definitions for new video decoder commands */ 33/* Definitions for new video decoder commands */
43 34
44struct video_decoder_resolution { 35struct video_decoder_resolution {
diff --git a/drivers/staging/go7007/wis-ov7640.c b/drivers/staging/go7007/wis-ov7640.c
index 2f9efca04606..04d6d3a498a3 100644
--- a/drivers/staging/go7007/wis-ov7640.c
+++ b/drivers/staging/go7007/wis-ov7640.c
@@ -50,76 +50,54 @@ static int write_regs(struct i2c_client *client, u8 *regs)
50 return 0; 50 return 0;
51} 51}
52 52
53static struct i2c_driver wis_ov7640_driver; 53static int wis_ov7640_probe(struct i2c_client *client,
54 54 const struct i2c_device_id *id)
55static struct i2c_client wis_ov7640_client_templ = {
56 .name = "OV7640 (WIS)",
57 .driver = &wis_ov7640_driver,
58};
59
60static int wis_ov7640_detect(struct i2c_adapter *adapter, int addr, int kind)
61{ 55{
62 struct i2c_client *client; 56 struct i2c_adapter *adapter = client->adapter;
63 57
64 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) 58 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
65 return 0; 59 return -ENODEV;
66 60
67 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
68 if (client == NULL)
69 return -ENOMEM;
70 memcpy(client, &wis_ov7640_client_templ,
71 sizeof(wis_ov7640_client_templ));
72 client->adapter = adapter;
73 client->addr = addr;
74 client->flags = I2C_CLIENT_SCCB; 61 client->flags = I2C_CLIENT_SCCB;
75 62
76 printk(KERN_DEBUG 63 printk(KERN_DEBUG
77 "wis-ov7640: initializing OV7640 at address %d on %s\n", 64 "wis-ov7640: initializing OV7640 at address %d on %s\n",
78 addr, adapter->name); 65 client->addr, adapter->name);
79 66
80 if (write_regs(client, initial_registers) < 0) { 67 if (write_regs(client, initial_registers) < 0) {
81 printk(KERN_ERR "wis-ov7640: error initializing OV7640\n"); 68 printk(KERN_ERR "wis-ov7640: error initializing OV7640\n");
82 kfree(client); 69 return -ENODEV;
83 return 0;
84 } 70 }
85 71
86 i2c_attach_client(client);
87 return 0; 72 return 0;
88} 73}
89 74
90static int wis_ov7640_detach(struct i2c_client *client) 75static int wis_ov7640_remove(struct i2c_client *client)
91{ 76{
92 int r;
93
94 r = i2c_detach_client(client);
95 if (r < 0)
96 return r;
97
98 kfree(client);
99 return 0; 77 return 0;
100} 78}
101 79
80static struct i2c_device_id wis_ov7640_id[] = {
81 { "wis_ov7640", 0 },
82 { }
83};
84
102static struct i2c_driver wis_ov7640_driver = { 85static struct i2c_driver wis_ov7640_driver = {
103 .driver = { 86 .driver = {
104 .name = "WIS OV7640 I2C driver", 87 .name = "WIS OV7640 I2C driver",
105 }, 88 },
106 .id = I2C_DRIVERID_WIS_OV7640, 89 .probe = wis_ov7640_probe,
107 .detach_client = wis_ov7640_detach, 90 .remove = wis_ov7640_remove,
91 .id_table = wis_ov7640_id,
108}; 92};
109 93
110static int __init wis_ov7640_init(void) 94static int __init wis_ov7640_init(void)
111{ 95{
112 int r; 96 return i2c_add_driver(&wis_ov7640_driver);
113
114 r = i2c_add_driver(&wis_ov7640_driver);
115 if (r < 0)
116 return r;
117 return wis_i2c_add_driver(wis_ov7640_driver.id, wis_ov7640_detect);
118} 97}
119 98
120static void __exit wis_ov7640_cleanup(void) 99static void __exit wis_ov7640_cleanup(void)
121{ 100{
122 wis_i2c_del_driver(wis_ov7640_detect);
123 i2c_del_driver(&wis_ov7640_driver); 101 i2c_del_driver(&wis_ov7640_driver);
124} 102}
125 103
diff --git a/drivers/staging/go7007/wis-saa7113.c b/drivers/staging/go7007/wis-saa7113.c
index 11689723945e..9ab893bd204e 100644
--- a/drivers/staging/go7007/wis-saa7113.c
+++ b/drivers/staging/go7007/wis-saa7113.c
@@ -261,34 +261,19 @@ static int wis_saa7113_command(struct i2c_client *client,
261 return 0; 261 return 0;
262} 262}
263 263
264static struct i2c_driver wis_saa7113_driver; 264static int wis_saa7113_probe(struct i2c_client *client,
265 265 const struct i2c_device_id *id)
266static struct i2c_client wis_saa7113_client_templ = {
267 .name = "SAA7113 (WIS)",
268 .driver = &wis_saa7113_driver,
269};
270
271static int wis_saa7113_detect(struct i2c_adapter *adapter, int addr, int kind)
272{ 266{
273 struct i2c_client *client; 267 struct i2c_adapter *adapter = client->adapter;
274 struct wis_saa7113 *dec; 268 struct wis_saa7113 *dec;
275 269
276 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) 270 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
277 return 0; 271 return -ENODEV;
278
279 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
280 if (client == NULL)
281 return -ENOMEM;
282 memcpy(client, &wis_saa7113_client_templ,
283 sizeof(wis_saa7113_client_templ));
284 client->adapter = adapter;
285 client->addr = addr;
286 272
287 dec = kmalloc(sizeof(struct wis_saa7113), GFP_KERNEL); 273 dec = kmalloc(sizeof(struct wis_saa7113), GFP_KERNEL);
288 if (dec == NULL) { 274 if (dec == NULL)
289 kfree(client);
290 return -ENOMEM; 275 return -ENOMEM;
291 } 276
292 dec->norm = V4L2_STD_NTSC; 277 dec->norm = V4L2_STD_NTSC;
293 dec->brightness = 128; 278 dec->brightness = 128;
294 dec->contrast = 71; 279 dec->contrast = 71;
@@ -298,56 +283,49 @@ static int wis_saa7113_detect(struct i2c_adapter *adapter, int addr, int kind)
298 283
299 printk(KERN_DEBUG 284 printk(KERN_DEBUG
300 "wis-saa7113: initializing SAA7113 at address %d on %s\n", 285 "wis-saa7113: initializing SAA7113 at address %d on %s\n",
301 addr, adapter->name); 286 client->addr, adapter->name);
302 287
303 if (write_regs(client, initial_registers) < 0) { 288 if (write_regs(client, initial_registers) < 0) {
304 printk(KERN_ERR 289 printk(KERN_ERR
305 "wis-saa7113: error initializing SAA7113\n"); 290 "wis-saa7113: error initializing SAA7113\n");
306 kfree(client);
307 kfree(dec); 291 kfree(dec);
308 return 0; 292 return -ENODEV;
309 } 293 }
310 294
311 i2c_attach_client(client);
312 return 0; 295 return 0;
313} 296}
314 297
315static int wis_saa7113_detach(struct i2c_client *client) 298static int wis_saa7113_remove(struct i2c_client *client)
316{ 299{
317 struct wis_saa7113 *dec = i2c_get_clientdata(client); 300 struct wis_saa7113 *dec = i2c_get_clientdata(client);
318 int r;
319
320 r = i2c_detach_client(client);
321 if (r < 0)
322 return r;
323 301
324 kfree(client); 302 i2c_set_clientdata(client, NULL);
325 kfree(dec); 303 kfree(dec);
326 return 0; 304 return 0;
327} 305}
328 306
307static struct i2c_device_id wis_saa7113_id[] = {
308 { "wis_saa7113", 0 },
309 { }
310};
311
329static struct i2c_driver wis_saa7113_driver = { 312static struct i2c_driver wis_saa7113_driver = {
330 .driver = { 313 .driver = {
331 .name = "WIS SAA7113 I2C driver", 314 .name = "WIS SAA7113 I2C driver",
332 }, 315 },
333 .id = I2C_DRIVERID_WIS_SAA7113, 316 .probe = wis_saa7113_probe,
334 .detach_client = wis_saa7113_detach, 317 .remove = wis_saa7113_remove,
335 .command = wis_saa7113_command, 318 .command = wis_saa7113_command,
319 .id_table = wis_saa7113_id,
336}; 320};
337 321
338static int __init wis_saa7113_init(void) 322static int __init wis_saa7113_init(void)
339{ 323{
340 int r; 324 return i2c_add_driver(&wis_saa7113_driver);
341
342 r = i2c_add_driver(&wis_saa7113_driver);
343 if (r < 0)
344 return r;
345 return wis_i2c_add_driver(wis_saa7113_driver.id, wis_saa7113_detect);
346} 325}
347 326
348static void __exit wis_saa7113_cleanup(void) 327static void __exit wis_saa7113_cleanup(void)
349{ 328{
350 wis_i2c_del_driver(wis_saa7113_detect);
351 i2c_del_driver(&wis_saa7113_driver); 329 i2c_del_driver(&wis_saa7113_driver);
352} 330}
353 331
diff --git a/drivers/staging/go7007/wis-saa7115.c b/drivers/staging/go7007/wis-saa7115.c
index 59417a7174d7..8687ad2de761 100644
--- a/drivers/staging/go7007/wis-saa7115.c
+++ b/drivers/staging/go7007/wis-saa7115.c
@@ -394,34 +394,19 @@ static int wis_saa7115_command(struct i2c_client *client,
394 return 0; 394 return 0;
395} 395}
396 396
397static struct i2c_driver wis_saa7115_driver; 397static int wis_saa7115_probe(struct i2c_client *client,
398 398 const struct i2c_device_id *id)
399static struct i2c_client wis_saa7115_client_templ = {
400 .name = "SAA7115 (WIS)",
401 .driver = &wis_saa7115_driver,
402};
403
404static int wis_saa7115_detect(struct i2c_adapter *adapter, int addr, int kind)
405{ 399{
406 struct i2c_client *client; 400 struct i2c_adapter *adapter = client->adapter;
407 struct wis_saa7115 *dec; 401 struct wis_saa7115 *dec;
408 402
409 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) 403 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
410 return 0; 404 return -ENODEV;
411
412 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
413 if (client == NULL)
414 return -ENOMEM;
415 memcpy(client, &wis_saa7115_client_templ,
416 sizeof(wis_saa7115_client_templ));
417 client->adapter = adapter;
418 client->addr = addr;
419 405
420 dec = kmalloc(sizeof(struct wis_saa7115), GFP_KERNEL); 406 dec = kmalloc(sizeof(struct wis_saa7115), GFP_KERNEL);
421 if (dec == NULL) { 407 if (dec == NULL)
422 kfree(client);
423 return -ENOMEM; 408 return -ENOMEM;
424 } 409
425 dec->norm = V4L2_STD_NTSC; 410 dec->norm = V4L2_STD_NTSC;
426 dec->brightness = 128; 411 dec->brightness = 128;
427 dec->contrast = 64; 412 dec->contrast = 64;
@@ -431,56 +416,49 @@ static int wis_saa7115_detect(struct i2c_adapter *adapter, int addr, int kind)
431 416
432 printk(KERN_DEBUG 417 printk(KERN_DEBUG
433 "wis-saa7115: initializing SAA7115 at address %d on %s\n", 418 "wis-saa7115: initializing SAA7115 at address %d on %s\n",
434 addr, adapter->name); 419 client->addr, adapter->name);
435 420
436 if (write_regs(client, initial_registers) < 0) { 421 if (write_regs(client, initial_registers) < 0) {
437 printk(KERN_ERR 422 printk(KERN_ERR
438 "wis-saa7115: error initializing SAA7115\n"); 423 "wis-saa7115: error initializing SAA7115\n");
439 kfree(client);
440 kfree(dec); 424 kfree(dec);
441 return 0; 425 return -ENODEV;
442 } 426 }
443 427
444 i2c_attach_client(client);
445 return 0; 428 return 0;
446} 429}
447 430
448static int wis_saa7115_detach(struct i2c_client *client) 431static int wis_saa7115_remove(struct i2c_client *client)
449{ 432{
450 struct wis_saa7115 *dec = i2c_get_clientdata(client); 433 struct wis_saa7115 *dec = i2c_get_clientdata(client);
451 int r;
452
453 r = i2c_detach_client(client);
454 if (r < 0)
455 return r;
456 434
457 kfree(client); 435 i2c_set_clientdata(client, NULL);
458 kfree(dec); 436 kfree(dec);
459 return 0; 437 return 0;
460} 438}
461 439
440static struct i2c_device_id wis_saa7115_id[] = {
441 { "wis_saa7115", 0 },
442 { }
443};
444
462static struct i2c_driver wis_saa7115_driver = { 445static struct i2c_driver wis_saa7115_driver = {
463 .driver = { 446 .driver = {
464 .name = "WIS SAA7115 I2C driver", 447 .name = "WIS SAA7115 I2C driver",
465 }, 448 },
466 .id = I2C_DRIVERID_WIS_SAA7115, 449 .probe = wis_saa7115_probe,
467 .detach_client = wis_saa7115_detach, 450 .remove = wis_saa7115_remove,
468 .command = wis_saa7115_command, 451 .command = wis_saa7115_command,
452 .id_table = wis_saa7115_id,
469}; 453};
470 454
471static int __init wis_saa7115_init(void) 455static int __init wis_saa7115_init(void)
472{ 456{
473 int r; 457 return i2c_add_driver(&wis_saa7115_driver);
474
475 r = i2c_add_driver(&wis_saa7115_driver);
476 if (r < 0)
477 return r;
478 return wis_i2c_add_driver(wis_saa7115_driver.id, wis_saa7115_detect);
479} 458}
480 459
481static void __exit wis_saa7115_cleanup(void) 460static void __exit wis_saa7115_cleanup(void)
482{ 461{
483 wis_i2c_del_driver(wis_saa7115_detect);
484 i2c_del_driver(&wis_saa7115_driver); 462 i2c_del_driver(&wis_saa7115_driver);
485} 463}
486 464
diff --git a/drivers/staging/go7007/wis-sony-tuner.c b/drivers/staging/go7007/wis-sony-tuner.c
index 58fddb122372..c965c601ac90 100644
--- a/drivers/staging/go7007/wis-sony-tuner.c
+++ b/drivers/staging/go7007/wis-sony-tuner.c
@@ -386,6 +386,7 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
386 struct wis_sony_tuner *t = i2c_get_clientdata(client); 386 struct wis_sony_tuner *t = i2c_get_clientdata(client);
387 387
388 switch (cmd) { 388 switch (cmd) {
389#if 0
389#ifdef TUNER_SET_TYPE_ADDR 390#ifdef TUNER_SET_TYPE_ADDR
390 case TUNER_SET_TYPE_ADDR: 391 case TUNER_SET_TYPE_ADDR:
391 { 392 {
@@ -463,6 +464,7 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
463 t->type, sony_tuners[t->type - 200].name); 464 t->type, sony_tuners[t->type - 200].name);
464 break; 465 break;
465 } 466 }
467#endif
466 case VIDIOC_G_FREQUENCY: 468 case VIDIOC_G_FREQUENCY:
467 { 469 {
468 struct v4l2_frequency *f = arg; 470 struct v4l2_frequency *f = arg;
@@ -651,35 +653,19 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
651 return 0; 653 return 0;
652} 654}
653 655
654static struct i2c_driver wis_sony_tuner_driver; 656static int wis_sony_tuner_probe(struct i2c_client *client,
655 657 const struct i2c_device_id *id)
656static struct i2c_client wis_sony_tuner_client_templ = {
657 .name = "Sony TV Tuner (WIS)",
658 .driver = &wis_sony_tuner_driver,
659};
660
661static int wis_sony_tuner_detect(struct i2c_adapter *adapter,
662 int addr, int kind)
663{ 658{
664 struct i2c_client *client; 659 struct i2c_adapter *adapter = client->adapter;
665 struct wis_sony_tuner *t; 660 struct wis_sony_tuner *t;
666 661
667 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_I2C_BLOCK)) 662 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_I2C_BLOCK))
668 return 0; 663 return -ENODEV;
669
670 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
671 if (client == NULL)
672 return -ENOMEM;
673 memcpy(client, &wis_sony_tuner_client_templ,
674 sizeof(wis_sony_tuner_client_templ));
675 client->adapter = adapter;
676 client->addr = addr;
677 664
678 t = kmalloc(sizeof(struct wis_sony_tuner), GFP_KERNEL); 665 t = kmalloc(sizeof(struct wis_sony_tuner), GFP_KERNEL);
679 if (t == NULL) { 666 if (t == NULL)
680 kfree(client);
681 return -ENOMEM; 667 return -ENOMEM;
682 } 668
683 t->type = -1; 669 t->type = -1;
684 t->freq = 0; 670 t->freq = 0;
685 t->mpxmode = 0; 671 t->mpxmode = 0;
@@ -688,50 +674,42 @@ static int wis_sony_tuner_detect(struct i2c_adapter *adapter,
688 674
689 printk(KERN_DEBUG 675 printk(KERN_DEBUG
690 "wis-sony-tuner: initializing tuner at address %d on %s\n", 676 "wis-sony-tuner: initializing tuner at address %d on %s\n",
691 addr, adapter->name); 677 client->addr, adapter->name);
692
693 i2c_attach_client(client);
694 678
695 return 0; 679 return 0;
696} 680}
697 681
698static int wis_sony_tuner_detach(struct i2c_client *client) 682static int wis_sony_tuner_remove(struct i2c_client *client)
699{ 683{
700 struct wis_sony_tuner *t = i2c_get_clientdata(client); 684 struct wis_sony_tuner *t = i2c_get_clientdata(client);
701 int r;
702
703 r = i2c_detach_client(client);
704 if (r < 0)
705 return r;
706 685
686 i2c_set_clientdata(client, NULL);
707 kfree(t); 687 kfree(t);
708 kfree(client);
709 return 0; 688 return 0;
710} 689}
711 690
691static struct i2c_device_id wis_sony_tuner_id[] = {
692 { "wis_sony_tuner", 0 },
693 { }
694};
695
712static struct i2c_driver wis_sony_tuner_driver = { 696static struct i2c_driver wis_sony_tuner_driver = {
713 .driver = { 697 .driver = {
714 .name = "WIS Sony TV Tuner I2C driver", 698 .name = "WIS Sony TV Tuner I2C driver",
715 }, 699 },
716 .id = I2C_DRIVERID_WIS_SONY_TUNER, 700 .probe = wis_sony_tuner_probe,
717 .detach_client = wis_sony_tuner_detach, 701 .remove = wis_sony_tuner_remove,
718 .command = tuner_command, 702 .command = tuner_command,
703 .id_table = wis_sony_tuner_id,
719}; 704};
720 705
721static int __init wis_sony_tuner_init(void) 706static int __init wis_sony_tuner_init(void)
722{ 707{
723 int r; 708 return i2c_add_driver(&wis_sony_tuner_driver);
724
725 r = i2c_add_driver(&wis_sony_tuner_driver);
726 if (r < 0)
727 return r;
728 return wis_i2c_add_driver(wis_sony_tuner_driver.id,
729 wis_sony_tuner_detect);
730} 709}
731 710
732static void __exit wis_sony_tuner_cleanup(void) 711static void __exit wis_sony_tuner_cleanup(void)
733{ 712{
734 wis_i2c_del_driver(wis_sony_tuner_detect);
735 i2c_del_driver(&wis_sony_tuner_driver); 713 i2c_del_driver(&wis_sony_tuner_driver);
736} 714}
737 715
diff --git a/drivers/staging/go7007/wis-tw2804.c b/drivers/staging/go7007/wis-tw2804.c
index 57b8f2b1caa3..e15794a2a0ae 100644
--- a/drivers/staging/go7007/wis-tw2804.c
+++ b/drivers/staging/go7007/wis-tw2804.c
@@ -291,34 +291,19 @@ static int wis_tw2804_command(struct i2c_client *client,
291 return 0; 291 return 0;
292} 292}
293 293
294static struct i2c_driver wis_tw2804_driver; 294static int wis_tw2804_probe(struct i2c_client *client,
295 295 const struct i2c_device_id *id)
296static struct i2c_client wis_tw2804_client_templ = {
297 .name = "TW2804 (WIS)",
298 .driver = &wis_tw2804_driver,
299};
300
301static int wis_tw2804_detect(struct i2c_adapter *adapter, int addr, int kind)
302{ 296{
303 struct i2c_client *client; 297 struct i2c_adapter *adapter = client->adapter;
304 struct wis_tw2804 *dec; 298 struct wis_tw2804 *dec;
305 299
306 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) 300 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
307 return 0; 301 return -ENODEV;
308
309 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
310 if (client == NULL)
311 return -ENOMEM;
312 memcpy(client, &wis_tw2804_client_templ,
313 sizeof(wis_tw2804_client_templ));
314 client->adapter = adapter;
315 client->addr = addr;
316 302
317 dec = kmalloc(sizeof(struct wis_tw2804), GFP_KERNEL); 303 dec = kmalloc(sizeof(struct wis_tw2804), GFP_KERNEL);
318 if (dec == NULL) { 304 if (dec == NULL)
319 kfree(client);
320 return -ENOMEM; 305 return -ENOMEM;
321 } 306
322 dec->channel = -1; 307 dec->channel = -1;
323 dec->norm = V4L2_STD_NTSC; 308 dec->norm = V4L2_STD_NTSC;
324 dec->brightness = 128; 309 dec->brightness = 128;
@@ -328,48 +313,42 @@ static int wis_tw2804_detect(struct i2c_adapter *adapter, int addr, int kind)
328 i2c_set_clientdata(client, dec); 313 i2c_set_clientdata(client, dec);
329 314
330 printk(KERN_DEBUG "wis-tw2804: creating TW2804 at address %d on %s\n", 315 printk(KERN_DEBUG "wis-tw2804: creating TW2804 at address %d on %s\n",
331 addr, adapter->name); 316 client->addr, adapter->name);
332 317
333 i2c_attach_client(client);
334 return 0; 318 return 0;
335} 319}
336 320
337static int wis_tw2804_detach(struct i2c_client *client) 321static int wis_tw2804_remove(struct i2c_client *client)
338{ 322{
339 struct wis_tw2804 *dec = i2c_get_clientdata(client); 323 struct wis_tw2804 *dec = i2c_get_clientdata(client);
340 int r;
341
342 r = i2c_detach_client(client);
343 if (r < 0)
344 return r;
345 324
346 kfree(client); 325 i2c_set_clientdata(client, NULL);
347 kfree(dec); 326 kfree(dec);
348 return 0; 327 return 0;
349} 328}
350 329
330static struct i2c_device_id wis_tw2804_id[] = {
331 { "wis_tw2804", 0 },
332 { }
333};
334
351static struct i2c_driver wis_tw2804_driver = { 335static struct i2c_driver wis_tw2804_driver = {
352 .driver = { 336 .driver = {
353 .name = "WIS TW2804 I2C driver", 337 .name = "WIS TW2804 I2C driver",
354 }, 338 },
355 .id = I2C_DRIVERID_WIS_TW2804, 339 .probe = wis_tw2804_probe,
356 .detach_client = wis_tw2804_detach, 340 .remove = wis_tw2804_remove,
357 .command = wis_tw2804_command, 341 .command = wis_tw2804_command,
342 .id_table = wis_tw2804_id,
358}; 343};
359 344
360static int __init wis_tw2804_init(void) 345static int __init wis_tw2804_init(void)
361{ 346{
362 int r; 347 return i2c_add_driver(&wis_tw2804_driver);
363
364 r = i2c_add_driver(&wis_tw2804_driver);
365 if (r < 0)
366 return r;
367 return wis_i2c_add_driver(wis_tw2804_driver.id, wis_tw2804_detect);
368} 348}
369 349
370static void __exit wis_tw2804_cleanup(void) 350static void __exit wis_tw2804_cleanup(void)
371{ 351{
372 wis_i2c_del_driver(wis_tw2804_detect);
373 i2c_del_driver(&wis_tw2804_driver); 352 i2c_del_driver(&wis_tw2804_driver);
374} 353}
375 354
diff --git a/drivers/staging/go7007/wis-tw9903.c b/drivers/staging/go7007/wis-tw9903.c
index 40627b282cb4..6c3427bb6f4c 100644
--- a/drivers/staging/go7007/wis-tw9903.c
+++ b/drivers/staging/go7007/wis-tw9903.c
@@ -267,34 +267,19 @@ static int wis_tw9903_command(struct i2c_client *client,
267 return 0; 267 return 0;
268} 268}
269 269
270static struct i2c_driver wis_tw9903_driver; 270static int wis_tw9903_probe(struct i2c_client *client,
271 271 const struct i2c_device_id *id)
272static struct i2c_client wis_tw9903_client_templ = {
273 .name = "TW9903 (WIS)",
274 .driver = &wis_tw9903_driver,
275};
276
277static int wis_tw9903_detect(struct i2c_adapter *adapter, int addr, int kind)
278{ 272{
279 struct i2c_client *client; 273 struct i2c_adapter *adapter = client->adapter;
280 struct wis_tw9903 *dec; 274 struct wis_tw9903 *dec;
281 275
282 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) 276 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
283 return 0; 277 return -ENODEV;
284
285 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
286 if (client == NULL)
287 return -ENOMEM;
288 memcpy(client, &wis_tw9903_client_templ,
289 sizeof(wis_tw9903_client_templ));
290 client->adapter = adapter;
291 client->addr = addr;
292 278
293 dec = kmalloc(sizeof(struct wis_tw9903), GFP_KERNEL); 279 dec = kmalloc(sizeof(struct wis_tw9903), GFP_KERNEL);
294 if (dec == NULL) { 280 if (dec == NULL)
295 kfree(client);
296 return -ENOMEM; 281 return -ENOMEM;
297 } 282
298 dec->norm = V4L2_STD_NTSC; 283 dec->norm = V4L2_STD_NTSC;
299 dec->brightness = 0; 284 dec->brightness = 0;
300 dec->contrast = 0x60; 285 dec->contrast = 0x60;
@@ -303,55 +288,48 @@ static int wis_tw9903_detect(struct i2c_adapter *adapter, int addr, int kind)
303 288
304 printk(KERN_DEBUG 289 printk(KERN_DEBUG
305 "wis-tw9903: initializing TW9903 at address %d on %s\n", 290 "wis-tw9903: initializing TW9903 at address %d on %s\n",
306 addr, adapter->name); 291 client->addr, adapter->name);
307 292
308 if (write_regs(client, initial_registers) < 0) { 293 if (write_regs(client, initial_registers) < 0) {
309 printk(KERN_ERR "wis-tw9903: error initializing TW9903\n"); 294 printk(KERN_ERR "wis-tw9903: error initializing TW9903\n");
310 kfree(client);
311 kfree(dec); 295 kfree(dec);
312 return 0; 296 return -ENODEV;
313 } 297 }
314 298
315 i2c_attach_client(client);
316 return 0; 299 return 0;
317} 300}
318 301
319static int wis_tw9903_detach(struct i2c_client *client) 302static int wis_tw9903_remove(struct i2c_client *client)
320{ 303{
321 struct wis_tw9903 *dec = i2c_get_clientdata(client); 304 struct wis_tw9903 *dec = i2c_get_clientdata(client);
322 int r;
323
324 r = i2c_detach_client(client);
325 if (r < 0)
326 return r;
327 305
328 kfree(client); 306 i2c_set_clientdata(client, NULL);
329 kfree(dec); 307 kfree(dec);
330 return 0; 308 return 0;
331} 309}
332 310
311static struct i2c_device_id wis_tw9903_id[] = {
312 { "wis_tw9903", 0 },
313 { }
314};
315
333static struct i2c_driver wis_tw9903_driver = { 316static struct i2c_driver wis_tw9903_driver = {
334 .driver = { 317 .driver = {
335 .name = "WIS TW9903 I2C driver", 318 .name = "WIS TW9903 I2C driver",
336 }, 319 },
337 .id = I2C_DRIVERID_WIS_TW9903, 320 .probe = wis_tw9903_probe,
338 .detach_client = wis_tw9903_detach, 321 .remove = wis_tw9903_remove,
339 .command = wis_tw9903_command, 322 .command = wis_tw9903_command,
323 .id_table = wis_tw9903_id,
340}; 324};
341 325
342static int __init wis_tw9903_init(void) 326static int __init wis_tw9903_init(void)
343{ 327{
344 int r; 328 return i2c_add_driver(&wis_tw9903_driver);
345
346 r = i2c_add_driver(&wis_tw9903_driver);
347 if (r < 0)
348 return r;
349 return wis_i2c_add_driver(wis_tw9903_driver.id, wis_tw9903_detect);
350} 329}
351 330
352static void __exit wis_tw9903_cleanup(void) 331static void __exit wis_tw9903_cleanup(void)
353{ 332{
354 wis_i2c_del_driver(wis_tw9903_detect);
355 i2c_del_driver(&wis_tw9903_driver); 333 i2c_del_driver(&wis_tw9903_driver);
356} 334}
357 335
diff --git a/drivers/staging/go7007/wis-uda1342.c b/drivers/staging/go7007/wis-uda1342.c
index 555645c0cc1a..739c7ae8913f 100644
--- a/drivers/staging/go7007/wis-uda1342.c
+++ b/drivers/staging/go7007/wis-uda1342.c
@@ -59,73 +59,51 @@ static int wis_uda1342_command(struct i2c_client *client,
59 return 0; 59 return 0;
60} 60}
61 61
62static struct i2c_driver wis_uda1342_driver; 62static int wis_uda1342_probe(struct i2c_client *client,
63 63 const struct i2c_device_id *id)
64static struct i2c_client wis_uda1342_client_templ = {
65 .name = "UDA1342 (WIS)",
66 .driver = &wis_uda1342_driver,
67};
68
69static int wis_uda1342_detect(struct i2c_adapter *adapter, int addr, int kind)
70{ 64{
71 struct i2c_client *client; 65 struct i2c_adapter *adapter = client->adapter;
72 66
73 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WORD_DATA)) 67 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WORD_DATA))
74 return 0; 68 return -ENODEV;
75
76 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
77 if (client == NULL)
78 return -ENOMEM;
79 memcpy(client, &wis_uda1342_client_templ,
80 sizeof(wis_uda1342_client_templ));
81 client->adapter = adapter;
82 client->addr = addr;
83 69
84 printk(KERN_DEBUG 70 printk(KERN_DEBUG
85 "wis-uda1342: initializing UDA1342 at address %d on %s\n", 71 "wis-uda1342: initializing UDA1342 at address %d on %s\n",
86 addr, adapter->name); 72 client->addr, adapter->name);
87 73
88 write_reg(client, 0x00, 0x8000); /* reset registers */ 74 write_reg(client, 0x00, 0x8000); /* reset registers */
89 write_reg(client, 0x00, 0x1241); /* select input 1 */ 75 write_reg(client, 0x00, 0x1241); /* select input 1 */
90 76
91 i2c_attach_client(client);
92 return 0; 77 return 0;
93} 78}
94 79
95static int wis_uda1342_detach(struct i2c_client *client) 80static int wis_uda1342_remove(struct i2c_client *client)
96{ 81{
97 int r;
98
99 r = i2c_detach_client(client);
100 if (r < 0)
101 return r;
102
103 kfree(client);
104 return 0; 82 return 0;
105} 83}
106 84
85static struct i2c_device_id wis_uda1342_id[] = {
86 { "wis_uda1342", 0 },
87 { }
88};
89
107static struct i2c_driver wis_uda1342_driver = { 90static struct i2c_driver wis_uda1342_driver = {
108 .driver = { 91 .driver = {
109 .name = "WIS UDA1342 I2C driver", 92 .name = "WIS UDA1342 I2C driver",
110 }, 93 },
111 .id = I2C_DRIVERID_WIS_UDA1342, 94 .probe = wis_uda1342_probe,
112 .detach_client = wis_uda1342_detach, 95 .remove = wis_uda1342_remove,
113 .command = wis_uda1342_command, 96 .command = wis_uda1342_command,
97 .id_table = wis_uda1342_id,
114}; 98};
115 99
116static int __init wis_uda1342_init(void) 100static int __init wis_uda1342_init(void)
117{ 101{
118 int r; 102 return i2c_add_driver(&wis_uda1342_driver);
119
120 r = i2c_add_driver(&wis_uda1342_driver);
121 if (r < 0)
122 return r;
123 return wis_i2c_add_driver(wis_uda1342_driver.id, wis_uda1342_detect);
124} 103}
125 104
126static void __exit wis_uda1342_cleanup(void) 105static void __exit wis_uda1342_cleanup(void)
127{ 106{
128 wis_i2c_del_driver(wis_uda1342_detect);
129 i2c_del_driver(&wis_uda1342_driver); 107 i2c_del_driver(&wis_uda1342_driver);
130} 108}
131 109
diff --git a/drivers/staging/line6/audio.c b/drivers/staging/line6/audio.c
index 3aa946899ced..e2ac8d60f8c2 100644
--- a/drivers/staging/line6/audio.c
+++ b/drivers/staging/line6/audio.c
@@ -27,11 +27,12 @@ int line6_init_audio(struct usb_line6 *line6)
27{ 27{
28 static int dev; 28 static int dev;
29 struct snd_card *card; 29 struct snd_card *card;
30 int err;
30 31
31 card = snd_card_new(line6_index[dev], line6_id[dev], THIS_MODULE, 0); 32 err = snd_card_create(line6_index[dev], line6_id[dev], THIS_MODULE, 0,
32 33 &card);
33 if (card == NULL) 34 if (err < 0)
34 return -ENOMEM; 35 return err;
35 36
36 line6->card = card; 37 line6->card = card;
37 38
diff --git a/drivers/staging/otus/usbdrv.c b/drivers/staging/otus/usbdrv.c
index 565a839589f5..540cbbb826f9 100644
--- a/drivers/staging/otus/usbdrv.c
+++ b/drivers/staging/otus/usbdrv.c
@@ -822,6 +822,21 @@ int zfLnxVapXmitFrame(struct sk_buff *skb, struct net_device *dev)
822 return 0; 822 return 0;
823} 823}
824 824
825static const struct net_device_ops vap_netdev_ops = {
826 .ndo_open = zfLnxVapOpen,
827 .ndo_stop = zfLnxVapClose,
828 .ndo_start_xmit = zfLnxVapXmitFrame,
829 .ndo_get_stats = usbdrv_get_stats,
830 .ndo_change_mtu = usbdrv_change_mtu,
831 .ndo_validate_addr = eth_validate_addr,
832 .ndo_set_mac_address = eth_mac_addr,
833#ifdef ZM_HOSTAPD_SUPPORT
834 .ndo_do_ioctl = usbdrv_ioctl,
835#else
836 .ndo_do_ioctl = NULL,
837#endif
838};
839
825int zfLnxRegisterVapDev(struct net_device* parentDev, u16_t vapId) 840int zfLnxRegisterVapDev(struct net_device* parentDev, u16_t vapId)
826{ 841{
827 /* Allocate net device structure */ 842 /* Allocate net device structure */
@@ -846,16 +861,7 @@ int zfLnxRegisterVapDev(struct net_device* parentDev, u16_t vapId)
846 vap[vapId].dev->ml_priv = parentDev->ml_priv; 861 vap[vapId].dev->ml_priv = parentDev->ml_priv;
847 862
848 //dev->hard_start_xmit = &zd1212_wds_xmit_frame; 863 //dev->hard_start_xmit = &zd1212_wds_xmit_frame;
849 vap[vapId].dev->hard_start_xmit = &zfLnxVapXmitFrame; 864 vap[vapId].dev->netdev_ops = &vap_netdev_ops;
850 vap[vapId].dev->open = &zfLnxVapOpen;
851 vap[vapId].dev->stop = &zfLnxVapClose;
852 vap[vapId].dev->get_stats = &usbdrv_get_stats;
853 vap[vapId].dev->change_mtu = &usbdrv_change_mtu;
854#ifdef ZM_HOSTAPD_SUPPORT
855 vap[vapId].dev->do_ioctl = usbdrv_ioctl;
856#else
857 vap[vapId].dev->do_ioctl = NULL;
858#endif
859 vap[vapId].dev->destructor = free_netdev; 865 vap[vapId].dev->destructor = free_netdev;
860 866
861 vap[vapId].dev->tx_queue_len = 0; 867 vap[vapId].dev->tx_queue_len = 0;
@@ -1068,6 +1074,18 @@ void zfLnxUnlinkAllUrbs(struct usbdrv_private *macp)
1068 usb_unlink_urb(macp->RegInUrb); 1074 usb_unlink_urb(macp->RegInUrb);
1069} 1075}
1070 1076
1077static const struct net_device_ops otus_netdev_ops = {
1078 .ndo_open = usbdrv_open,
1079 .ndo_stop = usbdrv_close,
1080 .ndo_start_xmit = usbdrv_xmit_frame,
1081 .ndo_change_mtu = usbdrv_change_mtu,
1082 .ndo_get_stats = usbdrv_get_stats,
1083 .ndo_set_multicast_list = usbdrv_set_multi,
1084 .ndo_set_mac_address = usbdrv_set_mac,
1085 .ndo_do_ioctl = usbdrv_ioctl,
1086 .ndo_validate_addr = eth_validate_addr,
1087};
1088
1071u8_t zfLnxInitSetup(struct net_device *dev, struct usbdrv_private *macp) 1089u8_t zfLnxInitSetup(struct net_device *dev, struct usbdrv_private *macp)
1072{ 1090{
1073 //unsigned char addr[6]; 1091 //unsigned char addr[6];
@@ -1092,14 +1110,7 @@ u8_t zfLnxInitSetup(struct net_device *dev, struct usbdrv_private *macp)
1092 dev->wireless_handlers = (struct iw_handler_def *)&p80211wext_handler_def; 1110 dev->wireless_handlers = (struct iw_handler_def *)&p80211wext_handler_def;
1093#endif 1111#endif
1094 1112
1095 dev->open = usbdrv_open; 1113 dev->netdev_ops = &otus_netdev_ops;
1096 dev->hard_start_xmit = usbdrv_xmit_frame;
1097 dev->stop = usbdrv_close;
1098 dev->change_mtu = &usbdrv_change_mtu;
1099 dev->get_stats = usbdrv_get_stats;
1100 dev->set_multicast_list = usbdrv_set_multi;
1101 dev->set_mac_address = usbdrv_set_mac;
1102 dev->do_ioctl = usbdrv_ioctl;
1103 1114
1104 dev->flags |= IFF_MULTICAST; 1115 dev->flags |= IFF_MULTICAST;
1105 1116
diff --git a/drivers/staging/otus/zdusb.c b/drivers/staging/otus/zdusb.c
index 78f1d2224fa1..2a6d937ba5e8 100644
--- a/drivers/staging/otus/zdusb.c
+++ b/drivers/staging/otus/zdusb.c
@@ -48,7 +48,8 @@ static const char driver_name[] = "Otus";
48static struct usb_device_id zd1221_ids [] = { 48static struct usb_device_id zd1221_ids [] = {
49 { USB_DEVICE(VENDOR_ATHR, PRODUCT_AR9170) }, 49 { USB_DEVICE(VENDOR_ATHR, PRODUCT_AR9170) },
50 { USB_DEVICE(VENDOR_DLINK, PRODUCT_DWA160A) }, 50 { USB_DEVICE(VENDOR_DLINK, PRODUCT_DWA160A) },
51 { USB_DEVICE(0x0846, 0x9010) }, 51 { USB_DEVICE(VENDOR_NETGEAR, PRODUCT_WNDA3100) },
52 { USB_DEVICE(VENDOR_NETGEAR, PRODUCT_WN111v2) },
52 { } /* Terminating entry */ 53 { } /* Terminating entry */
53}; 54};
54 55
diff --git a/drivers/staging/otus/zdusb.h b/drivers/staging/otus/zdusb.h
index 656dc212ade5..9f8ab2e96169 100644
--- a/drivers/staging/otus/zdusb.h
+++ b/drivers/staging/otus/zdusb.h
@@ -40,4 +40,8 @@
40#define VENDOR_DLINK 0x07D1 //Dlink 40#define VENDOR_DLINK 0x07D1 //Dlink
41#define PRODUCT_DWA160A 0x3C10 41#define PRODUCT_DWA160A 0x3C10
42 42
43#define VENDOR_NETGEAR 0x0846 /* NetGear */
44#define PRODUCT_WNDA3100 0x9010
45#define PRODUCT_WN111v2 0x9001
46
43#endif 47#endif
diff --git a/drivers/staging/pohmelfs/config.c b/drivers/staging/pohmelfs/config.c
index 3e67da9ea381..a6eaa42fb669 100644
--- a/drivers/staging/pohmelfs/config.c
+++ b/drivers/staging/pohmelfs/config.c
@@ -81,6 +81,45 @@ static struct pohmelfs_config_group *pohmelfs_find_create_config_group(unsigned
81 return g; 81 return g;
82} 82}
83 83
84static inline void pohmelfs_insert_config_entry(struct pohmelfs_sb *psb, struct pohmelfs_config *dst)
85{
86 struct pohmelfs_config *tmp;
87
88 INIT_LIST_HEAD(&dst->config_entry);
89
90 list_for_each_entry(tmp, &psb->state_list, config_entry) {
91 if (dst->state.ctl.prio > tmp->state.ctl.prio)
92 list_add_tail(&dst->config_entry, &tmp->config_entry);
93 }
94 if (list_empty(&dst->config_entry))
95 list_add_tail(&dst->config_entry, &psb->state_list);
96}
97
98static int pohmelfs_move_config_entry(struct pohmelfs_sb *psb,
99 struct pohmelfs_config *dst, struct pohmelfs_config *new)
100{
101 if ((dst->state.ctl.prio == new->state.ctl.prio) &&
102 (dst->state.ctl.perm == new->state.ctl.perm))
103 return 0;
104
105 dprintk("%s: dst: prio: %d, perm: %x, new: prio: %d, perm: %d.\n",
106 __func__, dst->state.ctl.prio, dst->state.ctl.perm,
107 new->state.ctl.prio, new->state.ctl.perm);
108 dst->state.ctl.prio = new->state.ctl.prio;
109 dst->state.ctl.perm = new->state.ctl.perm;
110
111 list_del_init(&dst->config_entry);
112 pohmelfs_insert_config_entry(psb, dst);
113 return 0;
114}
115
116/*
117 * pohmelfs_copy_config() is used to copy new state configs from the
118 * config group (controlled by the netlink messages) into the superblock.
119 * This happens either at startup time where no transactions can access
120 * the list of the configs (and thus list of the network states), or at
121 * run-time, where it is protected by the psb->state_lock.
122 */
84int pohmelfs_copy_config(struct pohmelfs_sb *psb) 123int pohmelfs_copy_config(struct pohmelfs_sb *psb)
85{ 124{
86 struct pohmelfs_config_group *g; 125 struct pohmelfs_config_group *g;
@@ -103,7 +142,9 @@ int pohmelfs_copy_config(struct pohmelfs_sb *psb)
103 err = 0; 142 err = 0;
104 list_for_each_entry(dst, &psb->state_list, config_entry) { 143 list_for_each_entry(dst, &psb->state_list, config_entry) {
105 if (pohmelfs_config_eql(&dst->state.ctl, &c->state.ctl)) { 144 if (pohmelfs_config_eql(&dst->state.ctl, &c->state.ctl)) {
106 err = -EEXIST; 145 err = pohmelfs_move_config_entry(psb, dst, c);
146 if (!err)
147 err = -EEXIST;
107 break; 148 break;
108 } 149 }
109 } 150 }
@@ -119,7 +160,7 @@ int pohmelfs_copy_config(struct pohmelfs_sb *psb)
119 160
120 memcpy(&dst->state.ctl, &c->state.ctl, sizeof(struct pohmelfs_ctl)); 161 memcpy(&dst->state.ctl, &c->state.ctl, sizeof(struct pohmelfs_ctl));
121 162
122 list_add_tail(&dst->config_entry, &psb->state_list); 163 pohmelfs_insert_config_entry(psb, dst);
123 164
124 err = pohmelfs_state_init_one(psb, dst); 165 err = pohmelfs_state_init_one(psb, dst);
125 if (err) { 166 if (err) {
@@ -248,6 +289,13 @@ out_unlock:
248 return err; 289 return err;
249} 290}
250 291
292static int pohmelfs_modify_config(struct pohmelfs_ctl *old, struct pohmelfs_ctl *new)
293{
294 old->perm = new->perm;
295 old->prio = new->prio;
296 return 0;
297}
298
251static int pohmelfs_cn_ctl(struct cn_msg *msg, int action) 299static int pohmelfs_cn_ctl(struct cn_msg *msg, int action)
252{ 300{
253 struct pohmelfs_config_group *g; 301 struct pohmelfs_config_group *g;
@@ -278,6 +326,9 @@ static int pohmelfs_cn_ctl(struct cn_msg *msg, int action)
278 g->num_entry--; 326 g->num_entry--;
279 kfree(c); 327 kfree(c);
280 goto out_unlock; 328 goto out_unlock;
329 } else if (action == POHMELFS_FLAGS_MODIFY) {
330 err = pohmelfs_modify_config(sc, ctl);
331 goto out_unlock;
281 } else { 332 } else {
282 err = -EEXIST; 333 err = -EEXIST;
283 goto out_unlock; 334 goto out_unlock;
@@ -296,6 +347,7 @@ static int pohmelfs_cn_ctl(struct cn_msg *msg, int action)
296 } 347 }
297 memcpy(&c->state.ctl, ctl, sizeof(struct pohmelfs_ctl)); 348 memcpy(&c->state.ctl, ctl, sizeof(struct pohmelfs_ctl));
298 g->num_entry++; 349 g->num_entry++;
350
299 list_add_tail(&c->config_entry, &g->config_list); 351 list_add_tail(&c->config_entry, &g->config_list);
300 352
301out_unlock: 353out_unlock:
@@ -401,10 +453,9 @@ static void pohmelfs_cn_callback(void *data)
401 453
402 switch (msg->flags) { 454 switch (msg->flags) {
403 case POHMELFS_FLAGS_ADD: 455 case POHMELFS_FLAGS_ADD:
404 err = pohmelfs_cn_ctl(msg, POHMELFS_FLAGS_ADD);
405 break;
406 case POHMELFS_FLAGS_DEL: 456 case POHMELFS_FLAGS_DEL:
407 err = pohmelfs_cn_ctl(msg, POHMELFS_FLAGS_DEL); 457 case POHMELFS_FLAGS_MODIFY:
458 err = pohmelfs_cn_ctl(msg, msg->flags);
408 break; 459 break;
409 case POHMELFS_FLAGS_SHOW: 460 case POHMELFS_FLAGS_SHOW:
410 err = pohmelfs_cn_disp(msg); 461 err = pohmelfs_cn_disp(msg);
diff --git a/drivers/staging/pohmelfs/dir.c b/drivers/staging/pohmelfs/dir.c
index 7a41183a32e1..b5799842fb84 100644
--- a/drivers/staging/pohmelfs/dir.c
+++ b/drivers/staging/pohmelfs/dir.c
@@ -328,7 +328,7 @@ static int pohmelfs_sync_remote_dir(struct pohmelfs_inode *pi)
328{ 328{
329 struct inode *inode = &pi->vfs_inode; 329 struct inode *inode = &pi->vfs_inode;
330 struct pohmelfs_sb *psb = POHMELFS_SB(inode->i_sb); 330 struct pohmelfs_sb *psb = POHMELFS_SB(inode->i_sb);
331 long ret = msecs_to_jiffies(25000); 331 long ret = psb->wait_on_page_timeout;
332 int err; 332 int err;
333 333
334 dprintk("%s: dir: %llu, state: %lx: remote_synced: %d.\n", 334 dprintk("%s: dir: %llu, state: %lx: remote_synced: %d.\n",
@@ -389,11 +389,11 @@ static int pohmelfs_readdir(struct file *file, void *dirent, filldir_t filldir)
389 dprintk("%s: parent: %llu, fpos: %llu, hash: %08lx.\n", 389 dprintk("%s: parent: %llu, fpos: %llu, hash: %08lx.\n",
390 __func__, pi->ino, (u64)file->f_pos, 390 __func__, pi->ino, (u64)file->f_pos,
391 (unsigned long)file->private_data); 391 (unsigned long)file->private_data);
392 392#if 0
393 err = pohmelfs_data_lock(pi, 0, ~0, POHMELFS_READ_LOCK); 393 err = pohmelfs_data_lock(pi, 0, ~0, POHMELFS_READ_LOCK);
394 if (err) 394 if (err)
395 return err; 395 return err;
396 396#endif
397 err = pohmelfs_sync_remote_dir(pi); 397 err = pohmelfs_sync_remote_dir(pi);
398 if (err) 398 if (err)
399 return err; 399 return err;
@@ -513,10 +513,6 @@ struct dentry *pohmelfs_lookup(struct inode *dir, struct dentry *dentry, struct
513 513
514 need_lock = pohmelfs_need_lock(parent, lock_type); 514 need_lock = pohmelfs_need_lock(parent, lock_type);
515 515
516 err = pohmelfs_data_lock(parent, 0, ~0, lock_type);
517 if (err)
518 goto out;
519
520 str.hash = jhash(dentry->d_name.name, dentry->d_name.len, 0); 516 str.hash = jhash(dentry->d_name.name, dentry->d_name.len, 0);
521 517
522 mutex_lock(&parent->offset_lock); 518 mutex_lock(&parent->offset_lock);
@@ -525,8 +521,8 @@ struct dentry *pohmelfs_lookup(struct inode *dir, struct dentry *dentry, struct
525 ino = n->ino; 521 ino = n->ino;
526 mutex_unlock(&parent->offset_lock); 522 mutex_unlock(&parent->offset_lock);
527 523
528 dprintk("%s: 1 ino: %lu, inode: %p, name: '%s', hash: %x, parent_state: %lx.\n", 524 dprintk("%s: start ino: %lu, inode: %p, name: '%s', hash: %x, parent_state: %lx, need_lock: %d.\n",
529 __func__, ino, inode, str.name, str.hash, parent->state); 525 __func__, ino, inode, str.name, str.hash, parent->state, need_lock);
530 526
531 if (ino) { 527 if (ino) {
532 inode = ilookup(dir->i_sb, ino); 528 inode = ilookup(dir->i_sb, ino);
@@ -534,7 +530,7 @@ struct dentry *pohmelfs_lookup(struct inode *dir, struct dentry *dentry, struct
534 goto out; 530 goto out;
535 } 531 }
536 532
537 dprintk("%s: dir: %p, dir_ino: %llu, name: '%s', len: %u, dir_state: %lx, ino: %lu.\n", 533 dprintk("%s: no inode dir: %p, dir_ino: %llu, name: '%s', len: %u, dir_state: %lx, ino: %lu.\n",
538 __func__, dir, parent->ino, 534 __func__, dir, parent->ino,
539 str.name, str.len, parent->state, ino); 535 str.name, str.len, parent->state, ino);
540 536
@@ -543,6 +539,10 @@ struct dentry *pohmelfs_lookup(struct inode *dir, struct dentry *dentry, struct
543 goto out; 539 goto out;
544 } 540 }
545 541
542 err = pohmelfs_data_lock(parent, 0, ~0, lock_type);
543 if (err)
544 goto out;
545
546 err = pohmelfs_lookup_single(parent, &str, ino); 546 err = pohmelfs_lookup_single(parent, &str, ino);
547 if (err) 547 if (err)
548 goto out; 548 goto out;
@@ -557,10 +557,10 @@ struct dentry *pohmelfs_lookup(struct inode *dir, struct dentry *dentry, struct
557 557
558 if (ino) { 558 if (ino) {
559 inode = ilookup(dir->i_sb, ino); 559 inode = ilookup(dir->i_sb, ino);
560 printk("%s: second lookup ino: %lu, inode: %p, name: '%s', hash: %x.\n", 560 dprintk("%s: second lookup ino: %lu, inode: %p, name: '%s', hash: %x.\n",
561 __func__, ino, inode, str.name, str.hash); 561 __func__, ino, inode, str.name, str.hash);
562 if (!inode) { 562 if (!inode) {
563 printk("%s: No inode for ino: %lu, name: '%s', hash: %x.\n", 563 dprintk("%s: No inode for ino: %lu, name: '%s', hash: %x.\n",
564 __func__, ino, str.name, str.hash); 564 __func__, ino, str.name, str.hash);
565 //return NULL; 565 //return NULL;
566 return ERR_PTR(-EACCES); 566 return ERR_PTR(-EACCES);
diff --git a/drivers/staging/pohmelfs/inode.c b/drivers/staging/pohmelfs/inode.c
index 5bf16504cd6f..b2eaf9047266 100644
--- a/drivers/staging/pohmelfs/inode.c
+++ b/drivers/staging/pohmelfs/inode.c
@@ -1169,16 +1169,17 @@ err_out_put:
1169static int pohmelfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) 1169static int pohmelfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
1170{ 1170{
1171 struct inode *inode = dentry->d_inode; 1171 struct inode *inode = dentry->d_inode;
1172#if 0
1172 struct pohmelfs_inode *pi = POHMELFS_I(inode); 1173 struct pohmelfs_inode *pi = POHMELFS_I(inode);
1173 int err; 1174 int err;
1174 1175
1175 err = pohmelfs_data_lock(pi, 0, ~0, POHMELFS_READ_LOCK); 1176 err = pohmelfs_data_lock(pi, 0, ~0, POHMELFS_READ_LOCK);
1176 if (err) 1177 if (err)
1177 return err; 1178 return err;
1178
1179 dprintk("%s: ino: %llu, mode: %o, uid: %u, gid: %u, size: %llu.\n", 1179 dprintk("%s: ino: %llu, mode: %o, uid: %u, gid: %u, size: %llu.\n",
1180 __func__, pi->ino, inode->i_mode, inode->i_uid, 1180 __func__, pi->ino, inode->i_mode, inode->i_uid,
1181 inode->i_gid, inode->i_size); 1181 inode->i_gid, inode->i_size);
1182#endif
1182 1183
1183 generic_fillattr(inode, stat); 1184 generic_fillattr(inode, stat);
1184 return 0; 1185 return 0;
@@ -1342,14 +1343,6 @@ static void pohmelfs_put_super(struct super_block *sb)
1342 1343
1343 kfree(psb); 1344 kfree(psb);
1344 sb->s_fs_info = NULL; 1345 sb->s_fs_info = NULL;
1345
1346 pohmelfs_ftrans_exit();
1347}
1348
1349static int pohmelfs_remount(struct super_block *sb, int *flags, char *data)
1350{
1351 *flags |= MS_RDONLY;
1352 return 0;
1353} 1346}
1354 1347
1355static int pohmelfs_statfs(struct dentry *dentry, struct kstatfs *buf) 1348static int pohmelfs_statfs(struct dentry *dentry, struct kstatfs *buf)
@@ -1394,42 +1387,33 @@ static int pohmelfs_show_options(struct seq_file *seq, struct vfsmount *vfs)
1394 return 0; 1387 return 0;
1395} 1388}
1396 1389
1397static const struct super_operations pohmelfs_sb_ops = {
1398 .alloc_inode = pohmelfs_alloc_inode,
1399 .destroy_inode = pohmelfs_destroy_inode,
1400 .drop_inode = pohmelfs_drop_inode,
1401 .write_inode = pohmelfs_write_inode,
1402 .put_super = pohmelfs_put_super,
1403 .remount_fs = pohmelfs_remount,
1404 .statfs = pohmelfs_statfs,
1405 .show_options = pohmelfs_show_options,
1406};
1407
1408enum { 1390enum {
1409 pohmelfs_opt_idx, 1391 pohmelfs_opt_idx,
1392 pohmelfs_opt_crypto_thread_num,
1393 pohmelfs_opt_trans_max_pages,
1394 pohmelfs_opt_crypto_fail_unsupported,
1395
1396 /* Remountable options */
1410 pohmelfs_opt_trans_scan_timeout, 1397 pohmelfs_opt_trans_scan_timeout,
1411 pohmelfs_opt_drop_scan_timeout, 1398 pohmelfs_opt_drop_scan_timeout,
1412 pohmelfs_opt_wait_on_page_timeout, 1399 pohmelfs_opt_wait_on_page_timeout,
1413 pohmelfs_opt_trans_retries, 1400 pohmelfs_opt_trans_retries,
1414 pohmelfs_opt_crypto_thread_num,
1415 pohmelfs_opt_trans_max_pages,
1416 pohmelfs_opt_crypto_fail_unsupported,
1417 pohmelfs_opt_mcache_timeout, 1401 pohmelfs_opt_mcache_timeout,
1418}; 1402};
1419 1403
1420static struct match_token pohmelfs_tokens[] = { 1404static struct match_token pohmelfs_tokens[] = {
1421 {pohmelfs_opt_idx, "idx=%u"}, 1405 {pohmelfs_opt_idx, "idx=%u"},
1406 {pohmelfs_opt_crypto_thread_num, "crypto_thread_num=%u"},
1407 {pohmelfs_opt_trans_max_pages, "trans_max_pages=%u"},
1408 {pohmelfs_opt_crypto_fail_unsupported, "crypto_fail_unsupported"},
1422 {pohmelfs_opt_trans_scan_timeout, "trans_scan_timeout=%u"}, 1409 {pohmelfs_opt_trans_scan_timeout, "trans_scan_timeout=%u"},
1423 {pohmelfs_opt_drop_scan_timeout, "drop_scan_timeout=%u"}, 1410 {pohmelfs_opt_drop_scan_timeout, "drop_scan_timeout=%u"},
1424 {pohmelfs_opt_wait_on_page_timeout, "wait_on_page_timeout=%u"}, 1411 {pohmelfs_opt_wait_on_page_timeout, "wait_on_page_timeout=%u"},
1425 {pohmelfs_opt_trans_retries, "trans_retries=%u"}, 1412 {pohmelfs_opt_trans_retries, "trans_retries=%u"},
1426 {pohmelfs_opt_crypto_thread_num, "crypto_thread_num=%u"},
1427 {pohmelfs_opt_trans_max_pages, "trans_max_pages=%u"},
1428 {pohmelfs_opt_crypto_fail_unsupported, "crypto_fail_unsupported"},
1429 {pohmelfs_opt_mcache_timeout, "mcache_timeout=%u"}, 1413 {pohmelfs_opt_mcache_timeout, "mcache_timeout=%u"},
1430}; 1414};
1431 1415
1432static int pohmelfs_parse_options(char *options, struct pohmelfs_sb *psb) 1416static int pohmelfs_parse_options(char *options, struct pohmelfs_sb *psb, int remount)
1433{ 1417{
1434 char *p; 1418 char *p;
1435 substring_t args[MAX_OPT_ARGS]; 1419 substring_t args[MAX_OPT_ARGS];
@@ -1449,6 +1433,9 @@ static int pohmelfs_parse_options(char *options, struct pohmelfs_sb *psb)
1449 if (err) 1433 if (err)
1450 return err; 1434 return err;
1451 1435
1436 if (remount && token <= pohmelfs_opt_crypto_fail_unsupported)
1437 continue;
1438
1452 switch (token) { 1439 switch (token) {
1453 case pohmelfs_opt_idx: 1440 case pohmelfs_opt_idx:
1454 psb->idx = option; 1441 psb->idx = option;
@@ -1485,6 +1472,25 @@ static int pohmelfs_parse_options(char *options, struct pohmelfs_sb *psb)
1485 return 0; 1472 return 0;
1486} 1473}
1487 1474
1475static int pohmelfs_remount(struct super_block *sb, int *flags, char *data)
1476{
1477 int err;
1478 struct pohmelfs_sb *psb = POHMELFS_SB(sb);
1479 unsigned long old_sb_flags = sb->s_flags;
1480
1481 err = pohmelfs_parse_options(data, psb, 1);
1482 if (err)
1483 goto err_out_restore;
1484
1485 if (!(*flags & MS_RDONLY))
1486 sb->s_flags &= ~MS_RDONLY;
1487 return 0;
1488
1489err_out_restore:
1490 sb->s_flags = old_sb_flags;
1491 return err;
1492}
1493
1488static void pohmelfs_flush_inode(struct pohmelfs_inode *pi, unsigned int count) 1494static void pohmelfs_flush_inode(struct pohmelfs_inode *pi, unsigned int count)
1489{ 1495{
1490 struct inode *inode = &pi->vfs_inode; 1496 struct inode *inode = &pi->vfs_inode;
@@ -1753,6 +1759,57 @@ err_out_exit:
1753 return err; 1759 return err;
1754} 1760}
1755 1761
1762static int pohmelfs_show_stats(struct seq_file *m, struct vfsmount *mnt)
1763{
1764 struct netfs_state *st;
1765 struct pohmelfs_ctl *ctl;
1766 struct pohmelfs_sb *psb = POHMELFS_SB(mnt->mnt_sb);
1767 struct pohmelfs_config *c;
1768
1769 mutex_lock(&psb->state_lock);
1770
1771 seq_printf(m, "\nidx addr(:port) socket_type protocol active priority permissions\n");
1772
1773 list_for_each_entry(c, &psb->state_list, config_entry) {
1774 st = &c->state;
1775 ctl = &st->ctl;
1776
1777 seq_printf(m, "%u ", ctl->idx);
1778 if (ctl->addr.sa_family == AF_INET) {
1779 struct sockaddr_in *sin = (struct sockaddr_in *)&st->ctl.addr;
1780 //seq_printf(m, "%pi4:%u", &sin->sin_addr.s_addr, ntohs(sin->sin_port));
1781 seq_printf(m, "%u.%u.%u.%u:%u", NIPQUAD(sin->sin_addr.s_addr), ntohs(sin->sin_port));
1782 } else if (ctl->addr.sa_family == AF_INET6) {
1783 struct sockaddr_in6 *sin = (struct sockaddr_in6 *)&st->ctl.addr;
1784 seq_printf(m, "%pi6:%u", &sin->sin6_addr, ntohs(sin->sin6_port));
1785 } else {
1786 unsigned int i;
1787 for (i=0; i<ctl->addrlen; ++i)
1788 seq_printf(m, "%02x.", ctl->addr.addr[i]);
1789 }
1790
1791 seq_printf(m, " %u %u %d %u %x\n",
1792 ctl->type, ctl->proto,
1793 st->socket != NULL,
1794 ctl->prio, ctl->perm);
1795 }
1796 mutex_unlock(&psb->state_lock);
1797
1798 return 0;
1799}
1800
1801static const struct super_operations pohmelfs_sb_ops = {
1802 .alloc_inode = pohmelfs_alloc_inode,
1803 .destroy_inode = pohmelfs_destroy_inode,
1804 .drop_inode = pohmelfs_drop_inode,
1805 .write_inode = pohmelfs_write_inode,
1806 .put_super = pohmelfs_put_super,
1807 .remount_fs = pohmelfs_remount,
1808 .statfs = pohmelfs_statfs,
1809 .show_options = pohmelfs_show_options,
1810 .show_stats = pohmelfs_show_stats,
1811};
1812
1756/* 1813/*
1757 * Allocate private superblock and create root dir. 1814 * Allocate private superblock and create root dir.
1758 */ 1815 */
@@ -1764,8 +1821,6 @@ static int pohmelfs_fill_super(struct super_block *sb, void *data, int silent)
1764 struct pohmelfs_inode *npi; 1821 struct pohmelfs_inode *npi;
1765 struct qstr str; 1822 struct qstr str;
1766 1823
1767 pohmelfs_ftrans_init();
1768
1769 psb = kzalloc(sizeof(struct pohmelfs_sb), GFP_KERNEL); 1824 psb = kzalloc(sizeof(struct pohmelfs_sb), GFP_KERNEL);
1770 if (!psb) 1825 if (!psb)
1771 goto err_out_exit; 1826 goto err_out_exit;
@@ -1816,7 +1871,7 @@ static int pohmelfs_fill_super(struct super_block *sb, void *data, int silent)
1816 mutex_init(&psb->state_lock); 1871 mutex_init(&psb->state_lock);
1817 INIT_LIST_HEAD(&psb->state_list); 1872 INIT_LIST_HEAD(&psb->state_list);
1818 1873
1819 err = pohmelfs_parse_options((char *) data, psb); 1874 err = pohmelfs_parse_options((char *) data, psb, 0);
1820 if (err) 1875 if (err)
1821 goto err_out_free_sb; 1876 goto err_out_free_sb;
1822 1877
@@ -1845,6 +1900,8 @@ static int pohmelfs_fill_super(struct super_block *sb, void *data, int silent)
1845 err = PTR_ERR(npi); 1900 err = PTR_ERR(npi);
1846 goto err_out_crypto_exit; 1901 goto err_out_crypto_exit;
1847 } 1902 }
1903 set_bit(NETFS_INODE_REMOTE_SYNCED, &npi->state);
1904 clear_bit(NETFS_INODE_OWNED, &npi->state);
1848 1905
1849 root = &npi->vfs_inode; 1906 root = &npi->vfs_inode;
1850 1907
@@ -1887,11 +1944,29 @@ static int pohmelfs_get_sb(struct file_system_type *fs_type,
1887 mnt); 1944 mnt);
1888} 1945}
1889 1946
1947/*
1948 * We need this to sync all inodes earlier, since when writeback
1949 * is invoked from the umount/mntput path dcache is already shrunk,
1950 * see generic_shutdown_super(), and no inodes can access the path.
1951 */
1952static void pohmelfs_kill_super(struct super_block *sb)
1953{
1954 struct writeback_control wbc = {
1955 .sync_mode = WB_SYNC_ALL,
1956 .range_start = 0,
1957 .range_end = LLONG_MAX,
1958 .nr_to_write = LONG_MAX,
1959 };
1960 generic_sync_sb_inodes(sb, &wbc);
1961
1962 kill_anon_super(sb);
1963}
1964
1890static struct file_system_type pohmel_fs_type = { 1965static struct file_system_type pohmel_fs_type = {
1891 .owner = THIS_MODULE, 1966 .owner = THIS_MODULE,
1892 .name = "pohmel", 1967 .name = "pohmel",
1893 .get_sb = pohmelfs_get_sb, 1968 .get_sb = pohmelfs_get_sb,
1894 .kill_sb = kill_anon_super, 1969 .kill_sb = pohmelfs_kill_super,
1895}; 1970};
1896 1971
1897/* 1972/*
diff --git a/drivers/staging/pohmelfs/lock.c b/drivers/staging/pohmelfs/lock.c
index ad4a18559bdd..22fef18cae90 100644
--- a/drivers/staging/pohmelfs/lock.c
+++ b/drivers/staging/pohmelfs/lock.c
@@ -41,7 +41,8 @@ static int pohmelfs_send_lock_trans(struct pohmelfs_inode *pi,
41 path_len = err; 41 path_len = err;
42 42
43 err = -ENOMEM; 43 err = -ENOMEM;
44 t = netfs_trans_alloc(psb, path_len + sizeof(struct netfs_lock) + isize, 0, 0); 44 t = netfs_trans_alloc(psb, path_len + sizeof(struct netfs_lock) + isize,
45 NETFS_TRANS_SINGLE_DST, 0);
45 if (!t) 46 if (!t)
46 goto err_out_exit; 47 goto err_out_exit;
47 48
diff --git a/drivers/staging/pohmelfs/net.c b/drivers/staging/pohmelfs/net.c
index c9b8540c1efe..11ecac026ca7 100644
--- a/drivers/staging/pohmelfs/net.c
+++ b/drivers/staging/pohmelfs/net.c
@@ -26,55 +26,6 @@
26 26
27#include "netfs.h" 27#include "netfs.h"
28 28
29static int pohmelfs_ftrans_size = 10240;
30static u32 *pohmelfs_ftrans;
31
32int pohmelfs_ftrans_init(void)
33{
34 pohmelfs_ftrans = vmalloc(pohmelfs_ftrans_size * 4);
35 if (!pohmelfs_ftrans)
36 return -ENOMEM;
37
38 return 0;
39}
40
41void pohmelfs_ftrans_exit(void)
42{
43 vfree(pohmelfs_ftrans);
44}
45
46void pohmelfs_ftrans_clean(u64 id)
47{
48 if (pohmelfs_ftrans) {
49 u32 i = id & 0xffffffff;
50 int idx = i % pohmelfs_ftrans_size;
51
52 pohmelfs_ftrans[idx] = 0;
53 }
54}
55
56void pohmelfs_ftrans_update(u64 id)
57{
58 if (pohmelfs_ftrans) {
59 u32 i = id & 0xffffffff;
60 int idx = i % pohmelfs_ftrans_size;
61
62 pohmelfs_ftrans[idx] = i;
63 }
64}
65
66int pohmelfs_ftrans_check(u64 id)
67{
68 if (pohmelfs_ftrans) {
69 u32 i = id & 0xffffffff;
70 int idx = i % pohmelfs_ftrans_size;
71
72 return (pohmelfs_ftrans[idx] == i);
73 }
74
75 return -1;
76}
77
78/* 29/*
79 * Async machinery lives here. 30 * Async machinery lives here.
80 * All commands being sent to server do _not_ require sync reply, 31 * All commands being sent to server do _not_ require sync reply,
@@ -450,8 +401,24 @@ static int pohmelfs_readdir_response(struct netfs_state *st)
450 if (err != -EEXIST) 401 if (err != -EEXIST)
451 goto err_out_put; 402 goto err_out_put;
452 } else { 403 } else {
404 struct dentry *dentry, *alias, *pd;
405
453 set_bit(NETFS_INODE_REMOTE_SYNCED, &npi->state); 406 set_bit(NETFS_INODE_REMOTE_SYNCED, &npi->state);
454 clear_bit(NETFS_INODE_OWNED, &npi->state); 407 clear_bit(NETFS_INODE_OWNED, &npi->state);
408
409 pd = d_find_alias(&parent->vfs_inode);
410 if (pd) {
411 str.hash = full_name_hash(str.name, str.len);
412 dentry = d_alloc(pd, &str);
413 if (dentry) {
414 alias = d_materialise_unique(dentry, &npi->vfs_inode);
415 if (alias)
416 dput(dentry);
417 }
418
419 dput(dentry);
420 dput(pd);
421 }
455 } 422 }
456 } 423 }
457out: 424out:
@@ -638,15 +605,12 @@ static int pohmelfs_transaction_response(struct netfs_state *st)
638 if (dst) { 605 if (dst) {
639 netfs_trans_remove_nolock(dst, st); 606 netfs_trans_remove_nolock(dst, st);
640 t = dst->trans; 607 t = dst->trans;
641
642 pohmelfs_ftrans_update(cmd->start);
643 } 608 }
644 mutex_unlock(&st->trans_lock); 609 mutex_unlock(&st->trans_lock);
645 610
646 if (!t) { 611 if (!t) {
647 int check = pohmelfs_ftrans_check(cmd->start); 612 printk("%s: failed to find transaction: start: %llu: id: %llu, size: %u, ext: %u.\n",
648 printk("%s: failed to find transaction: start: %llu: id: %llu, size: %u, ext: %u, double: %d.\n", 613 __func__, cmd->start, cmd->id, cmd->size, cmd->ext);
649 __func__, cmd->start, cmd->id, cmd->size, cmd->ext, check);
650 err = -EINVAL; 614 err = -EINVAL;
651 goto out; 615 goto out;
652 } 616 }
diff --git a/drivers/staging/pohmelfs/netfs.h b/drivers/staging/pohmelfs/netfs.h
index 2ff21ae5bb12..c78cfcb042fb 100644
--- a/drivers/staging/pohmelfs/netfs.h
+++ b/drivers/staging/pohmelfs/netfs.h
@@ -87,6 +87,7 @@ enum {
87 POHMELFS_FLAGS_DEL, /* Network state control message for DEL */ 87 POHMELFS_FLAGS_DEL, /* Network state control message for DEL */
88 POHMELFS_FLAGS_SHOW, /* Network state control message for SHOW */ 88 POHMELFS_FLAGS_SHOW, /* Network state control message for SHOW */
89 POHMELFS_FLAGS_CRYPTO, /* Crypto data control message */ 89 POHMELFS_FLAGS_CRYPTO, /* Crypto data control message */
90 POHMELFS_FLAGS_MODIFY, /* Network state modification message */
90}; 91};
91 92
92/* 93/*
@@ -116,16 +117,20 @@ struct pohmelfs_crypto
116 unsigned char data[0]; /* Algorithm string, key and IV */ 117 unsigned char data[0]; /* Algorithm string, key and IV */
117}; 118};
118 119
120#define POHMELFS_IO_PERM_READ (1<<0)
121#define POHMELFS_IO_PERM_WRITE (1<<1)
122
119/* 123/*
120 * Configuration command used to create table of different remote servers. 124 * Configuration command used to create table of different remote servers.
121 */ 125 */
122struct pohmelfs_ctl 126struct pohmelfs_ctl
123{ 127{
124 unsigned int idx; /* Config index */ 128 __u32 idx; /* Config index */
125 unsigned int type; /* Socket type */ 129 __u32 type; /* Socket type */
126 unsigned int proto; /* Socket protocol */ 130 __u32 proto; /* Socket protocol */
127 unsigned int addrlen; /* Size of the address */ 131 __u16 addrlen; /* Size of the address */
128 unsigned short unused; /* Align structure by 4 bytes */ 132 __u16 perm; /* IO permission */
133 __u16 prio; /* IO priority */
129 struct saddr addr; /* Remote server address */ 134 struct saddr addr; /* Remote server address */
130}; 135};
131 136
@@ -921,12 +926,6 @@ static inline void pohmelfs_mcache_put(struct pohmelfs_sb *psb,
921 pohmelfs_mcache_free(psb, m); 926 pohmelfs_mcache_free(psb, m);
922} 927}
923 928
924int pohmelfs_ftrans_init(void);
925void pohmelfs_ftrans_exit(void);
926void pohmelfs_ftrans_update(u64 id);
927int pohmelfs_ftrans_check(u64 id);
928void pohmelfs_ftrans_clean(u64 id);
929
930#endif /* __KERNEL__*/ 929#endif /* __KERNEL__*/
931 930
932#endif /* __NETFS_H */ 931#endif /* __NETFS_H */
diff --git a/drivers/staging/pohmelfs/trans.c b/drivers/staging/pohmelfs/trans.c
index bcb59425a21c..fef5f9bd6920 100644
--- a/drivers/staging/pohmelfs/trans.c
+++ b/drivers/staging/pohmelfs/trans.c
@@ -456,34 +456,25 @@ int netfs_trans_finish_send(struct netfs_trans *t, struct pohmelfs_sb *psb)
456 __func__, t, t->gen, t->iovec.iov_len, t->page_num, psb->active_state); 456 __func__, t, t->gen, t->iovec.iov_len, t->page_num, psb->active_state);
457#endif 457#endif
458 mutex_lock(&psb->state_lock); 458 mutex_lock(&psb->state_lock);
459 list_for_each_entry(c, &psb->state_list, config_entry) {
460 st = &c->state;
459 461
460 if ((t->flags & NETFS_TRANS_SINGLE_DST) && psb->active_state) { 462 if (t->flags & NETFS_TRANS_SINGLE_DST) {
461 st = &psb->active_state->state; 463 if (!(st->ctl.perm & POHMELFS_IO_PERM_READ))
462 464 continue;
463 err = -EPIPE; 465 } else {
464 if (netfs_state_poll(st) & POLLOUT) { 466 if (!(st->ctl.perm & POHMELFS_IO_PERM_WRITE))
465 err = netfs_trans_push_dst(t, st); 467 continue;
466 if (!err) {
467 err = netfs_trans_send(t, st);
468 if (err) {
469 netfs_trans_drop_last(t, st);
470 } else {
471 pohmelfs_switch_active(psb);
472 goto out;
473 }
474 }
475 } 468 }
476 pohmelfs_switch_active(psb);
477 }
478 469
479 list_for_each_entry(c, &psb->state_list, config_entry) { 470 if (psb->active_state && (psb->active_state->state.ctl.prio >= st->ctl.prio))
480 st = &c->state; 471 st = &psb->active_state->state;
481 472
482 err = netfs_trans_push(t, st); 473 err = netfs_trans_push(t, st);
483 if (!err && (t->flags & NETFS_TRANS_SINGLE_DST)) 474 if (!err && (t->flags & NETFS_TRANS_SINGLE_DST))
484 break; 475 break;
485 } 476 }
486out: 477
487 mutex_unlock(&psb->state_lock); 478 mutex_unlock(&psb->state_lock);
488#if 0 479#if 0
489 dprintk("%s: fully sent t: %p, gen: %u, size: %u, page_num: %u, err: %d.\n", 480 dprintk("%s: fully sent t: %p, gen: %u, size: %u, page_num: %u, err: %d.\n",
@@ -501,8 +492,6 @@ int netfs_trans_finish(struct netfs_trans *t, struct pohmelfs_sb *psb)
501 492
502 t->gen = atomic_inc_return(&psb->trans_gen); 493 t->gen = atomic_inc_return(&psb->trans_gen);
503 494
504 pohmelfs_ftrans_clean(t->gen);
505
506 cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) + 495 cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) +
507 t->attached_size + t->attached_pages * sizeof(struct netfs_cmd); 496 t->attached_size + t->attached_pages * sizeof(struct netfs_cmd);
508 cmd->cmd = NETFS_TRANS; 497 cmd->cmd = NETFS_TRANS;
diff --git a/drivers/staging/rt2860/rt_main_dev.c b/drivers/staging/rt2860/rt_main_dev.c
index cf17bcdd7333..6c4396f0903b 100644
--- a/drivers/staging/rt2860/rt_main_dev.c
+++ b/drivers/staging/rt2860/rt_main_dev.c
@@ -722,6 +722,20 @@ err:
722 return (-1); 722 return (-1);
723} /* End of rt28xx_open */ 723} /* End of rt28xx_open */
724 724
725static const struct net_device_ops rt2860_netdev_ops = {
726 .ndo_open = MainVirtualIF_open,
727 .ndo_stop = MainVirtualIF_close,
728 .ndo_do_ioctl = rt28xx_ioctl,
729 .ndo_get_stats = RT28xx_get_ether_stats,
730 .ndo_validate_addr = NULL,
731 .ndo_set_mac_address = eth_mac_addr,
732 .ndo_change_mtu = eth_change_mtu,
733#ifdef IKANOS_VX_1X0
734 .ndo_start_xmit = IKANOS_DataFramesTx,
735#else
736 .ndo_start_xmit = rt28xx_send_packets,
737#endif
738};
725 739
726/* Must not be called for mdev and apdev */ 740/* Must not be called for mdev and apdev */
727static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd) 741static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd)
@@ -733,11 +747,6 @@ static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER p
733 747
734 748
735 //ether_setup(dev); 749 //ether_setup(dev);
736 dev->hard_start_xmit = rt28xx_send_packets;
737
738#ifdef IKANOS_VX_1X0
739 dev->hard_start_xmit = IKANOS_DataFramesTx;
740#endif // IKANOS_VX_1X0 //
741 750
742#ifdef CONFIG_STA_SUPPORT 751#ifdef CONFIG_STA_SUPPORT
743#if WIRELESS_EXT >= 12 752#if WIRELESS_EXT >= 12
@@ -760,12 +769,8 @@ static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER p
760#if WIRELESS_EXT < 21 769#if WIRELESS_EXT < 21
761 dev->get_wireless_stats = rt28xx_get_wireless_stats; 770 dev->get_wireless_stats = rt28xx_get_wireless_stats;
762#endif 771#endif
763 dev->get_stats = RT28xx_get_ether_stats;
764 dev->open = MainVirtualIF_open; //rt28xx_open;
765 dev->stop = MainVirtualIF_close; //rt28xx_close;
766 dev->priv_flags = INT_MAIN; 772 dev->priv_flags = INT_MAIN;
767 dev->do_ioctl = rt28xx_ioctl; 773 dev->netdev_ops = &rt2860_netdev_ops;
768 dev->validate_addr = NULL;
769 // find available device name 774 // find available device name
770 for (i = 0; i < 8; i++) 775 for (i = 0; i < 8; i++)
771 { 776 {
diff --git a/drivers/staging/rt2870/rt2870.h b/drivers/staging/rt2870/rt2870.h
index 5dd15aac9ce7..a42caa370808 100644
--- a/drivers/staging/rt2870/rt2870.h
+++ b/drivers/staging/rt2870/rt2870.h
@@ -96,6 +96,7 @@
96 {USB_DEVICE(0x0DF6,0x002B)}, /* Sitecom */ \ 96 {USB_DEVICE(0x0DF6,0x002B)}, /* Sitecom */ \
97 {USB_DEVICE(0x0DF6,0x002C)}, /* Sitecom */ \ 97 {USB_DEVICE(0x0DF6,0x002C)}, /* Sitecom */ \
98 {USB_DEVICE(0x0DF6,0x002D)}, /* Sitecom */ \ 98 {USB_DEVICE(0x0DF6,0x002D)}, /* Sitecom */ \
99 {USB_DEVICE(0x0DF6,0x0039)}, /* Sitecom */ \
99 {USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */ \ 100 {USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */ \
100 {USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */ \ 101 {USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */ \
101 {USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \ 102 {USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \
diff --git a/drivers/staging/rt2870/rt_main_dev.c b/drivers/staging/rt2870/rt_main_dev.c
index 313ecea0bfa8..48ad41136d0f 100644
--- a/drivers/staging/rt2870/rt_main_dev.c
+++ b/drivers/staging/rt2870/rt_main_dev.c
@@ -855,6 +855,20 @@ err:
855 return (-1); 855 return (-1);
856} /* End of rt28xx_open */ 856} /* End of rt28xx_open */
857 857
858static const struct net_device_ops rt2870_netdev_ops = {
859 .ndo_open = MainVirtualIF_open,
860 .ndo_stop = MainVirtualIF_close,
861 .ndo_do_ioctl = rt28xx_ioctl,
862 .ndo_get_stats = RT28xx_get_ether_stats,
863 .ndo_validate_addr = NULL,
864 .ndo_set_mac_address = eth_mac_addr,
865 .ndo_change_mtu = eth_change_mtu,
866#ifdef IKANOS_VX_1X0
867 .ndo_start_xmit = IKANOS_DataFramesTx,
868#else
869 .ndo_start_xmit = rt28xx_send_packets,
870#endif
871};
858 872
859/* Must not be called for mdev and apdev */ 873/* Must not be called for mdev and apdev */
860static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd) 874static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd)
@@ -866,12 +880,6 @@ static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER p
866 880
867 881
868 //ether_setup(dev); 882 //ether_setup(dev);
869 dev->hard_start_xmit = rt28xx_send_packets;
870
871#ifdef IKANOS_VX_1X0
872 dev->hard_start_xmit = IKANOS_DataFramesTx;
873#endif // IKANOS_VX_1X0 //
874
875// dev->set_multicast_list = ieee80211_set_multicast_list; 883// dev->set_multicast_list = ieee80211_set_multicast_list;
876// dev->change_mtu = ieee80211_change_mtu; 884// dev->change_mtu = ieee80211_change_mtu;
877#ifdef CONFIG_STA_SUPPORT 885#ifdef CONFIG_STA_SUPPORT
@@ -895,16 +903,10 @@ static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER p
895#if WIRELESS_EXT < 21 903#if WIRELESS_EXT < 21
896 dev->get_wireless_stats = rt28xx_get_wireless_stats; 904 dev->get_wireless_stats = rt28xx_get_wireless_stats;
897#endif 905#endif
898 dev->get_stats = RT28xx_get_ether_stats;
899 dev->open = MainVirtualIF_open; //rt28xx_open;
900 dev->stop = MainVirtualIF_close; //rt28xx_close;
901// dev->uninit = ieee80211_if_reinit; 906// dev->uninit = ieee80211_if_reinit;
902// dev->destructor = ieee80211_if_free; 907// dev->destructor = ieee80211_if_free;
903 dev->priv_flags = INT_MAIN; 908 dev->priv_flags = INT_MAIN;
904 dev->do_ioctl = rt28xx_ioctl; 909 dev->netdev_ops = &rt2870_netdev_ops;
905#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
906 dev->validate_addr = NULL;
907#endif
908 // find available device name 910 // find available device name
909 for (i = 0; i < 8; i++) 911 for (i = 0; i < 8; i++)
910 { 912 {
diff --git a/drivers/staging/rt3070/rt_main_dev.c b/drivers/staging/rt3070/rt_main_dev.c
index c000646286e6..81f769cf1096 100644
--- a/drivers/staging/rt3070/rt_main_dev.c
+++ b/drivers/staging/rt3070/rt_main_dev.c
@@ -436,7 +436,6 @@ static int rt28xx_init(IN struct net_device *net_dev)
436// OID_SET_HT_PHYMODE SetHT; 436// OID_SET_HT_PHYMODE SetHT;
437// WPDMA_GLO_CFG_STRUC GloCfg; 437// WPDMA_GLO_CFG_STRUC GloCfg;
438 UINT32 MacCsr0 = 0; 438 UINT32 MacCsr0 = 0;
439 UINT32 MacValue = 0;
440 439
441#ifdef RT2870 440#ifdef RT2870
442#ifdef INF_AMAZON_SE 441#ifdef INF_AMAZON_SE
@@ -849,6 +848,20 @@ err:
849 return (-1); 848 return (-1);
850} /* End of rt28xx_open */ 849} /* End of rt28xx_open */
851 850
851static const struct net_device_ops rt3070_netdev_ops = {
852 .ndo_open = MainVirtualIF_open,
853 .ndo_stop = MainVirtualIF_close,
854 .ndo_do_ioctl = rt28xx_ioctl,
855 .ndo_get_stats = RT28xx_get_ether_stats,
856 .ndo_validate_addr = NULL,
857 .ndo_set_mac_address = eth_mac_addr,
858 .ndo_change_mtu = eth_change_mtu,
859#ifdef IKANOS_VX_1X0
860 .ndo_start_xmit = IKANOS_DataFramesTx,
861#else
862 .ndo_start_xmit = rt28xx_send_packets,
863#endif
864};
852 865
853/* Must not be called for mdev and apdev */ 866/* Must not be called for mdev and apdev */
854static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd) 867static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd)
@@ -860,12 +873,6 @@ static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER p
860 873
861 874
862 //ether_setup(dev); 875 //ether_setup(dev);
863 dev->hard_start_xmit = rt28xx_send_packets;
864
865#ifdef IKANOS_VX_1X0
866 dev->hard_start_xmit = IKANOS_DataFramesTx;
867#endif // IKANOS_VX_1X0 //
868
869// dev->set_multicast_list = ieee80211_set_multicast_list; 876// dev->set_multicast_list = ieee80211_set_multicast_list;
870// dev->change_mtu = ieee80211_change_mtu; 877// dev->change_mtu = ieee80211_change_mtu;
871#ifdef CONFIG_STA_SUPPORT 878#ifdef CONFIG_STA_SUPPORT
@@ -889,16 +896,10 @@ static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER p
889#if WIRELESS_EXT < 21 896#if WIRELESS_EXT < 21
890 dev->get_wireless_stats = rt28xx_get_wireless_stats; 897 dev->get_wireless_stats = rt28xx_get_wireless_stats;
891#endif 898#endif
892 dev->get_stats = RT28xx_get_ether_stats;
893 dev->open = MainVirtualIF_open; //rt28xx_open;
894 dev->stop = MainVirtualIF_close; //rt28xx_close;
895// dev->uninit = ieee80211_if_reinit; 899// dev->uninit = ieee80211_if_reinit;
896// dev->destructor = ieee80211_if_free; 900// dev->destructor = ieee80211_if_free;
897 dev->priv_flags = INT_MAIN; 901 dev->priv_flags = INT_MAIN;
898 dev->do_ioctl = rt28xx_ioctl; 902 dev->netdev_ops = &rt3070_netdev_ops;
899#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
900 dev->validate_addr = NULL;
901#endif
902 // find available device name 903 // find available device name
903 for (i = 0; i < 8; i++) 904 for (i = 0; i < 8; i++)
904 { 905 {
diff --git a/drivers/staging/slicoss/README b/drivers/staging/slicoss/README
index 2d5b1127ce51..70f49099c065 100644
--- a/drivers/staging/slicoss/README
+++ b/drivers/staging/slicoss/README
@@ -10,7 +10,36 @@ TODO:
10 - move firmware loading to request_firmware() 10 - move firmware loading to request_firmware()
11 - remove direct memory access of structures 11 - remove direct memory access of structures
12 - any remaining sparse and checkpatch.pl warnings 12 - any remaining sparse and checkpatch.pl warnings
13 - any netdev recommended changes 13
14 - use net_device_ops
15 - use dev->stats rather than adapter->stats
16 - don't cast netdev_priv it is already void
17 - use compare_ether_addr
18 - GET RID OF MACROS
19 - work on all architectures
20 - without CONFIG_X86_64 confusion
21 - do 64 bit correctly
22 - don't depend on order of union
23 - get rid of ASSERT(), use BUG() instead but only where necessary
24 looks like most aren't really useful
25 - no new SIOCDEVPRIVATE ioctl allowed
26 - don't use module_param for configuring interrupt mitigation
27 use ethtool instead
28 - reorder code to elminate use of forward declarations
29 - don't keep private linked list of drivers.
30 - remove all the gratiutous debug infrastructure
31 - use PCI_DEVICE()
32 - do ethtool correctly using ethtool_ops
33 - NAPI?
34 - wasted overhead of extra stats
35 - state variables for things that are
36 easily availble and shouldn't be kept in card structure, cardnum, ...
37 slotnumber, events, ...
38 - get rid of slic_spinlock wrapper
39 - volatile == bad design => bad code
40 - locking too fine grained, not designed just throw more locks
41 at problem
42
14 43
15Please send patches to: 44Please send patches to:
16 Greg Kroah-Hartman <gregkh@suse.de> 45 Greg Kroah-Hartman <gregkh@suse.de>
diff --git a/drivers/staging/slicoss/slicoss.c b/drivers/staging/slicoss/slicoss.c
index 948156348478..6f5d0bff4358 100644
--- a/drivers/staging/slicoss/slicoss.c
+++ b/drivers/staging/slicoss/slicoss.c
@@ -345,6 +345,19 @@ static void slic_init_adapter(struct net_device *netdev,
345 return; 345 return;
346} 346}
347 347
348static const struct net_device_ops slic_netdev_ops = {
349 .ndo_open = slic_entry_open,
350 .ndo_stop = slic_entry_halt,
351 .ndo_start_xmit = slic_xmit_start,
352 .ndo_do_ioctl = slic_ioctl,
353 .ndo_set_mac_address = slic_mac_set_address,
354 .ndo_get_stats = slic_get_stats,
355 .ndo_set_multicast_list = slic_mcast_set_list,
356 .ndo_validate_addr = eth_validate_addr,
357 .ndo_set_mac_address = eth_mac_addr,
358 .ndo_change_mtu = eth_change_mtu,
359};
360
348static int __devinit slic_entry_probe(struct pci_dev *pcidev, 361static int __devinit slic_entry_probe(struct pci_dev *pcidev,
349 const struct pci_device_id *pci_tbl_entry) 362 const struct pci_device_id *pci_tbl_entry)
350{ 363{
@@ -442,13 +455,7 @@ static int __devinit slic_entry_probe(struct pci_dev *pcidev,
442 455
443 netdev->base_addr = (unsigned long)adapter->memorybase; 456 netdev->base_addr = (unsigned long)adapter->memorybase;
444 netdev->irq = adapter->irq; 457 netdev->irq = adapter->irq;
445 netdev->open = slic_entry_open; 458 netdev->netdev_ops = &slic_netdev_ops;
446 netdev->stop = slic_entry_halt;
447 netdev->hard_start_xmit = slic_xmit_start;
448 netdev->do_ioctl = slic_ioctl;
449 netdev->set_mac_address = slic_mac_set_address;
450 netdev->get_stats = slic_get_stats;
451 netdev->set_multicast_list = slic_mcast_set_list;
452 459
453 slic_debug_adapter_create(adapter); 460 slic_debug_adapter_create(adapter);
454 461
@@ -1260,7 +1267,7 @@ static int slic_mcast_add_list(struct adapter *adapter, char *address)
1260 } 1267 }
1261 1268
1262 /* Doesn't already exist. Allocate a structure to hold it */ 1269 /* Doesn't already exist. Allocate a structure to hold it */
1263 mcaddr = kmalloc(sizeof(struct mcast_address), GFP_KERNEL); 1270 mcaddr = kmalloc(sizeof(struct mcast_address), GFP_ATOMIC);
1264 if (mcaddr == NULL) 1271 if (mcaddr == NULL)
1265 return 1; 1272 return 1;
1266 1273
@@ -2284,7 +2291,7 @@ static u32 slic_card_locate(struct adapter *adapter)
2284 } 2291 }
2285 if (!physcard) { 2292 if (!physcard) {
2286 /* no structure allocated for this physical card yet */ 2293 /* no structure allocated for this physical card yet */
2287 physcard = kzalloc(sizeof(struct physcard), GFP_KERNEL); 2294 physcard = kzalloc(sizeof(struct physcard), GFP_ATOMIC);
2288 ASSERT(physcard); 2295 ASSERT(physcard);
2289 2296
2290 physcard->next = slic_global.phys_card; 2297 physcard->next = slic_global.phys_card;
diff --git a/drivers/staging/stlc45xx/Kconfig b/drivers/staging/stlc45xx/Kconfig
index 8d3f46f190e8..947fb75a9c68 100644
--- a/drivers/staging/stlc45xx/Kconfig
+++ b/drivers/staging/stlc45xx/Kconfig
@@ -1,6 +1,6 @@
1config STLC45XX 1config STLC45XX
2 tristate "stlc4550/4560 support" 2 tristate "stlc4550/4560 support"
3 depends on MAC80211 && WLAN_80211 && SPI_MASTER 3 depends on MAC80211 && WLAN_80211 && SPI_MASTER && GENERIC_HARDIRQS
4 ---help--- 4 ---help---
5 This is a driver for stlc4550 and stlc4560 chipsets. 5 This is a driver for stlc4550 and stlc4560 chipsets.
6 6
diff --git a/drivers/staging/sxg/sxg.c b/drivers/staging/sxg/sxg.c
index 891f6e334672..076b3f7d39eb 100644
--- a/drivers/staging/sxg/sxg.c
+++ b/drivers/staging/sxg/sxg.c
@@ -322,6 +322,8 @@ int sxg_add_msi_isr(struct adapter_t *adapter)
322 int ret,i; 322 int ret,i;
323 323
324 if (!adapter->intrregistered) { 324 if (!adapter->intrregistered) {
325 spin_unlock_irqrestore(&sxg_global.driver_lock,
326 sxg_global.flags);
325 for (i=0; i<adapter->nr_msix_entries; i++) { 327 for (i=0; i<adapter->nr_msix_entries; i++) {
326 ret = request_irq (adapter->msi_entries[i].vector, 328 ret = request_irq (adapter->msi_entries[i].vector,
327 sxg_isr, 329 sxg_isr,
@@ -329,6 +331,8 @@ int sxg_add_msi_isr(struct adapter_t *adapter)
329 adapter->netdev->name, 331 adapter->netdev->name,
330 adapter->netdev); 332 adapter->netdev);
331 if (ret) { 333 if (ret) {
334 spin_lock_irqsave(&sxg_global.driver_lock,
335 sxg_global.flags);
332 DBG_ERROR("sxg: MSI-X request_irq (%s) " 336 DBG_ERROR("sxg: MSI-X request_irq (%s) "
333 "FAILED [%x]\n", adapter->netdev->name, 337 "FAILED [%x]\n", adapter->netdev->name,
334 ret); 338 ret);
@@ -336,6 +340,7 @@ int sxg_add_msi_isr(struct adapter_t *adapter)
336 } 340 }
337 } 341 }
338 } 342 }
343 spin_lock_irqsave(&sxg_global.driver_lock, sxg_global.flags);
339 adapter->msi_enabled = TRUE; 344 adapter->msi_enabled = TRUE;
340 adapter->intrregistered = 1; 345 adapter->intrregistered = 1;
341 adapter->IntRegistered = TRUE; 346 adapter->IntRegistered = TRUE;
@@ -896,6 +901,22 @@ static inline int sxg_read_config(struct adapter_t *adapter)
896 return status; 901 return status;
897} 902}
898 903
904static const struct net_device_ops sxg_netdev_ops = {
905 .ndo_open = sxg_entry_open,
906 .ndo_stop = sxg_entry_halt,
907 .ndo_start_xmit = sxg_send_packets,
908 .ndo_do_ioctl = sxg_ioctl,
909 .ndo_change_mtu = sxg_change_mtu,
910 .ndo_get_stats = sxg_get_stats,
911 .ndo_set_multicast_list = sxg_mcast_set_list,
912 .ndo_validate_addr = eth_validate_addr,
913#if XXXTODO
914 .ndo_set_mac_address = sxg_mac_set_address,
915#else
916 .ndo_set_mac_address = eth_mac_addr,
917#endif
918};
919
899static int sxg_entry_probe(struct pci_dev *pcidev, 920static int sxg_entry_probe(struct pci_dev *pcidev,
900 const struct pci_device_id *pci_tbl_entry) 921 const struct pci_device_id *pci_tbl_entry)
901{ 922{
@@ -1095,16 +1116,7 @@ static int sxg_entry_probe(struct pci_dev *pcidev,
1095 1116
1096 netdev->base_addr = (unsigned long)adapter->base_addr; 1117 netdev->base_addr = (unsigned long)adapter->base_addr;
1097 netdev->irq = adapter->irq; 1118 netdev->irq = adapter->irq;
1098 netdev->open = sxg_entry_open; 1119 netdev->netdev_ops = &sxg_netdev_ops;
1099 netdev->stop = sxg_entry_halt;
1100 netdev->hard_start_xmit = sxg_send_packets;
1101 netdev->do_ioctl = sxg_ioctl;
1102 netdev->change_mtu = sxg_change_mtu;
1103#if XXXTODO
1104 netdev->set_mac_address = sxg_mac_set_address;
1105#endif
1106 netdev->get_stats = sxg_get_stats;
1107 netdev->set_multicast_list = sxg_mcast_set_list;
1108 SET_ETHTOOL_OPS(netdev, &sxg_nic_ethtool_ops); 1120 SET_ETHTOOL_OPS(netdev, &sxg_nic_ethtool_ops);
1109 netdev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; 1121 netdev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
1110 err = sxg_set_interrupt_capability(adapter); 1122 err = sxg_set_interrupt_capability(adapter);
@@ -2247,6 +2259,8 @@ static int sxg_entry_open(struct net_device *dev)
2247 DBG_ERROR("sxg: %s EXIT\n", __func__); 2259 DBG_ERROR("sxg: %s EXIT\n", __func__);
2248 2260
2249 spin_unlock_irqrestore(&sxg_global.driver_lock, sxg_global.flags); 2261 spin_unlock_irqrestore(&sxg_global.driver_lock, sxg_global.flags);
2262 mod_timer(&adapter->watchdog_timer, jiffies);
2263
2250 return STATUS_SUCCESS; 2264 return STATUS_SUCCESS;
2251} 2265}
2252 2266
@@ -2568,6 +2582,7 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
2568 u64 phys_addr; 2582 u64 phys_addr;
2569 unsigned long flags; 2583 unsigned long flags;
2570 unsigned long queue_id=0; 2584 unsigned long queue_id=0;
2585 int offload_cksum = 0;
2571 2586
2572 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbSgl", 2587 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbSgl",
2573 pSgl, SxgSgl, 0, 0); 2588 pSgl, SxgSgl, 0, 0);
@@ -2606,7 +2621,11 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
2606 struct iphdr *ip; 2621 struct iphdr *ip;
2607 2622
2608 ip = ip_hdr(skb); 2623 ip = ip_hdr(skb);
2609 if ((ip->protocol == IPPROTO_TCP)&&(DataLength >= sizeof( 2624 if (ip->protocol == IPPROTO_TCP)
2625 offload_cksum = 1;
2626 if (!offload_cksum || !tcp_hdr(skb))
2627 queue_id = 0;
2628 else if (offload_cksum && (DataLength >= sizeof(
2610 struct tcphdr))){ 2629 struct tcphdr))){
2611 queue_id = ((ntohs(tcp_hdr(skb)->dest) == ISCSI_PORT) ? 2630 queue_id = ((ntohs(tcp_hdr(skb)->dest) == ISCSI_PORT) ?
2612 (ntohs (tcp_hdr(skb)->source) & 2631 (ntohs (tcp_hdr(skb)->source) &
@@ -2615,8 +2634,11 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
2615 SXG_LARGE_SEND_QUEUE_MASK)); 2634 SXG_LARGE_SEND_QUEUE_MASK));
2616 } 2635 }
2617 } else if (skb->protocol == htons(ETH_P_IPV6)) { 2636 } else if (skb->protocol == htons(ETH_P_IPV6)) {
2618 if ((ipv6_hdr(skb)->nexthdr == IPPROTO_TCP) && (DataLength >= 2637 if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
2619 sizeof(struct tcphdr)) ) { 2638 offload_cksum = 1;
2639 if (!offload_cksum || !tcp_hdr(skb))
2640 queue_id = 0;
2641 else if (offload_cksum && (DataLength>=sizeof(struct tcphdr))){
2620 queue_id = ((ntohs(tcp_hdr(skb)->dest) == ISCSI_PORT) ? 2642 queue_id = ((ntohs(tcp_hdr(skb)->dest) == ISCSI_PORT) ?
2621 (ntohs (tcp_hdr(skb)->source) & 2643 (ntohs (tcp_hdr(skb)->source) &
2622 SXG_LARGE_SEND_QUEUE_MASK): 2644 SXG_LARGE_SEND_QUEUE_MASK):
@@ -2645,23 +2667,38 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
2645 } 2667 }
2646 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbCmd", 2668 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbCmd",
2647 XmtCmd, XmtRingInfo->Head, XmtRingInfo->Tail, 0); 2669 XmtCmd, XmtRingInfo->Head, XmtRingInfo->Tail, 0);
2648 /* Update stats */ 2670 memset(XmtCmd, '\0', sizeof(*XmtCmd));
2649 adapter->stats.tx_packets++; 2671 XmtCmd->SgEntries = 1;
2650 adapter->stats.tx_bytes += DataLength; 2672 XmtCmd->Flags = 0;
2651#if XXXTODO /* Stats stuff */ 2673 if (skb->ip_summed == CHECKSUM_PARTIAL) {
2652 if (SXG_MULTICAST_PACKET(EtherHdr)) { 2674 /*
2653 if (SXG_BROADCAST_PACKET(EtherHdr)) { 2675 * We need to set the Checkum in IP header to 0. This is
2654 adapter->Stats.DumbXmtBcastPkts++; 2676 * required by hardware.
2655 adapter->Stats.DumbXmtBcastBytes += DataLength; 2677 */
2678 if (offload_cksum) {
2679 ip_hdr(skb)->check = 0x0;
2680 XmtCmd->CsumFlags.Flags |= SXG_SLOWCMD_CSUM_IP;
2681 XmtCmd->CsumFlags.Flags |= SXG_SLOWCMD_CSUM_TCP;
2682 /*
2683 * Dont know if length will require a change in
2684 * case of VLAN
2685 */
2686 XmtCmd->CsumFlags.MacLen = ETH_HLEN;
2687 XmtCmd->CsumFlags.IpHl = skb_network_header_len(skb) >>
2688 SXG_NW_HDR_LEN_SHIFT;
2656 } else { 2689 } else {
2657 adapter->Stats.DumbXmtMcastPkts++; 2690 if (skb_checksum_help(skb)){
2658 adapter->Stats.DumbXmtMcastBytes += DataLength; 2691 printk(KERN_EMERG "Dropped UDP packet for"
2692 " incorrect checksum calculation\n");
2693 if (XmtCmd)
2694 SXG_ABORT_CMD(XmtRingInfo);
2695 spin_unlock_irqrestore(&adapter->XmtZeroLock,
2696 flags);
2697 return STATUS_SUCCESS;
2698 }
2659 } 2699 }
2660 } else {
2661 adapter->Stats.DumbXmtUcastPkts++;
2662 adapter->Stats.DumbXmtUcastBytes += DataLength;
2663 } 2700 }
2664#endif 2701
2665 /* 2702 /*
2666 * Fill in the command 2703 * Fill in the command
2667 * Copy out the first SGE to the command and adjust for offset 2704 * Copy out the first SGE to the command and adjust for offset
@@ -2679,31 +2716,17 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
2679 (SXG_INVALID_SGL(phys_addr,skb->data_len))) 2716 (SXG_INVALID_SGL(phys_addr,skb->data_len)))
2680 { 2717 {
2681 spin_unlock_irqrestore(&adapter->XmtZeroLock, flags); 2718 spin_unlock_irqrestore(&adapter->XmtZeroLock, flags);
2719 if (XmtCmd)
2720 SXG_ABORT_CMD(XmtRingInfo);
2682 /* Silently drop this packet */ 2721 /* Silently drop this packet */
2683 printk(KERN_EMERG"Dropped a packet for 64k boundary problem\n"); 2722 printk(KERN_EMERG"Dropped a packet for 64k boundary problem\n");
2684 return STATUS_SUCCESS; 2723 return STATUS_SUCCESS;
2685 } 2724 }
2686 memset(XmtCmd, '\0', sizeof(*XmtCmd));
2687 XmtCmd->Buffer.FirstSgeAddress = phys_addr; 2725 XmtCmd->Buffer.FirstSgeAddress = phys_addr;
2688 XmtCmd->Buffer.FirstSgeLength = DataLength; 2726 XmtCmd->Buffer.FirstSgeLength = DataLength;
2689 XmtCmd->Buffer.SgeOffset = 0; 2727 XmtCmd->Buffer.SgeOffset = 0;
2690 XmtCmd->Buffer.TotalLength = DataLength; 2728 XmtCmd->Buffer.TotalLength = DataLength;
2691 XmtCmd->SgEntries = 1;
2692 XmtCmd->Flags = 0;
2693 2729
2694 if (skb->ip_summed == CHECKSUM_PARTIAL) {
2695 /*
2696 * We need to set the Checkum in IP header to 0. This is
2697 * required by hardware.
2698 */
2699 ip_hdr(skb)->check = 0x0;
2700 XmtCmd->CsumFlags.Flags |= SXG_SLOWCMD_CSUM_IP;
2701 XmtCmd->CsumFlags.Flags |= SXG_SLOWCMD_CSUM_TCP;
2702 /* Dont know if length will require a change in case of VLAN */
2703 XmtCmd->CsumFlags.MacLen = ETH_HLEN;
2704 XmtCmd->CsumFlags.IpHl = skb_network_header_len(skb) >>
2705 SXG_NW_HDR_LEN_SHIFT;
2706 }
2707 /* 2730 /*
2708 * Advance transmit cmd descripter by 1. 2731 * Advance transmit cmd descripter by 1.
2709 * NOTE - See comments in SxgTcpOutput where we write 2732 * NOTE - See comments in SxgTcpOutput where we write
@@ -2715,6 +2738,24 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
2715 ASSERT((queue_id & ~SXG_LARGE_SEND_QUEUE_MASK) == 0); 2738 ASSERT((queue_id & ~SXG_LARGE_SEND_QUEUE_MASK) == 0);
2716 WRITE_REG(adapter->UcodeRegs[0].XmtCmd, ((queue_id << 16) | 1), TRUE); 2739 WRITE_REG(adapter->UcodeRegs[0].XmtCmd, ((queue_id << 16) | 1), TRUE);
2717 adapter->Stats.XmtQLen++; /* Stats within lock */ 2740 adapter->Stats.XmtQLen++; /* Stats within lock */
2741 /* Update stats */
2742 adapter->stats.tx_packets++;
2743 adapter->stats.tx_bytes += DataLength;
2744#if XXXTODO /* Stats stuff */
2745 if (SXG_MULTICAST_PACKET(EtherHdr)) {
2746 if (SXG_BROADCAST_PACKET(EtherHdr)) {
2747 adapter->Stats.DumbXmtBcastPkts++;
2748 adapter->Stats.DumbXmtBcastBytes += DataLength;
2749 } else {
2750 adapter->Stats.DumbXmtMcastPkts++;
2751 adapter->Stats.DumbXmtMcastBytes += DataLength;
2752 }
2753 } else {
2754 adapter->Stats.DumbXmtUcastPkts++;
2755 adapter->Stats.DumbXmtUcastBytes += DataLength;
2756 }
2757#endif
2758
2718 spin_unlock_irqrestore(&adapter->XmtZeroLock, flags); 2759 spin_unlock_irqrestore(&adapter->XmtZeroLock, flags);
2719 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XDumSgl2", 2760 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XDumSgl2",
2720 XmtCmd, pSgl, SxgSgl, 0); 2761 XmtCmd, pSgl, SxgSgl, 0);
diff --git a/drivers/staging/uc2322/aten2011.c b/drivers/staging/uc2322/aten2011.c
index 85b705453066..9c62f787cc9c 100644
--- a/drivers/staging/uc2322/aten2011.c
+++ b/drivers/staging/uc2322/aten2011.c
@@ -603,10 +603,9 @@ static void ATEN2011_bulk_out_data_callback(struct urb *urb)
603 603
604 tty = tty_port_tty_get(&ATEN2011_port->port->port); 604 tty = tty_port_tty_get(&ATEN2011_port->port->port);
605 605
606 if (tty && ATEN2011_port->open) { 606 if (tty && ATEN2011_port->open)
607 /* tell the tty driver that something has changed */ 607 /* tell the tty driver that something has changed */
608 wake_up_interruptible(&tty->write_wait); 608 tty_wakeup(tty);
609 }
610 609
611 /* schedule_work(&ATEN2011_port->port->work); */ 610 /* schedule_work(&ATEN2011_port->port->work); */
612 tty_kref_put(tty); 611 tty_kref_put(tty);
@@ -825,12 +824,6 @@ static int ATEN2011_open(struct tty_struct *tty, struct usb_serial_port *port,
825 status = 0; 824 status = 0;
826 status = set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data); 825 status = set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data);
827 826
828 /* force low_latency on so that our tty_push actually forces *
829 * the data through,otherwise it is scheduled, and with *
830 * high data rates (like with OHCI) data can get lost. */
831
832 if (tty)
833 tty->low_latency = 1;
834 /* 827 /*
835 * Check to see if we've set up our endpoint info yet 828 * Check to see if we've set up our endpoint info yet
836 * (can't set it up in ATEN2011_startup as the structures 829 * (can't set it up in ATEN2011_startup as the structures
@@ -1473,22 +1466,7 @@ static void ATEN2011_set_termios(struct tty_struct *tty,
1473 1466
1474 cflag = tty->termios->c_cflag; 1467 cflag = tty->termios->c_cflag;
1475 1468
1476 if (!cflag) { 1469 dbg("%s - cflag %08x iflag %08x", __func__,
1477 dbg("%s %s", __func__, "cflag is NULL");
1478 return;
1479 }
1480
1481 /* check that they really want us to change something */
1482 if (old_termios) {
1483 if ((cflag == old_termios->c_cflag) &&
1484 (RELEVANT_IFLAG(tty->termios->c_iflag) ==
1485 RELEVANT_IFLAG(old_termios->c_iflag))) {
1486 dbg("%s", "Nothing to change");
1487 return;
1488 }
1489 }
1490
1491 dbg("%s - clfag %08x iflag %08x", __func__,
1492 tty->termios->c_cflag, RELEVANT_IFLAG(tty->termios->c_iflag)); 1470 tty->termios->c_cflag, RELEVANT_IFLAG(tty->termios->c_iflag));
1493 1471
1494 if (old_termios) { 1472 if (old_termios) {
diff --git a/drivers/staging/wlan-ng/p80211netdev.c b/drivers/staging/wlan-ng/p80211netdev.c
index b2a606a36936..393e4df70dfd 100644
--- a/drivers/staging/wlan-ng/p80211netdev.c
+++ b/drivers/staging/wlan-ng/p80211netdev.c
@@ -711,6 +711,20 @@ static int wlan_change_mtu(netdevice_t *dev, int new_mtu)
711 return 0; 711 return 0;
712} 712}
713 713
714static const struct net_device_ops p80211_netdev_ops = {
715 .ndo_init = p80211knetdev_init,
716 .ndo_open = p80211knetdev_open,
717 .ndo_stop = p80211knetdev_stop,
718 .ndo_get_stats = p80211knetdev_get_stats,
719 .ndo_start_xmit = p80211knetdev_hard_start_xmit,
720 .ndo_set_multicast_list = p80211knetdev_set_multicast_list,
721 .ndo_do_ioctl = p80211knetdev_do_ioctl,
722 .ndo_set_mac_address = p80211knetdev_set_mac_address,
723 .ndo_tx_timeout = p80211knetdev_tx_timeout,
724 .ndo_change_mtu = wlan_change_mtu,
725 .ndo_validate_addr = eth_validate_addr,
726};
727
714/*---------------------------------------------------------------- 728/*----------------------------------------------------------------
715* wlan_setup 729* wlan_setup
716* 730*
@@ -756,11 +770,7 @@ int wlan_setup(wlandevice_t *wlandev)
756 } else { 770 } else {
757 wlandev->netdev = dev; 771 wlandev->netdev = dev;
758 dev->ml_priv = wlandev; 772 dev->ml_priv = wlandev;
759 dev->hard_start_xmit = p80211knetdev_hard_start_xmit; 773 dev->netdev_ops = &p80211_netdev_ops;
760 dev->get_stats = p80211knetdev_get_stats;
761 dev->init = p80211knetdev_init;
762 dev->open = p80211knetdev_open;
763 dev->stop = p80211knetdev_stop;
764 774
765 mutex_init(&wlandev->ioctl_lock); 775 mutex_init(&wlandev->ioctl_lock);
766 /* block ioctls until fully initialised. Don't forget to call 776 /* block ioctls until fully initialised. Don't forget to call
diff --git a/drivers/uio/uio_cif.c b/drivers/uio/uio_cif.c
index c60b8fcf0e3e..28034c812914 100644
--- a/drivers/uio/uio_cif.c
+++ b/drivers/uio/uio_cif.c
@@ -147,5 +147,6 @@ static void __exit hilscher_exit_module(void)
147module_init(hilscher_init_module); 147module_init(hilscher_init_module);
148module_exit(hilscher_exit_module); 148module_exit(hilscher_exit_module);
149 149
150MODULE_DEVICE_TABLE(pci, hilscher_pci_ids);
150MODULE_LICENSE("GPL v2"); 151MODULE_LICENSE("GPL v2");
151MODULE_AUTHOR("Hans J. Koch, Benedikt Spranger"); 152MODULE_AUTHOR("Hans J. Koch, Benedikt Spranger");
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 869d47cb6db3..0a69c0977e3f 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -546,10 +546,6 @@ static int acm_tty_open(struct tty_struct *tty, struct file *filp)
546 tty->driver_data = acm; 546 tty->driver_data = acm;
547 acm->tty = tty; 547 acm->tty = tty;
548 548
549 /* force low_latency on so that our tty_push actually forces the data through,
550 otherwise it is scheduled, and with high data rates data can get lost. */
551 tty->low_latency = 1;
552
553 if (usb_autopm_get_interface(acm->control) < 0) 549 if (usb_autopm_get_interface(acm->control) < 0)
554 goto early_bail; 550 goto early_bail;
555 else 551 else
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
index 3771d6e6d0cc..0fe434505ac4 100644
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * This driver supports USB CDC WCM Device Management. 4 * This driver supports USB CDC WCM Device Management.
5 * 5 *
6 * Copyright (c) 2007-2008 Oliver Neukum 6 * Copyright (c) 2007-2009 Oliver Neukum
7 * 7 *
8 * Some code taken from cdc-acm.c 8 * Some code taken from cdc-acm.c
9 * 9 *
@@ -610,7 +610,7 @@ static int wdm_probe(struct usb_interface *intf, const struct usb_device_id *id)
610 if (!buffer) 610 if (!buffer)
611 goto out; 611 goto out;
612 612
613 while (buflen > 0) { 613 while (buflen > 2) {
614 if (buffer [1] != USB_DT_CS_INTERFACE) { 614 if (buffer [1] != USB_DT_CS_INTERFACE) {
615 dev_err(&intf->dev, "skipping garbage\n"); 615 dev_err(&intf->dev, "skipping garbage\n");
616 goto next_desc; 616 goto next_desc;
@@ -646,16 +646,18 @@ next_desc:
646 spin_lock_init(&desc->iuspin); 646 spin_lock_init(&desc->iuspin);
647 init_waitqueue_head(&desc->wait); 647 init_waitqueue_head(&desc->wait);
648 desc->wMaxCommand = maxcom; 648 desc->wMaxCommand = maxcom;
649 /* this will be expanded and needed in hardware endianness */
649 desc->inum = cpu_to_le16((u16)intf->cur_altsetting->desc.bInterfaceNumber); 650 desc->inum = cpu_to_le16((u16)intf->cur_altsetting->desc.bInterfaceNumber);
650 desc->intf = intf; 651 desc->intf = intf;
651 INIT_WORK(&desc->rxwork, wdm_rxwork); 652 INIT_WORK(&desc->rxwork, wdm_rxwork);
652 653
653 iface = &intf->altsetting[0]; 654 rv = -EINVAL;
655 iface = intf->cur_altsetting;
656 if (iface->desc.bNumEndpoints != 1)
657 goto err;
654 ep = &iface->endpoint[0].desc; 658 ep = &iface->endpoint[0].desc;
655 if (!usb_endpoint_is_int_in(ep)) { 659 if (!ep || !usb_endpoint_is_int_in(ep))
656 rv = -EINVAL;
657 goto err; 660 goto err;
658 }
659 661
660 desc->wMaxPacketSize = le16_to_cpu(ep->wMaxPacketSize); 662 desc->wMaxPacketSize = le16_to_cpu(ep->wMaxPacketSize);
661 desc->bMaxPacketSize0 = udev->descriptor.bMaxPacketSize0; 663 desc->bMaxPacketSize0 = udev->descriptor.bMaxPacketSize0;
@@ -711,12 +713,19 @@ next_desc:
711 713
712 usb_set_intfdata(intf, desc); 714 usb_set_intfdata(intf, desc);
713 rv = usb_register_dev(intf, &wdm_class); 715 rv = usb_register_dev(intf, &wdm_class);
714 dev_info(&intf->dev, "cdc-wdm%d: USB WDM device\n",
715 intf->minor - WDM_MINOR_BASE);
716 if (rv < 0) 716 if (rv < 0)
717 goto err; 717 goto err3;
718 else
719 dev_info(&intf->dev, "cdc-wdm%d: USB WDM device\n",
720 intf->minor - WDM_MINOR_BASE);
718out: 721out:
719 return rv; 722 return rv;
723err3:
724 usb_set_intfdata(intf, NULL);
725 usb_buffer_free(interface_to_usbdev(desc->intf),
726 desc->bMaxPacketSize0,
727 desc->inbuf,
728 desc->response->transfer_dma);
720err2: 729err2:
721 usb_buffer_free(interface_to_usbdev(desc->intf), 730 usb_buffer_free(interface_to_usbdev(desc->intf),
722 desc->wMaxPacketSize, 731 desc->wMaxPacketSize,
diff --git a/drivers/usb/core/buffer.c b/drivers/usb/core/buffer.c
index cadb2dc1d28a..3ba2fff71490 100644
--- a/drivers/usb/core/buffer.c
+++ b/drivers/usb/core/buffer.c
@@ -119,7 +119,7 @@ void *hcd_buffer_alloc(
119 if (size <= pool_max [i]) 119 if (size <= pool_max [i])
120 return dma_pool_alloc(hcd->pool [i], mem_flags, dma); 120 return dma_pool_alloc(hcd->pool [i], mem_flags, dma);
121 } 121 }
122 return dma_alloc_coherent(hcd->self.controller, size, dma, 0); 122 return dma_alloc_coherent(hcd->self.controller, size, dma, mem_flags);
123} 123}
124 124
125void hcd_buffer_free( 125void hcd_buffer_free(
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index df3c539f652a..308609039c73 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -841,7 +841,7 @@ static int proc_resetep(struct dev_state *ps, void __user *arg)
841 ret = checkintf(ps, ret); 841 ret = checkintf(ps, ret);
842 if (ret) 842 if (ret)
843 return ret; 843 return ret;
844 usb_settoggle(ps->dev, ep & 0xf, !(ep & USB_DIR_IN), 0); 844 usb_reset_endpoint(ps->dev, ep);
845 return 0; 845 return 0;
846} 846}
847 847
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 81fa8506825d..42b93da1085d 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1539,6 +1539,32 @@ void usb_hcd_disable_endpoint(struct usb_device *udev,
1539 hcd->driver->endpoint_disable(hcd, ep); 1539 hcd->driver->endpoint_disable(hcd, ep);
1540} 1540}
1541 1541
1542/**
1543 * usb_hcd_reset_endpoint - reset host endpoint state
1544 * @udev: USB device.
1545 * @ep: the endpoint to reset.
1546 *
1547 * Resets any host endpoint state such as the toggle bit, sequence
1548 * number and current window.
1549 */
1550void usb_hcd_reset_endpoint(struct usb_device *udev,
1551 struct usb_host_endpoint *ep)
1552{
1553 struct usb_hcd *hcd = bus_to_hcd(udev->bus);
1554
1555 if (hcd->driver->endpoint_reset)
1556 hcd->driver->endpoint_reset(hcd, ep);
1557 else {
1558 int epnum = usb_endpoint_num(&ep->desc);
1559 int is_out = usb_endpoint_dir_out(&ep->desc);
1560 int is_control = usb_endpoint_xfer_control(&ep->desc);
1561
1562 usb_settoggle(udev, epnum, is_out, 0);
1563 if (is_control)
1564 usb_settoggle(udev, epnum, !is_out, 0);
1565 }
1566}
1567
1542/* Protect against drivers that try to unlink URBs after the device 1568/* Protect against drivers that try to unlink URBs after the device
1543 * is gone, by waiting until all unlinks for @udev are finished. 1569 * is gone, by waiting until all unlinks for @udev are finished.
1544 * Since we don't currently track URBs by device, simply wait until 1570 * Since we don't currently track URBs by device, simply wait until
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h
index f750eb1ab595..e7d4479de41c 100644
--- a/drivers/usb/core/hcd.h
+++ b/drivers/usb/core/hcd.h
@@ -206,6 +206,11 @@ struct hc_driver {
206 void (*endpoint_disable)(struct usb_hcd *hcd, 206 void (*endpoint_disable)(struct usb_hcd *hcd,
207 struct usb_host_endpoint *ep); 207 struct usb_host_endpoint *ep);
208 208
209 /* (optional) reset any endpoint state such as sequence number
210 and current window */
211 void (*endpoint_reset)(struct usb_hcd *hcd,
212 struct usb_host_endpoint *ep);
213
209 /* root hub support */ 214 /* root hub support */
210 int (*hub_status_data) (struct usb_hcd *hcd, char *buf); 215 int (*hub_status_data) (struct usb_hcd *hcd, char *buf);
211 int (*hub_control) (struct usb_hcd *hcd, 216 int (*hub_control) (struct usb_hcd *hcd,
@@ -234,6 +239,8 @@ extern void usb_hcd_flush_endpoint(struct usb_device *udev,
234 struct usb_host_endpoint *ep); 239 struct usb_host_endpoint *ep);
235extern void usb_hcd_disable_endpoint(struct usb_device *udev, 240extern void usb_hcd_disable_endpoint(struct usb_device *udev,
236 struct usb_host_endpoint *ep); 241 struct usb_host_endpoint *ep);
242extern void usb_hcd_reset_endpoint(struct usb_device *udev,
243 struct usb_host_endpoint *ep);
237extern void usb_hcd_synchronize_unlinks(struct usb_device *udev); 244extern void usb_hcd_synchronize_unlinks(struct usb_device *udev);
238extern int usb_hcd_get_frame_number(struct usb_device *udev); 245extern int usb_hcd_get_frame_number(struct usb_device *udev);
239 246
@@ -279,6 +286,13 @@ extern irqreturn_t usb_hcd_irq(int irq, void *__hcd);
279extern void usb_hc_died(struct usb_hcd *hcd); 286extern void usb_hc_died(struct usb_hcd *hcd);
280extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd); 287extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd);
281 288
289/* The D0/D1 toggle bits ... USE WITH CAUTION (they're almost hcd-internal) */
290#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> (ep)) & 1)
291#define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << (ep)))
292#define usb_settoggle(dev, ep, out, bit) \
293 ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << (ep))) | \
294 ((bit) << (ep)))
295
282/* -------------------------------------------------------------------------- */ 296/* -------------------------------------------------------------------------- */
283 297
284/* Enumeration is only for the hub driver, or HCD virtual root hubs */ 298/* Enumeration is only for the hub driver, or HCD virtual root hubs */
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 30a0690f3683..b62628377654 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -1002,8 +1002,7 @@ int usb_clear_halt(struct usb_device *dev, int pipe)
1002 * the copy in usb-storage, for as long as we need two copies. 1002 * the copy in usb-storage, for as long as we need two copies.
1003 */ 1003 */
1004 1004
1005 /* toggle was reset by the clear */ 1005 usb_reset_endpoint(dev, endp);
1006 usb_settoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe), 0);
1007 1006
1008 return 0; 1007 return 0;
1009} 1008}
@@ -1076,6 +1075,30 @@ void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr,
1076} 1075}
1077 1076
1078/** 1077/**
1078 * usb_reset_endpoint - Reset an endpoint's state.
1079 * @dev: the device whose endpoint is to be reset
1080 * @epaddr: the endpoint's address. Endpoint number for output,
1081 * endpoint number + USB_DIR_IN for input
1082 *
1083 * Resets any host-side endpoint state such as the toggle bit,
1084 * sequence number or current window.
1085 */
1086void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr)
1087{
1088 unsigned int epnum = epaddr & USB_ENDPOINT_NUMBER_MASK;
1089 struct usb_host_endpoint *ep;
1090
1091 if (usb_endpoint_out(epaddr))
1092 ep = dev->ep_out[epnum];
1093 else
1094 ep = dev->ep_in[epnum];
1095 if (ep)
1096 usb_hcd_reset_endpoint(dev, ep);
1097}
1098EXPORT_SYMBOL_GPL(usb_reset_endpoint);
1099
1100
1101/**
1079 * usb_disable_interface -- Disable all endpoints for an interface 1102 * usb_disable_interface -- Disable all endpoints for an interface
1080 * @dev: the device whose interface is being disabled 1103 * @dev: the device whose interface is being disabled
1081 * @intf: pointer to the interface descriptor 1104 * @intf: pointer to the interface descriptor
@@ -1117,7 +1140,6 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0)
1117 usb_disable_endpoint(dev, i, true); 1140 usb_disable_endpoint(dev, i, true);
1118 usb_disable_endpoint(dev, i + USB_DIR_IN, true); 1141 usb_disable_endpoint(dev, i + USB_DIR_IN, true);
1119 } 1142 }
1120 dev->toggle[0] = dev->toggle[1] = 0;
1121 1143
1122 /* getting rid of interfaces will disconnect 1144 /* getting rid of interfaces will disconnect
1123 * any drivers bound to them (a key side effect) 1145 * any drivers bound to them (a key side effect)
@@ -1154,28 +1176,24 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0)
1154 * usb_enable_endpoint - Enable an endpoint for USB communications 1176 * usb_enable_endpoint - Enable an endpoint for USB communications
1155 * @dev: the device whose interface is being enabled 1177 * @dev: the device whose interface is being enabled
1156 * @ep: the endpoint 1178 * @ep: the endpoint
1157 * @reset_toggle: flag to set the endpoint's toggle back to 0 1179 * @reset_ep: flag to reset the endpoint state
1158 * 1180 *
1159 * Resets the endpoint toggle if asked, and sets dev->ep_{in,out} pointers. 1181 * Resets the endpoint state if asked, and sets dev->ep_{in,out} pointers.
1160 * For control endpoints, both the input and output sides are handled. 1182 * For control endpoints, both the input and output sides are handled.
1161 */ 1183 */
1162void usb_enable_endpoint(struct usb_device *dev, struct usb_host_endpoint *ep, 1184void usb_enable_endpoint(struct usb_device *dev, struct usb_host_endpoint *ep,
1163 bool reset_toggle) 1185 bool reset_ep)
1164{ 1186{
1165 int epnum = usb_endpoint_num(&ep->desc); 1187 int epnum = usb_endpoint_num(&ep->desc);
1166 int is_out = usb_endpoint_dir_out(&ep->desc); 1188 int is_out = usb_endpoint_dir_out(&ep->desc);
1167 int is_control = usb_endpoint_xfer_control(&ep->desc); 1189 int is_control = usb_endpoint_xfer_control(&ep->desc);
1168 1190
1169 if (is_out || is_control) { 1191 if (reset_ep)
1170 if (reset_toggle) 1192 usb_hcd_reset_endpoint(dev, ep);
1171 usb_settoggle(dev, epnum, 1, 0); 1193 if (is_out || is_control)
1172 dev->ep_out[epnum] = ep; 1194 dev->ep_out[epnum] = ep;
1173 } 1195 if (!is_out || is_control)
1174 if (!is_out || is_control) {
1175 if (reset_toggle)
1176 usb_settoggle(dev, epnum, 0, 0);
1177 dev->ep_in[epnum] = ep; 1196 dev->ep_in[epnum] = ep;
1178 }
1179 ep->enabled = 1; 1197 ep->enabled = 1;
1180} 1198}
1181 1199
@@ -1183,18 +1201,18 @@ void usb_enable_endpoint(struct usb_device *dev, struct usb_host_endpoint *ep,
1183 * usb_enable_interface - Enable all the endpoints for an interface 1201 * usb_enable_interface - Enable all the endpoints for an interface
1184 * @dev: the device whose interface is being enabled 1202 * @dev: the device whose interface is being enabled
1185 * @intf: pointer to the interface descriptor 1203 * @intf: pointer to the interface descriptor
1186 * @reset_toggles: flag to set the endpoints' toggles back to 0 1204 * @reset_eps: flag to reset the endpoints' state
1187 * 1205 *
1188 * Enables all the endpoints for the interface's current altsetting. 1206 * Enables all the endpoints for the interface's current altsetting.
1189 */ 1207 */
1190void usb_enable_interface(struct usb_device *dev, 1208void usb_enable_interface(struct usb_device *dev,
1191 struct usb_interface *intf, bool reset_toggles) 1209 struct usb_interface *intf, bool reset_eps)
1192{ 1210{
1193 struct usb_host_interface *alt = intf->cur_altsetting; 1211 struct usb_host_interface *alt = intf->cur_altsetting;
1194 int i; 1212 int i;
1195 1213
1196 for (i = 0; i < alt->desc.bNumEndpoints; ++i) 1214 for (i = 0; i < alt->desc.bNumEndpoints; ++i)
1197 usb_enable_endpoint(dev, &alt->endpoint[i], reset_toggles); 1215 usb_enable_endpoint(dev, &alt->endpoint[i], reset_eps);
1198} 1216}
1199 1217
1200/** 1218/**
@@ -1335,7 +1353,7 @@ EXPORT_SYMBOL_GPL(usb_set_interface);
1335 * This issues a standard SET_CONFIGURATION request to the device using 1353 * This issues a standard SET_CONFIGURATION request to the device using
1336 * the current configuration. The effect is to reset most USB-related 1354 * the current configuration. The effect is to reset most USB-related
1337 * state in the device, including interface altsettings (reset to zero), 1355 * state in the device, including interface altsettings (reset to zero),
1338 * endpoint halts (cleared), and data toggle (only for bulk and interrupt 1356 * endpoint halts (cleared), and endpoint state (only for bulk and interrupt
1339 * endpoints). Other usbcore state is unchanged, including bindings of 1357 * endpoints). Other usbcore state is unchanged, including bindings of
1340 * usb device drivers to interfaces. 1358 * usb device drivers to interfaces.
1341 * 1359 *
@@ -1343,7 +1361,7 @@ EXPORT_SYMBOL_GPL(usb_set_interface);
1343 * (multi-interface) devices. Instead, the driver for each interface may 1361 * (multi-interface) devices. Instead, the driver for each interface may
1344 * use usb_set_interface() on the interfaces it claims. Be careful though; 1362 * use usb_set_interface() on the interfaces it claims. Be careful though;
1345 * some devices don't support the SET_INTERFACE request, and others won't 1363 * some devices don't support the SET_INTERFACE request, and others won't
1346 * reset all the interface state (notably data toggles). Resetting the whole 1364 * reset all the interface state (notably endpoint state). Resetting the whole
1347 * configuration would affect other drivers' interfaces. 1365 * configuration would affect other drivers' interfaces.
1348 * 1366 *
1349 * The caller must own the device lock. 1367 * The caller must own the device lock.
@@ -1376,8 +1394,6 @@ int usb_reset_configuration(struct usb_device *dev)
1376 if (retval < 0) 1394 if (retval < 0)
1377 return retval; 1395 return retval;
1378 1396
1379 dev->toggle[0] = dev->toggle[1] = 0;
1380
1381 /* re-init hc/hcd interface/endpoint state */ 1397 /* re-init hc/hcd interface/endpoint state */
1382 for (i = 0; i < config->desc.bNumInterfaces; i++) { 1398 for (i = 0; i < config->desc.bNumInterfaces; i++) {
1383 struct usb_interface *intf = config->interface[i]; 1399 struct usb_interface *intf = config->interface[i];
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
index dcfc072630c1..7eee400d3e32 100644
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -362,7 +362,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent,
362 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE; 362 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE;
363 dev->ep0.desc.bDescriptorType = USB_DT_ENDPOINT; 363 dev->ep0.desc.bDescriptorType = USB_DT_ENDPOINT;
364 /* ep0 maxpacket comes later, from device descriptor */ 364 /* ep0 maxpacket comes later, from device descriptor */
365 usb_enable_endpoint(dev, &dev->ep0, true); 365 usb_enable_endpoint(dev, &dev->ep0, false);
366 dev->can_submit = 1; 366 dev->can_submit = 1;
367 367
368 /* Save readable and stable topology id, distinguishing devices 368 /* Save readable and stable topology id, distinguishing devices
diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c
index 22c65960c429..38e531ecae4d 100644
--- a/drivers/usb/gadget/ci13xxx_udc.c
+++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -51,6 +51,7 @@
51 * - Gadget API (majority of optional features) 51 * - Gadget API (majority of optional features)
52 * - Suspend & Remote Wakeup 52 * - Suspend & Remote Wakeup
53 */ 53 */
54#include <linux/delay.h>
54#include <linux/device.h> 55#include <linux/device.h>
55#include <linux/dmapool.h> 56#include <linux/dmapool.h>
56#include <linux/dma-mapping.h> 57#include <linux/dma-mapping.h>
@@ -142,7 +143,7 @@ static struct {
142#define CAP_DEVICEADDR (0x014UL) 143#define CAP_DEVICEADDR (0x014UL)
143#define CAP_ENDPTLISTADDR (0x018UL) 144#define CAP_ENDPTLISTADDR (0x018UL)
144#define CAP_PORTSC (0x044UL) 145#define CAP_PORTSC (0x044UL)
145#define CAP_DEVLC (0x0B4UL) 146#define CAP_DEVLC (0x084UL)
146#define CAP_USBMODE (hw_bank.lpm ? 0x0C8UL : 0x068UL) 147#define CAP_USBMODE (hw_bank.lpm ? 0x0C8UL : 0x068UL)
147#define CAP_ENDPTSETUPSTAT (hw_bank.lpm ? 0x0D8UL : 0x06CUL) 148#define CAP_ENDPTSETUPSTAT (hw_bank.lpm ? 0x0D8UL : 0x06CUL)
148#define CAP_ENDPTPRIME (hw_bank.lpm ? 0x0DCUL : 0x070UL) 149#define CAP_ENDPTPRIME (hw_bank.lpm ? 0x0DCUL : 0x070UL)
@@ -1986,6 +1987,8 @@ static int ep_enable(struct usb_ep *ep,
1986 do { 1987 do {
1987 dbg_event(_usb_addr(mEp), "ENABLE", 0); 1988 dbg_event(_usb_addr(mEp), "ENABLE", 0);
1988 1989
1990 mEp->qh[mEp->dir].ptr->cap = 0;
1991
1989 if (mEp->type == USB_ENDPOINT_XFER_CONTROL) 1992 if (mEp->type == USB_ENDPOINT_XFER_CONTROL)
1990 mEp->qh[mEp->dir].ptr->cap |= QH_IOS; 1993 mEp->qh[mEp->dir].ptr->cap |= QH_IOS;
1991 else if (mEp->type == USB_ENDPOINT_XFER_ISOC) 1994 else if (mEp->type == USB_ENDPOINT_XFER_ISOC)
diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
index 5c030b080d4c..381a53b3e11c 100644
--- a/drivers/usb/gadget/file_storage.c
+++ b/drivers/usb/gadget/file_storage.c
@@ -738,7 +738,6 @@ static struct fsg_dev *the_fsg;
738static struct usb_gadget_driver fsg_driver; 738static struct usb_gadget_driver fsg_driver;
739 739
740static void close_backing_file(struct lun *curlun); 740static void close_backing_file(struct lun *curlun);
741static void close_all_backing_files(struct fsg_dev *fsg);
742 741
743 742
744/*-------------------------------------------------------------------------*/ 743/*-------------------------------------------------------------------------*/
@@ -3593,12 +3592,10 @@ static int fsg_main_thread(void *fsg_)
3593 fsg->thread_task = NULL; 3592 fsg->thread_task = NULL;
3594 spin_unlock_irq(&fsg->lock); 3593 spin_unlock_irq(&fsg->lock);
3595 3594
3596 /* In case we are exiting because of a signal, unregister the 3595 /* If we are exiting because of a signal, unregister the
3597 * gadget driver and close the backing file. */ 3596 * gadget driver. */
3598 if (test_and_clear_bit(REGISTERED, &fsg->atomic_bitflags)) { 3597 if (test_and_clear_bit(REGISTERED, &fsg->atomic_bitflags))
3599 usb_gadget_unregister_driver(&fsg_driver); 3598 usb_gadget_unregister_driver(&fsg_driver);
3600 close_all_backing_files(fsg);
3601 }
3602 3599
3603 /* Let the unbind and cleanup routines know the thread has exited */ 3600 /* Let the unbind and cleanup routines know the thread has exited */
3604 complete_and_exit(&fsg->thread_notifier, 0); 3601 complete_and_exit(&fsg->thread_notifier, 0);
@@ -3703,14 +3700,6 @@ static void close_backing_file(struct lun *curlun)
3703 } 3700 }
3704} 3701}
3705 3702
3706static void close_all_backing_files(struct fsg_dev *fsg)
3707{
3708 int i;
3709
3710 for (i = 0; i < fsg->nluns; ++i)
3711 close_backing_file(&fsg->luns[i]);
3712}
3713
3714 3703
3715static ssize_t show_ro(struct device *dev, struct device_attribute *attr, char *buf) 3704static ssize_t show_ro(struct device *dev, struct device_attribute *attr, char *buf)
3716{ 3705{
@@ -3845,6 +3834,7 @@ static void /* __init_or_exit */ fsg_unbind(struct usb_gadget *gadget)
3845 if (curlun->registered) { 3834 if (curlun->registered) {
3846 device_remove_file(&curlun->dev, &dev_attr_ro); 3835 device_remove_file(&curlun->dev, &dev_attr_ro);
3847 device_remove_file(&curlun->dev, &dev_attr_file); 3836 device_remove_file(&curlun->dev, &dev_attr_file);
3837 close_backing_file(curlun);
3848 device_unregister(&curlun->dev); 3838 device_unregister(&curlun->dev);
3849 curlun->registered = 0; 3839 curlun->registered = 0;
3850 } 3840 }
@@ -4190,7 +4180,6 @@ autoconf_fail:
4190out: 4180out:
4191 fsg->state = FSG_STATE_TERMINATED; // The thread is dead 4181 fsg->state = FSG_STATE_TERMINATED; // The thread is dead
4192 fsg_unbind(gadget); 4182 fsg_unbind(gadget);
4193 close_all_backing_files(fsg);
4194 complete(&fsg->thread_notifier); 4183 complete(&fsg->thread_notifier);
4195 return rc; 4184 return rc;
4196} 4185}
@@ -4284,7 +4273,6 @@ static void __exit fsg_cleanup(void)
4284 /* Wait for the thread to finish up */ 4273 /* Wait for the thread to finish up */
4285 wait_for_completion(&fsg->thread_notifier); 4274 wait_for_completion(&fsg->thread_notifier);
4286 4275
4287 close_all_backing_files(fsg);
4288 kref_put(&fsg->ref, fsg_release); 4276 kref_put(&fsg->ref, fsg_release);
4289} 4277}
4290module_exit(fsg_cleanup); 4278module_exit(fsg_cleanup);
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
index 57d9641c6bf8..a2db0e174f2c 100644
--- a/drivers/usb/gadget/omap_udc.c
+++ b/drivers/usb/gadget/omap_udc.c
@@ -3104,7 +3104,6 @@ static int omap_udc_resume(struct platform_device *dev)
3104/*-------------------------------------------------------------------------*/ 3104/*-------------------------------------------------------------------------*/
3105 3105
3106static struct platform_driver udc_driver = { 3106static struct platform_driver udc_driver = {
3107 .probe = omap_udc_probe,
3108 .remove = __exit_p(omap_udc_remove), 3107 .remove = __exit_p(omap_udc_remove),
3109 .suspend = omap_udc_suspend, 3108 .suspend = omap_udc_suspend,
3110 .resume = omap_udc_resume, 3109 .resume = omap_udc_resume,
@@ -3122,7 +3121,7 @@ static int __init udc_init(void)
3122#endif 3121#endif
3123 "%s\n", driver_desc, 3122 "%s\n", driver_desc,
3124 use_dma ? " (dma)" : ""); 3123 use_dma ? " (dma)" : "");
3125 return platform_driver_register(&udc_driver); 3124 return platform_driver_probe(&udc_driver, omap_udc_probe);
3126} 3125}
3127module_init(udc_init); 3126module_init(udc_init);
3128 3127
diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c
index 96d65ca06ecd..4007770f7ed2 100644
--- a/drivers/usb/gadget/u_ether.c
+++ b/drivers/usb/gadget/u_ether.c
@@ -175,12 +175,6 @@ static void eth_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *p)
175 strlcpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof p->bus_info); 175 strlcpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof p->bus_info);
176} 176}
177 177
178static u32 eth_get_link(struct net_device *net)
179{
180 struct eth_dev *dev = netdev_priv(net);
181 return dev->gadget->speed != USB_SPEED_UNKNOWN;
182}
183
184/* REVISIT can also support: 178/* REVISIT can also support:
185 * - WOL (by tracking suspends and issuing remote wakeup) 179 * - WOL (by tracking suspends and issuing remote wakeup)
186 * - msglevel (implies updated messaging) 180 * - msglevel (implies updated messaging)
@@ -189,7 +183,7 @@ static u32 eth_get_link(struct net_device *net)
189 183
190static struct ethtool_ops ops = { 184static struct ethtool_ops ops = {
191 .get_drvinfo = eth_get_drvinfo, 185 .get_drvinfo = eth_get_drvinfo,
192 .get_link = eth_get_link 186 .get_link = ethtool_op_get_link,
193}; 187};
194 188
195static void defer_kevent(struct eth_dev *dev, int flag) 189static void defer_kevent(struct eth_dev *dev, int flag)
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index ada5d2ba297b..556d0ec0c1f8 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -323,7 +323,7 @@ static int tt_available (
323 * already scheduled transactions 323 * already scheduled transactions
324 */ 324 */
325 if (125 < usecs) { 325 if (125 < usecs) {
326 int ufs = (usecs / 125) - 1; 326 int ufs = (usecs / 125);
327 int i; 327 int i;
328 for (i = uframe; i < (uframe + ufs) && i < 8; i++) 328 for (i = uframe; i < (uframe + ufs) && i < 8; i++)
329 if (0 < tt_usecs[i]) { 329 if (0 < tt_usecs[i]) {
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 4ed228a89943..bb5e6f671578 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -280,7 +280,7 @@ static int ohci_hcd_at91_drv_probe(struct platform_device *pdev)
280 * are always powered while this driver is active, and use 280 * are always powered while this driver is active, and use
281 * active-low power switches. 281 * active-low power switches.
282 */ 282 */
283 for (i = 0; i < pdata->ports; i++) { 283 for (i = 0; i < ARRAY_SIZE(pdata->vbus_pin); i++) {
284 if (pdata->vbus_pin[i] <= 0) 284 if (pdata->vbus_pin[i] <= 0)
285 continue; 285 continue;
286 gpio_request(pdata->vbus_pin[i], "ohci_vbus"); 286 gpio_request(pdata->vbus_pin[i], "ohci_vbus");
@@ -298,7 +298,7 @@ static int ohci_hcd_at91_drv_remove(struct platform_device *pdev)
298 int i; 298 int i;
299 299
300 if (pdata) { 300 if (pdata) {
301 for (i = 0; i < pdata->ports; i++) { 301 for (i = 0; i < ARRAY_SIZE(pdata->vbus_pin); i++) {
302 if (pdata->vbus_pin[i] <= 0) 302 if (pdata->vbus_pin[i] <= 0)
303 continue; 303 continue;
304 gpio_direction_output(pdata->vbus_pin[i], 1); 304 gpio_direction_output(pdata->vbus_pin[i], 1);
diff --git a/drivers/usb/host/whci/asl.c b/drivers/usb/host/whci/asl.c
index 958751ccea43..c2050785a819 100644
--- a/drivers/usb/host/whci/asl.c
+++ b/drivers/usb/host/whci/asl.c
@@ -122,7 +122,8 @@ static uint32_t process_qset(struct whc *whc, struct whc_qset *qset)
122 process_inactive_qtd(whc, qset, td); 122 process_inactive_qtd(whc, qset, td);
123 } 123 }
124 124
125 update |= qset_add_qtds(whc, qset); 125 if (!qset->remove)
126 update |= qset_add_qtds(whc, qset);
126 127
127done: 128done:
128 /* 129 /*
@@ -254,23 +255,29 @@ int asl_urb_enqueue(struct whc *whc, struct urb *urb, gfp_t mem_flags)
254 255
255 spin_lock_irqsave(&whc->lock, flags); 256 spin_lock_irqsave(&whc->lock, flags);
256 257
258 err = usb_hcd_link_urb_to_ep(&whc->wusbhc.usb_hcd, urb);
259 if (err < 0) {
260 spin_unlock_irqrestore(&whc->lock, flags);
261 return err;
262 }
263
257 qset = get_qset(whc, urb, GFP_ATOMIC); 264 qset = get_qset(whc, urb, GFP_ATOMIC);
258 if (qset == NULL) 265 if (qset == NULL)
259 err = -ENOMEM; 266 err = -ENOMEM;
260 else 267 else
261 err = qset_add_urb(whc, qset, urb, GFP_ATOMIC); 268 err = qset_add_urb(whc, qset, urb, GFP_ATOMIC);
262 if (!err) { 269 if (!err) {
263 usb_hcd_link_urb_to_ep(&whc->wusbhc.usb_hcd, urb);
264 if (!qset->in_sw_list) 270 if (!qset->in_sw_list)
265 asl_qset_insert_begin(whc, qset); 271 asl_qset_insert_begin(whc, qset);
266 } 272 } else
273 usb_hcd_unlink_urb_from_ep(&whc->wusbhc.usb_hcd, urb);
267 274
268 spin_unlock_irqrestore(&whc->lock, flags); 275 spin_unlock_irqrestore(&whc->lock, flags);
269 276
270 if (!err) 277 if (!err)
271 queue_work(whc->workqueue, &whc->async_work); 278 queue_work(whc->workqueue, &whc->async_work);
272 279
273 return 0; 280 return err;
274} 281}
275 282
276/** 283/**
diff --git a/drivers/usb/host/whci/hcd.c b/drivers/usb/host/whci/hcd.c
index 1569afd6245b..e019a5058ab8 100644
--- a/drivers/usb/host/whci/hcd.c
+++ b/drivers/usb/host/whci/hcd.c
@@ -186,6 +186,28 @@ static void whc_endpoint_disable(struct usb_hcd *usb_hcd,
186 } 186 }
187} 187}
188 188
189static void whc_endpoint_reset(struct usb_hcd *usb_hcd,
190 struct usb_host_endpoint *ep)
191{
192 struct wusbhc *wusbhc = usb_hcd_to_wusbhc(usb_hcd);
193 struct whc *whc = wusbhc_to_whc(wusbhc);
194 struct whc_qset *qset;
195
196 qset = ep->hcpriv;
197 if (qset) {
198 qset->remove = 1;
199
200 if (usb_endpoint_xfer_bulk(&ep->desc)
201 || usb_endpoint_xfer_control(&ep->desc))
202 queue_work(whc->workqueue, &whc->async_work);
203 else
204 queue_work(whc->workqueue, &whc->periodic_work);
205
206 qset_reset(whc, qset);
207 }
208}
209
210
189static struct hc_driver whc_hc_driver = { 211static struct hc_driver whc_hc_driver = {
190 .description = "whci-hcd", 212 .description = "whci-hcd",
191 .product_desc = "Wireless host controller", 213 .product_desc = "Wireless host controller",
@@ -200,6 +222,7 @@ static struct hc_driver whc_hc_driver = {
200 .urb_enqueue = whc_urb_enqueue, 222 .urb_enqueue = whc_urb_enqueue,
201 .urb_dequeue = whc_urb_dequeue, 223 .urb_dequeue = whc_urb_dequeue,
202 .endpoint_disable = whc_endpoint_disable, 224 .endpoint_disable = whc_endpoint_disable,
225 .endpoint_reset = whc_endpoint_reset,
203 226
204 .hub_status_data = wusbhc_rh_status_data, 227 .hub_status_data = wusbhc_rh_status_data,
205 .hub_control = wusbhc_rh_control, 228 .hub_control = wusbhc_rh_control,
diff --git a/drivers/usb/host/whci/pzl.c b/drivers/usb/host/whci/pzl.c
index df8b85f07092..ff4ef9e910d9 100644
--- a/drivers/usb/host/whci/pzl.c
+++ b/drivers/usb/host/whci/pzl.c
@@ -128,7 +128,8 @@ static enum whc_update pzl_process_qset(struct whc *whc, struct whc_qset *qset)
128 process_inactive_qtd(whc, qset, td); 128 process_inactive_qtd(whc, qset, td);
129 } 129 }
130 130
131 update |= qset_add_qtds(whc, qset); 131 if (!qset->remove)
132 update |= qset_add_qtds(whc, qset);
132 133
133done: 134done:
134 /* 135 /*
@@ -282,23 +283,29 @@ int pzl_urb_enqueue(struct whc *whc, struct urb *urb, gfp_t mem_flags)
282 283
283 spin_lock_irqsave(&whc->lock, flags); 284 spin_lock_irqsave(&whc->lock, flags);
284 285
286 err = usb_hcd_link_urb_to_ep(&whc->wusbhc.usb_hcd, urb);
287 if (err < 0) {
288 spin_unlock_irqrestore(&whc->lock, flags);
289 return err;
290 }
291
285 qset = get_qset(whc, urb, GFP_ATOMIC); 292 qset = get_qset(whc, urb, GFP_ATOMIC);
286 if (qset == NULL) 293 if (qset == NULL)
287 err = -ENOMEM; 294 err = -ENOMEM;
288 else 295 else
289 err = qset_add_urb(whc, qset, urb, GFP_ATOMIC); 296 err = qset_add_urb(whc, qset, urb, GFP_ATOMIC);
290 if (!err) { 297 if (!err) {
291 usb_hcd_link_urb_to_ep(&whc->wusbhc.usb_hcd, urb);
292 if (!qset->in_sw_list) 298 if (!qset->in_sw_list)
293 qset_insert_in_sw_list(whc, qset); 299 qset_insert_in_sw_list(whc, qset);
294 } 300 } else
301 usb_hcd_unlink_urb_from_ep(&whc->wusbhc.usb_hcd, urb);
295 302
296 spin_unlock_irqrestore(&whc->lock, flags); 303 spin_unlock_irqrestore(&whc->lock, flags);
297 304
298 if (!err) 305 if (!err)
299 queue_work(whc->workqueue, &whc->periodic_work); 306 queue_work(whc->workqueue, &whc->periodic_work);
300 307
301 return 0; 308 return err;
302} 309}
303 310
304/** 311/**
@@ -353,7 +360,6 @@ void pzl_qset_delete(struct whc *whc, struct whc_qset *qset)
353 qset_delete(whc, qset); 360 qset_delete(whc, qset);
354} 361}
355 362
356
357/** 363/**
358 * pzl_init - initialize the periodic zone list 364 * pzl_init - initialize the periodic zone list
359 * @whc: the WHCI host controller 365 * @whc: the WHCI host controller
diff --git a/drivers/usb/host/whci/qset.c b/drivers/usb/host/whci/qset.c
index 7be74314ee12..640b38fbd051 100644
--- a/drivers/usb/host/whci/qset.c
+++ b/drivers/usb/host/whci/qset.c
@@ -89,11 +89,16 @@ static void qset_fill_qh(struct whc_qset *qset, struct urb *urb)
89 QH_INFO3_TX_RATE_53_3 89 QH_INFO3_TX_RATE_53_3
90 | QH_INFO3_TX_PWR(0) /* 0 == max power */ 90 | QH_INFO3_TX_PWR(0) /* 0 == max power */
91 ); 91 );
92
93 qset->qh.cur_window = cpu_to_le32((1 << qset->max_burst) - 1);
92} 94}
93 95
94/** 96/**
95 * qset_clear - clear fields in a qset so it may be reinserted into a 97 * qset_clear - clear fields in a qset so it may be reinserted into a
96 * schedule 98 * schedule.
99 *
100 * The sequence number and current window are not cleared (see
101 * qset_reset()).
97 */ 102 */
98void qset_clear(struct whc *whc, struct whc_qset *qset) 103void qset_clear(struct whc *whc, struct whc_qset *qset)
99{ 104{
@@ -101,9 +106,8 @@ void qset_clear(struct whc *whc, struct whc_qset *qset)
101 qset->remove = 0; 106 qset->remove = 0;
102 107
103 qset->qh.link = cpu_to_le32(QH_LINK_NTDS(8) | QH_LINK_T); 108 qset->qh.link = cpu_to_le32(QH_LINK_NTDS(8) | QH_LINK_T);
104 qset->qh.status = cpu_to_le16(QH_STATUS_ICUR(qset->td_start)); 109 qset->qh.status = qset->qh.status & QH_STATUS_SEQ_MASK;
105 qset->qh.err_count = 0; 110 qset->qh.err_count = 0;
106 qset->qh.cur_window = cpu_to_le32((1 << qset->max_burst) - 1);
107 qset->qh.scratch[0] = 0; 111 qset->qh.scratch[0] = 0;
108 qset->qh.scratch[1] = 0; 112 qset->qh.scratch[1] = 0;
109 qset->qh.scratch[2] = 0; 113 qset->qh.scratch[2] = 0;
@@ -114,6 +118,20 @@ void qset_clear(struct whc *whc, struct whc_qset *qset)
114} 118}
115 119
116/** 120/**
121 * qset_reset - reset endpoint state in a qset.
122 *
123 * Clears the sequence number and current window. This qset must not
124 * be in the ASL or PZL.
125 */
126void qset_reset(struct whc *whc, struct whc_qset *qset)
127{
128 wait_for_completion(&qset->remove_complete);
129
130 qset->qh.status &= ~QH_STATUS_SEQ_MASK;
131 qset->qh.cur_window = cpu_to_le32((1 << qset->max_burst) - 1);
132}
133
134/**
117 * get_qset - get the qset for an async endpoint 135 * get_qset - get the qset for an async endpoint
118 * 136 *
119 * A new qset is created if one does not already exist. 137 * A new qset is created if one does not already exist.
diff --git a/drivers/usb/host/whci/whcd.h b/drivers/usb/host/whci/whcd.h
index d3543a181dc9..24e94d983c5e 100644
--- a/drivers/usb/host/whci/whcd.h
+++ b/drivers/usb/host/whci/whcd.h
@@ -184,6 +184,7 @@ void qset_free(struct whc *whc, struct whc_qset *qset);
184struct whc_qset *get_qset(struct whc *whc, struct urb *urb, gfp_t mem_flags); 184struct whc_qset *get_qset(struct whc *whc, struct urb *urb, gfp_t mem_flags);
185void qset_delete(struct whc *whc, struct whc_qset *qset); 185void qset_delete(struct whc *whc, struct whc_qset *qset);
186void qset_clear(struct whc *whc, struct whc_qset *qset); 186void qset_clear(struct whc *whc, struct whc_qset *qset);
187void qset_reset(struct whc *whc, struct whc_qset *qset);
187int qset_add_urb(struct whc *whc, struct whc_qset *qset, struct urb *urb, 188int qset_add_urb(struct whc *whc, struct whc_qset *qset, struct urb *urb,
188 gfp_t mem_flags); 189 gfp_t mem_flags);
189void qset_free_std(struct whc *whc, struct whc_std *std); 190void qset_free_std(struct whc *whc, struct whc_std *std);
diff --git a/drivers/usb/host/whci/whci-hc.h b/drivers/usb/host/whci/whci-hc.h
index 51df7e313b38..794dba0d0f0a 100644
--- a/drivers/usb/host/whci/whci-hc.h
+++ b/drivers/usb/host/whci/whci-hc.h
@@ -185,6 +185,7 @@ struct whc_qhead {
185#define QH_STATUS_FLOW_CTRL (1 << 15) 185#define QH_STATUS_FLOW_CTRL (1 << 15)
186#define QH_STATUS_ICUR(i) ((i) << 5) 186#define QH_STATUS_ICUR(i) ((i) << 5)
187#define QH_STATUS_TO_ICUR(s) (((s) >> 5) & 0x7) 187#define QH_STATUS_TO_ICUR(s) (((s) >> 5) & 0x7)
188#define QH_STATUS_SEQ_MASK 0x1f
188 189
189/** 190/**
190 * usb_pipe_to_qh_type - USB core pipe type to QH transfer type 191 * usb_pipe_to_qh_type - USB core pipe type to QH transfer type
diff --git a/drivers/usb/musb/cppi_dma.c b/drivers/usb/musb/cppi_dma.c
index 569ef0fed0f6..1976e9b41800 100644
--- a/drivers/usb/musb/cppi_dma.c
+++ b/drivers/usb/musb/cppi_dma.c
@@ -579,6 +579,7 @@ cppi_next_tx_segment(struct musb *musb, struct cppi_channel *tx)
579 * trigger the "send a ZLP?" confusion. 579 * trigger the "send a ZLP?" confusion.
580 */ 580 */
581 rndis = (maxpacket & 0x3f) == 0 581 rndis = (maxpacket & 0x3f) == 0
582 && length > maxpacket
582 && length < 0xffff 583 && length < 0xffff
583 && (length % maxpacket) != 0; 584 && (length % maxpacket) != 0;
584 585
@@ -1228,27 +1229,7 @@ void cppi_completion(struct musb *musb, u32 rx, u32 tx)
1228 1229
1229 hw_ep = tx_ch->hw_ep; 1230 hw_ep = tx_ch->hw_ep;
1230 1231
1231 /* Peripheral role never repurposes the 1232 musb_dma_completion(musb, index + 1, 1);
1232 * endpoint, so immediate completion is
1233 * safe. Host role waits for the fifo
1234 * to empty (TXPKTRDY irq) before going
1235 * to the next queued bulk transfer.
1236 */
1237 if (is_host_active(cppi->musb)) {
1238#if 0
1239 /* WORKAROUND because we may
1240 * not always get TXKPTRDY ...
1241 */
1242 int csr;
1243
1244 csr = musb_readw(hw_ep->regs,
1245 MUSB_TXCSR);
1246 if (csr & MUSB_TXCSR_TXPKTRDY)
1247#endif
1248 completed = false;
1249 }
1250 if (completed)
1251 musb_dma_completion(musb, index + 1, 1);
1252 1233
1253 } else { 1234 } else {
1254 /* Bigger transfer than we could fit in 1235 /* Bigger transfer than we could fit in
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 338cd1611ab3..4000cf6d1e81 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -2170,32 +2170,28 @@ static int musb_suspend(struct platform_device *pdev, pm_message_t message)
2170 return 0; 2170 return 0;
2171} 2171}
2172 2172
2173static int musb_resume(struct platform_device *pdev) 2173static int musb_resume_early(struct platform_device *pdev)
2174{ 2174{
2175 unsigned long flags;
2176 struct musb *musb = dev_to_musb(&pdev->dev); 2175 struct musb *musb = dev_to_musb(&pdev->dev);
2177 2176
2178 if (!musb->clock) 2177 if (!musb->clock)
2179 return 0; 2178 return 0;
2180 2179
2181 spin_lock_irqsave(&musb->lock, flags);
2182
2183 if (musb->set_clock) 2180 if (musb->set_clock)
2184 musb->set_clock(musb->clock, 1); 2181 musb->set_clock(musb->clock, 1);
2185 else 2182 else
2186 clk_enable(musb->clock); 2183 clk_enable(musb->clock);
2187 2184
2188 /* for static cmos like DaVinci, register values were preserved 2185 /* for static cmos like DaVinci, register values were preserved
2189 * unless for some reason the whole soc powered down and we're 2186 * unless for some reason the whole soc powered down or the USB
2190 * not treating that as a whole-system restart (e.g. swsusp) 2187 * module got reset through the PSC (vs just being disabled).
2191 */ 2188 */
2192 spin_unlock_irqrestore(&musb->lock, flags);
2193 return 0; 2189 return 0;
2194} 2190}
2195 2191
2196#else 2192#else
2197#define musb_suspend NULL 2193#define musb_suspend NULL
2198#define musb_resume NULL 2194#define musb_resume_early NULL
2199#endif 2195#endif
2200 2196
2201static struct platform_driver musb_driver = { 2197static struct platform_driver musb_driver = {
@@ -2207,7 +2203,7 @@ static struct platform_driver musb_driver = {
2207 .remove = __devexit_p(musb_remove), 2203 .remove = __devexit_p(musb_remove),
2208 .shutdown = musb_shutdown, 2204 .shutdown = musb_shutdown,
2209 .suspend = musb_suspend, 2205 .suspend = musb_suspend,
2210 .resume = musb_resume, 2206 .resume_early = musb_resume_early,
2211}; 2207};
2212 2208
2213/*-------------------------------------------------------------------------*/ 2209/*-------------------------------------------------------------------------*/
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index c7ebd0867fcc..f79440cdfe7e 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -165,9 +165,15 @@ static void nuke(struct musb_ep *ep, const int status)
165 if (is_dma_capable() && ep->dma) { 165 if (is_dma_capable() && ep->dma) {
166 struct dma_controller *c = ep->musb->dma_controller; 166 struct dma_controller *c = ep->musb->dma_controller;
167 int value; 167 int value;
168
168 if (ep->is_in) { 169 if (ep->is_in) {
170 /*
171 * The programming guide says that we must not clear
172 * the DMAMODE bit before DMAENAB, so we only
173 * clear it in the second write...
174 */
169 musb_writew(epio, MUSB_TXCSR, 175 musb_writew(epio, MUSB_TXCSR,
170 0 | MUSB_TXCSR_FLUSHFIFO); 176 MUSB_TXCSR_DMAMODE | MUSB_TXCSR_FLUSHFIFO);
171 musb_writew(epio, MUSB_TXCSR, 177 musb_writew(epio, MUSB_TXCSR,
172 0 | MUSB_TXCSR_FLUSHFIFO); 178 0 | MUSB_TXCSR_FLUSHFIFO);
173 } else { 179 } else {
@@ -230,7 +236,7 @@ static inline int max_ep_writesize(struct musb *musb, struct musb_ep *ep)
230 | IN token(s) are recd from Host. 236 | IN token(s) are recd from Host.
231 | -> DMA interrupt on completion 237 | -> DMA interrupt on completion
232 | calls TxAvail. 238 | calls TxAvail.
233 | -> stop DMA, ~DmaEenab, 239 | -> stop DMA, ~DMAENAB,
234 | -> set TxPktRdy for last short pkt or zlp 240 | -> set TxPktRdy for last short pkt or zlp
235 | -> Complete Request 241 | -> Complete Request
236 | -> Continue next request (call txstate) 242 | -> Continue next request (call txstate)
@@ -315,9 +321,17 @@ static void txstate(struct musb *musb, struct musb_request *req)
315 request->dma, request_size); 321 request->dma, request_size);
316 if (use_dma) { 322 if (use_dma) {
317 if (musb_ep->dma->desired_mode == 0) { 323 if (musb_ep->dma->desired_mode == 0) {
318 /* ASSERT: DMAENAB is clear */ 324 /*
319 csr &= ~(MUSB_TXCSR_AUTOSET | 325 * We must not clear the DMAMODE bit
320 MUSB_TXCSR_DMAMODE); 326 * before the DMAENAB bit -- and the
327 * latter doesn't always get cleared
328 * before we get here...
329 */
330 csr &= ~(MUSB_TXCSR_AUTOSET
331 | MUSB_TXCSR_DMAENAB);
332 musb_writew(epio, MUSB_TXCSR, csr
333 | MUSB_TXCSR_P_WZC_BITS);
334 csr &= ~MUSB_TXCSR_DMAMODE;
321 csr |= (MUSB_TXCSR_DMAENAB | 335 csr |= (MUSB_TXCSR_DMAENAB |
322 MUSB_TXCSR_MODE); 336 MUSB_TXCSR_MODE);
323 /* against programming guide */ 337 /* against programming guide */
@@ -334,10 +348,7 @@ static void txstate(struct musb *musb, struct musb_request *req)
334 348
335#elif defined(CONFIG_USB_TI_CPPI_DMA) 349#elif defined(CONFIG_USB_TI_CPPI_DMA)
336 /* program endpoint CSR first, then setup DMA */ 350 /* program endpoint CSR first, then setup DMA */
337 csr &= ~(MUSB_TXCSR_AUTOSET 351 csr &= ~(MUSB_TXCSR_P_UNDERRUN | MUSB_TXCSR_TXPKTRDY);
338 | MUSB_TXCSR_DMAMODE
339 | MUSB_TXCSR_P_UNDERRUN
340 | MUSB_TXCSR_TXPKTRDY);
341 csr |= MUSB_TXCSR_MODE | MUSB_TXCSR_DMAENAB; 352 csr |= MUSB_TXCSR_MODE | MUSB_TXCSR_DMAENAB;
342 musb_writew(epio, MUSB_TXCSR, 353 musb_writew(epio, MUSB_TXCSR,
343 (MUSB_TXCSR_P_WZC_BITS & ~MUSB_TXCSR_P_UNDERRUN) 354 (MUSB_TXCSR_P_WZC_BITS & ~MUSB_TXCSR_P_UNDERRUN)
@@ -364,8 +375,8 @@ static void txstate(struct musb *musb, struct musb_request *req)
364 if (!use_dma) { 375 if (!use_dma) {
365 c->channel_release(musb_ep->dma); 376 c->channel_release(musb_ep->dma);
366 musb_ep->dma = NULL; 377 musb_ep->dma = NULL;
367 /* ASSERT: DMAENAB clear */ 378 csr &= ~MUSB_TXCSR_DMAENAB;
368 csr &= ~(MUSB_TXCSR_DMAMODE | MUSB_TXCSR_MODE); 379 musb_writew(epio, MUSB_TXCSR, csr);
369 /* invariant: prequest->buf is non-null */ 380 /* invariant: prequest->buf is non-null */
370 } 381 }
371#elif defined(CONFIG_USB_TUSB_OMAP_DMA) 382#elif defined(CONFIG_USB_TUSB_OMAP_DMA)
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 499c431a6d62..db1b57415ec7 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -4,6 +4,7 @@
4 * Copyright 2005 Mentor Graphics Corporation 4 * Copyright 2005 Mentor Graphics Corporation
5 * Copyright (C) 2005-2006 by Texas Instruments 5 * Copyright (C) 2005-2006 by Texas Instruments
6 * Copyright (C) 2006-2007 Nokia Corporation 6 * Copyright (C) 2006-2007 Nokia Corporation
7 * Copyright (C) 2008-2009 MontaVista Software, Inc. <source@mvista.com>
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -96,8 +97,8 @@
96 97
97 98
98static void musb_ep_program(struct musb *musb, u8 epnum, 99static void musb_ep_program(struct musb *musb, u8 epnum,
99 struct urb *urb, unsigned int nOut, 100 struct urb *urb, int is_out,
100 u8 *buf, u32 len); 101 u8 *buf, u32 offset, u32 len);
101 102
102/* 103/*
103 * Clear TX fifo. Needed to avoid BABBLE errors. 104 * Clear TX fifo. Needed to avoid BABBLE errors.
@@ -125,6 +126,29 @@ static void musb_h_tx_flush_fifo(struct musb_hw_ep *ep)
125 } 126 }
126} 127}
127 128
129static void musb_h_ep0_flush_fifo(struct musb_hw_ep *ep)
130{
131 void __iomem *epio = ep->regs;
132 u16 csr;
133 int retries = 5;
134
135 /* scrub any data left in the fifo */
136 do {
137 csr = musb_readw(epio, MUSB_TXCSR);
138 if (!(csr & (MUSB_CSR0_TXPKTRDY | MUSB_CSR0_RXPKTRDY)))
139 break;
140 musb_writew(epio, MUSB_TXCSR, MUSB_CSR0_FLUSHFIFO);
141 csr = musb_readw(epio, MUSB_TXCSR);
142 udelay(10);
143 } while (--retries);
144
145 WARN(!retries, "Could not flush host TX%d fifo: csr: %04x\n",
146 ep->epnum, csr);
147
148 /* and reset for the next transfer */
149 musb_writew(epio, MUSB_TXCSR, 0);
150}
151
128/* 152/*
129 * Start transmit. Caller is responsible for locking shared resources. 153 * Start transmit. Caller is responsible for locking shared resources.
130 * musb must be locked. 154 * musb must be locked.
@@ -145,13 +169,15 @@ static inline void musb_h_tx_start(struct musb_hw_ep *ep)
145 169
146} 170}
147 171
148static inline void cppi_host_txdma_start(struct musb_hw_ep *ep) 172static inline void musb_h_tx_dma_start(struct musb_hw_ep *ep)
149{ 173{
150 u16 txcsr; 174 u16 txcsr;
151 175
152 /* NOTE: no locks here; caller should lock and select EP */ 176 /* NOTE: no locks here; caller should lock and select EP */
153 txcsr = musb_readw(ep->regs, MUSB_TXCSR); 177 txcsr = musb_readw(ep->regs, MUSB_TXCSR);
154 txcsr |= MUSB_TXCSR_DMAENAB | MUSB_TXCSR_H_WZC_BITS; 178 txcsr |= MUSB_TXCSR_DMAENAB | MUSB_TXCSR_H_WZC_BITS;
179 if (is_cppi_enabled())
180 txcsr |= MUSB_TXCSR_DMAMODE;
155 musb_writew(ep->regs, MUSB_TXCSR, txcsr); 181 musb_writew(ep->regs, MUSB_TXCSR, txcsr);
156} 182}
157 183
@@ -166,9 +192,10 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
166{ 192{
167 u16 frame; 193 u16 frame;
168 u32 len; 194 u32 len;
169 void *buf;
170 void __iomem *mbase = musb->mregs; 195 void __iomem *mbase = musb->mregs;
171 struct urb *urb = next_urb(qh); 196 struct urb *urb = next_urb(qh);
197 void *buf = urb->transfer_buffer;
198 u32 offset = 0;
172 struct musb_hw_ep *hw_ep = qh->hw_ep; 199 struct musb_hw_ep *hw_ep = qh->hw_ep;
173 unsigned pipe = urb->pipe; 200 unsigned pipe = urb->pipe;
174 u8 address = usb_pipedevice(pipe); 201 u8 address = usb_pipedevice(pipe);
@@ -191,7 +218,7 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
191 case USB_ENDPOINT_XFER_ISOC: 218 case USB_ENDPOINT_XFER_ISOC:
192 qh->iso_idx = 0; 219 qh->iso_idx = 0;
193 qh->frame = 0; 220 qh->frame = 0;
194 buf = urb->transfer_buffer + urb->iso_frame_desc[0].offset; 221 offset = urb->iso_frame_desc[0].offset;
195 len = urb->iso_frame_desc[0].length; 222 len = urb->iso_frame_desc[0].length;
196 break; 223 break;
197 default: /* bulk, interrupt */ 224 default: /* bulk, interrupt */
@@ -209,14 +236,14 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
209 case USB_ENDPOINT_XFER_ISOC: s = "-iso"; break; 236 case USB_ENDPOINT_XFER_ISOC: s = "-iso"; break;
210 default: s = "-intr"; break; 237 default: s = "-intr"; break;
211 }; s; }), 238 }; s; }),
212 epnum, buf, len); 239 epnum, buf + offset, len);
213 240
214 /* Configure endpoint */ 241 /* Configure endpoint */
215 if (is_in || hw_ep->is_shared_fifo) 242 if (is_in || hw_ep->is_shared_fifo)
216 hw_ep->in_qh = qh; 243 hw_ep->in_qh = qh;
217 else 244 else
218 hw_ep->out_qh = qh; 245 hw_ep->out_qh = qh;
219 musb_ep_program(musb, epnum, urb, !is_in, buf, len); 246 musb_ep_program(musb, epnum, urb, !is_in, buf, offset, len);
220 247
221 /* transmit may have more work: start it when it is time */ 248 /* transmit may have more work: start it when it is time */
222 if (is_in) 249 if (is_in)
@@ -227,7 +254,6 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
227 case USB_ENDPOINT_XFER_ISOC: 254 case USB_ENDPOINT_XFER_ISOC:
228 case USB_ENDPOINT_XFER_INT: 255 case USB_ENDPOINT_XFER_INT:
229 DBG(3, "check whether there's still time for periodic Tx\n"); 256 DBG(3, "check whether there's still time for periodic Tx\n");
230 qh->iso_idx = 0;
231 frame = musb_readw(mbase, MUSB_FRAME); 257 frame = musb_readw(mbase, MUSB_FRAME);
232 /* FIXME this doesn't implement that scheduling policy ... 258 /* FIXME this doesn't implement that scheduling policy ...
233 * or handle framecounter wrapping 259 * or handle framecounter wrapping
@@ -256,7 +282,7 @@ start:
256 if (!hw_ep->tx_channel) 282 if (!hw_ep->tx_channel)
257 musb_h_tx_start(hw_ep); 283 musb_h_tx_start(hw_ep);
258 else if (is_cppi_enabled() || tusb_dma_omap()) 284 else if (is_cppi_enabled() || tusb_dma_omap())
259 cppi_host_txdma_start(hw_ep); 285 musb_h_tx_dma_start(hw_ep);
260 } 286 }
261} 287}
262 288
@@ -567,10 +593,17 @@ musb_rx_reinit(struct musb *musb, struct musb_qh *qh, struct musb_hw_ep *ep)
567 csr = musb_readw(ep->regs, MUSB_TXCSR); 593 csr = musb_readw(ep->regs, MUSB_TXCSR);
568 if (csr & MUSB_TXCSR_MODE) { 594 if (csr & MUSB_TXCSR_MODE) {
569 musb_h_tx_flush_fifo(ep); 595 musb_h_tx_flush_fifo(ep);
596 csr = musb_readw(ep->regs, MUSB_TXCSR);
570 musb_writew(ep->regs, MUSB_TXCSR, 597 musb_writew(ep->regs, MUSB_TXCSR,
571 MUSB_TXCSR_FRCDATATOG); 598 csr | MUSB_TXCSR_FRCDATATOG);
572 } 599 }
573 /* clear mode (and everything else) to enable Rx */ 600
601 /*
602 * Clear the MODE bit (and everything else) to enable Rx.
603 * NOTE: we mustn't clear the DMAMODE bit before DMAENAB.
604 */
605 if (csr & MUSB_TXCSR_DMAMODE)
606 musb_writew(ep->regs, MUSB_TXCSR, MUSB_TXCSR_DMAMODE);
574 musb_writew(ep->regs, MUSB_TXCSR, 0); 607 musb_writew(ep->regs, MUSB_TXCSR, 0);
575 608
576 /* scrub all previous state, clearing toggle */ 609 /* scrub all previous state, clearing toggle */
@@ -601,14 +634,68 @@ musb_rx_reinit(struct musb *musb, struct musb_qh *qh, struct musb_hw_ep *ep)
601 ep->rx_reinit = 0; 634 ep->rx_reinit = 0;
602} 635}
603 636
637static bool musb_tx_dma_program(struct dma_controller *dma,
638 struct musb_hw_ep *hw_ep, struct musb_qh *qh,
639 struct urb *urb, u32 offset, u32 length)
640{
641 struct dma_channel *channel = hw_ep->tx_channel;
642 void __iomem *epio = hw_ep->regs;
643 u16 pkt_size = qh->maxpacket;
644 u16 csr;
645 u8 mode;
646
647#ifdef CONFIG_USB_INVENTRA_DMA
648 if (length > channel->max_len)
649 length = channel->max_len;
650
651 csr = musb_readw(epio, MUSB_TXCSR);
652 if (length > pkt_size) {
653 mode = 1;
654 csr |= MUSB_TXCSR_AUTOSET
655 | MUSB_TXCSR_DMAMODE
656 | MUSB_TXCSR_DMAENAB;
657 } else {
658 mode = 0;
659 csr &= ~(MUSB_TXCSR_AUTOSET | MUSB_TXCSR_DMAMODE);
660 csr |= MUSB_TXCSR_DMAENAB; /* against programmer's guide */
661 }
662 channel->desired_mode = mode;
663 musb_writew(epio, MUSB_TXCSR, csr);
664#else
665 if (!is_cppi_enabled() && !tusb_dma_omap())
666 return false;
667
668 channel->actual_len = 0;
669
670 /*
671 * TX uses "RNDIS" mode automatically but needs help
672 * to identify the zero-length-final-packet case.
673 */
674 mode = (urb->transfer_flags & URB_ZERO_PACKET) ? 1 : 0;
675#endif
676
677 qh->segsize = length;
678
679 if (!dma->channel_program(channel, pkt_size, mode,
680 urb->transfer_dma + offset, length)) {
681 dma->channel_release(channel);
682 hw_ep->tx_channel = NULL;
683
684 csr = musb_readw(epio, MUSB_TXCSR);
685 csr &= ~(MUSB_TXCSR_AUTOSET | MUSB_TXCSR_DMAENAB);
686 musb_writew(epio, MUSB_TXCSR, csr | MUSB_TXCSR_H_WZC_BITS);
687 return false;
688 }
689 return true;
690}
604 691
605/* 692/*
606 * Program an HDRC endpoint as per the given URB 693 * Program an HDRC endpoint as per the given URB
607 * Context: irqs blocked, controller lock held 694 * Context: irqs blocked, controller lock held
608 */ 695 */
609static void musb_ep_program(struct musb *musb, u8 epnum, 696static void musb_ep_program(struct musb *musb, u8 epnum,
610 struct urb *urb, unsigned int is_out, 697 struct urb *urb, int is_out,
611 u8 *buf, u32 len) 698 u8 *buf, u32 offset, u32 len)
612{ 699{
613 struct dma_controller *dma_controller; 700 struct dma_controller *dma_controller;
614 struct dma_channel *dma_channel; 701 struct dma_channel *dma_channel;
@@ -667,12 +754,17 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
667 754
668 /* general endpoint setup */ 755 /* general endpoint setup */
669 if (epnum) { 756 if (epnum) {
670 /* ASSERT: TXCSR_DMAENAB was already cleared */
671
672 /* flush all old state, set default */ 757 /* flush all old state, set default */
673 musb_h_tx_flush_fifo(hw_ep); 758 musb_h_tx_flush_fifo(hw_ep);
759
760 /*
761 * We must not clear the DMAMODE bit before or in
762 * the same cycle with the DMAENAB bit, so we clear
763 * the latter first...
764 */
674 csr &= ~(MUSB_TXCSR_H_NAKTIMEOUT 765 csr &= ~(MUSB_TXCSR_H_NAKTIMEOUT
675 | MUSB_TXCSR_DMAMODE 766 | MUSB_TXCSR_AUTOSET
767 | MUSB_TXCSR_DMAENAB
676 | MUSB_TXCSR_FRCDATATOG 768 | MUSB_TXCSR_FRCDATATOG
677 | MUSB_TXCSR_H_RXSTALL 769 | MUSB_TXCSR_H_RXSTALL
678 | MUSB_TXCSR_H_ERROR 770 | MUSB_TXCSR_H_ERROR
@@ -680,24 +772,20 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
680 ); 772 );
681 csr |= MUSB_TXCSR_MODE; 773 csr |= MUSB_TXCSR_MODE;
682 774
683 if (usb_gettoggle(urb->dev, 775 if (usb_gettoggle(urb->dev, qh->epnum, 1))
684 qh->epnum, 1))
685 csr |= MUSB_TXCSR_H_WR_DATATOGGLE 776 csr |= MUSB_TXCSR_H_WR_DATATOGGLE
686 | MUSB_TXCSR_H_DATATOGGLE; 777 | MUSB_TXCSR_H_DATATOGGLE;
687 else 778 else
688 csr |= MUSB_TXCSR_CLRDATATOG; 779 csr |= MUSB_TXCSR_CLRDATATOG;
689 780
690 /* twice in case of double packet buffering */
691 musb_writew(epio, MUSB_TXCSR, csr); 781 musb_writew(epio, MUSB_TXCSR, csr);
692 /* REVISIT may need to clear FLUSHFIFO ... */ 782 /* REVISIT may need to clear FLUSHFIFO ... */
783 csr &= ~MUSB_TXCSR_DMAMODE;
693 musb_writew(epio, MUSB_TXCSR, csr); 784 musb_writew(epio, MUSB_TXCSR, csr);
694 csr = musb_readw(epio, MUSB_TXCSR); 785 csr = musb_readw(epio, MUSB_TXCSR);
695 } else { 786 } else {
696 /* endpoint 0: just flush */ 787 /* endpoint 0: just flush */
697 musb_writew(epio, MUSB_CSR0, 788 musb_h_ep0_flush_fifo(hw_ep);
698 csr | MUSB_CSR0_FLUSHFIFO);
699 musb_writew(epio, MUSB_CSR0,
700 csr | MUSB_CSR0_FLUSHFIFO);
701 } 789 }
702 790
703 /* target addr and (for multipoint) hub addr/port */ 791 /* target addr and (for multipoint) hub addr/port */
@@ -734,113 +822,14 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
734 else 822 else
735 load_count = min((u32) packet_sz, len); 823 load_count = min((u32) packet_sz, len);
736 824
737#ifdef CONFIG_USB_INVENTRA_DMA 825 if (dma_channel && musb_tx_dma_program(dma_controller,
738 if (dma_channel) { 826 hw_ep, qh, urb, offset, len))
739 827 load_count = 0;
740 /* clear previous state */
741 csr = musb_readw(epio, MUSB_TXCSR);
742 csr &= ~(MUSB_TXCSR_AUTOSET
743 | MUSB_TXCSR_DMAMODE
744 | MUSB_TXCSR_DMAENAB);
745 csr |= MUSB_TXCSR_MODE;
746 musb_writew(epio, MUSB_TXCSR,
747 csr | MUSB_TXCSR_MODE);
748
749 qh->segsize = min(len, dma_channel->max_len);
750
751 if (qh->segsize <= packet_sz)
752 dma_channel->desired_mode = 0;
753 else
754 dma_channel->desired_mode = 1;
755
756
757 if (dma_channel->desired_mode == 0) {
758 csr &= ~(MUSB_TXCSR_AUTOSET
759 | MUSB_TXCSR_DMAMODE);
760 csr |= (MUSB_TXCSR_DMAENAB);
761 /* against programming guide */
762 } else
763 csr |= (MUSB_TXCSR_AUTOSET
764 | MUSB_TXCSR_DMAENAB
765 | MUSB_TXCSR_DMAMODE);
766
767 musb_writew(epio, MUSB_TXCSR, csr);
768
769 dma_ok = dma_controller->channel_program(
770 dma_channel, packet_sz,
771 dma_channel->desired_mode,
772 urb->transfer_dma,
773 qh->segsize);
774 if (dma_ok) {
775 load_count = 0;
776 } else {
777 dma_controller->channel_release(dma_channel);
778 if (is_out)
779 hw_ep->tx_channel = NULL;
780 else
781 hw_ep->rx_channel = NULL;
782 dma_channel = NULL;
783 }
784 }
785#endif
786
787 /* candidate for DMA */
788 if ((is_cppi_enabled() || tusb_dma_omap()) && dma_channel) {
789
790 /* program endpoint CSRs first, then setup DMA.
791 * assume CPPI setup succeeds.
792 * defer enabling dma.
793 */
794 csr = musb_readw(epio, MUSB_TXCSR);
795 csr &= ~(MUSB_TXCSR_AUTOSET
796 | MUSB_TXCSR_DMAMODE
797 | MUSB_TXCSR_DMAENAB);
798 csr |= MUSB_TXCSR_MODE;
799 musb_writew(epio, MUSB_TXCSR,
800 csr | MUSB_TXCSR_MODE);
801
802 dma_channel->actual_len = 0L;
803 qh->segsize = len;
804
805 /* TX uses "rndis" mode automatically, but needs help
806 * to identify the zero-length-final-packet case.
807 */
808 dma_ok = dma_controller->channel_program(
809 dma_channel, packet_sz,
810 (urb->transfer_flags
811 & URB_ZERO_PACKET)
812 == URB_ZERO_PACKET,
813 urb->transfer_dma,
814 qh->segsize);
815 if (dma_ok) {
816 load_count = 0;
817 } else {
818 dma_controller->channel_release(dma_channel);
819 hw_ep->tx_channel = NULL;
820 dma_channel = NULL;
821
822 /* REVISIT there's an error path here that
823 * needs handling: can't do dma, but
824 * there's no pio buffer address...
825 */
826 }
827 }
828 828
829 if (load_count) { 829 if (load_count) {
830 /* ASSERT: TXCSR_DMAENAB was already cleared */
831
832 /* PIO to load FIFO */ 830 /* PIO to load FIFO */
833 qh->segsize = load_count; 831 qh->segsize = load_count;
834 musb_write_fifo(hw_ep, load_count, buf); 832 musb_write_fifo(hw_ep, load_count, buf);
835 csr = musb_readw(epio, MUSB_TXCSR);
836 csr &= ~(MUSB_TXCSR_DMAENAB
837 | MUSB_TXCSR_DMAMODE
838 | MUSB_TXCSR_AUTOSET);
839 /* write CSR */
840 csr |= MUSB_TXCSR_MODE;
841
842 if (epnum)
843 musb_writew(epio, MUSB_TXCSR, csr);
844 } 833 }
845 834
846 /* re-enable interrupt */ 835 /* re-enable interrupt */
@@ -895,7 +884,7 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
895 dma_channel, packet_sz, 884 dma_channel, packet_sz,
896 !(urb->transfer_flags 885 !(urb->transfer_flags
897 & URB_SHORT_NOT_OK), 886 & URB_SHORT_NOT_OK),
898 urb->transfer_dma, 887 urb->transfer_dma + offset,
899 qh->segsize); 888 qh->segsize);
900 if (!dma_ok) { 889 if (!dma_ok) {
901 dma_controller->channel_release( 890 dma_controller->channel_release(
@@ -1063,11 +1052,7 @@ irqreturn_t musb_h_ep0_irq(struct musb *musb)
1063 csr &= ~MUSB_CSR0_H_NAKTIMEOUT; 1052 csr &= ~MUSB_CSR0_H_NAKTIMEOUT;
1064 musb_writew(epio, MUSB_CSR0, csr); 1053 musb_writew(epio, MUSB_CSR0, csr);
1065 } else { 1054 } else {
1066 csr |= MUSB_CSR0_FLUSHFIFO; 1055 musb_h_ep0_flush_fifo(hw_ep);
1067 musb_writew(epio, MUSB_CSR0, csr);
1068 musb_writew(epio, MUSB_CSR0, csr);
1069 csr &= ~MUSB_CSR0_H_NAKTIMEOUT;
1070 musb_writew(epio, MUSB_CSR0, csr);
1071 } 1056 }
1072 1057
1073 musb_writeb(epio, MUSB_NAKLIMIT0, 0); 1058 musb_writeb(epio, MUSB_NAKLIMIT0, 0);
@@ -1081,10 +1066,7 @@ irqreturn_t musb_h_ep0_irq(struct musb *musb)
1081 * SHOULD NEVER HAPPEN! */ 1066 * SHOULD NEVER HAPPEN! */
1082 ERR("no URB for end 0\n"); 1067 ERR("no URB for end 0\n");
1083 1068
1084 musb_writew(epio, MUSB_CSR0, MUSB_CSR0_FLUSHFIFO); 1069 musb_h_ep0_flush_fifo(hw_ep);
1085 musb_writew(epio, MUSB_CSR0, MUSB_CSR0_FLUSHFIFO);
1086 musb_writew(epio, MUSB_CSR0, 0);
1087
1088 goto done; 1070 goto done;
1089 } 1071 }
1090 1072
@@ -1145,8 +1127,8 @@ void musb_host_tx(struct musb *musb, u8 epnum)
1145 int pipe; 1127 int pipe;
1146 bool done = false; 1128 bool done = false;
1147 u16 tx_csr; 1129 u16 tx_csr;
1148 size_t wLength = 0; 1130 size_t length = 0;
1149 u8 *buf = NULL; 1131 size_t offset = 0;
1150 struct urb *urb; 1132 struct urb *urb;
1151 struct musb_hw_ep *hw_ep = musb->endpoints + epnum; 1133 struct musb_hw_ep *hw_ep = musb->endpoints + epnum;
1152 void __iomem *epio = hw_ep->regs; 1134 void __iomem *epio = hw_ep->regs;
@@ -1164,7 +1146,7 @@ void musb_host_tx(struct musb *musb, u8 epnum)
1164 /* with CPPI, DMA sometimes triggers "extra" irqs */ 1146 /* with CPPI, DMA sometimes triggers "extra" irqs */
1165 if (!urb) { 1147 if (!urb) {
1166 DBG(4, "extra TX%d ready, csr %04x\n", epnum, tx_csr); 1148 DBG(4, "extra TX%d ready, csr %04x\n", epnum, tx_csr);
1167 goto finish; 1149 return;
1168 } 1150 }
1169 1151
1170 pipe = urb->pipe; 1152 pipe = urb->pipe;
@@ -1201,7 +1183,7 @@ void musb_host_tx(struct musb *musb, u8 epnum)
1201 musb_writew(epio, MUSB_TXCSR, 1183 musb_writew(epio, MUSB_TXCSR,
1202 MUSB_TXCSR_H_WZC_BITS 1184 MUSB_TXCSR_H_WZC_BITS
1203 | MUSB_TXCSR_TXPKTRDY); 1185 | MUSB_TXCSR_TXPKTRDY);
1204 goto finish; 1186 return;
1205 } 1187 }
1206 1188
1207 if (status) { 1189 if (status) {
@@ -1233,29 +1215,89 @@ void musb_host_tx(struct musb *musb, u8 epnum)
1233 /* second cppi case */ 1215 /* second cppi case */
1234 if (dma_channel_status(dma) == MUSB_DMA_STATUS_BUSY) { 1216 if (dma_channel_status(dma) == MUSB_DMA_STATUS_BUSY) {
1235 DBG(4, "extra TX%d ready, csr %04x\n", epnum, tx_csr); 1217 DBG(4, "extra TX%d ready, csr %04x\n", epnum, tx_csr);
1236 goto finish; 1218 return;
1219 }
1220
1221 if (is_dma_capable() && dma && !status) {
1222 /*
1223 * DMA has completed. But if we're using DMA mode 1 (multi
1224 * packet DMA), we need a terminal TXPKTRDY interrupt before
1225 * we can consider this transfer completed, lest we trash
1226 * its last packet when writing the next URB's data. So we
1227 * switch back to mode 0 to get that interrupt; we'll come
1228 * back here once it happens.
1229 */
1230 if (tx_csr & MUSB_TXCSR_DMAMODE) {
1231 /*
1232 * We shouldn't clear DMAMODE with DMAENAB set; so
1233 * clear them in a safe order. That should be OK
1234 * once TXPKTRDY has been set (and I've never seen
1235 * it being 0 at this moment -- DMA interrupt latency
1236 * is significant) but if it hasn't been then we have
1237 * no choice but to stop being polite and ignore the
1238 * programmer's guide... :-)
1239 *
1240 * Note that we must write TXCSR with TXPKTRDY cleared
1241 * in order not to re-trigger the packet send (this bit
1242 * can't be cleared by CPU), and there's another caveat:
1243 * TXPKTRDY may be set shortly and then cleared in the
1244 * double-buffered FIFO mode, so we do an extra TXCSR
1245 * read for debouncing...
1246 */
1247 tx_csr &= musb_readw(epio, MUSB_TXCSR);
1248 if (tx_csr & MUSB_TXCSR_TXPKTRDY) {
1249 tx_csr &= ~(MUSB_TXCSR_DMAENAB |
1250 MUSB_TXCSR_TXPKTRDY);
1251 musb_writew(epio, MUSB_TXCSR,
1252 tx_csr | MUSB_TXCSR_H_WZC_BITS);
1253 }
1254 tx_csr &= ~(MUSB_TXCSR_DMAMODE |
1255 MUSB_TXCSR_TXPKTRDY);
1256 musb_writew(epio, MUSB_TXCSR,
1257 tx_csr | MUSB_TXCSR_H_WZC_BITS);
1258
1259 /*
1260 * There is no guarantee that we'll get an interrupt
1261 * after clearing DMAMODE as we might have done this
1262 * too late (after TXPKTRDY was cleared by controller).
1263 * Re-read TXCSR as we have spoiled its previous value.
1264 */
1265 tx_csr = musb_readw(epio, MUSB_TXCSR);
1266 }
1237 1267
1268 /*
1269 * We may get here from a DMA completion or TXPKTRDY interrupt.
1270 * In any case, we must check the FIFO status here and bail out
1271 * only if the FIFO still has data -- that should prevent the
1272 * "missed" TXPKTRDY interrupts and deal with double-buffered
1273 * FIFO mode too...
1274 */
1275 if (tx_csr & (MUSB_TXCSR_FIFONOTEMPTY | MUSB_TXCSR_TXPKTRDY)) {
1276 DBG(2, "DMA complete but packet still in FIFO, "
1277 "CSR %04x\n", tx_csr);
1278 return;
1279 }
1238 } 1280 }
1239 1281
1240 /* REVISIT this looks wrong... */
1241 if (!status || dma || usb_pipeisoc(pipe)) { 1282 if (!status || dma || usb_pipeisoc(pipe)) {
1242 if (dma) 1283 if (dma)
1243 wLength = dma->actual_len; 1284 length = dma->actual_len;
1244 else 1285 else
1245 wLength = qh->segsize; 1286 length = qh->segsize;
1246 qh->offset += wLength; 1287 qh->offset += length;
1247 1288
1248 if (usb_pipeisoc(pipe)) { 1289 if (usb_pipeisoc(pipe)) {
1249 struct usb_iso_packet_descriptor *d; 1290 struct usb_iso_packet_descriptor *d;
1250 1291
1251 d = urb->iso_frame_desc + qh->iso_idx; 1292 d = urb->iso_frame_desc + qh->iso_idx;
1252 d->actual_length = qh->segsize; 1293 d->actual_length = length;
1294 d->status = status;
1253 if (++qh->iso_idx >= urb->number_of_packets) { 1295 if (++qh->iso_idx >= urb->number_of_packets) {
1254 done = true; 1296 done = true;
1255 } else { 1297 } else {
1256 d++; 1298 d++;
1257 buf = urb->transfer_buffer + d->offset; 1299 offset = d->offset;
1258 wLength = d->length; 1300 length = d->length;
1259 } 1301 }
1260 } else if (dma) { 1302 } else if (dma) {
1261 done = true; 1303 done = true;
@@ -1268,10 +1310,8 @@ void musb_host_tx(struct musb *musb, u8 epnum)
1268 & URB_ZERO_PACKET)) 1310 & URB_ZERO_PACKET))
1269 done = true; 1311 done = true;
1270 if (!done) { 1312 if (!done) {
1271 buf = urb->transfer_buffer 1313 offset = qh->offset;
1272 + qh->offset; 1314 length = urb->transfer_buffer_length - offset;
1273 wLength = urb->transfer_buffer_length
1274 - qh->offset;
1275 } 1315 }
1276 } 1316 }
1277 } 1317 }
@@ -1290,28 +1330,31 @@ void musb_host_tx(struct musb *musb, u8 epnum)
1290 urb->status = status; 1330 urb->status = status;
1291 urb->actual_length = qh->offset; 1331 urb->actual_length = qh->offset;
1292 musb_advance_schedule(musb, urb, hw_ep, USB_DIR_OUT); 1332 musb_advance_schedule(musb, urb, hw_ep, USB_DIR_OUT);
1333 return;
1334 } else if (usb_pipeisoc(pipe) && dma) {
1335 if (musb_tx_dma_program(musb->dma_controller, hw_ep, qh, urb,
1336 offset, length))
1337 return;
1338 } else if (tx_csr & MUSB_TXCSR_DMAENAB) {
1339 DBG(1, "not complete, but DMA enabled?\n");
1340 return;
1341 }
1293 1342
1294 } else if (!(tx_csr & MUSB_TXCSR_DMAENAB)) { 1343 /*
1295 /* WARN_ON(!buf); */ 1344 * PIO: start next packet in this URB.
1296 1345 *
1297 /* REVISIT: some docs say that when hw_ep->tx_double_buffered, 1346 * REVISIT: some docs say that when hw_ep->tx_double_buffered,
1298 * (and presumably, fifo is not half-full) we should write TWO 1347 * (and presumably, FIFO is not half-full) we should write *two*
1299 * packets before updating TXCSR ... other docs disagree ... 1348 * packets before updating TXCSR; other docs disagree...
1300 */ 1349 */
1301 /* PIO: start next packet in this URB */ 1350 if (length > qh->maxpacket)
1302 if (wLength > qh->maxpacket) 1351 length = qh->maxpacket;
1303 wLength = qh->maxpacket; 1352 musb_write_fifo(hw_ep, length, urb->transfer_buffer + offset);
1304 musb_write_fifo(hw_ep, wLength, buf); 1353 qh->segsize = length;
1305 qh->segsize = wLength;
1306
1307 musb_ep_select(mbase, epnum);
1308 musb_writew(epio, MUSB_TXCSR,
1309 MUSB_TXCSR_H_WZC_BITS | MUSB_TXCSR_TXPKTRDY);
1310 } else
1311 DBG(1, "not complete, but dma enabled?\n");
1312 1354
1313finish: 1355 musb_ep_select(mbase, epnum);
1314 return; 1356 musb_writew(epio, MUSB_TXCSR,
1357 MUSB_TXCSR_H_WZC_BITS | MUSB_TXCSR_TXPKTRDY);
1315} 1358}
1316 1359
1317 1360
@@ -1841,7 +1884,7 @@ static int musb_urb_enqueue(
1841 unsigned long flags; 1884 unsigned long flags;
1842 struct musb *musb = hcd_to_musb(hcd); 1885 struct musb *musb = hcd_to_musb(hcd);
1843 struct usb_host_endpoint *hep = urb->ep; 1886 struct usb_host_endpoint *hep = urb->ep;
1844 struct musb_qh *qh = hep->hcpriv; 1887 struct musb_qh *qh;
1845 struct usb_endpoint_descriptor *epd = &hep->desc; 1888 struct usb_endpoint_descriptor *epd = &hep->desc;
1846 int ret; 1889 int ret;
1847 unsigned type_reg; 1890 unsigned type_reg;
@@ -1853,22 +1896,21 @@ static int musb_urb_enqueue(
1853 1896
1854 spin_lock_irqsave(&musb->lock, flags); 1897 spin_lock_irqsave(&musb->lock, flags);
1855 ret = usb_hcd_link_urb_to_ep(hcd, urb); 1898 ret = usb_hcd_link_urb_to_ep(hcd, urb);
1899 qh = ret ? NULL : hep->hcpriv;
1900 if (qh)
1901 urb->hcpriv = qh;
1856 spin_unlock_irqrestore(&musb->lock, flags); 1902 spin_unlock_irqrestore(&musb->lock, flags);
1857 if (ret)
1858 return ret;
1859 1903
1860 /* DMA mapping was already done, if needed, and this urb is on 1904 /* DMA mapping was already done, if needed, and this urb is on
1861 * hep->urb_list ... so there's little to do unless hep wasn't 1905 * hep->urb_list now ... so we're done, unless hep wasn't yet
1862 * yet scheduled onto a live qh. 1906 * scheduled onto a live qh.
1863 * 1907 *
1864 * REVISIT best to keep hep->hcpriv valid until the endpoint gets 1908 * REVISIT best to keep hep->hcpriv valid until the endpoint gets
1865 * disabled, testing for empty qh->ring and avoiding qh setup costs 1909 * disabled, testing for empty qh->ring and avoiding qh setup costs
1866 * except for the first urb queued after a config change. 1910 * except for the first urb queued after a config change.
1867 */ 1911 */
1868 if (qh) { 1912 if (qh || ret)
1869 urb->hcpriv = qh; 1913 return ret;
1870 return 0;
1871 }
1872 1914
1873 /* Allocate and initialize qh, minimizing the work done each time 1915 /* Allocate and initialize qh, minimizing the work done each time
1874 * hw_ep gets reprogrammed, or with irqs blocked. Then schedule it. 1916 * hw_ep gets reprogrammed, or with irqs blocked. Then schedule it.
@@ -2044,7 +2086,7 @@ static int musb_cleanup_urb(struct urb *urb, struct musb_qh *qh, int is_in)
2044 * endpoint's irq status here to avoid bogus irqs. 2086 * endpoint's irq status here to avoid bogus irqs.
2045 * clearing that status is platform-specific... 2087 * clearing that status is platform-specific...
2046 */ 2088 */
2047 } else { 2089 } else if (ep->epnum) {
2048 musb_h_tx_flush_fifo(ep); 2090 musb_h_tx_flush_fifo(ep);
2049 csr = musb_readw(epio, MUSB_TXCSR); 2091 csr = musb_readw(epio, MUSB_TXCSR);
2050 csr &= ~(MUSB_TXCSR_AUTOSET 2092 csr &= ~(MUSB_TXCSR_AUTOSET
@@ -2058,6 +2100,8 @@ static int musb_cleanup_urb(struct urb *urb, struct musb_qh *qh, int is_in)
2058 musb_writew(epio, MUSB_TXCSR, csr); 2100 musb_writew(epio, MUSB_TXCSR, csr);
2059 /* flush cpu writebuffer */ 2101 /* flush cpu writebuffer */
2060 csr = musb_readw(epio, MUSB_TXCSR); 2102 csr = musb_readw(epio, MUSB_TXCSR);
2103 } else {
2104 musb_h_ep0_flush_fifo(ep);
2061 } 2105 }
2062 if (status == 0) 2106 if (status == 0)
2063 musb_advance_schedule(ep->musb, urb, ep, is_in); 2107 musb_advance_schedule(ep->musb, urb, ep, is_in);
diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c
index 8662e9e159c3..5e83f96d6b77 100644
--- a/drivers/usb/musb/musbhsdma.c
+++ b/drivers/usb/musb/musbhsdma.c
@@ -195,30 +195,32 @@ static int dma_channel_abort(struct dma_channel *channel)
195 void __iomem *mbase = musb_channel->controller->base; 195 void __iomem *mbase = musb_channel->controller->base;
196 196
197 u8 bchannel = musb_channel->idx; 197 u8 bchannel = musb_channel->idx;
198 int offset;
198 u16 csr; 199 u16 csr;
199 200
200 if (channel->status == MUSB_DMA_STATUS_BUSY) { 201 if (channel->status == MUSB_DMA_STATUS_BUSY) {
201 if (musb_channel->transmit) { 202 if (musb_channel->transmit) {
202 203 offset = MUSB_EP_OFFSET(musb_channel->epnum,
203 csr = musb_readw(mbase, 204 MUSB_TXCSR);
204 MUSB_EP_OFFSET(musb_channel->epnum, 205
205 MUSB_TXCSR)); 206 /*
206 csr &= ~(MUSB_TXCSR_AUTOSET | 207 * The programming guide says that we must clear
207 MUSB_TXCSR_DMAENAB | 208 * the DMAENAB bit before the DMAMODE bit...
208 MUSB_TXCSR_DMAMODE); 209 */
209 musb_writew(mbase, 210 csr = musb_readw(mbase, offset);
210 MUSB_EP_OFFSET(musb_channel->epnum, MUSB_TXCSR), 211 csr &= ~(MUSB_TXCSR_AUTOSET | MUSB_TXCSR_DMAENAB);
211 csr); 212 musb_writew(mbase, offset, csr);
213 csr &= ~MUSB_TXCSR_DMAMODE;
214 musb_writew(mbase, offset, csr);
212 } else { 215 } else {
213 csr = musb_readw(mbase, 216 offset = MUSB_EP_OFFSET(musb_channel->epnum,
214 MUSB_EP_OFFSET(musb_channel->epnum, 217 MUSB_RXCSR);
215 MUSB_RXCSR)); 218
219 csr = musb_readw(mbase, offset);
216 csr &= ~(MUSB_RXCSR_AUTOCLEAR | 220 csr &= ~(MUSB_RXCSR_AUTOCLEAR |
217 MUSB_RXCSR_DMAENAB | 221 MUSB_RXCSR_DMAENAB |
218 MUSB_RXCSR_DMAMODE); 222 MUSB_RXCSR_DMAMODE);
219 musb_writew(mbase, 223 musb_writew(mbase, offset, csr);
220 MUSB_EP_OFFSET(musb_channel->epnum, MUSB_RXCSR),
221 csr);
222 } 224 }
223 225
224 musb_writew(mbase, 226 musb_writew(mbase,
@@ -296,20 +298,28 @@ static irqreturn_t dma_controller_irq(int irq, void *private_data)
296 && ((channel->desired_mode == 0) 298 && ((channel->desired_mode == 0)
297 || (channel->actual_len & 299 || (channel->actual_len &
298 (musb_channel->max_packet_sz - 1))) 300 (musb_channel->max_packet_sz - 1)))
299 ) { 301 ) {
302 u8 epnum = musb_channel->epnum;
303 int offset = MUSB_EP_OFFSET(epnum,
304 MUSB_TXCSR);
305 u16 txcsr;
306
307 /*
308 * The programming guide says that we
309 * must clear DMAENAB before DMAMODE.
310 */
311 musb_ep_select(mbase, epnum);
312 txcsr = musb_readw(mbase, offset);
313 txcsr &= ~(MUSB_TXCSR_DMAENAB
314 | MUSB_TXCSR_AUTOSET);
315 musb_writew(mbase, offset, txcsr);
300 /* Send out the packet */ 316 /* Send out the packet */
301 musb_ep_select(mbase, 317 txcsr &= ~MUSB_TXCSR_DMAMODE;
302 musb_channel->epnum); 318 txcsr |= MUSB_TXCSR_TXPKTRDY;
303 musb_writew(mbase, MUSB_EP_OFFSET( 319 musb_writew(mbase, offset, txcsr);
304 musb_channel->epnum,
305 MUSB_TXCSR),
306 MUSB_TXCSR_TXPKTRDY);
307 } else {
308 musb_dma_completion(
309 musb,
310 musb_channel->epnum,
311 musb_channel->transmit);
312 } 320 }
321 musb_dma_completion(musb, musb_channel->epnum,
322 musb_channel->transmit);
313 } 323 }
314 } 324 }
315 } 325 }
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index 901dffdf23b1..60924ce08493 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -3,7 +3,6 @@
3 * Some code has been taken from tusb6010.c 3 * Some code has been taken from tusb6010.c
4 * Copyrights for that are attributable to: 4 * Copyrights for that are attributable to:
5 * Copyright (C) 2006 Nokia Corporation 5 * Copyright (C) 2006 Nokia Corporation
6 * Jarkko Nikula <jarkko.nikula@nokia.com>
7 * Tony Lindgren <tony@atomide.com> 6 * Tony Lindgren <tony@atomide.com>
8 * 7 *
9 * This file is part of the Inventra Controller Driver for Linux. 8 * This file is part of the Inventra Controller Driver for Linux.
diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
index 9e20fd070d71..4ac1477d3569 100644
--- a/drivers/usb/musb/tusb6010.c
+++ b/drivers/usb/musb/tusb6010.c
@@ -2,7 +2,6 @@
2 * TUSB6010 USB 2.0 OTG Dual Role controller 2 * TUSB6010 USB 2.0 OTG Dual Role controller
3 * 3 *
4 * Copyright (C) 2006 Nokia Corporation 4 * Copyright (C) 2006 Nokia Corporation
5 * Jarkko Nikula <jarkko.nikula@nokia.com>
6 * Tony Lindgren <tony@atomide.com> 5 * Tony Lindgren <tony@atomide.com>
7 * 6 *
8 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
diff --git a/drivers/usb/musb/tusb6010.h b/drivers/usb/musb/tusb6010.h
index ab8c96286ce6..35c933a5d991 100644
--- a/drivers/usb/musb/tusb6010.h
+++ b/drivers/usb/musb/tusb6010.h
@@ -2,7 +2,6 @@
2 * Definitions for TUSB6010 USB 2.0 OTG Dual Role controller 2 * Definitions for TUSB6010 USB 2.0 OTG Dual Role controller
3 * 3 *
4 * Copyright (C) 2006 Nokia Corporation 4 * Copyright (C) 2006 Nokia Corporation
5 * Jarkko Nikula <jarkko.nikula@nokia.com>
6 * Tony Lindgren <tony@atomide.com> 5 * Tony Lindgren <tony@atomide.com>
7 * 6 *
8 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
diff --git a/drivers/usb/otg/nop-usb-xceiv.c b/drivers/usb/otg/nop-usb-xceiv.c
index 4b933f646f2e..c567168f89af 100644
--- a/drivers/usb/otg/nop-usb-xceiv.c
+++ b/drivers/usb/otg/nop-usb-xceiv.c
@@ -36,14 +36,14 @@ struct nop_usb_xceiv {
36 struct device *dev; 36 struct device *dev;
37}; 37};
38 38
39static u64 nop_xceiv_dmamask = DMA_32BIT_MASK; 39static u64 nop_xceiv_dmamask = DMA_BIT_MASK(32);
40 40
41static struct platform_device nop_xceiv_device = { 41static struct platform_device nop_xceiv_device = {
42 .name = "nop_usb_xceiv", 42 .name = "nop_usb_xceiv",
43 .id = -1, 43 .id = -1,
44 .dev = { 44 .dev = {
45 .dma_mask = &nop_xceiv_dmamask, 45 .dma_mask = &nop_xceiv_dmamask,
46 .coherent_dma_mask = DMA_32BIT_MASK, 46 .coherent_dma_mask = DMA_BIT_MASK(32),
47 .platform_data = NULL, 47 .platform_data = NULL,
48 }, 48 },
49}; 49};
diff --git a/drivers/usb/otg/otg.c b/drivers/usb/otg/otg.c
index ff318fae7d4d..0a43a7db750f 100644
--- a/drivers/usb/otg/otg.c
+++ b/drivers/usb/otg/otg.c
@@ -43,7 +43,8 @@ EXPORT_SYMBOL(otg_get_transceiver);
43 */ 43 */
44void otg_put_transceiver(struct otg_transceiver *x) 44void otg_put_transceiver(struct otg_transceiver *x)
45{ 45{
46 put_device(x->dev); 46 if (x)
47 put_device(x->dev);
47} 48}
48EXPORT_SYMBOL(otg_put_transceiver); 49EXPORT_SYMBOL(otg_put_transceiver);
49 50
diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c
index 858bdd038fbc..dd501bb63ed6 100644
--- a/drivers/usb/serial/cyberjack.c
+++ b/drivers/usb/serial/cyberjack.c
@@ -175,13 +175,6 @@ static int cyberjack_open(struct tty_struct *tty,
175 dbg("%s - usb_clear_halt", __func__); 175 dbg("%s - usb_clear_halt", __func__);
176 usb_clear_halt(port->serial->dev, port->write_urb->pipe); 176 usb_clear_halt(port->serial->dev, port->write_urb->pipe);
177 177
178 /* force low_latency on so that our tty_push actually forces
179 * the data through, otherwise it is scheduled, and with high
180 * data rates (like with OHCI) data can get lost.
181 */
182 if (tty)
183 tty->low_latency = 1;
184
185 priv = usb_get_serial_port_data(port); 178 priv = usb_get_serial_port_data(port);
186 spin_lock_irqsave(&priv->lock, flags); 179 spin_lock_irqsave(&priv->lock, flags);
187 priv->rdtodo = 0; 180 priv->rdtodo = 0;
diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c
index eae4740d448c..e568710b263f 100644
--- a/drivers/usb/serial/cypress_m8.c
+++ b/drivers/usb/serial/cypress_m8.c
@@ -656,10 +656,6 @@ static int cypress_open(struct tty_struct *tty,
656 priv->rx_flags = 0; 656 priv->rx_flags = 0;
657 spin_unlock_irqrestore(&priv->lock, flags); 657 spin_unlock_irqrestore(&priv->lock, flags);
658 658
659 /* setting to zero could cause data loss */
660 if (tty)
661 tty->low_latency = 1;
662
663 /* raise both lines and set termios */ 659 /* raise both lines and set termios */
664 spin_lock_irqsave(&priv->lock, flags); 660 spin_lock_irqsave(&priv->lock, flags);
665 priv->line_control = CONTROL_DTR | CONTROL_RTS; 661 priv->line_control = CONTROL_DTR | CONTROL_RTS;
diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c
index 8a69cce40b6d..c709ec474a80 100644
--- a/drivers/usb/serial/empeg.c
+++ b/drivers/usb/serial/empeg.c
@@ -478,12 +478,6 @@ static void empeg_set_termios(struct tty_struct *tty,
478 termios->c_cflag 478 termios->c_cflag
479 |= CS8; /* character size 8 bits */ 479 |= CS8; /* character size 8 bits */
480 480
481 /*
482 * Force low_latency on; otherwise the pushes are scheduled;
483 * this is bad as it opens up the possibility of dropping bytes
484 * on the floor. We don't want to drop bytes on the floor. :)
485 */
486 tty->low_latency = 1;
487 tty_encode_baud_rate(tty, 115200, 115200); 481 tty_encode_baud_rate(tty, 115200, 115200);
488} 482}
489 483
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index dcc87aaa8628..8100f1d25904 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -668,6 +668,7 @@ static struct usb_device_id id_table_combined [] = {
668 { USB_DEVICE(DE_VID, WHT_PID) }, 668 { USB_DEVICE(DE_VID, WHT_PID) },
669 { USB_DEVICE(ADI_VID, ADI_GNICE_PID), 669 { USB_DEVICE(ADI_VID, ADI_GNICE_PID),
670 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 670 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
671 { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
671 { }, /* Optional parameter entry */ 672 { }, /* Optional parameter entry */
672 { } /* Terminating entry */ 673 { } /* Terminating entry */
673}; 674};
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index daaf63db0b50..c09f658a448b 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -913,6 +913,13 @@
913#define ADI_GNICE_PID 0xF000 913#define ADI_GNICE_PID 0xF000
914 914
915/* 915/*
916 * JETI SPECTROMETER SPECBOS 1201
917 * http://www.jeti.com/products/sys/scb/scb1201.php
918 */
919#define JETI_VID 0x0c6c
920#define JETI_SPC1201_PID 0x04b2
921
922/*
916 * BmRequestType: 1100 0000b 923 * BmRequestType: 1100 0000b
917 * bRequest: FTDI_E2_READ 924 * bRequest: FTDI_E2_READ
918 * wValue: 0 925 * wValue: 0
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
index a26a0e2cdb4a..586d30ff450b 100644
--- a/drivers/usb/serial/garmin_gps.c
+++ b/drivers/usb/serial/garmin_gps.c
@@ -973,14 +973,6 @@ static int garmin_open(struct tty_struct *tty,
973 973
974 dbg("%s - port %d", __func__, port->number); 974 dbg("%s - port %d", __func__, port->number);
975 975
976 /*
977 * Force low_latency on so that our tty_push actually forces the data
978 * through, otherwise it is scheduled, and with high data rates (like
979 * with OHCI) data can get lost.
980 */
981 if (tty)
982 tty->low_latency = 1;
983
984 spin_lock_irqsave(&garmin_data_p->lock, flags); 976 spin_lock_irqsave(&garmin_data_p->lock, flags);
985 garmin_data_p->mode = initial_mode; 977 garmin_data_p->mode = initial_mode;
986 garmin_data_p->count = 0; 978 garmin_data_p->count = 0;
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
index 9d57cace3731..4cec9906ccf3 100644
--- a/drivers/usb/serial/generic.c
+++ b/drivers/usb/serial/generic.c
@@ -122,12 +122,6 @@ int usb_serial_generic_open(struct tty_struct *tty,
122 122
123 dbg("%s - port %d", __func__, port->number); 123 dbg("%s - port %d", __func__, port->number);
124 124
125 /* force low_latency on so that our tty_push actually forces the data
126 through, otherwise it is scheduled, and with high data rates (like
127 with OHCI) data can get lost. */
128 if (tty)
129 tty->low_latency = 1;
130
131 /* clear the throttle flags */ 125 /* clear the throttle flags */
132 spin_lock_irqsave(&port->lock, flags); 126 spin_lock_irqsave(&port->lock, flags);
133 port->throttled = 0; 127 port->throttled = 0;
diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
index e85c8c0d1ad9..fb4a73d090f6 100644
--- a/drivers/usb/serial/io_edgeport.c
+++ b/drivers/usb/serial/io_edgeport.c
@@ -193,8 +193,6 @@ static const struct divisor_table_entry divisor_table[] = {
193/* local variables */ 193/* local variables */
194static int debug; 194static int debug;
195 195
196static int low_latency = 1; /* tty low latency flag, on by default */
197
198static atomic_t CmdUrbs; /* Number of outstanding Command Write Urbs */ 196static atomic_t CmdUrbs; /* Number of outstanding Command Write Urbs */
199 197
200 198
@@ -867,9 +865,6 @@ static int edge_open(struct tty_struct *tty,
867 if (edge_port == NULL) 865 if (edge_port == NULL)
868 return -ENODEV; 866 return -ENODEV;
869 867
870 if (tty)
871 tty->low_latency = low_latency;
872
873 /* see if we've set up our endpoint info yet (can't set it up 868 /* see if we've set up our endpoint info yet (can't set it up
874 in edge_startup as the structures were not set up at that time.) */ 869 in edge_startup as the structures were not set up at that time.) */
875 serial = port->serial; 870 serial = port->serial;
@@ -3299,6 +3294,3 @@ MODULE_FIRMWARE("edgeport/down2.fw");
3299 3294
3300module_param(debug, bool, S_IRUGO | S_IWUSR); 3295module_param(debug, bool, S_IRUGO | S_IWUSR);
3301MODULE_PARM_DESC(debug, "Debug enabled or not"); 3296MODULE_PARM_DESC(debug, "Debug enabled or not");
3302
3303module_param(low_latency, bool, S_IRUGO | S_IWUSR);
3304MODULE_PARM_DESC(low_latency, "Low latency enabled or not");
diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
index c3cdd00ddc41..513b25e044c1 100644
--- a/drivers/usb/serial/io_ti.c
+++ b/drivers/usb/serial/io_ti.c
@@ -76,7 +76,6 @@ struct edgeport_uart_buf_desc {
76#define EDGE_READ_URB_STOPPING 1 76#define EDGE_READ_URB_STOPPING 1
77#define EDGE_READ_URB_STOPPED 2 77#define EDGE_READ_URB_STOPPED 2
78 78
79#define EDGE_LOW_LATENCY 1
80#define EDGE_CLOSING_WAIT 4000 /* in .01 sec */ 79#define EDGE_CLOSING_WAIT 4000 /* in .01 sec */
81 80
82#define EDGE_OUT_BUF_SIZE 1024 81#define EDGE_OUT_BUF_SIZE 1024
@@ -232,7 +231,6 @@ static unsigned short OperationalBuildNumber;
232 231
233static int debug; 232static int debug;
234 233
235static int low_latency = EDGE_LOW_LATENCY;
236static int closing_wait = EDGE_CLOSING_WAIT; 234static int closing_wait = EDGE_CLOSING_WAIT;
237static int ignore_cpu_rev; 235static int ignore_cpu_rev;
238static int default_uart_mode; /* RS232 */ 236static int default_uart_mode; /* RS232 */
@@ -1850,9 +1848,6 @@ static int edge_open(struct tty_struct *tty,
1850 if (edge_port == NULL) 1848 if (edge_port == NULL)
1851 return -ENODEV; 1849 return -ENODEV;
1852 1850
1853 if (tty)
1854 tty->low_latency = low_latency;
1855
1856 port_number = port->number - port->serial->minor; 1851 port_number = port->number - port->serial->minor;
1857 switch (port_number) { 1852 switch (port_number) {
1858 case 0: 1853 case 0:
@@ -3008,9 +3003,6 @@ MODULE_FIRMWARE("edgeport/down3.bin");
3008module_param(debug, bool, S_IRUGO | S_IWUSR); 3003module_param(debug, bool, S_IRUGO | S_IWUSR);
3009MODULE_PARM_DESC(debug, "Debug enabled or not"); 3004MODULE_PARM_DESC(debug, "Debug enabled or not");
3010 3005
3011module_param(low_latency, bool, S_IRUGO | S_IWUSR);
3012MODULE_PARM_DESC(low_latency, "Low latency enabled or not");
3013
3014module_param(closing_wait, int, S_IRUGO | S_IWUSR); 3006module_param(closing_wait, int, S_IRUGO | S_IWUSR);
3015MODULE_PARM_DESC(closing_wait, "Maximum wait for data to drain, in .01 secs"); 3007MODULE_PARM_DESC(closing_wait, "Maximum wait for data to drain, in .01 secs");
3016 3008
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
index ef92095b0732..cd62825a9ac3 100644
--- a/drivers/usb/serial/ipaq.c
+++ b/drivers/usb/serial/ipaq.c
@@ -631,13 +631,7 @@ static int ipaq_open(struct tty_struct *tty,
631 priv->free_len += PACKET_SIZE; 631 priv->free_len += PACKET_SIZE;
632 } 632 }
633 633
634 /*
635 * Force low latency on. This will immediately push data to the line
636 * discipline instead of queueing.
637 */
638
639 if (tty) { 634 if (tty) {
640 tty->low_latency = 1;
641 /* FIXME: These two are bogus */ 635 /* FIXME: These two are bogus */
642 tty->raw = 1; 636 tty->raw = 1;
643 tty->real_raw = 1; 637 tty->real_raw = 1;
diff --git a/drivers/usb/serial/ipw.c b/drivers/usb/serial/ipw.c
index f530032ed93d..da2a2b46644a 100644
--- a/drivers/usb/serial/ipw.c
+++ b/drivers/usb/serial/ipw.c
@@ -207,9 +207,6 @@ static int ipw_open(struct tty_struct *tty,
207 if (!buf_flow_init) 207 if (!buf_flow_init)
208 return -ENOMEM; 208 return -ENOMEM;
209 209
210 if (tty)
211 tty->low_latency = 1;
212
213 /* --1: Tell the modem to initialize (we think) From sniffs this is 210 /* --1: Tell the modem to initialize (we think) From sniffs this is
214 * always the first thing that gets sent to the modem during 211 * always the first thing that gets sent to the modem during
215 * opening of the device */ 212 * opening of the device */
diff --git a/drivers/usb/serial/iuu_phoenix.c b/drivers/usb/serial/iuu_phoenix.c
index 2314c6ae4fc2..4473d442b2aa 100644
--- a/drivers/usb/serial/iuu_phoenix.c
+++ b/drivers/usb/serial/iuu_phoenix.c
@@ -1051,7 +1051,6 @@ static int iuu_open(struct tty_struct *tty,
1051 tty->termios->c_oflag = 0; 1051 tty->termios->c_oflag = 0;
1052 tty->termios->c_iflag = 0; 1052 tty->termios->c_iflag = 0;
1053 priv->termios_initialized = 1; 1053 priv->termios_initialized = 1;
1054 tty->low_latency = 1;
1055 priv->poll = 0; 1054 priv->poll = 0;
1056 } 1055 }
1057 spin_unlock_irqrestore(&priv->lock, flags); 1056 spin_unlock_irqrestore(&priv->lock, flags);
diff --git a/drivers/usb/serial/kobil_sct.c b/drivers/usb/serial/kobil_sct.c
index 6286baad9392..c148544953b3 100644
--- a/drivers/usb/serial/kobil_sct.c
+++ b/drivers/usb/serial/kobil_sct.c
@@ -231,13 +231,7 @@ static int kobil_open(struct tty_struct *tty,
231 /* someone sets the dev to 0 if the close method has been called */ 231 /* someone sets the dev to 0 if the close method has been called */
232 port->interrupt_in_urb->dev = port->serial->dev; 232 port->interrupt_in_urb->dev = port->serial->dev;
233 233
234
235 /* force low_latency on so that our tty_push actually forces
236 * the data through, otherwise it is scheduled, and with high
237 * data rates (like with OHCI) data can get lost.
238 */
239 if (tty) { 234 if (tty) {
240 tty->low_latency = 1;
241 235
242 /* Default to echo off and other sane device settings */ 236 /* Default to echo off and other sane device settings */
243 tty->termios->c_lflag = 0; 237 tty->termios->c_lflag = 0;
diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c
index e772cc0a97fd..24e3b5d4b4d4 100644
--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -446,13 +446,6 @@ static int mos7720_open(struct tty_struct *tty,
446 data = 0x0c; 446 data = 0x0c;
447 send_mos_cmd(serial, MOS_WRITE, port_number, 0x01, &data); 447 send_mos_cmd(serial, MOS_WRITE, port_number, 0x01, &data);
448 448
449 /* force low_latency on so that our tty_push actually forces *
450 * the data through,otherwise it is scheduled, and with *
451 * high data rates (like with OHCI) data can get lost. */
452
453 if (tty)
454 tty->low_latency = 1;
455
456 /* see if we've set up our endpoint info yet * 449 /* see if we've set up our endpoint info yet *
457 * (can't set it up in mos7720_startup as the * 450 * (can't set it up in mos7720_startup as the *
458 * structures were not set up at that time.) */ 451 * structures were not set up at that time.) */
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
index 2c20e88a91b3..84fb1dcd30dc 100644
--- a/drivers/usb/serial/mos7840.c
+++ b/drivers/usb/serial/mos7840.c
@@ -38,7 +38,7 @@
38/* 38/*
39 * Version Information 39 * Version Information
40 */ 40 */
41#define DRIVER_VERSION "1.3.1" 41#define DRIVER_VERSION "1.3.2"
42#define DRIVER_DESC "Moschip 7840/7820 USB Serial Driver" 42#define DRIVER_DESC "Moschip 7840/7820 USB Serial Driver"
43 43
44/* 44/*
@@ -123,6 +123,11 @@
123#define BANDB_DEVICE_ID_USOPTL4_4 0xAC44 123#define BANDB_DEVICE_ID_USOPTL4_4 0xAC44
124#define BANDB_DEVICE_ID_USOPTL4_2 0xAC42 124#define BANDB_DEVICE_ID_USOPTL4_2 0xAC42
125 125
126/* This driver also supports the ATEN UC2324 device since it is mos7840 based
127 * - if I knew the device id it would also support the ATEN UC2322 */
128#define USB_VENDOR_ID_ATENINTL 0x0557
129#define ATENINTL_DEVICE_ID_UC2324 0x2011
130
126/* Interrupt Routine Defines */ 131/* Interrupt Routine Defines */
127 132
128#define SERIAL_IIR_RLS 0x06 133#define SERIAL_IIR_RLS 0x06
@@ -170,6 +175,7 @@ static struct usb_device_id moschip_port_id_table[] = {
170 {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)}, 175 {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)},
171 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)}, 176 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
172 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)}, 177 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
178 {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
173 {} /* terminating entry */ 179 {} /* terminating entry */
174}; 180};
175 181
@@ -178,6 +184,7 @@ static __devinitdata struct usb_device_id moschip_id_table_combined[] = {
178 {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)}, 184 {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)},
179 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)}, 185 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
180 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)}, 186 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
187 {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
181 {} /* terminating entry */ 188 {} /* terminating entry */
182}; 189};
183 190
@@ -1000,12 +1007,6 @@ static int mos7840_open(struct tty_struct *tty,
1000 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset, 1007 status = mos7840_set_reg_sync(port, mos7840_port->ControlRegOffset,
1001 Data); 1008 Data);
1002 1009
1003 /* force low_latency on so that our tty_push actually forces *
1004 * the data through,otherwise it is scheduled, and with *
1005 * high data rates (like with OHCI) data can get lost. */
1006 if (tty)
1007 tty->low_latency = 1;
1008
1009 /* Check to see if we've set up our endpoint info yet * 1010 /* Check to see if we've set up our endpoint info yet *
1010 * (can't set it up in mos7840_startup as the structures * 1011 * (can't set it up in mos7840_startup as the structures *
1011 * were not set up at that time.) */ 1012 * were not set up at that time.) */
@@ -2477,9 +2478,14 @@ static int mos7840_startup(struct usb_serial *serial)
2477 mos7840_set_port_private(serial->port[i], mos7840_port); 2478 mos7840_set_port_private(serial->port[i], mos7840_port);
2478 spin_lock_init(&mos7840_port->pool_lock); 2479 spin_lock_init(&mos7840_port->pool_lock);
2479 2480
2480 mos7840_port->port_num = ((serial->port[i]->number - 2481 /* minor is not initialised until later by
2481 (serial->port[i]->serial->minor)) + 2482 * usb-serial.c:get_free_serial() and cannot therefore be used
2482 1); 2483 * to index device instances */
2484 mos7840_port->port_num = i + 1;
2485 dbg ("serial->port[i]->number = %d", serial->port[i]->number);
2486 dbg ("serial->port[i]->serial->minor = %d", serial->port[i]->serial->minor);
2487 dbg ("mos7840_port->port_num = %d", mos7840_port->port_num);
2488 dbg ("serial->minor = %d", serial->minor);
2483 2489
2484 if (mos7840_port->port_num == 1) { 2490 if (mos7840_port->port_num == 1) {
2485 mos7840_port->SpRegOffset = 0x0; 2491 mos7840_port->SpRegOffset = 0x0;
@@ -2690,13 +2696,16 @@ static void mos7840_shutdown(struct usb_serial *serial)
2690 2696
2691 for (i = 0; i < serial->num_ports; ++i) { 2697 for (i = 0; i < serial->num_ports; ++i) {
2692 mos7840_port = mos7840_get_port_private(serial->port[i]); 2698 mos7840_port = mos7840_get_port_private(serial->port[i]);
2693 spin_lock_irqsave(&mos7840_port->pool_lock, flags); 2699 dbg ("mos7840_port %d = %p", i, mos7840_port);
2694 mos7840_port->zombie = 1; 2700 if (mos7840_port) {
2695 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); 2701 spin_lock_irqsave(&mos7840_port->pool_lock, flags);
2696 usb_kill_urb(mos7840_port->control_urb); 2702 mos7840_port->zombie = 1;
2697 kfree(mos7840_port->ctrl_buf); 2703 spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
2698 kfree(mos7840_port->dr); 2704 usb_kill_urb(mos7840_port->control_urb);
2699 kfree(mos7840_port); 2705 kfree(mos7840_port->ctrl_buf);
2706 kfree(mos7840_port->dr);
2707 kfree(mos7840_port);
2708 }
2700 mos7840_set_port_private(serial->port[i], NULL); 2709 mos7840_set_port_private(serial->port[i], NULL);
2701 } 2710 }
2702 2711
diff --git a/drivers/usb/serial/moto_modem.c b/drivers/usb/serial/moto_modem.c
index 2e8e05462ef7..b66b71ccd12b 100644
--- a/drivers/usb/serial/moto_modem.c
+++ b/drivers/usb/serial/moto_modem.c
@@ -25,6 +25,7 @@ static struct usb_device_id id_table [] = {
25 { USB_DEVICE(0x05c6, 0x3197) }, /* unknown Motorola phone */ 25 { USB_DEVICE(0x05c6, 0x3197) }, /* unknown Motorola phone */
26 { USB_DEVICE(0x0c44, 0x0022) }, /* unknown Mororola phone */ 26 { USB_DEVICE(0x0c44, 0x0022) }, /* unknown Mororola phone */
27 { USB_DEVICE(0x22b8, 0x2a64) }, /* Motorola KRZR K1m */ 27 { USB_DEVICE(0x22b8, 0x2a64) }, /* Motorola KRZR K1m */
28 { USB_DEVICE(0x22b8, 0x2c64) }, /* Motorola V950 phone */
28 { }, 29 { },
29}; 30};
30MODULE_DEVICE_TABLE(usb, id_table); 31MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c
index 839583dc8b6a..b500ad10b758 100644
--- a/drivers/usb/serial/opticon.c
+++ b/drivers/usb/serial/opticon.c
@@ -159,14 +159,6 @@ static int opticon_open(struct tty_struct *tty, struct usb_serial_port *port,
159 priv->port = port; 159 priv->port = port;
160 spin_unlock_irqrestore(&priv->lock, flags); 160 spin_unlock_irqrestore(&priv->lock, flags);
161 161
162 /*
163 * Force low_latency on so that our tty_push actually forces the data
164 * through, otherwise it is scheduled, and with high data rates (like
165 * with OHCI) data can get lost.
166 */
167 if (tty)
168 tty->low_latency = 1;
169
170 /* Start reading from the device */ 162 /* Start reading from the device */
171 usb_fill_bulk_urb(priv->bulk_read_urb, priv->udev, 163 usb_fill_bulk_urb(priv->bulk_read_urb, priv->udev,
172 usb_rcvbulkpipe(priv->udev, 164 usb_rcvbulkpipe(priv->udev,
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index d560c0b54e6e..7817b82889ca 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -300,6 +300,10 @@ static int option_resume(struct usb_serial *serial);
300#define BENQ_VENDOR_ID 0x04a5 300#define BENQ_VENDOR_ID 0x04a5
301#define BENQ_PRODUCT_H10 0x4068 301#define BENQ_PRODUCT_H10 0x4068
302 302
303#define DLINK_VENDOR_ID 0x1186
304#define DLINK_PRODUCT_DWM_652 0x3e04
305
306
303static struct usb_device_id option_ids[] = { 307static struct usb_device_id option_ids[] = {
304 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, 308 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
305 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, 309 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -516,6 +520,7 @@ static struct usb_device_id option_ids[] = {
516 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) }, 520 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
517 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) }, 521 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
518 { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, 522 { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
523 { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
519 { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */ 524 { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */
520 { } /* Terminating entry */ 525 { } /* Terminating entry */
521}; 526};
@@ -931,9 +936,6 @@ static int option_open(struct tty_struct *tty,
931 usb_pipeout(urb->pipe), 0); */ 936 usb_pipeout(urb->pipe), 0); */
932 } 937 }
933 938
934 if (tty)
935 tty->low_latency = 1;
936
937 option_send_setup(tty, port); 939 option_send_setup(tty, port);
938 940
939 return 0; 941 return 0;
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
index e6d6b0c17fd9..7528b8d57f1c 100644
--- a/drivers/usb/serial/qcserial.c
+++ b/drivers/usb/serial/qcserial.c
@@ -26,6 +26,27 @@ static struct usb_device_id id_table[] = {
26 {USB_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ 26 {USB_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
27 {USB_DEVICE(0x03f0, 0x1f1d)}, /* HP un2400 Gobi Modem Device */ 27 {USB_DEVICE(0x03f0, 0x1f1d)}, /* HP un2400 Gobi Modem Device */
28 {USB_DEVICE(0x03f0, 0x201d)}, /* HP un2400 Gobi QDL Device */ 28 {USB_DEVICE(0x03f0, 0x201d)}, /* HP un2400 Gobi QDL Device */
29 {USB_DEVICE(0x04da, 0x250d)}, /* Panasonic Gobi Modem device */
30 {USB_DEVICE(0x04da, 0x250c)}, /* Panasonic Gobi QDL device */
31 {USB_DEVICE(0x413c, 0x8172)}, /* Dell Gobi Modem device */
32 {USB_DEVICE(0x413c, 0x8171)}, /* Dell Gobi QDL device */
33 {USB_DEVICE(0x1410, 0xa001)}, /* Novatel Gobi Modem device */
34 {USB_DEVICE(0x1410, 0xa008)}, /* Novatel Gobi QDL device */
35 {USB_DEVICE(0x0b05, 0x1776)}, /* Asus Gobi Modem device */
36 {USB_DEVICE(0x0b05, 0x1774)}, /* Asus Gobi QDL device */
37 {USB_DEVICE(0x19d2, 0xfff3)}, /* ONDA Gobi Modem device */
38 {USB_DEVICE(0x19d2, 0xfff2)}, /* ONDA Gobi QDL device */
39 {USB_DEVICE(0x1557, 0x0a80)}, /* OQO Gobi QDL device */
40 {USB_DEVICE(0x05c6, 0x9001)}, /* Generic Gobi Modem device */
41 {USB_DEVICE(0x05c6, 0x9002)}, /* Generic Gobi Modem device */
42 {USB_DEVICE(0x05c6, 0x9202)}, /* Generic Gobi Modem device */
43 {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */
44 {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */
45 {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */
46 {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */
47 {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */
48 {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
49 {USB_DEVICE(0x1f45, 0x0001)}, /* Unknown Gobi QDL device */
29 { } /* Terminating entry */ 50 { } /* Terminating entry */
30}; 51};
31MODULE_DEVICE_TABLE(usb, id_table); 52MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
index d9bf9a5c20ec..913225c61610 100644
--- a/drivers/usb/serial/sierra.c
+++ b/drivers/usb/serial/sierra.c
@@ -14,7 +14,7 @@
14 Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org> 14 Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org>
15*/ 15*/
16 16
17#define DRIVER_VERSION "v.1.3.2" 17#define DRIVER_VERSION "v.1.3.3"
18#define DRIVER_AUTHOR "Kevin Lloyd <klloyd@sierrawireless.com>" 18#define DRIVER_AUTHOR "Kevin Lloyd <klloyd@sierrawireless.com>"
19#define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" 19#define DRIVER_DESC "USB Driver for Sierra Wireless USB modems"
20 20
@@ -259,9 +259,21 @@ static int sierra_send_setup(struct tty_struct *tty,
259 val |= 0x02; 259 val |= 0x02;
260 260
261 /* If composite device then properly report interface */ 261 /* If composite device then properly report interface */
262 if (serial->num_ports == 1) 262 if (serial->num_ports == 1) {
263 interface = sierra_calc_interface(serial); 263 interface = sierra_calc_interface(serial);
264 264
265 /* Control message is sent only to interfaces with
266 * interrupt_in endpoints
267 */
268 if (port->interrupt_in_urb) {
269 /* send control message */
270 return usb_control_msg(serial->dev,
271 usb_rcvctrlpipe(serial->dev, 0),
272 0x22, 0x21, val, interface,
273 NULL, 0, USB_CTRL_SET_TIMEOUT);
274 }
275 }
276
265 /* Otherwise the need to do non-composite mapping */ 277 /* Otherwise the need to do non-composite mapping */
266 else { 278 else {
267 if (port->bulk_out_endpointAddress == 2) 279 if (port->bulk_out_endpointAddress == 2)
@@ -270,12 +282,13 @@ static int sierra_send_setup(struct tty_struct *tty,
270 interface = 1; 282 interface = 1;
271 else if (port->bulk_out_endpointAddress == 5) 283 else if (port->bulk_out_endpointAddress == 5)
272 interface = 2; 284 interface = 2;
273 }
274 285
275 return usb_control_msg(serial->dev, 286 return usb_control_msg(serial->dev,
276 usb_rcvctrlpipe(serial->dev, 0), 287 usb_rcvctrlpipe(serial->dev, 0),
277 0x22, 0x21, val, interface, 288 0x22, 0x21, val, interface,
278 NULL, 0, USB_CTRL_SET_TIMEOUT); 289 NULL, 0, USB_CTRL_SET_TIMEOUT);
290
291 }
279 } 292 }
280 293
281 return 0; 294 return 0;
@@ -585,9 +598,6 @@ static int sierra_open(struct tty_struct *tty,
585 } 598 }
586 } 599 }
587 600
588 if (tty)
589 tty->low_latency = 1;
590
591 sierra_send_setup(tty, port); 601 sierra_send_setup(tty, port);
592 602
593 /* start up the interrupt endpoint if we have one */ 603 /* start up the interrupt endpoint if we have one */
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index 2620bf6fe5e1..0a64bac306ee 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -50,11 +50,10 @@
50 50
51#define TI_TRANSFER_TIMEOUT 2 51#define TI_TRANSFER_TIMEOUT 2
52 52
53#define TI_DEFAULT_LOW_LATENCY 0
54#define TI_DEFAULT_CLOSING_WAIT 4000 /* in .01 secs */ 53#define TI_DEFAULT_CLOSING_WAIT 4000 /* in .01 secs */
55 54
56/* supported setserial flags */ 55/* supported setserial flags */
57#define TI_SET_SERIAL_FLAGS (ASYNC_LOW_LATENCY) 56#define TI_SET_SERIAL_FLAGS 0
58 57
59/* read urb states */ 58/* read urb states */
60#define TI_READ_URB_RUNNING 0 59#define TI_READ_URB_RUNNING 0
@@ -161,7 +160,6 @@ static int ti_buf_get(struct circ_buf *cb, char *buf, int count);
161 160
162/* module parameters */ 161/* module parameters */
163static int debug; 162static int debug;
164static int low_latency = TI_DEFAULT_LOW_LATENCY;
165static int closing_wait = TI_DEFAULT_CLOSING_WAIT; 163static int closing_wait = TI_DEFAULT_CLOSING_WAIT;
166static ushort vendor_3410[TI_EXTRA_VID_PID_COUNT]; 164static ushort vendor_3410[TI_EXTRA_VID_PID_COUNT];
167static unsigned int vendor_3410_count; 165static unsigned int vendor_3410_count;
@@ -296,10 +294,6 @@ MODULE_FIRMWARE("mts_edge.fw");
296module_param(debug, bool, S_IRUGO | S_IWUSR); 294module_param(debug, bool, S_IRUGO | S_IWUSR);
297MODULE_PARM_DESC(debug, "Enable debugging, 0=no, 1=yes"); 295MODULE_PARM_DESC(debug, "Enable debugging, 0=no, 1=yes");
298 296
299module_param(low_latency, bool, S_IRUGO | S_IWUSR);
300MODULE_PARM_DESC(low_latency,
301 "TTY low_latency flag, 0=off, 1=on, default is off");
302
303module_param(closing_wait, int, S_IRUGO | S_IWUSR); 297module_param(closing_wait, int, S_IRUGO | S_IWUSR);
304MODULE_PARM_DESC(closing_wait, 298MODULE_PARM_DESC(closing_wait,
305 "Maximum wait for data to drain in close, in .01 secs, default is 4000"); 299 "Maximum wait for data to drain in close, in .01 secs, default is 4000");
@@ -448,7 +442,6 @@ static int ti_startup(struct usb_serial *serial)
448 spin_lock_init(&tport->tp_lock); 442 spin_lock_init(&tport->tp_lock);
449 tport->tp_uart_base_addr = (i == 0 ? 443 tport->tp_uart_base_addr = (i == 0 ?
450 TI_UART1_BASE_ADDR : TI_UART2_BASE_ADDR); 444 TI_UART1_BASE_ADDR : TI_UART2_BASE_ADDR);
451 tport->tp_flags = low_latency ? ASYNC_LOW_LATENCY : 0;
452 tport->tp_closing_wait = closing_wait; 445 tport->tp_closing_wait = closing_wait;
453 init_waitqueue_head(&tport->tp_msr_wait); 446 init_waitqueue_head(&tport->tp_msr_wait);
454 init_waitqueue_head(&tport->tp_write_wait); 447 init_waitqueue_head(&tport->tp_write_wait);
@@ -528,10 +521,6 @@ static int ti_open(struct tty_struct *tty,
528 if (mutex_lock_interruptible(&tdev->td_open_close_lock)) 521 if (mutex_lock_interruptible(&tdev->td_open_close_lock))
529 return -ERESTARTSYS; 522 return -ERESTARTSYS;
530 523
531 if (tty)
532 tty->low_latency =
533 (tport->tp_flags & ASYNC_LOW_LATENCY) ? 1 : 0;
534
535 port_number = port->number - port->serial->minor; 524 port_number = port->number - port->serial->minor;
536 525
537 memset(&(tport->tp_icount), 0x00, sizeof(tport->tp_icount)); 526 memset(&(tport->tp_icount), 0x00, sizeof(tport->tp_icount));
@@ -1215,20 +1204,22 @@ static void ti_bulk_in_callback(struct urb *urb)
1215 } 1204 }
1216 1205
1217 tty = tty_port_tty_get(&port->port); 1206 tty = tty_port_tty_get(&port->port);
1218 if (tty && urb->actual_length) { 1207 if (tty) {
1219 usb_serial_debug_data(debug, dev, __func__, 1208 if (urb->actual_length) {
1220 urb->actual_length, urb->transfer_buffer); 1209 usb_serial_debug_data(debug, dev, __func__,
1221 1210 urb->actual_length, urb->transfer_buffer);
1222 if (!tport->tp_is_open) 1211
1223 dbg("%s - port closed, dropping data", __func__); 1212 if (!tport->tp_is_open)
1224 else 1213 dbg("%s - port closed, dropping data",
1225 ti_recv(&urb->dev->dev, tty, 1214 __func__);
1215 else
1216 ti_recv(&urb->dev->dev, tty,
1226 urb->transfer_buffer, 1217 urb->transfer_buffer,
1227 urb->actual_length); 1218 urb->actual_length);
1228 1219 spin_lock(&tport->tp_lock);
1229 spin_lock(&tport->tp_lock); 1220 tport->tp_icount.rx += urb->actual_length;
1230 tport->tp_icount.rx += urb->actual_length; 1221 spin_unlock(&tport->tp_lock);
1231 spin_unlock(&tport->tp_lock); 1222 }
1232 tty_kref_put(tty); 1223 tty_kref_put(tty);
1233 } 1224 }
1234 1225
@@ -1452,7 +1443,6 @@ static int ti_set_serial_info(struct tty_struct *tty, struct ti_port *tport,
1452 return -EFAULT; 1443 return -EFAULT;
1453 1444
1454 tport->tp_flags = new_serial.flags & TI_SET_SERIAL_FLAGS; 1445 tport->tp_flags = new_serial.flags & TI_SET_SERIAL_FLAGS;
1455 tty->low_latency = (tport->tp_flags & ASYNC_LOW_LATENCY) ? 1 : 0;
1456 tport->tp_closing_wait = new_serial.closing_wait; 1446 tport->tp_closing_wait = new_serial.closing_wait;
1457 1447
1458 return 0; 1448 return 0;
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index 2a70563bbee1..0a566eea49c0 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -137,22 +137,10 @@ static void destroy_serial(struct kref *kref)
137 137
138 dbg("%s - %s", __func__, serial->type->description); 138 dbg("%s - %s", __func__, serial->type->description);
139 139
140 serial->type->shutdown(serial);
141
142 /* return the minor range that this device had */ 140 /* return the minor range that this device had */
143 if (serial->minor != SERIAL_TTY_NO_MINOR) 141 if (serial->minor != SERIAL_TTY_NO_MINOR)
144 return_serial(serial); 142 return_serial(serial);
145 143
146 for (i = 0; i < serial->num_ports; ++i)
147 serial->port[i]->port.count = 0;
148
149 /* the ports are cleaned up and released in port_release() */
150 for (i = 0; i < serial->num_ports; ++i)
151 if (serial->port[i]->dev.parent != NULL) {
152 device_unregister(&serial->port[i]->dev);
153 serial->port[i] = NULL;
154 }
155
156 /* If this is a "fake" port, we have to clean it up here, as it will 144 /* If this is a "fake" port, we have to clean it up here, as it will
157 * not get cleaned up in port_release() as it was never registered with 145 * not get cleaned up in port_release() as it was never registered with
158 * the driver core */ 146 * the driver core */
@@ -187,7 +175,7 @@ static int serial_open (struct tty_struct *tty, struct file *filp)
187 struct usb_serial *serial; 175 struct usb_serial *serial;
188 struct usb_serial_port *port; 176 struct usb_serial_port *port;
189 unsigned int portNumber; 177 unsigned int portNumber;
190 int retval; 178 int retval = 0;
191 179
192 dbg("%s", __func__); 180 dbg("%s", __func__);
193 181
@@ -198,21 +186,24 @@ static int serial_open (struct tty_struct *tty, struct file *filp)
198 return -ENODEV; 186 return -ENODEV;
199 } 187 }
200 188
189 mutex_lock(&serial->disc_mutex);
201 portNumber = tty->index - serial->minor; 190 portNumber = tty->index - serial->minor;
202 port = serial->port[portNumber]; 191 port = serial->port[portNumber];
203 if (!port) { 192 if (!port || serial->disconnected)
204 retval = -ENODEV;
205 goto bailout_kref_put;
206 }
207
208 if (port->serial->disconnected) {
209 retval = -ENODEV; 193 retval = -ENODEV;
210 goto bailout_kref_put; 194 else
211 } 195 get_device(&port->dev);
196 /*
197 * Note: Our locking order requirement does not allow port->mutex
198 * to be acquired while serial->disc_mutex is held.
199 */
200 mutex_unlock(&serial->disc_mutex);
201 if (retval)
202 goto bailout_serial_put;
212 203
213 if (mutex_lock_interruptible(&port->mutex)) { 204 if (mutex_lock_interruptible(&port->mutex)) {
214 retval = -ERESTARTSYS; 205 retval = -ERESTARTSYS;
215 goto bailout_kref_put; 206 goto bailout_port_put;
216 } 207 }
217 208
218 ++port->port.count; 209 ++port->port.count;
@@ -232,14 +223,20 @@ static int serial_open (struct tty_struct *tty, struct file *filp)
232 goto bailout_mutex_unlock; 223 goto bailout_mutex_unlock;
233 } 224 }
234 225
235 retval = usb_autopm_get_interface(serial->interface); 226 mutex_lock(&serial->disc_mutex);
227 if (serial->disconnected)
228 retval = -ENODEV;
229 else
230 retval = usb_autopm_get_interface(serial->interface);
236 if (retval) 231 if (retval)
237 goto bailout_module_put; 232 goto bailout_module_put;
233
238 /* only call the device specific open if this 234 /* only call the device specific open if this
239 * is the first time the port is opened */ 235 * is the first time the port is opened */
240 retval = serial->type->open(tty, port, filp); 236 retval = serial->type->open(tty, port, filp);
241 if (retval) 237 if (retval)
242 goto bailout_interface_put; 238 goto bailout_interface_put;
239 mutex_unlock(&serial->disc_mutex);
243 } 240 }
244 241
245 mutex_unlock(&port->mutex); 242 mutex_unlock(&port->mutex);
@@ -248,13 +245,16 @@ static int serial_open (struct tty_struct *tty, struct file *filp)
248bailout_interface_put: 245bailout_interface_put:
249 usb_autopm_put_interface(serial->interface); 246 usb_autopm_put_interface(serial->interface);
250bailout_module_put: 247bailout_module_put:
248 mutex_unlock(&serial->disc_mutex);
251 module_put(serial->type->driver.owner); 249 module_put(serial->type->driver.owner);
252bailout_mutex_unlock: 250bailout_mutex_unlock:
253 port->port.count = 0; 251 port->port.count = 0;
254 tty->driver_data = NULL; 252 tty->driver_data = NULL;
255 tty_port_tty_set(&port->port, NULL); 253 tty_port_tty_set(&port->port, NULL);
256 mutex_unlock(&port->mutex); 254 mutex_unlock(&port->mutex);
257bailout_kref_put: 255bailout_port_put:
256 put_device(&port->dev);
257bailout_serial_put:
258 usb_serial_put(serial); 258 usb_serial_put(serial);
259 return retval; 259 return retval;
260} 260}
@@ -262,6 +262,9 @@ bailout_kref_put:
262static void serial_close(struct tty_struct *tty, struct file *filp) 262static void serial_close(struct tty_struct *tty, struct file *filp)
263{ 263{
264 struct usb_serial_port *port = tty->driver_data; 264 struct usb_serial_port *port = tty->driver_data;
265 struct usb_serial *serial;
266 struct module *owner;
267 int count;
265 268
266 if (!port) 269 if (!port)
267 return; 270 return;
@@ -269,6 +272,8 @@ static void serial_close(struct tty_struct *tty, struct file *filp)
269 dbg("%s - port %d", __func__, port->number); 272 dbg("%s - port %d", __func__, port->number);
270 273
271 mutex_lock(&port->mutex); 274 mutex_lock(&port->mutex);
275 serial = port->serial;
276 owner = serial->type->driver.owner;
272 277
273 if (port->port.count == 0) { 278 if (port->port.count == 0) {
274 mutex_unlock(&port->mutex); 279 mutex_unlock(&port->mutex);
@@ -281,7 +286,7 @@ static void serial_close(struct tty_struct *tty, struct file *filp)
281 * this before we drop the port count. The call is protected 286 * this before we drop the port count. The call is protected
282 * by the port mutex 287 * by the port mutex
283 */ 288 */
284 port->serial->type->close(tty, port, filp); 289 serial->type->close(tty, port, filp);
285 290
286 if (port->port.count == (port->console ? 2 : 1)) { 291 if (port->port.count == (port->console ? 2 : 1)) {
287 struct tty_struct *tty = tty_port_tty_get(&port->port); 292 struct tty_struct *tty = tty_port_tty_get(&port->port);
@@ -295,17 +300,23 @@ static void serial_close(struct tty_struct *tty, struct file *filp)
295 } 300 }
296 } 301 }
297 302
298 if (port->port.count == 1) {
299 mutex_lock(&port->serial->disc_mutex);
300 if (!port->serial->disconnected)
301 usb_autopm_put_interface(port->serial->interface);
302 mutex_unlock(&port->serial->disc_mutex);
303 module_put(port->serial->type->driver.owner);
304 }
305 --port->port.count; 303 --port->port.count;
306 304 count = port->port.count;
307 mutex_unlock(&port->mutex); 305 mutex_unlock(&port->mutex);
308 usb_serial_put(port->serial); 306 put_device(&port->dev);
307
308 /* Mustn't dereference port any more */
309 if (count == 0) {
310 mutex_lock(&serial->disc_mutex);
311 if (!serial->disconnected)
312 usb_autopm_put_interface(serial->interface);
313 mutex_unlock(&serial->disc_mutex);
314 }
315 usb_serial_put(serial);
316
317 /* Mustn't dereference serial any more */
318 if (count == 0)
319 module_put(owner);
309} 320}
310 321
311static int serial_write(struct tty_struct *tty, const unsigned char *buf, 322static int serial_write(struct tty_struct *tty, const unsigned char *buf,
@@ -549,7 +560,13 @@ static void kill_traffic(struct usb_serial_port *port)
549 560
550static void port_free(struct usb_serial_port *port) 561static void port_free(struct usb_serial_port *port)
551{ 562{
563 /*
564 * Stop all the traffic before cancelling the work, so that
565 * nobody will restart it by calling usb_serial_port_softint.
566 */
552 kill_traffic(port); 567 kill_traffic(port);
568 cancel_work_sync(&port->work);
569
553 usb_free_urb(port->read_urb); 570 usb_free_urb(port->read_urb);
554 usb_free_urb(port->write_urb); 571 usb_free_urb(port->write_urb);
555 usb_free_urb(port->interrupt_in_urb); 572 usb_free_urb(port->interrupt_in_urb);
@@ -558,7 +575,6 @@ static void port_free(struct usb_serial_port *port)
558 kfree(port->bulk_out_buffer); 575 kfree(port->bulk_out_buffer);
559 kfree(port->interrupt_in_buffer); 576 kfree(port->interrupt_in_buffer);
560 kfree(port->interrupt_out_buffer); 577 kfree(port->interrupt_out_buffer);
561 flush_scheduled_work(); /* port->work */
562 kfree(port); 578 kfree(port);
563} 579}
564 580
@@ -1043,6 +1059,12 @@ void usb_serial_disconnect(struct usb_interface *interface)
1043 usb_set_intfdata(interface, NULL); 1059 usb_set_intfdata(interface, NULL);
1044 /* must set a flag, to signal subdrivers */ 1060 /* must set a flag, to signal subdrivers */
1045 serial->disconnected = 1; 1061 serial->disconnected = 1;
1062 mutex_unlock(&serial->disc_mutex);
1063
1064 /* Unfortunately, many of the sub-drivers expect the port structures
1065 * to exist when their shutdown method is called, so we have to go
1066 * through this awkward two-step unregistration procedure.
1067 */
1046 for (i = 0; i < serial->num_ports; ++i) { 1068 for (i = 0; i < serial->num_ports; ++i) {
1047 port = serial->port[i]; 1069 port = serial->port[i];
1048 if (port) { 1070 if (port) {
@@ -1052,11 +1074,21 @@ void usb_serial_disconnect(struct usb_interface *interface)
1052 tty_kref_put(tty); 1074 tty_kref_put(tty);
1053 } 1075 }
1054 kill_traffic(port); 1076 kill_traffic(port);
1077 cancel_work_sync(&port->work);
1078 device_del(&port->dev);
1079 }
1080 }
1081 serial->type->shutdown(serial);
1082 for (i = 0; i < serial->num_ports; ++i) {
1083 port = serial->port[i];
1084 if (port) {
1085 put_device(&port->dev);
1086 serial->port[i] = NULL;
1055 } 1087 }
1056 } 1088 }
1089
1057 /* let the last holder of this object 1090 /* let the last holder of this object
1058 * cause it to be cleaned up */ 1091 * cause it to be cleaned up */
1059 mutex_unlock(&serial->disc_mutex);
1060 usb_serial_put(serial); 1092 usb_serial_put(serial);
1061 dev_info(dev, "device disconnected\n"); 1093 dev_info(dev, "device disconnected\n");
1062} 1094}
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
index 4facce3d9364..5ac414bda718 100644
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -296,14 +296,6 @@ static int visor_open(struct tty_struct *tty, struct usb_serial_port *port,
296 priv->throttled = 0; 296 priv->throttled = 0;
297 spin_unlock_irqrestore(&priv->lock, flags); 297 spin_unlock_irqrestore(&priv->lock, flags);
298 298
299 /*
300 * Force low_latency on so that our tty_push actually forces the data
301 * through, otherwise it is scheduled, and with high data rates (like
302 * with OHCI) data can get lost.
303 */
304 if (tty)
305 tty->low_latency = 1;
306
307 /* Start reading from the device */ 299 /* Start reading from the device */
308 usb_fill_bulk_urb(port->read_urb, serial->dev, 300 usb_fill_bulk_urb(port->read_urb, serial->dev,
309 usb_rcvbulkpipe(serial->dev, 301 usb_rcvbulkpipe(serial->dev,
diff --git a/drivers/usb/storage/Makefile b/drivers/usb/storage/Makefile
index 5be54c019662..ef7e5a8ceab5 100644
--- a/drivers/usb/storage/Makefile
+++ b/drivers/usb/storage/Makefile
@@ -17,7 +17,8 @@ usb-storage-objs := scsiglue.o protocol.o transport.o usb.o \
17ifeq ($(CONFIG_USB_LIBUSUAL),) 17ifeq ($(CONFIG_USB_LIBUSUAL),)
18 usb-storage-objs += usual-tables.o 18 usb-storage-objs += usual-tables.o
19else 19else
20 obj-$(CONFIG_USB) += libusual.o usual-tables.o 20 obj-$(CONFIG_USB) += usb-libusual.o
21 usb-libusual-objs := libusual.o usual-tables.o
21endif 22endif
22 23
23obj-$(CONFIG_USB_STORAGE_ALAUDA) += ums-alauda.o 24obj-$(CONFIG_USB_STORAGE_ALAUDA) += ums-alauda.o
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
index 49aedb36dc19..fcb320217218 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -247,10 +247,8 @@ int usb_stor_clear_halt(struct us_data *us, unsigned int pipe)
247 USB_ENDPOINT_HALT, endp, 247 USB_ENDPOINT_HALT, endp,
248 NULL, 0, 3*HZ); 248 NULL, 0, 3*HZ);
249 249
250 /* reset the endpoint toggle */
251 if (result >= 0) 250 if (result >= 0)
252 usb_settoggle(us->pusb_dev, usb_pipeendpoint(pipe), 251 usb_reset_endpoint(us->pusb_dev, endp);
253 usb_pipeout(pipe), 0);
254 252
255 US_DEBUGP("%s: result = %d\n", __func__, result); 253 US_DEBUGP("%s: result = %d\n", __func__, result);
256 return result; 254 return result;
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 1c1f643e8a78..fa65a3b08601 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -975,12 +975,14 @@ UNUSUAL_DEV( 0x07c4, 0xa400, 0x0000, 0xffff,
975 US_SC_DEVICE, US_PR_DEVICE, NULL, 975 US_SC_DEVICE, US_PR_DEVICE, NULL,
976 US_FL_FIX_INQUIRY | US_FL_FIX_CAPACITY ), 976 US_FL_FIX_INQUIRY | US_FL_FIX_CAPACITY ),
977 977
978/* Reported by Rauch Wolke <rauchwolke@gmx.net> */ 978/* Reported by Rauch Wolke <rauchwolke@gmx.net>
979 * and augmented by binbin <binbinsh@gmail.com> (Bugzilla #12882)
980 */
979UNUSUAL_DEV( 0x07c4, 0xa4a5, 0x0000, 0xffff, 981UNUSUAL_DEV( 0x07c4, 0xa4a5, 0x0000, 0xffff,
980 "Simple Tech/Datafab", 982 "Simple Tech/Datafab",
981 "CF+SM Reader", 983 "CF+SM Reader",
982 US_SC_DEVICE, US_PR_DEVICE, NULL, 984 US_SC_DEVICE, US_PR_DEVICE, NULL,
983 US_FL_IGNORE_RESIDUE ), 985 US_FL_IGNORE_RESIDUE | US_FL_MAX_SECTORS_64 ),
984 986
985/* Casio QV 2x00/3x00/4000/8000 digital still cameras are not conformant 987/* Casio QV 2x00/3x00/4000/8000 digital still cameras are not conformant
986 * to the USB storage specification in two ways: 988 * to the USB storage specification in two ways:
@@ -1376,6 +1378,14 @@ UNUSUAL_DEV( 0x10d6, 0x2200, 0x0100, 0x0100,
1376 US_SC_DEVICE, US_PR_DEVICE, NULL, 1378 US_SC_DEVICE, US_PR_DEVICE, NULL,
1377 0), 1379 0),
1378 1380
1381/* Reported by Pascal Terjan <pterjan@mandriva.com>
1382 * Ignore driver CD mode and force into modem mode by default.
1383 */
1384UNUSUAL_DEV( 0x1186, 0x3e04, 0x0000, 0x0000,
1385 "D-Link",
1386 "USB Mass Storage",
1387 US_SC_DEVICE, US_PR_DEVICE, option_ms_init, 0),
1388
1379/* Reported by Kevin Lloyd <linux@sierrawireless.com> 1389/* Reported by Kevin Lloyd <linux@sierrawireless.com>
1380 * Entry is needed for the initializer function override, 1390 * Entry is needed for the initializer function override,
1381 * which instructs the device to load as a modem 1391 * which instructs the device to load as a modem
@@ -1841,6 +1851,12 @@ UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001,
1841 US_SC_DEVICE, US_PR_DEVICE, NULL, 1851 US_SC_DEVICE, US_PR_DEVICE, NULL,
1842 US_FL_CAPACITY_HEURISTICS), 1852 US_FL_CAPACITY_HEURISTICS),
1843 1853
1854/* Reported by Alessio Treglia <quadrispro@ubuntu.com> */
1855UNUSUAL_DEV( 0xed10, 0x7636, 0x0001, 0x0001,
1856 "TGE",
1857 "Digital MP3 Audio Player",
1858 US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ),
1859
1844/* Control/Bulk transport for all SubClass values */ 1860/* Control/Bulk transport for all SubClass values */
1845USUAL_DEV(US_SC_RBC, US_PR_CB, USB_US_TYPE_STOR), 1861USUAL_DEV(US_SC_RBC, US_PR_CB, USB_US_TYPE_STOR),
1846USUAL_DEV(US_SC_8020, US_PR_CB, USB_US_TYPE_STOR), 1862USUAL_DEV(US_SC_8020, US_PR_CB, USB_US_TYPE_STOR),
diff --git a/drivers/usb/wusbcore/devconnect.c b/drivers/usb/wusbcore/devconnect.c
index 386eaa22d215..4ac4300a3f9a 100644
--- a/drivers/usb/wusbcore/devconnect.c
+++ b/drivers/usb/wusbcore/devconnect.c
@@ -267,6 +267,8 @@ static void wusbhc_devconnect_acked_work(struct work_struct *work)
267 mutex_lock(&wusbhc->mutex); 267 mutex_lock(&wusbhc->mutex);
268 wusbhc_devconnect_acked(wusbhc, wusb_dev); 268 wusbhc_devconnect_acked(wusbhc, wusb_dev);
269 mutex_unlock(&wusbhc->mutex); 269 mutex_unlock(&wusbhc->mutex);
270
271 wusb_dev_put(wusb_dev);
270} 272}
271 273
272/* 274/*
@@ -396,7 +398,8 @@ static void __wusbhc_dev_disconnect(struct wusbhc *wusbhc,
396 398
397 /* After a device disconnects, change the GTK (see [WUSB] 399 /* After a device disconnects, change the GTK (see [WUSB]
398 * section 6.2.11.2). */ 400 * section 6.2.11.2). */
399 wusbhc_gtk_rekey(wusbhc); 401 if (wusbhc->active)
402 wusbhc_gtk_rekey(wusbhc);
400 403
401 /* The Wireless USB part has forgotten about the device already; now 404 /* The Wireless USB part has forgotten about the device already; now
402 * khubd's timer will pick up the disconnection and remove the USB 405 * khubd's timer will pick up the disconnection and remove the USB
@@ -1084,15 +1087,21 @@ error_mmcie_set:
1084 * wusbhc_devconnect_stop - stop managing connected devices 1087 * wusbhc_devconnect_stop - stop managing connected devices
1085 * @wusbhc: the WUSB HC 1088 * @wusbhc: the WUSB HC
1086 * 1089 *
1087 * Removes the Host Info IE and stops the keep alives. 1090 * Disconnects any devices still connected, stops the keep alives and
1088 * 1091 * removes the Host Info IE.
1089 * FIXME: should this disconnect all devices?
1090 */ 1092 */
1091void wusbhc_devconnect_stop(struct wusbhc *wusbhc) 1093void wusbhc_devconnect_stop(struct wusbhc *wusbhc)
1092{ 1094{
1093 cancel_delayed_work_sync(&wusbhc->keep_alive_timer); 1095 int i;
1094 WARN_ON(!list_empty(&wusbhc->cack_list));
1095 1096
1097 mutex_lock(&wusbhc->mutex);
1098 for (i = 0; i < wusbhc->ports_max; i++) {
1099 if (wusbhc->port[i].wusb_dev)
1100 __wusbhc_dev_disconnect(wusbhc, &wusbhc->port[i]);
1101 }
1102 mutex_unlock(&wusbhc->mutex);
1103
1104 cancel_delayed_work_sync(&wusbhc->keep_alive_timer);
1096 wusbhc_mmcie_rm(wusbhc, &wusbhc->wuie_host_info->hdr); 1105 wusbhc_mmcie_rm(wusbhc, &wusbhc->wuie_host_info->hdr);
1097 kfree(wusbhc->wuie_host_info); 1106 kfree(wusbhc->wuie_host_info);
1098 wusbhc->wuie_host_info = NULL; 1107 wusbhc->wuie_host_info = NULL;
diff --git a/drivers/usb/wusbcore/wusbhc.c b/drivers/usb/wusbcore/wusbhc.c
index 07c63a31c799..ee6256f23636 100644
--- a/drivers/usb/wusbcore/wusbhc.c
+++ b/drivers/usb/wusbcore/wusbhc.c
@@ -88,33 +88,31 @@ static DEVICE_ATTR(wusb_trust_timeout, 0644, wusb_trust_timeout_show,
88 wusb_trust_timeout_store); 88 wusb_trust_timeout_store);
89 89
90/* 90/*
91 * Show & store the current WUSB CHID 91 * Show the current WUSB CHID.
92 */ 92 */
93static ssize_t wusb_chid_show(struct device *dev, 93static ssize_t wusb_chid_show(struct device *dev,
94 struct device_attribute *attr, char *buf) 94 struct device_attribute *attr, char *buf)
95{ 95{
96 struct wusbhc *wusbhc = usbhc_dev_to_wusbhc(dev); 96 struct wusbhc *wusbhc = usbhc_dev_to_wusbhc(dev);
97 const struct wusb_ckhdid *chid;
97 ssize_t result = 0; 98 ssize_t result = 0;
98 99
99 if (wusbhc->wuie_host_info != NULL) 100 if (wusbhc->wuie_host_info != NULL)
100 result += ckhdid_printf(buf, PAGE_SIZE, 101 chid = &wusbhc->wuie_host_info->CHID;
101 &wusbhc->wuie_host_info->CHID); 102 else
103 chid = &wusb_ckhdid_zero;
104
105 result += ckhdid_printf(buf, PAGE_SIZE, chid);
106 result += sprintf(buf + result, "\n");
107
102 return result; 108 return result;
103} 109}
104 110
105/* 111/*
106 * Store a new CHID 112 * Store a new CHID.
107 *
108 * This will (FIXME) trigger many changes.
109 *
110 * - Send an all zeros CHID and it will stop the controller
111 * - Send a non-zero CHID and it will start it
112 * (unless it was started, it will just change the CHID,
113 * diconnecting all devices first).
114 * 113 *
115 * So first we scan the MMC we are sent and then we act on it. We 114 * - Write an all zeros CHID and it will stop the controller
116 * read it in the same format as we print it, an ASCII string of 16 115 * - Write a non-zero CHID and it will start it.
117 * hex bytes.
118 * 116 *
119 * See wusbhc_chid_set() for more info. 117 * See wusbhc_chid_set() for more info.
120 */ 118 */
@@ -339,13 +337,15 @@ void wusbhc_giveback_urb(struct wusbhc *wusbhc, struct urb *urb, int status)
339{ 337{
340 struct wusb_dev *wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev); 338 struct wusb_dev *wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev);
341 339
342 if (status == 0) { 340 if (status == 0 && wusb_dev) {
343 wusb_dev->entry_ts = jiffies; 341 wusb_dev->entry_ts = jiffies;
344 342
345 /* wusbhc_devconnect_acked() can't be called from from 343 /* wusbhc_devconnect_acked() can't be called from
346 atomic context so defer it to a work queue. */ 344 atomic context so defer it to a work queue. */
347 if (!list_empty(&wusb_dev->cack_node)) 345 if (!list_empty(&wusb_dev->cack_node))
348 queue_work(wusbd, &wusb_dev->devconnect_acked_work); 346 queue_work(wusbd, &wusb_dev->devconnect_acked_work);
347 else
348 wusb_dev_put(wusb_dev);
349 } 349 }
350 350
351 usb_hcd_giveback_urb(&wusbhc->usb_hcd, urb, status); 351 usb_hcd_giveback_urb(&wusbhc->usb_hcd, urb, status);
diff --git a/drivers/video/asiliantfb.c b/drivers/video/asiliantfb.c
index 1a1f946d8fef..9fe90ce928fb 100644
--- a/drivers/video/asiliantfb.c
+++ b/drivers/video/asiliantfb.c
@@ -533,6 +533,7 @@ static int __devinit init_asiliant(struct fb_info *p, unsigned long addr)
533 533
534 writeb(0xff, mmio_base + 0x78c); 534 writeb(0xff, mmio_base + 0x78c);
535 chips_hw_init(p); 535 chips_hw_init(p);
536 return 0;
536} 537}
537 538
538static int __devinit 539static int __devinit
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c
index 16bb7e3c0310..6c37e8ee5efe 100644
--- a/drivers/video/aty/radeon_base.c
+++ b/drivers/video/aty/radeon_base.c
@@ -698,8 +698,8 @@ static void __devinit radeon_get_pllinfo(struct radeonfb_info *rinfo)
698found: 698found:
699 /* 699 /*
700 * Some methods fail to retrieve SCLK and MCLK values, we apply default 700 * Some methods fail to retrieve SCLK and MCLK values, we apply default
701 * settings in this case (200Mhz). If that really happne often, we could 701 * settings in this case (200Mhz). If that really happens often, we
702 * fetch from registers instead... 702 * could fetch from registers instead...
703 */ 703 */
704 if (rinfo->pll.mclk == 0) 704 if (rinfo->pll.mclk == 0)
705 rinfo->pll.mclk = 20000; 705 rinfo->pll.mclk = 20000;
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
index dd37cbcaf8ce..157057c79ca3 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -35,8 +35,6 @@ static int fb_notifier_callback(struct notifier_block *self,
35 return 0; 35 return 0;
36 36
37 bd = container_of(self, struct backlight_device, fb_notif); 37 bd = container_of(self, struct backlight_device, fb_notif);
38 if (!lock_fb_info(evdata->info))
39 return -ENODEV;
40 mutex_lock(&bd->ops_lock); 38 mutex_lock(&bd->ops_lock);
41 if (bd->ops) 39 if (bd->ops)
42 if (!bd->ops->check_fb || 40 if (!bd->ops->check_fb ||
@@ -49,7 +47,6 @@ static int fb_notifier_callback(struct notifier_block *self,
49 backlight_update_status(bd); 47 backlight_update_status(bd);
50 } 48 }
51 mutex_unlock(&bd->ops_lock); 49 mutex_unlock(&bd->ops_lock);
52 unlock_fb_info(evdata->info);
53 return 0; 50 return 0;
54} 51}
55 52
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index 0bb13df0fa89..b6449470106c 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -40,8 +40,6 @@ static int fb_notifier_callback(struct notifier_block *self,
40 if (!ld->ops) 40 if (!ld->ops)
41 return 0; 41 return 0;
42 42
43 if (!lock_fb_info(evdata->info))
44 return -ENODEV;
45 mutex_lock(&ld->ops_lock); 43 mutex_lock(&ld->ops_lock);
46 if (!ld->ops->check_fb || ld->ops->check_fb(ld, evdata->info)) { 44 if (!ld->ops->check_fb || ld->ops->check_fb(ld, evdata->info)) {
47 if (event == FB_EVENT_BLANK) { 45 if (event == FB_EVENT_BLANK) {
@@ -53,7 +51,6 @@ static int fb_notifier_callback(struct notifier_block *self,
53 } 51 }
54 } 52 }
55 mutex_unlock(&ld->ops_lock); 53 mutex_unlock(&ld->ops_lock);
56 unlock_fb_info(evdata->info);
57 return 0; 54 return 0;
58} 55}
59 56
diff --git a/drivers/video/cirrusfb.c b/drivers/video/cirrusfb.c
index d42e385f091c..4c2bf923418c 100644
--- a/drivers/video/cirrusfb.c
+++ b/drivers/video/cirrusfb.c
@@ -567,9 +567,7 @@ static int cirrusfb_check_var(struct fb_var_screeninfo *var,
567 default: 567 default:
568 dev_dbg(info->device, 568 dev_dbg(info->device,
569 "Unsupported bpp size: %d\n", var->bits_per_pixel); 569 "Unsupported bpp size: %d\n", var->bits_per_pixel);
570 assert(false); 570 return -EINVAL;
571 /* should never occur */
572 break;
573 } 571 }
574 572
575 if (var->xres_virtual < var->xres) 573 if (var->xres_virtual < var->xres)
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 2cd500a304f2..471a9a60376a 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -2263,9 +2263,12 @@ static void fbcon_generic_blank(struct vc_data *vc, struct fb_info *info,
2263 } 2263 }
2264 2264
2265 2265
2266 if (!lock_fb_info(info))
2267 return;
2266 event.info = info; 2268 event.info = info;
2267 event.data = &blank; 2269 event.data = &blank;
2268 fb_notifier_call_chain(FB_EVENT_CONBLANK, &event); 2270 fb_notifier_call_chain(FB_EVENT_CONBLANK, &event);
2271 unlock_fb_info(info);
2269} 2272}
2270 2273
2271static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch) 2274static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)
@@ -2956,8 +2959,6 @@ static int fbcon_fb_unregistered(struct fb_info *info)
2956{ 2959{
2957 int i, idx; 2960 int i, idx;
2958 2961
2959 if (!lock_fb_info(info))
2960 return -ENODEV;
2961 idx = info->node; 2962 idx = info->node;
2962 for (i = first_fb_vc; i <= last_fb_vc; i++) { 2963 for (i = first_fb_vc; i <= last_fb_vc; i++) {
2963 if (con2fb_map[i] == idx) 2964 if (con2fb_map[i] == idx)
@@ -2985,8 +2986,6 @@ static int fbcon_fb_unregistered(struct fb_info *info)
2985 if (primary_device == idx) 2986 if (primary_device == idx)
2986 primary_device = -1; 2987 primary_device = -1;
2987 2988
2988 unlock_fb_info(info);
2989
2990 if (!num_registered_fb) 2989 if (!num_registered_fb)
2991 unregister_con_driver(&fb_con); 2990 unregister_con_driver(&fb_con);
2992 2991
@@ -3027,11 +3026,8 @@ static int fbcon_fb_registered(struct fb_info *info)
3027{ 3026{
3028 int ret = 0, i, idx; 3027 int ret = 0, i, idx;
3029 3028
3030 if (!lock_fb_info(info))
3031 return -ENODEV;
3032 idx = info->node; 3029 idx = info->node;
3033 fbcon_select_primary(info); 3030 fbcon_select_primary(info);
3034 unlock_fb_info(info);
3035 3031
3036 if (info_idx == -1) { 3032 if (info_idx == -1) {
3037 for (i = first_fb_vc; i <= last_fb_vc; i++) { 3033 for (i = first_fb_vc; i <= last_fb_vc; i++) {
@@ -3152,53 +3148,23 @@ static int fbcon_event_notify(struct notifier_block *self,
3152 3148
3153 switch(action) { 3149 switch(action) {
3154 case FB_EVENT_SUSPEND: 3150 case FB_EVENT_SUSPEND:
3155 if (!lock_fb_info(info)) {
3156 ret = -ENODEV;
3157 goto done;
3158 }
3159 fbcon_suspended(info); 3151 fbcon_suspended(info);
3160 unlock_fb_info(info);
3161 break; 3152 break;
3162 case FB_EVENT_RESUME: 3153 case FB_EVENT_RESUME:
3163 if (!lock_fb_info(info)) {
3164 ret = -ENODEV;
3165 goto done;
3166 }
3167 fbcon_resumed(info); 3154 fbcon_resumed(info);
3168 unlock_fb_info(info);
3169 break; 3155 break;
3170 case FB_EVENT_MODE_CHANGE: 3156 case FB_EVENT_MODE_CHANGE:
3171 if (!lock_fb_info(info)) {
3172 ret = -ENODEV;
3173 goto done;
3174 }
3175 fbcon_modechanged(info); 3157 fbcon_modechanged(info);
3176 unlock_fb_info(info);
3177 break; 3158 break;
3178 case FB_EVENT_MODE_CHANGE_ALL: 3159 case FB_EVENT_MODE_CHANGE_ALL:
3179 if (!lock_fb_info(info)) {
3180 ret = -ENODEV;
3181 goto done;
3182 }
3183 fbcon_set_all_vcs(info); 3160 fbcon_set_all_vcs(info);
3184 unlock_fb_info(info);
3185 break; 3161 break;
3186 case FB_EVENT_MODE_DELETE: 3162 case FB_EVENT_MODE_DELETE:
3187 mode = event->data; 3163 mode = event->data;
3188 if (!lock_fb_info(info)) {
3189 ret = -ENODEV;
3190 goto done;
3191 }
3192 ret = fbcon_mode_deleted(info, mode); 3164 ret = fbcon_mode_deleted(info, mode);
3193 unlock_fb_info(info);
3194 break; 3165 break;
3195 case FB_EVENT_FB_UNBIND: 3166 case FB_EVENT_FB_UNBIND:
3196 if (!lock_fb_info(info)) {
3197 ret = -ENODEV;
3198 goto done;
3199 }
3200 idx = info->node; 3167 idx = info->node;
3201 unlock_fb_info(info);
3202 ret = fbcon_fb_unbind(idx); 3168 ret = fbcon_fb_unbind(idx);
3203 break; 3169 break;
3204 case FB_EVENT_FB_REGISTERED: 3170 case FB_EVENT_FB_REGISTERED:
@@ -3217,29 +3183,14 @@ static int fbcon_event_notify(struct notifier_block *self,
3217 con2fb->framebuffer = con2fb_map[con2fb->console - 1]; 3183 con2fb->framebuffer = con2fb_map[con2fb->console - 1];
3218 break; 3184 break;
3219 case FB_EVENT_BLANK: 3185 case FB_EVENT_BLANK:
3220 if (!lock_fb_info(info)) {
3221 ret = -ENODEV;
3222 goto done;
3223 }
3224 fbcon_fb_blanked(info, *(int *)event->data); 3186 fbcon_fb_blanked(info, *(int *)event->data);
3225 unlock_fb_info(info);
3226 break; 3187 break;
3227 case FB_EVENT_NEW_MODELIST: 3188 case FB_EVENT_NEW_MODELIST:
3228 if (!lock_fb_info(info)) {
3229 ret = -ENODEV;
3230 goto done;
3231 }
3232 fbcon_new_modelist(info); 3189 fbcon_new_modelist(info);
3233 unlock_fb_info(info);
3234 break; 3190 break;
3235 case FB_EVENT_GET_REQ: 3191 case FB_EVENT_GET_REQ:
3236 caps = event->data; 3192 caps = event->data;
3237 if (!lock_fb_info(info)) {
3238 ret = -ENODEV;
3239 goto done;
3240 }
3241 fbcon_get_requirement(info, caps); 3193 fbcon_get_requirement(info, caps);
3242 unlock_fb_info(info);
3243 break; 3194 break;
3244 } 3195 }
3245done: 3196done:
diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
index 0c5b9a9fd56f..8dea2bc92705 100644
--- a/drivers/video/efifb.c
+++ b/drivers/video/efifb.c
@@ -210,12 +210,15 @@ static int __init efifb_probe(struct platform_device *dev)
210 unsigned int size_total; 210 unsigned int size_total;
211 int request_succeeded = 0; 211 int request_succeeded = 0;
212 212
213 printk(KERN_INFO "efifb: probing for efifb\n");
214
215 if (!screen_info.lfb_depth) 213 if (!screen_info.lfb_depth)
216 screen_info.lfb_depth = 32; 214 screen_info.lfb_depth = 32;
217 if (!screen_info.pages) 215 if (!screen_info.pages)
218 screen_info.pages = 1; 216 screen_info.pages = 1;
217 if (!screen_info.lfb_base) {
218 printk(KERN_DEBUG "efifb: invalid framebuffer address\n");
219 return -ENODEV;
220 }
221 printk(KERN_INFO "efifb: probing for efifb\n");
219 222
220 /* just assume they're all unset if any are */ 223 /* just assume they're all unset if any are */
221 if (!screen_info.blue_size) { 224 if (!screen_info.blue_size) {
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 2ac32e6b5953..d412a1ddc12f 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1097,8 +1097,11 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
1097 return -EINVAL; 1097 return -EINVAL;
1098 con2fb.framebuffer = -1; 1098 con2fb.framebuffer = -1;
1099 event.data = &con2fb; 1099 event.data = &con2fb;
1100 if (!lock_fb_info(info))
1101 return -ENODEV;
1100 event.info = info; 1102 event.info = info;
1101 fb_notifier_call_chain(FB_EVENT_GET_CONSOLE_MAP, &event); 1103 fb_notifier_call_chain(FB_EVENT_GET_CONSOLE_MAP, &event);
1104 unlock_fb_info(info);
1102 ret = copy_to_user(argp, &con2fb, sizeof(con2fb)) ? -EFAULT : 0; 1105 ret = copy_to_user(argp, &con2fb, sizeof(con2fb)) ? -EFAULT : 0;
1103 break; 1106 break;
1104 case FBIOPUT_CON2FBMAP: 1107 case FBIOPUT_CON2FBMAP:
@@ -1115,8 +1118,11 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
1115 break; 1118 break;
1116 } 1119 }
1117 event.data = &con2fb; 1120 event.data = &con2fb;
1121 if (!lock_fb_info(info))
1122 return -ENODEV;
1118 event.info = info; 1123 event.info = info;
1119 ret = fb_notifier_call_chain(FB_EVENT_SET_CONSOLE_MAP, &event); 1124 ret = fb_notifier_call_chain(FB_EVENT_SET_CONSOLE_MAP, &event);
1125 unlock_fb_info(info);
1120 break; 1126 break;
1121 case FBIOBLANK: 1127 case FBIOBLANK:
1122 if (!lock_fb_info(info)) 1128 if (!lock_fb_info(info))
@@ -1521,7 +1527,10 @@ register_framebuffer(struct fb_info *fb_info)
1521 registered_fb[i] = fb_info; 1527 registered_fb[i] = fb_info;
1522 1528
1523 event.info = fb_info; 1529 event.info = fb_info;
1530 if (!lock_fb_info(fb_info))
1531 return -ENODEV;
1524 fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); 1532 fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event);
1533 unlock_fb_info(fb_info);
1525 return 0; 1534 return 0;
1526} 1535}
1527 1536
@@ -1555,8 +1564,12 @@ unregister_framebuffer(struct fb_info *fb_info)
1555 goto done; 1564 goto done;
1556 } 1565 }
1557 1566
1567
1568 if (!lock_fb_info(fb_info))
1569 return -ENODEV;
1558 event.info = fb_info; 1570 event.info = fb_info;
1559 ret = fb_notifier_call_chain(FB_EVENT_FB_UNBIND, &event); 1571 ret = fb_notifier_call_chain(FB_EVENT_FB_UNBIND, &event);
1572 unlock_fb_info(fb_info);
1560 1573
1561 if (ret) { 1574 if (ret) {
1562 ret = -EINVAL; 1575 ret = -EINVAL;
@@ -1590,6 +1603,8 @@ void fb_set_suspend(struct fb_info *info, int state)
1590{ 1603{
1591 struct fb_event event; 1604 struct fb_event event;
1592 1605
1606 if (!lock_fb_info(info))
1607 return;
1593 event.info = info; 1608 event.info = info;
1594 if (state) { 1609 if (state) {
1595 fb_notifier_call_chain(FB_EVENT_SUSPEND, &event); 1610 fb_notifier_call_chain(FB_EVENT_SUSPEND, &event);
@@ -1598,6 +1613,7 @@ void fb_set_suspend(struct fb_info *info, int state)
1598 info->state = FBINFO_STATE_RUNNING; 1613 info->state = FBINFO_STATE_RUNNING;
1599 fb_notifier_call_chain(FB_EVENT_RESUME, &event); 1614 fb_notifier_call_chain(FB_EVENT_RESUME, &event);
1600 } 1615 }
1616 unlock_fb_info(info);
1601} 1617}
1602 1618
1603/** 1619/**
@@ -1667,8 +1683,11 @@ int fb_new_modelist(struct fb_info *info)
1667 err = 1; 1683 err = 1;
1668 1684
1669 if (!list_empty(&info->modelist)) { 1685 if (!list_empty(&info->modelist)) {
1686 if (!lock_fb_info(info))
1687 return -ENODEV;
1670 event.info = info; 1688 event.info = info;
1671 err = fb_notifier_call_chain(FB_EVENT_NEW_MODELIST, &event); 1689 err = fb_notifier_call_chain(FB_EVENT_NEW_MODELIST, &event);
1690 unlock_fb_info(info);
1672 } 1691 }
1673 1692
1674 return err; 1693 return err;
diff --git a/drivers/video/intelfb/intelfb.h b/drivers/video/intelfb/intelfb.h
index a50bea614804..40984551c927 100644
--- a/drivers/video/intelfb/intelfb.h
+++ b/drivers/video/intelfb/intelfb.h
@@ -53,6 +53,7 @@
53#define PCI_DEVICE_ID_INTEL_830M 0x3577 53#define PCI_DEVICE_ID_INTEL_830M 0x3577
54#define PCI_DEVICE_ID_INTEL_845G 0x2562 54#define PCI_DEVICE_ID_INTEL_845G 0x2562
55#define PCI_DEVICE_ID_INTEL_85XGM 0x3582 55#define PCI_DEVICE_ID_INTEL_85XGM 0x3582
56#define PCI_DEVICE_ID_INTEL_854 0x358E
56#define PCI_DEVICE_ID_INTEL_865G 0x2572 57#define PCI_DEVICE_ID_INTEL_865G 0x2572
57#define PCI_DEVICE_ID_INTEL_915G 0x2582 58#define PCI_DEVICE_ID_INTEL_915G 0x2582
58#define PCI_DEVICE_ID_INTEL_915GM 0x2592 59#define PCI_DEVICE_ID_INTEL_915GM 0x2592
@@ -154,6 +155,7 @@ enum intel_chips {
154 INTEL_85XGM, 155 INTEL_85XGM,
155 INTEL_852GM, 156 INTEL_852GM,
156 INTEL_852GME, 157 INTEL_852GME,
158 INTEL_854,
157 INTEL_855GM, 159 INTEL_855GM,
158 INTEL_855GME, 160 INTEL_855GME,
159 INTEL_865G, 161 INTEL_865G,
diff --git a/drivers/video/intelfb/intelfb_i2c.c b/drivers/video/intelfb/intelfb_i2c.c
index b3065492bb20..487f2be47460 100644
--- a/drivers/video/intelfb/intelfb_i2c.c
+++ b/drivers/video/intelfb/intelfb_i2c.c
@@ -156,6 +156,7 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
156 switch(dinfo->chipset) { 156 switch(dinfo->chipset) {
157 case INTEL_830M: 157 case INTEL_830M:
158 case INTEL_845G: 158 case INTEL_845G:
159 case INTEL_854:
159 case INTEL_855GM: 160 case INTEL_855GM:
160 case INTEL_865G: 161 case INTEL_865G:
161 dinfo->output[i].type = INTELFB_OUTPUT_DVO; 162 dinfo->output[i].type = INTELFB_OUTPUT_DVO;
diff --git a/drivers/video/intelfb/intelfbdrv.c b/drivers/video/intelfb/intelfbdrv.c
index 6d8e5415c809..ace14fe02fc4 100644
--- a/drivers/video/intelfb/intelfbdrv.c
+++ b/drivers/video/intelfb/intelfbdrv.c
@@ -182,6 +182,7 @@ static struct pci_device_id intelfb_pci_table[] __devinitdata = {
182 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_845G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_845G }, 182 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_845G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_845G },
183 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_85XGM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_85XGM }, 183 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_85XGM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_85XGM },
184 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_865G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_865G }, 184 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_865G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_865G },
185 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_854, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_854 },
185 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915G }, 186 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915G },
186 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915GM }, 187 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915GM },
187 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_945G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_945G }, 188 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_945G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_945G },
diff --git a/drivers/video/intelfb/intelfbhw.c b/drivers/video/intelfb/intelfbhw.c
index 8b26b27c2db6..0689f97c5238 100644
--- a/drivers/video/intelfb/intelfbhw.c
+++ b/drivers/video/intelfb/intelfbhw.c
@@ -84,6 +84,11 @@ int intelfbhw_get_chipset(struct pci_dev *pdev, struct intelfb_info *dinfo)
84 dinfo->mobile = 0; 84 dinfo->mobile = 0;
85 dinfo->pll_index = PLLS_I8xx; 85 dinfo->pll_index = PLLS_I8xx;
86 return 0; 86 return 0;
87 case PCI_DEVICE_ID_INTEL_854:
88 dinfo->mobile = 1;
89 dinfo->name = "Intel(R) 854";
90 dinfo->chipset = INTEL_854;
91 return 0;
87 case PCI_DEVICE_ID_INTEL_85XGM: 92 case PCI_DEVICE_ID_INTEL_85XGM:
88 tmp = 0; 93 tmp = 0;
89 dinfo->mobile = 1; 94 dinfo->mobile = 1;
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 84f63205c46d..0889d50c3288 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -1439,7 +1439,7 @@ static void pxafb_disable_controller(struct pxafb_info *fbi)
1439static irqreturn_t pxafb_handle_irq(int irq, void *dev_id) 1439static irqreturn_t pxafb_handle_irq(int irq, void *dev_id)
1440{ 1440{
1441 struct pxafb_info *fbi = dev_id; 1441 struct pxafb_info *fbi = dev_id;
1442 unsigned int lccr0, lcsr, lcsr1; 1442 unsigned int lccr0, lcsr;
1443 1443
1444 lcsr = lcd_readl(fbi, LCSR); 1444 lcsr = lcd_readl(fbi, LCSR);
1445 if (lcsr & LCSR_LDD) { 1445 if (lcsr & LCSR_LDD) {
@@ -1455,14 +1455,16 @@ static irqreturn_t pxafb_handle_irq(int irq, void *dev_id)
1455 lcd_writel(fbi, LCSR, lcsr); 1455 lcd_writel(fbi, LCSR, lcsr);
1456 1456
1457#ifdef CONFIG_FB_PXA_OVERLAY 1457#ifdef CONFIG_FB_PXA_OVERLAY
1458 lcsr1 = lcd_readl(fbi, LCSR1); 1458 {
1459 if (lcsr1 & LCSR1_BS(1)) 1459 unsigned int lcsr1 = lcd_readl(fbi, LCSR1);
1460 complete(&fbi->overlay[0].branch_done); 1460 if (lcsr1 & LCSR1_BS(1))
1461 complete(&fbi->overlay[0].branch_done);
1461 1462
1462 if (lcsr1 & LCSR1_BS(2)) 1463 if (lcsr1 & LCSR1_BS(2))
1463 complete(&fbi->overlay[1].branch_done); 1464 complete(&fbi->overlay[1].branch_done);
1464 1465
1465 lcd_writel(fbi, LCSR1, lcsr1); 1466 lcd_writel(fbi, LCSR1, lcsr1);
1467 }
1466#endif 1468#endif
1467 return IRQ_HANDLED; 1469 return IRQ_HANDLED;
1468} 1470}
diff --git a/drivers/video/s3fb.c b/drivers/video/s3fb.c
index 4dcec48a1d78..c3fad34309ed 100644
--- a/drivers/video/s3fb.c
+++ b/drivers/video/s3fb.c
@@ -45,11 +45,11 @@ struct s3fb_info {
45static const struct svga_fb_format s3fb_formats[] = { 45static const struct svga_fb_format s3fb_formats[] = {
46 { 0, {0, 6, 0}, {0, 6, 0}, {0, 6, 0}, {0, 0, 0}, 0, 46 { 0, {0, 6, 0}, {0, 6, 0}, {0, 6, 0}, {0, 0, 0}, 0,
47 FB_TYPE_TEXT, FB_AUX_TEXT_SVGA_STEP4, FB_VISUAL_PSEUDOCOLOR, 8, 16}, 47 FB_TYPE_TEXT, FB_AUX_TEXT_SVGA_STEP4, FB_VISUAL_PSEUDOCOLOR, 8, 16},
48 { 4, {0, 6, 0}, {0, 6, 0}, {0, 6, 0}, {0, 0, 0}, 0, 48 { 4, {0, 4, 0}, {0, 4, 0}, {0, 4, 0}, {0, 0, 0}, 0,
49 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_PSEUDOCOLOR, 8, 16}, 49 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_PSEUDOCOLOR, 8, 16},
50 { 4, {0, 6, 0}, {0, 6, 0}, {0, 6, 0}, {0, 0, 0}, 1, 50 { 4, {0, 4, 0}, {0, 4, 0}, {0, 4, 0}, {0, 0, 0}, 1,
51 FB_TYPE_INTERLEAVED_PLANES, 1, FB_VISUAL_PSEUDOCOLOR, 8, 16}, 51 FB_TYPE_INTERLEAVED_PLANES, 1, FB_VISUAL_PSEUDOCOLOR, 8, 16},
52 { 8, {0, 6, 0}, {0, 6, 0}, {0, 6, 0}, {0, 0, 0}, 0, 52 { 8, {0, 8, 0}, {0, 8, 0}, {0, 8, 0}, {0, 0, 0}, 0,
53 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_PSEUDOCOLOR, 4, 8}, 53 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_PSEUDOCOLOR, 4, 8},
54 {16, {10, 5, 0}, {5, 5, 0}, {0, 5, 0}, {0, 0, 0}, 0, 54 {16, {10, 5, 0}, {5, 5, 0}, {0, 5, 0}, {0, 0, 0}, 0,
55 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_TRUECOLOR, 2, 4}, 55 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_TRUECOLOR, 2, 4},
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c
index fad58cf9ef73..10ddad8e17d6 100644
--- a/drivers/video/sa1100fb.c
+++ b/drivers/video/sa1100fb.c
@@ -199,16 +199,20 @@
199extern void (*sa1100fb_backlight_power)(int on); 199extern void (*sa1100fb_backlight_power)(int on);
200extern void (*sa1100fb_lcd_power)(int on); 200extern void (*sa1100fb_lcd_power)(int on);
201 201
202/* 202static struct sa1100fb_rgb rgb_4 = {
203 * IMHO this looks wrong. In 8BPP, length should be 8.
204 */
205static struct sa1100fb_rgb rgb_8 = {
206 .red = { .offset = 0, .length = 4, }, 203 .red = { .offset = 0, .length = 4, },
207 .green = { .offset = 0, .length = 4, }, 204 .green = { .offset = 0, .length = 4, },
208 .blue = { .offset = 0, .length = 4, }, 205 .blue = { .offset = 0, .length = 4, },
209 .transp = { .offset = 0, .length = 0, }, 206 .transp = { .offset = 0, .length = 0, },
210}; 207};
211 208
209static struct sa1100fb_rgb rgb_8 = {
210 .red = { .offset = 0, .length = 8, },
211 .green = { .offset = 0, .length = 8, },
212 .blue = { .offset = 0, .length = 8, },
213 .transp = { .offset = 0, .length = 0, },
214};
215
212static struct sa1100fb_rgb def_rgb_16 = { 216static struct sa1100fb_rgb def_rgb_16 = {
213 .red = { .offset = 11, .length = 5, }, 217 .red = { .offset = 11, .length = 5, },
214 .green = { .offset = 5, .length = 6, }, 218 .green = { .offset = 5, .length = 6, },
@@ -613,7 +617,7 @@ sa1100fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
613 DPRINTK("var->bits_per_pixel=%d\n", var->bits_per_pixel); 617 DPRINTK("var->bits_per_pixel=%d\n", var->bits_per_pixel);
614 switch (var->bits_per_pixel) { 618 switch (var->bits_per_pixel) {
615 case 4: 619 case 4:
616 rgbidx = RGB_8; 620 rgbidx = RGB_4;
617 break; 621 break;
618 case 8: 622 case 8:
619 rgbidx = RGB_8; 623 rgbidx = RGB_8;
@@ -1382,6 +1386,7 @@ static struct sa1100fb_info * __init sa1100fb_init_fbinfo(struct device *dev)
1382 fbi->fb.monspecs = monspecs; 1386 fbi->fb.monspecs = monspecs;
1383 fbi->fb.pseudo_palette = (fbi + 1); 1387 fbi->fb.pseudo_palette = (fbi + 1);
1384 1388
1389 fbi->rgb[RGB_4] = &rgb_4;
1385 fbi->rgb[RGB_8] = &rgb_8; 1390 fbi->rgb[RGB_8] = &rgb_8;
1386 fbi->rgb[RGB_16] = &def_rgb_16; 1391 fbi->rgb[RGB_16] = &def_rgb_16;
1387 1392
diff --git a/drivers/video/sa1100fb.h b/drivers/video/sa1100fb.h
index 86831db9a042..1c3b459865d8 100644
--- a/drivers/video/sa1100fb.h
+++ b/drivers/video/sa1100fb.h
@@ -57,9 +57,10 @@ struct sa1100fb_lcd_reg {
57 unsigned long lccr3; 57 unsigned long lccr3;
58}; 58};
59 59
60#define RGB_8 (0) 60#define RGB_4 (0)
61#define RGB_16 (1) 61#define RGB_8 (1)
62#define NR_RGB 2 62#define RGB_16 (2)
63#define NR_RGB 3
63 64
64struct sa1100fb_info { 65struct sa1100fb_info {
65 struct fb_info fb; 66 struct fb_info fb;
diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c
index 346d6458cf76..7e17ee95a97a 100644
--- a/drivers/video/sis/sis_main.c
+++ b/drivers/video/sis/sis_main.c
@@ -1129,7 +1129,7 @@ sisfb_bpp_to_var(struct sis_video_info *ivideo, struct fb_var_screeninfo *var)
1129 switch(var->bits_per_pixel) { 1129 switch(var->bits_per_pixel) {
1130 case 8: 1130 case 8:
1131 var->red.offset = var->green.offset = var->blue.offset = 0; 1131 var->red.offset = var->green.offset = var->blue.offset = 0;
1132 var->red.length = var->green.length = var->blue.length = 6; 1132 var->red.length = var->green.length = var->blue.length = 8;
1133 break; 1133 break;
1134 case 16: 1134 case 16:
1135 var->red.offset = 11; 1135 var->red.offset = 11;
diff --git a/drivers/video/skeletonfb.c b/drivers/video/skeletonfb.c
index a439159204a8..89158bc71da2 100644
--- a/drivers/video/skeletonfb.c
+++ b/drivers/video/skeletonfb.c
@@ -308,9 +308,11 @@ static int xxxfb_setcolreg(unsigned regno, unsigned red, unsigned green,
308 * color depth = SUM(var->{color}.length) 308 * color depth = SUM(var->{color}.length)
309 * 309 *
310 * Pseudocolor: 310 * Pseudocolor:
311 * var->{color}.offset is 0 311 * var->{color}.offset is 0 unless the palette index takes less than
312 * var->{color}.length contains width of DAC or the number of unique 312 * bits_per_pixel bits and is stored in the upper
313 * colors available (color depth) 313 * bits of the pixel value
314 * var->{color}.length is set so that 1 << length is the number of
315 * available palette entries
314 * pseudo_palette is not used 316 * pseudo_palette is not used
315 * RAMDAC[X] is programmed to (red, green, blue) 317 * RAMDAC[X] is programmed to (red, green, blue)
316 * color depth = var->{color}.length 318 * color depth = var->{color}.length
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
index 0b370aebdbfd..421770b5e6ab 100644
--- a/drivers/video/uvesafb.c
+++ b/drivers/video/uvesafb.c
@@ -55,6 +55,7 @@ static u16 maxvf __devinitdata; /* maximum vertical frequency */
55static u16 maxhf __devinitdata; /* maximum horizontal frequency */ 55static u16 maxhf __devinitdata; /* maximum horizontal frequency */
56static u16 vbemode __devinitdata; /* force use of a specific VBE mode */ 56static u16 vbemode __devinitdata; /* force use of a specific VBE mode */
57static char *mode_option __devinitdata; 57static char *mode_option __devinitdata;
58static u8 dac_width = 6;
58 59
59static struct uvesafb_ktask *uvfb_tasks[UVESAFB_TASKS_MAX]; 60static struct uvesafb_ktask *uvfb_tasks[UVESAFB_TASKS_MAX];
60static DEFINE_MUTEX(uvfb_lock); 61static DEFINE_MUTEX(uvfb_lock);
@@ -303,22 +304,10 @@ static void uvesafb_setup_var(struct fb_var_screeninfo *var,
303 var->blue.offset = 0; 304 var->blue.offset = 0;
304 var->transp.offset = 0; 305 var->transp.offset = 0;
305 306
306 /* 307 var->red.length = 8;
307 * We're assuming that we can switch the DAC to 8 bits. If 308 var->green.length = 8;
308 * this proves to be incorrect, we'll update the fields 309 var->blue.length = 8;
309 * later in set_par(). 310 var->transp.length = 0;
310 */
311 if (par->vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC) {
312 var->red.length = 8;
313 var->green.length = 8;
314 var->blue.length = 8;
315 var->transp.length = 0;
316 } else {
317 var->red.length = 6;
318 var->green.length = 6;
319 var->blue.length = 6;
320 var->transp.length = 0;
321 }
322 } 311 }
323} 312}
324 313
@@ -1006,7 +995,7 @@ static int uvesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
1006 struct fb_info *info) 995 struct fb_info *info)
1007{ 996{
1008 struct uvesafb_pal_entry entry; 997 struct uvesafb_pal_entry entry;
1009 int shift = 16 - info->var.green.length; 998 int shift = 16 - dac_width;
1010 int err = 0; 999 int err = 0;
1011 1000
1012 if (regno >= info->cmap.len) 1001 if (regno >= info->cmap.len)
@@ -1055,7 +1044,7 @@ static int uvesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
1055static int uvesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info) 1044static int uvesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
1056{ 1045{
1057 struct uvesafb_pal_entry *entries; 1046 struct uvesafb_pal_entry *entries;
1058 int shift = 16 - info->var.green.length; 1047 int shift = 16 - dac_width;
1059 int i, err = 0; 1048 int i, err = 0;
1060 1049
1061 if (info->var.bits_per_pixel == 8) { 1050 if (info->var.bits_per_pixel == 8) {
@@ -1317,13 +1306,9 @@ setmode:
1317 err = uvesafb_exec(task); 1306 err = uvesafb_exec(task);
1318 if (err || (task->t.regs.eax & 0xffff) != 0x004f || 1307 if (err || (task->t.regs.eax & 0xffff) != 0x004f ||
1319 ((task->t.regs.ebx & 0xff00) >> 8) != 8) { 1308 ((task->t.regs.ebx & 0xff00) >> 8) != 8) {
1320 /* 1309 dac_width = 6;
1321 * We've failed to set the DAC palette format - 1310 } else {
1322 * time to correct var. 1311 dac_width = 8;
1323 */
1324 info->var.red.length = 6;
1325 info->var.green.length = 6;
1326 info->var.blue.length = 6;
1327 } 1312 }
1328 } 1313 }
1329 1314
diff --git a/drivers/video/vfb.c b/drivers/video/vfb.c
index cc919ae46571..050d432c7d95 100644
--- a/drivers/video/vfb.c
+++ b/drivers/video/vfb.c
@@ -318,13 +318,16 @@ static int vfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
318 * {hardwarespecific} contains width of RAMDAC 318 * {hardwarespecific} contains width of RAMDAC
319 * cmap[X] is programmed to (X << red.offset) | (X << green.offset) | (X << blue.offset) 319 * cmap[X] is programmed to (X << red.offset) | (X << green.offset) | (X << blue.offset)
320 * RAMDAC[X] is programmed to (red, green, blue) 320 * RAMDAC[X] is programmed to (red, green, blue)
321 * 321 *
322 * Pseudocolor: 322 * Pseudocolor:
323 * uses offset = 0 && length = RAMDAC register width. 323 * var->{color}.offset is 0 unless the palette index takes less than
324 * var->{color}.offset is 0 324 * bits_per_pixel bits and is stored in the upper
325 * var->{color}.length contains widht of DAC 325 * bits of the pixel value
326 * var->{color}.length is set so that 1 << length is the number of available
327 * palette entries
326 * cmap is not used 328 * cmap is not used
327 * RAMDAC[X] is programmed to (red, green, blue) 329 * RAMDAC[X] is programmed to (red, green, blue)
330 *
328 * Truecolor: 331 * Truecolor:
329 * does not use DAC. Usually 3 are present. 332 * does not use DAC. Usually 3 are present.
330 * var->{color}.offset contains start of bitfield 333 * var->{color}.offset contains start of bitfield
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 59268266b79a..9c76a061a04d 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -190,7 +190,8 @@ static int balloon(void *_vballoon)
190 try_to_freeze(); 190 try_to_freeze();
191 wait_event_interruptible(vb->config_change, 191 wait_event_interruptible(vb->config_change,
192 (diff = towards_target(vb)) != 0 192 (diff = towards_target(vb)) != 0
193 || kthread_should_stop()); 193 || kthread_should_stop()
194 || freezing(current));
194 if (diff > 0) 195 if (diff > 0)
195 fill_balloon(vb, diff); 196 fill_balloon(vb, diff);
196 else if (diff < 0) 197 else if (diff < 0)
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 63024145215d..5eb8f21da82e 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -240,8 +240,6 @@ config ORION5X_WATCHDOG
240 To compile this driver as a module, choose M here: the 240 To compile this driver as a module, choose M here: the
241 module will be called orion5x_wdt. 241 module will be called orion5x_wdt.
242 242
243# ARM26 Architecture
244
245# AVR32 Architecture 243# AVR32 Architecture
246 244
247config AT32AP700X_WDT 245config AT32AP700X_WDT
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 806b3eb08536..7f8c56b14f58 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -42,8 +42,6 @@ obj-$(CONFIG_IOP_WATCHDOG) += iop_wdt.o
42obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o 42obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o
43obj-$(CONFIG_ORION5X_WATCHDOG) += orion5x_wdt.o 43obj-$(CONFIG_ORION5X_WATCHDOG) += orion5x_wdt.o
44 44
45# ARM26 Architecture
46
47# AVR32 Architecture 45# AVR32 Architecture
48obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o 46obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o
49 47
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c
index e35d54589232..29e52c237a3b 100644
--- a/drivers/watchdog/at91rm9200_wdt.c
+++ b/drivers/watchdog/at91rm9200_wdt.c
@@ -197,7 +197,7 @@ static struct miscdevice at91wdt_miscdev = {
197 .fops = &at91wdt_fops, 197 .fops = &at91wdt_fops,
198}; 198};
199 199
200static int __init at91wdt_probe(struct platform_device *pdev) 200static int __devinit at91wdt_probe(struct platform_device *pdev)
201{ 201{
202 int res; 202 int res;
203 203
@@ -214,7 +214,7 @@ static int __init at91wdt_probe(struct platform_device *pdev)
214 return 0; 214 return 0;
215} 215}
216 216
217static int __exit at91wdt_remove(struct platform_device *pdev) 217static int __devexit at91wdt_remove(struct platform_device *pdev)
218{ 218{
219 int res; 219 int res;
220 220
@@ -252,7 +252,7 @@ static int at91wdt_resume(struct platform_device *pdev)
252 252
253static struct platform_driver at91wdt_driver = { 253static struct platform_driver at91wdt_driver = {
254 .probe = at91wdt_probe, 254 .probe = at91wdt_probe,
255 .remove = __exit_p(at91wdt_remove), 255 .remove = __devexit_p(at91wdt_remove),
256 .shutdown = at91wdt_shutdown, 256 .shutdown = at91wdt_shutdown,
257 .suspend = at91wdt_suspend, 257 .suspend = at91wdt_suspend,
258 .resume = at91wdt_resume, 258 .resume = at91wdt_resume,
diff --git a/drivers/watchdog/i6300esb.c b/drivers/watchdog/i6300esb.c
index 2dbe83570d65..7ba0b11ec525 100644
--- a/drivers/watchdog/i6300esb.c
+++ b/drivers/watchdog/i6300esb.c
@@ -52,10 +52,10 @@
52#define ESB_LOCK_REG 0x68 /* WDT lock register */ 52#define ESB_LOCK_REG 0x68 /* WDT lock register */
53 53
54/* Memory mapped registers */ 54/* Memory mapped registers */
55#define ESB_TIMER1_REG BASEADDR + 0x00 /* Timer1 value after each reset */ 55#define ESB_TIMER1_REG (BASEADDR + 0x00)/* Timer1 value after each reset */
56#define ESB_TIMER2_REG BASEADDR + 0x04 /* Timer2 value after each reset */ 56#define ESB_TIMER2_REG (BASEADDR + 0x04)/* Timer2 value after each reset */
57#define ESB_GINTSR_REG BASEADDR + 0x08 /* General Interrupt Status Register */ 57#define ESB_GINTSR_REG (BASEADDR + 0x08)/* General Interrupt Status Register */
58#define ESB_RELOAD_REG BASEADDR + 0x0c /* Reload register */ 58#define ESB_RELOAD_REG (BASEADDR + 0x0c)/* Reload register */
59 59
60/* Lock register bits */ 60/* Lock register bits */
61#define ESB_WDT_FUNC (0x01 << 2) /* Watchdog functionality */ 61#define ESB_WDT_FUNC (0x01 << 2) /* Watchdog functionality */
@@ -68,6 +68,7 @@
68#define ESB_WDT_INTTYPE (0x11 << 0) /* Interrupt type on timer1 timeout */ 68#define ESB_WDT_INTTYPE (0x11 << 0) /* Interrupt type on timer1 timeout */
69 69
70/* Reload register bits */ 70/* Reload register bits */
71#define ESB_WDT_TIMEOUT (0x01 << 9) /* Watchdog timed out */
71#define ESB_WDT_RELOAD (0x01 << 8) /* prevent timeout */ 72#define ESB_WDT_RELOAD (0x01 << 8) /* prevent timeout */
72 73
73/* Magic constants */ 74/* Magic constants */
@@ -87,7 +88,6 @@ static struct platform_device *esb_platform_device;
87/* 30 sec default heartbeat (1 < heartbeat < 2*1023) */ 88/* 30 sec default heartbeat (1 < heartbeat < 2*1023) */
88#define WATCHDOG_HEARTBEAT 30 89#define WATCHDOG_HEARTBEAT 30
89static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */ 90static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */
90
91module_param(heartbeat, int, 0); 91module_param(heartbeat, int, 0);
92MODULE_PARM_DESC(heartbeat, 92MODULE_PARM_DESC(heartbeat,
93 "Watchdog heartbeat in seconds. (1<heartbeat<2046, default=" 93 "Watchdog heartbeat in seconds. (1<heartbeat<2046, default="
@@ -123,7 +123,7 @@ static int esb_timer_start(void)
123 esb_unlock_registers(); 123 esb_unlock_registers();
124 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG); 124 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG);
125 /* Enable or Enable + Lock? */ 125 /* Enable or Enable + Lock? */
126 val = 0x02 | (nowayout ? 0x01 : 0x00); 126 val = ESB_WDT_ENABLE | (nowayout ? ESB_WDT_LOCK : 0x00);
127 pci_write_config_byte(esb_pci, ESB_LOCK_REG, val); 127 pci_write_config_byte(esb_pci, ESB_LOCK_REG, val);
128 spin_unlock(&esb_lock); 128 spin_unlock(&esb_lock);
129 return 0; 129 return 0;
@@ -143,7 +143,7 @@ static int esb_timer_stop(void)
143 spin_unlock(&esb_lock); 143 spin_unlock(&esb_lock);
144 144
145 /* Returns 0 if the timer was disabled, non-zero otherwise */ 145 /* Returns 0 if the timer was disabled, non-zero otherwise */
146 return (val & 0x01); 146 return val & ESB_WDT_ENABLE;
147} 147}
148 148
149static void esb_timer_keepalive(void) 149static void esb_timer_keepalive(void)
@@ -190,18 +190,6 @@ static int esb_timer_set_heartbeat(int time)
190 return 0; 190 return 0;
191} 191}
192 192
193static int esb_timer_read(void)
194{
195 u32 count;
196
197 /* This isn't documented, and doesn't take into
198 * acount which stage is running, but it looks
199 * like a 20 bit count down, so we might as well report it.
200 */
201 pci_read_config_dword(esb_pci, 0x64, &count);
202 return (int)count;
203}
204
205/* 193/*
206 * /dev/watchdog handling 194 * /dev/watchdog handling
207 */ 195 */
@@ -282,7 +270,7 @@ static long esb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
282 sizeof(ident)) ? -EFAULT : 0; 270 sizeof(ident)) ? -EFAULT : 0;
283 271
284 case WDIOC_GETSTATUS: 272 case WDIOC_GETSTATUS:
285 return put_user(esb_timer_read(), p); 273 return put_user(0, p);
286 274
287 case WDIOC_GETBOOTSTATUS: 275 case WDIOC_GETBOOTSTATUS:
288 return put_user(triggered, p); 276 return put_user(triggered, p);
@@ -362,8 +350,6 @@ MODULE_DEVICE_TABLE(pci, esb_pci_tbl);
362 350
363static unsigned char __devinit esb_getdevice(void) 351static unsigned char __devinit esb_getdevice(void)
364{ 352{
365 u8 val1;
366 unsigned short val2;
367 /* 353 /*
368 * Find the PCI device 354 * Find the PCI device
369 */ 355 */
@@ -371,66 +357,79 @@ static unsigned char __devinit esb_getdevice(void)
371 esb_pci = pci_get_device(PCI_VENDOR_ID_INTEL, 357 esb_pci = pci_get_device(PCI_VENDOR_ID_INTEL,
372 PCI_DEVICE_ID_INTEL_ESB_9, NULL); 358 PCI_DEVICE_ID_INTEL_ESB_9, NULL);
373 359
374 if (esb_pci) { 360 if (!esb_pci)
375 if (pci_enable_device(esb_pci)) { 361 return 0;
376 printk(KERN_ERR PFX "failed to enable device\n");
377 goto err_devput;
378 }
379 362
380 if (pci_request_region(esb_pci, 0, ESB_MODULE_NAME)) { 363 if (pci_enable_device(esb_pci)) {
381 printk(KERN_ERR PFX "failed to request region\n"); 364 printk(KERN_ERR PFX "failed to enable device\n");
382 goto err_disable; 365 goto err_devput;
383 } 366 }
384 367
385 BASEADDR = pci_ioremap_bar(esb_pci, 0); 368 if (pci_request_region(esb_pci, 0, ESB_MODULE_NAME)) {
386 if (BASEADDR == NULL) { 369 printk(KERN_ERR PFX "failed to request region\n");
387 /* Something's wrong here, BASEADDR has to be set */ 370 goto err_disable;
388 printk(KERN_ERR PFX "failed to get BASEADDR\n"); 371 }
389 goto err_release;
390 }
391 372
392 /* 373 BASEADDR = pci_ioremap_bar(esb_pci, 0);
393 * The watchdog has two timers, it can be setup so that the 374 if (BASEADDR == NULL) {
394 * expiry of timer1 results in an interrupt and the expiry of 375 /* Something's wrong here, BASEADDR has to be set */
395 * timer2 results in a reboot. We set it to not generate 376 printk(KERN_ERR PFX "failed to get BASEADDR\n");
396 * any interrupts as there is not much we can do with it 377 goto err_release;
397 * right now. 378 }
398 * 379
399 * We also enable reboots and set the timer frequency to 380 /* Done */
400 * the PCI clock divided by 2^15 (approx 1KHz). 381 return 1;
401 */
402 pci_write_config_word(esb_pci, ESB_CONFIG_REG, 0x0003);
403
404 /* Check that the WDT isn't already locked */
405 pci_read_config_byte(esb_pci, ESB_LOCK_REG, &val1);
406 if (val1 & ESB_WDT_LOCK)
407 printk(KERN_WARNING PFX "nowayout already set\n");
408
409 /* Set the timer to watchdog mode and disable it for now */
410 pci_write_config_byte(esb_pci, ESB_LOCK_REG, 0x00);
411
412 /* Check if the watchdog was previously triggered */
413 esb_unlock_registers();
414 val2 = readw(ESB_RELOAD_REG);
415 triggered = (val2 & (0x01 << 9) >> 9);
416
417 /* Reset trigger flag and timers */
418 esb_unlock_registers();
419 writew((0x11 << 8), ESB_RELOAD_REG);
420
421 /* Done */
422 return 1;
423 382
424err_release: 383err_release:
425 pci_release_region(esb_pci, 0); 384 pci_release_region(esb_pci, 0);
426err_disable: 385err_disable:
427 pci_disable_device(esb_pci); 386 pci_disable_device(esb_pci);
428err_devput: 387err_devput:
429 pci_dev_put(esb_pci); 388 pci_dev_put(esb_pci);
430 }
431 return 0; 389 return 0;
432} 390}
433 391
392static void __devinit esb_initdevice(void)
393{
394 u8 val1;
395 u16 val2;
396
397 /*
398 * Config register:
399 * Bit 5 : 0 = Enable WDT_OUTPUT
400 * Bit 2 : 0 = set the timer frequency to the PCI clock
401 * divided by 2^15 (approx 1KHz).
402 * Bits 1:0 : 11 = WDT_INT_TYPE Disabled.
403 * The watchdog has two timers, it can be setup so that the
404 * expiry of timer1 results in an interrupt and the expiry of
405 * timer2 results in a reboot. We set it to not generate
406 * any interrupts as there is not much we can do with it
407 * right now.
408 */
409 pci_write_config_word(esb_pci, ESB_CONFIG_REG, 0x0003);
410
411 /* Check that the WDT isn't already locked */
412 pci_read_config_byte(esb_pci, ESB_LOCK_REG, &val1);
413 if (val1 & ESB_WDT_LOCK)
414 printk(KERN_WARNING PFX "nowayout already set\n");
415
416 /* Set the timer to watchdog mode and disable it for now */
417 pci_write_config_byte(esb_pci, ESB_LOCK_REG, 0x00);
418
419 /* Check if the watchdog was previously triggered */
420 esb_unlock_registers();
421 val2 = readw(ESB_RELOAD_REG);
422 if (val2 & ESB_WDT_TIMEOUT)
423 triggered = WDIOF_CARDRESET;
424
425 /* Reset WDT_TIMEOUT flag and timers */
426 esb_unlock_registers();
427 writew((ESB_WDT_TIMEOUT | ESB_WDT_RELOAD), ESB_RELOAD_REG);
428
429 /* And set the correct timeout value */
430 esb_timer_set_heartbeat(heartbeat);
431}
432
434static int __devinit esb_probe(struct platform_device *dev) 433static int __devinit esb_probe(struct platform_device *dev)
435{ 434{
436 int ret; 435 int ret;
@@ -441,13 +440,17 @@ static int __devinit esb_probe(struct platform_device *dev)
441 440
442 /* Check that the heartbeat value is within it's range; 441 /* Check that the heartbeat value is within it's range;
443 if not reset to the default */ 442 if not reset to the default */
444 if (esb_timer_set_heartbeat(heartbeat)) { 443 if (heartbeat < 0x1 || heartbeat > 2 * 0x03ff) {
445 esb_timer_set_heartbeat(WATCHDOG_HEARTBEAT); 444 heartbeat = WATCHDOG_HEARTBEAT;
446 printk(KERN_INFO PFX 445 printk(KERN_INFO PFX
447 "heartbeat value must be 1<heartbeat<2046, using %d\n", 446 "heartbeat value must be 1<heartbeat<2046, using %d\n",
448 heartbeat); 447 heartbeat);
449 } 448 }
450 449
450 /* Initialize the watchdog and make sure it does not run */
451 esb_initdevice();
452
453 /* Register the watchdog so that userspace has access to it */
451 ret = misc_register(&esb_miscdev); 454 ret = misc_register(&esb_miscdev);
452 if (ret != 0) { 455 if (ret != 0) {
453 printk(KERN_ERR PFX 456 printk(KERN_ERR PFX
@@ -455,7 +458,6 @@ static int __devinit esb_probe(struct platform_device *dev)
455 WATCHDOG_MINOR, ret); 458 WATCHDOG_MINOR, ret);
456 goto err_unmap; 459 goto err_unmap;
457 } 460 }
458 esb_timer_stop();
459 printk(KERN_INFO PFX 461 printk(KERN_INFO PFX
460 "initialized (0x%p). heartbeat=%d sec (nowayout=%d)\n", 462 "initialized (0x%p). heartbeat=%d sec (nowayout=%d)\n",
461 BASEADDR, heartbeat, nowayout); 463 BASEADDR, heartbeat, nowayout);
@@ -463,11 +465,8 @@ static int __devinit esb_probe(struct platform_device *dev)
463 465
464err_unmap: 466err_unmap:
465 iounmap(BASEADDR); 467 iounmap(BASEADDR);
466/* err_release: */
467 pci_release_region(esb_pci, 0); 468 pci_release_region(esb_pci, 0);
468/* err_disable: */
469 pci_disable_device(esb_pci); 469 pci_disable_device(esb_pci);
470/* err_devput: */
471 pci_dev_put(esb_pci); 470 pci_dev_put(esb_pci);
472 return ret; 471 return ret;
473} 472}
diff --git a/drivers/watchdog/ks8695_wdt.c b/drivers/watchdog/ks8695_wdt.c
index 74c92d384112..ae3832110acb 100644
--- a/drivers/watchdog/ks8695_wdt.c
+++ b/drivers/watchdog/ks8695_wdt.c
@@ -221,7 +221,7 @@ static struct miscdevice ks8695wdt_miscdev = {
221 .fops = &ks8695wdt_fops, 221 .fops = &ks8695wdt_fops,
222}; 222};
223 223
224static int __init ks8695wdt_probe(struct platform_device *pdev) 224static int __devinit ks8695wdt_probe(struct platform_device *pdev)
225{ 225{
226 int res; 226 int res;
227 227
@@ -238,7 +238,7 @@ static int __init ks8695wdt_probe(struct platform_device *pdev)
238 return 0; 238 return 0;
239} 239}
240 240
241static int __exit ks8695wdt_remove(struct platform_device *pdev) 241static int __devexit ks8695wdt_remove(struct platform_device *pdev)
242{ 242{
243 int res; 243 int res;
244 244
@@ -276,7 +276,7 @@ static int ks8695wdt_resume(struct platform_device *pdev)
276 276
277static struct platform_driver ks8695wdt_driver = { 277static struct platform_driver ks8695wdt_driver = {
278 .probe = ks8695wdt_probe, 278 .probe = ks8695wdt_probe,
279 .remove = __exit_p(ks8695wdt_remove), 279 .remove = __devexit_p(ks8695wdt_remove),
280 .shutdown = ks8695wdt_shutdown, 280 .shutdown = ks8695wdt_shutdown,
281 .suspend = ks8695wdt_suspend, 281 .suspend = ks8695wdt_suspend,
282 .resume = ks8695wdt_resume, 282 .resume = ks8695wdt_resume,
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index aa5ad6e33f02..f2713851aaab 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -258,7 +258,7 @@ static const struct file_operations omap_wdt_fops = {
258 .release = omap_wdt_release, 258 .release = omap_wdt_release,
259}; 259};
260 260
261static int __init omap_wdt_probe(struct platform_device *pdev) 261static int __devinit omap_wdt_probe(struct platform_device *pdev)
262{ 262{
263 struct resource *res, *mem; 263 struct resource *res, *mem;
264 struct omap_wdt_dev *wdev; 264 struct omap_wdt_dev *wdev;
@@ -367,7 +367,7 @@ static void omap_wdt_shutdown(struct platform_device *pdev)
367 omap_wdt_disable(wdev); 367 omap_wdt_disable(wdev);
368} 368}
369 369
370static int omap_wdt_remove(struct platform_device *pdev) 370static int __devexit omap_wdt_remove(struct platform_device *pdev)
371{ 371{
372 struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); 372 struct omap_wdt_dev *wdev = platform_get_drvdata(pdev);
373 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 373 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -426,7 +426,7 @@ static int omap_wdt_resume(struct platform_device *pdev)
426 426
427static struct platform_driver omap_wdt_driver = { 427static struct platform_driver omap_wdt_driver = {
428 .probe = omap_wdt_probe, 428 .probe = omap_wdt_probe,
429 .remove = omap_wdt_remove, 429 .remove = __devexit_p(omap_wdt_remove),
430 .shutdown = omap_wdt_shutdown, 430 .shutdown = omap_wdt_shutdown,
431 .suspend = omap_wdt_suspend, 431 .suspend = omap_wdt_suspend,
432 .resume = omap_wdt_resume, 432 .resume = omap_wdt_resume,
diff --git a/drivers/watchdog/orion5x_wdt.c b/drivers/watchdog/orion5x_wdt.c
index e81441f103dd..2cde568e4fb0 100644
--- a/drivers/watchdog/orion5x_wdt.c
+++ b/drivers/watchdog/orion5x_wdt.c
@@ -22,6 +22,7 @@
22#include <linux/uaccess.h> 22#include <linux/uaccess.h>
23#include <linux/io.h> 23#include <linux/io.h>
24#include <linux/spinlock.h> 24#include <linux/spinlock.h>
25#include <mach/bridge-regs.h>
25#include <plat/orion5x_wdt.h> 26#include <plat/orion5x_wdt.h>
26 27
27/* 28/*
@@ -42,7 +43,17 @@ static unsigned int wdt_tclk;
42static unsigned long wdt_status; 43static unsigned long wdt_status;
43static spinlock_t wdt_lock; 44static spinlock_t wdt_lock;
44 45
45static void wdt_enable(void) 46static void orion5x_wdt_ping(void)
47{
48 spin_lock(&wdt_lock);
49
50 /* Reload watchdog duration */
51 writel(wdt_tclk * heartbeat, WDT_VAL);
52
53 spin_unlock(&wdt_lock);
54}
55
56static void orion5x_wdt_enable(void)
46{ 57{
47 u32 reg; 58 u32 reg;
48 59
@@ -69,7 +80,7 @@ static void wdt_enable(void)
69 spin_unlock(&wdt_lock); 80 spin_unlock(&wdt_lock);
70} 81}
71 82
72static void wdt_disable(void) 83static void orion5x_wdt_disable(void)
73{ 84{
74 u32 reg; 85 u32 reg;
75 86
@@ -101,7 +112,7 @@ static int orion5x_wdt_open(struct inode *inode, struct file *file)
101 if (test_and_set_bit(WDT_IN_USE, &wdt_status)) 112 if (test_and_set_bit(WDT_IN_USE, &wdt_status))
102 return -EBUSY; 113 return -EBUSY;
103 clear_bit(WDT_OK_TO_CLOSE, &wdt_status); 114 clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
104 wdt_enable(); 115 orion5x_wdt_enable();
105 return nonseekable_open(inode, file); 116 return nonseekable_open(inode, file);
106} 117}
107 118
@@ -122,18 +133,28 @@ static ssize_t orion5x_wdt_write(struct file *file, const char *data,
122 set_bit(WDT_OK_TO_CLOSE, &wdt_status); 133 set_bit(WDT_OK_TO_CLOSE, &wdt_status);
123 } 134 }
124 } 135 }
125 wdt_enable(); 136 orion5x_wdt_ping();
126 } 137 }
127 return len; 138 return len;
128} 139}
129 140
130static struct watchdog_info ident = { 141static int orion5x_wdt_settimeout(int new_time)
142{
143 if ((new_time <= 0) || (new_time > wdt_max_duration))
144 return -EINVAL;
145
146 /* Set new watchdog time to be used when
147 * orion5x_wdt_enable() or orion5x_wdt_ping() is called. */
148 heartbeat = new_time;
149 return 0;
150}
151
152static const struct watchdog_info ident = {
131 .options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT | 153 .options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT |
132 WDIOF_KEEPALIVEPING, 154 WDIOF_KEEPALIVEPING,
133 .identity = "Orion5x Watchdog", 155 .identity = "Orion5x Watchdog",
134}; 156};
135 157
136
137static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd, 158static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
138 unsigned long arg) 159 unsigned long arg)
139{ 160{
@@ -152,7 +173,7 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
152 break; 173 break;
153 174
154 case WDIOC_KEEPALIVE: 175 case WDIOC_KEEPALIVE:
155 wdt_enable(); 176 orion5x_wdt_ping();
156 ret = 0; 177 ret = 0;
157 break; 178 break;
158 179
@@ -161,12 +182,11 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
161 if (ret) 182 if (ret)
162 break; 183 break;
163 184
164 if (time <= 0 || time > wdt_max_duration) { 185 if (orion5x_wdt_settimeout(time)) {
165 ret = -EINVAL; 186 ret = -EINVAL;
166 break; 187 break;
167 } 188 }
168 heartbeat = time; 189 orion5x_wdt_ping();
169 wdt_enable();
170 /* Fall through */ 190 /* Fall through */
171 191
172 case WDIOC_GETTIMEOUT: 192 case WDIOC_GETTIMEOUT:
@@ -187,7 +207,7 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
187static int orion5x_wdt_release(struct inode *inode, struct file *file) 207static int orion5x_wdt_release(struct inode *inode, struct file *file)
188{ 208{
189 if (test_bit(WDT_OK_TO_CLOSE, &wdt_status)) 209 if (test_bit(WDT_OK_TO_CLOSE, &wdt_status))
190 wdt_disable(); 210 orion5x_wdt_disable();
191 else 211 else
192 printk(KERN_CRIT "WATCHDOG: Device closed unexpectedly - " 212 printk(KERN_CRIT "WATCHDOG: Device closed unexpectedly - "
193 "timer will not stop\n"); 213 "timer will not stop\n");
@@ -230,7 +250,7 @@ static int __devinit orion5x_wdt_probe(struct platform_device *pdev)
230 orion5x_wdt_miscdev.parent = &pdev->dev; 250 orion5x_wdt_miscdev.parent = &pdev->dev;
231 251
232 wdt_max_duration = WDT_MAX_CYCLE_COUNT / wdt_tclk; 252 wdt_max_duration = WDT_MAX_CYCLE_COUNT / wdt_tclk;
233 if (heartbeat <= 0 || heartbeat > wdt_max_duration) 253 if (orion5x_wdt_settimeout(heartbeat))
234 heartbeat = wdt_max_duration; 254 heartbeat = wdt_max_duration;
235 255
236 ret = misc_register(&orion5x_wdt_miscdev); 256 ret = misc_register(&orion5x_wdt_miscdev);
@@ -247,7 +267,7 @@ static int __devexit orion5x_wdt_remove(struct platform_device *pdev)
247 int ret; 267 int ret;
248 268
249 if (test_bit(WDT_IN_USE, &wdt_status)) { 269 if (test_bit(WDT_IN_USE, &wdt_status)) {
250 wdt_disable(); 270 orion5x_wdt_disable();
251 clear_bit(WDT_IN_USE, &wdt_status); 271 clear_bit(WDT_IN_USE, &wdt_status);
252 } 272 }
253 273
@@ -258,9 +278,16 @@ static int __devexit orion5x_wdt_remove(struct platform_device *pdev)
258 return ret; 278 return ret;
259} 279}
260 280
281static void orion5x_wdt_shutdown(struct platform_device *pdev)
282{
283 if (test_bit(WDT_IN_USE, &wdt_status))
284 orion5x_wdt_disable();
285}
286
261static struct platform_driver orion5x_wdt_driver = { 287static struct platform_driver orion5x_wdt_driver = {
262 .probe = orion5x_wdt_probe, 288 .probe = orion5x_wdt_probe,
263 .remove = __devexit_p(orion5x_wdt_remove), 289 .remove = __devexit_p(orion5x_wdt_remove),
290 .shutdown = orion5x_wdt_shutdown,
264 .driver = { 291 .driver = {
265 .owner = THIS_MODULE, 292 .owner = THIS_MODULE,
266 .name = "orion5x_wdt", 293 .name = "orion5x_wdt",
@@ -285,10 +312,11 @@ MODULE_AUTHOR("Sylver Bruneau <sylver.bruneau@googlemail.com>");
285MODULE_DESCRIPTION("Orion5x Processor Watchdog"); 312MODULE_DESCRIPTION("Orion5x Processor Watchdog");
286 313
287module_param(heartbeat, int, 0); 314module_param(heartbeat, int, 0);
288MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds"); 315MODULE_PARM_DESC(heartbeat, "Initial watchdog heartbeat in seconds");
289 316
290module_param(nowayout, int, 0); 317module_param(nowayout, int, 0);
291MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started"); 318MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
319 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
292 320
293MODULE_LICENSE("GPL"); 321MODULE_LICENSE("GPL");
294MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); 322MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
diff --git a/drivers/xen/cpu_hotplug.c b/drivers/xen/cpu_hotplug.c
index 5f54c01c1568..bdfd584ad853 100644
--- a/drivers/xen/cpu_hotplug.c
+++ b/drivers/xen/cpu_hotplug.c
@@ -21,29 +21,41 @@ static void disable_hotplug_cpu(int cpu)
21 set_cpu_present(cpu, false); 21 set_cpu_present(cpu, false);
22} 22}
23 23
24static void vcpu_hotplug(unsigned int cpu) 24static int vcpu_online(unsigned int cpu)
25{ 25{
26 int err; 26 int err;
27 char dir[32], state[32]; 27 char dir[32], state[32];
28 28
29 if (!cpu_possible(cpu))
30 return;
31
32 sprintf(dir, "cpu/%u", cpu); 29 sprintf(dir, "cpu/%u", cpu);
33 err = xenbus_scanf(XBT_NIL, dir, "availability", "%s", state); 30 err = xenbus_scanf(XBT_NIL, dir, "availability", "%s", state);
34 if (err != 1) { 31 if (err != 1) {
35 printk(KERN_ERR "XENBUS: Unable to read cpu state\n"); 32 printk(KERN_ERR "XENBUS: Unable to read cpu state\n");
36 return; 33 return err;
37 } 34 }
38 35
39 if (strcmp(state, "online") == 0) { 36 if (strcmp(state, "online") == 0)
37 return 1;
38 else if (strcmp(state, "offline") == 0)
39 return 0;
40
41 printk(KERN_ERR "XENBUS: unknown state(%s) on CPU%d\n", state, cpu);
42 return -EINVAL;
43}
44static void vcpu_hotplug(unsigned int cpu)
45{
46 if (!cpu_possible(cpu))
47 return;
48
49 switch (vcpu_online(cpu)) {
50 case 1:
40 enable_hotplug_cpu(cpu); 51 enable_hotplug_cpu(cpu);
41 } else if (strcmp(state, "offline") == 0) { 52 break;
53 case 0:
42 (void)cpu_down(cpu); 54 (void)cpu_down(cpu);
43 disable_hotplug_cpu(cpu); 55 disable_hotplug_cpu(cpu);
44 } else { 56 break;
45 printk(KERN_ERR "XENBUS: unknown state(%s) on CPU%d\n", 57 default:
46 state, cpu); 58 break;
47 } 59 }
48} 60}
49 61
@@ -64,12 +76,20 @@ static void handle_vcpu_hotplug_event(struct xenbus_watch *watch,
64static int setup_cpu_watcher(struct notifier_block *notifier, 76static int setup_cpu_watcher(struct notifier_block *notifier,
65 unsigned long event, void *data) 77 unsigned long event, void *data)
66{ 78{
79 int cpu;
67 static struct xenbus_watch cpu_watch = { 80 static struct xenbus_watch cpu_watch = {
68 .node = "cpu", 81 .node = "cpu",
69 .callback = handle_vcpu_hotplug_event}; 82 .callback = handle_vcpu_hotplug_event};
70 83
71 (void)register_xenbus_watch(&cpu_watch); 84 (void)register_xenbus_watch(&cpu_watch);
72 85
86 for_each_possible_cpu(cpu) {
87 if (vcpu_online(cpu) == 0) {
88 (void)cpu_down(cpu);
89 cpu_clear(cpu, cpu_present_map);
90 }
91 }
92
73 return NOTIFY_DONE; 93 return NOTIFY_DONE;
74} 94}
75 95
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c
index 0d61db1e7b49..4b5b84837ee1 100644
--- a/drivers/xen/manage.c
+++ b/drivers/xen/manage.c
@@ -62,14 +62,15 @@ static int xen_suspend(void *data)
62 gnttab_resume(); 62 gnttab_resume();
63 xen_mm_unpin_all(); 63 xen_mm_unpin_all();
64 64
65 sysdev_resume();
66
67 if (!*cancelled) { 65 if (!*cancelled) {
68 xen_irq_resume(); 66 xen_irq_resume();
69 xen_console_resume(); 67 xen_console_resume();
70 xen_timer_resume(); 68 xen_timer_resume();
71 } 69 }
72 70
71 sysdev_resume();
72 device_power_up(PMSG_RESUME);
73
73 return 0; 74 return 0;
74} 75}
75 76
diff --git a/firmware/.gitignore b/firmware/.gitignore
index f89a21fffbf1..d9c69017bc9a 100644
--- a/firmware/.gitignore
+++ b/firmware/.gitignore
@@ -3,3 +3,4 @@
3*.bin 3*.bin
4*.csp 4*.csp
5*.dsp 5*.dsp
6ihex2fw
diff --git a/firmware/Makefile b/firmware/Makefile
index 1e7fd4df16a7..25200d106ee8 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -41,10 +41,12 @@ fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
41fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ 41fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
42 cxgb3/t3c_psram-1.1.0.bin \ 42 cxgb3/t3c_psram-1.1.0.bin \
43 cxgb3/t3fw-7.1.0.bin 43 cxgb3/t3fw-7.1.0.bin
44fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
44fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin 45fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
45fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \ 46fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
46 e100/d102e_ucode.bin 47 e100/d102e_ucode.bin
47fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin 48fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
49fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis
48fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin 50fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
49fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \ 51fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
50 advansys/3550.bin advansys/38C0800.bin 52 advansys/3550.bin advansys/38C0800.bin
@@ -59,14 +61,9 @@ fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \
59 sb16/ima_adpcm_init.csp \ 61 sb16/ima_adpcm_init.csp \
60 sb16/ima_adpcm_playback.csp \ 62 sb16/ima_adpcm_playback.csp \
61 sb16/ima_adpcm_capture.csp 63 sb16/ima_adpcm_capture.csp
62fw-shipped-$(CONFIG_SLICOSS) += slicoss/gbdownload.sys slicoss/gbrcvucode.sys \
63 slicoss/oasisdbgdownload.sys \
64 slicoss/oasisdownload.sys \
65 slicoss/oasisrcvucode.sys
66fw-shipped-$(CONFIG_SXG) += sxg/saharadownloadB.sys \
67 sxg/saharadbgdownloadB.sys
68fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \ 64fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
69 yamaha/ds1e_ctrl.fw 65 yamaha/ds1e_ctrl.fw
66fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
70fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin 67fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
71fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \ 68fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
72 tigon/tg3_tso5.bin 69 tigon/tg3_tso5.bin
@@ -123,10 +120,10 @@ quiet_cmd_ihex = IHEX $@
123 cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@ 120 cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@
124 121
125quiet_cmd_ihex2fw = IHEX2FW $@ 122quiet_cmd_ihex2fw = IHEX2FW $@
126 cmd_ihex2fw = $(objtree)/scripts/ihex2fw $< $@ 123 cmd_ihex2fw = $(objtree)/$(obj)/ihex2fw $< $@
127 124
128quiet_cmd_h16tofw = H16TOFW $@ 125quiet_cmd_h16tofw = H16TOFW $@
129 cmd_h16tofw = $(objtree)/scripts/ihex2fw -w $< $@ 126 cmd_h16tofw = $(objtree)/$(obj)/ihex2fw -w $< $@
130 127
131quiet_cmd_fwbin = MK_FW $@ 128quiet_cmd_fwbin = MK_FW $@
132 cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \ 129 cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \
@@ -185,15 +182,27 @@ $(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
185$(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %) 182$(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
186 $(call cmd,ihex) 183 $(call cmd,ihex)
187 184
185# Don't depend on ihex2fw if we're installing and it already exists.
186# Putting it after | in the dependencies doesn't seem sufficient when
187# we're installing after a cross-compile, because ihex2fw has dependencies
188# on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and
189# thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
190# is exported read-only for someone to run 'make install'.
191ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
192ihex2fw_dep :=
193else
194ihex2fw_dep := $(obj)/ihex2fw
195endif
196
188# .HEX is also Intel HEX, but where the offset and length in each record 197# .HEX is also Intel HEX, but where the offset and length in each record
189# is actually meaningful, because the firmware has to be loaded in a certain 198# is actually meaningful, because the firmware has to be loaded in a certain
190# order rather than as a single binary blob. Thus, we convert them into our 199# order rather than as a single binary blob. Thus, we convert them into our
191# more compact binary representation of ihex records (<linux/ihex.h>) 200# more compact binary representation of ihex records (<linux/ihex.h>)
192$(obj)/%.fw: $(obj)/%.HEX | $(objtree)/$(obj)/$$(dir %) 201$(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
193 $(call cmd,ihex2fw) 202 $(call cmd,ihex2fw)
194 203
195# .H16 is our own modified form of Intel HEX, with 16-bit length for records. 204# .H16 is our own modified form of Intel HEX, with 16-bit length for records.
196$(obj)/%.fw: $(obj)/%.H16 | $(objtree)/$(obj)/$$(dir %) 205$(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
197 $(call cmd,h16tofw) 206 $(call cmd,h16tofw)
198 207
199$(firmware-dirs): 208$(firmware-dirs):
@@ -210,3 +219,5 @@ targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
210# Without this, built-in.o won't be created when it's empty, and the 219# Without this, built-in.o won't be created when it's empty, and the
211# final vmlinux link will fail. 220# final vmlinux link will fail.
212obj-n := dummy 221obj-n := dummy
222
223hostprogs-y := ihex2fw
diff --git a/firmware/README.AddingFirmware b/firmware/README.AddingFirmware
new file mode 100644
index 000000000000..e24cd8986d8b
--- /dev/null
+++ b/firmware/README.AddingFirmware
@@ -0,0 +1,34 @@
1
2 DO NOT ADD FIRMWARE TO THIS DIRECTORY.
3 ======================================
4
5This directory is only here to contain firmware images extracted from old
6device drivers which predate the common use of request_firmware().
7
8As we update those drivers to use request_firmware() and keep a clean
9separation between code and firmware, we put the extracted firmware
10here.
11
12This directory is _NOT_ for adding arbitrary new firmware images. The
13place to add those is the separate linux-firmware repository:
14
15 git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
16
17That repository contains all these firmware images which have been
18extracted from older drivers, as well various new firmware images which
19we were never permitted to include in a GPL'd work, but which we _have_
20been permitted to redistribute under separate cover.
21
22To submit firmware to that repository, please send either a git binary
23diff or preferably a git pull request to:
24 David Woodhouse <dwmw2@infradead.org>
25
26Your commit should include an update to the WHENCE file clearly
27identifying the licence under which the firmware is available, and
28that it is redistributable. If the licence is long and involved, it's
29permitted to include it in a separate file and refer to it from the
30WHENCE file.
31
32Ideally, your commit should contain a Signed-Off-By: from someone
33authoritative on the licensing of the firmware in question (i.e. from
34within the company that owns the code).
diff --git a/firmware/WHENCE b/firmware/WHENCE
index e4deb511cc73..4c52984a8319 100644
--- a/firmware/WHENCE
+++ b/firmware/WHENCE
@@ -8,6 +8,24 @@ kernel.
8 8
9-------------------------------------------------------------------------- 9--------------------------------------------------------------------------
10 10
11Driver: ambassador -- Madge Ambassador (Collage PCI 155 Server) ATM NIC.
12
13File: firmware/atmsar11.fw
14
15Licence: Allegedly GPLv2+, but no source visible. Marked:
16
17 Madge Ambassador ATM Adapter microcode.
18 Copyright (C) 1995-1999 Madge Networks Ltd.
19
20 This microcode data is placed under the terms of the GNU General
21 Public License. The GPL is contained in /usr/doc/copyright/GPL on a
22 Debian system and in the file COPYING in the Linux kernel source.
23
24 We would prefer you not to distribute modified versions without
25 consultation and not to ask for assembly/other microcode source.
26
27--------------------------------------------------------------------------
28
11Driver: korg1212 -- Korg 1212 IO audio device 29Driver: korg1212 -- Korg 1212 IO audio device
12 30
13File: korg/k1212.dsp 31File: korg/k1212.dsp
@@ -390,59 +408,6 @@ Found in hex form in kernel source.
390 408
391-------------------------------------------------------------------------- 409--------------------------------------------------------------------------
392 410
393Driver: SLICOSS - Alacritech IS-NIC products
394
395File: slicoss/gbdownload.sys.ihex
396File: slicoss/gbrcvucode.sys.ihex
397File: slicoss/oasisdbgdownload.sys.ihex
398File: slicoss/oasisdownload.sys.ihex
399File: slicoss/oasisrcvucode.sys.ihex
400
401Licence:
402 Copyright (C) 1999-2009 Alacritech, Inc.
403
404 as an unpublished work. This notice does not imply unrestricted or
405 public access to the source code from which this firmware image is
406 derived. Except as noted below this firmware image may not be
407 reproduced, used, sold or transferred to any third party without
408 Alacritech's prior written consent. All Rights Reserved.
409
410 Permission is hereby granted for the distribution of this firmware
411 image as part of a Linux or other Open Source operating system kernel
412 in text or binary form as required.
413
414 This firmware may not be modified and may only be used with
415 Alacritech hardware.
416
417Found in hex form in kernel source.
418
419--------------------------------------------------------------------------
420
421Driver: SXG - Alacritech IS-NIC products
422
423File: sxg/saharadownloadB.sys.ihex
424File: sxg/saharadbgdownloadB.sys.ihex
425
426Licence:
427 Copyright (C) 1999-2009 Alacritech, Inc.
428
429 as an unpublished work. This notice does not imply unrestricted or
430 public access to the source code from which this firmware image is
431 derived. Except as noted below this firmware image may not be
432 reproduced, used, sold or transferred to any third party without
433 Alacritech's prior written consent. All Rights Reserved.
434
435 Permission is hereby granted for the distribution of this firmware
436 image as part of a Linux or other Open Source operating system kernel
437 in text or binary form as required.
438
439 This firmware may not be modified and may only be used with
440 Alacritech hardware.
441
442Found in hex form in kernel source.
443
444--------------------------------------------------------------------------
445
446Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter 411Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter
447 412
448File: cxgb3/t3b_psram-1.1.0.bin.ihex 413File: cxgb3/t3b_psram-1.1.0.bin.ihex
@@ -611,6 +576,16 @@ Found in hex form in kernel source.
611 576
612-------------------------------------------------------------------------- 577--------------------------------------------------------------------------
613 578
579Driver: PCMCIA_PCNET - NE2000 compatible PCMCIA adapter
580
581File: cis/LA-PCM.cis
582
583Licence: GPL
584
585Originally developed by the pcmcia-cs project
586
587--------------------------------------------------------------------------
588
614Driver: PCMCIA_SMC91C92 - SMC 91Cxx PCMCIA 589Driver: PCMCIA_SMC91C92 - SMC 91Cxx PCMCIA
615 590
616File: ositech/Xilinx7OD.bin 591File: ositech/Xilinx7OD.bin
@@ -662,3 +637,24 @@ Licence:
662Found in hex form in kernel source. 637Found in hex form in kernel source.
663 638
664-------------------------------------------------------------------------- 639--------------------------------------------------------------------------
640
641Driver: DVB AV7110 -- AV7110 cards
642
643File: av7110/bootcode.bin
644
645Licence: GPLv2 or later
646
647ARM assembly source code available at http://www.linuxtv.org/downloads/firmware/Boot.S
648
649--------------------------------------------------------------------------
650
651Driver: wavefront - ISA WaveFront sound card
652
653File: yamaha/yss225_registers.bin
654
655Licence: Allegedly GPLv2+, but no source visible.
656
657Found in hex form in kernel source, with the following comment:
658 Copyright (c) 1998-2002 by Paul Davis <pbd@op.net>
659
660--------------------------------------------------------------------------
diff --git a/firmware/av7110/Boot.S b/firmware/av7110/Boot.S
new file mode 100644
index 000000000000..d562fdc2908f
--- /dev/null
+++ b/firmware/av7110/Boot.S
@@ -0,0 +1,109 @@
1/*
2 Boot.S: boot loader for Siemens DVB-S card
3
4 Copyright (C) 2001 Convergence integrated media GmbH
5 Written by Ralph Metzler
6 <rjkm@convergence.de>
7 Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (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*/
24
25/*
26 check AV711x_3_1.pdf for some hardware infos
27 build it with :
28 $ cc -mbig-endian -c Boot.S
29 $ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
30 $ objcopy -Obinary Boot
31*/
32
33 .text
34 .align
35 .globl _start
36_start:
37 b reset // reset vector
38 movs pc, r14 // undefined
39 subs pc, r14, #4 // SWI
40 subs pc, r14, #4 // prefetch abort
41 subs pc, r14, #8 // data abort
42 subs pc, r14, #4 // reserved
43 subs pc, r14, #4 // IRQ
44 subs pc, r14, #4 // FIQ
45
46 .word tbl // table needed by firmware ROM
47tbl: .word (endtbl - tbl)
48 .word 0
49 .word conf
50endtbl: .word 0
51conf: .word 0xa5a55a5a
52 .word 0x001f1555
53 .word 0x00000009
54
55reset: ldr r13, buffer
56 ldr r4, flag
57 mov r0, #0
58 str r0, [r4]
59 str r0, [r4, #4]
60
61 ldr r1, wait_address
62 ldr r2, flag_address
63 ldr r3, sram
64
65copycode: // copy the code HW Sram
66 ldmia r1!, {r5-r12}
67 stmia r3!, {r5-r12}
68 cmp r1, r2
69 ble copycode
70 ldr pc, sram // jump to the copied code
71
72wait: ldrh r1, [r4] // wait for flag!=0
73 cmp r1, #0
74 beq wait
75
76 mov r1, r13 // buffer address
77 ldr r3, [r4,#4] // destaddr
78
79 ldrh r2, [r4,#2] // get segment length
80 add r2, r2, #63 // round length to next 64 bytes
81 movs r2, r2, lsr #6 // and divide by 64
82 moveq r0, #2 // if 0, set flag to 2, else signal
83 strh r0, [r4] // that buffer is accepted by setting to 0
84 beq wait
85
86copyloop:
87 ldmia r1!, {r5-r12}
88 stmia r3!, {r5-r12}
89 ldmia r1!, {r5-r12}
90 stmia r3!, {r5-r12}
91 subs r2, r2, #1
92 bne copyloop
93
94 eor r13, r13, #0x1400 // switch to other buffer
95 b wait
96
97// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
98// destaddr at 0x2c0003fc
99
100flag: .word 0x2c0003f8
101
102
103// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
104
105buffer: .word 0x2c000400
106
107sram: .word 0x9e000800
108wait_address: .word wait
109flag_address: .word flag
diff --git a/firmware/av7110/bootcode.bin.ihex b/firmware/av7110/bootcode.bin.ihex
new file mode 100644
index 000000000000..26a2993e0723
--- /dev/null
+++ b/firmware/av7110/bootcode.bin.ihex
@@ -0,0 +1,15 @@
1:10000000EA00000EE1B0F00EE25EF004E25EF00401
2:10001000E25EF008E25EF004E25EF004E25EF0040C
3:100020002C0000240000000C000000002C00003414
4:1000300000000000A5A55A5A001F15550000000930
5:10004000E59FD07CE59F4074E3A00000E5840000BC
6:10005000E5840004E59F1070E59F2070E59F306403
7:10006000E8B11FE0E8A31FE0E1510002DAFFFFFB67
8:10007000E59FF050E1D410B0E35100000AFFFFFC0F
9:10008000E1A0100DE5943004E1D420B2E282203FDB
10:10009000E1B0232203A00002E1C400B00AFFFFF494
11:1000A000E8B11FE0E8A31FE0E8B11FE0E8A31FE00C
12:1000B000E25220011AFFFFF9E22DDB05EAFFFFEC17
13:1000C0002C0003F82C0004009E0008002C00007493
14:0400D0002C0000C040
15:00000001FF
diff --git a/firmware/cis/LA-PCM.cis.ihex b/firmware/cis/LA-PCM.cis.ihex
new file mode 100644
index 000000000000..a0ff0c7b393d
--- /dev/null
+++ b/firmware/cis/LA-PCM.cis.ihex
@@ -0,0 +1,20 @@
1:100000000105D4F953E9FF17035338FF20040FC04B
2:1000100002002102060315390401416C6C69656414
3:100020002054656C657369732C4B2E4B00457468C6
4:1000300065726E6574204C414E20436172640043CA
5:10004000656E747265434F4D004C412D50434D0019
6:10005000FF1A0602100000020B1B08810108E06075
7:1000600000021F1B08820108E06020021F1B08839A
8:100070000108E06040021F1B08840108E060600284
9:100080001F1B08850108E06080021F1B088601080D
10:10009000E060A0021F1B08870108E060C0021F1B70
11:1000A00008880108E060E0021F1B08890108E06081
12:1000B00000031F1B088A0108E06020031F1B088B38
13:1000C0000108E06040031F1B088C0108E06060032A
14:1000D0001F1B088D0108E06080031F1B088E0108AC
15:1000E000E060A0031F1B088F0108E060C0031F1B16
16:0D00F00008900108E060E0031F1400FF000D
17:00000001FF
18#
19# Replacement CIS for Allied Telesis LA-PCM
20#
diff --git a/scripts/ihex2fw.c b/firmware/ihex2fw.c
index 8f7fdaa9e010..8f7fdaa9e010 100644
--- a/scripts/ihex2fw.c
+++ b/firmware/ihex2fw.c
diff --git a/firmware/slicoss/gbdownload.sys.ihex b/firmware/slicoss/gbdownload.sys.ihex
deleted file mode 100644
index dc17e639b69a..000000000000
--- a/firmware/slicoss/gbdownload.sys.ihex
+++ /dev/null
@@ -1,6148 +0,0 @@
1:10000000020000000080000000000100000000006D
2:10001000008000001200004081B200001800004083
3:1000200081B200001E00004081B2000003000040C9
4:1000300081B20000000000A898B001000480A24036
5:10004000FD7F00000900A249DD7D00000000004C9A
6:1000500080B2010007000040D1B100000000004C58
7:1000600080B201000900A240757D000060000040E0
8:10007000619901000B00A8B17E3100000900004029
9:1000800081B200001100004081B2000000801FE931
10:1000900018310000000041E980B201000F0040E982
11:1000A00080B2000000000040A59901001600294020
12:1000B00081320000160014BC803200000F0093BC97
13:1000C000803200000000504081B2010000800040FA
14:1000D00081B2000010000040A59901001C002940D9
15:1000E000813200001C0014BC80320000110093BC5F
16:1000F000803200000000504081B2010001800040C9
17:1001000081B2000020000040A59901002200294092
18:1001100081320000220014BC803200000E0093BC2B
19:100120008032000000000049DD8101002B01004009
20:10013000813201003C01004081320100270014BCE3
21:1001400080320000140113BC80320000549500403E
22:1001500045990100FFFF0040E599010000002F4094
23:1001600049B1010000000040E1B101000000004B76
24:10017000B7B3010000000040B5B30100D900004052
25:10018000B333010000000040B6D30100320095E80F
26:1001900080320000FFFF00E880880100B8002640A0
27:1001A0008132000000000040FDB30100000000406B
28:1001B000FFB301003C002250836C000000000045AA
29:1001C000FD930100A5A500A6B4A701003C00A25024
30:1001D000B573000000010040813201003C00A245DF
31:1001E0008032000000000046FD9301004100004005
32:1001F00081B200007F000020F5CF01001C0100FA51
33:10020000B3330100A5A500DAB5AB01009900A250F7
34:10021000B563000000000044FD930100D5000044D8
35:10022000B333010000000040D5990100000000DA5E
36:10023000D7B10100FFFF00DAED8B0100D5000046C9
37:10024000B333010008000040D5990100000000DA36
38:10025000D7B10100FF0000DAEF8B0100FF0000DAE8
39:10026000E38F0100D5000048B33301003C0000409B
40:10027000D5990100FF0000DAD78D0100FFFF00DAF9
41:10028000F1DB0100FF0000DAE98B0100000000480B
42:10029000E9E30100D500004BB33301002C0000401E
43:1002A000D5990100000000DAD7B10100D500004C5B
44:1002B000B3330100FFFF00DAEBDB0100D500004E95
45:1002C000B3330100030000DA818801000000005C04
46:1002D00081E00100FFFF00DAB5DB01005C00264091
47:1002E00081320000010000DAB5CF010000F000A764
48:1002F000B4870100000000DA819401000000004092
49:10030000D8B10100D5000050B3330100FFFF00DA7F
50:10031000B58B01006200264CB5630000010000DAD5
51:10032000B5CF0100000000DADFB10100D5000052B6
52:10033000B3330100FF0000DA4B890100080000DA46
53:10034000DFF70100FF0000EFDF8B010069002240B2
54:10035000DF7F000000000047FD9301002000004007
55:10036000B39B0100D500004081320100060000402F
56:10037000D5990100080000DAD7E50100F80000DA9D
57:10038000B38B010034000040D5990100000000D972
58:10039000D7B10100020000D9D5C90100000000DA80
59:1003A000D7B1010022000040B39B0100D5000040FE
60:1003B0008132010000000048B5F30100030000DABB
61:1003C0007B89010000010040DD9B0100D500005D3C
62:1003D000B3330100FFFF00DAE78B01008A002640FB
63:1003E0008132000000000041FD9301000000005038
64:1003F000E7E3010000010040D5990100000000F68C
65:10040000E7970100000000F3D7B10100D500005EBE
66:10041000B3330100FF0000DAE58B01000000004863
67:10042000E5E3010008010040D5990100FF0000DA72
68:10043000B58F0100000000F7B5970100000000DA59
69:10044000D7B101003C010040D5990100000000F83F
70:10045000E5970100000000F2D7B101000002004062
71:10046000DD9B0100960022F5813200000000004271
72:10047000FD930100000000EED5B10100000000F680
73:10048000EB970100000000F5D7B10100080000EA79
74:10049000D4C90100000000F7E3970100000000F15B
75:1004A000D7B101003C0000EEDDCB0100000000EE02
76:1004B000D5B10100000000F8E9970100000000F448
77:1004C000D7B10100D500004AB3330100FFFF00DAC5
78:1004D000DD890100B700004081B20000000000404B
79:1004E000D5990100050000A6D6B101009A1300EBD2
80:1004F000D699010008000040D5990100000200A62D
81:10050000D6B10100010000EBD69901002C0000409B
82:10051000D5990100050000A6D6B101009A1300EBA1
83:10052000D69901003C010040D5990100000200402D
84:10053000D799010000000042FD9301003C000040FB
85:10054000D5990100000000A6D6B10100000100EB22
86:10055000D699010000010040D5990100060000A6CF
87:10056000D6B101009A1300EBD699010008010040B2
88:10057000D5990100000200A6D6B10100010000EBF0
89:10058000D699010000000040D9B1010000000040F0
90:10059000DFB1010006000040D5990100A00000A6CF
91:1005A000D6B10100640000404B99010000000040FA
92:1005B0007B99010002040040DD990100B70013BCE3
93:1005C0008032000002080040DD9901000000004C6C
94:1005D000DD910100B80095E88430000000002FE9AB
95:1005E000FAB3010000000040D1B10100FF00004259
96:1005F000808801003400004080CE0100B800A64091
97:1006000081320000C100004081320100028022409E
98:1006100080320000B800004081B200000000004FAE
99:1006200081B00100CA0009F981320000C80008F950
100:1006300081320000D4001FFDF9330000C7009EFD89
101:10064000813200000000004AF3930100000080485E
102:10065000F3930100000000FDF7B3010000008049A2
103:10066000F3930100000000FC19B10100CF000AF96A
104:1006700081320000000040FB81B20100000041FD1A
105:1006800081B20100000780F9F38F0100000742F9F1
106:10069000F38F0100D300A2FFF76F0000000043407A
107:1006A00081B201000000A2FFFBEF0000000080FC0F
108:1006B000E1B101000000804081B00100D80006FED9
109:1006C0008132000000000041B3E301001C0100FA88
110:1006D000B3C30000DA0000428DB00000000000410A
111:1006E0008DB001000004004083980100EB00004041
112:1006F000813201000000005083B0010000008496A8
113:1007000080B2000026010040813201002501004036
114:100710002D110100000000402D810100000000DAD1
115:10072000B5EB0100E400849680320000E500004053
116:10073000B593000000000040B5830100DE00A24137
117:1007400083500000000000422D810100260100417D
118:100750002D01010000000041B3C30100DA00A241F5
119:100760008D500000000080DAB5BF01000000004B92
120:1007700081B00100000000DB81D00100000000D941
121:10078000B9B3010000000040B8E30100000000DC44
122:10079000B9EB010000000041B8970100150000DC32
123:1007A000B9E70100000000412D810100000000DBDD
124:1007B00081B00100270100422D11010025010040F8
125:1007C0002D110100280100402D0101000000004111
126:1007D0002D910100260100408132010025010040D9
127:1007E0002D110100000000402D8101000000A241F8
128:1007F00081D000000000849680320100FF00A0DC60
129:10080000B96B0000F80000412D910000F800004194
130:100810002D810000D8000040B3330100000090DAC1
131:100820008BB000001100004588F401004000004436
132:1008300080CE01000000A44081B200000000A3446B
133:1008400089EC00000000004289D001000000004255
134:1008500087B00100D9000043B2330100000000500E
135:10086000B5F301000C01A0DA8B400000000000414C
136:100870008BC001000000004187C001000801A241B7
137:1008800089500000FFFF00458888010010000045E6
138:100890008AF40100120190448A40000000000041E7
139:1008A0008BC00100FFFF00458AA8010000008050B6
140:1008B0008BE0010000800040F99B010000C0004077
141:1008C000B3CF01001C0100FC193101001C0140DA0A
142:1008D00081320100000041DA81B2010000000041D4
143:1008E000F9C3010016019FDA813200000280004046
144:1008F00081B200000000004491B00100000000D966
145:100900002BB101001E019F9480320000180000945A
146:1009100092E4010000000048B5F301000000004926
147:10092000B497010000000041B3C301001D01A241C2
148:1009300091500000000080402BB1010029010051BE
149:1009400093B000002901004D93B000002901004937
150:1009500093B000000000004293B001002901A241C1
151:10096000935000000000804081B201000000104060
152:1009700081B201000000114081B20100000012406C
153:1009800081B201000000134081B201000000144058
154:1009900081B201000000154081B201000000164044
155:1009A00081B201000000174081B201000000184030
156:1009B00081B201000000194081B2010000001A401C
157:1009C00081B2010000001B4081B2010000001C4008
158:1009D00081B2010000001D4081B2010000001E40F4
159:1009E00081B2010000001F4081B201000000804080
160:1009F00081B2010000040040A199010000000050F4
161:100A0000A1D10100000000401BB001000000004027
162:100A100019B001000000004017B0010000000040C4
163:100A200015B001000000004013B0010000000040BC
164:100A300011B00100000000400FB0010000000040B4
165:100A40000DB00100000000400BB0010000000040AC
166:100A500009B001000000004007B0010000000040A4
167:100A600005B001000000004003B00100000000409C
168:100A700001B0010044012048A15100000000804065
169:100A800081B201005001224B747D000000008040C3
170:100A900081B201006000004B60990100000000B1CC
171:100AA0007EB101005101A840813200004E0100409A
172:100AB00081B20000040080409798010000000058B7
173:100AC00007900100F39F004081B200000000004445
174:100AD000A5B30100AF02004081320100C502004011
175:100AE000813201000000005C07900100F39F00408C
176:100AF000BFB300005F0122CC857F000000000051E1
177:100B000007900100F39F004081B200000000004008
178:100B100049B10100AE0300CBA3C90100D0140040CD
179:100B2000A19B01000000002046B101000000004828
180:100B3000F1B10100000000D0F1B10100000000CAD5
181:100B4000F1B10100000000D5E1B101000700004053
182:100B5000619901002000002062DD01006801A840C9
183:100B600081320000000000CC85930100C5020040E6
184:100B700081320100D014004043990100000000FAC6
185:100B8000BAB30100000000FAA4B30100000000F8AD
186:100B9000BCB3010000142F4081B00100000000E749
187:100BA000A7B30100000000D8A9B30100FF0000DDD9
188:100BB000818801000200004080F4010078010040BB
189:100BC00080C80100880100DD813200000000004083
190:100BD00010B100008901004081B200008A0100408C
191:100BE00081B200008B01004081B200008C01004006
192:100BF00081B200008D01004081B200008F010040F1
193:100C000081B200009101004081B200005501004016
194:100C100081B20000D201004081B2000055010040C5
195:100C200081B20000E001004081B20000E10100401B
196:100C300081B200007F02004081B2000080020040CB
197:100C400081B20000F19F004081B20000F29F00409D
198:100C500081B200007701004181C01A005A01514061
199:100C600081B21A005A01524081B21A005A0155400D
200:100C700081B21A005A01564081B21A005501918181
201:100C800080301A005A01454081B21A005501918204
202:100C900080301A005A01464081B200000000004036
203:100CA00089B0010000002F4081B001000014004015
204:100CB00049990100B50122DEE16D00000000004C01
205:100CC00049C101000000004181C001009401A2441B
206:100CD000816C00000000004C49D101009C012240C1
207:100CE000E16D00009801A2418150000055010041D2
208:100CF000BFB3000000000042BFB301005501A00FC8
209:100D0000BD6F0000000000DEE1B101000000004402
210:100D100049C10100B701004019990100000042409B
211:100D200081B20100000043FF85B00100000000DE39
212:100D300019B10100000042FF87B00100000043FF2D
213:100D4000E1B101000000004449C1010000002FFF93
214:100D5000E1B10100081400A480CC0100AC012640E0
215:100D6000813200000000004185C00100AA01A24CB0
216:100D700081500000B60122D281320000B10122412F
217:100D8000A56F00005501A2E081320000000000D2F2
218:100D9000C1B301000000005C8990010000004042E6
219:100DA00080B201000000414380B20100000000F069
220:100DB000889401005A010044E0B10000B3010048EA
221:100DC00049C10000B101005B89900000B09F00A004
222:100DD0009EB000000000004D81B001000000004303
223:100DE000CB8301000000454081B20100BA01A2415D
224:100DF000815000000000454081B2010000004540E4
225:100E000081B20100C4019182823000000000008A9A
226:100E100080B00100B69F004080CE0100C301A64013
227:100E200081320000C401564081B20000000000532E
228:100E30006F930100F39F00526F9300000000004D7C
229:100E400081B0010000000042CD8301000000464057
230:100E500081B20100C701A24181500000000046405C
231:100E600081B201000000464081B20100D1019181B0
232:100E7000823000000000008980B00100B69F004071
233:100E800080CE0100D001A64081320000D101554042
234:100E900081B20000000000526F930100F39F0053E5
235:100EA0006F9300000000004083B001000014004078
236:100EB000499901000000234081B00100DA0122DEDF
237:100EC000E16D00000000004C49C10100000000413C
238:100ED00081C00100D501A244816C0000550100438E
239:100EE000BFB30000000000F818B10100000040F896
240:100EF00080B20100000041F080B20100000000401B
241:100F0000F1B1010000000040F1B101005A010040C0
242:100F1000E1B10000E201004091B00000000000419A
243:100F200091B00100D0142E4049B1010005000040ED
244:100F3000A39B0100080000DD81F40100E7010040EF
245:100F400080C801000000004010B10000ED01004029
246:100F500081B00000580100DEA1B30000FF01004095
247:100F600081B200000102004081B000000702004091
248:100F700081B20000570100DFE1B10000000000D0A5
249:100F8000BAB30100000000DEA1B10100020000D2EE
250:100F9000A5E70100000000D2C1B30100000000007D
251:100FA000F0B10100F7012244C1530000F601844171
252:100FB00081400000FA01004081320100000000D0B1
253:100FC00045B10100F1010041A1C10000B1020040A2
254:100FD00081320100C5020040813201005A0100DD6A
255:100FE000A1B100000000004081B0010040000040BD
256:100FF000A59B0100B102004081320100400000D3F6
257:10100000A7CB0100C50200E0A5B30000030000402B
258:10101000A39B0100580100DEA1B3000000000044C2
259:10102000BFB30100000000DE819001005501A2BAAB
260:1010300080040000600000DE619901000402A8B194
261:101040008030000057010040E0B10000000000D0F7
262:10105000BAB3010068020040819801005D02004DB2
263:101060008330010000000044E1B3010000000044AF
264:10107000E3B3010000000044E5B3010000000044B8
265:10108000E9B3010000000044EBB30100000000449C
266:10109000F5B3010000000044F7B301000000004474
267:1010A000F9B30100150222408F6F00007502004065
268:1010B000819801005D0200C7833001007D0200407D
269:1010C000819801005D02004283300100000000E8C9
270:1010D000F1B10100000000E9F1B10100000000EAF7
271:1010E000F1B10100000000EBF1B10100000000854A
272:1010F000F0B10100000000ECF1B10100000000EDD2
273:10110000F1B10100000000B2F0B10100E09F004029
274:101110008132010000000040F0B1010000000040F9
275:10112000F1B10100000000ABF0B10100000000B817
276:10113000F0B10100000000B9F0B10100000000BAF8
277:10114000F0B10100000000BBF0B101002902B8407D
278:101150008130000000000040819001002B02B94066
279:101160008132000000000041819001002D02BA4050
280:101170008132000000000042819001002F02BB403C
281:101180008132000000000043819001003102BC4028
282:101190008132000000000044819001003302BD4014
283:1011A0008132000000000045819001003502BE4000
284:1011B0008132000000000046819001003702BF40EC
285:1011C0008132000000000047819001003902C840D0
286:1011D0008132000000000048819001003B02C940BC
287:1011E0008132000000000049819001003D02CA40A8
288:1011F000813200000000004A819001003F02CB4094
289:10120000813200000000004B819001004102CC407F
290:10121000813200000000004C819001004302CD406B
291:10122000813200000000004D819001004502CE4057
292:10123000813200000000004E819001004702CF4043
293:10124000813200000000004F81900100000000404A
294:10125000F0B1010040000040A59B0100AF0200403A
295:1012600081320100C502004081320100D0142E06F7
296:10127000A5B30100400000D3A7CB0100000000F09F
297:10128000F1B10100000000F1F1B10100000000F235
298:10129000F1B10100000000F4F1B10100000000F51F
299:1012A000F1B10100000000FAF1B10100000000FB03
300:1012B000F1B10100000000FCF1B10100000000EB01
301:1012C000F1B10100000000EEF1B10100000000EFFB
302:1012D000F1B10100000000F3F1B10100000000F6DF
303:1012E000F1B10100000000FDF1B10100F70100C7FC
304:1012F000E1B100000000804081B2010063020048BB
305:1013000080320000000051401AB1010000004D4041
306:1013100081B201000000454081B201006002A2419B
307:10132000835000005C02494081B20000000052403E
308:101330001CB1010000004E4081B201000000464097
309:1013400081B201006502A241835000005C024A4064
310:1013500081B20000000000A09EB0010000000080EB
311:10136000D8B30100000000A1D0B30100000000A22A
312:10137000D2B30100000000A4D4B30100000000D0EB
313:10138000D6B30100000000D1DCB30100000000D2A0
314:10139000DEB3010000000088DAB30100000000D4D1
315:1013A0008EB30100000000D3E6B30100000000ACE2
316:1013B000ECB3010000000099FAB30100000000D571
317:1013C000E0B30100000000D5E2B30100000000D549
318:1013D000E4B30100000000D5E8B30100000000D52F
319:1013E000EAB30100000000D5F4B30100000000D50D
320:1013F000F6B30100000000D5F8B30100000000C7FB
321:10140000A9B101000000004F40B10100810200407D
322:1014100091B000000000004191B0010007000040C1
323:10142000A39B0100080000DD81F40100850200405B
324:1014300080C801000000004010B100008A02004096
325:1014400081B200009502004081B200009502004682
326:10145000A3B300009802004081B200009E02004049
327:1014600081B200008C022350A56F000000000050E4
328:10147000A5B30100BC020042A5630100C502004003
329:1014800081320100D0142D4049B10100000000D08C
330:10149000BAB30100000000DEA1B10100000000F8B5
331:1014A00000B0010094022244A553000091020041C3
332:1014B000A1C100005A0100DDA1B10000BC0200DEA4
333:1014C000A1330100C5020040813201005A010040F1
334:1014D00081B2000000000045BFB301005501A2D257
335:1014E000777D0000000000D261B10100000000DE45
336:1014F00063B101009B02A840813200005A01004004
337:1015000081B20000BC020054A5330100C5020040B6
338:1015100081320100D0142D4049B10100000000F8D3
339:10152000D0B30100000000F8D2B30100000000F8C1
340:10153000D4B30100000000F8D6B30100000000F8A9
341:1015400008B10100A9020040819801005D02004637
342:10155000833001005A01004081B20000000000A069
343:101560009EB00100000000E843B10100000000E966
344:1015700045B10100000000EA49B10100000000EBA4
345:10158000A1B101000000004F40B10100000000E7E0
346:10159000A7B30100000000D8A9B30100000000407B
347:1015A00049B10100AE0300CBA3C901000000002037
348:1015B00046B10100000000D2F1B10100000000D3EB
349:1015C000F1B10100000000D4F1B10100000000D031
350:1015D000E1B10100000000D161B101002000002054
351:1015E00062DD0100B902A84081320000000080CC19
352:1015F00085930100000000E7A7B30100000000D8B8
353:10160000A9B301000000004049B10100AE0300CBC6
354:10161000A3C901000000002046B10100000000D273
355:10162000F1B10100000000D0F1B10100000000D3D1
356:10163000F1B10100B80200D4E1B100000000A2CC79
357:1016400085FF00000000005081B00100C702A241E8
358:1016500081500000C602A2F280300000000080CC61
359:10166000858301000000004081B00100CB0280A50D
360:1016700080320000CC0200A5803200000000004152
361:1016800081C00100CD0280A58032000080010040B1
362:1016900083980100D602204F816C000000010040B9
363:1016A00083980100D602204B816C0000800000402E
364:1016B00083980100D6022047816C000000000040A2
365:1016C000839801000000004182DC0100039000418A
366:1016D000209901000000004049B1010000142F4C86
367:1016E00083B0010000000040F1B10100DA02A24124
368:1016F00083500000020000A580C80100DD02A2A501
369:10170000806C000020000090209901000000005F24
370:1017100023910100E0021F91803200003000009010
371:10172000209901000000005F23910100E3021F9156
372:10173000803200007000009020A901000000005FCE
373:1017400023910100E6021F91803200000000005F3B
374:1017500023910100E8021F91803200004068009050
375:1017600020A90100E0000040619901002100004033
376:1017700061990100220000406199010023000040AE
377:10178000619901002400004061990100250000409A
378:101790006199010026000040619901002700004086
379:1017A00061990100C000004061990100D01400401F
380:1017B00045990100020100A680B001000403004029
381:1017C00080980100060500A682B0010008070041CC
382:1017D0008298010000000040F0B1010000000041CB
383:1017E000E0B10100300300408530010039030040C2
384:1017F00081320100D814004043990100FF02A2F891
385:10180000806C0000000322F0826C000000000042A7
386:1018100021910100D0142040E1B101003003000CFF
387:10182000853001003003004D851001003003004E6B
388:1018300085100100D014204FE1B101003003004FAA
389:10184000851001003903000C85300100D8142043B5
390:1018500081B001000F0322F09E6E00003903004D9D
391:1018600085100100D814204281B001000F0322F03E
392:101870009E6E00003903004E85100100D8142041EF
393:1018800081B001001103A2F09E6E0000000000492B
394:1018900081E001000000004020950100030000905D
395:1018A000208D010000000043219501000000001B75
396:1018B00089B00100D0142040E1B1010030030017CD
397:1018C00085300100300300588510010030030059B5
398:1018D00085100100D014204FE1B101003003005AFF
399:1018E000851001003903001785300100D81420400D
400:1018F00081B00100230322F09E6E000039030058DE
401:1019000085100100D814204181B00100230322F08A
402:101910009E6E00003903005985100100D814204242
403:1019200081B001002703A2F09E6E0000030000902A
404:10193000208D0100000000402095010000000018EB
405:1019400089B001000000004088E001002F03A2429E
406:10195000217D0000A5A5004081980100D014204001
407:10196000E0B101003003004484300100390300403D
408:1019700081320100D814204081B201002F03A2F06F
409:10198000806C00000000004189E00100E000804020
410:10199000619901007015004047990100000000485E
411:1019A000F1B1010000000042F0B10100D01400408C
412:1019B000F19901000000005587B4010004000040C7
413:1019C0006199010070150043629901003603A84037
414:1019D000813200004103004081B2000070150040D8
415:1019E0004799010000000048F1B10100D8140040FF
416:1019F000F199010000000042F0B101000000005523
417:101A000087B4010002000040619901007015004395
418:101A1000629901003F03A8408132000000000048A5
419:101A200087B001004203A241875000000000A2F2EB
420:101A300086B00000100000F186F40100410326404A
421:101A4000813200000400004081B200000000004725
422:101A500084B001000000A248848400000000005F00
423:101A600061B101000000005C8F90010000000047A0
424:101A700062B101004903A84081320000F59F004790
425:101A800098300100000800478EC801004703005C41
426:101A90008F800000E00000406199010058152D4042
427:101AA0008DB00100D0142DF088B00100000000FAC4
428:101AB0008AB001000000004581B001000700004528
429:101AC00082880100000000438BF001000000004804
430:101AD00083E00100000000468294010020000041E4
431:101AE00060990100000000418DC001006403225F85
432:101AF0008D6C00005503A24181500000530300404B
433:101B000081B20000080000408598010000000044F8
434:101B100082B001000000004186B00100001C0043BB
435:101B200086D801000000A6418550010060030041F5
436:101B300083E000005E0300408132010000000048A5
437:101B400085E00100D0142F4684940100200000425B
438:101B500060990100C00000406199010000008040D0
439:101B600081B20100070000458088010000000043A9
440:101B70008BF0010000040040839801006F03A04136
441:101B8000815000006D03004182E8000000008041A8
442:101B90008EC00100AE030040A39901000000005474
443:101BA00081B00100601500408598010008000040E8
444:101BB00040E401000000005A419401000000005080
445:101BC00041E001000000004240940100000000419B
446:101BD00081C001000000A355816C0100000000419C
447:101BE000A3C101007303005085C000000000004045
448:101BF00049B1010000020040839801000016004036
449:101C00004599010000000040F1B101007E03A241AE
450:101C1000835000000000004085B001000B0000442C
451:101C200082F401001A1500A686B00100701500406C
452:101C30004599010000080040F199010000000042B0
453:101C4000F0B1010000160040E199010004000040DD
454:101C50006199010070150043629901008803A84052
455:101C6000813200008A03225A737D00007A0000400E
456:101C7000619901008B03A8B17E3100000008004289
457:101C800084C801008303A24183500000000080400B
458:101C900081B201000400004081B200000400004055
459:101CA00081B200000400004081B200000400004046
460:101CB00081B200000400004081B200000400004036
461:101CC00081B200000400004081B200000400004026
462:101CD00081B200000400004081B200000400004016
463:101CE00081B200000400004081B200000400004006
464:101CF00081B200000400004081B2000004000040F6
465:101D000081B200000400004081B2000004000040E5
466:101D100081B200000400004081B2000004000040D5
467:101D200081B200000400004081B2000004000040C5
468:101D300081B200000400004081B2000004000040B5
469:101D400081B200000400004081B2000004000040A5
470:101D500081B200000400004081B200000400004095
471:101D600081B200000400004081B200000400004085
472:101D700081B200000400004081B200000400004075
473:101D800081B200000400004081B200000400004065
474:101D900081B200000400004081B200000400004055
475:101DA00081B200000400004081B200000400004045
476:101DB00081B200000400004081B200000400004035
477:101DC00081B200000400004081B200000400004025
478:101DD00081B200000400004081B200000400004015
479:101DE00081B200000400004081B200000400004005
480:101DF00081B200000400004081B2000004000040F5
481:101E000081B200000400004081B2000004000040E4
482:101E100081B200000400004081B2000004000040D4
483:101E200081B200000400004081B2000004000040C4
484:101E300081B200000400004081B2000004000040B4
485:101E400081B200000400004081B2000004000040A4
486:101E500081B200000400004081B200000400004094
487:101E600081B200000400004081B200000400004084
488:101E700081B200000400004081B200000400004074
489:101E800081B200000400004081B200000400004064
490:101E900081B200000400004081B200000400004054
491:101EA00081B200000400004081B200000400004044
492:101EB00081B200000400004081B200000400004034
493:101EC00081B200000400004081B200000400004024
494:101ED00081B200000400004081B200000400004014
495:101EE00081B200000400004081B200000400004004
496:101EF00081B200000400004081B2000004000040F4
497:101F000081B200000400004081B2000004000040E3
498:101F100081B200000400004081B2000004000040D3
499:101F200081B200000400004081B2000004000040C3
500:101F300081B200000400004081B2000004000040B3
501:101F400081B200000400004081B2000004000040A3
502:101F500081B200000400004081B200000400004093
503:101F600081B200000400004081B200000400004083
504:101F700081B200000400004081B200000400004073
505:101F800081B200000400004081B200000400004063
506:101F900081B200000400004081B200000400004053
507:101FA00081B200000400004081B200000400004043
508:101FB00081B200000400004081B200000400004033
509:101FC00081B200000400004081B200000400004023
510:101FD00081B200000400004081B200000400004013
511:101FE00081B200000400004081B200000400004003
512:101FF00081B200000400004081B2000004000040F3
513:1020000081B200000400004081B2000004000040E2
514:1020100081B200000400004081B2000004000040D2
515:1020200081B200000400004081B2000004000040C2
516:1020300081B200000400004081B2000004000040B2
517:1020400081B200000400004081B2000004000040A2
518:1020500081B200000400004081B200000400004092
519:1020600081B200000400004081B200000400004082
520:1020700081B200000400004081B200000400004072
521:1020800081B200000400004081B200000400004062
522:1020900081B200000400004081B200000400004052
523:1020A00081B200000400004081B200000400004042
524:1020B00081B200000400004081B200000400004032
525:1020C00081B200000400004081B200000400004022
526:1020D00081B200000400004081B200000400004012
527:1020E00081B200000400004081B200000400004002
528:1020F00081B200000400004081B2000004000040F2
529:1021000081B200000400004081B2000004000040E1
530:1021100081B200000400004081B2000004000040D1
531:1021200081B200000400004081B2000004000040C1
532:1021300081B200000400004081B2000004000040B1
533:1021400081B200000400004081B2000004000040A1
534:1021500081B200000400004081B200000400004091
535:1021600081B200000400004081B200000400004081
536:1021700081B200000400004081B200000400004071
537:1021800081B200000400004081B200000400004061
538:1021900081B200000400004081B200000400004051
539:1021A00081B200000400004081B200000400004041
540:1021B00081B200000400004081B200000400004031
541:1021C00081B200000400004081B200000400004021
542:1021D00081B200000400004081B200000400004011
543:1021E00081B200000400004081B200000400004001
544:1021F00081B200000400004081B2000004000040F1
545:1022000081B200000400004081B2000004000040E0
546:1022100081B200000400004081B2000004000040D0
547:1022200081B200000400004081B2000004000040C0
548:1022300081B200000400004081B2000004000040B0
549:1022400081B200000400004081B2000004000040A0
550:1022500081B200000400004081B200000400004090
551:1022600081B200000400004081B200000400004080
552:1022700081B200000400004081B200000400004070
553:1022800081B200000400004081B200000400004060
554:1022900081B200000400004081B200000400004050
555:1022A00081B200000400004081B200000400004040
556:1022B00081B200000400004081B200000400004030
557:1022C00081B200000400004081B200000400004020
558:1022D00081B200000400004081B200000400004010
559:1022E00081B200000400004081B200000400004000
560:1022F00081B200000400004081B2000004000040F0
561:1023000081B200000400004081B2000004000040DF
562:1023100081B200000400004081B2000004000040CF
563:1023200081B200000400004081B2000004000040BF
564:1023300081B200000400004081B2000004000040AF
565:1023400081B200000400004081B20000040000409F
566:1023500081B200000400004081B20000040000408F
567:1023600081B200000400004081B20000040000407F
568:1023700081B200000400004081B20000040000406F
569:1023800081B200000400004081B20000040000405F
570:1023900081B200000400004081B20000040000404F
571:1023A00081B200000400004081B20000040000403F
572:1023B00081B200000400004081B20000040000402F
573:1023C00081B200000400004081B20000040000401F
574:1023D00081B200000400004081B20000040000400F
575:1023E00081B200000400004081B2000004000040FF
576:1023F00081B200000400004081B2000004000040EF
577:1024000081B200000400004081B2000004000040DE
578:1024100081B200000400004081B2000004000040CE
579:1024200081B200000400004081B2000004000040BE
580:1024300081B200000400004081B2000004000040AE
581:1024400081B200000400004081B20000040000409E
582:1024500081B200000400004081B20000040000408E
583:1024600081B200000400004081B20000040000407E
584:1024700081B200000400004081B20000040000406E
585:1024800081B200000400004081B20000040000405E
586:1024900081B200000400004081B20000040000404E
587:1024A00081B200000400004081B20000040000403E
588:1024B00081B200000400004081B20000040000402E
589:1024C00081B200000400004081B20000040000401E
590:1024D00081B200000400004081B20000040000400E
591:1024E00081B200000400004081B2000004000040FE
592:1024F00081B200000400004081B2000004000040EE
593:1025000081B200000400004081B2000004000040DD
594:1025100081B200000400004081B2000004000040CD
595:1025200081B200000400004081B2000004000040BD
596:1025300081B200000400004081B2000004000040AD
597:1025400081B200000400004081B20000040000409D
598:1025500081B200000400004081B20000040000408D
599:1025600081B200000400004081B20000040000407D
600:1025700081B200000400004081B20000040000406D
601:1025800081B200000400004081B20000040000405D
602:1025900081B200000400004081B20000040000404D
603:1025A00081B200000400004081B20000040000403D
604:1025B00081B200000400004081B20000040000402D
605:1025C00081B200000400004081B20000040000401D
606:1025D00081B200000400004081B20000040000400D
607:1025E00081B200000400004081B2000004000040FD
608:1025F00081B200000400004081B2000004000040ED
609:1026000081B200000400004081B2000004000040DC
610:1026100081B200000400004081B2000004000040CC
611:1026200081B200000400004081B2000004000040BC
612:1026300081B200000400004081B2000004000040AC
613:1026400081B200000400004081B20000040000409C
614:1026500081B200000400004081B20000040000408C
615:1026600081B200000400004081B20000040000407C
616:1026700081B200000400004081B20000040000406C
617:1026800081B200000400004081B20000040000405C
618:1026900081B200000400004081B20000040000404C
619:1026A00081B200000400004081B20000040000403C
620:1026B00081B200000400004081B20000040000402C
621:1026C00081B200000400004081B20000040000401C
622:1026D00081B200000400004081B20000040000400C
623:1026E00081B200000400004081B2000004000040FC
624:1026F00081B200000400004081B2000004000040EC
625:1027000081B200000400004081B2000004000040DB
626:1027100081B200000400004081B2000004000040CB
627:1027200081B200000400004081B2000004000040BB
628:1027300081B200000400004081B2000004000040AB
629:1027400081B200000400004081B20000040000409B
630:1027500081B200000400004081B20000040000408B
631:1027600081B200000400004081B20000040000407B
632:1027700081B200000400004081B20000040000406B
633:1027800081B200000400004081B20000040000405B
634:1027900081B200000400004081B20000040000404B
635:1027A00081B200000400004081B20000040000403B
636:1027B00081B200000400004081B20000040000402B
637:1027C00081B200000400004081B20000040000401B
638:1027D00081B200000400004081B20000040000400B
639:1027E00081B200000400004081B2000004000040FB
640:1027F00081B200000400004081B2000004000040EB
641:1028000081B200000400004081B2000004000040DA
642:1028100081B200000400004081B2000004000040CA
643:1028200081B200000400004081B2000004000040BA
644:1028300081B200000400004081B2000004000040AA
645:1028400081B200000400004081B20000040000409A
646:1028500081B200000400004081B20000040000408A
647:1028600081B200000400004081B20000040000407A
648:1028700081B200000400004081B20000040000406A
649:1028800081B200000400004081B20000040000405A
650:1028900081B200000400004081B20000040000404A
651:1028A00081B200000400004081B20000040000403A
652:1028B00081B200000400004081B20000040000402A
653:1028C00081B200000400004081B20000040000401A
654:1028D00081B200000400004081B20000040000400A
655:1028E00081B200000400004081B2000004000040FA
656:1028F00081B200000400004081B2000004000040EA
657:1029000081B200000400004081B2000004000040D9
658:1029100081B200000400004081B2000004000040C9
659:1029200081B200000400004081B2000004000040B9
660:1029300081B200000400004081B2000004000040A9
661:1029400081B200000400004081B200000400004099
662:1029500081B200000400004081B200000400004089
663:1029600081B200000400004081B200000400004079
664:1029700081B200000400004081B200000400004069
665:1029800081B200000400004081B200000400004059
666:1029900081B200000400004081B200000400004049
667:1029A00081B200000400004081B200000400004039
668:1029B00081B200000400004081B200000400004029
669:1029C00081B200000400004081B200000400004019
670:1029D00081B200000400004081B200000400004009
671:1029E00081B200000400004081B2000004000040F9
672:1029F00081B200000400004081B2000004000040E9
673:102A000081B200000400004081B2000004000040D8
674:102A100081B200000400004081B2000004000040C8
675:102A200081B200000400004081B2000004000040B8
676:102A300081B200000400004081B2000004000040A8
677:102A400081B200000400004081B200000400004098
678:102A500081B200000400004081B200000400004088
679:102A600081B200000400004081B200000400004078
680:102A700081B200000400004081B200000400004068
681:102A800081B200000400004081B200000400004058
682:102A900081B200000400004081B200000400004048
683:102AA00081B200000400004081B200000400004038
684:102AB00081B200000400004081B200000400004028
685:102AC00081B200000400004081B200000400004018
686:102AD00081B200000400004081B200000400004008
687:102AE00081B200000400004081B2000004000040F8
688:102AF00081B200000400004081B2000004000040E8
689:102B000081B200000400004081B2000004000040D7
690:102B100081B200000400004081B2000004000040C7
691:102B200081B200000400004081B2000004000040B7
692:102B300081B200000400004081B2000004000040A7
693:102B400081B200000400004081B200000400004097
694:102B500081B200000400004081B200000400004087
695:102B600081B200000400004081B200000400004077
696:102B700081B200000400004081B200000400004067
697:102B800081B200000400004081B200000400004057
698:102B900081B200000400004081B200000400004047
699:102BA00081B200000400004081B200000400004037
700:102BB00081B200000400004081B200000400004027
701:102BC00081B200000400004081B200000400004017
702:102BD00081B200000400004081B200000400004007
703:102BE00081B200000400004081B2000004000040F7
704:102BF00081B200000400004081B2000004000040E7
705:102C000081B200000400004081B2000004000040D6
706:102C100081B200000400004081B2000004000040C6
707:102C200081B200000400004081B2000004000040B6
708:102C300081B200000400004081B2000004000040A6
709:102C400081B200000400004081B200000400004096
710:102C500081B200000400004081B200000400004086
711:102C600081B200000400004081B200000400004076
712:102C700081B200000400004081B200000400004066
713:102C800081B200000400004081B200000400004056
714:102C900081B200000400004081B200000400004046
715:102CA00081B200000400004081B200000400004036
716:102CB00081B200000400004081B200000400004026
717:102CC00081B200000400004081B200000400004016
718:102CD00081B200000400004081B200000400004006
719:102CE00081B200000400004081B2000004000040F6
720:102CF00081B200000400004081B2000004000040E6
721:102D000081B200000400004081B2000004000040D5
722:102D100081B200000400004081B2000004000040C5
723:102D200081B200000400004081B2000004000040B5
724:102D300081B200000400004081B2000004000040A5
725:102D400081B200000400004081B200000400004095
726:102D500081B200000400004081B200000400004085
727:102D600081B200000400004081B200000400004075
728:102D700081B200000400004081B200000400004065
729:102D800081B200000400004081B200000400004055
730:102D900081B200000400004081B200000400004045
731:102DA00081B200000400004081B200000400004035
732:102DB00081B200000400004081B200000400004025
733:102DC00081B200000400004081B200000400004015
734:102DD00081B200000400004081B200000400004005
735:102DE00081B200000400004081B2000004000040F5
736:102DF00081B200000400004081B2000004000040E5
737:102E000081B200000400004081B2000004000040D4
738:102E100081B200000400004081B2000004000040C4
739:102E200081B200000400004081B2000004000040B4
740:102E300081B200000400004081B2000004000040A4
741:102E400081B200000400004081B200000400004094
742:102E500081B200000400004081B200000400004084
743:102E600081B200000400004081B200000400004074
744:102E700081B200000400004081B200000400004064
745:102E800081B200000400004081B200000400004054
746:102E900081B200000400004081B200000400004044
747:102EA00081B200000400004081B200000400004034
748:102EB00081B200000400004081B200000400004024
749:102EC00081B200000400004081B200000400004014
750:102ED00081B200000400004081B200000400004004
751:102EE00081B200000400004081B2000004000040F4
752:102EF00081B200000400004081B2000004000040E4
753:102F000081B200000400004081B2000004000040D3
754:102F100081B200000400004081B2000004000040C3
755:102F200081B200000400004081B2000004000040B3
756:102F300081B200000400004081B2000004000040A3
757:102F400081B200000400004081B200000400004093
758:102F500081B200000400004081B200000400004083
759:102F600081B200000400004081B200000400004073
760:102F700081B200000400004081B200000400004063
761:102F800081B200000400004081B200000400004053
762:102F900081B200000400004081B200000400004043
763:102FA00081B200000400004081B200000400004033
764:102FB00081B200000400004081B200000400004023
765:102FC00081B200000400004081B200000400004013
766:102FD00081B200000400004081B200000400004003
767:102FE00081B200000400004081B2000004000040F3
768:102FF00081B200000400004081B2000004000040E3
769:1030000081B200000400004081B2000004000040D2
770:1030100081B200000400004081B2000004000040C2
771:1030200081B200000400004081B2000004000040B2
772:1030300081B200000400004081B2000004000040A2
773:1030400081B200000400004081B200000400004092
774:1030500081B200000400004081B200000400004082
775:1030600081B200000400004081B200000400004072
776:1030700081B200000400004081B200000400004062
777:1030800081B200000400004081B200000400004052
778:1030900081B200000400004081B200000400004042
779:1030A00081B200000400004081B200000400004032
780:1030B00081B200000400004081B200000400004022
781:1030C00081B200000400004081B200000400004012
782:1030D00081B200000400004081B200000400004002
783:1030E00081B200000400004081B2000004000040F2
784:1030F00081B200000400004081B2000004000040E2
785:1031000081B200000400004081B2000004000040D1
786:1031100081B200000400004081B2000004000040C1
787:1031200081B200000400004081B2000004000040B1
788:1031300081B200000400004081B2000004000040A1
789:1031400081B200000400004081B200000400004091
790:1031500081B200000400004081B200000400004081
791:1031600081B200000400004081B200000400004071
792:1031700081B200000400004081B200000400004061
793:1031800081B200000400004081B200000400004051
794:1031900081B200000400004081B200000400004041
795:1031A00081B200000400004081B200000400004031
796:1031B00081B200000400004081B200000400004021
797:1031C00081B200000400004081B200000400004011
798:1031D00081B200000400004081B200000400004001
799:1031E00081B200000400004081B2000004000040F1
800:1031F00081B200000400004081B2000004000040E1
801:1032000081B200000400004081B2000004000040D0
802:1032100081B200000400004081B2000004000040C0
803:1032200081B200000400004081B2000004000040B0
804:1032300081B200000400004081B2000004000040A0
805:1032400081B200000400004081B200000400004090
806:1032500081B200000400004081B200000400004080
807:1032600081B200000400004081B200000400004070
808:1032700081B200000400004081B200000400004060
809:1032800081B200000400004081B200000400004050
810:1032900081B200000400004081B200000400004040
811:1032A00081B200000400004081B200000400004030
812:1032B00081B200000400004081B200000400004020
813:1032C00081B200000400004081B200000400004010
814:1032D00081B200000400004081B200000400004000
815:1032E00081B200000400004081B2000004000040F0
816:1032F00081B200000400004081B2000004000040E0
817:1033000081B200000400004081B2000004000040CF
818:1033100081B200000400004081B2000004000040BF
819:1033200081B200000400004081B2000004000040AF
820:1033300081B200000400004081B20000040000409F
821:1033400081B200000400004081B20000040000408F
822:1033500081B200000400004081B20000040000407F
823:1033600081B200000400004081B20000040000406F
824:1033700081B200000400004081B20000040000405F
825:1033800081B200000400004081B20000040000404F
826:1033900081B200000400004081B20000040000403F
827:1033A00081B200000400004081B20000040000402F
828:1033B00081B200000400004081B20000040000401F
829:1033C00081B200000400004081B20000040000400F
830:1033D00081B200000400004081B2000004000040FF
831:1033E00081B200000400004081B2000004000040EF
832:1033F00081B200000400004081B2000004000040DF
833:1034000081B200000400004081B2000004000040CE
834:1034100081B200000400004081B2000004000040BE
835:1034200081B200000400004081B2000004000040AE
836:1034300081B200000400004081B20000040000409E
837:1034400081B200000400004081B20000040000408E
838:1034500081B200000400004081B20000040000407E
839:1034600081B200000400004081B20000040000406E
840:1034700081B200000400004081B20000040000405E
841:1034800081B200000400004081B20000040000404E
842:1034900081B200000400004081B20000040000403E
843:1034A00081B200000400004081B20000040000402E
844:1034B00081B200000400004081B20000040000401E
845:1034C00081B200000400004081B20000040000400E
846:1034D00081B200000400004081B2000004000040FE
847:1034E00081B200000400004081B2000004000040EE
848:1034F00081B200000400004081B2000004000040DE
849:1035000081B200000400004081B2000004000040CD
850:1035100081B200000400004081B2000004000040BD
851:1035200081B200000400004081B2000004000040AD
852:1035300081B200000400004081B20000040000409D
853:1035400081B200000400004081B20000040000408D
854:1035500081B200000400004081B20000040000407D
855:1035600081B200000400004081B20000040000406D
856:1035700081B200000400004081B20000040000405D
857:1035800081B200000400004081B20000040000404D
858:1035900081B200000400004081B20000040000403D
859:1035A00081B200000400004081B20000040000402D
860:1035B00081B200000400004081B20000040000401D
861:1035C00081B200000400004081B20000040000400D
862:1035D00081B200000400004081B2000004000040FD
863:1035E00081B200000400004081B2000004000040ED
864:1035F00081B200000400004081B2000004000040DD
865:1036000081B200000400004081B2000004000040CC
866:1036100081B200000400004081B2000004000040BC
867:1036200081B200000400004081B2000004000040AC
868:1036300081B200000400004081B20000040000409C
869:1036400081B200000400004081B20000040000408C
870:1036500081B200000400004081B20000040000407C
871:1036600081B200000400004081B20000040000406C
872:1036700081B200000400004081B20000040000405C
873:1036800081B200000400004081B20000040000404C
874:1036900081B200000400004081B20000040000403C
875:1036A00081B200000400004081B20000040000402C
876:1036B00081B200000400004081B20000040000401C
877:1036C00081B200000400004081B20000040000400C
878:1036D00081B200000400004081B2000004000040FC
879:1036E00081B200000400004081B2000004000040EC
880:1036F00081B200000400004081B2000004000040DC
881:1037000081B200000400004081B2000004000040CB
882:1037100081B200000400004081B2000004000040BB
883:1037200081B200000400004081B2000004000040AB
884:1037300081B200000400004081B20000040000409B
885:1037400081B200000400004081B20000040000408B
886:1037500081B200000400004081B20000040000407B
887:1037600081B200000400004081B20000040000406B
888:1037700081B200000400004081B20000040000405B
889:1037800081B200000400004081B20000040000404B
890:1037900081B200000400004081B20000040000403B
891:1037A00081B200000400004081B20000040000402B
892:1037B00081B200000400004081B20000040000401B
893:1037C00081B200000400004081B20000040000400B
894:1037D00081B200000400004081B2000004000040FB
895:1037E00081B200000400004081B2000004000040EB
896:1037F00081B200000400004081B2000004000040DB
897:1038000081B200000400004081B2000004000040CA
898:1038100081B200000400004081B2000004000040BA
899:1038200081B200000400004081B2000004000040AA
900:1038300081B200000400004081B20000040000409A
901:1038400081B200000400004081B20000040000408A
902:1038500081B200000400004081B20000040000407A
903:1038600081B200000400004081B20000040000406A
904:1038700081B200000400004081B20000040000405A
905:1038800081B200000400004081B20000040000404A
906:1038900081B200000400004081B20000040000403A
907:1038A00081B200000400004081B20000040000402A
908:1038B00081B200000400004081B20000040000401A
909:1038C00081B200000400004081B20000040000400A
910:1038D00081B200000400004081B2000004000040FA
911:1038E00081B200000400004081B2000004000040EA
912:1038F00081B200000400004081B2000004000040DA
913:1039000081B200000400004081B2000004000040C9
914:1039100081B200000400004081B2000004000040B9
915:1039200081B200000400004081B2000004000040A9
916:1039300081B200000400004081B200000400004099
917:1039400081B200000400004081B200000400004089
918:1039500081B200000400004081B200000400004079
919:1039600081B200000400004081B200000400004069
920:1039700081B200000400004081B200000400004059
921:1039800081B200000400004081B200000400004049
922:1039900081B200000400004081B200000400004039
923:1039A00081B200000400004081B200000400004029
924:1039B00081B200000400004081B200000400004019
925:1039C00081B200000400004081B200000400004009
926:1039D00081B200000400004081B2000004000040F9
927:1039E00081B200000400004081B2000004000040E9
928:1039F00081B200000400004081B2000004000040D9
929:103A000081B200000400004081B2000004000040C8
930:103A100081B200000400004081B2000004000040B8
931:103A200081B200000400004081B2000004000040A8
932:103A300081B200000400004081B200000400004098
933:103A400081B200000400004081B200000400004088
934:103A500081B200000400004081B200000400004078
935:103A600081B200000400004081B200000400004068
936:103A700081B200000400004081B200000400004058
937:103A800081B200000400004081B200000400004048
938:103A900081B200000400004081B200000400004038
939:103AA00081B200000400004081B200000400004028
940:103AB00081B200000400004081B200000400004018
941:103AC00081B200000400004081B200000400004008
942:103AD00081B200000400004081B2000004000040F8
943:103AE00081B200000400004081B2000004000040E8
944:103AF00081B200000400004081B2000004000040D8
945:103B000081B200000400004081B2000004000040C7
946:103B100081B200000400004081B2000004000040B7
947:103B200081B200000400004081B2000004000040A7
948:103B300081B200000400004081B200000400004097
949:103B400081B200000400004081B200000400004087
950:103B500081B200000400004081B200000400004077
951:103B600081B200000400004081B200000400004067
952:103B700081B200000400004081B200000400004057
953:103B800081B200000400004081B200000400004047
954:103B900081B200000400004081B200000400004037
955:103BA00081B200000400004081B200000400004027
956:103BB00081B200000400004081B200000400004017
957:103BC00081B200000400004081B200000400004007
958:103BD00081B200000400004081B2000004000040F7
959:103BE00081B200000400004081B2000004000040E7
960:103BF00081B200000400004081B2000004000040D7
961:103C000081B200000400004081B2000004000040C6
962:103C100081B200000400004081B2000004000040B6
963:103C200081B200000400004081B2000004000040A6
964:103C300081B200000400004081B200000400004096
965:103C400081B200000400004081B200000400004086
966:103C500081B200000400004081B200000400004076
967:103C600081B200000400004081B200000400004066
968:103C700081B200000400004081B200000400004056
969:103C800081B200000400004081B200000400004046
970:103C900081B200000400004081B200000400004036
971:103CA00081B200000400004081B200000400004026
972:103CB00081B200000400004081B200000400004016
973:103CC00081B200000400004081B200000400004006
974:103CD00081B200000400004081B2000004000040F6
975:103CE00081B200000400004081B2000004000040E6
976:103CF00081B200000400004081B2000004000040D6
977:103D000081B200000400004081B2000004000040C5
978:103D100081B200000400004081B2000004000040B5
979:103D200081B200000400004081B2000004000040A5
980:103D300081B200000400004081B200000400004095
981:103D400081B200000400004081B200000400004085
982:103D500081B200000400004081B200000400004075
983:103D600081B200000400004081B200000400004065
984:103D700081B200000400004081B200000400004055
985:103D800081B200000400004081B200000400004045
986:103D900081B200000400004081B200000400004035
987:103DA00081B200000400004081B200000400004025
988:103DB00081B200000400004081B200000400004015
989:103DC00081B200000400004081B200000400004005
990:103DD00081B200000400004081B2000004000040F5
991:103DE00081B200000400004081B2000004000040E5
992:103DF00081B200000400004081B2000004000040D5
993:103E000081B200000400004081B2000004000040C4
994:103E100081B200000400004081B2000004000040B4
995:103E200081B200000400004081B2000004000040A4
996:103E300081B200000400004081B200000400004094
997:103E400081B200000400004081B200000400004084
998:103E500081B200000400004081B200000400004074
999:103E600081B200000400004081B200000400004064
1000:103E700081B200000400004081B200000400004054
1001:103E800081B200000400004081B200000400004044
1002:103E900081B200000400004081B200000400004034
1003:103EA00081B200000400004081B200000400004024
1004:103EB00081B200000400004081B200000400004014
1005:103EC00081B200000400004081B200000400004004
1006:103ED00081B200000400004081B2000004000040F4
1007:103EE00081B200000400004081B2000004000040E4
1008:103EF00081B200000400004081B2000004000040D4
1009:103F000081B200000400004081B2000004000040C3
1010:103F100081B200000400004081B2000004000040B3
1011:103F200081B200000400004081B2000004000040A3
1012:103F300081B200000400004081B200000400004093
1013:103F400081B200000400004081B200000400004083
1014:103F500081B200000400004081B200000400004073
1015:103F600081B200000400004081B200000400004063
1016:103F700081B200000400004081B200000400004053
1017:103F800081B200000400004081B200000400004043
1018:103F900081B200000400004081B200000400004033
1019:103FA00081B200000400004081B200000400004023
1020:103FB00081B200000400004081B200000400004013
1021:103FC00081B200000400004081B200000400004003
1022:103FD00081B200000400004081B2000004000040F3
1023:103FE00081B200000400004081B2000004000040E3
1024:103FF00081B200000400004081B2000004000040D3
1025:1040000081B200000400004081B2000004000040C2
1026:1040100081B200000400004081B2000004000040B2
1027:1040200081B200000400004081B2000004000040A2
1028:1040300081B200000400004081B200000400004092
1029:1040400081B200000400004081B200000400004082
1030:1040500081B200000400004081B200000400004072
1031:1040600081B200000400004081B200000400004062
1032:1040700081B200000400004081B200000400004052
1033:1040800081B200000400004081B200000400004042
1034:1040900081B200000400004081B200000400004032
1035:1040A00081B200000400004081B200000400004022
1036:1040B00081B200000400004081B200000400004012
1037:1040C00081B200000400004081B200000400004002
1038:1040D00081B200000400004081B2000004000040F2
1039:1040E00081B200000400004081B2000004000040E2
1040:1040F00081B200000400004081B2000004000040D2
1041:1041000081B200000400004081B2000004000040C1
1042:1041100081B200000400004081B2000004000040B1
1043:1041200081B200000400004081B2000004000040A1
1044:1041300081B200000400004081B200000400004091
1045:1041400081B200000400004081B200000400004081
1046:1041500081B200000400004081B200000400004071
1047:1041600081B200000400004081B200000400004061
1048:1041700081B200000400004081B200000400004051
1049:1041800081B200000400004081B200000400004041
1050:1041900081B200000400004081B200000400004031
1051:1041A00081B200000400004081B200000400004021
1052:1041B00081B200000400004081B200000400004011
1053:1041C00081B200000400004081B200000400004001
1054:1041D00081B200000400004081B2000004000040F1
1055:1041E00081B200000400004081B2000004000040E1
1056:1041F00081B200000400004081B2000004000040D1
1057:1042000081B200000400004081B2000004000040C0
1058:1042100081B200000400004081B2000004000040B0
1059:1042200081B200000400004081B2000004000040A0
1060:1042300081B200000400004081B200000400004090
1061:1042400081B200000400004081B200000400004080
1062:1042500081B200000400004081B200000400004070
1063:1042600081B200000400004081B200000400004060
1064:1042700081B200000400004081B200000400004050
1065:1042800081B200000400004081B200000400004040
1066:1042900081B200000400004081B200000400004030
1067:1042A00081B200000400004081B200000400004020
1068:1042B00081B200000400004081B200000400004010
1069:1042C00081B200000400004081B200000400004000
1070:1042D00081B200000400004081B2000004000040F0
1071:1042E00081B200000400004081B2000004000040E0
1072:1042F00081B200000400004081B2000004000040D0
1073:1043000081B200000400004081B2000004000040BF
1074:1043100081B200000400004081B2000004000040AF
1075:1043200081B200000400004081B20000040000409F
1076:1043300081B200000400004081B20000040000408F
1077:1043400081B200000400004081B20000040000407F
1078:1043500081B200000400004081B20000040000406F
1079:1043600081B200000400004081B20000040000405F
1080:1043700081B200000400004081B20000040000404F
1081:1043800081B200000400004081B20000040000403F
1082:1043900081B200000400004081B20000040000402F
1083:1043A00081B200000400004081B20000040000401F
1084:1043B00081B200000400004081B20000040000400F
1085:1043C00081B200000400004081B2000004000040FF
1086:1043D00081B200000400004081B2000004000040EF
1087:1043E00081B200000400004081B2000004000040DF
1088:1043F00081B200000400004081B2000004000040CF
1089:1044000081B200000400004081B2000004000040BE
1090:1044100081B200000400004081B2000004000040AE
1091:1044200081B200000400004081B20000040000409E
1092:1044300081B200000400004081B20000040000408E
1093:1044400081B200000400004081B20000040000407E
1094:1044500081B200000400004081B20000040000406E
1095:1044600081B200000400004081B20000040000405E
1096:1044700081B200000400004081B20000040000404E
1097:1044800081B200000400004081B20000040000403E
1098:1044900081B200000400004081B20000040000402E
1099:1044A00081B200000400004081B20000040000401E
1100:1044B00081B200000400004081B20000040000400E
1101:1044C00081B200000400004081B2000004000040FE
1102:1044D00081B200000400004081B2000004000040EE
1103:1044E00081B200000400004081B2000004000040DE
1104:1044F00081B200000400004081B2000004000040CE
1105:1045000081B200000400004081B2000004000040BD
1106:1045100081B200000400004081B2000004000040AD
1107:1045200081B200000400004081B20000040000409D
1108:1045300081B200000400004081B20000040000408D
1109:1045400081B200000400004081B20000040000407D
1110:1045500081B200000400004081B20000040000406D
1111:1045600081B200000400004081B20000040000405D
1112:1045700081B200000400004081B20000040000404D
1113:1045800081B200000400004081B20000040000403D
1114:1045900081B200000400004081B20000040000402D
1115:1045A00081B200000400004081B20000040000401D
1116:1045B00081B200000400004081B20000040000400D
1117:1045C00081B200000400004081B2000004000040FD
1118:1045D00081B200000400004081B2000004000040ED
1119:1045E00081B200000400004081B2000004000040DD
1120:1045F00081B200000400004081B2000004000040CD
1121:1046000081B200000400004081B2000004000040BC
1122:1046100081B200000400004081B2000004000040AC
1123:1046200081B200000400004081B20000040000409C
1124:1046300081B200000400004081B20000040000408C
1125:1046400081B200000400004081B20000040000407C
1126:1046500081B200000400004081B20000040000406C
1127:1046600081B200000400004081B20000040000405C
1128:1046700081B200000400004081B20000040000404C
1129:1046800081B200000400004081B20000040000403C
1130:1046900081B200000400004081B20000040000402C
1131:1046A00081B200000400004081B20000040000401C
1132:1046B00081B200000400004081B20000040000400C
1133:1046C00081B200000400004081B2000004000040FC
1134:1046D00081B200000400004081B2000004000040EC
1135:1046E00081B200000400004081B2000004000040DC
1136:1046F00081B200000400004081B2000004000040CC
1137:1047000081B200000400004081B2000004000040BB
1138:1047100081B200000400004081B2000004000040AB
1139:1047200081B200000400004081B20000040000409B
1140:1047300081B200000400004081B20000040000408B
1141:1047400081B200000400004081B20000040000407B
1142:1047500081B200000400004081B20000040000406B
1143:1047600081B200000400004081B20000040000405B
1144:1047700081B200000400004081B20000040000404B
1145:1047800081B200000400004081B20000040000403B
1146:1047900081B200000400004081B20000040000402B
1147:1047A00081B200000400004081B20000040000401B
1148:1047B00081B200000400004081B20000040000400B
1149:1047C00081B200000400004081B2000004000040FB
1150:1047D00081B200000400004081B2000004000040EB
1151:1047E00081B200000400004081B2000004000040DB
1152:1047F00081B200000400004081B2000004000040CB
1153:1048000081B200000400004081B2000004000040BA
1154:1048100081B200000400004081B2000004000040AA
1155:1048200081B200000400004081B20000040000409A
1156:1048300081B200000400004081B20000040000408A
1157:1048400081B200000400004081B20000040000407A
1158:1048500081B200000400004081B20000040000406A
1159:1048600081B200000400004081B20000040000405A
1160:1048700081B200000400004081B20000040000404A
1161:1048800081B200000400004081B20000040000403A
1162:1048900081B200000400004081B20000040000402A
1163:1048A00081B200000400004081B20000040000401A
1164:1048B00081B200000400004081B20000040000400A
1165:1048C00081B200000400004081B2000004000040FA
1166:1048D00081B200000400004081B2000004000040EA
1167:1048E00081B200000400004081B2000004000040DA
1168:1048F00081B200000400004081B2000004000040CA
1169:1049000081B200000400004081B2000004000040B9
1170:1049100081B200000400004081B2000004000040A9
1171:1049200081B200000400004081B200000400004099
1172:1049300081B200000400004081B200000400004089
1173:1049400081B200000400004081B200000400004079
1174:1049500081B200000400004081B200000400004069
1175:1049600081B200000400004081B200000400004059
1176:1049700081B200000400004081B200000400004049
1177:1049800081B200000400004081B200000400004039
1178:1049900081B200000400004081B200000400004029
1179:1049A00081B200000400004081B200000400004019
1180:1049B00081B200000400004081B200000400004009
1181:1049C00081B200000400004081B2000004000040F9
1182:1049D00081B200000400004081B2000004000040E9
1183:1049E00081B200000400004081B2000004000040D9
1184:1049F00081B200000400004081B2000004000040C9
1185:104A000081B200000400004081B2000004000040B8
1186:104A100081B200000400004081B2000004000040A8
1187:104A200081B200000400004081B200000400004098
1188:104A300081B200000400004081B200000400004088
1189:104A400081B200000400004081B200000400004078
1190:104A500081B200000400004081B200000400004068
1191:104A600081B200000400004081B200000400004058
1192:104A700081B200000400004081B200000400004048
1193:104A800081B200000400004081B200000400004038
1194:104A900081B200000400004081B200000400004028
1195:104AA00081B200000400004081B200000400004018
1196:104AB00081B200000400004081B200000400004008
1197:104AC00081B200000400004081B2000004000040F8
1198:104AD00081B200000400004081B2000004000040E8
1199:104AE00081B200000400004081B2000004000040D8
1200:104AF00081B200000400004081B2000004000040C8
1201:104B000081B200000400004081B2000004000040B7
1202:104B100081B200000400004081B2000004000040A7
1203:104B200081B200000400004081B200000400004097
1204:104B300081B200000400004081B200000400004087
1205:104B400081B200000400004081B200000400004077
1206:104B500081B200000400004081B200000400004067
1207:104B600081B200000400004081B200000400004057
1208:104B700081B200000400004081B200000400004047
1209:104B800081B200000400004081B200000400004037
1210:104B900081B200000400004081B200000400004027
1211:104BA00081B200000400004081B200000400004017
1212:104BB00081B200000400004081B200000400004007
1213:104BC00081B200000400004081B2000004000040F7
1214:104BD00081B200000400004081B2000004000040E7
1215:104BE00081B200000400004081B2000004000040D7
1216:104BF00081B200000400004081B2000004000040C7
1217:104C000081B200000400004081B2000004000040B6
1218:104C100081B200000400004081B2000004000040A6
1219:104C200081B200000400004081B200000400004096
1220:104C300081B200000400004081B200000400004086
1221:104C400081B200000400004081B200000400004076
1222:104C500081B200000400004081B200000400004066
1223:104C600081B200000400004081B200000400004056
1224:104C700081B200000400004081B200000400004046
1225:104C800081B200000400004081B200000400004036
1226:104C900081B200000400004081B200000400004026
1227:104CA00081B200000400004081B200000400004016
1228:104CB00081B200000400004081B200000400004006
1229:104CC00081B200000400004081B2000004000040F6
1230:104CD00081B200000400004081B2000004000040E6
1231:104CE00081B200000400004081B2000004000040D6
1232:104CF00081B200000400004081B2000004000040C6
1233:104D000081B200000400004081B2000004000040B5
1234:104D100081B200000400004081B2000004000040A5
1235:104D200081B200000400004081B200000400004095
1236:104D300081B200000400004081B200000400004085
1237:104D400081B200000400004081B200000400004075
1238:104D500081B200000400004081B200000400004065
1239:104D600081B200000400004081B200000400004055
1240:104D700081B200000400004081B200000400004045
1241:104D800081B200000400004081B200000400004035
1242:104D900081B200000400004081B200000400004025
1243:104DA00081B200000400004081B200000400004015
1244:104DB00081B200000400004081B200000400004005
1245:104DC00081B200000400004081B2000004000040F5
1246:104DD00081B200000400004081B2000004000040E5
1247:104DE00081B200000400004081B2000004000040D5
1248:104DF00081B200000400004081B2000004000040C5
1249:104E000081B200000400004081B2000004000040B4
1250:104E100081B200000400004081B2000004000040A4
1251:104E200081B200000400004081B200000400004094
1252:104E300081B200000400004081B200000400004084
1253:104E400081B200000400004081B200000400004074
1254:104E500081B200000400004081B200000400004064
1255:104E600081B200000400004081B200000400004054
1256:104E700081B200000400004081B200000400004044
1257:104E800081B200000400004081B200000400004034
1258:104E900081B200000400004081B200000400004024
1259:104EA00081B200000400004081B200000400004014
1260:104EB00081B200000400004081B200000400004004
1261:104EC00081B200000400004081B2000004000040F4
1262:104ED00081B200000400004081B2000004000040E4
1263:104EE00081B200000400004081B2000004000040D4
1264:104EF00081B200000400004081B2000004000040C4
1265:104F000081B200000400004081B2000004000040B3
1266:104F100081B200000400004081B2000004000040A3
1267:104F200081B200000400004081B200000400004093
1268:104F300081B200000400004081B200000400004083
1269:104F400081B200000400004081B200000400004073
1270:104F500081B200000400004081B200000400004063
1271:104F600081B200000400004081B200000400004053
1272:104F700081B200000400004081B200000400004043
1273:104F800081B200000400004081B200000400004033
1274:104F900081B200000400004081B200000400004023
1275:104FA00081B200000400004081B200000400004013
1276:104FB00081B200000400004081B200000400004003
1277:104FC00081B200000400004081B2000004000040F3
1278:104FD00081B200000400004081B2000004000040E3
1279:104FE00081B200000400004081B2000004000040D3
1280:104FF00081B200000400004081B2000004000040C3
1281:1050000081B200000400004081B2000004000040B2
1282:1050100081B200000400004081B2000004000040A2
1283:1050200081B200000400004081B200000400004092
1284:1050300081B200000400004081B200000400004082
1285:1050400081B200000400004081B200000400004072
1286:1050500081B200000400004081B200000400004062
1287:1050600081B200000400004081B200000400004052
1288:1050700081B200000400004081B200000400004042
1289:1050800081B200000400004081B200000400004032
1290:1050900081B200000400004081B200000400004022
1291:1050A00081B200000400004081B200000400004012
1292:1050B00081B200000400004081B200000400004002
1293:1050C00081B200000400004081B2000004000040F2
1294:1050D00081B200000400004081B2000004000040E2
1295:1050E00081B200000400004081B2000004000040D2
1296:1050F00081B200000400004081B2000004000040C2
1297:1051000081B200000400004081B2000004000040B1
1298:1051100081B200000400004081B2000004000040A1
1299:1051200081B200000400004081B200000400004091
1300:1051300081B200000400004081B200000400004081
1301:1051400081B200000400004081B200000400004071
1302:1051500081B200000400004081B200000400004061
1303:1051600081B200000400004081B200000400004051
1304:1051700081B200000400004081B200000400004041
1305:1051800081B200000400004081B200000400004031
1306:1051900081B200000400004081B200000400004021
1307:1051A00081B200000400004081B200000400004011
1308:1051B00081B200000400004081B200000400004001
1309:1051C00081B200000400004081B2000004000040F1
1310:1051D00081B200000400004081B2000004000040E1
1311:1051E00081B200000400004081B2000004000040D1
1312:1051F00081B200000400004081B2000004000040C1
1313:1052000081B200000400004081B2000004000040B0
1314:1052100081B200000400004081B2000004000040A0
1315:1052200081B200000400004081B200000400004090
1316:1052300081B200000400004081B200000400004080
1317:1052400081B200000400004081B200000400004070
1318:1052500081B200000400004081B200000400004060
1319:1052600081B200000400004081B200000400004050
1320:1052700081B200000400004081B200000400004040
1321:1052800081B200000400004081B200000400004030
1322:1052900081B200000400004081B200000400004020
1323:1052A00081B200000400004081B200000400004010
1324:1052B00081B200000400004081B200000400004000
1325:1052C00081B200000400004081B2000004000040F0
1326:1052D00081B200000400004081B2000004000040E0
1327:1052E00081B200000400004081B2000004000040D0
1328:1052F00081B200000400004081B2000004000040C0
1329:1053000081B200000400004081B2000004000040AF
1330:1053100081B200000400004081B20000040000409F
1331:1053200081B200000400004081B20000040000408F
1332:1053300081B200000400004081B20000040000407F
1333:1053400081B200000400004081B20000040000406F
1334:1053500081B200000400004081B20000040000405F
1335:1053600081B200000400004081B20000040000404F
1336:1053700081B200000400004081B20000040000403F
1337:1053800081B200000400004081B20000040000402F
1338:1053900081B200000400004081B20000040000401F
1339:1053A00081B200000400004081B20000040000400F
1340:1053B00081B200000400004081B2000004000040FF
1341:1053C00081B200000400004081B2000004000040EF
1342:1053D00081B200000400004081B2000004000040DF
1343:1053E00081B200000400004081B2000004000040CF
1344:1053F00081B200000400004081B2000004000040BF
1345:1054000081B200000400004081B2000004000040AE
1346:1054100081B200000400004081B20000040000409E
1347:1054200081B200000400004081B20000040000408E
1348:1054300081B200000400004081B20000040000407E
1349:1054400081B200000400004081B20000040000406E
1350:1054500081B200000400004081B20000040000405E
1351:1054600081B200000400004081B20000040000404E
1352:1054700081B200000400004081B20000040000403E
1353:1054800081B200000400004081B20000040000402E
1354:1054900081B200000400004081B20000040000401E
1355:1054A00081B200000400004081B20000040000400E
1356:1054B00081B200000400004081B2000004000040FE
1357:1054C00081B200000400004081B2000004000040EE
1358:1054D00081B200000400004081B2000004000040DE
1359:1054E00081B200000400004081B2000004000040CE
1360:1054F00081B200000400004081B2000004000040BE
1361:1055000081B200000400004081B2000004000040AD
1362:1055100081B200000400004081B20000040000409D
1363:1055200081B200000400004081B20000040000408D
1364:1055300081B200000400004081B20000040000407D
1365:1055400081B200000400004081B20000040000406D
1366:1055500081B200000400004081B20000040000405D
1367:1055600081B200000400004081B20000040000404D
1368:1055700081B200000400004081B20000040000403D
1369:1055800081B200000400004081B20000040000402D
1370:1055900081B200000400004081B20000040000401D
1371:1055A00081B200000400004081B20000040000400D
1372:1055B00081B200000400004081B2000004000040FD
1373:1055C00081B200000400004081B2000004000040ED
1374:1055D00081B200000400004081B2000004000040DD
1375:1055E00081B200000400004081B2000004000040CD
1376:1055F00081B200000400004081B2000004000040BD
1377:1056000081B200000400004081B2000004000040AC
1378:1056100081B200000400004081B20000040000409C
1379:1056200081B200000400004081B20000040000408C
1380:1056300081B200000400004081B20000040000407C
1381:1056400081B200000400004081B20000040000406C
1382:1056500081B200000400004081B20000040000405C
1383:1056600081B200000400004081B20000040000404C
1384:1056700081B200000400004081B20000040000403C
1385:1056800081B200000400004081B20000040000402C
1386:1056900081B200000400004081B20000040000401C
1387:1056A00081B200000400004081B20000040000400C
1388:1056B00081B200000400004081B2000004000040FC
1389:1056C00081B200000400004081B2000004000040EC
1390:1056D00081B200000400004081B2000004000040DC
1391:1056E00081B200000400004081B2000004000040CC
1392:1056F00081B200000400004081B2000004000040BC
1393:1057000081B200000400004081B2000004000040AB
1394:1057100081B200000400004081B20000040000409B
1395:1057200081B200000400004081B20000040000408B
1396:1057300081B200000400004081B20000040000407B
1397:1057400081B200000400004081B20000040000406B
1398:1057500081B200000400004081B20000040000405B
1399:1057600081B200000400004081B20000040000404B
1400:1057700081B200000400004081B20000040000403B
1401:1057800081B200000400004081B20000040000402B
1402:1057900081B200000400004081B20000040000401B
1403:1057A00081B200000400004081B20000040000400B
1404:1057B00081B200000400004081B2000004000040FB
1405:1057C00081B200000400004081B2000004000040EB
1406:1057D00081B200000400004081B2000004000040DB
1407:1057E00081B200000400004081B2000004000040CB
1408:1057F00081B200000400004081B2000004000040BB
1409:1058000081B200000400004081B2000004000040AA
1410:1058100081B200000400004081B20000040000409A
1411:1058200081B200000400004081B20000040000408A
1412:1058300081B200000400004081B20000040000407A
1413:1058400081B200000400004081B20000040000406A
1414:1058500081B200000400004081B20000040000405A
1415:1058600081B200000400004081B20000040000404A
1416:1058700081B200000400004081B20000040000403A
1417:1058800081B200000400004081B20000040000402A
1418:1058900081B200000400004081B20000040000401A
1419:1058A00081B200000400004081B20000040000400A
1420:1058B00081B200000400004081B2000004000040FA
1421:1058C00081B200000400004081B2000004000040EA
1422:1058D00081B200000400004081B2000004000040DA
1423:1058E00081B200000400004081B2000004000040CA
1424:1058F00081B200000400004081B2000004000040BA
1425:1059000081B200000400004081B2000004000040A9
1426:1059100081B200000400004081B200000400004099
1427:1059200081B200000400004081B200000400004089
1428:1059300081B200000400004081B200000400004079
1429:1059400081B200000400004081B200000400004069
1430:1059500081B200000400004081B200000400004059
1431:1059600081B200000400004081B200000400004049
1432:1059700081B200000400004081B200000400004039
1433:1059800081B200000400004081B200000400004029
1434:1059900081B200000400004081B200000400004019
1435:1059A00081B200000400004081B200000400004009
1436:1059B00081B200000400004081B2000004000040F9
1437:1059C00081B200000400004081B2000004000040E9
1438:1059D00081B200000400004081B2000004000040D9
1439:1059E00081B200000400004081B2000004000040C9
1440:1059F00081B200000400004081B2000004000040B9
1441:105A000081B200000400004081B2000004000040A8
1442:105A100081B200000400004081B200000400004098
1443:105A200081B200000400004081B200000400004088
1444:105A300081B200000400004081B200000400004078
1445:105A400081B200000400004081B200000400004068
1446:105A500081B200000400004081B200000400004058
1447:105A600081B200000400004081B200000400004048
1448:105A700081B200000400004081B200000400004038
1449:105A800081B200000400004081B200000400004028
1450:105A900081B200000400004081B200000400004018
1451:105AA00081B200000400004081B200000400004008
1452:105AB00081B200000400004081B2000004000040F8
1453:105AC00081B200000400004081B2000004000040E8
1454:105AD00081B200000400004081B2000004000040D8
1455:105AE00081B200000400004081B2000004000040C8
1456:105AF00081B200000400004081B2000004000040B8
1457:105B000081B200000400004081B2000004000040A7
1458:105B100081B200000400004081B200000400004097
1459:105B200081B200000400004081B200000400004087
1460:105B300081B200000400004081B200000400004077
1461:105B400081B200000400004081B200000400004067
1462:105B500081B200000400004081B200000400004057
1463:105B600081B200000400004081B200000400004047
1464:105B700081B200000400004081B200000400004037
1465:105B800081B200000400004081B200000400004027
1466:105B900081B200000400004081B200000400004017
1467:105BA00081B200000400004081B200000400004007
1468:105BB00081B200000400004081B2000004000040F7
1469:105BC00081B200000400004081B2000004000040E7
1470:105BD00081B200000400004081B2000004000040D7
1471:105BE00081B200000400004081B2000004000040C7
1472:105BF00081B200000400004081B2000004000040B7
1473:105C000081B200000400004081B2000004000040A6
1474:105C100081B200000400004081B200000400004096
1475:105C200081B200000400004081B200000400004086
1476:105C300081B200000400004081B200000400004076
1477:105C400081B200000400004081B200000400004066
1478:105C500081B200000400004081B200000400004056
1479:105C600081B200000400004081B200000400004046
1480:105C700081B200000400004081B200000400004036
1481:105C800081B200000400004081B200000400004026
1482:105C900081B200000400004081B200000400004016
1483:105CA00081B200000400004081B200000400004006
1484:105CB00081B200000400004081B2000004000040F6
1485:105CC00081B200000400004081B2000004000040E6
1486:105CD00081B200000400004081B2000004000040D6
1487:105CE00081B200000400004081B2000004000040C6
1488:105CF00081B200000400004081B2000004000040B6
1489:105D000081B200000400004081B2000004000040A5
1490:105D100081B200000400004081B200000400004095
1491:105D200081B200000400004081B200000400004085
1492:105D300081B200000400004081B200000400004075
1493:105D400081B200000400004081B200000400004065
1494:105D500081B200000400004081B200000400004055
1495:105D600081B200000400004081B200000400004045
1496:105D700081B200000400004081B200000400004035
1497:105D800081B200000400004081B200000400004025
1498:105D900081B200000400004081B200000400004015
1499:105DA00081B200000400004081B200000400004005
1500:105DB00081B200000400004081B2000004000040F5
1501:105DC00081B200000400004081B2000004000040E5
1502:105DD00081B200000400004081B2000004000040D5
1503:105DE00081B200000400004081B2000004000040C5
1504:105DF00081B200000400004081B2000004000040B5
1505:105E000081B200000400004081B2000004000040A4
1506:105E100081B200000400004081B200000400004094
1507:105E200081B200000400004081B200000400004084
1508:105E300081B200000400004081B200000400004074
1509:105E400081B200000400004081B200000400004064
1510:105E500081B200000400004081B200000400004054
1511:105E600081B200000400004081B200000400004044
1512:105E700081B200000400004081B200000400004034
1513:105E800081B200000400004081B200000400004024
1514:105E900081B200000400004081B200000400004014
1515:105EA00081B200000400004081B200000400004004
1516:105EB00081B200000400004081B2000004000040F4
1517:105EC00081B200000400004081B2000004000040E4
1518:105ED00081B200000400004081B2000004000040D4
1519:105EE00081B200000400004081B2000004000040C4
1520:105EF00081B200000400004081B2000004000040B4
1521:105F000081B200000400004081B2000004000040A3
1522:105F100081B200000400004081B200000400004093
1523:105F200081B200000400004081B200000400004083
1524:105F300081B200000400004081B200000400004073
1525:105F400081B200000400004081B200000400004063
1526:105F500081B200000400004081B200000400004053
1527:105F600081B200000400004081B200000400004043
1528:105F700081B200000400004081B200000400004033
1529:105F800081B200000400004081B200000400004023
1530:105F900081B200000400004081B200000400004013
1531:105FA00081B200000400004081B200000400004003
1532:105FB00081B200000400004081B2000004000040F3
1533:105FC00081B200000400004081B2000004000040E3
1534:105FD00081B200000400004081B2000004000040D3
1535:105FE00081B200000400004081B2000004000040C3
1536:105FF00081B200000400004081B2000004000040B3
1537:1060000081B200000400004081B2000004000040A2
1538:1060100081B200000400004081B200000400004092
1539:1060200081B200000400004081B200000400004082
1540:1060300081B200000400004081B200000400004072
1541:1060400081B200000400004081B200000400004062
1542:1060500081B200000400004081B200000400004052
1543:1060600081B200000400004081B200000400004042
1544:1060700081B200000400004081B200000400004032
1545:1060800081B200000400004081B200000400004022
1546:1060900081B200000400004081B200000400004012
1547:1060A00081B200000400004081B200000400004002
1548:1060B00081B200000400004081B2000004000040F2
1549:1060C00081B200000400004081B2000004000040E2
1550:1060D00081B200000400004081B2000004000040D2
1551:1060E00081B200000400004081B2000004000040C2
1552:1060F00081B200000400004081B2000004000040B2
1553:1061000081B200000400004081B2000004000040A1
1554:1061100081B200000400004081B200000400004091
1555:1061200081B200000400004081B200000400004081
1556:1061300081B200000400004081B200000400004071
1557:1061400081B200000400004081B200000400004061
1558:1061500081B200000400004081B200000400004051
1559:1061600081B200000400004081B200000400004041
1560:1061700081B200000400004081B200000400004031
1561:1061800081B200000400004081B200000400004021
1562:1061900081B200000400004081B200000400004011
1563:1061A00081B200000400004081B200000400004001
1564:1061B00081B200000400004081B2000004000040F1
1565:1061C00081B200000400004081B2000004000040E1
1566:1061D00081B200000400004081B2000004000040D1
1567:1061E00081B200000400004081B2000004000040C1
1568:1061F00081B200000400004081B2000004000040B1
1569:1062000081B200000400004081B2000004000040A0
1570:1062100081B200000400004081B200000400004090
1571:1062200081B200000400004081B200000400004080
1572:1062300081B200000400004081B200000400004070
1573:1062400081B200000400004081B200000400004060
1574:1062500081B200000400004081B200000400004050
1575:1062600081B200000400004081B200000400004040
1576:1062700081B200000400004081B200000400004030
1577:1062800081B200000400004081B200000400004020
1578:1062900081B200000400004081B200000400004010
1579:1062A00081B200000400004081B200000400004000
1580:1062B00081B200000400004081B2000004000040F0
1581:1062C00081B200000400004081B2000004000040E0
1582:1062D00081B200000400004081B2000004000040D0
1583:1062E00081B200000400004081B2000004000040C0
1584:1062F00081B200000400004081B2000004000040B0
1585:1063000081B200000400004081B20000040000409F
1586:1063100081B200000400004081B20000040000408F
1587:1063200081B200000400004081B20000040000407F
1588:1063300081B200000400004081B20000040000406F
1589:1063400081B200000400004081B20000040000405F
1590:1063500081B200000400004081B20000040000404F
1591:1063600081B200000400004081B20000040000403F
1592:1063700081B200000400004081B20000040000402F
1593:1063800081B200000400004081B20000040000401F
1594:1063900081B200000400004081B20000040000400F
1595:1063A00081B200000400004081B2000004000040FF
1596:1063B00081B200000400004081B2000004000040EF
1597:1063C00081B200000400004081B2000004000040DF
1598:1063D00081B200000400004081B2000004000040CF
1599:1063E00081B200000400004081B2000004000040BF
1600:1063F00081B200000400004081B2000004000040AF
1601:1064000081B200000400004081B20000040000409E
1602:1064100081B200000400004081B20000040000408E
1603:1064200081B200000400004081B20000040000407E
1604:1064300081B200000400004081B20000040000406E
1605:1064400081B200000400004081B20000040000405E
1606:1064500081B200000400004081B20000040000404E
1607:1064600081B200000400004081B20000040000403E
1608:1064700081B200000400004081B20000040000402E
1609:1064800081B200000400004081B20000040000401E
1610:1064900081B200000400004081B20000040000400E
1611:1064A00081B200000400004081B2000004000040FE
1612:1064B00081B200000400004081B2000004000040EE
1613:1064C00081B200000400004081B2000004000040DE
1614:1064D00081B200000400004081B2000004000040CE
1615:1064E00081B200000400004081B2000004000040BE
1616:1064F00081B200000400004081B2000004000040AE
1617:1065000081B200000400004081B20000040000409D
1618:1065100081B200000400004081B20000040000408D
1619:1065200081B200000400004081B20000040000407D
1620:1065300081B200000400004081B20000040000406D
1621:1065400081B200000400004081B20000040000405D
1622:1065500081B200000400004081B20000040000404D
1623:1065600081B200000400004081B20000040000403D
1624:1065700081B200000400004081B20000040000402D
1625:1065800081B200000400004081B20000040000401D
1626:1065900081B200000400004081B20000040000400D
1627:1065A00081B200000400004081B2000004000040FD
1628:1065B00081B200000400004081B2000004000040ED
1629:1065C00081B200000400004081B2000004000040DD
1630:1065D00081B200000400004081B2000004000040CD
1631:1065E00081B200000400004081B2000004000040BD
1632:1065F00081B200000400004081B2000004000040AD
1633:1066000081B200000400004081B20000040000409C
1634:1066100081B200000400004081B20000040000408C
1635:1066200081B200000400004081B20000040000407C
1636:1066300081B200000400004081B20000040000406C
1637:1066400081B200000400004081B20000040000405C
1638:1066500081B200000400004081B20000040000404C
1639:1066600081B200000400004081B20000040000403C
1640:1066700081B200000400004081B20000040000402C
1641:1066800081B200000400004081B20000040000401C
1642:1066900081B200000400004081B20000040000400C
1643:1066A00081B200000400004081B2000004000040FC
1644:1066B00081B200000400004081B2000004000040EC
1645:1066C00081B200000400004081B2000004000040DC
1646:1066D00081B200000400004081B2000004000040CC
1647:1066E00081B200000400004081B2000004000040BC
1648:1066F00081B200000400004081B2000004000040AC
1649:1067000081B200000400004081B20000040000409B
1650:1067100081B200000400004081B20000040000408B
1651:1067200081B200000400004081B20000040000407B
1652:1067300081B200000400004081B20000040000406B
1653:1067400081B200000400004081B20000040000405B
1654:1067500081B200000400004081B20000040000404B
1655:1067600081B200000400004081B20000040000403B
1656:1067700081B200000400004081B20000040000402B
1657:1067800081B200000400004081B20000040000401B
1658:1067900081B200000400004081B20000040000400B
1659:1067A00081B200000400004081B2000004000040FB
1660:1067B00081B200000400004081B2000004000040EB
1661:1067C00081B200000400004081B2000004000040DB
1662:1067D00081B200000400004081B2000004000040CB
1663:1067E00081B200000400004081B2000004000040BB
1664:1067F00081B200000400004081B2000004000040AB
1665:1068000081B200000400004081B20000040000409A
1666:1068100081B200000400004081B20000040000408A
1667:1068200081B200000400004081B20000040000407A
1668:1068300081B200000400004081B20000040000406A
1669:1068400081B200000400004081B20000040000405A
1670:1068500081B200000400004081B20000040000404A
1671:1068600081B200000400004081B20000040000403A
1672:1068700081B200000400004081B20000040000402A
1673:1068800081B200000400004081B20000040000401A
1674:1068900081B200000400004081B20000040000400A
1675:1068A00081B200000400004081B2000004000040FA
1676:1068B00081B200000400004081B2000004000040EA
1677:1068C00081B200000400004081B2000004000040DA
1678:1068D00081B200000400004081B2000004000040CA
1679:1068E00081B200000400004081B2000004000040BA
1680:1068F00081B200000400004081B2000004000040AA
1681:1069000081B200000400004081B200000400004099
1682:1069100081B200000400004081B200000400004089
1683:1069200081B200000400004081B200000400004079
1684:1069300081B200000400004081B200000400004069
1685:1069400081B200000400004081B200000400004059
1686:1069500081B200000400004081B200000400004049
1687:1069600081B200000400004081B200000400004039
1688:1069700081B200000400004081B200000400004029
1689:1069800081B200000400004081B200000400004019
1690:1069900081B200000400004081B200000400004009
1691:1069A00081B200000400004081B2000004000040F9
1692:1069B00081B200000400004081B2000004000040E9
1693:1069C00081B200000400004081B2000004000040D9
1694:1069D00081B200000400004081B2000004000040C9
1695:1069E00081B200000400004081B2000004000040B9
1696:1069F00081B200000400004081B2000004000040A9
1697:106A000081B200000400004081B200000400004098
1698:106A100081B200000400004081B200000400004088
1699:106A200081B200000400004081B200000400004078
1700:106A300081B200000400004081B200000400004068
1701:106A400081B200000400004081B200000400004058
1702:106A500081B200000400004081B200000400004048
1703:106A600081B200000400004081B200000400004038
1704:106A700081B200000400004081B200000400004028
1705:106A800081B200000400004081B200000400004018
1706:106A900081B200000400004081B200000400004008
1707:106AA00081B200000400004081B2000004000040F8
1708:106AB00081B200000400004081B2000004000040E8
1709:106AC00081B200000400004081B2000004000040D8
1710:106AD00081B200000400004081B2000004000040C8
1711:106AE00081B200000400004081B2000004000040B8
1712:106AF00081B200000400004081B2000004000040A8
1713:106B000081B200000400004081B200000400004097
1714:106B100081B200000400004081B200000400004087
1715:106B200081B200000400004081B200000400004077
1716:106B300081B200000400004081B200000400004067
1717:106B400081B200000400004081B200000400004057
1718:106B500081B200000400004081B200000400004047
1719:106B600081B200000400004081B200000400004037
1720:106B700081B200000400004081B200000400004027
1721:106B800081B200000400004081B200000400004017
1722:106B900081B200000400004081B200000400004007
1723:106BA00081B200000400004081B2000004000040F7
1724:106BB00081B200000400004081B2000004000040E7
1725:106BC00081B200000400004081B2000004000040D7
1726:106BD00081B200000400004081B2000004000040C7
1727:106BE00081B200000400004081B2000004000040B7
1728:106BF00081B200000400004081B2000004000040A7
1729:106C000081B200000400004081B200000400004096
1730:106C100081B200000400004081B200000400004086
1731:106C200081B200000400004081B200000400004076
1732:106C300081B200000400004081B200000400004066
1733:106C400081B200000400004081B200000400004056
1734:106C500081B200000400004081B200000400004046
1735:106C600081B200000400004081B200000400004036
1736:106C700081B200000400004081B200000400004026
1737:106C800081B200000400004081B200000400004016
1738:106C900081B200000400004081B200000400004006
1739:106CA00081B200000400004081B2000004000040F6
1740:106CB00081B200000400004081B2000004000040E6
1741:106CC00081B200000400004081B2000004000040D6
1742:106CD00081B200000400004081B2000004000040C6
1743:106CE00081B200000400004081B2000004000040B6
1744:106CF00081B200000400004081B2000004000040A6
1745:106D000081B200000400004081B200000400004095
1746:106D100081B200000400004081B200000400004085
1747:106D200081B200000400004081B200000400004075
1748:106D300081B200000400004081B200000400004065
1749:106D400081B200000400004081B200000400004055
1750:106D500081B200000400004081B200000400004045
1751:106D600081B200000400004081B200000400004035
1752:106D700081B200000400004081B200000400004025
1753:106D800081B200000400004081B200000400004015
1754:106D900081B200000400004081B200000400004005
1755:106DA00081B200000400004081B2000004000040F5
1756:106DB00081B200000400004081B2000004000040E5
1757:106DC00081B200000400004081B2000004000040D5
1758:106DD00081B200000400004081B2000004000040C5
1759:106DE00081B200000400004081B2000004000040B5
1760:106DF00081B200000400004081B2000004000040A5
1761:106E000081B200000400004081B200000400004094
1762:106E100081B200000400004081B200000400004084
1763:106E200081B200000400004081B200000400004074
1764:106E300081B200000400004081B200000400004064
1765:106E400081B200000400004081B200000400004054
1766:106E500081B200000400004081B200000400004044
1767:106E600081B200000400004081B200000400004034
1768:106E700081B200000400004081B200000400004024
1769:106E800081B200000400004081B200000400004014
1770:106E900081B200000400004081B200000400004004
1771:106EA00081B200000400004081B2000004000040F4
1772:106EB00081B200000400004081B2000004000040E4
1773:106EC00081B200000400004081B2000004000040D4
1774:106ED00081B200000400004081B2000004000040C4
1775:106EE00081B200000400004081B2000004000040B4
1776:106EF00081B200000400004081B2000004000040A4
1777:106F000081B200000400004081B200000400004093
1778:106F100081B200000400004081B200000400004083
1779:106F200081B200000400004081B200000400004073
1780:106F300081B200000400004081B200000400004063
1781:106F400081B200000400004081B200000400004053
1782:106F500081B200000400004081B200000400004043
1783:106F600081B200000400004081B200000400004033
1784:106F700081B200000400004081B200000400004023
1785:106F800081B200000400004081B200000400004013
1786:106F900081B200000400004081B200000400004003
1787:106FA00081B200000400004081B2000004000040F3
1788:106FB00081B200000400004081B2000004000040E3
1789:106FC00081B200000400004081B2000004000040D3
1790:106FD00081B200000400004081B2000004000040C3
1791:106FE00081B200000400004081B2000004000040B3
1792:106FF00081B200000400004081B2000004000040A3
1793:1070000081B200000400004081B200000400004092
1794:1070100081B200000400004081B200000400004082
1795:1070200081B200000400004081B200000400004072
1796:1070300081B200000400004081B200000400004062
1797:1070400081B200000400004081B200000400004052
1798:1070500081B200000400004081B200000400004042
1799:1070600081B200000400004081B200000400004032
1800:1070700081B200000400004081B200000400004022
1801:1070800081B200000400004081B200000400004012
1802:1070900081B200000400004081B200000400004002
1803:1070A00081B200000400004081B2000004000040F2
1804:1070B00081B200000400004081B2000004000040E2
1805:1070C00081B200000400004081B2000004000040D2
1806:1070D00081B200000400004081B2000004000040C2
1807:1070E00081B200000400004081B2000004000040B2
1808:1070F00081B200000400004081B2000004000040A2
1809:1071000081B200000400004081B200000400004091
1810:1071100081B200000400004081B200000400004081
1811:1071200081B200000400004081B200000400004071
1812:1071300081B200000400004081B200000400004061
1813:1071400081B200000400004081B200000400004051
1814:1071500081B200000400004081B200000400004041
1815:1071600081B200000400004081B200000400004031
1816:1071700081B200000400004081B200000400004021
1817:1071800081B200000400004081B200000400004011
1818:1071900081B200000400004081B200000400004001
1819:1071A00081B200000400004081B2000004000040F1
1820:1071B00081B200000400004081B2000004000040E1
1821:1071C00081B200000400004081B2000004000040D1
1822:1071D00081B200000400004081B2000004000040C1
1823:1071E00081B200000400004081B2000004000040B1
1824:1071F00081B200000400004081B2000004000040A1
1825:1072000081B200000400004081B200000400004090
1826:1072100081B200000400004081B200000400004080
1827:1072200081B200000400004081B200000400004070
1828:1072300081B200000400004081B200000400004060
1829:1072400081B200000400004081B200000400004050
1830:1072500081B200000400004081B200000400004040
1831:1072600081B200000400004081B200000400004030
1832:1072700081B200000400004081B200000400004020
1833:1072800081B200000400004081B200000400004010
1834:1072900081B200000400004081B200000400004000
1835:1072A00081B200000400004081B2000004000040F0
1836:1072B00081B200000400004081B2000004000040E0
1837:1072C00081B200000400004081B2000004000040D0
1838:1072D00081B200000400004081B2000004000040C0
1839:1072E00081B200000400004081B2000004000040B0
1840:1072F00081B200000400004081B2000004000040A0
1841:1073000081B200000400004081B20000040000408F
1842:1073100081B200000400004081B20000040000407F
1843:1073200081B200000400004081B20000040000406F
1844:1073300081B200000400004081B20000040000405F
1845:1073400081B200000400004081B20000040000404F
1846:1073500081B200000400004081B20000040000403F
1847:1073600081B200000400004081B20000040000402F
1848:1073700081B200000400004081B20000040000401F
1849:1073800081B200000400004081B20000040000400F
1850:1073900081B200000400004081B2000004000040FF
1851:1073A00081B200000400004081B2000004000040EF
1852:1073B00081B200000400004081B2000004000040DF
1853:1073C00081B200000400004081B2000004000040CF
1854:1073D00081B200000400004081B2000004000040BF
1855:1073E00081B200000400004081B2000004000040AF
1856:1073F00081B200000400004081B20000040000409F
1857:1074000081B200000400004081B20000040000408E
1858:1074100081B200000400004081B20000040000407E
1859:1074200081B200000400004081B20000040000406E
1860:1074300081B200000400004081B20000040000405E
1861:1074400081B200000400004081B20000040000404E
1862:1074500081B200000400004081B20000040000403E
1863:1074600081B200000400004081B20000040000402E
1864:1074700081B200000400004081B20000040000401E
1865:1074800081B200000400004081B20000040000400E
1866:1074900081B200000400004081B2000004000040FE
1867:1074A00081B200000400004081B2000004000040EE
1868:1074B00081B200000400004081B2000004000040DE
1869:1074C00081B200000400004081B2000004000040CE
1870:1074D00081B200000400004081B2000004000040BE
1871:1074E00081B200000400004081B2000004000040AE
1872:1074F00081B200000400004081B20000040000409E
1873:1075000081B200000400004081B20000040000408D
1874:1075100081B200000400004081B20000040000407D
1875:1075200081B200000400004081B20000040000406D
1876:1075300081B200000400004081B20000040000405D
1877:1075400081B200000400004081B20000040000404D
1878:1075500081B200000400004081B20000040000403D
1879:1075600081B200000400004081B20000040000402D
1880:1075700081B200000400004081B20000040000401D
1881:1075800081B200000400004081B20000040000400D
1882:1075900081B200000400004081B2000004000040FD
1883:1075A00081B200000400004081B2000004000040ED
1884:1075B00081B200000400004081B2000004000040DD
1885:1075C00081B200000400004081B2000004000040CD
1886:1075D00081B200000400004081B2000004000040BD
1887:1075E00081B200000400004081B2000004000040AD
1888:1075F00081B200000400004081B20000040000409D
1889:1076000081B200000400004081B20000040000408C
1890:1076100081B200000400004081B20000040000407C
1891:1076200081B200000400004081B20000040000406C
1892:1076300081B200000400004081B20000040000405C
1893:1076400081B200000400004081B20000040000404C
1894:1076500081B200000400004081B20000040000403C
1895:1076600081B200000400004081B20000040000402C
1896:1076700081B200000400004081B20000040000401C
1897:1076800081B200000400004081B20000040000400C
1898:1076900081B200000400004081B2000004000040FC
1899:1076A00081B200000400004081B2000004000040EC
1900:1076B00081B200000400004081B2000004000040DC
1901:1076C00081B200000400004081B2000004000040CC
1902:1076D00081B200000400004081B2000004000040BC
1903:1076E00081B200000400004081B2000004000040AC
1904:1076F00081B200000400004081B20000040000409C
1905:1077000081B200000400004081B20000040000408B
1906:1077100081B200000400004081B20000040000407B
1907:1077200081B200000400004081B20000040000406B
1908:1077300081B200000400004081B20000040000405B
1909:1077400081B200000400004081B20000040000404B
1910:1077500081B200000400004081B20000040000403B
1911:1077600081B200000400004081B20000040000402B
1912:1077700081B200000400004081B20000040000401B
1913:1077800081B200000400004081B20000040000400B
1914:1077900081B200000400004081B2000004000040FB
1915:1077A00081B200000400004081B2000004000040EB
1916:1077B00081B200000400004081B2000004000040DB
1917:1077C00081B200000400004081B2000004000040CB
1918:1077D00081B200000400004081B2000004000040BB
1919:1077E00081B200000400004081B2000004000040AB
1920:1077F00081B200000400004081B20000040000409B
1921:1078000081B200000400004081B20000040000408A
1922:1078100081B200000400004081B20000040000407A
1923:1078200081B200000400004081B20000040000406A
1924:1078300081B200000400004081B20000040000405A
1925:1078400081B200000400004081B20000040000404A
1926:1078500081B200000400004081B20000040000403A
1927:1078600081B200000400004081B20000040000402A
1928:1078700081B200000400004081B20000040000401A
1929:1078800081B200000400004081B20000040000400A
1930:1078900081B200000400004081B2000004000040FA
1931:1078A00081B200000400004081B2000004000040EA
1932:1078B00081B200000400004081B2000004000040DA
1933:1078C00081B200000400004081B2000004000040CA
1934:1078D00081B200000400004081B2000004000040BA
1935:1078E00081B200000400004081B2000004000040AA
1936:1078F00081B200000400004081B20000040000409A
1937:1079000081B200000400004081B200000400004089
1938:1079100081B200000400004081B200000400004079
1939:1079200081B200000400004081B200000400004069
1940:1079300081B200000400004081B200000400004059
1941:1079400081B200000400004081B200000400004049
1942:1079500081B200000400004081B200000400004039
1943:1079600081B200000400004081B200000400004029
1944:1079700081B200000400004081B200000400004019
1945:1079800081B200000400004081B200000400004009
1946:1079900081B200000400004081B2000004000040F9
1947:1079A00081B200000400004081B2000004000040E9
1948:1079B00081B200000400004081B2000004000040D9
1949:1079C00081B200000400004081B2000004000040C9
1950:1079D00081B200000400004081B2000004000040B9
1951:1079E00081B200000400004081B2000004000040A9
1952:1079F00081B200000400004081B200000400004099
1953:107A000081B200000400004081B200000400004088
1954:107A100081B200000400004081B200000400004078
1955:107A200081B200000400004081B200000400004068
1956:107A300081B200000400004081B200000400004058
1957:107A400081B200000400004081B200000400004048
1958:107A500081B200000400004081B200000400004038
1959:107A600081B200000400004081B200000400004028
1960:107A700081B200000400004081B200000400004018
1961:107A800081B200000400004081B200000400004008
1962:107A900081B200000400004081B2000004000040F8
1963:107AA00081B200000400004081B2000004000040E8
1964:107AB00081B200000400004081B2000004000040D8
1965:107AC00081B200000400004081B2000004000040C8
1966:107AD00081B200000400004081B2000004000040B8
1967:107AE00081B200000400004081B2000004000040A8
1968:107AF00081B200000400004081B200000400004098
1969:107B000081B200000400004081B200000400004087
1970:107B100081B200000400004081B200000400004077
1971:107B200081B200000400004081B200000400004067
1972:107B300081B200000400004081B200000400004057
1973:107B400081B200000400004081B200000400004047
1974:107B500081B200000400004081B200000400004037
1975:107B600081B200000400004081B200000400004027
1976:107B700081B200000400004081B200000400004017
1977:107B800081B200000400004081B200000400004007
1978:107B900081B200000400004081B2000004000040F7
1979:107BA00081B200000400004081B2000004000040E7
1980:107BB00081B200000400004081B2000004000040D7
1981:107BC00081B200000400004081B2000004000040C7
1982:107BD00081B200000400004081B2000004000040B7
1983:107BE00081B200000400004081B2000004000040A7
1984:107BF00081B200000400004081B200000400004097
1985:107C000081B200000400004081B200000400004086
1986:107C100081B200000400004081B200000400004076
1987:107C200081B200000400004081B200000400004066
1988:107C300081B200000400004081B200000400004056
1989:107C400081B200000400004081B200000400004046
1990:107C500081B200000400004081B200000400004036
1991:107C600081B200000400004081B200000400004026
1992:107C700081B200000400004081B200000400004016
1993:107C800081B200000400004081B200000400004006
1994:107C900081B200000400004081B2000004000040F6
1995:107CA00081B200000400004081B2000004000040E6
1996:107CB00081B200000400004081B2000004000040D6
1997:107CC00081B200000400004081B2000004000040C6
1998:107CD00081B200000400004081B2000004000040B6
1999:107CE00081B200000400004081B2000004000040A6
2000:107CF00081B200000400004081B200000400004096
2001:107D000081B200000400004081B200000400004085
2002:107D100081B200000400004081B200000400004075
2003:107D200081B200000400004081B200000400004065
2004:107D300081B200000400004081B200000400004055
2005:107D400081B200000400004081B200000400004045
2006:107D500081B200000400004081B200000400004035
2007:107D600081B200000400004081B200000400004025
2008:107D700081B200000400004081B200000400004015
2009:107D800081B200000400004081B200000400004005
2010:107D900081B200000400004081B2000004000040F5
2011:107DA00081B200000400004081B2000004000040E5
2012:107DB00081B200000400004081B2000004000040D5
2013:107DC00081B200000400004081B2000004000040C5
2014:107DD00081B200000400004081B2000004000040B5
2015:107DE00081B200000400004081B2000004000040A5
2016:107DF00081B200000400004081B200000400004095
2017:107E000081B200000400004081B200000400004084
2018:107E100081B200000400004081B200000400004074
2019:107E200081B200000400004081B200000400004064
2020:107E300081B200000400004081B200000400004054
2021:107E400081B200000400004081B200000400004044
2022:107E500081B200000400004081B200000400004034
2023:107E600081B200000400004081B200000400004024
2024:107E700081B200000400004081B200000400004014
2025:107E800081B200000400004081B200000400004004
2026:107E900081B200000400004081B2000004000040F4
2027:107EA00081B200000400004081B2000004000040E4
2028:107EB00081B200000400004081B2000004000040D4
2029:107EC00081B200000400004081B2000004000040C4
2030:107ED00081B200000400004081B2000004000040B4
2031:107EE00081B200000400004081B2000004000040A4
2032:107EF00081B200000400004081B200000400004094
2033:107F000081B200000400004081B200000400004083
2034:107F100081B200000400004081B200000400004073
2035:107F200081B200000400004081B200000400004063
2036:107F300081B200000400004081B200000400004053
2037:107F400081B200000400004081B200000400004043
2038:107F500081B200000400004081B200000400004033
2039:107F600081B200000400004081B200000400004023
2040:107F700081B200000400004081B200000400004013
2041:107F800081B200000400004081B200000400004003
2042:107F900081B200000400004081B2000004000040F3
2043:107FA00081B200000400004081B2000004000040E3
2044:107FB00081B200000400004081B2000004000040D3
2045:107FC00081B200000400004081B20000F70F00BC45
2046:107FD00080B200000380004081B2000003800040B6
2047:107FE00081B200000380004081B2000003800040A5
2048:107FF00081B200000380004081B200000380004095
2049:1080000081B200000380004081B200000380004084
2050:1080100081B200003180004081B200003480004015
2051:1080200081B200003580004081B2000004000040B1
2052:1080300081B200001B80818080320000EC89A24068
2053:10804000916F00000000004C90B301005C952EA2DF
2054:1080500080B00100FF000080F489010090952AC8DB
2055:10806000E5B10100000000A1F0B1010000000040F6
2056:10807000F0B10100000000A4F0B10100000000D048
2057:10808000F0B10100000000D1F0B10100000000D209
2058:10809000F0B101000000004CF0B10100000000D47C
2059:1080A000F0B10100000000D3F0B10100000000EECB
2060:1080B000F0B101000000004EF0B1010000000040EE
2061:1080C00044B1010018801181983000000000514037
2062:1080D00081B201001A8011829830000000005240E5
2063:1080E00081B20100EC890048FD930000B603004016
2064:1080F000A19901002380A242FD7F00002080008022
2065:1081000080320000228011818230000022805140A4
2066:1081100081B2000022801182823000002280524011
2067:1081200081B200002C800048FD9300002780008071
2068:10813000803200002680A253077C000000005153CB
2069:10814000079001002A800052079000002980A25267
2070:10815000077C00000000525207900100000000530D
2071:108160000790010000000048FD9301000000004559
2072:10817000F39301005C952EA252B30100FF00008032
2073:10818000F48901000000004CE4B10100000000A9E6
2074:1081900045B101003080004C80B200000000454035
2075:1081A00081B201000000554081B201001B840540EE
2076:1081B00049B100001B84054049B1000000000540A2
2077:1081C00049B10100E1800040813201000000004B14
2078:1081D000DEB20100770000404B9901000000004032
2079:1081E000FD93010000000048FD83010002000040F3
2080:1081F0009B9B0100000000A59CB30100F699004084
2081:108200008132010058952044E0B1010000C000A671
2082:1082100036B10100D014004047990100050000402C
2083:10822000F599010000380040F59901000006004072
2084:10823000F599010000000040F59901000518004083
2085:10824000F599010002090040F59901000400004081
2086:10825000F599010050030040813201007B0300408A
2087:1082600081320100E083004081320100108400402F
2088:108270008132010008840040813201006095204075
2089:10828000E1B1010070952040E1B10100000000491A
2090:10829000DD9101000000004091B3010000000040AA
2091:1082A00085B301005C952040E1B101001A820040D5
2092:1082B0008132010071830040813201000200009789
2093:1082C00080980100000000402EB101000200004033
2094:1082D0002EDD01009001004093980100290100402B
2095:1082E000813201005C810040AF3301007999004088
2096:1082F000813201000000454081B20100000055407C
2097:1083000081B201004984004081B2000004000040B5
2098:1083100081B200000400004081B20000040000406F
2099:1083200081B200000400004081B20000040000405F
2100:1083300081B200000400004081B20000040000404F
2101:1083400081B200000400004081B20000040000403F
2102:1083500081B200007701004181C00000718051406E
2103:1083600081B200007280524081B20000738055409B
2104:1083700081B200007480564081B2000055019181A5
2105:10838000803000005A01454081B2000055019182C1
2106:10839000803000005A01464081B200005A01004876
2107:1083A000FD9300005A010048FD9300005A01004966
2108:1083B000FD8300005A01004AFD83000000000040D8
2109:1083C00049B10100AE0300CBA3C9010000000020A9
2110:1083D00046B10100000000D2F1B10100000000D35D
2111:1083E000F1B1010000000042F0B1010000000045C1
2112:1083F00061B101002000002062DD01000000A8D072
2113:10840000E1B100007C80004081B20000000000A8C3
2114:1084100098B00100048000408BB30000B10300401D
2115:10842000A19901008480A241976F000000000045DF
2116:10843000A1C101000000000080B001000000A20402
2117:108440008094000080153F4297E301000000004047
2118:1084500049B10100000060030294010000000040E7
2119:1084600007B00100040000CB99CB0100000000CC54
2120:10847000F38301008E80A241976F0000000000CBC3
2121:10848000F3930100AE0300CBA3C90100000000205C
2122:1084900044B1010000000044F1B1010000000000FF
2123:1084A000F0B1010000000004F0B10100000000A1E3
2124:1084B000E0B10100050000406199010020000020AA
2125:1084C00062DD01009580A84081320000C6020020D4
2126:1084D000423101000000A241056C0100000080CB88
2127:1084E000DB910100000019418BB3010060000040E6
2128:1084F000619901009B80A8B18C33000060000040AE
2129:10850000619901009D80A8B194330000A38014C636
2130:1085100081320000180000C683F401006A84224FF3
2131:10852000830400007F80004081B20000FF0100C68C
2132:1085300081880100000000C697A301007F801F5CB6
2133:10854000975300009E831DC68132000000002F4318
2134:1085500081F00100A980004010C9000005810040A1
2135:1085600081B200003681004081B20000DA8100CA89
2136:1085700063B300002D81004081B200001481004DE2
2137:1085800083B000001E81004E61B100000D810040EB
2138:1085900085B000001481004C83B00000F0800040E2
2139:1085A00085B000009181004049B100003D8100404C
2140:1085B000C1B100008D81004081B200000D810040FA
2141:1085C00085B00000DD81004049B100006A8400CA26
2142:1085D0009BB3000046810040C1B100004E810040C5
2143:1085E000C1B1000055810040C1B10000568100407A
2144:1085F000C1B1000057810040C1B100005881004066
2145:10860000C1B100005981004081B000005981004192
2146:1086100081B00000CE81004081B20000DD8300BB4C
2147:10862000ABB30000DB8100CACFB30000D3800040B1
2148:1086300049B10000DF80004081B20000DC810040D1
2149:1086400081B200006A84004081B20000DA800040FC
2150:1086500081B200006A8400CA77B300001581004D22
2151:1086600083B000001C81004E61B100000D8100BB91
2152:1086700085B000001581004C83B000000D8100BB67
2153:1086800085B00000F08000BB85B00000E2800040B3
2154:1086900081B200006A8400CA4DB3000064820040C9
2155:1086A00049B100008F82004049B10000C8142EBBC0
2156:1086B00085B00100000000EE82B001000000004122
2157:1086C000E0B10100FF7F00A2A08B01000000004488
2158:1086D000A5B30100758000CAA733010002810040E4
2159:1086E00081B200004E01004D933001004E01004E5A
2160:1086F000933001004E01004C93300100088400408B
2161:10870000813201006A84004081B20000549500402B
2162:10871000459901006A8400CAE5B10000000080406C
2163:1087200097B00100E88022428F6F0000EA8022416A
2164:108730008F6F0000EC801ECA81320000EE801FCADD
2165:1087400081320000000000CAC9B101006A84004201
2166:108750008FB30000000000CACDB101006A8400415F
2167:108760008FB30000000000CACFB101006A8400404E
2168:108770008FB30000008100A6C6B101006A840040EA
2169:1087800081B20000008000A6C6B101006A840040EA
2170:108790008FB30000781800404999010010002F9C09
2171:1087A00089B00100078100403933010018002F9B78
2172:1087B00089B00100078100403733010000002F9A83
2173:1087C00089B00100078100403533010008002F996E
2174:1087D00089B001000781004033330100008000AE02
2175:1087E00047C9010080000040F1990100000000CA63
2176:1087F000F1B1010000000042F0B10100401800405A
2177:10880000E19901000000004561B10100200000AEC7
2178:1088100063DD01000281284081320000FF800040BA
2179:1088200081B2000002814240813200000000005C01
2180:10883000699301006A841A449393000005814240C1
2181:108840008132000004810058699300000000004458
2182:10885000F0D101000000A44081B200000C81A240D0
2183:10886000E16D00000000004445D10100000080409F
2184:10887000E1B1010000008041E1D101000D81375CD0
2185:10888000613100000000004262B101001181284006
2186:10889000813200000E81004081B20000000000CA59
2187:1088A00063B101001181A840813200006A84174041
2188:1088B00081B200001681004081B00000168100BB2B
2189:1088C00081B000000000004160B1010000000040E4
2190:1088D00062B101001781A84081320000000000CA87
2191:1088E00063B101006A842840813200001981004090
2192:1088F00081B2000050950040479901001F8100BBE4
2193:1089000087B0000050952F4087B0010021812240A0
2194:10891000957F00006A8460409583000002002DF07E
2195:1089200084B0010022813640813200000000004204
2196:1089300062B101002381A8408132000000000043A1
2197:1089400062B101002581A84081320000000000CA08
2198:1089500063B101002781A840813200000000164069
2199:1089600081B201006A84224143510000000800CA1C
2200:1089700095CB01002281004185C000002F81A242D9
2201:10898000676F00000000004167B301002F81424083
2202:10899000813200000000004065B30100000000408B
2203:1089A0009383010000001ACA699701006A84264077
2204:1089B0008132000034814240813200006A841A44CE
2205:1089C000939300006A842043956F00006A8480CAF4
2206:1089D000673300006A842240656F00006A84006F7C
2207:1089E000DB910000C100004081320100358022404F
2208:1089F000803200006A84004081B200000000005F05
2209:108A0000959301004281A244216F00000000005FA5
2210:108A1000958301000000005E95930100000000575F
2211:108A200095930100000000CAC3B101004581225B9B
2212:108A3000957F00000000004BFD9301006A84004018
2213:108A400081B2000049812240AF6F00001BF500CACF
2214:108A5000959B01004A81004081B200001BFD00CAC5
2215:108A6000959B0100000000CA7FB30100260100CAE7
2216:108A7000C53101000000005F958301006A8400CACF
2217:108A8000C5B10000DF6F00CA959B010000000055D2
2218:108A900095930100000000CAC7B101006A84225FFB
2219:108AA000957F000026010040813201000000005F38
2220:108AB000958301006A8400CAC7B100006A8400CAB5
2221:108AC000C9B100006A8400CACBB100006A8400CA40
2222:108AD000CDB100006A8400CACFB1000000002E4270
2223:108AE00081E001009814004048C901006A8400CA6E
2224:108AF000E1B100000000004009B10100200000A623
2225:108B000082B001005E81A25E0B7D0000008000410A
2226:108B1000089901006081A25E0B7D0000208000A604
2227:108B200008B1010062819F85823000006181A24FFF
2228:108B30000B7D00000000004121B30100028000A66F
2229:108B400082B00100C9810040813201001000004163
2230:108B500084E40100038000A682B00100C9810040C6
2231:108B600081320100F0FF00418688010000000043CF
2232:108B7000849401000F0000A686B0010010C40043D9
2233:108B8000869801007581A243846C000000000043B8
2234:108B900021B30100200000A682B001001C000041AA
2235:108BA00082DC01007281A25E0B7D000004000041A6
2236:108BB000089901007E81004081B20000410100A6B9
2237:108BC00086B00100500C0043869801007A81A243D0
2238:108BD000846C00000000004121B301007E81004050
2239:108BE00081B20000410100A686B00100600C004384
2240:108BF000869801007E81A243846C00000000004240
2241:108C000021B30100200000A682B001007F81A25E96
2242:108C10000B7D000040130041089901008781224329
2243:108C2000216F0000200000A682B001001200004168
2244:108C300082DC01008481A25E0B7D00000004004103
2245:108C4000089901008C81004081B20000200000A63C
2246:108C500082B001001900004182DC01008981A25E1E
2247:108C60000B7D000000A00041089901008C810040AC
2248:108C700081B200000000804081B20100200000A607
2249:108C800080B00100000000CA819401008F81A25EC3
2250:108C90000B7D00006A84004008B10000C8142EBBA0
2251:108CA00085B001009281A25E0B7D000000000040B3
2252:108CB00087B00100A1812243216F0000B0812244CE
2253:108CC000216F0000118000A682B00100C981004020
2254:108CD00081320100B881224A837C000000000040FC
2255:108CE000879001009C81224D837C000000000041A0
2256:108CF000879001009E81224F837C0000000000438A
2257:108D000087900100A081224E837C00000000004279
2258:108D100087900100B881004081B20000018000A668
2259:108D200082B00100C981004081320100018000A6AB
2260:108D300082B00100C981004081320100B881224225
2261:108D4000837C000000000040879001001C8000A68A
2262:108D500082B00100C981004081320100AB8122450F
2263:108D6000837C00000000004187900100AD81224417
2264:108D7000837C00000000004387900100AF81224304
2265:108D8000837C00000000004287900100B881004011
2266:108D900081B20000018000A682B00100C9810040BC
2267:108DA00081320100018000A682B00100C98100402B
2268:108DB00081320100B8812242837C00000000004023
2269:108DC00087900100000000438790010000000041EF
2270:108DD00087900100008000A682B00100C981004098
2271:108DE00081320100BC81224B837C000000000040E6
2272:108DF0008780010000000043E0B101000000004056
2273:108E0000AFB30100C5812240877C0000C581A2412B
2274:108E1000877C000000000041AEB30100000000406C
2275:108E200081B30100C4812242877C0000C581000B10
2276:108E30007DB300000000000F7DB30100FF7F00A2A2
2277:108E4000A08B010000000044A5B30100758000CA9A
2278:108E5000A73301000281004081B2000020000041E0
2279:108E600082DC0100CA81A25E0B7D0000000000418F
2280:108E700008B10100CC819F85823000000000804055
2281:108E800081B20100D18114F781300000D181A24963
2282:108E9000FD7F000000000048FD930100D48115F81B
2283:108EA00081140000D481A24AFD7F00000000004828
2284:108EB000FD930100D681A2C881320000400000402D
2285:108EC00080DC01000010004080DC01000000004058
2286:108ED000EFB30100D8814240F1330000048100402B
2287:108EE000689700006A8400BB6BB300006A8400BB13
2288:108EF000B1B300006A84004081B20000CC142E405F
2289:108F000087B00100FF7F00A2A08B0100D8000043C2
2290:108F1000B2330100000068DA89B001007C00004033
2291:108F20008B9801000000005089F001000000004112
2292:108F300089D0010003000044888C01000000004239
2293:108F400087C0010000000041A5B30100D800004324
2294:108F5000B2330100000000DAF1B10100000000426C
2295:108F600087C0010000000041A5C30100F881224430
2296:108F700089500000F88122448B500000E781A25004
2297:108F8000A56F000000000042A5E30100000000CA38
2298:108F9000A7B30100758000BB85300100CC142ED230
2299:108FA00095C30100AE0300CBA3C90100000000205F
2300:108FB00042B101000000005081B00100F581A241E2
2301:108FC00081500000F481A2F280300000E78100406F
2302:108FD000A5B3000000000042A5E30100000000CAA4
2303:108FE000A7B30100758000BB8530010002810040FD
2304:108FF00081B20000D9000041B3730100000080502D
2305:10900000B5F30100D8000041B3F30000000000D91F
2306:10901000B3FB0100003000A6B8B30100F20000402D
2307:1090200081320100250100422D01010000020040B3
2308:1090300083980100EB0000408132010000000050E5
2309:1090400081B001002601004081320100098210DA5E
2310:10905000B56B00000A8200412D8100000000004134
2311:109060002D910100280100408132010025010040BE
2312:109070002D110100000000402D8101000682A24157
2313:1090800081500000260100422D0101002501004011
2314:1090900081320100260100422D110100250100400E
2315:1090A0002D110100158204402D0100002501004012
2316:1090B000813201001182004081B20000280100408D
2317:1090C00081320100250100422D010100F200004023
2318:1090D000B9330100000000422D81010000008041F1
2319:1090E0002D8101000000804081B20100000300409A
2320:1090F000819801000000004018B10100800000408C
2321:109100008398010000190040459901000000424089
2322:1091100081B20100000043FFF1B10100000000FF37
2323:10912000F1B101000000004181C0010000000040D9
2324:1091300018B101001F82A2418350000000160040B8
2325:1091400045990100001900404399010000000047C3
2326:1091500043C101000000004083B00100000000F3A3
2327:1091600080B001000000005B81D0010000000041E0
2328:1091700080D0010000000040F6B101000000005B5B
2329:1091800043C101000000004183C001002982A254B4
2330:10919000836C000000000040F7B1010000000041B6
2331:1091A00083C001003082A206836C00000000804072
2332:1091B00081B201000000800791B00100E180004011
2333:1091C000813201003982A240976C000028000040E3
2334:1091D000B39B01003A82004081B2000028000040A9
2335:1091E000B39B0100FC81004081320100000000DAE5
2336:1091F000F5B10100FC810042B3430100000000DA38
2337:10920000F5B10100FC810042B3430100000000DA27
2338:10921000F5B101004E000040B39B0100FC8100400D
2339:1092200081320100080000DAF7F50100500000402B
2340:1092300091980100000000478FB00100FC810048B8
2341:10924000B2330100000000DAF7B10100080000DAD3
2342:10925000F7F501000000004291C001004582A241E3
2343:109260008F5000000000004145D10100080000407F
2344:10927000B39B0100FC81004081320100000000DA54
2345:10928000FDB101000A000040B39B0100FC810040D9
2346:1092900081320100000000DAFDB101001800004039
2347:1092A000B39B0100FC81004081320100000000DA24
2348:1092B000FDB1010016000040B39B0100FC8100409D
2349:1092C00081320100000000DAFDB10100348200406B
2350:1092D000813201001E000048B2CB0100FC81004039
2351:1092E00081320100000000DA91C001000000004856
2352:1092F000B2CB0100FC8100408132010000006EDA37
2353:109300008FB0010002000048B2CB0100FC81004098
2354:1093100081320100000000DAFDB1010004000048C4
2355:10932000B2CB0100FC81004081320100000080DAF4
2356:10933000FDB101006F822250FD7F00006F82224547
2357:10934000FD7F000040160040459901003582004035
2358:109350004931010008000048B2CB0100FE81004005
2359:10936000813201006D82A2408F6C00007282222047
2360:10937000B56F00006F82004081B20000DB820040C8
2361:109380008132010072822240976C00006F8242405D
2362:10939000813200000000004F6993010004810058F1
2363:1093A000699300005416004047990100000000FE38
2364:1093B000F4B101000000004081B20100000000FE95
2365:1093C000F4B101000000004081B20100000000FE85
2366:1093D000F4B101000000004081B20100000000FE75
2367:1093E000F4B101000000004081B20100000000FE65
2368:1093F000F4B101000000004081B20100000000FE55
2369:10940000F4B101000000004081B20100000000FE44
2370:10941000F4B1010046000040B39B0100FC81004014
2371:1094200081320100080000DAF7F501004800004031
2372:10943000959801000000004497B00100FC81004AAB
2373:10944000B2330100000000DAF7B10100080000DAD1
2374:10945000F7F501000000004295C001008582A2419D
2375:10946000975000002A000040A59B010040160040D4
2376:10947000A19B0100000000CAA7B30100758000BBDA
2377:10948000853001000281004081B20000A7822245A0
2378:10949000FD7F0000E0150040479901001A0000A27E
2379:1094A00080DC010000000050F1B10100F015004027
2380:1094B000F1990100000000CAF1B10100070000406D
2381:1094C00061990100A000004062DD01009682A8BB06
2382:1094D000E13100000000005083B001009982A241F8
2383:1094E000835000009882A2F282300000E1800040A8
2384:1094F000813201009F82A240976C0000280000404A
2385:10950000B39B0100A082004081B20000280000400F
2386:10951000B39B0100F015004043990100FC8100401D
2387:1095200081320100A782A2FAB46F0000FC810042E0
2388:10953000B3430100A782A2FAB46F0000FC8100428D
2389:10954000B3430100AA8222FAB46F0000A78242400E
2390:10955000813200000000004E699301000481005830
2391:109560006993000040160040459901003582004093
2392:1095700049310100F6150040439901005C16004096
2393:109580004599010000006EFA8EB001000000004015
2394:1095900081B20100000000FEF4B1010000000040B3
2395:1095A00081B20100000000FEF4B1010000000040A3
2396:1095B00081B20100000000F0B4B30100B882A24003
2397:1095C0008F6C0000FC152020E1B10100BD8200403D
2398:1095D00081B20000DB82004081320100BD82224066
2399:1095E000976C0000BA824240813200000000004FB8
2400:1095F000699301000481005869930000348200409F
2401:10960000813201001E000048B2CB0100FC81004005
2402:1096100081320100C2822250B56F0000000000506C
2403:1096200091C0010000000048B2CB0100F6150040D7
2404:1096300043990100FF8100F2B433010002000048A9
2405:10964000B2CB0100F815004043990100FF8100F200
2406:10965000B433010004000048B2CB0100FA15004009
2407:1096600043990100FF8100F2B43301000800004873
2408:10967000B2CB0100FC15004043990100000000F04E
2409:1096800094B00100FFFF004AB48B0100FF8100404D
2410:10969000813201000A000048B2CB01001000004AEC
2411:1096A000B4F70100FF8100408132010034820040A4
2412:1096B000813201001E000048B2CB0100FC81004055
2413:1096C00081320100D8822250B56F0000D98200504B
2414:1096D000B5B3000000000040B5B30100FF810040B9
2415:1096E000813201000281004081B20000001600407A
2416:1096F0004799010030310040F599010032330040B4
2417:10970000F599010034350040F599010036370040E5
2418:10971000F599010038390040F599010041420040B7
2419:10972000F599010043440040F59901004546004089
2420:10973000F599010047480040F5990100494A004069
2421:10974000F59901002C0000408398010000000040C2
2422:10975000F7B10100E782A2418350000080162E0677
2423:1097600083B00100360000FBF6A90100EA82A241A5
2424:10977000835000002200004083980100000000FB9D
2425:10978000F6B10100ED82A24183500000620000406A
2426:1097900095980100008300408132010000162D06DB
2427:1097A00083B0010080160040459901005C0000FB79
2428:1097B000F6A90100F382A24183500000000000706E
2429:1097C000F9B1010000000071F9B101000000007260
2430:1097D000F9B1010000000073F9B10100000000744C
2431:1097E000F9B1010054000040959801000083004049
2432:1097F000813201000000007095B00100FF822270EC
2433:10980000B56F00000000804197B00100000080406B
2434:1098100097B00100456700A6E0B201000123007087
2435:10982000E19A0100CDEF00A6E2B2010089AB007120
2436:10983000E39A0100BA9800A6E4B20100FEDC0072CF
2437:10984000E59A0100321000A6E6B2010076540073DA
2438:10985000E79A0100D2C300A6E8B20100F0E100746B
2439:10986000E99A01008016004A44C90100000000077F
2440:1098700081B001000000004A80D0010000000040DB
2441:10988000F7B101000D83A241815000008016004A0B
2442:1098900044C90100FC162A47E7B501000300004A4D
2443:1098A000E8E50100000000408DB0010050030040D9
2444:1098B000A399010080163D468DE001000000005094
2445:1098C00089B00100000000FC40B001000000004130
2446:1098D000A3C101001683A24189500000000000705E
2447:1098E000EBB2010000000071EDB201000000007257
2448:1098F000EFB2010000000073F1B20100000000743B
2449:10990000F3B201000000004083B001000F000041ED
2450:109910008088010050030040A2C901003383A05099
2451:10992000836C00000D00004098C801000000004F4B
2452:10993000998401005003004CA2C9010000000020DE
2453:1099400086B001000800004098C801000000004FE8
2454:10995000998401005003004CA2C9010000000020BE
2455:1099600086A401000200004098C801000000004FDA
2456:10997000998401005003004CA2C90100000000209E
2457:1099800086A4010050030040A2C90100000000436A
2458:1099900040A401000100002088E401000000005FF5
2459:1099A00041F00100000000444094010005000075F2
2460:1099B00089E401001B00007585F4010000000044EB
2461:1099C000849401003D83A353836C00000000007663
2462:1099D00089B0010000000077898401000000007652
2463:1099E0008BB00100000000208BA401000000007873
2464:1099F0008B8401004C8300458894000027000041BF
2465:109A000080CE01004283AA4081320000000000762F
2466:109A100089B001000000007789A401004C83007820
2467:109A200089A400003B00004180CE01003F83AA4092
2468:109A3000813200000000007689B00100000000774C
2469:109A400089840100000000768BB0010000000078DE
2470:109A50008B8401000000004588940100000000771D
2471:109A60008BB00100000000788B8401004C8300451E
2472:109A7000889400000000004484C0010000000079C8
2473:109A800085C001000000002084C001005383A3535F
2474:109A9000836C0000825A00A684C0010099790042BC
2475:109AA00084C801006083004081B2000027000041AB
2476:109AB00080CE01005883AA4081320000D96E00A6F2
2477:109AC00084C00100A1EB004284C801006083004013
2478:109AD00081B200003B00004180CE01005D83AA40BE
2479:109AE000813200001B8F00A684C00100DCBC004254
2480:109AF00084C801006083004081B2000062CA00A6F1
2481:109B000084C00100D6C1004284C8010060830040C7
2482:109B100081B2000000000078F3B20100000000777D
2483:109B2000F1B201001E00007689E401000200007617
2484:109B3000EFF6010000000044EE9601000000007501
2485:109B4000EDB2010000000042EAB201000000004155
2486:109B500083C001004F00004180CE01001F832A40D6
2487:109B60008132000000000075E1C2010000000076B3
2488:109B7000E3C2010000000077E5C2010000000078A8
2489:109B8000E7C2010000000079E9C2010013838141AE
2490:109B90008D4000000000804081B201009D83A24BF7
2491:109BA000B76F00009D83A2412F7D00000000005090
2492:109BB000FD930100401600404599010035820040A8
2493:109BC000493101009C8322408F6C0000080000484E
2494:109BD000B2CB0100FE81004081320100DB820040F7
2495:109BE000813201009C83A240976C00005E16004009
2496:109BF000439901007C1620F6E0B10100000000400E
2497:109C000031B301008083224F8F7C0000000000519F
2498:109C1000FD930100828322408F7C000086830054E4
2499:109C2000FD930000848322428F7C000000000052DC
2500:109C3000FD930100868322418F7C000000000053C9
2501:109C4000FD9301009A832251FD7F00003482004081
2502:109C5000813201000C000048B2CB0100FC810040C1
2503:109C6000813201009583A240B56F00001E000048BC
2504:109C7000B2CB0100FC81004896300100000000DA00
2505:109C800097C001000400004BB2CB0100FC810040F2
2506:109C9000813201000E000048B2CB0100FF8100407C
2507:109CA000813201000C000048B2CB010000000030FE
2508:109CB000B5B30100FF810040813201000E00004871
2509:109CC000B2CB0100FC810040813201009983224027
2510:109CD000B56F00009D830054FD930000000000510B
2511:109CE000FD8301001C0000FE7FD901009D83A6407A
2512:109CF0008132000000000055FD930100000080400B
2513:109D000081B20100B6030040A199010000002F417B
2514:109D100099B30100A8832244816C0000B0832248DB
2515:109D2000816C0000AA83224C816C0000B483225015
2516:109D3000816C0000B5832254816C0000B7832258E7
2517:109D4000816C0000BC83225C816C000055010040E6
2518:109D500081B20000000000BC09B001006A8400CAA2
2519:109D600001B000000000004003B00100000000410D
2520:109D7000F3830100AE83A242056C000000000041A5
2521:109D800005B001006A8422CA071400006A840045F5
2522:109D9000F39300006A842043956F00006A8480CAB0
2523:109DA000053000006A842201803000006A8400CB04
2524:109DB000DB9100005C0100BCABB30000000000BC04
2525:109DC000B1B301006A8400CACFB30000FF0000CA2B
2526:109DD000818801006A84A240747D000060002040F8
2527:109DE00060990100B983A8B182300000B8830040B7
2528:109DF00081B200006A8400CA79B300000000004EFE
2529:109E000081B0010000000043CB8301000000454009
2530:109E100081B20100BF83A241815000000000454093
2531:109E200081B201000000454081B20100CA839182E5
2532:109E3000823000000000008A80B00100B69F004020
2533:109E400080CE0100C883A64081320000CA835640FC
2534:109E500081B20000B6030040A19901000000005348
2535:109E600007900100B6030040A199010000000052D4
2536:109E700007900100F39F00418BB300000000004EEB
2537:109E800081B0010000000042CD8301000000464087
2538:109E900081B20100CF83A241815000000000464002
2539:109EA00081B201000000464081B20100DA83918155
2540:109EB000823000000000008980B00100B69F0040A1
2541:109EC00080CE0100D883A64081320000DA8355405D
2542:109ED00081B20000B6030040A199010000000052C9
2543:109EE00007900100B6030040A19901000000005353
2544:109EF00007900100F39F00418BB30000B1030040C5
2545:109F0000A1990100C4142F4099B301005C010040E5
2546:109F100049B1000058152D408DB00100D0142DF02E
2547:109F200088B00100000000408FB00100010000A6D1
2548:109F300090B0010000F80048909801000000004532
2549:109F400093B00100000000FA8AB001006A030040EB
2550:109F500081320100020000A680B00100EC832240A3
2551:109F6000826C0000F0830040813201004703004012
2552:109F700081320100000000418DC00100F583225FA5
2553:109F80008D6C0000E783A24193500000E583004000
2554:109F900081B20000FF070047848801000000A6404E
2555:109FA00081B20000F59F00478030010000020047A9
2556:109FB0008EC80100F083004081B200000000004420
2557:109FC00050B30100FB832018896C0000040000A638
2558:109FD00084B00100200000A686B0010000100040FF
2559:109FE000559B0100FE83004081B20000040000A6E2
2560:109FF00084B00100200000A686B0010000100040DF
2561:10A00000559B01000000004250D30100000000A851
2562:10A010004FB30100000000434ED301005E03004037
2563:10A02000813201006C03004280300100F083004067
2564:10A0300081320100078422A78F6C00004903004091
2565:10A04000813201000484004081B2000000008040A1
2566:10A0500081B20100A0942E4397B00100000000409F
2567:10A06000F1B101000984A2419750000050952040B1
2568:10A07000E1B10100AC942E4397B001000000004014
2569:10A08000F1B101000D84A241975000000000804012
2570:10A0900081B20100AE030040A3990100000000401E
2571:10A0A00081B0010060150040859801000800004063
2572:10A0B00040E40100000000594194010000000050FC
2573:10A0C00041E0010000000042409401000000004116
2574:10A0D00081C001000000A341816C0100000000412B
2575:10A0E000A3C101001384005085C000004984A2412F
2576:10A0F000017D000021842258737D0000780000401B
2577:10A10000619901001C84A8B19C30000030003845E2
2578:10A110009DE001000100000E10C90000218433C43D
2579:10A12000813000002484A1AD9D2000001B841340D9
2580:10A1300081B200000000134E5A8301003000384500
2581:10A140009DE001002C8422AB800400002A84A24000
2582:10A15000017D00002C84225F577D0000278A00408B
2583:10A1600081B200002C84225E577D00008A8A004064
2584:10A1700081B2000031842254737D000074000040DD
2585:10A18000619901002C84A8B1003000000086A25F14
2586:10A19000017C00006289004081B200003384A25F2C
2587:10A1A000592700003584A25C737D00003C84A25EC8
2588:10A1B000737D00004684225C737D00004784374035
2589:10A1C000813200007C000040619901003684A8B112
2590:10A1D000363000007C000040619901003884A8B14D
2591:10A1E000003000001F000000028801002F86174089
2592:10A1F00081B2000047843440813200007E0000407C
2593:10A20000619901003D84A8B11230000044845221BC
2594:10A2100013040000000014412FC30100FF3F000998
2595:10A22000008C01000000004301F00100878400342D
2596:10A2300013840000FF3F1409008C0100E7840043F1
2597:10A2400001F000000000004081B20100478433406B
2598:10A25000813200001B84134E5A930000EC89A248FF
2599:10A26000FD7F00004E842259737D0000790000407C
2600:10A27000619901004A8428B17E3100004B8400407E
2601:10A2800081B20000528421AC9C20000000000041FB
2602:10A290001FC301000400A05F9D6C00000000004E81
2603:10A2A000589101005684225A737D00007A000040C4
2604:10A2B000619901005384A8B17E310000010000CFF4
2605:10A2C00011C900005C84A240937F00005C8422449A
2606:10A2D000937F0000588442A5803000005B84A24038
2607:10A2E000937F000071841A409393000000001A408D
2608:10A2F00081B201009A80A240737D0000A1892244AE
2609:10A30000216F000098892240657D0000A689A25B2C
2610:10A31000737D00000400A249337D0000668422485A
2611:10A32000337D0000FF01009980D80100000000503B
2612:10A3300081E00100A8982F4033B1010000000040E7
2613:10A34000E0C1010069842240AF6F000069842240AF
2614:10A35000816F0000F5891FA5826F000049840040CD
2615:10A3600081B200001B8400408BB300000000005845
2616:10A3700061B101000000004E62B101001B84284061
2617:10A38000813200006C84004081B200006F84334051
2618:10A390001F3000001B84134E5A9300007384A0CE1C
2619:10A3A000815000008584A0CD816C0000000000A5D4
2620:10A3B0009CB30100000000B181B00100858422B58A
2621:10A3C0008114000080152F4049B10100778442407C
2622:10A3D00081320000000060B465970100D0152E4066
2623:10A3E00069B3010000001A44938301001A0000A21F
2624:10A3F00080DC010000000044F1B10100000000B168
2625:10A40000F1B10100000000B5F1B10100050000400C
2626:10A41000619901000000004062B101008084A8A1A0
2627:10A42000E03100005C8400889EB300005C84A2419F
2628:10A43000676F00005C84006FDB9100008584424000
2629:10A44000813200005C841A40938300000099000967
2630:10A4500046C901003F0000F30C8801009084A64229
2631:10A460001360000055970095033001008B84454030
2632:10A470008132000075000040619901008C84A8B110
2633:10A480000C3000005C971D1094300100918400583E
2634:10A490001F9000004E970095033001001B84008838
2635:10A4A0001CB0000000002D0348B1010004002DF095
2636:10A4B0002EB00100EE070040979801009884234BCE
2637:10A4C000E46D00009884224BFD7F000000000040F6
2638:10A4D0001F90010022002F4081B201009B8483174E
2639:10A4E0008032000026000040479901009D848517B6
2640:10A4F000803200000000004847C10100A3842255BB
2641:10A500002F7C00000000004243D101000F0000FA40
2642:10A51000968801000000004297E001000000004220
2643:10A5200097D00100A484004B44C10000120000A297
2644:10A5300044C90100280000F602CC01000A0000A175
2645:10A5400042C90100000000F816B00100000028F028
2646:10A5500010B00100000000F01AB00100000000A2DD
2647:10A560002AB00100C0283C460DE0010000002D4447
2648:10A5700095B00100B084A2F80E300000C0842241E2
2649:10A580009550000000002D5049C10100AC840040EE
2650:10A5900081B20000AD84A2F8166C0000AD84A2F870
2651:10A5A000106C0000AD84A2F01A6C0000BE8422582A
2652:10A5B0001F7C000000993F4213F00100B584474022
2653:10A5C00081320000B984A2F3740600000000000686
2654:10A5D000E6950100BE841F4081B200000000000625
2655:10A5E00096B001003F001FF30C88010000000055E9
2656:10A5F00061B101000000004B62B10100BC84A840C1
2657:10A6000081320000BE84474081320000C6841F4171
2658:10A610002DC30000C48422581F7C00000000005598
2659:10A6200061B101000000000662B10100C284A840CF
2660:10A6300081320000C484474081320000EE841F4113
2661:10A640002DC30000030000071AF401002196000743
2662:10A6500016300100D5842241816C0000CC84224256
2663:10A66000816C00001B8400881CB00000D484225F31
2664:10A670000F7C00001597005F01100100D28422407A
2665:10A68000956C00000480000342C90100000000F244
2666:10A6900002B001008A960052953001009196004B5D
2667:10A6A00002B000006797000996300100058A00405B
2668:10A6B0000FB00000DD84A25A1F7C00009B95004073
2669:10A6C00081320100DD842220856C0000DA849C0F39
2670:10A6D000803200001B8400881CB000007C96005C67
2671:10A6E0001F0001009B980042613101001B8400881B
2672:10A6F0001CB00000E69900079630010000002D050F
2673:10A7000048B10100E08482F0183000006C8B0045F5
2674:10A710008FB00000282000A696B00100E484221724
2675:10A72000960400000B98004B953001006C8B004B99
2676:10A730008FB000002197000348310100FC940040D5
2677:10A74000813001006C8B004081B2000000002E10AF
2678:10A7500048B101000000685003B001000000000390
2679:10A76000F0B101000000004261B1010000000010E2
2680:10A7700062B10100EB84A800E03100001B84008876
2681:10A780001CB0000000002D0348B101000000004093
2682:10A790000FB00100000000F82EB00100000000F230
2683:10A7A00002B001000000004017B00100004100A607
2684:10A7B00096B00100EE072E47979001000185221701
2685:10A7C00096040000FF84224BFD7F0000FF8423A23B
2686:10A7D000026C00008A96005295300100040022416C
2687:10A7E000975000000C002D0012B00100000000F096
2688:10A7F00000B001000000005C018001009196004B58
2689:10A8000002B000000000000900B00100000000508C
2690:10A8100003B001001E85005C1790000013852243E1
2691:10A820002F7C0000000000451F9001000C85225F76
2692:10A830002F7C000000002E1048B1010000000058DD
2693:10A84000F1B1010010000003F0C901001000000088
2694:10A85000E0C9010008854542613100000000001098
2695:10A8600062B101000985A840813200001B841D8867
2696:10A870001CB0000020002D0348B10100FF0F00F6BE
2697:10A88000808801001085A2A6816C0000138500F26B
2698:10A890003AB00000FD85A24BFD7F0000E29500402C
2699:10A8A000813201001B8A004081B200001E85224ACD
2700:10A8B0002F7C00001E8522482F7C00000A002D03FB
2701:10A8C00048B101003F0000F2868801001F000043EC
2702:10A8D000848801000500004380F4010098943D4203
2703:10A8E00081E001001E85A242E07D0000FD85A24BB3
2704:10A8F000FD7F0000E2950040813201001B8A00408C
2705:10A9000081B200001E85474081320000000000A394
2706:10A9100009B0010000001F4147C30100248522A1A6
2707:10A92000096C00006B8400881CB0000021850003C6
2708:10A9300048B100005E85A392036C00000A990040B4
2709:10A94000953001000000004143C3010000000016E3
2710:10A9500080B201001B8A2708803200002B85225C10
2711:10A96000177C00002C8500002AB0000012000000B7
2712:10A970002AC801000200000880C801003085A243F7
2713:10A980002F7C00000E980040813201004C85005E53
2714:10A9900017900000040000018CCC01000E98004CC0
2715:10A9A0000330010000002E4602B00100100000102C
2716:10A9B00048C901000C000001F0CD01002C0000404E
2717:10A9C000F0C9010000000016F0B1010010000015F0
2718:10A9D000E0C901000000004361B10100A00000A433
2719:10A9E00062DD01003985A854171000004C85005E17
2720:10A9F00017900000120000002AC801004B85224376
2721:10AA00002F7C0000040000018CCC01000000004CF1
2722:10AA100003B001002F9800436131010000002E4671
2723:10AA200002B001001000001048C901000C00000134
2724:10AA3000F0CD01000C000009F0C901000000001871
2725:10AA4000F0B1010010000015E0C901000000004352
2726:10AA500061B10100A00000A462DD01004C85285412
2727:10AA6000171000004885004081B200002F98004375
2728:10AA7000613101004E8522502F7C000000000056FD
2729:10AA80001790010007000017988801005185A24126
2730:10AA9000996C000000000055179001000000004371
2731:10AAA00061B101004000001062DD01005285A84044
2732:10AAB000813200001B8400881CB000001698004002
2733:10AAC00081320100598522432F7C0000168000034B
2734:10AAD00044C901000000001DE4B10100B797005E09
2735:10AAE000051001005C85A25F2F7C0000CE94000160
2736:10AAF00038430100E2950040813201001B8A00408A
2737:10AB000081B200006085A24BFD7F0000FA85004104
2738:10AB100043C300000000004027B0010000000040D7
2739:10AB20002DB001000000004011B001006385350127
2740:10AB3000863000006D000040619901006B8528B1EE
2741:10AB4000303000006485224D757D00000000001645
2742:10AB500080B20100EA85A740116C000000000041AE
2743:10AB600043C30100F985004081B200006D00004040
2744:10AB7000619901006B85A8B1123000000000001639
2745:10AB800080B201007585A740116C000000000041F3
2746:10AB900043C301000000000910B0010000000018CC
2747:10ABA0002CB00100DE07004380CE01006485AA407E
2748:10ABB000813200007A85004081B2000040003E43AF
2749:10ABC00027E0010000000009F0B1010000000018BA
2750:10ABD000E0B101000000004127C001006485A30B23
2751:10ABE00087500000000015401BB00100000000402D
2752:10ABF00023B00100120000002AC8010040002D40CF
2753:10AC000039B001008285A240276C000022000008B4
2754:10AC100012C80100DE07004025980100858500402C
2755:10AC200081B20000000000F812B00100000000F046
2756:10AC300030B001000000000B25B001000000001042
2757:10AC400032B0010014002001E0B10100EE07004025
2758:10AC5000379801008A852301366C0000000000014E
2759:10AC600036B001009585824123400000208000100D
2760:10AC700042C9010091852240E36D000000000043BD
2761:10AC800061B101004000001062DD01008E85A84026
2762:10AC9000813200001B8400881CB000000196004334
2763:10ACA000233001000000001032B00100000000411C
2764:10ACB00023B001000000000348B10100008000192A
2765:10ACC00044C90100A48522451F7C00000000004CFF
2766:10ACD000F1B1010000000009F0B10100000000180E
2767:10ACE000F0B101000000004361B101002000001933
2768:10ACF00062DD01009B85A815E031000000000050D6
2769:10AD000003D001000000005033C001000000004CDF
2770:10AD100025D001000C002D4C13C001000000005094
2771:10AD200037D00100000000502BC001008A8500458B
2772:10AD30001F800000A685A312366C0000A785681B43
2773:10AD400028B000000000681228B0010000000009CF
2774:10AD5000F0B1010000000018F0B101000000004354
2775:10AD600061B101002000001962DD0100AA85A8156B
2776:10AD7000E0310000D0852214025000000000005095
2777:10AD800033C001000000001424D001000C002D1479
2778:10AD900012C00100C985A21436500000BA85225C99
2779:10ADA0001F7C00003080001042C90100B88522409D
2780:10ADB000E36D00000000004261B10100400000109E
2781:10ADC00062DD0100B585A840813200001B84008847
2782:10ADD0001CB000000000000348B101000C002D5C15
2783:10ADE0001F800100100000F02AC801000000005C74
2784:10ADF0002B800100F007004037980100BF85230138
2785:10AE0000366C00000000000136B00100CA85221B2C
2786:10AE1000026C00003000001048C9010000002E5CE8
2787:10AE20001F90010000000050F1B10100000000037C
2788:10AE3000F0B10100FF070015E08D010000000042A5
2789:10AE400061B10100A00000A462DD0100C685A84038
2790:10AE500081320000CA85000348B1000000000014E0
2791:10AE60002AC001008A85A240256C00000000004134
2792:10AE700039C0010040003D4339E001000000000BF3
2793:10AE800025B00100000000F812B001008A8500F032
2794:10AE900030B000000080001942C90100D685224070
2795:10AEA000E36D00000000004361B1010040000019A3
2796:10AEB00062DD0100D385A840813200001B84008838
2797:10AEC0001CB00000019600402B30010018002E033A
2798:10AED00048B10100DA8522502F7C000000000056A6
2799:10AEE000179001000700001798880100DD85A24136
2800:10AEF000996C00000000005517900100E085224386
2801:10AF00002F7C000000000054179001001600201D47
2802:10AF1000E4B10100E285A340276C0000E485605F96
2803:10AF2000179000000084000B16DC01000000601385
2804:10AF300016940100B797005E051001001B8AA25FFE
2805:10AF40002F7C00001480000342C90100000000F2C1
2806:10AF500002B00100CE940001384301001B8A00407A
2807:10AF600081B200000000004083B001000000004DED
2808:10AF700061B101000000001662B10100EC85A8403B
2809:10AF8000813200000000000862B10100EE85A84097
2810:10AF900081320000F9852213826C000040003D439D
2811:10AFA00083E00100000000F810B00100000000F094
2812:10AFB0002CB001000000001662B10100F485A84029
2813:10AFC000813200000000000862B10100F685A8404F
2814:10AFD00081320000F085004183C000000000154070
2815:10AFE00081B20100008200A604B00100A0980040D8
2816:10AFF00047990100E9890041893001008A96005291
2817:10B00000953001009196004B02B000001B8A004071
2818:10B010000FB000000000005F018001001000000080
2819:10B020000EF401003F00000000880100030000074B
2820:10B030001AF4010021960007163001000B86224108
2821:10B04000816C000009862242816C00001B8400880C
2822:10B050001CB000000A86225F0F7C0000058A0040B9
2823:10B060000FB000001386A25A1F7C00009B95004081
2824:10B070008132010013862220856C000010869C0F0F
2825:10B08000803200001B8400881CB000007C96005CAD
2826:10B090001F0001009B980042613101001B84008861
2827:10B0A0001CB00000E69900079630010000002D0555
2828:10B0B00048B10100000000F018B001001986223AE2
2829:10B0C000016C0000000000008EB001006C8B00409D
2830:10B0D00001B000000000004081B201002E002D05EB
2831:10B0E00048B101001D86A240E76D00000A00004043
2832:10B0F0008F9801006C8B004001B000006695004005
2833:10B10000813201004E970095033001001B840088B6
2834:10B110001CB0000000002D0348B1010022002DF0FA
2835:10B120002EB00100282000A696B001002686221726
2836:10B13000960400000B98004B953001006C8B004C7E
2837:10B140008FB0000028868317803200000000004482
2838:10B1500043C101002A8685178032000000000048A4
2839:10B1600043C10100280000F602CC0100120000A13A
2840:10B170002AC801002197004081320100FC9400415F
2841:10B18000813001006C8B004081B2000000000001A2
2842:10B1900000D0010000002E1048B10100280000403E
2843:10B1A000F199010000000003F0B10100000000006F
2844:10B1B000F0B1010034864647613100000000001004
2845:10B1C00062B101003586A81BE03100001B841E8897
2846:10B1D0001CB000000000004503E0010008002D0342
2847:10B1E00048B101005A8601FB08300000AD8687FB9C
2848:10B1F00022300000000000FA0EB00100000000F84C
2849:10B2000014B00100030000071AF4010021960007A2
2850:10B210001630010050862241816C00004486224293
2851:10B22000816C00001B8400881CB000004F86225FE8
2852:10B230000F7C0000380000047E8901004886A65F6C
2853:10B240000F00000074950040053001004D8600405D
2854:10B2500081B20000130000408798010000002D0318
2855:10B2600048B101000C002DF082B00100000000F098
2856:10B2700084B0010000970040053001000000005C30
2857:10B280001F900100058A00400FB000005886A25AA6
2858:10B290001F7C00009B9500408132010058862220CF
2859:10B2A000856C000055869C0F803200001B8400884E
2860:10B2B0001CB000007C96005C1F0001009B980042BF
2861:10B2C000613101001B8400881CB00000E699000772
2862:10B2D0009630010000002D0548B10100000000F08B
2863:10B2E00018B001005C862104802000005D860040CB
2864:10B2F00010C90000AE8A004B81B000007C8600437C
2865:10B3000081B00000808600FB22B00000AE8A0041C0
2866:10B3100081B000006C8B004E8FB000007886005A20
2867:10B320008FB00000658600478FB00000AE8A0053E2
2868:10B3300081B00000AE8A005681B0000032002D05B9
2869:10B3400048B101006C8BA00AE46D00006B86A2413D
2870:10B35000197C00006A86220A803200006C8B005340
2871:10B360008FB000006C8B00548FB000007486220AEE
2872:10B37000803200006E86A20AE46D00006C8B005DD6
2873:10B380008FB00000000000F280B001000000000A51
2874:10B3900080D001007286A091816C00006C8B005EF1
2875:10B3A0008FB00000250000408F9801006C8B00409A
2876:10B3B00081B2000076862091E56D00006C8B005410
2877:10B3C0008FB00000210000408F9801006C8B00407E
2878:10B3D00081B2000032002D0548B101006C8BA00A3B
2879:10B3E000E46D0000240000408F9801006C8B004049
2880:10B3F00081B2000037002D0548B10100040000F3C0
2881:10B4000082F40100AE8AA042836C0000AE8A005430
2882:10B4100081B00000000000F20EB001000300000740
2883:10B420001AF4010000B5000D42C901000700000731
2884:10B43000168801008986220BE67D00000A00004084
2885:10B4400087980100559900408132010000000040BA
2886:10B450000FB00100058A005C1F9000009B862250FF
2887:10B46000FD7F00009686A254FD7F00008E86225547
2888:10B47000FD7F000082000040879801008686004022
2889:10B4800081B2000086862253FD7F000014800003F5
2890:10B4900042C90100000000F096B001001000004B0E
2891:10B4A00080F401000CBC004087980100968622437E
2892:10B4B000806C0000FFFF004B808801008686A2435D
2893:10B4C000806C00007C9600404799010097864340BD
2894:10B4D000813200009A86A0F0306F00008C861B40FD
2895:10B4E00081B2000000001B4131C30100A59500405E
2896:10B4F000253001009F869C0F803200001B8400884D
2897:10B500001CB000007C96005C1F000100148000034A
2898:10B5100042C90100000000F096B0010000002F05B4
2899:10B5200048B101001000000718E401000008000CF9
2900:10B53000E0990100E69900079630010000B5000D82
2901:10B5400046C90100A6863040813200000000000B91
2902:10B55000E6910100000200A146C901000000000BB5
2903:10B56000E691010004002E0548B1010000001040E2
2904:10B57000E1B10100AE8A004081B00000000000FB94
2905:10B5800028B00100000000FB86B00100000000F8B8
2906:10B5900014B00100B7862246237C0000B386224007
2907:10B5A000877C0000000000481F900100B586224102
2908:10B5B000877C0000000000471F900100B7862242F0
2909:10B5C000877C0000000000451F900100B786471BE4
2910:10B5D0002C300000000000A013B0010000001F414B
2911:10B5E00041C30100E6862392156C0000E686A24561
2912:10B5F0001F7C0000EA86224BFD7F0000170000D070
2913:10B60000A2C901000000004027B001000200000AAA
2914:10B6100024C80100DD9500400F300100E4862208B7
2915:10B620004030000000000041A3C10100F0070012FB
2916:10B6300024CC0100C086AA4127400000010000136D
2917:10B6400080CC0100E086264023300000000000404E
2918:10B6500083B001006000000384C8010010000010E6
2919:10B6600048CD0100170000D0A2C90100CD86A2403C
2920:10B67000836C0000D986004183B000000080004246
2921:10B6800044990100000068213896010000002E5006
2922:10B6900049C10100D286A244236C0000300000039F
2923:10B6A00048C9010000000044F1B101000C00002075
2924:10B6B000F0C901000000004461B10100A00000A435
2925:10B6C00062DD0100D586A842E031000000000044A0
2926:10B6D00085C001000000004123C0010000000041BE
2927:10B6E000A3C10100CB86A24181500000E086224028
2928:10B6F000236C00000000004461B101004000001014
2929:10B7000062DD0100DD86A840813200001B840088D4
2930:10B710001CB000000000000348B10100EE0700402B
2931:10B7200025980100170000D02AC80100F3860017F1
2932:10B7300010B00000C097004081320100EA8600404E
2933:10B7400081B20000DD95009225300100000000402C
2934:10B7500031B00100EA8622082E300000F386004155
2935:10B7600027B00000808000A604B001000600004061
2936:10B77000879801005599000A8C30010000000040B4
2937:10B780000FB001000000005C1F900100F286229FB4
2938:10B79000136C0000020000881CCC01006B84004088
2939:10B7A00081B20000058A00413FC300000000004054
2940:10B7B0000FB001002800000180CE010007872A4059
2941:10B7C000813000000080001044C9010040000040AA
2942:10B7D00081980100FC86A2481F7C0000FC86A247DD
2943:10B7E0001F7C0000FC86A307036C00008000004063
2944:10B7F00081980100FF86A340026C00002800000130
2945:10B80000F0CD0100018700400FB00000280000408B
2946:10B81000F0CD0100040000400ECC01002800000320
2947:10B82000F0C9010028000000F0C901000000001666
2948:10B83000E0B101000000004761B1010020000010EC
2949:10B8400062DD01000587A85C1F10000000000040B9
2950:10B8500043990100000000F008B00100A0012D4054
2951:10B8600000C00100ED88220F4205000018879C0FE0
2952:10B87000803200000000005C1F800100008000108A
2953:10B8800042C9010013872240E36D00000000004719
2954:10B8900061B101004000001062DD01001087A84086
2955:10B8A000813200001B8400881CB00000188722072A
2956:10B8B000803200000000000342B1010000000007D8
2957:10B8C00042C10100008000A1469901000000005F14
2958:10B8D000E1910100D787A2451F7C00001000000302
2959:10B8E00048C9010000002D5429C00100000000F8E3
2960:10B8F00018B00100000000F804B00100000000F8DA
2961:10B900000EB00100420000030AC801000C0000A4B0
2962:10B910000CC801000000004017B001000000001436
2963:10B9200002B001000000001424D001000000001447
2964:10B9300010C001001200000810C801000000004003
2965:10B9400023B00100FE7F000544C90100298720942F
2966:10B95000156C00002A870094E5B100000000000A81
2967:10B96000E4B10100438722018032000000003C4422
2968:10B9700023E0010000002EA480B0010000000010B0
2969:10B9800048C101003087A307026C000031876801BD
2970:10B990001AB00000000068071AB001000000000D96
2971:10B9A00002D0010000000005F0B101000000000C11
2972:10B9B000F0B1010000000002E0B101000000000D44
2973:10B9C0000AC001003D872240036C00003D872242EF
2974:10B9D000236C00000000004123C00100000000476C
2975:10B9E00061B10100A00000A462DD0100658728406C
2976:10B9F000813200003A87004081B200000000001050
2977:10BA000080C001000000004761B10100000000405B
2978:10BA100062B101003F87A840233000001B840088EA
2979:10BA20001CB000006587004081B2000000003C446B
2980:10BA300023E00100000000A486B0010000002E10E9
2981:10BA400048C101004887A3120E6C000049876807AF
2982:10BA50001AB00000000068121AB001004C8780087C
2983:10BA6000F03100000100001198C801000000004CF6
2984:10BA70001E9001000000000CF0B101000000000267
2985:10BA8000E0B101000000001086C001000000004687
2986:10BA900061B10100011F004362DD01005087A85C15
2987:10BAA0001F1000008387220D146C00005687220DA2
2988:10BAB000246C00000000000D10C001005A87000D2A
2989:10BAC00024D00000000000412BC001000000001540
2990:10BAD000A2B101001000002010C80100F0070040D2
2991:10BAE000259801005C872242236C00006587004195
2992:10BAF00023C000000000004661B1010040000010BA
2993:10BB000062DD01005D87A85C1F0000001B840088C7
2994:10BB10001CB000000000001048B1010063872247FC
2995:10BB20001F7C000011960043233001000E00000F1F
2996:10BB30001E8C01000000004023B001008387220D0D
2997:10BB4000145000008287A20D0E500000718722461B
2998:10BB50001F7C0000000000461F80010030800010A4
2999:10BB600042C901006F872240E36D000000000047DA
3000:10BB700061B101004000001062DD01006C87A84047
3001:10BB8000813200001B8400881CB00000208000036C
3002:10BB9000469901000000005FE191010000002D06C0
3003:10BBA00048B10100000000F818B00100000000F8E2
3004:10BBB00004B0010076871FF00E3000002A87004C89
3005:10BBC0000DC0000000002E5F0F8001002A872307B0
3006:10BBD000146C00003000001048C90100240000402F
3007:10BBE000F199010000000003F0B101000000000025
3008:10BBF000F0B1010000000016F0B1010024000000C7
3009:10BC000000C801000000004761B10100A00000A4CD
3010:10BC100062DD01007F87A8461F1000002A8700030D
3011:10BC20000CB000002A87000D18C0000004002E147C
3012:10BC30000AD001001200000548CD0100FE7F00057A
3013:10BC400042C901000C002AF2E0B1010089872240BC
3014:10BC5000316C000000006018389601001E000040A2
3015:10BC600043990100008100F680CE01008D87A64037
3016:10BC7000813200000000004443C101008F87220B85
3017:10BC8000ED6D0000080000A142C90100020000A102
3018:10BC900046C901000F0000FA948801000200004A22
3019:10BCA00086E40100000000F60EB0010097872247ED
3020:10BCB0001F7C000004001F430E5000009787A04621
3021:10BCC0000F400000000000410FC001009B87224888
3022:10BCD0001F7C00000000004091B0010004000FA292
3023:10BCE000423100009E87004089B000000C0000A295
3024:10BCF00042C901000000004389B001000000004378
3025:10BD000095D00100000000FC82B00100A187A04195
3026:10BD1000904000000000004191C00100A68722472A
3027:10BD20001F7C0000A687A043896C0000A6872045E1
3028:10BD3000896C0000A687A0410E4000000000004171
3029:10BD40000FC001000000004189C001009E87A24190
3030:10BD500095500000AF8722481F7C0000100000486B
3031:10BD600092F40100FFFF004890880100AD879048E1
3032:10BD7000924000000000004193C001000A0000A2B0
3033:10BD800044C901000000662093A401003080001027
3034:10BD900044C9010012000014F0C90100000000179E
3035:10BDA000F0B1010012000005E0CD010030000010EC
3036:10BDB00080C801000000004461B101002000004083
3037:10BDC00062DD0100B587A84081320000C287225C95
3038:10BDD0001F7C000000003C4423E0010000002D1007
3039:10BDE00048C10100BF872240E36D0000000000460B
3040:10BDF00061B101004000001062DD0100BC87A84075
3041:10BE0000813200001B8400881CB00000C287875C60
3042:10BE10001F0000000000001048B101001196004111
3043:10BE200023400100C487A2471F7C000058890017E7
3044:10BE300010B0000000002F0348B10100C787A00721
3045:10BE4000164000000000004117C001000000000B78
3046:10BE5000E4B101000000005017F00100CB8790F220
3047:10BE6000164000000000004117C0010000006620DD
3048:10BE700017A40100100000142AC80100000000509F
3049:10BE80002BE00100000000F22A9401003080001035
3050:10BE900042C90100D5872240E36D00000000004444
3051:10BEA00061B101004000001062DD0100D287A840AE
3052:10BEB000813200001B8400881CB000000080001745
3053:10BEC00010DC01005889004081B20000A5950040B7
3054:10BED00081320100DB87225C1F7C00001B8400880C
3055:10BEE0001CB000007C96005C1F0001000080000573
3056:10BEF00044C9010000000040E1B1010004002D032D
3057:10BF000048B10100000000F03CB00100280000141E
3058:10BF100002C801000000000134B0010000002D053E
3059:10BF200032B00100220000050AC801001000000321
3060:10BF300048C90100000000F818B00100000000F836
3061:10BF400004B00100000000F80EB001000C0000A4D5
3062:10BF50000CC801000000004017B0010000000040C4
3063:10BF600023B00100218822018032000000003C44FF
3064:10BF700023E0010000002EA480B0010000000010AA
3065:10BF800048C10100F087A307026C0000F187680137
3066:10BF90001AB00000000068071AB001000000000D90
3067:10BFA00002D0010000000005F0B101000000000C0B
3068:10BFB000F0B1010000000002E0B101000000000D3E
3069:10BFC0000AC0010003882240036C0000FD87224262
3070:10BFD000236C00000000004123C001000000004766
3071:10BFE00061B10100A00000A462DD01003D8828408D
3072:10BFF00081320000FA87004081B20000000000108A
3073:10C0000080C001000000004761B101000000004055
3074:10C0100062B10100FF87A840233000001B84008824
3075:10C020001CB000003D88004081B2000000000010FC
3076:10C0300080C001000000004761B101000000004025
3077:10C0400062B101000588A840233000001B840088ED
3078:10C050001CB000002200001948C9010000002D1486
3079:10C0600048C101000F0000F23A88010000000042C0
3080:10C070003BE001000E00001402C801000000001D9A
3081:10C0800002C001001188231A02500000000000467F
3082:10C0900003C001003D88000134C000000C002D1DCC
3083:10C0A00048C10100F00000F23088010000000042A9
3084:10C0B00031F001000000001402B001000000001D7A
3085:10C0C00002C001000000001802C001001988221AF5
3086:10C0D000025000003D88000134C000002200001919
3087:10C0E00048C9010002002D1448C10100000000F6FB
3088:10C0F00014B001000000001D14D001000000001861
3089:10C1000014D001000000001E24B00100120000172E
3090:10C1100010C801003D88001A10C0000000003C4417
3091:10C1200023E00100000000A486B0010000002E10F2
3092:10C1300048C101002688A3120E6C000027886807FA
3093:10C140001AB00000000068121AB001002A888008A6
3094:10C15000F03100000100001198C801000000004CFF
3095:10C160001E9001000000000CF0B101000000000270
3096:10C17000E0B101000000001086C001000000004690
3097:10C1800061B10100011F004362DD01002E88A85C3F
3098:10C190001F1000005A88220D145000005A88220DEA
3099:10C1A000245000000000000D10C00100358822421C
3100:10C1B000236C00003D88004123C0000000000046C1
3101:10C1C00061B101004000001062DD01003688A85C0A
3102:10C1D0001F0000001B8400881CB00000000000103D
3103:10C1E00048B1010011960043233001000E00000FFA
3104:10C1F0001E8C01000000004023B001005988A20DF0
3105:10C200000E500000488822461F7C000000000046B7
3106:10C210001F8001003080001042C901004688224082
3107:10C22000E36D00000000004761B101004000001014
3108:10C2300062DD01004388A840813200001B84008831
3109:10C240001CB0000020800003469901000000005F40
3110:10C25000E191010000002D0648B10100000000F846
3111:10C2600018B00100000000F804B001004D881FF074
3112:10C270000E300000EA87004C0DC0000000002E5F69
3113:10C280000F800100EA872307146C000030000010C3
3114:10C2900048C9010024000040F1990100000000039A
3115:10C2A000F0B1010000000000F0B101000000001634
3116:10C2B000F0B101002400000000C8010000000047A8
3117:10C2C00061B10100A00000A462DD01005688A8460B
3118:10C2D0001F100000EA8700030CB00000EA87000D81
3119:10C2E00018C000007788A2441F7C000000000019DD
3120:10C2F0000AB001002200000548C901000A002D14FF
3121:10C3000048C1010002002040E5B1010004002040C6
3122:10C31000E5B101000D002D1D48C10100090000F329
3123:10C32000388801000D002050E7B1010004002D40C5
3124:10C330003FB00100000000F432B0010004002040D2
3125:10C34000E1B101002200000548C9010000002D14E0
3126:10C3500048C101000200001D94F4010000000040EB
3127:10C3600091B001006C88A0FC9040000000000041EA
3128:10C3700091C001006A88A241955000000480000528
3129:10C3800044C9010000000048F0B10100000000189D
3130:10C3900048C101000200001894F4010000002D18AB
3131:10C3A00090B001007488A0FC9040000000000041A3
3132:10C3B00091C001007288A241955000000000004821
3133:10C3C000E0B1010010002040E5B1010022000005AD
3134:10C3D00048C901000000001448C1010004800005A4
3135:10C3E00042C90100000000F880B00100000000F028
3136:10C3F00016C001007C8842303D0700000000009E0E
3137:10C4000085B0010000001A413DC301000400204234
3138:10C41000ECB101000000001E82B0010002002E1DE0
3139:10C4200082C001000000661882C0010000000042C6
3140:10C4300080C001008688A0418044000000000041C7
3141:10C4400081C001001000004092F401000A002E306B
3142:10C45000818401008A8890409240000000000041E1
3143:10C4600093C001000000662093A401000000001D9D
3144:10C4700048C1010004002019E8B101000000001EBD
3145:10C4800016C001009088A019164400000000004169
3146:10C4900017C001000D002F1E32C001009588A24078
3147:10C4A000156C00009488A01C16400000000000419C
3148:10C4B00017C00100000063F338940100100000056C
3149:10C4C00048C9010004002E1E98B001000000601A47
3150:10C4D00098C001000C002040E1B10100A388224671
3151:10C4E0001F7C0000000000461F800100308000100B
3152:10C4F00042C90100A1882240E36D0000000000470E
3153:10C5000061B101004000001062DD01009E88A8407A
3154:10C51000813200001B8400881CB0000020800003D2
3155:10C52000469901000000005FE19101003080001099
3156:10C5300044C901001200001AF0C9010000000017F0
3157:10C54000F0B1010010000005E0C90100300000104A
3158:10C5500080C801000000004461B1010020000040DB
3159:10C5600062DD0100A988A84081320000B788225C02
3160:10C570001F7C000000003C4423E0010000002D105F
3161:10C5800048C10100B3882240E36D0000000000466E
3162:10C5900061B101004000001062DD0100B088A840D8
3163:10C5A000813200001B8400881CB000000000005C89
3164:10C5B0001F8001000000001048B1010011960041E9
3165:10C5C000234001000E00000F1E8C010020002F05EB
3166:10C5D00048B101000000000BE4B101000000005070
3167:10C5E00017F00100BC8890F21640000000000041E6
3168:10C5F00017C001000000662017A4010010000014FD
3169:10C600002AC801000000001D2AC0010000000050DF
3170:10C610002BE00100000000F22A940100308000109D
3171:10C6200042C90100C7882240E36D000000000044B9
3172:10C6300061B101004000001062DD0100C488A84023
3173:10C64000813200001B8400881CB0000000800017AD
3174:10C6500010DC0100E4882240156C0000CF88A24461
3175:10C660001F7C0000000000441F900100CE88229F24
3176:10C67000136C0000020000881CCC01006B84004099
3177:10C6800081B20000000000413FC3010066990040F4
3178:10C6900081320100D288A241877C00000000001E88
3179:10C6A0003EC00100E4882240156C0000D588201EA1
3180:10C6B000146C00000000000A3CB00100DD95001E73
3181:10C6C00024300100DA8822082E30000000000052D9
3182:10C6D00011C001000000001A10C001003D88004098
3183:10C6E00017B000006B8400881CB00000DD9500408E
3184:10C6F00081320100D788A2082E300000808000A679
3185:10C7000004B001000600004087980100008000038B
3186:10C710004499010004002204E03100005599001FF3
3187:10C720008C300100000000400FB00100058A005C61
3188:10C730001F900000008000034499010004002204BF
3189:10C74000E03100006699004081320100E988A24191
3190:10C75000877C0000EA88001E3EC000000000001F29
3191:10C760008CB001000000004005B001005599004068
3192:10C770000F300100058A005C1F900000F5889C0FB7
3193:10C78000803200000000005C1F800100008000106B
3194:10C7900042C90100F5882240E36D00000000004717
3195:10C7A00061B101004000001062DD0100F288A84084
3196:10C7B000813200001B8400881CB00000FA88220728
3197:10C7C000803200000000000342B1010000000007B9
3198:10C7D00042C10100008000A1469901000000005FF5
3199:10C7E000E191010004002E0348B10100FD8820946E
3200:10C7F000156C0000FE880094E1B100000000000A02
3201:10C80000E0B1010001892240316C00000C000040C1
3202:10C8100045990100000060183896010000002E10B4
3203:10C8200048B1010000000050F1B101000000000813
3204:10C83000F0B1010000000003E0B10100000000447D
3205:10C8400061B101000000001062B101000689A8403A
3206:10C85000233000001B8400881CB0000000002D5213
3207:10C8600011C001001000000348C90100000000F8D9
3208:10C8700018B00100000000F804B00100000000F84A
3209:10C880000EB001000C0000A40CC8010000003C44E4
3210:10C8900023E00100000000A486B0010000002E107B
3211:10C8A00048C101001489A3120E6C000015896807A5
3212:10C8B0001AB00000000068121AB001000000001059
3213:10C8C00086C0010000000008F0B101000000000C6B
3214:10C8D000F0B1010000000002E0B1010000000046DC
3215:10C8E00061B10100011F004362DD01001A89A85CEB
3216:10C8F0001F1000004B89220D146C00002089220DAE
3217:10C90000246C00000000000D10C001002489000DFF
3218:10C9100024D00000000000412BC0010000000015E1
3219:10C92000A2B101001000002010C80100F007004073
3220:10C930002598010026892242236C00002D890041A0
3221:10C9400023C000000000004661B10100400000105B
3222:10C9500062DD01002789A85C1F0000001B8400889D
3223:10C960001CB000000000001048B10100D794004343
3224:10C97000233001000000004023B001000400220D1C
3225:10C98000145000004A89A20D0E5000003989224639
3226:10C990001F7C0000000000461F8001003080001056
3227:10C9A00042C9010037892240E36D000000000047C2
3228:10C9B00061B101004000001062DD01003489A8402F
3229:10C9C000813200001B8400881CB00000208000031E
3230:10C9D000469901000000005FE191010000002D0672
3231:10C9E00048B10100000000F818B00100000000F894
3232:10C9F00004B001003E891FF00E3000000F89004C8A
3233:10CA00000DC0000000002E5F0F8001000F8923077A
3234:10CA1000146C00003000001048C9010024000040E0
3235:10CA2000F199010000000003F0B1010000000000D6
3236:10CA3000F0B1010000000016F0B101002400000078
3237:10CA400000C801000000004761B10100A00000A47F
3238:10CA500062DD01004789A8461F1000000F8900030E
3239:10CA60000CB000000F89000D18C000005489225C32
3240:10CA70001F7C00000000005C1F80010000003C449F
3241:10CA800023E0010000002D1048C10100548922401C
3242:10CA9000E36D00000000004661B10100400000109D
3243:10CAA00062DD01005189A840813200001B840088AA
3244:10CAB0001CB000000000001048B10100D7940041F4
3245:10CAC000234001000000001710B001005889004009
3246:10CAD0002BB0000000800003449901000000000416
3247:10CAE000E0B101005D89229F136C00000200008804
3248:10CAF0001CCC01006B84004081B2000066990041AB
3249:10CB00003F430100000000408DB0010000000040E4
3250:10CB100005B00100559900400F3001001B8A005CF0
3251:10CB20001F900000100000000EF401000000003A09
3252:10CB300001840100030000071AF401002196000798
3253:10CB4000163001006C892241816C00006A89224202
3254:10CB5000816C00001B8400881CB000006B89225F80
3255:10CB60000F7C0000058A00400FB000007489A25AB3
3256:10CB70001F7C00009B9500408132010074892220B7
3257:10CB8000856C000071899C0F803200001B84008836
3258:10CB90001CB000007C96005C1F0001009B980042C6
3259:10CBA000613101001B8400881CB00000E699000779
3260:10CBB0009630010000002D0548B10100000000F092
3261:10CBC00018B001000000000080B00100AE8AA25F32
3262:10CBD000816C0000A8002D431980010037002DF062
3263:10CBE00024B00100040000F38EF401000F0000F3F4
3264:10CBF00090880100838922488E6C00003600004036
3265:10CC00004399010058003D43E7E1010083891FF08B
3266:10CC1000246C0000828923418F6C0000AE8A00479B
3267:10CC200081B00000AE8A004881B0000040000040A2
3268:10CC300043990100B0002DF014B001008889220A48
3269:10CC4000904000003999004091300100AE8AA24026
3270:10CC500080320000B0002D4581B00100948922F09F
3271:10CC60002C300000A3002D3083B00100AC002DF368
3272:10CC700082E001008E89A3412C6C000000000016A8
3273:10CC800082B0010098002DF082C0010088002DF0D4
3274:10CC900082D00100000000F298E80100AE8A204C2A
3275:10CCA000826C00007C002D4198E80100AE8A20F0E3
3276:10CCB000986C0000058A220A803200004002000CB5
3277:10CCC0007E890100058AA64081320000AE8A0049B3
3278:10CCD00081B00000200000A680B001009C892243A2
3279:10CCE000216F00001380004080DC01009D8900401E
3280:10CCF00081B200001A80004080DC01009D89A25EA4
3281:10CD00000B7D00000000004008B101009F899F8555
3282:10CD100080320000A389004081B200005F8422407D
3283:10CD2000577D00000100004057990100A38942404F
3284:10CD300081320000000000449393010049841A5B93
3285:10CD4000699300007B00004061990100A689A8B1A9
3286:10CD500080300000CF891D4080320000C089224011
3287:10CD6000AF6F0000C089225B817C00000400225D5F
3288:10CD7000737D00007D00004061990100AC89A8B17D
3289:10CD8000943000000000005F61B101000000004A23
3290:10CD900062B10100AF89A84081320000B1894340EF
3291:10CDA00081320000BF892257737D00007700004068
3292:10CDB00061990100B389A8B1943000007700004068
3293:10CDC00061990100B589A8B19630000000000048C3
3294:10CDD00061B101000000004A62B10100B889A84AAF
3295:10CDE00080330000BD89225F957C00000000004B6D
3296:10CDF00062B10100BB89A84BAC33000000001BA549
3297:10CE000082B30100C08900BE83C3000000001B4044
3298:10CE100081B301004018004049990100040000A6B8
3299:10CE200086B00100CD89A240860400001B849C408E
3300:10CE300080320000FFFF004088880100E98900502F
3301:10CE4000473101003600004488CC0100C9895240B6
3302:10CE500081320000E98900404731010000000041B3
3303:10CE600089B00100E989004847310100E9890005DE
3304:10CE7000473101001B84004081B2000028000040BF
3305:10CE8000479901001B840041E1C10000781800406F
3306:10CE900049990100D6892254817C0000D189424001
3307:10CEA00081320000008200B469DF010000001A44F2
3308:10CEB000939301002800004047990100E98900414F
3309:10CEC00089300100E4890F4080320000FF7F00407C
3310:10CED00088880100E989005047310100360000448C
3311:10CEE00088CC0100DC8999408032000000000048B5
3312:10CEF00089D00100DE899B40803200000000004C98
3313:10CF000089D00100E0891F4480320000E989004097
3314:10CF1000473101000000004189B00100E989004863
3315:10CF200047310100E9890058473101001B84004066
3316:10CF300081B200001000004086F401006F00004341
3317:10CF4000868801001B84260547310000E9890041DD
3318:10CF5000893001001B84004081B200000000A04421
3319:10CF6000F04101000000004081B20100000080415A
3320:10CF7000E1C10100040000CB81C80100EF8922401B
3321:10CF8000F27F00008180006F97330100F189224019
3322:10CF9000737D00009B8000418BB30000EC89225917
3323:10CFA000737D00007900004061990100EC8928B18F
3324:10CFB0007E310000F289004081B20000040022C0EE
3325:10CFC00095300000000000D697B00100FA89225D7C
3326:10CFD000737D00007D00004061990100F889A8B1CF
3327:10CFE000803000000000005E7F830100000000BF71
3328:10CFF000C5B10100040000408198010025010040F6
3329:10D0000081320100FD89A24181500000FF89435F08
3330:10D010007F130000260100BFC53101000000005F42
3331:10D020007F8301000000005E7F9301008B9800BFAA
3332:10D03000C53101001B84004081B200000C8A9C0FA6
3333:10D04000803200000080001042C901000C8A22409A
3334:10D05000E36D00000000004561B1010040000010D8
3335:10D0600062DD0100098AA840813200001B8400882B
3336:10D070001CB0000077952202803200000D8A4240E9
3337:10D0800081320000000000449393010077951A025A
3338:10D0900068970000178A9C0F803200000080001003
3339:10D0A00042C90100178A2240E36D000000000045DC
3340:10D0B00061B101004000001062DD0100148AA84047
3341:10D0C000813200001B8400881CB000008195220280
3342:10D0D00080320000188A4240813200000000004483
3343:10D0E0009393010081951A0268970000228A9C0F91
3344:10D0F000803200000080001042C90100228A2240D4
3345:10D10000E36D00000000004561B101004000001027
3346:10D1100062DD01001F8AA840813200001B84008864
3347:10D120001CB000006F84220280320000238A42403B
3348:10D1300081320000000000449393010000001A02B5
3349:10D14000689701006F84004005B00000008000A6D1
3350:10D1500056B1010056952F4005B00100738AA240D8
3351:10D16000E76D0000B8942941E7B1010000000054C8
3352:10D17000EF930100000000F20EB001002900004012
3353:10D180000D9801000900000712E40100000000A74B
3354:10D1900013C00100030000071AF401000700000794
3355:10D1A00016880100FFFF001034D8010000000003C2
3356:10D1B000349401000000004023B00100201800401A
3357:10D1C0001198010000B5000D42C90100578A220BD9
3358:10D1D000E67D0000388A444081320000FFFF0007EE
3359:10D1E000848901003F8A05C224300000679800400E
3360:10D1F0008132010000002D0548B10100748A1CF045
3361:10D2000018300100578A004081B2000000001C4025
3362:10D2100081B201004E8AA048236C0000000000503B
3363:10D2200035D001000080001A42C90100488A22401E
3364:10D23000E36D00000000004261B101004000001AEF
3365:10D2400062DD0100458AA840813200001B8400880D
3366:10D250001CB000002098004043990100748A00F837
3367:10D2600018300100498AA24123500000FFFF00103E
3368:10D2700034D801000000000334940100201800405D
3369:10D280001198010000002E1A48B10100000000446E
3370:10D29000F1B1010000000008F0B1010000000042FF
3371:10D2A00061B101002000001A62DD0100528AA80964
3372:10D2B000E03100000000004123C0010000000050E8
3373:10D2C00035C001000000004411C00100638A224102
3374:10D2D0000D500000000000410FC001005F8AA0AAAD
3375:10D2E0000F6C0000000000410FB0010009000007B2
3376:10D2F00012E40100000000A713C00100000000407C
3377:10D300001BB00100368A004117B00000000200097E
3378:10D3100012C80100368A8341174000000000004017
3379:10D3200017B00100368A00411BC000006E8A2340FE
3380:10D33000236C00000000005035D001000080001A6E
3381:10D3400042C901006B8A2240E36D000000000042E8
3382:10D3500061B101004000001A62DD0100688AA84046
3383:10D36000813200001B8400881CB00000209800401F
3384:10D3700043990100748A00F8183001006C8AA241B8
3385:10D3800023500000000000410FC00100718AA0AAD4
3386:10D390000F6C0000000000410FB00100B89420079E
3387:10D3A000E4B1010056952040E7B10100058A004034
3388:10D3B0000FB00000FFFF000C80D80100C002000C7D
3389:10D3C0007E890100868A2654613100007C8A870CA0
3390:10D3D000803200000F000040629901007C8A2840E2
3391:10D3E000813200007C8AA254777D0000788A004058
3392:10D3F00081B20000818A2246197C00000D000040A5
3393:10D40000629901000000A84081B200000000A2540F
3394:10D41000777D01007D8A004081B20000868A224922
3395:10D42000197C00000E000040629901000000A84035
3396:10D4300081B200000000A254777D0100818A004083
3397:10D4400081B2000010000040629901000000A84075
3398:10D4500081B200000000A254777D0100868A00405E
3399:10D4600081B2000030942F55F1930100004000A6D6
3400:10D4700056B101006F84A241E551000064000040F4
3401:10D48000E59901008E8A424081320000918AA29380
3402:10D49000576F00000000004157C3010000001AABA5
3403:10D4A00027B301006F842250FD7F00006F8422515A
3404:10D4B000FD7F00006F84A2411D53000050460040D4
3405:10D4C0001D9B010034820040813201000E000048A3
3406:10D4D000B2CB0100FC810040493101009D8A22400D
3407:10D4E000B56F00000E000048B2CB0100FF81004183
3408:10D4F000B55301006F84004081B20000000000516C
3409:10D50000FD8301004016004045990100358200402E
3410:10D51000493101001E000048B2CB0100FC810040EF
3411:10D5200081320100000000DA91C0010004000048CF
3412:10D53000B2CB0100FF810040B533010060162040EE
3413:10D54000E5B10100DB820040B5330100080000486E
3414:10D55000B2CB0100FFFF004AB48B0100FF81004005
3415:10D56000813201000A000048B2CB01001000004ADD
3416:10D57000B4F70100FF810040813201006F84004058
3417:10D5800081B200000500004043990100000000F353
3418:10D5900008B0010004002040E6B101000300004093
3419:10D5A00096E401000000000496C00100B48A004B1C
3420:10D5B00010C90000D78D004109B000000400002010
3421:10D5C0008FB00000040000208FB000000400002095
3422:10D5D0008FB00000040000208FB000000400002085
3423:10D5E0008FB00000040000208FB000000400002075
3424:10D5F0008FB00000040000208FB000000B8E0041AF
3425:10D6000009B00000040000208FB0000004000020DA
3426:10D610008FB00000040000208FB000000400002044
3427:10D620008FB00000040000208FB000000400002034
3428:10D630008FB00000040000208FB000000400002024
3429:10D640008FB000003D8E004509B000003D8E0045C2
3430:10D6500009B000003D8E004509B000003D8E004538
3431:10D6600009B00000040000208FB00000040000207A
3432:10D670008FB00000040000208FB0000004000020E4
3433:10D680008FB000007C8E004309B00000A58E0043DF
3434:10D6900009B00000A98E004409B0000011900045B7
3435:10D6A00009B00000040000208FB00000040000203A
3436:10D6B0008FB00000040000208FB0000004000020A4
3437:10D6C0008FB00000040000208FB00000B58E004332
3438:10D6D00009B00000B48E004309B00000D58D0045AC
3439:10D6E00009B00000040000208FB0000004000020FA
3440:10D6F0008FB00000040000208FB000000400002064
3441:10D700008FB00000758F004209B00000758F004394
3442:10D7100009B00000758F004409B00000D58D0045A8
3443:10D7200009B00000040000208FB0000004000020B9
3444:10D730008FB00000040000208FB000000400002023
3445:10D740008FB00000040000208FB00000A18F0043C4
3446:10D7500009B00000040000208FB00000D58D004506
3447:10D7600009B00000040000208FB000000400002079
3448:10D770008FB00000040000208FB0000004000020E3
3449:10D780008FB00000040000208FB00000BF8F004366
3450:10D7900009B00000BF8F004409B00000D58D0045DE
3451:10D7A00009B00000040000208FB000000400002039
3452:10D7B0008FB00000040000208FB0000004000020A3
3453:10D7C0008FB00000040000208FB00000BF8F004227
3454:10D7D00009B00000040000208FB00000D58D004586
3455:10D7E00009B00000040000208FB0000004000020F9
3456:10D7F0008FB00000040000208FB000000400002063
3457:10D800008FB00000040000208FB00000E78F0044BC
3458:10D8100009B00000040000208FB00000D58D004545
3459:10D8200009B00000040000208FB0000004000020B8
3460:10D830008FB00000040000208FB000000400002022
3461:10D840008FB00000D58D004209B00000F88F004570
3462:10D8500009B00000F88F004509B00000D58D0045E3
3463:10D8600009B00000040000208FB000000400002078
3464:10D870008FB00000040000208FB0000004000020E2
3465:10D880008FB00000FA8F004209B00000FA8F004309
3466:10D8900009B00000FA8F004409B00000FA8F00457B
3467:10D8A00009B00000040000208FB000000400002038
3468:10D8B0008FB00000040000208FB0000004000020A2
3469:10D8C0008FB00000040000208FB000000400002092
3470:10D8D0008FB000000290004409B00000D58D0045D3
3471:10D8E00009B00000040000208FB0000004000020F8
3472:10D8F0008FB00000040000208FB000000400002062
3473:10D900008FB000001390004209B000000390004364
3474:10D9100009B000001390004409B00000D58D004507
3475:10D9200009B00000040000208FB0000004000020B7
3476:10D930008FB00000040000208FB000000400002021
3477:10D940008FB00000040000208FB00000149000434E
3478:10D9500009B000000A90004409B00000D58D0045D0
3479:10D9600009B00000040000208FB000000400002077
3480:10D970008FB00000040000208FB00000D58D004162
3481:10D9800009B00000738F004209B00000738F00439C
3482:10D9900009B00000738F004409B00000D58D004528
3483:10D9A00009B00000040000208FB000000400002037
3484:10D9B0008FB00000040000208FB00000D58D004122
3485:10D9C00009B000001590004209B000001590004316
3486:10D9D00009B000001590004409B00000D58D004545
3487:10D9E00009B00000040000208FB0000004000020F7
3488:10D9F0008FB00000040000208FB000000400002061
3489:10DA00008FB00000040000208FB000000400002050
3490:10DA10008FB00000040000208FB000001C90004573
3491:10DA200009B00000040000208FB0000004000020B6
3492:10DA30008FB00000040000208FB000001E90004254
3493:10DA400009B00000040000208FB000000400002096
3494:10DA50008FB00000040000208FB000000400002000
3495:10DA60008FB00000040000208FB0000004000020F0
3496:10DA70008FB00000040000208FB0000004000020E0
3497:10DA80008FB000002A90004309B00000939000433B
3498:10DA900009B00000A98E004409B0000011900045B3
3499:10DAA00009B00000040000208FB000000400002036
3500:10DAB0008FB00000040000208FB0000004000020A0
3501:10DAC0008FB00000040000208FB000009B90004346
3502:10DAD00009B00000A98E004409B000001190004573
3503:10DAE00009B00000040000208FB0000004000020F6
3504:10DAF0008FB00000040000208FB000000400002060
3505:10DB00008FB00000040000208FB00000AC900043F4
3506:10DB100009B00000040000208FB00000D58D004542
3507:10DB200009B00000040000208FB0000004000020B5
3508:10DB30008FB00000040000208FB00000040000201F
3509:10DB40008FB00000798E004309B000009790004329
3510:10DB500009B00000A98E004409B0000011900045F2
3511:10DB600009B00000040000208FB000000400002075
3512:10DB70008FB0000007002D0548B10100000000F340
3513:10DB800008B0010006002047E6B10100040000478C
3514:10DB900096E401000000004796D001000000004715
3515:10DBA00096D001000000000496C00100748B004B69
3516:10DBB00010C90000C490004909B000000400002012
3517:10DBC00085B000000400002085B0000004000020A3
3518:10DBD00085B000000400002085B000000400002093
3519:10DBE00085B000000400002085B000000400002083
3520:10DBF00085B000000400002085B000000400002073
3521:10DC000085B000000400002085B000000400002062
3522:10DC100085B000000400002085B000000400002052
3523:10DC200085B000000400002085B00000FD90004297
3524:10DC300009B000000400002085B0000004000020AE
3525:10DC400085B000000400002085B000000400002022
3526:10DC500085B000000400002085B000000400002012
3527:10DC600085B000000400002085B000000400002002
3528:10DC700085B000000400002085B0000004000020F2
3529:10DC800085B000000400002085B0000004000020E2
3530:10DC900085B000000400002085B00000039100461C
3531:10DCA00009B000000400002085B00000040000203E
3532:10DCB00085B000000400002085B0000004000020B2
3533:10DCC00085B000000400002085B0000004000020A2
3534:10DCD00085B000000400002085B000000400002092
3535:10DCE00085B000000400002085B000000400002082
3536:10DCF00085B000000400002085B000000400002072
3537:10DD000085B000000400002085B000000400002061
3538:10DD100085B000001191004209B00000040000200D
3539:10DD200085B000003391004209B0000004000020DB
3540:10DD300085B000000400002085B000000400002031
3541:10DD400085B000000400002085B000000400002021
3542:10DD500085B000000400002085B000002E91004A2C
3543:10DD600009B000000400002085B00000040000207D
3544:10DD700085B000000400002085B0000004000020F1
3545:10DD800085B000003691004309B000000400002077
3546:10DD900085B000008F91004409B00000040000200D
3547:10DDA00085B000000400002085B0000004000020C1
3548:10DDB00085B000000400002085B0000004000020B1
3549:10DDC00085B000000400002085B000008E91004B5B
3550:10DDD00009B000000400002085B00000040000200D
3551:10DDE00085B000000400002085B0000006910041CD
3552:10DDF00009B000000400002085B000000691004337
3553:10DE000009B000000691004409B0000006910045E9
3554:10DE100009B000000691004609B0000006910047D5
3555:10DE200009B000000691004809B0000006910049C1
3556:10DE300009B000000691004A09B000000691004BAD
3557:10DE400009B000000691004C09B000000691004D99
3558:10DE500009B000000400002085B00000040000208C
3559:10DE600085B00000EE91004209B0000004000020DF
3560:10DE700085B00000EE91004409B0000004000020CD
3561:10DE800085B000000400002085B0000004000020E0
3562:10DE900085B000000400002085B0000004000020D0
3563:10DEA00085B000000400002085B00000EE91004B1A
3564:10DEB00009B000000400002085B00000040000202C
3565:10DEC00085B000000400002085B0000004000020A0
3566:10DED00085B000000400002085B0000006920045D7
3567:10DEE00009B000000400002085B0000004000020FC
3568:10DEF00085B000000400002085B000000400002070
3569:10DF000085B000001D92004709B000000400002009
3570:10DF100085B00000FA91004509B00000040000201F
3571:10DF200085B000000400002085B000007C9400460D
3572:10DF300009B000000400002085B0000004000020AB
3573:10DF400085B000000400002085B00000040000201F
3574:10DF500085B000000400002085B000003391004629
3575:10DF600009B000001191004609B000002C91004753
3576:10DF700009B000002C91004809B000000400002006
3577:10DF800085B000000400002085B0000004000020DF
3578:10DF900085B000002E91004A09B000000400002066
3579:10DFA00085B000000400002085B0000004000020BF
3580:10DFB00085B000000400002085B0000004000020AF
3581:10DFC00085B000000400002085B000008F9100455E
3582:10DFD00009B000003691004309B000002C910047C1
3583:10DFE00009B000002C91004809B000000400002096
3584:10DFF00085B000000400002085B00000040000206F
3585:10E0000085B000008E91004C09B000000400002093
3586:10E0100085B000000400002085B00000040000204E
3587:10E0200085B000000400002085B00000040000203E
3588:10E0300085B000000400002085B000002392004459
3589:10E0400009B000002392004209B00000C08D0047D3
3590:10E0500009B00000C08D004809B000000400002095
3591:10E0600085B000000400002085B0000004000020FE
3592:10E0700085B000002392004B09B00000040000208E
3593:10E0800085B000000400002085B00000069100412A
3594:10E0900009B000004692004709B0000004000020CB
3595:10E0A00085B000002E92004709B000000400002057
3596:10E0B00085B000000400002085B0000004000020AE
3597:10E0C00085B000000400002085B00000040000209E
3598:10E0D00085B000000400002085B000002E920047AB
3599:10E0E00009B000000400002085B0000004000020FA
3600:10E0F00085B000000400002085B00000040000206E
3601:10E1000085B000000400002085B00000040000205D
3602:10E1100085B000000400002085B000002E9200476A
3603:10E1200009B000004692004709B000002C9100475A
3604:10E1300009B000002C91004809B000000400002044
3605:10E1400085B000000400002085B00000040000201D
3606:10E1500085B000002E92004709B0000004000020A6
3607:10E1600085B000000400002085B0000004000020FD
3608:10E1700085B000000400002085B0000004000020ED
3609:10E1800085B000000400002085B0000004000020DD
3610:10E1900085B000000400002085B0000055920047C3
3611:10E1A00009B000005592004809B0000004000020AA
3612:10E1B00085B000000400002085B0000004000020AD
3613:10E1C00085B000000400002085B00000040000209D
3614:10E1D00085B000000400002085B00000B892004027
3615:10E1E00009B00000D692004709B00000CA9200486A
3616:10E1F00009B000002692004709B0000026920047AF
3617:10E2000009B00000D692004709B00000DD92004737
3618:10E2100009B00000DD92004809B0000004000020B1
3619:10E2200085B00000CA92004809B00000269200475D
3620:10E2300009B000002692004709B00000CA920048C9
3621:10E2400009B000000400002085B000000400002098
3622:10E2500085B000000400002085B00000EE9100436E
3623:10E2600009B000000400002085B00000EE910045D8
3624:10E2700009B00000EE91004609B000002C91004763
3625:10E2800009B000002C91004809B0000004000020F3
3626:10E2900085B00000EE91004A09B0000004000020A3
3627:10E2A00085B00000EE91004C09B000000400002091
3628:10E2B00085B000000400002085B0000004000020AC
3629:10E2C00085B000004592004709B00000399200482F
3630:10E2D00009B000002D92004709B000002D920047C0
3631:10E2E00009B000004592004709B00000C08D00470A
3632:10E2F00009B00000C08D004809B0000004000020F3
3633:10E3000085B000003992004809B000002D92004706
3634:10E3100009B000002D92004709B000003992004872
3635:10E3200009B000000400002085B0000004000020B7
3636:10E3300085B00000DF92004209B000000400002018
3637:10E3400085B00000DF92004409B000000400002006
3638:10E3500085B000000400002085B00000040000200B
3639:10E3600085B000000400002085B0000004000020FB
3640:10E3700085B000000400002085B00000DF92004B53
3641:10E3800009B000000400002085B000000400002057
3642:10E3900085B000000400002085B0000004000020CB
3643:10E3A00085B000000400002085B00000DF9200432B
3644:10E3B00009B000000400002085B00000DF92004595
3645:10E3C00009B00000DF92004609B00000DF9200476C
3646:10E3D00009B00000DF92004809B0000004000020EE
3647:10E3E00085B00000DF92004A09B000000400002060
3648:10E3F00085B00000DF92004C09B00000DF92004CB5
3649:10E4000009B000000400002085B0000004000020D6
3650:10E4100085B000000400002085B00000FA9200469C
3651:10E4200009B000000400002085B0000004000020B6
3652:10E4300085B000000400002085B00000040000202A
3653:10E4400085B000001D92004709B0000004000020C4
3654:10E4500085B00000FA92004609B0000004000020D8
3655:10E4600085B000000400002085B0000004000020FA
3656:10E4700085B000000400002085B0000004000020EA
3657:10E4800085B000000400002085B00000069400461E
3658:10E4900009B000000400002085B000000400002046
3659:10E4A00085B000000400002085B0000004000020BA
3660:10E4B00085B000001D92004709B000000400002054
3661:10E4C00085B000000694004609B00000040000205A
3662:10E4D00085B000000400002085B0000006940046CE
3663:10E4E00009B000000400002085B0000004000020F6
3664:10E4F00085B000000400002085B00000040000206A
3665:10E5000085B000002B94004209B0000004000020F8
3666:10E5100085B000000400002085B000000400002049
3667:10E5200085B000000400002085B000000400002039
3668:10E5300085B000000400002085B000002A94004A45
3669:10E5400009B000000400002085B000000400002095
3670:10E5500085B000000400002085B000000400002009
3671:10E5600085B000000400002085B0000004000020F9
3672:10E5700085B000000400002085B000002B94004608
3673:10E5800009B000000400002085B000002C91004775
3674:10E5900009B000002C91004809B0000004000020E0
3675:10E5A00085B000000400002085B0000004000020B9
3676:10E5B00085B000002A94004A09B000000400002041
3677:10E5C00085B000000400002085B000000400002099
3678:10E5D00085B000000400002085B000000400002089
3679:10E5E00085B000000400002085B000000400002079
3680:10E5F00085B000000400002085B000000400002069
3681:10E6000085B000000400002085B00000EA920041BF
3682:10E6100009B000000400002085B0000004000020C4
3683:10E6200085B000000400002085B000000400002038
3684:10E6300085B000000400002085B000000400002028
3685:10E6400085B00000F792004209B0000004000020ED
3686:10E6500085B00000F792004409B0000004000020DB
3687:10E6600085B000000400002085B0000004000020F8
3688:10E6700085B000000400002085B0000004000020E8
3689:10E6800085B000000400002085B00000F792004B28
3690:10E6900009B000000400002085B000000400002044
3691:10E6A00085B000000400002085B0000004000020B8
3692:10E6B00085B000000400002085B00000F792004300
3693:10E6C00009B000000400002085B00000F79200456A
3694:10E6D00009B00000F792004609B00000F792004729
3695:10E6E00009B00000F792004809B0000004000020C3
3696:10E6F00085B000000400002085B000000400002068
3697:10E7000085B00000F792004C09B000000400002022
3698:10E7100085B000000400002085B000000400002047
3699:10E7200085B000000400002085B000000692004C77
3700:10E7300009B000000400002085B0000004000020A3
3701:10E7400085B000000400002085B000000400002017
3702:10E7500085B000001D92004709B0000004000020B1
3703:10E7600085B00000FA91004C09B0000004000020C0
3704:10E7700085B000000400002085B00000CD94004664
3705:10E7800009B000000400002085B000000400002053
3706:10E7900085B000007194004209B000000400002020
3707:10E7A00085B000007194004409B00000040000200E
3708:10E7B00085B000000400002085B0000004000020A7
3709:10E7C00085B000000400002085B000000400002097
3710:10E7D00085B000000400002085B000007194004B5B
3711:10E7E00009B000000400002085B0000004000020F3
3712:10E7F00085B000000400002085B000000400002067
3713:10E8000085B000000400002085B000000400002056
3714:10E8100085B000000400002085B000007194004520
3715:10E8200009B000007194004609B000002C91004727
3716:10E8300009B000002C91004809B00000040000203D
3717:10E8400085B000000400002085B000000400002016
3718:10E8500085B000007194004C09B000000400002055
3719:10E8600085B000000400002085B0000004000020F6
3720:10E8700085B00000FA91004209B000007C94004687
3721:10E8800009B000000400002085B000000400002052
3722:10E8900085B00000FA91004609B000000400002095
3723:10E8A00085B000001D92004709B000000400002060
3724:10E8B00085B000007C94004609B0000004000020F0
3725:10E8C00085B000000400002085B000007C94004664
3726:10E8D00009B000000400002085B000000400002002
3727:10E8E00085B000000400002085B000008094004343
3728:10E8F00009B000000400002085B0000004000020E2
3729:10E9000085B000000400002085B000000400002055
3730:10E9100085B000001D92004709B0000004000020EF
3731:10E9200085B000008094004309B00000040000207E
3732:10E9300085B000000400002085B000008094004DE8
3733:10E9400009B000000400002085B000000400002091
3734:10E9500085B000000400002085B000000400002005
3735:10E9600085B000009294004309B00000040000202C
3736:10E9700085B000000400002085B0000004000020E5
3737:10E9800085B000000400002085B0000004000020D5
3738:10E9900085B000000400002085B000006F94004A9C
3739:10E9A00009B000000400002085B000000400002031
3740:10E9B00085B000000400002085B0000004000020A5
3741:10E9C00085B000000400002085B000000400002095
3742:10E9D00085B000000400002085B000009294004340
3743:10E9E00009B000000400002085B000002C91004711
3744:10E9F00009B000002C91004809B00000040000207C
3745:10EA000085B000000400002085B000000400002054
3746:10EA100085B000006F94004A09B000000400002097
3747:10EA200085B000000400002085B000000400002034
3748:10EA300085B000000400002085B00000A4940043CD
3749:10EA400009B000000400002085B000000400002090
3750:10EA500085B000000400002085B000000400002004
3751:10EA600085B000001D92004709B00000040000209E
3752:10EA700085B00000A494004309B000000400002009
3753:10EA800085B000000400002085B00000A494004D73
3754:10EA900009B000000400002085B000000400002040
3755:10EAA00085B000001191004209B000000400002070
3756:10EAB00085B000003391004209B00000040000203E
3757:10EAC00085B000000400002085B000000400002094
3758:10EAD00085B000000400002085B000000400002084
3759:10EAE00085B000000400002085B00000C3940042FF
3760:10EAF00009B000000400002085B0000004000020E0
3761:10EB000085B000000400002085B000000400002053
3762:10EB100085B000000400002085B000000400002043
3763:10EB200085B000000400002085B00000339100464D
3764:10EB300009B000001191004609B000002C91004777
3765:10EB400009B000002C91004809B00000040000202A
3766:10EB500085B000000400002085B000000400002003
3767:10EB600085B00000C394004609B0000004000020F6
3768:10EB700085B000000400002085B0000004000020E3
3769:10EB800085B000000400002085B00000C594004A54
3770:10EB900009B000000400002085B00000040000203F
3771:10EBA00085B000000400002085B0000004000020B3
3772:10EBB00085B000001D92004709B00000040000204D
3773:10EBC00085B00000C594004A09B000000400002090
3774:10EBD00085B000000400002085B000007D94004650
3775:10EBE00009B000000400002085B0000004000020EF
3776:10EBF00085B000000400002085B000007D94004630
3777:10EC000009B000000400002085B0000004000020CE
3778:10EC100085B000000400002085B000000400002042
3779:10EC200085B000001D92004709B0000004000020DC
3780:10EC300085B000007D94004609B00000040000206B
3781:10EC400085B000000400002085B000007D940046DF
3782:10EC500009B000000400002085B00000040000207E
3783:10EC600085B000000400002085B0000004000020F2
3784:10EC700085B00000CB94004209B0000004000020E1
3785:10EC800085B000000400002085B0000004000020D2
3786:10EC900085B000000400002085B0000004000020C2
3787:10ECA00085B000000400002085B000006F94004A89
3788:10ECB00009B000000400002085B00000040000201E
3789:10ECC00085B000000400002085B000000400002092
3790:10ECD00085B000000400002085B000000400002082
3791:10ECE00085B000000400002085B00000CB940046F1
3792:10ECF00009B000000400002085B000002C910047FE
3793:10ED000009B000002C91004809B000000400002068
3794:10ED100085B000000400002085B000000400002041
3795:10ED200085B000006F94004A09B000000400002084
3796:10ED300085B000000400002085B000000400002021
3797:10ED400085B000003691004D09B00000040000209D
3798:10ED500085B000000400002085B000000400002001
3799:10ED600085B000000400002085B0000004000020F1
3800:10ED700085B000000400002085B0000004000020E1
3801:10ED800085B000000400002085B0000004000020D1
3802:10ED900085B000000400002085B0000004000020C1
3803:10EDA00085B000000400002085B0000004000020B1
3804:10EDB00085B000000400002085B0000004000020A1
3805:10EDC00085B000000400002085B000000400002091
3806:10EDD00085B000003691004D09B000002C9100472D
3807:10EDE00009B000002C91004809B000000400002088
3808:10EDF00085B000000400002085B000000400002061
3809:10EE000085B000000400002085B000000400002050
3810:10EE100085B0000007002E4B19900100108A0004F5
3811:10EE2000E6B10000C08D2242197C0000C597003A6F
3812:10EE300081300100C08D004081B20000C08D2242AF
3813:10EE4000197C0000FF1F000F1E8C01003797004047
3814:10EE500081320100D08D9C0F803200000000005CE8
3815:10EE60001F8001000080001042C90100D08D2240A7
3816:10EE7000E36D00000000004561B10100400000109A
3817:10EE800062DD0100CD8DA840813200001B84008826
3818:10EE90001CB000001986220280320000D18D424051
3819:10EEA00081320000000000449393010000001A0228
3820:10EEB000689701001986004005B0000005002E4B40
3821:10EEC00019900100108A0004E6B100000000004023
3822:10EED00087B00100000000408DB0010000800003F9
3823:10EEE00042C90100400000A144C90100000000F037
3824:10EEF000E0B101005599000607400100000000063E
3825:10EF000007D00100D4002E5C1F9001000000000714
3826:10EF1000F0B101000C80000342C90100000000F0C4
3827:10EF2000F0B101000000004081B20100000000FECD
3828:10EF300096B00100000000FE96C00100000000F045
3829:10EF4000F0B101000000004081B20100000000FEAD
3830:10EF500096C00100000000FE96C00100000000F015
3831:10EF6000F0B101000000004081B20100000000FA91
3832:10EF700096C00100000000FE96C001000030004B6A
3833:10EF8000948801000000004695F001000000004A4E
3834:10EF900096C001005E012E34978401000200004BF0
3835:10EFA000E4E5010064012040E1B10100090000072F
3836:10EFB00086E4010000002EA787C0010010000010A9
3837:10EFC00048C9010010000040F199010058010043B8
3838:10EFD000F0C9010058010005E0C90100000000442B
3839:10EFE00061B10100A00000A462DD0100FA8DA8401B
3840:10EFF000813200000000000548B101001A00004005
3841:10F000009798010008002E4095B00100028E204B19
3842:10F01000946C000000000040F1B10100FF8D004140
3843:10F0200095C000001080001042C90100098E2240E6
3844:10F03000E36D00000000004461B1010040000010D9
3845:10F0400062DD0100058EA840813200001B8400882B
3846:10F050001CB000000000000548B10100C597004049
3847:10F0600081300100D58D004081B200000C8000038A
3848:10F0700042C90100000000F886B00100000000F85D
3849:10F0800088B001000E8E424081320000118EA24CE9
3850:10F09000FD7F0000128E004CFD930000138E20F0C7
3851:10F0A000566F0000000000F056B3010000001A4047
3852:10F0B00081B201000080001044C9010064000040DA
3853:10F0C000F199010070000005F0C901000000004343
3854:10F0D000F0B101000000004761B101002000001004
3855:10F0E00062DD0100198EA844E0310000100000101C
3856:10F0F0008CC801000080004644C901004000004067
3857:10F10000F199010068010005F0C9010064000043A5
3858:10F11000F0C901000000004761B101000000004695
3859:10F1200062B10100218EA844E03100001B840088F8
3860:10F130001CB000000900000786E4010038002EA77B
3861:10F1400087C001008B002D0548B10100298E2243A4
3862:10F15000E77D00000000004445C101002C8E2244E0
3863:10F16000E77D00000000004C45C101000000004A9E
3864:10F1700019900100680120A2E4B10100880000405C
3865:10F1800043990100308E230BE56D00000000004123
3866:10F19000199001000080001044C901005000004097
3867:10F1A000F199010058010043F0C901005801000520
3868:10F1B000E0C901000000004461B10100000000103E
3869:10F1C00062B10100358EA840813200001B840088A6
3870:10F1D0001CB000005C002E0548B101000080000357
3871:10F1E00042C90100000060F096B00100C5970041DF
3872:10F1F00081300100D58D004081B20000408EA249CF
3873:10F20000197C00008600004047990100448E0040B0
3874:10F21000E5B1000086002F4919800100448EA2F25A
3875:10F22000803200008B00004047990100000000423E
3876:10F23000E7910100478EA246197C0000A000004023
3877:10F24000479901004B8E0040E5B10000A0002F4619
3878:10F25000198001004B8EA2F2803200008B0000402A
3879:10F260004799010000000041E7910100A80000401B
3880:10F270004399010034002DF024B00100000000FB90
3881:10F280000CB00100000000FB10B00100000000FB0A
3882:10F2900012B001000F0000F316880100040000F313
3883:10F2A00014F40100768E2640813200005E8E220A20
3884:10F2B000166C000058003D4313E00100000000F808
3885:10F2C00082B00100040022F084300000FD9800406C
3886:10F2D000813201001B8400881CB000000000000582
3887:10F2E00048B101000000004113C001005D8EA04341
3888:10F2F000136C00000000004013B00100538E004169
3889:10F3000015D00000768E220A8032000058003D435E
3890:10F3100013E00100000000F882B00100040022F0B8
3891:10F3200084300000FD980040813201004000204000
3892:10F33000E1B101001B8400881CB000000000000542
3893:10F3400048B10100768E22411550000000000041B6
3894:10F3500011C001006A8EA043116C00000000004043
3895:10F3600011B0010058003D4311E00100000000F819
3896:10F3700036B00100040022F0003000000000005010
3897:10F3800083B0010004980047613101001B840088AC
3898:10F390001CB00000749500054831010000000045D4
3899:10F3A00061B101004000001062DD0100728EA840D2
3900:10F3B000813200001B8400881CB00000668E0005AE
3901:10F3C00048B1000037002040E7B1010036980051F5
3902:10F3D00081300100D58D004081B2000034002E4103
3903:10F3E000F5B1010000110040E59901007E8E004852
3904:10F3F0001990000034002E41F5B1010000110040C9
3905:10F40000E59901000080000342C90100000000F8F6
3906:10F4100094B00100838E2245237C0000B0002FF0C1
3907:10F420008CB00100000060F08CC001009000004032
3908:10F430004399010035002DF08CB0010058003E4387
3909:10F44000E7E10100888E2248197C0000000000419D
3910:10F450008DC001000000680A8CC0010038002A4AF3
3911:10F46000E0B1010028000000E0C901003C00201BC1
3912:10F47000E0B101001080000342C90100000000F863
3913:10F4800038B00100000000F826B00100040022F8A6
3914:10F4900002300000968E2301146C0000000000F87A
3915:10F4A00080B00100000000F882B001004C0020F0A4
3916:10F4B000E4B1010044002040E0B1010048002041D7
3917:10F4C000E0B10100A8002D1032B00100399900F020
3918:10F4D000243001009F8EA244816C00009D8E224149
3919:10F4E000197C0000A09600403B300100C38EA208AA
3920:10F4F0003C3000009F8E004081B20000DD9500404E
3921:10F5000081320100C38EA2083C3000005000201C54
3922:10F51000E0B1010054002013E0B101004E002001D1
3923:10F52000E4B101004000200AE0B101003698005F1C
3924:10F5300081300100D58D004081B2000037000040CD
3925:10F54000479901007F9600F3943001007E8E224A95
3926:10F5500080320000AB8E004081B2000037000040D6
3927:10F56000479901007F9600F39430010058003E4314
3928:10F5700097E001000000001BF0B101001F006000D7
3929:10F58000008C0100D58D85118032000004800003BD
3930:10F5900042C90100B0002FF08CB00100000060F003
3931:10F5A0008CC001003698005F81300100D58D00408D
3932:10F5B00081B20000B58E004919800000BA8E224148
3933:10F5C000197C0000A09600403B300100BE8EA208CE
3934:10F5D0003C3000003698005F81300100D58D00403E
3935:10F5E00081B20000DD95004081320100BE8EA2088C
3936:10F5F0003C3000003698005F81300100D58D00401E
3937:10F6000081B2000050002D1032B0010054002DF0E6
3938:10F6100038B001004E002DF026B0010040002DF260
3939:10F6200002B00100000000F014B001003000001032
3940:10F630008CC801000080004644C9010068012D44C7
3941:10F6400061B10100100068F280C8010000000008EC
3942:10F65000F0B1010058010005E0C901000000000BF5
3943:10F6600037B001000000004036D001005C012E40A0
3944:10F6700010C001000000000680C001000000005220
3945:10F6800081D00100D18E2094816C0000CB97009432
3946:10F69000E5310100D28E004081B20000CB970040DE
3947:10F6A000E43101002000004662DD0100D28EA84056
3948:10F6B000233000000E00000F1E8C0100E28E8241FC
3949:10F6C000234000002080001042C90100DC8E22404F
3950:10F6D000E36D00000000004661B101004000001031
3951:10F6E00062DD0100D98EA840813200001B840088B1
3952:10F6F0001CB000000000001048B10100119600434A
3953:10F70000233001000000000548B101000000001096
3954:10F7100032B001000000004123B001000E00000FD4
3955:10F720001E8C01000080001944C90100EA8E2241AC
3956:10F73000197C0000E68EA3010C6C0000E78E000629
3957:10F7400004B000000000000104B00100E98E2002B6
3958:10F75000366C00000000001B04B00100ED8E0002BA
3959:10F76000F0B10000EC8EA3010C6C0000ED8E680679
3960:10F7700004B000000000680104B00100EF8E8008B2
3961:10F78000F0310000000000111E9001000000001C7C
3962:10F79000F0B101000000004661B10100011F001935
3963:10F7A00062DD0100F18EA813E0310000288F2202F3
3964:10F7B0001450000044002D020CD00100188FA2024A
3965:10F7C00002500000FF8E225C1F7C0000208000039E
3966:10F7D00042C90100FE8E2240E36D00000000004798
3967:10F7E00061B101004000001062DD0100FA8EA84006
3968:10F7F000813200001B8400881CB00000000000055E
3969:10F8000048B1010044002D5C1F80010048002DF02C
3970:10F8100038B001004C002DF026B0010038002FF266
3971:10F8200002B00100198F2201146C00000C8F2246D7
3972:10F830001F7C0000000000461F80010020002D03F7
3973:10F8400048B101000B8F2240E36D0000000000442E
3974:10F8500061B101004000001062DD0100088FA84086
3975:10F86000813200001B8400881CB0000038002F0586
3976:10F8700048B10100000000F894B0010038002DF0FC
3977:10F8800096B001000000004CE1C10100200000031F
3978:10F8900048C901000000224AF1B1010044000005FE
3979:10F8A000F0C901000000004AF0B101000000004B67
3980:10F8B000E0B101000000004761B10100A00000A418
3981:10F8C00062DD0100158FA85C1F100000198F000574
3982:10F8D00048B100000000000238C00100238F22065A
3983:10F8E000803200000000005033C00100218FA202CE
3984:10F8F000366C000004008F0D42310000100000F84B
3985:10F9000010C801000000005C11800100F0070040F9
3986:10F9100037980100D58E00A11AB000000000000247
3987:10F9200010C00100D58E000236D000005000201C0F
3988:10F93000E0B1010054002013E0B101004E002001AD
3989:10F94000E4B101004000200AE0B101002D8F005F0A
3990:10F9500001B0000037002D4601B00100040000F3A3
3991:10F9600080F401002C8FA043816C00000000005542
3992:10F9700001B0010040002040E1B101000080001909
3993:10F9800042C90100338F2240E36D000000000046B1
3994:10F9900061B101004000001962DD0100308FA84014
3995:10F9A000813200001B8400881CB0000011960010FA
3996:10F9B000483101003080001042C901003A8F2240D6
3997:10F9C000E36D00000000004461B101004000001040
3998:10F9D00062DD0100378FA840813200001B8400885F
3999:10F9E0001CB0000060012F0548B101000000000BB1
4000:10F9F000E4B101000000005017F001003F8F90F2C9
4001:10FA0000164000000000004117C001000000662001
4002:10FA100017A40100320000A62AC00100000000F275
4003:10FA20002A940100488F22491F7C000000000049F1
4004:10FA30001F8001000000004005B0010000F0000C34
4005:10FA4000188C01000B98004C95300100588F000075
4006:10FA500092B000004F8F2240AF6F000000C0001E28
4007:10FA600094DC01000000001596B001008898004069
4008:10FA7000053001004E8FA240976C0000618F004757
4009:10FA800019800000588F000092B000004F8F43484B
4010:10FA90006131000000D0001E62DD0100548F28405B
4011:10FAA00005300000508F2248777D0000578F0040BE
4012:10FAB00081B200000000001562B10100608F284093
4013:10FAC00081320000548F004081B2000000001B0012
4014:10FAD00092B001005D8F2241197C0000008000037C
4015:10FAE00042C90100E29500F8003001005A8FA2419E
4016:10FAF0003B500000618F004900B00000FF07001E6E
4017:10FB0000008C0100E295004081320100618F0049C4
4018:10FB100000B0000000001B4719800100648F225FC5
4019:10FB2000016C00006399004081320100B08A00003E
4020:10FB300080B000006B8F225C1F7C000020800003DF
4021:10FB400042C901006B8F2240E36D000000000047B6
4022:10FB500061B101004000001062DD0100688FA84023
4023:10FB6000813200001B8400881CB000006B8F4005B0
4024:10FB700048310000FFFF000794890100718F85CA9A
4025:10FB8000943000006399185C1F0001000E00000F04
4026:10FB90001E8C01007889004081B200003698180060
4027:10FBA00080300100D58D0047198000000000004022
4028:10FBB00019800100D58D2247197C0000DD95004099
4029:10FBC00081320100788FA20880320000D58D00407C
4030:10FBD00081B20000CB9700400D3001009C01004035
4031:10FBE00045990100FFFF000B988801008B002D5004
4032:10FBF00017F001007E8F904C16400000000000417D
4033:10FC000017C00100808F2243E77D00000000004400
4034:10FC100045C101000000662017A4010068010040F2
4035:10FC2000439901005C012EF280B001003E000040CB
4036:10FC300080CE0100878F2440813200000000004602
4037:10FC400081C00100888F0094E5B10000020062408D
4038:10FC50007ECD01000000005781C0010000002E1081
4039:10FC600048B1010003000040F08D010000000008D1
4040:10FC7000F0B1010058010005E0C901000000004496
4041:10FC800061B101000000001062B101008E8FA84038
4042:10FC9000813200001B8400881CB0000000000005B9
4043:10FCA00048B101009A8F2240AF6F00000040000869
4044:10FCB00094DC01008898004081320100988F224036
4045:10FCC000976C0000E295000800300100D58D0040DF
4046:10FCD00081B200000000004005B00100D58D004752
4047:10FCE000198000009A8F43486131000000500008DD
4048:10FCF00062DD0100A08F2840053000009B8F224864
4049:10FD0000777D0000E2951B0800300100D58D004092
4050:10FD100081B20000D58D1B471980000035000040DE
4051:10FD200047990100010063F384C80100A58FA04337
4052:10FD3000856C00000000634085B00100A800004011
4053:10FD40004399010037002FF024B00100010063F354
4054:10FD500082CC0100B08FA2419E060000D58D2244C6
4055:10FD600083700000360000404399010058003D4375
4056:10FD7000E7E10100D58D1FF0246C00006399004875
4057:10FD800081300100B08A2341836C0000B08A0047B3
4058:10FD900081B0000058003D4385E00100000000F8FC
4059:10FDA00036B00100000000F000B001002800004063
4060:10FDB0008398010004980047613101001B8400888A
4061:10FDC0001CB0000000002D0348B1010008002DF018
4062:10FDD00094B00100000000F88EB0010090002DF0FA
4063:10FDE00014B001000000000548B10100848EA2405B
4064:10FDF0008F7C0000BE8F22478F7C0000848E0048DD
4065:10FE0000199000002D90004081B2000036002D5D59
4066:10FE100005B4010037002DF380B00100000000F3AD
4067:10FE20008EB001005C003D4381E00100A8002DF090
4068:10FE300094B00100000000F024B001002000001088
4069:10FE400086DC01004080000344C90100E394004ABD
4070:10FE5000F031010036002F5C1F900100CC8FA250C2
4071:10FE60008F50000034002040E1B10100D58D0040EA
4072:10FE700081B200000000634181C00100CF8FA04328
4073:10FE8000816C00000000634081B001003700204712
4074:10FE9000E6B10100D58D2247803200000400004702
4075:10FEA0000CF401000000004F8F840100E48F224712
4076:10FEB0000C6C000058003D4381E00100E48F1FF00E
4077:10FEC000246C00000000005C1F8001000080001016
4078:10FED00042C90100DD8F2240E36D000000000045B3
4079:10FEE00061B101004000001062DD0100DA8FA8401E
4080:10FEF000813200001B8400881CB00000DD8F42406E
4081:10FF000005300000000000449393010000001A5DDA
4082:10FF100069930100E28F23410D6C0000BF8F000543
4083:10FF200048B100006399000548310100B08A0048DB
4084:10FF300081B00000D58D22408F6C00003698005FA4
4085:10FF400081300100D58D004081B20000A200004048
4086:10FF500043990100000000F384B00100A6002D4980
4087:10FF600019900100020000F280F40100B8002D4059
4088:10FF700081B20100000000F280C0010000000040DA
4089:10FF800082F801001900004081980100F38FA04021
4090:10FF9000826C00002C01004081980100F38FA34087
4091:10FFA000826C00000000004180B00100F58F204C01
4092:10FFB000856C00000000004185C0010086002040E3
4093:10FFC000E4B10100A2002042E6B10100D58D00405D
4094:10FFD00081B20000C597005081300100D58D0040EE
4095:10FFE00081B200000480000342C90100040022F035
4096:10FFF00080300000000000408DB0010055990040A5
4097:020000021000EC
4098:1000000087300100B0002F5C1F900100000060F0FD
4099:1000100080C001003698005F81300100D58D00401E
4100:1000200081B200000400004081B20000D58D22465C
4101:10003000197C0000A000004047990100010062F215
4102:1000400096CC0100D58DA640813200003698004A3A
4103:10005000813001000B98004695300100D58D00409D
4104:1000600081B20000D58D2249197C00008600004035
4105:1000700047990100010062F280CC0100D58DA640B5
4106:10008000813200003698004A813001000B98004709
4107:1000900095300100D58D004081B20000749500407C
4108:1000A00081320100D58D005C1F900000D58D00408D
4109:1000B00081B20000D58D004081B20000BA0000403E
4110:1000C00047990100010062F280C801001990904038
4111:1000D00080320000FFFF624081980100A4000040D0
4112:1000E00047990100D58D2240E56D0000D58D004176
4113:1000F000E5C10000C597004D81300100D58D00405D
4114:1001000081B200005C00004047990100040022F029
4115:100110009630000000000040E1B1010000800003C3
4116:1001200044C901000000004BE0B1010000000040A4
4117:100130008DB0010055990040873001008B000040D0
4118:1001400047990100299080F396300000000000409C
4119:10015000E78101000000004719900100D58D005C87
4120:100160001F9000003400004045990100010000404C
4121:10017000F599010000110040E5990100DD9500406E
4122:10018000813201003E90A20880320000370000401A
4123:1001900047990100000000F382B0010000006351A4
4124:1001A00083D001003400004047990100010063F34F
4125:1001B00084CC010036909F428032000000006342F0
4126:1001C00085B001000000004503F0010000000001BF
4127:1001D00000C001003890375C613100000000001B56
4128:1001E00062B101003990A84B191000000000000016
4129:1001F00062B101003B90A84081320000058A17409F
4130:1002000081B200000080000342C9010090002DF07F
4131:1002100094B00100AC002DF030B0010035002DF09D
4132:1002200028B0010058003E43E7E10100010000183A
4133:10023000F0C901000000004AE0B1010038002000D0
4134:10024000E0B101003C00201BE0B101004000204073
4135:10025000E1B10100000000402BB001001A980040FD
4136:100260000D3001000000001816C001004D90A014D0
4137:10027000164400000000004117C001000E0000A25B
4138:1002800044C9010000000018F8B10100B0002D14AD
4139:10029000F8B1010010500040879801005690224AA2
4140:1002A000197C00000030004386C801000030000BBC
4141:1002B00016C801005690A4408132000000000041A1
4142:1002C00017C0010001006E4386980100519800306C
4143:1002D000813001005A90A041174000000000004109
4144:1002E00017C001006190224A197C0000080000A29A
4145:1002F00044C90100CC002DABF9B10100000000ABF6
4146:1003000017C001006090A0F01644000000000041FA
4147:1003100017C00100000064F082B0010090000040AE
4148:10032000459901000000604131C00100BC0000405F
4149:10033000439901006790060C80320000A00020F273
4150:10034000E4B1010004000946191000009C010040BE
4151:1003500045990100FFFF000B988801008B002D508C
4152:1003600017F001006C90904C164000000000004116
4153:1003700017C001006E902243E77D0000000000449A
4154:1003800045C101000000662017A40100680100407B
4155:10039000439901005C012EF280B001003E00004054
4156:1003A00080CE01007590244081320000000000469C
4157:1003B00081C0010076900094E5B100000200624027
4158:1003C0007ECD01000000005781C0010000002E100A
4159:1003D00048B1010003000040F08D0100000000085A
4160:1003E000F0B1010058010005E0C90100000000441F
4161:1003F00061B101000000001062B101007C90A840D2
4162:10040000813200001B8400881CB000000000000541
4163:1004100048B1010086902240AF6F00000040000804
4164:1004200094DC010088980040813201008190A24054
4165:10043000976C000035000040479901008A90004009
4166:1004400005B000008690434861310000005000086C
4167:1004500062DD01008790A8400530000035001B4098
4168:1004600047990100010063F384C801008D90A04307
4169:10047000856C00000000634085B00100370000403B
4170:1004800047990100010063F382CC01008B0000401A
4171:100490004799010000000045E79101003698005F90
4172:1004A00081300100D58D004081B20000370000404E
4173:1004B000479901007F9600F3943001002D90224A65
4174:1004C00080320000AB8E004081B200003700004057
4175:1004D000479901007F9600F3943001007B8E224AF9
4176:1004E00080320000AB8E004081B200003600004038
4177:1004F00043990100000000FB12B001000F0000F35F
4178:1005000090880100040000F30CF40100A58E22067F
4179:10051000906C00005C003D4313E00100A8002DF04A
4180:1005200094B0010037002FF024B0010036002A50AB
4181:10053000E7D101000000634113C00100A790A04370
4182:10054000136C000000000040E7B10100E1940010CE
4183:10055000863001001B8400881CB00000A990420571
4184:10056000483100000000004493930100A58E1A5DFD
4185:100570006993000036002D1086B001005C003D43F9
4186:10058000E7E10100A8002DF094B0010035002FF044
4187:1005900024B0010001006BFB84C80100B490A043AB
4188:1005A000856C000035002040E7B1010000000040EC
4189:1005B00081B20100010063F312C80100B790A043AB
4190:1005C000136C000000000040E7B101004080000310
4191:1005D00044C90100E394004AF03101001B84008803
4192:1005E0001CB00000BA9042054831000000000044F1
4193:1005F0009393010000001A5D6993010037000040E9
4194:1006000047990100110063F382CC0100A98F2241B8
4195:100610009E060000350000404399010058003D430C
4196:10062000E7E10100000000F836B00100B38F00F0F0
4197:1006300000B000005E012D0548B10100C59047F2F1
4198:100640001230000000993F4213F00100CA90224787
4199:10065000E77D00006B841F881CB00000C490004040
4200:1006600081B2000000000047E791010000001F4236
4201:10067000199001007500004061990100CC90A8B16B
4202:100680000C3000005C970010943001001B8400883F
4203:100690001CB000005E012E0548B10100C0A83D4617
4204:1006A0000DE001000000004097B00100D69022400C
4205:1006B000E16D00000400024197400000D39000501B
4206:1006C00043C10000E290224B803200000000624BE8
4207:1006D000129401000900000796E40100000000A741
4208:1006E00097C001003000001094C801000080004A4B
4209:1006F0004499010000000042F1B101005E01004B8D
4210:10070000F0C901005E010005E0C9010000000044DD
4211:1007100061B101002000004A62DD0100E090A840C4
4212:10072000813200000080001044C901000000005028
4213:10073000F1B101000400000996E40100000068A87E
4214:1007400097C00100D4000005E0C90100000000448A
4215:1007500061B101000000001062B10100E890A84002
4216:10076000813200001B8400881CB0000000993F42C9
4217:1007700013F00100EC904740813200003F0000F38D
4218:100780009688010000000040E7B1010000001F55FD
4219:1007900061B101000000000662B10100F090A840C4
4220:1007A00081320000F590224B803200000000004BA7
4221:1007B00062B10100F390A840813200000000009770
4222:1007C00013B001000000009697B00100FB902009D3
4223:1007D000966C0000FB901F09962400006B84008833
4224:1007E0001CB00000F690004081B20000C597005791
4225:1007F00081300100C08D000548B100002E0000408E
4226:1008000043990100019122F380320000C597004214
4227:1008100081300100058A004081B200003698005204
4228:1008200081300100C08D004219800000C597003A58
4229:10083000813001003698005281300100C08D0040A7
4230:1008400081B200000000004005B00100DF960040CA
4231:1008500095300100C08D2240956C00000C91A240A3
4232:100860001F7C0000E295004081320100058A0040B3
4233:1008700081B200000480000342C90100000000F2C0
4234:1008800002B001008A960052953001009196004B0B
4235:1008900002B00000058A004081B200000A990040C1
4236:1008A000953001001891A208803200001891A2161C
4237:1008B00080320000058A2242197C00000000004BB3
4238:1008C00019900100C597003A81300100058A004067
4239:1008D00081B20000002300A616B001001B91831E08
4240:1008E000803200000008000B16DC01000000000050
4241:1008F0002AC001000E980008803001001F91005EA0
4242:10090000179000002F98004361310100EF940040E0
4243:100910008D300100169800071614010000800010A9
4244:1009200042C9010027912240E36D0000000000430E
4245:1009300061B101004000001062DD01002491A84077
4246:10094000813200001B8400881CB00000B797005E55
4247:1009500005100100E2950040813201002B9122092F
4248:10096000803000003698004013300100C58D00052E
4249:1009700048B100000F97004081320100C08D004057
4250:1009800081B200000000004A1F9001003291224312
4251:100990003D7C00000000004419900100000000436D
4252:1009A0003D800100339100421990000014002D4554
4253:1009B0001F9001008F91831E803200008F910044B0
4254:1009C00019900000D4950040813201004791A2089F
4255:1009D000803200004791A216803200004391A2426B
4256:1009E000197C00000082000204DC0100A098004095
4257:1009F00047990100E9890041893001004091A241F5
4258:100A0000197C0000E295004081320100058A004017
4259:100A100081B200008A960015943001009196004B37
4260:100A200002B00000058A004081B200000F9700402C
4261:100A3000813201000000004B19900100C597003A77
4262:100A400081300100058A004081B200004A912242B3
4263:100A5000197C00000F970040813201004B9100404B
4264:100A600081B20000DF96004081320100779122417F
4265:100A7000197C0000C000001598C801007791A00BF8
4266:100A8000996C00003000001080C801000080004018
4267:100A90004499010000000050F1B101000000000382
4268:100AA000F0B101000000004261B10100000000400F
4269:100AB00062B101005391A800E03100001B8400885E
4270:100AC0001CB000000000000548B10100C000001586
4271:100AD00098C8010030002E0B99D0010000006A5028
4272:100AE00099C00100C000620180CC01000C800003AD
4273:100AF00042C901002D002DF022B001000000004C81
4274:100B000080C001000000005C23800100D4003F4150
4275:100B1000E7E101000B000011E4F501002F00204780
4276:100B2000E7B501006491230B816C00000000004FC9
4277:100B3000E59101000000000880B001000000000BFA
4278:100B400003B001000000001502D001000E98000063
4279:100B50002A4001000000004361B101004000001084
4280:100B600062DD01006991A840813200001B84008889
4281:100B70001CB00000E295000548310100C0000001F2
4282:100B800080CE010075912611003000001000000099
4283:100B90002AC801000000000880B001000000000128
4284:100BA00080C00100C00000409998010000000001D1
4285:100BB00098D001000E98004C02300100C0000040A7
4286:100BC000039801007C91004081B2000030002F08A2
4287:100BD00080B00100C0000015F4C90100C000000190
4288:100BE000E4CD0100C0000040039801000E98000011
4289:100BF0002A400100819122441F7C0000AC002F405C
4290:100C000013B0010000000001E0C10100B00000408D
4291:100C10004799010082910001E0D10000EF9400406B
4292:100C20008D300100806300A616B001001698000701
4293:100C3000161401000080001042C901008A91224070
4294:100C4000E36D00000000004361B1010040000010AE
4295:100C500062DD01008791A840813200001B8400887A
4296:100C60001CB00000B797005E051001008D912209AD
4297:100C7000803000003698004081320100C08D0005B0
4298:100C800048B100008F91004A1F9000000000000052
4299:100C900010B0010024002D1510C0010028002DF017
4300:100CA00016B0010022002DF026B0010014002FF232
4301:100CB0000CB0010000000001E0D1010000000010B4
4302:100CC00032B001000000000B1BB0010004001F1532
4303:100CD0001A5000000000004023B001000000000195
4304:100CE0002AB001007197004035B000002F0020406D
4305:100CF000E7B10100D391A2451F7C00002400200B26
4306:100D0000E0B1010028002013E0B10100220020061C
4307:100D1000E4B10100A991225C1F7C00000000005C8E
4308:100D20001F8001003080001042C90100A9912240BB
4309:100D3000E36D00000000004761B1010040000010B9
4310:100D400062DD0100A591A840813200001B8400886B
4311:100D50001CB000000000000548B10100008000192F
4312:100D600042C90100CC912240E36D0000BA912242B9
4313:100D7000197C0000379700408132010089950040BE
4314:100D800081320100C791224B8032000000000043F5
4315:100D900061B101004000001062DD0100B091A84087
4316:100DA000813200001B8400881CB00000B6912241F3
4317:100DB000197C0000F895004011300100B791000542
4318:100DC00048B10000E295004081320100B99122094A
4319:100DD0008030000036980040813201006F8400406E
4320:100DE00005B0000037970040813201008595004032
4321:100DF000813201000000004361B101004000001099
4322:100E000062DD0100BD91A840813200001B84008892
4323:100E10001CB00000C3912241197C0000F8950040ED
4324:100E200011300100C491000548B10000E295004076
4325:100E300081320100C69122098030000036980040BE
4326:100E4000813201006F84004005B0000000000043C3
4327:100E500061B101004000001062DD0100C891A840AE
4328:100E6000813200001B8400881CB0000000000005D7
4329:100E700048B10100CF912241197C0000F895004053
4330:100E800011300100D091000548B10000E29500400A
4331:100E900081320100D2912209803000003698004052
4332:100EA00013300100C58D004005B00000008000191E
4333:100EB00042C90100DA912240E36D000000000043C6
4334:100EC00061B101004000001062DD0100D691A84030
4335:100ED000813200001B8400881CB000000000000567
4336:100EE00048B101000000004005B00100DE91224140
4337:100EF000197C0000F895004011300100DF910005D9
4338:100F000048B10000E29500408132010008002D0A3E
4339:100F100084B00100000000F082B001001400204005
4340:100F2000E1B10100E491031E80320000E59100412F
4341:100F300087B0000021000040879801000097004022
4342:100F4000813201000000005C1F900100E99122093C
4343:100F5000803000003698004013300100EC912244AC
4344:100F6000197C00003698004F8130010000000044D9
4345:100F700019800100C08DA24A1F7C0000C58D004071
4346:100F800081B20000BA002040E5B10100F2919C1747
4347:100F900080320000CC0000404399010013990040CA
4348:100FA00081320100A398004013300100C0000040CE
4349:100FB00043990100C4002DF082B00100EE9800F0CA
4350:100FC00084300100E295004081320100C58D220984
4351:100FD000803000003698004013300100C58D00407D
4352:100FE00081B200002E00004043990100FE91224092
4353:100FF000E76D000032000040439901000692A240D4
4354:10100000E56D0000CC960040813201002400200BE9
4355:10101000E0B1010028002013E0B101002200200609
4356:10102000E4B101001400200AE0B10100C58D2209DD
4357:10103000803000003698004013300100C58D00401C
4358:1010400081B20000CC9600408132010085960040BC
4359:101050008132010014922241197C00000000000B33
4360:1010600099B0010004001F1598500000149220014F
4361:10107000986C00007000000348C9010000002E4673
4362:101080001F90010000000050F1B1010000000003BA
4363:10109000F0B101000000004261B10100A00000A415
4364:1010A00062DD01001192A800E0310000000000059F
4365:1010B00048B10100AC002F0010B001000000000199
4366:1010C000E0C1010014002F1510C001000000000A4B
4367:1010D00080B001000000600180D0010000000047E6
4368:1010E000199001009691220980320000369800097B
4369:1010F000803001009691004013B000000080000392
4370:1011000042C90100000000F082B00100130000405D
4371:10111000879801000000004C43C10100009700F0D7
4372:1011200084300100C08D005C1F9000002C00204026
4373:10113000E7B101002D002040E7B10100C08D004261
4374:1011400019800000F2960040813201000B9800489F
4375:10115000953001000000004561B101004000001021
4376:1011600062DD01002992A840133000001B84008832
4377:101170001CB000002F92000548B100002E920040E4
4378:1011800013B000000000000012B001000800004091
4379:101190004399010014002DF082B00100040022F0F8
4380:1011A0008430000013000040879801000097004041
4381:1011B000813201000000005C1F900100479200098D
4382:1011C00000B00000C08D8742191000008B002F472F
4383:1011D00019800100C08D0040E79100002F00004001
4384:1011E0004799010045922247E77D0000669500403F
4385:1011F000E731010045922200803200004092A24077
4386:101200001F7C0000E29500408132010045920040C1
4387:1012100081B20000300000404399010032002DF2FD
4388:1012200094B001008A9600F2023001009196004BC2
4389:1012300002B000000000000548B1010046920040E5
4390:1012400001B000000000004005B001004C922200F7
4391:10125000803200004B92A242197C0000DF960040D1
4392:10126000813201004C92004081B200000F97004093
4393:1012700081320100D892225C1F7C00000000005CDB
4394:101280001F8001000080001042C9010054922240DA
4395:10129000E36D00000000004561B101004000001056
4396:1012A00062DD01005192A840813200001B84008859
4397:1012B0001CB00000D892000548B10000D495004051
4398:1012C000813201005B92A208803200005B92A2167C
4399:1012D00080320000C597004D81300100008200027D
4400:1012E00004DC0100058A004081B200007400004067
4401:1012F00043990100000000F882B00100000000F0F6
4402:1013000084B001000000004196B0010069922242C1
4403:10131000961400000080001044C901006400684079
4404:101320009798010000000041F0B101000000004268
4405:10133000F0B1010070000005E0C9010000000045A7
4406:1013400061B101002000001062DD01006692A8403A
4407:10135000813200000000005C1F9001000000004589
4408:1013600061B101004000001062DD01006A92A85CDA
4409:101370001F0000001B8400881CB000005E012D05CA
4410:1013800048B101006E9247F21230000000993F42CE
4411:1013900013F0010073922247E77D00006B841F88E1
4412:1013A0001CB000006D92004081B2000000000047B8
4413:1013B000E791010004001F0996E40100008000107D
4414:1013C00044C9010000000044F1B10100000068A818
4415:1013D00097C0010000000003E0B10100008000039D
4416:1013E000449901000000004461B1010000000010B8
4417:1013F00062B101007B92A840E13100001B840088AB
4418:101400001CB0000000993F4213F001007F92470595
4419:10141000483100003F0000F39688010000000040C2
4420:10142000E7B1010000001F4081B201008792224B0A
4421:10143000803200000000005561B101000000004B47
4422:1014400062B101008592A8408132000000000007CF
4423:1014500016B001000062000B16DC0100669500402A
4424:10146000813201009F922200803200001597005FB8
4425:101470000110010089922240956C0000008000104C
4426:1014800044C9010000000050F1B101000000000358
4427:10149000F0B101000000004261B101000000001045
4428:1014A00062B101009192A800E03100001B84008825
4429:1014B0001CB000000000000548B1010004800003DA
4430:1014C00042C90100000000F202B001008A960052F9
4431:1014D00095300100E295004081320100899222415D
4432:1014E000975000000C80000342C90100000000F08A
4433:1014F00000B001000000005C018001009196004BEB
4434:1015000002B000008992000548B100001698004022
4435:10151000033001001780000344C9010000F0000CF3
4436:10152000968801000000634C97F0010010800003D2
4437:1015300044C90100000000ABE1B10100B797005EB3
4438:1015400005100100030000071AF40100070000075E
4439:101550001688010000B5000D46C90100A99230406F
4440:10156000813200000000000BE681010000B7000D91
4441:1015700046C901000000000BE68101001000100FB9
4442:1015800094F40100E999005F950401006B96004016
4443:1015900081320100B3922250FD7F0000B19243409E
4444:1015A0008132000000001B4131D3010000002E05F4
4445:1015B00048B1010000000040E1B10100000000401E
4446:1015C0000FB00100CD95004181300100058A004037
4447:1015D00081B20000D495004081320100C592A2087A
4448:1015E00080320000C592A216803200000082000204
4449:1015F00004DC01000000004503F0010000000001D0
4450:1016000000C00100BE92375C613100000000001B89
4451:1016100062B10100C292284081320000BF920040B6
4452:1016200081B200000000000062B10100C292A84037
4453:1016300081320000058A174081B200007400224008
4454:10164000F1B1010000000040E1B101000B98004A37
4455:1016500095300100F296005C1F1001005B92004083
4456:1016600081B200002F00004047990100D692224726
4457:10167000E77D000066950040E7310100D692220028
4458:1016800080320000D192A2401F7C0000E295004011
4459:1016900081320100D692004081B20000300000404B
4460:1016A0004399010032002DF294B001008A9600F2B5
4461:1016B000023001009196004B02B0000000000005CE
4462:1016C00048B101000B98004895300100F296005C8B
4463:1016D0001F100100DB928742191000008B002F477A
4464:1016E0001980010000000040E79101003698004297
4465:1016F00081300100C08D004081B20000F2960040B0
4466:1017000081320100C08D005C1F900000BA002040B3
4467:10171000E5B10100A398004081320100C000004003
4468:1017200043990100C4002DF082B00100EE9800F052
4469:1017300084300100E2950040813201003698004576
4470:1017400081300100C08D2242197C0000C597003A0B
4471:1017500081300100C08D004081B2000004000040D3
4472:1017600081B20000D495004081320100F092A208BD
4473:1017700080320000F092A21680320000C597004728
4474:10178000803001000082000204DC0100058A004074
4475:1017900081B200001080000344C9010000E100A6EE
4476:1017A00084B0010000000040F1B1010000000040E1
4477:1017B000F1B101000000600784940100B797005E5A
4478:1017C00005100100C08D004081B200008A00004079
4479:1017D00047990100E2950041E7410100C58D0040B5
4480:1017E00081B20000CC960040813201008596004015
4481:1017F00081320100000000012CB001000000001542
4482:1018000010B001000000000010C0010004001F0A19
4483:101810002C5000000000001032B001000700000B47
4484:10182000968801000C932647972400000000004191
4485:1018300097C001000C93234B0C6C00004998004B9F
4486:10184000043001000000005033C00100000000021D
4487:1018500010C001000000000216C0010000000006D8
4488:1018600004B001004998004B045001000D93004062
4489:1018700081B2000049980006043001001393A24889
4490:101880001F7C0000119384481F100000AC00004032
4491:10189000479901001393000AE0C100000000000A0C
4492:1018A00002B00100EF9400018C3001000000004301
4493:1018B00061B101004000001062DD01001493A840F6
4494:1018C000813200001B8400881CB00000000000056D
4495:1018D00048B101000000000210C00100219322065F
4496:1018E000145000003A9700451F0001000093225C4D
4497:1018F0001F7C00000000004761B1010040000010A3
4498:1019000062DD01001D93A85C1F0000001B8400889D
4499:101910001CB000000093000548B100000000000B5F
4500:101920001BB0010008002D4085B00100000000F050
4501:1019300082B001000000004005B0010000970041A6
4502:10194000873001000000004561B101004000001037
4503:1019500062DD01002793A840813200001B840088CB
4504:101960001CB000000000000548B101002D932209C1
4505:10197000803000003698004013300100319322443B
4506:10198000197C00003698004F813001003193A24746
4507:101990001F7C00000000004419800100FF070008C0
4508:1019A000008C01003F93224A1F7C00003793A2164F
4509:1019B00002300000E2950040813201002F002040FB
4510:1019C000E7B10100C08D004081B200002D002D085C
4511:1019D0002AB001003B932242197C00000F9700407F
4512:1019E000813201003C93004081B20000DF9600404C
4513:1019F0008132010030002E002AD0010032002A1569
4514:101A0000E4B10100C08D0016E4B10000529322162B
4515:101A100002300000000000082AB001000A990040CE
4516:101A2000953001004493A240116C00005393224072
4517:101A30002D6C0000AC00004047990100B0002B0164
4518:101A4000E0C10100002B00A616B00100000000015B
4519:101A5000E0D101000E980008803001004B93005E39
4520:101A6000179000002F9800436131010000000043EF
4521:101A700061B101004000001062DD01004C93A840FC
4522:101A8000813200001B8400881CB0000000000005AB
4523:101A900048B101001698000716140100B797005EC0
4524:101AA00005100100E2950040813201002F00204026
4525:101AB000E7B10100C58D004081B200000000000BBD
4526:101AC0001BB0010004001F151A500000609320167F
4527:101AD0001A6C00007000000348C901000000225089
4528:101AE000F1B1010000000003F0B1010000000000AE
4529:101AF000E0B101000000004261B10100A00000A4BB
4530:101B000062DD01005D93A8461F1000000000000583
4531:101B100048B101000000000010B0010000000015F5
4532:101B200010C001000000000A2AB001000000000AF5
4533:101B30002CD00100AC002F4023B0010067938445F6
4534:101B40001F1000006893000AE0C100000000000AB6
4535:101B500002B001007197004035B00000008000190C
4536:101B600042C9010070932240E36D00000000004371
4537:101B700061B101004000001062DD01006C93A840DB
4538:101B8000813200001B8400881CB0000000000005AA
4539:101B900048B101008093A2021A50000081932240B4
4540:101BA0002D6C00000080001044C9010000000050AE
4541:101BB000F1B1010000000003F0B10100FF070008CF
4542:101BC000E08D01000000004261B101000000001042
4543:101BD00062B101007793A840813200001B84008825
4544:101BE0001CB000000000000548B101002F00204794
4545:101BF000E7B501000C80000342C90100100000F0AD
4546:101C000010C80100F00700401B9801008193005CA0
4547:101C1000118000000000000210C00100F895004093
4548:101C20001F0001000000000548B101008593230D4D
4549:101C30002C6C0000000000401F9001008E93224693
4550:101C40001F7C0000000000461F8001007080000320
4551:101C500042C901008E932240E36D00000000004263
4552:101C600061B101004000001062DD01008A93A840CC
4553:101C7000813200001B8400881CB0000000000005B9
4554:101C800048B1010008002D4085B00100000000F0BF
4555:101C900082B001000000004005B001000097004143
4556:101CA000873001000000004561B1010040000010D4
4557:101CB00062DD01009393A840813200001B840088FC
4558:101CC0001CB000000000000548B1010099932209F2
4559:101CD0008030000036980040133001009D9322446C
4560:101CE000197C00003698004F813001009D93A24777
4561:101CF0001F7C00000000004419800100FF0700085D
4562:101D0000008C0100B293224A1F7C0000A393A2160C
4563:101D100002300000E2950040813201002F00204097
4564:101D2000E7B10100C08D004081B200002D002D08F8
4565:101D30002AB00100AE932242197C0000A793A2F3BF
4566:101D400084300000000000A585B0010000000041C3
4567:101D500085D00100D4003E4185E00100AB932240D4
4568:101D60001F7C00000000005A119001000B000008C9
4569:101D7000E4F501000F97004081320100AF9300406D
4570:101D800081B20000DF9600408132010030002E0059
4571:101D90002AD0010032002A15E4B10100C08D0016DE
4572:101DA000E4B10000B593A21602300000E2950040B5
4573:101DB000813201000494004081B200002D002D0802
4574:101DC0002AB00100C39322471F7C0000BF93224228
4575:101DD000197C0000BA93A2F384300000000000A533
4576:101DE00085B001000000004185D00100D4003E41D3
4577:101DF00085E00100BE9322401F7C00000000005AD5
4578:101E0000119001000B000008E4F5010058012D00BD
4579:101E10002AD0010060012DF010B00100000000F098
4580:101E20002CB001004791004081B200000A990041A6
4581:101E300095300100CB93A20880320000CB93A2160C
4582:101E4000803200000000004197B00100C993230DCB
4583:101E5000026C00000000004197C001009196004B09
4584:101E600002B000000494000548B10000AC002F014E
4585:101E700014B00100B0002B01E0C10100002B00A64E
4586:101E800016B0010000000001E0D10100DB93230D3A
4587:101E9000026C00000080001044C9010000000050E6
4588:101EA000F1B1010000000003F0B1010000000042A8
4589:101EB00061B101000000001062B10100D493A800DC
4590:101EC000E03100001B8400881CB000000000000509
4591:101ED00048B101000C80000342C90100100000F06D
4592:101EE00022C801000000005C238001000000000106
4593:101EF00084B00100DE93230D026C00000000000D91
4594:101F000002B001000000000880B00100E39322400D
4595:101F10001B6C00000E98000184500100EB932240DE
4596:101F2000856C00000000000180C0010010800010DE
4597:101F300046C901000000004F43810100000000423B
4598:101F4000F0B1010020000040F0C9010000000016BF
4599:101F5000F0B101000000004361B10100A00000A148
4600:101F600062DD0100E993A811E0310000FA93005E00
4601:101F700017900000EE93230D026C00000000000D8E
4602:101F800002B001000000000184D00100F393224060
4603:101F90001B6C00002F98004361310100FA9322402E
4604:101FA000856C00000000000112C0010010800010CC
4605:101FB00046C901000000004F4381010000000042BB
4606:101FC000F0B1010000000009F0B1010000000018AC
4607:101FD000F0B10100A00000A162DD0100F893A8119A
4608:101FE000E03100000000004361B10100400000103A
4609:101FF00062DD0100FB93A80A023000001B84008808
4610:102000001CB00000E2950005483101000294230D48
4611:10201000026C0000FF070011008C0100E2950040F7
4612:10202000813201001698000716140100B797005E70
4613:10203000051001002F002040E7B10100C58D0040D0
4614:1020400081B200000080000342C90100000000F8D6
4615:1020500082B00100000000F88CB00100000000F028
4616:102060008EB00100C996004013300100000000400E
4617:1020700085B001000097004187300100859600403F
4618:10208000813201000080001042C9010015942240F5
4619:10209000E36D00000000004561B101004000001048
4620:1020A00062DD01001194A840813200001B84008889
4621:1020B0001CB000000000000548B10100179422097F
4622:1020C0008030000036980040133001000000000B03
4623:1020D0001BB00100000000151AD001001E94A2419F
4624:1020E000197C00000A99004095300100000000169C
4625:1020F00080B201002794270880320000449300003A
4626:102100002AC000000A990041953001000000001625
4627:1021100080B201002294270880320000CB93000097
4628:102120002AC000000000004197B001002594230D53
4629:10213000026C00000000004197C001009196004B26
4630:1021400002B000000000000548B10100C08D22422D
4631:10215000197C0000C597003A81300100C08D004015
4632:1021600081B200002B94004A1F9000000A960000E4
4633:10217000103001000000001510C001000000001028
4634:1021800032B001000700000B968801003994264701
4635:10219000972400000000004197C001003994234BB0
4636:1021A0000C6C00004998004B043001000000005006
4637:1021B00033C001000000000210C001000000000256
4638:1021C00016C001000000000604B001004998004B51
4639:1021D000045001003A94004081B200004998000682
4640:1021E000043001003F94A2441F7C00000000000B5B
4641:1021F0001BB001000000000A2CD001000000000A02
4642:1022000002B00100EF9400018C3001000080001941
4643:1022100042C9010046942240E36D000000000043E3
4644:1022200061B101004000001062DD01004294A8404D
4645:10223000813200001B8400881CB0000000000005F3
4646:1022400048B101000000000210C001004F942206B6
4647:10225000145000003A9700451F0001002D94225CA5
4648:102260001F7C00000000004761B101004000001029
4649:1022700062DD01004B94A85C1F0000001B840088F5
4650:102280001CB000002D94000548B1000008002D404E
4651:1022900085B00100000000F082B0010000000040A5
4652:1022A00005B00100009700418730010000000045A3
4653:1022B00061B101004000001062DD01005494A840AB
4654:1022C000813200001B8400881CB000000000000563
4655:1022D00048B101005A94220980300000369800402D
4656:1022E000133001005D942244197C00003698004FA1
4657:1022F000813001000000004419800100FF07000840
4658:10230000008C01006B94224A1F7C00006394A2168B
4659:1023100002300000E2950040813201002F00204091
4660:10232000E7B10100C08D004081B200002D002D08F2
4661:102330002AB0010067942242197C00000F970040E8
4662:10234000813201006894004081B20000DF960040B5
4663:102350008132010030002E002AD0010032002A15FF
4664:10236000E4B10100C08D0016E4B100004093A21654
4665:1023700002300000E2950040813201002F00204031
4666:10238000E7B10100C58D004081B200000A96004A05
4667:102390001F1001005593001032B000008A00204049
4668:1023A000E7B101007594A241197C0000E29500405C
4669:1023B000813201007894004081B200008A960015B5
4670:1023C000943001009196004B02B00000000000051F
4671:1023D00048B101007A942242197C0000C597003A66
4672:1023E000813001003698004581300100C08D0040E9
4673:1023F00081B20000069200451F900000CC9600407C
4674:102400008132010085960040813201005593000120
4675:102410002CB00000D4950040813201008D94A208B8
4676:10242000803200008D94A2168032000000820002EB
4677:1024300004DC01000000004503F001000000000181
4678:1024400000C001008694375C613100000000001B71
4679:1024500062B101008A9428408132000087940040D4
4680:1024600081B200000000000062B101008A94A8401F
4681:1024700081320000058A174081B20000580120080F
4682:10248000E0B1010060012016E0B10100CC960047E8
4683:102490001F10010085960040813201005593000114
4684:1024A0002CB00000D49500471F100100A094A20892
4685:1024B00080320000A094A216803200009C94A242B8
4686:1024C000197C00000082000204DC0100A09800409A
4687:1024D00047990100E9890041893001008A96001579
4688:1024E000943001009196004B02B00000058A004034
4689:1024F00081B200000F970040813201000000004BC4
4690:1025000019900100C597003A81300100058A00400A
4691:1025100081B2000058012008E0B1010060012016DE
4692:10252000E0B101000A9600103230010055930040DE
4693:1025300013B00000D495004081320100B194A2088C
4694:1025400080320000B194A2168032000000820002A6
4695:1025500004DC01000000004503F001000000000160
4696:1025600000C00100AA94375C613100000000001B2C
4697:1025700062B10100AE94284081320000AB9400406B
4698:1025800081B200000000000062B10100AE94A840DA
4699:1025900081320000058A174081B2000000800003EC
4700:1025A00042C90100000000F882B00100000000F8FC
4701:1025B0008CB00100000000F08EB00100C996004010
4702:1025C000133001000000004085B001000097004179
4703:1025D00087300100859600408132010000800010A4
4704:1025E00042C90100C0942240E36D00000000004594
4705:1025F00061B101004000001062DD0100BC94A84000
4706:10260000813200001B8400881CB00000000000051F
4707:1026100048B10100479122098030000036980040FF
4708:10262000133001004791004081B2000014002D4595
4709:102630001F9001008F91004419900000C894A2419E
4710:10264000197C00000000004A1F900100FA9200402F
4711:1026500081B20000CC96004A1F1001008596004010
4712:1026600081320100559300012CB000000A96004011
4713:10267000813201005593001032B0000006920045EF
4714:102680001F9000000000004137C30100000000411E
4715:1026900033C301003600000102CC01000000D2402B
4716:1026A00081B20000D49485178032000000009F485A
4717:1026B00003D00000D6949C178032000000009F4C8D
4718:1026C00003D000000000800134C3010002002D117E
4719:1026D00010C10000DB94004043C10000DB940050B7
4720:1026E00043C10000200000A142C90100DF94224044
4721:1026F000E56D00000400A240E57D00000000004000
4722:1027000023B00100000080491F9001000000A24199
4723:1027100023D00000DB94005043D100004080000330
4724:1027200044C901000000004AF0B10100000000406F
4725:10273000F1B1010000000012F0B10100E695004186
4726:10274000E13101000080004344C901001000004055
4727:10275000F199010000000048F0B1010000000049BB
4728:10276000F0B1010040000003E0C901000000004595
4729:1027700061B101000000004362B101000000A84007
4730:1027800081B20000EC94004081B20000BA00204009
4731:10279000E5B10100B0002F018CD00100000000461F
4732:1027A000E0C10100AC002F4013B00100CC002D01AE
4733:1027B000E0C10100F6949C1780320000139900409C
4734:1027C00081320100F8942247197C00000000005F6C
4735:1027D00013900100A398004719100100C0002D4478
4736:1027E0001F900100C4002DF082B00100EE9800F0AF
4737:1027F00084B0000090002D0548B101000D95A24B5A
4738:102800001F7C00006095A24C1F7C00000D951F1CD2
4739:10281000E06D00001095A20180320000A8002D4656
4740:102820008FB0010006951F1CE06D0000B400004051
4741:1028300043990100089522F03A6C00005D951FF065
4742:102840003A6C00000000A24080B200000000804FFF
4743:102850008FB001008A000040439901005E9520423C
4744:10286000E76D00000C952240803200000000805986
4745:102870008FB00100000080588FB001000F952240FA
4746:10288000803200000000805C8FB001000000805B9F
4747:102890008FB00100AC00004043990100B0002DF062
4748:1028A00084B001001495A242246C00001D9523F011
4749:1028B000026C00001A95A2F0803200005F95A242DF
4750:1028C000246C00005F95A241036C00001995A240A2
4751:1028D00080320000000080518FB001000000805263
4752:1028E0008FB001005F951F12845000005F95A0011A
4753:1028F000846C00000D95004081B200008B00004008
4754:10290000439901004895A246E77D0000140000406D
4755:10291000439901003A9522F0143000002695200AD0
4756:10292000026C00003795031E803200002595A240FE
4757:1029300080320000000080448FB001000000804918
4758:102940008FB001002B95220A026C00002E95A24147
4759:10295000197C00002A95A2408032000000008055BA
4760:102960008FB00100000080568FB001002D95A2406D
4761:1029700080320000000080438FB0010000008048DA
4762:102980008FB001000000000182B001000000000AC9
4763:1029900082D0010034952091836C00003395A240D1
4764:1029A00080320000260080408F9801002700804080
4765:1029B0008F9801003695A240803200001F008040B1
4766:1029C0008F980100200080408F9801003995A24027
4767:1029D00080320000220080408F9801002300804058
4768:1029E0008F98010088002D448FB001004395A241CB
4769:1029F000197C00004095A2433D7C00004095A2F266
4770:102A0000026C00000000A24080B20000000080497B
4771:102A10008FB001004295A240803200000000804348
4772:102A20008FB00100000080488FB001004095A09158
4773:102A3000036C00003E9522433D7C00004795A24078
4774:102A400080320000280080408F98010029008040DB
4775:102A50008F98010014000040439901005195A2F0A5
4776:102A60001430000088002D448FB001004E95A2F272
4777:102A7000026C00000000A24080B20000000080490B
4778:102A80008FB0010040952241197C00003E952091B5
4779:102A9000036C00004095004081B200005595200A6B
4780:102AA000026C00005495A240803200000000804477
4781:102AB0008FB00100000080498FB001005A95220AB2
4782:102AC000026C00002E95A241197C00005995A2408D
4783:102AD00080320000000080558FB001000000805659
4784:102AE0008FB001005C95A24080320000000080435E
4785:102AF0008FB00100000080488FB001006295004354
4786:102B000095B000006295004195B0000062950042CA
4787:102B100095B000006295004495B000006295004CAD
4788:102B200095B000000B980040813201006595A240ED
4789:102B3000803200000000804B8FB001000000804C0C
4790:102B40008FB001002D000040439901002E002FF3AB
4791:102B500084B001006A95A2F3963000000000804026
4792:102B600001B001002D002A41E7D10100D4003D4110
4793:102B700085E001000B0000F200E401007095225A8C
4794:102B8000017C0000000000401F9001007195005A78
4795:102B900001800000000000401F8001000000634130
4796:102BA00085C001000000A0A5856C01000000E34085
4797:102BB00085B001000C80000342C9010012000040F2
4798:102BC00087980100559900F08CB000007E95224056
4799:102BD0000F6C000000002F0548B101007B95A24B4F
4800:102BE000197C00007C9522F0186C00000000604BFE
4801:102BF0001990010048960007103001006F840040D2
4802:102C000005B000008095225A1F7C0000CD95004041
4803:102C1000813001006F84004005B0000000002F05E6
4804:102C200048B101000000604B199001004896000770
4805:102C3000103001006F84004005B0000000002F0537
4806:102C400048B101000000604B199001004896000750
4807:102C5000103001000000804005B00100899533402C
4808:102C6000813200008C95A1AD952000009A9513400B
4809:102C700081B200000000134A5A8301003000394538
4810:102C800095E001001F00000F5ED801000000005A0F
4811:102C90005F9001000000004045B00100000000040A
4812:102CA00048B00100000000054AB001000000000C1F
4813:102CB00058B00100000000074EB001001886004027
4814:102CC0005D9801000000005861B101000000004A59
4815:102CD00062B101000000A84197B000009795004044
4816:102CE00081B200000000804097B001009B9544072E
4817:102CF00096300000FFFF004B8489010000001CC2D9
4818:102D000024B00100A595A245257C00009F953120A7
4819:102D100085300000A6952212487F000067981112A6
4820:102D2000480301001000001296E401000000004B6F
4821:102D30001E9401000000805A1F900100A5953140AB
4822:102D400081320000000000B424B00100A6952212D8
4823:102D5000487F0000679800408132010000002F0585
4824:102D600048B10100B3950BF084300000000011124F
4825:102D700048830100B0952250857000005E0100403C
4826:102D800043990100679700F296300100E99900121B
4827:102D9000943001000000005A1F9001001000001242
4828:102DA00096E401000000804B1E94010010000042D8
4829:102DB00010F4010000B73F4311F0010007000008C4
4830:102DC0008A880100B69530A10C300000B9952245E3
4831:102DD000E67D0000A695104081B2000000002A4563
4832:102DE000E69101000000101248830100000011402C
4833:102DF00081B201000000604B858001005E0100404F
4834:102E000043990100679700F296300100008000109E
4835:102E100044C90100D8000040819801002E002D0512
4836:102E200048B10100C4952240E76D000080000040D9
4837:102E300080C8010000000040F0B101000900000856
4838:102E400086E40100000068A787C00100000000447C
4839:102E500061B101000000001062B10100C895A80531
4840:102E6000E03100001000001296E401000014004B55
4841:102E700096DC01000000804B1E9401001000000F42
4842:102E800084F401001F00004284880100D195224093
4843:102E900080320000D295004268B10000000000427C
4844:102EA0006AB10100D295315A1F0000000000914222
4845:102EB00048930100D4953540813200006D000040F8
4846:102EC00061990100DA9528B12C300000D595224D8A
4847:102ED000757D0000000000402DB00100000095400D
4848:102EE00011B001006D00004061990100DA95A8B1B0
4849:102EF000103000000000954081B201007F000040CA
4850:102F000061990100E19528B110300000DD959FBA6C
4851:102F1000803200000000804011B0010000008024D9
4852:102F2000118401000000005F61B101000010000089
4853:102F300062DD01000000A84081B20000E39500407E
4854:102F400081B20000AC94004047990100E7953240FF
4855:102F500081320000ED9522F896300000000000F864
4856:102F600090B00100000000F092B001000100004BA1
4857:102F7000F0CD010020009248E0C901006C00004043
4858:102F800061990100F19528B192300000ED95224C35
4859:102F9000757D00000400124091B000006C000040FC
4860:102FA00061990100F195A8B190300000FF00004840
4861:102FB000968801000000004B90D001000100004BFA
4862:102FC000F0CD010020000048F0C901000000924946
4863:102FD000E0B101000C002D1048B10100FF0700080E
4864:102FE000828C0100FF0700F0008C01000000A2416C
4865:102FF00000EC0000FE95221A006C0000E295000033
4866:10300000343001000000005049C10100FA95A2418E
4867:10301000235000000000804081B201000C002D1000
4868:1030200048B10100FF070015828C0100FF0700F086
4869:10303000008C01000000A24100EC00000796220D68
4870:10304000006C0000E29500001A3001000000005002
4871:1030500049C101000396A2412350000000008040B6
4872:1030600081B201000C96831E8032000000000044F3
4873:103070001990010024002D012CB0010028002DF032
4874:1030800016B0010022002DF026B0010014002FF22E
4875:103090000CB0010000008040E1B1010002002D11E0
4876:1030A00010C100001596004043C100001596005065
4877:1030B00043C10000200000A142C901001A9622402D
4878:1030C000F56D00000000004243D101000400A24061
4879:1030D000E57D00000000004023B0010000008049B1
4880:1030E0001F9001001D9622111E7C00001F96A0F06B
4881:1030F000164000001F96004117C000001F96A0F464
4882:10310000164000000000004117C001000000A2416D
4883:1031100023D000001596005243D1000000B5000DE9
4884:1031200042C9010022963047170400002596A20BE1
4885:10313000E67D00000000904281B0010000B7000D64
4886:1031400046C901002996A20BE67D00000000000B95
4887:10315000E69101000000904181B0010000001040A4
4888:1031600081B201002A96400796300000F399004092
4889:10317000813201003496A245957C000001973F41C1
4890:1031800095E00100000000F396B001000000004E41
4891:10319000E6B1010040973E4097E001000000004E7C
4892:1031A000E6B1010040973E409DE001004796003B9C
4893:1031B000E7B1000034963040813200003E96A20B09
4894:1031C000E67D000000B5000D46C901003A96A20B4D
4895:1031D000E67D00000000104081B20100000098422E
4896:1031E00081B0010000B7000D46C901000000000BCE
4897:1031F000E69101000000104081B2010000009841FA
4898:1032000081B00100040021A2952000000000104AB6
4899:103210004483010000973E4195E001000000004E0C
4900:10322000F6B101000000004EE6B1010040973E40BB
4901:103230009DE001000000003BE7B101000000004AF2
4902:1032400090B10100FFFF0007928901000000984043
4903:1032500081B001000300000886F4010000B70043BC
4904:1032600046C9010007000008828801004B9640080B
4905:1032700096300000F39900408132010057962245B4
4906:10328000957C00005396225A1F7C00001000000F0E
4907:1032900096F401005096315F970400000000114B36
4908:1032A000489301000000004B6AB101005396304082
4909:1032B0008132000000000041E68101000000104062
4910:1032C00081B201000000984081B2010000973F41A7
4911:1032D00095E00100000000F396B0010040973D40EA
4912:1032E00097E00100000063F388B001005F96A23B05
4913:1032F000896C00000000004A90B10100010000A6A6
4914:1033000092B101006096184A4493000000001840F2
4915:1033100081B201003000394597E001006596225ADC
4916:103320001F7C00001F04000F98D801000000004C13
4917:103330005E940100679600054AB000001F0400A7D4
4918:103340005E840100000000404BB001000000005806
4919:1033500061B101000000004B62B101000000A84013
4920:1033600081B200006896004081B200006B96400771
4921:1033700096300000F3990040813201006F9622459B
4922:10338000957C00000000984081B20100F199004A4C
4923:103390004413010000973F4195E00100000000F355
4924:1033A00096B0010040973D4097E00100000063F3B4
4925:1033B00088B001003000384597E001000000005F50
4926:1033C0000F9001000000005861B101000000004BA7
4927:1033D00062B101007796A840813200007096A23B4E
4928:1033E000896C0000300038459DE0010000009840E5
4929:1033F00081B20100E9990012943001004896005A08
4930:103400001F0001000000805A1F9001001100004AB7
4931:10341000E6C9010034002F4F95840100000000F33D
4932:1034200096B001000100634B84C801000000A04376
4933:10343000856C01000000E34085B0010030002D44A0
4934:103440001F90010032002DF22AB00100040022F288
4935:103450000230000066950010323001003200A040BA
4936:10346000E5B101000000004097B00100F007004006
4937:10347000999801000000004A02C0010000000050BD
4938:1034800003D001000000004197C001000000A34CE0
4939:1034900002D000008E96004081B20000000000A81B
4940:1034A00036B001009E9622410350000000800010BB
4941:1034B00044C9010000000050F1B101007000000398
4942:1034C000F0C901000000004261B1010000000010DD
4943:1034D00062B101009796A800E03100001B840088CB
4944:1034E0001CB00000E2950040813201007C800003A6
4945:1034F00042C90100000000F000B001009296005C9B
4946:1035000001800000E2950040813201000000001BB4
4947:1035100010B1000068012D0682B00100000000F229
4948:1035200082C001000080000346C90100DD95004013
4949:1035300081320100C5962240116C0000000068082D
4950:1035400038960100F007004182CC0100A396AA4101
4951:103550003B400000000000F810B001000000005CDB
4952:10356000118001000100001D04CC0100C496264614
4953:10357000233000000800000312C80100640120F09D
4954:10358000E0B10100C3962241055000002000000375
4955:1035900048C901000C0000F886C801000000224460
4956:1035A000F1B1010000000043F0B10100000000098A
4957:1035B000E0B101000000004461B10100A00000A4DE
4958:1035C00062DD0100B596A8461F100000C296224198
4959:1035D00005500000C096A24123500000000000A149
4960:1035E0001AB001000000004461B101004000001069
4961:1035F00062DD0100BB96A846233000001B840088D2
4962:103600001CB000001000000348C901000000000DBC
4963:1036100042B101000000004413C00100B096005008
4964:1036200049C100000000000548B10100048000030A
4965:103630001AC801000000804081B20100C4962240F7
4966:103640003B6C0000000000F800B00100E295005C57
4967:1036500001000100C59600413BD0000000008D47ED
4968:1036600080320100B0002F5F13B001000000E0F0D5
4969:103670008CC001000080000342C90100000000F876
4970:1036800094B00100000000F88CB00100D1968CF8D5
4971:103690008E3000000000004419900100040022F860
4972:1036A00014300000000000F816B00100000000F81F
4973:1036B00026B0010008002EF80CB001000C002A4AC8
4974:1036C000E0B1010028000000E0C901001000201B4B
4975:1036D000E0B10100DE96200A0C6C0000000000F84A
4976:1036E00094B00100000000F896B00100200020F026
4977:1036F000E4B101001800204AE0B101001C00204B99
4978:10370000E0B10100C996004013B000002C002D422A
4979:10371000199001002E002FF382B00100000000F389
4980:1037200096B00100E496A2A5976C000000008041CD
4981:1037300095B00100E796A240976C000000000040A1
4982:1037400083B001002D002040E7B10100000063417B
4983:1037500097C00100D4003E4183E001000000004119
4984:1037600083C00100EC96A0A5836C0000000000401F
4985:1037700083B001002C002041E6B10100F196224007
4986:103780001F7C00000004000098DC01000B00004CCE
4987:10379000E4F50100000080401F8001000B00800064
4988:1037A000E4F50100E6950040813201000480000349
4989:1037B00044C9010000000040F1B1010000000040D8
4990:1037C000F1B101000000604187B0010000800010ED
4991:1037D00044C9010000000050F1B1010000000048A0
4992:1037E000F0B1010000000049F0B101000000000349
4993:1037F000E0B101000000004561B1010020000010AF
4994:1038000062DD01000000A85D05900000FD9600400B
4995:1038100081B20000E6950040813201000080000383
4996:1038200044C9010000000041F0B101000000004265
4997:10383000F0B1010000000040F1B1010000000043C0
4998:10384000F0B101000080001044C9010000000050E8
4999:10385000F1B1010000000048F0B101000000004992
5000:10386000F0B1010000000003E0B1010000000045DC
5001:1038700061B101002000001062DD01000000A85DC0
5002:10388000059000000C97004081B200002D00004020
5003:10389000439901002E002FF384B00100010063F36F
5004:1038A00096C8010014979F4185500000010000A5B3
5005:1038B00085CC01002D00A042E6B101005E012D0083
5006:1038C00080B001001997524381600000020000F2AD
5007:1038D00082F401001A970041809400000000005F0C
5008:1038E000819001000000005E61B101000000004015
5009:1038F00062B101000000A84095B000001B979EBB7C
5010:10390000803200002097A2401F7C0000E29500401A
5011:1039100081B200000000804195B001000400001554
5012:1039200042C90100000000542BC00100000000FC4F
5013:1039300024B00100000000FC38B00100000000FECF
5014:103940003CB00100000000FE3AB0010035979C1722
5015:10395000803200002A97A24A197C00000000804CA7
5016:103960001F9001000C00001E98F401002997A24846
5017:10397000996C00000000001542B101002997A28A4D
5018:10398000F16D00000C00000102CC0100000000FC01
5019:103990003EB00100010000F428CC0100CC002D0550
5020:1039A00048B10100349720F03E6C00000000004B4D
5021:1039B0001F9001000000004C2BC00100BF002D052E
5022:1039C00048B10100000080F33AE0010000002E4BF6
5023:1039D0001990010007002A0CE4B1010000008004E6
5024:1039E000E6B1010018000040439901001C002DF0D1
5025:1039F00016B0010020002DF026B001000C002FF2BF
5026:103A00000CB001000000A20614EC00004197224512
5027:103A10001F7C00000000A3062AEC0000000000F854
5028:103A200094B00100000000F096B001000C002D40A1
5029:103A300081B2010000002A4CE1C1010030000010F9
5030:103A400048C901000A000040F19901001800000572
5031:103A5000F0C901000000004AF0B101000000004B75
5032:103A6000E0B101000000004761B10100A00000A426
5033:103A700062DD01004B97A85C1F100000000080056C
5034:103A800048B1010000002E1048B10100000068019B
5035:103A900096B0010000000003F0B1010051974542CB
5036:103AA000613100000000001062B101005297A800CF
5037:103AB000E031000000009D4081B2010000002E10A6
5038:103AC00048B101000000680196B001000000000349
5039:103AD000F0B101005897454261310000200000100C
5040:103AE00062DD01005997A800E031000000009D4010
5041:103AF00081B201003080004A44C901000000000684
5042:103B0000F1B10100C0A83D460DE00100FF7F00A11A
5043:103B1000F08901000200000996F40100000000464F
5044:103B200097E00100000060A897C00100639746423B
5045:103B3000613100003000004A62C901006497A8406A
5046:103B40008132000000009E4081B2010000993F4296
5047:103B500097F001006897474081320000709722F388
5048:103B6000740600003F0000F3948801000000000785
5049:103B7000E785010000001F5561B101000000004A07
5050:103B800062B101000000A84081B200006D970040C2
5051:103B900081B2000000009F4081B20100000000A837
5052:103BA00036B0010080978241234000007597A244FF
5053:103BB0001F7C0000EF9400018C3001002080001079
5054:103BC00042C901007B972240E36D000000000043E2
5055:103BD00061B101004000001062DD01007897A8404B
5056:103BE000813200001B8400881CB0000000000041EE
5057:103BF00023B001000000001032B001008097224184
5058:103C0000197C0000F89500432330010000000041BA
5059:103C100023B001008297A3150C6C00008397000667
5060:103C200004B000000000001504B0010085972002D8
5061:103C30001A6C00000000000D04B001000700000B2A
5062:103C4000968801008A9726479724000000000041CB
5063:103C500097C001008A97234B046C00000000004BC2
5064:103C600004B001004998000548310100B4972202D0
5065:103C7000145000008E97A2022A500000B497A2456B
5066:103C80001F7C0000909722020C50000099970002C0
5067:103C900016C000009897225C1F7C00003080001046
5068:103CA00042C9010098972240E36D000000000047E0
5069:103CB00061B101004000001062DD01009497A8404E
5070:103CC000813200001B8400881CB000000000000549
5071:103CD00048B101003A97005C1F000100B49722151B
5072:103CE000803200000000005033C00100B397A202F0
5073:103CF0001A500000A59722461F7C00007080000328
5074:103D000042C90100000000461F800100A597224023
5075:103D1000E36D00000000004261B1010040000010AE
5076:103D200062DD0100A197A840813200001B84008859
5077:103D30001CB000000000000548B101000C80000329
5078:103D400042C90100100000F010C801002F002F5CD4
5079:103D50001180010000000047E7910100F0070040DA
5080:103D60001B980100729720151A6C00007000000368
5081:103D700048C9010000002250F1B101000000000319
5082:103D8000F0B10100FF070008E08D010000000042D3
5083:103D900061B10100A00000A462DD0100B097A84657
5084:103DA0001F1000007297000548B1000072970002D2
5085:103DB00010C00000B697A2441F7C0000EF940001E1
5086:103DC0008C3001000000001B10B1000000800010CA
5087:103DD00044C901000C000040F199010010000008E6
5088:103DE000F0C9010000000016F0B10100100000034E
5089:103DF000E0C901000000004561B101002000001091
5090:103E000062DD01000000A85C1F900000BD9700402B
5091:103E100081B20000170000D0A2C901000000A2403A
5092:103E200027EC00000000002000B00100E2950041F6
5093:103E3000A3410100C197004127D0000010000007F6
5094:103E400096E401000000004B809401000000005443
5095:103E500061B101000080004062DD01000000A84067
5096:103E600081B20000C897004081B200001A9800405B
5097:103E70002B300100AC002D0616C0010090002DF083
5098:103E800016C40100D097A0F01644000000000041C5
5099:103E900017C001000E0000A244C9010000006CF030
5100:103EA00030B00100AC002D4087B0010000006CF084
5101:103EB00028B00100D997224A197C00000030004345
5102:103EC00086C801000030000B16C80100D997A44035
5103:103ED000813200000000004117C00100FA9722065D
5104:103EE00080320000E697A206146C0000E397224897
5105:103EF000197C0000DE97A04117400000000000413F
5106:103F000017C001000000004131C0010090002018DE
5107:103F1000E0B101008B002D48198001008B00204585
5108:103F2000E7910100E69700408790000008000043F9
5109:103F300086980100E697A048174000000000004165
5110:103F400017C00100B0000040439901001050004329
5111:103F5000FCC9010051980030813001000000004090
5112:103F6000E5B10100F197224A197C0000080000A287
5113:103F700044C90100CC002DABF9B10100000000AB39
5114:103F800017C00100F097A0F01644000000000041A7
5115:103F900017C00100F59764F082B00000A400004053
5116:103FA00047990100F597A2F280320000000000411D
5117:103FB000E5B101008C002018E0B101009000004044
5118:103FC000459901000000600630C001000000860C29
5119:103FD00080B20000BC002D4619900100A000A0F2A4
5120:103FE000E4B10100B00000404399010010500043CB
5121:103FF000FCC9010051980030813001000000A24A44
5122:1040000019FC0000080000A244C90100CC002DAB3F
5123:10401000F9B10100000000AB17C001000398A0F047
5124:10402000164400000000004117C001000000E4F049
5125:1040300082B001000080001044C90100000000416E
5126:10404000F0B1010000000003F0B101000000000029
5127:10405000F0B101000000001062B101000000A81BD7
5128:10406000E0B100000898004081B2000000F0000CB0
5129:104070007E8901000000A64C956001000000804A86
5130:10408000189401000080001044C9010004002201BE
5131:10409000F031000020000040F0C9010000000016CF
5132:1040A000F0B101000000004361B1010020000010E8
5133:1040B00062DD01000000A815E0B100001398004087
5134:1040C00081B200001080000344C901000000000616
5135:1040D000F0B1010000000001F0B101000000E85F54
5136:1040E0001790010070000040439901007A012EFEF4
5137:1040F00092B001008B002DF616B0010020982243EB
5138:10410000E77D00000000004445C10100040000A656
5139:104110002AB0010028006E0682C801002498224AB5
5140:10412000197C00000000004245D1010000006E4CE7
5141:1041300083C001000000004192C001002598423078
5142:104140003D0700000000669E83B0010000001A4198
5143:104150003DC301000000004192C00100060000A222
5144:1041600044C901001000004998F401002E9826303F
5145:10417000930400002E98904C9240000000000041F3
5146:1041800093C00100FFFF8049ECA9010000800010EE
5147:1041900044C9010004002201F031000000000009C0
5148:1041A000F0B1010000000018F0B101002000001083
5149:1041B00062DD01000000A815E0B100003398004066
5150:1041C00081B200004098225F817C00003F98A240AD
5151:1041D000197C00000000004019900100000000540C
5152:1041E00061B101001000000796E401000000004FDB
5153:1041F000979401000000004B62B101003F982840F5
5154:10420000813200003C98004081B200000000A221F1
5155:10421000818400004398A25F816C00000000A243EB
5156:10422000197C0100000000431990010000000054B7
5157:1042300061B101001000000796E401000000004099
5158:10424000969401000000004B62B101000000A840FC
5159:1042500081B200004698004081B200000080001941
5160:1042600044C9010004002202F03100000000000BEC
5161:10427000F0B1010000000013F0B1010000000043A4
5162:1042800061B101002000001962DD01000000A808F2
5163:10429000E0B100004E98004081B200007C002DF09B
5164:1042A00084B00100020000F098F401005798204CFF
5165:1042B000846C00008800004043990100579820F268
5166:1042C000846C00000000004085B0010098002D14AF
5167:1042D00082B00100000000F098B00100A3002D148E
5168:1042E00098D001005C98204C846C00000000004CC9
5169:1042F00084B00100000000F380E001005F982340DB
5170:10430000846C00000000004084B00100D000201444
5171:10431000E0B101009800254280B0010000006EF37A
5172:1043200080F001000000A64282C000006598A04015
5173:10433000164000000000004117C0010000009FF07F
5174:1043400082EC00009800A041E0B1010068980012E2
5175:1043500010C90000004880400B980100C04980400F
5176:104360000B980100804B80400B980100404D80402D
5177:104370000B980100004F80400B980100C050804016
5178:104380000B980100805280400B98010040548040FF
5179:104390000B980100005680400B980100C0578040E8
5180:1043A0000B980100805980400B980100405B8040D1
5181:1043B0000B980100005D80400B980100C05E8040BA
5182:1043C0000B980100806080400B98010040628040A3
5183:1043D0000B980100006480400B980100C06580408C
5184:1043E0000B980100806780400B9801004069804075
5185:1043F0000B980100006B80400B980100C06C80405E
5186:104400000B980100806E80400B9801004070804046
5187:104410000B980100007280400B980100C07380402F
5188:104420000B980100807580400B9801004077804018
5189:104430000B980100007980400B980100C07A804001
5190:104440000B980100807C80400B980100407E8040EA
5191:104450000B98010088984357613100009498A25747
5192:10446000737D00009498A240816F00000000004816
5193:1044700061B101000010004A62DD01008C98A84A79
5194:10448000803300009198225F957C00000000004B73
5195:1044900062B101008F98A84BAC33000000001BA54F
5196:1044A00082B30100000000BE83C301000000804011
5197:1044B00097B001000010004A62DD01009898284082
5198:1044C0008132000094982257777D000000009B20E5
5199:1044D00097B001000000004B62B101009898A8401D
5200:1044E0008132000000009B4097B0010000002E10B8
5201:1044F00048B10100A8010040F19901000000000549
5202:10450000F0B101000900000796E40100000060A777
5203:1045100097C001000000001062B101000000A84037
5204:1045200081B20000A098004081B20000A8002D1CBC
5205:104530008AB0010000009FF08AD000000000A24075
5206:104540008BEC00008A002040E7B10100B40000407D
5207:1045500047990100A4002D45E0D10100AD989C17BA
5208:1045600080320000BE002FAB83B001001799001409
5209:1045700082500100B298004081B20000B29822F24D
5210:10458000823000008C00004043990100B2989F1CCB
5211:10459000E06D0000BE0000404799010017990040FF
5212:1045A00081320100A800201CE0B101009C002D30E8
5213:1045B00081B0010088002DF084B0010094002DF23C
5214:1045C00086B00100DC9823F0846C00000C000042EF
5215:1045D00088F40100DC982050896C0000CB98A392ED
5216:1045E000876C0000BB98004410C90000DC98000AEA
5217:1045F00087B00000DC98000987B00000DC98000854
5218:1046000087B00000DC98000787B00000DC98000746
5219:1046100087B00000DC98000787B00000DC98000637
5220:1046200087B00000DC98000687B00000DC98000628
5221:1046300087B00000DC98000687B00000DC98000618
5222:1046400087B00000DC98000587B00000DC9800050A
5223:1046500087B00000DC98000587B00000DC980005FA
5224:1046600087B00000DC98000587B00000CC980044BB
5225:1046700010C90000DC98000F87B00000DC98000E25
5226:1046800087B00000DC98000D87B00000DC98000CBB
5227:1046900087B00000DC98000C87B00000DC98000CAC
5228:1046A00087B00000DC98000C87B00000DC98000C9C
5229:1046B00087B00000DC98000C87B00000DC98000B8D
5230:1046C00087B00000DC98000B87B00000DC98000B7E
5231:1046D00087B00000DC98000B87B00000DC98000B6E
5232:1046E00087B00000DC98000B87B00000DC98000B5E
5233:1046F00087B00000BF002D4384C0010090002DF35F
5234:1047000080E00100E1982340846C00009400209D2B
5235:10471000E1B101000000004084B00100E598A2F082
5236:10472000386C00009C002042E0B101000000005FF6
5237:104730001394010000008046198001009C00204273
5238:10474000E0B101003700004043990100040000F38C
5239:1047500080F401000F0000F382880100EB982341F0
5240:10476000806C00000000005F139401000000890CC1
5241:1047700080B20000BC00004043990100A000A0F2FC
5242:10478000E4B1010000009F4124EC0000F598A64030
5243:104790008132000000009F4238EC0000F598A640EE
5244:1047A00081320000B400004043990100F798A3F063
5245:1047B0003A6C00000000804081B20100B40000406B
5246:1047C00043990100FB9822F03A6C0000B400201DD0
5247:1047D000E0B1010080002D5F13940100FB9823F0ED
5248:1047E0003A6C00008000201DE0B10100C0002012E2
5249:1047F000E0B10100C400A01CE0B101000080000392
5250:1048000044C9010000000042E0B101001200004074
5251:104810008798010004999F41246C0000000000412A
5252:104820008CB00100000000128CD0010005990041FD
5253:1048300024B00000000000408DB0010055990040F8
5254:10484000813201000000004561B10100400000100C
5255:1048500062DD01000000A84081B20000079900401D
5256:1048600081B20000D49500408132010000000016A2
5257:1048700080B201000000A708803201000F99A24019
5258:10488000956C0000E295004081320100008200A694
5259:1048900004B00100000000402DB00100A0982F409E
5260:1048A00011B00100E989004189B0000000009FF8C3
5261:1048B0003EEC000000009F12E0ED0000C80020ABBD
5262:1048C000E1B10100CC00A01FE0B101001999A35F84
5263:1048D000E76D000000000041E7C10100A6000040B4
5264:1048E000479901002D9922F2863000000300004311
5265:1048F00084F401000100004180CC0100B8002D4289
5266:1049000080D001000000624086C0010021991F4351
5267:10491000803200002299A240876C000000006241B2
5268:1049200087B0010026999F408032000000000040BF
5269:1049300085B001000000004084D00100000000426A
5270:1049400080B00100000000F288B0010002000044C5
5271:1049500084F40100B8002E4280D0010000006240C3
5272:1049600088C001002C991F44803200003099A24079
5273:10497000896C00003099624189B0000003006241F7
5274:1049800086E40100B8000040459901000100624141
5275:1049900088E40100A4002040E5B10100A20020400D
5276:1049A000E7B10100BC002E4387F001000000004485
5277:1049B00086C0010036992043876C000000008043C8
5278:1049C000E5B101004001004380CE01000000A44396
5279:1049D000E43101004001E2408798010088002D4445
5280:1049E00081B0010090002DF22EB001009C002DF04E
5281:1049F00086B0010090002DF082B00100BA002DF0C9
5282:104A000098B001004399A212986C0000BC002DF2EE
5283:104A100098B001004399A0F2986C000000000017C4
5284:104A200082B001009C002041E0B10100B4002D12D1
5285:104A300086D001004699A341E06D0000479900F03F
5286:104A400084B000000000004184B0010080002D43CC
5287:104A500084D001004A999F4280320000000000404B
5288:104A600085B001004C99A342146C00004D99000AD6
5289:104A70000CB00000000000420CB001004F99A017DC
5290:104A80000C6C0000000080170CB00100549922400B
5291:104A90000D6C00000000A00A0CEC0000010000F00A
5292:104AA00082F401005499A0410C6C00000000A2F0B7
5293:104AB000803201000000804081B00100E695004096
5294:104AC000813201000480000344C901000000004657
5295:104AD000F0B1010000000040F1B1010000006041B0
5296:104AE000879401000080001044C9010000000050BC
5297:104AF000F1B1010000000048F0B1010000000049E0
5298:104B0000F0B1010000000003E0B101000000004529
5299:104B100061B101002000001062DD01000000A85D0D
5300:104B2000059000006099004081B2000000002E4B0B
5301:104B30001990010005002A0CE4B101000000800476
5302:104B4000E6B101006A9922491F7C00004200004042
5303:104B500087980100000000491F800100C0970040B5
5304:104B60008DB0000070992240AF6F0000000000156A
5305:104B700096B0010088980008943001006F99224097
5306:104B8000976C0000C097004687B00000000080408E
5307:104B900087B001007099434861310000001000089F
5308:104BA00062DD010075992840873000007199224824
5309:104BB000777D0000C0971B4687B000007899225F80
5310:104BC000117C000004002215623100007699A84093
5311:104BD0008132000000009B4081B2010000000040D3
5312:104BE00049B1010030000040A199010000000040DF
5313:104BF00093B00100000000401FB00100C9990049B6
5314:104C0000963001000700004906E401000039000366
5315:104C100006C801000000004005B00100200000D0DF
5316:104C2000A0C901000000004193C001007D99A0547B
5317:104C3000936C000000002E0597B001000048004072
5318:104C40004999010000000040E1B10100C00100A24B
5319:104C500044C901008699A24197500000000000203D
5320:104C600049B30100CE9900404931010000B52E083A
5321:104C700097B0010000000040F1B101008C99A24101
5322:104C800097500000180000409798010000972E40B0
5323:104C900081B2010000000040F1B101009099A241F1
5324:104CA000975000000000004049B1010040182E0557
5325:104CB00097B0010000000040F1B101009499A241B9
5326:104CC0009750000057952040E7B101003094004014
5327:104CD0004599010064000040E59901005695204087
5328:104CE000E7B10100B8942041E5B10100BA94204138
5329:104CF000E5B1010098940040459901000200004090
5330:104D00009798010000000040F1B101009E99A24176
5331:104D1000975000000000004097B0010000000040E4
5332:104D20006FB101000000004B68B10100A2998541FC
5333:104D300097400000DB9900408132010000000040F4
5334:104D400039B301000000004037B30100000000400B
5335:104D500035B301000000004033B301000000004003
5336:104D600041B30100000000403FB301003C0000409F
5337:104D7000299B0100EE050040259B010042000040F8
5338:104D80004B9B0100000000402FB3010000000040D9
5339:104D90002DB301000000004047B3010000000040B7
5340:104DA00043B30100600000402B9B01000000005451
5341:104DB000EF93010000000055F1930100FFFF00A5F3
5342:104DC0003C8B01000000002C5BB301000000002CB4
5343:104DD00045B301000000004059B30100000000404D
5344:104DE00057B301000000004027B30100000000405D
5345:104DF00053B30100BF99A250FD7F0000BF99A2519B
5346:104E0000FD7F0000C09900401DB3000050460040E7
5347:104E10001D9B010000C000A688B30100FF3F00A653
5348:104E20003AB3010000C0009D3B9B0100B405004067
5349:104E3000239B0100000000404DB30100080A00A6BA
5350:104E400014B301000101008A159B0100008000A637
5351:104E500056B101000000805E57B501001800004BFC
5352:104E600020E401000600004B96E401000043004BE3
5353:104E700096C801001800001020DC01000000804BE3
5354:104E80002094010000992E0A97B001000000004014
5355:104E9000F1B10100CF99A2419750000000030040FA
5356:104EA0009798010000A900404599010000000040CA
5357:104EB000F1B10100D399A2419750000030000040A9
5358:104EC000979801000000005561B101000000004BFF
5359:104ED00062B10100D799A84081320000D799A24160
5360:104EE000975000000000804081B2010000000040A7
5361:104EF00087B101000000004097B001000000004BA6
5362:104F000080B10100010000A682B10100DD99854158
5363:104F1000974000000000004097B1010000000040F1
5364:104F200097B001000000004B90B10100010000A605
5365:104F300092B10100E2998541974000000000804055
5366:104F400081B20100E6994440813200000000001265
5367:104F500080B10100FFFF9C4B82890100E999444028
5368:104F6000813200000000004A80B1010001009CA6CF
5369:104F700082B10100EC99444081320000FFFF004BF8
5370:104F80008489010000009CC224B001000000004A96
5371:104F900090B10100FFFF804B928901000000004AA0
5372:104FA00090B10100010080A692B10100FFFF004B0B
5373:104FB00094890100000080CA94B001000000804084
5374:104FC00081B201000000004081B00100F79980A586
5375:104FD00080320000F89900A58032000000000041F6
5376:104FE00081C00100F99980A5803200008001004055
5377:104FF00083980100029A204F816C0000000100405C
5378:1050000083980100029A204B816C000080000040D0
5379:1050100083980100029A2047816C00000000004044
5380:10502000839801000000004182DC010003900041F0
5381:10503000209901000000004049B1010000142F4CEC
5382:1050400083B0010000000040F1B10100069AA241C6
5383:1050500083500000640000A580C80100099AA2A541
5384:10506000806C000020000090209901000000005F8B
5385:10507000239101000C9A1F918032000030000090B3
5386:10508000209901000000005F239101000F9A1F91F9
5387:10509000803200007000009020A901000000005F35
5388:1050A00023910100129A1F91803200000000005FDE
5389:1050B00023910100149A1F918032000040680090F3
5390:1050C00020A90100E000004061990100210000409A
5391:1050D0006199010022000040619901002300004015
5392:1050E0006199010024000040619901002500004001
5393:1050F00061990100260000406199010027000040ED
5394:1051000061990100C000004061990100D014004085
5395:105110004599010000000040F1B10100000000408D
5396:10512000E1B101003003004085300100D01400409F
5397:1051300045990100020100A680B00100040300406F
5398:1051400080980100060500A682B001000807004112
5399:105150008298010000000040F0B101000000004111
5400:10516000E0B10100080000408598010030030040D4
5401:10517000813201003903004081320100D81400401F
5402:1051800043990100FF02A2F8806C0000000322F0A6
5403:10519000826C0000FF02004081B20000D0142E405B
5404:1051A00049B1010005000040A39B01000000004040
5405:1051B000C1B30100080000DD81F40100369A00400F
5406:1051C00010C900003C9A000581B000005501004064
5407:1051D00081B20000449A000581B0000055010040F2
5408:1051E00081B20000499A0044A5B300004B9A0044E4
5409:1051F000A5B3000002000040A4E70100000000E0A9
5410:1052000081B10100FFFF00C1F0890100419A2241F4
5411:10521000815000003D9A0041C1C30000B10200402E
5412:1052200081320100C5020040813201005A01004074
5413:1052300081B2000002000040A4E70100000000E08D
5414:1052400091B10100FFFF00C9F0890100419A22419C
5415:1052500081500000459A0041C1C30000FFFF00DEFD
5416:1052600085890100419A00C2E0B10000FFFF00DE25
5417:1052700095890100419A00CAE0B10000040000CB0A
5418:1052800081C801006A840040F293000004000040DD
5419:1052900081B200000400004081B200000400004020
5420:1052A00081B200000400004081B200000400004010
5421:1052B00081B200000400004081B200000400004000
5422:1052C00081B200000400004081B2000004000040F0
5423:1052D00081B200000400004081B2000004000040E0
5424:1052E00081B200000400004081B2000004000040D0
5425:1052F00081B200000400004081B2000004000040C0
5426:1053000081B200000400004081B2000004000040AF
5427:1053100081B200000400004081B20000040000409F
5428:1053200081B200000400004081B20000040000408F
5429:1053300081B200000400004081B20000040000407F
5430:1053400081B200000400004081B20000040000406F
5431:1053500081B200000400004081B20000040000405F
5432:1053600081B200000400004081B20000040000404F
5433:1053700081B200000400004081B20000040000403F
5434:1053800081B200000400004081B20000040000402F
5435:1053900081B200000400004081B20000040000401F
5436:1053A00081B200000400004081B20000040000400F
5437:1053B00081B200000400004081B2000004000040FF
5438:1053C00081B200000400004081B2000004000040EF
5439:1053D00081B200000400004081B2000004000040DF
5440:1053E00081B200000400004081B2000004000040CF
5441:1053F00081B200000400004081B2000004000040BF
5442:1054000081B200000400004081B2000004000040AE
5443:1054100081B200000400004081B20000040000409E
5444:1054200081B200000400004081B20000040000408E
5445:1054300081B200000400004081B20000040000407E
5446:1054400081B200000400004081B20000040000406E
5447:1054500081B200000400004081B20000040000405E
5448:1054600081B200000400004081B20000040000404E
5449:1054700081B200000400004081B20000040000403E
5450:1054800081B200000400004081B20000040000402E
5451:1054900081B200000400004081B20000040000401E
5452:1054A00081B200000400004081B20000040000400E
5453:1054B00081B200000400004081B2000004000040FE
5454:1054C00081B200000400004081B2000004000040EE
5455:1054D00081B200000400004081B2000004000040DE
5456:1054E00081B200000400004081B2000004000040CE
5457:1054F00081B200000400004081B2000004000040BE
5458:1055000081B200000400004081B2000004000040AD
5459:1055100081B200000400004081B20000040000409D
5460:1055200081B200000400004081B20000040000408D
5461:1055300081B200000400004081B20000040000407D
5462:1055400081B200000400004081B20000040000406D
5463:1055500081B200000400004081B20000040000405D
5464:1055600081B200000400004081B20000040000404D
5465:1055700081B200000400004081B20000040000403D
5466:1055800081B200000400004081B20000040000402D
5467:1055900081B200000400004081B20000040000401D
5468:1055A00081B200000400004081B20000040000400D
5469:1055B00081B200000400004081B2000004000040FD
5470:1055C00081B200000400004081B2000004000040ED
5471:1055D00081B200000400004081B2000004000040DD
5472:1055E00081B200000400004081B2000004000040CD
5473:1055F00081B200000400004081B2000004000040BD
5474:1056000081B200000400004081B2000004000040AC
5475:1056100081B200000400004081B20000040000409C
5476:1056200081B200000400004081B20000040000408C
5477:1056300081B200000400004081B20000040000407C
5478:1056400081B200000400004081B20000040000406C
5479:1056500081B200000400004081B20000040000405C
5480:1056600081B200000400004081B20000040000404C
5481:1056700081B200000400004081B20000040000403C
5482:1056800081B200000400004081B20000040000402C
5483:1056900081B200000400004081B20000040000401C
5484:1056A00081B200000400004081B20000040000400C
5485:1056B00081B200000400004081B2000004000040FC
5486:1056C00081B200000400004081B2000004000040EC
5487:1056D00081B200000400004081B2000004000040DC
5488:1056E00081B200000400004081B2000004000040CC
5489:1056F00081B200000400004081B2000004000040BC
5490:1057000081B200000400004081B2000004000040AB
5491:1057100081B200000400004081B20000040000409B
5492:1057200081B200000400004081B20000040000408B
5493:1057300081B200000400004081B20000040000407B
5494:1057400081B200000400004081B20000040000406B
5495:1057500081B200000400004081B20000040000405B
5496:1057600081B200000400004081B20000040000404B
5497:1057700081B200000400004081B20000040000403B
5498:1057800081B200000400004081B20000040000402B
5499:1057900081B200000400004081B20000040000401B
5500:1057A00081B200000400004081B20000040000400B
5501:1057B00081B200000400004081B2000004000040FB
5502:1057C00081B200000400004081B2000004000040EB
5503:1057D00081B200000400004081B2000004000040DB
5504:1057E00081B200000400004081B2000004000040CB
5505:1057F00081B200000400004081B2000004000040BB
5506:1058000081B200000400004081B2000004000040AA
5507:1058100081B200000400004081B20000040000409A
5508:1058200081B200000400004081B20000040000408A
5509:1058300081B200000400004081B20000040000407A
5510:1058400081B200000400004081B20000040000406A
5511:1058500081B200000400004081B20000040000405A
5512:1058600081B200000400004081B20000040000404A
5513:1058700081B200000400004081B20000040000403A
5514:1058800081B200000400004081B20000040000402A
5515:1058900081B200000400004081B20000040000401A
5516:1058A00081B200000400004081B20000040000400A
5517:1058B00081B200000400004081B2000004000040FA
5518:1058C00081B200000400004081B2000004000040EA
5519:1058D00081B200000400004081B2000004000040DA
5520:1058E00081B200000400004081B2000004000040CA
5521:1058F00081B200000400004081B2000004000040BA
5522:1059000081B200000400004081B2000004000040A9
5523:1059100081B200000400004081B200000400004099
5524:1059200081B200000400004081B200000400004089
5525:1059300081B200000400004081B200000400004079
5526:1059400081B200000400004081B200000400004069
5527:1059500081B200000400004081B200000400004059
5528:1059600081B200000400004081B200000400004049
5529:1059700081B200000400004081B200000400004039
5530:1059800081B200000400004081B200000400004029
5531:1059900081B200000400004081B200000400004019
5532:1059A00081B200000400004081B200000400004009
5533:1059B00081B200000400004081B2000004000040F9
5534:1059C00081B200000400004081B2000004000040E9
5535:1059D00081B200000400004081B2000004000040D9
5536:1059E00081B200000400004081B2000004000040C9
5537:1059F00081B200000400004081B2000004000040B9
5538:105A000081B200000400004081B2000004000040A8
5539:105A100081B200000400004081B200000400004098
5540:105A200081B200000400004081B200000400004088
5541:105A300081B200000400004081B200000400004078
5542:105A400081B200000400004081B200000400004068
5543:105A500081B200000400004081B200000400004058
5544:105A600081B200000400004081B200000400004048
5545:105A700081B200000400004081B200000400004038
5546:105A800081B200000400004081B200000400004028
5547:105A900081B200000400004081B200000400004018
5548:105AA00081B200000400004081B200000400004008
5549:105AB00081B200000400004081B2000004000040F8
5550:105AC00081B200000400004081B2000004000040E8
5551:105AD00081B200000400004081B2000004000040D8
5552:105AE00081B200000400004081B2000004000040C8
5553:105AF00081B200000400004081B2000004000040B8
5554:105B000081B200000400004081B2000004000040A7
5555:105B100081B200000400004081B200000400004097
5556:105B200081B200000400004081B200000400004087
5557:105B300081B200000400004081B200000400004077
5558:105B400081B200000400004081B200000400004067
5559:105B500081B200000400004081B200000400004057
5560:105B600081B200000400004081B200000400004047
5561:105B700081B200000400004081B200000400004037
5562:105B800081B200000400004081B200000400004027
5563:105B900081B200000400004081B200000400004017
5564:105BA00081B200000400004081B200000400004007
5565:105BB00081B200000400004081B2000004000040F7
5566:105BC00081B200000400004081B2000004000040E7
5567:105BD00081B200000400004081B2000004000040D7
5568:105BE00081B200000400004081B2000004000040C7
5569:105BF00081B200000400004081B2000004000040B7
5570:105C000081B200000400004081B2000004000040A6
5571:105C100081B200000400004081B200000400004096
5572:105C200081B200000400004081B200000400004086
5573:105C300081B200000400004081B200000400004076
5574:105C400081B200000400004081B200000400004066
5575:105C500081B200000400004081B200000400004056
5576:105C600081B200000400004081B200000400004046
5577:105C700081B200000400004081B200000400004036
5578:105C800081B200000400004081B200000400004026
5579:105C900081B200000400004081B200000400004016
5580:105CA00081B200000400004081B200000400004006
5581:105CB00081B200000400004081B2000004000040F6
5582:105CC00081B200000400004081B2000004000040E6
5583:105CD00081B200000400004081B2000004000040D6
5584:105CE00081B200000400004081B2000004000040C6
5585:105CF00081B200000400004081B2000004000040B6
5586:105D000081B200000400004081B2000004000040A5
5587:105D100081B200000400004081B200000400004095
5588:105D200081B200000400004081B200000400004085
5589:105D300081B200000400004081B200000400004075
5590:105D400081B200000400004081B200000400004065
5591:105D500081B200000400004081B200000400004055
5592:105D600081B200000400004081B200000400004045
5593:105D700081B200000400004081B200000400004035
5594:105D800081B200000400004081B200000400004025
5595:105D900081B200000400004081B200000400004015
5596:105DA00081B200000400004081B200000400004005
5597:105DB00081B200000400004081B2000004000040F5
5598:105DC00081B200000400004081B2000004000040E5
5599:105DD00081B200000400004081B2000004000040D5
5600:105DE00081B200000400004081B2000004000040C5
5601:105DF00081B200000400004081B2000004000040B5
5602:105E000081B200000400004081B2000004000040A4
5603:105E100081B200000400004081B200000400004094
5604:105E200081B200000400004081B200000400004084
5605:105E300081B200000400004081B200000400004074
5606:105E400081B200000400004081B200000400004064
5607:105E500081B200000400004081B200000400004054
5608:105E600081B200000400004081B200000400004044
5609:105E700081B200000400004081B200000400004034
5610:105E800081B200000400004081B200000400004024
5611:105E900081B200000400004081B200000400004014
5612:105EA00081B200000400004081B200000400004004
5613:105EB00081B200000400004081B2000004000040F4
5614:105EC00081B200000400004081B2000004000040E4
5615:105ED00081B200000400004081B2000004000040D4
5616:105EE00081B200000400004081B2000004000040C4
5617:105EF00081B200000400004081B2000004000040B4
5618:105F000081B200000400004081B2000004000040A3
5619:105F100081B200000400004081B200000400004093
5620:105F200081B200000400004081B200000400004083
5621:105F300081B200000400004081B200000400004073
5622:105F400081B200000400004081B200000400004063
5623:105F500081B200000400004081B200000400004053
5624:105F600081B200000400004081B200000400004043
5625:105F700081B200000400004081B200000400004033
5626:105F800081B200000400004081B200000400004023
5627:105F900081B200000400004081B200000400004013
5628:105FA00081B200000400004081B200000400004003
5629:105FB00081B200000400004081B2000004000040F3
5630:105FC00081B200000400004081B2000004000040E3
5631:105FD00081B200000400004081B2000004000040D3
5632:105FE00081B200000400004081B2000004000040C3
5633:105FF00081B200000400004081B2000004000040B3
5634:1060000081B200000400004081B2000004000040A2
5635:1060100081B200000400004081B200000400004092
5636:1060200081B200000400004081B200000400004082
5637:1060300081B200000400004081B200000400004072
5638:1060400081B200000400004081B200000400004062
5639:1060500081B200000400004081B200000400004052
5640:1060600081B200000400004081B200000400004042
5641:1060700081B200000400004081B200000400004032
5642:1060800081B200000400004081B200000400004022
5643:1060900081B200000400004081B200000400004012
5644:1060A00081B200000400004081B200000400004002
5645:1060B00081B200000400004081B2000004000040F2
5646:1060C00081B200000400004081B2000004000040E2
5647:1060D00081B200000400004081B2000004000040D2
5648:1060E00081B200000400004081B2000004000040C2
5649:1060F00081B200000400004081B2000004000040B2
5650:1061000081B200000400004081B2000004000040A1
5651:1061100081B200000400004081B200000400004091
5652:1061200081B200000400004081B200000400004081
5653:1061300081B200000400004081B200000400004071
5654:1061400081B200000400004081B200000400004061
5655:1061500081B200000400004081B200000400004051
5656:1061600081B200000400004081B200000400004041
5657:1061700081B200000400004081B200000400004031
5658:1061800081B200000400004081B200000400004021
5659:1061900081B200000400004081B200000400004011
5660:1061A00081B200000400004081B200000400004001
5661:1061B00081B200000400004081B2000004000040F1
5662:1061C00081B200000400004081B2000004000040E1
5663:1061D00081B200000400004081B2000004000040D1
5664:1061E00081B200000400004081B2000004000040C1
5665:1061F00081B200000400004081B2000004000040B1
5666:1062000081B200000400004081B2000004000040A0
5667:1062100081B200000400004081B200000400004090
5668:1062200081B200000400004081B200000400004080
5669:1062300081B200000400004081B200000400004070
5670:1062400081B200000400004081B200000400004060
5671:1062500081B200000400004081B200000400004050
5672:1062600081B200000400004081B200000400004040
5673:1062700081B200000400004081B200000400004030
5674:1062800081B200000400004081B200000400004020
5675:1062900081B200000400004081B200000400004010
5676:1062A00081B200000400004081B200000400004000
5677:1062B00081B200000400004081B2000004000040F0
5678:1062C00081B200000400004081B2000004000040E0
5679:1062D00081B200000400004081B2000004000040D0
5680:1062E00081B200000400004081B2000004000040C0
5681:1062F00081B200000400004081B2000004000040B0
5682:1063000081B200000400004081B20000040000409F
5683:1063100081B200000400004081B20000040000408F
5684:1063200081B200000400004081B20000040000407F
5685:1063300081B200000400004081B20000040000406F
5686:1063400081B200000400004081B20000040000405F
5687:1063500081B200000400004081B20000040000404F
5688:1063600081B200000400004081B20000040000403F
5689:1063700081B200000400004081B20000040000402F
5690:1063800081B200000400004081B20000040000401F
5691:1063900081B200000400004081B20000040000400F
5692:1063A00081B200000400004081B2000004000040FF
5693:1063B00081B200000400004081B2000004000040EF
5694:1063C00081B200000400004081B2000004000040DF
5695:1063D00081B200000400004081B2000004000040CF
5696:1063E00081B200000400004081B2000004000040BF
5697:1063F00081B200000400004081B2000004000040AF
5698:1064000081B200000400004081B20000040000409E
5699:1064100081B200000400004081B20000040000408E
5700:1064200081B200000400004081B20000040000407E
5701:1064300081B200000400004081B20000040000406E
5702:1064400081B200000400004081B20000040000405E
5703:1064500081B200000400004081B20000040000404E
5704:1064600081B200000400004081B20000040000403E
5705:1064700081B200000400004081B20000040000402E
5706:1064800081B200000400004081B20000040000401E
5707:1064900081B200000400004081B20000040000400E
5708:1064A00081B200000400004081B2000004000040FE
5709:1064B00081B200000400004081B2000004000040EE
5710:1064C00081B200000400004081B2000004000040DE
5711:1064D00081B200000400004081B2000004000040CE
5712:1064E00081B200000400004081B2000004000040BE
5713:1064F00081B200000400004081B2000004000040AE
5714:1065000081B200000400004081B20000040000409D
5715:1065100081B200000400004081B20000040000408D
5716:1065200081B200000400004081B20000040000407D
5717:1065300081B200000400004081B20000040000406D
5718:1065400081B200000400004081B20000040000405D
5719:1065500081B200000400004081B20000040000404D
5720:1065600081B200000400004081B20000040000403D
5721:1065700081B200000400004081B20000040000402D
5722:1065800081B200000400004081B20000040000401D
5723:1065900081B200000400004081B20000040000400D
5724:1065A00081B200000400004081B2000004000040FD
5725:1065B00081B200000400004081B2000004000040ED
5726:1065C00081B200000400004081B2000004000040DD
5727:1065D00081B200000400004081B2000004000040CD
5728:1065E00081B200000400004081B2000004000040BD
5729:1065F00081B200000400004081B2000004000040AD
5730:1066000081B200000400004081B20000040000409C
5731:1066100081B200000400004081B20000040000408C
5732:1066200081B200000400004081B20000040000407C
5733:1066300081B200000400004081B20000040000406C
5734:1066400081B200000400004081B20000040000405C
5735:1066500081B200000400004081B20000040000404C
5736:1066600081B200000400004081B20000040000403C
5737:1066700081B200000400004081B20000040000402C
5738:1066800081B200000400004081B20000040000401C
5739:1066900081B200000400004081B20000040000400C
5740:1066A00081B200000400004081B2000004000040FC
5741:1066B00081B200000400004081B2000004000040EC
5742:1066C00081B200000400004081B2000004000040DC
5743:1066D00081B200000400004081B2000004000040CC
5744:1066E00081B200000400004081B2000004000040BC
5745:1066F00081B200000400004081B2000004000040AC
5746:1067000081B200000400004081B20000040000409B
5747:1067100081B200000400004081B20000040000408B
5748:1067200081B200000400004081B20000040000407B
5749:1067300081B200000400004081B20000040000406B
5750:1067400081B200000400004081B20000040000405B
5751:1067500081B200000400004081B20000040000404B
5752:1067600081B200000400004081B20000040000403B
5753:1067700081B200000400004081B20000040000402B
5754:1067800081B200000400004081B20000040000401B
5755:1067900081B200000400004081B20000040000400B
5756:1067A00081B200000400004081B2000004000040FB
5757:1067B00081B200000400004081B2000004000040EB
5758:1067C00081B200000400004081B2000004000040DB
5759:1067D00081B200000400004081B2000004000040CB
5760:1067E00081B200000400004081B2000004000040BB
5761:1067F00081B200000400004081B2000004000040AB
5762:1068000081B200000400004081B20000040000409A
5763:1068100081B200000400004081B20000040000408A
5764:1068200081B200000400004081B20000040000407A
5765:1068300081B200000400004081B20000040000406A
5766:1068400081B200000400004081B20000040000405A
5767:1068500081B200000400004081B20000040000404A
5768:1068600081B200000400004081B20000040000403A
5769:1068700081B200000400004081B20000040000402A
5770:1068800081B200000400004081B20000040000401A
5771:1068900081B200000400004081B20000040000400A
5772:1068A00081B200000400004081B2000004000040FA
5773:1068B00081B200000400004081B2000004000040EA
5774:1068C00081B200000400004081B2000004000040DA
5775:1068D00081B200000400004081B2000004000040CA
5776:1068E00081B200000400004081B2000004000040BA
5777:1068F00081B200000400004081B2000004000040AA
5778:1069000081B200000400004081B200000400004099
5779:1069100081B200000400004081B200000400004089
5780:1069200081B200000400004081B200000400004079
5781:1069300081B200000400004081B200000400004069
5782:1069400081B200000400004081B200000400004059
5783:1069500081B200000400004081B200000400004049
5784:1069600081B200000400004081B200000400004039
5785:1069700081B200000400004081B200000400004029
5786:1069800081B200000400004081B200000400004019
5787:1069900081B200000400004081B200000400004009
5788:1069A00081B200000400004081B2000004000040F9
5789:1069B00081B200000400004081B2000004000040E9
5790:1069C00081B200000400004081B2000004000040D9
5791:1069D00081B200000400004081B2000004000040C9
5792:1069E00081B200000400004081B2000004000040B9
5793:1069F00081B200000400004081B2000004000040A9
5794:106A000081B200000400004081B200000400004098
5795:106A100081B200000400004081B200000400004088
5796:106A200081B200000400004081B200000400004078
5797:106A300081B200000400004081B200000400004068
5798:106A400081B200000400004081B200000400004058
5799:106A500081B200000400004081B200000400004048
5800:106A600081B200000400004081B200000400004038
5801:106A700081B200000400004081B200000400004028
5802:106A800081B200000400004081B200000400004018
5803:106A900081B200000400004081B200000400004008
5804:106AA00081B200000400004081B2000004000040F8
5805:106AB00081B200000400004081B2000004000040E8
5806:106AC00081B200000400004081B2000004000040D8
5807:106AD00081B200000400004081B2000004000040C8
5808:106AE00081B200000400004081B2000004000040B8
5809:106AF00081B200000400004081B2000004000040A8
5810:106B000081B200000400004081B200000400004097
5811:106B100081B200000400004081B200000400004087
5812:106B200081B200000400004081B200000400004077
5813:106B300081B200000400004081B200000400004067
5814:106B400081B200000400004081B200000400004057
5815:106B500081B200000400004081B200000400004047
5816:106B600081B200000400004081B200000400004037
5817:106B700081B200000400004081B200000400004027
5818:106B800081B200000400004081B200000400004017
5819:106B900081B200000400004081B200000400004007
5820:106BA00081B200000400004081B2000004000040F7
5821:106BB00081B200000400004081B2000004000040E7
5822:106BC00081B200000400004081B2000004000040D7
5823:106BD00081B200000400004081B2000004000040C7
5824:106BE00081B200000400004081B2000004000040B7
5825:106BF00081B200000400004081B2000004000040A7
5826:106C000081B200000400004081B200000400004096
5827:106C100081B200000400004081B200000400004086
5828:106C200081B200000400004081B200000400004076
5829:106C300081B200000400004081B200000400004066
5830:106C400081B200000400004081B200000400004056
5831:106C500081B200000400004081B200000400004046
5832:106C600081B200000400004081B200000400004036
5833:106C700081B200000400004081B200000400004026
5834:106C800081B200000400004081B200000400004016
5835:106C900081B200000400004081B200000400004006
5836:106CA00081B200000400004081B2000004000040F6
5837:106CB00081B200000400004081B2000004000040E6
5838:106CC00081B200000400004081B2000004000040D6
5839:106CD00081B200000400004081B2000004000040C6
5840:106CE00081B200000400004081B2000004000040B6
5841:106CF00081B200000400004081B2000004000040A6
5842:106D000081B200000400004081B200000400004095
5843:106D100081B200000400004081B200000400004085
5844:106D200081B200000400004081B200000400004075
5845:106D300081B200000400004081B200000400004065
5846:106D400081B200000400004081B200000400004055
5847:106D500081B200000400004081B200000400004045
5848:106D600081B200000400004081B200000400004035
5849:106D700081B200000400004081B200000400004025
5850:106D800081B200000400004081B200000400004015
5851:106D900081B200000400004081B200000400004005
5852:106DA00081B200000400004081B2000004000040F5
5853:106DB00081B200000400004081B2000004000040E5
5854:106DC00081B200000400004081B2000004000040D5
5855:106DD00081B200000400004081B2000004000040C5
5856:106DE00081B200000400004081B2000004000040B5
5857:106DF00081B200000400004081B2000004000040A5
5858:106E000081B200000400004081B200000400004094
5859:106E100081B200000400004081B200000400004084
5860:106E200081B200000400004081B200000400004074
5861:106E300081B200000400004081B200000400004064
5862:106E400081B200000400004081B200000400004054
5863:106E500081B200000400004081B200000400004044
5864:106E600081B200000400004081B200000400004034
5865:106E700081B200000400004081B200000400004024
5866:106E800081B200000400004081B200000400004014
5867:106E900081B200000400004081B200000400004004
5868:106EA00081B200000400004081B2000004000040F4
5869:106EB00081B200000400004081B2000004000040E4
5870:106EC00081B200000400004081B2000004000040D4
5871:106ED00081B200000400004081B2000004000040C4
5872:106EE00081B200000400004081B2000004000040B4
5873:106EF00081B200000400004081B2000004000040A4
5874:106F000081B200000400004081B200000400004093
5875:106F100081B200000400004081B200000400004083
5876:106F200081B200000400004081B200000400004073
5877:106F300081B200000400004081B200000400004063
5878:106F400081B200000400004081B200000400004053
5879:106F500081B200000400004081B200000400004043
5880:106F600081B200000400004081B200000400004033
5881:106F700081B200000400004081B200000400004023
5882:106F800081B200000400004081B200000400004013
5883:106F900081B200000400004081B200000400004003
5884:106FA00081B200000400004081B2000004000040F3
5885:106FB00081B200000400004081B2000004000040E3
5886:106FC00081B200000400004081B2000004000040D3
5887:106FD00081B200000400004081B2000004000040C3
5888:106FE00081B200000400004081B2000004000040B3
5889:106FF00081B200000400004081B2000004000040A3
5890:1070000081B200000400004081B200000400004092
5891:1070100081B200000400004081B200000400004082
5892:1070200081B200000400004081B200000400004072
5893:1070300081B200000400004081B200000400004062
5894:1070400081B200000400004081B200000400004052
5895:1070500081B200000400004081B200000400004042
5896:1070600081B200000400004081B200000400004032
5897:1070700081B200000400004081B200000400004022
5898:1070800081B200000400004081B200000400004012
5899:1070900081B200000400004081B200000400004002
5900:1070A00081B200000400004081B2000004000040F2
5901:1070B00081B200000400004081B2000004000040E2
5902:1070C00081B200000400004081B2000004000040D2
5903:1070D00081B200000400004081B2000004000040C2
5904:1070E00081B200000400004081B2000004000040B2
5905:1070F00081B200000400004081B2000004000040A2
5906:1071000081B200000400004081B200000400004091
5907:1071100081B200000400004081B200000400004081
5908:1071200081B200000400004081B200000400004071
5909:1071300081B200000400004081B200000400004061
5910:1071400081B200000400004081B200000400004051
5911:1071500081B200000400004081B200000400004041
5912:1071600081B200000400004081B200000400004031
5913:1071700081B200000400004081B200000400004021
5914:1071800081B200000400004081B200000400004011
5915:1071900081B200000400004081B200000400004001
5916:1071A00081B200000400004081B2000004000040F1
5917:1071B00081B200000400004081B2000004000040E1
5918:1071C00081B200000400004081B2000004000040D1
5919:1071D00081B200000400004081B2000004000040C1
5920:1071E00081B200000400004081B2000004000040B1
5921:1071F00081B200000400004081B2000004000040A1
5922:1072000081B200000400004081B200000400004090
5923:1072100081B200000400004081B200000400004080
5924:1072200081B200000400004081B200000400004070
5925:1072300081B200000400004081B200000400004060
5926:1072400081B200000400004081B200000400004050
5927:1072500081B200000400004081B200000400004040
5928:1072600081B200000400004081B200000400004030
5929:1072700081B200000400004081B200000400004020
5930:1072800081B200000400004081B200000400004010
5931:1072900081B200000400004081B200000400004000
5932:1072A00081B200000400004081B2000004000040F0
5933:1072B00081B200000400004081B2000004000040E0
5934:1072C00081B200000400004081B2000004000040D0
5935:1072D00081B200000400004081B2000004000040C0
5936:1072E00081B200000400004081B2000004000040B0
5937:1072F00081B200000400004081B2000004000040A0
5938:1073000081B200000400004081B20000040000408F
5939:1073100081B200000400004081B20000040000407F
5940:1073200081B200000400004081B20000040000406F
5941:1073300081B200000400004081B20000040000405F
5942:1073400081B200000400004081B20000040000404F
5943:1073500081B200000400004081B20000040000403F
5944:1073600081B200000400004081B20000040000402F
5945:1073700081B200000400004081B20000040000401F
5946:1073800081B200000400004081B20000040000400F
5947:1073900081B200000400004081B2000004000040FF
5948:1073A00081B200000400004081B2000004000040EF
5949:1073B00081B200000400004081B2000004000040DF
5950:1073C00081B200000400004081B2000004000040CF
5951:1073D00081B200000400004081B2000004000040BF
5952:1073E00081B200000400004081B2000004000040AF
5953:1073F00081B200000400004081B20000040000409F
5954:1074000081B200000400004081B20000040000408E
5955:1074100081B200000400004081B20000040000407E
5956:1074200081B200000400004081B20000040000406E
5957:1074300081B200000400004081B20000040000405E
5958:1074400081B200000400004081B20000040000404E
5959:1074500081B200000400004081B20000040000403E
5960:1074600081B200000400004081B20000040000402E
5961:1074700081B200000400004081B20000040000401E
5962:1074800081B200000400004081B20000040000400E
5963:1074900081B200000400004081B2000004000040FE
5964:1074A00081B200000400004081B2000004000040EE
5965:1074B00081B200000400004081B2000004000040DE
5966:1074C00081B200000400004081B2000004000040CE
5967:1074D00081B200000400004081B2000004000040BE
5968:1074E00081B200000400004081B2000004000040AE
5969:1074F00081B200000400004081B20000040000409E
5970:1075000081B200000400004081B20000040000408D
5971:1075100081B200000400004081B20000040000407D
5972:1075200081B200000400004081B20000040000406D
5973:1075300081B200000400004081B20000040000405D
5974:1075400081B200000400004081B20000040000404D
5975:1075500081B200000400004081B20000040000403D
5976:1075600081B200000400004081B20000040000402D
5977:1075700081B200000400004081B20000040000401D
5978:1075800081B200000400004081B20000040000400D
5979:1075900081B200000400004081B2000004000040FD
5980:1075A00081B200000400004081B2000004000040ED
5981:1075B00081B200000400004081B2000004000040DD
5982:1075C00081B200000400004081B2000004000040CD
5983:1075D00081B200000400004081B2000004000040BD
5984:1075E00081B200000400004081B2000004000040AD
5985:1075F00081B200000400004081B20000040000409D
5986:1076000081B200000400004081B20000040000408C
5987:1076100081B200000400004081B20000040000407C
5988:1076200081B200000400004081B20000040000406C
5989:1076300081B200000400004081B20000040000405C
5990:1076400081B200000400004081B20000040000404C
5991:1076500081B200000400004081B20000040000403C
5992:1076600081B200000400004081B20000040000402C
5993:1076700081B200000400004081B20000040000401C
5994:1076800081B200000400004081B20000040000400C
5995:1076900081B200000400004081B2000004000040FC
5996:1076A00081B200000400004081B2000004000040EC
5997:1076B00081B200000400004081B2000004000040DC
5998:1076C00081B200000400004081B2000004000040CC
5999:1076D00081B200000400004081B2000004000040BC
6000:1076E00081B200000400004081B2000004000040AC
6001:1076F00081B200000400004081B20000040000409C
6002:1077000081B200000400004081B20000040000408B
6003:1077100081B200000400004081B20000040000407B
6004:1077200081B200000400004081B20000040000406B
6005:1077300081B200000400004081B20000040000405B
6006:1077400081B200000400004081B20000040000404B
6007:1077500081B200000400004081B20000040000403B
6008:1077600081B200000400004081B20000040000402B
6009:1077700081B200000400004081B20000040000401B
6010:1077800081B200000400004081B20000040000400B
6011:1077900081B200000400004081B2000004000040FB
6012:1077A00081B200000400004081B2000004000040EB
6013:1077B00081B200000400004081B2000004000040DB
6014:1077C00081B200000400004081B2000004000040CB
6015:1077D00081B200000400004081B2000004000040BB
6016:1077E00081B200000400004081B2000004000040AB
6017:1077F00081B200000400004081B20000040000409B
6018:1078000081B200000400004081B20000040000408A
6019:1078100081B200000400004081B20000040000407A
6020:1078200081B200000400004081B20000040000406A
6021:1078300081B200000400004081B20000040000405A
6022:1078400081B200000400004081B20000040000404A
6023:1078500081B200000400004081B20000040000403A
6024:1078600081B200000400004081B20000040000402A
6025:1078700081B200000400004081B20000040000401A
6026:1078800081B200000400004081B20000040000400A
6027:1078900081B200000400004081B2000004000040FA
6028:1078A00081B200000400004081B2000004000040EA
6029:1078B00081B200000400004081B2000004000040DA
6030:1078C00081B200000400004081B2000004000040CA
6031:1078D00081B200000400004081B2000004000040BA
6032:1078E00081B200000400004081B2000004000040AA
6033:1078F00081B200000400004081B20000040000409A
6034:1079000081B200000400004081B200000400004089
6035:1079100081B200000400004081B200000400004079
6036:1079200081B200000400004081B200000400004069
6037:1079300081B200000400004081B200000400004059
6038:1079400081B200000400004081B200000400004049
6039:1079500081B200000400004081B200000400004039
6040:1079600081B200000400004081B200000400004029
6041:1079700081B200000400004081B200000400004019
6042:1079800081B200000400004081B200000400004009
6043:1079900081B200000400004081B2000004000040F9
6044:1079A00081B200000400004081B2000004000040E9
6045:1079B00081B200000400004081B2000004000040D9
6046:1079C00081B200000400004081B2000004000040C9
6047:1079D00081B200000400004081B2000004000040B9
6048:1079E00081B200000400004081B2000004000040A9
6049:1079F00081B200000400004081B200000400004099
6050:107A000081B200000400004081B200000400004088
6051:107A100081B200000400004081B200000400004078
6052:107A200081B200000400004081B200000400004068
6053:107A300081B200000400004081B200000400004058
6054:107A400081B200000400004081B200000400004048
6055:107A500081B200000400004081B200000400004038
6056:107A600081B200000400004081B200000400004028
6057:107A700081B200000400004081B200000400004018
6058:107A800081B200000400004081B200000400004008
6059:107A900081B200000400004081B2000004000040F8
6060:107AA00081B200000400004081B2000004000040E8
6061:107AB00081B200000400004081B2000004000040D8
6062:107AC00081B200000400004081B2000004000040C8
6063:107AD00081B200000400004081B2000004000040B8
6064:107AE00081B200000400004081B2000004000040A8
6065:107AF00081B200000400004081B200000400004098
6066:107B000081B200000400004081B200000400004087
6067:107B100081B200000400004081B200000400004077
6068:107B200081B200000400004081B200000400004067
6069:107B300081B200000400004081B200000400004057
6070:107B400081B200000400004081B200000400004047
6071:107B500081B200000400004081B200000400004037
6072:107B600081B200000400004081B200000400004027
6073:107B700081B200000400004081B200000400004017
6074:107B800081B200000400004081B200000400004007
6075:107B900081B200000400004081B2000004000040F7
6076:107BA00081B200000400004081B2000004000040E7
6077:107BB00081B200000400004081B2000004000040D7
6078:107BC00081B200000400004081B2000004000040C7
6079:107BD00081B200000400004081B2000004000040B7
6080:107BE00081B200000400004081B2000004000040A7
6081:107BF00081B200000400004081B200000400004097
6082:107C000081B200000400004081B200000400004086
6083:107C100081B200000400004081B200000400004076
6084:107C200081B200000400004081B200000400004066
6085:107C300081B200000400004081B200000400004056
6086:107C400081B200000400004081B200000400004046
6087:107C500081B200000400004081B200000400004036
6088:107C600081B200000400004081B200000400004026
6089:107C700081B200000400004081B200000400004016
6090:107C800081B200000400004081B200000400004006
6091:107C900081B200000400004081B2000004000040F6
6092:107CA00081B200000400004081B2000004000040E6
6093:107CB00081B200000400004081B2000004000040D6
6094:107CC00081B200000400004081B2000004000040C6
6095:107CD00081B200000400004081B2000004000040B6
6096:107CE00081B200000400004081B2000004000040A6
6097:107CF00081B200000400004081B200000400004096
6098:107D000081B200000400004081B200000400004085
6099:107D100081B200000400004081B200000400004075
6100:107D200081B200000400004081B200000400004065
6101:107D300081B200000400004081B200000400004055
6102:107D400081B200000400004081B200000400004045
6103:107D500081B200000400004081B200000400004035
6104:107D600081B200000400004081B200000400004025
6105:107D700081B200000400004081B200000400004015
6106:107D800081B200000400004081B200000400004005
6107:107D900081B20000B69F00889AB00000B69F0088AC
6108:107DA0009AB00000B69F00889AB00000B69F008885
6109:107DB0009AB00000B69F00889AB0000000000088CA
6110:107DC0009AB00100B69F414081320000B99F224025
6111:107DD0007B6F0000B69F194081B20000000019417E
6112:107DE0007BB30100000000A4C4B30100000000A1A7
6113:107DF000C6B3010000002FA2C8B301000814004060
6114:107E000049990100B09F004D9ACC0100C29F2640C5
6115:107E1000813200000000004C49C10100C09FA24116
6116:107E20009B500000C69F80808032000000005249B5
6117:107E3000FD9301000000004AFD930100C99F00422C
6118:107E4000CD9300000000514AFD930100000000495D
6119:107E5000FD930100C99F0043CB93000000005040F8
6120:107E600081B20100D99F004019990100000000F083
6121:107E70009AB001000000004449D10100000040F028
6122:107E800080B201000000414D80B20100D19F00404E
6123:107E90001999010000004C4081B20100000000442B
6124:107EA00049D10100000000F09AB001000000004D2F
6125:107EB00010B10000000000E249B10100000000E341
6126:107EC00043B10100000000E445B1010000000040A2
6127:107ED0007BB301000000484F40B10100D99F004032
6128:107EE00081B200000400004081B2000004000040A4
6129:107EF00081B200000400004081B200000400004094
6130:107F000081B200000400004081B200000400004083
6131:107F100081B200000000804081B0010004000040F8
6132:107F200081B200000400004081B200000400004063
6133:107F300081B200000400004081B200000400004053
6134:107F400081B200000400004081B200000400004043
6135:107F500081B200000400004081B200000400004033
6136:107F600081B200000400004081B200000400004023
6137:107F700081B200000400004081B200000400004013
6138:107F800081B200000400004081B200000400004003
6139:107F900081B200006A84004081B20000319A004042
6140:107FA00081B200000400004081B200004D9A004000
6141:107FB00081B200000400004081B200000000804057
6142:107FC00081B20100000000A810B1000004000040D0
6143:107FD00081B200000400004081B2000004000040B3
6144:107FE00081B200000400004081B2000004000040A3
6145:107FF00081B200000400004081B200000400004093
6146:1080000081B200000400004081B200000400004082
6147:0480100081B2000039
6148:00000001FF
diff --git a/firmware/slicoss/gbrcvucode.sys.ihex b/firmware/slicoss/gbrcvucode.sys.ihex
deleted file mode 100644
index bc7a83989c08..000000000000
--- a/firmware/slicoss/gbrcvucode.sys.ihex
+++ /dev/null
@@ -1,162 +0,0 @@
1:10000000000200004775010004A01301001CB75B4B
2:10001000093000B65F01001C00000020183B783A50
3:10002000001CA27701001C071D017018AD7BF1FFB9
4:100030001CB37BA9AA1EB47B010C1CB57B29061C32
5:1000400000005064080C315A70040C315A80040CC2
6:10005000314E90040C314AA000092555C0040C31E2
7:1000600052B000E92455C004CCB3001C1CEB2D0198
8:10007000001C065652D408079D00001C7BB70200E6
9:1000800010A00F51540906565EC004A0307403003E
10:10009000AC30750300CD033A001C7BB702001C6036
11:1000A0008E5154092925750300808E5154098C30D6
12:1000B000910004471C01001CA00F5154090000646A
13:1000C0000004471C65C004471C7503006C30010028
14:1000D0001C4D3402001C7BB702001CA00F515409B8
15:1000E000C88337001C800100001C0000640004A0CD
16:1000F0000F505409000074C3047BFBF2001CCC3386
17:100100000D001CB47BFD031C800E505409E0FB0560
18:10011000001C0000AC0300B30F5154090000EC7048
19:10012000040000EC80040000AC93006176ADC304D1
20:10013000C08D515409E07B00C01FA0FDC50100CC5B
21:100140003305001CD403003C1CD4D31B001CC0D3BB
22:1001500052001C00007C13048E8E5254095B807E7A
23:100160001304000000001C0000940100A00F515473
24:1001700009A00F515409C003FC7F1CA001A001007D
25:100180000000A40100A00F515409C003FC031CF59A
26:100190007701001C267A02061CA00F515409B30FE8
27:1001A000515409B50202001CA00F5154097A7E0275
28:1001B000001CB50202001C530F525409AF0301008A
29:1001C0001C7A0E525409B50202001C000002001CE9
30:1001D000A03DAA11040000AC1104D4D352001CB5F8
31:1001E0003EB2010020FBFDFF1F802C8C0300B93ABA
32:1001F0009E0100753B02001CA71C010010DB83164A
33:10020000001CC71D21C104B93B8DC1048B2C01000A
34:100210001C6B2C35C1040000781100CB2C79C10473
35:10022000A00F515409A00F51540954D002001C4989
36:1002300025B10100AB2C81C104A71D750300CC338F
37:1002400009001CEB2D01001CEA2901001CA00F5124
38:100250005409AE0F515409A00F515409D407FC039F
39:100260001C993A02001CBB3802001C003800001C1C
40:100270000000FC0104DB3B7E001CC71D01001C26A6
41:100280007A16061C271D01001CB30F5154097A0E63
42:10029000525409530F5254097A0E525409530F52B3
43:1002A00054097A0E525409530F525409A00F515455
44:1002B000097A0602001C530F525409AF0301001CB7
45:1002C0007A0E525409530F5254097A0E525409535C
46:1002D0000F5254097A0E525409530F5254097A0E90
47:1002E000525409003D02001C0000581200CB2C01A2
48:1002F000001C753B02001CA71C010010A67BFD051D
49:100300001C000090C204A67BFD051C0000A8C204CE
50:10031000CB2F05001C602C00001CC71CE90200A0AC
51:100320000F515409530702001CC083F1321C000016
52:10033000600204467AE6051C7A0E525409C083F125
53:10034000321C000068020440FA15001C0000A802DC
54:1003500004467AE6051CA00F515409A00F51540918
55:10036000A00F515409A00F515409B37B01C01F7451
56:100370000E505409C0039C001C8000F802000000CD
57:10038000F802040000CC1205071D01001CD4D32B79
58:10039000001CD4D352001C80769D1304000000037F
59:1003A00000A67BB50310C79C00001C802C00001C1D
60:1003B00000007C0204000074C304AB2DF912050791
61:1003C0001DD5C2048B2D01001C692501001CA67BD4
62:1003D000B50310CB2F09001C602C00001C00006826
63:1003E0000300530F525409467AE6051C7A0E525404
64:1003F0000940FA15001C0000300304467AE6051C8B
65:10040000B50F515409A00F51540973EC4A0304600D
66:100410002C00001C0000480300C71C01001C000049
67:10042000481305071D01001CC0D722001C75569EED
68:100430001304602C00001CE71C650304E79C00000B
69:100440001CA67BB50310802C00001C0000180304C0
70:10045000000074C304B97B01001C0000ACC304CBD2
71:10046000AFFC071CCB2F01041CC79F80031C00009E
72:10047000ACC304CBAFFC071CCB2F0D041CC79F8063
73:10048000031C0000ACC304CBAF00F81DCB2F010050
74:100490001DA67BB5031CC79CACC3040000AC1305B0
75:1004A000071D01001CC01DFCD308279D040400A0EB
76:1004B000EE66D400FB75291404207B06001CC01CCA
77:1004C0003C04000000D0D308000020F400C0EFF28C
78:1004D000001C20257C140460B7F2030000002C15DA
79:1004E00000CCB3FC031CCC3305021C00002CC5045B
80:1004F00060B72E050400002C150400007CC404C065
81:100500001DB8F304000088C404079D00001C1B7480
82:100510001DF404A67B11041CA00F895409E07B0084
83:10052000FC1F397F02001C071DBDC304A67BCD0341
84:100530001C000088C404E01C00001C0000C403046C
85:10054000CBAF00F81DCB2F01101D0000CCC3040061
86:1005500000CC0304CBAF00F81DCB2F01181DC79FA3
87:10056000000B1C0000CCC304FB7501001C071D011F
88:10057000001CCCB3FC031CCC3301021C0000CCC318
89:1005800004A01C00001CA0EEC20304CBAFFC071C9F
90:10059000CB2F09041CFB7501001C0000CCC304CC4C
91:1005A000B3FC031CCC3301021C00002CC50400006A
92:1005B000983405CCB3FC031CCC3315021C479D7446
93:1005C000C4040000984400801D9C5404871DAD04A1
94:1005D00000CE7601001CEF76BDC404A477AD2409DB
95:1005E000E47601001CC47601001C0000B85404D756
96:1005F00076015018F67601001C000000301800004B
97:10060000000010CC3061C504EB2D01001CEA29016B
98:10061000001CC05901001CF57749C504E030FC04FA
99:1006200000004CD00400204C140500000008050018
100:10063000CCB3FC031CCC3309021CEB2DD5C404CC79
101:10064000B3FC031CCC3319021CEB2DD5C404CCB372
102:10065000FC031CCC330D021CEB2DD5C404CCB3FC25
103:10066000031CCC3311021CEB2DD5C404007B00808D
104:100670001CAE77610500000004C004D38B00FC1F92
105:10068000607A3C001C604CE00400C02F20051FE095
106:1006900030D004008025D00400B55BD10404692665
107:1006A00001001C6A2B01001C801D00001CA9256193
108:1006B0000500EE3000001CAF77210500B45F01405B
109:1006C00018079D645504B77601001C967601001C3E
110:1006D000471D01001CA433016018A42F0160186499
111:1006E000770160182477016018447701001C648842
112:1006F00003001CA43F01001CA43B01001C537B0011
113:10070000C01CD3CF1B001C534F02001CDACF00C00B
114:100710001FD5570F001CD3D337001CD4530F001C18
115:10072000E02900001CF5D5CC05000000B855047781
116:100730005601001C565301001C0000001018000058
117:1007400004C004F55501001C0000D0550477560183
118:10075000001C565301001C0000001018000004C0CB
119:1007600004CB2F011810CB2F011010CB2F01081034
120:10077000CB2F010810CB2F012010CB2F010010CB65
121:100780002F012810892571C20400000CC304000049
122:1007900074C304000074C304000074C30400007038
123:1007A000C20400000CC304000074C304000074C33E
124:1007B00004000074C304401C6CC004401C9CC004B2
125:1007C000A77775C3040000C4C004271DF1C004004E
126:1007D0000074C304000074C304000074C304000068
127:1007E00048C604000048C604000048C6040000488B
128:1007F000C604000048C604000048C604000048C6FD
129:1008000004000048C604000048C604000048C604AE
130:10081000000048C604000048C604000048C60400A2
131:100820000048C604000048C604000048C604000092
132:1008300048C604000048C604000048C6040000483A
133:10084000C604000048C604000048C604000048C6AC
134:1008500004000048C604000048C604000048C6045E
135:10086000000048C604000048C604000048C6040052
136:100870000048C604000048C604000048C604000042
137:1008800048C604000048C604000048C604000048EA
138:10089000C604000048C604000048C604000048C65C
139:1008A00004000048C604000048C604000048C6040E
140:1008B000000048C604000048C604000048C6040002
141:1008C0000048C604000048C604000048C6040000F2
142:1008D00048C604000048C604000048C6040000489A
143:1008E000C604000048C604000048C604000048C60C
144:1008F00004000048C604000048C604000048C604BE
145:10090000000048C604000048C604000048C60400B1
146:100910000048C604000048C604000048C6040000A1
147:1009200048C604000048C604000048C60400004849
148:10093000C604000048C604000048C604000048C6BB
149:1009400004000048C604000048C604000048C6046D
150:10095000000048C604000048C604000048C6040061
151:100960000048C604000048C604000048C604000051
152:1009700048C604000048C604000048C604000048F9
153:10098000C604000048C604000048C604000048C66B
154:1009900004000048C604000048C604000048C6041D
155:1009A000000048C604000048C604000048C6040011
156:1009B0000048C604000048C604000048C604000001
157:1009C00048C604000048C604000048C604000048A9
158:1009D000C604000048C604000048C604000048C61B
159:1009E00004000048C604000048C604000048C604CD
160:1009F000000048C604000048C604000048C60400C1
161:040A00000048C604E0
162:00000001FF
diff --git a/firmware/slicoss/oasisdbgdownload.sys.ihex b/firmware/slicoss/oasisdbgdownload.sys.ihex
deleted file mode 100644
index 18b376a9f8ad..000000000000
--- a/firmware/slicoss/oasisdbgdownload.sys.ihex
+++ /dev/null
@@ -1,5124 +0,0 @@
1:1000000002000000004000000000010000000000AD
2:10001000008000001500004081B200001B0000407D
3:1000200081B200002100004081B2000003000040C6
4:1000300081B20000000000A898B001000480A24036
5:10004000FD7F00000900A249DD7D00000000004C9A
6:1000500080B2010007000040D1B100000000004C58
7:1000600080B201000900A240757D000060000040E0
8:10007000619901000B00A8B17E3100000900004029
9:1000800081B2000000808F981831000010000098A5
10:1000900080E40100000041988094010000000040CD
11:1000A00081B201001000009880E401000E00409829
12:1000B000809400001100004081B200000000004068
13:1000C000A59901001900294081320000190014BCD3
14:1000D000803200000E0093BC8032000000005040CF
15:1000E00081B201000080004081B200001000004099
16:1000F000A59901001F002940813200001F0014BC97
17:1001000080320000120093BC80320000000050409A
18:1001100081B201000180004081B200002000004057
19:10012000A59901002500294081320000250014BC5A
20:1001300080320000140093BC8032000000000049AF
21:10014000DD810100120100408132010033010040D5
22:10015000813201002A0014BC80320000FE0013BC72
23:10016000803200005495004045990100FFFF004097
24:10017000E599010000002F4049B101000000004056
25:10018000E1B1010000000040FDB3010000000040AB
26:10019000FFB30100330018EE803200000000005071
27:1001A00089B001003200A24189500000990000404E
28:1001B000813201003094004043990100000000F8B2
29:1001C00020B10100000000FAE0B30100390098EE10
30:1001D00080320000000000FB80B001003B0080F393
31:1001E000DE33000000000047FD9301003E0083F372
32:1001F00080320000F00000F38088010001800040A0
33:100200002EDD0100009400404399010000000046EB
34:1002100043C10100000000FA24B101007C0018EE87
35:1002200080320000450095E880320000FFFF00E8C2
36:10023000808801007C0026408132000000000040E0
37:10024000D5990100000000F2ECB30100000000F8B5
38:10025000D6B1010008000040D5990100000000F06F
39:10026000D6B10100FF0000F8EE8B0100080100404C
40:10027000D5990100FF0000F0808C0100000000F71C
41:100280008194010000000040D6B10100FF0000F899
42:10029000808801003C000040D5990100FF0000F07B
43:1002A000D68D0100FFFF00F0F0DB010000000048E8
44:1002B00081E00100000000F8819401003C01004051
45:1002C000D599010000000040D6B10100FF0000F800
46:1002D000808801000000004881E00100000000F873
47:1002E000819401003C020040D599010000000040CB
48:1002F000D6B101002C000040D5990100000000F8A3
49:10030000D6B101001E0000F082F40100FF3F00F8AA
50:1003100080D80100640026408132000000000041C6
51:1003200081D00100FFFF004080D8010000000041A3
52:100330008094010000000040D8B10100680022FA5A
53:10034000803000000000004C81E00100010000400E
54:1003500080CC010000000040DEB10100000100403F
55:10036000D5990100100000FA80E40100000000F6B9
56:100370008194010000000040D6B10100000200405D
57:10038000D5990100100000FA80E40100000000F699
58:100390008194010000000040D6B101000600004039
59:1003A000D5990100100000FBD6E5010007000040D0
60:1003B000D5990100180000FBD6E501004800004077
61:1003C000D5990100100000FAD6E501005000004068
62:1003D000D5990100100000FBD6E50100030000FBE9
63:1003E0007A890100000000F0DCB101007C00004CC3
64:1003F000DD9100007C0095E88430000000002FE9CA
65:10040000FAB3010000000040D1B10100FF0000423A
66:10041000808801003400004080CE01007C00A640AE
67:1004200081320000850000408132010002802240BC
68:10043000803200007C00004081B200000000004FCC
69:1004400081B001008E0009F9813200008C0008F9AA
70:100450008132000098001FFDF93300008B009EFDE3
71:10046000813200000000004AF39301000000804840
72:10047000F3930100000000FDF7B301000000804984
73:10048000F3930100000000FC19B1010093000AF988
74:1004900081320000000040FB81B20100000041FDFC
75:1004A00081B20100000780F9F38F0100000742F9D3
76:1004B000F38F01009700A2FFF76F00000000434098
77:1004C00081B201000000A2FFFBEF0000000080FCF1
78:1004D000E1B101000000804081B0010000940040C3
79:1004E00047990100BB000040813201000000A24694
80:1004F000FD7F01000094004047990100CE000040BC
81:10050000813201000000A244FD7F01000094004000
82:100510004599010000000040F1B10100FF7F00405B
83:10052000F5990100FF7F0040F59901009A13004002
84:10053000F599010007000040F59901000100004015
85:10054000F599010000020040F59901000200004009
86:10055000F599010000020040F599010003010040F7
87:10056000F599010000000040F59901009A13004040
88:10057000F59901000B000040F59901008000004052
89:10058000F599010000000040F599010000000040CD
90:10059000F599010007000040F599010008000040AE
91:1005A000F5990100B0020040F599010000000040FB
92:1005B000F599010000000040F59901000229004072
93:1005C000F599010000000040F59901000067004026
94:1005D000F599010000000040F599010080000040FD
95:1005E000F599010000008040F599010000000045E8
96:1005F000FD83010000000046FD830100FF7F0040F5
97:1006000025990100C4000040813201000000A2448D
98:1006100080B2000000000045FD930100E2000040B0
99:10062000833001000000A2458032010000008046B6
100:10063000FD9301000010004083980100DD000040A0
101:100640002B3101000000A24688B0000000000041EC
102:1006500089B00100000000948CB00100FFFF00464B
103:1006600080880100A5A5A24080CE000000000048BF
104:100670008DF00100C90082418940000000008040E7
105:1006800089B0010000000044FD830100D400004057
106:10069000813201000000A24480B20000E2000008A4
107:1006A000833001000000A245803201000000804438
108:1006B000FD93010000300008839801008000004095
109:1006C0002B990100DB000040893001000000A246A8
110:1006D00080B20000FFFF009480880100A5A5A24021
111:1006E000804E01000000804389B001000384004176
112:1006F0002C990100DE00004081B200000388004117
113:100700002C990100000000208DB0010000009F9690
114:1007100080B20000DF00A2418D5000000000804048
115:1007200081B20100FF7F0040259901000000004CCC
116:1007300089E00100DD000044821401000000909473
117:100740008AB0000000000045F0B101001000004533
118:1007500088F401000000004489D00100DD0000445D
119:100760002B410100EC00084180320000ED000094B4
120:1007700024B100001000009424F501000000009452
121:10078000F0B10100F200A04489500000DD000044F7
122:100790002B41010000000094F0B10100EF00204463
123:1007A000895000001000004588F40100000000FAA4
124:1007B0008AB001000000A34289D00000F700A0FA2F
125:1007C0008A400000000000418BC00100F500A342F8
126:1007D00089500000FFFF0045888801001000004597
127:1007E0008AF40100FC0090448A40000000000041AF
128:1007F0008BC00100FFFF00458AA801000000805067
129:100800008BE00100FF7F0040259901007C00004043
130:100810002B9901000030004083980100DD000008A2
131:1008200083140100000000942AB101000080004000
132:10083000F99B0100DD0000FC19310100000040942B
133:1008400080B20100DD0000442B4101000000419412
134:1008500080B2010000000041F9C301000000004423
135:100860002BC1010004019F948032000002800040EF
136:1008700081B200001001005193B000001001004D42
137:1008800093B000001001004993B000000000004246
138:1008900093B001001001A24193500000000080407D
139:1008A00081B201000000104081B20100000011403F
140:1008B00081B201000000124081B20100000013402B
141:1008C00081B201000000144081B201000000154017
142:1008D00081B201000000164081B201000000174003
143:1008E00081B201000000184081B2010000001940EF
144:1008F00081B2010000001A4081B2010000001B40DB
145:1009000081B2010000001C4081B2010000001D40C6
146:1009100081B2010000001E4081B2010000001F40B2
147:1009200081B201000000704081B2010000007140FE
148:1009300081B201000000724081B2010000007340EA
149:1009400081B201000000744081B2010000007540D6
150:1009500081B201000000764081B2010000007740C2
151:1009600081B201000000784081B2010000007940AE
152:1009700081B2010000007A4081B2010000007B409A
153:1009800081B2010000007C4081B2010000007D4086
154:1009900081B2010000007E4081B2010000007F4072
155:1009A00081B201000000804081B2010000040040DB
156:1009B000A199010000000050A1D1010000000040F9
157:1009C0001BB001000000004019B001000000004011
158:1009D00017B001000000004015B001000000004009
159:1009E00013B001000000004011B001000000004001
160:1009F0000FB00100000000400DB0010000000040F9
161:100A00000BB001000000004009B0010000000040F0
162:100A100007B001000000004005B0010000000040E8
163:100A200003B001000000004001B001003B0120487C
164:100A3000A15100000000804081B201004701224B1B
165:100A4000747D00000000804081B201006000004B16
166:100A500060990100000000B17EB101004801A8408A
167:100A6000813200004501004081B200000500804055
168:100A700097980100180000AA9688010000008043A2
169:100A800097F00100070000AA96880100000080404E
170:100A900081B201000000005807900100D89F00407B
171:100AA00081B2000000000044A5B30100D80200405C
172:100AB00081320100F8020040813201000000005C38
173:100AC00007900100D89F0040BFB300005A0122CC1C
174:100AD000857F00000000005107900100D89F004072
175:100AE00081B200000000004049B10100AE0300CB1C
176:100AF000A3C90100D0140040A19B01000000002008
177:100B000046B1010000000048F1B10100000000D032
178:100B1000F1B10100000000CAF1B10100000000D5F0
179:100B2000E1B10100070000406199010020000020B0
180:100B300062DD01006301A84081320000000000CCAA
181:100B400085930100F802004081320100D01400407A
182:100B500043990100000000FABAB30100000000FA56
183:100B6000A4B30100000000F8BCB3010000142F4042
184:100B700081B00100000000E7A7B30100000000D829
185:100B8000A9B30100FF0000DD8188010002000040E0
186:100B900080F401007301004080C80100860100DD7F
187:100BA000813200000000004010B1000087010040C9
188:100BB00081B200008801004081B20000890100403C
189:100BC00081B200008A01004081B200008B01004028
190:100BD00081B200008D01004081B200008F01004011
191:100BE00081B200005001004081B20000B601004017
192:100BF00081B200005001004081B20000C4010040F9
193:100C000081B20000C501004081B2000082020040B4
194:100C100081B200008302004081B22800B802004087
195:100C200081B22800D49F004081B22800D59F0040A7
196:100C300081B22800D69F004081B22800D79F004093
197:100C400081B228007201004181C02800550151493C
198:100C5000FD9328005501524AFD932A00550155493C
199:100C6000FD832A005501564AFD832A0050019181D7
200:100C700080302A005501454081B22A0050019182FE
201:100C800080302A005501464081B22A000000004011
202:100C900089B02B0000002F4081B0010000140040FB
203:100CA00049990100B30122DEE16D00000000004C13
204:100CB00049C101000000004181C001009201A2442D
205:100CC000816C00000000004C49D101009A012240D3
206:100CD000E16D00009601A2418150000050010041E9
207:100CE000BFB3000000000042BFB301005001A00FDD
208:100CF000BD6F0000000000DEE1B101000000004413
209:100D000049C10100B50100401999010000004240AD
210:100D100081B20100000043FF85B00100000000DE49
211:100D200019B10100000042FF87B00100000043FF3D
212:100D3000E1B101000000004449C1010000002FFFA3
213:100D4000E1B10100081400A480CC0100AA012640F2
214:100D5000813200000000004185C00100A801A24CC2
215:100D600081500000B40122D281320000AF01224143
216:100D7000A56F00005001A2E081320000000000D207
217:100D8000C1B301000000005C8990010000004042F6
218:100D900080B201000000414380B20100000000F079
219:100DA0008894010055010044E0B10000B101004801
220:100DB00049C10000AF01005B89900000A89F00A01E
221:100DC0009EB000000000004083B00100001400400D
222:100DD000499901000000234081B00100BE0122DEDC
223:100DE000E16D00000000004C49C10100000000411D
224:100DF00081C00100B901A244816C00005001004390
225:100E0000BFB30000000000F818B10100000040F876
226:100E100080B20100000041F080B2010000000040FB
227:100E2000F1B1010000000040F1B1010055010040A6
228:100E3000E1B10000C601004091B000000000004197
229:100E400091B00100D0142E4049B1010005000040CE
230:100E5000A39B0100080000DD81F40100CB010040EC
231:100E600080C801000000004010B10000D101004026
232:100E700081B00000530100DEA1B30000E301004097
233:100E800081B20000E501004081B00000EB010040AC
234:100E900081B20000520100DFE1B10000000000D08B
235:100EA000BAB30100000000DEA1B10100020000D2CF
236:100EB000A5E70100000000D2C1B30100000000005E
237:100EC000F0B10100DB012244C1530000DA0184418A
238:100ED00081400000DE01004081320100000000D0AE
239:100EE00045B10100D5010041A1C10000DA02004076
240:100EF00081320100F802004081320100550100DD1D
241:100F0000A1B100000000004081B00100400000409D
242:100F1000A59B0100DA02004081320100400000D3AD
243:100F2000A7CB0100F80200E0A5B3000003000040D9
244:100F3000A39B0100530100DEA1B3000000000044A8
245:100F4000BFB30100000000DE819001005001A2BA91
246:100F500080040000600000DE61990100E801A8B192
247:100F60008030000052010040E0B10000000000D0DD
248:100F7000BAB301006B020040819801006002004D8D
249:100F80008330010000000044E1B301000000004490
250:100F9000E3B3010000000044E5B301000000004499
251:100FA000E9B3010000000044EBB30100000000447D
252:100FB000F5B3010000000044F7B301000000004455
253:100FC000F9B30100F90122408F6F00007802004060
254:100FD00081980100600200C7833001008002004058
255:100FE000819801006002004283300100000000E8A7
256:100FF000F1B10100000000E9F1B10100000000EAD8
257:10100000F1B10100000000EBF1B10100000000852A
258:10101000F0B10100000000ECF1B10100000000EDB2
259:10102000F1B10100000000B2F0B10100000000A920
260:10103000F0B10100000000ACF0B10100000000AB15
261:10104000F0B10100000000B8F0B10100000000B9EB
262:10105000F0B10100000000BAF0B10100000000BBD7
263:10106000F0B101000C02B8408130000000000040E7
264:10107000819001000E02B940813200000000004161
265:10108000819001001002BA4081320000000000424D
266:10109000819001001202BB40813200000000004339
267:1010A000819001001402BC40813200000000004425
268:1010B000819001001602BD40813200000000004511
269:1010C000819001001802BE408132000000000046FD
270:1010D000819001001A02BF408132000000000047E9
271:1010E000819001001C02C8408132000000000048CD
272:1010F000819001001E02C9408132000000000049B9
273:10110000819001002002CA40813200000000004AA4
274:10111000819001002202CB40813200000000004B90
275:10112000819001002402CC40813200000000004C7C
276:10113000819001002602CD40813200000000004D68
277:10114000819001002802CE40813200000000004E54
278:10115000819001002A02CF40813200000000004F40
279:10116000819001002C02F04081320000000000500C
280:10117000819001002E02F1408132000000000051F8
281:10118000819001003002F2408132000000000052E4
282:10119000819001003202F3408132000000000053D0
283:1011A000819001003402F4408132000000000054BC
284:1011B000819001003602F5408132000000000055A8
285:1011C000819001003802F640813200000000005694
286:1011D000819001003A02F740813200000000005780
287:1011E000819001003C02F84081320000000000586C
288:1011F000819001003E02F940813200000000005958
289:10120000819001004002FA40813200000000005A43
290:10121000819001004202FB40813200000000005B2F
291:10122000819001004402FC40813200000000005C1B
292:10123000819001004602FD40813200000000005D07
293:10124000819001004802FE40813200000000005EF3
294:10125000819001004A02FF40813200000000005FDF
295:101260008190010000000040F0B10100400000400A
296:10127000A59B0100D802004081320100F802004025
297:1012800081320100D0142E06A5B30100400000D326
298:10129000A7CB0100000000F0F1B10100000000F157
299:1012A000F1B10100000000F2F1B10100000000F412
300:1012B000F1B10100000000F5F1B10100000000FAF9
301:1012C000F1B10100000000FBF1B10100000000FCE1
302:1012D000F1B10100000000EBF1B10100000000EEEF
303:1012E000F1B10100000000EFF1B10100000000F3D6
304:1012F000F1B10100000000F6F1B10100000000FDB5
305:10130000F1B10100DB0100C7E1B100000000804045
306:1013100081B20100660200488032000000005140A6
307:101320001AB1010000004D4081B2010000004540AB
308:1013300081B201006302A241835000005F02494074
309:1013400081B20000000052401CB1010000004E407C
310:1013500081B201000000464081B201006802A24152
311:10136000835000005F024A4081B20000000000A0EC
312:101370009EB0010000000080D8B30100000000A171
313:10138000D0B30100000000A2D2B30100000000A40D
314:10139000D4B30100000000D0D6B30100000000D19A
315:1013A000DCB30100000000D2DEB3010000000088C1
316:1013B000DAB30100000000D48EB30100000000D3B6
317:1013C000E6B30100000000ACECB30100000000999E
318:1013D000FAB30100000000D5E0B30100000000D521
319:1013E000E2B30100000000D5E4B30100000000D525
320:1013F000E8B30100000000D5EAB30100000000D509
321:10140000F4B30100000000D5F6B30100000000D5E0
322:10141000F8B30100000000C7A9B101000000004FAF
323:1014200040B101008402004091B000000000004182
324:1014300091B0010007000040A39B0100080000DDFF
325:1014400081F401008802004080C8010000000040D3
326:1014500010B100008D02004081B2000098020040EF
327:1014600081B2000098020046A3B300009B02004036
328:1014700081B20000A102004081B200008F0223501F
329:10148000A56F000000000050A5B30100E802004273
330:10149000A5630100F802004081320100D0142D4004
331:1014A00049B10100000000D0BAB30100000000DE25
332:1014B000A1B10100000000F800B001009702224431
333:1014C000A553000094020041A1C10000550100DDB8
334:1014D000A1B10000E80200DEA1330100F8020040E3
335:1014E000813201005501004081B20000000000453A
336:1014F000BFB301005001A2D2777D0000000000D2EE
337:1015000061B10100000000DE63B101009E02A8404D
338:10151000813200005501004081B20000E802005411
339:10152000A5330100F802004081320100D0142D40A3
340:1015300049B10100000000F8D0B30100000000F83C
341:10154000D2B30100000000F8D4B30100000000F89D
342:10155000D6B30100000000F808B10100AC02004061
343:10156000819801006002004683300100550100406F
344:1015700081B20000000000A09EB00100000000E861
345:1015800043B10100000000E945B10100000000EA9C
346:1015900049B10100000000EBA1B101000000004FC3
347:1015A00040B101000400004081B20000040000408E
348:1015B00081B200000400004081B20000040000403D
349:1015C00081B200000400004081B20000040000402D
350:1015D00081B20000D0142E4049B101000500004046
351:1015E000A39B010000000040C1B30100080000DD22
352:1015F00081F40100BD02004010C90000C3020005D3
353:1016000081B000005001004081B20000CB02000513
354:1016100081B000005001004081B20000D0020044BF
355:10162000A5B30000D2020044A5B3000002000040B0
356:10163000A4E70100000000E081B10100FFFF00C14C
357:10164000F0890100C802224181500000C40200411B
358:10165000C1C30000DA02004081320100F8020040FC
359:10166000813201005501004081B2000002000040BB
360:10167000A4E70100000000E091B10100FFFF00C9F4
361:10168000F0890100C802224181500000CC020041D3
362:10169000C1C30000FFFF00DE85890100C80200C24F
363:1016A000E0B10000FFFF00DE95890100C80200CA1A
364:1016B000E0B100000400004081B2000004000040DE
365:1016C00081B200000400004081B20000040000402C
366:1016D00081B20000000000E7A7B30100000000D8BD
367:1016E000A9B301000000004049B10100AE0300CBE6
368:1016F000A3C901000000002046B10100000000D293
369:10170000F1B10100000000D3F1B10100000000D4EC
370:10171000F1B10100000000D0E1B10100000000D1F2
371:1017200061B101002000002062DD0100E202A8405A
372:1017300081320000000080CC85930100040000404D
373:1017400081B200000400004081B2000004000040AB
374:1017500081B20000000000E7A7B30100000000D83C
375:10176000A9B301000000004049B10100AE0300CB65
376:10177000A3C901000000002046B10100000000D212
377:10178000F1B10100000000D0F1B10100000000D370
378:10179000F1B10100E10200D4E1B100000400004019
379:1017A00081B200000400004081B20000040000404B
380:1017B00081B200000400004081B20000040000403B
381:1017C00081B200000400004081B20000040000402B
382:1017D00081B200000000A2CC85FF00000000005094
383:1017E00081B00100FA02A24181500000F902A2F288
384:1017F00080300000000080CC8583010004000040A0
385:1018000081B200000400004081B2000004000040EA
386:1018100081B20000B5030040A199010000002F41F2
387:1018200099B301000A032244816C0000120322488C
388:10183000816C00000C03224C816C000016032250C6
389:10184000816C000017032254816C00001903225898
390:10185000816C00001E03225C816C0000500100407E
391:1018600081B20000000000BC09B00100DD9F00CA89
392:1018700001B000000000004003B001000000004182
393:10188000F38301001003A242056C00000000004138
394:1018900005B00100DD9F22CA07140000DD9F00454E
395:1018A000F3930000DD9F2043956F0000DD9F80CA09
396:1018B00005300000DD9F220180300000DD9F00CB5D
397:1018C000DB910000570100BCABB30000000000BC7E
398:1018D000B1B30100DD9F00CACFB30000FF0000CA12
399:1018E00081880100DD9FA240747D000060002040DF
400:1018F000609901001B03A8B1823000001A03004068
401:1019000081B20000DD9F00CA79B3000004000040EE
402:1019100081B200000000004E81B0010000000043D1
403:10192000CB8301000000454081B201002203A241A7
404:10193000815000000000454081B201000000454098
405:1019400081B201002D039182823000000000008AE4
406:1019500080B00100AE9F004080CE01002B03A64066
407:10196000813200002D03564081B20000B5030040D3
408:10197000A19901000000005307900100B503004049
409:10198000A19901000000005207900100D89F00417A
410:101990008BB300000000004E81B001000000004247
411:1019A000CD8301000000464081B201003203A24114
412:1019B000815000000000464081B201000000464016
413:1019C00081B201003D039181823000000000008956
414:1019D00080B00100AE9F004080CE01003B03A640D6
415:1019E000813200003D03554081B20000B503004044
416:1019F000A19901000000005207900100B5030040CA
417:101A0000A19901000000005307900100D89F0041F8
418:101A10008BB30000B0030040A1990100C4142F4013
419:101A200099B301005701004049B100000400004093
420:101A300081B200000400004081B2000004000040B8
421:101A400081B200000400004081B2000004000040A8
422:101A500081B200003094004043990100009000F8EA
423:101A600080980100100000F288E40100200000408E
424:101A7000209901000000005F239101004D031F9198
425:101A80008032000030000040209901000000005F1B
426:101A90002391010050031F9180320000400000405C
427:101AA000209901000000005F2391010053031F9162
428:101AB000803200000000005F2391010055031F9158
429:101AC000803200000008804020990100040000409E
430:101AD00081B200000000004784B001000000A2486D
431:101AE000848400000000005F61B101000000005C20
432:101AF0008F9001000000004762B101005A03A84026
433:101B000081320000000800478EC801005803005CC5
434:101B10008F800000E00000406199010058152D40C1
435:101B20008DB00100D0142DF088B00100000000FA43
436:101B30008AB001000000004581B0010007000045A7
437:101B400082880100000000438BF001000000004883
438:101B500083E0010000000046829401002000004163
439:101B600060990100000000418DC001007403225FF4
440:101B70008D6C00006503A2418150000063030040AA
441:101B800081B2000008000040859801000000004478
442:101B900082B001000000004186B00100001C00433B
443:101BA00086D801000000A641855001007003004165
444:101BB00083E000006E030040813201000000004815
445:101BC00085E00100D0142F468494010020000042DB
446:101BD00060990100C0000040619901000000804050
447:101BE00081B201000400004081B200000400004006
448:101BF00081B200000400004081B2000004000040F7
449:101C000081B200000400004081B2000004000040E6
450:101C100081B20000070000458088010000000043F9
451:101C20008BF0010000040040839801008503A0416F
452:101C3000815000008303004182E8000000008041E1
453:101C40008EC001000400004081B20000040000408A
454:101C500081B200000000004049B1010000020040D4
455:101C600083980100003900404599010000000040C0
456:101C7000F1B101008B03A24183500000000000403D
457:101C800085B001000B00004482F401001A1500A683
458:101C900086B0010070150040459901000008004021
459:101CA000F199010000000042F0B10100003900404C
460:101CB000E1990100040000406199010070150043A2
461:101CC000629901009503A840813200009703225ACF
462:101CD000737D00007A000040619901009803A8B16B
463:101CE0007E3100000008004284C801009003A24138
464:101CF000835000000000804081B2010004000040D9
465:101D000081B200000400004081B2000004000040E5
466:101D100081B2000058152D408DB00100D0142DF077
467:101D200088B00100000000408FB00100010000A653
468:101D300090B0010000F800489098010000000045B4
469:101D400093B00100000000FA8AB001008003004057
470:101D500081320100020000A680B00100AC032240E5
471:101D6000826C0000B0030040813201005803004043
472:101D700081320100000000418DC00100B503225FE7
473:101D80008D6C0000A703A24193500000A503004002
474:101D900081B20000FF070047848801000000A640D0
475:101DA00081B20000ED9F0047803001000002004733
476:101DB0008EC80100B003004081B200000000004462
477:101DC00050B30100BB032018896C0000040000A67A
478:101DD00084B00100200000A686B001000010004081
479:101DE000559B0100BE03004081B20000040000A624
480:101DF00084B00100200000A686B001000010004061
481:101E0000559B01000000004250D30100000000A8D3
482:101E10004FB30100000000434ED301006E030040A9
483:101E2000813201008203004280300100B003004093
484:101E300081320100C70322A78F6C00005A030040C3
485:101E400081320100C403004081B2000000008040E4
486:101E500081B20100C8142EBB85B00100000000EE65
487:101E600082B0010000000041E0B10100000000A2CA
488:101E7000A0B3010000000044A5B30100E19F00CA27
489:101E8000A7330100E09F004081B200000400004041
490:101E900081B20000D6032242756F0000D8032241B0
491:101EA000756F0000DA031ECA81320000DC031FCA0E
492:101EB00081320000000000CAC9B10100DD9F00426C
493:101EC00075B30000000000CACDB10100DD9F0041E4
494:101ED00075B30000000000CACFB10100DD9F0040D3
495:101EE00075B30000008100A6C6B10100DD9F00406F
496:101EF00081B20000008000A6C6B10100DD9F004055
497:101F000075B300000400004081B2000004000040EE
498:101F100081B200004501004D933001004501004EA3
499:101F2000933001004501004C93300100EC9F0040CC
500:101F300081320100DD9F004081B2000004000040BA
501:101F400081B200000400004081B2000004000040A3
502:101F500081B200005495004045990100DD9F00CA00
503:101F6000E5B100000400004081B200000400004020
504:101F700081B200000400004081B200000400004073
505:101F800081B200000400004081B200000400004063
506:101F900081B20000CC142E4087B00100000000A2E6
507:101FA000A0B3010015040043B2330100000068DA59
508:101FB00089B001007C0000408B98010000000050B7
509:101FC00089F001000000004189D0010003000044B5
510:101FD000888C01000000004487C00100000000411F
511:101FE000A5B3010015040043B2330100000000DA7C
512:101FF000F1B101000000004487C001000000004171
513:10200000A5C301000B042244895000000B042244A4
514:102010008B500000FA03A250A56F000000000042A0
515:10202000A5E30100000000CAA7B30100E19F00BBC7
516:1020300085300100CC142ED295C30100AE0300CB35
517:10204000A3C901000000002042B1010000000050BF
518:1020500081B001000804A241815000000704A2F2EF
519:1020600080300000FA030040A5B3000000000042E9
520:10207000A5E30100000000CAA7B30100E19F00BB77
521:1020800085300100E09F004081B200000400004064
522:1020900081B20000000000D92BB101000010004007
523:1020A00083980100DB00004081320100FFFF0094B3
524:1020B000B48B01000000804081B20100000000D913
525:1020C0002BB101000010004083980100DD000040AA
526:1020D0008132010000008094B4B30100040000408C
527:1020E00081B200000400004081B200000400004002
528:1020F00081B200000400004081B2000004000040F2
529:1021000081B200000400004081B2000004000040E1
530:1021100081B20000000000D92BB10100000000DAFC
531:1021200027B1010006C000402D990100DE000040EB
532:1021300081320100001000408398010002C4004178
533:102140002C990100DE000040813201000040004077
534:1021500083980100058200412C990100DE000040B7
535:10216000813201002D048094803200000C01004077
536:10217000813201002804004081B200000480004048
537:102180002D990100DE0000408132010000008040F6
538:1021900081B201003104001210C9000000488040E3
539:1021A0000B980100C04980400B980100804B804093
540:1021B0000B980100404D80400B980100004F80407B
541:1021C0000B980100C05080400B9801008052804065
542:1021D0000B980100405480400B980100005680404D
543:1021E0000B980100C05780400B9801008059804037
544:1021F0000B980100405B80400B980100005D80401F
545:102200000B980100C05E80400B9801008060804008
546:102210000B980100406280400B98010000648040F0
547:102220000B980100C06580400B98010080678040DA
548:102230000B980100406980400B980100006B8040C2
549:102240000B980100C06C80400B980100806E8040AC
550:102250000B980100407080400B9801000072804094
551:102260000B980100C07380400B980100807580407E
552:102270000B980100407780400B9801000079804066
553:102280000B980100C07A80400B980100807C804050
554:102290000B980100407E80400B9801000400004034
555:1022A00081B200000400004081B200000400004040
556:1022B00081B200000400004081B200000400004030
557:1022C00081B200000400004081B200000400004020
558:1022D00081B200005904001210C900000080804043
559:1022E0000B980100008280400B9801000084804020
560:1022F0000B980100008680400B9801000088804008
561:102300000B980100008A80400B980100008C8040EF
562:102310000B980100008E80400B98010000908040D7
563:102320000B980100009280400B98010000948040BF
564:102330000B980100009680400B98010000988040A7
565:102340000B980100009A80400B980100009C80408F
566:102350000B980100009E80400B98010000A0804077
567:102360000B98010000A280400B98010000A480405F
568:102370000B98010000A680400B98010000A8804047
569:102380000B98010000AA80400B98010000AC80402F
570:102390000B98010000AE80400B98010000B0804017
571:1023A0000B98010000B280400B98010000B48040FF
572:1023B0000B98010000B680400B98010000B88040E7
573:1023C0000B98010000BA80400B98010000BC8040CF
574:1023D0000B98010000BE80400B98010004000040F3
575:1023E00081B200000400004081B2000004000040FF
576:1023F00081B200000400004081B2000004000040EF
577:1024000081B200000400004081B2000004000040DE
578:1024100081B200000000004087B1010000000040D0
579:1024200097B001000000004B80B10100010000A640
580:1024300082B1010082048541974000000000004005
581:1024400097B101000000004097B001000000004B70
582:1024500090B10100010000A692B1010087048541FE
583:10246000974000000000804081B20100040000405D
584:1024700081B200000400004081B20000040000406E
585:1024800081B200000400004081B20000040000405E
586:1024900081B2000090046040813200000000001210
587:1024A00080B10100FFFFF04B82890100930460407E
588:1024B000813200000000004A80B101000100F0A656
589:1024C00082B101009604604081320000FFFF004BA2
590:1024D000848901000000F0C224B001000000004A1D
591:1024E00090B10100FFFF804B928901000000004A7B
592:1024F00090B10100010080A692B10100FFFF004BE6
593:1025000094890100000080CA94B0010004000040DA
594:1025100081B200001000004E98E4010000000007A6
595:10252000989401000000004399E001000000008041
596:10253000989401000000004999E001000000004C5F
597:1025400088940100A604474081320000AD04222097
598:10255000876F000000001F4081B2010000000040B2
599:1025600081B201000000004081B201000000004083
600:1025700081B20100A604004081B2000000001F806B
601:1025800086B30100B004224F777D0000C0040040F4
602:10259000813201000000004F61B1010000000044E1
603:1025A00062B10100B104A84081320000B804224B9E
604:1025B000897C0000B604224F777D0000C0040040F3
605:1025C000813201000000004562B10100B604A8405C
606:1025D000813200000000802087B301000400004029
607:1025E00081B200000400004081B2000004000040FD
608:1025F00081B200000400004081B2000004000040ED
609:1026000081B200000400004081B2000004000040DC
610:1026100081B200000000005099B001006F0000403E
611:1026200061990100C104A8B152330000C604224BD5
612:10263000537F00006F00004061990100C404A8B1FD
613:102640007E310000C104A241995000000000A24F59
614:1026500077FD00000400004081B20000040000404B
615:1026600081B200000400004081B20000040000407C
616:1026700081B200000400004081B20000040000406C
617:1026800081B200000400004081B20000040000405C
618:1026900081B200001000004E98E401000000000725
619:1026A000989401000000004399E0010000000080C0
620:1026B000989401000000004899E00100D604004C05
621:1026C00088940000D604474081320000DD042220B7
622:1026D000876F000000001F4081B201000000004031
623:1026E00081B201000000004081B201000000004002
624:1026F00081B20100D604004081B2000000001F80BA
625:1027000086B30100E004224F777D0000F004004012
626:10271000813201000000004F61B10100000000445F
627:1027200062B10100E104A84081320000E804224ABD
628:10273000897C0000E604224F777D0000F004004011
629:10274000813201000000004562B10100E604A840AA
630:10275000813200000000802087B3010004000040A7
631:1027600081B200000400004081B20000040000407B
632:1027700081B200000400004081B20000040000406B
633:1027800081B200000400004081B20000040000405B
634:1027900081B200000000005099B001006F000040BD
635:1027A00061990100F104A8B152330000F604224AF5
636:1027B000537F00006F00004061990100F404A8B14C
637:1027C0007E310000F104A241995000000000A24FA8
638:1027D00077FD00000400004081B2000004000040CA
639:1027E00081B200000400004081B2000004000040FB
640:1027F00081B200000400004081B2000004000040EB
641:1028000081B200000400004081B2000004000040DA
642:1028100081B200007B000040619901000005A8B171
643:102820008030000012051D4080320000401800403A
644:1028300049990100040000A686B001001005A240DD
645:1028400086040000DE9F9C4080320000FFFF0040B5
646:1028500088880100300500504731010036000044EF
647:1028600088CC01000C055240813200003005004048
648:10287000473101000000004189B0010030050048E7
649:10288000473101003005000547310100DE9F00405F
650:1028900081B200002800004047991B00DE9F0041E4
651:1028A000E1C11A007818004049991B00190522540B
652:1028B000817C1A001405424081321A00008200B364
653:1028C00067DF1B0000001A4493931B0028000040A0
654:1028D00047991B00300500418930010027050F4052
655:1028E00080320000FF7F00408888010030050050E2
656:1028F000473101003600004488CC01001F05994093
657:10290000803200000000004889D0010021059B4072
658:10291000803200000000004C89D0010023051F44D4
659:1029200080320000300500404731010000000041C6
660:1029300089B00100300500484731010030050058DA
661:1029400047310100DE9F004081B2000010000040CE
662:1029500086F401006F00004386880100DE9F260593
663:10296000473100003005004189300100DE9F004002
664:1029700081B200000400004081B200000400004069
665:1029800081B200000400004081B200000400004059
666:1029900081B200000000A044F041010000000040AE
667:1029A00081B2010000008041E1C10100040000404B
668:1029B00081B200000400004081B200000400004029
669:1029C00081B200000400004081B200000400004019
670:1029D00081B200004C010007913001000000A240CC
671:1029E00097EC00000000800591C001000400004049
672:1029F00081B200000400004081B2000004000040E9
673:102A000081B200000400004081B2000004000040D8
674:102A100081B200004C010040813201004405A24017
675:102A2000976C00003A000040B39B01004505004050
676:102A300081B2000040000040B39B01001004004040
677:102A400081320100000000DAF5B1010010040042FB
678:102A5000B3430100000000DAF5B1010010040042A8
679:102A6000B3430100000000DAF5B101004E00004060
680:102A7000B39B01001004004081320100080000DA1D
681:102A8000F7F5010050000040919801000000004758
682:102A90008FB0010010040048B2330100000000DADA
683:102AA000F7B10100080000DAF7F50100000000426C
684:102AB00091C001005005A2418F500000000000416C
685:102AC00045D1010008000040B39B01001004004004
686:102AD00081320100000000DAFDB101000A0000406F
687:102AE000B39B01001004004081320100000000DAB5
688:102AF000FDB101001A000040B39B0100100400402A
689:102B000081320100000000DAFDB101001800004030
690:102B1000B39B01001004004081320100000000DA84
691:102B2000FDB1010038050040813201001E0000485F
692:102B3000B2CB01001004004081320100000000DA35
693:102B400091C0010000000048B2CB01001004004019
694:102B50008132010000006EDA8FB0010002000048EF
695:102B6000B2CB01001004004081320100000000DA05
696:102B7000FDB1010004000048B2CB01001004004088
697:102B800081320100000080DAFDB101000400004044
698:102B900081B200007A052245FD7F0000401600400A
699:102BA00045990100DB9F00404931010008000048C1
700:102BB000B2CB010015040040813201007805A2402B
701:102BC0008F6C00007D052220B56F00007A05004063
702:102BD00081B20000DA9F004081321F007D05224053
703:102BE000976C1E007A05424081321E000000004FA3
704:102BF00067931F00DF9F005867931E005416004024
705:102C000047991F00000000FEF4B11F0000000040C3
706:102C100081B21F00000000FEF4B10100000000407E
707:102C200081B20100000000FEF4B10100000000408C
708:102C300081B20100000000FEF4B10100000000407C
709:102C400081B20100000000FEF4B10100000000406C
710:102C500081B20100000000FEF4B10100000000405C
711:102C600081B20100000000FEF4B101004600004006
712:102C7000B39B01001004004081320100080000DA1B
713:102C8000F7F501004800004095980100000000445D
714:102C900097B001001004004AB2330100000000DACE
715:102CA000F7B10100080000DAF7F50100000000426A
716:102CB00095C001009005A241975000002A000040F5
717:102CC000A59B010040160040A19B0100000000CA26
718:102CD000A7B30100E19F00BB85300100E09F0040E9
719:102CE00081B200000400004081B2000004000040F6
720:102CF00081B200000400004081B2000004000040E6
721:102D000081B200000400004081B2000004000040D5
722:102D100081B20000B8052245FD7F0000E0150040AB
723:102D2000479901001A0000A280DC01000000005059
724:102D3000F1B10100F0150040F1990100000000CA56
725:102D4000F1B101000700004061990100200000403E
726:102D500062DD0100A705A8BBE131000000000050C2
727:102D600083B00100AA05A24183500000A905A2F288
728:102D7000823000004C01004081320100B005A240C9
729:102D8000976C00003A000040B39B0100B105004081
730:102D900081B2000040000040B39B0100F0150040EC
731:102DA000439901001004004081320100B805A2FAE5
732:102DB000B46F000010040042B3430100B805A2FA4A
733:102DC000B46F000010040042B3430100BB0522FAB7
734:102DD000B46F0000B8054240813220000000004E70
735:102DE00067932100DF9F0058679320004016004042
736:102DF00045992100DB9F004049312100F615004034
737:102E0000439921005C1600404599210000006EFAAC
738:102E10008EB021000000004081B20100000000FEE1
739:102E2000F4B101000000004081B20100000000FE8A
740:102E3000F4B101000000004081B20100000000F088
741:102E4000B4B30100C905A2408F6C0000FC1520201E
742:102E5000E1B10100CE05004081B22400DA9F0040BC
743:102E600081322500CE052240976C2400CB054240DC
744:102E7000813224000000004F67932500DF9F005837
745:102E80006793240038050040813225001E00004869
746:102E9000B2CB25001004004081320100D30522503E
747:102EA000B56F00000000005091C001000000004814
748:102EB000B2CB0100F615004043990100200400F256
749:102EC000B433010002000048B2CB0100F815004005
750:102ED00043990100200400F2B433010004000048CB
751:102EE000B2CB0100FA15004043990100200400F222
752:102EF000B433010008000048B2CB0100FC150040CB
753:102F000043990100000000F094B00100FFFF004A67
754:102F1000B48B010020040040813201000A00004807
755:102F2000B2CB01001000004AB4F7010020040040B9
756:102F30008132010038050040813201001E00004846
757:102F4000B2CB01001004004081320100E90522509B
758:102F5000B56F0000EA050050B5B300000000004066
759:102F6000B5B301002004004081320100E09F004021
760:102F700081B200000400004081B200000400004063
761:102F800081B200000400004081B200000400004053
762:102F900081B2000000160040479901003031004026
763:102FA000F599010032330040F599010034350040B5
764:102FB000F599010036370040F59901003839004095
765:102FC000F599010041420040F59901004344004059
766:102FD000F599010045460040F59901004748004039
767:102FE000F5990100494A0040F59901002C00004084
768:102FF0008398010000000040F7B10100FC05A241E8
769:103000008350000080162E0683B00100360000FBBE
770:10301000F6A90100FF05A2418350000022000040F4
771:1030200083980100000000FBF6B101000206A241F6
772:10303000835000006200004095980100DC9F004032
773:103040008132010000162D0683B001008016004079
774:10305000459901005C0000FBF6A901000806A241A9
775:103060008350000000000070F9B101000000007101
776:10307000F9B1010000000072F9B101000000007315
777:10308000F9B1010000000074F9B1010054000040E2
778:1030900095980100DC9F0040813201000000007023
779:1030A00095B0010014062270B56F00000000804149
780:1030B00097B001000000804097B00100040000407C
781:1030C00081B200000400004081B200000400004012
782:1030D00081B20000456700A6E0B201000123007044
783:1030E000E19A0100CDEF00A6E2B2010089AB0071C8
784:1030F000E39A0100BA9800A6E4B20100FEDC007277
785:10310000E59A0100321000A6E6B201007654007381
786:10311000E79A0100D2C300A6E8B20100F0E1007412
787:10312000E99A01008016004A44C901000000000726
788:1031300081B001000000004A80D001000000004082
789:10314000F7B101002506A241815000008016004A17
790:1031500044C90100FC162A47E7B501000300004AF4
791:10316000E8E50100000000408DB001005003004080
792:10317000A399010080163D468DE00100000000503B
793:1031800089B00100000000FC40B0010000000041D7
794:10319000A3C101002E06A24189500000000000706A
795:1031A000EBB2010000000071EDB2010000000072FE
796:1031B000EFB2010000000073F1B2010000000074E2
797:1031C000F3B201000000004083B001000F00004195
798:1031D0008088010050030040A2C901004B06A050A6
799:1031E000836C00000D00004098C801000000004FF3
800:1031F000998401005003004CA2C901000000002086
801:1032000086B001000800004098C801000000004F8F
802:10321000998401005003004CA2C901000000002065
803:1032200086A401000200004098C801000000004F81
804:10323000998401005003004CA2C901000000002045
805:1032400086A4010050030040A2C901000000004311
806:1032500040A401000100002088E401000000005F9C
807:1032600041F0010000000044409401000500007599
808:1032700089E401001B00007585F401000000004492
809:10328000849401005506A353836C0000000000766F
810:1032900089B00100000000778984010000000076F9
811:1032A0008BB00100000000208BA40100000000781A
812:1032B0008B840100640600458894000027000041CB
813:1032C00080CE01005A06AA4081320000000000763C
814:1032D00089B001000000007789A40100640600782D
815:1032E00089A400003B00004180CE01005706AA409F
816:1032F000813200000000007689B0010000000077F4
817:1033000089840100000000768BB001000000007885
818:103310008B840100000000458894010000000077C4
819:103320008BB00100000000788B840100640600452A
820:10333000889400000000004484C00100000000796F
821:1033400085C001000000002084C001006B06A3536B
822:10335000836C0000825A00A684C001009979004263
823:1033600084C801007806004081B2000027000041B7
824:1033700080CE01007006AA4081320000D96E00A6FE
825:1033800084C00100A1EB004284C80100780600401F
826:1033900081B200003B00004180CE01007506AA40CA
827:1033A000813200001B8F00A684C00100DCBC0042FB
828:1033B00084C801007806004081B2000062CA00A6FD
829:1033C00084C00100D6C1004284C8010078060040D4
830:1033D00081B2000000000078F3B201000000007725
831:1033E000F1B201001E00007689E4010002000076BF
832:1033F000EFF6010000000044EE96010000000075A9
833:10340000EDB2010000000042EAB2010000000041FC
834:1034100083C001004F00004180CE010037062A40E2
835:103420008132000000000075E1C20100000000765A
836:10343000E3C2010000000077E5C20100000000784F
837:10344000E7C2010000000079E9C201002B068141BA
838:103450008D4000000000804081B201000400004067
839:1034600081B200000400004081B20000040000406E
840:1034700081B200000400004081B20000040000405E
841:1034800081B200000400004081B20000040000404E
842:1034900081B2000000000050FD9301004016004082
843:1034A00045990100DB9F00404931010008000048B8
844:1034B000B2CB01001504004081320100B906224060
845:1034C0008F6C0000DA9F004081320100B906A240F3
846:1034D000976C00005E160040439901007C1620F6B0
847:1034E000E0B101000000004031B301009D06224F11
848:1034F0008F7C000000000051FD9301009F062240D8
849:103500008F7C0000A3060054FD930000A106224218
850:103510008F7C000000000052FD930100A3062241B1
851:103520008F7C000000000053FD930100B70622517C
852:10353000FD7F000038050040813201000C0000488A
853:10354000B2CB01001004004081320100B206A2405B
854:10355000B56F00001E000048B2CB01001004004807
855:1035600096300100000000DA97C001000400004B13
856:10357000B2CB010010040040813201000E0000486F
857:10358000B2CB010020040040813201000C00004851
858:10359000B2CB010000000030B5B3010020040040B0
859:1035A000813201000E000048B2CB0100100400403F
860:1035B00081320100B6062240B56F0000BA06005401
861:1035C000FD93000000000051FD8301001C0000FE7F
862:1035D0007FD90100BA06A6408132000000000055E4
863:1035E000FD9301000000804081B201000400004012
864:1035F00081B200000400004081B2000004000040DD
865:1036000081B200000400004081B2000004000040CC
866:1036100081B20000E79F004081320100C406225CB5
867:103620001F7C0000E39F00881CB00000E99F005C45
868:103630001F00010000002E0548B1010000000040FD
869:10364000E1B1010004002D0348B10100000000F0C9
870:103650003CB001002800001402C801000000000175
871:1036600034B0010000002D0532B001002200000539
872:103670000AC801001000000348C90100000000F85A
873:1036800018B00100000000F804B00100000000F8CC
874:103690000EB001000C0000A40CC80100EA9F00401D
875:1036A000813201000000004023B001000A0722011E
876:1036B0008032000000003C4423E0010000002EA402
877:1036C00080B001000000001048C10100D906A30726
878:1036D000026C0000DA0668011AB0000000006807FA
879:1036E0001AB001000000000D02D00100000000052A
880:1036F000F0B101000000000CF0B101000000000278
881:10370000E0B101000000000D0AC00100EC062240FB
882:10371000036C0000E6062242236C0000000000411A
883:1037200023C001000000004761B10100200000A497
884:1037300062DD01002307284081320000E3060040DB
885:1037400081B200000000001080C0010000000047AE
886:1037500061B101000000004062B10100E806A8402C
887:1037600023300000E39F00881CB0000023070040C6
888:1037700081B200000000001080C00100000000477E
889:1037800061B101000000004062B10100EE06A840F6
890:1037900023300000E39F00881CB0000022000019C5
891:1037A00048C9010000002D1448C101000F0000F2BB
892:1037B0003A880100000000423BE001000E000014C6
893:1037C00002C801000000001D02C00100FA06231A11
894:1037D000025000000000004603C001002307000162
895:1037E00034C000000C002D1D48C10100F00000F2A3
896:1037F000308801000000004231F001000000001498
897:1038000002B001000000001D02C00100000000180D
898:1038100002C001000207221A025000002307000123
899:1038200034C000002200001948C9010002002D1414
900:1038300048C10100000000F614B001000000001DA6
901:1038400014D001000000001814D001000000001E78
902:1038500024B001001200001710C801002307001A4D
903:1038600010C0000000003C4423E00100000000A460
904:1038700086B0010000002E1048C101000F07A312FE
905:103880000E6C0000100760071AB000000000601204
906:103890001AB001000000680D16940100FFFF000B34
907:1038A00016D8010000000008F0B101000000000C73
908:1038B000F0B1010000000002E0B1010000000010C2
909:1038C00086C001000000004661B1010020000043F5
910:1038D00062DD01001707A85C1F1000004007220DE1
911:1038E000145000004007220D245000000000000D7D
912:1038F00010C001001E072242236C00002307004174
913:1039000023C000000000004661B10100400000102B
914:1039100062DD01001F07A85C1F000000E39F008814
915:103920001CB000000000004023B001003F07A20DC2
916:103930000E5000002E0722461F7C000000000046AB
917:103940001F8001003080001042C901002C0722F2C4
918:10395000640600000000004761B101004000001053
919:1039600062DD01002907A84081320000E39F008842
920:103970001CB0000020800003469901000000005F99
921:10398000E191010000002D0648B10100000000F89F
922:1039900018B00100000000F804B0010033071FF068
923:1039A0000E300000D306004C0DC0000000002E5F5A
924:1039B0000F800100D3062307146C000030000010B4
925:1039C00048C9010024000040F199010000000003F3
926:1039D000F0B1010000000000F0B10100000000168D
927:1039E000F0B101002400000000C801000000004701
928:1039F00061B10100200000A462DD01003C07A8467F
929:103A00001F100000D30600030CB00000D306000D09
930:103A100018C000005F07A2441F7C000000000019CE
931:103A20000AB001002200000548C901000A002D1457
932:103A300048C1010002002040E5B10100040020401F
933:103A4000E5B101000D002D1D48C10100090000F382
934:103A5000388801000D002050E7B1010004002D401E
935:103A60003FB00100000000F432B00100040020402B
936:103A7000E1B101002200000548C9010000002D1439
937:103A800048C101000200001D94F401000000004044
938:103A900091B001005207A0FC9040000000000041DE
939:103AA00091C001005007A24195500000000000A401
940:103AB00096B0010004002E0548B101000000004846
941:103AC000F0B101000000004B48B1010000000018F7
942:103AD00048C101000200001894F4010000002D18F4
943:103AE00090B001005C07A0FC904000000000004185
944:103AF00091C001005A07A241955000000000004803
945:103B0000E0B1010010002040E5B1010004002D05E6
946:103B100048B10100000000F880B02D00000000F066
947:103B200016B02D002200000548C92D000000001429
948:103B300048C12D00640743303D072C000000009E63
949:103B400085B02D0000001B413DC32D000400204224
950:103B5000ECB12D000000001E82B0010002002E1DFD
951:103B600082C001000000661882C00100000000420F
952:103B700080C001006E07A0418044000000000041A9
953:103B800081C001001000004092F401000A002E30B4
954:103B900081840100720790409240000000000041C3
955:103BA00093C001000000662093A401000000001DE6
956:103BB00048C1010004002019E8B101000000001E06
957:103BC00016C001007807A01916440000000000414B
958:103BD00017C001000D002F1E32C001007D07A2405A
959:103BE000156C00007C07A01C16400000000000417E
960:103BF00017C00100000063F33894010010000005B5
961:103C000048C9010004002E1E98B001000000601A8F
962:103C100098C001000C002040E1B101008B07224652
963:103C20001F7C0000000000461F8001003080001053
964:103C300042C90100890722F2640600000000004723
965:103C400061B101004000001062DD01008607A8405C
966:103C500081320000E39F00881CB000002080000338
967:103C6000469901000000005FE191010030800010E2
968:103C700044C901001200001AF0C901000000001739
969:103C8000F0B1010010000005E0C901003000001093
970:103C900080C801000000004461B101002000004024
971:103CA00062DD01009107A840813200009B07225C81
972:103CB0001F7C000000003C4423E0010000002D10A8
973:103CC00048C101009B0722F2640600000000004684
974:103CD00061B101004000001062DD01009807A840BA
975:103CE00081320000E39F00881CB00000EB9F005C65
976:103CF0001F00010020002F0548B101000000000B4B
977:103D0000E4B101000000005017F00100A10790F29B
978:103D1000164000000000004117C0010000006620AE
979:103D200017A40100100000142AC801000000001DA3
980:103D30002AC00100000000502BE00100000000F24A
981:103D40002A9401003080001042C90100AC0722F221
982:103D5000640600000000004461B101004000001052
983:103D600062DD0100A907A84081320000E39F0088BE
984:103D70001CB000000080001710DC0100C9072240C1
985:103D8000156C0000B407A2441F7C00000000004432
986:103D90001F900100B307229F136C000002000088EF
987:103DA0001CCC0100E49F004081B2000000000041F3
988:103DB0003FC30100E69F004081320100B707A241E6
989:103DC000877C00000000001E3EC00100C9072240A1
990:103DD000156C0000BA07201E146C00000000000AD9
991:103DE0003CB00100E59F001E24300100BF072208FF
992:103DF0002E3000000000005211C001000000001A27
993:103E000010C001002307004017B00000E49F0088A5
994:103E10001CB00000E59F004081320100BC07A208F1
995:103E20002E300000808000A604B001000600004093
996:103E300087980100008000034499010004002204D7
997:103E4000E0310000E89F001F8C30010000000040BE
998:103E50000FB00100E29F005C1F9000000080000393
999:103E60004499010004002204E0310000E69F004074
1000:103E700081320100CE07A241877C0000CF07001EDF
1001:103E80003EC000000000001F8CB001000000004098
1002:103E900005B00100E89F00400F300100E29F005C88
1003:103EA0001F9000000400004081B2000004000040A8
1004:103EB00081B200000400004081B200000400004014
1005:103EC00081B200000400004081B200000400004004
1006:103ED00081B200000400004081B2000004000040F4
1007:103EE00081B200000400004081B2000004000040E4
1008:103EF00081B200000400004081B2000004000040D4
1009:103F000081B200000400004081B2000004000040C3
1010:103F100081B200000400004081B2000004000040B3
1011:103F200081B200000400004081B2000004000040A3
1012:103F300081B200000400004081B200000400004093
1013:103F400081B200000400004081B200000400004083
1014:103F500081B200000400004081B200000400004073
1015:103F600081B200000400004081B200000400004063
1016:103F700081B200000400004081B200000400004053
1017:103F800081B200000400004081B200000400004043
1018:103F900081B200000400004081B200000400004033
1019:103FA00081B200000400004081B200000400004023
1020:103FB00081B200000400004081B200000400004013
1021:103FC00081B200000400004081B20000F70700BC8D
1022:103FD00080B200000380004081B2000003800040F6
1023:103FE00081B200000380004081B2000003800040E5
1024:103FF00081B200000380004081B2000003800040D5
1025:1040000081B200000380004081B2000003800040C4
1026:1040100081B200003180004081B200003480004055
1027:1040200081B200003580004081B2000004000040F1
1028:1040300081B200001B80818080320000E787A240AF
1029:10404000916F00000000004C90B301005C952EA21F
1030:1040500080B00100FF000080F489010090952AC81B
1031:10406000E5B10100000000A1F0B101000000004036
1032:10407000F0B10100000000A4F0B10100000000D088
1033:10408000F0B10100000000D1F0B10100000000D249
1034:10409000F0B101000000004CF0B10100000000D4BC
1035:1040A000F0B10100000000D3F0B10100000000EE0B
1036:1040B000F0B101000000004EF0B10100000000402E
1037:1040C00044B1010018801181983000000000514077
1038:1040D00081B201001A801182983000000000524025
1039:1040E00081B20100E7870048FD930000B60300405D
1040:1040F000A19901002380A242FD7F00002080008062
1041:1041000080320000228011818230000022805140E4
1042:1041100081B2000022801182823000002280524051
1043:1041200081B200002C800048FD93000027800080B1
1044:10413000803200002680A253077C0000000051530B
1045:10414000079001002A800052079000002980A252A7
1046:10415000077C00000000525207900100000000534D
1047:104160000790010000000048FD9301000000004698
1048:10417000F39301005C952EA252B30100FF00008072
1049:10418000F48901000000004CE4B10100000000A926
1050:1041900045B101003080004C80B200000000454075
1051:1041A00081B201000000554081B20100C682054085
1052:1041B00049B10000C682054049B100000000054039
1053:1041C00049B101004C010040813201000000004B68
1054:1041D000DEB2010000000040FD9301000000004835
1055:1041E000FD830100020000409B9B0100000000A530
1056:1041F0009CB30100480300408132010058952044DF
1057:10420000E0B101000494004043990100000000F275
1058:1042100024B10100000C00EE968801000000004A65
1059:1042200097F001004480A243976C00000000004218
1060:10423000FD93010000C000A636B10100D01400407B
1061:104240004799010005000040F59901000038004041
1062:10425000F599010000060040F599010003000040B7
1063:10426000F599010005100040F59901000209004090
1064:10427000F599010004000040F59901006003004039
1065:10428000813201008803004081320100A003004018
1066:1042900081320100B982004081320100B1820040C8
1067:1042A0008132010060952040E1B10100709520400D
1068:1042B000E1B1010000000049DD9101000000004073
1069:1042C00091B30100000000407BB30100A0980040C2
1070:1042D000813201000000004085B301005C95204060
1071:1042E000E1B101003C8200408132010090060040B3
1072:1042F000813201000000005F2F810100A281004097
1073:1043000081320100A5980040813201000000454043
1074:1043100081B201000000554081B2010001830040DC
1075:1043200081B200000400004081B20000040000409F
1076:1043300081B200000400004081B20000040000408F
1077:1043400081B200000400004081B20000040000407F
1078:1043500081B200002800004047990100C682004158
1079:10436000E1C1000078180040499901001905225464
1080:10437000817C00006C80424081320000008200B4E9
1081:1043800069DF010000001A449393010028000040F7
1082:10439000479901001805004081B200000400004068
1083:1043A00081B200000400004081B20000040000401F
1084:1043B00081B200000400004081B20000040000400F
1085:1043C00081B200000400004081B2000004000040FF
1086:1043D00081B2000055820040813201007D80224080
1087:1043E000976C00007A804240813200000000004F4C
1088:1043F00069930100438100586993000054160040FE
1089:1044000047990100000000FEF4B101008005004062
1090:1044100081B2000080804240813200000000004EE6
1091:1044200069930100438100586993000040160040E1
1092:10443000459901004005004049310100F615004052
1093:10444000439901005C1600404599010000006EFA96
1094:104450008EB00100C105004081B2000004000040A0
1095:1044600081B200000400004081B20000040000405E
1096:1044700081B200000400004081B20000040000404E
1097:1044800081B200000400004081B20000040000403E
1098:1044900081B200009680004081B200005582004049
1099:1044A0008132010096802240976C00009380424048
1100:1044B000813200000000004F6993010043810058E1
1101:1044C0006993000038050040813201001E00004859
1102:1044D000B2CB0100D005004081B2000004000040D2
1103:1044E00081B200000400004081B2000004000040DE
1104:1044F00081B200000400004081B2000004000040CE
1105:1045000081B200000400004081B2000004000040BD
1106:1045100081B200008302004081B20000B802004076
1107:1045200081B20000D49F004081B20000D59F0040BE
1108:1045300081B20000D69F004081B20000D79F0040AA
1109:1045400081B200007201004181C000005501514953
1110:10455000FD9300005501524AFD9300005501554955
1111:10456000FD8300005501564AFD83000050019181F2
1112:10457000803000005501454081B200005001918219
1113:10458000803000005501464081B20000000000402C
1114:1045900089B00100000000F880B00100000000F0C8
1115:1045A00016B001002200000548C9010000000014F7
1116:1045B00048C10100B48043303D0700000000009E68
1117:1045C00085B0010000001B413DC3010004002042F2
1118:1045D000ECB101000000A240916F0100000000401A
1119:1045E00049B10100AE0300CBA3C9010000000020C7
1120:1045F00046B10100C480A240E16D0000000000D27D
1121:10460000F1B10100000000D3F1B10100000000424F
1122:10461000F0B101000000004561B101002000002060
1123:1046200062DD01000000A8D0E1B10000C1800040BF
1124:1046300081B20000000000A898B001000480004092
1125:104640008BB30000B1030040A1990100C980A242D0
1126:10465000976F000000000045A1C1010000000000AC
1127:1046600080B001000000A2048094000080153F4249
1128:1046700097E301000000004049B101000000600321
1129:10468000029401000000004007B00100040000CBCC
1130:1046900099CB0100000000CCF3830100D380A2423B
1131:1046A000976F0000000000CBF3930100AE0300CB36
1132:1046B000A3C901000000002044B101000000004433
1133:1046C000F1B1010000000000F0B1010000000004A1
1134:1046D000F0B10100000000A1E0B1010005000040C0
1135:1046E000619901002000002062DD0100DA80A8400D
1136:1046F00081320000F9020020423101000000A24195
1137:10470000056C0100000080CBDB9101000000194125
1138:104710008BB301006000004061990100E080A8B106
1139:104720008C3300006000004061990100E280A8B174
1140:1047300094330000E88014C681320000180000C6DF
1141:1047400083F401002283224F83040000C4800040D0
1142:1047500081B20000FF0100C681880100000000C690
1143:1047600097A30100C4801F5C975300006D821EC692
1144:1047700081320000F2802248FD7F0000F280225842
1145:10478000816C0000F2802248816C0000C000004073
1146:1047900084CC0100F2809F428032000022830040DE
1147:1047A00081B20000C480A2C68F060000C4801EC66D
1148:1047B0008132000000002F4381F00100F6800040AC
1149:1047C00010C900004481004081B200007E81004099
1150:1047D00081B20000398200CA63B3000075810040D5
1151:1047E00081B200005581004D83B000006081004E11
1152:1047F00061B100004C81004085B000005581004C43
1153:1048000083B000002E81004085B00000F881004098
1154:1048100049B1000086810040C1B10000F481004030
1155:1048200081B200004C81004085B00000F0030040E0
1156:1048300049B10000228300CA9BB300009081004070
1157:10484000C1B1000094810040C1B100009B810040D3
1158:10485000C1B100009C810040C1B100009D810040B9
1159:10486000C1B100009E810040C1B100009F810040A5
1160:1048700081B000009F81004181B000002D82004086
1161:1048800081B20000AE8200BBABB300003A8200CA26
1162:10489000CFB30000C803004049B10000E803004066
1163:1048A00081B20000C480004081B200002283004039
1164:1048B00081B20000E003004081B20000228300CA00
1165:1048C00077B300005681004D83B000005E81004E3A
1166:1048D00061B100004C8100BB85B000005681004CE6
1167:1048E00083B000004C8100BB85B000002E8100BB6E
1168:1048F00085B000002081004081B20000228300CA00
1169:104900004DB300007005004049B10000A005004013
1170:1049100049B10000268122428F6F00002881224188
1171:104920008F6F00002A811ECA813200002C811FCAAD
1172:1049300081320000000000CAC9B101002283004298
1173:104940008FB30000000000CACDB1010022830041F6
1174:104950008FB30000000000CACFB1010022830040E5
1175:104960008FB30000008100A6C6B101002283004081
1176:1049700081B20000008000A6C6B101002283004081
1177:104980008FB30000781800404999010010002F9C57
1178:1049900089B00100468100403933010018002F9B87
1179:1049A00089B00100468100403733010000002F9A92
1180:1049B00089B00100468100403533010008002F997D
1181:1049C00089B001004681004033330100008000AE11
1182:1049D00047C90100C480A240E16D00008000004092
1183:1049E000F1990100000000CAF1B10100000000428D
1184:1049F000F0B1010040180040E199010000000045BD
1185:104A000061B10100200000AE63DD0100418128405A
1186:104A1000813200003E81004081B20000418142406D
1187:104A2000813200000000005C6993010022831A4477
1188:104A3000939300004481424081320000438100583A
1189:104A40006993000000000044F0D101000000A44080
1190:104A500081B200004B81A240E16D000000000044E3
1191:104A600045D1010000008040E1B10100000080411B
1192:104A7000E1D101004C81375C61310000000000424F
1193:104A800062B1010052812840813200004D81225CD8
1194:104A9000777D0000C480174081B200004D81004046
1195:104AA00081B20000000000CA63B101005281A84039
1196:104AB000813200002283174081B2000057810040FC
1197:104AC00081B00000578100BB81B0000000000041B0
1198:104AD00060B10100C480A241767D0000000000406A
1199:104AE00062B101005981A84081320000000000CA73
1200:104AF00063B1010022832840813200005B810040C5
1201:104B000081B200005095004047990100618100BBCF
1202:104B100087B0000050952F4087B00100658122408A
1203:104B2000957F0000C480A240E16D0000C480224057
1204:104B3000956F0000228360409583000002002DF0F5
1205:104B400084B00100C4802240856C0000C480A24073
1206:104B5000857C0000C480A24E777D000069813640CC
1207:104B6000813200000000004262B101006A81A84069
1208:104B7000813200000000004362B101006C81A84056
1209:104B800081320000000000CA63B101006E81A840BC
1210:104B9000813200000000164081B201007481224180
1211:104BA00043510000000800CA95CB01006881004114
1212:104BB00085C0000022830040E1B100007781A2425D
1213:104BC000676F00000000004167B301007781424039
1214:104BD000813200000000004065B301000000004089
1215:104BE0009383010000001ACA6997010022832640BE
1216:104BF000813200007C8142408132000022831A44CD
1217:104C000093930000C4802043956F0000228380CAE4
1218:104C10006733000022832240656F0000C480A248F1
1219:104C2000DB7D00002283006FDB91000085000040E7
1220:104C30008132010035802240803200002283004012
1221:104C400081B2000000000058959301000000005F51
1222:104C5000959301008C81A244216F00000000005F49
1223:104C6000958301000000005E95930100000000574D
1224:104C700095930100000000CAC3B101008F81225B3F
1225:104C8000957F00000000004BFD930100228300404F
1226:104C900081B200001BFD00CA959B01000D0100CAF6
1227:104CA000C53101000000005F95830100228300CA26
1228:104CB000C5B10000DF6F00CA959B010000000055E0
1229:104CC00095930100000000CAC7B101002283225F52
1230:104CD000957F00000D010040813201000000005F5F
1231:104CE00095830100228300CAC7B10000228300CA55
1232:104CF000C9B10000228300CACBB10000228300CAE0
1233:104D0000CDB10000228300CACFB1000000002E42C6
1234:104D100081E001009814004048C90100228300CAC4
1235:104D2000E1B100000000004009B10100200000A630
1236:104D300082B00100A481A25E0B7D000000800041D2
1237:104D400008990100A681A25E0B7D0000208000A6CC
1238:104D500008B10100A8819F8582300000000000306A
1239:104D600083840100DD812230836C0000A781A24F83
1240:104D70000B7D00000000004121B30100028000A66D
1241:104D800082B0010028820040813201001000004101
1242:104D900084E40100038000A682B001002882004064
1243:104DA00081320100F0FF00418688010000000043CD
1244:104DB000849401000F0000A686B0010010C40043D7
1245:104DC00086980100BD81A243846C0000000000436E
1246:104DD00021B30100200000A682B001001C000041A8
1247:104DE00082DC0100BA81A25E0B7D0000040000415C
1248:104DF00008990100CF81004081B20000410100A666
1249:104E000086B00100500C004386980100C281A24385
1250:104E1000846C00000000004121B30100CF810040FC
1251:104E200081B20000410100A686B00100600C004381
1252:104E300086980100CF81A243846C000000000042EC
1253:104E400021B30100188000A682B001002882004032
1254:104E500081320100FFFF004182880100007700419C
1255:104E6000828C010001020041829801002000004173
1256:104E700082DC01001800004182DC0100CD81A25ECD
1257:104E80000B7D00000000004108B10100200000A6D9
1258:104E900082B00100D081A25E0B7D00004013004172
1259:104EA00008990100D8812243216F0000200000A64C
1260:104EB00082B001001200004182DC0100D581A25EB7
1261:104EC0000B7D00000004004108990100F3810040BF
1262:104ED00081B20000200000A682B00100190000414C
1263:104EE00082DC0100DA81A25E0B7D000000A000419F
1264:104EF00008990100F381004081B2000000000044E5
1265:104F000021B301000000004083B001000000005FF9
1266:104F1000839001000000005E8390010000000057B4
1267:104F20008390010000000041C2B101000C0100406B
1268:104F3000813201000000005F838001000000004119
1269:104F4000C2B101000C01004081320100200000A626
1270:104F500082B001000400004182DC01002000004119
1271:104F600008990100200000A682B001001100004154
1272:104F700082DC0100EC81A25E0B7D0000010000419B
1273:104F800008990100200000A682B00100EF81A25E16
1274:104F90000B7D00004013004108990100010000A6AC
1275:104FA00082B00100400000412E99010000008040C5
1276:104FB00081B20100200000A680B00100000000CAFC
1277:104FC00081940100F681A25E0B7D000022830040E7
1278:104FD00008B10000C8142EBB85B00100F981A25EA3
1279:104FE0000B7D00000000004087B0010008822243D2
1280:104FF000216F000017822244216F0000118000A65B
1281:1050000082B0010028820040813201001F82224AC2
1282:10501000837C000000000040879001000382224D45
1283:10502000837C000000000041879001000582224F30
1284:10503000837C000000000043879001000782224E1D
1285:10504000837C000000000042879001001F82004026
1286:1050500081B20000018000A682B0010028820040D9
1287:1050600081320100018000A682B001002882004048
1288:10507000813201001F822242837C00000000004038
1289:10508000879001001C8000A682B0010028820040A9
1290:105090008132010012822245837C00000000004121
1291:1050A0008790010014822244837C000000000043AA
1292:1050B0008790010016822243837C0000000000429A
1293:1050C000879001001F82004081B20000018000A68D
1294:1050D00082B001002882004081320100018000A6D8
1295:1050E00082B0010028820040813201001F822242EA
1296:1050F000837C000000000040879001000000004316
1297:10510000879001000000004187900100008000A608
1298:1051100082B0010028820040813201002382224BAC
1299:10512000837C0000000000408780010000000043F5
1300:10513000E0B10100FF7F00A2A08B0100000000444D
1301:10514000A5B30100B88000CAA73301004181004027
1302:1051500081B200002000004182DC01002982A25EB1
1303:105160000B7D00000000004108B101002B829F85EB
1304:10517000823000000000804081B20100308214F7CC
1305:10518000813000003082A249FD7F0000000000480D
1306:10519000FD930100338215F8811400003382A24A86
1307:1051A000FD7F000000000048FD9301003582A2C889
1308:1051B000813200004000004080DC0100001000400F
1309:1051C00080DC010000000040EFB301003782424064
1310:1051D000F13300004381004068970000228300BB48
1311:1051E0006BB30000228300BBB1B3000022830040F8
1312:1051F00081B20000000300408198010000000040DF
1313:1052000018B101008000004083980100001900409F
1314:10521000459901000000424081B20100000043FFB7
1315:10522000F1B10100000000FFF1B1010000000041F8
1316:1052300081C001000000004018B101004082A2417D
1317:1052400083500000001600404599010000190040FD
1318:10525000439901000000004743C1010000000040E5
1319:1052600083B00100000000F380B001000000005B8B
1320:1052700081D001000000004180D00100000000400A
1321:10528000F6B101000000005B43C1010000000041D5
1322:1052900083C001004A82A254836C000000000040D9
1323:1052A000F7B101000000004183C001005182A20655
1324:1052B000836C00000000804081B2010000160040B5
1325:1052C0004399010080162E0683B00100360000FBD2
1326:1052D000F6A901005782A24183500000220000403D
1327:1052E00083980100000000FBF6B101005A82A24140
1328:1052F000835000006200004095980100DC9F004050
1329:105300008132010000162D0683B001008016004096
1330:10531000459901005C0000FBF6A901006082A241F2
1331:105320008350000000000070F9B10100000000711E
1332:10533000F9B1010000000072F9B101000000007332
1333:10534000F9B1010000000074F9B1010054000040FF
1334:1053500095980100DC9F0040813201000000007040
1335:1053600095B001006C822270B56F00000000804192
1336:1053700097B001000000804097B00100C480A242B5
1337:10538000976F0000B6030040A199010000002F4272
1338:1053900099B3010078822244816C00008082224807
1339:1053A000816C00007A82224C816C00008582225040
1340:1053B000816C000086822254816C00008882225811
1341:1053C000816C00008D82225C816C000050010040E5
1342:1053D00081B20000000000BC09B00100228300CAB5
1343:1053E00001B000000000004003B0010000000041D7
1344:1053F000F38301007E82A242056C000000000041A0
1345:1054000005B00100228322CA07140000228300464F
1346:10541000F393000022832043956F0000228380CA0B
1347:10542000053000002283220180300000C480A248A1
1348:10543000DB7D0000228300CBDB910000570100BC24
1349:10544000ABB30000000000BCB1B30100228300CA6E
1350:10545000CFB30000FF0000CA818801002283A24070
1351:10546000747D000060002040609901008A82A8B12C
1352:10547000823000008982004081B20000228300CA8D
1353:1054800079B300000000004E81B00100000000432D
1354:10549000CB8301000000454081B201009082A2410F
1355:1054A000815000000000454081B2010000004540ED
1356:1054B00081B201009B829182823000000000008A4C
1357:1054C00080B00100AE9F004080CE01009982A640CE
1358:1054D000813200009B82564081B20000B60300403A
1359:1054E000A19901000000005307900100B60300409D
1360:1054F000A19901000000005207900100D89F0041CF
1361:105500008BB300000000004E81B00100000000429B
1362:10551000CD8301000000464081B20100A082A2417B
1363:10552000815000000000464081B20100000046406A
1364:1055300081B20100AB8291818230000000000089BD
1365:1055400080B00100AE9F004080CE0100A982A6403D
1366:1055500081320000AB82554081B20000B6030040AA
1367:10556000A19901000000005207900100B60300401D
1368:10557000A19901000000005307900100D89F00414D
1369:105580008BB30000B1030040A1990100C4142F4067
1370:1055900099B301005701004049B10000A0942E4387
1371:1055A00097B0010000000040F1B10100B282A241B9
1372:1055B0009750000050952040E1B10100AC942E437B
1373:1055C00097B0010000000040F1B10100B682A24195
1374:1055D000975000000000804081B20100AE030040FF
1375:1055E000A39901000000004081B001006015004057
1376:1055F000859801000800004040E4010000000059C7
1377:10560000419401000000005041E001000000004210
1378:10561000409401000000005741900100000000414B
1379:1056200081C001000000A342816C01000000004124
1380:10563000A3C10100BC82A042816C0000BC8200506A
1381:1056400085C000000183A241017D0000CF82225865
1382:10565000737D00007800004061990100C782A8B105
1383:105660009C300000300038459DE001000400A25F3E
1384:105670001F7C00000400225E1F7C000000C000A60A
1385:105680001EA401000100000E10C90000CF8233C427
1386:1056900081300000D282A1AD9D200000C68213405F
1387:1056A00081B200000000134E5A83010030003845DB
1388:1056B0009DE001000400A25F1F7C00000400A25EC8
1389:1056C0001F7C00000400A240056C0000DD8222ABBC
1390:1056D00080040000DB82A240017D0000DD82225FA9
1391:1056E000577D00001288005F1FB40000DD82225E3B
1392:1056F000577D00008088005F1FB40000E3822254C1
1393:10570000737D00007400004061990100DD82A8B142
1394:10571000003000000000005F1FB40100F784A25FAA
1395:10572000017C00009587004081B20000E582A25F05
1396:1057300059270000E782A25C737D0000EE82A25E22
1397:10574000737D0000FA82225C737D0000FB8237408B
1398:10575000813200007C00004061990100E882A8B11C
1399:10576000363000007C00004061990100EA82A8B157
1400:10577000003000001F000000028801003785175F1D
1401:105780001FB40000FB823440813200007E000040E4
1402:1057900061990100EF82A8B112300000F782522116
1403:1057A00013040000000014412FC301000000005F3B
1404:1057B0001FB40100FF3F0009008C010000000043FE
1405:1057C00001F001004F83003413840000FF3F1409EF
1406:1057D000008C01000000005F1FB40100C48300437F
1407:1057E00001F000000000004081B20100FB82334064
1408:1057F000813200000400A24E5A7F00000700004ED4
1409:1058000080E401000039004080C801000400A2408B
1410:10581000066C0000C682134E5A930000E787A24828
1411:10582000FD7F0000058302E681320000068383E5E8
1412:10583000813200008E82004297B300009E820042B7
1413:1058400097B3000009832246F37F00000C83A24136
1414:10585000F37F0000C6800042973301000C8322448E
1415:10586000F37F00000C83A241F37F0000C680006F2D
1416:10587000973301000400A2AC803200001183225A49
1417:10588000737D00007A000040619901000E83A8B189
1418:105890007E310000010000CF11C900001783A24033
1419:1058A000937F000017832244937F0000138342A557
1420:1058B000803000001683A240937F000038831A4096
1421:1058C0009393000000001A4081B20100DF80A240E3
1422:1058D000737D0000E2872244216F0000D9872240B7
1423:1058E000657D00000005A25B737D00000400A249F5
1424:1058F000337D000021832248337D0000FF010099A1
1425:1059000080D801000000005081E00100A8982F40DD
1426:1059100033B1010000000040E0C1010001830040FC
1427:1059200081B20000C68200408BB300000400A25E7A
1428:105930001F7C00000400225F1F7C00000000005E4E
1429:105940001F900100C682005F1F8000000400A25E5D
1430:105950001F7C00000400225F1F7C00000000005E2E
1431:105960001F9001000000005F1F8001000000005830
1432:1059700061B101000000004E62B10100C682284002
1433:10598000813200002C83004081B200000000004002
1434:105990000FB001000400A25E1F7C00000400225F23
1435:1059A0001F7C0000328333401F3000000400A24EF1
1436:1059B0005A7F00000700004E80E4010000390040DB
1437:1059C00080C801000400A240066C0000C682134E8D
1438:1059D0005A9300003A83A0CE815000004D83A0CDA1
1439:1059E000816C0000000000A59CB30100000000B124
1440:1059F00081B001004D8322B58114000080152F4035
1441:105A000049B101003E83424081320000000060B491
1442:105A100065970100D0152E4069B3010000001A44BB
1443:105A20009383010004002240E16D00001A0000A2EF
1444:105A300080DC010000000044F1B10100000000B171
1445:105A4000F1B10100000000B5F1B101000500004016
1446:105A5000619901008000004062DD01004883A8A137
1447:105A6000E0310000178300889EB300001783A24135
1448:105A7000676F00001783006FDB9100004D83424089
1449:105A80008132000017831A40938300000004004015
1450:105A900089980100099900008A3001000400A25A87
1451:105AA000017C000004002240016C00000099000904
1452:105AB00046C901003F0000F30C8801005C83A64248
1453:105AC000136000009B9600950330010057836140EE
1454:105AD0008132000075000040619901005883A8B12F
1455:105AE0000C300000A9967110943001005D830058BD
1456:105AF0001F9000008D9600950330010023830088DD
1457:105B00001CB0000000002D0348B1010004002DF07E
1458:105B10002EB0010080040017968801000400A64002
1459:105B2000813200004AC1001796D801000400A64047
1460:105B300081320000EE070040979801006883234BF4
1461:105B4000E46D00006883224BFD7F000000000040F0
1462:105B50001F90010022002F4081B201006B83831748
1463:105B60008032000026000040479901006D838517B0
1464:105B7000803200000000004847C1010073832255B5
1465:105B80002F7C00000000004243D101000F0000FA0A
1466:105B9000968801000000004297E0010000000042EA
1467:105BA00097D001007483004B44C10000120000A292
1468:105BB00044C90100280000F602CC01000A0000A13F
1469:105BC00042C90100000000F816B00100000028F0F2
1470:105BD00010B00100000000F01AB00100000000A2A7
1471:105BE0002AB00100C0283C460DE0010000002D4411
1472:105BF00095B001008083A2F80E300000908322410E
1473:105C00009550000000002D5049C101007C830040E8
1474:105C100081B200007D83A2F8166C00007D83A2F89B
1475:105C2000106C00007D83A2F01A6C00008E83225855
1476:105C30001F7C000000993F4213F0010085836540FE
1477:105C4000813200008983A2F3740600000000000680
1478:105C5000E69501008E83754081B2000000000006C9
1479:105C600096B001003F0075F30C880100000000555C
1480:105C700061B101000000004B62B101008C83A840BB
1481:105C8000813200008E836740813200009683774125
1482:105C90002DC30000948322581F7C00000000005593
1483:105CA00061B101000000000662B101009283A840CA
1484:105CB000813200009483674081320000D5837741B0
1485:105CC0002DC30000030000071AF401001895000717
1486:105CD00016300100A8832241816C00009C8322427F
1487:105CE000816C0000238300881CB00000A783225F22
1488:105CF0000F7C00004E96005F01100100A28322403D
1489:105D0000956C00000480000342C90100000000F20D
1490:105D100002B00100A595005295300100AC95004BF2
1491:105D200002B000000000005F0F800100010400408D
1492:105D300089980100099900008A300100B496000991
1493:105D400096300100F08700400FB00000B783A25AE0
1494:105D50001F7C00000400A25A1F7C000000B5000D4B
1495:105D600042C901000400220BE67D000000B7000DCF
1496:105D700042C901000400220BE67D0000709400403F
1497:105D800081320100B7832220856C0000B2839C0F12
1498:105D900080320000238300881CB000008D95005CD9
1499:105DA0001F000100C8970042613101002383008871
1500:105DB0001CB00000900400079630010000002D0583
1501:105DC00048B101000400A24BE17D00000400A25C88
1502:105DD0001F7C000000002D0548B10100BB8382F04C
1503:105DE000183000006C8900458FB00000282000A604
1504:105DF00096B00100C18322179604000034040040CD
1505:105E000089980100099900008A3001005B97004BD6
1506:105E1000953001006C89004B8FB000005D96000347
1507:105E200048310100AF930040813001006C8900408F
1508:105E300081B20000000000400FB0010000040040EB
1509:105E400089980100099900008A300100040022406D
1510:105E5000016C000000002E1048B1010000006850E5
1511:105E600003B0010000000003F0B101004000000099
1512:105E7000E0C9010000002E5049C10100000000509F
1513:105E8000F1B1010000000003F0B101000000004288
1514:105E900061B101002000001062DD0100D083A84044
1515:105EA000813200001000001062C90100D283A800F6
1516:105EB000E0310000238300881CB0000000002D03A7
1517:105EC00048B10100000000400FB00100000000F8E0
1518:105ED0002EB00100000000F202B0010000000040FE
1519:105EE00017B00100004100A696B00100EE072E4752
1520:105EF00097900100E883221796040000E683224B66
1521:105F0000FD7F0000E68323A2026C0000A5950052ED
1522:105F10009530010004002241975000000C002D0034
1523:105F200012B00100000000F000B001000000005CB1
1524:105F300001800100AC95004B02B000000000000998
1525:105F400000B001000000005003B001000584005CB7
1526:105F500017900000FA8322432F7C000000000045C8
1527:105F60001F900100F383225F2F7C000000002E10A1
1528:105F700048B1010000000058F1B101001000000319
1529:105F8000F0C9010010000000E0C90100EF83624287
1530:105F9000613100000000001062B10100F083A840F0
1531:105FA00081320000238372881CB0000020002D0382
1532:105FB00048B10100FF0F00F680880100F783A2A618
1533:105FC000816C0000FA8300F23AB00000F484A24B26
1534:105FD000FD7F0000C9940040813201000688004026
1535:105FE00081B200000584224A2F7C000005842248EB
1536:105FF0002F7C00000A002D0348B101003F0000F291
1537:10600000868801001F0000438488010005000043CA
1538:1060100080F4010098943D4281E001000584A24291
1539:10602000E07D0000F484A24BFD7F0000C994004095
1540:10603000813201000688004081B200000204004065
1541:1060400089980100099900008A300100078469409D
1542:1060500081320000000000A309B001000000794176
1543:1060600047C301000400A0A1096C00000E8422A116
1544:10607000096C0000278300881CB000000A8400031C
1545:1060800048B100004884A392036C00002B980040A4
1546:10609000953001000000004143C3010000000016DC
1547:1060A00080B2010006882708803200001584225C37
1548:1060B000177C0000168400002AB0000012000000C7
1549:1060C0002AC801000200000880C801001A84A24307
1550:1060D0002F7C00005E970040813201003684005E14
1551:1060E00017900000040000018CCC01005E97004C6A
1552:1060F0000330010000002E4602B001001000001025
1553:1061000048C901000C000001F0CD01002C00004046
1554:10611000F0C9010000000016F0B1010010000015E8
1555:10612000E0C901000000004361B10100A00000A42B
1556:1061300062DD01002384A854171000003684005E3D
1557:1061400017900000120000002AC801003584224385
1558:106150002F7C0000040000018CCC01000000004CEA
1559:1061600003B001007F9700436131010000002E461B
1560:1061700002B001001000001048C901000C0000012D
1561:10618000F0CD01000C000009F0C90100000000186A
1562:10619000F0B1010010000015E0C90100000000434B
1563:1061A00061B10100A00000A462DD01003684285422
1564:1061B000171000003284004081B200007F97004336
1565:1061C00061310100388422502F7C0000000000560D
1566:1061D0001790010007000017988801003B84A24136
1567:1061E000996C00000000005517900100000000436A
1568:1061F00061B101004000001062DD01003C84A84054
1569:1062000081320000238300881CB0000066970040A4
1570:1062100081320100438422432F7C0000168000035A
1571:1062200044C901000000001DE4B101000097005EB8
1572:10623000051001004684A25F2F7C000086930001B8
1573:1062400038430100C99400408132010006880040B3
1574:1062500081B200004A84A24BFD7F0000F18400411E
1575:1062600043C300000000004027B0010000000040D0
1576:106270002DB001000000004011B001004D84350137
1577:10628000863000006D00004061990100568428B1FD
1578:10629000303000004E84224D757D00000000001655
1579:1062A00080B20100DD84A740116C000000000041B5
1580:1062B00043C301000400A240276C0000F0840040AA
1581:1062C00081B200006D000040619901005684A8B1C0
1582:1062D000123000000000001680B201006084A74068
1583:1062E000116C00000000004143C3010000000009E0
1584:1062F00010B00100000000182CB00100DE070043C0
1585:1063000080CE01004E84AA408132000065840040A6
1586:1063100081B2000040003E4327E001000000000978
1587:10632000F0B1010000000018E0B1010000000041E0
1588:1063300027C001004E84A30B8750000000001540C9
1589:106340001BB001000000004023B001000400A203C4
1590:10635000486D0000120000002AC8010040002D40D6
1591:1063600039B001006F84A240276C000022000008B1
1592:1063700012C801000400A216306C0000DE070040C5
1593:10638000259801007284004081B20000000000F8EE
1594:1063900012B00100000000F030B001000000000B5E
1595:1063A00025B001000000001032B0010014002001EF
1596:1063B000E0B10100EE070040379801007784230127
1597:1063C000366C00000000000136B00100828482417A
1598:1063D000234000002080001042C901007E8422403A
1599:1063E000E36D00000000004361B1010040000010B7
1600:1063F00062DD01007B84A840813200002383008895
1601:106400001CB00000F3940043233001000000001092
1602:1064100032B001000000004123B001000000000381
1603:1064200048B101000080001944C90100938422454D
1604:106430001F7C00000400A241236C00000400A20B9A
1605:10644000256C00000000004CF1B1010000000009C3
1606:10645000F0B1010000000018F0B10100000000439D
1607:1064600061B101002000001962DD01008A84A815D5
1608:10647000E03100000000005003D001000000005097
1609:1064800033C001000000004C25D001000C002D4C51
1610:1064900013C001000000005037D001000000005080
1611:1064A0002BC00100778400451F8000009584A31253
1612:1064B000366C00009684681B28B00000000068124B
1613:1064C00028B0010000000009F0B101000000001830
1614:1064D000F0B101000000004361B10100200000198B
1615:1064E00062DD01009984A815E0310000C184221406
1616:1064F000025000000000005033C0010000000014F2
1617:1065000024D001000C002D1412C00100B984A21483
1618:1065100036500000A984225C1F7C000030800010EF
1619:1065200042C90100A7842240E36D00000000004240
1620:1065300061B101004000001062DD0100A484A840A8
1621:1065400081320000238300881CB00000000000039B
1622:1065500048B101000C002D5C1F800100100000F00C
1623:106560002AC801000000005C2B80010004002250BA
1624:106570002B6C0000F007004037980100AF84230126
1625:10658000366C00000000000136B00100BA84221B06
1626:10659000026C00003000001048C9010000002E5CB1
1627:1065A0001F90010000000050F1B101000000000345
1628:1065B000F0B10100FF070015E08D0100000000426E
1629:1065C00061B10100A00000A462DD0100B684A84012
1630:1065D00081320000BA84000348B1000000000014BA
1631:1065E0002AC001007784A240256C00000000004111
1632:1065F00039C0010004002013386C000040003D4306
1633:1066000039E001000000000B25B00100000000F897
1634:1066100012B00100778400F030B000000400A25CEA
1635:106620001F7C00000080001942C90100C88422407C
1636:10663000E36D00000000004361B10100400000195B
1637:1066400062DD0100C584A8408132000023830088F8
1638:106650001CB00000F39400402B30010018002E0302
1639:1066600048B10100CC8422502F7C0000000000566D
1640:10667000179001000700001798880100CF84A241FD
1641:10668000996C00000000005517900100D28422434D
1642:106690002F7C000000000054179001001600201D00
1643:1066A000E4B10100D484A340276C0000D684605F6D
1644:1066B000179000000084000B16DC0100000060133E
1645:1066C000169401000097005E051001000400A2402E
1646:1066D0000F6C00000688A25F2F7C0000148000036E
1647:1066E00042C90100000000F202B0010086930001DF
1648:1066F000384301000688004081B200000400A20374
1649:10670000486D00000400224D757D0000000000402F
1650:1067100083B001000000004D61B1010000000016CF
1651:1067200080B2010004002740116C00000000001638
1652:1067300062B10100E384A84081320000000000083B
1653:1067400062B10100E584A84081320000F084221388
1654:10675000826C000040003D4383E00100000000F82F
1655:1067600010B00100000000F02CB001000000001685
1656:1067700062B10100EB84A8408132000000000008F3
1657:1067800062B10100ED84A84081320000E78400413D
1658:1067900083C000000000154081B20100008200A605
1659:1067A00004B00100A0980040479901003005004165
1660:1067B00089300100A595005295300100AC95004B41
1661:1067C00002B00000068800400FB000000000005F2B
1662:1067D00001800100100000000EF4010004002640BA
1663:1067E000813200003F0000000088010005040040E5
1664:1067F00089980100099900008A3001000300000710
1665:106800001AF401001895000716300100088522418E
1666:10681000816C000003852242816C00002383008884
1667:106820001CB000000785225F0F7C00000000005FA5
1668:106830000F800100060400408998010009990000BA
1669:106840008A300100F08700400FB000001785A25A7F
1670:106850001F7C00000400A25A1F7C000000B5000D40
1671:1068600042C901000400220BE67D000000B7000DC4
1672:1068700042C901000400220BE67D00007094004034
1673:106880008132010017852220856C000012859C0F43
1674:1068900080320000238300881CB000008D95005CCE
1675:1068A0001F000100C8970042613101002383008866
1676:1068B0001CB00000900400079630010000002D0578
1677:1068C00048B101000400A24BE17D000000002D054D
1678:1068D00048B10100000000F018B001001C85223A08
1679:1068E000016C0000000000008EB001006C890040C7
1680:1068F00001B000000000004081B201002E002D0513
1681:1069000048B101002185A240E76D00000A00004067
1682:106910008F9801006C89004001B000001D94004078
1683:106920008132010004002200803200003504004062
1684:1069300089980100099900008A3001008D96009520
1685:1069400003300100238300881CB0000000002D03E9
1686:1069500048B1010022002DF02EB0010004001F17E5
1687:1069600080320000282000A696B001002E85221754
1688:10697000960400005B97004B953001006C89004C39
1689:106980008FB0000030858317803200000000004483
1690:1069900043C10100328585178032000000000048A5
1691:1069A00043C10100280000F602CC0100120000A142
1692:1069B0002AC801005D96004081320100AF9300417A
1693:1069C000813001006C89004081B2000000000001AC
1694:1069D00000D0010000002E1048B101002800004046
1695:1069E000F199010000000003F0B101000000000077
1696:1069F000F0B101003C8564476131000000000010E7
1697:106A000062B101003D85A81BE0310000238374883A
1698:106A10001CB000000000004503E001000400A005D8
1699:106A2000036C00000400A309036C000008002D03A0
1700:106A300048B101006E8501FB08300000D88587FB56
1701:106A400022300000000000FA0EB00100000000F843
1702:106A500014B00100030000071AF4010018950007A4
1703:106A6000163001005F852241816C00004E85224274
1704:106A7000816C0000238300881CB000005E85225FCB
1705:106A80000F7C0000380000047E8901005485A65F59
1706:106A90000F00000031940040053001000A0400405E
1707:106AA00089980100099900008A3001005B85004047
1708:106AB00081B20000130000408798010000002D0300
1709:106AC00048B101000C002DF082B00100000000F080
1710:106AD00084B001002C9600400530010008040040FD
1711:106AE00089980100099900008A3001000400A25C25
1712:106AF0001F7C00000000005C1F900100F087004038
1713:106B00000FB000006C85A25A1F7C00000400A25A3E
1714:106B10001F7C000000B5000D42C901000400220BDB
1715:106B2000E67D000000B7000D42C901000400220B01
1716:106B3000E67D000070940040813201006C852220C7
1717:106B4000856C000069859C0F8032000023830088DB
1718:106B50001CB000008D95005C1F000100C89700422A
1719:106B600061310100238300881CB0000090040007FD
1720:106B70009630010000002D0548B10100000000F032
1721:106B800018B001007085210480200000718500404C
1722:106B900010C90000A488004B81B000009F8500430D
1723:106BA00081B00000A38500FB22B00000A488004152
1724:106BB00081B000006C89004E8FB000009485005AAF
1725:106BC0008FB00000798500478FB00000A488005383
1726:106BD00081B00000A488005681B0000032002D056D
1727:106BE00048B101000704004089980100099900009C
1728:106BF0008A3001003C040040899801000999000A8C
1729:106C00008A3001003D0400408998010018000011FD
1730:106C10008AE40100099900F28A1401000000004092
1731:106C200081B201006C89A00AE46D00008785A24151
1732:106C3000197C00008685220A803200006C8900538E
1733:106C40008FB000006C8900548FB000009085220A3C
1734:106C5000803200008A85A20AE46D00006C89005D24
1735:106C60008FB00000000000F280B001000000000AB8
1736:106C700080D001008E85A091816C00006C89005E3F
1737:106C80008FB00000250000408F9801006C89004003
1738:106C900081B2000092852091E56D00006C8900545E
1739:106CA0008FB00000210000408F9801006C890040E7
1740:106CB00081B2000032002D0548B1010007040040F8
1741:106CC00089980100099900008A3001003C040040C5
1742:106CD000899801000999000A8A3001003D040040AA
1743:106CE00089980100099900F28A30010000000040F3
1744:106CF00081B201006C89A00AE46D0000240000400C
1745:106D00008F9801006C89004081B2000037002D058A
1746:106D100048B10100040000F382F40100A488A042FD
1747:106D2000836C0000A488005481B00000000000F2D1
1748:106D30000EB00100040023400F6C0000040020AAE4
1749:106D40000F6C0000090400408998010009990000B7
1750:106D50008A300100030000071AF4010000B5000D9D
1751:106D600042C901000700000716880100B185220B07
1752:106D7000E67D00000A000040879801007F980040EF
1753:106D80008132010004001C0F80320000000000402E
1754:106D90000FB00100F087005C1F900000C3852250F7
1755:106DA000FD7F0000BE85A254FD7F0000B685225500
1756:106DB000FD7F00008200004087980100AD85004003
1757:106DC00081B2000004002253FD7F00001480000304
1758:106DD00042C90100000000F096B001001000004B15
1759:106DE00080F401000CBC004087980100BE8522435E
1760:106DF000806C0000FFFF004B80880100AD85A2433E
1761:106E0000806C00007C96004047990100BF85464099
1762:106E100081320000C285A0F0306F0000B4851E40B2
1763:106E200081B2000000001E4131C301007F94004088
1764:106E300025300100C7859C0F803200002383008825
1765:106E40001CB000008D95005C1F0001001480000341
1766:106E500042C901000400225A1F7C0000000000F01B
1767:106E600096B0010000002F0548B101001000000796
1768:106E700018E401000008000CE099010090040007EC
1769:106E80009630010000B5000D46C90100CF853040A5
1770:106E9000813200000400A20BE67D00000000000B20
1771:106EA000E6910100000200A146C901000400A20B06
1772:106EB000E67D00000000000BE691010004002E05B5
1773:106EC00048B1010000001040E1B10100A488004079
1774:106ED00081B00000000000FB28B00100000000FBB2
1775:106EE00086B00100000000F814B00100E3852246DE
1776:106EF000237C000004002240876C0000DF852240D4
1777:106F0000877C0000000000481F900100E1852241BD
1778:106F1000877C0000000000471F900100E3852242AB
1779:106F2000877C0000000000451F9001000400224003
1780:106F3000097C0000E485661B2C300000000000A0E6
1781:106F400013B001000000764141C301001686239270
1782:106F5000156C00001686A2451F7C00001C86224B83
1783:106F6000FD7F0000170000D0A2C901000000004012
1784:106F700027B001000200000A24C80100BF940040AD
1785:106F80000F3001001486220840300000000000414C
1786:106F9000A3C10100F007001224CC0100ED85AA4135
1787:106FA000274000000400A349276C000001000013E3
1788:106FB00080CC01000E8626402330000000000040F7
1789:106FC00083B001006000000384C8010010000010BD
1790:106FD00048CD0100170000D0A2C90100FB85A240E6
1791:106FE000836C00000786004183B0000000800042EF
1792:106FF00044990100000068213896010000002E50DD
1793:1070000049C101000086A244236C00003000000347
1794:1070100048C9010000000044F1B101000C0000204B
1795:10702000F0C901000000004461B10100A00000A40B
1796:1070300062DD01000386A842E03100000000004448
1797:1070400085C001000000004123C001000000004194
1798:10705000A3C10100F985A241815000000E862240A3
1799:10706000236C00000000004461B1010040000010EA
1800:1070700062DD01000B86A840813200002383008876
1801:107080001CB000000B040040899801000999000021
1802:107090008A3001000000000348B10100EE07004003
1803:1070A00025980100170000D02AC801002786001784
1804:1070B00010B000000A970040813201001C86004099
1805:1070C00081B20000BF940092253001000000004012
1806:1070D00031B001000B0400408998010009990000BB
1807:1070E0008A3001001C8622082E30000027860041CD
1808:1070F00027B00000808000A604B001000600004018
1809:10710000879801007F98000A8C30010004001C0F52
1810:1071100080320000000000400FB001000000005C61
1811:107120001F9001000400A09F136C00002686229F80
1812:10713000136C0000020000881CCC01002783004073
1813:1071400081B20000F08700413FC300000000004012
1814:107150000FB001002800000180CE01003B862A40CC
1815:10716000813000000080001044C901004000004050
1816:10717000819801003086A2481F7C00003086A2471B
1817:107180001F7C00003086A307036C000080000040D5
1818:10719000819801003386A340026C000028000001A2
1819:1071A000F0CD0100358600400FB0000028000040FF
1820:1071B000F0CD0100040000400ECC010028000003C7
1821:1071C000F0C9010028000000F0C90100000000160D
1822:1071D000E0B101000000004761B101002000001093
1823:1071E00062DD01003986A85C1F1000000400220A3D
1824:1071F000803200000400A203486D0000000000403F
1825:1072000043990100000000F008B00100A0012D40EA
1826:1072100000C001001C87220F420500004E869C0F13
1827:10722000803200000000005C1F8001000080001020
1828:1072300042C9010049862240E36D0000000000477A
1829:1072400061B101004000001062DD01004686A840E7
1830:1072500081320000238300881CB000004E86220784
1831:10726000803200000000000342B10100000000076E
1832:1072700042C10100008000A1469901000000005FAA
1833:10728000E1910100C006A2451F7C00001000000330
1834:1072900048C9010000002D5429C00100000000F879
1835:1072A00018B00100000000F804B00100000000F870
1836:1072B0000EB0010004002640813200000400A25FED
1837:1072C0000F7C00003E00001480CE01000400AA40A4
1838:1072D00081320000420000030AC801000C0000A433
1839:1072E0000CC8010016950040813201000000001416
1840:1072F00002B001000000001424D0010000000014BE
1841:1073000010C001001200000810C801000000004079
1842:1073100023B00100FE7F000544C901000400A2A2C1
1843:10732000860600000000000AE4B101007C8622010C
1844:107330008032000000003C4423E0010000002EA445
1845:1073400080B001000000001048C101006986A30759
1846:10735000026C00006A8668011AB00000000068072D
1847:107360001AB001000000000D02D00100000000056D
1848:10737000F0B101000000000CF0B1010000000002BB
1849:10738000E0B101000000000D0AC001007686224035
1850:10739000036C000076862242236C0000000000414E
1851:1073A00023C001000000004761B10100A00000A45B
1852:1073B00062DD01009C862840813200007386004017
1853:1073C00081B200000000001080C0010000000047F2
1854:1073D00061B101000000004062B101007886A84060
1855:1073E00023300000238300881CB000009C860040EE
1856:1073F00081B2000000003C4423E00100000000A432
1857:1074000086B0010000002E1048C101008186A31241
1858:107410000E6C0000828660071AB000000000601247
1859:107420001AB001000000680D16940100FFFF000B68
1860:1074300016D801001B990008983001000000680868
1861:107440003E9601000000000CF0B1010000000002B7
1862:10745000E0B101000000001086C0010000000046FD
1863:1074600061B101002000004362DD01008A86A85C52
1864:107470001F100000BC86220D146C00009086220DA7
1865:10748000246C00000000000D10C001009586000D66
1866:1074900024D000000400224BFD7F000000000041CA
1867:1074A0002BC0010000000015A2B101001000002057
1868:1074B00010C80100F007004025980100978622427D
1869:1074C000236C00009C86004123C0000000000046A1
1870:1074D00061B101004000001062DD01009886A85CE7
1871:1074E0001F000000238300881CB000000000004043
1872:1074F00023B00100BC86220D14500000BB86A20DF3
1873:107500000E500000A88622461F7C000000000046A6
1874:107510001F8001003080001042C90100A686224071
1875:10752000E36D00000000004761B101004000001061
1876:1075300062DD0100A386A840813200002383008819
1877:107540001CB0000020800003469901000000005F8D
1878:10755000E191010000002D0648B10100000000F893
1879:1075600018B00100000000F804B00100040022F08F
1880:107570000E300000AE86A25F0F7C00006386004CD8
1881:107580000DC0000000002E5F0F80010063862307FE
1882:10759000146C00000400A2461F7C000030000010A4
1883:1075A00048C9010024000040F199010000000003D7
1884:1075B000F0B1010000000000F0B101000000001671
1885:1075C000F0B101002400000000C8010000000047E5
1886:1075D00061B10100A00000A462DD0100B886A846E8
1887:1075E0001F100000638600030CB000006386000DCE
1888:1075F00018C0000004002E140AD00100120000057B
1889:1076000048CD0100FE7F000542C901000400A2A48C
1890:10761000860600000400A2A1860600000C002AF2E3
1891:10762000E0B10100C4862240316C00000000601807
1892:10763000389601001E00004043990100008100F6C9
1893:1076400080CE0100C886A6408132000000000044C0
1894:1076500043C10100CA86220BED6D0000080000A1A5
1895:1076600042C90100020000A146C901000400A2A114
1896:10767000860600000F0000FA948801000400A2456D
1897:10768000956C00000200004A86E40100000000F64C
1898:107690000EB00100D48622471F7C000004001F4367
1899:1076A0000E500000D486A0460F40000000000041AC
1900:1076B0000FC00100D88622481F7C00000000004057
1901:1076C00091B0010004000FA242310000DB860040AF
1902:1076D00089B000000C0000A242C901000000004374
1903:1076E00089B001000000004395D00100000000FCBB
1904:1076F00082B00100DE86A041904000000000004101
1905:1077000091C00100E38622471F7C0000E386A0436E
1906:10771000896C0000E3862045896C0000E386A04167
1907:107720000E400000000000410FC0010000000041B9
1908:1077300089C00100DB86A24195500000F0862248F6
1909:107740001F7C00001000004892F40100FFFF004879
1910:1077500090880100EA8690489240000000000041B5
1911:1077600093C001000A0000A244C901000000662085
1912:1077700093A401000A00004380CC0100000000A295
1913:1077800080C001000400A240426D00000400A2A1DC
1914:10779000860600000400A2461F7C00001B9900170B
1915:1077A00098300100FF0700177E8901000400A64001
1916:1077B000813200003080001044C901001200001422
1917:1077C000F0C9010000000017F0B10100120000052F
1918:1077D000E0CD01003000001080C80100000000442E
1919:1077E00061B101002000004062DD0100FA86A8407E
1920:1077F000813200000587225C1F7C000000003C44B1
1921:1078000023E0010000002D1048C101000487224040
1922:10781000E36D00000000004661B10100400000106F
1923:1078200062DD01000187A8408132000023830088C7
1924:107830001CB000000000005C1F8001000887A24708
1925:107840001F7C00000C9500408132010088870017E2
1926:1078500010B00000139500408132010000002F039A
1927:1078600048B101000C87A00716400000000000414D
1928:1078700017C001000000000BE4B10100000000503F
1929:1078800017F00100108790F2164000000000004140
1930:1078900017C001000000662017A4010010000014AA
1931:1078A0002AC80100000000502BE00100000000F297
1932:1078B0002A9401003080001042C901001A8722403A
1933:1078C000E36D00000000004461B1010040000010C1
1934:1078D00062DD01001787A840813200002383008801
1935:1078E0001CB000000080001710DC010088870040F9
1936:1078F00081B2000024879C0F803200000000005CF1
1937:107900001F8001000080001042C90100248722402E
1938:10791000E36D00000000004761B10100400000106D
1939:1079200062DD01002187A8408132000023830088A6
1940:107930001CB00000298722078032000000000003ED
1941:1079400042B101000000000742C10100008000A117
1942:10795000469901000000005FE191010004002E0340
1943:1079600048B101000000000AE0B101002E8722406A
1944:10797000316C00000C0000404599010000006018C7
1945:107980003896010000002E1048B1010000000050A0
1946:10799000F1B1010000000008F0B101000000000397
1947:1079A000E0B101000000004461B1010000000010DE
1948:1079B00062B101003387A840233000002383008890
1949:1079C0001CB0000000002D5211C001001000000387
1950:1079D00048C90100000000F818B00100000000F8DC
1951:1079E00004B00100000000F80EB001000C0000A47B
1952:1079F0000CC8010004002240156C000000003C444B
1953:107A000023E00100000000A486B0010000002E1059
1954:107A100048C101004287A3120E6C0000438768072B
1955:107A20001AB00000000068121AB001001B9900088B
1956:107A3000983001000000004081B2010000000010F9
1957:107A400086C00100000068083E9601000000000C9E
1958:107A5000F0B1010000000002E0B1010000000046AA
1959:107A600061B101002000004362DD01004A87A85C8B
1960:107A70001F1000007C87220D146C00005087220D1F
1961:107A8000246C00000000000D10C001005587000D9F
1962:107A900024D000000400224BFD7F000000000041C4
1963:107AA0002BC0010000000015A2B101001000002051
1964:107AB00010C80100F00700402598010057872242B6
1965:107AC000236C00005C87004123C0000000000046DA
1966:107AD00061B101004000001062DD01005887A85C20
1967:107AE0001F000000238300881CB00000000000403D
1968:107AF00023B001000400220D145000007B87A20D6A
1969:107B00000E500000688722461F7C000000000046DF
1970:107B10001F8001003080001042C9010066872240AA
1971:107B2000E36D00000000004761B10100400000105B
1972:107B300062DD01006387A840813200002383008852
1973:107B40001CB0000020800003469901000000005F87
1974:107B5000E191010000002D0648B10100000000F88D
1975:107B600018B00100000000F804B00100040022F089
1976:107B70000E3000006E87A25F0F7C00003C87004C37
1977:107B80000DC0000000002E5F0F8001003C8723071E
1978:107B9000146C00000400A2461F7C0000300000109E
1979:107BA00048C9010024000040F199010000000003D1
1980:107BB000F0B1010000000000F0B10100000000166B
1981:107BC000F0B101002400000000C8010000000047DF
1982:107BD00061B10100A00000A462DD01007887A84621
1983:107BE0001F1000003C8700030CB000003C87000D14
1984:107BF00018C000000400A2461F7C00008687225C9B
1985:107C00001F7C00000000005C1F80010000003C445D
1986:107C100023E0010000002D1048C1010086872240AA
1987:107C2000E36D00000000004661B10100400000105B
1988:107C300062DD01008387A840813200002383008831
1989:107C40001CB000000000001710B001008887004041
1990:107C50002BB00000008000034499010000000004E4
1991:107C6000E0B1010004002640813200000400A09F22
1992:107C7000136C00008F87229F136C000002000088A5
1993:107C80001CCC01002783004081B200009498004181
1994:107C90003F430100000000408DB0010000000040A3
1995:107CA00005B001007F9800400F3001000400A25C85
1996:107CB0001F7C00000688005C1F9000001000000080
1997:107CC0000EF4010004002640813200000000003A5A
1998:107CD000018401009B872250016C00000D040040CC
1999:107CE00089980100099900008A300100030000070B
2000:107CF0001AF401001895000716300100A6872241EA
2001:107D0000816C0000A1872242816C000023830088DF
2002:107D10001CB00000A587225F0F7C00000000005F00
2003:107D20000F8001000E0400408998010009990000AD
2004:107D30008A300100F08700400FB00000B387A25ADC
2005:107D40001F7C00000400A25A1F7C000000B5000D3B
2006:107D500042C901000400220BE67D000000B7000DBF
2007:107D600042C901000400220BE67D0000709400402F
2008:107D700081320100B3872220856C0000B0879C0F00
2009:107D800080320000238300881CB000008D95005CC9
2010:107D90001F000100C8970042613101002383008861
2011:107DA0001CB00000900400079630010000002D0573
2012:107DB00048B10100000000F018B001000000000010
2013:107DC00080B00100A488A25F816C0000A8002D4350
2014:107DD0001980010037002DF024B00100040000F3E9
2015:107DE0008EF401000F0000F3908801000400A3430B
2016:107DF0008F6C00000400A343916C0000C4872248EC
2017:107E00008E6C0000360000404399010058003D434D
2018:107E1000E7E10100C4871FF0246C0000C387234101
2019:107E20008F6C0000A488004781B00000A48800483F
2020:107E300081B000004000004043990100B0002DF0E7
2021:107E400014B00100C987220A904000005F980040EA
2022:107E500091300100A488A24080320000B0002D457E
2023:107E600081B00100D58722F02C300000A3002D3016
2024:107E700083B00100AC002DF382E00100CF87A34165
2025:107E80002C6C00000000001682B0010098002DF05C
2026:107E900082C0010088002DF082D00100000000F2B5
2027:107EA00098E80100A488204C826C00007C002D41E1
2028:107EB00098E80100A48820F0986C0000F087220A5E
2029:107EC000803200004002000C7E890100F087A6404D
2030:107ED00081320000A488004981B00000200000A683
2031:107EE00080B00100DD872243216F00001380004035
2032:107EF00080DC0100DE87004081B200001A80004073
2033:107F000080DC0100DE87A25E0B7D000000000040E7
2034:107F100008B10100E0879F8580320000E4870040BF
2035:107F200081B200001A832240577D0000010000400A
2036:107F300057990100E487424081320000000000446C
2037:107F40009393010001831A5B69930000EA8722463C
2038:107F5000F37F0000EA87A241F37F0000C680004261
2039:107F600097330100040000CB81C80100ED87224057
2040:107F7000F27F0000C680006F97330100EF87224038
2041:107F8000737D0000E08000418BB30000E787004074
2042:107F900081B20000F7879C0F803200000080001043
2043:107FA00042C90100F7872240E36D00000000004550
2044:107FB00061B101004000001062DD0100F487A840BB
2045:107FC00081320000238300881CB000003494220218
2046:107FD00080320000F88742408132000000000044F7
2047:107FE0009393010034941A026897000002889C0F52
2048:107FF000803200000080001042C901000288224047
2049:10800000E36D00000000004561B101004000001078
2050:1080100062DD0100FF87A8408132000023830088D1
2051:108020001CB00000449422028032000003884240C9
2052:1080300081320000000000449393010044941A022E
2053:10804000689700000D889C0F8032000000800010AF
2054:1080500042C901000D882240E36D00000000004588
2055:1080600061B101004000001062DD01000A88A840F3
2056:1080700081320000238300881CB000002F8322027D
2057:10808000803200000E88424081320000000000442F
2058:108090009393010000001A02689701002F830040AB
2059:1080A00005B00000008000A656B1010056952F4093
2060:1080B00005B001000400A240E76D0000B89429411A
2061:1080C000E7B1010000000054EF930100000000F24E
2062:1080D0000EB001000400A30C556F00002900004001
2063:1080E0000D9801000900000712E40100000000A73C
2064:1080F00013C00100030000071AF401000700000785
2065:1081000016880100FFFF001034D8010000000003B2
2066:10811000349401000000004023B00100201800400A
2067:1081200011980100040020AA0F6C000000B5000D9A
2068:1081300042C901004688220BE67D00002588604088
2069:1081400081320000FFFF0007848901002E8805C2EC
2070:1081500024300000580400408132010000002D0549
2071:1081600048B10100638870F0183001001000000C65
2072:1081700082F401000400A2410E6C00004688004019
2073:1081800081B200000000704081B201003D88A0482B
2074:10819000236C00000000005035D001000080001A60
2075:1081A00042C9010037882240E36D00000000004210
2076:1081B00061B101004000001A62DD01003488A8406E
2077:1081C00081320000238300881CB00000209800400A
2078:1081D00043990100638800F8183001003888A241F3
2079:1081E00023500000FFFF001034D8010000000003FE
2080:1081F00034940100201800401198010000002E1A4C
2081:1082000048B1010000000044F1B101000000000885
2082:10821000F0B101000000004261B101002000001A2D
2083:1082200062DD01004188A809E03100000000004142
2084:1082300023C001000000005035C0010000000044D0
2085:1082400011C00100528822410D5000000000004181
2086:108250000FC001004E88A0AA0F6C00000000004172
2087:108260000FB001000900000712E40100000000A7A0
2088:1082700013C00100000000401BB001002288004133
2089:1082800017B000000002000912C8010022888341D3
2090:10829000174000000000004017B001002288004194
2091:1082A0001BC000005D882340236C000000000050CC
2092:1082B00035D001000080001A42C901005A882240CE
2093:1082C000E36D00000000004261B101004000001AAF
2094:1082D00062DD01005788A8408132000023830088B6
2095:1082E0001CB000002098004043990100638800F80A
2096:1082F000183001005B88A2412350000000000041BB
2097:108300000FC001006088A0AA0F6C000000000041AF
2098:108310000FB00100B8942007E4B101005695204049
2099:10832000E7B10100F08700400FB00000FFFF000C34
2100:1083300080D801000400264081320000C002000CF9
2101:108340007E8901007C882654613100006F88870C8B
2102:10835000803200001F040040899801000999000C38
2103:108360008A3001000000005461B101000F0000409C
2104:10837000629901006F882840813200000400A254F5
2105:10838000777D00006B88004081B20000778822462C
2106:10839000197C00002A040040899801000999000C0A
2107:1083A0008A3001000000005461B101000D0000405E
2108:1083B000629901000000A84081B200000400A254AC
2109:1083C000777D00007088004081B200007C882249DF
2110:1083D000197C00000E000040629901000000A840D6
2111:1083E00081B200000400A254777D0000778800402D
2112:1083F00081B2000010000040629901000000A84016
2113:1084000081B200000400A254777D00007C88004007
2114:1084100081B2000030942F55F1930100004000A676
2115:1084200056B101002F83A241E551000064000040D5
2116:10843000E599010084884440813200008788A29336
2117:10844000576F00000000004157C3010000001CAB43
2118:1084500027B301002F832250FD7F00002F8322517C
2119:10846000FD7F00002F83A2411D53000050460040B5
2120:108470001D9B010038050040813201000E000048BC
2121:10848000B2CB010010040040493101009388224022
2122:10849000B56F00000E000048B2CB0100200400417F
2123:1084A000B55301002F83004081B20000000000514D
2124:1084B000FD83010040160040459901004005004041
2125:1084C000493101001E000048B2CB010010040040F9
2126:1084D00081320100000000DA91C001000400004870
2127:1084E000B2CB010020040040B533010060162040EB
2128:1084F000E5B1010055820040B53301000800004895
2129:10850000B2CB0100FFFF004AB48B01002004004001
2130:10851000813201000A000048B2CB01001000004A7D
2131:10852000B4F7010020040040813201002F83004095
2132:1085300081B200000400A205486D00000200004066
2133:10854000439901000400A2F20E6C00000400A20294
2134:10855000803200000500004043990100000000F354
2135:1085600008B00100AE882250816C00000F0400406A
2136:1085700089980100100000408AE401000999000474
2137:108580008A14010004002048096C000004002057F0
2138:10859000816C000004002040E6B1010003000040AF
2139:1085A00096E401000000000496C00100B488004B6E
2140:1085B00010C90000E48B004109B000000400002055
2141:1085C0008FB00000040000208FB0000004000020E5
2142:1085D0008FB00000040000208FB0000004000020D5
2143:1085E0008FB00000040000208FB0000004000020C5
2144:1085F0008FB00000040000208FB00000198C0041F3
2145:1086000009B00000040000208FB00000040000202A
2146:108610008FB00000040000208FB000000400002094
2147:108620008FB00000040000208FB000000400002084
2148:108630008FB00000040000208FB000000400002074
2149:108640008FB00000558C004509B00000558C0045E6
2150:1086500009B00000558C004509B00000558C00455C
2151:1086600009B00000040000208FB0000004000020CA
2152:108670008FB00000040000208FB000000400002034
2153:108680008FB000009C8C004309B00000CB8C0043ED
2154:1086900009B00000CF8C004409B000003E8E0045B8
2155:1086A00009B00000040000208FB00000040000208A
2156:1086B0008FB00000040000208FB0000004000020F4
2157:1086C0008FB00000040000208FB00000DF8C00435A
2158:1086D00009B00000DD8C004309B00000E08B0045CC
2159:1086E00009B00000040000208FB00000040000204A
2160:1086F0008FB00000040000208FB0000004000020B4
2161:108700008FB00000988D004209B00000988D0043A2
2162:1087100009B00000988D004409B00000E08B0045CE
2163:1087200009B00000040000208FB000000400002009
2164:108730008FB00000040000208FB000000400002073
2165:108740008FB00000040000208FB00000B88D0043FF
2166:1087500009B00000040000208FB00000E08B00454D
2167:1087600009B00000040000208FB0000004000020C9
2168:108770008FB00000040000208FB000000400002033
2169:108780008FB00000040000208FB00000E08D004397
2170:1087900009B00000E08D004409B00000E08B004506
2171:1087A00009B00000040000208FB000000400002089
2172:1087B0008FB00000040000208FB0000004000020F3
2173:1087C0008FB00000040000208FB00000E08D004258
2174:1087D00009B00000040000208FB00000E08B0045CD
2175:1087E00009B00000040000208FB000000400002049
2176:1087F0008FB00000040000208FB0000004000020B3
2177:108800008FB00000040000208FB000000F8E0044E5
2178:1088100009B00000040000208FB00000E08B00458C
2179:1088200009B00000040000208FB000000400002008
2180:108830008FB00000040000208FB000000400002072
2181:108840008FB00000E08B004209B00000228E00458E
2182:1088500009B00000228E004509B00000E08B004501
2183:1088600009B00000040000208FB0000004000020C8
2184:108870008FB00000040000208FB000000400002032
2185:108880008FB00000248E004209B00000248E004307
2186:1088900009B00000248E004409B00000248E004579
2187:1088A00009B00000040000208FB000000400002088
2188:1088B0008FB00000040000208FB0000004000020F2
2189:1088C0008FB00000040000208FB0000004000020E2
2190:1088D0008FB000002F8E004409B00000E08B0045EF
2191:1088E00009B00000040000208FB000000400002048
2192:1088F0008FB00000040000208FB0000004000020B2
2193:108900008FB00000418E004209B00000308E00435D
2194:1089100009B00000418E004409B00000E08B004522
2195:1089200009B00000040000208FB000000400002007
2196:108930008FB00000040000208FB000000400002071
2197:108940008FB00000040000208FB00000438E004371
2198:1089500009B00000378E004409B00000E08B0045EC
2199:1089600009B00000040000208FB0000004000020C7
2200:108970008FB00000040000208FB00000E08B0041A9
2201:1089800009B00000968D004209B00000968D0043AA
2202:1089900009B00000968D004409B00000E08B00454E
2203:1089A00009B00000040000208FB000000400002087
2204:1089B0008FB00000040000208FB00000E08B004169
2205:1089C00009B00000458E004209B00000458E00430A
2206:1089D00009B00000458E004409B00000E08B00455E
2207:1089E00009B00000040000208FB000000400002047
2208:1089F0008FB00000040000208FB0000004000020B1
2209:108A00008FB00000040000208FB0000004000020A0
2210:108A10008FB00000040000208FB000004C8E004595
2211:108A200009B00000040000208FB000000400002006
2212:108A30008FB00000040000208FB000004E8E004276
2213:108A400009B00000040000208FB0000004000020E6
2214:108A50008FB00000040000208FB000000400002050
2215:108A60008FB00000040000208FB000000400002040
2216:108A70008FB00000040000208FB000000400002030
2217:108A80008FB000005B8E004309B00000C18E004330
2218:108A900009B00000CF8C004409B000003E8E0045B4
2219:108AA00009B00000040000208FB000000400002086
2220:108AB0008FB00000040000208FB0000004000020F0
2221:108AC0008FB00000040000208FB00000C98E00436A
2222:108AD00009B00000CF8C004409B000003E8E004574
2223:108AE00009B00000040000208FB000000400002046
2224:108AF0008FB00000040000208FB0000004000020B0
2225:108B00008FB00000040000208FB00000DD8E004315
2226:108B100009B00000040000208FB00000E08B004589
2227:108B200009B00000040000208FB000000400002005
2228:108B30008FB00000040000208FB00000040000206F
2229:108B40008FB00000968C004309B00000C58E004332
2230:108B500009B00000CF8C004409B000003E8E0045F3
2231:108B600009B00000040000208FB0000004000020C5
2232:108B70008FB0000002002D0548B101000400A2F2F0
2233:108B80000E6C00000400A2028032000007002D409D
2234:108B900081B20100000000F308B0010010040040A1
2235:108BA00089980100100000478AE401000999000437
2236:108BB0008A1401000400204E096C00002A000047BE
2237:108BC00080CE0100040024408132000006002047CE
2238:108BD000E6B101000400004796E4010000000047F0
2239:108BE00096D001000000004796D00100000000046C
2240:108BF00096C001007D89004B10C90000F98E004924
2241:108C000009B000000400002085B00000040000202E
2242:108C100085B000000400002085B0000004000020A2
2243:108C200085B000000400002085B000000400002092
2244:108C300085B000000400002085B000000400002082
2245:108C400085B000000400002085B000000400002072
2246:108C500085B000000400002085B000000400002062
2247:108C600085B000000400002085B000000400002052
2248:108C700085B00000328F004209B0000004000020DF
2249:108C800085B000000400002085B000000400002032
2250:108C900085B000000400002085B000000400002022
2251:108CA00085B000000400002085B000000400002012
2252:108CB00085B000000400002085B000000400002002
2253:108CC00085B000000400002085B0000004000020F2
2254:108CD00085B000000400002085B0000004000020E2
2255:108CE00085B00000398F004609B000000400002064
2256:108CF00085B000000400002085B0000004000020C2
2257:108D000085B000000400002085B0000004000020B1
2258:108D100085B000000400002085B0000004000020A1
2259:108D200085B000000400002085B000000400002091
2260:108D300085B000000400002085B000000400002081
2261:108D400085B000000400002085B000000400002071
2262:108D500085B000000400002085B000004A8F00426A
2263:108D600009B000000400002085B000006D8F0042B3
2264:108D700009B000000400002085B0000004000020BD
2265:108D800085B000000400002085B000000400002031
2266:108D900085B000000400002085B000000400002021
2267:108DA00085B00000678F004A09B000000400002071
2268:108DB00085B000000400002085B000000400002001
2269:108DC00085B000000400002085B00000748F0043CF
2270:108DD00009B000000400002085B00000DF8F0044CF
2271:108DE00009B000000400002085B00000040000204D
2272:108DF00085B000000400002085B0000004000020C1
2273:108E000085B000000400002085B0000004000020B0
2274:108E100085B00000DD8F004B09B000000400002089
2275:108E200085B000000400002085B000000400002090
2276:108E300085B000003D8F004109B000000400002013
2277:108E400085B000003D8F004309B000003D8F004415
2278:108E500009B000003D8F004509B000003D8F00467D
2279:108E600009B000003D8F004709B000003D8F004869
2280:108E700009B000003D8F004909B000003D8F004A55
2281:108E800009B000003D8F004B09B000003D8F004C41
2282:108E900009B000003D8F004D09B000000400002023
2283:108EA00085B000000400002085B00000489000421A
2284:108EB00009B000000400002085B000004890004484
2285:108EC00009B000000400002085B00000040000206C
2286:108ED00085B000000400002085B0000004000020E0
2287:108EE00085B000000400002085B0000004000020D0
2288:108EF00085B000004890004B09B00000040000203D
2289:108F000085B000000400002085B0000004000020AF
2290:108F100085B000000400002085B00000040000209F
2291:108F200085B000006590004509B0000004000020F5
2292:108F300085B000000400002085B00000040000207F
2293:108F400085B000000400002085B000007D9000473F
2294:108F500009B000000400002085B0000056900045D4
2295:108F600009B000000400002085B0000004000020CB
2296:108F700085B000001593004609B0000004000020F1
2297:108F800085B000000400002085B00000040000202F
2298:108F900085B000000400002085B00000040000201F
2299:108FA00085B000006D8F004609B000004A8F004672
2300:108FB00009B00000658F004709B00000658F0048C8
2301:108FC00009B000000400002085B00000040000206B
2302:108FD00085B000000400002085B00000678F004AC3
2303:108FE00009B000000400002085B00000040000204B
2304:108FF00085B000000400002085B0000004000020BF
2305:1090000085B000000400002085B0000004000020AE
2306:1090100085B00000DF8F004509B00000748F004369
2307:1090200009B00000658F004709B00000658F004857
2308:1090300009B000000400002085B0000004000020FA
2309:1090400085B000000400002085B00000DD8F004CDA
2310:1090500009B000000400002085B0000004000020DA
2311:1090600085B000000400002085B00000040000204E
2312:1090700085B000000400002085B00000040000203E
2313:1090800085B000008490004409B000008490004244
2314:1090900009B00000C98B004709B00000C98B004827
2315:1090A00009B000000400002085B00000040000208A
2316:1090B00085B000000400002085B000008490004BC3
2317:1090C00009B000000400002085B00000040000206A
2318:1090D00085B000003D8F004109B00000AF9000470F
2319:1090E00009B000000400002085B000009290004705
2320:1090F00009B000000400002085B00000040000203A
2321:1091000085B000000400002085B0000004000020AD
2322:1091100085B000000400002085B00000040000209D
2323:1091200085B000009290004709B0000004000020C4
2324:1091300085B000000400002085B00000040000207D
2325:1091400085B000000400002085B00000040000206D
2326:1091500085B000000400002085B00000040000205D
2327:1091600085B000009290004709B00000AF90004722
2328:1091700009B00000658F004709B00000658F004806
2329:1091800009B000000400002085B0000004000020A9
2330:1091900085B000000400002085B0000092900047D8
2331:1091A00009B000000400002085B000000400002089
2332:1091B00085B000000400002085B0000004000020FD
2333:1091C00085B000000400002085B0000004000020ED
2334:1091D00085B000000400002085B0000004000020DD
2335:1091E00085B00000BE90004709B00000BE90004866
2336:1091F00009B000000400002085B000000400002039
2337:1092000085B000000400002085B0000004000020AC
2338:1092100085B000000400002085B00000040000209C
2339:1092200085B000002F91004009B000005191004727
2340:1092300009B000004391004809B000008A9000473F
2341:1092400009B000008A90004709B000005191004722
2342:1092500009B000005A91004709B000005A91004837
2343:1092600009B000000400002085B0000043910048D0
2344:1092700009B000008A90004709B000008A900047BA
2345:1092800009B000004391004809B00000040000202C
2346:1092900085B000000400002085B00000040000201C
2347:1092A00085B000004890004309B000000400002091
2348:1092B00085B000004890004509B000004890004685
2349:1092C00009B00000658F004709B00000658F0048B5
2350:1092D00009B000000400002085B000004890004A5A
2351:1092E00009B000000400002085B000004890004C48
2352:1092F00009B000000400002085B000000400002038
2353:1093000085B000000400002085B00000AE9000474A
2354:1093100009B00000A090004809B0000091900047FB
2355:1093200009B000009190004709B00000AE900047DE
2356:1093300009B00000C98B004709B00000C98B004884
2357:1093400009B000000400002085B00000A090004893
2358:1093500009B000009190004709B0000091900047CB
2359:1093600009B00000A090004809B0000004000020EF
2360:1093700085B000000400002085B000005D9100422F
2361:1093800009B000000400002085B000005D91004499
2362:1093900009B000000400002085B000000400002097
2363:1093A00085B000000400002085B00000040000200B
2364:1093B00085B000000400002085B0000004000020FB
2365:1093C00085B000005D91004B09B000000400002052
2366:1093D00085B000000400002085B0000004000020DB
2367:1093E00085B000000400002085B0000004000020CB
2368:1093F00085B000005D91004309B00000040000202A
2369:1094000085B000005D91004509B000005D91004607
2370:1094100009B000005D91004709B000005D9100486F
2371:1094200009B000000400002085B000005D91004AF2
2372:1094300009B000000400002085B000005D91004CE0
2373:1094400009B000005D91004C09B00000040000204C
2374:1094500085B000000400002085B00000040000205A
2375:1094600085B000007A91004609B000000400002099
2376:1094700085B000000400002085B00000040000203A
2377:1094800085B000000400002085B000007D900047FA
2378:1094900009B000000400002085B000007A91004669
2379:1094A00009B000000400002085B000000400002086
2380:1094B00085B000000400002085B0000004000020FA
2381:1094C00085B000000400002085B0000004000020EA
2382:1094D00085B000009C92004609B000000400002006
2383:1094E00085B000000400002085B0000004000020CA
2384:1094F00085B000000400002085B000007D9000478A
2385:1095000009B000000400002085B000009C920046D5
2386:1095100009B000000400002085B000000400002015
2387:1095200085B000009C92004609B0000004000020B5
2388:1095300085B000000400002085B000000400002079
2389:1095400085B000000400002085B00000C5920042F4
2390:1095500009B000000400002085B0000004000020D5
2391:1095600085B000000400002085B000000400002049
2392:1095700085B000000400002085B000000400002039
2393:1095800085B00000C392004A09B00000040000202A
2394:1095900085B000000400002085B000000400002019
2395:1095A00085B000000400002085B000000400002009
2396:1095B00085B000000400002085B0000004000020F9
2397:1095C00085B00000C592004609B0000004000020EC
2398:1095D00085B00000658F004709B00000658F004826
2399:1095E00009B000000400002085B000000400002045
2400:1095F00085B000000400002085B00000C392004A3E
2401:1096000009B000000400002085B000000400002024
2402:1096100085B000000400002085B000000400002098
2403:1096200085B000000400002085B000000400002088
2404:1096300085B000000400002085B000000400002078
2405:1096400085B000000400002085B000000400002068
2406:1096500085B000006A91004109B0000004000020BC
2407:1096600085B000000400002085B000000400002048
2408:1096700085B000000400002085B000000400002038
2409:1096800085B000000400002085B000007791004202
2410:1096900009B000000400002085B00000779100446C
2411:1096A00009B000000400002085B000000400002084
2412:1096B00085B000000400002085B0000004000020F8
2413:1096C00085B000000400002085B0000004000020E8
2414:1096D00085B000007791004B09B000000400002025
2415:1096E00085B000000400002085B0000004000020C8
2416:1096F00085B000000400002085B0000004000020B8
2417:1097000085B000007791004309B0000004000020FC
2418:1097100085B000007791004509B0000077910046C0
2419:1097200009B000007791004709B000007791004828
2420:1097300009B000000400002085B0000004000020F3
2421:1097400085B000000400002085B000007791004C37
2422:1097500009B000000400002085B0000004000020D3
2423:1097600085B000000400002085B000000400002047
2424:1097700085B000006590004C09B000000400002096
2425:1097800085B000000400002085B000000400002027
2426:1097900085B000000400002085B000007D900047E7
2427:1097A00009B000000400002085B000005690004C75
2428:1097B00009B000000400002085B000000400002073
2429:1097C00085B000008393004609B00000040000202B
2430:1097D00085B000000400002085B000000A9300421C
2431:1097E00009B000000400002085B000000A93004486
2432:1097F00009B000000400002085B000000400002033
2433:1098000085B000000400002085B0000004000020A6
2434:1098100085B000000400002085B000000400002096
2435:1098200085B000000A93004B09B00000040000203E
2436:1098300085B000000400002085B000000400002076
2437:1098400085B000000400002085B000000400002066
2438:1098500085B000000400002085B000000400002056
2439:1098600085B000000A93004509B000000A93004645
2440:1098700009B00000658F004709B00000658F0048FF
2441:1098800009B000000400002085B0000004000020A2
2442:1098900085B000000400002085B000000A93004C51
2443:1098A00009B000000400002085B000000400002082
2444:1098B00085B000000400002085B0000056900042F2
2445:1098C00009B000001593004609B000000400002014
2446:1098D00085B000000400002085B0000056900046CE
2447:1098E00009B000000400002085B000007D90004712
2448:1098F00009B000000400002085B000001593004668
2449:1099000009B000000400002085B000000400002021
2450:1099100085B000001593004609B000000400002047
2451:1099200085B000000400002085B000000400002085
2452:1099300085B000001C93004309B000000400002023
2453:1099400085B000000400002085B000000400002065
2454:1099500085B000000400002085B000007D90004725
2455:1099600009B000000400002085B000001C930043F3
2456:1099700009B000000400002085B0000004000020B1
2457:1099800085B000001C93004D09B0000004000020C9
2458:1099900085B000000400002085B000000400002015
2459:1099A00085B000000400002085B000003293004321
2460:1099B00009B000000400002085B000000400002071
2461:1099C00085B000000400002085B0000004000020E5
2462:1099D00085B000000400002085B0000004000020D5
2463:1099E00085B000000393004A09B000000400002085
2464:1099F00085B000000400002085B0000004000020B5
2465:109A000085B000000400002085B0000004000020A4
2466:109A100085B000000400002085B000000400002094
2467:109A200085B000003293004309B00000040000201C
2468:109A300085B00000658F004709B00000658F0048C1
2469:109A400009B000000400002085B0000004000020E0
2470:109A500085B000000400002085B000000393004A98
2471:109A600009B000000400002085B0000004000020C0
2472:109A700085B000000400002085B000000400002034
2473:109A800085B000004A93004309B0000004000020A4
2474:109A900085B000000400002085B000000400002014
2475:109AA00085B000000400002085B000007D900047D4
2476:109AB00009B000000400002085B000004A93004374
2477:109AC00009B000000400002085B000000400002060
2478:109AD00085B000004A93004D09B00000040000204A
2479:109AE00085B000000400002085B000004A8F0042CD
2480:109AF00009B000000400002085B000006D8F004216
2481:109B000009B000000400002085B00000040000201F
2482:109B100085B000000400002085B000000400002093
2483:109B200085B000000400002085B000000400002083
2484:109B300085B000006D93004209B0000004000020D1
2485:109B400085B000000400002085B000000400002063
2486:109B500085B000000400002085B000000400002053
2487:109B600085B000000400002085B000000400002043
2488:109B700085B000006D8F004609B000004A8F004696
2489:109B800009B00000658F004709B00000658F0048EC
2490:109B900009B000000400002085B00000040000208F
2491:109BA00085B000000400002085B000006D930046E1
2492:109BB00009B000000400002085B00000040000206F
2493:109BC00085B000000400002085B0000004000020E3
2494:109BD00085B000007493004A09B000000400002022
2495:109BE00085B000000400002085B0000004000020C3
2496:109BF00085B000000400002085B000007D90004783
2497:109C000009B000000400002085B000007493004AF1
2498:109C100009B000000400002085B00000040000200E
2499:109C200085B000001693004609B000000400002033
2500:109C300085B000000400002085B000000400002072
2501:109C400085B000001693004609B000000400002013
2502:109C500085B000000400002085B000000400002052
2503:109C600085B000000400002085B000007D90004712
2504:109C700009B000000400002085B0000016930046E3
2505:109C800009B000000400002085B00000040000209E
2506:109C900085B000001693004609B0000004000020C3
2507:109CA00085B000000400002085B000000400002002
2508:109CB00085B000000400002085B000007D930042C4
2509:109CC00009B000000400002085B00000040000205E
2510:109CD00085B000000400002085B0000004000020D2
2511:109CE00085B000000400002085B0000004000020C2
2512:109CF00085B000000393004A09B000000400002072
2513:109D000085B000000400002085B0000004000020A1
2514:109D100085B000000400002085B000000400002091
2515:109D200085B000000400002085B000000400002081
2516:109D300085B000007D93004609B0000004000020BB
2517:109D400085B00000658F004709B00000658F0048AE
2518:109D500009B000000400002085B0000004000020CD
2519:109D600085B000000400002085B000000393004A85
2520:109D700009B000000400002085B0000004000020AD
2521:109D800085B000000400002085B00000748F004DF5
2522:109D900009B000000400002085B00000040000208D
2523:109DA00085B000000400002085B000000400002001
2524:109DB00085B000000400002085B0000004000020F1
2525:109DC00085B000000400002085B0000004000020E1
2526:109DD00085B000000400002085B0000004000020D1
2527:109DE00085B000000400002085B0000004000020C1
2528:109DF00085B000000400002085B0000004000020B1
2529:109E000085B000000400002085B0000004000020A0
2530:109E100085B000000400002085B00000748F004D64
2531:109E200009B00000658F004709B00000658F004849
2532:109E300009B000000400002085B0000004000020EC
2533:109E400085B000000400002085B000000400002060
2534:109E500085B000000400002085B000000400A205C9
2535:109E6000486D0000040022078032000007002E4BDE
2536:109E700019900100FB870004E6B10000C98B224263
2537:109E8000197C00000F97003A81300100C98B004017
2538:109E900081B20000C98B2242197C0000FF1F000F15
2539:109EA0001E8C01007396004081320100DB8B9C0FF9
2540:109EB000803200000000005C1F8001000080001064
2541:109EC00042C90100DB8B2240E36D00000000004529
2542:109ED00061B101004000001062DD0100D88BA84094
2543:109EE00081320000238300881CB000001D852202FF
2544:109EF00080320000DC8B42408132000000000044D0
2545:109F00009393010000001A02689701001D8500402C
2546:109F100005B000000400A205486D000004002207FF
2547:109F20008032000005002E4B19900100FB870004D1
2548:109F3000E6B100000000004087B0010000000040D2
2549:109F40008DB001000080000342C90100400000A163
2550:109F500044C90100000000F0E0B101007F98000654
2551:109F6000074001000400A25C1F7C00000000000606
2552:109F700007D00100D4002E5C1F90010000000007F4
2553:109F8000F0B101000C80000342C90100000000F0A4
2554:109F9000F0B101000000004081B20100000000FEAD
2555:109FA00096B00100000000FE96C00100000000F025
2556:109FB000F0B101000000004081B20100000000FE8D
2557:109FC00096C00100000000FE96C00100000000F0F5
2558:109FD000F0B101000000004081B20100000000FA71
2559:109FE00096C00100000000FE96C001000030004B4A
2560:109FF000948801000000004695F001000000004A2E
2561:10A0000096C001005E012E34978401000200004BCF
2562:10A01000E4E5010064012040E1B10100090000070E
2563:10A0200086E4010000002EA787C001001000001088
2564:10A0300048C9010010000040F19901005801004397
2565:10A04000F0C9010058010005E0C90100000000440A
2566:10A0500061B10100A00000A462DD0100088CA840ED
2567:10A06000813200000000000548B101001A000040E4
2568:10A070009798010008002E4095B00100108C204BED
2569:10A08000946C000000000040F1B101000D8C004113
2570:10A0900095C000001080001042C90100178C2240BA
2571:10A0A000E36D00000000004461B1010040000010B9
2572:10A0B00062DD0100138CA8408132000023830088F8
2573:10A0C0001CB000000000000548B101000F970040DF
2574:10A0D00081300100E08B004081B200000C80000361
2575:10A0E00042C90100000000F886B00100000000F83D
2576:10A0F00088B001001480000398C801000400A2A1E8
2577:10A10000986C00001E8C444081320000218CA24CCF
2578:10A11000FD7F0000228C004CFD930000238C20F07A
2579:10A12000566F0000000000F056B3010000001C4014
2580:10A1300081B2010064000040819801006400004089
2581:10A1400080CC01000400A64081320000D80000400D
2582:10A15000819801000400A2438104000000800010E7
2583:10A1600044C9010064000040F1990100700000053D
2584:10A17000F0C9010000000043F0B1010000000047F9
2585:10A1800061B101002000001062DD01002E8CA844A6
2586:10A19000E0310000100000108CC801000080004673
2587:10A1A00044C9010040000040F19901006801000528
2588:10A1B000F0C9010064000043F0C90100040024401C
2589:10A1C000813200000000004761B10100000000463C
2590:10A1D00062B10100378CA844E0310000238300887D
2591:10A1E0001CB000000900000786E4010038002EA71B
2592:10A1F00087C001008B002D0548B101003F8C224330
2593:10A20000E77D00000000004445C10100428C22446B
2594:10A21000E77D00000000004C45C101000000004A3D
2595:10A2200019900100680120A2E4B1010088000040FB
2596:10A2300043990100468C230BE56D000000000041AE
2597:10A24000199001000080001044C901005000004036
2598:10A25000F199010058010043F0C9010058010005BF
2599:10A26000E0C901000000004461B1010000000010DD
2600:10A2700062B101004B8CA84081320000238300882A
2601:10A280001CB000005C002E0548B1010000800003F6
2602:10A2900042C90100000060F096B00100A00000403B
2603:10A2A000439901000400A2F2803200000F970041A0
2604:10A2B00081300100E08B004081B20000588CA2493F
2605:10A2C000197C000086000040479901005C8C00402A
2606:10A2D000E5B1000086002F49198001005C8CA2F2D4
2607:10A2E000803200008B0000404799010000000042CE
2608:10A2F000E79101005F8CA246197C0000A00000409D
2609:10A3000047990100638C0040E5B10000A0002F4692
2610:10A3100019800100638CA2F2803200008B000040A3
2611:10A320004799010000000041E79101000700004E3D
2612:10A3300080E401000039004080C801000400A24010
2613:10A34000066C0000A80000404399010034002DF085
2614:10A3500024B00100000000FB0CB00100000000FB75
2615:10A3600010B00100000000FB12B001000F0000F36C
2616:10A3700016880100040000F314F40100938C2640B9
2617:10A3800081320000798C220A166C000058003D438F
2618:10A3900013E00100000000F882B00100040022F088
2619:10A3A000843000001B980040813201002383008824
2620:10A3B0001CB000000000000548B101000000004191
2621:10A3C00013C00100788CA043136C00000000004013
2622:10A3D00013B001006E8C004115D00000938C220A4E
2623:10A3E000803200000400A208126C000058003D43B7
2624:10A3F00013E00100000000F882B00100040022F028
2625:10A40000843000001B980040813201004000204051
2626:10A41000E1B10100238300881CB0000000000005AA
2627:10A4200048B10100938C224115500000000000410A
2628:10A4300011C00100868CA043116C00000000004098
2629:10A4400011B0010004002206106C000058003D43CA
2630:10A4500011E00100000000F836B00100040022F015
2631:10A46000003000000000005083B001005497004706
2632:10A4700061310100238300881CB000003194000585
2633:10A48000483101000000004561B1010040000010AA
2634:10A4900062DD01008F8CA840813200002383008898
2635:10A4A0001CB00000828C000548B10000370020403D
2636:10A4B000E7B101008697005181300100E08B004038
2637:10A4C00081B2000037000040439901000400A2F36C
2638:10A4D0008032000034002E41F5B10100001100402F
2639:10A4E000E59901000400A248197C0000A08C0048F6
2640:10A4F0001990000037000040439901000400A2F3C6
2641:10A500008032000034002E41F5B1010000110040FE
2642:10A51000E59901000080000342C90100000000F835
2643:10A5200094B00100A78C2245237C0000B0002FF0DE
2644:10A530008CB00100000060F08CC001007C00004085
2645:10A54000439901000400A3F08C6C000090000040CF
2646:10A550004399010035002DF08CB0010034002DF33B
2647:10A5600084B00100040022F3846C000058003E43D4
2648:10A5700085E00100AE8C2248197C000000000041FB
2649:10A580008DC001000000680A8CC0010038002A4A12
2650:10A59000E0B1010028000000E0C901003C00201BE0
2651:10A5A000E0B101001080000342C90100000000F882
2652:10A5B00038B00100000000F826B00100040022F8C5
2653:10A5C00002300000BC8C2301146C0000000000F875
2654:10A5D00080B00100000000F882B001004C0020F0C3
2655:10A5E000E4B1010044002040E0B1010048002041F6
2656:10A5F000E0B10100A8002D1032B001005F9800F01A
2657:10A6000024300100C58CA244816C0000C38C22411F
2658:10A61000197C0000BC9500403B300100ED8CA20885
2659:10A620003C300000C58C004081B20000BF94004067
2660:10A6300081320100ED8CA2083C3000005000201C4B
2661:10A64000E0B1010054002013E0B101004E002001F0
2662:10A65000E4B101004000200AE0B101008697005FEC
2663:10A6600081300100E08B004081B2000037000040E3
2664:10A6700047990100959500F394300100A08C224A7F
2665:10A6800080320000D18C004081B2000037000040D1
2666:10A6900047990100959500F3943001000400204390
2667:10A6A000976C000058003E4397E001000000001B3B
2668:10A6B000F0B101001F006000008C0100E08B8511EB
2669:10A6C000803200000480000342C90100B0002FF076
2670:10A6D0008CB00100000060F08CC001007C000040E4
2671:10A6E000439901000400A3F08C6C00008697005F82
2672:10A6F00081300100E08B004081B20000040022495B
2673:10A70000197C0000DF8C004919800000E48C224194
2674:10A71000197C0000BC9500403B300100E88CA20889
2675:10A720003C3000008697005F81300100E08B0040E4
2676:10A7300081B20000BF94004081320100E88CA20881
2677:10A740003C3000008697005F81300100E08B0040C4
2678:10A7500081B2000050002D1032B0010054002DF0E5
2679:10A7600038B001004E002DF026B0010040002DF25F
2680:10A7700002B00100000000F014B001003000001031
2681:10A780008CC801000080004644C9010068012D44C6
2682:10A7900061B10100100068F280C8010000000008EB
2683:10A7A000F0B1010058010005E0C901000000000BF4
2684:10A7B00037B001000000004036D001005C012E409F
2685:10A7C00010C001000000000680C00100000000521F
2686:10A7D00081D0010018970040E431010020000046BC
2687:10A7E00062DD0100F98CA840233000000E95004086
2688:10A7F000813201001695004081320100078D8241AF
2689:10A80000234000002080001042C90100048D224036
2690:10A81000E36D00000000004661B10100400000103F
2691:10A8200062DD0100018DA840813200002383008891
2692:10A830001CB000000000000548B10100000000103D
2693:10A8400032B001000000004123B001000080001977
2694:10A8500044C901000F8D2241197C00000B8DA3011A
2695:10A860000C6C00000C8D000604B00000000000011C
2696:10A8700004B001000E8D2002366C00000000001BA9
2697:10A8800004B00100128D0002E0B10000118DA3019F
2698:10A890000C6C0000128D000604B0000000000001E6
2699:10A8A00004B001000000680216940100FFFF000BD5
2700:10A8B00016D80100000068083E9601000000001C48
2701:10A8C000F0B101000000004661B101002000001954
2702:10A8D00062DD0100178DA813E0310000548D2202C3
2703:10A8E0001450000044002D020CD001003F8DA20244
2704:10A8F00002500000258D225C1F7C00002080000398
2705:10A9000042C90100248D2240E36D00000000004791
2706:10A9100061B101004000001062DD0100208DA840FF
2707:10A9200081320000238300881CB000000000000575
2708:10A9300048B1010044002D5C1F80010048002DF04B
2709:10A9400038B001004C002DF026B0010038002FF285
2710:10A9500002B00100418D2201146C00000400A440EB
2711:10A9600081320000338D22461F7C0000000000462B
2712:10A970001F80010020002D0348B10100328D2240CC
2713:10A98000E36D00000000004461B1010040000010D0
2714:10A9900062DD01002F8DA8408132000023830088F2
2715:10A9A0001CB0000038002F0548B10100000000F87D
2716:10A9B00094B0010038002DF096B001000000004C6A
2717:10A9C000E1C101002000000348C901000000224A43
2718:10A9D000F1B1010044000005F0C901000000004A87
2719:10A9E000F0B101000000004BE0B1010000000047A1
2720:10A9F00061B10100A00000A462DD01003C8DA85CF3
2721:10AA00001F100000418D000548B100000000000249
2722:10AA100038C0010004002440813200004F8D22061E
2723:10AA2000803200000000005033C001004D8DA202B2
2724:10AA3000366C000004002241197C000004008F0DD8
2725:10AA400042310000040022F0803200000400225C49
2726:10AA5000E17D00000400A2F06A060000100000F88A
2727:10AA600010C801000000005C11800100F0070040E8
2728:10AA700037980100FD8C00A11AB000000000000210
2729:10AA800010C00100FD8C000236D000005000201CD8
2730:10AA9000E0B1010054002013E0B101004E0020019C
2731:10AAA000E4B101004000200AE0B101005B8D005FCD
2732:10AAB00001B000000400A202026C00000400A20227
2733:10AAC0000C6C000037002D4601B00100040000F3BB
2734:10AAD00080F401005A8DA043816C000000000055F5
2735:10AAE00001B0010040002040E1B1010000800019E8
2736:10AAF00042C90100618D2240E36D00000000004664
2737:10AB000061B101004000001962DD01005E8DA840C6
2738:10AB100081320000238300881CB0000013950040A0
2739:10AB2000813201003080001042C90100688D22404E
2740:10AB3000E36D00000000004461B10100400000101E
2741:10AB400062DD0100658DA84081320000238300880A
2742:10AB50001CB0000060012F0548B101000000000B8F
2743:10AB6000E4B101000000005017F001006D8D90F27B
2744:10AB7000164000000000004117C0010000006620E0
2745:10AB800017A40100320000A62AC00100000000F254
2746:10AB90002A940100708D45486131000000D0001EEC
2747:10ABA00062DD0100758D284005300000718D22485E
2748:10ABB000777D0000788D004081B200000000001514
2749:10ABC00062B10100838D284081320000758D004004
2750:10ABD00081B2000000001D0092B00100808D224172
2751:10ABE000197C0000040022403B6C00000400A348D4
2752:10ABF0003B6C00000080000342C90100C99400F8CA
2753:10AC0000003001007D8DA2413B500000848D004941
2754:10AC100000B00000FF07001E008C0100C994004036
2755:10AC200081320100848D004900B0000000001D4702
2756:10AC300019800100878D225F016C00008E98004012
2757:10AC400081320100AA88000080B000008E8D225C55
2758:10AC50001F7C00002080000342C901008E8D22402D
2759:10AC6000E36D00000000004761B1010040000010EA
2760:10AC700062DD01008B8DA8408132000023830088B3
2761:10AC80001CB000008E8D400548310000FFFF00071A
2762:10AC900094890100948D85CA943000008E98185CC8
2763:10ACA0001F0001000E00000F1E8C0100B78700403E
2764:10ACB00081B200008697180080300100E08B0047C9
2765:10ACC000198000000000004019800100E08B22473D
2766:10ACD000197C0000BF940040813201009B8DA208C6
2767:10ACE00080320000E08B004081B2000018970040E5
2768:10ACF0000D3001009C01004045990100FFFF000B51
2769:10AD0000988801008B002D5017F00100A18D904C08
2770:10AD1000164000000000004117C00100A38D22432F
2771:10AD2000E77D00000000004445C1010000006620EE
2772:10AD300017A4010068010040439901005C012EF254
2773:10AD400080B00100020062407ECD0100000000578B
2774:10AD500081C0010000002E1048B101000300004036
2775:10AD6000F08D010000000008F0B10100580100055D
2776:10AD7000E0C901000000004461B1010000000010C2
2777:10AD800062B10100AD8DA8408132000023830088AC
2778:10AD90001CB000000000000548B10100B18D45481D
2779:10ADA000613100000050000862DD0100B78D2840CD
2780:10ADB00005300000B28D2248777D0000C9941D083F
2781:10ADC00000300100E08B004081B20000E08B1D47A5
2782:10ADD000198000000400A205486D00003500004005
2783:10ADE00047990100010063F384C80100BD8DA043B1
2784:10ADF000856C00000000634085B00100A8000040A1
2785:10AE00004399010037002FF024B00100040022F321
2786:10AE10009E060000010063F382CC0100CB8DA241AD
2787:10AE20009E060000E08B224483700000A8000040D2
2788:10AE3000439901000400A2F0246C00003600004099
2789:10AE40004399010058003D43E7E10100E08B1FF00A
2790:10AE5000246C00008E98004881300100AA882341AC
2791:10AE6000836C0000AA88004781B0000034000040D5
2792:10AE70004399010004002242E66D000058003D4362
2793:10AE800085E00100000000F836B00100000000F08D
2794:10AE900000B0010004002200803200000400A20083
2795:10AEA000BE06000028000040839801005497004728
2796:10AEB00061310100238300881CB0000000002D03D5
2797:10AEC00048B1010008002DF094B00100000000F826
2798:10AED0008EB0010090002DF014B0010000000005BC
2799:10AEE00048B10100A88CA2408F7C0000DE8D224773
2800:10AEF0008F7C00000400A248197C0000A88C004848
2801:10AF000019900000040022468F7C0000608E0040F3
2802:10AF100081B200000400A205486D000036002D5DDE
2803:10AF200005B4010037002DF380B00100000000F3EC
2804:10AF30008EB00100F00000477E8901000400264029
2805:10AF4000813200005C003D4381E00100A8002DF04B
2806:10AF500094B001000400224A80320000000000F09A
2807:10AF600024B001002000001086DC010040800003B6
2808:10AF700044C901009293004AF03101000400A25C30
2809:10AF80001F7C000036002F5C1F900100F28DA25044
2810:10AF90008F50000034002040E1B10100E08B004000
2811:10AFA00081B20000F00000477E89010004002640C5
2812:10AFB000813200000000634181C00100F78DA04391
2813:10AFC000816C00000000634081B001003700204721
2814:10AFD000E6B10100E08B2247803200000400004708
2815:10AFE0000CF401000000004F8F8401000C8E2247FA
2816:10AFF0000C6C000058003D4381E001000C8E1FF0F6
2817:10B00000246C00000000005C1F8001000080001024
2818:10B0100042C90100058E2240E36D0000000000459A
2819:10B0200061B101004000001062DD0100028EA84005
2820:10B0300081320000238300881CB00000058E42404E
2821:10B0400005300000000000449393010000001A5DE9
2822:10B05000699301000A8E23410D6C0000E08D00050C
2823:10B0600048B100008E98000548310100AA880048C8
2824:10B0700081B00000E08B22408F6C00008697005F5B
2825:10B0800081300100E08B004081B200004002000CE2
2826:10B090007E8901000400A64081320000A200004029
2827:10B0A00043990100000000F384B00100A6002D497F
2828:10B0B00019900100020000F280F40100B8002D4058
2829:10B0C00081B20100000000F280C0010000000040D9
2830:10B0D00082F8010019000040819801001D8EA040F7
2831:10B0E000826C00002C010040819801001D8EA3405D
2832:10B0F000826C00000000004180B001001F8E204CD7
2833:10B10000856C00000000004185C0010086002040E1
2834:10B11000E4B10100A2002042E6B10100E08B004052
2835:10B1200081B200000F97005081300100E08B004099
2836:10B1300081B200000480000342C90100040022F033
2837:10B1400080300000000000408DB001007F9800407A
2838:10B15000873001000400A25C1F7C0000B0002F5C5F
2839:10B160001F900100000060F080C001007C000040E2
2840:10B17000439901000400A3F0806C00008697005FF3
2841:10B1800081300100E08B004081B2000004000040EB
2842:10B1900081B20000E08B2246197C0000A000004034
2843:10B1A00047990100010062F296CC0100E08BA640B5
2844:10B1B000813200008697004A813001005B9700468B
2845:10B1C00095300100E08B004081B20000E08B224905
2846:10B1D000197C00008600004047990100010062F2DE
2847:10B1E00080CC0100E08BA640813200008697004AA7
2848:10B1F000813001005B97004795300100E08B0040F3
2849:10B2000081B2000031940040813201000400A25C50
2850:10B210001F7C0000E08B005C1F9000000400A24631
2851:10B22000197C0000E08B004081B200000400A249BC
2852:10B23000197C0000E08B004081B20000BA000040A1
2853:10B2400047990100010062F280C80100498E9040D8
2854:10B2500080320000FFFF624081980100A40000409E
2855:10B2600047990100E08B2240E56D0000E08B004132
2856:10B27000E5C100000F97004D81300100E08B0040D8
2857:10B2800081B200005C00004047990100040022F0F8
2858:10B290009630000000000040E1B101000080000392
2859:10B2A00044C901000000004BE0B101000000004073
2860:10B2B0008DB001007F980040873001008B00004076
2861:10B2C00047990100598E80F396300000000000403D
2862:10B2D000E781010000000047199001000400A25C12
2863:10B2E0001F7C0000E08B005C1F90000037000040D6
2864:10B2F000439901000400A2F38032000034000040B2
2865:10B300004599010001000040F5990100001100403D
2866:10B31000E5990100BF94004081320100718EA208BE
2867:10B32000803200003700004047990100000000F320
2868:10B3300082B001000000635183D00100340000405E
2869:10B3400047990100010063F384CC0100698E9F429C
2870:10B35000803200000000634285B00100000000451B
2871:10B3600003F001000000000100C001006B8E375C9B
2872:10B37000613100000000001B62B101006C8EA84B1F
2873:10B38000191000000000000062B101006E8EA8409C
2874:10B3900081320000F087174081B200000080000376
2875:10B3A00042C9010090002DF094B00100AC002DF0D6
2876:10B3B00030B0010035002DF028B0010034002DF32D
2877:10B3C00084B00100040022F3846C000058003E4366
2878:10B3D00085E0010001000018F0C901000000004AEA
2879:10B3E000E0B1010038002000E0B101003C00201B6A
2880:10B3F000E0B1010040002040E1B101000000004048
2881:10B400002BB001006A9700400D30010000000018C9
2882:10B4100016C00100828EA0141644000000000041F6
2883:10B4200017C001000E0000A244C90100000000186E
2884:10B43000F8B10100B0002D14F8B101001050004027
2885:10B44000879801008B8E224A197C0000003000434F
2886:10B4500086C801000030000B16C801008B8EA44086
2887:10B46000813200000000004117C0010001006E435E
2888:10B4700086980100AE970030813001008F8EA04188
2889:10B48000174000000000004117C00100968E224ABC
2890:10B49000197C0000080000A244C90100CC002DABBB
2891:10B4A000F9B10100000000AB17C00100958EA0F0BB
2892:10B4B000164400000000004117C00100000064F0C5
2893:10B4C00082B00100900000404599010000006041F9
2894:10B4D00031C00100BC000040439901009C8E060C65
2895:10B4E00080320000A00020F2E4B10100040009460F
2896:10B4F000191000009C01004045990100FFFF000B5E
2897:10B50000988801008B002D5017F00100A18E904CFF
2898:10B51000164000000000004117C00100A38E224326
2899:10B52000E77D00000000004445C1010000006620E6
2900:10B5300017A4010068010040439901005C012EF24C
2901:10B5400080B00100020062407ECD01000000005783
2902:10B5500081C0010000002E1048B10100030000402E
2903:10B56000F08D010000000008F0B101005801000555
2904:10B57000E0C901000000004461B1010000000010BA
2905:10B5800062B10100AD8EA8408132000023830088A3
2906:10B590001CB000000000000548B10100B18E454814
2907:10B5A000613100000050000862DD0100B28EA84049
2908:10B5B0000530000035001D4047990100010063F38C
2909:10B5C00084C80100B88EA043856C00000000634071
2910:10B5D00085B001003700004047990100040022F3C4
2911:10B5E0009E060000010063F382CC01000400A2412A
2912:10B5F0009E0600008B000040479901000400A24510
2913:10B60000E77D000000000045E79101008697005F9C
2914:10B6100081300100E08B004081B200003700004023
2915:10B6200047990100959500F394300100608E224AFD
2916:10B6300080320000D18C004081B200003700004011
2917:10B6400047990100959500F3943001009A8C224AA5
2918:10B6500080320000D18C004081B2000036000040F2
2919:10B6600043990100000000FB12B001000F0000F33D
2920:10B6700090880100040000F30CF40100040026404F
2921:10B6800081320000CB8C2206906C00000400AA409E
2922:10B69000813200005C003D4313E00100A8002DF062
2923:10B6A00094B0010004002240956C000037002FF098
2924:10B6B00024B0010036002A50E7D1010000006341A8
2925:10B6C00013C00100D88EA043136C0000000000409E
2926:10B6D000E7B101008F9300108630010023830088BA
2927:10B6E0001CB00000DA8E4205483100000000004422
2928:10B6F00093930100CB8C1A5D699300000400A205AE
2929:10B70000486D000036002D1086B001005C003D43FE
2930:10B71000E7E10100A8002DF094B001000400224AE6
2931:10B720008032000035002FF024B0010001006BFBD7
2932:10B7300084C80100E78EA043856C000035002040DE
2933:10B74000E7B101000000004081B20100010063F395
2934:10B7500012C80100EA8EA043136C000000000040F4
2935:10B76000E7B101004080000344C901009293004A00
2936:10B77000F0310100238300881CB00000ED8E4205EB
2937:10B7800048310000000000449393010000001A5D5E
2938:10B79000699301003700004047990100040022F33B
2939:10B7A0009E060000110063F382CC010004001F41DB
2940:10B7B00080320000C28D22419E060000350000400C
2941:10B7C0004399010058003D43E7E10100000000F803
2942:10B7D00036B00100D08D00F000B000005E012D05F4
2943:10B7E00048B10100FA8E65F21230000000993F4224
2944:10B7F00013F00100FF8E2247E77D00002783758844
2945:10B800001CB00000F98E004081B20000000000472B
2946:10B81000E791010000007542199001007500004099
2947:10B8200061990100018FA8B10C300000A9960010A9
2948:10B8300094300100238300881CB000005E012E05B7
2949:10B8400048B10100C0A83D460DE0010000000040E5
2950:10B8500097B001000B8F2240E16D0000040002410F
2951:10B8600097400000088F005043C10000178F224B03
2952:10B87000803200000000624B1294010009000007B2
2953:10B8800096E40100000000A797C0010030000010FE
2954:10B8900094C801000080004A449901000000004261
2955:10B8A000F1B101005E01004BF0C901005E0100052D
2956:10B8B000E0C901000000004461B101002000004A1D
2957:10B8C00062DD0100158FA840813200000080001069
2958:10B8D00044C9010000000050F1B10100040000095A
2959:10B8E00096E40100000068A897C00100D40000059C
2960:10B8F000E0C901000000004461B101000000001037
2961:10B9000062B101001D8FA8408132000023830088AE
2962:10B910001CB0000000993F4213F00100218F6540E8
2963:10B92000813200003F0000F39688010000000040D3
2964:10B93000E7B101000000755561B10100000000068B
2965:10B9400062B10100258FA840813200002A8F224B6E
2966:10B95000803200000000004B62B10100288FA84037
2967:10B96000813200000000009713B001000000009633
2968:10B9700097B00100308F2009966C0000308F1F09AE
2969:10B9800096240000278300881CB000002B8F004005
2970:10B9900081B200000F97005781300100C98B00056C
2971:10B9A00048B1000004002242197C00002E00004033
2972:10B9B00043990100378F22F3803200000F97004235
2973:10B9C00081300100F087004081B20000869700526C
2974:10B9D00081300100C98B004219800000040022421E
2975:10B9E000197C00000F97003A8130010086970052C1
2976:10B9F00081300100C98B004081B20000000000408E
2977:10BA000005B001000596004095300100C98B224029
2978:10BA1000956C0000240400408998010009990000F9
2979:10BA20008A300100458FA2401F7C0000C99400406D
2980:10BA300081320100F087004081B2000004800003E1
2981:10BA400042C90100000000F202B00100A5950052B9
2982:10BA500095300100AC95004B02B00000F08700402B
2983:10BA600081B200002B98004095300100518FA20850
2984:10BA700080320000518FA21680320000F0872242EF
2985:10BA8000197C00000000004B199001000F97003A4C
2986:10BA900081300100F087004081B20000002300A641
2987:10BAA00016B00100548F831E803200000008000B86
2988:10BAB00016DC0100000000002AC001005E970008AB
2989:10BAC00080300100588F005E179000007F97004380
2990:10BAD000613101009E9300408D30010066970007A0
2991:10BAE000161401000080001042C90100608F22403E
2992:10BAF000E36D00000000004361B101004000001050
2993:10BB000062DD01005D8FA840813200002383008840
2994:10BB10001CB000000097005E05100100C9940040B1
2995:10BB200081320100648F2209803000008697004036
2996:10BB300013300100D08B000548B100003C96004056
2997:10BB400081320100C98B004081B200000400A24A8A
2998:10BB50001F7C00000000004A1F9001006C8F2243F0
2999:10BB60003D7C0000000000441990010000000043EB
3000:10BB70003D8001006D8F0042199000000400A24F2B
3001:10BB80002B7C00000400A2451F7C000014002D4502
3002:10BB90001F9001000400A2F0146C00000400A0013A
3003:10BBA000146C0000DF8F831E80320000DF8F0044A2
3004:10BBB000199000002F000040439901000400A247A3
3005:10BBC000E77D0000B494004081320100878FA20815
3006:10BBD00080320000878FA21680320000838FA2423D
3007:10BBE000197C00000082000204DC0100A0980040E3
3008:10BBF000479901003005004189300100808FA24142
3009:10BC0000197C0000C994004081320100F087004097
3010:10BC100081B20000A595001594300100AC95004B51
3011:10BC200002B00000F087004081B200003C96004066
3012:10BC3000813201000000004B199001000F97003A7B
3013:10BC400081300100F087004081B200008A8F2242DB
3014:10BC5000197C00003C960040813201008B8F00402F
3015:10BC600081B200000596004081320100C38F22415D
3016:10BC7000197C0000C000001598C80100C38FA00BFC
3017:10BC8000996C0000040022441F7C0000FF070000A4
3018:10BC90007E8901000400A6408132000030000010BF
3019:10BCA00080C801000080004044990100000000505D
3020:10BCB000F1B1010000000003F0B1010000000042FA
3021:10BCC00061B101000000004062B10100968FA80040
3022:10BCD000E0310000238300881CB000000000000554
3023:10BCE00048B10100C000001598C8010030002E0BBB
3024:10BCF00099D0010000006A5099C001000400200B97
3025:10BD0000996C0000C000620180CC01000C8000032F
3026:10BD100042C901002D002DF022B001000000004CAE
3027:10BD200080C001000000005C23800100D4003F417E
3028:10BD3000E7E1010004002242197C00000B0000F240
3029:10BD400098E401000000005A998001000400A2005C
3030:10BD5000986C0000200400408998010009990011A6
3031:10BD60008A3001000B000011E4F501002F0020478C
3032:10BD7000E7B50100AE8F230B816C00000000004F7F
3033:10BD8000E59101000000000880B00100C100000141
3034:10BD900080CE01000400A440813200000000000BAE
3035:10BDA00003B001000000001502D001005E97000002
3036:10BDB0002A4001000000004361B101004000001072
3037:10BDC00062DD0100B58FA840813200002383008826
3038:10BDD0001CB00000C994000548310100C0000001FA
3039:10BDE00080CE0100C18F261100300000100000003D
3040:10BDF0002AC801000000000880B001000000000116
3041:10BE000080C00100C00000409998010000000001BE
3042:10BE100098D001005E97004C02300100C000004045
3043:10BE200003980100CB8F004081B2000030002F0842
3044:10BE300080B00100C0000015F4C90100C00000017D
3045:10BE4000E4CD0100C100000180CE01000400A44047
3046:10BE5000813200000400200BE56D0000C0000040AE
3047:10BE6000039801005E9700002A400100D08F224411
3048:10BE70001F7C0000AC002F4013B001000000000147
3049:10BE8000E0C10100B000004047990100D18F0001DE
3050:10BE9000E0D100009E9300408D300100806300A639
3051:10BEA00016B001006697000716140100008000100C
3052:10BEB00042C90100D98F2240E36D00000000004319
3053:10BEC00061B101004000001062DD0100D68FA84082
3054:10BED00081320000238300881CB000000097005EC0
3055:10BEE00005100100DC8F2209803000008697004099
3056:10BEF00081320100C98B000548B100000400A24A4C
3057:10BF00001F7C0000DF8F004A1F9000000400A24F3A
3058:10BF10002B7C00000400A25C1F7C00000400A244F3
3059:10BF20001F7C00000000000010B0010024002D154F
3060:10BF300010C0010028002DF016B0010022002DF0E5
3061:10BF400026B0010014002FF20CB001000000000127
3062:10BF5000E0D101000000001032B001000000000B31
3063:10BF60001BB0010004001F151A5000000000004023
3064:10BF700023B00100000000012AB00100BE9600407D
3065:10BF800035B000002F002040E7B101002990A24504
3066:10BF90001F7C00000400A205486D00002400200B57
3067:10BFA000E0B1010028002013E0B1010022002006CA
3068:10BFB000E4B10100FD8F225C1F7C00000000005CEA
3069:10BFC0001F8001003080001042C90100FD8F224017
3070:10BFD000E36D00000000004761B101004000001067
3071:10BFE00062DD0100F98FA8408132000023830088C0
3072:10BFF0001CB000000000000548B101001400004022
3073:10C00000439901000400A2F0146C000000800019A4
3074:10C0100042C9010022902240E36D000010902242AC
3075:10C02000197C000073960040813201005A94004050
3076:10C03000813201001D90224B80320000000000433D
3077:10C0400061B101004000001062DD01000690A840CF
3078:10C0500081320000238300881CB000000C90224134
3079:10C06000197C0000E7940040113001000D9000059C
3080:10C0700048B10000C9940040813201000F902209AC
3081:10C080008030000086970040813201002F830040FD
3082:10C0900005B0000073960040813201004F940040CB
3083:10C0A000813201000000004361B101004000001036
3084:10C0B00062DD01001390A8408132000023830088D4
3085:10C0C0001CB0000019902241197C0000E794004048
3086:10C0D000113001001A90000548B10000C9940040D9
3087:10C0E000813201001C9022098030000086970040B8
3088:10C0F000813201002F83004005B0000000000043A2
3089:10C1000061B101004000001062DD01001E90A840F6
3090:10C1100081320000238300881CB00000000000056D
3091:10C1200048B1010025902241197C0000E7940040AD
3092:10C13000113001002690000548B10000C99400406C
3093:10C14000813201002890220980300000869700404B
3094:10C1500013300100D08B004005B0000014000040F7
3095:10C16000439901000400A2F0146C00000080001943
3096:10C1700042C9010032902240E36D000000000043FC
3097:10C1800061B101004000001062DD01002E90A84066
3098:10C1900081320000238300881CB0000000000005ED
3099:10C1A00048B101000000004005B001003690224176
3100:10C1B000197C0000E7940040113001003790000521
3101:10C1C00048B10000C99400408132010008002D0AE6
3102:10C1D00084B00100000000F082B00100040026409D
3103:10C1E0008132000014002040E1B101003D90031EA7
3104:10C1F000803200003E90004187B0000021000040E6
3105:10C20000879801002C960040813201000400A25C56
3106:10C210001F7C00000000005C1F9001004390220979
3107:10C220008030000086970040133001004690224481
3108:10C23000197C00008697004F813001000000004407
3109:10C2400019800100C98BA24A1F7C0000D08B0040DE
3110:10C2500081B200000400A205486D0000BA00204031
3111:10C26000E5B101004E909C17803200000400224A84
3112:10C27000197C0000CC000040439901003698004032
3113:10C2800081320100D497004013300100C00000400B
3114:10C2900043990100C4002DF082B001000B9800F01A
3115:10C2A00084300100C994004081320100D08B220902
3116:10C2B000803000008697004013300100D08B004092
3117:10C2C00081B200002E000040439901005A902240A4
3118:10C2D000E76D000032000040439901006590A240E4
3119:10C2E000E56D0000F2950040813201002400200B32
3120:10C2F000E0B1010028002013E0B101002200200677
3121:10C30000E4B1010004002242197C00001400004046
3122:10C31000439901000400A2F0803200001400200ABA
3123:10C32000E0B10100D08B22098030000086970040E8
3124:10C3300013300100D08B004081B20000F295004024
3125:10C34000813201009D9500408132010073902241AD
3126:10C35000197C00000000000B99B0010004001F15BB
3127:10C360009850000073902001986C0000700000034A
3128:10C3700048C9010000002E461F9001000000005037
3129:10C38000F1B1010000000003F0B101000000004223
3130:10C3900061B10100A00000A462DD01007090A8005E
3131:10C3A000E03100000000000548B10100AC002F00A2
3132:10C3B00010B0010000000001E0C1010014002F15C1
3133:10C3C00010C001000400A2F0803200000000000A4A
3134:10C3D00080B001000000600180D001000000004733
3135:10C3E00019900100E98F2209803200008697000928
3136:10C3F00080300100E98F004013B00000008000038E
3137:10C4000042C90100000000F082B0010013000040AA
3138:10C41000879801000000004C43C101002C9600F0F9
3139:10C42000843001000400A25C1F7C0000C98B005C0A
3140:10C430001F9000002C002040E7B101002D0020409B
3141:10C44000E7B101002E000040439901000400A2F36F
3142:10C450008032000004002242197C0000C98B004297
3143:10C46000198000001C960040813201005B97004853
3144:10C47000953001000000004561B10100400000104E
3145:10C4800062DD01008D90A8401330000023830088F6
3146:10C490001CB000009390000548B10000929000404D
3147:10C4A00013B000000000000012B0010008000040BE
3148:10C4B0004399010014002DF082B0010004002640D1
3149:10C4C00081320000040022F084300000130000409C
3150:10C4D000879801002C960040813201000400A25C84
3151:10C4E0001F7C00000000005C1F900100B09000095C
3152:10C4F00000B000000400A205486D0000C98B87420F
3153:10C50000191000008B002F4719800100C98B0040D3
3154:10C51000E79100000400A2401F7C00002F000040B3
3155:10C5200047990100AE902247E77D000004002241B8
3156:10C53000197C00001D940040E7310100AE902200FC
3157:10C5400080320000A990A2401F7C0000C9940040E6
3158:10C5500081320100AE90004081B200003000004006
3159:10C560004399010032002DF294B00100A59500F22C
3160:10C5700002300100AC95004B02B000000000000545
3161:10C5800048B10100AF90004001B000000000004041
3162:10C5900005B00100B590220080320000B490A242A4
3163:10C5A000197C00000596004081320100B5900040E2
3164:10C5B00081B200003C960040813201005491225C1F
3165:10C5C0001F7C00000000005C1F8001000080001044
3166:10C5D00042C90100BD902240E36D0000000000450B
3167:10C5E00061B101004000001062DD0100BA90A84076
3168:10C5F00081320000238300881CB0000054910005A4
3169:10C6000048B10000B494004081320100C490A208F7
3170:10C6100080320000C490A216803200000F97004DB7
3171:10C62000813001000082000204DC0100F08700403C
3172:10C6300081B200007400004043990100000000F83E
3173:10C6400082B00100000000F084B001000000004151
3174:10C6500096B00100D5902242961400000080001090
3175:10C6600044C9010064006840979801006400004BD1
3176:10C6700080CE01000400A64081320000000000418D
3177:10C68000F0B1010000000042F0B1010070000005AF
3178:10C69000E0C901000000004561B101002000001068
3179:10C6A00062DD0100D190A840813200000400A25C4C
3180:10C6B0001F7C00000000005C1F900100000000458E
3181:10C6C00061B101004000001062DD0100D690A85C5D
3182:10C6D0001F000000238300881CB000005E012D05B0
3183:10C6E00048B10100DA9065F21230000000993F4233
3184:10C6F00013F00100DF902247E77D00002783758853
3185:10C700001CB00000D990004081B20000000000473A
3186:10C71000E79101000400750996E401000080001013
3187:10C7200044C9010000000044F1B10100000068A804
3188:10C7300097C0010000000003E0B101000080000389
3189:10C74000449901000000004461B1010000000010A4
3190:10C7500062B10100E790A840E13100002383008826
3191:10C760001CB0000000993F4213F00100EB906505FA
3192:10C77000483100003F0000F39688010000000040AF
3193:10C78000E7B101000000754081B20100F390224B37
3194:10C79000803200000000005561B101000000004B34
3195:10C7A00062B10100F190A840813200000000000752
3196:10C7B00016B001000062000B16DC01002F000040E3
3197:10C7C000439901000400A247E77D00001D9400404A
3198:10C7D0008132010010912200803200004E96005FED
3199:10C7E00001100100F7902240956C000004002241E6
3200:10C7F000197C0000040022401F7C00000080001013
3201:10C8000044C9010000000050F1B101000000000324
3202:10C81000F0B101000000004261B101000000001011
3203:10C8200062B101000191A800E0310000238300887B
3204:10C830001CB000000000000548B1010004800003A6
3205:10C8400042C90100000000F202B0010004002031E2
3206:10C85000036C0000A595005295300100C99400407A
3207:10C8600081320100F7902241975000000C800003B4
3208:10C8700042C90100000000F000B001000000005CAF
3209:10C8800001800100AC95004B02B00000F79000055C
3210:10C8900048B1000066970040033001001780000394
3211:10C8A00044C9010000F0000C968801000000634CB0
3212:10C8B00097F001000400204D976C00000400224016
3213:10C8C000976C00001080000344C90100000000AB19
3214:10C8D000E1B101000097005E0510010003000007B0
3215:10C8E0001AF40100070000071688010000B5000DCA
3216:10C8F00046C901001C913040813200000400220B27
3217:10C90000E67D00000000000BE681010000B7000D8D
3218:10C9100046C901000400220BE67D00000000000B68
3219:10C92000E68101001000100F94F401009304005FF1
3220:10C930009504010076950040813201002A91225031
3221:10C94000FD7F000026914640813200002991A240DF
3222:10C95000316F000004001E4081B2000000001E4143
3223:10C9600031D3010000002E0548B101000000004055
3224:10C97000E1B10100000000400FB00100AB940041A4
3225:10C9800081300100F087004081B20000B494004083
3226:10C99000813201003D91A208803200003D91A21633
3227:10C9A000803200000082000204DC0100000000452B
3228:10C9B00003F001000000000100C001003591375C68
3229:10C9C000613100000000001B62B101003A91284073
3230:10C9D000813200000400A25C777D000036910040A7
3231:10C9E00081B200000000000062B101003A91A8404D
3232:10C9F00081320000F087174081B2000074002240AD
3233:10CA0000F1B1010000000040E1B101005B97004A74
3234:10CA1000953001000400A25C1F7C00001C96005CA5
3235:10CA20001F100100C490004081B200000400A24029
3236:10CA30001F7C00002F0000404799010051912247C0
3237:10CA4000E77D000004002241197C00001D94004095
3238:10CA5000E731010051912200803200004C91A24048
3239:10CA60001F7C0000C99400408132010051910040B8
3240:10CA700081B20000300000404399010032002DF2E5
3241:10CA800094B00100A59500F202300100AC95004B76
3242:10CA900002B000000000000548B101005B970048AB
3243:10CAA000953001000400A25C1F7C00001C96005C15
3244:10CAB0001F1001000400A205486D00005891874234
3245:10CAC000191000008B002F47198001000000004062
3246:10CAD000E79101008697004281300100C98B004038
3247:10CAE00081B200001C960040813201000400A25C6B
3248:10CAF0001F7C0000C98B005C1F900000B00000404C
3249:10CB0000439901000400A2F080320000BA002040E6
3250:10CB1000E5B10100D497004081320100C00000401F
3251:10CB200043990100C4002DF082B001000B9800F081
3252:10CB300084300100C994004081320100869700458D
3253:10CB400081300100C98B2242197C00000F97003A06
3254:10CB500081300100C98B004081B200000400004018
3255:10CB600081B20000B4940040813201007091A208AB
3256:10CB7000803200007091A216803200000F970047AB
3257:10CB8000803001000082000204DC0100F0870040D8
3258:10CB900081B200001080000344C9010000E100A63A
3259:10CBA00084B0010000000040F1B10100000000402D
3260:10CBB000F1B1010000006007849401000097005E5D
3261:10CBC00005100100C98B004081B200008A000040BE
3262:10CBD00047990100C9940041E7410100D08B004012
3263:10CBE00081B200000400A205486D00000400A241CB
3264:10CBF000197C00000400A2481F7C0000F295004050
3265:10CC0000813201000400A30A0C6C00009D950040D5
3266:10CC100081320100000000012CB00100000000156D
3267:10CC200010B001000000000010C0010004001F0A45
3268:10CC30002C50000014000040439901000400A2F0B1
3269:10CC4000803200000000001032B00100A197000601
3270:10CC5000043001008E91A2481F7C00008C91844812
3271:10CC60001F100000AC000040479901008E91000A9F
3272:10CC7000E0C100000000000A02B001009E93000124
3273:10CC80008C3001000000004361B101004000001041
3274:10CC900062DD01008F91A84081320000238300886B
3275:10CCA0001CB000000000000548B1010000000002B7
3276:10CCB00010C001009C91220214500000799600459A
3277:10CCC0001F0001008691225C1F7C000000000047CD
3278:10CCD00061B101004000001062DD01009891A85C84
3279:10CCE0001F000000238300881CB00000869100050F
3280:10CCF00048B100000000000B1BB0010008002D40EF
3281:10CD000085B00100000000F082B00100000000408A
3282:10CD100005B001002C96004187300100000000455D
3283:10CD200061B101004000001062DD0100A291A84045
3284:10CD300081320000238300881CB000000000000541
3285:10CD400048B10100A8912209803000008697004078
3286:10CD500013300100AC912244197C00008697004FEB
3287:10CD600081300100AC91A2471F7C0000000000440C
3288:10CD700019800100FF070008008C01000400264014
3289:10CD800081320000BB91224A1F7C0000B391A216A1
3290:10CD900002300000C9940040813201002F00204081
3291:10CDA000E7B10100C98B004081B200002D002D08C1
3292:10CDB0002AB00100B7912242197C00003C96004045
3293:10CDC00081320100B891004081B200000596004018
3294:10CDD0008132010030002E002AD0010032002A15D5
3295:10CDE000E4B10100C98B0016E4B10000D191221614
3296:10CDF000023000000400A2471F7C00000000000871
3297:10CE00002AB001002B98004095300100C191A2404A
3298:10CE1000116C0000D29122402D6C00000400A2058C
3299:10CE2000486D0000040022441F7C0000AC0000405C
3300:10CE300047990100B0002B01E0C10100002B00A6C2
3301:10CE400016B0010000000001E0D101005E9700086B
3302:10CE500080300100CA91005E179000007F97004368
3303:10CE6000613101000000004361B101004000001089
3304:10CE700062DD0100CB91A84081320000238300884D
3305:10CE80001CB000000000000548B1010066970007D3
3306:10CE9000161401000097005E05100100C9940040BF
3307:10CEA000813201002F002040E7B10100D08B00400B
3308:10CEB00081B200000000000B1BB0010004001F1530
3309:10CEC0001A500000E09120161A6C00000400224065
3310:10CED0001F7C00007000000348C9010000002250C0
3311:10CEE000F1B1010000000003F0B1010000000000FA
3312:10CEF000E0B101000000004261B10100A00000A407
3313:10CF000062DD0100DD91A8461F1000000000000551
3314:10CF100048B101000000000010B001000000001541
3315:10CF200010C001000000000A2AB001000000000A41
3316:10CF30002CD0010004001F168032000014000040B5
3317:10CF4000439901000400A2F080320000AC002F40A1
3318:10CF500023B00100EA9184451F100000EB91000A04
3319:10CF6000E0C100000000000A02B00100BE960040CF
3320:10CF700035B000000400A25C1F7C00000080001996
3321:10CF800042C90100F4912240E36D0000000000431B
3322:10CF900061B101004000001062DD0100F091A84085
3323:10CFA00081320000238300881CB0000000000005CF
3324:10CFB00048B101000592A2021A5000000A922240D4
3325:10CFC0002D6C0000040022401F7C00000080001037
3326:10CFD00044C9010000000050F1B10100000000034D
3327:10CFE000F0B10100FF070008E08D010000000042E1
3328:10CFF00061B101000000001062B10100FC91A84085
3329:10D0000081320000238300881CB00000000000056E
3330:10D0100048B101002F002047E7B501000C80000354
3331:10D0200042C90100100000F010C80100F0070040E4
3332:10D030001B9801000A92005C118000000400A25FAE
3333:10D040001B7C0000FF070008988801000000000218
3334:10D0500098C001000400200B996C00000000000241
3335:10D0600010C0010004002240236C00000400A34310
3336:10D07000236C0000E79400401F0001000000000541
3337:10D0800048B101001092230D2C6C000000000040FC
3338:10D090001F900100199222461F7C000000000046EC
3339:10D0A0001F8001007080000342C9010019922240D4
3340:10D0B000E36D00000000004261B10100400000107B
3341:10D0C00062DD01001592A8408132000023830088B0
3342:10D0D0001CB000000000000548B1010008002D4010
3343:10D0E00085B00100000000F082B0010000000040A7
3344:10D0F00005B001002C96004187300100000000457A
3345:10D1000061B101004000001062DD01001E92A840E4
3346:10D1100081320000238300881CB00000000000055D
3347:10D1200048B1010024922209803000008697004017
3348:10D130001330010028922244197C00008697004F8A
3349:10D14000813001002892A2471F7C000000000044AB
3350:10D1500019800100FF070008008C01000400264030
3351:10D16000813200003E92224A1F7C00002F92A216BC
3352:10D1700002300000C9940040813201002F0020409D
3353:10D18000E7B10100C98B004081B200002D002D08DD
3354:10D190002AB001003A922242197C00003392A2F395
3355:10D1A00084300000000000A585B0010000000041AF
3356:10D1B00085D00100D4003E4185E001003792224035
3357:10D1C0001F7C00000000005A119001000B000008B5
3358:10D1D000E4F501003C960040813201003B920040A2
3359:10D1E00081B20000059600408132010030002E001F
3360:10D1F0002AD0010032002A15E4B10100C98B0016C3
3361:10D20000E4B100004192A21602300000C99400402F
3362:10D21000813201009A92004081B200002D002D0859
3363:10D220002AB00100549222471F7C00000400A09104
3364:10D23000036C00004E922242197C00004792A2F338
3365:10D2400084300000000000A585B00100000000410E
3366:10D2500085D00100D4003E4185E001004B92224080
3367:10D260001F7C00000000005A119001000B00000814
3368:10D27000E4F50100200400408998010009990008A4
3369:10D280008A30010058012D002AD0010060012DF0E4
3370:10D2900010B00100000000F02CB0010000000016EA
3371:10D2A00080B2010004002740116C0000878F00400D
3372:10D2B00081B200000400A391036C00002B98004190
3373:10D2C000953001005D92A208803200005D92A216A6
3374:10D2D000803200000000004197B001005B92230DF6
3375:10D2E000026C00000000004197C00100AC95004BAB
3376:10D2F00002B000009A92000548B100000400A205A7
3377:10D30000486D0000040022441F7C0000AC002F0187
3378:10D3100014B00100B0002B01E0C10100002B00A6F9
3379:10D3200016B0010004002241197C00000000000139
3380:10D33000E0D101007092230D026C0000008000100B
3381:10D3400044C9010000000050F1B1010000000003D9
3382:10D35000F0B101000000004261B1010000000010C6
3383:10D3600062B101006992A800E031000023830088C7
3384:10D370001CB000000000000548B101000C80000353
3385:10D3800042C90100100000F022C801000000005C4A
3386:10D39000238001000000000184B001007392230D7E
3387:10D3A000026C00000000000D02B001000000000847
3388:10D3B00080B00100789222401B6C00005E97000153
3389:10D3C0008450010081922240856C00000000000121
3390:10D3D00080C001001080001046C901000000004F0D
3391:10D3E0004381010000000042F0B101002000004034
3392:10D3F000F0C9010000000016F0B101000000004378
3393:10D4000061B10100A00000A162DD01007E92A811BF
3394:10D41000E031000004002240236C00009092005E86
3395:10D42000179000008492230D026C00000000000D94
3396:10D4300002B001000000000184D001008992224066
3397:10D440001B6C00007F9700436131010090922240E5
3398:10D45000856C00000000000112C001001080001067
3399:10D4600046C901000000004F438101000000004256
3400:10D47000F0B1010000000009F0B101000000001847
3401:10D48000F0B10100A00000A162DD01008E92A811A0
3402:10D49000E03100000000004361B1010040000010D5
3403:10D4A00062DD01009192A80A023000002383008807
3404:10D4B0001CB00000C9940005483101009892230D6A
3405:10D4C000026C0000FF070011008C0100C9940040AD
3406:10D4D0008132010066970007161401000097005E74
3407:10D4E000051001002F002040E7B10100D08B004063
3408:10D4F00081B200000080000342C90100000000F872
3409:10D5000082B001000400264081320000000000F8D3
3410:10D510008CB00100000000F08EB00100EC950040DE
3411:10D520001330010004000C4780320000000000406E
3412:10D5300085B001002C960041873001009D95004088
3413:10D540008132010004002091036C00000080001073
3414:10D5500042C90100AE922240E36D00000000004588
3415:10D5600061B101004000001062DD0100AA92A840F4
3416:10D5700081320000238300881CB0000000000005F9
3417:10D5800048B10100B0922209803000008697004027
3418:10D59000133001000000000B1BB00100000000155B
3419:10D5A0001AD00100B792A241197C00002B980040CC
3420:10D5B000953001000000001680B20100C0922708DB
3421:10D5C00080320000C19100002AC000002B98004169
3422:10D5D000953001000000001680B20100BB922708C0
3423:10D5E000803200005D9200002AC00000000000416F
3424:10D5F00097B00100BE92230D026C000000000041B4
3425:10D6000097C00100AC95004B02B00000000000057F
3426:10D6100048B10100C98B2242197C00000F97003AE3
3427:10D6200081300100C98B004081B200000400A24A91
3428:10D630001F7C0000C592004A1F9000000400A24118
3429:10D64000197C00000400A24F2B7C00000400A244BF
3430:10D650001F7C00000400A2451F7C0000FF94000016
3431:10D66000103001000000001510C001000000001083
3432:10D6700032B00100A197000604300100D292A2440A
3433:10D680001F7C00000000000B1BB001000000000A1E
3434:10D690002CD001000000000A02B001009E9300019E
3435:10D6A0008C3001000080001942C90100D99222404B
3436:10D6B000E36D00000000004361B101004000001074
3437:10D6C00062DD0100D592A8408132000023830088EA
3438:10D6D0001CB000000000000548B10100000000027D
3439:10D6E00010C00100E2922202145000007996004519
3440:10D6F0001F000100CB92225C1F7C0000000000474D
3441:10D7000061B101004000001062DD0100DE92A85C02
3442:10D710001F000000238300881CB00000CB9200058E
3443:10D7200048B1000008002D4085B00100000000F065
3444:10D7300082B001000000004005B001002C960041BD
3445:10D74000873001000000004561B101004000001079
3446:10D7500062DD0100E792A840813200002383008847
3447:10D760001CB000000000000548B10100ED92220944
3448:10D77000803000008697004013300100F092224470
3449:10D78000197C00008697004F8130010000000044A2
3450:10D7900019800100FF070008008C010004002640EA
3451:10D7A00081320000FF92224A1F7C0000F792A216ED
3452:10D7B00002300000C9940040813201002F00204057
3453:10D7C000E7B10100C98B004081B200002D002D0897
3454:10D7D0002AB00100FB922242197C00003C960040D6
3455:10D7E00081320100FC92004081B2000005960040A9
3456:10D7F0008132010030002E002AD0010032002A15AB
3457:10D80000E4B10100C98B0016E4B10000BC91A2167E
3458:10D8100002300000C9940040813201002F002040F6
3459:10D82000E7B10100D08B004081B20000040022412A
3460:10D83000197C00000400A24F2B7C00000400A244CD
3461:10D840001F7C00000400A2451F7C00000400A24AC7
3462:10D850001F7C0000FF94004A1F100100D4910010AB
3463:10D8600032B000008A002040E7B101000E93A241CF
3464:10D87000197C0000C99400408132010011930040DE
3465:10D8800081B20000A595001594300100AC95004BC5
3466:10D8900002B000000000000548B1010013932242CD
3467:10D8A000197C00000F97003A8130010086970045EF
3468:10D8B00081300100C98B004081B2000065900045B5
3469:10D8C0001F90000004002241197C00000400A247C0
3470:10D8D0001F7C0000F2950040813201000400A30A81
3471:10D8E0000C6C00009D95004081320100D491000134
3472:10D8F0002CB0000004002241197C00000400A24862
3473:10D900001F7C0000B4940040813201002C93A208D7
3474:10D91000803200002C93A2168032000000820002A8
3475:10D9200004DC01000000004503F0010000000001DC
3476:10D9300000C001002493375C613100000000001B2F
3477:10D9400062B1010029932840813200000400A25CEA
3478:10D95000777D00002593004081B2000000000000A8
3479:10D9600062B101002993A84081320000F08717407E
3480:10D9700081B2000058012008E0B1010060012016CA
3481:10D98000E0B10100F29500471F1001000400A30A56
3482:10D990000C6C00009D95004081320100D491000183
3483:10D9A0002CB0000004002241197C00000400A247B2
3484:10D9B0001F7C0000B49400471F1001004393A2088D
3485:10D9C000803200004393A216803200003F93A242AF
3486:10D9D000197C00000082000204DC0100A0980040D5
3487:10D9E00047990100300500418930010004002241BF
3488:10D9F000197C0000A595001594300100AC95004BF2
3489:10DA000002B00000F087004081B200003C96004068
3490:10DA1000813201000000004B199001000F97003A7D
3491:10DA200081300100F087004081B2000058012008D9
3492:10DA3000E0B1010060012016E0B101000400A24F36
3493:10DA40002B7C00000400A2441F7C00000400A245BF
3494:10DA50001F7C0000FF94001032300100D491004080
3495:10DA600013B00000B4940040813201005893A20822
3496:10DA7000803200005893A21680320000008200021B
3497:10DA800004DC01000000004503F00100000000017B
3498:10DA900000C001005093375C613100000000001BA2
3499:10DAA00062B1010055932840813200000400A25C5D
3500:10DAB000777D00005193004081B20000000000001B
3501:10DAC00062B101005593A84081320000F0871740F1
3502:10DAD00081B200000080000342C90100000000F88C
3503:10DAE00082B001000400264081320000000000F8EE
3504:10DAF0008CB00100000000F08EB00100EC950040F9
3505:10DB00001330010004000C47803200000000004088
3506:10DB100085B001002C960041873001009D950040A2
3507:10DB2000813201000400A091036C0000008000100D
3508:10DB300042C901006A932240E36D000000000045E5
3509:10DB400061B101004000001062DD01006693A84051
3510:10DB500081320000238300881CB000000000000513
3511:10DB600048B10100878F220980300000869700406D
3512:10DB700013300100878F004081B200000400831E33
3513:10DB8000803200000400A24F2B7C00000400A2455C
3514:10DB90001F7C000014002D451F9001000400A2F01E
3515:10DBA000146C00000400A001146C0000DF8F00441E
3516:10DBB000199000000400A24A1F7C00007893A24143
3517:10DBC000197C00000000004A1F9001007A9100407B
3518:10DBD00081B200000400A2481F7C0000F295004AB8
3519:10DBE0001F1001000400A30A0C6C00009D9500406A
3520:10DBF00081320100D49100012CB0000004002241C8
3521:10DC0000197C00000400A24F2B7C00000400A244F9
3522:10DC10001F7C00000400A2451F7C0000FF94004010
3523:10DC200081320100D491001032B000008B0000401E
3524:10DC3000439901000400A246E77D0000659000457D
3525:10DC40001F9000000000004137C3010000000041A8
3526:10DC500033C301003600000102CC01000000D240B5
3527:10DC600081B200008C9385178032000000009F482D
3528:10DC700003D000008E939C178032000000009F4C60
3529:10DC800003D000000000800134C301004080000385
3530:10DC900044C901000000004AF0B101000400264020
3531:10DCA0008132000000000040F1B1010000000012CC
3532:10DCB000F0B10100D1940041E13101000080004346
3533:10DCC00044C9010010000040F19901000000004823
3534:10DCD000F0B1010000000049F0B101004000000374
3535:10DCE000E0C901000000004561B1010000000043EF
3536:10DCF00062B101000000A84081B200009B93004087
3537:10DD000081B200002D04004089980100099900A506
3538:10DD10008A300100BA002040E5B10100B0002F01B7
3539:10DD20008CD0010004001FF080320000000000468B
3540:10DD3000E0C10100AC002F4013B00100CC002D0168
3541:10DD4000E0C10100A9939C17803200000400224A20
3542:10DD5000197C00003698004081320100AB932247C5
3543:10DD6000197C00000000005F13900100D497004769
3544:10DD700019100100C0002D441F900100C4002DF0B7
3545:10DD800082B001000B9800F084B0000090002D05D7
3546:10DD900048B10100C093A24B1F7C00001594A24C17
3547:10DDA0001F7C0000C0931F1CE06D0000C393A20104
3548:10DDB00080320000A8002D468FB00100B9931F1CCF
3549:10DDC000E06D0000B400004043990100BB9322F0D5
3550:10DDD0003A6C000012941FF03A6C00000000A24060
3551:10DDE00080B200000000804F8FB001008A00004028
3552:10DDF0004399010013942042E76D0000BF93224035
3553:10DE000080320000000080598FB00100000080586F
3554:10DE10008FB00100C2932240803200000000805C7D
3555:10DE20008FB001000000805B8FB00100AC000040AB
3556:10DE300043990100B0002DF084B00100C793A242C5
3557:10DE4000246C0000D29323F0026C0000B00000A10B
3558:10DE500080CE01000400A64081320000CF93A2F0E2
3559:10DE6000803200001494A242246C00001494A24159
3560:10DE7000036C0000CE93A24080320000000080516D
3561:10DE80008FB00100000080528FB0010014941F1267
3562:10DE9000845000001494A001846C0000C0930040E2
3563:10DEA00081B200008B00004043990100FD93A2461F
3564:10DEB000E77D00001400004043990100EF9322F039
3565:10DEC00014300000DB93200A026C0000EC93031E68
3566:10DED00080320000DA93A2408032000000008044CB
3567:10DEE0008FB00100000080498FB00100E093220A4A
3568:10DEF000026C0000E393A241197C0000DF93A24072
3569:10DF000080320000000080558FB001000000805674
3570:10DF10008FB00100E293A2408032000000008043F5
3571:10DF20008FB00100000080488FB0010000000001A8
3572:10DF300082B001000000000A82D00100E993209124
3573:10DF4000836C0000E893A2408032000026008040ED
3574:10DF50008F980100270080408F980100EB93A2402A
3575:10DF6000803200001F0080408F9801002000804018
3576:10DF70008F980100EE93A240803200002200804082
3577:10DF80008F980100230080408F98010088002D4465
3578:10DF90008FB00100F893A241197C0000F593A243D1
3579:10DFA0003D7C0000F593A2F2026C00000000A2404C
3580:10DFB00080B20000000080498FB00100F793A240BA
3581:10DFC00080320000000080438FB0010000008048D4
3582:10DFD0008FB00100F593A091036C0000F3932243EE
3583:10DFE0003D7C0000FC93A24080320000280080406D
3584:10DFF0008F980100290080408F9801001400004094
3585:10E00000439901000694A2F01430000088002D44CA
3586:10E010008FB001000394A2F2026C00000000A24045
3587:10E0200080B20000000080498FB00100F5932241CA
3588:10E03000197C0000F3932091036C0000F5930040DD
3589:10E0400081B200000A94200A026C00000994A240E8
3590:10E0500080320000000080448FB001000000804941
3591:10E060008FB001000F94220A026C0000E393A241DA
3592:10E07000197C00000E94A240803200000000805500
3593:10E080008FB00100000080568FB001001194A240B3
3594:10E0900080320000000080438FB001000000804803
3595:10E0A0008FB001001794004395B000001794004111
3596:10E0B00095B000001794004295B0000017940044FA
3597:10E0C00095B000001794004C95B00000300400405B
3598:10E0D000899801000999004A8A3001005B97004045
3599:10E0E000813201001C94A240803200000000804B6D
3600:10E0F0008FB001000000804C8FB001000400A20529
3601:10E10000486D00002D000040439901002E002FF3C0
3602:10E1100084B001002294A2F39630000000008040F9
3603:10E1200001B001002D002A41E7D10100D4003D419A
3604:10E1300085E001000B0000F200E401002894225A5F
3605:10E14000017C0000000000401F9001002994005A4B
3606:10E1500001800000000000401F80010000006341BA
3607:10E1600085C001002C94A0A5856C000000006340D0
3608:10E1700085B001001204004089980100099900004F
3609:10E180008A3001000000804081B201000000A0A59B
3610:10E19000856C01000000E34085B001000C800003A5
3611:10E1A00042C9010012000040879801007F9800F0EA
3612:10E1B0008CB000000400225F1F7C000041942240CC
3613:10E1C0000F6C000000002F0548B101000400225A26
3614:10E1D0001F7C0000100000F098F401000400A2076A
3615:10E1E000986C00001000000C98F401000400A207D5
3616:10E1F000986C00003E94A24B197C00003F9422F0E2
3617:10E20000186C00000000604B199001004395000756
3618:10E21000103001002F83004005B000004394225AC3
3619:10E220001F7C0000AB940040813001002F83004030
3620:10E2300005B000000400225F1F7C000000002F05D5
3621:10E2400048B101000000604B199001000400225AFF
3622:10E250001F7C0000040022400F6C0000100000F042
3623:10E2600096F401000400A207966C00001000000C58
3624:10E2700096F401000400A207966C00004395000785
3625:10E28000103001002F83004005B000000400225F21
3626:10E290001F7C000000002F0548B101000000604B0A
3627:10E2A000199001000400225A1F7C00000400224043
3628:10E2B0000F6C0000100000F096F401000400A207AB
3629:10E2C000966C00001000000C96F401000400A207F8
3630:10E2D000966C00004395000710300100000080405C
3631:10E2E00005B001005A943340813200005D94A1AD25
3632:10E2F000952000006F94134081B200000000134A83
3633:10E300005A8301003000394595E001000400A25F06
3634:10E310005F7C00000400A25E5F7C00001F00000F15
3635:10E320005ED801000000005A5F9001000000005E0E
3636:10E330005F9001000000004045B0010000000004B3
3637:10E3400048B00100000000054AB001000000000CC8
3638:10E3500058B00100000000074EB001001C850040CD
3639:10E360005D9801000400A2445F7C0000000000589A
3640:10E3700061B101000000004A62B101000000A84143
3641:10E3800097B000006C94004081B200000000804013
3642:10E3900097B001000400A240056C00001C990040E9
3643:10E3A000813201007294600796300000FFFF004B3D
3644:10E3B00084890100000070C224B001007F94A2454E
3645:10E3C000257C000076943120853000008094221254
3646:10E3D000487F000058041112480301001000001289
3647:10E3E00096E401000000004B1E9401001704004059
3648:10E3F00089980100000000128AB001000999005FAD
3649:10E400008B1001000000805A1F9001007F94314062
3650:10E4100081320000000000B424B001008094221278
3651:10E42000487F00005804004081320100170400407A
3652:10E4300089980100099900128A30010000002F0517
3653:10E4400048B101008F940BF08430000000001112DD
3654:10E45000488301008C942250857000005E010040CA
3655:10E4600043990100B49600F2963001009304001223
3656:10E47000943001000000005A1F90010010000012AB
3657:10E4800096E401000000804B1E9401001000004241
3658:10E4900010F40100040022088032000000B73F435E
3659:10E4A00011F00100070000088A880100939430A150
3660:10E4B0000C30000096942245E67D000080941040C8
3661:10E4C00081B2000000002A45E69101000000101210
3662:10E4D000488301000400A205486D000000001140BF
3663:10E4E00081B201000000604B858001005E010040A8
3664:10E4F00043990100B49600F29630010000800010AC
3665:10E5000044C90100D8000040819801002E002D056B
3666:10E5100048B10100A2942240E76D00008000004055
3667:10E5200080C8010000000040F0B1010009000008AF
3668:10E5300086E40100000068A787C0010000000044D5
3669:10E5400061B101000000001062B10100A694A805AD
3670:10E55000E03100001000001296E401000014004BAE
3671:10E5600096DC01000000804B1E9401000400225A3A
3672:10E570001F7C00001000000F84F401001F00004207
3673:10E5800084880100B094224080320000B19400429F
3674:10E5900068B10000000000426AB10100B194315A34
3675:10E5A0001F0000000400A242487F000000009142CA
3676:10E5B00048930100B4943540813200006D00004062
3677:10E5C00061990100BA9428B12C300000B594224D15
3678:10E5D000757D0000000000402DB001000000954056
3679:10E5E00011B001006D00004061990100BA94A8B11A
3680:10E5F000103000000000001680B20100040027085F
3681:10E60000803200000000954081B201007F00004090
3682:10E6100061990100C59428B110300000BF949FBAE1
3683:10E6200080320000150000408998010009990040DF
3684:10E63000813201000000804011B001000400225C22
3685:10E64000117C00000400A25A117C00000400220882
3686:10E650004806000000008024118401000400A25C30
3687:10E66000017C00000400A25A017C0000040022008A
3688:10E670004806000004001FBB803200000000005F5D
3689:10E6800061B101000010000062DD01000000A8403F
3690:10E6900081B20000CE94004081B20000AC940040F2
3691:10E6A00047990100D294324081320000DA9422F876
3692:10E6B00096300000000000F890B00100000000F06B
3693:10E6C00092B001000000004880B201000400274918
3694:10E6D000803200000100004BF0CD01002000924884
3695:10E6E000E0C901006C00004061990100DE9428B18E
3696:10E6F00092300000DA94224C757D00000400124034
3697:10E7000091B000006C00004061990100DE94A8B156
3698:10E71000903000000000004980B20100040027484A
3699:10E7200080320000FF000048968801000000004B86
3700:10E7300090D001000100004BF0CD01002000004806
3701:10E74000F0C9010000009249E0B101000C002D1059
3702:10E7500048B10100FF070008828C01000400A25CA0
3703:10E76000837C0000FF0700F0008C01000400A25C25
3704:10E77000017C000004002240016C00000000A24166
3705:10E7800000EC0000F094221A006C0000C994000014
3706:10E79000343001000000005049C10100EA94A24158
3707:10E7A000235000000000804081B201000C002D10B9
3708:10E7B00048B10100FF070015828C01000400A25C33
3709:10E7C000837C0000FF0700F0008C01000400A25CC5
3710:10E7D000017C000004002240016C00000000A24106
3711:10E7E00000EC0000FC94220D006C0000C9940000B5
3712:10E7F0001A3001000000005049C10100F694A24106
3713:10E80000235000000000804081B201000195831E6A
3714:10E8100080320000000000441990010024002D0106
3715:10E820002CB0010028002DF016B0010022002DF0C0
3716:10E8300026B0010014002FF20CB001000400A2F079
3717:10E84000146C000004002001146C000000008040E3
3718:10E85000E1B10100300000409798010060972E4020
3719:10E8600081B2010000000040F1B101000A95A2410F
3720:10E870009750000064973E439DE0010000008040F7
3721:10E88000E1B1010064973E439DE001000000800B70
3722:10E89000E8B1010064973F439DE00100000000F0F3
3723:10E8A00016C0010000008040E1B1010064973F43C1
3724:10E8B0009DE00100000000F416B00100000080405F
3725:10E8C000E1B1010060173D439DE00100100080A10F
3726:10E8D00016E401000400A207166C00001A040040B0
3727:10E8E000899801001000000B8AE401000999000DCD
3728:10E8F0008A14010000B5000D42C901001D95304782
3729:10E90000170400002095A20BE67D00000000904255
3730:10E9100081B0010000B7000D46C901002495A20B8B
3731:10E92000E67D00000000000BE69101000000904130
3732:10E9300081B001000000104081B201002595400720
3733:10E94000963000009D040040813201002F95A245C1
3734:10E95000957C000001973F4195E00100000000F325
3735:10E9600096B001000000004EE6B1010040973E4025
3736:10E9700097E001000000004EE6B1010040973E40E4
3737:10E980009DE001004295003BE7B100002F9530402B
3738:10E99000813200003995A20BE67D000000B5000D24
3739:10E9A00046C901003595A20BE67D0000000010402D
3740:10E9B00081B201000000984281B0010000B7000D53
3741:10E9C00046C901000000000BE69101000000104064
3742:10E9D00081B201000000984181B00100040021A231
3743:10E9E000952000000000104A4483010000973E413A
3744:10E9F00095E001000000004EF6B101000000004E5D
3745:10EA0000E6B1010040973E409DE001000000003B60
3746:10EA1000E7B101000000004A90B10100FFFF0007CC
3747:10EA2000928901000000984081B00100110400406B
3748:10EA300089980100099900088A3001000300000844
3749:10EA400086F4010000B7004346C901000700000832
3750:10EA50008288010004002208803200000400224164
3751:10EA6000E67D00004A954008963000009D04004075
3752:10EA70008132010058952245957C00005395225A19
3753:10EA80001F7C00001000000F96F401004F95315FCD
3754:10EA9000970400000400A24B487F00000000114BC7
3755:10EAA000489301000000004B6AB1010053953040CB
3756:10EAB0008132000004002241E67D00000000004198
3757:10EAC000E68101000000104081B201000000984082
3758:10EAD00081B2010000973F4195E00100000000F382
3759:10EAE00096B0010040973D4097E00100000063F3BD
3760:10EAF00088B001006195A23B896C00000000004ACB
3761:10EB000090B10100010000A692B101000400A24AE8
3762:10EB1000447F00006295184A4493000000001840AA
3763:10EB200081B201003F0400408998010016000012E4
3764:10EB30008AE401000999004B8A140100300039452C
3765:10EB400097E001000400A25F5F7C00000400225EE9
3766:10EB50005F7C00001F04002F7ED901000400A64046
3767:10EB6000813200006E95225A1F7C00001F04000FA6
3768:10EB700098D801000000004C5E94010070950005DB
3769:10EB80004AB000001F0400A75E840100000000409E
3770:10EB90004BB001000000005E5F9001000400A2087D
3771:10EBA0004E6C00000000005861B101000000004BF5
3772:10EBB00062B101000000A84081B2000073950040DE
3773:10EBC00081B20000330400408998010009990007D0
3774:10EBD0008A30010078954007963000009D0400407F
3775:10EBE000813201007C952245957C00000000984010
3776:10EBF00081B201000400A24A447F00009B04004A45
3777:10EC00004413010000973F4195E00100000000F32C
3778:10EC100096B0010040973D4097E00100000063F38B
3779:10EC200088B001003000384597E001000400A25F81
3780:10EC30001F7C00000400225E1F7C0000040020AA4C
3781:10EC40000F6C00000000005F0F90010000000058F2
3782:10EC500061B101000000004B62B101008895A8403D
3783:10EC6000813200007E95A23B896C0000300038455F
3784:10EC70009DE001000000984081B2010004002208DC
3785:10EC8000803200000300000894F4010000B7004A3D
3786:10EC900046C9010007000008968801000400224BC5
3787:10ECA000E67D000093040012943001004395005A61
3788:10ECB0001F0001000000805A1F9001001100004A4F
3789:10ECC000E6C901003000004A80CE01000400244063
3790:10ECD0008132000034002F4F95840100000000F3C2
3791:10ECE00096B001000100634B84C801000000A043FE
3792:10ECF000856C01000000E34085B0010030002D4428
3793:10ED00001F90010032002DF22AB0010004002640BD
3794:10ED100081320000040022F2023000001D94001035
3795:10ED20003230010004002200803200000400224240
3796:10ED3000197C00003200A040E5B101000000004055
3797:10ED400097B00100F0070040999801000000004AC8
3798:10ED500002C001000000005003D00100000000418B
3799:10ED600097C001000000A34C02D00000A99500400C
3800:10ED700081B20000000000A836B00100BA9522411F
3801:10ED8000035000000080001044C901000000005042
3802:10ED9000F1B1010070000003F0C901000000004261
3803:10EDA00061B101000000001062B10100B295A8003D
3804:10EDB000E0310000238300881CB00000C9940040AB
3805:10EDC000813201007C80000342C90100040022401E
3806:10EDD000E16D0000000000F000B00100AD95005CA6
3807:10EDE00001800000C9940040813201000000001B36
3808:10EDF00010B1000068012D0682B00100000000F291
3809:10EE000082C001000080000346C90100BF94004099
3810:10EE100081320100E8952240116C00000000680872
3811:10EE2000389601003A0400408998010009990008C9
3812:10EE30008A300100F007004182CC0100BF95AA4151
3813:10EE40003B400000000000F810B001000000005C32
3814:10EE5000118001000400A3483B6C00000100001D6C
3815:10EE600004CC0100E695264623300000080000038C
3816:10EE700012C801000480000398C801000400A24CDD
3817:10EE8000426D00000400A205486D0000640120F0FE
3818:10EE9000E0B10100E595224105500000200000038B
3819:10EEA00048C901000C0000F886C801000000224497
3820:10EEB000F1B1010000000043F0B1010000000009C1
3821:10EEC000E0B101000000004461B10100A00000A415
3822:10EED00062DD0100D795A8461F100000E49522418D
3823:10EEE00005500000E295A24123500000000000A15F
3824:10EEF0001AB001000000004461B1010040000010A0
3825:10EF000062DD0100DD95A8462330000023830088E0
3826:10EF10001CB000001000000348C901000000000DF3
3827:10EF200042B101000000004413C00100D29500501E
3828:10EF300049C100000000000548B101000480000341
3829:10EF40001AC801000400A205486D000000008040BE
3830:10EF500081B20100E69522403B6C0000000000F801
3831:10EF600000B00100C994005C01000100E895004177
3832:10EF70003BD0000000008D4780320100B0002F5FC1
3833:10EF800013B00100000060F08CC001007C00004064
3834:10EF9000439901000400A3F08C6C00000000804045
3835:10EFA00081B201000080000342C90100000000F8A6
3836:10EFB00094B00100000000F88CB00100F7958CF8C7
3837:10EFC0008E3000000000004419900100040022F877
3838:10EFD00014300000000000F816B00100000000F836
3839:10EFE00026B0010008002EF80CB001000C002A4ADF
3840:10EFF000E0B1010028000000E0C901001000201B62
3841:10F00000E0B101000496200A0C6C0000000000F83A
3842:10F0100094B00100000000F896B00100200020F03C
3843:10F02000E4B101001800204AE0B101001C00204BAF
3844:10F03000E0B10100EC95004013B000000400A2050F
3845:10F04000486D00002C002D42199001002E002FF376
3846:10F0500082B00100000000F396B001000B96A2A55B
3847:10F06000976C00000000804195B001000E96A24010
3848:10F07000976C00000000004083B001002D0020408C
3849:10F08000E7B101000000634197C00100D4003E4198
3850:10F0900083E001000000004183C001001396A0A599
3851:10F0A000836C00000000004083B001002C00204170
3852:10F0B000E6B10100189622401F7C00000004000009
3853:10F0C00098DC01000B00004CE4F5010019960040AB
3854:10F0D0001F8000000B000000E4F501001E0400404A
3855:10F0E00089980100099900008A30010000008040E1
3856:10F0F00081B20100D1940040813201000080000300
3857:10F1000042C9010004002240E16D000004800003B8
3858:10F1100044C9010000000040F1B1010000000040BE
3859:10F12000F1B101000000604187B0010000800010D3
3860:10F1300044C9010000000050F1B101000000004886
3861:10F14000F0B1010000000049F0B10100000000032F
3862:10F15000E0B101000000004561B101002000001095
3863:10F1600062DD01000000A85D0590000029960040C6
3864:10F1700081B20000D1940040813201000080000380
3865:10F1800044C9010000000041F0B101000400264024
3866:10F190008132000000000042F0B101000000004098
3867:10F1A000F1B1010000000043F0B101000080001047
3868:10F1B00044C9010000000050F1B101000000004806
3869:10F1C000F0B1010000000049F0B1010000000003AF
3870:10F1D000E0B101000000004561B101002000001015
3871:10F1E00062DD01000000A85D059000003996004036
3872:10F1F00081B200000400A205486D00000400820CEA
3873:10F20000803200002D000040439901002E002FF3B2
3874:10F2100084B00100010063F396C8010043969F414A
3875:10F2200085500000010000A585CC01002D00204282
3876:10F23000E6B101000400A3A5976C0000D4003D4195
3877:10F2400085E001000B0000F298E401004A9622409C
3878:10F250001F7C00000400225A997C00000000005A24
3879:10F26000998001000400A200986C00002004004076
3880:10F2700089980100099900008A300100000080404F
3881:10F2800081B2010021040040899801000999000021
3882:10F290008A3001000400A2006A0600005E012D0011
3883:10F2A00080B001005596524381600000020000F2D8
3884:10F2B00082F4010056960041809400000000005F37
3885:10F2C000819001000000005E61B10100000000407B
3886:10F2D00062B101000000A84095B0000057969EBBA7
3887:10F2E000803200005C96A2401F7C0000C994004060
3888:10F2F00081B200000000804195B0010004000015BB
3889:10F3000042C90100000000542BC00100000000FCB5
3890:10F3100024B00100000000FC38B00100000000FE35
3891:10F320003CB00100000000FE3AB0010071969C174D
3892:10F33000803200006696A24A197C00000000804CD2
3893:10F340001F9001000C00001E98F401006596A24871
3894:10F35000996C00000000001542B101006596A28A78
3895:10F36000F16D00000C00000102CC0100000000FC67
3896:10F370003EB00100010000F428CC0100CC002D05B6
3897:10F3800048B10100709620F03E6C00000000004B78
3898:10F390001F9001000000004C2BC00100BF002D0594
3899:10F3A00048B10100000080F33AE001000400A2052A
3900:10F3B000486D00001000000C96F401000400A20744
3901:10F3C000966C000000002E4B1990010007002A0CDB
3902:10F3D000E4B1010000008004E6B101001800004023
3903:10F3E000439901001C002DF016B0010020002DF003
3904:10F3F00026B001000C002FF20CB001000000A206A4
3905:10F4000014EC0000809622451F7C00000000A3063B
3906:10F410002AEC0000000000F894B00100000000F0A9
3907:10F4200096B001000C002D4081B2010000002A4C72
3908:10F43000E1C101003000001048C901000A0000408D
3909:10F44000F199010018000005F0C901000000004A10
3910:10F45000F0B101000000004BE0B1010000000047E6
3911:10F4600061B10100A00000A462DD01008A96A85CE1
3912:10F470001F1000000000800548B101000400A295A3
3913:10F48000036C000000002E1048B101004000000194
3914:10F49000F0CD010040000003F0C901004000000071
3915:10F4A000E0C9010000002E5049C101000000000623
3916:10F4B000F1B1010000000003F0B101009596624235
3917:10F4C000613100002000001062DD01009696A84026
3918:10F4D000813200001000001062C901009896A80057
3919:10F4E000E03100000000F24081B201000400A2956A
3920:10F4F000036C000000002E1048B101004000000124
3921:10F50000F0CD010040000003F0C901004000000000
3922:10F51000E0C9010000002E5049C1010000000006B2
3923:10F52000F1B1010000000003F0B10100A3966242B6
3924:10F53000613100002000001062DD0100A496A840A7
3925:10F5400081320000A00000A462DD0100A696A800A0
3926:10F55000E03100000000F24081B201003080004A3A
3927:10F5600044C9010000000006F1B10100C0A83D46F9
3928:10F570000DE00100FF7F00A1F089010002000009F9
3929:10F5800096F401000000004697E00100000060A82A
3930:10F5900097C00100B0966342613100003000004A1C
3931:10F5A00062C90100B196A840813200000000F3401A
3932:10F5B00081B2010000993F4297F00100B596654085
3933:10F5C00081320000BD9622F3740600003F0000F374
3934:10F5D0009488010000000007E785010000007555D0
3935:10F5E00061B101000000004A62B101000000A840C2
3936:10F5F00081B20000BA96004081B200000000F540E0
3937:10F6000081B20100000000A836B00100CD96824111
3938:10F6100023400000C296A2441F7C00009E9300017C
3939:10F620008C3001002080001042C90100C8962240A1
3940:10F63000E36D00000000004361B1010040000010D4
3941:10F6400062DD0100C596A840813200002383008856
3942:10F650001CB000000000004123B0010000000010B9
3943:10F6600032B00100CD962241197C0000E79400439E
3944:10F67000233001000000004123B00100CF96A31504
3945:10F680000C6C0000D096000604B0000000000015CD
3946:10F6900004B00100D29620021A6C00000000000D98
3947:10F6A00004B00100A197000548310100FD96220237
3948:10F6B00014500000D696A2022A500000FD96A245E2
3949:10F6C0001F7C0000D89622020C500000E196000238
3950:10F6D00016C00000E096225C1F7C00003080001005
3951:10F6E00042C90100E0962240E36D0000000000479F
3952:10F6F00061B101004000001062DD0100DC96A8400D
3953:10F7000081320000238300881CB000000000000547
3954:10F7100048B101007996005C1F000100FD9622159A
3955:10F72000803200000000005033C00100FC96A202AD
3956:10F730001A500000ED9622461F7C000070800003E6
3957:10F7400042C90100000000461F800100ED962240E2
3958:10F75000E36D00000000004261B1010040000010B4
3959:10F7600062DD0100E996A840813200002383008811
3960:10F770001CB000000000000548B101000C8000032F
3961:10F7800042C90100040022F080320000100000F0A5
3962:10F7900010C801002F002F5C1180010000000047FD
3963:10F7A000E7910100F00700401B980100BF9620156B
3964:10F7B0001A6C00007000000348C9010000002250CC
3965:10F7C000F1B1010000000003F0B10100FF070008E3
3966:10F7D000E08D01000000004261B10100A00000A422
3967:10F7E00062DD0100F996A8461F100000BF960005D3
3968:10F7F00048B10000BF96000210C00000FF96A2446E
3969:10F800001F7C00009E9300018C3001000000001B53
3970:10F8100010B100000080001044C901000C0000403D
3971:10F82000F199010010000008F0C901000000001665
3972:10F83000F0B1010010000003E0C901000400A25C67
3973:10F840001F7C00000000004561B101002000001095
3974:10F8500062DD01000000A85C1F90000007970040D7
3975:10F8600081B20000170000D0A2C901000000A24030
3976:10F8700027EC00000000002000B00100C994004106
3977:10F88000A34101000B97004127D00000360400403F
3978:10F8900089980100099900408A3001001000000792
3979:10F8A00096E401000000004B809401000000005429
3980:10F8B00061B101000080004062DD01000000A8404D
3981:10F8C00081B20000040014BB803200001497004095
3982:10F8D00081B200000400A205486D00006A97004054
3983:10F8E0002B300100AC002D0616C0010090002DF059
3984:10F8F00016C401001E97A0F016440000000000414D
3985:10F9000017C001000E0000A244C9010000006CF005
3986:10F9100030B00100AC002D4087B0010000006CF059
3987:10F9200028B001002797224A197C000000300043CC
3988:10F9300086C801000030000B16C801002797A440BC
3989:10F94000813200000000004117C001004A972206E2
3990:10F95000803200003597A206146C000032972248CE
3991:10F96000197C00002C97A0411740000000000041C6
3992:10F9700017C001000000004131C0010090002018B4
3993:10F98000E0B101008B002D48198001000400A24560
3994:10F99000E77D00008B002045E7910100359700408E
3995:10F9A0008790000008000043869801003597A04822
3996:10F9B000174000000000004117C00100B0000040E7
3997:10F9C0004399010010500043FCC90100AE9700307C
3998:10F9D0008130010000000040E5B101004097224A5B
3999:10F9E000197C0000080000A244C90100CC002DAB26
4000:10F9F000F9B10100000000AB17C001003F97A0F073
4001:10FA0000164400000000004117C00100449764F054
4002:10FA100082B00000A4000040479901004497A2F280
4003:10FA20008032000000000041E5B101008C00201888
4004:10FA3000E0B101009000004045990100000060061F
4005:10FA400030C001000000860C80B200000400A24912
4006:10FA5000197C0000BC002D4619900100A000A0F206
4007:10FA6000E4B10100B0000040439901001050004390
4008:10FA7000FCC90100AE970030813001000000A24AAD
4009:10FA800019FC0000080000A244C90100CC002DAB05
4010:10FA9000F9B10100000000AB17C001005397A0F0BE
4011:10FAA000164400000000004117C001000000E4F00F
4012:10FAB00082B001000080001044C901000000004134
4013:10FAC000F0B1010000000003F0B1010000000000EF
4014:10FAD000F0B101000000001062B101000000A81B9D
4015:10FAE000E0B100005897004081B2000000F0000C27
4016:10FAF0007E8901000000A64C956001000000804A4C
4017:10FB0000189401000080001044C901000400220183
4018:10FB1000F031000020000040F0C901000000001694
4019:10FB2000F0B101000000004361B1010020000010AD
4020:10FB300062DD01000000A815E0B1000063970040FD
4021:10FB400081B200001080000344C9010000000006DB
4022:10FB5000F0B1010000000001F0B101000000E85F19
4023:10FB60001790010070000040439901007A012EFEB9
4024:10FB700092B001008B002DF616B001007097224361
4025:10FB8000E77D00000000004445C10100040000A61C
4026:10FB90002AB0010028006E0682C801007497224A2C
4027:10FBA000197C00000000004245D1010000006E4CAD
4028:10FBB00083C001000000004192C0010075974330EE
4029:10FBC0003D0700000000669E83B0010000001B415D
4030:10FBD0003DC301000000004192C00100060000A2E8
4031:10FBE00044C901001000004998F401007E972630B6
4032:10FBF000930400007E97904C92400000000000416A
4033:10FC000093C00100FFFF8049ECA9010000800010B3
4034:10FC100044C9010004002201F03100000000000985
4035:10FC2000F0B1010000000018F0B101002000001048
4036:10FC300062DD01000000A815E0B1000083970040DC
4037:10FC400081B2000004002220816C000004002240E8
4038:10FC5000816C00009597225F817C00009297A24002
4039:10FC6000197C0000000000401990010000000054C1
4040:10FC700061B101001000000796E401000000004F90
4041:10FC8000979401000000004B62B101009297284058
4042:10FC9000813200000400A254777D00008E9700405E
4043:10FCA00081B20000250400408998010009990040B4
4044:10FCB0008A3001000000A221818400009897A25F91
4045:10FCC000816C00000000A243197C01000000004389
4046:10FCD000199001002504004089980100099900400D
4047:10FCE0008A3001000000005461B1010010000007DB
4048:10FCF00096E4010000000040969401000000004BD3
4049:10FD000062B101000000A84081B200000400A254CA
4050:10FD1000777D00009D97004081B20000040022081A
4051:10FD2000803200000400220280320000A697A24B1D
4052:10FD3000FD7F0000B405000280CE01000400AA404F
4053:10FD4000813200000080001944C901000400220231
4054:10FD5000F03100000000000BF0B1010000000013C2
4055:10FD6000F0B101000000004361B101002000001962
4056:10FD700062DD01000000A808E0B10000AB97004080
4057:10FD800081B200000400A205486D0000B00000A18F
4058:10FD900080CE01000400A640813200007C002DF0DE
4059:10FDA00084B00100020000F098F40100B797204CE5
4060:10FDB000846C00008800004043990100B79720F24E
4061:10FDC000846C00000000004085B0010098002D14F4
4062:10FDD00082B00100000000F098B00100A3002D14D3
4063:10FDE00098D00100BC97204C846C00000000004CAF
4064:10FDF00084B001000400A230816C0000000000F318
4065:10FE000080E00100C0972340846C000000000040A7
4066:10FE100084B00100D0002014E0B101009800254218
4067:10FE200080B0010000006EF380F001000000A642E7
4068:10FE300082C00000C697A0401640000000000041AC
4069:10FE400017C0010000009FF082EC00009800A04164
4070:10FE5000E0B101000400A25C1F7C000037040040F8
4071:10FE600089980100099900058A30010000000042CC
4072:10FE700061B1010000002E1048B10100A80100404E
4073:10FE8000F199010000000005F0B101000900000730
4074:10FE900096E40100000060A797C001000000001078
4075:10FEA00062B101000000A84081B20000D19700407B
4076:10FEB00081B20000A8002D1C8AB0010000009FF054
4077:10FEC0008AD000000000A2408BEC00008A00204095
4078:10FED000E7B10100B400004047990100A4002D459E
4079:10FEE000E0D10100DF979C17803200000400224A15
4080:10FEF000197C0000BE002FAB83B001003C980014B9
4081:10FF000082500100E497004081B20000E49722F2A1
4082:10FF1000823000008C00004043990100E4979F1C50
4083:10FF2000E06D0000BE000040479901003C98004091
4084:10FF300081320100A800201CE0B101009C002D309E
4085:10FF400081B0010088002DF084B0010094002DF2F2
4086:10FF500086B00100F89723F0846C0000EC972392A0
4087:10FF6000876C0000C90400A694B00100EE97004021
4088:10FF700081B20000200000A694B001006089004A10
4089:10FF800094980100EE9768408132000004002240FE
4090:10FF9000BD7D00000000004AB0B10100BF002D424D
4091:10FFA000B2B1010090002DF380E00100F397D4403E
4092:10FFB00081320000000078DA84C00100FD97234000
4093:10FFC000846C00009400209DE1B10100FD97004089
4094:10FFD00084B00000BF002D4384C0010090002DF3C9
4095:10FFE00080E00100FD972340846C00009400209D78
4096:10FFF000E1B101000000004084B001000198A2F0CE
4097:020000021000EC
4098:10000000386C00009C002042E0B101000000005F5D
4099:100010001394010000008046198001009C002042DA
4100:10002000E0B101003700004043990100040000F3F3
4101:1000300080F401000F0000F382880100079823413B
4102:10004000806C00000000005F139401000000890C28
4103:1000500080B200000400860C80320000BC0000402A
4104:1000600043990100A000A0F2E4B1010000009F410B
4105:1000700024EC00001398A6408132000000009F424B
4106:1000800038EC00001398A64081320000B400004014
4107:10009000439901001598A3F03A6C00000400A440B5
4108:1000A000813200000000804081B20100B4000040B5
4109:1000B00043990100199822F03A6C0000B400201D09
4110:1000C000E0B1010080002D5F13940100199823F026
4111:1000D0003A6C00008000201DE0B10100C000201239
4112:1000E000E0B10100C400A01CE0B101002704004001
4113:1000F00089980100099900428A3001000400A20594
4114:10010000486D00000080000344C901000000004267
4115:10011000E0B10100120000408798010025989F413E
4116:10012000246C0000000000418CB0010000000012AF
4117:100130008CD001002698004124B00000000000404F
4118:100140008DB001007F980040813201000000004521
4119:1001500061B101004000001062DD01000000A84014
4120:1001600081B200002898004081B20000B4940040A1
4121:10017000813201000000001680B201000000A708D3
4122:10018000803201003204004089980100099900087A
4123:100190008A3001003298A240956C0000C99400405A
4124:1001A00081320100008200A604B00100000000407E
4125:1001B0002DB00100A0982F4011B001003005004182
4126:1001C00089B00000CC0000A180CE01000400A64050
4127:1001D0008132000000009FF83EEC000000009F12FA
4128:1001E000E0ED0000C80020ABE1B10100CC00A01F91
4129:1001F000E0B101000400A205486D00003F98A35F34
4130:10020000E76D000000000041E7C10100A6000040CA
4131:1002100047990100539822F2863000000300004302
4132:1002200084F401000100004180CC0100B8002D429F
4133:1002300080D001000000624086C0010047981F4343
4134:10024000803200004898A240876C000000006241A4
4135:1002500087B001004C989F408032000000000040B1
4136:1002600085B001000000004084D001000000004281
4137:1002700080B00100000000F288B0010002000044DC
4138:1002800084F40100B8002E4280D0010000006240DA
4139:1002900088C0010052981F44803200005698A24046
4140:1002A000896C00005698624189B0000003006241E9
4141:1002B00086E40100B8000040459901000100624158
4142:1002C00088E40100A4002040E5B10100A200204024
4143:1002D000E7B10100BC002E4387F00100000000449C
4144:1002E00086C001005C982043876C000000008043BA
4145:1002F000E5B101004001004380CE01000000A443AD
4146:10030000E43101004001E240879801000400A205A9
4147:10031000486D00000400220A8032000088002D444D
4148:1003200081B0010090002DF22EB001009C002DF054
4149:1003300086B0010090002DF082B00100BA002DF0CF
4150:1003400098B001006B98A212986C0000BC002DF2CE
4151:1003500098B001006B98A0F2986C000000000017A4
4152:1003600082B001009C002041E0B10100B4002D12D8
4153:1003700086D001006E98A341E06D00006F9800F0F8
4154:1003800084B000000000004184B0010080002D43D3
4155:1003900084D0010072989F4280320000000000402B
4156:1003A00085B001007498A342146C00007598000A8F
4157:1003B0000CB00000000000420CB001007798A017BC
4158:1003C0000C6C0000000080170CB001007C982240EB
4159:1003D0000D6C00000000A00A0CEC0000010000F011
4160:1003E00082F401007C98A0410C6C00000000A2F097
4161:1003F00080320100290000408998010009990040DD
4162:10040000813201000000804081B00100D1940040A1
4163:1004100081320100040022038032000004800003C6
4164:1004200044C9010000000046F0B101000000004096
4165:10043000F1B10100000060418794010000800010CC
4166:1004400044C9010000000050F1B101000000004863
4167:10045000F0B1010000000049F0B10100000000030C
4168:10046000E0B101000000004561B101002000001072
4169:1004700062DD01000000A85D059000008B9800403F
4170:1004800081B200000400A205486D00001000000CBD
4171:1004900096F401000400A207966C000000002E4BA9
4172:1004A0001990010005002A0CE4B10100000080044D
4173:1004B000E6B101003E040040899801000999000856
4174:1004C0008A3001009698454861310000001000080C
4175:1004D00062DD01009C9828408730000097982248F0
4176:1004E000777D000004002240276C00000A971D461B
4177:1004F00087B000009F98225F117C00000400221545
4178:10050000623100009D98A8408132000000009D40AB
4179:1005100081B201000000004049B1010000142F4CDD
4180:1005200083B0010000000040F1B10100A298A24197
4181:10053000835000000000804081B2010000000040B4
4182:1005400049B1010030000040A199010000000040C5
4183:1005500093B00100000000401FB00100F698004970
4184:10056000963001000700004906E40100003900034D
4185:1005700006C801000000004005B00100200000D0C6
4186:10058000A0C901000000004193C00100A998A05437
4187:10059000936C000000002E0597B001000080004021
4188:1005A0004999010000000040E1B10100000200A2F1
4189:1005B00044C90100B298A2419750000000000020F9
4190:1005C00049B30100FC980040493101000895004002
4191:1005D0008132010000B52E0897B0010000000040F4
4192:1005E000F1B10100B998A2419750000018000040F5
4193:1005F0009798010000972E4081B201000000004052
4194:10060000F1B10100BD98A2419750000000000040E8
4195:1006100049B1010040182E0597B0010000000040CC
4196:10062000F1B10100C198A2419750000057952040B8
4197:10063000E7B101003094004045990100640000409A
4198:10064000E599010056952040E7B10100B89420419A
4199:10065000E5B10100BA942041E5B101009894004051
4200:1006600045990100020000409798010000000040F9
4201:10067000F1B10100CB98A24197500000000000406A
4202:1006800097B00100000000406FB101000000004B76
4203:1006900068B10100CF988541974000008004004078
4204:1006A000813201000000004039B301000000004029
4205:1006B00037B301000000004035B3010000000040E6
4206:1006C00033B301000000004041B3010000000040CE
4207:1006D0003FB30100EE050040259B010042000040B1
4208:1006E0004B9B0100000000402FB3010000000040C0
4209:1006F0002DB301000000004047B30100000000409E
4210:1007000043B30100600000402B9B01000000005437
4211:10071000EF93010000000055F1930100FFFF00A5D9
4212:100720003C8B01000000002C5BB301000000002C9A
4213:1007300045B301000000004059B301000000004033
4214:1007400057B301000000004027B301000000004043
4215:1007500053B30100EB98A250FD7F0000EB98A2512B
4216:10076000FD7F0000EC9800401DB3000050460040A3
4217:100770001D9B010000C000A688B30100FF3F00A63A
4218:100780003AB3010000C0009D3B9B0100B40500404E
4219:10079000239B0100000000404DB30100080A00A6A1
4220:1007A00014B301000101008A159B01000000002024
4221:1007B00087B30100008000A656B101000000805EF2
4222:1007C00057B501001800004B20E401000600004B63
4223:1007D00096E401000043004B96C801001800001089
4224:1007E00020DC01000000004B209401000000805735
4225:1007F0002190010000992E0A97B0010000000040EE
4226:10080000F1B10100FD98A2419750000000030040A3
4227:100810009798010000A900404599010000000040A0
4228:10082000F1B101000199A241975000003000004051
4229:10083000979801000000005561B101000000004BD5
4230:1008400062B101000599A840813200000599A241DA
4231:10085000975000000000804081B201001000004E5F
4232:1008600098E4010000000007989401000000004394
4233:1008700099E0010000000080989401000000004809
4234:1008800099E001000000004C889401000F996A4033
4235:10089000813200001299224F777D0000F004004061
4236:1008A000813201000000004F61B1010000000044EE
4237:1008B00062B101001399A840813200001A99224ABE
4238:1008C000897C00001899224F777D0000F0040040D9
4239:1008D000813201000000004562B101001899A84072
4240:1008E000813200000000FA4081B201000000804027
4241:1008F00081B201000400A25A1F7C00001000000F0A
4242:1009000098F401000400A25F9904000000008040F8
4243:1009100081B201000000804081B20100040000406B
4244:1009200081B200000400004081B2000004000040D9
4245:1009300081B200000400004081B2000004000040C9
4246:1009400081B200000400004081B2000004000040B9
4247:1009500081B200000400004081B2000004000040A9
4248:1009600081B200000400004081B200000400004099
4249:1009700081B200000400004081B200000400004089
4250:1009800081B200000400004081B200000400004079
4251:1009900081B200000400004081B200000400004069
4252:1009A00081B200000400004081B200000400004059
4253:1009B00081B200000400004081B200000400004049
4254:1009C00081B200000400004081B200000400004039
4255:1009D00081B200000400004081B200000400004029
4256:1009E00081B200000400004081B200000400004019
4257:1009F00081B200000400004081B200000400004009
4258:100A000081B200000400004081B2000004000040F8
4259:100A100081B200000400004081B2000004000040E8
4260:100A200081B200000400004081B2000004000040D8
4261:100A300081B200000400004081B2000004000040C8
4262:100A400081B200000400004081B2000004000040B8
4263:100A500081B200000400004081B2000004000040A8
4264:100A600081B200000400004081B200000400004098
4265:100A700081B200000400004081B200000400004088
4266:100A800081B200000400004081B200000400004078
4267:100A900081B200000400004081B200000400004068
4268:100AA00081B200000400004081B200000400004058
4269:100AB00081B200000400004081B200000400004048
4270:100AC00081B200000400004081B200000400004038
4271:100AD00081B200000400004081B200000400004028
4272:100AE00081B200000400004081B200000400004018
4273:100AF00081B200000400004081B200000400004008
4274:100B000081B200000400004081B2000004000040F7
4275:100B100081B200000400004081B2000004000040E7
4276:100B200081B200000400004081B2000004000040D7
4277:100B300081B200000400004081B2000004000040C7
4278:100B400081B200000400004081B2000004000040B7
4279:100B500081B200000400004081B2000004000040A7
4280:100B600081B200000400004081B200000400004097
4281:100B700081B200000400004081B200000400004087
4282:100B800081B200000400004081B200000400004077
4283:100B900081B200000400004081B200000400004067
4284:100BA00081B200000400004081B200000400004057
4285:100BB00081B200000400004081B200000400004047
4286:100BC00081B200000400004081B200000400004037
4287:100BD00081B200000400004081B200000400004027
4288:100BE00081B200000400004081B200000400004017
4289:100BF00081B200000400004081B200000400004007
4290:100C000081B200000400004081B2000004000040F6
4291:100C100081B200000400004081B2000004000040E6
4292:100C200081B200000400004081B2000004000040D6
4293:100C300081B200000400004081B2000004000040C6
4294:100C400081B200000400004081B2000004000040B6
4295:100C500081B200000400004081B2000004000040A6
4296:100C600081B200000400004081B200000400004096
4297:100C700081B200000400004081B200000400004086
4298:100C800081B200000400004081B200000400004076
4299:100C900081B200000400004081B200000400004066
4300:100CA00081B200000400004081B200000400004056
4301:100CB00081B200000400004081B200000400004046
4302:100CC00081B200000400004081B200000400004036
4303:100CD00081B200000400004081B200000400004026
4304:100CE00081B200000400004081B200000400004016
4305:100CF00081B200000400004081B200000400004006
4306:100D000081B200000400004081B2000004000040F5
4307:100D100081B200000400004081B2000004000040E5
4308:100D200081B200000400004081B2000004000040D5
4309:100D300081B200000400004081B2000004000040C5
4310:100D400081B200000400004081B2000004000040B5
4311:100D500081B200000400004081B2000004000040A5
4312:100D600081B200000400004081B200000400004095
4313:100D700081B200000400004081B200000400004085
4314:100D800081B200000400004081B200000400004075
4315:100D900081B200000400004081B200000400004065
4316:100DA00081B200000400004081B200000400004055
4317:100DB00081B200000400004081B200000400004045
4318:100DC00081B200000400004081B200000400004035
4319:100DD00081B200000400004081B200000400004025
4320:100DE00081B200000400004081B200000400004015
4321:100DF00081B200000400004081B200000400004005
4322:100E000081B200000400004081B2000004000040F4
4323:100E100081B200000400004081B2000004000040E4
4324:100E200081B200000400004081B2000004000040D4
4325:100E300081B200000400004081B2000004000040C4
4326:100E400081B200000400004081B2000004000040B4
4327:100E500081B200000400004081B2000004000040A4
4328:100E600081B200000400004081B200000400004094
4329:100E700081B200000400004081B200000400004084
4330:100E800081B200000400004081B200000400004074
4331:100E900081B200000400004081B200000400004064
4332:100EA00081B200000400004081B200000400004054
4333:100EB00081B200000400004081B200000400004044
4334:100EC00081B200000400004081B200000400004034
4335:100ED00081B200000400004081B200000400004024
4336:100EE00081B200000400004081B200000400004014
4337:100EF00081B200000400004081B200000400004004
4338:100F000081B200000400004081B2000004000040F3
4339:100F100081B200000400004081B2000004000040E3
4340:100F200081B200000400004081B2000004000040D3
4341:100F300081B200000400004081B2000004000040C3
4342:100F400081B200000400004081B2000004000040B3
4343:100F500081B200000400004081B2000004000040A3
4344:100F600081B200000400004081B200000400004093
4345:100F700081B200000400004081B200000400004083
4346:100F800081B200000400004081B200000400004073
4347:100F900081B200000400004081B200000400004063
4348:100FA00081B200000400004081B200000400004053
4349:100FB00081B200000400004081B200000400004043
4350:100FC00081B200000400004081B200000400004033
4351:100FD00081B200000400004081B200000400004023
4352:100FE00081B200000400004081B200000400004013
4353:100FF00081B200000400004081B200000400004003
4354:1010000081B200000400004081B2000004000040F2
4355:1010100081B200000400004081B2000004000040E2
4356:1010200081B200000400004081B2000004000040D2
4357:1010300081B200000400004081B2000004000040C2
4358:1010400081B200000400004081B2000004000040B2
4359:1010500081B200000400004081B2000004000040A2
4360:1010600081B200000400004081B200000400004092
4361:1010700081B200000400004081B200000400004082
4362:1010800081B200000400004081B200000400004072
4363:1010900081B200000400004081B200000400004062
4364:1010A00081B200000400004081B200000400004052
4365:1010B00081B200000400004081B200000400004042
4366:1010C00081B200000400004081B200000400004032
4367:1010D00081B200000400004081B200000400004022
4368:1010E00081B200000400004081B200000400004012
4369:1010F00081B200000400004081B200000400004002
4370:1011000081B200000400004081B2000004000040F1
4371:1011100081B200000400004081B2000004000040E1
4372:1011200081B200000400004081B2000004000040D1
4373:1011300081B200000400004081B2000004000040C1
4374:1011400081B200000400004081B2000004000040B1
4375:1011500081B200000400004081B2000004000040A1
4376:1011600081B200000400004081B200000400004091
4377:1011700081B200000400004081B200000400004081
4378:1011800081B200000400004081B200000400004071
4379:1011900081B200000400004081B200000400004061
4380:1011A00081B200000400004081B200000400004051
4381:1011B00081B200000400004081B200000400004041
4382:1011C00081B200000400004081B200000400004031
4383:1011D00081B200000400004081B200000400004021
4384:1011E00081B200000400004081B200000400004011
4385:1011F00081B200000400004081B200000400004001
4386:1012000081B200000400004081B2000004000040F0
4387:1012100081B200000400004081B2000004000040E0
4388:1012200081B200000400004081B2000004000040D0
4389:1012300081B200000400004081B2000004000040C0
4390:1012400081B200000400004081B2000004000040B0
4391:1012500081B200000400004081B2000004000040A0
4392:1012600081B200000400004081B200000400004090
4393:1012700081B200000400004081B200000400004080
4394:1012800081B200000400004081B200000400004070
4395:1012900081B200000400004081B200000400004060
4396:1012A00081B200000400004081B200000400004050
4397:1012B00081B200000400004081B200000400004040
4398:1012C00081B200000400004081B200000400004030
4399:1012D00081B200000400004081B200000400004020
4400:1012E00081B200000400004081B200000400004010
4401:1012F00081B200000400004081B200000400004000
4402:1013000081B200000400004081B2000004000040EF
4403:1013100081B200000400004081B2000004000040DF
4404:1013200081B200000400004081B2000004000040CF
4405:1013300081B200000400004081B2000004000040BF
4406:1013400081B200000400004081B2000004000040AF
4407:1013500081B200000400004081B20000040000409F
4408:1013600081B200000400004081B20000040000408F
4409:1013700081B200000400004081B20000040000407F
4410:1013800081B200000400004081B20000040000406F
4411:1013900081B200000400004081B20000040000405F
4412:1013A00081B200000400004081B20000040000404F
4413:1013B00081B200000400004081B20000040000403F
4414:1013C00081B200000400004081B20000040000402F
4415:1013D00081B200000400004081B20000040000401F
4416:1013E00081B200000400004081B20000040000400F
4417:1013F00081B200000400004081B2000004000040FF
4418:1014000081B200000400004081B2000004000040EE
4419:1014100081B200000400004081B2000004000040DE
4420:1014200081B200000400004081B2000004000040CE
4421:1014300081B200000400004081B2000004000040BE
4422:1014400081B200000400004081B2000004000040AE
4423:1014500081B200000400004081B20000040000409E
4424:1014600081B200000400004081B20000040000408E
4425:1014700081B200000400004081B20000040000407E
4426:1014800081B200000400004081B20000040000406E
4427:1014900081B200000400004081B20000040000405E
4428:1014A00081B200000400004081B20000040000404E
4429:1014B00081B200000400004081B20000040000403E
4430:1014C00081B200000400004081B20000040000402E
4431:1014D00081B200000400004081B20000040000401E
4432:1014E00081B200000400004081B20000040000400E
4433:1014F00081B200000400004081B2000004000040FE
4434:1015000081B200000400004081B2000004000040ED
4435:1015100081B200000400004081B2000004000040DD
4436:1015200081B200000400004081B2000004000040CD
4437:1015300081B200000400004081B2000004000040BD
4438:1015400081B200000400004081B2000004000040AD
4439:1015500081B200000400004081B20000040000409D
4440:1015600081B200000400004081B20000040000408D
4441:1015700081B200000400004081B20000040000407D
4442:1015800081B200000400004081B20000040000406D
4443:1015900081B200000400004081B20000040000405D
4444:1015A00081B200000400004081B20000040000404D
4445:1015B00081B200000400004081B20000040000403D
4446:1015C00081B200000400004081B20000040000402D
4447:1015D00081B200000400004081B20000040000401D
4448:1015E00081B200000400004081B20000040000400D
4449:1015F00081B200000400004081B2000004000040FD
4450:1016000081B200000400004081B2000004000040EC
4451:1016100081B200000400004081B2000004000040DC
4452:1016200081B200000400004081B2000004000040CC
4453:1016300081B200000400004081B2000004000040BC
4454:1016400081B200000400004081B2000004000040AC
4455:1016500081B200000400004081B20000040000409C
4456:1016600081B200000400004081B20000040000408C
4457:1016700081B200000400004081B20000040000407C
4458:1016800081B200000400004081B20000040000406C
4459:1016900081B200000400004081B20000040000405C
4460:1016A00081B200000400004081B20000040000404C
4461:1016B00081B200000400004081B20000040000403C
4462:1016C00081B200000400004081B20000040000402C
4463:1016D00081B200000400004081B20000040000401C
4464:1016E00081B200000400004081B20000040000400C
4465:1016F00081B200000400004081B2000004000040FC
4466:1017000081B200000400004081B2000004000040EB
4467:1017100081B200000400004081B2000004000040DB
4468:1017200081B200000400004081B2000004000040CB
4469:1017300081B200000400004081B2000004000040BB
4470:1017400081B200000400004081B2000004000040AB
4471:1017500081B200000400004081B20000040000409B
4472:1017600081B200000400004081B20000040000408B
4473:1017700081B200000400004081B20000040000407B
4474:1017800081B200000400004081B20000040000406B
4475:1017900081B200000400004081B20000040000405B
4476:1017A00081B200000400004081B20000040000404B
4477:1017B00081B200000400004081B20000040000403B
4478:1017C00081B200000400004081B20000040000402B
4479:1017D00081B200000400004081B20000040000401B
4480:1017E00081B200000400004081B20000040000400B
4481:1017F00081B200000400004081B2000004000040FB
4482:1018000081B200000400004081B2000004000040EA
4483:1018100081B200000400004081B2000004000040DA
4484:1018200081B200000400004081B2000004000040CA
4485:1018300081B200000400004081B2000004000040BA
4486:1018400081B200000400004081B2000004000040AA
4487:1018500081B200000400004081B20000040000409A
4488:1018600081B200000400004081B20000040000408A
4489:1018700081B200000400004081B20000040000407A
4490:1018800081B200000400004081B20000040000406A
4491:1018900081B200000400004081B20000040000405A
4492:1018A00081B200000400004081B20000040000404A
4493:1018B00081B200000400004081B20000040000403A
4494:1018C00081B200000400004081B20000040000402A
4495:1018D00081B200000400004081B20000040000401A
4496:1018E00081B200000400004081B20000040000400A
4497:1018F00081B200000400004081B2000004000040FA
4498:1019000081B200000400004081B2000004000040E9
4499:1019100081B200000400004081B2000004000040D9
4500:1019200081B200000400004081B2000004000040C9
4501:1019300081B200000400004081B2000004000040B9
4502:1019400081B200000400004081B2000004000040A9
4503:1019500081B200000400004081B200000400004099
4504:1019600081B200000400004081B200000400004089
4505:1019700081B200000400004081B200000400004079
4506:1019800081B200000400004081B200000400004069
4507:1019900081B200000400004081B200000400004059
4508:1019A00081B200000400004081B200000400004049
4509:1019B00081B200000400004081B200000400004039
4510:1019C00081B200000400004081B200000400004029
4511:1019D00081B200000400004081B200000400004019
4512:1019E00081B200000400004081B200000400004009
4513:1019F00081B200000400004081B2000004000040F9
4514:101A000081B200000400004081B2000004000040E8
4515:101A100081B200000400004081B2000004000040D8
4516:101A200081B200000400004081B2000004000040C8
4517:101A300081B200000400004081B2000004000040B8
4518:101A400081B200000400004081B2000004000040A8
4519:101A500081B200000400004081B200000400004098
4520:101A600081B200000400004081B200000400004088
4521:101A700081B200000400004081B200000400004078
4522:101A800081B200000400004081B200000400004068
4523:101A900081B200000400004081B200000400004058
4524:101AA00081B200000400004081B200000400004048
4525:101AB00081B200000400004081B200000400004038
4526:101AC00081B200000400004081B200000400004028
4527:101AD00081B200000400004081B200000400004018
4528:101AE00081B200000400004081B200000400004008
4529:101AF00081B200000400004081B2000004000040F8
4530:101B000081B200000400004081B2000004000040E7
4531:101B100081B200000400004081B2000004000040D7
4532:101B200081B200000400004081B2000004000040C7
4533:101B300081B200000400004081B2000004000040B7
4534:101B400081B200000400004081B2000004000040A7
4535:101B500081B200000400004081B200000400004097
4536:101B600081B200000400004081B200000400004087
4537:101B700081B200000400004081B200000400004077
4538:101B800081B200000400004081B200000400004067
4539:101B900081B200000400004081B200000400004057
4540:101BA00081B200000400004081B200000400004047
4541:101BB00081B200000400004081B200000400004037
4542:101BC00081B200000400004081B200000400004027
4543:101BD00081B200000400004081B200000400004017
4544:101BE00081B200000400004081B200000400004007
4545:101BF00081B200000400004081B2000004000040F7
4546:101C000081B200000400004081B2000004000040E6
4547:101C100081B200000400004081B2000004000040D6
4548:101C200081B200000400004081B2000004000040C6
4549:101C300081B200000400004081B2000004000040B6
4550:101C400081B200000400004081B2000004000040A6
4551:101C500081B200000400004081B200000400004096
4552:101C600081B200000400004081B200000400004086
4553:101C700081B200000400004081B200000400004076
4554:101C800081B200000400004081B200000400004066
4555:101C900081B200000400004081B200000400004056
4556:101CA00081B200000400004081B200000400004046
4557:101CB00081B200000400004081B200000400004036
4558:101CC00081B200000400004081B200000400004026
4559:101CD00081B200000400004081B200000400004016
4560:101CE00081B200000400004081B200000400004006
4561:101CF00081B200000400004081B2000004000040F6
4562:101D000081B200000400004081B2000004000040E5
4563:101D100081B200000400004081B2000004000040D5
4564:101D200081B200000400004081B2000004000040C5
4565:101D300081B200000400004081B2000004000040B5
4566:101D400081B200000400004081B2000004000040A5
4567:101D500081B200000400004081B200000400004095
4568:101D600081B200000400004081B200000400004085
4569:101D700081B200000400004081B200000400004075
4570:101D800081B200000400004081B200000400004065
4571:101D900081B200000400004081B200000400004055
4572:101DA00081B200000400004081B200000400004045
4573:101DB00081B200000400004081B200000400004035
4574:101DC00081B200000400004081B200000400004025
4575:101DD00081B200000400004081B200000400004015
4576:101DE00081B200000400004081B200000400004005
4577:101DF00081B200000400004081B2000004000040F5
4578:101E000081B200000400004081B2000004000040E4
4579:101E100081B200000400004081B2000004000040D4
4580:101E200081B200000400004081B2000004000040C4
4581:101E300081B200000400004081B2000004000040B4
4582:101E400081B200000400004081B2000004000040A4
4583:101E500081B200000400004081B200000400004094
4584:101E600081B200000400004081B200000400004084
4585:101E700081B200000400004081B200000400004074
4586:101E800081B200000400004081B200000400004064
4587:101E900081B200000400004081B200000400004054
4588:101EA00081B200000400004081B200000400004044
4589:101EB00081B200000400004081B200000400004034
4590:101EC00081B200000400004081B200000400004024
4591:101ED00081B200000400004081B200000400004014
4592:101EE00081B200000400004081B200000400004004
4593:101EF00081B200000400004081B2000004000040F4
4594:101F000081B200000400004081B2000004000040E3
4595:101F100081B200000400004081B2000004000040D3
4596:101F200081B200000400004081B2000004000040C3
4597:101F300081B200000400004081B2000004000040B3
4598:101F400081B200000400004081B2000004000040A3
4599:101F500081B200000400004081B200000400004093
4600:101F600081B200000400004081B200000400004083
4601:101F700081B200000400004081B200000400004073
4602:101F800081B200000400004081B200000400004063
4603:101F900081B200000400004081B200000400004053
4604:101FA00081B200000400004081B200000400004043
4605:101FB00081B200000400004081B200000400004033
4606:101FC00081B200000400004081B200000400004023
4607:101FD00081B200000400004081B200000400004013
4608:101FE00081B200000400004081B200000400004003
4609:101FF00081B200000400004081B2000004000040F3
4610:1020000081B200000400004081B2000004000040E2
4611:1020100081B200000400004081B2000004000040D2
4612:1020200081B200000400004081B2000004000040C2
4613:1020300081B200000400004081B2000004000040B2
4614:1020400081B200000400004081B2000004000040A2
4615:1020500081B200000400004081B200000400004092
4616:1020600081B200000400004081B200000400004082
4617:1020700081B200000400004081B200000400004072
4618:1020800081B200000400004081B200000400004062
4619:1020900081B200000400004081B200000400004052
4620:1020A00081B200000400004081B200000400004042
4621:1020B00081B200000400004081B200000400004032
4622:1020C00081B200000400004081B200000400004022
4623:1020D00081B200000400004081B200000400004012
4624:1020E00081B200000400004081B200000400004002
4625:1020F00081B200000400004081B2000004000040F2
4626:1021000081B200000400004081B2000004000040E1
4627:1021100081B200000400004081B2000004000040D1
4628:1021200081B200000400004081B2000004000040C1
4629:1021300081B200000400004081B2000004000040B1
4630:1021400081B200000400004081B2000004000040A1
4631:1021500081B200000400004081B200000400004091
4632:1021600081B200000400004081B200000400004081
4633:1021700081B200000400004081B200000400004071
4634:1021800081B200000400004081B200000400004061
4635:1021900081B200000400004081B200000400004051
4636:1021A00081B200000400004081B200000400004041
4637:1021B00081B200000400004081B200000400004031
4638:1021C00081B200000400004081B200000400004021
4639:1021D00081B200000400004081B200000400004011
4640:1021E00081B200000400004081B200000400004001
4641:1021F00081B200000400004081B2000004000040F1
4642:1022000081B200000400004081B2000004000040E0
4643:1022100081B200000400004081B2000004000040D0
4644:1022200081B200000400004081B2000004000040C0
4645:1022300081B200000400004081B2000004000040B0
4646:1022400081B200000400004081B2000004000040A0
4647:1022500081B200000400004081B200000400004090
4648:1022600081B200000400004081B200000400004080
4649:1022700081B200000400004081B200000400004070
4650:1022800081B200000400004081B200000400004060
4651:1022900081B200000400004081B200000400004050
4652:1022A00081B200000400004081B200000400004040
4653:1022B00081B200000400004081B200000400004030
4654:1022C00081B200000400004081B200000400004020
4655:1022D00081B200000400004081B200000400004010
4656:1022E00081B200000400004081B200000400004000
4657:1022F00081B200000400004081B2000004000040F0
4658:1023000081B200000400004081B2000004000040DF
4659:1023100081B200000400004081B2000004000040CF
4660:1023200081B200000400004081B2000004000040BF
4661:1023300081B200000400004081B2000004000040AF
4662:1023400081B200000400004081B20000040000409F
4663:1023500081B200000400004081B20000040000408F
4664:1023600081B200000400004081B20000040000407F
4665:1023700081B200000400004081B20000040000406F
4666:1023800081B200000400004081B20000040000405F
4667:1023900081B200000400004081B20000040000404F
4668:1023A00081B200000400004081B20000040000403F
4669:1023B00081B200000400004081B20000040000402F
4670:1023C00081B200000400004081B20000040000401F
4671:1023D00081B200000400004081B20000040000400F
4672:1023E00081B200000400004081B2000004000040FF
4673:1023F00081B200000400004081B2000004000040EF
4674:1024000081B200000400004081B2000004000040DE
4675:1024100081B200000400004081B2000004000040CE
4676:1024200081B200000400004081B2000004000040BE
4677:1024300081B200000400004081B2000004000040AE
4678:1024400081B200000400004081B20000040000409E
4679:1024500081B200000400004081B20000040000408E
4680:1024600081B200000400004081B20000040000407E
4681:1024700081B200000400004081B20000040000406E
4682:1024800081B200000400004081B20000040000405E
4683:1024900081B200000400004081B20000040000404E
4684:1024A00081B200000400004081B20000040000403E
4685:1024B00081B200000400004081B20000040000402E
4686:1024C00081B200000400004081B20000040000401E
4687:1024D00081B200000400004081B20000040000400E
4688:1024E00081B200000400004081B2000004000040FE
4689:1024F00081B200000400004081B2000004000040EE
4690:1025000081B200000400004081B2000004000040DD
4691:1025100081B200000400004081B2000004000040CD
4692:1025200081B200000400004081B2000004000040BD
4693:1025300081B200000400004081B2000004000040AD
4694:1025400081B200000400004081B20000040000409D
4695:1025500081B200000400004081B20000040000408D
4696:1025600081B200000400004081B20000040000407D
4697:1025700081B200000400004081B20000040000406D
4698:1025800081B200000400004081B20000040000405D
4699:1025900081B200000400004081B20000040000404D
4700:1025A00081B200000400004081B20000040000403D
4701:1025B00081B200000400004081B20000040000402D
4702:1025C00081B200000400004081B20000040000401D
4703:1025D00081B200000400004081B20000040000400D
4704:1025E00081B200000400004081B2000004000040FD
4705:1025F00081B200000400004081B2000004000040ED
4706:1026000081B200000400004081B2000004000040DC
4707:1026100081B200000400004081B2000004000040CC
4708:1026200081B200000400004081B2000004000040BC
4709:1026300081B200000400004081B2000004000040AC
4710:1026400081B200000400004081B20000040000409C
4711:1026500081B200000400004081B20000040000408C
4712:1026600081B200000400004081B20000040000407C
4713:1026700081B200000400004081B20000040000406C
4714:1026800081B200000400004081B20000040000405C
4715:1026900081B200000400004081B20000040000404C
4716:1026A00081B200000400004081B20000040000403C
4717:1026B00081B200000400004081B20000040000402C
4718:1026C00081B200000400004081B20000040000401C
4719:1026D00081B200000400004081B20000040000400C
4720:1026E00081B200000400004081B2000004000040FC
4721:1026F00081B200000400004081B2000004000040EC
4722:1027000081B200000400004081B2000004000040DB
4723:1027100081B200000400004081B2000004000040CB
4724:1027200081B200000400004081B2000004000040BB
4725:1027300081B200000400004081B2000004000040AB
4726:1027400081B200000400004081B20000040000409B
4727:1027500081B200000400004081B20000040000408B
4728:1027600081B200000400004081B20000040000407B
4729:1027700081B200000400004081B20000040000406B
4730:1027800081B200000400004081B20000040000405B
4731:1027900081B200000400004081B20000040000404B
4732:1027A00081B200000400004081B20000040000403B
4733:1027B00081B200000400004081B20000040000402B
4734:1027C00081B200000400004081B20000040000401B
4735:1027D00081B200000400004081B20000040000400B
4736:1027E00081B200000400004081B2000004000040FB
4737:1027F00081B200000400004081B2000004000040EB
4738:1028000081B200000400004081B2000004000040DA
4739:1028100081B200000400004081B2000004000040CA
4740:1028200081B200000400004081B2000004000040BA
4741:1028300081B200000400004081B2000004000040AA
4742:1028400081B200000400004081B20000040000409A
4743:1028500081B200000400004081B20000040000408A
4744:1028600081B200000400004081B20000040000407A
4745:1028700081B200000400004081B20000040000406A
4746:1028800081B200000400004081B20000040000405A
4747:1028900081B200000400004081B20000040000404A
4748:1028A00081B200000400004081B20000040000403A
4749:1028B00081B200000400004081B20000040000402A
4750:1028C00081B200000400004081B20000040000401A
4751:1028D00081B200000400004081B20000040000400A
4752:1028E00081B200000400004081B2000004000040FA
4753:1028F00081B200000400004081B2000004000040EA
4754:1029000081B200000400004081B2000004000040D9
4755:1029100081B200000400004081B2000004000040C9
4756:1029200081B200000400004081B2000004000040B9
4757:1029300081B200000400004081B2000004000040A9
4758:1029400081B200000400004081B200000400004099
4759:1029500081B200000400004081B200000400004089
4760:1029600081B200000400004081B200000400004079
4761:1029700081B200000400004081B200000400004069
4762:1029800081B200000400004081B200000400004059
4763:1029900081B200000400004081B200000400004049
4764:1029A00081B200000400004081B200000400004039
4765:1029B00081B200000400004081B200000400004029
4766:1029C00081B200000400004081B200000400004019
4767:1029D00081B200000400004081B200000400004009
4768:1029E00081B200000400004081B2000004000040F9
4769:1029F00081B200000400004081B2000004000040E9
4770:102A000081B200000400004081B2000004000040D8
4771:102A100081B200000400004081B2000004000040C8
4772:102A200081B200000400004081B2000004000040B8
4773:102A300081B200000400004081B2000004000040A8
4774:102A400081B200000400004081B200000400004098
4775:102A500081B200000400004081B200000400004088
4776:102A600081B200000400004081B200000400004078
4777:102A700081B200000400004081B200000400004068
4778:102A800081B200000400004081B200000400004058
4779:102A900081B200000400004081B200000400004048
4780:102AA00081B200000400004081B200000400004038
4781:102AB00081B200000400004081B200000400004028
4782:102AC00081B200000400004081B200000400004018
4783:102AD00081B200000400004081B200000400004008
4784:102AE00081B200000400004081B2000004000040F8
4785:102AF00081B200000400004081B2000004000040E8
4786:102B000081B200000400004081B2000004000040D7
4787:102B100081B200000400004081B2000004000040C7
4788:102B200081B200000400004081B2000004000040B7
4789:102B300081B200000400004081B2000004000040A7
4790:102B400081B200000400004081B200000400004097
4791:102B500081B200000400004081B200000400004087
4792:102B600081B200000400004081B200000400004077
4793:102B700081B200000400004081B200000400004067
4794:102B800081B200000400004081B200000400004057
4795:102B900081B200000400004081B200000400004047
4796:102BA00081B200000400004081B200000400004037
4797:102BB00081B200000400004081B200000400004027
4798:102BC00081B200000400004081B200000400004017
4799:102BD00081B200000400004081B200000400004007
4800:102BE00081B200000400004081B2000004000040F7
4801:102BF00081B200000400004081B2000004000040E7
4802:102C000081B200000400004081B2000004000040D6
4803:102C100081B200000400004081B2000004000040C6
4804:102C200081B200000400004081B2000004000040B6
4805:102C300081B200000400004081B2000004000040A6
4806:102C400081B200000400004081B200000400004096
4807:102C500081B200000400004081B200000400004086
4808:102C600081B200000400004081B200000400004076
4809:102C700081B200000400004081B200000400004066
4810:102C800081B200000400004081B200000400004056
4811:102C900081B200000400004081B200000400004046
4812:102CA00081B200000400004081B200000400004036
4813:102CB00081B200000400004081B200000400004026
4814:102CC00081B200000400004081B200000400004016
4815:102CD00081B200000400004081B200000400004006
4816:102CE00081B200000400004081B2000004000040F6
4817:102CF00081B200000400004081B2000004000040E6
4818:102D000081B200000400004081B2000004000040D5
4819:102D100081B200000400004081B2000004000040C5
4820:102D200081B200000400004081B2000004000040B5
4821:102D300081B200000400004081B2000004000040A5
4822:102D400081B200000400004081B200000400004095
4823:102D500081B200000400004081B200000400004085
4824:102D600081B200000400004081B200000400004075
4825:102D700081B200000400004081B200000400004065
4826:102D800081B200000400004081B200000400004055
4827:102D900081B200000400004081B200000400004045
4828:102DA00081B200000400004081B200000400004035
4829:102DB00081B200000400004081B200000400004025
4830:102DC00081B200000400004081B200000400004015
4831:102DD00081B200000400004081B200000400004005
4832:102DE00081B200000400004081B2000004000040F5
4833:102DF00081B200000400004081B2000004000040E5
4834:102E000081B200000400004081B2000004000040D4
4835:102E100081B200000400004081B2000004000040C4
4836:102E200081B200000400004081B2000004000040B4
4837:102E300081B200000400004081B2000004000040A4
4838:102E400081B200000400004081B200000400004094
4839:102E500081B200000400004081B200000400004084
4840:102E600081B200000400004081B200000400004074
4841:102E700081B200000400004081B200000400004064
4842:102E800081B200000400004081B200000400004054
4843:102E900081B200000400004081B200000400004044
4844:102EA00081B200000400004081B200000400004034
4845:102EB00081B200000400004081B200000400004024
4846:102EC00081B200000400004081B200000400004014
4847:102ED00081B200000400004081B200000400004004
4848:102EE00081B200000400004081B2000004000040F4
4849:102EF00081B200000400004081B2000004000040E4
4850:102F000081B200000400004081B2000004000040D3
4851:102F100081B200000400004081B2000004000040C3
4852:102F200081B200000400004081B2000004000040B3
4853:102F300081B200000400004081B2000004000040A3
4854:102F400081B200000400004081B200000400004093
4855:102F500081B200000400004081B200000400004083
4856:102F600081B200000400004081B200000400004073
4857:102F700081B200000400004081B200000400004063
4858:102F800081B200000400004081B200000400004053
4859:102F900081B200000400004081B200000400004043
4860:102FA00081B200000400004081B200000400004033
4861:102FB00081B200000400004081B200000400004023
4862:102FC00081B200000400004081B200000400004013
4863:102FD00081B200000400004081B200000400004003
4864:102FE00081B200000400004081B2000004000040F3
4865:102FF00081B200000400004081B2000004000040E3
4866:1030000081B200000400004081B2000004000040D2
4867:1030100081B200000400004081B2000004000040C2
4868:1030200081B200000400004081B2000004000040B2
4869:1030300081B200000400004081B2000004000040A2
4870:1030400081B200000400004081B200000400004092
4871:1030500081B200000400004081B200000400004082
4872:1030600081B200000400004081B200000400004072
4873:1030700081B200000400004081B200000400004062
4874:1030800081B200000400004081B200000400004052
4875:1030900081B200000400004081B200000400004042
4876:1030A00081B200000400004081B200000400004032
4877:1030B00081B200000400004081B200000400004022
4878:1030C00081B200000400004081B200000400004012
4879:1030D00081B200000400004081B200000400004002
4880:1030E00081B200000400004081B2000004000040F2
4881:1030F00081B200000400004081B2000004000040E2
4882:1031000081B200000400004081B2000004000040D1
4883:1031100081B200000400004081B2000004000040C1
4884:1031200081B200000400004081B2000004000040B1
4885:1031300081B200000400004081B2000004000040A1
4886:1031400081B200000400004081B200000400004091
4887:1031500081B200000400004081B200000400004081
4888:1031600081B200000400004081B200000400004071
4889:1031700081B200000400004081B200000400004061
4890:1031800081B200000400004081B200000400004051
4891:1031900081B200000400004081B200000400004041
4892:1031A00081B200000400004081B200000400004031
4893:1031B00081B200000400004081B200000400004021
4894:1031C00081B200000400004081B200000400004011
4895:1031D00081B200000400004081B200000400004001
4896:1031E00081B200000400004081B2000004000040F1
4897:1031F00081B200000400004081B2000004000040E1
4898:1032000081B200000400004081B2000004000040D0
4899:1032100081B200000400004081B2000004000040C0
4900:1032200081B200000400004081B2000004000040B0
4901:1032300081B200000400004081B2000004000040A0
4902:1032400081B200000400004081B200000400004090
4903:1032500081B200000400004081B200000400004080
4904:1032600081B200000400004081B200000400004070
4905:1032700081B200000400004081B200000400004060
4906:1032800081B200000400004081B200000400004050
4907:1032900081B200000400004081B200000400004040
4908:1032A00081B200000400004081B200000400004030
4909:1032B00081B200000400004081B200000400004020
4910:1032C00081B200000400004081B200000400004010
4911:1032D00081B200000400004081B200000400004000
4912:1032E00081B200000400004081B2000004000040F0
4913:1032F00081B200000400004081B2000004000040E0
4914:1033000081B200000400004081B2000004000040CF
4915:1033100081B200000400004081B2000004000040BF
4916:1033200081B200000400004081B2000004000040AF
4917:1033300081B200000400004081B20000040000409F
4918:1033400081B200000400004081B20000040000408F
4919:1033500081B200000400004081B20000040000407F
4920:1033600081B200000400004081B20000040000406F
4921:1033700081B200000400004081B20000040000405F
4922:1033800081B200000400004081B20000040000404F
4923:1033900081B200000400004081B20000040000403F
4924:1033A00081B200000400004081B20000040000402F
4925:1033B00081B200000400004081B20000040000401F
4926:1033C00081B200000400004081B20000040000400F
4927:1033D00081B200000400004081B2000004000040FF
4928:1033E00081B200000400004081B2000004000040EF
4929:1033F00081B200000400004081B2000004000040DF
4930:1034000081B200000400004081B2000004000040CE
4931:1034100081B200000400004081B2000004000040BE
4932:1034200081B200000400004081B2000004000040AE
4933:1034300081B200000400004081B20000040000409E
4934:1034400081B200000400004081B20000040000408E
4935:1034500081B200000400004081B20000040000407E
4936:1034600081B200000400004081B20000040000406E
4937:1034700081B200000400004081B20000040000405E
4938:1034800081B200000400004081B20000040000404E
4939:1034900081B200000400004081B20000040000403E
4940:1034A00081B200000400004081B20000040000402E
4941:1034B00081B200000400004081B20000040000401E
4942:1034C00081B200000400004081B20000040000400E
4943:1034D00081B200000400004081B2000004000040FE
4944:1034E00081B200000400004081B2000004000040EE
4945:1034F00081B200000400004081B2000004000040DE
4946:1035000081B200000400004081B2000004000040CD
4947:1035100081B200000400004081B2000004000040BD
4948:1035200081B200000400004081B2000004000040AD
4949:1035300081B200000400004081B20000040000409D
4950:1035400081B200000400004081B20000040000408D
4951:1035500081B200000400004081B20000040000407D
4952:1035600081B200000400004081B20000040000406D
4953:1035700081B200000400004081B20000040000405D
4954:1035800081B200000400004081B20000040000404D
4955:1035900081B200000400004081B20000040000403D
4956:1035A00081B200000400004081B20000040000402D
4957:1035B00081B200000400004081B20000040000401D
4958:1035C00081B200000400004081B20000040000400D
4959:1035D00081B200000400004081B2000004000040FD
4960:1035E00081B200000400004081B2000004000040ED
4961:1035F00081B200000400004081B2000004000040DD
4962:1036000081B200000400004081B2000004000040CC
4963:1036100081B200000400004081B2000004000040BC
4964:1036200081B200000400004081B2000004000040AC
4965:1036300081B200000400004081B20000040000409C
4966:1036400081B200000400004081B20000040000408C
4967:1036500081B200000400004081B20000040000407C
4968:1036600081B200000400004081B20000040000406C
4969:1036700081B200000400004081B20000040000405C
4970:1036800081B200000400004081B20000040000404C
4971:1036900081B200000400004081B20000040000403C
4972:1036A00081B200000400004081B20000040000402C
4973:1036B00081B200000400004081B20000040000401C
4974:1036C00081B200000400004081B20000040000400C
4975:1036D00081B200000400004081B2000004000040FC
4976:1036E00081B200000400004081B2000004000040EC
4977:1036F00081B200000400004081B2000004000040DC
4978:1037000081B200000400004081B2000004000040CB
4979:1037100081B200000400004081B2000004000040BB
4980:1037200081B200000400004081B2000004000040AB
4981:1037300081B200000400004081B20000040000409B
4982:1037400081B200000400004081B20000040000408B
4983:1037500081B200000400004081B20000040000407B
4984:1037600081B200000400004081B20000040000406B
4985:1037700081B200000400004081B20000040000405B
4986:1037800081B200000400004081B20000040000404B
4987:1037900081B200000400004081B20000040000403B
4988:1037A00081B200000400004081B20000040000402B
4989:1037B00081B200000400004081B20000040000401B
4990:1037C00081B200000400004081B20000040000400B
4991:1037D00081B200000400004081B2000004000040FB
4992:1037E00081B200000400004081B2000004000040EB
4993:1037F00081B200000400004081B2000004000040DB
4994:1038000081B200000400004081B2000004000040CA
4995:1038100081B200000400004081B2000004000040BA
4996:1038200081B200000400004081B2000004000040AA
4997:1038300081B200000400004081B20000040000409A
4998:1038400081B200000400004081B20000040000408A
4999:1038500081B200000400004081B20000040000407A
5000:1038600081B200000400004081B20000040000406A
5001:1038700081B200000400004081B20000040000405A
5002:1038800081B200000400004081B20000040000404A
5003:1038900081B200000400004081B20000040000403A
5004:1038A00081B200000400004081B20000040000402A
5005:1038B00081B200000400004081B20000040000401A
5006:1038C00081B200000400004081B20000040000400A
5007:1038D00081B200000400004081B2000004000040FA
5008:1038E00081B200000400004081B2000004000040EA
5009:1038F00081B200000400004081B2000004000040DA
5010:1039000081B200000400004081B2000004000040C9
5011:1039100081B200000400004081B2000004000040B9
5012:1039200081B200000400004081B2000004000040A9
5013:1039300081B200000400004081B200000400004099
5014:1039400081B200000400004081B200000400004089
5015:1039500081B200000400004081B200000400004079
5016:1039600081B200000400004081B200000400004069
5017:1039700081B200000400004081B200000400004059
5018:1039800081B200000400004081B200000400004049
5019:1039900081B200000400004081B200000400004039
5020:1039A00081B200000400004081B200000400004029
5021:1039B00081B200000400004081B200000400004019
5022:1039C00081B200000400004081B200000400004009
5023:1039D00081B200000400004081B2000004000040F9
5024:1039E00081B200000400004081B2000004000040E9
5025:1039F00081B200000400004081B2000004000040D9
5026:103A000081B200000400004081B2000004000040C8
5027:103A100081B200000400004081B2000004000040B8
5028:103A200081B200000400004081B2000004000040A8
5029:103A300081B200000400004081B200000400004098
5030:103A400081B200000400004081B200000400004088
5031:103A500081B200000400004081B200000400004078
5032:103A600081B200000400004081B200000400004068
5033:103A700081B200000400004081B200000400004058
5034:103A800081B200000400004081B200000400004048
5035:103A900081B200000400004081B200000400004038
5036:103AA00081B200000400004081B200000400004028
5037:103AB00081B200000400004081B200000400004018
5038:103AC00081B200000400004081B200000400004008
5039:103AD00081B200000400004081B2000004000040F8
5040:103AE00081B200000400004081B2000004000040E8
5041:103AF00081B200000400004081B2000004000040D8
5042:103B000081B200000400004081B2000004000040C7
5043:103B100081B200000400004081B2000004000040B7
5044:103B200081B200000400004081B2000004000040A7
5045:103B300081B200000400004081B200000400004097
5046:103B400081B200000400004081B200000400004087
5047:103B500081B200000400004081B200000400004077
5048:103B600081B200000400004081B200000400004067
5049:103B700081B200000400004081B200000400004057
5050:103B800081B200000400004081B200000400004047
5051:103B900081B200000400004081B200000400004037
5052:103BA00081B200000400004081B200000400004027
5053:103BB00081B200000400004081B200000400004017
5054:103BC00081B200000400004081B200000400004007
5055:103BD00081B200000400004081B2000004000040F7
5056:103BE00081B200000400004081B2000004000040E7
5057:103BF00081B200000400004081B2000004000040D7
5058:103C000081B200000400004081B2000004000040C6
5059:103C100081B200000400004081B2000004000040B6
5060:103C200081B200000400004081B2000004000040A6
5061:103C300081B200000400004081B200000400004096
5062:103C400081B200000400004081B200000400004086
5063:103C500081B200000400004081B200000400004076
5064:103C600081B200000400004081B200000400004066
5065:103C700081B200000400004081B200000400004056
5066:103C800081B200000400004081B200000400004046
5067:103C900081B200000400004081B200000400004036
5068:103CA00081B200000400004081B200000400004026
5069:103CB00081B200000400004081B200000400004016
5070:103CC00081B200000400004081B200000400004006
5071:103CD00081B200000400004081B2000004000040F6
5072:103CE00081B200000400004081B2000004000040E6
5073:103CF00081B200000400004081B2000004000040D6
5074:103D000081B200000400004081B2000004000040C5
5075:103D100081B200000400004081B2000004000040B5
5076:103D200081B200000400004081B2000004000040A5
5077:103D300081B200000400004081B200000400004095
5078:103D400081B200000400004081B200000400004085
5079:103D500081B20000AE9F00889AB00000AE9F00883C
5080:103D60009AB00000AE9F00889AB00000AE9F008815
5081:103D70009AB00000AE9F00889AB000000000008852
5082:103D80009AB00100AE9F414081320000B29F2240B4
5083:103D90007B6F00000000194081B20100AE9F00401F
5084:103DA00081B20000000019417BB30100000000A4B3
5085:103DB000C4B30100000000A1C6B3010000002FA29F
5086:103DC000C8B301000814004049990100A89F004DA4
5087:103DD0009ACC0100BB9F2640813200000000004CBD
5088:103DE00049C10100B99FA2419B500000BF9F808044
5089:103DF0008032000000005249FD9301000000004A9B
5090:103E0000FD930100C29F0042CD9300000000514A83
5091:103E1000FD93010000000049FD930100C29F004393
5092:103E2000CB9300000000504081B20100D29F0040BF
5093:103E300019990100000000F09AB001000000004450
5094:103E400049D10100000040F080B201000000414D66
5095:103E500080B20100CA9F00401999010000004C4047
5096:103E600081B201000000004449D10100000000F0CF
5097:103E70009AB001000000004D10B10000000000E207
5098:103E800049B10100000000E343B10100000000E47B
5099:103E900045B10100000000407BB301000000484F25
5100:103EA00040B10100D29F004081B2000004000040F8
5101:103EB00081B200000400004081B200000400004014
5102:103EC00081B200000400004081B200000400004004
5103:103ED00081B20000040000CB81C8010022830040B1
5104:103EE000F29300005582004081B20000400500407E
5105:103EF00081B200001806004081B200002283004019
5106:103F000081B20000C682004081B2000043810040BF
5107:103F100081B200004181004081B20000B8800040C1
5108:103F200081B20000F087004081B20000238300408E
5109:103F300081B200002783004081B20000BF9400409E
5110:103F400081B200009498004081B200007F9400404C
5111:103F500081B200007F98004081B200008D95004042
5112:103F600081B200001695004081B20000109500401B
5113:103F700081B20000B182004081B20000209900406F
5114:103F800081B200000400004081B200000400004043
5115:103F900081B200000400004081B200000400004033
5116:103FA00081B200000400004081B200000400004023
5117:103FB00081B200000400004081B200000400004013
5118:103FC00081B200000400004081B200000400004003
5119:103FD00081B200000400004081B2000004000040F3
5120:103FE00081B200000400004081B2000004000040E3
5121:103FF00081B200000400004081B2000004000040D3
5122:1040000081B200000400004081B2000004000040C2
5123:0440100081B2000079
5124:00000001FF
diff --git a/firmware/slicoss/oasisdownload.sys.ihex b/firmware/slicoss/oasisdownload.sys.ihex
deleted file mode 100644
index 82026c2cd957..000000000000
--- a/firmware/slicoss/oasisdownload.sys.ihex
+++ /dev/null
@@ -1,5124 +0,0 @@
1:1000000002000000004000000000010000000000AD
2:10001000008000001500004081B200001B0000407D
3:1000200081B200002100004081B2000003000040C6
4:1000300081B20000000000A898B001000480A24036
5:10004000FD7F00000900A249DD7D00000000004C9A
6:1000500080B2010007000040D1B100000000004C58
7:1000600080B201000900A240757D000060000040E0
8:10007000619901000B00A8B17E3100000900004029
9:1000800081B2000000808F981831000010000098A5
10:1000900080E40100000041988094010000000040CD
11:1000A00081B201001000009880E401000E00409829
12:1000B000809400001100004081B200000000004068
13:1000C000A59901001900294081320000190014BCD3
14:1000D000803200000E0093BC8032000000005040CF
15:1000E00081B201000080004081B200001000004099
16:1000F000A59901001F002940813200001F0014BC97
17:1001000080320000120093BC80320000000050409A
18:1001100081B201000180004081B200002000004057
19:10012000A59901002500294081320000250014BC5A
20:1001300080320000140093BC8032000000000049AF
21:10014000DD810100120100408132010033010040D5
22:10015000813201002A0014BC80320000FE0013BC72
23:10016000803200005495004045990100FFFF004097
24:10017000E599010000002F4049B101000000004056
25:10018000E1B1010000000040FDB3010000000040AB
26:10019000FFB30100330018EE803200000000005071
27:1001A00089B001003200A24189500000990000404E
28:1001B000813201003094004043990100000000F8B2
29:1001C00020B10100000000FAE0B30100390098EE10
30:1001D00080320000000000FB80B001003B0080F393
31:1001E000DE33000000000047FD9301003E0083F372
32:1001F00080320000F00000F38088010001800040A0
33:100200002EDD0100009400404399010000000046EB
34:1002100043C10100000000FA24B101007C0018EE87
35:1002200080320000450095E880320000FFFF00E8C2
36:10023000808801007C0026408132000000000040E0
37:10024000D5990100000000F2ECB30100000000F8B5
38:10025000D6B1010008000040D5990100000000F06F
39:10026000D6B10100FF0000F8EE8B0100080100404C
40:10027000D5990100FF0000F0808C0100000000F71C
41:100280008194010000000040D6B10100FF0000F899
42:10029000808801003C000040D5990100FF0000F07B
43:1002A000D68D0100FFFF00F0F0DB010000000048E8
44:1002B00081E00100000000F8819401003C01004051
45:1002C000D599010000000040D6B10100FF0000F800
46:1002D000808801000000004881E00100000000F873
47:1002E000819401003C020040D599010000000040CB
48:1002F000D6B101002C000040D5990100000000F8A3
49:10030000D6B101001E0000F082F40100FF3F00F8AA
50:1003100080D80100640026408132000000000041C6
51:1003200081D00100FFFF004080D8010000000041A3
52:100330008094010000000040D8B10100680022FA5A
53:10034000803000000000004C81E00100010000400E
54:1003500080CC010000000040DEB10100000100403F
55:10036000D5990100100000FA80E40100000000F6B9
56:100370008194010000000040D6B10100000200405D
57:10038000D5990100100000FA80E40100000000F699
58:100390008194010000000040D6B101000600004039
59:1003A000D5990100100000FBD6E5010007000040D0
60:1003B000D5990100180000FBD6E501004800004077
61:1003C000D5990100100000FAD6E501005000004068
62:1003D000D5990100100000FBD6E50100030000FBE9
63:1003E0007A890100000000F0DCB101007C00004CC3
64:1003F000DD9100007C0095E88430000000002FE9CA
65:10040000FAB3010000000040D1B10100FF0000423A
66:10041000808801003400004080CE01007C00A640AE
67:1004200081320000850000408132010002802240BC
68:10043000803200007C00004081B200000000004FCC
69:1004400081B001008E0009F9813200008C0008F9AA
70:100450008132000098001FFDF93300008B009EFDE3
71:10046000813200000000004AF39301000000804840
72:10047000F3930100000000FDF7B301000000804984
73:10048000F3930100000000FC19B1010093000AF988
74:1004900081320000000040FB81B20100000041FDFC
75:1004A00081B20100000780F9F38F0100000742F9D3
76:1004B000F38F01009700A2FFF76F00000000434098
77:1004C00081B201000000A2FFFBEF0000000080FCF1
78:1004D000E1B101000000804081B0010000940040C3
79:1004E00047990100BB000040813201000000A24694
80:1004F000FD7F01000094004047990100CE000040BC
81:10050000813201000000A244FD7F01000094004000
82:100510004599010000000040F1B10100FF7F00405B
83:10052000F5990100FF7F0040F59901009A13004002
84:10053000F599010007000040F59901000100004015
85:10054000F599010000020040F59901000200004009
86:10055000F599010000020040F599010003010040F7
87:10056000F599010000000040F59901009A13004040
88:10057000F59901000B000040F59901008000004052
89:10058000F599010000000040F599010000000040CD
90:10059000F599010007000040F599010008000040AE
91:1005A000F5990100B0020040F599010000000040FB
92:1005B000F599010000000040F59901000229004072
93:1005C000F599010000000040F59901000067004026
94:1005D000F599010000000040F599010080000040FD
95:1005E000F599010000008040F599010000000045E8
96:1005F000FD83010000000046FD830100FF7F0040F5
97:1006000025990100C4000040813201000000A2448D
98:1006100080B2000000000045FD930100E2000040B0
99:10062000833001000000A2458032010000008046B6
100:10063000FD9301000010004083980100DD000040A0
101:100640002B3101000000A24688B0000000000041EC
102:1006500089B00100000000948CB00100FFFF00464B
103:1006600080880100A5A5A24080CE000000000048BF
104:100670008DF00100C90082418940000000008040E7
105:1006800089B0010000000044FD830100D400004057
106:10069000813201000000A24480B20000E2000008A4
107:1006A000833001000000A245803201000000804438
108:1006B000FD93010000300008839801008000004095
109:1006C0002B990100DB000040893001000000A246A8
110:1006D00080B20000FFFF009480880100A5A5A24021
111:1006E000804E01000000804389B001000384004176
112:1006F0002C990100DE00004081B200000388004117
113:100700002C990100000000208DB0010000009F9690
114:1007100080B20000DF00A2418D5000000000804048
115:1007200081B20100FF7F0040259901000000004CCC
116:1007300089E00100DD000044821401000000909473
117:100740008AB0000000000045F0B101001000004533
118:1007500088F401000000004489D00100DD0000445D
119:100760002B410100EC00084180320000ED000094B4
120:1007700024B100001000009424F501000000009452
121:10078000F0B10100F200A04489500000DD000044F7
122:100790002B41010000000094F0B10100EF00204463
123:1007A000895000001000004588F40100000000FAA4
124:1007B0008AB001000000A34289D00000F700A0FA2F
125:1007C0008A400000000000418BC00100F500A342F8
126:1007D00089500000FFFF0045888801001000004597
127:1007E0008AF40100FC0090448A40000000000041AF
128:1007F0008BC00100FFFF00458AA801000000805067
129:100800008BE00100FF7F0040259901007C00004043
130:100810002B9901000030004083980100DD000008A2
131:1008200083140100000000942AB101000080004000
132:10083000F99B0100DD0000FC19310100000040942B
133:1008400080B20100DD0000442B4101000000419412
134:1008500080B2010000000041F9C301000000004423
135:100860002BC1010004019F948032000002800040EF
136:1008700081B200001001005193B000001001004D42
137:1008800093B000001001004993B000000000004246
138:1008900093B001001001A24193500000000080407D
139:1008A00081B201000000104081B20100000011403F
140:1008B00081B201000000124081B20100000013402B
141:1008C00081B201000000144081B201000000154017
142:1008D00081B201000000164081B201000000174003
143:1008E00081B201000000184081B2010000001940EF
144:1008F00081B2010000001A4081B2010000001B40DB
145:1009000081B2010000001C4081B2010000001D40C6
146:1009100081B2010000001E4081B2010000001F40B2
147:1009200081B201000000704081B2010000007140FE
148:1009300081B201000000724081B2010000007340EA
149:1009400081B201000000744081B2010000007540D6
150:1009500081B201000000764081B2010000007740C2
151:1009600081B201000000784081B2010000007940AE
152:1009700081B2010000007A4081B2010000007B409A
153:1009800081B2010000007C4081B2010000007D4086
154:1009900081B2010000007E4081B2010000007F4072
155:1009A00081B201000000804081B2010000040040DB
156:1009B000A199010000000050A1D1010000000040F9
157:1009C0001BB001000000004019B001000000004011
158:1009D00017B001000000004015B001000000004009
159:1009E00013B001000000004011B001000000004001
160:1009F0000FB00100000000400DB0010000000040F9
161:100A00000BB001000000004009B0010000000040F0
162:100A100007B001000000004005B0010000000040E8
163:100A200003B001000000004001B001003B0120487C
164:100A3000A15100000000804081B201004701224B1B
165:100A4000747D00000000804081B201006000004B16
166:100A500060990100000000B17EB101004801A8408A
167:100A6000813200004501004081B200000500804055
168:100A700097980100180000AA9688010000008043A2
169:100A800097F00100070000AA96880100000080404E
170:100A900081B201000000005807900100D89F00407B
171:100AA00081B2000000000044A5B30100D80200405C
172:100AB00081320100F8020040813201000000005C38
173:100AC00007900100D89F0040BFB300005A0122CC1C
174:100AD000857F00000000005107900100D89F004072
175:100AE00081B200000000004049B10100AE0300CB1C
176:100AF000A3C90100D0140040A19B01000000002008
177:100B000046B1010000000048F1B10100000000D032
178:100B1000F1B10100000000CAF1B10100000000D5F0
179:100B2000E1B10100070000406199010020000020B0
180:100B300062DD01006301A84081320000000000CCAA
181:100B400085930100F802004081320100D01400407A
182:100B500043990100000000FABAB30100000000FA56
183:100B6000A4B30100000000F8BCB3010000142F4042
184:100B700081B00100000000E7A7B30100000000D829
185:100B8000A9B30100FF0000DD8188010002000040E0
186:100B900080F401007301004080C80100860100DD7F
187:100BA000813200000000004010B1000087010040C9
188:100BB00081B200008801004081B20000890100403C
189:100BC00081B200008A01004081B200008B01004028
190:100BD00081B200008D01004081B200008F01004011
191:100BE00081B200005001004081B20000B601004017
192:100BF00081B200005001004081B20000C4010040F9
193:100C000081B20000C501004081B2000082020040B4
194:100C100081B200008302004081B22800B802004087
195:100C200081B22800D49F004081B22800D59F0040A7
196:100C300081B22800D69F004081B22800D79F004093
197:100C400081B228007201004181C02800550151493C
198:100C5000FD9328005501524AFD932A00550155493C
199:100C6000FD832A005501564AFD832A0050019181D7
200:100C700080302A005501454081B22A0050019182FE
201:100C800080302A005501464081B22A000000004011
202:100C900089B02B0000002F4081B0010000140040FB
203:100CA00049990100B30122DEE16D00000000004C13
204:100CB00049C101000000004181C001009201A2442D
205:100CC000816C00000000004C49D101009A012240D3
206:100CD000E16D00009601A2418150000050010041E9
207:100CE000BFB3000000000042BFB301005001A00FDD
208:100CF000BD6F0000000000DEE1B101000000004413
209:100D000049C10100B50100401999010000004240AD
210:100D100081B20100000043FF85B00100000000DE49
211:100D200019B10100000042FF87B00100000043FF3D
212:100D3000E1B101000000004449C1010000002FFFA3
213:100D4000E1B10100081400A480CC0100AA012640F2
214:100D5000813200000000004185C00100A801A24CC2
215:100D600081500000B40122D281320000AF01224143
216:100D7000A56F00005001A2E081320000000000D207
217:100D8000C1B301000000005C8990010000004042F6
218:100D900080B201000000414380B20100000000F079
219:100DA0008894010055010044E0B10000B101004801
220:100DB00049C10000AF01005B89900000A89F00A01E
221:100DC0009EB000000000004083B00100001400400D
222:100DD000499901000000234081B00100BE0122DEDC
223:100DE000E16D00000000004C49C10100000000411D
224:100DF00081C00100B901A244816C00005001004390
225:100E0000BFB30000000000F818B10100000040F876
226:100E100080B20100000041F080B2010000000040FB
227:100E2000F1B1010000000040F1B1010055010040A6
228:100E3000E1B10000C601004091B000000000004197
229:100E400091B00100D0142E4049B1010005000040CE
230:100E5000A39B0100080000DD81F40100CB010040EC
231:100E600080C801000000004010B10000D101004026
232:100E700081B00000530100DEA1B30000E301004097
233:100E800081B20000E501004081B00000EB010040AC
234:100E900081B20000520100DFE1B10000000000D08B
235:100EA000BAB30100000000DEA1B10100020000D2CF
236:100EB000A5E70100000000D2C1B30100000000005E
237:100EC000F0B10100DB012244C1530000DA0184418A
238:100ED00081400000DE01004081320100000000D0AE
239:100EE00045B10100D5010041A1C10000DA02004076
240:100EF00081320100F802004081320100550100DD1D
241:100F0000A1B100000000004081B00100400000409D
242:100F1000A59B0100DA02004081320100400000D3AD
243:100F2000A7CB0100F80200E0A5B3000003000040D9
244:100F3000A39B0100530100DEA1B3000000000044A8
245:100F4000BFB30100000000DE819001005001A2BA91
246:100F500080040000600000DE61990100E801A8B192
247:100F60008030000052010040E0B10000000000D0DD
248:100F7000BAB301006B020040819801006002004D8D
249:100F80008330010000000044E1B301000000004490
250:100F9000E3B3010000000044E5B301000000004499
251:100FA000E9B3010000000044EBB30100000000447D
252:100FB000F5B3010000000044F7B301000000004455
253:100FC000F9B30100F90122408F6F00007802004060
254:100FD00081980100600200C7833001008002004058
255:100FE000819801006002004283300100000000E8A7
256:100FF000F1B10100000000E9F1B10100000000EAD8
257:10100000F1B10100000000EBF1B10100000000852A
258:10101000F0B10100000000ECF1B10100000000EDB2
259:10102000F1B10100000000B2F0B10100000000A920
260:10103000F0B10100000000ACF0B10100000000AB15
261:10104000F0B10100000000B8F0B10100000000B9EB
262:10105000F0B10100000000BAF0B10100000000BBD7
263:10106000F0B101000C02B8408130000000000040E7
264:10107000819001000E02B940813200000000004161
265:10108000819001001002BA4081320000000000424D
266:10109000819001001202BB40813200000000004339
267:1010A000819001001402BC40813200000000004425
268:1010B000819001001602BD40813200000000004511
269:1010C000819001001802BE408132000000000046FD
270:1010D000819001001A02BF408132000000000047E9
271:1010E000819001001C02C8408132000000000048CD
272:1010F000819001001E02C9408132000000000049B9
273:10110000819001002002CA40813200000000004AA4
274:10111000819001002202CB40813200000000004B90
275:10112000819001002402CC40813200000000004C7C
276:10113000819001002602CD40813200000000004D68
277:10114000819001002802CE40813200000000004E54
278:10115000819001002A02CF40813200000000004F40
279:10116000819001002C02F04081320000000000500C
280:10117000819001002E02F1408132000000000051F8
281:10118000819001003002F2408132000000000052E4
282:10119000819001003202F3408132000000000053D0
283:1011A000819001003402F4408132000000000054BC
284:1011B000819001003602F5408132000000000055A8
285:1011C000819001003802F640813200000000005694
286:1011D000819001003A02F740813200000000005780
287:1011E000819001003C02F84081320000000000586C
288:1011F000819001003E02F940813200000000005958
289:10120000819001004002FA40813200000000005A43
290:10121000819001004202FB40813200000000005B2F
291:10122000819001004402FC40813200000000005C1B
292:10123000819001004602FD40813200000000005D07
293:10124000819001004802FE40813200000000005EF3
294:10125000819001004A02FF40813200000000005FDF
295:101260008190010000000040F0B10100400000400A
296:10127000A59B0100D802004081320100F802004025
297:1012800081320100D0142E06A5B30100400000D326
298:10129000A7CB0100000000F0F1B10100000000F157
299:1012A000F1B10100000000F2F1B10100000000F412
300:1012B000F1B10100000000F5F1B10100000000FAF9
301:1012C000F1B10100000000FBF1B10100000000FCE1
302:1012D000F1B10100000000EBF1B10100000000EEEF
303:1012E000F1B10100000000EFF1B10100000000F3D6
304:1012F000F1B10100000000F6F1B10100000000FDB5
305:10130000F1B10100DB0100C7E1B100000000804045
306:1013100081B20100660200488032000000005140A6
307:101320001AB1010000004D4081B2010000004540AB
308:1013300081B201006302A241835000005F02494074
309:1013400081B20000000052401CB1010000004E407C
310:1013500081B201000000464081B201006802A24152
311:10136000835000005F024A4081B20000000000A0EC
312:101370009EB0010000000080D8B30100000000A171
313:10138000D0B30100000000A2D2B30100000000A40D
314:10139000D4B30100000000D0D6B30100000000D19A
315:1013A000DCB30100000000D2DEB3010000000088C1
316:1013B000DAB30100000000D48EB30100000000D3B6
317:1013C000E6B30100000000ACECB30100000000999E
318:1013D000FAB30100000000D5E0B30100000000D521
319:1013E000E2B30100000000D5E4B30100000000D525
320:1013F000E8B30100000000D5EAB30100000000D509
321:10140000F4B30100000000D5F6B30100000000D5E0
322:10141000F8B30100000000C7A9B101000000004FAF
323:1014200040B101008402004091B000000000004182
324:1014300091B0010007000040A39B0100080000DDFF
325:1014400081F401008802004080C8010000000040D3
326:1014500010B100008D02004081B2000098020040EF
327:1014600081B2000098020046A3B300009B02004036
328:1014700081B20000A102004081B200008F0223501F
329:10148000A56F000000000050A5B30100E802004273
330:10149000A5630100F802004081320100D0142D4004
331:1014A00049B10100000000D0BAB30100000000DE25
332:1014B000A1B10100000000F800B001009702224431
333:1014C000A553000094020041A1C10000550100DDB8
334:1014D000A1B10000E80200DEA1330100F8020040E3
335:1014E000813201005501004081B20000000000453A
336:1014F000BFB301005001A2D2777D0000000000D2EE
337:1015000061B10100000000DE63B101009E02A8404D
338:10151000813200005501004081B20000E802005411
339:10152000A5330100F802004081320100D0142D40A3
340:1015300049B10100000000F8D0B30100000000F83C
341:10154000D2B30100000000F8D4B30100000000F89D
342:10155000D6B30100000000F808B10100AC02004061
343:10156000819801006002004683300100550100406F
344:1015700081B20000000000A09EB00100000000E861
345:1015800043B10100000000E945B10100000000EA9C
346:1015900049B10100000000EBA1B101000000004FC3
347:1015A00040B101000400004081B20000040000408E
348:1015B00081B200000400004081B20000040000403D
349:1015C00081B200000400004081B20000040000402D
350:1015D00081B20000D0142E4049B101000500004046
351:1015E000A39B010000000040C1B30100080000DD22
352:1015F00081F40100BD02004010C90000C3020005D3
353:1016000081B000005001004081B20000CB02000513
354:1016100081B000005001004081B20000D0020044BF
355:10162000A5B30000D2020044A5B3000002000040B0
356:10163000A4E70100000000E081B10100FFFF00C14C
357:10164000F0890100C802224181500000C40200411B
358:10165000C1C30000DA02004081320100F8020040FC
359:10166000813201005501004081B2000002000040BB
360:10167000A4E70100000000E091B10100FFFF00C9F4
361:10168000F0890100C802224181500000CC020041D3
362:10169000C1C30000FFFF00DE85890100C80200C24F
363:1016A000E0B10000FFFF00DE95890100C80200CA1A
364:1016B000E0B100000400004081B2000004000040DE
365:1016C00081B200000400004081B20000040000402C
366:1016D00081B20000000000E7A7B30100000000D8BD
367:1016E000A9B301000000004049B10100AE0300CBE6
368:1016F000A3C901000000002046B10100000000D293
369:10170000F1B10100000000D3F1B10100000000D4EC
370:10171000F1B10100000000D0E1B10100000000D1F2
371:1017200061B101002000002062DD0100E202A8405A
372:1017300081320000000080CC85930100040000404D
373:1017400081B200000400004081B2000004000040AB
374:1017500081B20000000000E7A7B30100000000D83C
375:10176000A9B301000000004049B10100AE0300CB65
376:10177000A3C901000000002046B10100000000D212
377:10178000F1B10100000000D0F1B10100000000D370
378:10179000F1B10100E10200D4E1B100000400004019
379:1017A00081B200000400004081B20000040000404B
380:1017B00081B200000400004081B20000040000403B
381:1017C00081B200000400004081B20000040000402B
382:1017D00081B200000000A2CC85FF00000000005094
383:1017E00081B00100FA02A24181500000F902A2F288
384:1017F00080300000000080CC8583010004000040A0
385:1018000081B200000400004081B2000004000040EA
386:1018100081B20000B5030040A199010000002F41F2
387:1018200099B301000A032244816C0000120322488C
388:10183000816C00000C03224C816C000016032250C6
389:10184000816C000017032254816C00001903225898
390:10185000816C00001E03225C816C0000500100407E
391:1018600081B20000000000BC09B00100DD9F00CA89
392:1018700001B000000000004003B001000000004182
393:10188000F38301001003A242056C00000000004138
394:1018900005B00100DD9F22CA07140000DD9F00454E
395:1018A000F3930000DD9F2043956F0000DD9F80CA09
396:1018B00005300000DD9F220180300000DD9F00CB5D
397:1018C000DB910000570100BCABB30000000000BC7E
398:1018D000B1B30100DD9F00CACFB30000FF0000CA12
399:1018E00081880100DD9FA240747D000060002040DF
400:1018F000609901001B03A8B1823000001A03004068
401:1019000081B20000DD9F00CA79B3000004000040EE
402:1019100081B200000000004E81B0010000000043D1
403:10192000CB8301000000454081B201002203A241A7
404:10193000815000000000454081B201000000454098
405:1019400081B201002D039182823000000000008AE4
406:1019500080B00100AE9F004080CE01002B03A64066
407:10196000813200002D03564081B20000B5030040D3
408:10197000A19901000000005307900100B503004049
409:10198000A19901000000005207900100D89F00417A
410:101990008BB300000000004E81B001000000004247
411:1019A000CD8301000000464081B201003203A24114
412:1019B000815000000000464081B201000000464016
413:1019C00081B201003D039181823000000000008956
414:1019D00080B00100AE9F004080CE01003B03A640D6
415:1019E000813200003D03554081B20000B503004044
416:1019F000A19901000000005207900100B5030040CA
417:101A0000A19901000000005307900100D89F0041F8
418:101A10008BB30000B0030040A1990100C4142F4013
419:101A200099B301005701004049B100000400004093
420:101A300081B200000400004081B2000004000040B8
421:101A400081B200000400004081B2000004000040A8
422:101A500081B200003094004043990100009000F8EA
423:101A600080980100100000F288E40100200000408E
424:101A7000209901000000005F239101004D031F9198
425:101A80008032000030000040209901000000005F1B
426:101A90002391010050031F9180320000400000405C
427:101AA000209901000000005F2391010053031F9162
428:101AB000803200000000005F2391010055031F9158
429:101AC000803200000008804020990100040000409E
430:101AD00081B200000000004784B001000000A2486D
431:101AE000848400000000005F61B101000000005C20
432:101AF0008F9001000000004762B101005A03A84026
433:101B000081320000000800478EC801005803005CC5
434:101B10008F800000E00000406199010058152D40C1
435:101B20008DB00100D0142DF088B00100000000FA43
436:101B30008AB001000000004581B0010007000045A7
437:101B400082880100000000438BF001000000004883
438:101B500083E0010000000046829401002000004163
439:101B600060990100000000418DC001007403225FF4
440:101B70008D6C00006503A2418150000063030040AA
441:101B800081B2000008000040859801000000004478
442:101B900082B001000000004186B00100001C00433B
443:101BA00086D801000000A641855001007003004165
444:101BB00083E000006E030040813201000000004815
445:101BC00085E00100D0142F468494010020000042DB
446:101BD00060990100C0000040619901000000804050
447:101BE00081B201000400004081B200000400004006
448:101BF00081B200000400004081B2000004000040F7
449:101C000081B200000400004081B2000004000040E6
450:101C100081B20000070000458088010000000043F9
451:101C20008BF0010000040040839801008503A0416F
452:101C3000815000008303004182E8000000008041E1
453:101C40008EC001000400004081B20000040000408A
454:101C500081B200000000004049B1010000020040D4
455:101C600083980100003900404599010000000040C0
456:101C7000F1B101008B03A24183500000000000403D
457:101C800085B001000B00004482F401001A1500A683
458:101C900086B0010070150040459901000008004021
459:101CA000F199010000000042F0B10100003900404C
460:101CB000E1990100040000406199010070150043A2
461:101CC000629901009503A840813200009703225ACF
462:101CD000737D00007A000040619901009803A8B16B
463:101CE0007E3100000008004284C801009003A24138
464:101CF000835000000000804081B2010004000040D9
465:101D000081B200000400004081B2000004000040E5
466:101D100081B2000058152D408DB00100D0142DF077
467:101D200088B00100000000408FB00100010000A653
468:101D300090B0010000F800489098010000000045B4
469:101D400093B00100000000FA8AB001008003004057
470:101D500081320100020000A680B00100AC032240E5
471:101D6000826C0000B0030040813201005803004043
472:101D700081320100000000418DC00100B503225FE7
473:101D80008D6C0000A703A24193500000A503004002
474:101D900081B20000FF070047848801000000A640D0
475:101DA00081B20000ED9F0047803001000002004733
476:101DB0008EC80100B003004081B200000000004462
477:101DC00050B30100BB032018896C0000040000A67A
478:101DD00084B00100200000A686B001000010004081
479:101DE000559B0100BE03004081B20000040000A624
480:101DF00084B00100200000A686B001000010004061
481:101E0000559B01000000004250D30100000000A8D3
482:101E10004FB30100000000434ED301006E030040A9
483:101E2000813201008203004280300100B003004093
484:101E300081320100C70322A78F6C00005A030040C3
485:101E400081320100C403004081B2000000008040E4
486:101E500081B20100C8142EBB85B00100000000EE65
487:101E600082B0010000000041E0B10100000000A2CA
488:101E7000A0B3010000000044A5B30100E19F00CA27
489:101E8000A7330100E09F004081B200000400004041
490:101E900081B20000D6032242756F0000D8032241B0
491:101EA000756F0000DA031ECA81320000DC031FCA0E
492:101EB00081320000000000CAC9B10100DD9F00426C
493:101EC00075B30000000000CACDB10100DD9F0041E4
494:101ED00075B30000000000CACFB10100DD9F0040D3
495:101EE00075B30000008100A6C6B10100DD9F00406F
496:101EF00081B20000008000A6C6B10100DD9F004055
497:101F000075B300000400004081B2000004000040EE
498:101F100081B200004501004D933001004501004EA3
499:101F2000933001004501004C93300100EC9F0040CC
500:101F300081320100DD9F004081B2000004000040BA
501:101F400081B200000400004081B2000004000040A3
502:101F500081B200005495004045990100DD9F00CA00
503:101F6000E5B100000400004081B200000400004020
504:101F700081B200000400004081B200000400004073
505:101F800081B200000400004081B200000400004063
506:101F900081B20000CC142E4087B00100000000A2E6
507:101FA000A0B3010015040043B2330100000068DA59
508:101FB00089B001007C0000408B98010000000050B7
509:101FC00089F001000000004189D0010003000044B5
510:101FD000888C01000000004487C00100000000411F
511:101FE000A5B3010015040043B2330100000000DA7C
512:101FF000F1B101000000004487C001000000004171
513:10200000A5C301000B042244895000000B042244A4
514:102010008B500000FA03A250A56F000000000042A0
515:10202000A5E30100000000CAA7B30100E19F00BBC7
516:1020300085300100CC142ED295C30100AE0300CB35
517:10204000A3C901000000002042B1010000000050BF
518:1020500081B001000804A241815000000704A2F2EF
519:1020600080300000FA030040A5B3000000000042E9
520:10207000A5E30100000000CAA7B30100E19F00BB77
521:1020800085300100E09F004081B200000400004064
522:1020900081B20000000000D92BB101000010004007
523:1020A00083980100DB00004081320100FFFF0094B3
524:1020B000B48B01000000804081B20100000000D913
525:1020C0002BB101000010004083980100DD000040AA
526:1020D0008132010000008094B4B30100040000408C
527:1020E00081B200000400004081B200000400004002
528:1020F00081B200000400004081B2000004000040F2
529:1021000081B200000400004081B2000004000040E1
530:1021100081B20000000000D92BB10100000000DAFC
531:1021200027B1010006C000402D990100DE000040EB
532:1021300081320100001000408398010002C4004178
533:102140002C990100DE000040813201000040004077
534:1021500083980100058200412C990100DE000040B7
535:10216000813201002D048094803200000C01004077
536:10217000813201002804004081B200000480004048
537:102180002D990100DE0000408132010000008040F6
538:1021900081B201003104001210C9000000488040E3
539:1021A0000B980100C04980400B980100804B804093
540:1021B0000B980100404D80400B980100004F80407B
541:1021C0000B980100C05080400B9801008052804065
542:1021D0000B980100405480400B980100005680404D
543:1021E0000B980100C05780400B9801008059804037
544:1021F0000B980100405B80400B980100005D80401F
545:102200000B980100C05E80400B9801008060804008
546:102210000B980100406280400B98010000648040F0
547:102220000B980100C06580400B98010080678040DA
548:102230000B980100406980400B980100006B8040C2
549:102240000B980100C06C80400B980100806E8040AC
550:102250000B980100407080400B9801000072804094
551:102260000B980100C07380400B980100807580407E
552:102270000B980100407780400B9801000079804066
553:102280000B980100C07A80400B980100807C804050
554:102290000B980100407E80400B9801000400004034
555:1022A00081B200000400004081B200000400004040
556:1022B00081B200000400004081B200000400004030
557:1022C00081B200000400004081B200000400004020
558:1022D00081B200005904001210C900000080804043
559:1022E0000B980100008280400B9801000084804020
560:1022F0000B980100008680400B9801000088804008
561:102300000B980100008A80400B980100008C8040EF
562:102310000B980100008E80400B98010000908040D7
563:102320000B980100009280400B98010000948040BF
564:102330000B980100009680400B98010000988040A7
565:102340000B980100009A80400B980100009C80408F
566:102350000B980100009E80400B98010000A0804077
567:102360000B98010000A280400B98010000A480405F
568:102370000B98010000A680400B98010000A8804047
569:102380000B98010000AA80400B98010000AC80402F
570:102390000B98010000AE80400B98010000B0804017
571:1023A0000B98010000B280400B98010000B48040FF
572:1023B0000B98010000B680400B98010000B88040E7
573:1023C0000B98010000BA80400B98010000BC8040CF
574:1023D0000B98010000BE80400B98010004000040F3
575:1023E00081B200000400004081B2000004000040FF
576:1023F00081B200000400004081B2000004000040EF
577:1024000081B200000400004081B2000004000040DE
578:1024100081B200000000004087B1010000000040D0
579:1024200097B001000000004B80B10100010000A640
580:1024300082B1010082048541974000000000004005
581:1024400097B101000000004097B001000000004B70
582:1024500090B10100010000A692B1010087048541FE
583:10246000974000000000804081B20100040000405D
584:1024700081B200000400004081B20000040000406E
585:1024800081B200000400004081B20000040000405E
586:1024900081B2000090046040813200000000001210
587:1024A00080B10100FFFFF04B82890100930460407E
588:1024B000813200000000004A80B101000100F0A656
589:1024C00082B101009604604081320000FFFF004BA2
590:1024D000848901000000F0C224B001000000004A1D
591:1024E00090B10100FFFF804B928901000000004A7B
592:1024F00090B10100010080A692B10100FFFF004BE6
593:1025000094890100000080CA94B0010004000040DA
594:1025100081B200001000004E98E4010000000007A6
595:10252000989401000000004399E001000000008041
596:10253000989401000000004999E001000000004C5F
597:1025400088940100A604474081320000AD04222097
598:10255000876F000000001F4081B2010000000040B2
599:1025600081B201000000004081B201000000004083
600:1025700081B20100A604004081B2000000001F806B
601:1025800086B30100B004224F777D0000C0040040F4
602:10259000813201000000004F61B1010000000044E1
603:1025A00062B10100B104A84081320000B804224B9E
604:1025B000897C0000B604224F777D0000C0040040F3
605:1025C000813201000000004562B10100B604A8405C
606:1025D000813200000000802087B301000400004029
607:1025E00081B200000400004081B2000004000040FD
608:1025F00081B200000400004081B2000004000040ED
609:1026000081B200000400004081B2000004000040DC
610:1026100081B200000000005099B001006F0000403E
611:1026200061990100C104A8B152330000C604224BD5
612:10263000537F00006F00004061990100C404A8B1FD
613:102640007E310000C104A241995000000000A24F59
614:1026500077FD00000400004081B20000040000404B
615:1026600081B200000400004081B20000040000407C
616:1026700081B200000400004081B20000040000406C
617:1026800081B200000400004081B20000040000405C
618:1026900081B200001000004E98E401000000000725
619:1026A000989401000000004399E0010000000080C0
620:1026B000989401000000004899E00100D604004C05
621:1026C00088940000D604474081320000DD042220B7
622:1026D000876F000000001F4081B201000000004031
623:1026E00081B201000000004081B201000000004002
624:1026F00081B20100D604004081B2000000001F80BA
625:1027000086B30100E004224F777D0000F004004012
626:10271000813201000000004F61B10100000000445F
627:1027200062B10100E104A84081320000E804224ABD
628:10273000897C0000E604224F777D0000F004004011
629:10274000813201000000004562B10100E604A840AA
630:10275000813200000000802087B3010004000040A7
631:1027600081B200000400004081B20000040000407B
632:1027700081B200000400004081B20000040000406B
633:1027800081B200000400004081B20000040000405B
634:1027900081B200000000005099B001006F000040BD
635:1027A00061990100F104A8B152330000F604224AF5
636:1027B000537F00006F00004061990100F404A8B14C
637:1027C0007E310000F104A241995000000000A24FA8
638:1027D00077FD00000400004081B2000004000040CA
639:1027E00081B200000400004081B2000004000040FB
640:1027F00081B200000400004081B2000004000040EB
641:1028000081B200000400004081B2000004000040DA
642:1028100081B200007B000040619901000005A8B171
643:102820008030000012051D4080320000401800403A
644:1028300049990100040000A686B001001005A240DD
645:1028400086040000DE9F9C4080320000FFFF0040B5
646:1028500088880100300500504731010036000044EF
647:1028600088CC01000C055240813200003005004048
648:10287000473101000000004189B0010030050048E7
649:10288000473101003005000547310100DE9F00405F
650:1028900081B200002800004047991B00DE9F0041E4
651:1028A000E1C11A007818004049991B00190522540B
652:1028B000817C1A001405424081321A00008200B364
653:1028C00067DF1B0000001A4493931B0028000040A0
654:1028D00047991B00300500418930010027050F4052
655:1028E00080320000FF7F00408888010030050050E2
656:1028F000473101003600004488CC01001F05994093
657:10290000803200000000004889D0010021059B4072
658:10291000803200000000004C89D0010023051F44D4
659:1029200080320000300500404731010000000041C6
660:1029300089B00100300500484731010030050058DA
661:1029400047310100DE9F004081B2000010000040CE
662:1029500086F401006F00004386880100DE9F260593
663:10296000473100003005004189300100DE9F004002
664:1029700081B200000400004081B200000400004069
665:1029800081B200000400004081B200000400004059
666:1029900081B200000000A044F041010000000040AE
667:1029A00081B2010000008041E1C10100040000404B
668:1029B00081B200000400004081B200000400004029
669:1029C00081B200000400004081B200000400004019
670:1029D00081B200004C010007913001000000A240CC
671:1029E00097EC00000000800591C001000400004049
672:1029F00081B200000400004081B2000004000040E9
673:102A000081B200000400004081B2000004000040D8
674:102A100081B200004C010040813201004405A24017
675:102A2000976C00003A000040B39B01004505004050
676:102A300081B2000040000040B39B01001004004040
677:102A400081320100000000DAF5B1010010040042FB
678:102A5000B3430100000000DAF5B1010010040042A8
679:102A6000B3430100000000DAF5B101004E00004060
680:102A7000B39B01001004004081320100080000DA1D
681:102A8000F7F5010050000040919801000000004758
682:102A90008FB0010010040048B2330100000000DADA
683:102AA000F7B10100080000DAF7F50100000000426C
684:102AB00091C001005005A2418F500000000000416C
685:102AC00045D1010008000040B39B01001004004004
686:102AD00081320100000000DAFDB101000A0000406F
687:102AE000B39B01001004004081320100000000DAB5
688:102AF000FDB101001A000040B39B0100100400402A
689:102B000081320100000000DAFDB101001800004030
690:102B1000B39B01001004004081320100000000DA84
691:102B2000FDB1010038050040813201001E0000485F
692:102B3000B2CB01001004004081320100000000DA35
693:102B400091C0010000000048B2CB01001004004019
694:102B50008132010000006EDA8FB0010002000048EF
695:102B6000B2CB01001004004081320100000000DA05
696:102B7000FDB1010004000048B2CB01001004004088
697:102B800081320100000080DAFDB101000400004044
698:102B900081B200007A052245FD7F0000401600400A
699:102BA00045990100DB9F00404931010008000048C1
700:102BB000B2CB010015040040813201007805A2402B
701:102BC0008F6C00007D052220B56F00007A05004063
702:102BD00081B20000DA9F004081321F007D05224053
703:102BE000976C1E007A05424081321E000000004FA3
704:102BF00067931F00DF9F005867931E005416004024
705:102C000047991F00000000FEF4B11F0000000040C3
706:102C100081B21F00000000FEF4B10100000000407E
707:102C200081B20100000000FEF4B10100000000408C
708:102C300081B20100000000FEF4B10100000000407C
709:102C400081B20100000000FEF4B10100000000406C
710:102C500081B20100000000FEF4B10100000000405C
711:102C600081B20100000000FEF4B101004600004006
712:102C7000B39B01001004004081320100080000DA1B
713:102C8000F7F501004800004095980100000000445D
714:102C900097B001001004004AB2330100000000DACE
715:102CA000F7B10100080000DAF7F50100000000426A
716:102CB00095C001009005A241975000002A000040F5
717:102CC000A59B010040160040A19B0100000000CA26
718:102CD000A7B30100E19F00BB85300100E09F0040E9
719:102CE00081B200000400004081B2000004000040F6
720:102CF00081B200000400004081B2000004000040E6
721:102D000081B200000400004081B2000004000040D5
722:102D100081B20000B8052245FD7F0000E0150040AB
723:102D2000479901001A0000A280DC01000000005059
724:102D3000F1B10100F0150040F1990100000000CA56
725:102D4000F1B101000700004061990100200000403E
726:102D500062DD0100A705A8BBE131000000000050C2
727:102D600083B00100AA05A24183500000A905A2F288
728:102D7000823000004C01004081320100B005A240C9
729:102D8000976C00003A000040B39B0100B105004081
730:102D900081B2000040000040B39B0100F0150040EC
731:102DA000439901001004004081320100B805A2FAE5
732:102DB000B46F000010040042B3430100B805A2FA4A
733:102DC000B46F000010040042B3430100BB0522FAB7
734:102DD000B46F0000B8054240813220000000004E70
735:102DE00067932100DF9F0058679320004016004042
736:102DF00045992100DB9F004049312100F615004034
737:102E0000439921005C1600404599210000006EFAAC
738:102E10008EB021000000004081B20100000000FEE1
739:102E2000F4B101000000004081B20100000000FE8A
740:102E3000F4B101000000004081B20100000000F088
741:102E4000B4B30100C905A2408F6C0000FC1520201E
742:102E5000E1B10100CE05004081B22400DA9F0040BC
743:102E600081322500CE052240976C2400CB054240DC
744:102E7000813224000000004F67932500DF9F005837
745:102E80006793240038050040813225001E00004869
746:102E9000B2CB25001004004081320100D30522503E
747:102EA000B56F00000000005091C001000000004814
748:102EB000B2CB0100F615004043990100200400F256
749:102EC000B433010002000048B2CB0100F815004005
750:102ED00043990100200400F2B433010004000048CB
751:102EE000B2CB0100FA15004043990100200400F222
752:102EF000B433010008000048B2CB0100FC150040CB
753:102F000043990100000000F094B00100FFFF004A67
754:102F1000B48B010020040040813201000A00004807
755:102F2000B2CB01001000004AB4F7010020040040B9
756:102F30008132010038050040813201001E00004846
757:102F4000B2CB01001004004081320100E90522509B
758:102F5000B56F0000EA050050B5B300000000004066
759:102F6000B5B301002004004081320100E09F004021
760:102F700081B200000400004081B200000400004063
761:102F800081B200000400004081B200000400004053
762:102F900081B2000000160040479901003031004026
763:102FA000F599010032330040F599010034350040B5
764:102FB000F599010036370040F59901003839004095
765:102FC000F599010041420040F59901004344004059
766:102FD000F599010045460040F59901004748004039
767:102FE000F5990100494A0040F59901002C00004084
768:102FF0008398010000000040F7B10100FC05A241E8
769:103000008350000080162E0683B00100360000FBBE
770:10301000F6A90100FF05A2418350000022000040F4
771:1030200083980100000000FBF6B101000206A241F6
772:10303000835000006200004095980100DC9F004032
773:103040008132010000162D0683B001008016004079
774:10305000459901005C0000FBF6A901000806A241A9
775:103060008350000000000070F9B101000000007101
776:10307000F9B1010000000072F9B101000000007315
777:10308000F9B1010000000074F9B1010054000040E2
778:1030900095980100DC9F0040813201000000007023
779:1030A00095B0010014062270B56F00000000804149
780:1030B00097B001000000804097B00100040000407C
781:1030C00081B200000400004081B200000400004012
782:1030D00081B20000456700A6E0B201000123007044
783:1030E000E19A0100CDEF00A6E2B2010089AB0071C8
784:1030F000E39A0100BA9800A6E4B20100FEDC007277
785:10310000E59A0100321000A6E6B201007654007381
786:10311000E79A0100D2C300A6E8B20100F0E1007412
787:10312000E99A01008016004A44C901000000000726
788:1031300081B001000000004A80D001000000004082
789:10314000F7B101002506A241815000008016004A17
790:1031500044C90100FC162A47E7B501000300004AF4
791:10316000E8E50100000000408DB001005003004080
792:10317000A399010080163D468DE00100000000503B
793:1031800089B00100000000FC40B0010000000041D7
794:10319000A3C101002E06A24189500000000000706A
795:1031A000EBB2010000000071EDB2010000000072FE
796:1031B000EFB2010000000073F1B2010000000074E2
797:1031C000F3B201000000004083B001000F00004195
798:1031D0008088010050030040A2C901004B06A050A6
799:1031E000836C00000D00004098C801000000004FF3
800:1031F000998401005003004CA2C901000000002086
801:1032000086B001000800004098C801000000004F8F
802:10321000998401005003004CA2C901000000002065
803:1032200086A401000200004098C801000000004F81
804:10323000998401005003004CA2C901000000002045
805:1032400086A4010050030040A2C901000000004311
806:1032500040A401000100002088E401000000005F9C
807:1032600041F0010000000044409401000500007599
808:1032700089E401001B00007585F401000000004492
809:10328000849401005506A353836C0000000000766F
810:1032900089B00100000000778984010000000076F9
811:1032A0008BB00100000000208BA40100000000781A
812:1032B0008B840100640600458894000027000041CB
813:1032C00080CE01005A06AA4081320000000000763C
814:1032D00089B001000000007789A40100640600782D
815:1032E00089A400003B00004180CE01005706AA409F
816:1032F000813200000000007689B0010000000077F4
817:1033000089840100000000768BB001000000007885
818:103310008B840100000000458894010000000077C4
819:103320008BB00100000000788B840100640600452A
820:10333000889400000000004484C00100000000796F
821:1033400085C001000000002084C001006B06A3536B
822:10335000836C0000825A00A684C001009979004263
823:1033600084C801007806004081B2000027000041B7
824:1033700080CE01007006AA4081320000D96E00A6FE
825:1033800084C00100A1EB004284C80100780600401F
826:1033900081B200003B00004180CE01007506AA40CA
827:1033A000813200001B8F00A684C00100DCBC0042FB
828:1033B00084C801007806004081B2000062CA00A6FD
829:1033C00084C00100D6C1004284C8010078060040D4
830:1033D00081B2000000000078F3B201000000007725
831:1033E000F1B201001E00007689E4010002000076BF
832:1033F000EFF6010000000044EE96010000000075A9
833:10340000EDB2010000000042EAB2010000000041FC
834:1034100083C001004F00004180CE010037062A40E2
835:103420008132000000000075E1C20100000000765A
836:10343000E3C2010000000077E5C20100000000784F
837:10344000E7C2010000000079E9C201002B068141BA
838:103450008D4000000000804081B201000400004067
839:1034600081B200000400004081B20000040000406E
840:1034700081B200000400004081B20000040000405E
841:1034800081B200000400004081B20000040000404E
842:1034900081B2000000000050FD9301004016004082
843:1034A00045990100DB9F00404931010008000048B8
844:1034B000B2CB01001504004081320100B906224060
845:1034C0008F6C0000DA9F004081320100B906A240F3
846:1034D000976C00005E160040439901007C1620F6B0
847:1034E000E0B101000000004031B301009D06224F11
848:1034F0008F7C000000000051FD9301009F062240D8
849:103500008F7C0000A3060054FD930000A106224218
850:103510008F7C000000000052FD930100A3062241B1
851:103520008F7C000000000053FD930100B70622517C
852:10353000FD7F000038050040813201000C0000488A
853:10354000B2CB01001004004081320100B206A2405B
854:10355000B56F00001E000048B2CB01001004004807
855:1035600096300100000000DA97C001000400004B13
856:10357000B2CB010010040040813201000E0000486F
857:10358000B2CB010020040040813201000C00004851
858:10359000B2CB010000000030B5B3010020040040B0
859:1035A000813201000E000048B2CB0100100400403F
860:1035B00081320100B6062240B56F0000BA06005401
861:1035C000FD93000000000051FD8301001C0000FE7F
862:1035D0007FD90100BA06A6408132000000000055E4
863:1035E000FD9301000000804081B201000400004012
864:1035F00081B200000400004081B2000004000040DD
865:1036000081B200000400004081B2000004000040CC
866:1036100081B20000E79F004081320100C406225CB5
867:103620001F7C0000E39F00881CB00000E99F005C45
868:103630001F00010000002E0548B1010000000040FD
869:10364000E1B1010004002D0348B10100000000F0C9
870:103650003CB001002800001402C801000000000175
871:1036600034B0010000002D0532B001002200000539
872:103670000AC801001000000348C90100000000F85A
873:1036800018B00100000000F804B00100000000F8CC
874:103690000EB001000C0000A40CC80100EA9F00401D
875:1036A000813201000000004023B001000A0722011E
876:1036B0008032000000003C4423E0010000002EA402
877:1036C00080B001000000001048C10100D906A30726
878:1036D000026C0000DA0668011AB0000000006807FA
879:1036E0001AB001000000000D02D00100000000052A
880:1036F000F0B101000000000CF0B101000000000278
881:10370000E0B101000000000D0AC00100EC062240FB
882:10371000036C0000E6062242236C0000000000411A
883:1037200023C001000000004761B10100200000A497
884:1037300062DD01002307284081320000E3060040DB
885:1037400081B200000000001080C0010000000047AE
886:1037500061B101000000004062B10100E806A8402C
887:1037600023300000E39F00881CB0000023070040C6
888:1037700081B200000000001080C00100000000477E
889:1037800061B101000000004062B10100EE06A840F6
890:1037900023300000E39F00881CB0000022000019C5
891:1037A00048C9010000002D1448C101000F0000F2BB
892:1037B0003A880100000000423BE001000E000014C6
893:1037C00002C801000000001D02C00100FA06231A11
894:1037D000025000000000004603C001002307000162
895:1037E00034C000000C002D1D48C10100F00000F2A3
896:1037F000308801000000004231F001000000001498
897:1038000002B001000000001D02C00100000000180D
898:1038100002C001000207221A025000002307000123
899:1038200034C000002200001948C9010002002D1414
900:1038300048C10100000000F614B001000000001DA6
901:1038400014D001000000001814D001000000001E78
902:1038500024B001001200001710C801002307001A4D
903:1038600010C0000000003C4423E00100000000A460
904:1038700086B0010000002E1048C101000F07A312FE
905:103880000E6C0000100760071AB000000000601204
906:103890001AB001000000680D16940100FFFF000B34
907:1038A00016D8010000000008F0B101000000000C73
908:1038B000F0B1010000000002E0B1010000000010C2
909:1038C00086C001000000004661B1010020000043F5
910:1038D00062DD01001707A85C1F1000004007220DE1
911:1038E000145000004007220D245000000000000D7D
912:1038F00010C001001E072242236C00002307004174
913:1039000023C000000000004661B10100400000102B
914:1039100062DD01001F07A85C1F000000E39F008814
915:103920001CB000000000004023B001003F07A20DC2
916:103930000E5000002E0722461F7C000000000046AB
917:103940001F8001003080001042C901002C0722F2C4
918:10395000640600000000004761B101004000001053
919:1039600062DD01002907A84081320000E39F008842
920:103970001CB0000020800003469901000000005F99
921:10398000E191010000002D0648B10100000000F89F
922:1039900018B00100000000F804B0010033071FF068
923:1039A0000E300000D306004C0DC0000000002E5F5A
924:1039B0000F800100D3062307146C000030000010B4
925:1039C00048C9010024000040F199010000000003F3
926:1039D000F0B1010000000000F0B10100000000168D
927:1039E000F0B101002400000000C801000000004701
928:1039F00061B10100200000A462DD01003C07A8467F
929:103A00001F100000D30600030CB00000D306000D09
930:103A100018C000005F07A2441F7C000000000019CE
931:103A20000AB001002200000548C901000A002D1457
932:103A300048C1010002002040E5B10100040020401F
933:103A4000E5B101000D002D1D48C10100090000F382
934:103A5000388801000D002050E7B1010004002D401E
935:103A60003FB00100000000F432B00100040020402B
936:103A7000E1B101002200000548C9010000002D1439
937:103A800048C101000200001D94F401000000004044
938:103A900091B001005207A0FC9040000000000041DE
939:103AA00091C001005007A24195500000000000A401
940:103AB00096B0010004002E0548B101000000004846
941:103AC000F0B101000000004B48B1010000000018F7
942:103AD00048C101000200001894F4010000002D18F4
943:103AE00090B001005C07A0FC904000000000004185
944:103AF00091C001005A07A241955000000000004803
945:103B0000E0B1010010002040E5B1010004002D05E6
946:103B100048B10100000000F880B02D00000000F066
947:103B200016B02D002200000548C92D000000001429
948:103B300048C12D00640743303D072C000000009E63
949:103B400085B02D0000001B413DC32D000400204224
950:103B5000ECB12D000000001E82B0010002002E1DFD
951:103B600082C001000000661882C00100000000420F
952:103B700080C001006E07A0418044000000000041A9
953:103B800081C001001000004092F401000A002E30B4
954:103B900081840100720790409240000000000041C3
955:103BA00093C001000000662093A401000000001DE6
956:103BB00048C1010004002019E8B101000000001E06
957:103BC00016C001007807A01916440000000000414B
958:103BD00017C001000D002F1E32C001007D07A2405A
959:103BE000156C00007C07A01C16400000000000417E
960:103BF00017C00100000063F33894010010000005B5
961:103C000048C9010004002E1E98B001000000601A8F
962:103C100098C001000C002040E1B101008B07224652
963:103C20001F7C0000000000461F8001003080001053
964:103C300042C90100890722F2640600000000004723
965:103C400061B101004000001062DD01008607A8405C
966:103C500081320000E39F00881CB000002080000338
967:103C6000469901000000005FE191010030800010E2
968:103C700044C901001200001AF0C901000000001739
969:103C8000F0B1010010000005E0C901003000001093
970:103C900080C801000000004461B101002000004024
971:103CA00062DD01009107A840813200009B07225C81
972:103CB0001F7C000000003C4423E0010000002D10A8
973:103CC00048C101009B0722F2640600000000004684
974:103CD00061B101004000001062DD01009807A840BA
975:103CE00081320000E39F00881CB00000EB9F005C65
976:103CF0001F00010020002F0548B101000000000B4B
977:103D0000E4B101000000005017F00100A10790F29B
978:103D1000164000000000004117C0010000006620AE
979:103D200017A40100100000142AC801000000001DA3
980:103D30002AC00100000000502BE00100000000F24A
981:103D40002A9401003080001042C90100AC0722F221
982:103D5000640600000000004461B101004000001052
983:103D600062DD0100A907A84081320000E39F0088BE
984:103D70001CB000000080001710DC0100C9072240C1
985:103D8000156C0000B407A2441F7C00000000004432
986:103D90001F900100B307229F136C000002000088EF
987:103DA0001CCC0100E49F004081B2000000000041F3
988:103DB0003FC30100E69F004081320100B707A241E6
989:103DC000877C00000000001E3EC00100C9072240A1
990:103DD000156C0000BA07201E146C00000000000AD9
991:103DE0003CB00100E59F001E24300100BF072208FF
992:103DF0002E3000000000005211C001000000001A27
993:103E000010C001002307004017B00000E49F0088A5
994:103E10001CB00000E59F004081320100BC07A208F1
995:103E20002E300000808000A604B001000600004093
996:103E300087980100008000034499010004002204D7
997:103E4000E0310000E89F001F8C30010000000040BE
998:103E50000FB00100E29F005C1F9000000080000393
999:103E60004499010004002204E0310000E69F004074
1000:103E700081320100CE07A241877C0000CF07001EDF
1001:103E80003EC000000000001F8CB001000000004098
1002:103E900005B00100E89F00400F300100E29F005C88
1003:103EA0001F9000000400004081B2000004000040A8
1004:103EB00081B200000400004081B200000400004014
1005:103EC00081B200000400004081B200000400004004
1006:103ED00081B200000400004081B2000004000040F4
1007:103EE00081B200000400004081B2000004000040E4
1008:103EF00081B200000400004081B2000004000040D4
1009:103F000081B200000400004081B2000004000040C3
1010:103F100081B200000400004081B2000004000040B3
1011:103F200081B200000400004081B2000004000040A3
1012:103F300081B200000400004081B200000400004093
1013:103F400081B200000400004081B200000400004083
1014:103F500081B200000400004081B200000400004073
1015:103F600081B200000400004081B200000400004063
1016:103F700081B200000400004081B200000400004053
1017:103F800081B200000400004081B200000400004043
1018:103F900081B200000400004081B200000400004033
1019:103FA00081B200000400004081B200000400004023
1020:103FB00081B200000400004081B200000400004013
1021:103FC00081B200000400004081B20000F70700BC8D
1022:103FD00080B200000380004081B2000003800040F6
1023:103FE00081B200000380004081B2000003800040E5
1024:103FF00081B200000380004081B2000003800040D5
1025:1040000081B200000380004081B2000003800040C4
1026:1040100081B200003180004081B200003480004055
1027:1040200081B200003580004081B2000004000040F1
1028:1040300081B200001B808180803200001487A24082
1029:10404000916F00000000004C90B301005C952EA21F
1030:1040500080B00100FF000080F489010090952AC81B
1031:10406000E5B10100000000A1F0B101000000004036
1032:10407000F0B10100000000A4F0B10100000000D088
1033:10408000F0B10100000000D1F0B10100000000D249
1034:10409000F0B101000000004CF0B10100000000D4BC
1035:1040A000F0B10100000000D3F0B10100000000EE0B
1036:1040B000F0B101000000004EF0B10100000000402E
1037:1040C00044B1010018801181983000000000514077
1038:1040D00081B201001A801182983000000000524025
1039:1040E00081B2010014870048FD930000B603004030
1040:1040F000A19901002380A242FD7F00002080008062
1041:1041000080320000228011818230000022805140E4
1042:1041100081B2000022801182823000002280524051
1043:1041200081B200002C800048FD93000027800080B1
1044:10413000803200002680A253077C0000000051530B
1045:10414000079001002A800052079000002980A252A7
1046:10415000077C00000000525207900100000000534D
1047:104160000790010000000048FD9301000000004698
1048:10417000F39301005C952EA252B30100FF00008072
1049:10418000F48901000000004CE4B10100000000A926
1050:1041900045B101003080004C80B200000000454075
1051:1041A00081B201000000554081B20100AF8205409C
1052:1041B00049B10000AF82054049B100000000054050
1053:1041C00049B101004C010040813201000000004B68
1054:1041D000DEB2010000000040FD9301000000004835
1055:1041E000FD830100020000409B9B0100000000A530
1056:1041F0009CB30100480300408132010058952044DF
1057:10420000E0B101000494004043990100000000F275
1058:1042100024B10100000C00EE968801000000004A65
1059:1042200097F001004480A243976C00000000004218
1060:10423000FD93010000C000A636B10100D01400407B
1061:104240004799010005000040F59901000038004041
1062:10425000F599010000060040F599010000000040BA
1063:10426000F599010005100040F59901000209004090
1064:10427000F599010004000040F59901006003004039
1065:10428000813201008803004081320100A003004018
1066:1042900081320100A2820040813201009A820040F6
1067:1042A0008132010060952040E1B10100709520400D
1068:1042B000E1B1010000000049DD9101000000004073
1069:1042C00091B30100F99500408132010000000040E7
1070:1042D00085B301005C952040E1B1010027820040D8
1071:1042E0008132010090060040813201000000005F31
1072:1042F0002F8101008D81004081320100FE95004038
1073:10430000813201000000454081B2010000005540AB
1074:1043100081B20100DD82004081B200000400004053
1075:1043200081B200000400004081B20000040000409F
1076:1043300081B200000400004081B20000040000408F
1077:1043400081B200000400004081B20000040000407F
1078:1043500081B200002800004047990100AF8200416F
1079:10436000E1C1000078180040499901001905225464
1080:10437000817C00006C80424081320000008200B4E9
1081:1043800069DF010000001A449393010028000040F7
1082:10439000479901001805004081B200000400004068
1083:1043A00081B200000400004081B20000040000401F
1084:1043B00081B200000400004081B20000040000400F
1085:1043C00081B200000400004081B2000004000040FF
1086:1043D00081B2000040820040813201007D80224095
1087:1043E000976C00007A804240813200000000004F4C
1088:1043F0006993010038810058699300005416004009
1089:1044000047990100000000FEF4B101008005004062
1090:1044100081B2000080804240813200000000004EE6
1091:1044200069930100388100586993000040160040EC
1092:10443000459901004005004049310100F615004052
1093:10444000439901005C1600404599010000006EFA96
1094:104450008EB00100C105004081B2000004000040A0
1095:1044600081B200000400004081B20000040000405E
1096:1044700081B200000400004081B20000040000404E
1097:1044800081B200000400004081B20000040000403E
1098:1044900081B200009680004081B20000408200405E
1099:1044A0008132010096802240976C00009380424048
1100:1044B000813200000000004F6993010038810058EC
1101:1044C0006993000038050040813201001E00004859
1102:1044D000B2CB0100D005004081B2000004000040D2
1103:1044E00081B200000400004081B2000004000040DE
1104:1044F00081B200000400004081B2000004000040CE
1105:1045000081B200000400004081B2000004000040BD
1106:1045100081B200008302004081B20000B802004076
1107:1045200081B20000D49F004081B20000D59F0040BE
1108:1045300081B20000D69F004081B20000D79F0040AA
1109:1045400081B200007201004181C000005501514854
1110:10455000FD93000055015248FD9300005501554957
1111:10456000FD8300005501564AFD83000050019181F2
1112:10457000803000005501454081B200005001918219
1113:10458000803000005501464081B20000000000402C
1114:1045900089B00100000000F880B00100000000F0C8
1115:1045A00016B001002200000548C9010000000014F7
1116:1045B00048C10100B48043303D0700000000009E68
1117:1045C00085B0010000001B413DC3010004002042F2
1118:1045D000ECB101000000004049B10100AE0300CB86
1119:1045E000A3C901000000002046B10100000000D274
1120:1045F000F1B10100000000D3F1B101000000004260
1121:10460000F0B101000000004561B101002000002070
1122:1046100062DD01000000A8D0E1B10000BF800040D1
1123:1046200081B20000000000A898B0010004800040A2
1124:104630008BB30000B1030040A1990100C780A242E2
1125:10464000976F000000000045A1C1010000000000BC
1126:1046500080B001000000A2048094000080153F4259
1127:1046600097E301000000004049B101000000600331
1128:10467000029401000000004007B00100040000CBDC
1129:1046800099CB0100000000CCF3830100D180A2424D
1130:10469000976F0000000000CBF3930100AE0300CB46
1131:1046A000A3C901000000002044B101000000004443
1132:1046B000F1B1010000000000F0B1010000000004B1
1133:1046C000F0B10100000000A1E0B1010005000040D0
1134:1046D000619901002000002062DD0100D880A8401F
1135:1046E00081320000F9020020423101000000A241A5
1136:1046F000056C0100000080CBDB9101000000194136
1137:104700008BB301006000004061990100DE80A8B118
1138:104710008C3300006000004061990100E080A8B186
1139:1047200094330000E68014C681320000180000C6F1
1140:1047300083F40100F482224F83040000C280004011
1141:1047400081B20000FF0100C681880100000000C6A0
1142:1047500097A30100C2801F5C9753000058821EC6B9
1143:104760008132000000002F4381F00100EC80004006
1144:1047700010C900003981004081B200006A81004008
1145:1047800081B20000248200CA63B30000618100404E
1146:1047900081B200004881004D83B000005281004E7C
1147:1047A00061B100004181004085B000004881004CAB
1148:1047B00083B000002481004085B00000E381004008
1149:1047C00049B1000071810040C1B10000DF810040AB
1150:1047D00081B200004181004085B00000F00300403C
1151:1047E00049B10000F48200CA9BB300007B81004005
1152:1047F000C1B100007F810040C1B10000868100404E
1153:10480000C1B1000087810040C1B100008881004033
1154:10481000C1B1000089810040C1B100008A8100401F
1155:1048200081B000008A81004181B000001882004000
1156:1048300081B20000978200BBABB30000258200CAA2
1157:10484000CFB30000C803004049B10000E8030040B6
1158:1048500081B200002682004081B20000F482004054
1159:1048600081B20000E003004081B20000F48200CA7F
1160:1048700077B300004981004D83B000005081004EA5
1161:1048800061B10000418100BB85B000004981004C4E
1162:1048900083B00000418100BB85B00000248100BBD3
1163:1048A00085B000001681004081B20000F48200CA89
1164:1048B0004DB300007005004049B10000A005004064
1165:1048C00049B100001C8122428F6F00001E812241ED
1166:1048D0008F6F000020811ECA8132000022811FCA12
1167:1048E00081320000000000CAC9B10100F482004218
1168:1048F0008FB30000000000CACDB10100F482004176
1169:104900008FB30000000000CACFB10100F482004064
1170:104910008FB30000008100A6C6B10100F482004000
1171:1049200081B20000008000A6C6B10100F482004000
1172:104930008FB30000781800404999010010002F9CA7
1173:1049400089B001003B8100403933010018002F9BE2
1174:1049500089B001003B8100403733010000002F9AED
1175:1049600089B001003B8100403533010008002F99D8
1176:1049700089B001003B81004033330100008000AE6C
1177:1049800047C9010080000040F1990100000000CA01
1178:10499000F1B1010000000042F0B1010040180040F8
1179:1049A000E19901000000004561B10100200000AE66
1180:1049B00063DD0100368128408132000033810040F0
1181:1049C00081B2000036814240813200000000005C6C
1182:1049D00069930100F4821A449393000039814240A4
1183:1049E00081320000388100586993000000000044C3
1184:1049F000F0D101000000A44081B200004081A2403B
1185:104A0000E16D00000000004445D10100000080403D
1186:104A1000E1B1010000008041E1D101004181375C3A
1187:104A2000613100000000004262B101004581284070
1188:104A3000813200004281004081B20000000000CAC3
1189:104A400063B101004581A84081320000F482174023
1190:104A500081B200004A81004081B000004A8100BB61
1191:104A600081B000000000004160B101000000004082
1192:104A700062B101004B81A84081320000000000CAF1
1193:104A800063B10100F4822840813200004D81004072
1194:104A900081B200005095004047990100538100BB4E
1195:104AA00087B0000050952F4087B00100558122400B
1196:104AB000957F0000F48260409583000002002DF095
1197:104AC00084B001005681364081320000000000426F
1198:104AD00062B101005781A84081320000000000430C
1199:104AE00062B101005981A84081320000000000CA73
1200:104AF00063B101005B81A8408132000000001640D4
1201:104B000081B20100F482224143510000000800CA32
1202:104B100095CB01005681004185C000006381A2420F
1203:104B2000676F00000000004167B3010063814240ED
1204:104B3000813200000000004065B301000000004029
1205:104B40009383010000001ACA69970100F48226408D
1206:104B5000813200006881424081320000F4821A44B0
1207:104B600093930000F4822043956F0000F48280CA82
1208:104B700067330000F4822240656F0000F482006F0A
1209:104B8000DB91000085000040813201003580224029
1210:104B900080320000F482004081B200000000005822
1211:104BA000959301000000005F959301007781A24476
1212:104BB000216F00000000005F958301000000005E8F
1213:104BC000959301000000005795930100000000CA72
1214:104BD000C3B101007A81225B957F00000000004B89
1215:104BE000FD930100F482004081B200001BFD00CA69
1216:104BF000959B01000D0100CAC53101000000005F56
1217:104C000095830100F48200CAC5B10000DF6F00CABD
1218:104C1000959B01000000005595930100000000CA1B
1219:104C2000C7B10100F482225F957F00000D010040B2
1220:104C3000813201000000005F95830100F48200CA08
1221:104C4000C7B10000F48200CAC9B10000F48200CAF2
1222:104C5000CBB10000F48200CACDB10000F48200CADA
1223:104C6000CFB1000000002E4281E001009814004006
1224:104C700048C90100F48200CAE1B100000000004010
1225:104C800009B10100200000A682B001008F81A25E60
1226:104C90000B7D000000800041089901009181A25E17
1227:104CA0000B7D0000208000A608B1010093819F8544
1228:104CB000823000000000003083840100C88122306F
1229:104CC000836C00009281A24F0B7D00000000004128
1230:104CD00021B30100028000A682B0010013820040CF
1231:104CE000813201001000004184E40100038000A62D
1232:104CF00082B001001382004081320100F0FF0041C8
1233:104D00008688010000000043849401000F0000A683
1234:104D100086B0010010C4004386980100A881A24318
1235:104D2000846C00000000004321B30100200000A6B5
1236:104D300082B001001C00004182DC0100A581A25E5E
1237:104D40000B7D00000400004108990100BA81004079
1238:104D500081B20000410100A686B00100500C004362
1239:104D600086980100AD81A243846C000000000041E0
1240:104D700021B30100BA81004081B20000410100A6C8
1241:104D800086B00100600C004386980100BA81A243FE
1242:104D9000846C00000000004221B30100188000A6CE
1243:104DA00082B001001382004081320100FFFF004108
1244:104DB0008288010000770041828C010001020041DD
1245:104DC000829801002000004182DC010018000041AF
1246:104DD00082DC0100B881A25E0B7D00000000004172
1247:104DE00008B10100200000A682B00100BB81A25ED4
1248:104DF0000B7D00004013004108990100C38122434C
1249:104E0000216F0000200000A682B0010012000041C6
1250:104E100082DC0100C081A25E0B7D00000004004125
1251:104E200008990100DE81004081B20000200000A648
1252:104E300082B001001900004182DC0100C581A25E40
1253:104E40000B7D000000A0004108990100DE810040B8
1254:104E500081B200000000004421B3010000000040C6
1255:104E600083B001000000005F839001000000005E3D
1256:104E70008390010000000057839001000000004172
1257:104E8000C2B101000C010040813201000000005F4E
1258:104E90008380010000000041C2B101000C0100400C
1259:104EA00081320100200000A682B001000400004110
1260:104EB00082DC01002000004108990100200000A6CA
1261:104EC00082B001001100004182DC0100D781A25EA6
1262:104ED0000B7D00000100004108990100200000A6A0
1263:104EE00082B00100DA81A25E0B7D00004013004118
1264:104EF00008990100010000A682B0010040000041B5
1265:104F00002E9901000000804081B20100200000A61F
1266:104F100080B00100000000CA81940100E181A25E1E
1267:104F20000B7D0000F482004008B10000C8142EBBC5
1268:104F300085B00100E481A25E0B7D0000000000400E
1269:104F400087B00100F3812243216F000002822244D6
1270:104F5000216F0000118000A682B001001382004082
1271:104F6000813201000A82224A837C00000000004056
1272:104F700087900100EE81224D837C000000000041FB
1273:104F800087900100F081224F837C000000000043E5
1274:104F900087900100F281224E837C000000000042D5
1275:104FA000879001000A82004081B20000018000A6C3
1276:104FB00082B001001382004081320100018000A60E
1277:104FC00082B0010013820040813201000A82224235
1278:104FD000837C000000000040879001001C8000A638
1279:104FE00082B001001382004081320100FD81224520
1280:104FF000837C00000000004187900100FF81224473
1281:10500000837C00000000004387900100018222435E
1282:10501000837C000000000042879001000A8200406B
1283:1050200081B20000018000A682B00100138200401E
1284:1050300081320100018000A682B00100138200408D
1285:10504000813201000A822242837C0000000000407D
1286:10505000879001000000004387900100000000419C
1287:1050600087900100008000A682B0010013820040FA
1288:10507000813201000E82224B837C00000000004040
1289:105080008780010000000043E0B10100FF7F00A223
1290:10509000A08B010000000044A5B30100B88000CA45
1291:1050A000A73301003681004081B20000200000419A
1292:1050B00082DC01001482A25E0B7D00000000004132
1293:1050C00008B1010016829F858230000000008040F8
1294:1050D00081B201001B8214F7813000001B82A249BB
1295:1050E000FD7F000000000048FD9301001E8215F8BE
1296:1050F000811400001E82A24AFD7F000000000048CB
1297:10510000FD9301002082A2C88132000040000040CF
1298:1051100080DC01000010004080DC01000000004045
1299:10512000EFB3010022824240F13300003881004099
1300:1051300068970000F48200BB6BB30000F48200BBF0
1301:10514000B1B30000F482004081B2000000030040CF
1302:10515000819801000000004018B10100800000406B
1303:105160008398010000190040459901000000424069
1304:1051700081B20100000043FFF1B10100000000FF17
1305:10518000F1B101000000004181C0010000000040B9
1306:1051900018B101002B82A24183500000001600408C
1307:1051A00045990100001900404399010000000047A3
1308:1051B00043C101000000004083B00100000000F383
1309:1051C00080B001000000005B81D0010000000041C0
1310:1051D00080D0010000000040F6B101000000005B3B
1311:1051E00043C101000000004183C001003582A25488
1312:1051F000836C000000000040F7B101000000004196
1313:1052000083C001003C82A206836C00000000804045
1314:1052100081B20100001600404399010080162E065D
1315:1052200083B00100360000FBF6A901004282A241D2
1316:10523000835000002200004083980100000000FB22
1317:10524000F6B101004582A241835000006200004097
1318:1052500095980100DC9F00408132010000162D0668
1319:1052600083B0010080160040459901005C0000FBFE
1320:10527000F6A901004B82A24183500000000000709B
1321:10528000F9B1010000000071F9B1010000000072E5
1322:10529000F9B1010000000073F9B1010000000074D1
1323:1052A000F9B101005400004095980100DC9F0040D6
1324:1052B000813201000000007095B001005782227019
1325:1052C000B56F00000000804197B0010000008040F1
1326:1052D00097B00100B6030040A199010000002F42E1
1327:1052E00099B3010062822244816C00006A822248E4
1328:1052F000816C00006482224C816C00006E8222501E
1329:10530000816C00006F822254816C000071822258EF
1330:10531000816C00007682225C816C000050010040AC
1331:1053200081B20000000000BC09B00100F48200CA94
1332:1053300001B000000000004003B001000000004187
1333:10534000F38301006882A242056C00000000004166
1334:1053500005B00100F48222CA07140000F48200465E
1335:10536000F3930000F4822043956F0000F48280CA1A
1336:1053700005300000F482220180300000F48200CB6E
1337:10538000DB910000570100BCABB30000000000BC83
1338:10539000B1B30100F48200CACFB30000FF0000CA1D
1339:1053A00081880100F482A240747D000060002040EA
1340:1053B000609901007382A8B18230000072820040BF
1341:1053C00081B20000F48200CA79B300000000004EF0
1342:1053D00081B0010000000043CB8301000000454084
1343:1053E00081B201007982A241815000000000454055
1344:1053F00081B201000000454081B2010084829182A7
1345:10540000823000000000008A80B00100AE9F0040A2
1346:1054100080CE01008282A640813200008482564004
1347:1054200081B20000B6030040A199010000000053C2
1348:1054300007900100B6030040A1990100000000524E
1349:1054400007900100D89F00418BB300000000004E80
1350:1054500081B0010000000042CD8301000000464001
1351:1054600081B201008982A2418150000000004640C3
1352:1054700081B201000000464081B201009482918116
1353:10548000823000000000008980B00100AE9F004023
1354:1054900080CE01009282A640813200009482554065
1355:1054A00081B20000B6030040A19901000000005243
1356:1054B00007900100B6030040A199010000000053CD
1357:1054C00007900100D89F00418BB30000B10300405A
1358:1054D000A1990100C4142F4099B301005701004065
1359:1054E00049B10000A0942E4397B001000000004095
1360:1054F000F1B101009B82A2419750000050952040DD
1361:10550000E1B10100AC942E4397B0010000000040CF
1362:10551000F1B101009F82A24197500000000080403D
1363:1055200081B20100AE030040A399010000000040D9
1364:1055300081B001006015004085980100080000401E
1365:1055400040E40100000000594194010000000050B7
1366:1055500041E00100000000424094010000000057BB
1367:10556000419001000000004181C001000000A34201
1368:10557000816C010000000041A3C10100A582A0428E
1369:10558000816C0000A582005085C00000DD82A24130
1370:10559000017D0000B5822258737D00007800004034
1371:1055A00061990100B082A8B19C30000030003845FC
1372:1055B0009DE001000100000E10C90000B58233C457
1373:1055C00081300000B882A1AD9D200000AF82134061
1374:1055D00081B200000000134E5A83010030003845AC
1375:1055E0009DE00100C08222AB80040000BE82A24088
1376:1055F000017D0000C082225F577D00003C87004093
1377:1056000081B20000C082225E577D00009F8700406B
1378:1056100081B20000C5822254737D000074000040F6
1379:1056200061990100C082A8B1003000009084A25F9F
1380:10563000017C0000D086004081B20000C782A25FDA
1381:1056400059270000C982A25C737D0000D082A25E4F
1382:10565000737D0000DA82225C737D0000DB823740BC
1383:10566000813200007C00004061990100CA82A8B12B
1384:10567000363000007C00004061990100CC82A8B166
1385:10568000003000001F00000002880100BF841740A6
1386:1056900081B20000DB823440813200007E00004095
1387:1056A00061990100D182A8B112300000D882522144
1388:1056B00013040000000014412FC30100FF3F000944
1389:1056C000008C01000000004301F001001183003450
1390:1056D00013840000FF3F1409008C01007183004314
1391:1056E00001F000000000004081B20100DB82334085
1392:1056F00081320000AF82134E5A9300001487A248F3
1393:10570000FD7F00000400A2AC80320000E382225A38
1394:10571000737D00007A00004061990100E082A8B129
1395:105720007E310000010000CF11C90000E982A240D3
1396:10573000937F0000E9822244937F0000E58242A526
1397:1057400080300000E882A240937F0000FB821A4074
1398:105750009393000000001A4081B20100DD80A24056
1399:10576000737D00000F872244216F000006872240CE
1400:10577000657D00000005A25B737D00000400A24966
1401:10578000337D0000F3822248337D0000FF01009941
1402:1057900080D801000000005081E00100A8982F404F
1403:1057A00033B1010000000040E0C10100DD82004093
1404:1057B00081B20000AF8200408BB3000000000058AF
1405:1057C00061B101000000004E62B10100AF822840CB
1406:1057D00081320000F682004081B20000F98233403D
1407:1057E0001F300000AF82134E5A930000FD82A0CEFE
1408:1057F000815000000F83A0CD816C0000000000A547
1409:105800009CB30100000000B181B001000F8322B5FC
1410:105810008114000080152F4049B1010001834240EE
1411:1058200081320000000060B465970100D0152E4061
1412:1058300069B3010000001A44938301001A0000A21A
1413:1058400080DC010000000044F1B10100000000B163
1414:10585000F1B10100000000B5F1B101000500004008
1415:10586000619901008000004062DD01000A83A8A167
1416:10587000E0310000E98200889EB30000E982A24185
1417:10588000676F0000E982006FDB9100000F834240E8
1418:1058900081320000E9821A409383000000990009D8
1419:1058A00046C901003F0000F30C8801001A83A6429C
1420:1058B00013600000299400950330010015836140B6
1421:1058C0008132000075000040619901001683A8B183
1422:1058D0000C30000036947110943001001B83005886
1423:1058E0001F9000001C94009503300100AF820088D7
1424:1058F0001CB0000000002D0348B1010004002DF091
1425:105900002EB00100EE070040979801002283234B40
1426:10591000E46D00002283224BFD7F00000000004068
1427:105920001F90010022002F4081B2010025838317C0
1428:105930008032000026000040479901002783851728
1429:10594000803200000000004847C101002D8322552D
1430:105950002F7C00000000004243D101000F0000FA3C
1431:10596000968801000000004297E00100000000421C
1432:1059700097D001002E83004B44C10000120000A20A
1433:1059800044C90100280000F602CC01000A0000A171
1434:1059900042C90100000000F816B00100000028F024
1435:1059A00010B00100000000F01AB00100000000A2D9
1436:1059B0002AB00100C0283C460DE0010000002D4443
1437:1059C00095B001003A83A2F80E3000004A832241CC
1438:1059D0009550000000002D5049C101003683004061
1439:1059E00081B200003783A2F8166C00003783A2F85A
1440:1059F000106C00003783A2F01A6C00004883225814
1441:105A00001F7C000000993F4213F001003F83654076
1442:105A1000813200004383A2F37406000000000006F8
1443:105A2000E69501004883754081B200000000000641
1444:105A300096B001003F0075F30C880100000000558E
1445:105A400061B101000000004B62B101004683A84033
1446:105A500081320000488367408132000050837741E3
1447:105A60002DC300004E8322581F7C0000000000550B
1448:105A700061B101000000000662B101004C83A84042
1449:105A8000813200004E836740813200007E8377417F
1450:105A90002DC30000030000071AF40100EF92000775
1451:105AA000163001005F832241816C00005683224240
1452:105AB000816C0000AF8200881CB000005E83225F12
1453:105AC0000F7C0000E393005F011001005C83224023
1454:105AD000956C00000480000342C90100000000F240
1455:105AE00002B0010058930052953001005F93004BC3
1456:105AF00002B0000041940009963001001A8700406E
1457:105B00000FB000006783A25A1F7C0000699200401A
1458:105B10008132010067832220856C000064839C0F22
1459:105B200080320000AF8200881CB000004A93005C05
1460:105B30001F0001003C95004261310100AF820088E6
1461:105B40001CB00000900400079630010000002D05F5
1462:105B500048B101006A8382F0183000008188004556
1463:105B60008FB00000282000A696B001006E83221797
1464:105B700096040000E094004B953001008188004BB2
1465:105B80008FB00000EF93000348310100CA9100403C
1466:105B9000813001008188004081B2000000002E1099
1467:105BA00048B101000000685003B00100000000038C
1468:105BB000F0B1010040000000E0C9010000002E50DB
1469:105BC00049C1010000000050F1B1010000000003D4
1470:105BD000F0B101000000004261B10100200000109E
1471:105BE00062DD01007983A8408132000010000010BE
1472:105BF00062C901007B83A800E0310000AF82008809
1473:105C00001CB0000000002D0348B10100000000405E
1474:105C10000FB00100000000F82EB00100000000F2FB
1475:105C200002B001000000004017B00100004100A6D2
1476:105C300096B00100EE072E4797900100918322173E
1477:105C4000960400008F83224BFD7F00008F8323A2E8
1478:105C5000026C00005893005295300100040022416C
1479:105C6000975000000C002D0012B00100000000F061
1480:105C700000B001000000005C018001005F93004B58
1481:105C800002B000000000000900B001000000005058
1482:105C900003B00100AE83005C17900000A383224391
1483:105CA0002F7C0000000000451F9001009C83225FB4
1484:105CB0002F7C000000002E1048B1010000000058A9
1485:105CC000F1B1010010000003F0C901001000000054
1486:105CD000E0C90100988362426131000000000010B9
1487:105CE00062B101009983A84081320000AF827288BE
1488:105CF0001CB0000020002D0348B10100FF0F00F68A
1489:105D000080880100A083A2A6816C0000A38300F21A
1490:105D10003AB000008D84A24BFD7F0000B09200409D
1491:105D2000813201003087004081B20000AE83224AF8
1492:105D30002F7C0000AE8322482F7C00000A002D0338
1493:105D400048B101003F0000F2868801001F000043B7
1494:105D5000848801000500004380F4010098943D42CE
1495:105D600081E00100AE83A242E07D00008D84A24B61
1496:105D7000FD7F0000B092004081320100308700407A
1497:105D800081B20000AE83694081320000000000A3B0
1498:105D900009B001000000794147C30100B48322A18A
1499:105DA000096C0000F58200881CB00000B18300037C
1500:105DB00048B10000EE83A392036C0000949500406C
1501:105DC000953001000000004143C3010000000016AF
1502:105DD00080B201003087270880320000BB83225C3C
1503:105DE000177C0000BC8300002AB0000012000000F5
1504:105DF0002AC801000200000880C80100C083A24335
1505:105E00002F7C0000E394004081320100DC83005EBF
1506:105E100017900000040000018CCC0100E394004CBA
1507:105E20000330010000002E4602B0010010000010F7
1508:105E300048C901000C000001F0CD01002C00004019
1509:105E4000F0C9010000000016F0B1010010000015BB
1510:105E5000E0C901000000004361B10100A00000A4FE
1511:105E600062DD0100C983A85417100000DC83005EC6
1512:105E700017900000120000002AC80100DB832243B3
1513:105E80002F7C0000040000018CCC01000000004CBD
1514:105E900003B00100049500436131010000002E466B
1515:105EA00002B001001000001048C901000C00000100
1516:105EB000F0CD01000C000009F0C90100000000183D
1517:105EC000F0B1010010000015E0C90100000000431E
1518:105ED00061B10100A00000A462DD0100DC83285450
1519:105EE00017100000D883004081B2000004950043E1
1520:105EF00061310100DE8322502F7C0000000000563B
1521:105F0000179001000700001798880100E183A24163
1522:105F1000996C00000000005517900100000000433C
1523:105F200061B101004000001062DD0100E283A84081
1524:105F300081320000AF8200881CB00000EB9400406A
1525:105F400081320100E98322432F7C00001680000388
1526:105F500044C901000000001DE4B101008C94005E02
1527:105F600005100100EC83A25F2F7C0000A6910001C8
1528:105F700038430100B0920040813201003087004078
1529:105F800081B20000F083A24BFD7F00008A840041B3
1530:105F900043C300000000004027B0010000000040A3
1531:105FA0002DB001000000004011B00100F383350165
1532:105FB000863000006D00004061990100FB8328B12C
1533:105FC00030300000F483224D757D00000000001683
1534:105FD00080B201007A84A740116C000000000041EB
1535:105FE00043C301008984004081B200006D0000407D
1536:105FF00061990100FB83A8B1123000000000001677
1537:1060000080B201000584A740116C0000000000412F
1538:1060100043C301000000000910B001000000001897
1539:106020002CB00100DE07004380CE0100F483AA40BB
1540:10603000813200000A84004081B2000040003E43EB
1541:1060400027E0010000000009F0B101000000001885
1542:10605000E0B101000000004127C00100F483A30B60
1543:1060600087500000000015401BB0010000000040F8
1544:1060700023B00100120000002AC8010040002D409A
1545:1060800039B001001284A240276C000022000008F1
1546:1060900012C80100DE070040259801001584004069
1547:1060A00081B20000000000F812B00100000000F012
1548:1060B00030B001000000000B25B00100000000100E
1549:1060C00032B0010014002001E0B10100EE070040F1
1550:1060D000379801001A842301366C0000000000018B
1551:1060E00036B001002584824123400000208000104A
1552:1060F00042C9010021842240E36D000000000043FA
1553:1061000061B101004000001062DD01001E84A84062
1554:1061100081320000AF8200881CB00000CF920043A3
1555:10612000233001000000001032B0010000000041E7
1556:1061300023B001000000000348B1010000800019F5
1557:1061400044C90100348422451F7C00000000004C3B
1558:10615000F1B1010000000009F0B1010000000018D9
1559:10616000F0B101000000004361B1010020000019FE
1560:1061700062DD01002B84A815E03100000000005012
1561:1061800003D001000000005033C001000000004CAB
1562:1061900025D001000C002D4C13C001000000005060
1563:1061A00037D00100000000502BC001001A840045C8
1564:1061B0001F8000003684A312366C00003784681BF1
1565:1061C00028B000000000681228B00100000000099B
1566:1061D000F0B1010000000018F0B101000000004320
1567:1061E00061B101002000001962DD01003A84A815A8
1568:1061F000E0310000608422140250000000000050D2
1569:1062000033C001000000001424D001000C002D1444
1570:1062100012C001005984A214365000004A84225C46
1571:106220001F7C00003080001042C9010048842240D9
1572:10623000E36D00000000004261B101004000001069
1573:1062400062DD01004584A84081320000AF820088F1
1574:106250001CB000000000000348B101000C002D5CE0
1575:106260001F800100100000F02AC801000000005C3F
1576:106270002B800100F0070040379801004F84230174
1577:10628000366C00000000000136B001005A84221B69
1578:10629000026C00003000001048C9010000002E5CB4
1579:1062A0001F90010000000050F1B101000000000348
1580:1062B000F0B10100FF070015E08D01000000004271
1581:1062C00061B10100A00000A462DD01005684A84075
1582:1062D000813200005A84000348B10000000000141D
1583:1062E0002AC001001A84A240256C00000000004171
1584:1062F00039C0010040003D4339E001000000000BBF
1585:1063000025B00100000000F812B001001A8400F06E
1586:1063100030B000000080001942C9010066842240AC
1587:10632000E36D00000000004361B10100400000196E
1588:1063300062DD01006384A84081320000AF820088E2
1589:106340001CB00000CF9200402B30010018002E033B
1590:1063500048B101006A8422502F7C000000000056E2
1591:106360001790010007000017988801006D84A24172
1592:10637000996C0000000000551790010070842243C2
1593:106380002F7C000000000054179001001600201D13
1594:10639000E4B101007284A340276C00007484605F44
1595:1063A000179000000084000B16DC01000000601351
1596:1063B000169401008C94005E051001003087A25FE6
1597:1063C0002F7C00001480000342C90100000000F28D
1598:1063D00002B00100A691000138430100308700405F
1599:1063E00081B200000000004083B001000000004DB9
1600:1063F00061B101000000001662B101007C84A84078
1601:10640000813200000000000862B101007E84A840D3
1602:106410008132000089842213826C000040003D43D9
1603:1064200083E00100000000F810B00100000000F05F
1604:106430002CB001000000001662B101008484A84065
1605:10644000813200000000000862B101008684A8408B
1606:10645000813200008084004183C0000000001540AC
1607:1064600081B20100008200A604B00100A0980040A3
1608:1064700047990100300500418930010058930052CE
1609:10648000953001005F93004B02B000003087004060
1610:106490000FB000000000005F01800100100000004C
1611:1064A0000EF401003F000000008801000300000717
1612:1064B0001AF40100EF920007163001009B8422417C
1613:1064C000816C000099842242816C0000AF820088B8
1614:1064D0001CB000009A84225F0F7C00001A870040E5
1615:1064E0000FB00000A384A25A1F7C000069920040F4
1616:1064F00081320100A3842220856C0000A0849C0FBF
1617:1065000080320000AF8200881CB000004A93005C1B
1618:106510001F0001003C95004261310100AF820088FC
1619:106520001CB00000900400079630010000002D050B
1620:1065300048B10100000000F018B00100A984223A1F
1621:10654000016C0000000000008EB001008188004056
1622:1065500001B000000000004081B201002E002D05B6
1623:1065600048B10100AD84A240E76D00000A00004080
1624:106570008F9801008188004001B0000034920040F3
1625:10658000813201001C94009503300100AF82008825
1626:106590001CB0000000002D0348B1010022002DF0C6
1627:1065A0002EB00100282000A696B00100B684221764
1628:1065B00096040000E094004B953001008188004C67
1629:1065C0008FB00000B88483178032000000000044C0
1630:1065D00043C10100BA8485178032000000000048E2
1631:1065E00043C10100280000F602CC0100120000A106
1632:1065F0002AC80100EF93004081320100CA91004196
1633:10660000813001008188004081B20000000000015B
1634:1066100000D0010000002E1048B101002800004009
1635:10662000F199010000000003F0B10100000000003A
1636:10663000F0B10100C4846447613100000000001023
1637:1066400062B10100C584A81BE0310000AF827488EC
1638:106650001CB000000000004503E0010008002D030D
1639:1066600048B10100EA8401FB083000003D8587FB4A
1640:1066700022300000000000FA0EB00100000000F817
1641:1066800014B00100030000071AF40100EF920007A4
1642:1066900016300100E0842241816C0000D484224243
1643:1066A000816C0000AF8200881CB00000DF84225F94
1644:1066B0000F7C0000380000047E890100D884A65FAA
1645:1066C0000F0000004292004005300100DD840040D0
1646:1066D00081B20000130000408798010000002D03E4
1647:1066E00048B101000C002DF082B00100000000F064
1648:1066F00084B00100CE930040053001000000005C32
1649:106700001F9001001A8700400FB00000E884A25AD1
1650:106710001F7C00006992004081320100E884222041
1651:10672000856C0000E5849C0F80320000AF820088F9
1652:106730001CB000004A93005C1F0001003C95004221
1653:1067400061310100AF8200881CB000009004000796
1654:106750009630010000002D0548B10100000000F056
1655:1067600018B00100EC84210480200000ED8400407A
1656:1067700010C90000C387004B81B000000C850043A6
1657:1067800081B00000108500FB22B00000C3870041EB
1658:1067900081B000008188004E8FB000000885005A4B
1659:1067A0008FB00000F58400478FB00000C38700530E
1660:1067B00081B00000C387005681B0000032002D0573
1661:1067C00048B101008188A00AE46D0000FB84A24169
1662:1067D000197C0000FA84220A80320000818800536C
1663:1067E0008FB00000818800548FB000000485220A19
1664:1067F00080320000FE84A20AE46D00008188005D02
1665:106800008FB00000000000F280B001000000000A1C
1666:1068100080D001000285A091816C00008188005E1B
1667:106820008FB00000250000408F9801008188004053
1668:1068300081B2000006852091E56D0000818800543A
1669:106840008FB00000210000408F9801008188004037
1670:1068500081B2000032002D0548B101008188A00AF4
1671:10686000E46D0000240000408F9801008188004002
1672:1068700081B2000037002D0548B10100040000F38B
1673:1068800082F40100C387A042836C0000C3870054D8
1674:1068900081B00000000000F20EB00100030000070C
1675:1068A0001AF4010000B5000D42C9010007000007FD
1676:1068B000168801001985220BE67D00000A000040C1
1677:1068C00087980100DF950040813201000000004000
1678:1068D0000FB001001A87005C1F9000002B8522502A
1679:1068E000FD7F00002685A254FD7F00001E852255F5
1680:1068F000FD7F00008200004087980100168500405F
1681:1069000081B2000016852253FD7F00001480000331
1682:1069100042C90100000000F096B001001000004BD9
1683:1069200080F401000CBC00408798010026852243BA
1684:10693000806C0000FFFF004B808801001685A24399
1685:10694000806C00007C9600404799010027854640F6
1686:10695000813200002A85A0F0306F00001C851E40A7
1687:1069600081B2000000001E4131C30100739200405B
1688:10697000253001002F859C0F80320000AF820088F7
1689:106980001CB000004A93005C1F000100148000034B
1690:1069900042C90100000000F096B0010000002F0580
1691:1069A00048B101001000000718E401000008000CC5
1692:1069B000E0990100900400079630010000B5000D39
1693:1069C00046C9010036853040813200000000000BCE
1694:1069D000E6910100000200A146C901000000000B81
1695:1069E000E691010004002E0548B1010000001040AE
1696:1069F000E1B10100C387004081B00000000000FB4E
1697:106A000028B00100000000FB86B00100000000F883
1698:106A100014B0010047852246237C000043852240B4
1699:106A2000877C0000000000481F900100458522413E
1700:106A3000877C0000000000471F900100478522422C
1701:106A4000877C0000000000451F9001004785661B01
1702:106A50002C300000000000A013B0010000007641BF
1703:106A600041C3010076852392156C00007685A2450E
1704:106A70001F7C00007A85224BFD7F0000170000D0AC
1705:106A8000A2C901000000004027B001000200000A76
1706:106A900024C80100AB9200400F3001007485220829
1707:106AA0004030000000000041A3C10100F0070012C7
1708:106AB00024CC01005085AA412740000001000013AA
1709:106AC00080CC01007085264023300000000000408B
1710:106AD00083B001006000000384C8010010000010B2
1711:106AE00048CD0100170000D0A2C901005D85A24079
1712:106AF000836C00006985004183B000000080004283
1713:106B000044990100000068213896010000002E50D1
1714:106B100049C101006285A244236C000030000003DB
1715:106B200048C9010000000044F1B101000C00002040
1716:106B3000F0C901000000004461B10100A00000A400
1717:106B400062DD01006585A842E031000000000044DC
1718:106B500085C001000000004123C001000000004189
1719:106B6000A3C101005B85A2418150000070852240D5
1720:106B7000236C00000000004461B1010040000010DF
1721:106B800062DD01006D85A84081320000AF8200887F
1722:106B90001CB000000000000348B10100EE070040F7
1723:106BA00025980100170000D02AC80100838500172E
1724:106BB00010B0000095940040813201007A850040B9
1725:106BC00081B20000AB92009225300100000000402D
1726:106BD00031B001007A8522082E3000008385004103
1727:106BE00027B00000808000A604B00100060000402D
1728:106BF00087980100DF95000A8C30010000000040FA
1729:106C00000FB001000000005C1F9001008285229FF0
1730:106C1000136C0000020000881CCC0100F5820040CB
1731:106C200081B200001A8700413FC30000000000400D
1732:106C30000FB001002800000180CE010097852A4096
1733:106C4000813000000080001044C901004000004075
1734:106C5000819801008C85A2481F7C00008C85A2478A
1735:106C60001F7C00008C85A307036C0000800000409F
1736:106C7000819801008F85A340026C0000280000016C
1737:106C8000F0CD0100918500400FB0000028000040C9
1738:106C9000F0CD0100040000400ECC010028000003EC
1739:106CA000F0C9010028000000F0C901000000001632
1740:106CB000E0B101000000004761B1010020000010B8
1741:106CC00062DD01009585A85C1F10000000000040F7
1742:106CD00043990100000000F008B00100A0012D4020
1743:106CE00000C001006186220F42050000A8859C0FAC
1744:106CF000803200000000005C1F8001000080001056
1745:106D000042C90100A3852240E36D00000000004756
1746:106D100061B101004000001062DD0100A085A840C3
1747:106D200081320000AF8200881CB00000A8852207D5
1748:106D3000803200000000000342B1010000000007A3
1749:106D400042C10100008000A1469901000000005FDF
1750:106D5000E1910100C006A2451F7C00001000000365
1751:106D600048C9010000002D5429C00100000000F8AE
1752:106D700018B00100000000F804B00100000000F8A5
1753:106D80000EB00100420000030AC801000C0000A47C
1754:106D90000CC80100ED920040813201000000001497
1755:106DA00002B001000000001424D001000000001413
1756:106DB00010C001001200000810C8010000000040CF
1757:106DC00023B00100FE7F000544C901000000000A55
1758:106DD000E4B10100D18522018032000000003C4472
1759:106DE00023E0010000002EA480B00100000000108C
1760:106DF00048C10100BE85A307026C0000BF85680181
1761:106E00001AB00000000068071AB001000000000D71
1762:106E100002D0010000000005F0B101000000000CEC
1763:106E2000F0B1010000000002E0B101000000000D1F
1764:106E30000AC00100CB852240036C0000CB852242B2
1765:106E4000236C00000000004123C001000000004747
1766:106E500061B10100A00000A462DD0100EF852840BF
1767:106E600081320000C885004081B20000000000109F
1768:106E700080C001000000004761B101000000004037
1769:106E800062B10100CD85A84023300000AF820088A8
1770:106E90001CB00000EF85004081B2000000003C44BF
1771:106EA00023E00100000000A486B0010000002E10C5
1772:106EB00048C10100D685A3120E6C0000D78560077B
1773:106EC0001AB00000000060121AB001000000680D46
1774:106ED00016940100FFFF000B16D80100000068089F
1775:106EE0003E9601000000000CF0B10100000000021D
1776:106EF000E0B101000000001086C001000000004663
1777:106F000061B101002000004362DD0100DE85A85C64
1778:106F10001F1000000D86220D146C0000E485220D68
1779:106F2000246C00000000000D10C00100E885000D79
1780:106F300024D00000000000412BC00100000000151B
1781:106F4000A2B101001000002010C80100F0070040AD
1782:106F500025980100EA852242236C0000EF8500415C
1783:106F600023C000000000004661B101004000001095
1784:106F700062DD0100EB85A85C1F000000AF82008885
1785:106F80001CB000000000004023B001000D86220D5F
1786:106F9000145000000C86A20D0E500000FB85224606
1787:106FA0001F7C0000000000461F80010030800010A0
1788:106FB00042C90100F9852240E36D0000000000474E
1789:106FC00061B101004000001062DD0100F685A840BB
1790:106FD00081320000AF8200881CB0000020800003D6
1791:106FE000469901000000005FE191010000002D06BC
1792:106FF00048B10100000000F818B00100000000F8DE
1793:1070000004B0010000861FF00E300000B885004C6F
1794:107010000DC0000000002E5F0F800100B88523071F
1795:10702000146C00003000001048C90100240000402A
1796:10703000F199010000000003F0B101000000000020
1797:10704000F0B1010000000016F0B1010024000000C2
1798:1070500000C801000000004761B10100A00000A4C9
1799:1070600062DD01000986A8461F100000B8850003F4
1800:107070000CB00000B885000D18C0000004002E14EC
1801:107080000AD001001200000548CD0100FE7F000576
1802:1070900042C901000C002AF2E0B10100138622402F
1803:1070A000316C000000006018389601001E0000409E
1804:1070B00043990100008100F680CE01001786A640AA
1805:1070C000813200000000004443C101001986220BF8
1806:1070D000ED6D0000080000A142C90100020000A1FE
1807:1070E00046C901000F0000FA948801000200004A1E
1808:1070F00086E40100000000F60EB001002186224760
1809:107100001F7C000004001F430E5000002186A04693
1810:107110000F400000000000410FC0010025862248FA
1811:107120001F7C00000000004091B0010004000FA28D
1812:10713000423100002886004089B000000C0000A207
1813:1071400042C901000000004389B001000000004373
1814:1071500095D00100000000FC82B001002B86A04108
1815:10716000904000000000004191C00100308622479D
1816:107170001F7C00003086A043896C000030862045CB
1817:10718000896C00003086A0410E40000000000041E4
1818:107190000FC001000000004189C001002886A24103
1819:1071A00095500000398622481F7C000010000048DE
1820:1071B00092F40100FFFF0048908801003786904854
1821:1071C000924000000000004193C001000A0000A2AC
1822:1071D00044C901000000662093A401003080001023
1823:1071E00044C9010012000014F0C90100000000179A
1824:1071F000F0B1010012000005E0CD010030000010E8
1825:1072000080C801000000004461B10100200000407E
1826:1072100062DD01003F86A840813200004A86225C80
1827:107220001F7C000000003C4423E0010000002D1002
1828:1072300048C1010049862240E36D0000000000467D
1829:1072400061B101004000001062DD01004686A840E7
1830:1072500081320000AF8200881CB000000000005C9A
1831:107260001F8001004D86A2471F7C0000E392004072
1832:1072700081320100C686001710B00000EA9200407B
1833:107280008132010000002F0348B101005186A007A0
1834:10729000164000000000004117C001000000000B74
1835:1072A000E4B101000000005017F00100558690F293
1836:1072B000164000000000004117C0010000006620D9
1837:1072C00017A40100100000142AC80100000000509B
1838:1072D0002BE00100000000F22A9401003080001031
1839:1072E00042C901005F862240E36D000000000044B7
1840:1072F00061B101004000001062DD01005C86A84021
1841:1073000081320000AF8200881CB0000000800017AE
1842:1073100010DC0100C686004081B2000069869C0F27
1843:10732000803200000000005C1F800100008000101F
1844:1073300042C9010069862240E36D00000000004759
1845:1073400061B101004000001062DD01006686A840C6
1846:1073500081320000AF8200881CB000006E862207D8
1847:10736000803200000000000342B10100000000076D
1848:1073700042C10100008000A1469901000000005FA9
1849:10738000E191010004002E0348B101000000000A51
1850:10739000E0B1010073862240316C00000C00004017
1851:1073A00045990100000060183896010000002E1079
1852:1073B00048B1010000000050F1B1010000000008D8
1853:1073C000F0B1010000000003E0B101000000004442
1854:1073D00061B101000000001062B101007886A84090
1855:1073E00023300000AF8200881CB0000000002D5246
1856:1073F00011C001001000000348C90100000000F89E
1857:1074000018B00100000000F804B00100000000F80E
1858:107410000EB001000C0000A40CC8010000003C44A8
1859:1074200023E00100000000A486B0010000002E103F
1860:1074300048C101008686A3120E6C0000878668078B
1861:107440001AB00000000068121AB00100000000101D
1862:1074500086C00100000068083E9601000000000C94
1863:10746000F0B1010000000002E0B1010000000046A0
1864:1074700061B101002000004362DD01008C86A85C40
1865:107480001F100000BB86220D146C00009286220D96
1866:10749000246C00000000000D10C001009686000D55
1867:1074A00024D00000000000412BC0010000000015A6
1868:1074B000A2B101001000002010C80100F007004038
1869:1074C0002598010098862242236C00009D86004189
1870:1074D00023C000000000004661B101004000001020
1871:1074E00062DD01009986A85C1F000000AF82008861
1872:1074F0001CB000000000004023B001000400220D79
1873:1075000014500000BA86A20D0E500000A986224633
1874:107510001F7C0000000000461F800100308000102A
1875:1075200042C90100A7862240E36D00000000004729
1876:1075300061B101004000001062DD0100A486A84096
1877:1075400081320000AF8200881CB000002080000360
1878:10755000469901000000005FE191010000002D0646
1879:1075600048B10100000000F818B00100000000F868
1880:1075700004B00100AE861FF00E3000008186004C82
1881:107580000DC0000000002E5F0F80010081862307E0
1882:10759000146C00003000001048C9010024000040B5
1883:1075A000F199010000000003F0B1010000000000AB
1884:1075B000F0B1010000000016F0B10100240000004D
1885:1075C00000C801000000004761B10100A00000A454
1886:1075D00062DD0100B786A8461F1000008186000307
1887:1075E0000CB000008186000D18C00000C486225C2B
1888:1075F0001F7C00000000005C1F80010000003C4474
1889:1076000023E0010000002D1048C10100C486224083
1890:10761000E36D00000000004661B101004000001071
1891:1076200062DD0100C186A84081320000AF8200887F
1892:107630001CB000000000001710B00100C68600401A
1893:107640002BB00000008000034499010000000004FA
1894:10765000E0B10100CB86229F136C0000020000887D
1895:107660001CCC0100F582004081B20000F095004181
1896:107670003F430100000000408DB0010000000040C9
1897:1076800005B00100DF9500400F3001003087005C3D
1898:107690001F900000100000000EF401000000003AEE
1899:1076A00001840100030000071AF40100EF920007B3
1900:1076B00016300100DA862241816C0000D886224211
1901:1076C000816C0000AF8200881CB00000D986225F68
1902:1076D0000F7C00001A8700400FB00000E286A25A1B
1903:1076E0001F7C00006992004081320100E286222066
1904:1076F000856C0000DF869C0F80320000AF8200881E
1905:107700001CB000004A93005C1F0001003C95004241
1906:1077100061310100AF8200881CB0000090040007B6
1907:107720009630010000002D0548B10100000000F076
1908:1077300018B001000000000080B00100C387A25F04
1909:10774000816C0000A8002D431980010037002DF046
1910:1077500024B00100040000F38EF401000F0000F3D8
1911:1077600090880100F18622488E6C000036000040AF
1912:107770004399010058003D43E7E10100F1861FF005
1913:10778000246C0000F08623418F6C0000C387004703
1914:1077900081B00000C387004881B000004000004075
1915:1077A00043990100B0002DF014B00100F686220AC2
1916:1077B00090400000C395004091300100C387A24073
1917:1077C00080320000B0002D4581B00100028722F018
1918:1077D0002C300000A3002D3083B00100AC002DF34D
1919:1077E00082E00100FC86A3412C6C00000000001622
1920:1077F00082B0010098002DF082C0010088002DF0B9
1921:1078000082D00100000000F298E80100C387204CFC
1922:10781000826C00007C002D4198E80100C38720F0B5
1923:10782000986C00001A87220A803200004002000C87
1924:107830007E8901001A87A64081320000C387004973
1925:1078400081B00000200000A680B001000A8722431A
1926:10785000216F00001380004080DC01000B87004096
1927:1078600081B200001A80004080DC01000B87A25E1C
1928:107870000B7D00000000004008B101000D879F85CE
1929:10788000803200001187004081B20000EC8222406B
1930:10789000577D0000010000405799010011874240C8
1931:1078A000813200000000004493930100DD821A5BE6
1932:1078B00069930000040000CB81C8010017872240B3
1933:1078C000F27F0000C480006F9733010019872240C7
1934:1078D000737D0000DE8000418BB300001487004000
1935:1078E00081B2000021879C0F8032000000800010D0
1936:1078F00042C9010021872240E36D000000000045DD
1937:1079000061B101004000001062DD01001E87A84047
1938:1079100081320000AF8200881CB000004592220234
1939:107920008032000022874240813200000000004483
1940:107930009393010045921A02689700002C879C0FD0
1941:10794000803200000080001042C901002C872240D4
1942:10795000E36D00000000004561B10100400000102F
1943:1079600062DD01002987A84081320000AF820088D3
1944:107970001CB000004F922202803200002D8742404E
1945:107980008132000000000044939301004F921A02DC
1946:107990006897000037879C0F80320000008000103D
1947:1079A00042C9010037872240E36D00000000004516
1948:1079B00061B101004000001062DD01003487A84081
1949:1079C00081320000AF8200881CB00000F9822202E0
1950:1079D00080320000388742408132000000000044BD
1951:1079E0009393010000001A0268970100F982004099
1952:1079F00005B00000008000A656B1010056952F404A
1953:107A000005B001008887A240E76D0000B8942941C5
1954:107A1000E7B1010000000054EF930100000000F204
1955:107A20000EB00100290000400D9801000900000778
1956:107A300012E40100000000A713C0010003000007CA
1957:107A40001AF401000700000716880100FFFF00106C
1958:107A500034D801000000000334940100000000400D
1959:107A600023B00100201800401198010000B5000D5E
1960:107A700042C901006C87220BE67D00004D87604003
1961:107A800081320000FFFF000784890100548705C28E
1962:107A900024300000580400408132010000002D0510
1963:107AA00048B10100898770F0183001006C870040F0
1964:107AB00081B200000000704081B201006387A048DD
1965:107AC000236C00000000005035D001000080001A37
1966:107AD00042C901005D872240E36D000000000042C2
1967:107AE00061B101004000001A62DD01005A87A84020
1968:107AF00081320000AF8200881CB000002098004056
1969:107B000043990100898700F8183001005E87A2417F
1970:107B100023500000FFFF001034D8010000000003D4
1971:107B200034940100201800401198010000002E1A22
1972:107B300048B1010000000044F1B10100000000085C
1973:107B4000F0B101000000004261B101002000001A04
1974:107B500062DD01006787A809E031000000000041F4
1975:107B600023C001000000005035C0010000000044A7
1976:107B700011C00100788722410D5000000000004133
1977:107B80000FC001007487A0AA0F6C00000000004124
1978:107B90000FB001000900000712E40100000000A777
1979:107BA00013C00100000000401BB001004B870041E2
1980:107BB00017B000000002000912C801004B87834182
1981:107BC000174000000000004017B001004B87004143
1982:107BD0001BC0000083872340236C0000000000507E
1983:107BE00035D001000080001A42C901008087224080
1984:107BF000E36D00000000004261B101004000001A86
1985:107C000062DD01007D87A84081320000AF820088DC
1986:107C10001CB000002098004043990100898700F8BB
1987:107C2000183001008187A24123500000000000416C
1988:107C30000FC001008687A0AA0F6C00000000004161
1989:107C40000FB00100B8942007E4B101005695204020
1990:107C5000E7B101001A8700400FB00000FFFF000CE1
1991:107C600080D80100C002000C7E8901009B87265449
1992:107C7000613100009187870C803200000F000040C6
1993:107C80006299010091872840813200009187A254B7
1994:107C9000777D00008D87004081B2000096872246E4
1995:107CA000197C00000D000040629901000000A8400E
1996:107CB00081B200000000A254777D0100928700404D
1997:107CC00081B200009B872249197C00000E00004011
1998:107CD000629901000000A84081B200000000A25497
1999:107CE000777D01009687004081B2000010000040BF
2000:107CF000629901000000A84081B200000000A25477
2001:107D0000777D01009B87004081B2000030942F55A1
2002:107D1000F1930100004000A656B10100F982A24192
2003:107D2000E551000064000040E5990100A38744404C
2004:107D300081320000A687A293576F00000000004127
2005:107D400057C3010000001CAB27B30100F982225089
2006:107D5000FD7F0000F9822251FD7F0000F982A241DF
2007:107D60001D530000504600401D9B01003805004097
2008:107D7000813201000E000048B2CB01001004004027
2009:107D800049310100B2872240B56F00000E00004863
2010:107D9000B2CB010020040041B5530100F98200403C
2011:107DA00081B2000000000051FD8301004016004038
2012:107DB0004599010040050040493101001E0000487E
2013:107DC000B2CB01001004004081320100000000DA53
2014:107DD00091C0010004000048B2CB01002004004023
2015:107DE000B533010060162040E5B10100408200403B
2016:107DF000B533010008000048B2CB0100FFFF004A84
2017:107E0000B48B010020040040813201000A000048C8
2018:107E1000B2CB01001000004AB4F70100200400407A
2019:107E200081320100F982004081B20000050000406B
2020:107E300043990100000000F308B001000400204055
2021:107E4000E6B101000300004096E4010000000004D8
2022:107E500096C00100C987004B10C90000EC8A0041A0
2023:107E600009B00000040000208FB0000004000020D2
2024:107E70008FB00000040000208FB00000040000203C
2025:107E80008FB00000040000208FB00000040000202C
2026:107E90008FB00000040000208FB00000040000201C
2027:107EA0008FB00000208B004109B0000004000020CA
2028:107EB0008FB00000040000208FB0000004000020FC
2029:107EC0008FB00000040000208FB0000004000020EC
2030:107ED0008FB00000040000208FB0000004000020DC
2031:107EE0008FB00000040000208FB00000528B0045CE
2032:107EF00009B00000528B004509B00000528B0045CC
2033:107F000009B00000528B004509B0000004000020B9
2034:107F10008FB00000040000208FB00000040000209B
2035:107F20008FB00000040000208FB00000918B004350
2036:107F300009B00000BA8B004309B00000BE8B0044BA
2037:107F400009B00000098D004509B0000004000020C0
2038:107F50008FB00000040000208FB00000040000205B
2039:107F60008FB00000040000208FB00000040000204B
2040:107F70008FB00000CA8B004309B00000C98B0043DA
2041:107F800009B00000EA8A004509B0000004000020A2
2042:107F90008FB00000040000208FB00000040000201B
2043:107FA0008FB00000040000208FB00000798C0042E8
2044:107FB00009B00000798C004309B00000798C0044BE
2045:107FC00009B00000EA8A004509B000000400002062
2046:107FD0008FB00000040000208FB0000004000020DB
2047:107FE0008FB00000040000208FB0000004000020CB
2048:107FF0008FB00000998C004309B0000004000020FD
2049:108000008FB00000EA8A004509B00000040000209B
2050:108010008FB00000040000208FB00000040000209A
2051:108020008FB00000040000208FB00000040000208A
2052:108030008FB00000B78C004309B00000B78C00443B
2053:1080400009B00000EA8A004509B0000004000020E1
2054:108050008FB00000040000208FB00000040000205A
2055:108060008FB00000040000208FB00000040000204A
2056:108070008FB00000B78C004209B00000040000205F
2057:108080008FB00000EA8A004509B00000040000201B
2058:108090008FB00000040000208FB00000040000201A
2059:1080A0008FB00000040000208FB00000040000200A
2060:1080B0008FB00000DF8C004409B0000004000020F5
2061:1080C0008FB00000EA8A004509B0000004000020DB
2062:1080D0008FB00000040000208FB0000004000020DA
2063:1080E0008FB00000040000208FB00000EA8A004238
2064:1080F00009B00000F08C004509B00000F08C00458C
2065:1081000009B00000EA8A004509B000000400002020
2066:108110008FB00000040000208FB000000400002099
2067:108120008FB00000040000208FB00000F28C0042ED
2068:1081300009B00000F28C004309B00000F28C00444A
2069:1081400009B00000F28C004509B0000004000020D6
2070:108150008FB00000040000208FB000000400002059
2071:108160008FB00000040000208FB000000400002049
2072:108170008FB00000040000208FB00000FA8C004493
2073:1081800009B00000EA8A004509B0000004000020A0
2074:108190008FB00000040000208FB000000400002019
2075:1081A0008FB00000040000208FB000000B8D004253
2076:1081B00009B00000FB8C004309B000000B8D0044A7
2077:1081C00009B00000EA8A004509B000000400002060
2078:1081D0008FB00000040000208FB0000004000020D9
2079:1081E0008FB00000040000208FB0000004000020C9
2080:1081F0008FB000000C8D004309B00000028D0044D8
2081:1082000009B00000EA8A004509B00000040000201F
2082:108210008FB00000040000208FB000000400002098
2083:108220008FB00000EA8A004109B00000778C00425C
2084:1082300009B00000778C004309B00000778C00443F
2085:1082400009B00000EA8A004509B0000004000020DF
2086:108250008FB00000040000208FB000000400002058
2087:108260008FB00000EA8A004109B000000D8D004285
2088:1082700009B000000D8D004309B000000D8D0044D1
2089:1082800009B00000EA8A004509B00000040000209F
2090:108290008FB00000040000208FB000000400002018
2091:1082A0008FB00000040000208FB000000400002008
2092:1082B0008FB00000040000208FB0000004000020F8
2093:1082C0008FB00000148D004509B0000004000020AC
2094:1082D0008FB00000040000208FB0000004000020D8
2095:1082E0008FB00000168D004209B00000040000208D
2096:1082F0008FB00000040000208FB0000004000020B8
2097:108300008FB00000040000208FB0000004000020A7
2098:108310008FB00000040000208FB000000400002097
2099:108320008FB00000040000208FB00000228D0043B9
2100:1083300009B00000818D004309B00000BE8B0044ED
2101:1083400009B00000098D004509B0000004000020BC
2102:108350008FB00000040000208FB000000400002057
2103:108360008FB00000040000208FB000000400002047
2104:108370008FB00000898D004309B00000BE8B00441F
2105:1083800009B00000098D004509B00000040000207C
2106:108390008FB00000040000208FB000000400002017
2107:1083A0008FB00000040000208FB000000400002007
2108:1083B0008FB000009A8D004309B000000400002037
2109:1083C0008FB00000EA8A004509B0000004000020D8
2110:1083D0008FB00000040000208FB0000004000020D7
2111:1083E0008FB00000040000208FB000008E8B00438F
2112:1083F00009B00000858D004309B00000BE8B004429
2113:1084000009B00000098D004509B0000004000020FB
2114:108410008FB00000040000208FB0000007002D0581
2115:1084200048B10100000000F308B001000600204739
2116:10843000E6B101000400004796E401000000004797
2117:1084400096D001000000004796D001000000000413
2118:1084500096C001008988004B10C90000B28D004908
2119:1084600009B000000400002085B0000004000020D6
2120:1084700085B000000400002085B00000040000204A
2121:1084800085B000000400002085B00000040000203A
2122:1084900085B000000400002085B00000040000202A
2123:1084A00085B000000400002085B00000040000201A
2124:1084B00085B000000400002085B00000040000200A
2125:1084C00085B000000400002085B0000004000020FA
2126:1084D00085B00000EB8D004209B0000004000020D0
2127:1084E00085B000000400002085B0000004000020DA
2128:1084F00085B000000400002085B0000004000020CA
2129:1085000085B000000400002085B0000004000020B9
2130:1085100085B000000400002085B0000004000020A9
2131:1085200085B000000400002085B000000400002099
2132:1085300085B000000400002085B000000400002089
2133:1085400085B00000F18D004609B000000400002055
2134:1085500085B000000400002085B000000400002069
2135:1085600085B000000400002085B000000400002059
2136:1085700085B000000400002085B000000400002049
2137:1085800085B000000400002085B000000400002039
2138:1085900085B000000400002085B000000400002029
2139:1085A00085B000000400002085B000000400002019
2140:1085B00085B000000400002085B00000FF8D00425F
2141:1085C00009B000000400002085B00000218E0042A8
2142:1085D00009B000000400002085B000000400002065
2143:1085E00085B000000400002085B0000004000020D9
2144:1085F00085B000000400002085B0000004000020C9
2145:1086000085B000001C8E004A09B000000400002064
2146:1086100085B000000400002085B0000004000020A8
2147:1086200085B000000400002085B00000248E0043C7
2148:1086300009B000000400002085B000007D8E0044D9
2149:1086400009B000000400002085B0000004000020F4
2150:1086500085B000000400002085B000000400002068
2151:1086600085B000000400002085B000000400002058
2152:1086700085B000007C8E004B09B000000400002093
2153:1086800085B000000400002085B000000400002038
2154:1086900085B00000F48D004109B000000400002006
2155:1086A00085B00000F48D004309B00000F48D004453
2156:1086B00009B00000F48D004509B00000F48D0046BB
2157:1086C00009B00000F48D004709B00000F48D0048A7
2158:1086D00009B00000F48D004909B00000F48D004A93
2159:1086E00009B00000F48D004B09B00000F48D004C7F
2160:1086F00009B00000F48D004D09B000000400002016
2161:1087000085B000000400002085B00000DC8E00422F
2162:1087100009B000000400002085B00000DC8E004499
2163:1087200009B000000400002085B000000400002013
2164:1087300085B000000400002085B000000400002087
2165:1087400085B000000400002085B000000400002077
2166:1087500085B00000DC8E004B09B000000400002052
2167:1087600085B000000400002085B000000400002057
2168:1087700085B000000400002085B000000400002047
2169:1087800085B00000F48E004509B000000400002010
2170:1087900085B000000400002085B000000400002027
2171:1087A00085B000000400002085B000000B8F00475A
2172:1087B00009B000000400002085B00000E88E0045EC
2173:1087C00009B000000400002085B000000400002073
2174:1087D00085B000005491004609B00000040000205C
2175:1087E00085B000000400002085B0000004000020D7
2176:1087F00085B000000400002085B0000004000020C7
2177:1088000085B00000218E004609B00000FF8D0046B3
2178:1088100009B000001A8E004709B000001A8E004807
2179:1088200009B000000400002085B000000400002012
2180:1088300085B000000400002085B000001C8E004AB6
2181:1088400009B000000400002085B0000004000020F2
2182:1088500085B000000400002085B000000400002066
2183:1088600085B000000400002085B000000400002056
2184:1088700085B000007D8E004509B00000248E0043C5
2185:1088800009B000001A8E004709B000001A8E004897
2186:1088900009B000000400002085B0000004000020A2
2187:1088A00085B000000400002085B000007C8E004CE4
2188:1088B00009B000000400002085B000000400002082
2189:1088C00085B000000400002085B0000004000020F6
2190:1088D00085B000000400002085B0000004000020E6
2191:1088E00085B00000118F004409B00000118F0042D4
2192:1088F00009B00000D58A004709B00000D58A0048B9
2193:1089000009B000000400002085B000000400002031
2194:1089100085B000000400002085B00000118F004BDE
2195:1089200009B000000400002085B000000400002011
2196:1089300085B00000F48D004109B00000348F00477D
2197:1089400009B000000400002085B000001C8F004723
2198:1089500009B000000400002085B0000004000020E1
2199:1089600085B000000400002085B000000400002055
2200:1089700085B000000400002085B000000400002045
2201:1089800085B000001C8F004709B0000004000020E3
2202:1089900085B000000400002085B000000400002025
2203:1089A00085B000000400002085B000000400002015
2204:1089B00085B000000400002085B000000400002005
2205:1089C00085B000001C8F004709B00000348F0047BD
2206:1089D00009B000001A8E004709B000001A8E004846
2207:1089E00009B000000400002085B000000400002051
2208:1089F00085B000000400002085B000001C8F0047F7
2209:108A000009B000000400002085B000000400002030
2210:108A100085B000000400002085B0000004000020A4
2211:108A200085B000000400002085B000000400002094
2212:108A300085B000000400002085B000000400002084
2213:108A400085B00000438F004709B00000438F004805
2214:108A500009B000000400002085B0000004000020E0
2215:108A600085B000000400002085B000000400002054
2216:108A700085B000000400002085B000000400002044
2217:108A800085B00000A68F004009B00000C48F0047E9
2218:108A900009B00000B88F004809B00000148F0047EB
2219:108AA00009B00000148F004709B00000C48F0047D0
2220:108AB00009B00000CB8F004709B00000CB8F004801
2221:108AC00009B000000400002085B00000B88F004805
2222:108AD00009B00000148F004709B00000148F004750
2223:108AE00009B00000B88F004809B000000400002061
2224:108AF00085B000000400002085B0000004000020C4
2225:108B000085B00000DC8E004309B0000004000020A6
2226:108B100085B00000DC8E004509B00000DC8E004608
2227:108B200009B000001A8E004709B000001A8E0048F4
2228:108B300009B000000400002085B00000DC8E004A6F
2229:108B400009B000000400002085B00000DC8E004C5D
2230:108B500009B000000400002085B0000004000020DF
2231:108B600085B000000400002085B00000338F00476E
2232:108B700009B00000278F004809B000001B8F004794
2233:108B800009B000001B8F004709B00000338F004779
2234:108B900009B00000D58A004709B00000D58A004816
2235:108BA00009B000000400002085B00000278F0048B5
2236:108BB00009B000001B8F004709B000001B8F004761
2237:108BC00009B00000278F004809B000000400002011
2238:108BD00085B000000400002085B00000CD8F004269
2239:108BE00009B000000400002085B00000CD8F0044D3
2240:108BF00009B000000400002085B00000040000203F
2241:108C000085B000000400002085B0000004000020B2
2242:108C100085B000000400002085B0000004000020A2
2243:108C200085B00000CD8F004B09B00000040000208B
2244:108C300085B000000400002085B000000400002082
2245:108C400085B000000400002085B000000400002072
2246:108C500085B00000CD8F004309B000000400002063
2247:108C600085B00000CD8F004509B00000CD8F0046D3
2248:108C700009B00000CD8F004709B00000CD8F00483B
2249:108C800009B000000400002085B00000CD8F004A2C
2250:108C900009B000000400002085B00000CD8F004C1A
2251:108CA00009B00000CD8F004C09B000000400002086
2252:108CB00085B000000400002085B000000400002002
2253:108CC00085B00000E88F004609B0000004000020D5
2254:108CD00085B000000400002085B0000004000020E2
2255:108CE00085B000000400002085B000000B8F004715
2256:108CF00009B000000400002085B00000E88F0046A5
2257:108D000009B000000400002085B00000040000202D
2258:108D100085B000000400002085B0000004000020A1
2259:108D200085B000000400002085B000000400002091
2260:108D300085B00000E990004609B000000400002062
2261:108D400085B000000400002085B000000400002071
2262:108D500085B000000400002085B000000B8F0047A4
2263:108D600009B000000400002085B00000E990004632
2264:108D700009B000000400002085B0000004000020BD
2265:108D800085B00000E990004609B000000400002012
2266:108D900085B000000400002085B000000400002021
2267:108DA00085B000000400002085B000000E91004254
2268:108DB00009B000000400002085B00000040000207D
2269:108DC00085B000000400002085B0000004000020F1
2270:108DD00085B000000400002085B0000004000020E1
2271:108DE00085B000000D91004A09B000000400002089
2272:108DF00085B000000400002085B0000004000020C1
2273:108E000085B000000400002085B0000004000020B0
2274:108E100085B000000400002085B0000004000020A0
2275:108E200085B000000E91004609B00000040000204B
2276:108E300085B000001A8E004709B000001A8E004865
2277:108E400009B000000400002085B0000004000020EC
2278:108E500085B000000400002085B000000D91004A9C
2279:108E600009B000000400002085B0000004000020CC
2280:108E700085B000000400002085B000000400002040
2281:108E800085B000000400002085B000000400002030
2282:108E900085B000000400002085B000000400002020
2283:108EA00085B000000400002085B000000400002010
2284:108EB00085B00000D88F004109B0000004000020F8
2285:108EC00085B000000400002085B0000004000020F0
2286:108ED00085B000000400002085B0000004000020E0
2287:108EE00085B000000400002085B00000E58F00423E
2288:108EF00009B000000400002085B00000E58F0044A8
2289:108F000009B000000400002085B00000040000202B
2290:108F100085B000000400002085B00000040000209F
2291:108F200085B000000400002085B00000040000208F
2292:108F300085B00000E58F004B09B000000400002060
2293:108F400085B000000400002085B00000040000206F
2294:108F500085B000000400002085B00000040000205F
2295:108F600085B00000E58F004309B000000400002038
2296:108F700085B00000E58F004509B00000E58F004690
2297:108F800009B00000E58F004709B00000E58F0048F8
2298:108F900009B000000400002085B00000040000209B
2299:108FA00085B000000400002085B00000E58F004C73
2300:108FB00009B000000400002085B00000040000207B
2301:108FC00085B000000400002085B0000004000020EF
2302:108FD00085B00000F48E004C09B0000004000020B1
2303:108FE00085B000000400002085B0000004000020CF
2304:108FF00085B000000400002085B000000B8F004702
2305:1090000009B000000400002085B00000E88E004C8C
2306:1090100009B000000400002085B00000040000201A
2307:1090200085B00000A591004609B0000004000020B2
2308:1090300085B000000400002085B000004991004286
2309:1090400009B000000400002085B0000049910044F0
2310:1090500009B000000400002085B0000004000020DA
2311:1090600085B000000400002085B00000040000204E
2312:1090700085B000000400002085B00000040000203E
2313:1090800085B000004991004B09B0000004000020A9
2314:1090900085B000000400002085B00000040000201E
2315:1090A00085B000000400002085B00000040000200E
2316:1090B00085B000000400002085B0000004000020FE
2317:1090C00085B000004991004509B000004991004673
2318:1090D00009B000001A8E004709B000001A8E00483F
2319:1090E00009B000000400002085B00000040000204A
2320:1090F00085B000000400002085B000004991004CBC
2321:1091000009B000000400002085B000000400002029
2322:1091100085B000000400002085B00000E88E004209
2323:1091200009B000005491004609B00000040000207E
2324:1091300085B000000400002085B00000E88E0046E5
2325:1091400009B000000400002085B000000B8F00472C
2326:1091500009B000000400002085B0000054910046D2
2327:1091600009B000000400002085B0000004000020C9
2328:1091700085B000005491004609B0000004000020B2
2329:1091800085B000000400002085B00000040000202D
2330:1091900085B000005891004309B000000400002091
2331:1091A00085B000000400002085B00000040000200D
2332:1091B00085B000000400002085B000000B8F004740
2333:1091C00009B000000400002085B000005891004361
2334:1091D00009B000000400002085B000000400002059
2335:1091E00085B000005891004D09B000000400002037
2336:1091F00085B000000400002085B0000004000020BD
2337:1092000085B000000400002085B000006A91004392
2338:1092100009B000000400002085B000000400002018
2339:1092200085B000000400002085B00000040000208C
2340:1092300085B000000400002085B00000040000207C
2341:1092400085B000004791004A09B0000004000020EA
2342:1092500085B000000400002085B00000040000205C
2343:1092600085B000000400002085B00000040000204C
2344:1092700085B000000400002085B00000040000203C
2345:1092800085B000006A91004309B00000040000208E
2346:1092900085B000001A8E004709B000001A8E004801
2347:1092A00009B000000400002085B000000400002088
2348:1092B00085B000000400002085B000004791004AFE
2349:1092C00009B000000400002085B000000400002068
2350:1092D00085B000000400002085B0000004000020DC
2351:1092E00085B000007C91004309B00000040000201C
2352:1092F00085B000000400002085B0000004000020BC
2353:1093000085B000000400002085B000000B8F0047EE
2354:1093100009B000000400002085B000007C910043EB
2355:1093200009B000000400002085B000000400002007
2356:1093300085B000007C91004D09B0000004000020C1
2357:1093400085B000000400002085B00000FF8D0042C1
2358:1093500009B000000400002085B00000218E00420A
2359:1093600009B000000400002085B0000004000020C7
2360:1093700085B000000400002085B00000040000203B
2361:1093800085B000000400002085B00000040000202B
2362:1093900085B000009B91004209B00000040000204D
2363:1093A00085B000000400002085B00000040000200B
2364:1093B00085B000000400002085B0000004000020FB
2365:1093C00085B000000400002085B0000004000020EB
2366:1093D00085B00000218E004609B00000FF8D0046D8
2367:1093E00009B000001A8E004709B000001A8E00482C
2368:1093F00009B000000400002085B000000400002037
2369:1094000085B000000400002085B000009B9100465C
2370:1094100009B000000400002085B000000400002016
2371:1094200085B000000400002085B00000040000208A
2372:1094300085B000009D91004A09B0000004000020A2
2373:1094400085B000000400002085B00000040000206A
2374:1094500085B000000400002085B000000B8F00479D
2375:1094600009B000000400002085B000009D91004A72
2376:1094700009B000000400002085B0000004000020B6
2377:1094800085B000005591004609B00000040000209E
2378:1094900085B000000400002085B00000040000201A
2379:1094A00085B000005591004609B00000040000207E
2380:1094B00085B000000400002085B0000004000020FA
2381:1094C00085B000000400002085B000000B8F00472D
2382:1094D00009B000000400002085B00000559100464E
2383:1094E00009B000000400002085B000000400002046
2384:1094F00085B000005591004609B00000040000202E
2385:1095000085B000000400002085B0000004000020A9
2386:1095100085B000000400002085B00000A391004247
2387:1095200009B000000400002085B000000400002005
2388:1095300085B000000400002085B000000400002079
2389:1095400085B000000400002085B000000400002069
2390:1095500085B000004791004A09B0000004000020D7
2391:1095600085B000000400002085B000000400002049
2392:1095700085B000000400002085B000000400002039
2393:1095800085B000000400002085B000000400002029
2394:1095900085B00000A391004609B00000040000203F
2395:1095A00085B000001A8E004709B000001A8E0048EE
2396:1095B00009B000000400002085B000000400002075
2397:1095C00085B000000400002085B000004791004AEB
2398:1095D00009B000000400002085B000000400002055
2399:1095E00085B000000400002085B00000248E004DEE
2400:1095F00009B000000400002085B000000400002035
2401:1096000085B000000400002085B0000004000020A8
2402:1096100085B000000400002085B000000400002098
2403:1096200085B000000400002085B000000400002088
2404:1096300085B000000400002085B000000400002078
2405:1096400085B000000400002085B000000400002068
2406:1096500085B000000400002085B000000400002058
2407:1096600085B000000400002085B000000400002048
2408:1096700085B000000400002085B00000248E004D5D
2409:1096800009B000001A8E004709B000001A8E004889
2410:1096900009B000000400002085B000000400002094
2411:1096A00085B000000400002085B000000400002008
2412:1096B00085B000000400002085B0000007002E4B9C
2413:1096C0001990010025870004E6B10000D58A2242E6
2414:1096D000197C00009A94003A81300100D58A00403C
2415:1096E00081B20000D58A2242197C0000FF1F000FC2
2416:1096F0001E8C01000594004081320100E58A9C0F18
2417:10970000803200000000005C1F800100008000101B
2418:1097100042C90100E58A2240E36D000000000045D7
2419:1097200061B101004000001062DD0100E28AA84042
2420:1097300081320000AF8200881CB00000A9842202A0
2421:1097400080320000E68A424081320000000000447E
2422:109750009393010000001A0268970100A984004059
2423:1097600005B0000005002E4B19900100258700046C
2424:10977000E6B100000000004087B00100000000409A
2425:109780008DB001000080000342C90100400000A12B
2426:1097900044C90100000000F0E0B10100DF950006BF
2427:1097A000074001000000000607D00100D4002E5C35
2428:1097B0001F90010000000007F0B101000C800003C1
2429:1097C00042C90100000000F0F0B1010000000040BB
2430:1097D00081B20100000000FE96B00100000000FE12
2431:1097E00096C00100000000F0F0B101000000004050
2432:1097F00081B20100000000FE96C00100000000FEE2
2433:1098000096C00100000000F0F0B10100000000402F
2434:1098100081B20100000000FA96C00100000000FEC5
2435:1098200096C001000030004B948801000000004603
2436:1098300095F001000000004A96C001005E012E3440
2437:10984000978401000200004BE4E501006401204020
2438:10985000E1B101000900000786E4010000002EA725
2439:1098600087C001001000001048C90100100000402E
2440:10987000F199010058010043F0C9010058010005A9
2441:10988000E0C901000000004461B10100A00000A493
2442:1098900062DD01000F8BA84081320000000000054E
2443:1098A00048B101001A0000409798010008002E40BE
2444:1098B00095B00100178B204B946C00000000004015
2445:1098C000F1B10100148B004195C000001080001020
2446:1098D00042C901001E8B2240E36D000000000044DD
2447:1098E00061B101004000001062DD01001A8BA84048
2448:1098F00081320000AF8200881CB00000000000052B
2449:1099000048B101009A94004081300100EA8A004089
2450:1099100081B200000C80000342C90100000000F881
2451:1099200086B00100000000F888B00100238B44409D
2452:1099300081320000268BA24CFD7F0000278B004C5B
2453:10994000FD930000288B20F0566F0000000000F00F
2454:1099500056B3010000001C4081B2010000800010DD
2455:1099600044C9010064000040F19901007000000545
2456:10997000F0C9010000000043F0B101000000004701
2457:1099800061B101002000001062DD01002E8BA844AF
2458:10999000E0310000100000108CC80100008000467B
2459:1099A00044C9010040000040F19901006801000530
2460:1099B000F0C9010064000043F0C901000000004745
2461:1099C00061B101000000004662B10100368BA8447D
2462:1099D000E0310000AF8200881CB0000009000007E1
2463:1099E00086E4010038002EA787C001008B002D05FA
2464:1099F00048B101003E8B2243E77D00000000004497
2465:109A000045C10100418B2244E77D00000000004C6D
2466:109A100045C101000000004A19900100680120A220
2467:109A2000E4B101008800004043990100458B230BFD
2468:109A3000E56D000000000041199001000080001059
2469:109A400044C9010050000040F19901005801004351
2470:109A5000F0C9010058010005E0C901000000004400
2471:109A600061B101000000001062B101004A8BA84002
2472:109A700081320000AF8200881CB000005C002E051F
2473:109A800048B101000080000342C90100000060F0FD
2474:109A900096B001009A94004181300100EA8A0040AA
2475:109AA00081B20000558BA249197C0000860000405D
2476:109AB00047990100598B0040E5B1000086002F490D
2477:109AC00019800100598BA2F2803200008B00004007
2478:109AD0004799010000000042E79101005C8BA2461B
2479:109AE000197C0000A000004047990100608B0040F5
2480:109AF000E5B10000A0002F4619800100608BA2F2A2
2481:109B0000803200008B0000404799010000000041B6
2482:109B1000E7910100A80000404399010034002DF0B6
2483:109B200024B00100000000FB0CB00100000000FBAD
2484:109B300010B00100000000FB12B001000F0000F3A4
2485:109B400016880100040000F314F401008B8B2640FA
2486:109B500081320000738B220A166C000058003D43CE
2487:109B600013E00100000000F882B00100040022F0C0
2488:109B7000843000008795004081320100AF82008868
2489:109B80001CB000000000000548B1010000000041C9
2490:109B900013C00100728BA043136C00000000004052
2491:109BA00013B00100688B004115D000008B8B220A96
2492:109BB0008032000058003D4313E00100000000F82F
2493:109BC00082B00100040022F084300000879500403C
2494:109BD0008132010040002040E1B10100AF820088E5
2495:109BE0001CB000000000000548B101008B8B224131
2496:109BF000155000000000004111C001007F8BA04300
2497:109C0000116C00000000004011B0010058003D43FD
2498:109C100011E00100000000F836B00100040022F05D
2499:109C2000003000000000005083B00100D9940047CC
2500:109C300061310100AF8200881CB000004292000533
2501:109C4000483101000000004561B1010040000010F2
2502:109C500062DD0100878BA84081320000AF8200885E
2503:109C60001CB000007B8B000548B10000370020408D
2504:109C7000E7B101000B95005181300100EA8A0040F4
2505:109C800081B2000034002E41F5B101000011004006
2506:109C9000E5990100938B00481990000034002E4193
2507:109CA000F5B1010000110040E599010000800003BA
2508:109CB00042C90100000000F894B00100988B2245D1
2509:109CC000237C0000B0002FF08CB00100000060F099
2510:109CD0008CC00100900000404399010035002DF038
2511:109CE0008CB0010058003E43E7E101009D8B224803
2512:109CF000197C0000000000418DC001000000680ACE
2513:109D00008CC0010038002A4AE0B1010028000000A0
2514:109D1000E0C901003C00201BE0B1010010800003FD
2515:109D200042C90100000000F838B00100000000F84E
2516:109D300026B00100040022F802300000AB8B2301A2
2517:109D4000146C0000000000F880B00100000000F872
2518:109D500082B001004C0020F0E4B10100440020403A
2519:109D6000E0B1010048002041E0B10100A8002D1041
2520:109D700032B00100C39500F024300100B48BA2443E
2521:109D8000816C0000B28B2241197C00006E93004070
2522:109D90003B300100D88BA2083C300000B48B00405F
2523:109DA00081B20000AB92004081320100D88BA20842
2524:109DB0003C3000005000201CE0B101005400201392
2525:109DC000E0B101004E002001E4B101004000200A92
2526:109DD000E0B101000B95005F81300100EA8A00408C
2527:109DE00081B2000037000040479901004D9300F315
2528:109DF00094300100938B224A80320000C08B0040D7
2529:109E000081B2000037000040479901004D9300F3F4
2530:109E10009430010058003E4397E001000000001B11
2531:109E2000F0B101001F006000008C0100EA8A85117A
2532:109E3000803200000480000342C90100B0002FF00E
2533:109E40008CB00100000060F08CC001000B95005F39
2534:109E500081300100EA8A004081B20000CA8B0049CB
2535:109E600019800000CF8B2241197C00006E930040C6
2536:109E70003B300100D38BA2083C3000000B95005F03
2537:109E800081300100EA8A004081B20000AB920040BC
2538:109E900081320100D38BA2083C3000000B95005F9B
2539:109EA00081300100EA8A004081B2000050002D108C
2540:109EB00032B0010054002DF038B001004E002DF0FA
2541:109EC00026B0010040002DF202B00100000000F0B9
2542:109ED00014B00100300000108CC801000080004662
2543:109EE00044C9010068012D4461B10100100068F20D
2544:109EF00080C8010000000008F0B101005801000511
2545:109F0000E0C901000000000B37B001000000004074
2546:109F100036D001005C012E4010C001000000000698
2547:109F200080C001000000005281D00100A0940040D8
2548:109F3000E43101002000004662DD0100E48BA8400E
2549:109F400023300000E592004081320100ED92004094
2550:109F500081320100F28B82412340000020800010FA
2551:109F600042C90100EF8B2240E36D00000000004673
2552:109F700061B101004000001062DD0100EC8BA840DF
2553:109F800081320000AF8200881CB000000000000594
2554:109F900048B101000000001032B001000000004193
2555:109FA00023B001000080001944C90100FA8B22414E
2556:109FB000197C0000F68BA3010C6C0000F78B0006E7
2557:109FC00004B000000000000104B00100F98B200281
2558:109FD000366C00000000001B04B00100FD8B000285
2559:109FE000E0B10000FC8BA3010C6C0000FD8B0006AF
2560:109FF00004B000000000000104B00100000068028D
2561:10A0000016940100FFFF000B16D80100000068083D
2562:10A010003E9601000000001CF0B101000000004667
2563:10A0200061B101002000001962DD0100028CA8135B
2564:10A03000E0310000398C22021450000044002D024F
2565:10A040000CD00100298CA20202500000108C225C6E
2566:10A050001F7C00002080000342C901000F8C2240B9
2567:10A06000E36D00000000004761B1010040000010F6
2568:10A0700062DD01000B8CA84081320000AF820088B5
2569:10A080001CB000000000000548B1010044002D5C38
2570:10A090001F80010048002DF038B001004C002DF069
2571:10A0A00026B0010038002FF202B001002A8C2201F4
2572:10A0B000146C00001D8C22461F7C0000000000462E
2573:10A0C0001F80010020002D0348B101001C8C22409C
2574:10A0D000E36D00000000004461B101004000001089
2575:10A0E00062DD0100198CA84081320000AF82008837
2576:10A0F0001CB0000038002F0548B10100000000F836
2577:10A1000094B0010038002DF096B001000000004C22
2578:10A11000E1C101002000000348C901000000224AFB
2579:10A12000F1B1010044000005F0C901000000004A3F
2580:10A13000F0B101000000004BE0B101000000004759
2581:10A1400061B10100A00000A462DD0100268CA85CC2
2582:10A150001F1000002A8C000548B10000000000021A
2583:10A1600038C00100348C220680320000000000500C
2584:10A1700033C00100328CA202366C000004008F0D47
2585:10A1800042310000100000F810C801000000005C1F
2586:10A1900011800100F007004037980100E88B00A112
2587:10A1A0001AB000000000000210C00100E88B00029D
2588:10A1B00036D000005000201CE0B1010054002013F4
2589:10A1C000E0B101004E002001E4B101004000200A8E
2590:10A1D000E0B101003E8C005F01B0000037002D4669
2591:10A1E00001B00100040000F380F401003D8CA043A5
2592:10A1F000816C00000000005501B0010040002040CB
2593:10A20000E1B101000080001942C90100448C2240E4
2594:10A21000E36D00000000004661B10100400000193C
2595:10A2200062DD0100418CA84081320000AF820088CD
2596:10A230001CB00000EA920040813201003080001022
2597:10A2400042C901004B8C2240E36D00000000004435
2598:10A2500061B101004000001062DD0100488CA8409F
2599:10A2600081320000AF8200881CB0000060012F0521
2600:10A2700048B101000000000BE4B1010000000050F3
2601:10A2800017F00100508C90F21640000000000041D1
2602:10A2900017C001000000662017A40100320000A6CC
2603:10A2A0002AC00100000000F22A940100538C4548A6
2604:10A2B0006131000000D0001E62DD0100588C284092
2605:10A2C00005300000548C2248777D00005B8C0040F4
2606:10A2D00081B200000000001562B10100648C2840CA
2607:10A2E00081320000588C004081B2000000001D0047
2608:10A2F00092B00100618C2241197C000000800003B3
2609:10A3000042C90100B09200F8003001005E8CA24109
2610:10A310003B500000658C004900B00000FF07001EA4
2611:10A32000008C0100B092004081320100658C004930
2612:10A3300000B0000000001D4719800100688C225FFA
2613:10A34000016C0000ED95004081320100C5870000DE
2614:10A3500080B000006F8C225C1F7C00002080000316
2615:10A3600042C901006F8C2240E36D000000000047ED
2616:10A3700061B101004000001062DD01006C8CA8405A
2617:10A3800081320000AF8200881CB000006F8C400555
2618:10A3900048310000FFFF000794890100758C85CAD1
2619:10A3A00094300000ED95185C1F0001000E00000FB6
2620:10A3B0001E8C0100E686004081B200000B9518005B
2621:10A3C00080300100EA8A0047198000000000004048
2622:10A3D00019800100EA8A2247197C0000AB920040F4
2623:10A3E000813201007C8CA20880320000EA8A0040A1
2624:10A3F00081B20000A09400400D3001009C0100409B
2625:10A4000045990100FFFF000B988801008B002D503B
2626:10A4100017F00100828C904C1640000000000041B3
2627:10A4200017C00100848C2243E77D00000000004437
2628:10A4300045C101000000662017A40100680100402A
2629:10A44000439901005C012EF280B0010002006240DD
2630:10A450007ECD01000000005781C0010000002E10D9
2631:10A4600048B1010003000040F08D01000000000829
2632:10A47000F0B1010058010005E0C9010000000044EE
2633:10A4800061B101000000001062B101008E8CA84093
2634:10A4900081320000AF8200881CB00000000000057F
2635:10A4A00048B10100928C454861310000005000081D
2636:10A4B00062DD0100988C284005300000938C224812
2637:10A4C000777D0000B0921D0800300100EA8A00404C
2638:10A4D00081B20000EA8A1D47198000003500004063
2639:10A4E00047990100010063F384C801009D8CA043DB
2640:10A4F000856C00000000634085B00100A8000040AA
2641:10A500004399010037002FF024B00100010063F3EC
2642:10A5100082CC0100A88CA2419E060000EA8A224457
2643:10A5200083700000360000404399010058003D430D
2644:10A53000E7E10100EA8A1FF0246C0000ED95004875
2645:10A5400081300100C5872341836C0000C587004727
2646:10A5500081B0000058003D4385E00100000000F894
2647:10A5600036B00100000000F000B0010028000040FB
2648:10A5700083980100D994004761310100AF820088BF
2649:10A580001CB0000000002D0348B1010008002DF0B0
2650:10A5900094B00100000000F88EB0010090002DF092
2651:10A5A00014B001000000000548B10100998BA240E1
2652:10A5B0008F7C0000B68C22478F7C0000998B00486E
2653:10A5C00019900000258D004081B2000036002D5DFD
2654:10A5D00005B4010037002DF380B00100000000F346
2655:10A5E0008EB001005C003D4381E00100A8002DF029
2656:10A5F00094B00100000000F024B001002000001021
2657:10A6000086DC01004080000344C90100B191004A8A
2658:10A61000F031010036002F5C1F900100C48CA25065
2659:10A620008F50000034002040E1B10100EA8A004070
2660:10A6300081B200000000634181C00100C78CA043CB
2661:10A64000816C00000000634081B0010037002047AA
2662:10A65000E6B10100EA8A2247803200000400004788
2663:10A660000CF401000000004F8F840100DC8C2247B5
2664:10A670000C6C000058003D4381E00100DC8C1FF0B1
2665:10A68000246C00000000005C1F80010000800010AE
2666:10A6900042C90100D58C2240E36D00000000004556
2667:10A6A00061B101004000001062DD0100D28CA840C1
2668:10A6B00081320000AF8200881CB00000D58C42407F
2669:10A6C00005300000000000449393010000001A5D73
2670:10A6D00069930100DA8C23410D6C0000B78C0005F2
2671:10A6E00048B10000ED95000548310100C5870048DC
2672:10A6F00081B00000EA8A22408F6C00000B95005F59
2673:10A7000081300100EA8A004081B20000A2000040CE
2674:10A7100043990100000000F384B00100A6002D4918
2675:10A7200019900100020000F280F40100B8002D40F1
2676:10A7300081B20100000000F280C001000000004072
2677:10A7400082F801001900004081980100EB8CA040C4
2678:10A75000826C00002C01004081980100EB8CA3402A
2679:10A76000826C00000000004180B00100ED8C204CA4
2680:10A77000856C00000000004185C00100860020407B
2681:10A78000E4B10100A2002042E6B10100EA8A0040E3
2682:10A7900081B200009A94005081300100EA8A0040A2
2683:10A7A00081B200000480000342C90100040022F0CD
2684:10A7B00080300000000000408DB00100DF950040B7
2685:10A7C00087300100B0002F5C1F900100000060F096
2686:10A7D00080C001000B95005F81300100EA8A0040D3
2687:10A7E00081B200000400004081B20000EA8A2246E3
2688:10A7F000197C0000A000004047990100010062F2AE
2689:10A8000096CC0100EA8AA640813200000B95004AEE
2690:10A8100081300100E094004695300100EA8A004052
2691:10A8200081B20000EA8A2249197C000086000040BB
2692:10A8300047990100010062F280CC0100EA8AA6403B
2693:10A84000813200000B95004A81300100E0940047FE
2694:10A8500095300100EA8A004081B200004292004037
2695:10A8600081320100EA8A005C1F900000EA8A004001
2696:10A8700081B20000EA8A004081B20000BA000040C4
2697:10A8800047990100010062F280C80100118D9040DB
2698:10A8900080320000FFFF624081980100A400004068
2699:10A8A00047990100EA8A2240E56D0000EA8A0041EA
2700:10A8B000E5C100009A94004D81300100EA8A004011
2701:10A8C00081B200005C00004047990100040022F0C2
2702:10A8D0009630000000000040E1B10100008000035C
2703:10A8E00044C901000000004BE0B10100000000403D
2704:10A8F0008DB00100DF950040873001008B000040E3
2705:10A9000047990100218D80F396300000000000403F
2706:10A91000E78101000000004719900100EA8A005C0D
2707:10A920001F900000340000404599010001000040E4
2708:10A93000F599010000110040E5990100AB9200403B
2709:10A9400081320100368DA2088032000037000040BD
2710:10A9500047990100000000F382B00100000063513C
2711:10A9600083D001003400004047990100010063F3E7
2712:10A9700084CC01002E8D9F42803200000000634293
2713:10A9800085B001000000004503F001000000000157
2714:10A9900000C00100308D375C613100000000001BF9
2715:10A9A00062B10100318DA84B1910000000000000B9
2716:10A9B00062B10100338DA840813200001A87174030
2717:10A9C00081B200000080000342C9010090002DF018
2718:10A9D00094B00100AC002DF030B0010035002DF036
2719:10A9E00028B0010058003E43E7E1010001000018D3
2720:10A9F000F0C901000000004AE0B101003800200069
2721:10AA0000E0B101003C00201BE0B10100400020400B
2722:10AA1000E1B10100000000402BB00100EF940040C4
2723:10AA20000D3001000000001816C00100458DA01473
2724:10AA3000164400000000004117C001000E0000A2F3
2725:10AA400044C9010000000018F8B10100B0002D1445
2726:10AA5000F8B1010010500040879801004E8D224A45
2727:10AA6000197C00000030004386C801000030000B54
2728:10AA700016C801004E8DA440813200000000004144
2729:10AA800017C0010001006E43869801002695003032
2730:10AA900081300100528DA0411740000000000041AC
2731:10AAA00017C00100598D224A197C0000080000A23D
2732:10AAB00044C90100CC002DABF9B10100000000AB8E
2733:10AAC00017C00100588DA0F016440000000000419E
2734:10AAD00017C00100000064F082B001009000004047
2735:10AAE000459901000000604131C00100BC000040F8
2736:10AAF000439901005F8D060C80320000A00020F217
2737:10AB0000E4B1010004000946191000009C01004056
2738:10AB100045990100FFFF000B988801008B002D5024
2739:10AB200017F00100648D904C1640000000000041B9
2740:10AB300017C00100668D2243E77D0000000000443D
2741:10AB400045C101000000662017A401006801004013
2742:10AB5000439901005C012EF280B0010002006240C6
2743:10AB60007ECD01000000005781C0010000002E10C2
2744:10AB700048B1010003000040F08D01000000000812
2745:10AB8000F0B1010058010005E0C9010000000044D7
2746:10AB900061B101000000001062B10100708DA84099
2747:10ABA00081320000AF8200881CB000000000000568
2748:10ABB00048B10100748D4548613100000050000823
2749:10ABC00062DD0100758DA8400530000035001D4094
2750:10ABD00047990100010063F384C801007B8DA04305
2751:10ABE000856C00000000634085B001003700004024
2752:10ABF00047990100010063F382CC01008B00004003
2753:10AC00004799010000000045E79101000B95005FA6
2754:10AC100081300100EA8A004081B200003700004024
2755:10AC2000479901004D9300F394300100258D224A8D
2756:10AC300080320000C08B004081B20000370000402D
2757:10AC4000479901004D9300F394300100908B224A04
2758:10AC500080320000C08B004081B20000360000400E
2759:10AC600043990100000000FB12B001000F0000F347
2760:10AC700090880100040000F30CF40100BA8B220656
2761:10AC8000906C00005C003D4313E00100A8002DF033
2762:10AC900094B0010037002FF024B0010036002A5094
2763:10ACA000E7D101000000634113C00100958DA0436E
2764:10ACB000136C000000000040E7B10100AF910010EC
2765:10ACC00086300100AF8200881CB00000978D4205DD
2766:10ACD000483100000000004493930100BA8B1A5DD4
2767:10ACE0006993000036002D1086B001005C003D43E2
2768:10ACF000E7E10100A8002DF094B0010035002FF02D
2769:10AD000024B0010001006BFB84C80100A28DA043A8
2770:10AD1000856C000035002040E7B1010000000040D4
2771:10AD200081B20100010063F312C80100A58DA043A8
2772:10AD3000136C000000000040E7B1010040800003F8
2773:10AD400044C90100B191004AF0310100AF8200888E
2774:10AD50001CB00000A88D42054831000000000044EE
2775:10AD60009393010000001A5D6993010037000040D1
2776:10AD700047990100110063F382CC0100A18C2241AC
2777:10AD80009E060000350000404399010058003D43F5
2778:10AD9000E7E10100000000F836B00100AB8C00F0E4
2779:10ADA00000B000005E012D0548B10100B38D65F2D1
2780:10ADB0001230000000993F4213F00100B88D224785
2781:10ADC000E77D0000F58275881CB00000B28D004060
2782:10ADD00081B2000000000047E791010000007542C9
2783:10ADE000199001007500004061990100BA8DA8B169
2784:10ADF0000C3000003694001094300100AF820088BF
2785:10AE00001CB000005E012E0548B10100C0A83D46FF
2786:10AE10000DE001000000004097B00100C48D224009
2787:10AE2000E16D00000400024197400000C18D005018
2788:10AE300043C10000D08D224B803200000000624BE5
2789:10AE4000129401000900000796E40100000000A729
2790:10AE500097C001003000001094C801000080004A33
2791:10AE60004499010000000042F1B101005E01004B75
2792:10AE7000F0C901005E010005E0C9010000000044C6
2793:10AE800061B101002000004A62DD0100CE8DA840C2
2794:10AE9000813200000080001044C901000000005011
2795:10AEA000F1B101000400000996E40100000068A867
2796:10AEB00097C00100D4000005E0C901000000004473
2797:10AEC00061B101000000001062B10100D68DA84000
2798:10AED00081320000AF8200881CB0000000993F4220
2799:10AEE00013F00100DA8D6540813200003F0000F36D
2800:10AEF0009688010000000040E7B101000000755590
2801:10AF000061B101000000000662B10100DE8DA840C1
2802:10AF100081320000E38D224B803200000000004BA4
2803:10AF200062B10100E18DA84081320000000000976D
2804:10AF300013B001000000009697B00100E98D2009D0
2805:10AF4000966C0000E98D1F0996240000F5820088A8
2806:10AF50001CB00000E48D004081B200009A940057BC
2807:10AF600081300100D58A000548B100002E00004064
2808:10AF700043990100EF8D22F3803200009A94004241
2809:10AF8000813001001A87004081B200000B95005209
2810:10AF900081300100D58A0042198000009A94003A5D
2811:10AFA000813001000B95005281300100D58A0040AC
2812:10AFB00081B200000000004005B00100AD930040E8
2813:10AFC00095300100D58A2240956C0000FA8DA24090
2814:10AFD0001F7C0000B0920040813201001A870040BF
2815:10AFE00081B200000480000342C90100000000F2A9
2816:10AFF00002B0010058930052953001005F93004B5E
2817:10B0000002B000001A87004081B200009495004011
2818:10B0100095300100068EA20880320000068EA2162E
2819:10B02000803200001A872242197C00000000004B89
2820:10B03000199001009A94003A813001001A8700406B
2821:10B0400081B20000002300A616B00100098E831E05
2822:10B05000803200000008000B16DC01000000000038
2823:10B060002AC00100E3940008803001000D8E005ECC
2824:10B07000179000000495004361310100BD9100402C
2825:10B080008D300100EB9400071614010000800010C1
2826:10B0900042C90100158E2240E36D0000000000430C
2827:10B0A00061B101004000001062DD0100128EA84075
2828:10B0B00081320000AF8200881CB000008C94005EDA
2829:10B0C00005100100B092004081320100198E220962
2830:10B0D000803000000B95004013300100DA8A000533
2831:10B0E00048B10000DD93004081320100D58A004064
2832:10B0F00081B200000000004A1F900100208E224310
2833:10B100003D7C000000000044199001000000004355
2834:10B110003D800100218E00421990000014002D4551
2835:10B120001F9001007D8E831E803200007D8E0044C2
2836:10B1300019900000A292004081320100358EA208D1
2837:10B1400080320000358EA21680320000318EA2427D
2838:10B15000197C00000082000204DC0100A09800407D
2839:10B160004799010030050041893001002E8EA2412F
2840:10B17000197C0000B0920040813201001A87004023
2841:10B1800081B2000058930015943001005F93004B8A
2842:10B1900002B000001A87004081B20000DD93004039
2843:10B1A000813201000000004B199001009A94003A8E
2844:10B1B000813001001A87004081B20000388E22429F
2845:10B1C000197C0000DD93004081320100398E00407F
2846:10B1D00081B20000AD93004081320100658E2241B2
2847:10B1E000197C0000C000001598C80100658EA00BF6
2848:10B1F000996C00003000001080C801000080004001
2849:10B200004499010000000050F1B10100000000036A
2850:10B21000F0B101000000004261B1010000000040F7
2851:10B2200062B10100418EA800E0310000AF820088C9
2852:10B230001CB000000000000548B10100C00000156E
2853:10B2400098C8010030002E0B99D0010000006A5010
2854:10B2500099C00100C000620180CC01000C80000395
2855:10B2600042C901002D002DF022B001000000004C69
2856:10B2700080C001000000005C23800100D4003F4139
2857:10B28000E7E101000B000011E4F501002F00204769
2858:10B29000E7B50100528E230B816C00000000004FC7
2859:10B2A000E59101000000000880B001000000000BE3
2860:10B2B00003B001000000001502D00100E39400007B
2861:10B2C0002A4001000000004361B10100400000106D
2862:10B2D00062DD0100578EA84081320000AF820088F5
2863:10B2E0001CB00000B092000548310100C000000110
2864:10B2F00080CE0100638E2611003000001000000097
2865:10B300002AC801000000000880B001000000000110
2866:10B3100080C00100C00000409998010000000001B9
2867:10B3200098D00100E394004C02300100C0000040BE
2868:10B33000039801006A8E004081B2000030002F089F
2869:10B3400080B00100C0000015F4C90100C000000178
2870:10B35000E4CD0100C000004003980100E394000028
2871:10B360002A4001006F8E22441F7C0000AC002F4059
2872:10B3700013B0010000000001E0C10100B000004076
2873:10B3800047990100708E0001E0D10000BD9100409E
2874:10B390008D300100806300A616B00100EB94000719
2875:10B3A000161401000080001042C90100788E22406E
2876:10B3B000E36D00000000004361B101004000001097
2877:10B3C00062DD0100758EA84081320000AF820088E6
2878:10B3D0001CB000008C94005E051001007B8E2209D9
2879:10B3E000803000000B95004081320100D58A0005B5
2880:10B3F00048B100007D8E004A1F9000000000000050
2881:10B4000010B0010024002D1510C0010028002DF0FF
2882:10B4100016B0010022002DF026B0010014002FF21A
2883:10B420000CB0010000000001E0D10100000000109C
2884:10B4300032B001000000000B1BB0010004001F151A
2885:10B440001A5000000000004023B00100000000017D
2886:10B450002AB001004B94004035B000002F0020407E
2887:10B46000E7B10100C18EA2451F7C00002400200B23
2888:10B47000E0B1010028002013E0B101002200200605
2889:10B48000E4B10100978E225C1F7C00000000005C8C
2890:10B490001F8001003080001042C90100978E2240B9
2891:10B4A000E36D00000000004761B1010040000010A2
2892:10B4B00062DD0100938EA84081320000AF820088D7
2893:10B4C0001CB000000000000548B101000080001918
2894:10B4D00042C90100BA8E2240E36D0000A88E2242CC
2895:10B4E000197C000005940040813201005792004011
2896:10B4F00081320100B58E224B8032000000000043F3
2897:10B5000061B101004000001062DD01009E8EA84084
2898:10B5100081320000AF8200881CB00000A48E22415E
2899:10B52000197C0000C692004011300100A58E000574
2900:10B5300048B10000B092004081320100A78E22097C
2901:10B54000803000000B95004081320100F9820040FC
2902:10B5500005B0000005940040813201005392004084
2903:10B56000813201000000004361B101004000001081
2904:10B5700062DD0100AB8EA84081320000AF820088FE
2905:10B580001CB00000B18E2241197C0000C692004020
2906:10B5900011300100B28E000548B10000B0920040A9
2907:10B5A00081320100B48E2209803000000B950040EA
2908:10B5B00081320100F982004005B000000000004324
2909:10B5C00061B101004000001062DD0100B68EA840AC
2910:10B5D00081320000AF8200881CB00000000000052E
2911:10B5E00048B10100BD8E2241197C0000C692004086
2912:10B5F00011300100BE8E000548B10000B09200403D
2913:10B6000081320100C08E2209803000000B9500407D
2914:10B6100013300100DA8A004005B0000000800019F4
2915:10B6200042C90100C88E2240E36D000000000043C3
2916:10B6300061B101004000001062DD0100C48EA8402D
2917:10B6400081320000AF8200881CB0000000000005BD
2918:10B6500048B101000000004005B00100CC8E22413D
2919:10B66000197C0000C692004011300100CD8E00050B
2920:10B6700048B10000B09200408132010008002D0A5C
2921:10B6800084B00100000000F082B0010014002040EE
2922:10B69000E1B10100D28E031E80320000D38E004142
2923:10B6A00087B000002100004087980100CE93004041
2924:10B6B000813201000000005C1F900100D78E22093A
2925:10B6C000803000000B95004013300100DA8E2244D8
2926:10B6D000197C00000B95004F8130010000000044F0
2927:10B6E00019800100D58AA24A1F7C0000DA8A004036
2928:10B6F00081B20000BA002040E5B10100E08E9C1745
2929:10B7000080320000CC000040439901009D9500402C
2930:10B71000813201004495004013300100C000004018
2931:10B7200043990100C4002DF082B00100789500F02B
2932:10B7300084300100B092004081320100DA8A22098F
2933:10B74000803000000B95004013300100DA8A004081
2934:10B7500081B200002E00004043990100EC8E22408F
2935:10B76000E76D00003200004043990100F48EA240D2
2936:10B77000E56D00009A930040813201002400200B07
2937:10B78000E0B1010028002013E0B1010022002006F2
2938:10B79000E4B101001400200AE0B10100DA8A2209B4
2939:10B7A000803000000B95004013300100DA8A004021
2940:10B7B00081B200009A93004081320100539300400F
2941:10B7C00081320100028F2241197C00000000000B31
2942:10B7D00099B0010004001F1598500000028F20014D
2943:10B7E000986C00007000000348C9010000002E465C
2944:10B7F0001F90010000000050F1B1010000000003A3
2945:10B80000F0B101000000004261B10100A00000A4FD
2946:10B8100062DD0100FF8EA800E0310000000000059D
2947:10B8200048B10100AC002F0010B001000000000181
2948:10B83000E0C1010014002F1510C001000000000A33
2949:10B8400080B001000000600180D0010000000047CE
2950:10B8500019900100848E2209803200000B950009A6
2951:10B8600080300100848E004013B00000008000038F
2952:10B8700042C90100000000F082B001001300004046
2953:10B88000879801000000004C43C10100CE9300F0F6
2954:10B8900084300100D58A005C1F9000002C002040FD
2955:10B8A000E7B101002D002040E7B10100D58A004238
2956:10B8B00019800000C093004081320100E0940048EC
2957:10B8C000953001000000004561B10100400000100A
2958:10B8D00062DD0100178FA84013300000AF8200889E
2959:10B8E0001CB000001D8F000548B100001C8F0040F7
2960:10B8F00013B000000000000012B00100080000407A
2961:10B900004399010014002DF082B00100040022F0E0
2962:10B91000843000001300004087980100CE9300405F
2963:10B92000813201000000005C1F900100358F00098A
2964:10B9300000B00000D58A8742191000008B002F4705
2965:10B9400019800100D58A0040E79100002F000040D7
2966:10B9500047990100338F2247E77D00003492004071
2967:10B96000E7310100338F2200803200002E8FA24089
2968:10B970001F7C0000B092004081320100338F0040F4
2969:10B9800081B20000300000404399010032002DF2E6
2970:10B9900094B00100589300F2023001005F93004B15
2971:10B9A00002B000000000000548B10100348F0040E3
2972:10B9B00001B000000000004005B001003A8F2200F5
2973:10B9C00080320000398FA242197C0000AD93004004
2974:10B9D000813201003A8F004081B20000DD930040C7
2975:10B9E00081320100C68F225C1F7C00000000005CD9
2976:10B9F0001F8001000080001042C90100428F2240D8
2977:10BA0000E36D00000000004561B10100400000103E
2978:10BA100062DD01003F8FA84081320000AF820088C4
2979:10BA20001CB00000C68F000548B10000A292004083
2980:10BA300081320100498FA20880320000498FA2168E
2981:10BA4000803200009A94004D813001000082000293
2982:10BA500004DC01001A87004081B20000740000403D
2983:10BA600043990100000000F882B00100000000F0DE
2984:10BA700084B001000000004196B00100578F2242BF
2985:10BA8000961400000080001044C901006400684062
2986:10BA90009798010000000041F0B101000000004251
2987:10BAA000F0B1010070000005E0C901000000004590
2988:10BAB00061B101002000001062DD0100548FA84038
2989:10BAC000813200000000005C1F9001000000004572
2990:10BAD00061B101004000001062DD0100588FA85CD8
2991:10BAE0001F000000AF8200881CB000005E012D0521
2992:10BAF00048B101005C8F65F21230000000993F42AE
2993:10BB000013F00100618F2247E77D0000F582758800
2994:10BB10001CB000005B8F004081B2000000000047B5
2995:10BB2000E79101000400750996E40100008000100F
2996:10BB300044C9010000000044F1B10100000068A800
2997:10BB400097C0010000000003E0B101000080000385
2998:10BB5000449901000000004461B1010000000010A0
2999:10BB600062B10100698FA840E1310000AF82008816
3000:10BB70001CB0000000993F4213F001006D8F650575
3001:10BB8000483100003F0000F39688010000000040AB
3002:10BB9000E7B101000000754081B20100758F224BB2
3003:10BBA000803200000000005561B101000000004B30
3004:10BBB00062B10100738FA8408132000000000007CD
3005:10BBC00016B001000062000B16DC01003492004048
3006:10BBD000813201008D8F220080320000E393005FEC
3007:10BBE00001100100778F2240956C0000008000104A
3008:10BBF00044C9010000000050F1B101000000000341
3009:10BC0000F0B101000000004261B10100000000102D
3010:10BC100062B101007F8FA800E0310000AF82008890
3011:10BC20001CB000000000000548B1010004800003C2
3012:10BC300042C90100000000F202B001005893005216
3013:10BC400095300100B092004081320100778F22418F
3014:10BC5000975000000C80000342C90100000000F072
3015:10BC600000B001000000005C018001005F93004B08
3016:10BC700002B00000778F000548B10000EB9400404F
3017:10BC8000033001001780000344C9010000F0000CDC
3018:10BC9000968801000000634C97F0010010800003BB
3019:10BCA00044C90100000000ABE1B101008C94005ECA
3020:10BCB00005100100030000071AF401000700000747
3021:10BCC0001688010000B5000D46C90100978F30406D
3022:10BCD000813200000000000BE681010000B7000D7A
3023:10BCE00046C901000000000BE68101001000100FA2
3024:10BCF00094F401009304005F95040100399300401F
3025:10BD000081320100A18F2250FD7F00009F8F4640AD
3026:10BD10008132000000001E4131D3010000002E05D9
3027:10BD200048B1010000000040E1B101000000004006
3028:10BD30000FB001009B920041813001001A87004042
3029:10BD400081B20000A292004081320100B38FA208AC
3030:10BD500080320000B38FA216803200000082000201
3031:10BD600004DC01000000004503F0010000000001B8
3032:10BD700000C00100AC8F375C613100000000001B87
3033:10BD800062B10100B08F284081320000AD8F0040C9
3034:10BD900081B200000000000062B10100B08FA84035
3035:10BDA000813200001A87174081B2000074002240DF
3036:10BDB000F1B1010000000040E1B10100E094004A4F
3037:10BDC00095300100C093005C1F100100498F0040B6
3038:10BDD00081B200002F00004047990100C48F224724
3039:10BDE000E77D000034920040E7310100C48F22005B
3040:10BDF00080320000BF8FA2401F7C0000B092004044
3041:10BE000081320100C48F004081B200003000004048
3042:10BE10004399010032002DF294B00100589300F2D2
3043:10BE2000023001005F93004B02B0000000000005EB
3044:10BE300048B10100E094004895300100C093005CD7
3045:10BE40001F100100C98F8742191000008B002F4777
3046:10BE50001980010000000040E79101000B950042AD
3047:10BE600081300100D58A004081B20000C0930040BB
3048:10BE700081320100D58A005C1F900000BA0020408A
3049:10BE8000E5B101004495004081320100C00000404E
3050:10BE900043990100C4002DF082B00100789500F0B4
3051:10BEA00084300100B0920040813201000B950045C2
3052:10BEB00081300100D58A2242197C00009A94003A10
3053:10BEC00081300100D58A004081B2000004000040AA
3054:10BED00081B20000A292004081320100DE8FA208F0
3055:10BEE00080320000DE8FA216803200009A94004754
3056:10BEF000803001000082000204DC01001A8700404B
3057:10BF000081B200001080000344C9010000E100A6D6
3058:10BF100084B0010000000040F1B1010000000040C9
3059:10BF2000F1B1010000006007849401008C94005E70
3060:10BF300005100100D58A004081B200008A0000404F
3061:10BF400047990100B0920041E7410100DA8A0040C0
3062:10BF500081B200009A930040813201005393004067
3063:10BF600081320100000000012CB00100000000152A
3064:10BF700010B001000000000010C0010004001F0A02
3065:10BF80002C5000000000001032B001001E95000689
3066:10BF900004300100F68FA2481F7C0000F48F844813
3067:10BFA0001F100000AC00004047990100F68F000A06
3068:10BFB000E0C100000000000A02B00100BD910001D4
3069:10BFC0008C3001000000004361B10100400000100E
3070:10BFD00062DD0100F78FA84081320000AF82008847
3071:10BFE0001CB000000000000548B101000000000284
3072:10BFF00010C0010004902202145000000894004573
3073:10C000001F000100EE8F225C1F7C00000000004733
3074:10C0100061B101004000001062DD01000090A85CE9
3075:10C020001F000000AF8200881CB00000EE8F0005EA
3076:10C0300048B100000000000B1BB0010008002D40BB
3077:10C0400085B00100000000F082B001000000004057
3078:10C0500005B00100CE93004187300100000000458B
3079:10C0600061B101004000001062DD01000A90A840AB
3080:10C0700081320000AF8200881CB000000000000583
3081:10C0800048B1010010902209803000000B9500405B
3082:10C090001330010014902244197C00000B95004FCE
3083:10C0A000813001001490A2471F7C00000000004472
3084:10C0B00019800100FF070008008C01002290224A2D
3085:10C0C0001F7C00001A90A21602300000B0920040BF
3086:10C0D000813201002F002040E7B10100D58A0040E5
3087:10C0E00081B200002D002D082AB001001E902242CE
3088:10C0F000197C0000DD930040813201001F90004058
3089:10C1000081B20000AD9300408132010030002E006A
3090:10C110002AD0010032002A15E4B10100D58A0016A8
3091:10C12000E4B1000035902216023000000000000843
3092:10C130002AB0010094950040953001002790A2405C
3093:10C14000116C0000369022402D6C0000AC000040C5
3094:10C1500047990100B0002B01E0C10100002B00A6AF
3095:10C1600016B0010000000001E0D10100E3940008D6
3096:10C17000803001002E90005E17900000049500436F
3097:10C18000613101000000004361B101004000001076
3098:10C1900062DD01002F90A84081320000AF8200884C
3099:10C1A0001CB000000000000548B10100EB9400073E
3100:10C1B000161401008C94005E05100100B09200403E
3101:10C1C000813201002F002040E7B10100DA8A0040EF
3102:10C1D00081B200000000000B1BB0010004001F151D
3103:10C1E0001A500000439020161A6C000070000003E3
3104:10C1F00048C9010000002250F1B101000000000315
3105:10C20000F0B1010000000000E0B1010000000042B8
3106:10C2100061B10100A00000A462DD01004090A846C9
3107:10C220001F1000000000000548B1010000000000E0
3108:10C2300010B001000000001510C001000000000A4D
3109:10C240002AB001000000000A2CD00100AC002F40F1
3110:10C2500023B001004A9084451F1000004B90000A53
3111:10C26000E0C100000000000A02B001004B94004051
3112:10C2700035B000000080001942C9010053902240EF
3113:10C28000E36D00000000004361B1010040000010B8
3114:10C2900062DD01004F90A84081320000AF8200882B
3115:10C2A0001CB000000000000548B101006390A2022C
3116:10C2B0001A500000649022402D6C00000080001095
3117:10C2C00044C9010000000050F1B10100000000036A
3118:10C2D000F0B10100FF070008E08D010000000042FE
3119:10C2E00061B101000000001062B101005A90A84045
3120:10C2F00081320000AF8200881CB000000000000501
3121:10C3000048B101002F002047E7B501000C80000371
3122:10C3100042C90100100000F010C80100F007004001
3123:10C320001B9801006490005C118000000000000276
3124:10C3300010C00100C69200401F000100000000056F
3125:10C3400048B101006890230D2C6C000000000040F3
3126:10C350001F900100719022461F7C000000000046E3
3127:10C360001F8001007080000342C9010071902240CB
3128:10C37000E36D00000000004261B1010040000010C8
3129:10C3800062DD01006D90A84081320000AF8200881C
3130:10C390001CB000000000000548B1010008002D405D
3131:10C3A00085B00100000000F082B0010000000040F4
3132:10C3B00005B00100CE930041873001000000004528
3133:10C3C00061B101004000001062DD01007690A840DC
3134:10C3D00081320000AF8200881CB000000000000520
3135:10C3E00048B101007C902209803000000B9500408C
3136:10C3F0001330010080902244197C00000B95004FFF
3137:10C40000813001008090A2471F7C000000000044A2
3138:10C4100019800100FF070008008C01009590224A56
3139:10C420001F7C00008690A21602300000B0920040EF
3140:10C43000813201002F002040E7B10100D58A004081
3141:10C4400081B200002D002D082AB0010091902242F7
3142:10C45000197C00008A90A2F384300000000000A53F
3143:10C4600085B001000000004185D00100D4003E41AC
3144:10C4700085E001008E9022401F7C00000000005AE1
3145:10C48000119001000B000008E4F50100DD9300406D
3146:10C49000813201009290004081B20000AD930040D3
3147:10C4A0008132010030002E002AD0010032002A150E
3148:10C4B000E4B10100D58A0016E4B100009890A216FC
3149:10C4C00002300000B092004081320100E79000404D
3150:10C4D00081B200002D002D082AB00100A69022474D
3151:10C4E0001F7C0000A2902242197C00009D90A2F3C4
3152:10C4F00084300000000000A585B00100000000416C
3153:10C5000085D00100D4003E4185E00100A190224089
3154:10C510001F7C00000000005A119001000B00000871
3155:10C52000E4F5010058012D002AD0010060012DF032
3156:10C5300010B00100000000F02CB00100358E00406A
3157:10C5400081B200009495004195300100AE90A208A0
3158:10C5500080320000AE90A216803200000000004140
3159:10C5600097B00100AC90230D026C00000000004168
3160:10C5700097C001005F93004B02B00000E7900005F8
3161:10C5800048B10000AC002F0114B00100B0002B0135
3162:10C59000E0C10100002B00A616B001000000000160
3163:10C5A000E0D10100BE90230D026C0000008000105D
3164:10C5B00044C9010000000050F1B101000000000377
3165:10C5C000F0B101000000004261B101000000001064
3166:10C5D00062B10100B790A800E0310000AF8200888E
3167:10C5E0001CB000000000000548B101000C800003F1
3168:10C5F00042C90100100000F022C801000000005CE8
3169:10C60000238001000000000184B00100C190230DCF
3170:10C61000026C00000000000D02B0010000000008E4
3171:10C6200080B00100C69022401B6C0000E394000122
3172:10C6300084500100CE902240856C00000000000173
3173:10C6400080C001001080001046C901000000004FAA
3174:10C650004381010000000042F0B1010020000040D1
3175:10C66000F0C9010000000016F0B101000000004315
3176:10C6700061B10100A00000A162DD0100CC90A81111
3177:10C68000E0310000DD90005E17900000D190230D96
3178:10C69000026C00000000000D02B00100000000016B
3179:10C6A00084D00100D69022401B6C0000049500430A
3180:10C6B00061310100DD902240856C00000000000126
3181:10C6C00012C001001080001046C901000000004F98
3182:10C6D0004381010000000042F0B1010000000009A8
3183:10C6E000F0B1010000000018F0B10100A00000A1AD
3184:10C6F00062DD0100DB90A811E03100000000004382
3185:10C7000061B101004000001062DD0100DE90A80A66
3186:10C7100002300000AF8200881CB00000B09200051B
3187:10C7200048310100E590230D026C0000FF07001165
3188:10C73000008C0100B092004081320100EB940007B0
3189:10C74000161401008C94005E051001002F0020409B
3190:10C75000E7B10100DA8A004081B2000000800003E6
3191:10C7600042C90100000000F882B00100000000F89A
3192:10C770008CB00100000000F08EB0010097930040E3
3193:10C78000133001000000004085B00100CE9300414D
3194:10C790008730010053930040813201000080001077
3195:10C7A00042C90100F8902240E36D000000000045FE
3196:10C7B00061B101004000001062DD0100F490A8406A
3197:10C7C00081320000AF8200881CB00000000000052C
3198:10C7D00048B10100FA902209803000000B9500401A
3199:10C7E000133001000000000B1BB001000000001519
3200:10C7F0001AD001000191A241197C000094950040DB
3201:10C80000953001000000001680B201000A9127084F
3202:10C8100080320000279000002AC00000949500415B
3203:10C82000953001000000001680B201000591270834
3204:10C8300080320000AE9000002AC0000000000041DD
3205:10C8400097B001000891230D026C00000000004128
3206:10C8500097C001005F93004B02B00000000000058C
3207:10C8600048B10100D58A2242197C00009A94003A0E
3208:10C8700081300100D58A004081B200000E91004A4B
3209:10C880001F900000D8920000103001000000001539
3210:10C8900010C001000000001032B001001E9500061B
3211:10C8A000043001001791A2441F7C00000000000B1F
3212:10C8B0001BB001000000000A2CD001000000000A9B
3213:10C8C00002B00100BD9100018C3001000080001910
3214:10C8D00042C901001E912240E36D000000000043A8
3215:10C8E00061B101004000001062DD01001A91A84012
3216:10C8F00081320000AF8200881CB0000000000005FB
3217:10C9000048B101000000000210C00100279122027E
3218:10C9100014500000089400451F0001001091225C93
3219:10C920001F7C00000000004761B1010040000010C2
3220:10C9300062DD01002391A85C1F000000AF82008827
3221:10C940001CB000001091000548B1000008002D4007
3222:10C9500085B00100000000F082B00100000000403E
3223:10C9600005B00100CE930041873001000000004572
3224:10C9700061B101004000001062DD01002C91A8406F
3225:10C9800081320000AF8200881CB00000000000056A
3226:10C9900048B1010032912209803000000B9500401F
3227:10C9A0001330010035912244197C00000B95004F93
3228:10C9B000813001000000004419800100FF070008D9
3229:10C9C000008C01004391224A1F7C00003B91A2167B
3230:10C9D00002300000B0920040813201002F00204060
3231:10C9E000E7B10100D58A004081B200002D002D087A
3232:10C9F0002AB001003F912242197C0000DD930040E3
3233:10CA0000813201004091004081B20000AD930040AE
3234:10CA10008132010030002E002AD0010032002A1598
3235:10CA2000E4B10100D58A0016E4B100002390A216FB
3236:10CA300002300000B0920040813201002F002040FF
3237:10CA4000E7B10100DA8A004081B20000D892004AC2
3238:10CA50001F1001003890001032B000008A00204002
3239:10CA6000E7B101004D91A241197C0000B092004055
3240:10CA7000813201005091004081B2000058930015AE
3241:10CA8000943001005F93004B02B0000000000005ED
3242:10CA900048B1010052912242197C00009A94003A58
3243:10CAA000813001000B95004581300100D58A00409E
3244:10CAB00081B20000F48E00451F9000009A93004060
3245:10CAC000813201005393004081320100389000010F
3246:10CAD0002CB00000A2920040813201006591A208B2
3247:10CAE000803200006591A2168032000000820002B0
3248:10CAF00004DC01000000004503F00100000000011B
3249:10CB000000C001005E91375C613100000000001B35
3250:10CB100062B1010062912840813200005F910040C3
3251:10CB200081B200000000000062B101006291A840E3
3252:10CB3000813200001A87174081B200005801200896
3253:10CB4000E0B1010060012016E0B101009A930047B6
3254:10CB50001F10010053930040813201003890000102
3255:10CB60002CB00000A29200471F1001007891A2088B
3256:10CB7000803200007891A216803200007491A242A7
3257:10CB8000197C00000082000204DC0100A098004033
3258:10CB90004799010030050041893001005893001584
3259:10CBA000943001005F93004B02B000001A870040F0
3260:10CBB00081B20000DD930040813201000000004B93
3261:10CBC000199001009A94003A813001001A870040C0
3262:10CBD00081B2000058012008E0B101006001201678
3263:10CBE000E0B10100D89200103230010038900040CE
3264:10CBF00013B00000A2920040813201008991A20886
3265:10CC0000803200008991A21680320000008200026A
3266:10CC100004DC01000000004503F0010000000001F9
3267:10CC200000C001008291375C613100000000001BF0
3268:10CC300062B101008691284081320000839100405A
3269:10CC400081B200000000000062B101008691A8409E
3270:10CC5000813200001A87174081B200000080000373
3271:10CC600042C90100000000F882B00100000000F895
3272:10CC70008CB00100000000F08EB0010097930040DE
3273:10CC8000133001000000004085B00100CE93004148
3274:10CC90008730010053930040813201000080001072
3275:10CCA00042C9010098912240E36D00000000004558
3276:10CCB00061B101004000001062DD01009491A840C4
3277:10CCC00081320000AF8200881CB000000000000527
3278:10CCD00048B10100358E2209803000000B950040DC
3279:10CCE00013300100358E004081B2000014002D4544
3280:10CCF0001F9001007D8E004419900000A091A24178
3281:10CD0000197C00000000004A1F900100E88F0040DD
3282:10CD100081B200009A93004A1F1001005393004013
3283:10CD200081320100389000012CB00000D892004000
3284:10CD3000813201003890001032B00000F48E0045BE
3285:10CD40001F9000000000004137C3010000000041B7
3286:10CD500033C301003600000102CC01000000D240C4
3287:10CD600081B20000AC9185178032000000009F481E
3288:10CD700003D00000AE919C178032000000009F4C51
3289:10CD800003D000000000800134C301004080000394
3290:10CD900044C901000000004AF0B101000000004059
3291:10CDA000F1B1010000000012F0B10100B4920041A5
3292:10CDB000E13101000080004344C90100100000403F
3293:10CDC000F199010000000048F0B1010000000049A5
3294:10CDD000F0B1010040000003E0C90100000000457F
3295:10CDE00061B101000000004362B101000000A840F1
3296:10CDF00081B20000BA91004081B20000BA00204028
3297:10CE0000E5B10100B0002F018CD001000000004608
3298:10CE1000E0C10100AC002F4013B00100CC002D0197
3299:10CE2000E0C10100C4919C17803200009D95004034
3300:10CE300081320100C6912247197C00000000005F8A
3301:10CE4000139001004495004719100100C0002D44C3
3302:10CE50001F900100C4002DF082B00100789500F011
3303:10CE600084B0000090002D0548B10100DB91A24B79
3304:10CE70001F7C00002E92A24C1F7C0000DB911F1C27
3305:10CE8000E06D0000DE91A20180320000A8002D4676
3306:10CE90008FB00100D4911F1CE06D0000B400004071
3307:10CEA00043990100D69122F03A6C00002B921FF0BA
3308:10CEB0003A6C00000000A24080B200000000804FE9
3309:10CEC0008FB001008A000040439901002C9220425B
3310:10CED000E76D0000DA9122408032000000008059A6
3311:10CEE0008FB00100000080588FB00100DD9122401A
3312:10CEF000803200000000805C8FB001000000805B89
3313:10CF00008FB00100AC00004043990100B0002DF04B
3314:10CF100084B00100E291A242246C0000EB9123F066
3315:10CF2000026C0000E891A2F0803200002D92A24233
3316:10CF3000246C00002D92A241036C0000E791A240F6
3317:10CF400080320000000080518FB00100000080524C
3318:10CF50008FB001002D921F12845000002D92A0016D
3319:10CF6000846C0000DB91004081B200008B00004027
3320:10CF7000439901001692A246E77D0000140000408C
3321:10CF800043990100089222F014300000F491200A25
3322:10CF9000026C00000592031E80320000F391A24053
3323:10CFA00080320000000080448FB001000000804902
3324:10CFB0008FB00100F991220A026C0000FC91A2419D
3325:10CFC000197C0000F891A2408032000000008055DA
3326:10CFD0008FB00100000080568FB00100FB91A2408D
3327:10CFE00080320000000080438FB0010000008048C4
3328:10CFF0008FB001000000000182B001000000000AB3
3329:10D0000082D0010002922091836C00000192A24024
3330:10D0100080320000260080408F9801002700804069
3331:10D020008F9801000492A240803200001F008040CF
3332:10D030008F980100200080408F9801000792A24045
3333:10D0400080320000220080408F9801002300804041
3334:10D050008F98010088002D448FB001001192A241E9
3335:10D06000197C00000E92A2433D7C00000E92A2F2B9
3336:10D07000026C00000000A24080B200000000804965
3337:10D080008FB001001092A240803200000000804367
3338:10D090008FB00100000080488FB001000E92A09177
3339:10D0A000036C00000C9222433D7C00001592A240CC
3340:10D0B00080320000280080408F98010029008040C5
3341:10D0C0008F98010014000040439901001F92A2F0C4
3342:10D0D0001430000088002D448FB001001C92A2F291
3343:10D0E000026C00000000A24080B2000000008049F5
3344:10D0F0008FB001000E922241197C00000C92209109
3345:10D10000036C00000E92004081B200002392200ABE
3346:10D11000026C00002292A240803200000000804495
3347:10D120008FB00100000080498FB001002892220AD0
3348:10D13000026C0000FC91A241197C00002792A240E1
3349:10D1400080320000000080558FB001000000805642
3350:10D150008FB001002A92A24080320000000080437C
3351:10D160008FB00100000080488FB001003092004372
3352:10D1700095B000003092004195B00000309200421E
3353:10D1800095B000003092004495B000003092004C01
3354:10D1900095B00000E0940040813201003392A2403B
3355:10D1A000803200000000804B8FB001000000804CF6
3356:10D1B0008FB001002D000040439901002E002FF395
3357:10D1C00084B001003892A2F3963000000000804045
3358:10D1D00001B001002D002A41E7D10100D4003D41FA
3359:10D1E00085E001000B0000F200E401003E92225AAB
3360:10D1F000017C0000000000401F9001003F92005A97
3361:10D2000001800000000000401F8001000000634119
3362:10D2100085C001000000A0A5856C01000000E3406E
3363:10D2200085B001000C80000342C9010012000040DB
3364:10D2300087980100DF9500F08CB000004C922240EE
3365:10D240000F6C000000002F0548B101004992A24B6D
3366:10D25000197C00004A9222F0186C00000000604B1C
3367:10D26000199001001693000710300100F982004068
3368:10D2700005B000004E92225A1F7C00009B92004095
3369:10D2800081300100F982004005B0000000002F0548
3370:10D2900048B101000000604B19900100169300078F
3371:10D2A00010300100F982004005B0000000002F0599
3372:10D2B00048B101000000604B19900100169300076F
3373:10D2C000103001000000804005B00100579233404B
3374:10D2D000813200005A92A1AD95200000689213405F
3375:10D2E00081B200000000134A5A8301003000394522
3376:10D2F00095E001001F00000F5ED801000000005AF9
3377:10D300005F9001000000004045B0010000000004F3
3378:10D3100048B00100000000054AB001000000000C08
3379:10D3200058B00100000000074EB00100A884004082
3380:10D330005D9801000000005861B101000000004A42
3381:10D3400062B101000000A84197B000006592004062
3382:10D3500081B200000000804097B001006992600730
3383:10D3600096300000FFFF004B84890100000070C26E
3384:10D3700024B001007392A245257C00006D923120FB
3385:10D380008530000074922212487F00005804111268
3386:10D39000480301001000001296E401000000004B59
3387:10D3A0001E9401000000805A1F90010073923140CA
3388:10D3B00081320000000000B424B0010074922212F7
3389:10D3C000487F0000580400408132010000002F0512
3390:10D3D00048B1010081920BF084300000000011126E
3391:10D3E000488301007E922250857000005E0100405B
3392:10D3F00043990100419400F2963001009304001219
3393:10D40000943001000000005A1F900100100000122B
3394:10D4100096E401000000804B1E94010010000042C1
3395:10D4200010F4010000B73F4311F0010007000008AD
3396:10D430008A880100849230A10C3000008792224536
3397:10D44000E67D00007492104081B2000000002A4581
3398:10D45000E691010000001012488301000000114015
3399:10D4600081B201000000604B858001005E01004038
3400:10D4700043990100419400F29630010000800010B1
3401:10D4800044C90100D8000040819801002E002D05FC
3402:10D4900048B1010092922240E76D000080000040F8
3403:10D4A00080C8010000000040F0B101000900000840
3404:10D4B00086E40100000068A787C001000000004466
3405:10D4C00061B101000000001062B101009692A80550
3406:10D4D000E03100001000001296E401000014004B3F
3407:10D4E00096DC01000000804B1E9401001000000F2C
3408:10D4F00084F401001F000042848801009F922240B2
3409:10D5000080320000A092004268B10000000000429A
3410:10D510006AB10100A092315A1F0000000000914240
3411:10D5200048930100A2923540813200006D00004016
3412:10D5300061990100A89228B12C300000A392224DDD
3413:10D54000757D0000000000402DB0010000009540F6
3414:10D5500011B001006D00004061990100A892A8B1CE
3415:10D56000103000000000954081B201007F000040B3
3416:10D5700061990100AF9228B110300000AB929FBAC0
3417:10D58000803200000000804011B0010000008024C3
3418:10D59000118401000000005F61B101000010000073
3419:10D5A00062DD01000000A84081B20000B19200409D
3420:10D5B00081B20000AC94004047990100B59232401E
3421:10D5C00081320000BB9222F896300000000000F883
3422:10D5D00090B00100000000F092B001000100004B8B
3423:10D5E000F0CD010020009248E0C901006C0000402D
3424:10D5F00061990100BF9228B192300000BB92224C89
3425:10D60000757D00000400124091B000006C000040E5
3426:10D6100061990100BF92A8B190300000FF0000485E
3427:10D62000968801000000004B90D001000100004BE3
3428:10D63000F0CD010020000048F0C90100000092492F
3429:10D64000E0B101000C002D1048B10100FF070008F7
3430:10D65000828C0100FF0700F0008C01000000A24155
3431:10D6600000EC0000CC92221A006C0000B092000086
3432:10D67000343001000000005049C10100C892A241AD
3433:10D68000235000000000804081B201000C002D10EA
3434:10D6900048B10100FF070015828C0100FF0700F070
3435:10D6A000008C01000000A24100EC0000D592220D88
3436:10D6B000006C0000B09200001A3001000000005021
3437:10D6C00049C10100D192A2412350000000008040D6
3438:10D6D00081B20100DA92831E803200000000004413
3439:10D6E0001990010024002D012CB0010028002DF01C
3440:10D6F00016B0010022002DF026B0010014002FF218
3441:10D700000CB0010000008040E1B101003000004099
3442:10D710009798010060972E4081B201000000004000
3443:10D72000F1B10100E192A2419750000064973E439D
3444:10D730009DE0010000008040E1B1010064973E439C
3445:10D740009DE001000000800BE8B1010064973F43B9
3446:10D750009DE00100000000F016C0010000008040C4
3447:10D76000E1B1010064973F439DE00100000000F437
3448:10D7700016B0010000008040E1B1010060173D4398
3449:10D780009DE00100100080A116E4010000B5000D2D
3450:10D7900042C90100F092304717040000F392A20B37
3451:10D7A000E67D00000000904281B0010000B7000D4E
3452:10D7B00046C90100F792A20BE67D00000000000BB5
3453:10D7C000E69101000000904181B00100000010408E
3454:10D7D00081B20100F8924007963000009D0400409D
3455:10D7E000813201000293A245957C000001973F41E0
3456:10D7F00095E00100000000F396B001000000004E2B
3457:10D80000E6B1010040973E4097E001000000004E65
3458:10D81000E6B1010040973E409DE001001593003BBA
3459:10D82000E7B1000002933040813200000C93A20B5C
3460:10D83000E67D000000B5000D46C901000893A20B6B
3461:10D84000E67D00000000104081B201000000984217
3462:10D8500081B0010000B7000D46C901000000000BB7
3463:10D86000E69101000000104081B2010000009841E3
3464:10D8700081B00100040021A2952000000000104AA0
3465:10D880004483010000973E4195E001000000004EF6
3466:10D89000F6B101000000004EE6B1010040973E40A5
3467:10D8A0009DE001000000003BE7B101000000004ADC
3468:10D8B00090B10100FFFF000792890100000098402D
3469:10D8C00081B001000300000886F4010000B70043A6
3470:10D8D00046C901000700000882880100199340082A
3471:10D8E000963000009D0400408132010025932245BE
3472:10D8F000957C00002193225A1F7C00001000000F2D
3473:10D9000096F401001E93315F970400000000114B54
3474:10D91000489301000000004B6AB1010021933040A0
3475:10D920008132000000000041E6810100000010404B
3476:10D9300081B201000000984081B2010000973F4190
3477:10D9400095E00100000000F396B0010040973D40D3
3478:10D9500097E00100000063F388B001002D93A23B23
3479:10D96000896C00000000004A90B10100010000A68F
3480:10D9700092B101002E93184A449300000000184011
3481:10D9800081B201003000394597E001003393225AFB
3482:10D990001F7C00001F04000F98D801000000004CFD
3483:10D9A0005E940100359300054AB000001F0400A7F3
3484:10D9B0005E840100000000404BB0010000000058F0
3485:10D9C00061B101000000004B62B101000000A840FD
3486:10D9D00081B200003693004081B2000039934007C5
3487:10D9E000963000009D040040813201003D932245A5
3488:10D9F000957C00000000984081B201009B04004A21
3489:10DA00004413010000973F4195E00100000000F33E
3490:10DA100096B0010040973D4097E00100000063F39D
3491:10DA200088B001003000384597E001000000005F39
3492:10DA30000F9001000000005861B101000000004B90
3493:10DA400062B101004593A840813200003E93A23BA1
3494:10DA5000896C0000300038459DE0010000009840CE
3495:10DA600081B2010093040012943001001693005A11
3496:10DA70001F0001000000805A1F9001001100004AA1
3497:10DA8000E6C9010034002F4F95840100000000F327
3498:10DA900096B001000100634B84C801000000A04360
3499:10DAA000856C01000000E34085B0010030002D448A
3500:10DAB0001F90010032002DF22AB00100040022F272
3501:10DAC0000230000034920010323001003200A040D9
3502:10DAD000E5B101000000004097B00100F0070040F0
3503:10DAE000999801000000004A02C0010000000050A7
3504:10DAF00003D001000000004197C001000000A34CCA
3505:10DB000002D000005C93004081B20000000000A839
3506:10DB100036B001006C9322410350000000800010D9
3507:10DB200044C9010000000050F1B101007000000381
3508:10DB3000F0C901000000004261B1010000000010C6
3509:10DB400062B101006593A800E0310000AF82008857
3510:10DB50001CB00000B0920040813201007C800003C4
3511:10DB600042C90100000000F000B001006093005CB9
3512:10DB700001800000B0920040813201000000001BD3
3513:10DB800010B1000068012D0682B00100000000F213
3514:10DB900082C001000080000346C90100AB92004032
3515:10DBA0008132010093932240116C0000000068084C
3516:10DBB00038960100F007004182CC01007193AA4120
3517:10DBC0003B400000000000F810B001000000005CC5
3518:10DBD000118001000100001D04CC01009293264633
3519:10DBE000233000000800000312C80100640120F087
3520:10DBF000E0B1010091932241055000002000000394
3521:10DC000048C901000C0000F886C801000000224449
3522:10DC1000F1B1010000000043F0B101000000000973
3523:10DC2000E0B101000000004461B10100A00000A4C7
3524:10DC300062DD01008393A8461F10000090932241EB
3525:10DC4000055000008E93A24123500000000000A167
3526:10DC50001AB001000000004461B101004000001052
3527:10DC600062DD01008993A84623300000AF8200885E
3528:10DC70001CB000001000000348C901000000000DA6
3529:10DC800042B101000000004413C001007E93005027
3530:10DC900049C100000000000548B1010004800003F4
3531:10DCA0001AC801000000804081B201009293224016
3532:10DCB0003B6C0000000000F800B00100B092005C76
3533:10DCC00001000100939300413BD0000000008D470C
3534:10DCD00080320100B0002F5F13B001000000E0F0BF
3535:10DCE0008CC001000080000342C90100000000F860
3536:10DCF00094B00100000000F88CB001009F938CF8F4
3537:10DD00008E3000000000004419900100040022F849
3538:10DD100014300000000000F816B00100000000F808
3539:10DD200026B0010008002EF80CB001000C002A4AB1
3540:10DD3000E0B1010028000000E0C901001000201B34
3541:10DD4000E0B10100AC93200A0C6C0000000000F868
3542:10DD500094B00100000000F896B00100200020F00F
3543:10DD6000E4B101001800204AE0B101001C00204B82
3544:10DD7000E0B101009793004013B000002C002D4249
3545:10DD8000199001002E002FF382B00100000000F373
3546:10DD900096B00100B293A2A5976C000000008041EC
3547:10DDA00095B00100B593A240976C000000000040C0
3548:10DDB00083B001002D002040E7B101000000634165
3549:10DDC00097C00100D4003E4183E001000000004103
3550:10DDD00083C00100BA93A0A5836C0000000000403E
3551:10DDE00083B001002C002041E6B10100BF93224026
3552:10DDF0001F7C00000004000098DC01000B00004CB8
3553:10DE0000E4F50100000080401F8001000B0080004D
3554:10DE1000E4F50100B4920040813201000480000367
3555:10DE200044C9010000000040F1B1010000000040C1
3556:10DE3000F1B101000000604187B0010000800010D6
3557:10DE400044C9010000000050F1B101000000004889
3558:10DE5000F0B1010000000049F0B101000000000332
3559:10DE6000E0B101000000004561B101002000001098
3560:10DE700062DD01000000A85D05900000CB9300402A
3561:10DE800081B20000B49200408132010000800003A2
3562:10DE900044C9010000000041F0B10100000000424F
3563:10DEA000F0B1010000000040F1B1010000000043AA
3564:10DEB000F0B101000080001044C9010000000050D2
3565:10DEC000F1B1010000000048F0B10100000000497C
3566:10DED000F0B1010000000003E0B1010000000045C6
3567:10DEE00061B101002000001062DD01000000A85DAA
3568:10DEF00005900000DA93004081B200002D00004040
3569:10DF0000439901002E002FF384B00100010063F358
3570:10DF100096C80100E2939F4185500000010000A5D2
3571:10DF200085CC01002D00A042E6B101005E012D006C
3572:10DF300080B00100E793524381600000020000F2CC
3573:10DF400082F40100E8930041809400000000005F2B
3574:10DF5000819001000000005E61B1010000000040FE
3575:10DF600062B101000000A84095B00000E9939EBB9B
3576:10DF700080320000EE93A2401F7C0000B09200406F
3577:10DF800081B200000000804195B00100040000153E
3578:10DF900042C90100000000542BC00100000000FC39
3579:10DFA00024B00100000000FC38B00100000000FEB9
3580:10DFB0003CB00100000000FE3AB0010003949C1741
3581:10DFC00080320000F893A24A197C00000000804CC7
3582:10DFD0001F9001000C00001E98F40100F793A24866
3583:10DFE000996C00000000001542B10100F793A28A6D
3584:10DFF000F16D00000C00000102CC0100000000FCEB
3585:10E000003EB00100010000F428CC0100CC002D0539
3586:10E0100048B10100029420F03E6C00000000004B6B
3587:10E020001F9001000000004C2BC00100BF002D0517
3588:10E0300048B10100000080F33AE0010000002E4BDF
3589:10E040001990010007002A0CE4B1010000008004CF
3590:10E05000E6B1010018000040439901001C002DF0BA
3591:10E0600016B0010020002DF026B001000C002FF2A8
3592:10E070000CB001000000A20614EC00000F94224531
3593:10E080001F7C00000000A3062AEC0000000000F83E
3594:10E0900094B00100000000F096B001000C002D408B
3595:10E0A00081B2010000002A4CE1C1010030000010E3
3596:10E0B00048C901000A000040F1990100180000055C
3597:10E0C000F0C901000000004AF0B101000000004B5F
3598:10E0D000E0B101000000004761B10100A00000A410
3599:10E0E00062DD01001994A85C1F100000000080058B
3600:10E0F00048B1010000002E1048B1010040000001AD
3601:10E10000F0CD010040000003F0C901004000000014
3602:10E11000E0C9010000002E5049C1010000000006C6
3603:10E12000F1B1010000000003F0B10100239462424C
3604:10E13000613100002000001062DD01002494A8403D
3605:10E14000813200001000001062C901002694A8006E
3606:10E15000E03100000000F24081B2010000002E100A
3607:10E1600048B1010040000001F0CD01004000000373
3608:10E17000F0C9010040000000E0C9010000002E507D
3609:10E1800049C1010000000006F1B1010000000003D8
3610:10E19000F0B10100309462426131000020000010B3
3611:10E1A00062DD01003194A84081320000A00000A48B
3612:10E1B00062DD01003394A800E03100000000F2406D
3613:10E1C00081B201003080004A44C90100000000060D
3614:10E1D000F1B10100C0A83D460DE00100FF7F00A1A4
3615:10E1E000F08901000200000996F4010000000046D9
3616:10E1F00097E00100000060A897C001003D946342D1
3617:10E20000613100003000004A62C901003E94A8401C
3618:10E21000813200000000F34081B2010000993F42CA
3619:10E2200097F0010042946540813200004A9422F345
3620:10E23000740600003F0000F394880100000000070E
3621:10E24000E78501000000755561B101000000004A3A
3622:10E2500062B101000000A84081B200004794004074
3623:10E2600081B200000000F54081B20100000000A86A
3624:10E2700036B001005A948241234000004F94A244DA
3625:10E280001F7C0000BD9100018C3001002080001037
3626:10E2900042C9010055942240E36D00000000004394
3627:10E2A00061B101004000001062DD01005294A840FD
3628:10E2B00081320000AF8200881CB0000000000041E5
3629:10E2C00023B001000000001032B001005A94224136
3630:10E2D000197C0000C6920043233001000000004179
3631:10E2E00023B001005C94A3150C6C00005D94000643
3632:10E2F00004B000000000001504B001005F9420028B
3633:10E300001A6C00000000000D04B001001E9500050D
3634:10E310004831010089942202145000006394A20243
3635:10E320002A5000008994A2451F7C000065942202B7
3636:10E330000C5000006E94000216C000006D94225C28
3637:10E340001F7C00003080001042C901006D94224003
3638:10E35000E36D00000000004761B1010040000010C3
3639:10E3600062DD01006994A84081320000AF8200881C
3640:10E370001CB000000000000548B101000894005CDA
3641:10E380001F00010089942215803200000000005017
3642:10E3900033C001008894A2021A5000007A942246E9
3643:10E3A0001F7C00007080000342C90100000000468D
3644:10E3B0001F8001007A942240E36D000000000042BB
3645:10E3C00061B101004000001062DD01007694A840B8
3646:10E3D00081320000AF8200881CB000000000000500
3647:10E3E00048B101000C80000342C90100100000F098
3648:10E3F00010C801002F002F5C1180010000000047B1
3649:10E40000E7910100F00700401B9801004C94201593
3650:10E410001A6C00007000000348C90100000022507F
3651:10E42000F1B1010000000003F0B10100FF07000896
3652:10E43000E08D01000000004261B10100A00000A4D5
3653:10E4400062DD01008594A8461F1000004C94000571
3654:10E4500048B100004C94000210C000008B94A2440C
3655:10E460001F7C0000BD9100018C3001000000001BEA
3656:10E4700010B100000080001044C901000C000040F1
3657:10E48000F199010010000008F0C901000000001619
3658:10E49000F0B1010010000003E0C9010000000045D8
3659:10E4A00061B101002000001062DD01000000A85CE5
3660:10E4B0001F9000009294004081B20000170000D02D
3661:10E4C000A2C901000000A24027EC000000000020CB
3662:10E4D00000B00100B0920041A341010096940041B8
3663:10E4E00027D000001000000796E401000000004B58
3664:10E4F000809401000000005461B1010000800040E0
3665:10E5000062DD01000000A84081B200009D9400403F
3666:10E5100081B20000EF9400402B300100AC002D06CA
3667:10E5200016C0010090002DF016C40100A594A0F0C3
3668:10E53000164400000000004117C001000E0000A2B8
3669:10E5400044C9010000006CF030B00100AC002D4067
3670:10E5500087B0010000006CF028B00100AE94224AA0
3671:10E56000197C00000030004386C801000030000B19
3672:10E5700016C80100AE94A4408132000000000041A2
3673:10E5800017C00100CF94220680320000BB94A2067F
3674:10E59000146C0000B8942248197C0000B394A04188
3675:10E5A000174000000000004117C0010000000041BA
3676:10E5B00031C0010090002018E0B101008B002D480F
3677:10E5C000198001008B002045E7910100BB940040B9
3678:10E5D000879000000800004386980100BB94A04883
3679:10E5E000174000000000004117C00100B0000040CB
3680:10E5F0004399010010500043FCC9010026950030EA
3681:10E600008130010000000040E5B10100C694224ABB
3682:10E61000197C0000080000A244C90100CC002DAB09
3683:10E62000F9B10100000000AB17C00100C594A0F0D3
3684:10E63000164400000000004117C00100CA9464F0B5
3685:10E6400082B00000A400004047990100CA94A2F2E1
3686:10E650008032000000000041E5B101008C0020186C
3687:10E66000E0B1010090000040459901000000600603
3688:10E6700030C001000000860C80B20000BC002D46B6
3689:10E6800019900100A000A0F2E4B10100B000004028
3690:10E690004399010010500043FCC901002695003049
3691:10E6A000813001000000A24A19FC0000080000A20D
3692:10E6B00044C90100CC002DABF9B10100000000AB52
3693:10E6C00017C00100D894A0F01644000000000041DB
3694:10E6D00017C001000000E4F082B0010000800010CB
3695:10E6E00044C9010000000041F0B101000000000336
3696:10E6F000F0B1010000000000F0B1010000000010C6
3697:10E7000062B101000000A81BE0B10000DD940040F0
3698:10E7100081B2000000F0000C7E8901000000A64CD0
3699:10E72000956001000000804A1894010000800010EC
3700:10E7300044C9010004002201F03100002000004023
3701:10E74000F0C9010000000016F0B101000000004314
3702:10E7500061B101002000001062DD01000000A81579
3703:10E76000E0B10000E894004081B200001080000396
3704:10E7700044C9010000000006F0B1010000000001E2
3705:10E78000F0B101000000E85F179001007000004048
3706:10E79000439901007A012EFE92B001008B002DF604
3707:10E7A00016B00100F5942243E77D0000000000440C
3708:10E7B00045C10100040000A62AB0010028006E0631
3709:10E7C00082C80100F994224A197C0000000000422E
3710:10E7D00045D1010000006E4C83C0010000000041E3
3711:10E7E00092C00100FA9443303D0700000000669E8D
3712:10E7F00083B0010000001B413DC301000000004147
3713:10E8000092C00100060000A244C9010010000049A6
3714:10E8100098F4010003952630930400000395904C72
3715:10E82000924000000000004193C00100FFFF8049BA
3716:10E83000ECA901000080001044C90100040022017D
3717:10E84000F031000000000009F0B1010000000018E4
3718:10E85000F0B101002000001062DD01000000A815E9
3719:10E86000E0B100000895004081B200001595225FDC
3720:10E87000817C00001495A240197C0000000000403B
3721:10E88000199001000000005461B101001000000760
3722:10E8900096E401000000004F979401000000004B37
3723:10E8A00062B10100149528408132000011950040AA
3724:10E8B00081B200000000A221818400001895A25FAF
3725:10E8C000816C00000000A243197C0100000000439D
3726:10E8D000199001000000005461B101001000000710
3727:10E8E00096E4010000000040969401000000004BF7
3728:10E8F00062B101000000A84081B200001B950040F9
3729:10E9000081B200000080001944C901000400220205
3730:10E91000F03100000000000BF0B101000000001316
3731:10E92000F0B101000000004361B1010020000019B6
3732:10E9300062DD01000000A808E0B10000239500405E
3733:10E9400081B200007C002DF084B00100020000F0D4
3734:10E9500098F401002C95204C846C00008800004045
3735:10E96000439901002C9520F2846C000000000040C7
3736:10E9700085B0010098002D1482B00100000000F065
3737:10E9800098B00100A3002D1498D001003195204CBF
3738:10E99000846C00000000004C84B00100000000F313
3739:10E9A00080E0010034952340846C000000000040AA
3740:10E9B00084B00100D0002014E0B10100980025428D
3741:10E9C00080B0010000006EF380F001000000A6425C
3742:10E9D00082C000003A95A0401640000000000041AF
3743:10E9E00017C0010000009FF082EC00009800A041D9
3744:10E9F000E0B1010000002E1048B10100A801004064
3745:10EA0000F199010000000005F0B1010009000007C4
3746:10EA100096E40100000060A797C00100000000100C
3747:10EA200062B101000000A84081B2000041950040A1
3748:10EA300081B20000A8002D1C8AB0010000009FF0E8
3749:10EA40008AD000000000A2408BEC00008A00204029
3750:10EA5000E7B10100B400004047990100A4002D4532
3751:10EA6000E0D101004E959C1780320000BE002FAB14
3752:10EA700083B00100A195001482500100539500401D
3753:10EA800081B20000539522F2823000008C000040D9
3754:10EA90004399010053959F1CE06D0000BE000040AB
3755:10EAA00047990100A195004081320100A800201C77
3756:10EAB000E0B101009C002D3081B0010088002DF0F4
3757:10EAC00084B0010094002DF286B00100669523F019
3758:10EAD000846C00005B952392876C0000C90400A63B
3759:10EAE00094B001005D95004081B20000200000A6B6
3760:10EAF00094B001006089004A949801005D956840D7
3761:10EB0000813200000000004AB0B10100BF002D4278
3762:10EB1000B2B1010090002DF380E001006195D44076
3763:10EB200081320000000078DA84C001006B95234038
3764:10EB3000846C00009400209DE1B101006B950040C1
3765:10EB400084B00000BF002D4384C0010090002DF36D
3766:10EB500080E001006B952340846C00009400209DB0
3767:10EB6000E1B101000000004084B001006F95A2F007
3768:10EB7000386C00009C002042E0B101000000005F02
3769:10EB80001394010000008046198001009C0020427F
3770:10EB9000E0B101003700004043990100040000F398
3771:10EBA00080F401000F0000F3828801007595234175
3772:10EBB000806C00000000005F139401000000890CCD
3773:10EBC00080B20000BC00004043990100A000A0F208
3774:10EBD000E4B1010000009F4124EC00007F95A640B5
3775:10EBE0008132000000009F4238EC00007F95A64073
3776:10EBF00081320000B4000040439901008195A3F0E8
3777:10EC00003A6C00000000804081B20100B400004076
3778:10EC100043990100859522F03A6C0000B400201D54
3779:10EC2000E0B1010080002D5F13940100859523F071
3780:10EC30003A6C00008000201DE0B10100C0002012ED
3781:10EC4000E0B10100C400A01CE0B10100008000039D
3782:10EC500044C9010000000042E0B101001200004080
3783:10EC6000879801008E959F41246C000000000041B0
3784:10EC70008CB00100000000128CD001008F95004183
3785:10EC800024B00000000000408DB00100DF9500407E
3786:10EC9000813201000000004561B101004000001018
3787:10ECA00062DD01000000A84081B2000091950040A3
3788:10ECB00081B20000A29200408132010000000016E3
3789:10ECC00080B201000000A708803201009995A2409F
3790:10ECD000956C0000B092004081320100008200A6D5
3791:10ECE00004B00100000000402DB00100A0982F40AA
3792:10ECF00011B001003005004189B0000000009FF80C
3793:10ED00003EEC000000009F12E0ED0000C80020ABC8
3794:10ED1000E1B10100CC00A01FE0B10100A395A35F09
3795:10ED2000E76D000000000041E7C10100A6000040BF
3796:10ED300047990100B79522F2863000000300004396
3797:10ED400084F401000100004180CC0100B8002D4294
3798:10ED500080D001000000624086C00100AB951F43D7
3799:10ED600080320000AC95A240876C00000000624138
3800:10ED700087B00100B0959F40803200000000004045
3801:10ED800085B001000000004084D001000000004276
3802:10ED900080B00100000000F288B0010002000044D1
3803:10EDA00084F40100B8002E4280D0010000006240CF
3804:10EDB00088C00100B6951F4480320000BA95A24079
3805:10EDC000896C0000BA95624189B00000030062417D
3806:10EDD00086E40100B800004045990100010062414D
3807:10EDE00088E40100A4002040E5B10100A200204019
3808:10EDF000E7B10100BC002E4387F001000000004491
3809:10EE000086C00100C0952043876C0000000080434D
3810:10EE1000E5B101004001004380CE01000000A443A1
3811:10EE2000E43101004001E2408798010088002D4450
3812:10EE300081B0010090002DF22EB001009C002DF059
3813:10EE400086B0010090002DF082B00100BA002DF0D4
3814:10EE500098B00100CD95A212986C0000BC002DF274
3815:10EE600098B00100CD95A0F2986C0000000000174A
3816:10EE700082B001009C002041E0B10100B4002D12DD
3817:10EE800086D00100D095A341E06D0000D19500F03F
3818:10EE900084B000000000004184B0010080002D43D8
3819:10EEA00084D00100D4959F428032000000000040D1
3820:10EEB00085B00100D695A342146C0000D795000AD6
3821:10EEC0000CB00000000000420CB00100D995A01762
3822:10EED0000C6C0000000080170CB00100DE95224091
3823:10EEE0000D6C00000000A00A0CEC0000010000F016
3824:10EEF00082F40100DE95A0410C6C00000000A2F03D
3825:10EF0000803201000000804081B00100B4920040D6
3826:10EF1000813201000480000344C901000000004662
3827:10EF2000F0B1010000000040F1B1010000006041BB
3828:10EF3000879401000080001044C9010000000050C7
3829:10EF4000F1B1010000000048F0B1010000000049EB
3830:10EF5000F0B1010000000003E0B101000000004535
3831:10EF600061B101002000001062DD01000000A85D19
3832:10EF700005900000EA95004081B2000000002E4B91
3833:10EF80001990010005002A0CE4B101000000800482
3834:10EF9000E6B10100F095454861310000001000081D
3835:10EFA00062DD0100F595284087300000F195224888
3836:10EFB000777D000095941D4687B00000F895225F8C
3837:10EFC000117C00000400221562310000F695A84073
3838:10EFD0008132000000009D4081B20100000000402D
3839:10EFE00049B1010000142F4C83B001000000004023
3840:10EFF000F1B10100FB95A241835000000000804068
3841:10F0000081B201000000004049B101003000004021
3842:10F01000A19901000000004093B0010000000040F1
3843:10F020001FB001004E9600499630010007000049CC
3844:10F0300006E401000039000306C80100000000409A
3845:10F0400005B00100200000D0A0C90100000000416F
3846:10F0500093C001000296A054936C000000002E059E
3847:10F0600097B0010000800040499901000000004075
3848:10F07000E1B10100000200A244C901000B96A241C7
3849:10F08000975000000000002049B301005496004052
3850:10F0900049310100DF9200408132010000B52E08A5
3851:10F0A00097B0010000000040F1B101001296A241AA
3852:10F0B00097500000180000409798010000972E40DC
3853:10F0C00081B2010000000040F1B101001696A2419A
3854:10F0D000975000000000004049B1010040182E0583
3855:10F0E00097B0010000000040F1B101001A96A24162
3856:10F0F0009750000057952040E7B101003094004040
3857:10F100004599010064000040E599010056952040B2
3858:10F11000E7B10100B8942041E5B10100BA94204163
3859:10F12000E5B10100989400404599010002000040BB
3860:10F130009798010000000040F1B101002496A2411F
3861:10F14000975000000000004097B001000000004010
3862:10F150006FB101000000004B68B1010028968541A5
3863:10F160009740000080040040813201000000004010
3864:10F1700039B301000000004037B301000000004037
3865:10F1800035B301000000004033B30100000000402F
3866:10F1900041B30100000000403FB30100EE05004014
3867:10F1A000259B0100420000404B9B010000000040F5
3868:10F1B0002FB30100000000402DB30100000000400B
3869:10F1C00047B301000000004043B30100600000406D
3870:10F1D0002B9B010000000054EF930100000000553C
3871:10F1E000F1930100FFFF00A53C8B01000000002C03
3872:10F1F0005BB301000000002C45B30100000000409B
3873:10F2000059B301000000004057B301000000004066
3874:10F2100027B301000000004053B301004496A25000
3875:10F22000FD7F00004496A251FD7F000045960040FE
3876:10F230001DB30000504600401D9B010000C000A609
3877:10F2400088B30100FF3F00A63AB3010000C0009D53
3878:10F250003B9B0100B4050040239B010000000040DF
3879:10F260004DB30100080A00A614B301000101008A91
3880:10F27000159B0100008000A656B101000000805ED1
3881:10F2800057B501001800004B20E401000600004BB8
3882:10F2900096E401000043004B96C8010018000010DE
3883:10F2A00020DC01000000004B20940100000080578A
3884:10F2B0002190010000992E0A97B001000000004043
3885:10F2C000F1B101005596A2419750000000030040A3
3886:10F2D0009798010000A900404599010000000040F6
3887:10F2E000F1B101005996A241975000003000004052
3888:10F2F000979801000000005561B101000000004B2B
3889:10F3000062B101005D96A840813200005D96A24185
3890:10F31000975000000000804081B201000000804052
3891:10F3200081B201000400004081B2000004000040EE
3892:10F3300081B200000400004081B2000004000040DF
3893:10F3400081B200000400004081B2000004000040CF
3894:10F3500081B200000400004081B2000004000040BF
3895:10F3600081B200000400004081B2000004000040AF
3896:10F3700081B200000400004081B20000040000409F
3897:10F3800081B200000400004081B20000040000408F
3898:10F3900081B200000400004081B20000040000407F
3899:10F3A00081B200000400004081B20000040000406F
3900:10F3B00081B200000400004081B20000040000405F
3901:10F3C00081B200000400004081B20000040000404F
3902:10F3D00081B200000400004081B20000040000403F
3903:10F3E00081B200000400004081B20000040000402F
3904:10F3F00081B200000400004081B20000040000401F
3905:10F4000081B200000400004081B20000040000400E
3906:10F4100081B200000400004081B2000004000040FE
3907:10F4200081B200000400004081B2000004000040EE
3908:10F4300081B200000400004081B2000004000040DE
3909:10F4400081B200000400004081B2000004000040CE
3910:10F4500081B200000400004081B2000004000040BE
3911:10F4600081B200000400004081B2000004000040AE
3912:10F4700081B200000400004081B20000040000409E
3913:10F4800081B200000400004081B20000040000408E
3914:10F4900081B200000400004081B20000040000407E
3915:10F4A00081B200000400004081B20000040000406E
3916:10F4B00081B200000400004081B20000040000405E
3917:10F4C00081B200000400004081B20000040000404E
3918:10F4D00081B200000400004081B20000040000403E
3919:10F4E00081B200000400004081B20000040000402E
3920:10F4F00081B200000400004081B20000040000401E
3921:10F5000081B200000400004081B20000040000400D
3922:10F5100081B200000400004081B2000004000040FD
3923:10F5200081B200000400004081B2000004000040ED
3924:10F5300081B200000400004081B2000004000040DD
3925:10F5400081B200000400004081B2000004000040CD
3926:10F5500081B200000400004081B2000004000040BD
3927:10F5600081B200000400004081B2000004000040AD
3928:10F5700081B200000400004081B20000040000409D
3929:10F5800081B200000400004081B20000040000408D
3930:10F5900081B200000400004081B20000040000407D
3931:10F5A00081B200000400004081B20000040000406D
3932:10F5B00081B200000400004081B20000040000405D
3933:10F5C00081B200000400004081B20000040000404D
3934:10F5D00081B200000400004081B20000040000403D
3935:10F5E00081B200000400004081B20000040000402D
3936:10F5F00081B200000400004081B20000040000401D
3937:10F6000081B200000400004081B20000040000400C
3938:10F6100081B200000400004081B2000004000040FC
3939:10F6200081B200000400004081B2000004000040EC
3940:10F6300081B200000400004081B2000004000040DC
3941:10F6400081B200000400004081B2000004000040CC
3942:10F6500081B200000400004081B2000004000040BC
3943:10F6600081B200000400004081B2000004000040AC
3944:10F6700081B200000400004081B20000040000409C
3945:10F6800081B200000400004081B20000040000408C
3946:10F6900081B200000400004081B20000040000407C
3947:10F6A00081B200000400004081B20000040000406C
3948:10F6B00081B200000400004081B20000040000405C
3949:10F6C00081B200000400004081B20000040000404C
3950:10F6D00081B200000400004081B20000040000403C
3951:10F6E00081B200000400004081B20000040000402C
3952:10F6F00081B200000400004081B20000040000401C
3953:10F7000081B200000400004081B20000040000400B
3954:10F7100081B200000400004081B2000004000040FB
3955:10F7200081B200000400004081B2000004000040EB
3956:10F7300081B200000400004081B2000004000040DB
3957:10F7400081B200000400004081B2000004000040CB
3958:10F7500081B200000400004081B2000004000040BB
3959:10F7600081B200000400004081B2000004000040AB
3960:10F7700081B200000400004081B20000040000409B
3961:10F7800081B200000400004081B20000040000408B
3962:10F7900081B200000400004081B20000040000407B
3963:10F7A00081B200000400004081B20000040000406B
3964:10F7B00081B200000400004081B20000040000405B
3965:10F7C00081B200000400004081B20000040000404B
3966:10F7D00081B200000400004081B20000040000403B
3967:10F7E00081B200000400004081B20000040000402B
3968:10F7F00081B200000400004081B20000040000401B
3969:10F8000081B200000400004081B20000040000400A
3970:10F8100081B200000400004081B2000004000040FA
3971:10F8200081B200000400004081B2000004000040EA
3972:10F8300081B200000400004081B2000004000040DA
3973:10F8400081B200000400004081B2000004000040CA
3974:10F8500081B200000400004081B2000004000040BA
3975:10F8600081B200000400004081B2000004000040AA
3976:10F8700081B200000400004081B20000040000409A
3977:10F8800081B200000400004081B20000040000408A
3978:10F8900081B200000400004081B20000040000407A
3979:10F8A00081B200000400004081B20000040000406A
3980:10F8B00081B200000400004081B20000040000405A
3981:10F8C00081B200000400004081B20000040000404A
3982:10F8D00081B200000400004081B20000040000403A
3983:10F8E00081B200000400004081B20000040000402A
3984:10F8F00081B200000400004081B20000040000401A
3985:10F9000081B200000400004081B200000400004009
3986:10F9100081B200000400004081B2000004000040F9
3987:10F9200081B200000400004081B2000004000040E9
3988:10F9300081B200000400004081B2000004000040D9
3989:10F9400081B200000400004081B2000004000040C9
3990:10F9500081B200000400004081B2000004000040B9
3991:10F9600081B200000400004081B2000004000040A9
3992:10F9700081B200000400004081B200000400004099
3993:10F9800081B200000400004081B200000400004089
3994:10F9900081B200000400004081B200000400004079
3995:10F9A00081B200000400004081B200000400004069
3996:10F9B00081B200000400004081B200000400004059
3997:10F9C00081B200000400004081B200000400004049
3998:10F9D00081B200000400004081B200000400004039
3999:10F9E00081B200000400004081B200000400004029
4000:10F9F00081B200000400004081B200000400004019
4001:10FA000081B200000400004081B200000400004008
4002:10FA100081B200000400004081B2000004000040F8
4003:10FA200081B200000400004081B2000004000040E8
4004:10FA300081B200000400004081B2000004000040D8
4005:10FA400081B200000400004081B2000004000040C8
4006:10FA500081B200000400004081B2000004000040B8
4007:10FA600081B200000400004081B2000004000040A8
4008:10FA700081B200000400004081B200000400004098
4009:10FA800081B200000400004081B200000400004088
4010:10FA900081B200000400004081B200000400004078
4011:10FAA00081B200000400004081B200000400004068
4012:10FAB00081B200000400004081B200000400004058
4013:10FAC00081B200000400004081B200000400004048
4014:10FAD00081B200000400004081B200000400004038
4015:10FAE00081B200000400004081B200000400004028
4016:10FAF00081B200000400004081B200000400004018
4017:10FB000081B200000400004081B200000400004007
4018:10FB100081B200000400004081B2000004000040F7
4019:10FB200081B200000400004081B2000004000040E7
4020:10FB300081B200000400004081B2000004000040D7
4021:10FB400081B200000400004081B2000004000040C7
4022:10FB500081B200000400004081B2000004000040B7
4023:10FB600081B200000400004081B2000004000040A7
4024:10FB700081B200000400004081B200000400004097
4025:10FB800081B200000400004081B200000400004087
4026:10FB900081B200000400004081B200000400004077
4027:10FBA00081B200000400004081B200000400004067
4028:10FBB00081B200000400004081B200000400004057
4029:10FBC00081B200000400004081B200000400004047
4030:10FBD00081B200000400004081B200000400004037
4031:10FBE00081B200000400004081B200000400004027
4032:10FBF00081B200000400004081B200000400004017
4033:10FC000081B200000400004081B200000400004006
4034:10FC100081B200000400004081B2000004000040F6
4035:10FC200081B200000400004081B2000004000040E6
4036:10FC300081B200000400004081B2000004000040D6
4037:10FC400081B200000400004081B2000004000040C6
4038:10FC500081B200000400004081B2000004000040B6
4039:10FC600081B200000400004081B2000004000040A6
4040:10FC700081B200000400004081B200000400004096
4041:10FC800081B200000400004081B200000400004086
4042:10FC900081B200000400004081B200000400004076
4043:10FCA00081B200000400004081B200000400004066
4044:10FCB00081B200000400004081B200000400004056
4045:10FCC00081B200000400004081B200000400004046
4046:10FCD00081B200000400004081B200000400004036
4047:10FCE00081B200000400004081B200000400004026
4048:10FCF00081B200000400004081B200000400004016
4049:10FD000081B200000400004081B200000400004005
4050:10FD100081B200000400004081B2000004000040F5
4051:10FD200081B200000400004081B2000004000040E5
4052:10FD300081B200000400004081B2000004000040D5
4053:10FD400081B200000400004081B2000004000040C5
4054:10FD500081B200000400004081B2000004000040B5
4055:10FD600081B200000400004081B2000004000040A5
4056:10FD700081B200000400004081B200000400004095
4057:10FD800081B200000400004081B200000400004085
4058:10FD900081B200000400004081B200000400004075
4059:10FDA00081B200000400004081B200000400004065
4060:10FDB00081B200000400004081B200000400004055
4061:10FDC00081B200000400004081B200000400004045
4062:10FDD00081B200000400004081B200000400004035
4063:10FDE00081B200000400004081B200000400004025
4064:10FDF00081B200000400004081B200000400004015
4065:10FE000081B200000400004081B200000400004004
4066:10FE100081B200000400004081B2000004000040F4
4067:10FE200081B200000400004081B2000004000040E4
4068:10FE300081B200000400004081B2000004000040D4
4069:10FE400081B200000400004081B2000004000040C4
4070:10FE500081B200000400004081B2000004000040B4
4071:10FE600081B200000400004081B2000004000040A4
4072:10FE700081B200000400004081B200000400004094
4073:10FE800081B200000400004081B200000400004084
4074:10FE900081B200000400004081B200000400004074
4075:10FEA00081B200000400004081B200000400004064
4076:10FEB00081B200000400004081B200000400004054
4077:10FEC00081B200000400004081B200000400004044
4078:10FED00081B200000400004081B200000400004034
4079:10FEE00081B200000400004081B200000400004024
4080:10FEF00081B200000400004081B200000400004014
4081:10FF000081B200000400004081B200000400004003
4082:10FF100081B200000400004081B2000004000040F3
4083:10FF200081B200000400004081B2000004000040E3
4084:10FF300081B200000400004081B2000004000040D3
4085:10FF400081B200000400004081B2000004000040C3
4086:10FF500081B200000400004081B2000004000040B3
4087:10FF600081B200000400004081B2000004000040A3
4088:10FF700081B200000400004081B200000400004093
4089:10FF800081B200000400004081B200000400004083
4090:10FF900081B200000400004081B200000400004073
4091:10FFA00081B200000400004081B200000400004063
4092:10FFB00081B200000400004081B200000400004053
4093:10FFC00081B200000400004081B200000400004043
4094:10FFD00081B200000400004081B200000400004033
4095:10FFE00081B200000400004081B200000400004023
4096:10FFF00081B200000400004081B200000400004013
4097:020000021000EC
4098:1000000081B200000400004081B200000400004002
4099:1000100081B200000400004081B2000004000040F2
4100:1000200081B200000400004081B2000004000040E2
4101:1000300081B200000400004081B2000004000040D2
4102:1000400081B200000400004081B2000004000040C2
4103:1000500081B200000400004081B2000004000040B2
4104:1000600081B200000400004081B2000004000040A2
4105:1000700081B200000400004081B200000400004092
4106:1000800081B200000400004081B200000400004082
4107:1000900081B200000400004081B200000400004072
4108:1000A00081B200000400004081B200000400004062
4109:1000B00081B200000400004081B200000400004052
4110:1000C00081B200000400004081B200000400004042
4111:1000D00081B200000400004081B200000400004032
4112:1000E00081B200000400004081B200000400004022
4113:1000F00081B200000400004081B200000400004012
4114:1001000081B200000400004081B200000400004001
4115:1001100081B200000400004081B2000004000040F1
4116:1001200081B200000400004081B2000004000040E1
4117:1001300081B200000400004081B2000004000040D1
4118:1001400081B200000400004081B2000004000040C1
4119:1001500081B200000400004081B2000004000040B1
4120:1001600081B200000400004081B2000004000040A1
4121:1001700081B200000400004081B200000400004091
4122:1001800081B200000400004081B200000400004081
4123:1001900081B200000400004081B200000400004071
4124:1001A00081B200000400004081B200000400004061
4125:1001B00081B200000400004081B200000400004051
4126:1001C00081B200000400004081B200000400004041
4127:1001D00081B200000400004081B200000400004031
4128:1001E00081B200000400004081B200000400004021
4129:1001F00081B200000400004081B200000400004011
4130:1002000081B200000400004081B200000400004000
4131:1002100081B200000400004081B2000004000040F0
4132:1002200081B200000400004081B2000004000040E0
4133:1002300081B200000400004081B2000004000040D0
4134:1002400081B200000400004081B2000004000040C0
4135:1002500081B200000400004081B2000004000040B0
4136:1002600081B200000400004081B2000004000040A0
4137:1002700081B200000400004081B200000400004090
4138:1002800081B200000400004081B200000400004080
4139:1002900081B200000400004081B200000400004070
4140:1002A00081B200000400004081B200000400004060
4141:1002B00081B200000400004081B200000400004050
4142:1002C00081B200000400004081B200000400004040
4143:1002D00081B200000400004081B200000400004030
4144:1002E00081B200000400004081B200000400004020
4145:1002F00081B200000400004081B200000400004010
4146:1003000081B200000400004081B2000004000040FF
4147:1003100081B200000400004081B2000004000040EF
4148:1003200081B200000400004081B2000004000040DF
4149:1003300081B200000400004081B2000004000040CF
4150:1003400081B200000400004081B2000004000040BF
4151:1003500081B200000400004081B2000004000040AF
4152:1003600081B200000400004081B20000040000409F
4153:1003700081B200000400004081B20000040000408F
4154:1003800081B200000400004081B20000040000407F
4155:1003900081B200000400004081B20000040000406F
4156:1003A00081B200000400004081B20000040000405F
4157:1003B00081B200000400004081B20000040000404F
4158:1003C00081B200000400004081B20000040000403F
4159:1003D00081B200000400004081B20000040000402F
4160:1003E00081B200000400004081B20000040000401F
4161:1003F00081B200000400004081B20000040000400F
4162:1004000081B200000400004081B2000004000040FE
4163:1004100081B200000400004081B2000004000040EE
4164:1004200081B200000400004081B2000004000040DE
4165:1004300081B200000400004081B2000004000040CE
4166:1004400081B200000400004081B2000004000040BE
4167:1004500081B200000400004081B2000004000040AE
4168:1004600081B200000400004081B20000040000409E
4169:1004700081B200000400004081B20000040000408E
4170:1004800081B200000400004081B20000040000407E
4171:1004900081B200000400004081B20000040000406E
4172:1004A00081B200000400004081B20000040000405E
4173:1004B00081B200000400004081B20000040000404E
4174:1004C00081B200000400004081B20000040000403E
4175:1004D00081B200000400004081B20000040000402E
4176:1004E00081B200000400004081B20000040000401E
4177:1004F00081B200000400004081B20000040000400E
4178:1005000081B200000400004081B2000004000040FD
4179:1005100081B200000400004081B2000004000040ED
4180:1005200081B200000400004081B2000004000040DD
4181:1005300081B200000400004081B2000004000040CD
4182:1005400081B200000400004081B2000004000040BD
4183:1005500081B200000400004081B2000004000040AD
4184:1005600081B200000400004081B20000040000409D
4185:1005700081B200000400004081B20000040000408D
4186:1005800081B200000400004081B20000040000407D
4187:1005900081B200000400004081B20000040000406D
4188:1005A00081B200000400004081B20000040000405D
4189:1005B00081B200000400004081B20000040000404D
4190:1005C00081B200000400004081B20000040000403D
4191:1005D00081B200000400004081B20000040000402D
4192:1005E00081B200000400004081B20000040000401D
4193:1005F00081B200000400004081B20000040000400D
4194:1006000081B200000400004081B2000004000040FC
4195:1006100081B200000400004081B2000004000040EC
4196:1006200081B200000400004081B2000004000040DC
4197:1006300081B200000400004081B2000004000040CC
4198:1006400081B200000400004081B2000004000040BC
4199:1006500081B200000400004081B2000004000040AC
4200:1006600081B200000400004081B20000040000409C
4201:1006700081B200000400004081B20000040000408C
4202:1006800081B200000400004081B20000040000407C
4203:1006900081B200000400004081B20000040000406C
4204:1006A00081B200000400004081B20000040000405C
4205:1006B00081B200000400004081B20000040000404C
4206:1006C00081B200000400004081B20000040000403C
4207:1006D00081B200000400004081B20000040000402C
4208:1006E00081B200000400004081B20000040000401C
4209:1006F00081B200000400004081B20000040000400C
4210:1007000081B200000400004081B2000004000040FB
4211:1007100081B200000400004081B2000004000040EB
4212:1007200081B200000400004081B2000004000040DB
4213:1007300081B200000400004081B2000004000040CB
4214:1007400081B200000400004081B2000004000040BB
4215:1007500081B200000400004081B2000004000040AB
4216:1007600081B200000400004081B20000040000409B
4217:1007700081B200000400004081B20000040000408B
4218:1007800081B200000400004081B20000040000407B
4219:1007900081B200000400004081B20000040000406B
4220:1007A00081B200000400004081B20000040000405B
4221:1007B00081B200000400004081B20000040000404B
4222:1007C00081B200000400004081B20000040000403B
4223:1007D00081B200000400004081B20000040000402B
4224:1007E00081B200000400004081B20000040000401B
4225:1007F00081B200000400004081B20000040000400B
4226:1008000081B200000400004081B2000004000040FA
4227:1008100081B200000400004081B2000004000040EA
4228:1008200081B200000400004081B2000004000040DA
4229:1008300081B200000400004081B2000004000040CA
4230:1008400081B200000400004081B2000004000040BA
4231:1008500081B200000400004081B2000004000040AA
4232:1008600081B200000400004081B20000040000409A
4233:1008700081B200000400004081B20000040000408A
4234:1008800081B200000400004081B20000040000407A
4235:1008900081B200000400004081B20000040000406A
4236:1008A00081B200000400004081B20000040000405A
4237:1008B00081B200000400004081B20000040000404A
4238:1008C00081B200000400004081B20000040000403A
4239:1008D00081B200000400004081B20000040000402A
4240:1008E00081B200000400004081B20000040000401A
4241:1008F00081B200000400004081B20000040000400A
4242:1009000081B200000400004081B2000004000040F9
4243:1009100081B200000400004081B2000004000040E9
4244:1009200081B200000400004081B2000004000040D9
4245:1009300081B200000400004081B2000004000040C9
4246:1009400081B200000400004081B2000004000040B9
4247:1009500081B200000400004081B2000004000040A9
4248:1009600081B200000400004081B200000400004099
4249:1009700081B200000400004081B200000400004089
4250:1009800081B200000400004081B200000400004079
4251:1009900081B200000400004081B200000400004069
4252:1009A00081B200000400004081B200000400004059
4253:1009B00081B200000400004081B200000400004049
4254:1009C00081B200000400004081B200000400004039
4255:1009D00081B200000400004081B200000400004029
4256:1009E00081B200000400004081B200000400004019
4257:1009F00081B200000400004081B200000400004009
4258:100A000081B200000400004081B2000004000040F8
4259:100A100081B200000400004081B2000004000040E8
4260:100A200081B200000400004081B2000004000040D8
4261:100A300081B200000400004081B2000004000040C8
4262:100A400081B200000400004081B2000004000040B8
4263:100A500081B200000400004081B2000004000040A8
4264:100A600081B200000400004081B200000400004098
4265:100A700081B200000400004081B200000400004088
4266:100A800081B200000400004081B200000400004078
4267:100A900081B200000400004081B200000400004068
4268:100AA00081B200000400004081B200000400004058
4269:100AB00081B200000400004081B200000400004048
4270:100AC00081B200000400004081B200000400004038
4271:100AD00081B200000400004081B200000400004028
4272:100AE00081B200000400004081B200000400004018
4273:100AF00081B200000400004081B200000400004008
4274:100B000081B200000400004081B2000004000040F7
4275:100B100081B200000400004081B2000004000040E7
4276:100B200081B200000400004081B2000004000040D7
4277:100B300081B200000400004081B2000004000040C7
4278:100B400081B200000400004081B2000004000040B7
4279:100B500081B200000400004081B2000004000040A7
4280:100B600081B200000400004081B200000400004097
4281:100B700081B200000400004081B200000400004087
4282:100B800081B200000400004081B200000400004077
4283:100B900081B200000400004081B200000400004067
4284:100BA00081B200000400004081B200000400004057
4285:100BB00081B200000400004081B200000400004047
4286:100BC00081B200000400004081B200000400004037
4287:100BD00081B200000400004081B200000400004027
4288:100BE00081B200000400004081B200000400004017
4289:100BF00081B200000400004081B200000400004007
4290:100C000081B200000400004081B2000004000040F6
4291:100C100081B200000400004081B2000004000040E6
4292:100C200081B200000400004081B2000004000040D6
4293:100C300081B200000400004081B2000004000040C6
4294:100C400081B200000400004081B2000004000040B6
4295:100C500081B200000400004081B2000004000040A6
4296:100C600081B200000400004081B200000400004096
4297:100C700081B200000400004081B200000400004086
4298:100C800081B200000400004081B200000400004076
4299:100C900081B200000400004081B200000400004066
4300:100CA00081B200000400004081B200000400004056
4301:100CB00081B200000400004081B200000400004046
4302:100CC00081B200000400004081B200000400004036
4303:100CD00081B200000400004081B200000400004026
4304:100CE00081B200000400004081B200000400004016
4305:100CF00081B200000400004081B200000400004006
4306:100D000081B200000400004081B2000004000040F5
4307:100D100081B200000400004081B2000004000040E5
4308:100D200081B200000400004081B2000004000040D5
4309:100D300081B200000400004081B2000004000040C5
4310:100D400081B200000400004081B2000004000040B5
4311:100D500081B200000400004081B2000004000040A5
4312:100D600081B200000400004081B200000400004095
4313:100D700081B200000400004081B200000400004085
4314:100D800081B200000400004081B200000400004075
4315:100D900081B200000400004081B200000400004065
4316:100DA00081B200000400004081B200000400004055
4317:100DB00081B200000400004081B200000400004045
4318:100DC00081B200000400004081B200000400004035
4319:100DD00081B200000400004081B200000400004025
4320:100DE00081B200000400004081B200000400004015
4321:100DF00081B200000400004081B200000400004005
4322:100E000081B200000400004081B2000004000040F4
4323:100E100081B200000400004081B2000004000040E4
4324:100E200081B200000400004081B2000004000040D4
4325:100E300081B200000400004081B2000004000040C4
4326:100E400081B200000400004081B2000004000040B4
4327:100E500081B200000400004081B2000004000040A4
4328:100E600081B200000400004081B200000400004094
4329:100E700081B200000400004081B200000400004084
4330:100E800081B200000400004081B200000400004074
4331:100E900081B200000400004081B200000400004064
4332:100EA00081B200000400004081B200000400004054
4333:100EB00081B200000400004081B200000400004044
4334:100EC00081B200000400004081B200000400004034
4335:100ED00081B200000400004081B200000400004024
4336:100EE00081B200000400004081B200000400004014
4337:100EF00081B200000400004081B200000400004004
4338:100F000081B200000400004081B2000004000040F3
4339:100F100081B200000400004081B2000004000040E3
4340:100F200081B200000400004081B2000004000040D3
4341:100F300081B200000400004081B2000004000040C3
4342:100F400081B200000400004081B2000004000040B3
4343:100F500081B200000400004081B2000004000040A3
4344:100F600081B200000400004081B200000400004093
4345:100F700081B200000400004081B200000400004083
4346:100F800081B200000400004081B200000400004073
4347:100F900081B200000400004081B200000400004063
4348:100FA00081B200000400004081B200000400004053
4349:100FB00081B200000400004081B200000400004043
4350:100FC00081B200000400004081B200000400004033
4351:100FD00081B200000400004081B200000400004023
4352:100FE00081B200000400004081B200000400004013
4353:100FF00081B200000400004081B200000400004003
4354:1010000081B200000400004081B2000004000040F2
4355:1010100081B200000400004081B2000004000040E2
4356:1010200081B200000400004081B2000004000040D2
4357:1010300081B200000400004081B2000004000040C2
4358:1010400081B200000400004081B2000004000040B2
4359:1010500081B200000400004081B2000004000040A2
4360:1010600081B200000400004081B200000400004092
4361:1010700081B200000400004081B200000400004082
4362:1010800081B200000400004081B200000400004072
4363:1010900081B200000400004081B200000400004062
4364:1010A00081B200000400004081B200000400004052
4365:1010B00081B200000400004081B200000400004042
4366:1010C00081B200000400004081B200000400004032
4367:1010D00081B200000400004081B200000400004022
4368:1010E00081B200000400004081B200000400004012
4369:1010F00081B200000400004081B200000400004002
4370:1011000081B200000400004081B2000004000040F1
4371:1011100081B200000400004081B2000004000040E1
4372:1011200081B200000400004081B2000004000040D1
4373:1011300081B200000400004081B2000004000040C1
4374:1011400081B200000400004081B2000004000040B1
4375:1011500081B200000400004081B2000004000040A1
4376:1011600081B200000400004081B200000400004091
4377:1011700081B200000400004081B200000400004081
4378:1011800081B200000400004081B200000400004071
4379:1011900081B200000400004081B200000400004061
4380:1011A00081B200000400004081B200000400004051
4381:1011B00081B200000400004081B200000400004041
4382:1011C00081B200000400004081B200000400004031
4383:1011D00081B200000400004081B200000400004021
4384:1011E00081B200000400004081B200000400004011
4385:1011F00081B200000400004081B200000400004001
4386:1012000081B200000400004081B2000004000040F0
4387:1012100081B200000400004081B2000004000040E0
4388:1012200081B200000400004081B2000004000040D0
4389:1012300081B200000400004081B2000004000040C0
4390:1012400081B200000400004081B2000004000040B0
4391:1012500081B200000400004081B2000004000040A0
4392:1012600081B200000400004081B200000400004090
4393:1012700081B200000400004081B200000400004080
4394:1012800081B200000400004081B200000400004070
4395:1012900081B200000400004081B200000400004060
4396:1012A00081B200000400004081B200000400004050
4397:1012B00081B200000400004081B200000400004040
4398:1012C00081B200000400004081B200000400004030
4399:1012D00081B200000400004081B200000400004020
4400:1012E00081B200000400004081B200000400004010
4401:1012F00081B200000400004081B200000400004000
4402:1013000081B200000400004081B2000004000040EF
4403:1013100081B200000400004081B2000004000040DF
4404:1013200081B200000400004081B2000004000040CF
4405:1013300081B200000400004081B2000004000040BF
4406:1013400081B200000400004081B2000004000040AF
4407:1013500081B200000400004081B20000040000409F
4408:1013600081B200000400004081B20000040000408F
4409:1013700081B200000400004081B20000040000407F
4410:1013800081B200000400004081B20000040000406F
4411:1013900081B200000400004081B20000040000405F
4412:1013A00081B200000400004081B20000040000404F
4413:1013B00081B200000400004081B20000040000403F
4414:1013C00081B200000400004081B20000040000402F
4415:1013D00081B200000400004081B20000040000401F
4416:1013E00081B200000400004081B20000040000400F
4417:1013F00081B200000400004081B2000004000040FF
4418:1014000081B200000400004081B2000004000040EE
4419:1014100081B200000400004081B2000004000040DE
4420:1014200081B200000400004081B2000004000040CE
4421:1014300081B200000400004081B2000004000040BE
4422:1014400081B200000400004081B2000004000040AE
4423:1014500081B200000400004081B20000040000409E
4424:1014600081B200000400004081B20000040000408E
4425:1014700081B200000400004081B20000040000407E
4426:1014800081B200000400004081B20000040000406E
4427:1014900081B200000400004081B20000040000405E
4428:1014A00081B200000400004081B20000040000404E
4429:1014B00081B200000400004081B20000040000403E
4430:1014C00081B200000400004081B20000040000402E
4431:1014D00081B200000400004081B20000040000401E
4432:1014E00081B200000400004081B20000040000400E
4433:1014F00081B200000400004081B2000004000040FE
4434:1015000081B200000400004081B2000004000040ED
4435:1015100081B200000400004081B2000004000040DD
4436:1015200081B200000400004081B2000004000040CD
4437:1015300081B200000400004081B2000004000040BD
4438:1015400081B200000400004081B2000004000040AD
4439:1015500081B200000400004081B20000040000409D
4440:1015600081B200000400004081B20000040000408D
4441:1015700081B200000400004081B20000040000407D
4442:1015800081B200000400004081B20000040000406D
4443:1015900081B200000400004081B20000040000405D
4444:1015A00081B200000400004081B20000040000404D
4445:1015B00081B200000400004081B20000040000403D
4446:1015C00081B200000400004081B20000040000402D
4447:1015D00081B200000400004081B20000040000401D
4448:1015E00081B200000400004081B20000040000400D
4449:1015F00081B200000400004081B2000004000040FD
4450:1016000081B200000400004081B2000004000040EC
4451:1016100081B200000400004081B2000004000040DC
4452:1016200081B200000400004081B2000004000040CC
4453:1016300081B200000400004081B2000004000040BC
4454:1016400081B200000400004081B2000004000040AC
4455:1016500081B200000400004081B20000040000409C
4456:1016600081B200000400004081B20000040000408C
4457:1016700081B200000400004081B20000040000407C
4458:1016800081B200000400004081B20000040000406C
4459:1016900081B200000400004081B20000040000405C
4460:1016A00081B200000400004081B20000040000404C
4461:1016B00081B200000400004081B20000040000403C
4462:1016C00081B200000400004081B20000040000402C
4463:1016D00081B200000400004081B20000040000401C
4464:1016E00081B200000400004081B20000040000400C
4465:1016F00081B200000400004081B2000004000040FC
4466:1017000081B200000400004081B2000004000040EB
4467:1017100081B200000400004081B2000004000040DB
4468:1017200081B200000400004081B2000004000040CB
4469:1017300081B200000400004081B2000004000040BB
4470:1017400081B200000400004081B2000004000040AB
4471:1017500081B200000400004081B20000040000409B
4472:1017600081B200000400004081B20000040000408B
4473:1017700081B200000400004081B20000040000407B
4474:1017800081B200000400004081B20000040000406B
4475:1017900081B200000400004081B20000040000405B
4476:1017A00081B200000400004081B20000040000404B
4477:1017B00081B200000400004081B20000040000403B
4478:1017C00081B200000400004081B20000040000402B
4479:1017D00081B200000400004081B20000040000401B
4480:1017E00081B200000400004081B20000040000400B
4481:1017F00081B200000400004081B2000004000040FB
4482:1018000081B200000400004081B2000004000040EA
4483:1018100081B200000400004081B2000004000040DA
4484:1018200081B200000400004081B2000004000040CA
4485:1018300081B200000400004081B2000004000040BA
4486:1018400081B200000400004081B2000004000040AA
4487:1018500081B200000400004081B20000040000409A
4488:1018600081B200000400004081B20000040000408A
4489:1018700081B200000400004081B20000040000407A
4490:1018800081B200000400004081B20000040000406A
4491:1018900081B200000400004081B20000040000405A
4492:1018A00081B200000400004081B20000040000404A
4493:1018B00081B200000400004081B20000040000403A
4494:1018C00081B200000400004081B20000040000402A
4495:1018D00081B200000400004081B20000040000401A
4496:1018E00081B200000400004081B20000040000400A
4497:1018F00081B200000400004081B2000004000040FA
4498:1019000081B200000400004081B2000004000040E9
4499:1019100081B200000400004081B2000004000040D9
4500:1019200081B200000400004081B2000004000040C9
4501:1019300081B200000400004081B2000004000040B9
4502:1019400081B200000400004081B2000004000040A9
4503:1019500081B200000400004081B200000400004099
4504:1019600081B200000400004081B200000400004089
4505:1019700081B200000400004081B200000400004079
4506:1019800081B200000400004081B200000400004069
4507:1019900081B200000400004081B200000400004059
4508:1019A00081B200000400004081B200000400004049
4509:1019B00081B200000400004081B200000400004039
4510:1019C00081B200000400004081B200000400004029
4511:1019D00081B200000400004081B200000400004019
4512:1019E00081B200000400004081B200000400004009
4513:1019F00081B200000400004081B2000004000040F9
4514:101A000081B200000400004081B2000004000040E8
4515:101A100081B200000400004081B2000004000040D8
4516:101A200081B200000400004081B2000004000040C8
4517:101A300081B200000400004081B2000004000040B8
4518:101A400081B200000400004081B2000004000040A8
4519:101A500081B200000400004081B200000400004098
4520:101A600081B200000400004081B200000400004088
4521:101A700081B200000400004081B200000400004078
4522:101A800081B200000400004081B200000400004068
4523:101A900081B200000400004081B200000400004058
4524:101AA00081B200000400004081B200000400004048
4525:101AB00081B200000400004081B200000400004038
4526:101AC00081B200000400004081B200000400004028
4527:101AD00081B200000400004081B200000400004018
4528:101AE00081B200000400004081B200000400004008
4529:101AF00081B200000400004081B2000004000040F8
4530:101B000081B200000400004081B2000004000040E7
4531:101B100081B200000400004081B2000004000040D7
4532:101B200081B200000400004081B2000004000040C7
4533:101B300081B200000400004081B2000004000040B7
4534:101B400081B200000400004081B2000004000040A7
4535:101B500081B200000400004081B200000400004097
4536:101B600081B200000400004081B200000400004087
4537:101B700081B200000400004081B200000400004077
4538:101B800081B200000400004081B200000400004067
4539:101B900081B200000400004081B200000400004057
4540:101BA00081B200000400004081B200000400004047
4541:101BB00081B200000400004081B200000400004037
4542:101BC00081B200000400004081B200000400004027
4543:101BD00081B200000400004081B200000400004017
4544:101BE00081B200000400004081B200000400004007
4545:101BF00081B200000400004081B2000004000040F7
4546:101C000081B200000400004081B2000004000040E6
4547:101C100081B200000400004081B2000004000040D6
4548:101C200081B200000400004081B2000004000040C6
4549:101C300081B200000400004081B2000004000040B6
4550:101C400081B200000400004081B2000004000040A6
4551:101C500081B200000400004081B200000400004096
4552:101C600081B200000400004081B200000400004086
4553:101C700081B200000400004081B200000400004076
4554:101C800081B200000400004081B200000400004066
4555:101C900081B200000400004081B200000400004056
4556:101CA00081B200000400004081B200000400004046
4557:101CB00081B200000400004081B200000400004036
4558:101CC00081B200000400004081B200000400004026
4559:101CD00081B200000400004081B200000400004016
4560:101CE00081B200000400004081B200000400004006
4561:101CF00081B200000400004081B2000004000040F6
4562:101D000081B200000400004081B2000004000040E5
4563:101D100081B200000400004081B2000004000040D5
4564:101D200081B200000400004081B2000004000040C5
4565:101D300081B200000400004081B2000004000040B5
4566:101D400081B200000400004081B2000004000040A5
4567:101D500081B200000400004081B200000400004095
4568:101D600081B200000400004081B200000400004085
4569:101D700081B200000400004081B200000400004075
4570:101D800081B200000400004081B200000400004065
4571:101D900081B200000400004081B200000400004055
4572:101DA00081B200000400004081B200000400004045
4573:101DB00081B200000400004081B200000400004035
4574:101DC00081B200000400004081B200000400004025
4575:101DD00081B200000400004081B200000400004015
4576:101DE00081B200000400004081B200000400004005
4577:101DF00081B200000400004081B2000004000040F5
4578:101E000081B200000400004081B2000004000040E4
4579:101E100081B200000400004081B2000004000040D4
4580:101E200081B200000400004081B2000004000040C4
4581:101E300081B200000400004081B2000004000040B4
4582:101E400081B200000400004081B2000004000040A4
4583:101E500081B200000400004081B200000400004094
4584:101E600081B200000400004081B200000400004084
4585:101E700081B200000400004081B200000400004074
4586:101E800081B200000400004081B200000400004064
4587:101E900081B200000400004081B200000400004054
4588:101EA00081B200000400004081B200000400004044
4589:101EB00081B200000400004081B200000400004034
4590:101EC00081B200000400004081B200000400004024
4591:101ED00081B200000400004081B200000400004014
4592:101EE00081B200000400004081B200000400004004
4593:101EF00081B200000400004081B2000004000040F4
4594:101F000081B200000400004081B2000004000040E3
4595:101F100081B200000400004081B2000004000040D3
4596:101F200081B200000400004081B2000004000040C3
4597:101F300081B200000400004081B2000004000040B3
4598:101F400081B200000400004081B2000004000040A3
4599:101F500081B200000400004081B200000400004093
4600:101F600081B200000400004081B200000400004083
4601:101F700081B200000400004081B200000400004073
4602:101F800081B200000400004081B200000400004063
4603:101F900081B200000400004081B200000400004053
4604:101FA00081B200000400004081B200000400004043
4605:101FB00081B200000400004081B200000400004033
4606:101FC00081B200000400004081B200000400004023
4607:101FD00081B200000400004081B200000400004013
4608:101FE00081B200000400004081B200000400004003
4609:101FF00081B200000400004081B2000004000040F3
4610:1020000081B200000400004081B2000004000040E2
4611:1020100081B200000400004081B2000004000040D2
4612:1020200081B200000400004081B2000004000040C2
4613:1020300081B200000400004081B2000004000040B2
4614:1020400081B200000400004081B2000004000040A2
4615:1020500081B200000400004081B200000400004092
4616:1020600081B200000400004081B200000400004082
4617:1020700081B200000400004081B200000400004072
4618:1020800081B200000400004081B200000400004062
4619:1020900081B200000400004081B200000400004052
4620:1020A00081B200000400004081B200000400004042
4621:1020B00081B200000400004081B200000400004032
4622:1020C00081B200000400004081B200000400004022
4623:1020D00081B200000400004081B200000400004012
4624:1020E00081B200000400004081B200000400004002
4625:1020F00081B200000400004081B2000004000040F2
4626:1021000081B200000400004081B2000004000040E1
4627:1021100081B200000400004081B2000004000040D1
4628:1021200081B200000400004081B2000004000040C1
4629:1021300081B200000400004081B2000004000040B1
4630:1021400081B200000400004081B2000004000040A1
4631:1021500081B200000400004081B200000400004091
4632:1021600081B200000400004081B200000400004081
4633:1021700081B200000400004081B200000400004071
4634:1021800081B200000400004081B200000400004061
4635:1021900081B200000400004081B200000400004051
4636:1021A00081B200000400004081B200000400004041
4637:1021B00081B200000400004081B200000400004031
4638:1021C00081B200000400004081B200000400004021
4639:1021D00081B200000400004081B200000400004011
4640:1021E00081B200000400004081B200000400004001
4641:1021F00081B200000400004081B2000004000040F1
4642:1022000081B200000400004081B2000004000040E0
4643:1022100081B200000400004081B2000004000040D0
4644:1022200081B200000400004081B2000004000040C0
4645:1022300081B200000400004081B2000004000040B0
4646:1022400081B200000400004081B2000004000040A0
4647:1022500081B200000400004081B200000400004090
4648:1022600081B200000400004081B200000400004080
4649:1022700081B200000400004081B200000400004070
4650:1022800081B200000400004081B200000400004060
4651:1022900081B200000400004081B200000400004050
4652:1022A00081B200000400004081B200000400004040
4653:1022B00081B200000400004081B200000400004030
4654:1022C00081B200000400004081B200000400004020
4655:1022D00081B200000400004081B200000400004010
4656:1022E00081B200000400004081B200000400004000
4657:1022F00081B200000400004081B2000004000040F0
4658:1023000081B200000400004081B2000004000040DF
4659:1023100081B200000400004081B2000004000040CF
4660:1023200081B200000400004081B2000004000040BF
4661:1023300081B200000400004081B2000004000040AF
4662:1023400081B200000400004081B20000040000409F
4663:1023500081B200000400004081B20000040000408F
4664:1023600081B200000400004081B20000040000407F
4665:1023700081B200000400004081B20000040000406F
4666:1023800081B200000400004081B20000040000405F
4667:1023900081B200000400004081B20000040000404F
4668:1023A00081B200000400004081B20000040000403F
4669:1023B00081B200000400004081B20000040000402F
4670:1023C00081B200000400004081B20000040000401F
4671:1023D00081B200000400004081B20000040000400F
4672:1023E00081B200000400004081B2000004000040FF
4673:1023F00081B200000400004081B2000004000040EF
4674:1024000081B200000400004081B2000004000040DE
4675:1024100081B200000400004081B2000004000040CE
4676:1024200081B200000400004081B2000004000040BE
4677:1024300081B200000400004081B2000004000040AE
4678:1024400081B200000400004081B20000040000409E
4679:1024500081B200000400004081B20000040000408E
4680:1024600081B200000400004081B20000040000407E
4681:1024700081B200000400004081B20000040000406E
4682:1024800081B200000400004081B20000040000405E
4683:1024900081B200000400004081B20000040000404E
4684:1024A00081B200000400004081B20000040000403E
4685:1024B00081B200000400004081B20000040000402E
4686:1024C00081B200000400004081B20000040000401E
4687:1024D00081B200000400004081B20000040000400E
4688:1024E00081B200000400004081B2000004000040FE
4689:1024F00081B200000400004081B2000004000040EE
4690:1025000081B200000400004081B2000004000040DD
4691:1025100081B200000400004081B2000004000040CD
4692:1025200081B200000400004081B2000004000040BD
4693:1025300081B200000400004081B2000004000040AD
4694:1025400081B200000400004081B20000040000409D
4695:1025500081B200000400004081B20000040000408D
4696:1025600081B200000400004081B20000040000407D
4697:1025700081B200000400004081B20000040000406D
4698:1025800081B200000400004081B20000040000405D
4699:1025900081B200000400004081B20000040000404D
4700:1025A00081B200000400004081B20000040000403D
4701:1025B00081B200000400004081B20000040000402D
4702:1025C00081B200000400004081B20000040000401D
4703:1025D00081B200000400004081B20000040000400D
4704:1025E00081B200000400004081B2000004000040FD
4705:1025F00081B200000400004081B2000004000040ED
4706:1026000081B200000400004081B2000004000040DC
4707:1026100081B200000400004081B2000004000040CC
4708:1026200081B200000400004081B2000004000040BC
4709:1026300081B200000400004081B2000004000040AC
4710:1026400081B200000400004081B20000040000409C
4711:1026500081B200000400004081B20000040000408C
4712:1026600081B200000400004081B20000040000407C
4713:1026700081B200000400004081B20000040000406C
4714:1026800081B200000400004081B20000040000405C
4715:1026900081B200000400004081B20000040000404C
4716:1026A00081B200000400004081B20000040000403C
4717:1026B00081B200000400004081B20000040000402C
4718:1026C00081B200000400004081B20000040000401C
4719:1026D00081B200000400004081B20000040000400C
4720:1026E00081B200000400004081B2000004000040FC
4721:1026F00081B200000400004081B2000004000040EC
4722:1027000081B200000400004081B2000004000040DB
4723:1027100081B200000400004081B2000004000040CB
4724:1027200081B200000400004081B2000004000040BB
4725:1027300081B200000400004081B2000004000040AB
4726:1027400081B200000400004081B20000040000409B
4727:1027500081B200000400004081B20000040000408B
4728:1027600081B200000400004081B20000040000407B
4729:1027700081B200000400004081B20000040000406B
4730:1027800081B200000400004081B20000040000405B
4731:1027900081B200000400004081B20000040000404B
4732:1027A00081B200000400004081B20000040000403B
4733:1027B00081B200000400004081B20000040000402B
4734:1027C00081B200000400004081B20000040000401B
4735:1027D00081B200000400004081B20000040000400B
4736:1027E00081B200000400004081B2000004000040FB
4737:1027F00081B200000400004081B2000004000040EB
4738:1028000081B200000400004081B2000004000040DA
4739:1028100081B200000400004081B2000004000040CA
4740:1028200081B200000400004081B2000004000040BA
4741:1028300081B200000400004081B2000004000040AA
4742:1028400081B200000400004081B20000040000409A
4743:1028500081B200000400004081B20000040000408A
4744:1028600081B200000400004081B20000040000407A
4745:1028700081B200000400004081B20000040000406A
4746:1028800081B200000400004081B20000040000405A
4747:1028900081B200000400004081B20000040000404A
4748:1028A00081B200000400004081B20000040000403A
4749:1028B00081B200000400004081B20000040000402A
4750:1028C00081B200000400004081B20000040000401A
4751:1028D00081B200000400004081B20000040000400A
4752:1028E00081B200000400004081B2000004000040FA
4753:1028F00081B200000400004081B2000004000040EA
4754:1029000081B200000400004081B2000004000040D9
4755:1029100081B200000400004081B2000004000040C9
4756:1029200081B200000400004081B2000004000040B9
4757:1029300081B200000400004081B2000004000040A9
4758:1029400081B200000400004081B200000400004099
4759:1029500081B200000400004081B200000400004089
4760:1029600081B200000400004081B200000400004079
4761:1029700081B200000400004081B200000400004069
4762:1029800081B200000400004081B200000400004059
4763:1029900081B200000400004081B200000400004049
4764:1029A00081B200000400004081B200000400004039
4765:1029B00081B200000400004081B200000400004029
4766:1029C00081B200000400004081B200000400004019
4767:1029D00081B200000400004081B200000400004009
4768:1029E00081B200000400004081B2000004000040F9
4769:1029F00081B200000400004081B2000004000040E9
4770:102A000081B200000400004081B2000004000040D8
4771:102A100081B200000400004081B2000004000040C8
4772:102A200081B200000400004081B2000004000040B8
4773:102A300081B200000400004081B2000004000040A8
4774:102A400081B200000400004081B200000400004098
4775:102A500081B200000400004081B200000400004088
4776:102A600081B200000400004081B200000400004078
4777:102A700081B200000400004081B200000400004068
4778:102A800081B200000400004081B200000400004058
4779:102A900081B200000400004081B200000400004048
4780:102AA00081B200000400004081B200000400004038
4781:102AB00081B200000400004081B200000400004028
4782:102AC00081B200000400004081B200000400004018
4783:102AD00081B200000400004081B200000400004008
4784:102AE00081B200000400004081B2000004000040F8
4785:102AF00081B200000400004081B2000004000040E8
4786:102B000081B200000400004081B2000004000040D7
4787:102B100081B200000400004081B2000004000040C7
4788:102B200081B200000400004081B2000004000040B7
4789:102B300081B200000400004081B2000004000040A7
4790:102B400081B200000400004081B200000400004097
4791:102B500081B200000400004081B200000400004087
4792:102B600081B200000400004081B200000400004077
4793:102B700081B200000400004081B200000400004067
4794:102B800081B200000400004081B200000400004057
4795:102B900081B200000400004081B200000400004047
4796:102BA00081B200000400004081B200000400004037
4797:102BB00081B200000400004081B200000400004027
4798:102BC00081B200000400004081B200000400004017
4799:102BD00081B200000400004081B200000400004007
4800:102BE00081B200000400004081B2000004000040F7
4801:102BF00081B200000400004081B2000004000040E7
4802:102C000081B200000400004081B2000004000040D6
4803:102C100081B200000400004081B2000004000040C6
4804:102C200081B200000400004081B2000004000040B6
4805:102C300081B200000400004081B2000004000040A6
4806:102C400081B200000400004081B200000400004096
4807:102C500081B200000400004081B200000400004086
4808:102C600081B200000400004081B200000400004076
4809:102C700081B200000400004081B200000400004066
4810:102C800081B200000400004081B200000400004056
4811:102C900081B200000400004081B200000400004046
4812:102CA00081B200000400004081B200000400004036
4813:102CB00081B200000400004081B200000400004026
4814:102CC00081B200000400004081B200000400004016
4815:102CD00081B200000400004081B200000400004006
4816:102CE00081B200000400004081B2000004000040F6
4817:102CF00081B200000400004081B2000004000040E6
4818:102D000081B200000400004081B2000004000040D5
4819:102D100081B200000400004081B2000004000040C5
4820:102D200081B200000400004081B2000004000040B5
4821:102D300081B200000400004081B2000004000040A5
4822:102D400081B200000400004081B200000400004095
4823:102D500081B200000400004081B200000400004085
4824:102D600081B200000400004081B200000400004075
4825:102D700081B200000400004081B200000400004065
4826:102D800081B200000400004081B200000400004055
4827:102D900081B200000400004081B200000400004045
4828:102DA00081B200000400004081B200000400004035
4829:102DB00081B200000400004081B200000400004025
4830:102DC00081B200000400004081B200000400004015
4831:102DD00081B200000400004081B200000400004005
4832:102DE00081B200000400004081B2000004000040F5
4833:102DF00081B200000400004081B2000004000040E5
4834:102E000081B200000400004081B2000004000040D4
4835:102E100081B200000400004081B2000004000040C4
4836:102E200081B200000400004081B2000004000040B4
4837:102E300081B200000400004081B2000004000040A4
4838:102E400081B200000400004081B200000400004094
4839:102E500081B200000400004081B200000400004084
4840:102E600081B200000400004081B200000400004074
4841:102E700081B200000400004081B200000400004064
4842:102E800081B200000400004081B200000400004054
4843:102E900081B200000400004081B200000400004044
4844:102EA00081B200000400004081B200000400004034
4845:102EB00081B200000400004081B200000400004024
4846:102EC00081B200000400004081B200000400004014
4847:102ED00081B200000400004081B200000400004004
4848:102EE00081B200000400004081B2000004000040F4
4849:102EF00081B200000400004081B2000004000040E4
4850:102F000081B200000400004081B2000004000040D3
4851:102F100081B200000400004081B2000004000040C3
4852:102F200081B200000400004081B2000004000040B3
4853:102F300081B200000400004081B2000004000040A3
4854:102F400081B200000400004081B200000400004093
4855:102F500081B200000400004081B200000400004083
4856:102F600081B200000400004081B200000400004073
4857:102F700081B200000400004081B200000400004063
4858:102F800081B200000400004081B200000400004053
4859:102F900081B200000400004081B200000400004043
4860:102FA00081B200000400004081B200000400004033
4861:102FB00081B200000400004081B200000400004023
4862:102FC00081B200000400004081B200000400004013
4863:102FD00081B200000400004081B200000400004003
4864:102FE00081B200000400004081B2000004000040F3
4865:102FF00081B200000400004081B2000004000040E3
4866:1030000081B200000400004081B2000004000040D2
4867:1030100081B200000400004081B2000004000040C2
4868:1030200081B200000400004081B2000004000040B2
4869:1030300081B200000400004081B2000004000040A2
4870:1030400081B200000400004081B200000400004092
4871:1030500081B200000400004081B200000400004082
4872:1030600081B200000400004081B200000400004072
4873:1030700081B200000400004081B200000400004062
4874:1030800081B200000400004081B200000400004052
4875:1030900081B200000400004081B200000400004042
4876:1030A00081B200000400004081B200000400004032
4877:1030B00081B200000400004081B200000400004022
4878:1030C00081B200000400004081B200000400004012
4879:1030D00081B200000400004081B200000400004002
4880:1030E00081B200000400004081B2000004000040F2
4881:1030F00081B200000400004081B2000004000040E2
4882:1031000081B200000400004081B2000004000040D1
4883:1031100081B200000400004081B2000004000040C1
4884:1031200081B200000400004081B2000004000040B1
4885:1031300081B200000400004081B2000004000040A1
4886:1031400081B200000400004081B200000400004091
4887:1031500081B200000400004081B200000400004081
4888:1031600081B200000400004081B200000400004071
4889:1031700081B200000400004081B200000400004061
4890:1031800081B200000400004081B200000400004051
4891:1031900081B200000400004081B200000400004041
4892:1031A00081B200000400004081B200000400004031
4893:1031B00081B200000400004081B200000400004021
4894:1031C00081B200000400004081B200000400004011
4895:1031D00081B200000400004081B200000400004001
4896:1031E00081B200000400004081B2000004000040F1
4897:1031F00081B200000400004081B2000004000040E1
4898:1032000081B200000400004081B2000004000040D0
4899:1032100081B200000400004081B2000004000040C0
4900:1032200081B200000400004081B2000004000040B0
4901:1032300081B200000400004081B2000004000040A0
4902:1032400081B200000400004081B200000400004090
4903:1032500081B200000400004081B200000400004080
4904:1032600081B200000400004081B200000400004070
4905:1032700081B200000400004081B200000400004060
4906:1032800081B200000400004081B200000400004050
4907:1032900081B200000400004081B200000400004040
4908:1032A00081B200000400004081B200000400004030
4909:1032B00081B200000400004081B200000400004020
4910:1032C00081B200000400004081B200000400004010
4911:1032D00081B200000400004081B200000400004000
4912:1032E00081B200000400004081B2000004000040F0
4913:1032F00081B200000400004081B2000004000040E0
4914:1033000081B200000400004081B2000004000040CF
4915:1033100081B200000400004081B2000004000040BF
4916:1033200081B200000400004081B2000004000040AF
4917:1033300081B200000400004081B20000040000409F
4918:1033400081B200000400004081B20000040000408F
4919:1033500081B200000400004081B20000040000407F
4920:1033600081B200000400004081B20000040000406F
4921:1033700081B200000400004081B20000040000405F
4922:1033800081B200000400004081B20000040000404F
4923:1033900081B200000400004081B20000040000403F
4924:1033A00081B200000400004081B20000040000402F
4925:1033B00081B200000400004081B20000040000401F
4926:1033C00081B200000400004081B20000040000400F
4927:1033D00081B200000400004081B2000004000040FF
4928:1033E00081B200000400004081B2000004000040EF
4929:1033F00081B200000400004081B2000004000040DF
4930:1034000081B200000400004081B2000004000040CE
4931:1034100081B200000400004081B2000004000040BE
4932:1034200081B200000400004081B2000004000040AE
4933:1034300081B200000400004081B20000040000409E
4934:1034400081B200000400004081B20000040000408E
4935:1034500081B200000400004081B20000040000407E
4936:1034600081B200000400004081B20000040000406E
4937:1034700081B200000400004081B20000040000405E
4938:1034800081B200000400004081B20000040000404E
4939:1034900081B200000400004081B20000040000403E
4940:1034A00081B200000400004081B20000040000402E
4941:1034B00081B200000400004081B20000040000401E
4942:1034C00081B200000400004081B20000040000400E
4943:1034D00081B200000400004081B2000004000040FE
4944:1034E00081B200000400004081B2000004000040EE
4945:1034F00081B200000400004081B2000004000040DE
4946:1035000081B200000400004081B2000004000040CD
4947:1035100081B200000400004081B2000004000040BD
4948:1035200081B200000400004081B2000004000040AD
4949:1035300081B200000400004081B20000040000409D
4950:1035400081B200000400004081B20000040000408D
4951:1035500081B200000400004081B20000040000407D
4952:1035600081B200000400004081B20000040000406D
4953:1035700081B200000400004081B20000040000405D
4954:1035800081B200000400004081B20000040000404D
4955:1035900081B200000400004081B20000040000403D
4956:1035A00081B200000400004081B20000040000402D
4957:1035B00081B200000400004081B20000040000401D
4958:1035C00081B200000400004081B20000040000400D
4959:1035D00081B200000400004081B2000004000040FD
4960:1035E00081B200000400004081B2000004000040ED
4961:1035F00081B200000400004081B2000004000040DD
4962:1036000081B200000400004081B2000004000040CC
4963:1036100081B200000400004081B2000004000040BC
4964:1036200081B200000400004081B2000004000040AC
4965:1036300081B200000400004081B20000040000409C
4966:1036400081B200000400004081B20000040000408C
4967:1036500081B200000400004081B20000040000407C
4968:1036600081B200000400004081B20000040000406C
4969:1036700081B200000400004081B20000040000405C
4970:1036800081B200000400004081B20000040000404C
4971:1036900081B200000400004081B20000040000403C
4972:1036A00081B200000400004081B20000040000402C
4973:1036B00081B200000400004081B20000040000401C
4974:1036C00081B200000400004081B20000040000400C
4975:1036D00081B200000400004081B2000004000040FC
4976:1036E00081B200000400004081B2000004000040EC
4977:1036F00081B200000400004081B2000004000040DC
4978:1037000081B200000400004081B2000004000040CB
4979:1037100081B200000400004081B2000004000040BB
4980:1037200081B200000400004081B2000004000040AB
4981:1037300081B200000400004081B20000040000409B
4982:1037400081B200000400004081B20000040000408B
4983:1037500081B200000400004081B20000040000407B
4984:1037600081B200000400004081B20000040000406B
4985:1037700081B200000400004081B20000040000405B
4986:1037800081B200000400004081B20000040000404B
4987:1037900081B200000400004081B20000040000403B
4988:1037A00081B200000400004081B20000040000402B
4989:1037B00081B200000400004081B20000040000401B
4990:1037C00081B200000400004081B20000040000400B
4991:1037D00081B200000400004081B2000004000040FB
4992:1037E00081B200000400004081B2000004000040EB
4993:1037F00081B200000400004081B2000004000040DB
4994:1038000081B200000400004081B2000004000040CA
4995:1038100081B200000400004081B2000004000040BA
4996:1038200081B200000400004081B2000004000040AA
4997:1038300081B200000400004081B20000040000409A
4998:1038400081B200000400004081B20000040000408A
4999:1038500081B200000400004081B20000040000407A
5000:1038600081B200000400004081B20000040000406A
5001:1038700081B200000400004081B20000040000405A
5002:1038800081B200000400004081B20000040000404A
5003:1038900081B200000400004081B20000040000403A
5004:1038A00081B200000400004081B20000040000402A
5005:1038B00081B200000400004081B20000040000401A
5006:1038C00081B200000400004081B20000040000400A
5007:1038D00081B200000400004081B2000004000040FA
5008:1038E00081B200000400004081B2000004000040EA
5009:1038F00081B200000400004081B2000004000040DA
5010:1039000081B200000400004081B2000004000040C9
5011:1039100081B200000400004081B2000004000040B9
5012:1039200081B200000400004081B2000004000040A9
5013:1039300081B200000400004081B200000400004099
5014:1039400081B200000400004081B200000400004089
5015:1039500081B200000400004081B200000400004079
5016:1039600081B200000400004081B200000400004069
5017:1039700081B200000400004081B200000400004059
5018:1039800081B200000400004081B200000400004049
5019:1039900081B200000400004081B200000400004039
5020:1039A00081B200000400004081B200000400004029
5021:1039B00081B200000400004081B200000400004019
5022:1039C00081B200000400004081B200000400004009
5023:1039D00081B200000400004081B2000004000040F9
5024:1039E00081B200000400004081B2000004000040E9
5025:1039F00081B200000400004081B2000004000040D9
5026:103A000081B200000400004081B2000004000040C8
5027:103A100081B200000400004081B2000004000040B8
5028:103A200081B200000400004081B2000004000040A8
5029:103A300081B200000400004081B200000400004098
5030:103A400081B200000400004081B200000400004088
5031:103A500081B200000400004081B200000400004078
5032:103A600081B200000400004081B200000400004068
5033:103A700081B200000400004081B200000400004058
5034:103A800081B200000400004081B200000400004048
5035:103A900081B200000400004081B200000400004038
5036:103AA00081B200000400004081B200000400004028
5037:103AB00081B200000400004081B200000400004018
5038:103AC00081B200000400004081B200000400004008
5039:103AD00081B200000400004081B2000004000040F8
5040:103AE00081B200000400004081B2000004000040E8
5041:103AF00081B200000400004081B2000004000040D8
5042:103B000081B200000400004081B2000004000040C7
5043:103B100081B200000400004081B2000004000040B7
5044:103B200081B200000400004081B2000004000040A7
5045:103B300081B200000400004081B200000400004097
5046:103B400081B200000400004081B200000400004087
5047:103B500081B200000400004081B200000400004077
5048:103B600081B200000400004081B200000400004067
5049:103B700081B200000400004081B200000400004057
5050:103B800081B200000400004081B200000400004047
5051:103B900081B200000400004081B200000400004037
5052:103BA00081B200000400004081B200000400004027
5053:103BB00081B200000400004081B200000400004017
5054:103BC00081B200000400004081B200000400004007
5055:103BD00081B200000400004081B2000004000040F7
5056:103BE00081B200000400004081B2000004000040E7
5057:103BF00081B200000400004081B2000004000040D7
5058:103C000081B200000400004081B2000004000040C6
5059:103C100081B200000400004081B2000004000040B6
5060:103C200081B200000400004081B2000004000040A6
5061:103C300081B200000400004081B200000400004096
5062:103C400081B200000400004081B200000400004086
5063:103C500081B200000400004081B200000400004076
5064:103C600081B200000400004081B200000400004066
5065:103C700081B200000400004081B200000400004056
5066:103C800081B200000400004081B200000400004046
5067:103C900081B200000400004081B200000400004036
5068:103CA00081B200000400004081B200000400004026
5069:103CB00081B200000400004081B200000400004016
5070:103CC00081B200000400004081B200000400004006
5071:103CD00081B200000400004081B2000004000040F6
5072:103CE00081B200000400004081B2000004000040E6
5073:103CF00081B200000400004081B2000004000040D6
5074:103D000081B200000400004081B2000004000040C5
5075:103D100081B200000400004081B2000004000040B5
5076:103D200081B200000400004081B2000004000040A5
5077:103D300081B200000400004081B200000400004095
5078:103D400081B200000400004081B200000400004085
5079:103D500081B20000AE9F00889AB00000AE9F00883C
5080:103D60009AB00000AE9F00889AB00000AE9F008815
5081:103D70009AB00000AE9F00889AB000000000008852
5082:103D80009AB00100AE9F414081320000B29F2240B4
5083:103D90007B6F00000000194081B20100AE9F00401F
5084:103DA00081B20000000019417BB30100000000A4B3
5085:103DB000C4B30100000000A1C6B3010000002FA29F
5086:103DC000C8B301000814004049990100A89F004DA4
5087:103DD0009ACC0100BB9F2640813200000000004CBD
5088:103DE00049C10100B99FA2419B500000BF9F808044
5089:103DF0008032000000005249FD9301000000004A9B
5090:103E0000FD930100C29F0042CD9300000000514A83
5091:103E1000FD93010000000049FD930100C29F004393
5092:103E2000CB9300000000504081B20100D29F0040BF
5093:103E300019990100000000F09AB001000000004450
5094:103E400049D10100000040F080B201000000414D66
5095:103E500080B20100CA9F00401999010000004C4047
5096:103E600081B201000000004449D10100000000F0CF
5097:103E70009AB001000000004D10B10000000000E207
5098:103E800049B10100000000E343B10100000000E47B
5099:103E900045B10100000000407BB301000000484F25
5100:103EA00040B10100D29F004081B2000004000040F8
5101:103EB00081B200000400004081B200000400004014
5102:103EC00081B200000400004081B200000400004004
5103:103ED00081B20000040000CB81C80100F4820040E0
5104:103EE000F29300004082004081B200004005004093
5105:103EF00081B200001806004081B20000F482004048
5106:103F000081B20000AF82004081B2000038810040E1
5107:103F100081B200003681004081B20000B8800040CC
5108:103F200081B200001A87004081B20000AF820040D9
5109:103F300081B20000F582004081B20000AB920040E7
5110:103F400081B20000F095004081B200007392004001
5111:103F500081B20000DF95004081B200004A9300402A
5112:103F600081B20000ED92004081B20000E792004073
5113:103F700081B200009A82004081B2000000008040BF
5114:103F800081B201000400004081B200000400004042
5115:103F900081B200000400004081B200000400004033
5116:103FA00081B200000400004081B200000400004023
5117:103FB00081B200000400004081B200000400004013
5118:103FC00081B200000400004081B200000400004003
5119:103FD00081B200000400004081B2000004000040F3
5120:103FE00081B200000400004081B2000004000040E3
5121:103FF00081B200000400004081B2000004000040D3
5122:1040000081B200000400004081B2000004000040C2
5123:0440100081B2000079
5124:00000001FF
diff --git a/firmware/slicoss/oasisrcvucode.sys.ihex b/firmware/slicoss/oasisrcvucode.sys.ihex
deleted file mode 100644
index 813bea4e133e..000000000000
--- a/firmware/slicoss/oasisrcvucode.sys.ihex
+++ /dev/null
@@ -1,162 +0,0 @@
1:10000000000200004775010004A01301001CB75B4B
2:10001000093000B65F01001C00000020183B783A50
3:10002000001CA27701001C071D017018AD7BF1FFB9
4:100030001CB37BA9AA1EB47B010C1CB57B0D061C4E
5:1000400000003064080C315A70040C315A80040CE2
6:10005000314E90040C314AA000092555C0040C31E2
7:1000600052B000E92455C004CCB3001C1CEB2D0198
8:10007000001C065632D408079D00001C7BB7020006
9:1000800010A00F31540906565EC004A0305403007E
10:10009000AC30550300CD033A001C7BB702001C6056
11:1000A0008E3154092925550300808E3154098C3036
12:1000B000910004471C01001CA00F3154090000648A
13:1000C0000004471C65C004471C5503006C30010048
14:1000D0001C4D3402001C7BB702001CA00F315409D8
15:1000E000C88337001C800100001C0000640004A0CD
16:1000F0000F305409000054C3047BFBF2001CCC33C6
17:100100000D001CB47BFD031C800E305409E0FB0580
18:10011000001C00008C0300B30F3154090000EC7088
19:10012000040000EC800400008C930061768DC30411
20:10013000C08D315409E07B00C01FA0FDC50100CC7B
21:100140003305001CD403003C1CD4D31B001CC0D3BB
22:1001500052001C00005C13048E8E3254095B805EDA
23:100160001304000000001C0000940100A00F315493
24:1001700009A00F315409C003FC7F1CA001A001009D
25:100180000000A40100A00F315409C003FC031CF5BA
26:100190007701001C267AE6051CA00F315409B30F25
27:1001A000315409B50202001CA00F3154097A7E02B5
28:1001B000001CB50202001C530F325409AF030100AA
29:1001C0001C7A0E325409B50202001C000002001C09
30:1001D000A03DAA11040000AC1104D4D352001CB5F8
31:1001E0003EB2010020FBFDFF1F802C6C0300B93ADA
32:1001F0009E0100753B02001CA71C010010DB83164A
33:10020000001CC71D21C104B93B8DC1048B2C01000A
34:100210001C6B2C35C1040000781100CB2C79C10473
35:10022000A00F315409A00F31540954D002001C49C9
36:1002300025B10100AB2C81C104A71D550300CC33AF
37:1002400009001CEB2D01001CEA2901001CA00F3144
38:100250005409AE0F315409A00F315409D407FC03DF
39:100260001C993A02001CBB3802001C003800001C1C
40:100270000000FC0104DB3B7E001CC71D01001C26A6
41:100280007AFA051C271D01001CB30F3154097A0EA0
42:10029000325409530F3254097A0E325409530F3233
43:1002A00054097A0E325409530F325409A00F3154B5
44:1002B000097A0602001C530F325409AF0301001CD7
45:1002C0007A0E325409530F3254097A0E32540953BC
46:1002D0000F3254097A0E325409530F3254097A0EF0
47:1002E000325409003D02001C0000581200CB2C01C2
48:1002F000001C753B02001CA71C010010CB2F050041
49:100300001C602C00001CC71CC90200A00F3154093E
50:10031000530702001C467ACA051C7A0E3254094063
51:10032000FA19001C0000880204467ACA051CA00FB6
52:10033000315409A00F315409A00F315409A00F31D5
53:100340005409B37B01C01F740E305409C0039C00D4
54:100350001C8000D802000000D802040000AC120586
55:10036000071D01001CD4D32B001CD4D352001C80C9
56:10037000767D13040000E00200A67B950310C79C65
57:1003800000001C802C00001C00006C0204000054C3
58:10039000C304AB2DD91205071DB5C2048B2D010076
59:1003A0001C692501001CA67B950310CB2F09001C9E
60:1003B000602C00001C0000480300530F3254094613
61:1003C0007ACA051C7A0E32540940FA19001C000042
62:1003D000100304467ACA051CB50F315409A00F3129
63:1003E000540973EC2A0304602C00001C000028034D
64:1003F00000C71C01001C0000281305071D01001C7C
65:10040000C0D722001C75567E1304602C00001CE728
66:100410001C450304E79C00001CA67B950310802C60
67:1004200000001C0000F80204000054C304B97B0162
68:10043000001C00008CC304CBAFFC071CCB2F0104B5
69:100440001CC79F80031C00008CC304CBAFFC071C9F
70:10045000CB2F0D041CC79F80031C00008CC304CB52
71:10046000AF00F81DCB2F01001DA67B95031CC79C78
72:100470008CC30400008C1305071D01001CC01DDC8B
73:10048000D308279DE40300A0EE46D400FB750914B1
74:1004900004207B06001CC01C1C04000000B0D30814
75:1004A000000000F400C0EFF2001C20255C14046082
76:1004B000B7D2030000000C1500CCB3FC031CCC33F6
77:1004C00005021C00000CC50460B70E050400000CFA
78:1004D000150400005CC404C01D98F304000068C447
79:1004E00004079D00001C1B74FDF304A67BF1031C94
80:1004F000A00F695409E07B00FC1F397F02001C0734
81:100500001D9DC304A67BAD031C000068C404E01C51
82:1005100000001C0000A40304CBAF00F81DCB2F018A
83:10052000101D0000ACC3040000AC0304CBAF00F806
84:100530001DCB2F01181DC79F000B1C0000ACC3046E
85:10054000FB7501001C071D01001CCCB3FC031CCC77
86:100550003301021C0000ACC304A01C00001CA0EE70
87:10056000A20304CBAFFC071CCB2F09041CFB7501B5
88:10057000001C0000ACC304CCB3FC031CCC33010250
89:100580001C00000CC5040000783405CCB3FC031C2F
90:10059000CC3315021C479D54C404000078440080ED
91:1005A0001D7C5404871D8D0400CE7601001CEF765F
92:1005B0009DC404A4778D2409E47601001CC476014F
93:1005C000001C0000985404D776015018F6760100FC
94:1005D0001C00000030180000000010CC3045C5049D
95:1005E000EB2D01001CEA2901001CC05901001CF57B
96:1005F0007729C504E030DC0400004CB00400204C36
97:10060000F404000000E80400CCB3FC031CCC330964
98:10061000021CEB2DB5C404CCB3FC031CCC33190273
99:100620001CEB2DB5C404CCB3FC031CCC330D021C55
100:10063000EB2DB5C404CCB3FC031CCC3311021CEB72
101:100640002DB5C404007B00801CAE7745050000007A
102:1006500004C004D38B00FC1F607A3C001C604CC0BB
103:100660000400C02F20051FE030B004008025B00436
104:1006700000B55BB10404692601001C6A2B01001C53
105:10068000801D00001CA925450500EE3000001CAFB0
106:10069000770105000000AC2404B45F014018079DF9
107:1006A000485504B77601001C967601001C471D01D1
108:1006B000001CA433016018A42F0160186477016046
109:1006C000182477016018447701001C648803001C1B
110:1006D000A43F01001CA43B01001C537B00C01CD3A1
111:1006E000CF1B001C534F02001CDACF00C01FD55790
112:1006F0000F001CD3D337001CD4530F001CE029007B
113:10070000001CF5D5B0050000009C5504775601008B
114:100710001C565301001C0000001018000004C00407
115:10072000F55501001C0000B45504775601001C5615
116:100730005301001C0000001018000004C004CB2F5F
117:10074000011810CB2F011010CB2F010810CB2F0157
118:100750000810CB2F012010CB2F012810CB2F010028
119:1007600010892561C2040000ECC204000054C304D7
120:10077000000054C304000054C304000060C204001D
121:1007800000ECC204000054C304000054C304000081
122:1007900054C304401C6CC004401C9CC004A7775583
123:1007A000C3040000C4C004271DF1C004000054C3EA
124:1007B00004000054C304000054C30400002CC60409
125:1007C00000002CC60400002CC60400002CC6040047
126:1007D000002CC60400002CC60400002CC604000037
127:1007E0002CC60400002CC60400002CC60400002CFB
128:1007F000C60400002CC60400002CC60400002CC651
129:100800000400002CC60400002CC60400002CC60402
130:1008100000002CC60400002CC60400002CC60400F6
131:10082000002CC60400002CC60400002CC6040000E6
132:100830002CC60400002CC60400002CC60400002CAA
133:10084000C60400002CC60400002CC60400002CC600
134:100850000400002CC60400002CC60400002CC604B2
135:1008600000002CC60400002CC60400002CC60400A6
136:10087000002CC60400002CC60400002CC604000096
137:100880002CC60400002CC60400002CC60400002C5A
138:10089000C60400002CC60400002CC60400002CC6B0
139:1008A0000400002CC60400002CC60400002CC60462
140:1008B00000002CC60400002CC60400002CC6040056
141:1008C000002CC60400002CC60400002CC604000046
142:1008D0002CC60400002CC60400002CC60400002C0A
143:1008E000C60400002CC60400002CC60400002CC660
144:1008F0000400002CC60400002CC60400002CC60412
145:1009000000002CC60400002CC60400002CC6040005
146:10091000002CC60400002CC60400002CC6040000F5
147:100920002CC60400002CC60400002CC60400002CB9
148:10093000C60400002CC60400002CC60400002CC60F
149:100940000400002CC60400002CC60400002CC604C1
150:1009500000002CC60400002CC60400002CC60400B5
151:10096000002CC60400002CC60400002CC6040000A5
152:100970002CC60400002CC60400002CC60400002C69
153:10098000C60400002CC60400002CC60400002CC6BF
154:100990000400002CC60400002CC60400002CC60471
155:1009A00000002CC60400002CC60400002CC6040065
156:1009B000002CC60400002CC60400002CC604000055
157:1009C0002CC60400002CC60400002CC60400002C19
158:1009D000C60400002CC60400002CC60400002CC66F
159:1009E0000400002CC60400002CC60400002CC60421
160:1009F00000002CC60400002CC60400002CC6040015
161:040A0000002CC604FC
162:00000001FF
diff --git a/firmware/sxg/saharadbgdownloadB.sys.ihex b/firmware/sxg/saharadbgdownloadB.sys.ihex
deleted file mode 100644
index e3016d34feee..000000000000
--- a/firmware/sxg/saharadbgdownloadB.sys.ihex
+++ /dev/null
@@ -1,3937 +0,0 @@
1:1000000002000000DCF500000C0000000000000011
2:10001000FF1F00000100000000000088824D293A07
3:1000200000000404000000800200009000000900AD
4:100030000000008002000090000009000000008025
5:100040000200009000000900000000800200009003
6:10005000000009000000008002000090000009007C
7:1000600000000080020000900000090000000080F5
8:1000700002000090000009000000008002000090D3
9:10008000FEFF0000000000AC020036320000360027
10:10009000000000A80200009200001613000000807B
11:1000A0000200009000001613000000800200009083
12:1000B00000001613000000800200009000001613DC
13:1000C0000000008002000090000016130000008075
14:1000D0000200009000002000000000D80F8028924D
15:1000E00000002100000000D80F80289200002200AC
16:1000F000000000D80F80289200002300000000D8E4
17:100100000F402B9200002400000000D80F8028929E
18:1001100000002500000000D80F8028920000260073
19:10012000000000D80F80289200002700000000D8AF
20:100130000F80289200002800000000D80F8028922D
21:1001400000002900000000D80F80289200002A003B
22:10015000000000D80F8028920000360000000098B0
23:100160001E80E99A00002C00000000D80F80289221
24:1001700000002D00000000D80F80289200002E0003
25:10018000000000D80F80289200002F00000000D847
26:100190000F80289200003000000000D40F00009271
27:1001A00000003000000000D40F400092000030003A
28:1001B000000000D40F80009200003400000000D442
29:1001C0000FC0009200003000000000D40F00019228
30:1001D00000003000000000D40F4001920000300009
31:1001E000000000D40F80019200003000000000D415
32:1001F0000FC0019200003000000000D40F000292F6
33:1002000000003000000000D40F40029200003000D7
34:10021000000000D40F80029200001613000000803E
35:100220000200009000003000000000D40F00039294
36:1002300000003000000000D40F40039200003000A6
37:10024000000000D40F80039200003000000000D4B2
38:100250000FC0039200000000000000D05F3F003498
39:10026000000016130400008042FFFCB000000000F4
40:10027000000000881280FD3A000016130000008084
41:10028000020000901613161302010080828DFDBC3F
42:1002900000000000000000881280FD3A000000000D
43:1002A000000000F803C001323800000000010084A3
44:1002B000824D281A000036000000007409400092A8
45:1002C00000004F00000000FC020000920000480007
46:1002D000000000800200009000004D00000000902F
47:1002E0000E80189200001B030000000008C020923E
48:1002F000000089000000000008002192000019039E
49:10030000000000000840219200008600000000006C
50:100310000885219000009B03000000EC02C022929F
51:1003200000009404000000800200009000005800CB
52:10033000000000FC0240189D00005100000000D0A9
53:10034000020000920000E003000000800200009024
54:100350000000161300000080020000900000000062
55:10036000000100800200007000004C00000000004E
56:1003700009C0219200004A0012010000088522B045
57:1003800018003600000000F8738A029900008E0001
58:100390006A000080020000B008008E00000000F833
59:1003A0002340019900000000000100E80200907263
60:1003B0000000161380010080B200E9B600000204BC
61:1003C0000000007C1EC0E79A08000000000000F852
62:1003D000134001390000F60300000008B801009442
63:1003E000000016130300007809401ABD0000161320
64:1003F00004010080E28097BC00000000000000A023
65:10040000E125003408000000000000F8B340013985
66:1004100000000204B20000D8020000B2000016136F
67:1004200017010080020000B000001F06001001F854
68:1004300002006E9200005B000A0100CC020000B2D4
69:1004400000007000030100FC024019BD0800020416
70:10045000000000F8A34001990000000000000084A3
71:1004600001C02F320000000000000090F1010034B4
72:10047000000000000000009401C02F320000600066
73:10048000800100801281FCB6000016130401008078
74:1004900002C02FBC02006000B00000A0F20B00B947
75:1004A000000063000401008002C0B0BC00006E00C8
76:1004B000A000008002000090000065008001008024
77:1004C000F24BD0B600006E00A00000800200009049
78:1004D00000000000A0000004FD4BD03400006B00C1
79:1004E000800100801281FCB60000C211000000D81B
80:1004F000020000D20000161304000080028092BCAB
81:1005000018000000000000F8730A03396E0036007E
82:10051000000000C00200369200009611000000D8D2
83:10052000020000D20000161304000080028092BC7A
84:1005300018003600000000F8730A03F900005B00A1
85:10054000030100FC024018BD00008500030000FC10
86:10055000024019BD000000000000009401C02F32CD
87:100560000000000000000080F101003400000000E5
88:100570000000008401C02F3200007500800100805F
89:100580001281FCB6000016130401008002C02FBCCB
90:1005900002007500B00000A0F20B00B90000780066
91:1005A0000401008002C0B0BC00008300A0000080F5
92:1005B0000200009000007A0080010080F24BD0B66B
93:1005C00000008300A00000800200009000000000F6
94:1005D000A0000004FD4BD0340000800080010080AA
95:1005E0001281FCB60000C211000000D8020000D247
96:1005F0000000161304000080028092BC1800000066
97:10060000000000F8730A033983003600000000C0C0
98:100610000200369200009611000000D8020000D2BD
99:100620000000161304000080028092BC18003600FF
100:10063000000000F8730A03F900007000030100FCD9
101:10064000024019BD00005B00030100FC024018BD20
102:1006500008000204000000F8A3400199080000000F
103:10066000000000F87340013900008E008001008016
104:10067000E20180B600008B000000008002000090C4
105:10068000080091030C0000F8534001B900008D00F0
106:1006900080010080E20180B600001613120000689D
107:1006A000020580B00000F6030000006C1FC0F69A3F
108:1006B000000000000000000008058030000000007D
109:1006C000000000FC020001320000000000000010E9
110:1006D00008803D3200000000000000CC0200003223
111:1006E00000000000000000100900363200008012F7
112:1006F00000000014090080D2000016138000008062
113:1007000062802FB60000161302010080823A80BC7E
114:100710000000161306010080923A80BC0090161368
115:1007200004010080A20D80B000001613120100BC6D
116:1007300008C021B200000000000000D40200003216
117:1007400002A0000000000000A90D80320000161376
118:100750001200005402A438B2000200800000002CF5
119:100760000800373218003600000000F8730A03F959
120:100770000000000000080004088072320000A2009F
121:100780009F00005C080072B28300A100800100801D
122:1007900082CD85B00000B6000000002CD8C1829444
123:1007A0000000B6000000002C88C1829400001613DF
124:1007B00006010080827D80BC000FAC000401008037
125:1007C00082CD85B00000AC00800000803281FCB694
126:1007D0000000161312000068020580B0000000003F
127:1007E0000000006C1FC0F63A00000000000000FC92
128:1007F000020001320000AA00040100DC43603DB3A6
129:100800000000F603000000FC020000921800000047
130:10081000000000F8738A0339A7003600000000C00A
131:10082000020036920000AE0080010080F2C085B662
132:100830000000BE000000002C98C182941000C3008C
133:1008400087000000792116B80000C30080010078FD
134:10085000390090B08300C3008700007889CD85B04F
135:100860000000B30080000080028097B60000B60050
136:100870000000002C88C182940000B5008000008038
137:1008800022C185B60000B6000000002CD8C18294B9
138:100890000000C3000000002C98C182940000BC003E
139:1008A00080010080D2C182B60000C30080010080B8
140:1008B0007280FCB600000000001800A8423D7230B3
141:1008C00000000000541809FEF2C07C300000EA006D
142:1008D00080010080F2C185B60000C50000000080E4
143:1008E00002000090000016138001008082C182B6D1
144:1008F0000000B800800000808280FCB60900C300C0
145:10090000040000B428BF17B88300C500870000ACFE
146:1009100088CD85B00000C30004000080D2E28AB018
147:1009200000000000001800A8423D72300000C50021
148:10093000541809FEF2C07C9000000000540000FC36
149:100940000200003200000000001800200700003202
150:100950008000802000000080C2CD85300000DA00D9
151:100960000B000080020000B01800000000000078BA
152:1009700079A116382000EA0004000080828D97BC1F
153:100980000000D100800100806280FCB68300D100AD
154:100990008700007889CD85B00000CD008000008000
155:1009A000028097B60000D10080010080128097B6C7
156:1009B0000000D1008001008072C185B610000000E7
157:1009C00000000078796116380000D800040100802A
158:1009D000328097BC0000EA000000002CB8C182946D
159:1009E0000000D800800100805280FCB60000D800D2
160:1009F0008000008072C185B60000D80080010080B0
161:100A000002C185B60000D80080010080D2C185B641
162:100A1000180000000000007879E116380000D800C6
163:100A200004010080328097BC0000EA000000002C26
164:100A3000C8C18294000000000000000408000432D5
165:100A40000000EA000000002CA8C182940800000009
166:100A500000000078792117380000EA0004000080C7
167:100A6000328097BC0000EA0004010080228097BC1D
168:100A70001F0000000012000889CD72300500000040
169:100A800000120000B9DC173800000000000000A8C8
170:100A9000220090370000EA008000868022247CB685
171:100AA00000000000000000780905803000001613E7
172:100AB0000201008082BA97BC000016130601008074
173:100AC00092BA97BC0000161312000068020580B0AD
174:100AD00000000000000000FC020001320000E800FD
175:100AE000040100DC43603DB30000F603000000FC9D
176:100AF0000200009218000000000000F8738A033919
177:100B0000E5003600000000C002003692020000003E
178:100B100000000010090036320000801200000014AE
179:100B2000090080D20000F10012010060084023B2E9
180:100B30003200000000000010090036320000801270
181:100B400000000014090080D20082000000000008AC
182:100B5000088036320000E100000000641F40F69A71
183:100B60000000161312000024080023B20000161320
184:100B70001200002008C023B2000016131200001853
185:100B8000088023B200000000000000FC02000132D7
186:100B90000000F800040000DC43603DB318000000D2
187:100BA000000000F8738A0339F4003600000000C02A
188:100BB0000200369200000000000000FC02008532B6
189:100BC00000000000000000D8028001320000000098
190:100BD000000000D00200003200C007011801000C24
191:100BE000A8CD3EB20000F80012000038028081B2A9
192:100BF000000000000000003C020082320000000003
193:100C0000000000300240823200000000000000348A
194:100C10000200863220800000000000080880363282
195:100C2000000000000000005C1FC0F53A000000005A
196:100C300000000078090580300000161302010080D2
197:100C400082BA97BC000016130601008092BA97BCC6
198:100C50000000F60312010068020580B000001613C0
199:100C600000000080020000900000000000180078E2
200:100C70000900723200230A0104010080A2CD82B073
201:100C800000000B0100000000090000920000161394
202:100C90009F16000029C172BC00000000001800006F
203:100CA000078081320000000000200000070082322F
204:100CB00000000000002800000780973210000000AC
205:100CC00000300000172090390000000000380000BC
206:100CD00007C0823200000000000000D8020000328D
207:100CE00000000000000000000740803200001401F6
208:100CF00080010080A2C182B600001501000800003A
209:100D000057008097050000000008000007A0043984
210:100D10000000161304100000074082B2000000001B
211:100D20000018000007008632000016131200005061
212:100D3000F2C138B418003600000000F8730A03F955
213:100D40000000161312000068020580B000000000C9
214:100D500000000078090580300000161302010080B1
215:100D600082BA97BC000016130601008092BA97BCA5
216:100D7000000016131200004802C080B20000F60303
217:100D8000CA010008E8818094000000000000008093
218:100D9000024590300000161304010080120028BCA8
219:100DA00000001613120100BC08C021B208000000A8
220:100DB000000000F89340013910000000540000FCCE
221:100DC000824D9036000016130200008042C02FBCF6
222:100DD00000002501F00100D8020000B20000000070
223:100DE000620401A802C06E3200000000000401008D
224:100DF00059C06E37000000000004017819C06E3A37
225:100E0000000000004E0401EC06BD97300000000019
226:100E1000E00000F41E40EF3A0000161304190B82A4
227:100E200002C07CBC0000000000180BCE074000325E
228:100E30000000000000000000074009320000161307
229:100E400004010080020036BC000000000008000021
230:100E500077C029370000161304100000173D90BA20
231:100E600000000000001800000780F4320000161394
232:100E700012000040F2C138B40B0000000000001066
233:100E8000090036320000801200000014098083D26D
234:100E900000000000000000FC32C02F300000000005
235:100EA0000000001008803D3218003600000000F8F5
236:100EB000730A03F900000000000000D402000032B1
237:100EC000000016130401008002802DBC0000CE013A
238:100ED0008038008022C072B600003E01120000C8B7
239:100EE000020020B2000045011201005C088020B21F
240:100EF000000016131200006002802CB218000000DF
241:100F0000000000F8738A03393B013600000000C07E
242:100F10000200369200000000000000F81F80FF3A37
243:100F200000000000000000FC320085300000A3013A
244:100F30000400008042603DB318000000000000F88B
245:100F4000738A033941013600000000C00200369266
246:100F5000080000000000000088CD85370000000078
247:100F60000000002008007232000000000008002489
248:100F700008007232000016130410006C080072B2F0
249:100F8000000000000018004C080072320000161328
250:100F900004200018080072B2000000000030002891
251:100FA00008007232000016130200008082BD82BC6D
252:100FB000000000000028003008007232000000002D
253:100FC00000000060088082320000560106000080A8
254:100FD00062A082BC000016139F3C0014288072BCE3
255:100FE00000000000000000000700063207000000BB
256:100FF00000080000774A09390000161304100000A9
257:10100000070082B200000000CA19000007408232C7
258:101010000000161312000040F2C138B400000000B6
259:10102000000000D80240003200007D010438007842
260:10103000D9C572B000005A0180010080028097B6C5
261:1010400000000000000000F882802F3400005C01E6
262:1010500080010080128097B600000000000000F8B8
263:1010600092802F34000016130401008002402DBC32
264:10107000040000000038003CB81C173800000000D5
265:101080000000003C28C0833700000000003A002C1C
266:1010900008C07232000000000000001CB8E0833A73
267:1010A00000000000CB2900200700003200007C0176
268:1010B0000400008002C081BC000000000000003479
269:1010C00078A0813E000000000000001CD8E0813CB8
270:1010D00000006A01063A0080B25C83BC0000000098
271:1010E000003A000089C17237070069012B01000432
272:1010F000790A04B900000000CB00000419419034C3
273:1011000000006D01003A002C070000920000000072
274:10111000003A002CD7E0723C000000000000000004
275:101120000900003200000000000000040900003245
276:10113000000000000000000007648332000000008F
277:1011400000080000070080320000161304100000A1
278:1011500007C086B2000000000018000007C08432FB
279:1011600000008C0104000028D8A082BC00001613E7
280:1011700009010080020000B0000000000000000033
281:10118000D820803A000077010400008072802DBCD6
282:10119000000016131200004412E438B20000780177
283:1011A000000000D812802D9A000075120000000483
284:1011B000F94190F400007A0104000018D8A081BC25
285:1011C000000062010000006CD8E0869A0000201246
286:1011D0000000004408802DF2000062010000003091
287:1011E0000800009200000000CB1900200700003228
288:1011F00007007F012B010004790A02B900000000FA
289:10120000CB00000419419034000000004D000000A4
290:10121000A7A0813E00000000000800000700803207
291:10122000000016130410000007C086B20000000082
292:101230000018000007C0843200008C010400002860
293:10124000D8A082BC0000161304010080626083BC39
294:101250000000000000000000D820803A0000890152
295:101260000400008072802DBC0000161312000044A0
296:1012700012E438B200008A01000000D812802D9AD2
297:101280000000751200000004F94190F400002012E3
298:101290000000004408802DF200007D0100000030B5
299:1012A000080000920000161380000080A2802FB674
300:1012B0000000000000000004F94190340000161303
301:1012C0001200004412E438B218003600000000F8A2
302:1012D000730A03F9000016130400008002802DBC7D
303:1012E00000000000001800040980733200000000B4
304:1012F000002800088980733700000000000000808B
305:1013000007008632410000000006008C07003632DC
306:10131000000098012908008007C085B200009B01E9
307:101320002810008C070000B200009C01001200840D
308:1013300007000092000000000010008CF7E0823AE5
309:1013400000009B0128180080074090B200009C011B
310:1013500000120084070000920000000000120084C8
311:1013600027E4823200000000000000783900853058
312:101370000000161304010080F28B97BC0000A1014D
313:101380000400008042603DB318000000000000F837
314:10139000738A03399C013600000000C002003692B7
315:1013A00000000000000000FC02008532000016135F
316:1013B0001200005C52812CB400000000000000D834
317:1013C00002800132000000000000008002003B3279
318:1013D0000840A501F0010008088036B200000000B6
319:1013E0000004013808C06E3200000000E00000F484
320:1013F0001E40EF3C0000AC010B01008C080000B265
321:101400000000A901F2010080020000B0000000000D
322:10141000000000F00E003A320000BE01E200008041
323:101420000E8083920000AC01F2010078C93B3ABC07
324:101430000000B60102010080828097BC000000001D
325:10144000000000A80200E8320000B10104000080A2
326:1014500022A22ABC0000B50104190B8202C07CBC88
327:10146000000000000000008C18C0883A0000000056
328:10147000000000A812802A3A00000000000000A826
329:1014800002BD2A300000AF0104010080E2A02ABCA6
330:101490000000BB010200008082C088BC0000000088
331:1014A000E20000080800003200000000000000A870
332:1014B000028088320000161304190B8212C07CBC13
333:1014C0000000000000180BCE070000320000F603F9
334:1014D000000000DC03000092000000000000003863
335:1014E00008802A3200000000000000F00E003A32AE
336:1014F00000000000E20000800E802A3200000000A0
337:10150000000000A8028088320000161304190B8224
338:1015100012C07CBC0000000000180BCE0700003297
339:1015200000000000000000DC030000320000161381
340:1015300004000080227AE8BA0000000000000000E9
341:1015400007808332000000000000000079C02937C6
342:101550006020000000000000890D903A00000000AB
343:10156000CA0100D812802D3A0000000000000000DF
344:101570000700013200000000000800000700903260
345:1015800000000000001000000740E83200000000EA
346:10159000001800000780E83200000000000000FC96
347:1015A000020000320000F60312010048F2C138B414
348:1015B00000001613000000800200009000001613C7
349:1015C0000401008002402DBC0000161304010080BD
350:1015D00002802DBC000016138000008072802FB6A0
351:1015E0000000000000300078088072320400000023
352:1015F00000380054A85C16380B0000000038002C9E
353:10160000A8DC1638140000000000001C884D853A44
354:101610002200000000000010090036321000801285
355:1016200000380014A99C87D90000000000000020A9
356:101630000800723200000000000800240800723226
357:10164000000000000010006C080072320000000072
358:101650000018004C08007232000016130420001815
359:10166000080072B20000000000280030080072324A
360:10167000000016139F3C0014188072BC0000E501A6
361:1016800004000080024081BC000000000000001443
362:101690001840813C000000000000000007000632F6
363:1016A0000700000000080000774A093900001613FF
364:1016B00004100000070082B200000000CA190000F8
365:1016C000074082320000161312000040F2C138B405
366:1016D00000000000000000D80240003200000000BE
367:1016E0000000006478C02937021000000000006488
368:1016F000884D863A0000000000000080080000329B
369:10170000000000000000004008000032000000005F
370:101710004D00000077A0813E00000000000800009E
371:1017200007408632000016130410000007C086B27E
372:10173000000000000018000007C084320000000212
373:101740000400001CD8E081BC0000161309010080D1
374:10175000020000B00000000000000064D860863A7B
375:101760000000F4010400008072802DBC00001613FC
376:101770001200004002C038B20000FC01000000D896
377:1017800012802D9A0000161312000040F2C138B4E6
378:1017900018003600000000F8730A03F90000FA018F
379:1017A0000401008002802DBC00001613800100801F
380:1017B000A2802FB60000F501670000F8A2802FB5C7
381:1017C00000001613120000E802C021B20000161338
382:1017D0000401008072802DBC00000000000000D8D1
383:1017E000024000320000FE0104000018D8A081BCB5
384:1017F0000000EA010000006CD8E0869A0000C910E1
385:101800000000004408802DF20000EA0100000030D2
386:10181000080000920000161312000040F2C138B414
387:1018200018003600000000F8730A03F900000602F1
388:101830000401008002802DBC00001613800100808E
389:10184000A2802FB600000102670000F8A2802FB529
390:1018500000001613120000E802C021B200001202BC
391:1018600004010080020084BC00000000000000D4DD
392:101870000240003200000000000000A42240853A2F
393:10188000040000000018004088CD743600000000FD
394:10189000000000402800843700000000000000D451
395:1018A00002000032140012020400001C880D84BCE7
396:1018B0000000161309010080020000B000000000C3
397:1018C000000000780961853A800016130601008047
398:1018D000828D97BC0000000000000064D860863A4A
399:1018E0000000FC01000000D8024000920000140239
400:1018F00004000018D8A081BC000016020000006C93
401:10190000D8E0869A0000C9100000004408802DF23B
402:10191000000000000000003008000032000000005D
403:10192000000000D40240003200000000000000A4CB
404:1019300022C0823A000000000000003CB860853CF4
405:1019400004001C028100006088CD74B60000000015
406:1019500000040028F8A0753C00001D020008007477
407:10196000088075920000000000080028F8A0753C6F
408:10197000000000000000002808A1823C00000000D8
409:10198000000000A4F2602A3A0000000000080048AD
410:1019900008007532000000000020007C08807532CD
411:1019A00009002302041A007088CD74B009000000F9
412:1019B000001A004C87CD74317F00000000000064E5
413:1019C000884D863100000000000000642840863AFF
414:1019D00023000000000000100900363200008012D1
415:1019E00000000014098082D20C00000000000010EA
416:1019F000090036320000801200000014098084D2F1
417:101A000000000000000000D802400032000000008A
418:101A1000001000000740863200000000000000D8DF
419:101A20000280003200000000001000005761863A7A
420:101A300000003002120000C8020020B20000330291
421:101A40001201005C088020B2000016131200006032
422:101A500002802CB2000040012A0100D4020000B232
423:101A600018003600CA0000F8730A03F900004101AB
424:101A7000000000F81F80FF9A00000000000000D462
425:101A800002400032080000000000000088CD8537C9
426:101A9000000000000000001CE8A1823E00000000E1
427:101AA000000000A42240853A000000000008005019
428:101AB0000780843200003A020401008072A082BCD8
429:101AC00000000000001A004CC7E174320000000062
430:101AD0000000006808E1813A00003D0290010078B2
431:101AE000F9A186BA00000000000000781980973A3A
432:101AF000000000000020005807809732000000001E
433:101B0000000000D802800032000000000000000049
434:101B10000700843200000000400800005721803A8E
435:101B2000000041021200004CF2C138B40000000075
436:101B3000000000000821803A0000000000000004BE
437:101B400008C0813200000000510000D802C00032FD
438:101B500000000000000000D402000032000000007D
439:101B6000CB1900200700003200001613020100808C
440:101B700032802DBC07004A022B010084780A02B98A
441:101B800000000000CB0000841841883400000000F1
442:101B90004D00000077A0813E00000000000800001A
443:101BA00007008032000016130410000007C086B240
444:101BB000000000000018000007C084320000161367
445:101BC0009F000028D8A082BC000068020400001C0E
446:101BD000D8E081BC0000161304010080626083BC61
447:101BE000000059022D000000D82080BA00005402E5
448:101BF000120100E802C021B218003600000000F80F
449:101C0000730A03F9000056020401008022802DBCF3
450:101C100000005902CD0100D8024084920000161342
451:101C20000401008002802DBC00001613800100809A
452:101C3000A2802FB600005302000000F8A2802F956A
453:101C400000005C020400008072802DBC00001613AE
454:101C50001200004412E238B200006602000000D810
455:101C600012802D9A0000000000000084F8418834A2
456:101C7000000016131200004412E238B218003600B9
457:101C8000000000F8730A03F90000640206010080F6
458:101C900022802DBC000016130401008002802DBCA0
459:101CA0000000161380010080A2802FB600005E02A3
460:101CB000670000F8A2802FB500005F02000000E876
461:101CC00002C02192000016130401008072802DBC16
462:101CD00000000000000000D802C000320000C9105F
463:101CE0000000004408802DF2000047020000003090
464:101CF000080000920000700280000080D2802FB6A1
465:101D000000006B02120100E802C021B21800360088
466:101D1000000000F8730A03F900006D02040100805E
467:101D200022802DBC00007002000000D80240849286
468:101D3000000016130401008002802DBC0000161361
469:101D400080010080A2802FB600006A02000000F827
470:101D5000A2802F9500000000CD000084F841883457
471:101D6000000016131200004412E238B20000000016
472:101D7000000000D40240003200000000000000A477
473:101D800022C0823A0000790204010080420086BC31
474:101D90000000000000080058074087320000780269
475:101DA0008F010074184087BA000000000000007422
476:101DB0000800003200007B0200040058F7A0869A59
477:101DC0000000000000000078F9A0863A280000001A
478:101DD00000080058878D973C00000000000000D8E4
479:101DE000024000321800000000000000B760853992
480:101DF000080000000008000087CD853700007E0243
481:101E00001200004CF2C138B400000000000000488D
482:101E100018A0843A00000000000000D40200003244
483:101E2000000000000000008057A1863A4100000039
484:101E30000006008C07003632000000000008008019
485:101E400007C08532000000000010008C074085327A
486:101E500000000000000000D80280003200001613CD
487:101E600004000058088071B20000000000000080EB
488:101E70000880003218003600000000F8730A03F9E9
489:101E800000008C020401008002802DBC00001613AB
490:101E900080010080A2802FB600008802000000F8B8
491:101EA000A2802F950000880204010080180088BCE1
492:101EB00000008F0290190058E89C85BA00000000CD
493:101EC000000000581880853A0000000000180080CB
494:101ED000078585300000940204010080420086BC22
495:101EE00000000000000000D80240003200000000A6
496:101EF00000000008898071370000950200120084FC
497:101F000027E48292000000000012008407000032E3
498:101F100000009902270000FC020085B2000099022F
499:101F20000400008042603DB318000000000000F88B
500:101F3000738A033995023600000000C00200369211
501:101F4000000016131200005C52812CB400009D02A8
502:101F500004010080028082BC000016138000008013
503:101F6000A2802FB60000A301000000D4020000925E
504:101F70000000A00204010018D8A081BC0000C91014
505:101F80000000004408802DF200002D02C70100303F
506:101F90000800009200002D02C701006CD8E0869A6C
507:101FA00008000000C60100F8934001391900000044
508:101FB00000000010090036320000801200000014FA
509:101FC000094081D200000000000000140845813063
510:101FD00000001613120100BC08C021B20000161345
511:101FE00080000080A2802FB60000F6038001808070
512:101FF000320B6AB600006A100000003C030038F2A1
513:102000000000AC020406018002C06EBC0000161382
514:10201000870601EC56E06EBA0000F3030000008072
515:102020000200009000001613870601EC56E06EBA1D
516:1020300000000000000000F842802F3408C0161392
517:1020400012000040A2CD39B218003600000000F89E
518:10205000730A03F90000161303B8000009C06EBD2F
519:10206000B202000000000088820D903A2F005E0648
520:102070000000001C080036920000161300000080CB
521:10208000020000902C005E060000001C0800369242
522:1020900000001613000000800200009000001613DC
523:1020A0000000008002000090000016130000008075
524:1020B0000200009038005E060000001C0800369206
525:1020C00039005E060000001C08003692080000007F
526:1020D000000000F89340013900001613120100BC03
527:1020E00008C021B20000161380000080A2802FB625
528:1020F0000000161380008080320B6AB600006A1060
529:102100000000003C030038F20000C102040000801F
530:10211000524082BC0000161304010080624082BC61
531:10212000000016130405018002C06EBC0000000010
532:10213000000000F842802F3408C01613120000403F
533:10214000A2CD39B218003600000000F8730A03F976
534:10215000000000000004017809C06E320000000099
535:10216000006201EC068097320900000000000010B8
536:1021700009003632000080120004011409C06ED23A
537:102180000200CB0204B8008082CD6EBC080016139A
538:1021900004B9008082CD6EBC00000000000601EC96
539:1021A000064000320000CC02B50000D8020000B2A8
540:1021B00000000000A50080A0360B6A34000000007B
541:1021C000003002E806C02C320000000000000000D1
542:1021D000078000320000000000000078A9002D37C1
543:1021E0001805010000080000C78D973A00000000A4
544:1021F0000000007899C02C3718010000000000781A
545:10220000898D973A000016130210000087BF97BA15
546:1022100000000000001800000740FE320000161306
547:1022200012000048F2C138B418003600000000F86F
548:10223000730A03F900000000001801E006000032F4
549:1022400000000000000000F882852F3000006806C2
550:102250000000001C0800369208000000000000F892
551:102260009340013900001613120100BC08C021B2CE
552:102270000000161380000080A2802FB660001613A5
553:10228000040100F8828D2FB007000000000000104C
554:10229000090036320000801200000014094081D28B
555:1022A0000000E50280008080320B6AB61700000053
556:1022B00000000010090036320000801200380014BF
557:1022C00009C06ED20000F6030000008002000090FA
558:1022D00000006A1000000038030038F20000E80235
559:1022E0000402018002C06EBC0000F303000201EC96
560:1022F00056E06E9A00000000C00301EC56E06E3A12
561:10230000000016138001008002802FB600C0161353
562:1023100012000040A28D39B218003600000000F80B
563:10232000730A03F9200016130439008082CD6EBCB5
564:102330001200000000000010090036320000801278
565:102340000030001409006ED21500000000000010DB
566:1023500009003632180000000002011489CD6E37E2
567:102360000000801200200114895B91D21B00F4024E
568:1023700038010010090036B200008012003001144C
569:1023800009006ED21800000000000010090036326B
570:102390000800000000000014790B143810008012AF
571:1023A00000500114A95B91D90000F902042801141E
572:1023B00009006EB21C00801200000010090036D225
573:1023C000000005033828001809006EB20000FD0265
574:1023D0000421010869246EBC000016130901008065
575:1023E000020000B0030068060000001C08003692DE
576:1023F0000000010302300080829B90BC00000003BB
577:102400000603018012C06EBC040068060000001CB8
578:1024100008003692050068060000001C080036928D
579:10242000000016130430008002006EB200000403A6
580:102430000603018012C06EBC0B0068060000001C81
581:10244000080036920C0068060000001C0800369256
582:10245000000008030421010869246EBC0000161363
583:1024600009010080020000B0030068060000001CA3
584:102470000800369200000C0302300080829B90BC62
585:1024800000000B030603018012C06EBC0400680646
586:102490000000001C08003692050068060000001CC1
587:1024A0000800369200000E039F31010C69246EBCB7
588:1024B000000000000000000C0900003200001203C0
589:1024C00004310004899B90BC0000110306030180C5
590:1024D00012C06EBC200068060000001C0800369286
591:1024E000210068060000001C080036920000161348
592:1024F0009F000080024090B200001503040201809A
593:1025000012C06EBC220068060000001C0800369253
594:10251000000017030401000039A490BC23006806E2
595:102520000000001C08003692000016139F00008077
596:10253000020090B2240068060000001C08003692D9
597:10254000080016130C0000F8634001B910001D03C9
598:10255000C50100CC02201598080091030C0000F87A
599:10256000434001B910000000C50100CC022015381D
600:102570000000000000000010090036320000801248
601:1025800000000014090080D200001613120100BCE4
602:1025900008C021B200006A100000003C030038F2BD
603:1025A000000000000000005C0805803000001613E9
604:1025B0000401008002402DBC0000161302010080BF
605:1025C00082FA85BC000016130601008092FA85BCD1
606:1025D0000000270336010080020000B00F006806EB
607:1025E0000000001C0800369210000000002C0200C1
608:1025F000A9DB8539000016131200005402A438B27A
609:10260000000000000008028C08C06E3200000000CC
610:10261000000C029828806E37000000000000009C2B
611:1026200038221437000032030430002808006EB24C
612:10263000000016130410006C08006EB200000000C9
613:102640000018004C08006E32000016130420001819
614:1026500008006EB200000000003C001408806E32DA
615:10266000050035030038020078E16E990000000093
616:10267000510000D80200003200000000003802784B
617:1026800009C06E32050000006808000077A1973984
618:10269000000037031201000009C021B21800360003
619:1026A000000000F8730A03F900000000545401FC14
620:1026B00002C06E3214103B0304000080A20D72B001
621:1026C0000000F3110000002809C002F20E006806A5
622:1026D0000000001C08003692000016130609008056
623:1026E00082BD72BC00004F03331500A402C072B259
624:1026F00000008C0380010080B20172B60101420328
625:1027000004290080828D74BC080A8C03042D00808B
626:10271000828D74BC000000000030007C080075321F
627:1027200000004903003800881800759C080A8C03D3
628:1027300004290080828D74BC10000000002C007CF5
629:10274000888D7537000000000030007C68DD87321E
630:10275000000048039F390088188075BC10000000F5
631:1027600000340088888D7537000049030000008818
632:102770001880889C1000000000340088689D88390B
633:1027800037000000000000100900363200008012FF
634:102790000000001409C087D23B00000000000010B8
635:1027A000090036320000801200000014098088D22F
636:1027B000000050039FF1018082DB87BC00008C0386
637:1027C000000000800200009000008C038000008068
638:1027D000B20172B60000000000080048080075321F
639:1027E00000000000001000700800753200000000BA
640:1027F000001C007438A2753700005503831B007855
641:1028000008C074B200000000000000F8C2802F343D
642:102810002F00000000000010090036320000801276
643:1028200000000014098084D2340000000000001071
644:10283000090036320000801200000014090087D21F
645:1028400000006B039F780180C2216EBC00005D0315
646:102850009F990164881B87BC00006C039F6801641A
647:10286000885B86BA000000000000006408000032A7
648:1028700000000000001600A402C072320000000038
649:10288000003C02A4B25B2A3A00000000003A027841
650:1028900009C06E3200006D0308010004E8A575BC94
651:1028A0003F000000000000100900363210008012C6
652:1028B00000040014695D80D910008C030B01001C1A
653:1028C000080036B200006B0304A10180829B84BC27
654:1028D000000068069F980180C2216EBC0000680657
655:1028E00006B10180825B87BC00008B030B01008076
656:1028F000020000B000006C0304990180C2216EBC8C
657:102900000000890302D4018092FB6EBC16006806A9
658:102910000000001C08003692170068060000001C2A
659:10292000080036921C0068060000001C0800369261
660:102930003F00000000000010090036321000801235
661:1029400000040014695D80D90000710304A10180B6
662:10295000829B84BC0000780306A80180825B80BC57
663:102960000000750304A9018002006EBC00008A0308
664:1029700004A10180829B84BC00008A0304010080C2
665:10298000124080BC140068060000001C080036924B
666:1029900000008A039FA0017829216EBC00008A03F1
667:1029A0000201008012A097BC00006B0300000080B1
668:1029B000020000900000850304000080028082BCB9
669:1029C000000016130402018002C06EBC00007E03EA
670:1029D00002000080A26080BC060068062C01001C7A
671:1029E000080036B200C0820304010080A28D2FB01F
672:1029F000060068060000001C0800369200008203F2
673:102A000004000080A26080BC0000810306030180F6
674:102A100012C06EBC090068060000001C0800369257
675:102A20000A0068060000001C0800369200008403BB
676:102A30000603018012C06EBC070068060000001C7F
677:102A400008003692080068060000001C0800369254
678:102A5000020068063801001C080036B20000880336
679:102A6000020C0280A25B80BC1F0068060000001CF4
680:102A7000080036921E0068060000001C080036920E
681:102A800000008D03000000280940009200008D0323
682:102A9000000000280980009200008D03000000283B
683:102AA00009C0009200008D03000000280900019277
684:102AB00030000000000000100900363200008012D3
685:102AC00000000014098092D20E00F3110000001CD7
686:102AD000080036F200006806000000800200009046
687:102AE000100016132A0000CC022015B80D000000BB
688:102AF00000000010090036320000801200000014AF
689:102B0000090080D200001613120100BC08C021B2D7
690:102B100000006A100000003C030038F21D00990319
691:102B20008001007809E000B800001613040100805D
692:102B3000328097BC1D0068060000001C0800369219
693:102B40000000161304010080228097BC150068065F
694:102B50000000001C08003692000000000000001C6D
695:102B6000A8052830000016130400008002C02CBC09
696:102B700000001613120100BC08C021B20000161399
697:102B800080000080A2802FB660001613040100F8B8
698:102B9000828D2FB008000000000000F8834001394A
699:102BA0003600A4030400008082CD81BC0500000033
700:102BB00000000010090036320000801200000014EE
701:102BC00009C081D20000020480018080320B6AB605
702:102BD00000006A1000000038030038F22C0068067C
703:102BE0000201008082CD81BC00005E0600000080F2
704:102BF0000200009000001613120100BC08C021B2B0
705:102C00000000AB031D41025CF80168B44100F3030E
706:102C1000000000F8A28D2F91350000000000001088
707:102C200009003632000080120000001409C085D26D
708:102C300010000000D02C0200A9DB85390000290318
709:102C40001201005402A438B20000161300000080E4
710:102C5000020000900000B40304B0008002006EBCCB
711:102C60000000B40380B9008082806EB600000013BB
712:102C70000078016008006EF230005E06D700001C8C
713:102C8000080036920000B60380010080D2812FB682
714:102C900031005E06D700001C080036920000B80321
715:102CA0008001008042812FB635005E06D700001CEF
716:102CB000080036920000C50304A8010809006EB29E
717:102CC0000000000000200208899B903E00000000E8
718:102CD00000A00108899B903A0000C5039F88010865
719:102CE000899B90BC000000000034020009C06E3DCA
720:102CF00000000000000C020409A46E370000C103AC
721:102D00000200008012A490BC000000000000000837
722:102D1000198090370000C50302010280829B90BC9D
723:102D200031005E06D700001C080036920000C50383
724:102D300004B0008002006EBC0012C50304010080D4
725:102D4000A28D2FB032005E06D700001C080036921C
726:102D50000000F303000000F872812F9500000000CE
727:102D6000000000F842802F3408C0AF02120100407A
728:102D7000A2CD39B2000016130000008002000090BE
729:102D800008000000000000F893400139080000002E
730:102D9000000000100900363200008012000000140C
731:102DA00009C081D2000016130400008002C02CBCB0
732:102DB0000000161380000080A2802FB6600016135A
733:102DC000040100F8828D2FB0000002048001808091
734:102DD000320B6AB600000000000000140840903278
735:102DE00000006A1000000038030038F22C0068066A
736:102DF0000201008082CD81BC00005E0600000080E0
737:102E00000200009008000000000000F89340013923
738:102E10000800000000000010090036321000801287
739:102E200000000014894D81D70000161304000080B3
740:102E300002C02CBC0000161380000080A2802FB6B8
741:102E400060001613040100F8828D2FB00000020408
742:102E500080018080320B6AB600006A1000000038E2
743:102E6000030038F20000DF030420018052206EBC12
744:102E70000000161309010080020000B02600680659
745:102E80000000001C08003692250068060000001CA7
746:102E9000080036920000E503040100D81E80EDBC56
747:102EA0000000E103B70000D80EC0EDB20000E4035B
748:102EB00004010080423BEEBC00000000000000E086
749:102EC0001E00EE3A00000000A70000D00E00EE3217
750:102ED00000000000007486CC02806C32000000000C
751:102EE000000000000940E7320000E9038001808013
752:102EF000320B6AB6360016131200002C82CD2EB2A9
753:102F00000000EB030401008042C52CBC0000EC0370
754:102F1000000000CC0200009200000000000000CC85
755:102F200012C02C3A0000E70304010000190090BC15
756:102F300000000000007486C806C02C32080002049D
757:102F4000000000F8C34001990000F1030400008074
758:102F5000028080BC0000161304550180B2DB2FBC38
759:102F6000000054100000002C090000F20000F603DD
760:102F700000000080020000900000F50304000080C3
761:102F8000028080BC0000161304550180B2DB2FBC08
762:102F9000000054100000002CF90100F40000FF03B1
763:102FA00004000028098080B200000000000000D862
764:102FB000020000320000811100000008080000D269
765:102FC0000000FF0304000080028092BC180036005D
766:102FD000000000F8730A03F9000002048001008079
767:102FE000A2802FB6000002041201000009C021B225
768:102FF00018000000000000F8730A033902043600CC
769:10300000000000C00200369200000204800100802F
770:10301000A2802FB6000002041201000009C021B2F4
771:1030200018003600000000F8730A03F900000000E1
772:10303000000000F80200003218003600000000F81E
773:10304000738A029910000000000000E40300363289
774:1030500002000001000000E0030037320000000021
775:10306000000000E40300363204000001000000E02C
776:1030700003003732AA040000000000E403003632E7
777:1030800009000001000000E00300373200000000EA
778:10309000000000CC0F00003200070000000000E438
779:1030A0000300363206000001000000E00300373262
780:1030B00020000000000000E4030036320800000198
781:1030C000000000E00300373200010000000000E4CF
782:1030D0000300363205000001000000E00300373233
783:1030E00030000000000000E4030036320700000159
784:1030F000000000E00300373200A00000000000E400
785:103100000300363208000008000000E003003732F8
786:1031100000000000000000A00200003200000000DB
787:10312000000000000B000032000016048B0100A01C
788:1031300012002ABA00000000000000A802000032BD
789:1031400000000000000000E0070000320000190449
790:103150000601008002802ABC000000000000009CE4
791:103160000200003200000000000000D40200003223
792:1031700000000000000000CC02000032000000004F
793:10318000000000D80200003200000000000000D063
794:103190000200003200000000000000DC02000032EB
795:1031A00000000000000000F80200003200000000F3
796:1031B000000000C80200003200000000000000C44F
797:1031C0000200003200001C048501009C12C029BAD4
798:1031D00000000000000000E4030036320B00000491
799:1031E000000000E00300373280000000000000E42F
800:1031F0000300363213000004000000E00300373201
801:1032000000200000000000E4030036320C0000043F
802:10321000000000E00300373200000000000000E47E
803:10322000030006320F000004000000E00300373204
804:1032300000040100000000E4030037320D00000428
805:10324000000000E00300373200040000000000E44A
806:103250000300363214000004000000E0030037329F
807:103260009F000000000000E4030036321500000457
808:10327000000000E00300373200000000000000E41E
809:103280000300363218000004000000E0030037326B
810:1032900060000000000000E4030036321D0000045E
811:1032A000000000E00300373200000000000000E4EE
812:1032B000030004321E000004000000E00300373267
813:1032C00070000000000000E4030036321F0000041C
814:1032D000000000E00300373200000000000000E4BE
815:1032E0000300003220000004000000E00300373239
816:1032F000A0030000000000E40300363217000004C1
817:10330000000000E00300373240000000000000E44D
818:10331000030036321B000004000000E003003732D7
819:1033200060000000000000E4030036321C000004CE
820:10333000000000E00300373200000000000000E45D
821:103340000340003216000004000000E003003732A2
822:1033500000010000000000E4030036321A000004FF
823:10336000000000E00300373220010000000000E40C
824:103370000300363219000004000000E00300373279
825:1033800080000000000000E4030036320B00000162
826:10339000000000E00300373200010000000000E4FC
827:1033A000030036320C000001000000E00300373259
828:1033B000FEFF0000000000AC0200363200000000FA
829:1033C000000000000900003218000000000000F8B2
830:1033D0000364023900004F0485010000190090BA0F
831:1033E00025260000000000E4030036320100000141
832:1033F000000000E003003732000000000000008001
833:103400000F00003200000000000000840F000032B6
834:1034100008000000000000F8F34001390800000037
835:10342000000000F8E340013908000000000000F847
836:10343000C340013908000000000000F8B340013922
837:1034400008000000000000F8A34001390800000057
838:10345000000000F89340013908000000000000F867
839:103460008340013908000000000000F87340013972
840:1034700008000000000000F8634001390800000067
841:10348000000000F85340013908000000000000F877
842:103490004340013908000000000000F833400139C2
843:1034A00008000000000000F813400139000000008F
844:1034B000000000F80380003200000000000000C897
845:1034C0003F80FC35000000000000009C020000323C
846:1034D0000000000000000000030000323E00000079
847:1034E000000000D00200363200000000000000287A
848:1034F000034038320000161304010080D20130B6B8
849:1035000000006704040100D012002DBCA0040000DC
850:10351000000000E40300363203000001000000E078
851:103520000300373200000000170000D00200003214
852:1035300000000000000000ACE100003400000000CA
853:10354000000001E00600003200000000000801E475
854:103550000600003200000000000E01EC0600003200
855:1035600000000000001001E0060000320000000032
856:10357000000000D012002D3A3E006F0402010080CE
857:10358000820D2DBC020000000000009CAE0D023236
858:1035900000000000000000A802000032300000001F
859:1035A000008886CC0700363200000000008A86CCF6
860:1035B0000700003A002400000000000409803632B1
861:1035C0000000161312000064024090B200000000D8
862:1035D000000000042940903A00007B0412000078AB
863:1035E00009C020B20000161380010080F28197B656
864:1035F0001D00161380010078E9E500B80000000006
865:103600000000007809459030000079040201008034
866:10361000C28297BC0000000000000084020000325B
867:1036200000000000000000CC030000320000810414
868:103630008E010080024028B20000BD10000000D8BA
869:10364000020000D2AA1100000000008C0E003632E9
870:1036500052000000000000740E0036321800000016
871:10366000000000E40300363209000002000000E020
872:1036700003003732FECA0000000000E403003632C7
873:103680000A000002000000E00300373200008C0452
874:1036900012010000094020B200008A0400000080EE
875:1036A0000200009000008C0412000004094020B2C7
876:1036B00000008F049F010080020090B200008E0481
877:1036C00012000008094020B202008A0404010078B8
878:1036D000092417B8060000000000007809641638B5
879:1036E00000008A0404010080028197BCFE000000F3
880:1036F0000000004403003632FE003600000000489F
881:10370000030036920000161312000000094020B298
882:103710000000950412000004094020B20000980443
883:103720009F010080020090B2000097041200000880
884:10373000094020B200000000000000B402009032F6
885:103740000000161300000080020000900000161315
886:1037500000000080020000900000161300000080AE
887:10376000020000900000161300000080020000908C
888:1037700000001613000000800200009000001613E5
889:10378000000000800200009000001613000000807E
890:10379000020000900600AA040000000C09641698BC
891:1037A0000000A10200000014084090920000DB021B
892:1037B00000000014084090923400C9030000001C6F
893:1037C000080036921200C9030000001C080036925F
894:1037D0003A00C9030000001C0800369200001613CE
895:1037E00000000080020000900000BA0200000014F7
896:1037F000084090920000DE0400000080020000906B
897:103800000000D4030000001408409092AB040000B4
898:103810000000008882CD903A0D00CD04000000FC2D
899:1038200002E416980D00DF04000000FC02E4169884
900:103830000D00E804000000FC02E416980000F60405
901:103840000000008002000090000000050000000061
902:103850000940909D000006050000008002000090D5
903:1038600000001005000000800200009000001A0512
904:10387000000000800200009000002405000000000D
905:103880000940909D00002B05000000800200009080
906:1038900000003405000000000940909D00003B0539
907:1038A00000000080020000900000AA050000000057
908:1038B000090000920000AA050000000009400092E3
909:1038C0001D07AC05000000A0020036920000BA05FA
910:1038D000000000800200009000001613000000802D
911:1038E000020000900000DE04000000DC0F40909217
912:1038F00000007E05000000800200009000008305AB
913:10390000000000D40200009210009805000000841E
914:103910001F6414980000DE04000000EC0E4090923A
915:103920000000A40500000080020000900000DE04FA
916:10393000000000D40E4090920000A7050000008017
917:103940000200009000004E06000000DC0E40909245
918:103950000000CB0500000080020000900800D005A8
919:10396000000000501F2416980000E805000000D851
920:10397000020000920D00F305000000FC02E416981E
921:103980000000F405000000D00200009200001F01BA
922:10399000000000D00200009200001513000000801B
923:1039A000020000900000161300000080020000904A
924:1039B00008000000000000F89340013900000000FA
925:1039C00000000078094590300000161306010080C1
926:1039D000228097BC3F00161304010080820D00B0C6
927:1039E0000200D104B00000A0F20B00B900000000FA
928:1039F000A00000046B4190340000020480010080AC
929:103A00000240B0B600000204040000800280B0BC96
930:103A100000000000000000D802000032000000009A
931:103A2000000000A822C02F370000000000000000A6
932:103A3000670100340042000000080000878D2A3A28
933:103A400000001613041000000700B0B200000000D0
934:103A5000001800000700D0320000161312000048C2
935:103A6000F2C138B418000000000000F8730A0339EE
936:103A700002043600000000C0020036920800020472
937:103A8000000000F8934001990000E2049F000080CC
938:103A9000020090B2000000000000000809409032CF
939:103AA000000000000000000409C0FD320200E20432
940:103AB000B00000A0F20B00B9000000000000000000
941:103AC0000B80903200000000000000000D4090329A
942:103AD00000000000A00000043B40B0310000DE0404
943:103AE0000400008002C02FBC8411DE040000008CA2
944:103AF0000E003692000016130200008002C12FBC97
945:103B000008000000000000F8934001390200EA04B8
946:103B1000B00000A0F20B00B90000ED0480010080AD
947:103B20001240B0B600000000000000043B40B0337B
948:103B30000000000000000004FD4BD0350000000034
949:103B4000000000080B00003200000000A000000C84
950:103B50001BE4B032000002040B000080020000B041
951:103B60000000F30404000080024090B21F00020431
952:103B700000000080114000990000F2040400008061
953:103B8000123EF8BA00000000000000800100F83288
954:103B900000000204000000900140F892000016139B
955:103BA000800000800281FCB60000FA049F000080C3
956:103BB000020090B2000000000000000809409032AE
957:103BC000000000000000000409C0FD3200001613D0
958:103BD00004010080428590B000000000000000E475
959:103BE0000380903209000004000000E00300373237
960:103BF00000000000000000E4034090320A000004CE
961:103C0000000000E0030037320000DE04000000C8BE
962:103C10000F81FC940000161302010080724290BCD8
963:103C20000000161306010080E24290BC000016134B
964:103C300004010078096490B500000000000000E471
965:103C40007300903C10000004000000E003003732D5
966:103C50000000DE0400000080020000900000090562
967:103C60009F000080020090B20000000000000008E9
968:103C700009409032000000000000000409C0FD323D
969:103C80000000161304010080428590B0000000007F
970:103C9000000000E40380903201000004000000E016
971:103CA0000300373200000000000000E00F80903277
972:103CB00000000000000000E4034090320200000415
973:103CC000000000E0030037320000DE04000000E4E2
974:103CD0000F409092000013059F000080020090B2F8
975:103CE00000000000000000080940903200000000C1
976:103CF0000000000409C0FD3200001613040100801A
977:103D0000428590B000000000000000E40380903283
978:103D100003000004000000E0030037320000000050
979:103D2000000000A80E80903200000000000000E4B7
980:103D30000340903204000004000000E0030037322A
981:103D40000000DE04000000AC0E40909200001D0553
982:103D50009F000080020090B20000000000000008F8
983:103D600009409032000000000000000409C0FD324C
984:103D70000000161304010080428590B0000000008E
985:103D8000000000E40380903205000004000000E021
986:103D90000300373200000000000000E403409032CE
987:103DA00006000004000000E00300373200000000BD
988:103DB000000000440F8090320000DE040000004844
989:103DC0000F4090920000161306010080824290BCC2
990:103DD0000000161304010078096490B5000028055E
991:103DE00004010080824290BC00000000000000003E
992:103DF0000900003200000000000000E403009032DF
993:103E000012000004000000E0030037320000DE046E
994:103E1000000000401F40909C00002E059F00008085
995:103E2000020090B20000000000000008094090323B
996:103E3000000000000000000409C0FD32000016135D
997:103E400004010080428590B000000000000000E402
998:103E50000380903207000004000000E003003732C6
999:103E600000000000000000E403409032080000045D
1000:103E7000000000E0030037320000DE040000008094
1001:103E8000020000900000161306010080824290BCE0
1002:103E90000000161304010078096490B5000038058D
1003:103EA00004010080824290BC00000000000000007D
1004:103EB0000900003200000000000000E4030090321E
1005:103EC00011000004000000E0030037320000DE04AF
1006:103ED000000000FC1F40909C00003E059F000080F9
1007:103EE000020090B20000000000000008094090327B
1008:103EF000000000000000000409C0FD3203090000BA
1009:103F0000000000280800363200005705000000308D
1010:103F1000080036D20000610500000044088000D28D
1011:103F20000000470504010080020084B2030E000077
1012:103F300000000028080036328000570500000030DD
1013:103F4000080036D2000061050000004408C000D21D
1014:103F50000000470504010080020084B200004E0505
1015:103F600000000044080001928002000000000000F0
1016:103F7000070036328C0501000008000007003732C8
1017:103F80000000161304100000078090B2000000002B
1018:103F900000180000074090320000000000000048B8
1019:103FA000F2C138340000161312000080020000B085
1020:103FB00018003600000000F8730A03F92000000022
1021:103FC000000000E40300363209000002000000E0B7
1022:103FD0000300373200000000000000E40340843298
1023:103FE0000A000002000000E0030037328C050100E7
1024:103FF000000000A802003732A0000000000000000E
1025:104000000900363200000000000000E00700003226
1026:104010000000540506010000190090BC0000DE04F9
1027:1040200000000080020000908C050100000000C824
1028:1040300002003732800200000000003C08003632E7
1029:1040400000000000000000340800013200005C05A0
1030:1040500002000080D2E083BC0000000000000034B9
1031:1040600008C083320000720500000080020000F0EA
1032:1040700000000000000000A0078083320000000064
1033:1040800000000030D820833A00005A050401003CAB
1034:10409000D8E083BC00000000000100800200005056
1035:1040A0000000000000000040080000320000000096
1036:1040B00000000048080000328C050100000000C824
1037:1040C0000200373200020000000000C8828D2C3A46
1038:1040D000800000000000003C0800363200000000B4
1039:1040E00000000078098078325A5A000004010080EC
1040:1040F000828D975C00006A0502010048A89E84BA80
1041:1041000000000000000000481880843A00006805A4
1042:104110000601003C28C083BC0000000000000078BD
1043:10412000098584301000000000000048888D843626
1044:1041300000006F0590010048E8A584BA0000000067
1045:10414000000000481880843A000000000000004889
1046:104150000885843000000000040100800285845C32
1047:104160000000000000010040084000520000000074
1048:10417000000000E40300833201000002000000E0C0
1049:10418000030037320C0078050000002CD8A082F91B
1050:1041900005000002000000E00300373200000000CC
1051:1041A0000000008002000030000000000001003824
1052:1041B00008403E7200000000000000E403C08232AC
1053:1041C00002000002000000E003003732020000029B
1054:1041D000000000E003003732000000000000008013
1055:1041E0000200003000007A0580000080F2403EB6F8
1056:1041F0000000000000010080020000700000810546
1057:104200009F000080020090B2000000000000000843
1058:1042100009409032000000000000000409C0FD3297
1059:1042200000000000000000840E8090320000DE04D8
1060:10423000000000880E40909208000000000000F886
1061:1042400093400139000087059F000080020090B272
1062:10425000000000000000000809409032000000004B
1063:104260000000000409C0FD32000000000000002032
1064:104270000740F5320000000000080020070000326F
1065:10428000000000000010002007C0F5320000000010
1066:10429000001800200740F632000000000020002037
1067:1042A0000780F632000000000028002007C0F63228
1068:1042B00000000000003000200700F732000000007E
1069:1042C000003800200780FF3200000000000000D806
1070:1042D0000200003200000000000000000740093228
1071:1042E000000000000008000077C02937000000002F
1072:1042F000001000000780903200000000001800004D
1073:10430000074090320000161312000048F2C138B482
1074:1043100018003600000000F8730A03F900000000DE
1075:1043200000000008C80100340000F603000000FC93
1076:104330000200009200009A0580010080F24190B6D0
1077:1043400000009B05000000C82F81FC9400000000C5
1078:10435000000000C82F81FC35000000000000008034
1079:104360000F45903000009E0502000080027EF8BCE0
1080:1043700000000000000000840F00F8320000000080
1081:10438000000000001940F837000000000000008421
1082:104390003F40F83700000000000000840F64F83A46
1083:1043A00000000000000000001900F83700000000C5
1084:1043B000000000803F00F8370000DE0400000080AD
1085:1043C0000F24F89A0000A60580010080F24190B603
1086:1043D0000000DE04000000C83F81FC940000DE0401
1087:1043E000000000C83F81FC950000A9050401008081
1088:1043F000024090BC000000000000000409C0003230
1089:104400000000DE04000000E41E40909C000000005C
1090:10441000000000A8220090370000DE04000086C0E3
1091:104420000740909208000000000000F89340013916
1092:104430000D000000000000FC02E41638000000003F
1093:1044400000000000090002320000B40504000080F2
1094:104450000200B0B200000000000000000B000032BB
1095:1044600020000000000000A0820D2A3A0000AF05E5
1096:1044700004010000190090BC0000B60500000028EF
1097:104480007901009400000000000000C83F80FC3467
1098:1044900040800000000000280980363200008111B1
1099:1044A000000000D8020000D20000020404000080D6
1100:1044B000028092BC18000000000000F8730A033963
1101:1044C00002043600000000C002003692EA05C00572
1102:1044D00004010080824D90BC00000000000000EC50
1103:1044E0000F00153200FE1F00000000F00F003732F1
1104:1044F000F0FF0000000000E80F00363298050000D1
1105:10450000000000F40F0036320000C605000000C8AD
1106:104510004F80FC953623161304010080824D90BC19
1107:1045200000000000000000EC0F80143200F81F00B3
1108:10453000000000F00F003732C0FF0000000000E86C
1109:104540000F00363298270000000000F40F003632CA
1110:1045500000000000000000C84F80FC340400000090
1111:10456000000000608F4D903A00001613600100803B
1112:10457000020000B0000016137A010080020000B0B3
1113:104580000000421100000080020000D00000DE04A4
1114:1045900000000080020000900000CD058001008036
1115:1045A000024090B600000000000000C86F80FC349C
1116:1045B0000000CF0580010080124090B6000000008E
1117:1045C000000000C85F80FC340000DE0400000080B2
1118:1045D000020000900000D20504010080B24190B0BA
1119:1045E0008007DE04000000C88F8DFC910000D40518
1120:1045F00080000080124090B60000D505000000C881
1121:104600007F80FC9500000000000000C87F80FC3423
1122:104610000000D70580000080024090B60000D80559
1123:10462000000000C88F80FC9500000000000000C85A
1124:104630008F80FC340000DA0580000080424090B694
1125:104640000000DB05000000C89F80FC950000000012
1126:10465000000000C89F80FC340000DD058000008061
1127:10466000324090B60000DE05000000C8AF80FC9527
1128:1046700000000000000000C8AF80FC340000E1052D
1129:1046800080000080224090B6841100000000008C61
1130:104690000E0036320000E305000000C81F81FC95C3
1131:1046A000AA1100000000008C0E003632000000004D
1132:1046B000000000C81F81FC340000161306010080B2
1133:1046C0008202F5BC00001613030000780900F5BD56
1134:1046D0000000161304010080E225F5B5100000006B
1135:1046E0000000004C1F2416380000DE0400000050BB
1136:1046F0001F00F59C8007161304000080828DFCB01B
1137:104700000000EC059F000080020090B20000000055
1138:104710000000000809409032000000000000000482
1139:1047200009C0FD3200000000000000001700F53A4B
1140:104730008C04010000080000070037320000161347
1141:1047400004100000078090B2000000000018000074
1142:10475000074090320000161312000040F2C138B436
1143:1047600018003600000000F8730A03F90000DE04A8
1144:1047700000000080020000900000DE04000000EC59
1145:10478000034090920000161304000080024090BC89
1146:104790000000F505B20000D8020000B200000000E1
1147:1047A000000201EC16E46E3A08000000000000F878
1148:1047B0009340013900001F06171001F802006EB285
1149:1047C0000600000604010080828D2FB00300000067
1150:1047D000000000F8828D2F3200C061100000002818
1151:1047E000098036D200000000000201EC16C06E3CC9
1152:1047F00000000000001886C80600003218003600CD
1153:10480000000000F8730A03F900000106000000D060
1154:1048100002000092000007060419868002806CBC2A
1155:10482000000016138001008012802FB600000000E7
1156:104830000000000009006E3200000000C108000402
1157:1048400009006E3200000000C01586780FC06C327F
1158:1048500000000D068001008022802FB600000D06AA
1159:10486000001886C8064000920000161380010080E0
1160:1048700022802FB6000000000040000009006E32C8
1161:1048800000000000C248000409006E320000000071
1162:10489000C01686780FC06C3200000D0680010080C3
1163:1048A00012802FB600000000001886C806000032F3
1164:1048B0000040000000000028098036320000150684
1165:1048C0000402018002C06EBC00006110000201EC15
1166:1048D00016C06EDC000013068000008002802FB638
1167:1048E00000001506810000F822802FB40000150694
1168:1048F000001886C80640009200001506820000F8E5
1169:1049000012802FB400000000001886C80600003294
1170:10491000000016130401008002002DBC00001613D5
1171:104920000401008002802DBC00000000001086C839
1172:1049300006000032000000000000000007C00A323C
1173:10494000003800000008000007003632000016138F
1174:1049500004100000070090B20000000000180000E2
1175:10496000074090320000161312000040F2C138B424
1176:1049700018003600000000F8730A03F90000000078
1177:10498000170100F8A2802F34000016130210868051
1178:1049900072826CBC00000000001086A842806C3758
1179:1049A00000002A061200703802007EB200001613C2
1180:1049B0001200703C02007EB200001613120070302C
1181:1049C00002007EB2000016131200703402007EB2A4
1182:1049D0000000210602010080B2822ABC0000000013
1183:1049E000170000D00200003206000006040100801B
1184:1049F000828D2FB00000FA050403018002C06EBC56
1185:104A000000003506000000800200009000002C0627
1186:104A10000403018002C06EBC00003506001086C889
1187:104A200046802A9600000000001086C846802A367C
1188:104A3000000030068000008012802FB6030032068E
1189:104A4000220000F8828D2FB200003206001886C8BE
1190:104A500006000092000035068000008022802FB6FC
1191:104A600000000000C20100F802802F3500C0611074
1192:104A700000000028098036D200000000000201EC8E
1193:104A800016C06E3C18003600000000F8730A03F9E7
1194:104A900000000000001001E006802F32000000003E
1195:104AA000000000A8E100003400000000A20000FCAB
1196:104AB000020000320000F60380010080A2802FB6C1
1197:104AC00000003B06B90100D8028001B20000F603E5
1198:104AD000000000F802000092000000000000003812
1199:104AE0001880F73A0000000000000038F8BF83305B
1200:104AF00000003F0604010080F2BD83BC0000F60305
1201:104B0000A90000F80200009200C046061801000C3F
1202:104B1000A8CD3EB200004206840000741F40F7BAE0
1203:104B20000000F603A90000F8020000920000000057
1204:104B3000000000740F00003200C046061801000C8F
1205:104B4000A8CD3EB218003600000000F8738A03F9C1
1206:104B500000004306000000B00200009200000000C8
1207:104B60000000007C0F80833200000000002800005D
1208:104B70000700003200000000003000000700003293
1209:104B800000010080003800000700373200000000FC
1210:104B9000003C000C0780833200001613120000480E
1211:104BA00002C080B20000161380010080A2802FB6E0
1212:104BB0000000F603A9000008E80100940000540674
1213:104BC00004010080A2C0EDBC52000000000000748F
1214:104BD0000E00363200000000000000C00E4001321E
1215:104BE000407E0500000000B40E00373200000000D7
1216:104BF000000000C40E80073264005A06000000CC9A
1217:104C00000E003692640016130401008082CDEDBCC4
1218:104C100029000000000000740E0036320000000081
1219:104C2000000000C00E400032A08C0000000000B464
1220:104C30000E00363200000000000000C40EC000323A
1221:104C400000000000000000CC0E80023210000000C6
1222:104C5000000000E4337BEC391E000001000000E09E
1223:104C60000300373200000000000000C86EC0EC37BF
1224:104C70000000DE04000000D80EC0ED920000161304
1225:104C800004310280A2DB2CBC00001613040100805A
1226:104C9000028080B200001613021C018052C06EBC5C
1227:104CA0002C0016130201008082CD81BC3F00161338
1228:104CB0000200008082CD81BC3600670604000080BF
1229:104CC00082CD81BC0F0000000000001009003632C8
1230:104CD0002C0000000000001489CD813C10008012DF
1231:104CE000001C011459E46ED96F0600000000008812
1232:104CF00082CD813A0000161304010080028080B248
1233:104D00000000161304310280A2DB2CBC0000161335
1234:104D10000218018092C06EBC2C00161302000080A5
1235:104D200082CD81BC10000000000000100900363266
1236:104D3000100080120018011479E06ED96F0600008F
1237:104D40000000008882CD813AAE060000001801887C
1238:104D500082CD6E3AB70600000018018882CD6E3A07
1239:104D6000C00600000018018882CD6E3AC906000016
1240:104D70000018018882CD6E3AD20600000018018822
1241:104D800082CD6E3ADB0600000018018882CD6E3AB3
1242:104D9000E40600000018018882CD6E3AED0600009E
1243:104DA0000018018882CD6E3AF606000000180188CE
1244:104DB00082CD6E3AFF0600000018018882CD6E3A5F
1245:104DC000080700000018018882CD6E3A1107000024
1246:104DD0000018018882CD6E3A1A0700000018018879
1247:104DE00082CD6E3A230700000018018882CD6E3A0A
1248:104DF0002C0700000018018882CD6E3A35070000AC
1249:104E00000018018882CD6E3A3E0700000018018824
1250:104E100082CD6E3A470700000018018882CD6E3AB5
1251:104E2000500700000018018882CD6E3A5907000033
1252:104E30000018018882CD6E3A6207000000180188D0
1253:104E400082CD6E3A6B0700000018018882CD6E3A61
1254:104E5000740700000018018882CD6E3A7D070000BB
1255:104E60000018018882CD6E3A86070000001801887C
1256:104E700082CD6E3A8F0700000018018882CD6E3A0D
1257:104E8000980700000018018882CD6E3AA107000043
1258:104E90000018018882CD6E3AAA0700000018018828
1259:104EA00082CD6E3AB30700000018018882CD6E3AB9
1260:104EB000BC0700000018018882CD6E3AC5070000CB
1261:104EC0000018018882CD6E3ACE07000000180188D4
1262:104ED00082CD6E3AD70700000018018882CD6E3A65
1263:104EE000E00700000018018882CD6E3AE907000053
1264:104EF0000018018882CD6E3AF20700000018018880
1265:104F000082CD6E3AFB0700000018018882CD6E3A10
1266:104F1000040800000018018882CD6E3A0D080000D8
1267:104F20000018018882CD6E3A16080000001801882A
1268:104F300082CD6E3A1F0800000018018882CD6E3ABB
1269:104F40000000A803000000D4020000920000EC0260
1270:104F5000000000800200009028080000001C01886A
1271:104F600082CD6E3A2D080000001C018882CD6E3A79
1272:104F700032080000001C018882CD6E3A370800001C
1273:104F8000001C018882CD6E3A3C080000001C01889C
1274:104F900082CD6E3A41080000001C018882CD6E3A35
1275:104FA00046080000001C018882CD6E3A4B080000C4
1276:104FB000001C018882CD6E3A50080000001C018858
1277:104FC00082CD6E3A55080000001C018882CD6E3AF1
1278:104FD0005A080000001C018882CD6E3A5F0800006C
1279:104FE000001C018882CD6E3A64080000001C018814
1280:104FF00082CD6E3A69080000001C018882CD6E3AAD
1281:105000006E080000001C018882CD6E3A7308000013
1282:10501000001C018882CD6E3A78080000001C0188CF
1283:1050200082CD6E3A0000B003000000D4020000926E
1284:105030000000C603000000D4020000920000710AC4
1285:10504000000000100880019200001613000000808C
1286:105050000200009000001613000000800200009083
1287:1050600000001613000000800200009000001613DC
1288:105070000000008002000090000016130000008075
1289:105080000200009000001613000000800200009053
1290:1050900000001613000000800200009000001613AC
1291:1050A0000000008002000090000016130000008045
1292:1050B000020000900000B10A000000100880009279
1293:1050C000000016130000008002000090000016137C
1294:1050D0000000008002000090000016130000008015
1295:1050E00002000090000016130000008002000090F3
1296:1050F000000016130000008002000090000016134C
1297:1051000000000080020000900000161300000080E4
1298:1051100002000090000016130000008002000090C2
1299:105120000000161300000080020000900000C00A7A
1300:10513000000000100880009200001613000000809C
1301:105140000200009000001613000000800200009092
1302:105150000000130B0000001008400192000016131D
1303:105160000000008002000090000016130000008084
1304:105170000200009000001613000000800200009062
1305:1051800000001613000000800200009000001613BB
1306:10519000000000800200009000001B0B00000010C7
1307:1051A00008C000920000161300000080020000906A
1308:1051B00000001B0B0000001008C000920000220E2F
1309:1051C000000000100840019200001613000000804B
1310:1051D0000200009000001B0B0000001008C00092AD
1311:1051E000000016130000008002000090000016135B
1312:1051F00000000080020000900000161300000080F4
1313:105200000200009000002E0B0000001008C0009269
1314:1052100000001613000000800200009000002E0B1A
1315:105220000000001008C000920000220E00000010D4
1316:105230000840019200001613000000800200009058
1317:1052400000002E0B0000001008C000920000161392
1318:105250000000008002000090000016130000008093
1319:105260000200009000001613000000800200009071
1320:1052700000002C0B0000001008C000920000161364
1321:10528000000000800200009000002C0B00000010C5
1322:1052900008C000920000220E000000100840019299
1323:1052A00000001613000000800200009000002C0B8C
1324:1052B0000000001008C000920000161300000080DB
1325:1052C0000200009000001613000000800200009011
1326:1052D000000016130000008002000090000016136A
1327:1052E00000000080020000900000F50B000000109C
1328:1052F00008C000920000180B000000100800019286
1329:105300000000130B0000001008400192000016136B
1330:1053100000000080020000900000161300000080D2
1331:1053200002000090000016130000008002000090B0
1332:105330000000161300000080020000900000161309
1333:1053400000000080020000900000161300000080A2
1334:10535000020000900000EB0B00000010088000929B
1335:105360000000180B00000010080001920000130B51
1336:105370000000001008400192000016130000008099
1337:105380000200009000001613000000800200009050
1338:1053900000001613000000800200009000001613A9
1339:1053A0000000008002000090000016130000008042
1340:1053B0000200009000001613000000800200009020
1341:1053C0000000EB0B00000010080001920000180B19
1342:1053D00000000010080001920000130B00000010F4
1343:1053E00008400192000016130000008002000090A7
1344:1053F0000000161300000080020000900000161349
1345:1054000000000080020000900000161300000080E1
1346:1054100002000090000016130000008002000090BF
1347:105420000000161300000080020000900000790CBC
1348:1054300000000010088000920000180B000000100F
1349:10544000080001920000130B0000001008400192B8
1350:1054500000001613000000800200009000001613E8
1351:105460000000008002000090000016130000008081
1352:10547000020000900000161300000080020000905F
1353:1054800000001613000000800200009000001613B8
1354:1054900000000080020000900000790C0000001065
1355:1054A000080001920000180B000000100800019293
1356:1054B0000000130B000000100840019200001613BA
1357:1054C0000000008002000090000016130000008021
1358:1054D00002000090000016130000008002000090FF
1359:1054E0000000161300000080020000900000161358
1360:1054F000000000800200009000002D0B0000001052
1361:105500000880009200001613000000800200009046
1362:1055100000002D0B00000010088000920000220EF9
1363:1055200000000010084001920000161300000080E7
1364:10553000020000900000161300000080020000909E
1365:1055400000001613000000800200009000001613F7
1366:105550000000008002000090000016130000008090
1367:105560000200009000002D0B0000001008000192C6
1368:1055700000001613000000800200009000002D0BB8
1369:1055800000000010080001920000220E0000001030
1370:1055900008400192000016130000008002000090F5
1371:1055A0000000161300000080020000900000161397
1372:1055B0000000008002000090000016130000008030
1373:1055C000020000900000161300000080020000900E
1374:1055D00000001613000000800200009000007D080B
1375:1055E0000000001008000192000016130000008067
1376:1055F0000200009000007D080000001008400192A9
1377:105600000000161300000080020000900000161336
1378:1056100000000080020000900000161300000080CF
1379:1056200002000090000016130000008002000090AD
1380:105630000000161300000080020000900000430EDE
1381:1056400000000010084001920000390E0000001018
1382:10565000084001920000430E000000100840019233
1383:105660000000130B00000010084001920000161308
1384:1056700000000080020000900000430E00000010B7
1385:105680000840019200001613000000800200009004
1386:105690000000161300000080020000900000B90A0C
1387:1056A00000000010084000920000B90A000000103D
1388:1056B000088000920000B90A0000001008C00092A3
1389:1056C0000000B90A00000010080001920000BE0AA4
1390:1056D00000000010084001920000B90A000000100C
1391:1056E000088001920000B90A0000001008C0019271
1392:1056F0000000161300000080020000900000161346
1393:1057000000000080020000900000161300000080DE
1394:10571000020000900000F60C0000001008800092CB
1395:105720000000F60C0000001008C000920000F60C0B
1396:1057300000000010080001920000130B0000001090
1397:105740000840019200001613000000800200009043
1398:105750000000F60C0000001008C0019200001613B3
1399:10576000000000800200009000001613000000807E
1400:10577000020000900000161300000080020000905C
1401:1057800000001613000000800200009000001613B5
1402:10579000000000800200009000001613000000804E
1403:1057A0000200009000004D0E000000100840019221
1404:1057B0000000161300000080020000900000161385
1405:1057C000000000800200009000001613000000801E
1406:1057D00002000090000016130000008002000090FC
1407:1057E0000000CB0E00000010084001920000CF0E18
1408:1057F00000000010084001920000310E000000106F
1409:10580000084001920000CF0E0000001008400192F5
1410:1058100000007D08000000100840019200001613EF
1411:1058200000000080020000900000CF0E0000001079
1412:105830000840019200007E0800000010080002925B
1413:1058400000001613000000800200009000001613F4
1414:1058500000000080020000900000D00E0000001048
1415:10586000084001920000310E000000100840019233
1416:105870000000D00E000000100840019200007D08DA
1417:105880000000001008400192000016130000008084
1418:10589000020000900000D00E0000001008400192AD
1419:1058A0000000161300000080020000900000161394
1420:1058B000000000800200009000001613000000802D
1421:1058C000020000900000D50E000000100880009239
1422:1058D0000000D50E0000001008C000920000D50E98
1423:1058E00000000010080001920000130B00000010DF
1424:1058F0000840019200001613000000800200009092
1425:105900000000D50E0000001008C001920000161320
1426:1059100000000080020000900000161300000080CC
1427:1059200002000090000016130000008002000090AA
1428:105930000000161300000080020000900000161303
1429:10594000000000800200009000001613000000809C
1430:10595000020000900000161300000080020000907A
1431:105960000000A00A0000001008400092000016137A
1432:10597000000000800200009000001613000000806C
1433:10598000020000900000161300000080020000904A
1434:105990000000161300000080020000900000EA0ED4
1435:1059A00000000010088000920000EA0E00000010C5
1436:1059B00008C000920000EA0E0000001008000192EA
1437:1059C0000000130B000000100840019200001613A5
1438:1059D00000000080020000900000EA0E00000010AD
1439:1059E00008C0019200001613000000800200009021
1440:1059F0000000161300000080020000900000161343
1441:105A000000000080020000900000030F0000001062
1442:105A1000088000920000030F0000001008C00092F0
1443:105A20000000030F00000010080001920000130B9B
1444:105A300000000010084001920000161300000080D2
1445:105A4000020000900000030F0000001008C0019247
1446:105A500000001613000000800200009000007D0886
1447:105A600000000010080000920000161300000080E3
1448:105A70000200009000007D080000001008800092E5
1449:105A80000000150F0000001008C0009200007D0803
1450:105A9000000000100800019200007D0800000010C6
1451:105AA00008400192000016130000008002000090E0
1452:105AB0000000161300000080020000900000161382
1453:105AC000000000800200009000001613000000801B
1454:105AD00002000090000016130000008002000090F9
1455:105AE00000007D0800000010088000920000260FD2
1456:105AF000000000100880009200007D0800000010E7
1457:105B00000800019200007D0800000010084001928A
1458:105B10000000161300000080020000900000161321
1459:105B200000000080020000900000161300000080BA
1460:105B30000200009000001613000000800200009098
1461:105B400000001613000000800200009000007D0895
1462:105B500000000010088000920000260F00000010D6
1463:105B60000800019200007D0800000010080001926A
1464:105B700000007D080000001008400192000016138C
1465:105B8000000000800200009000001613000000805A
1466:105B90000200009000001613000000800200009038
1467:105BA0000000161300000080020000900000161391
1468:105BB000000000800200009000001613000000802A
1469:105BC0000200009000007D08000000100880009294
1470:105BD00000001613000000800200009000007D0805
1471:105BE0000000001008400192000016130000008021
1472:105BF00002000090000016130000008002000090D8
1473:105C00000000161300000080020000900000161330
1474:105C100000000080020000900000161300000080C9
1475:105C2000020000900000FA0E0000001008800092B0
1476:105C30000000FA0E0000001008C000920000FA0EEA
1477:105C400000000010080001920000130B000000107B
1478:105C5000084001920000161300000080020000902E
1479:105C60000000FA0E0000001008C001920000161398
1480:105C70000000008002000090000016130000008069
1481:105C80000200009000001613000000800200009047
1482:105C900000001613000000800200009000001613A0
1483:105CA0000000008002000090000016130000008039
1484:105CB000020000900000390F00000010080002925E
1485:105CC0000000161300000080020000900000161370
1486:105CD0000000008002000090000016130000008009
1487:105CE00002000090000016130000008002000090E7
1488:105CF0000000161300000080020000900000C00A9F
1489:105D00000000001008C0019200001613000000807F
1490:105D100002000090000016130000008002000090B6
1491:105D20000000130B00000010084001920000161341
1492:105D300000000080020000900000010B0000001035
1493:105D400008C00192000016130000008002000090BD
1494:105D500000001613000000800200009000001613DF
1495:105D600000000080020000900000C00A0000001047
1496:105D700008800092000016130000008002000090CE
1497:105D80000000161300000080020000900000130BBA
1498:105D9000000000100840019200001613000000806F
1499:105DA000020000900000010B0000001008C00192EA
1500:105DB000000016130000008002000090000016137F
1501:105DC0000000008002000090000016130000008018
1502:105DD000020000900000260D0000001008800092D4
1503:105DE0000000161300000080020000900000260D45
1504:105DF00000000010088000920000220E0000001039
1505:105E0000084001920000161300000080020000907C
1506:105E10000000260D000000100880009200001613FC
1507:105E200000000080020000900000161300000080B7
1508:105E30000200009000001613000000800200009095
1509:105E40000000260D0000001008000192000016134B
1510:105E500000000080020000900000260D00000010ED
1511:105E6000080001920000220E00000010084001927C
1512:105E70000000161300000080020000900000260DB4
1513:105E800000000010080001920000161300000080BE
1514:105E90000200009000001613000000800200009035
1515:105EA0000000161300000080020000900000260D84
1516:105EB000000000100800019200001613000000808E
1517:105EC000020000900000260D000000100800019262
1518:105ED0000000220E0000001008400192000016137E
1519:105EE00000000080020000900000260D000000105D
1520:105EF00008000192000016130000008002000090CC
1521:105F0000000016130000008002000090000016132D
1522:105F100000000080020000900000260D000000102C
1523:105F2000088000920000161300000080020000901C
1524:105F30000000260D00000010088000920000220ED4
1525:105F400000000010084001920000161300000080BD
1526:105F5000020000900000260D000000100880009252
1527:105F600000001613000000800200009000001613CD
1528:105F70000000008002000090000016130000008066
1529:105F80000200009000001613000000800200009044
1530:105F90000000161300000080020000900000260D93
1531:105FA0000000001008C001920000220E0000001046
1532:105FB00008400192000016130000008002000090CB
1533:105FC0000000260D0000001008C00192000016130A
1534:105FD0000000008002000090000016130000008006
1535:105FE00002000090000016130000008002000090E4
1536:105FF0000000AB0D00000010088000920000161396
1537:1060000000000080020000900000161300000080D5
1538:106010000200009000007D0800000010084001927E
1539:106020000000161300000080020000900000AB0D7D
1540:10603000000000100880009200001613000000808D
1541:106040000200009000001613000000800200009083
1542:106050000000161300000080020000900000AB0D4D
1543:10606000000000100880009200001613000000805D
1544:106070000200009000001613000000800200009053
1545:1060800000007D0800000010084001920000161377
1546:1060900000000080020000900000AB0D0000001026
1547:1060A00008C001920000161300000080020000905A
1548:1060B000000016130000008002000090000016137C
1549:1060C0000000008002000090000016130000008015
1550:1060D00002000090000016130000008002000090F3
1551:1060E00000001613000000800200009000007D08F0
1552:1060F000000000100840019200001613000000800C
1553:10610000020000900000B50D0000001008C00192D0
1554:10611000000016130000008002000090000016131B
1555:1061200000000080020000900000161300000080B4
1556:106130000200009000001613000000800200009092
1557:1061400000001613000000800200009000001613EB
1558:10615000000000800200009000007D080000001098
1559:106160000840019200001613000000800200009019
1560:106170000000B50D0000001008800092000016130A
1561:106180000000008002000090000016130000008054
1562:106190000200009000001613000000800200009032
1563:1061A000000016130000008002000090000016138B
1564:1061B0000000008002000090000016130000008024
1565:1061C000020000900000B30E000000100840019291
1566:1061D000000016130000008002000090000016135B
1567:1061E00000000080020000900000161300000080F4
1568:1061F0000200009000008608000000100840009295
1569:10620000000016130000008002000090000016132A
1570:1062100000000080020000900000161300000080C3
1571:1062200002000090000016130000008002000090A1
1572:106230000000161300000080020000900000DD083E
1573:10624000000000100880009200001613000000807B
1574:106250000200009000001613000000800200009071
1575:106260000000C6090000001008000192000016138B
1576:10627000000000800200009000008508000000106F
1577:10628000080001920000D0090000001008000192EF
1578:106290000000D00900000010080001920000D009A1
1579:1062A000000000100800019200001613000000809A
1580:1062B0000200009000001613000000800200009011
1581:1062C0000000EF0800000010088000920000161384
1582:1062D000000000800200009000008508000000100F
1583:1062E00008000192000016130000008002000090D8
1584:1062F000000016130000008002000090000000095A
1585:1063000000000010088000920000C4090000001086
1586:10631000088000920000850800000010080001922B
1587:106320000000161300000080020000900000E60943
1588:1063300000000010084000920000E6090000001074
1589:10634000088000920000E6090000001008C00092DA
1590:1063500000008508000000100800019200001613DC
1591:106360000000008002000090000016130000008072
1592:106370000200009000000C0A0000001008C000920B
1593:106380000000161300000080020000900000850845
1594:1063900000000010080001920000161300000080A9
1595:1063A0000200009000001613000000800200009020
1596:1063B00000000F0A000000100800019200000F0A00
1597:1063C0000000001008000192000085080000001085
1598:1063D00008000192000016130000008002000090E7
1599:1063E0000000161300000080020000900000110A57
1600:1063F00000000010088000920000110A0000001048
1601:1064000008C00092000085080000001008000192FA
1602:1064100000001613000000800200009000008508B4
1603:1064200000000010084000920000DC09000000108D
1604:10643000088000920000DC090000001008C00092F3
1605:106440000000850800000010080001920000850887
1606:1064500000000010080000920000850800000010F5
1607:10646000084000920000250A0000001008800092F9
1608:106470000000250A0000001008C0009200008508F6
1609:1064800000000010080001920000161300000080B8
1610:10649000020000900000161300000080020000902F
1611:1064A0000000600A000000100880009200008508CB
1612:1064B0000000001008C000920000850800000010D5
1613:1064C00008000192000016130000008002000090F6
1614:1064D00000001613000000800200009000003F0A38
1615:1064E00000000010088000920000161300000080D9
1616:1064F00002000090000085080000001008000192D2
1617:106500000000161300000080020000900000161327
1618:1065100000000080020000900000EC080000001065
1619:106520000880009200001613000000800200009016
1620:1065300000008508000000100800019200001613FA
1621:106540000000008002000090000016130000008090
1622:10655000020000900000540A000000100880009221
1623:106560000000540A0000001008C0009200008508D6
1624:1065700000000010080001920000161300000080C7
1625:10658000020000900000161300000080020000903E
1626:1065900000001C0A000000100880009200001C0A85
1627:1065A0000000001008C000920000850800000010E4
1628:1065B0000800019200001613000000800200009005
1629:1065C00000001613000000800200009000006D0A19
1630:1065D000000000100880009200006D0A000000100A
1631:1065E00008C0009200008508000000100800019219
1632:1065F0000800F303001801E8762081990800EF03F2
1633:10660000001801E87620819900004B1200000080FC
1634:10661000020000F0080082081D1901E8762081B907
1635:106620000000F303000000F862812F950000F303DF
1636:106630008000008002812FB62A0016131200002C61
1637:1066400082CD2EB20000F303000000F802812F94E7
1638:106650000800F303001C01E876208199000016135E
1639:10666000800F018002C06EB600000000000000D85C
1640:106670000200003200000000000E01EC06C06E3582
1641:106680005400000000000000070036320000000047
1642:10669000000000BCA8002D37B40401000008000071
1643:1066A000C7CD8B3A000000000000007899C02C375D
1644:1066B000B400000000000078898D973A000016139E
1645:1066C0000210000087BF97BA000000000018000009
1646:1066D0000740FE320000161312000040F2C138B429
1647:1066E000000000000090007809006E3200001613D0
1648:1066F00004A0000009806EB20000950804A5000403
1649:1067000009806EB200000000000000040900903211
1650:106710000000161302010080026490BC000098087B
1651:1067200004010004096490BC0000000000000004A3
1652:1067300009400032080000006E3402E81624903947
1653:1067400000009908B71002E0068097B200009C088C
1654:1067500080000080F280FCB600009D08000000C8A8
1655:10676000FF80FC9400009E089F990080821BEEBC75
1656:1067700000000000009800E00E006E3200000000F3
1657:10678000A70000800200003018003600000000F86A
1658:10679000730A03F9000000000010021C09006E32A9
1659:1067A0004000A3080601008082CD91BC00C0A4086F
1660:1067B000001802E00680369200E00000001802E0B7
1661:1067C00006803632000000000000002009800332FD
1662:1067D0000000A70880D7018032C06EB6000000001C
1663:1067E000000000204900923A0000000000980118C3
1664:1067F00009006E3200000000000A022409C06E3257
1665:106800000000000000C0012809806E320000B508B9
1666:10681000800E018012C06EB602000000003C02EC47
1667:106820000600363200000000000000004901923AE4
1668:106830000000B10880D6018042C06EB60082000020
1669:10684000001002E0A6CD913200A00000002C02E86A
1670:10685000060036322800BF08003A02EC06003692E5
1671:1068600000000000D301001CD9C191340082000057
1672:10687000001002E0A6CD913200A00000002C02E83A
1673:10688000060036323400BF08003A02EC06003692A9
1674:1068900004000000003C02EC060036322800000034
1675:1068A00000000000890D923A0000BB0880D60180EC
1676:1068B00042C06EB600860000001002E0A6CD913204
1677:1068C00004A00000002C02E8060036321400BF08C5
1678:1068D000003A02EC0600369200000000D301001CD2
1679:1068E000D9C1913400860000001002E0A6CD91329B
1680:1068F00004A00000002C02E8060036322000BF0889
1681:10690000003A02EC0600369212000000003802EC59
1682:1069100086CD913A08000000002802E886249039CC
1683:1069200000000000002002E0962414370000000060
1684:10693000004001E0068091320000C508040100809B
1685:10694000028092BC0000000000C001E0060000329E
1686:1069500000000000003000E00600003200000000EF
1687:1069600000B000E00600003220000000000000003F
1688:10697000070036320000000000000078A9002D3723
1689:106980000005010000080000C78D973A00000000D4
1690:106990000000007899C02C3700010000000000784A
1691:1069A000898D973A000016130210000087BF97BA2E
1692:1069B00000000000001800000740FE32000016131F
1693:1069C00012000048F2C138B40000D20880D7012C70
1694:1069D00009C06EB200000000DAD701EC06C06E35C7
1695:1069E00000000000005A01EC0640ED32AE0000004D
1696:1069F000000000781900363AAF0016130401008039
1697:106A0000828D97BC00000000005C01E806808B329C
1698:106A10000000D7088001008062C092B6000000002C
1699:106A2000000000F882812F3418003600000000F8C2
1700:106A3000730A03F9000000000004013808C06E3238
1701:106A40000000161304C9018002806EBC0000000023
1702:106A5000006201EC06808332010085081201002CDF
1703:106A600082CD2EB2000016130000008002000090BC
1704:106A700000000000005401FC02C06E320000000063
1705:106A8000000000D80280013200C0E3081801000CA9
1706:106A9000A8CD3EB2208000000000000808803632F9
1707:106AA0002D00EF031201002C82CD2EB20000161330
1708:106AB0000000008002000090000000000062013829
1709:106AC00008C06E320008008000000028090037323C
1710:106AD0000060EB1100000008088036F20000161379
1711:106AE000870601EC16C06EBC000085080B00008014
1712:106AF000020000B0000085088000008072812FB67F
1713:106B000000000000000000F872812F343D0085086D
1714:106B10001201002C82CD2EB200001613000000805E
1715:106B200002000090000016130407018012C06EBC22
1716:106B30000000161380000080B2812FB60000EF081D
1717:106B4000000000F8B2812F940000161304A0001872
1718:106B500008006EB2000016130406018002C06EBC6D
1719:106B600000009E1200000080020000F000000013F0
1720:106B70000078016008006EF20000F508120100C8FC
1721:106B8000020020B20000F80800000080020000901F
1722:106B9000000005091201005C088020B20000F8081E
1723:106BA0001201006002802CB2000016130000008069
1724:106BB000020000900000FA0804000080024080BC3F
1725:106BC00000000000000000F81F80FF3A0000FD08F0
1726:106BD00080010080A2802FB618003600CA0000F89D
1727:106BE000730A03F9000016130401008002802DBC13
1728:106BF000000085088000008072812FB63D001613CA
1729:106C00001200002C82CD2EB200008508000000F892
1730:106C100072812F94000016130406018002C06EBC1E
1731:106C20000000000000BC001408806E320000F8086C
1732:106C3000120000C8020020B20000F6081200005C3A
1733:106C4000088020B20000161304A0001808006EB2DD
1734:106C5000000000000000007879613832000016134F
1735:106C60001218024CE2256EB20000161304010080D7
1736:106C700002402DBC080000000010020078E16E39CF
1737:106C8000000000000018002007000032070000008C
1738:106C90000000003878CAE939000016130400003CEF
1739:106CA000084080B2000000000090006C08006E32C6
1740:106CB000000000000098004C08006E32000016131F
1741:106CC0000400008032E186B200000000510000D8CC
1742:106CD00002000032000000004D00000067E0833E2B
1743:106CE00000000000000800000700803200000000E3
1744:106CF0000010000007C086320000000000180000ED
1745:106D000007C084320000000000000018D8A0813CB9
1746:106D10000000840904B000E0D6206EBC0000161309
1747:106D200009010080020000B0000043090400003C9B
1748:106D3000D8E083BC0000161304010080028081BCEF
1749:106D4000000024098000008092802FB600001C09FA
1750:106D50001201000009C021B218003600000000F83E
1751:106D6000730A03F91D0000000000007809A4173819
1752:106D70000000210904010080128097BC0000161356
1753:106D800080010080A2802FB600001B09670000F878
1754:106D9000A2802FB500001C090000000009C021924C
1755:106DA0000000230904000080228097BC0000161315
1756:106DB00004010080328097BC00000000C90100D8A7
1757:106DC00002408432000027090400008072802DBC3C
1758:106DD0000000161312000044E2E038B2000034094B
1759:106DE000510000D812802D9A0000000000000078A9
1760:106DF000F98183340000161312000044E2E538B232
1761:106E000000002C098000008082802FB60000F7115E
1762:106E100000A0015008006EF20000000000F801E040
1763:106E20000600853200002E09120100E802C021B2DE
1764:106E300018003600000000F8730A03F90000320958
1765:106E40000401008002802DBC000016138001008028
1766:106E5000A2802FB600002D09670000F8A2802FB590
1767:106E600000001613120000E802C021B20000161341
1768:106E70000401008072802DBC00000000510000D889
1769:106E800002000032000039092A010000D82080BA2F
1770:106E9000000038091201000009C021B218003600B4
1771:106EA000000000F8730A03F900000000000000D899
1772:106EB000024084321D0016130400008002A417B89B
1773:106EC00000000000CAE0006C08006E320000000004
1774:106ED00000E8004C08006E320000161304F00018A1
1775:106EE00008006EB2000000000000003818818335F1
1776:106EF0000000100904B00080829B81BC00001613C2
1777:106F00000D010080020000B0000016139F00001465
1778:106F1000184081BC00000000CA0100F842802F35F3
1779:106F200008A0100912010040A2CD39B200001613CA
1780:106F3000000000800200009000004E09293402B8D1
1781:106F400008806EB2000046091201000009C021B29B
1782:106F500018003600000000F8730A03F91D00000055
1783:106F60000000007809A4173800004B0904010080D4
1784:106F7000128097BC0000161380010080A2802FB6FB
1785:106F800000004509670000F8A2802FB500004609FF
1786:106F90000000000009C0219200004D09040000809B
1787:106FA000228097BC0000161304010080328097BC39
1788:106FB00000000000C90100D8024084320000000037
1789:106FC00000000078F9818334000016131200004499
1790:106FD000E2E538B2000056092800006CD8E086BA15
1791:106FE0000000F61100A0015008006EF200005609E2
1792:106FF0001DF801E0060085B20000560980000080FF
1793:1070000002812FB62A0016131200002C82CD2EB258
1794:1070100000000000000000F802812F3400005C092D
1795:1070200004A000E0068081B20000000000BC00E87F
1796:107030000640813200000000009000E006C0863269
1797:1070400000000000009800E006C084320000161323
1798:107050000400008032E186B2000070090000008068
1799:10706000020000900000620980010080A2802FB61B
1800:1070700000005F091201000009C021B218003600AB
1801:10708000000000F8730A03F91D0062090401008082
1802:1070900002A417B80000161380000080E2802FB60B
1803:1070A00000005E09000000F8E2802F94000000005C
1804:1070B00000E0006C08006E3200000000CAE8004CDE
1805:1070C00008006E32000016130400008032E186B220
1806:1070D0000000161304F0001808006EB200006B09DF
1807:1070E00004B00080829B81BC000016130D0100805B
1808:1070F000020000B0000016139F000014184081BC6D
1809:1071000000000000CA0100F842802F3508A01613C5
1810:1071100012000040A2CD39B20000000000A000E043
1811:107120000680813200000000009800E006C0843232
1812:1071300000000000009000E006C086320000161338
1813:107140000400008032E186B20000000000BC00E8CC
1814:1071500006408132000076092A5D01E806808BB284
1815:10716000000073091201000009C021B218003600A6
1816:10717000000000F8730A03F91D007609040100807D
1817:1071800002A417B80000161380000080E2802FB61A
1818:1071900000007209000000F8E2802F9410247909A1
1819:1071A000370000F8A28D2FB13D0016131200002CFD
1820:1071B00082CD2EB200000000000000F872812F3452
1821:1071C00008000000CA1C01E8762081390000541034
1822:1071D0000000002CF90100F400007F09800000800D
1823:1071E000E2802FB600007E091201000009C021B222
1824:1071F00018003600000000F8730A03F91D0016138A
1825:107200000401008002A417B800001613800100805A
1826:1072100082802FB60000161304010080C20003BC58
1827:10722000100000000018008067A173393000F603D9
1828:107230001201005CA28D2CB2000016130000008029
1829:107240000200009000008A098000008092802FB622
1830:1072500018003600000000F8730A03F91D00161329
1831:107260000400007809A417B8000089090400008010
1832:10727000228097BC0000161304010080328097BC66
1833:1072800000000000C90100D802408432000016133B
1834:1072900004010080D2E083BC000016132A000078AD
1835:1072A000F98183B40000161312000044E2E538B2FD
1836:1072B0000000641100000030030038F20000920961
1837:1072C0001D000038188183B50000920980000080FD
1838:1072D00002812FB62A0016131200002C82CD2EB286
1839:1072E00000000000000000F802812F340000161397
1840:1072F000870601EC16C06EBC000096090B000080EA
1841:10730000020000B000000000CA0100F842802F34E3
1842:1073100008C0161312000040A2CD39B2000099092E
1843:107320008000008082802FB60000F71100A001507D
1844:1073300008006EF20000000000F801E0060085324F
1845:1073400000009B091201000009C021B2180036009C
1846:10735000000000F8730A03F90000BD092A3502B8DD
1847:1073600008806EB200009E091201000009C021B21F
1848:1073700018003600000000F8730A03F9000000004E
1849:10738000000000F8A2802F350000B509040000803D
1850:10739000026180BC0000AD0980B8000009C06EB277
1851:1073A0004000A50904000080820D90BC80001613E7
1852:1073B00004010080820D90BC0000A50902B000808D
1853:1073C000821B84BC0000AD09000000F8B2812F943C
1854:1073D000000016130407018012C06EBC00001613D3
1855:1073E00080000080B2812FB60000161380D6018085
1856:1073F00052C06EB60000000000D601EC56C06E34DC
1857:1074000000000000000000601800863A0000000044
1858:1074100000000080B701783400000000007801E02F
1859:10742000060086324000BD0904000080820D90BC39
1860:107430000000161304A0001808006EB200009E128F
1861:1074400000000000D82080FA000016130600003C5F
1862:10745000182084BC0000161304B0003C88DB83BEF7
1863:107460000000161380010080C20178B60000000001
1864:1074700000000080F720783A00000000587801E012
1865:10748000F620863A00000C0900000004F860809A9B
1866:107490000000B80980B9000009C06EB22F00BD0914
1867:1074A0001201002C82CD2EB20000161300000080C5
1868:1074B000020000904000BA0904010080820D90BCD7
1869:1074C0003800BC09000000780900369280001613CD
1870:1074D00004010080820D90BC39000000000000789B
1871:1074E00009003632000016131200002CE2E52EB21D
1872:1074F000000016138001008082802FB60000161352
1873:1075000004010080C20003BC1000000000180080CD
1874:1075100067A1733900000000005C01E806808B322F
1875:1075200010240000000000F8A28D2F3130008508E3
1876:107530001201005CA28D2CB2000016130000008026
1877:10754000020000900000161380010080C2812FB657
1878:1075500000000009000000F8C2812F950000000023
1879:10756000005401FC02C06E3200000000000000D890
1880:107570000280013200C0CC091801000CA8CD3EB237
1881:107580002080000000000008088036322D00EF0344
1882:107590001201002C82CD2EB20000161300000080D4
1883:1075A00002000090000000000062013808C06E3246
1884:1075B0000008008000000028090037320060EB114D
1885:1075C00000000008088036F20000DA0900000080A0
1886:1075D000020000900000D20980000080C2812FB616
1887:1075E0000000D50900D001E806000092000000006C
1888:1075F000000000F8C2812F350000D50904D10180B8
1889:1076000002806EBC0000000000D601EC26C06E3483
1890:107610000000D7098000008092812FB60000DA09AF
1891:1076200000C801E80600009200000000000000F819
1892:1076300092812F350000DA0904C9018002806EBCF6
1893:107640000000000000D601EC16C06E341100850861
1894:107650001201002C82CD2EB2000016130000008013
1895:1076600002000090000085089A0100F842812FB5C1
1896:107670000000E309120100C8020020B2000000006F
1897:10768000005C01EC0640003200008508370000F87D
1898:1076900042812FB400000000000000F872812F34F6
1899:1076A0003D0085081201002C82CD2EB20000161379
1900:1076B00000000080020000900000EE091201005C52
1901:1076C000088020B20000DE091201006002802CB2A6
1902:1076D0000000161300000080020000900000EB097B
1903:1076E000120100C8020020B200008508370000F82F
1904:1076F000D2812FB400000000000000F872812F3406
1905:107700003D0085081201002C82CD2EB20000161318
1906:1077100000000080020000900000EE091201005CF1
1907:10772000088020B20000E7091201006002802CB23C
1908:10773000000016130000008002000090000000000E
1909:107740000000007879613832000016131218024CDC
1910:10775000E2256EB200000000003402B808806E32EC
1911:107760000000000000A0015008006E320000000080
1912:107770000078016008006E320000F5099D110234A6
1913:1077800009006EB20000000000F0018808006E32AF
1914:107790000000121200A8010809006EF200000000AB
1915:1077A000D4F801E00600853200000000DA5C01E850
1916:1077B00006808B3200006411DD000030030038F2D7
1917:1077C0000000FB092329020409806EB23E00161353
1918:1077D0001200002C82CD2EB20800FF091D1C01E80A
1919:1077E000762081B90000FF098000008002812FB659
1920:1077F0002A0016131200002C82CD2EB200000000C9
1921:10780000000000F802812F34000054100000002C0A
1922:10781000F90100F40000030A9D010080074093B2C3
1923:107820000000000000300080078088320000000067
1924:10783000003800800700EE320000000000080080E1
1925:1078400007C0853200000000001000800740903221
1926:107850001000000000180080878D853700000000B0
1927:107860000020008007008632000000000028008011
1928:107870000700853200000A0A1201000009C021B287
1929:1078800018003600000000F8730A03F93000F60310
1930:107890001201005CA28D2CB20000161300000080C3
1931:1078A000020000900012161304010080A28D2FB078
1932:1078B0000000000000CC017809806E3200008508CD
1933:1078C000DCD101E806809792130085081201002C94
1934:1078D00082CD2EB20000161300000080020000903E
1935:1078E0000000E30F00000018094081F20000C70FFC
1936:1078F00000A8012009006EF20000850880010080C8
1937:10790000F2802FB60000190A120100C8020020B24E
1938:10791000000085088000008072812FB60000000002
1939:10792000000000F872812F343D0085081201002C00
1940:1079300082CD2EB2000016130000008002000090DD
1941:107940000000EE091201005C088020B20000150A58
1942:107950001201006002802CB20000161300000080AB
1943:107960000200009000008508350100F812812FB553
1944:1079700000000000000000D802800132000000007A
1945:10798000005401FC02C06E3200C0230A1801000C32
1946:10799000A8CD3EB220800000D10100080880363218
1947:1079A0003B00F3031201002C82CD2EB2000016130F
1948:1079B00000000080020000900000E2110098012801
1949:1079C00009006EF2000085080000008002000090AF
1950:1079D00000002F0A80010080A2812FB600002F0A2C
1951:1079E0008000008042812FB61F00000000000010C0
1952:1079F00009003632000080120000001409802FD2E6
1953:107A00003C00000000000010090036320000801227
1954:107A10000000001409803CD200002F0A085B01EC32
1955:107A200006FB6EBC00000000005A01EC06000032AC
1956:107A300000002F0A370000F842812FB43D000000FB
1957:107A4000D701002C82CD2E320000360A8001008042
1958:107A500092812FB60000161380000080C2812FB6DD
1959:107A600000003D0A08C901E806BB6EBC000000002A
1960:107A700000C801E806000032330016131200002C83
1961:107A800082CD2EB20000F31100000028098001F21F
1962:107A900000008508000000800200009000003D0A00
1963:107AA00080010080C2812FB6000016138000008084
1964:107AB00092812FB600003D0A08D101E806BB6EBCDA
1965:107AC0000000000000D001E8060000323300161369
1966:107AD0001200002C82CD2EB20000F311000000280D
1967:107AE00009C001F20000850800000080020000903B
1968:107AF0000000850880010080F2812FB618008508FB
1969:107B00000000002C82CD2E92000016130407018085
1970:107B100012C06EBC0000430A120000C8020020B26E
1971:107B20000000460A1201005C088020B20000161313
1972:107B30001200006002802CB200000000000000F87B
1973:107B40001F80FF3A0000F3031201002C72E02EB2F6
1974:107B500000001613000000800200009000000000EA
1975:107B60000000007879613832000016131218024CB8
1976:107B7000E2256EB200000000003402B808806E32C8
1977:107B800000000000D4A0015008006E320000000088
1978:107B9000DB79016008006E320000F711DD0000049F
1979:107BA000080000F21000000000180080878D853763
1980:107BB0000000000000F801E0060085320000500AD5
1981:107BC0001201000009C021B218003600000000F8C0
1982:107BD000730A03F9300016131200005CA28D2CB258
1983:107BE00000001613040701EC16C06EBC0000000074
1984:107BF00000B000E00600003200008508DA5C01E811
1985:107C000006808B92000085089F41018052206EBC47
1986:107C100000005F0A9F98018052206EBC00000000A7
1987:107C2000000000D80280013200000000005401FC76
1988:107C300002C06E3200C05D0A1801000CA8CD3EB231
1989:107C40002080850831000008088036B2000000005E
1990:107C5000000000F812812F343B0085081201002C2F
1991:107C600082CD2EB2000016130000008002000090AA
1992:107C70000000E2110098012809006EF2000085085A
1993:107C8000000000800200009000008508D54101E05E
1994:107C9000064081920000850804B0008002006EBC9E
1995:107CA000000000000090010008006E320000001388
1996:107CB0000078016008006EF2000085080000008076
1997:107CC0000200009000000000000C027809806E3273
1998:107CD0000000670A04D4018012C06EBC00000000DE
1999:107CE000000000781980973700000000009001E044
2000:107CF000E6256E3A0000001300000080020000F04C
2001:107D000000006B0A0000008002000090000085085F
2002:107D1000009001E00600809200000000009001E069
2003:107D20000600803200000009000000800200009080
2004:107D30000000161380000080F2802FB60000C70FED
2005:107D400000A8012009006EF20000140A80000080E3
2006:107D5000F2802FB60000850800000080020000902D
2007:107D600000000000000000D8028001320000000086
2008:107D70000000007809006E320200760A04B9008023
2009:107D800082CD6EBC0000780A800000807280FCB654
2010:107D900000007B0A000000FC020000920000780A4C
2011:107DA000800000808280FCB600007B0A000000FC9E
2012:107DB0000200009200001613040000800200F5BCCF
2013:107DC00000000000000000A842BD97300000000045
2014:107DD000541809FEF2C07C3000C0810A1801000C62
2015:107DE000A8CD3EB200000000000E01EC06000034F9
2016:107DF00000000000005401EC06C02F32208000007B
2017:107E000000000008088036320000F3031201002C45
2018:107E100082CD2EB2000016130000008002000090F8
2019:107E2000000000000062013808C06E3200080080C7
2020:107E300000000028090037320000EB1100000008A4
2021:107E4000E80100F400001613040701EC16C06EBC34
2022:107E500000000000000000A8A2002D370A0000006A
2023:107E6000000000780900363200000000001809E226
2024:107E7000070000320000870A04010078198097BCCF
2025:107E80000200920A04B9008082CD6EBC0000004856
2026:107E9000D6010078C9CD2C3200008B0AB6000080D4
2027:107EA000020000B00000161312000064028097B2B6
2028:107EB00000008D0A1208006402006EB200008E0AF3
2029:107EC0001218006402006EB200008F0A12100064E3
2030:107ED00002006EB200000000A65401EC06C02F3272
2031:107EE00000007D08000E01EC060000940020004C0C
2032:107EF000D6010078C9CD2C320000930AB60000806C
2033:107F0000020000B00000161312000064028097B255
2034:107F10000000950A1208006402006EB20000960A82
2035:107F20001230006402006EB20000970A123800643A
2036:107F300002006EB20000980A1240006402006EB2A5
2037:107F40000000990A1248006402006EB200009A0A0A
2038:107F50001210006402006EB200009B0A1218006446
2039:107F600002006EB200009C0A1220006402006EB291
2040:107F700000009D0A1228006402006EB2000000009A
2041:107F8000A65401EC06C02F3203007D08000E01EC60
2042:107F90000600369200000000000000FC02000132E2
2043:107FA0000000A30A0000001408803D9200000000B9
2044:107FB000000000FC020001320000A60A040000DC00
2045:107FC00053603DB318000000000000F8738A0339C5
2046:107FD000A20A3600000000C0020036920000000035
2047:107FE000005401FC02C06E3200000000000000D806
2048:107FF0000280013200C0AC0A1801000CA8CD3EB2CC
2049:108000002080000000000008088036321500EF03D1
2050:108010001201002C82CD2EB2000016130000008049
2051:10802000020000900000000000280000070000325D
2052:10803000000000000030000007C02C320010008259
2053:108040000038000007003732000016131200004805
2054:1080500002C080B200007D08CA010008E801009457
2055:10806000000016138001008062812FB62D001613C8
2056:108070001200002C82CD2EB20000B50A1D01008036
2057:10808000020000B000007D08000000F862812F951A
2058:10809000000016138000008002812FB6000000004F
2059:1080A000000000F802812F342A007D081201002C04
2060:1080B00082CD2EB200001613000000800200009056
2061:1080C0000000D7110000002C09C085D20000641107
2062:1080D00000000030030038F20000F303230100F831
2063:1080E00022812FB43E00F3031201002C82CD2EB268
2064:1080F0000000161300000080020000900000D7115D
2065:108100000000002C09C085D20000F303000000F835
2066:1081100022812F940000C50A380100D8028001B2E4
2067:108120000000C30A1E000080020000B00000C50A63
2068:108130001A010080020000B0000038120000006840
2069:108140001F80F6FA0000F303000000800200009098
2070:108150000000C90A12010060084023B2008200003A
2071:108160000000000808803632000038120000006469
2072:108170001F40F6FA0000F3030000008002000090A8
2073:108180000000161312000024080023B2000016138A
2074:108190001200002008C023B20000161312000018BD
2075:1081A000088023B200C0D40A1801000CA8CD3EB24A
2076:1081B0000000CC0A12000038028081B200001613C1
2077:1081C0001200003C020082B20000161312000030C0
2078:1081D000024082B20000161312000034020086B280
2079:1081E00020800000000000080880363200003812AD
2080:1081F0000000005C1FC0F5FA0000F30300000080DF
2081:108200000200009000000000450000D8020000328B
2082:108210000000000000000000074080320000000065
2083:10822000001000000740823200000000001800002B
2084:10823000070086320000161312000050F2C138B455
2085:1082400000007A0F003001E016206EFA0000DD0A0F
2086:108250003801002CF8010BB40000DD0A020D028089
2087:10826000A25B80BC000000000000002CC8C182346A
2088:108270000000DF0A8000008042812FB60000B40FAA
2089:1082800000000080020000F0000016139FA801E02B
2090:1082900016206EBC0000D40F00000080020000F029
2091:1082A0000000E50A270100D8028001B200000000AA
2092:1082B000C700002CE8C08234000000000000000865
2093:1082C000D801003400000000D54001E006008732EC
2094:1082D00008004B12001801E8762081F900006411B3
2095:1082E00000000030030038F20000E90A2319000002
2096:1082F000078081B23E0016131200002C82CD2EB2F0
2097:108300000000EB0A1D210000070082B20000EE0A07
2098:10831000000000F862812F950000EE0A80000080C6
2099:1083200002812FB62A0016131200002C82CD2EB225
2100:1083300000000000000000F802812F340000161336
2101:1083400080000080A2802FB6000054100000002C96
2102:10835000F90100F4000016130401008062802DBCB6
2103:108360001000F40A2C30000017E02CB90000F60AC7
2104:108370008E39000007C082B20000F60A0008000033
2105:10838000070087920000F60A8E390000B7C182B458
2106:108390000000000000080000070087320000F80A13
2107:1083A000120100E802C021B218003600000000F8F7
2108:1083B000730A03F90000F60A9F010014184081BCFB
2109:1083C0000000FE0A0400008002C085BC00001613F5
2110:1083D0001200006802C585B00000000000000078AF
2111:1083E00009C58530000016130201008082BA97BCCF
2112:1083F000000016130601008092BA97BC0000161305
2113:108400001200004802C080B2000016130401008070
2114:10841000D28180B50000F603CA010008E88180948B
2115:10842000000016138001008082812FB60000040B2B
2116:108430001E000080020000B00000060B1A01008040
2117:10844000020000B000003812000000681F80F6FA39
2118:108450000000F303000000800200009000001613EB
2119:108460009FA801E016206EBC00007A0F00000014E7
2120:10847000080000F200000A0B8000008042812FB645
2121:108480000000B40F00000080020000F00000D40FD4
2122:1084900000000080020000F000007F08040000805F
2123:1084A000024081BC00000E0B120100E802C021B2A4
2124:1084B00018003600000000F8730A03F900000000FD
2125:1084C0000000007809C58530000016130201008005
2126:1084D00082BA97BC000016130601008092BA97BCBE
2127:1084E00000007F081201006802C585B00000161365
2128:1084F000000000800200009000007D0880000080E5
2129:10850000F2C185B60000170B1C41028006C085B27F
2130:10851000000000000000006802C585300000000077
2131:10852000000000701F00F73A00007D08000000F80E
2132:1085300022812F9400007D0880000080F2C185B662
2133:108540000000D7110000002C09C085D20000F30301
2134:10855000D20100941E40E99A00001613042000186E
2135:1085600008006EB20000161380000080F2812FB662
2136:1085700000008C1200000080020000F000001613C2
2137:1085800004010080028080BC0000161304510180A9
2138:1085900002806EBC000016130421018002006EBC34
2139:1085A00000000000003C00E8064081320000250B7E
2140:1085B0001F000080020000B00000220B9E400278E5
2141:1085C000094068B20000161300000080020000900D
2142:1085D0000000290B8001008082812FB600007F08F7
2143:1085E0002A3101E0060000B218000000CA0000F8BD
2144:1085F000730A03397F083600000000C0020036927B
2145:1086000000007F0880010080A2802FB618000000C3
2146:10861000CA0000F8730A03397F083600000000C062
2147:10862000020036920D002F0B000000580800369211
2148:1086300000002F0B00000058080000921B000000F3
2149:1086400000000058080036320000161304200018FD
2150:1086500008006EB20000161380000080F2812FB671
2151:1086600000008C1200000080020000F000000000FA
2152:108670000030002808006E3200000000545401FC55
2153:1086800002C06E320000940B380000A4088082B251
2154:108690000000940B0428010408006EB200001613B9
2155:1086A0009F500104A85B80BC00000000005001E85E
2156:1086B0000600003200005E0B0801007819A082BCA1
2157:1086C00000000000002801E0A660803C00003C0B98
2158:1086D0002A010014080000B200000000CA000014C3
2159:1086E0001840813A0000C70F00A80120A9206EFAA7
2160:1086F0000000161306010280821B92BC00000000DD
2161:10870000002001E0A6206E3C00000000003000E0E8
2162:10871000060000320000000000A801E006009232CE
2163:1087200000000000000000D80280013200C0500BA1
2164:108730001801000CA8CD3EB20000470B04000080D9
2165:10874000024081BC0000000000000014080000325C
2166:1087500018000000000000F8730A0339410B3600CE
2167:10876000000000C0020036922080000000000028B7
2168:108770000980363200008111000000D8020000D2CA
2169:1087800000004B0B04000080028092BC18003600F1
2170:10879000000000F8730A03F900000000000000D890
2171:1087A0000280013200C0500B1801000CA8CD3EB26F
2172:1087B00018000000000000F8738A03394B0B00001A
2173:1087C000000000C0020036320000360000000080C9
2174:1087D0000200009000000000DE000008E801003404
2175:1087E00000000000DF00013808C06E320000000009
2176:1087F0000010000007000032000000000018000018
2177:1088000007808232000000000030000007C02C32D8
2178:108810000020008000380000070037320000000010
2179:10882000CA3D000C078083320000000000000014E5
2180:108830001840813A00005C0B040201EC16C06EBCCB
2181:1088400000000000C00100141840813A0000000040
2182:10885000000000F892802F3400C016131200004070
2183:10886000A28D39B20000D70B1201004802C080B2BD
2184:1088700000001613000000800200009000000000BD
2185:10888000000000280880973200000000000000A4CB
2186:1088900008808232000000000010006C18206E3A40
2187:1088A000000000000018004C08006E320000C70FE6
2188:1088B00000A8012019206EFA00001613060102809C
2189:1088C000821B92BC00000000002001E016206E3CDC
2190:1088D0000000000000A801E0060092320000690BD1
2191:1088E000003801E006408092000000000060006C4B
2192:1088F00018206E3A000000000068004C08006E323C
2193:1089000000006B0B9F010004686080BC0000740BCA
2194:10891000000000181820009C000016138001008041
2195:10892000A2802FB600006E0B120100E802C021B237
2196:1089300018003600000000F8730A03F90000000078
2197:10894000CA70001808006E320000670B0201008038
2198:10895000626080BC000016139F000014184081BCA8
2199:1089600000000000CA0100F802802F3500A0690B4A
2200:1089700012010040A28D39B20000161300000080E1
2201:10898000020000900000790B80000080A2802FB6CA
2202:1089900000007C0B04000080A2A081BC0000161324
2203:1089A0009F000014184081BC00000000CA0100F8BC
2204:1089B00002802F3500A0161312000040A28D39B29C
2205:1089C00000000000000000F8A2802F3500007C0BA2
2206:1089D000120100E802C021B218003600000000F8C1
2207:1089E000730A03F900000000002801E006000032CD
2208:1089F00000000000003C00E806408132000000005A
2209:108A0000003000E00680823200000000002000E01C
2210:108A10000680813200000000001000E006C08632AF
2211:108A200000000000001800E006C0843200001613A9
2212:108A30000400008032E186B20000860B1F010008AE
2213:108A4000090000B20000970B0420018002006EBCF8
2214:108A500000001613000000800200009010000000CB
2215:108A600000000010790B1638080000000000000C10
2216:108A7000790B16380000000000000004A9002D3713
2217:108A80000004010000000004C94D903A02000000FB
2218:108A9000000000A8820D913700000000000000A82F
2219:108AA00012A42A3A00008F0B80400280E2017CB6BB
2220:108AB0000000161304400278B93F7CB000000000AB
2221:108AC00000000008E9A5903A0000910B9F010010FA
2222:108AD000190091BC9F000000000000100900363210
2223:108AE00000008A0B0401008042E490BC00001613D1
2224:108AF00004210180829B90BC0000970B0000008045
2225:108B000002000090000000000010006C08006E32AF
2226:108B1000000000000018004C08006E320000161320
2227:108B20000400008032E186B200003210510000D80B
2228:108B3000020000F200009A0B0050013CA85B809CF0
2229:108B400000007F08003001E00600009200009F0B4B
2230:108B50003E510100A81B80BA00000000DE0000F8B2
2231:108B6000F2812F3400000000005801EC06C0EE3204
2232:108B700000009F0B80010080328087B6000000005B
2233:108B8000000000F8E2802F340000E310603001E0C4
2234:108B9000060000F20000E90B0000008002000090D7
2235:108BA0000000000000000014080000320000A90BC3
2236:108BB000040201EC16C06EBC00000000C9010014E4
2237:108BC0001840813A00000000C001013808C06E3230
2238:108BD00000000000DF0000A4A8608A3C000016131B
2239:108BE0000F000080020000B000C0AD0B1201004079
2240:108BF000A28D39B200001613000000800200009020
2241:108C000000000000003000E006000032000000001C
2242:108C1000DF0000A4A8608A3C000016130F0000804B
2243:108C2000020000B0000000000000013808C06E32F1
2244:108C300000000000DEA8012099226E3A0000161301
2245:108C400006010280821B92BC000016139F2001E0E7
2246:108C500096226EBC0000B20B80000080F2802FB61E
2247:108C60000000C70F00000080020000F00000B90BF8
2248:108C70001F5001E8060000B20000B50B04000080A0
2249:108C800002C083BC0000B90B005001E8F660809C74
2250:108C90000800000000400278399AFE3800001613E0
2251:108CA0000201008082BA97BC000016130601008002
2252:108CB00092BA97BC0800000000400268129AFE3881
2253:108CC0000000BE0B2AA901E0060092B2180036008F
2254:108CD000CA0000F8730A03F91D00BE0B04000080EF
2255:108CE00002A417B80000BA0B04000014184081BC9D
2256:108CF00000001613000000800200009000006411C4
2257:108D000000000030030038F20000C10B8001008039
2258:108D100032802FB63E0016131200002C82CD2EB2E8
2259:108D200000000000000000D80280013200C0D20B19
2260:108D30001801000CA8CD3EB220800000C30000281E
2261:108D40000980363200008111000000D8020000D2F4
2262:108D50000000C70B04000080028092BC00000000ED
2263:108D6000000000141840813A0000CC0B0400008081
2264:108D7000024081BC18003600000000F8730A03F9B5
2265:108D80000000D00B04000014184081BC0000C80B88
2266:108D90001200000009C021B20000C90B00000080D1
2267:108DA0000200009018003600000000F8738A03F9F2
2268:108DB0000000641100000030030038F20000D00B06
2269:108DC0008001008032802FB63E0016131200002C66
2270:108DD00082CD2EB200000000C30000D80280013214
2271:108DE00000C0CC0B1800000CA8CD3EB2000016133A
2272:108DF0008000008072802FB60020008000000028D4
2273:108E0000090037320000661200000008E80100F493
2274:108E1000000016131200004802C080B200000000DB
2275:108E2000000000141840813A0000161380010080F1
2276:108E3000A2802FB618003600CA0000F8730A03F9A2
2277:108E40001D0016130400008002A417B800001613BA
2278:108E50009F000014184081BC0000D80B0B0100805B
2279:108E6000020000B000004B1200000080020000F081
2280:108E70000000E00B8001008092802FB62B00E60BF3
2281:108E80001201002C82CD2EB20000161300000080CB
2282:108E9000020000900000E30B1D010080020000B002
2283:108EA0000000E60B8001008062812FB600001613DF
2284:108EB00000000080020000900000E60B80000080AF
2285:108EC00002812FB62A0016131200002C82CD2EB27A
2286:108ED00000000000000000F802812F3400007D082F
2287:108EE00004000080028085BC00005D12000000804C
2288:108EF000020000F0000069060000001C0880859256
2289:108F000000007F0880010080A2802FB600001613A9
2290:108F10000000008002000090000016138000008016
2291:108F2000E2802FB60000EE0B8001008082812FB618
2292:108F3000000016130431018002006EBC00001613FD
2293:108F400004310080829B82BC000016130201008065
2294:108F500012A082BC00000000CE0100D802800132C5
2295:108F600000C0F50B1801000CA8CD3EB22080000017
2296:108F70000000000808803632000038120000005C53
2297:108F80001FC0F5FA0000F30300000080020000900B
2298:108F90000000161380000080A2802FB60000161378
2299:108FA0008000008082802FB600001613040000802D
2300:108FB000028082BC00000000600000D80200003285
2301:108FC0000000FD0B3F00003C084080B20000FD0B9C
2302:108FD00080010080E2812FB600000000DE0000F872
2303:108FE000F2812F3400000000005801EC06C0EE3280
2304:108FF000000000004D00000067E0833E000000001C
2305:10900000000800000700803200000000001000008F
2306:1090100007C08632000000000018000007C084323C
2307:109020000000490C04000028D8A082BC00001613E0
2308:1090300009010080020000B00000000000000018DC
2309:10904000D8A0813C00001F0C0400003CD8E083BC89
2310:109050000000161304010080028081BC0000090C8E
2311:109060000400008072802DBC000016131200005016
2312:1090700002C038B200001D0C510000D812802D9A99
2313:109080000000161312000050F2C138B40000160C94
2314:10909000280000D8020000B20000130C80010080FC
2315:1090A000F2C185B600000F0C1F400284E60100B437
2316:1090B0000000130C1D0100F822812FB40000130CD6
2317:1090C000000000F862812F950000110C1D01008046
2318:1090D000020000B000000000000000F862812F359F
2319:1090E00000000000004002800240683200001613B9
2320:1090F0001F010080020000B00000150C343000E0B9
2321:1091000016206EBC0000B40F00000080020000F0CA
2322:109110000000D50FDA5B01EC0640EDF218003600D6
2323:10912000000000F8730A03F900001B0C0400008023
2324:1091300072802DBC0000161380010080A2802FB623
2325:109140000000160C670000F8A2802FB5000016136F
2326:10915000120000E802C021B20000161304010080D2
2327:1091600072802DBC00000000510000D802000032C7
2328:1091700000003E1000000000D82080FA0000FE0B26
2329:109180004D00000067E0839E00001613120000509F
2330:10919000F2C138B400002C0C28000080084000B256
2331:1091A0000000290C80010080F2C185B60000250C6A
2332:1091B0001F400284E60100B40000290C1D0100F8E4
2333:1091C00022812FB40000290C000000F862812F9545
2334:1091D0000000270C1D010080020000B0000000000C
2335:1091E000000000F862812F3500000000004002807E
2336:1091F00002406832000016131F010080020000B018
2337:1092000000002B0C343000E016206EBC0000B40FC0
2338:1092100000000080020000F00000D50FDA5B01ECD6
2339:109220000640EDF200004F0C80000080E2802FB677
2340:109230000000300C042100E0068081B200003E10E6
2341:1092400000000034080000F200000000002000E0F0
2342:109250000680813200000000003C00E806408132B8
2343:109260000000360C2A1100E0D6E086BA180036005D
2344:10927000CA0000F8730A03F91D00360C04010080CF
2345:1092800002A417B80000320C9F010080180088BCAF
2346:1092900000001613000000800200009000004B1236
2347:1092A00000000080020000F00000641100000030A7
2348:1092B000030038F208003A0C231901E8762081B93E
2349:1092C0003E0016131200002C82CD2EB200003E0C80
2350:1092D0001D1800E006C084B200003E0C8000008033
2351:1092E00002812FB62A0016131200002C82CD2EB256
2352:1092F00000000000000000F802812F34000054102C
2353:109300000000002CF90100F40000430C0400008070
2354:10931000020088BC0000420C1201000009C021B20A
2355:1093200018003600000000F8730A03F91D00161338
2356:109330000401008002A417B8000016130401008085
2357:10934000028080BC000000000000007809C5853064
2358:10935000000016130201008082BA97BC00001613A9
2359:109360000601008092BA97BC0000F6031201006863
2360:1093700002C585B0000016130000008002000090B6
2361:10938000000000000030007819206E3C0000161329
2362:1093900004010080E2A582BC00001613800000805A
2363:1093A000A2802FB60000161304010080020088BCC2
2364:1093B0000000161304010080028080BC0000161318
2365:1093C00012000050F2C138B400000000C0010138A2
2366:1093D00008C06E320000530C040201EC16C06EBCD3
2367:1093E00000C0161312000040A28D39B20000540CC8
2368:1093F000C90100140800009200000000453000E0A0
2369:10940000060000320000600C28000008E80100B4EB
2370:1094100000005D0C80010080F2C185B60000590C8F
2371:109420001F400284E60100B400005D0C1D0100F83D
2372:1094300022812FB400005D0C000000F862812F959E
2373:1094400000005B0C1D010080020000B00000000065
2374:10945000000000F862812F3500000000004002800B
2375:1094600002406832000016131F010080020000B0A5
2376:1094700000005F0C8000008042812FB60000B40F16
2377:1094800000000080020000F00000D50FDA5B01EC64
2378:109490000640EDF200200080DF000028090037328E
2379:1094A00000006612DE0000D8028001F208004B12B4
2380:1094B000001801E8762081F90000641100000030F6
2381:1094C000030038F20000660C8001008032802FB665
2382:1094D0003E0016131200002C82CD2EB200006B0C41
2383:1094E000290801E406C02DB20000700C1D000080A8
2384:1094F000020000B00000700C8000008002812FB6D6
2385:109500002A0016131200002C82CD2EB20000700C1F
2386:10951000000000F802812F9400006D0C1201000081
2387:1095200009C021B218003600000000F8730A03F9E0
2388:109530001D006F0C0401008002A417B800006C0C21
2389:10954000000000141840819C2B0016131200002C00
2390:1095500082CD2EB2000055100000002CF90100F45D
2391:109560000000730C04010080024081BC180036002A
2392:10957000000000F8730A03F90000161312000048F7
2393:1095800002C080B2000000000000007809C58530EC
2394:10959000000016130201008082BA97BC0000161367
2395:1095A0000601008092BA97BC0000F6031201006821
2396:1095B00002C585B000001613000000800200009074
2397:1095C000000016138000008082802FB60000161362
2398:1095D00004310080829B82BC0000161302000080D0
2399:1095E00012A082BC0000161304000080028082BC1E
2400:1095F0002500000000000010090036321000801223
2401:1096000000000014A96080D900000000000000D80C
2402:109610000280013200C0840C1801000CA8CD3EB2BB
2403:109620002080000000000008088036320000381258
2404:109630000000005C1FC0F5FA0000F303000000808A
2405:109640000200009000C00000000000F8A28D2F3141
2406:1096500000000000000000D80200003200000000FE
2407:1096600000000000078081320000000000080000B8
2408:1096700007008032000000000010000007C08632A2
2409:10968000000000000018000007C08432000016131C
2410:1096900012000050F2C138B40000900C800000802D
2411:1096A00082802FB60000000000000068A860803CA7
2412:1096B000000000000000003C084080320000D40F91
2413:1096C00000000004088082F20000910C12010000EA
2414:1096D00009C021B218003600000000F8730A03F92F
2415:1096E0001D00940C0400008002A417B8000016139B
2416:1096F00080010080A2802FB60000900C000000F8CE
2417:10970000A2802F9500000000000000006820803A31
2418:1097100000009A0C0400002868A082BC0000161308
2419:109720000C000080020000B00000161380000080D2
2420:10973000E2802FB600003E1000000080020000F022
2421:109740000000860C000000D80200009200001613F2
2422:1097500080000080A2802FB600000000000000D82A
2423:10976000028001320020008000000028090037320A
2424:109770000000621200000008E80100F41800360042
2425:10978000CA0000F8730A03F90000A50C040201ECFA
2426:1097900016C06EBC00000000C00100F892802F349B
2427:1097A00000C0A30C12010040A28D39B200001613B4
2428:1097B00000000080020000902B00A50C1201002C7C
2429:1097C00082CD2EB20000161300000080020000902F
2430:1097D000000016131F010080020000B00000A80C5A
2431:1097E0008001008082812FB60000161304310180B1
2432:1097F00002006EBC00000000000000D802800132B0
2433:109800000000AB0C12010060084023B20082B40CCF
2434:1098100000000008A88D809200001613120000249A
2435:10982000080023B2000016131200002008C023B263
2436:109830000000161312000018088023B200C0C90CE3
2437:109840001801000CA8CD3EB20000AE0C120000388A
2438:10985000028081B2000016131200003C020082B2A6
2439:109860000000161312000030024082B200001613EE
2440:1098700012000034020086B22080000000000008C0
2441:10988000A88D80320000BC0C80010080F2C185B63A
2442:109890000000B80C1F400284E60100B40000BC0CBC
2443:1098A0001D0100F822812FB40000BC0C000000F85C
2444:1098B00062812F950000BA0C1D010080020000B0EB
2445:1098C00000000000000000F862812F350000000059
2446:1098D0000040028002406832000016131F01008021
2447:1098E000020000B032000000000000100900363213
2448:1098F0000000801200000014090080D2000016133E
2449:109900001200006802C585B0000000000000007869
2450:1099100009C58530000016130201008082BA97BC89
2451:10992000000016130601008092BA97BC0000C40C18
2452:109930003400005C1FC0F5BA0000B40F00000080C6
2453:10994000020000F00000C60C8000008092802FB65C
2454:1099500000007F08003000E00600009200007F0851
2455:10996000120100E802C021B218000000000000F857
2456:10997000730A03397F083600000000C002003692E7
2457:1099800000000000450000D8024000320000000046
2458:10999000410000000780863200000000000800003F
2459:1099A00007008032000000000010000007408232F3
2460:1099B00000000000001800000700863200001613A7
2461:1099C00012000050F2C138B400000000000000781E
2462:1099D000388087350000161380000080728087B6BB
2463:1099E0000000000000A001E016206E3A0000000018
2464:1099F0000000007809C585300000000000A801E0E3
2465:109A000016206E3C08000000D2010078E9E5833999
2466:109A1000180016131F410284E6A197B90000D90C63
2467:109A2000365101E816E083BC0000D90C1D0100800E
2468:109A3000020000B000000000000000F862812F3535
2469:109A4000000016139F2001E0064080B20000DC0CED
2470:109A50008001008082812FB600000000003001E00C
2471:109A60000640803200000000000000D80280013271
2472:109A70000000DF0C34180000078081B20000B40F32
2473:109A800000000080020000F010004B1200300000C7
2474:109A900017E02CF900100080003800000700373272
2475:109AA0000000641100000030030038F20000E40CF4
2476:109AB0008001008032802FB63E0016131200002C69
2477:109AC00082CD2EB20000E90C29210000070082B2ED
2478:109AD0000000E70C1201000009C021B21800360096
2479:109AE000000000F8730A03F91D00EF0C0401008068
2480:109AF00002A417B80000E50C000000140800009252
2481:109B00000000EC0C1D3100E0060000B20000EF0C7C
2482:109B10008001008062812FB60000161300000080D3
2483:109B2000020000900000EF0C8000008002812FB640
2484:109B30002A0016131200002C82CD2EB20000000065
2485:109B4000000000F802812F3400005D120000002C9C
2486:109B5000F90100F400005410000000F8A2802FF476
2487:109B60000000F40C04000080024081BC0000F40CF2
2488:109B7000120100E802C021B218003600000000F80F
2489:109B8000730A03F90000F6031201004802C080B214
2490:109B90000000161300000080020000900000FE0C80
2491:109BA00080010080F2C185B60000FA0C1F400284DB
2492:109BB000E60100B40000FE0C1D0100F822812FB464
2493:109BC0000000FE0C000000F862812F950000FC0CE4
2494:109BD0001D010080020000B000000000000000F83D
2495:109BE00062812F3500000000004002800240683290
2496:109BF000000016131F010080020000B00000000DDD
2497:109C000004000080024086BC0000AB1200900108F6
2498:109C100009006EF20000DF1200000080020000F078
2499:109C20000000070D330100D8028001B20000070DCB
2500:109C300080010080B20172B60000070D9FF0018024
2501:109C400082DB87BC0000070D9FF8018022216EBCDB
2502:109C50000000000000E801E00600EE320000000015
2503:109C600000F001E006C0873208000000001801E89B
2504:109C70007620813900000D0D80010080D2802FB642
2505:109C800000000D0D04B0008002006EBC000000005A
2506:109C9000CD0000F872812F343D000D0D1201002C13
2507:109CA00082CD2EB20000161300000080020000904A
2508:109CB00000001C0D270901E406C02DB200C0140DE0
2509:109CC0001801000CA8CD3EB2000000000000007892
2510:109CD00009C58530000016130201008082BA97BCC6
2511:109CE000000016130601008092BA97BC00001613FC
2512:109CF0001200006802C585B020807F0800000008BF
2513:109D0000088036922C000000000000100900363256
2514:109D1000000080120098011409006ED200000000BB
2515:109D2000004001E00640883200000000D508000035
2516:109D300007408832000000000030000007C02C32CD
2517:109D400000400080CA3900000700373200001613B7
2518:109D50001200004802C080B200600000000000084D
2519:109D6000088036320000200D1D000080020000B087
2520:109D70000000200D8000008002812FB62A001613FB
2521:109D80001200002C82CD2EB200000000000000F86E
2522:109D900002812F34000055100000002CF90100F45E
2523:109DA000000000000000007809C58530000016138F
2524:109DB0000201008082BA97BC0000161306010080E1
2525:109DC00092BA97BC0000F6031201006802C585B084
2526:109DD0000000161300000080020000900000000048
2527:109DE000545401FC02C06E3200000000000000D894
2528:109DF0000280013200C02C0D1801000CA8CD3EB22B
2529:109E00002080000000000008088036320000F303C4
2530:109E10001201002C72E02EB2000016130000008028
2531:109E200002000090000016138001008082812FB68E
2532:109E300000008C120020001808006EF200001613BB
2533:109E40001F30002808006EB200000000000000A4CF
2534:109E500008808232000000000010006C08006E32A2
2535:109E6000000000000018004C08006E3200001613BD
2536:109E70000400008032E186B2000032100000008051
2537:109E8000020000F00000360D0050013CA85B809CF1
2538:109E90000000161300000080020000900000000087
2539:109EA00000500100A81B803A000000000000008064
2540:109EB0000800003200000000510000D8020000320B
2541:109EC000000000004D00000067E0833E000000003D
2542:109ED00000080000070080320000000000100000B1
2543:109EE00007C08632000000000018000007C084325E
2544:109EF00000006D0D04000028D8A082BC00001613DD
2545:109F000009010080020000B00000000000000018FD
2546:109F1000D8A0813C0000540D0400003CD8E083BC74
2547:109F20000000161304010080028081BC0000450D72
2548:109F30000400008072802DBC000016131200005037
2549:109F400002C038B200004D0D510000D812802D9A89
2550:109F50000000161312000050F2C138B41800360089
2551:109F6000000000F8730A03F900004B0D04000080A4
2552:109F700072802DBC0000161380010080A2802FB6D5
2553:109F80000000460D670000F8A2802FB500001613F0
2554:109F9000120000E802C021B2000016130401008084
2555:109FA00072802DBC00000000510000D80200003279
2556:109FB0000000520D2A010000D82080BA0000510D87
2557:109FC0001201000009C021B218003600000000F89C
2558:109FD000730A03F900000000000000D80240843238
2559:109FE0001D0016130400008002A417B800004610DC
2560:109FF0000060006C08006EF200003A0D4D00000099
2561:10A0000067E0839E0000161312000050F2C138B4BE
2562:10A0100018003600000000F8730A03F91D005B0DFC
2563:10A020000400008002A417B800001613800100800D
2564:10A03000A2802FB60000550D670000F8A2802FB552
2565:10A04000000016131200000009C021B21D001613F3
2566:10A050000401008002A417B8080000000040027844
2567:10A06000399AFE38000016130201008082BA97BCAC
2568:10A07000000016130601008092BA97BC0800161360
2569:10A0800012400268129AFEB8000016130B000080FE
2570:10A09000020000B00000641100000030030038F23C
2571:10A0A000000016131F00006CD8E086BA00003210C2
2572:10A0B000510000D8020000F20000650D0000003CD5
2573:10A0C00008408092000016130000008002000090FB
2574:10A0D0000000390D04010080028081BC00006B0D7E
2575:10A0E00080010080A2802FB600006A0D12010000DE
2576:10A0F00009C021B218003600000000F8730A03F905
2577:10A1000000000000000000D8024084321D00161339
2578:10A110000400008002A417B8000046100060006C24
2579:10A1200008006EF200003A0D4D00000067E0839ECB
2580:10A130000000161380000080A2802FB600000000EF
2581:10A14000C001013808C06E3200000000453000E058
2582:10A15000060000320000161312000050F2C138B49D
2583:10A160000000750D040201EC16C06EBC000000007A
2584:10A17000C90100141840813A00C0750D1201004059
2585:10A18000A28D39B20000161300000080020000907A
2586:10A1900000C00000000000F8A28D2F310000000078
2587:10A1A00000A8012099226E3A0000161306010280D1
2588:10A1B000821B92BC000016139F2001E096226EBC09
2589:10A1C00000007B0D80000080F2802FB60000C70FDA
2590:10A1D00000000080020000F000007F0D0400003C41
2591:10A1E000D8E083BC00007E0D9F3101E096226EBC5A
2592:10A1F00000000000003001E0060000320000860D83
2593:10A20000005001E8F660809C0800000000400278E1
2594:10A21000399AFE38000016130201008082BA97BCFA
2595:10A22000000016130601008092BA97BC08000000D7
2596:10A2300000400268129AFE380000850D9F3101E04F
2597:10A2400096226EBC00000000003001E006000032E3
2598:10A2500000000000005001E806000032000000008D
2599:10A2600000A801E00600923218003600000000F855
2600:10A27000730A03F91D008B0D0400008002A417B8B7
2601:10A280000000870D04000014184081BC0000161364
2602:10A290000000008002000090000016138000008083
2603:10A2A00072802FB600000000000000D8028001324A
2604:10A2B00000200080000000280900373200006612EC
2605:10A2C00000000008E80100F4000016131200004826
2606:10A2D00002C080B20000641100000030030038F2B8
2607:10A2E0000000930D23010014184081BA3E0016139C
2608:10A2F0001200002C82CD2EB20000161380010080C7
2609:10A30000A2802FB618003600CA0000F8730A03F9BD
2610:10A310001D0016130400008002A417B800001613D5
2611:10A320009F000014184081BC0000940D0B010080B8
2612:10A33000020000B000004B1200000080020000F09C
2613:10A3400000009C0D2931010C09006EB22B007D0824
2614:10A350001201002C82CD2EB20000161300000080E6
2615:10A36000020000900000BE0F000C020009806EF297
2616:10A370000000A50D000000800200009000005D12AA
2617:10A3800000000080020000F0000000000000001C3F
2618:10A39000080090320000A40D04000028098080B25B
2619:10A3A00000008111000000D8020000D20000A40DBE
2620:10A3B00004000080028092BC18003600000000F803
2621:10A3C000730A03F900006806000000080800009204
2622:10A3D0000000A80D1D010080020000B000007D08F3
2623:10A3E0008001008062812FB60000161300000080FB
2624:10A3F0000200009000007D088000008002812FB6DE
2625:10A400002A0016131200002C82CD2EB200007D0807
2626:10A41000000000F802812F940000161380010080D4
2627:10A4200082812FB60000161304000018094081B283
2628:10A430000000E30F00000080020000F00000C70FE2
2629:10A4400000A8012009006EF2000000000030010C9D
2630:10A4500009006E320000BE0F000C020009806EF28F
2631:10A4600000007F08000000800200009000004B12F6
2632:10A4700000000080020000F000005D12000000807B
2633:10A48000020000F0000068060000001C0800909226
2634:10A4900000000000545401FC02C06E32000016138C
2635:10A4A0008001008082812FB6000016131F000080FB
2636:10A4B000020000B010000000000000A8780B163861
2637:10A4C00008000000000000AC780B16380000000007
2638:10A4D000000000B0A8002D3700040100000000B00B
2639:10A4E000C80D8B3A00000000005001B408806E32A5
2640:10A4F0000000C70D0431019008006EB20200000098
2641:10A50000000000C8828D8A3700000000000000C8EB
2642:10A51000C2A22C3A1800C50D86410278880D78B683
2643:10A520000000161304000080A2E28ABC000016138B
2644:10A5300004410280B23F78B00000BE0D9F0100A828
2645:10A5400018808ABC9F00BE0D000000A8080036924B
2646:10A550000000000000400204B83F78300000DA0D2F
2647:10A5600000000004D862809C00001613020C0280D8
2648:10A57000A21B89BC000016138000008082802FB6C9
2649:10A5800002000000000000C8828D8A370000000031
2650:10A59000000000C8C2A22C3A1800D00D86410278F3
2651:10A5A000880D78B60000161304000080A2E28ABC71
2652:10A5B0000000161304410280B23F78B00000C90DBC
2653:10A5C0009F0100A818808ABC9F00C90D000000A848
2654:10A5D000080036920000D30D28400204B83F78B03E
2655:10A5E00000000000C8010004D862803C000016137F
2656:10A5F0009F000080024080B20000D70D0201009051
2657:10A60000182089BC00000000000000B408000032DF
2658:10A610000000C90D9F0100A818808ABC9F00C90DC9
2659:10A62000000000A8080036920000DA0D0400009037
2660:10A63000182089BA000016139F000004486280BCED
2661:10A6400000001613900000B448628BBA0300161382
2662:10A6500004400200081EFFB80000E20D00000000E8
2663:10A66000D822809A0000090E04000080A2E28ABC71
2664:10A6700002000000000000C8828D8A370000000040
2665:10A68000000000C8C2A22C3A1800070E86400278CB
2666:10A69000880D78B60000161304400204B83F78B065
2667:10A6A0000300161304400200081EFFB83800000023
2668:10A6B0000000001009003632000080120000001473
2669:10A6C000090080D20000E80D12010060084023B2AA
2670:10A6D0000082000000000008088036320000F3030A
2671:10A6E0001201002C72E02EB2000016130000008050
2672:10A6F000020000900000161312000024080023B28C
2673:10A70000000016131200002008C023B20000161328
2674:10A7100012000018088023B200000000000000D8DA
2675:10A720000280013200C0F20D1801000CA8CD3EB22B
2676:10A730000000EC0D12000038028081B200001613F8
2677:10A740001200003C020082B200001613120000301A
2678:10A75000024082B20000161312000034020086B2DA
2679:10A760002080E60D000000080880369200000000FE
2680:10A77000000000D802000032000000000038020093
2681:10A78000B81B803A00000000643001E016206E3AE9
2682:10A7900000000000000000000740803200000000C0
2683:10A7A00000080000070080320000000000100000D8
2684:10A7B00007408232000000000018000007008632C7
2685:10A7C0000000161312000050F2C138B4000000005F
2686:10A7D000000000D8028001320000000000180000D4
2687:10A7E0000780813200000000002000000700823254
2688:10A7F000100000000030000017E02C3900000000BD
2689:10A8000000380000F7010B340000010E80010080C9
2690:10A81000328087B60000000000380000B7017034B5
2691:10A820000000000000000008E80100340000130EE2
2692:10A83000020C0280A21B89BC18003600000000F840
2693:10A84000730A03F90000641100000030030038F2BD
2694:10A85000000016131200004802C080B21800360033
2695:10A86000000000F8730A03F90000DC0D9F0100A846
2696:10A8700018808ABC9F00DC0D000000A808003692FA
2697:10A8800028000C0E0401008082CD81BC0000000075
2698:10A890000020017809006E320000161304010080C8
2699:10A8A00042A297BC00000E0E8001008032802FB6BD
2700:10A8B0003E0016131200002C82CD2EB20000100EA6
2701:10A8C0001D010080020000B000007D08000000F8BB
2702:10A8D00062812F9500007D088000008002812FB6E4
2703:10A8E0002A0016131200002C82CD2EB200007D0823
2704:10A8F000000000F802812F940000000000380000E2
2705:10A90000C70170340000641100000030030038F209
2706:10A910000800170E231901E8762081B93E001613AE
2707:10A920001200002C82CD2EB20000190E1D010080F5
2708:10A93000020000B000001C0E000000F862812F959C
2709:10A9400000001C0E8000008002812FB62A00161322
2710:10A950001200002C82CD2EB200000000000000F892
2711:10A9600002812F340000161380000080A2802FB6D1
2712:10A97000000054100000002CF90100F40000200E2B
2713:10A98000120100E802C021B218003600000000F8F1
2714:10A99000730A03F9000016131200004802C080B2C7
2715:10A9A0000000F603000000F8A2802F9400000000D1
2716:10A9B000000000D8028001320000000000300028B2
2717:10A9C00008006E3200000000545401FC02C06E32D8
2718:10A9D00000C02E0E1801000CA8CD3EB22080000051
2719:10A9E000000000280980363200008111000000D8E4
2720:10A9F000020000D200002B0E04000080028092BCF6
2721:10AA000018000000000000F8730A03392C0E36000D
2722:10AA1000000000C00200369218003600000000F866
2723:10AA2000738A03F900000000000000D802800132A0
2724:10AA300000C02B0E1800000CA8CD3EB200200084F0
2725:10AA400000000028090037320000621200000008F0
2726:10AA5000E80100F400007D08000000800200009082
2727:10AA600000000000000000D8028001320000000059
2728:10AA7000545401FC02C06E3200C0370E1801000CA5
2729:10AA8000A8CD3EB2208000000000000808803632C9
2730:10AA90000000EF031201002C72E02EB2000016132A
2731:10AAA00000000080020000900000F3110000002868
2732:10AAB000090002F200003F0E0000005C0800009256
2733:10AAC00000000000000000D80280013200000000F9
2734:10AAD000545401FC02C06E3200C03F0E1801000C3D
2735:10AAE000A8CD3EB220800000000000080880363269
2736:10AAF000000038120000005C1FC0F5FA0000F303EC
2737:10AB000000000080020000900000000000300028DB
2738:10AB100008006E320020008400000028090037324F
2739:10AB20000000621200000008E80100F40000440E7A
2740:10AB300000000080020000900000000000000008FB
2741:10AB40000800003200004A0E0400008002C085B2F6
2742:10AB500000004A0E80000080F2C185B60000490E58
2743:10AB60001C41028006C085B20000000000000068A1
2744:10AB700002C5853000000000000000701F00F73A99
2745:10AB800000000000000000F822812F340000D00EE9
2746:10AB900080010080A2802FB618000000000000F89D
2747:10ABA000730A0339D00E3600CA0000C00200369284
2748:10ABB0000000990E8001008082812FB60000A10E56
2749:10ABC0001F20010809006EB20000990E0430010830
2750:10ABD000899B90BC0000560E0431018002006EBCBF
2751:10ABE0000000321000000080020000F00000540E4F
2752:10ABF0000050014808806E9200001613000000808B
2753:10AC00000200009000000000000000042861803C69
2754:10AC100000006B0E000000002821809A000016132F
2755:10AC20009F000080028090B2000032100030014886
2756:10AC300008006EF200005A0E00500104A85B809CD0
2757:10AC400000001613000000800200009000000000C9
2758:10AC500000500100A81B803A0000680E0700004861
2759:10AC600018A084BC0800000000400200189AFE38BA
2760:10AC70000000161302010080823A80BC0000161307
2761:10AC800006010080923A80BC0000000000000068CD
2762:10AC9000020080320000321000000080020000F04C
2763:10ACA0000000630E000000800200009000001613F8
2764:10ACB00000000080020000900000680E07000048BD
2765:10ACC00018A084BC0800000000400200189AFE385A
2766:10ACD0000000161302010080823A80BC00001613A7
2767:10ACE00006010080923A80BC0000600E00000068FF
2768:10ACF0000200809200006B0E0400004818A084BA85
2769:10AD0000000016139F000004286180BC00000000B2
2770:10AD1000000000002821803A00000000005401FCDF
2771:10AD200002C06E320000740E12010060084023B2AF
2772:10AD300000820000D6010008088036320300161396
2773:10AD400004400200381AFFB8030000000000007839
2774:10AD50000960803918000000D241028CE6A19739C1
2775:10AD600000000000005001E8068084322900F3034F
2776:10AD70001201002C82CD2EB20000161300000080BC
2777:10AD8000020000900000161312000024080023B2F5
2778:10AD9000000016131200002008C023B20000161392
2779:10ADA00012000018088023B200000000000000D844
2780:10ADB0000280013200C07F0E1801000CA8CD3EB207
2781:10ADC00020800000D6010008088036320000790E8D
2782:10ADD00012000038028081B2000016131200003CFD
2783:10ADE000020082B20000161312000030024082B24C
2784:10ADF00000006E0E12010034020086B2000016132D
2785:10AE00000000008002000090080000000040025C8A
2786:10AE1000189AFE38000000000000004808000032C8
2787:10AE200000000000000000D8020000320000000016
2788:10AE30000000000007408032000000000008000011
2789:10AE4000070080320000000000100000074082323E
2790:10AE500000000000001800000700863200001613F2
2791:10AE600012000050F2C138B400000000D60100D832
2792:10AE700002800132000000000018000007808132CB
2793:10AE800000000000002000000700823210000000D7
2794:10AE90000030000017E02C3900008E0E800000808A
2795:10AEA000328087B60010008000380000070037327B
2796:10AEB00000008F0E0000008002000090001000884B
2797:10AEC000003800000700373218003600000000F894
2798:10AED000730A03F9000000000000006802C0853218
2799:10AEE000000016130201008082FA85BC00001613D0
2800:10AEF0000601008092FA85BC0000000000000008F6
2801:10AF0000E8010034000016131200004802C080B2AD
2802:10AF100018003600000000F8730A03F90000321030
2803:10AF200000000080020000F000006B0E00000080B6
2804:10AF3000020000900000A10E0000008002000090BE
2805:10AF40000000321000000080020000F000009C0EA3
2806:10AF500000380200B81B809C0000A10E0000008099
2807:10AF600002000090050000000000006802A0FE380A
2808:10AF7000050000000000007809A0FE38000016134C
2809:10AF80000201008082BA97BC0000161306010080FF
2810:10AF900092BA97BC0000990E00400280024068926D
2811:10AFA00000000000CA0100D8020000320000A50E17
2812:10AFB00004B8018002006EBC000016139FB801782F
2813:10AFC000891BEEBC0000000000B801E0861BEE3CCF
2814:10AFD0004C000000000000000700363200000000B6
2815:10AFE00000000078A9002D37B4040100000800001B
2816:10AFF000C78D973A000000000000007899C02C37F8
2817:10B00000B400000000000078898D973A0000161304
2818:10B010000210000087BF97BA00000000001800006F
2819:10B020000740FE320000161312000048F2C138B487
2820:10B030000000AD0EB6000080020000B00020161324
2821:10B0400012000064A2CD2CB200000000A600008017
2822:10B05000020000300000B20E80010080A2802FB6F6
2823:10B0600018003600CA0000F8730A03F900007D08D2
2824:10B07000005401FC02C06E92000016138001008093
2825:10B0800062812FB6000016138001008082812FB6E6
2826:10B09000000016131F000080020000B00000000036
2827:10B0A000005401FC02C06E320000BB0E12010060B1
2828:10B0B000084023B2008200000000000808803632F9
2829:10B0C0002900F3031201002C82CD2EB200001613CA
2830:10B0D00000000080020000900000161312000024FF
2831:10B0E000080023B2000016131200002008C023B28B
2832:10B0F0000000161312000018088023B200000000A0
2833:10B10000000000D80280013200C0C60E1801000CF9
2834:10B11000A8CD3EB220800000000000080880363232
2835:10B120000000C00E12000038028081B20000161329
2836:10B130001200003C020082B2000016131200003020
2837:10B14000024082B20000B90E12010034020086B241
2838:10B150000000161300000080020000900000321072
2839:10B1600000000048080000F20800C90E0040025C20
2840:10B17000189AFE980000161300000080020000904C
2841:10B180000000000000500100A81B803A0000810E62
2842:10B190000000004808000092000016131F01008004
2843:10B1A000020000B000000000005401FC02C06E323A
2844:10B1B0000000F31100000028098002F20000AD0E2B
2845:10B1C00000000080020000900000F3110000002841
2846:10B1D000090002F20000D30E9A0100F862812FB438
2847:10B1E00010240000000000F8A28D2F3100000000A4
2848:10B1F00000D601EC06C06E342E007D081201002C32
2849:10B2000082CD2EB2000016130000008002000090D4
2850:10B210000000161304A9018002006EB20000DE0EC9
2851:10B2200080010080F2C185B60000DA0E1F40028462
2852:10B23000E60100B40000DE0E1D0100F822812FB4EB
2853:10B240000000DE0E000000F862812F950000DC0E89
2854:10B250001D010080020000B000000000000000F8A6
2855:10B2600062812F35000000000040028002406832F9
2856:10B27000000016131F010080020000B00000E00E65
2857:10B2800004980164881B87BC0000AB120090010881
2858:10B2900009006EF20000DF1200000080020000F0E2
2859:10B2A000000000000000007809C58530000016137A
2860:10B2B0000201008082BA97BC0000161306010080CC
2861:10B2C00092BA97BC000016131200006802C585B040
2862:10B2D00000000000000000F8D2802F3500007F0839
2863:10B2E000370000F8D2812FB400000000000000F801
2864:10B2F00072812F343D007F081201002C82CD2EB2C6
2865:10B300000000161300000080020000900000F20E02
2866:10B3100080010080F2C185B60000EE0E1F4002845D
2867:10B32000E60100B40000F20E1D0100F822812FB4E6
2868:10B330000000F20E000000F862812F950000F00E70
2869:10B340001D010080020000B000000000000000F8B5
2870:10B3500062812F3500000000004002800240683208
2871:10B36000000016131F010080020000B00000000062
2872:10B3700000D401EC16C06E3A000000000000007816
2873:10B3800009C58530000016130201008082BA97BCFF
2874:10B39000000016130601008092BA97BC0000161335
2875:10B3A0001200006802C585B000007F0804B000806C
2876:10B3B00002006EBC37007F081201002C82CD2EB235
2877:10B3C0000000161300000080020000900000020F31
2878:10B3D00080010080F2C185B60000FE0E1F4002848D
2879:10B3E000E60100B40000020F1D0100F822812FB415
2880:10B3F0000000020F000000F862812F950000000F8E
2881:10B400001D010080020000B000000000000000F8F4
2882:10B4100062812F3500000000004002800240683247
2883:10B42000000016131F010080020000B000000F0F83
2884:10B43000000000800200009000000B0F80010080DF
2885:10B44000F2C185B60000070F1F400284E60100B478
2886:10B4500000000B0F1D0100F822812FB400000B0F1C
2887:10B46000000000F862812F950000090F1D01008087
2888:10B47000020000B000000000000000F862812F35DB
2889:10B4800000000000004002800240683200001613F5
2890:10B490001F010080020000B000000F0F370000F80D
2891:10B4A000D2812FB400000000000000F872812F3418
2892:10B4B0003D000F0F1201002C82CD2EB2000016139A
2893:10B4C00000000080020000900000000000D401ECA9
2894:10B4D00006000032000000000000007809C5853039
2895:10B4E000000016130201008082BA97BC00001613F8
2896:10B4F0000601008092BA97BC00007F081201006824
2897:10B5000002C585B000001613000000800200009004
2898:10B5100000007D0880010080F2812FB600007D08C8
2899:10B5200080000080E2812FB60000190F80000080AB
2900:10B5300002812FB6000016131D010080020000B02A
2901:10B54000000016130458018002C06EBC00007D0884
2902:10B55000085901EC06FB6EBC00000000000000D89A
2903:10B560000280013200000000545401FC02C06E321F
2904:10B5700000C0220F1801000CA8CD3EB20000000050
2905:10B58000005801EC06FB6E3A208000000000000825
2906:10B59000088036320000EF031201002C72E02EB258
2907:10B5A00000001613000000800200009000005D12F1
2908:10B5B000000000F8E2812FF40000250F060301804F
2909:10B5C00012C06EBC190068060000001C080036920C
2910:10B5D0001A0068060000001C0800369200001613CE
2911:10B5E00080010080F2812FB60000161380010080D8
2912:10B5F000E2812FB60000161304550180B2DB2FBC88
2913:10B6000000C00000000000F8A28D2F3100000000F3
2914:10B61000000000D802800132002000C00000002895
2915:10B6200009003732000000000030002808006E32A8
2916:10B6300000000000453000E0060000320000621209
2917:10B6400000000008E80100F40000340F040201ECDF
2918:10B6500016C06EBC00000000C90100141840813AF9
2919:10B6600000000000000000F802802F3400C0340FFA
2920:10B6700012010040A28D39B20000161300000080B4
2921:10B680000200009018003600CA0000F8730A03F99F
2922:10B690000000340F9F010014184081BC00007F0897
2923:10B6A0008001008092802FB62B007F081201002CB1
2924:10B6B00082CD2EB200001613000000800200009020
2925:10B6C000000016131F0100D8028001B20000000024
2926:10B6D000005401FC02C06E3200C0440F1801000C7F
2927:10B6E000A8CD3EB22080000000000028098036323C
2928:10B6F00000008111000000D8020000D20000410FBC
2929:10B7000004000080028092BC18000000000000F8D5
2930:10B71000730A0339420F3600000000C0020036925F
2931:10B7200018003600000000F8738A03F900000000DA
2932:10B73000000000D80280013200C0410F1800000C48
2933:10B74000A8CD3EB200005D12000000D8024000F219
2934:10B7500000F04C0F1D400200A80D68B10000161348
2935:10B760000B000080020000B0000016131E4002848F
2936:10B77000060000B200004A0F12000028020580B047
2937:10B780000800450F000000F8234001990000450F14
2938:10B7900012010068020580B000001613000000804E
2939:10B7A0000200009000004C0FB5000080020000B0C5
2940:10B7B00000000000A50080A0360B6A3500000000E4
2941:10B7C0000000005009C02932000000000056012886
2942:10B7D00008C06E320000000000000078390B2E32E5
2943:10B7E0000000000000000020F38197340000560F95
2944:10B7F00004000078D90130B600001613040100805F
2945:10B80000328097BC0000000000000000B905303015
2946:10B8100018000000000000F803A403390000000035
2947:10B8200000000034330B2F3200006F0F040000784B
2948:10B83000D90130B60000161304010080328097BC95
2949:10B840000000000000000078B905303000005D0FF6
2950:10B850000400008042E529BC00000000000000F860
2951:10B860000200003218000000000000F8738A02395C
2952:10B87000000000000000009C028097320A000000D7
2953:10B880000000001009003632000080120000001491
2954:10B8900009C029D20000690F25010008080000B284
2955:10B8A0000000161380000080F20180B60000000046
2956:10B8B0000000002C090580300000161302010080F2
2957:10B8C00082FA92BC000016130601008092FA92BC24
2958:10B8D0000000670F12000028020580B00800690F01
2959:10B8E000000000F8234001990000690F1201006870
2960:10B8F000020580B0000016130000008002000090D6
2961:10B9000000006D0F0400008002402FBC000000000A
2962:10B910000000007809002C32210316130400008077
2963:10B92000828D97BC9603161304000080828D97BC0D
2964:10B930000000161380000080A2802FB60000560F72
2965:10B94000000000F4020000920000730F0400008069
2966:10B9500042E529BC00000000000000F802000032AF
2967:10B9600018000000000000F8738A0239000000008F
2968:10B970000000009C0200953200000000CA0100D8BF
2969:10B9800002800132000000000030000007C02C32AD
2970:10B99000001000A00038000007003732000000004F
2971:10B9A000002000000700EE32000000000038000C0C
2972:10B9B00007808232000016131200004802C080B2D5
2973:10B9C0000000F60300000008E80100940000930F57
2974:10B9D00002000080A24280BC0000930F8000008023
2975:10B9E000F2C185B60000930F1F400208B9BF68B0CE
2976:10B9F0000000830F80410280E28168B608000000E9
2977:10BA00000000001079618039000016139F2001E0CA
2978:10BA100016206EBA00000000000000F822812F34CA
2979:10BA20001800000000400288E62191390000000063
2980:10BA30000001005C08000072000000000000000C23
2981:10BA400019A0903A0000930F06010080D2FF90BC2D
2982:10BA50000000870F2C410278F98168B400000000D3
2983:10BA600000000078B9819734010000000000001048
2984:10BA700009003632000080120000001459C085D73A
2985:10BA80000300000000400200291AFF3800000000F7
2986:10BA900000380200B91B903A00000000D241028831
2987:10BAA00016A0973A00000000450000D8024000327E
2988:10BAB000000016139F2001E016206EBA000000005F
2989:10BAC0000000000007408032000000000008000075
2990:10BAD0002724903A000000000010000007008A327E
2991:10BAE0000000000012010058F2C138740000161363
2992:10BAF00000000080020000900800A20F1A0000342D
2993:10BB0000796180B90000AE0F1E010080020000B014
2994:10BB10000000AE0F1F400200094068B20000950F00
2995:10BB200080000080E20190B6000016133800005437
2996:10BB30001F40F5BA0000000000000008B93F903037
2997:10BB400000000000002801E026246E3A08001613C9
2998:10BB50001E00000009A4FEB83D0000000000001017
2999:10BB6000090036320000801200000014090090D253
3000:10BB70000000000000000078090590300000161356
3001:10BB80000201008082BA97BC0000161306010080F3
3002:10BB900092BA97BC0000AE0F12010068020590B087
3003:10BBA0000000161300000080020000900000AE0F9D
3004:10BBB0008000008082812FB60000AC0F1F41020080
3005:10BBC000094068B200000000002801E016206E3A2B
3006:10BBD0000000A80F80010080F2C185B600000000BF
3007:10BBE00000400284E60100340000000000000080F4
3008:10BBF0000200003000000000004002800240683275
3009:10BC000000001613380000541F40F5BA0000161348
3010:10BC10009F2001E016206EBA0000000000010080A5
3011:10BC2000020000700000A30F80000080E20190B6C7
3012:10BC30000000970F000000541F40F59A000000001C
3013:10BC40000000005C08000032000016139F2001E095
3014:10BC500016206EBA00000000000000F822812F3488
3015:10BC6000180000001E410284E6619379000016135B
3016:10BC700000000080020000900000FFFF0000008034
3017:10BC8000020000900000B90F1D5D01EC16C06EBCF3
3018:10BC9000000000000F010080020000700000161379
3019:10BCA000045D018002C06EBC00001613800000809D
3020:10BCB00042812FB600000000000100F8B2802F740E
3021:10BCC000000000000F010080020000700000B70FAC
3022:10BCD000045E01EC16C06EBC00000000005C01ECCC
3023:10BCE00006400032000000000001008002000070E9
3024:10BCF0000000FFFF00000080020000900000000034
3025:10BD00000420018082DB907C000016130420018057
3026:10BD100002006EBC000016131F000080020000B07D
3027:10BD200000000000020C0280A2DB907C0000C40F27
3028:10BD300006210180821B90BC2700C50F0000000077
3029:10BD40000900369228000000000000000900363289
3030:10BD5000000000000000008812002C3A0000FFFFE5
3031:10BD600000000080020000900600000000000010AB
3032:10BD7000090036320000801200000014090092D23F
3033:10BD80000000161304000080020092BC00000000B6
3034:10BD90002FA00178891B927A0000000006880178A4
3035:10BDA000899B977C000000000034020409C06E3DAE
3036:10BDB00000000000000C020019A46E370000D20F32
3037:10BDC0000200008002A497BC0000D20F0200008095
3038:10BDD000020000B00100000000000078898D973754
3039:10BDE0000000000002010280829B977C000000009E
3040:10BDF000000100F8F2802F740000FFFF00000080B7
3041:10BE00000200009000000000DA5B01EC0640ED3219
3042:10BE10002D000000000000100900363200008012E2
3043:10BE2000005C011409806ED20000DA0F040100806A
3044:10BE3000024086BC0000000000A001E016206E3A1F
3045:10BE40000000DC0F00D401EC060000920000AB12F1
3046:10BE50000090010809006EF20000000000A001E05F
3047:10BE600016206E3A0000DF12330100F882802FB4F2
3048:10BE70000000DF129FF0018082DB87BC0000DF1230
3049:10BE80009FF8018022216EBC0000000000E801E064
3050:10BE90000600EE320000000000F001E006C087322C
3051:10BEA0000000DF1200000080020000900000FFFF91
3052:10BEB00000000080020000900000161308000080BF
3053:10BEC000028091BC11000000000000100900363211
3054:10BED0001000801200500114A99B91D91500000098
3055:10BEE000000000100900363210000000002001148C
3056:10BEF000890D6E370000801200300114895B91D2E9
3057:10BF00001A00000000000010090036320000801204
3058:10BF10000000001409C02DD2000016130621018074
3059:10BF2000829B91BC0000000000A8017809006E32DD
3060:10BF30000000161306010280829B97BC00000110CE
3061:10BF40000421013069246EBC000000000050010093
3062:10BF5000A99B913A0000F90F1F400224094068B2E2
3063:10BF60000000F00F80000080E24192B60000000067
3064:10BF700000000008B97F92300000000000000000BF
3065:10BF80002924903C080000000000007899A4FE38A5
3066:10BF9000000016130201008082BA97BC000016133D
3067:10BFA0000601008092BA97BC0800F00F12010068E9
3068:10BFB00092A4FEB80000161300000080020000905A
3069:10BFC0000000161304290180821B90BC00000000B1
3070:10BFD00000A801E066246E3A000016139F2001E0DD
3071:10BFE000060093B20000FE0F8000008082812FB611
3072:10BFF0000000FF0F002801E0060000920000000092
3073:10C00000003001E00600003200000000005001E8AE
3074:10C0100006000032000000000001008002000070F5
3075:10C020000000071038510100A99B91BA00000510CB
3076:10C0300004410208B9FF68B0000016138041028075
3077:10C04000E2C168B60000021000400280024068921F
3078:10C05000000014109F3101E066246EBC0000141033
3079:10C06000003001E0060000920000111004280104D5
3080:10C0700009006EB20000161306500180A25B90BC4E
3081:10C0800000000F109F010000192490BC0000000068
3082:10C0900000A801E066246E3A00000000002801E0DC
3083:10C0A0000624003C00000000005001E806000032B9
3084:10C0B000000016139F2001E0060093B2000000006C
3085:10C0C000000100800200007000000000002801E074
3086:10C0D0000600003200001D1004000080020090BC29
3087:10C0E0000000141004410208B9FF68B000001613E4
3088:10C0F00080410280E2C168B6000011100040028059
3089:10C10000024068920000181002000080222490BCB7
3090:10C1100000001D1080400280F2C168B600000000DF
3091:10C120000040028CB6C1683500001D10000000F808
3092:10C1300022812F940800000000400278399AFE38CE
3093:10C14000000016130201008082BA97BC000016138B
3094:10C150000601008092BA97BC0800161312400268CC
3095:10C16000129AFEB80000111004010000292490BCAE
3096:10C17000000000000000000809000032100000006C
3097:10C1800000000010790B1638080000000000000CB9
3098:10C19000790B1638000016130400008042E490BCAE
3099:10C1A0000000000000000004A9002D370004010079
3100:10C1B00000000004C94D903A02000000000000A8F1
3101:10C1C000820D913700000000000000A812A42A3A56
3102:10C1D0000000281080400280E2017CB600001613A7
3103:10C1E00004400278B93F7CB0000000000000000865
3104:10C1F000E9A5903A00002A109F010010190091BC97
3105:10C200009F000000000000100900363200002310DB
3106:10C210000401008042E490BC0000000000000078AF
3107:10C22000C924903A000016130401008022A497BC90
3108:10C230000000000000A801E066246E3A0000000043
3109:10C24000005001E806009032000016139F2001E024
3110:10C25000060093B2000000000001008002000070A0
3111:10C260000000FFFF00000080020000901800341062
3112:10C270001F41027888CD68B60000000000000088E9
3113:10C2800012002C3A0000371080010080628087B6CF
3114:10C290000000161304410280B2FF68B000003210A3
3115:10C2A000004002800240689203001613044002001E
3116:10C2B000381AFFB8000016131F400204B8FF68B018
3117:10C2C0000000000000380200B81B803A2E00000079
3118:10C2D0000000001009003632000080120000001437
3119:10C2E000090080D200000000000100800200007000
3120:10C2F0000000FFFF000000800200009000004510D9
3121:10C3000080010080A2802FB60000421012010000C0
3122:10C3100009C021B218003600000000F8730A03F9C2
3123:10C3200000000000000000D8024084321D004510CB
3124:10C330000401008002A417B800003F109F01008094
3125:10C34000180088BC00001613000000800200009056
3126:10C35000000000000060006C08006E320000000069
3127:10C36000CA68004C08006E320000161304700018F2
3128:10C3700008006EB2200000000000001009003632F4
3129:10C380001000801200000014A96081D90000000094
3130:10C3900004000080A2A0817C000016130D01008023
3131:10C3A000020000B000004F1080010080E2802FB634
3132:10C3B00000004F101B000080020000B000000000D1
3133:10C3C0000600008062E0837C000016139F000014CA
3134:10C3D000184081BC00000000CA0100F802802F351F
3135:10C3E00000A0000012010040A28D39720000161357
3136:10C3F00000000080020000900000FFFF00000080AD
3137:10C400000200009000000000000801E406C02D3288
3138:10C41000EEFF0000001001E0868D2F3100000000CB
3139:10C420000000001CB3E4393200005B100400007807
3140:10C43000D90130B60000161304010080328097BC89
3141:10C440000000000000000078B9053030180000003E
3142:10C45000000000F8E3A503390000000000000034EC
3143:10C46000330B2F320000000004000078D901307631
3144:10C470000000161304010080328097BC0000000009
3145:10C4800000000078B905303018000000000100F805
3146:10C49000E3A503790000FFFF000000800200009088
3147:10C4A000000016130401008002002DBC00001613CA
3148:10C4B0000401008002802DBC00000000000000CCC0
3149:10C4C00002000032000066102000012C09C06EB28C
3150:10C4D00000006710001686CC06C092920000000093
3151:10C4E000001486CC06C09232000000001201004009
3152:10C4F000628E92520000161300000080020000902D
3153:10C500000000FFFF000000800200009000006D109E
3154:10C5100004000078D90130B6000016130401008031
3155:10C52000428097BC6D103600000000C002003692B9
3156:10C530006000161304010080828D2FB100000000FE
3157:10C54000000000140300383200000000000000E08A
3158:10C55000020030320000B91004000024D80130B6C7
3159:10C560007210000000000088824D823A000016130D
3160:10C570000000008002000090000016130000008000
3161:10C5800002000090000016130000008002000090DE
3162:10C590000000161300000080020000906D103600AD
3163:10C5A000000000C00200369200009E1000000080D3
3164:10C5B0000200009000007A10000000204805309032
3165:10C5C000000016130000008002000090000086109A
3166:10C5D000921101BC08006EB200000000000801DCEE
3167:10C5E00002406E3200007E101F1101E026C18BB5A3
3168:10C5F000000086101D000080020000B00000000056
3169:10C60000000000D80200003280020000000000009C
3170:10C61000070036320000000000000078A9002D3726
3171:10C620002005010000080000C78D973A0A000000AD
3172:10C6300000000078890D8237000000000010000023
3173:10C64000A7BA973A000000000018000007C0EA32BD
3174:10C65000000016131200004802C038B200008A1011
3175:10C66000800E01BC08C06EB2000000000000000097
3176:10C67000190E823200E0921012010048A20D90B211
3177:10C68000000016130000008002000090000000006F
3178:10C69000000000D802400032B4000000000000009A
3179:10C6A000070036320000000000000078A9002D3796
3180:10C6B0000004010000080000C78D973A0000000048
3181:10C6C0000000007899008237000016130210000065
3182:10C6D00087BF97BA00000000001800000740FE3234
3183:10C6E0000000161312000048F2C138B418003600DA
3184:10C6F000000000F8730A03F90000000000000004C5
3185:10C70000896038321D0000000000007809A4173845
3186:10C71000000098108000008002C08BB600009910C5
3187:10C7200004000080328097BC0000161300000080D7
3188:10C73000020000900000161304010080028097BCE4
3189:10C740000000000000000018F341903400009E102B
3190:10C7500004000078D90130B60000161304010080EF
3191:10C76000328097BC0000000000000000B9053030A6
3192:10C7700018000000000000F803A4033900000000C6
3193:10C780000000000019CE2C32006016131200004089
3194:10C79000A20D90B200000000000000D8020000329C
3195:10C7A00060000000000000000700363200000000BA
3196:10C7B000000000BCA8002D37A00701000008000001
3197:10C7C000C7CD8B3A0A0000000000007889CD2C37D5
3198:10C7D0008002000000000078898D973A0000000078
3199:10C7E00000100000A7BA973A0000000000180000EF
3200:10C7F00007C0EA320000161312000040F2C138B43C
3201:10C8000018003600000000F8730A03F90000000069
3202:10C81000000801DC02406E321D00000000000078BC
3203:10C8200009A417380000161304010080028097BC89
3204:10C83000000016138010018022016EB60A00B010AD
3205:10C840001F01007889CD2CB70000B7101D1001F82A
3206:10C8500002006EB2800200000000000007003632C5
3207:10C860002005010000080000C7CD8B3A0000000041
3208:10C8700000100000A7BA973A00000000001800005E
3209:10C8800007C0EA320000161312000040F2C138B4AB
3210:10C8900018003600000000F8730A03F900000000D9
3211:10C8A000001001F802006E32EEFF16130401008042
3212:10C8B000828D2FB000000000000100800200007097
3213:10C8C000EEFF161304110180820D6EB0000000000F
3214:10C8D000001001F802006E3200000000000901DCC7
3215:10C8E00002406E720000FFFF000000800200009016
3216:10C8F0000000000000000000090000320E000000EF
3217:10C9000000000004894D0D3600000000000000000A
3218:10C9100007800B3200000000000800000700903282
3219:10C920000000000000100000070036320000C210B6
3220:10C930001200004CF2C138B400000000000000807A
3221:10C94000020000300000C3101200008002C021B2BB
3222:10C950000000000000000000E902903A0000BF1053
3223:10C9600004010004194090BC000000000001008098
3224:10C97000020000500000FFFF000000800200009055
3225:10C980000000D21080010080A2802FB60000CC10E1
3226:10C99000120100E802C021B218003600000000F8C1
3227:10C9A000730A03F90000D1100400008002802DBC3E
3228:10C9B000000016130401008022802DBC0000161315
3229:10C9C0009F000080180088BC0000CC10120100E815
3230:10C9D00002C021B20000CB100000008002000090D5
3231:10C9E00000000000CA0000D8024084320000161384
3232:10C9F0000401008002402DBC0000161304000080DA
3233:10CA000002802DBC000000000040006C881C833AAE
3234:10CA1000000000000048004C0800723200001613AD
3235:10CA200008500018C82072BC0000000004000080FC
3236:10CA30000240817C00000000000000141840813C8E
3237:10CA40000000161302000020880182BA00000000D6
3238:10CA5000000000D8020000320000000000000000CA
3239:10CA6000070006320000161304010080020036BCE5
3240:10CA70000700000000080000774A093900000000A4
3241:10CA8000001000000700823200000000CA190000F8
3242:10CA9000074082320000161312000040F2C138B481
3243:10CAA00000000000000100D8024084720000FFFF77
3244:10CAB0000000008002000090000000004D00000017
3245:10CAC00067E0833E0000000000080000070080329D
3246:10CAD000000000000010000007C0863200000000C7
3247:10CAE0000018000007C0843200003C110400002838
3248:10CAF000D8A082BC0000161309010080020000B01B
3249:10CB00000000000000000018D8A0813C0000FE10CA
3250:10CB10000400003CD8E083BC000016130401008030
3251:10CB2000028081BC0000EF100400008072802DBCE8
3252:10CB3000000016131200005002C038B20000F710B7
3253:10CB4000510000D812802D9A0000161312000050D8
3254:10CB5000F2C138B418003600000000F8730A03F977
3255:10CB60000000F5100400008072802DBC0000161338
3256:10CB700080010080A2802FB60000F010670000F84E
3257:10CB8000A2802FB500001613120000E802C021B2E7
3258:10CB9000000016130401008072802DBC000000000C
3259:10CBA000510000D8020000320000FC102A010000F1
3260:10CBB000D82080BA0000FB101201000009C021B289
3261:10CBC00018003600000000F8730A03F900000000A6
3262:10CBD000000000D8024084321D00161304000080BB
3263:10CBE00002A417B8000046100060006C08006EF246
3264:10CBF0000000E4104D00000067E0839E0000161363
3265:10CC000012000050F2C138B418003600000000F8DD
3266:10CC1000730A03F91D0005110400008002A417B86F
3267:10CC20000000161380010080A2802FB60000FF10C4
3268:10CC3000670000F8A2802FB5000016131200000054
3269:10CC400009C021B21D0016130401008002A417B808
3270:10CC50000800000000400278399AFE3800001613E0
3271:10CC60000201008082BA97BC000016130601008002
3272:10CC700092BA97BC0800161312400268129AFEB8C6
3273:10CC8000000016130B000080020000B000006411C9
3274:10CC900000000030030038F200001B111F00006C80
3275:10CCA000D8E086BA00003210510000D8020000F22D
3276:10CCB00000000F110000003C0840809200001B1192
3277:10CCC000000000800200009000001311800100802D
3278:10CCD000F2812FB60000131180000080E2802FB691
3279:10CCE0000000131180010080328087B60000000030
3280:10CCF000000000F8E2802F340000E31004010080FF
3281:10CD0000028081BC0000191180010080A2802FB632
3282:10CD1000000018111201000009C021B218003600ED
3283:10CD2000000000F8730A03F900000000000000D8BA
3284:10CD3000024084321D0016130400008002A417B8BC
3285:10CD4000000046100060006C08006EF20000E41065
3286:10CD50004D00000067E0839E0000201180010080EC
3287:10CD6000E2802FB60000401180010080A2802FB623
3288:10CD700018003600CA0000F8730A03F91D004011BC
3289:10CD80000401008002A417B8000016130000008000
3290:10CD90000200009000000000000000A4A8608A3C8F
3291:10CDA0000000161304210180825B8ABC000024115C
3292:10CDB0002FA8012099226EBA0000C70F0000008042
3293:10CDC000020000F00000161306010280821B92BCD4
3294:10CDD0000000000000A801E0060092320000000000
3295:10CDE000005001E80600003200002911232101E073
3296:10CDF000060000B23E0016131200002C82CD2EB2A7
3297:10CE000000001613043000E0068082B200003311E7
3298:10CE1000042100E0068081B200001613800000802B
3299:10CE2000E2802FB60000311180010080A2802FB671
3300:10CE3000000030111201000009C021B218003600B4
3301:10CE4000000000F8730A03F900000000000000D899
3302:10CE5000024084321D0016130400008002A417B89B
3303:10CE6000000046100060006C08006EF20000000038
3304:10CE7000002000E00680813200000000003C00E855
3305:10CE80000640813200000000001000E006C086323B
3306:10CE900000000000001800E006C0843200001613F5
3307:10CEA0000400008032E186B2000000002A01008008
3308:10CEB0000200007000003A111201000009C021B206
3309:10CEC00018003600000000F8730A03F91D0016135D
3310:10CED0000400008002A417B800000000000100F860
3311:10CEE000A2802F75000000000000003CD8E0833CC9
3312:10CEF0000000161312000050F2C138B400001613DF
3313:10CF000080000080A2802FB600000000000000F822
3314:10CF1000A2802F34000000000000008812002C3A8C
3315:10CF20000000FFFF000000800200009000000000F1
3316:10CF3000000000000900003200000000000000783E
3317:10CF40000900003200000000000000A802000032CA
3318:10CF5000EE05481104010080820DF6BC00060000B9
3319:10CF6000000000080900363200004A1100000004E9
3320:10CF700009C00992002800000000000809003632AC
3321:10CF80000000000000000004098009321E000000BB
3322:10CF9000000060C087CD003700000000000860C0BE
3323:10CFA000078097320030000000000078898D2A3A0F
3324:10CFB000000016131200005C528197B400000000BC
3325:10CFC000000000002924903A0800000000000078CA
3326:10CFD000890D903600000000000000041940903CCC
3327:10CFE00000000000000000A852822A3A00084A11FE
3328:10CFF00002010080828D2ABC00005B1106000080C7
3329:10D00000024090BC00001613120000A8020020B2DB
3330:10D010001E000000000000C087CD003700000000A7
3331:10D02000000800C007809732000016131200005C51
3332:10D0300052812AB400000000000000002924903A28
3333:10D040000800000000000078890D9036000054119F
3334:10D0500004010004194090BC0500000000000078A5
3335:10D06000890D903600000000000000A00E8097326D
3336:10D070000000161312000068028097B20000000042
3337:10D08000000000A40E8097320000000000000000A5
3338:10D090002924903A000000000000007859009036E2
3339:10D0A00000005D1195010080222490BA000000006C
3340:10D0B00000010080020000500000FFFF000000801F
3341:10D0C0000200009000007E1104010078D90130B602
3342:10D0D000000000000000002809C029320000000004
3343:10D0E0000000009CB2452830000070118601000845
3344:10D0F00009802FB2000000000000002C094081329E
3345:10D1000000000000000000F80200003200000000F3
3346:10D11000000000F40200003218000000000000F8D7
3347:10D12000738A0239000000000000009C02809232E5
3348:10D1300000006F110407018002C06EBC000079116D
3349:10D14000C30701ECB6E46E9A00007911000601EC09
3350:10D15000B6E46E9A0000161380010080528090B6EB
3351:10D16000000000000000002C0905803000000000D5
3352:10D17000000000F80200003200000000000000F48F
3353:10D180000200003218000000000000F8738A023923
3354:10D19000000000000000009C028092320000161384
3355:10D1A0000201008082FA92BC000016130601008082
3356:10D1B00092FA92BC0000D71100000080020000D05B
3357:10D1C000210000000000001009003632000080122B
3358:10D1D0000000001409C092D20000000000000030DE
3359:10D1E0000300383200007E1104010078D90130B606
3360:10D1F000000067110000009CB2452890000000006C
3361:10D20000040000802280977C00001613000000803C
3362:10D21000020000900000FFFF00000080020000906C
3363:10D22000000016130400008002C0E8BC00001613C2
3364:10D230000200008002C12FBC000000000000008836
3365:10D2400002C0E83202008411B00000A0F20B00B965
3366:10D25000000000000000000CABE4B03200008911B7
3367:10D2600080010080F24BD0B600000000A000002832
3368:10D2700009000032000000000001008002000050A0
3369:10D2800000008B1104010080123EF8BA00009611D4
3370:10D29000A0000004FD4BD09400009211800100809A
3371:10D2A000D28192B600009211800100802281FCB6EA
3372:10D2B00000000000A0000004FD4BD034000000007E
3373:10D2C0000000008401C02F32000000000000008038
3374:10D2D000F1010034000000000000009401C02F3272
3375:10D2E0000000961100000090F10100940000000081
3376:10D2F000A000008401C02F32000000000000008068
3377:10D30000F101F83400000000000000900140F83204
3378:10D310000000000000010028090000520000161360
3379:10D3200080010080F24BD0B600009C11040100285F
3380:10D330000934B0BA0000161380010080F24BD0B659
3381:10D3400000009911B0000080020000B00000000051
3382:10D35000A0000004FD4BD0350000000000010028B3
3383:10D360000900005200009C11B00000A822C02FB795
3384:10D3700000001613040084C037ACB0B200000000F7
3385:10D38000A000000C0B000032FFFF0000000000783E
3386:10D39000A94DB0300000A411800000800240B0B65A
3387:10D3A00000001613800000801240B0B6000000009C
3388:10D3B00000000078698197350000000000008408B3
3389:10D3C0000B007C320000000000000000E725013265
3390:10D3D0000042000000080000878D2A3A000000008B
3391:10D3E000001000000700B03200000000001800002C
3392:10D3F0000700D0320000000012010048F2C138548A
3393:10D400000000161300000080020000900000AA1126
3394:10D41000B00000A0020000B2000000000000000CFC
3395:10D42000ABE4B0320000AF11800100800240D0B602
3396:10D4300000000000A00000280900003200000000E9
3397:10D4400000010080020000500000B11104010080C2
3398:10D45000123EF8BA0000C211A00000040D40D094A2
3399:10D460000000BB1180010080D28192B60000BB1188
3400:10D47000800100802281FCB600000000A0000004B2
3401:10D480000D40D034000000000000007809C02F32A9
3402:10D4900000000000000000FC02000032000000005C
3403:10D4A0000000008401C02F32000000000000008056
3404:10D4B000F1010034000000000000009401C02F3290
3405:10D4C0000000000000000090F10100340000C211D3
3406:10D4D000000000FC0280979200000000A00000788D
3407:10D4E00009C02F3200000000000000FC02000032E2
3408:10D4F000000000000000008401C02F320000000086
3409:10D5000000000080F101F8340000000000000090ED
3410:10D510000140F83200000000000000FC0280973259
3411:10D52000000000000001002809000052000016134E
3412:10D53000800100800240D0B60000C811040100281C
3413:10D540000934B0BA00001613800100800240D0B642
3414:10D550000000C511B0000080020000B00000000013
3415:10D56000A00000040D40D03500000000000100289C
3416:10D57000090000520000C811B00000A8020000B26B
3417:10D5800000001613040084C037ACB0B200000000E5
3418:10D59000A000000C0B000032FFFF0000000000782C
3419:10D5A000A94DB0300000D011800000800240B0B61C
3420:10D5B00000001613800000801240B0B6000000008A
3421:10D5C00000000078698197350000000000008408A1
3422:10D5D0000B007C320000000000000000E725013253
3423:10D5E0000042000000080000878D2A3A0000000079
3424:10D5F000001000000700B03200000000001800001A
3425:10D600000700D0320000000012010048F2C1385477
3426:10D610000000161300000080020000900000FFFFD1
3427:10D6200000000080020000900000D9111C40028020
3428:10D6300006C092B244000000000100F8A28D2F52F3
3429:10D64000000000000000007809C5923000001613A9
3430:10D650000201008082BA97BC000016130601008008
3431:10D6600092BA97BC000016131200006802C592B06F
3432:10D67000000016130B000080020000B02400000020
3433:10D680000000001009003632000080120000001473
3434:10D6900009C092D200000000000100701F00F75A7C
3435:10D6A0000000FFFF00000080020000902C0000003E
3436:10D6B0000000001009003632000080120000001443
3437:10D6C000098092D200000000D50800000780923245
3438:10D6D000000000000030000007C02C320040008035
3439:10D6E000003800000700373200000000CA4101E0A6
3440:10D6F00006809232000016131200004802C080B269
3441:10D700000060000000010008088036720000FFFF82
3442:10D7100000000080020000900000161380000080CE
3443:10D72000A2802FB6000016130401008062802DBC79
3444:10D730000000000000380000078092320000000066
3445:10D740000030000007C02C3200000000CA3D000C71
3446:10D7500007808332000000001201004802C080727E
3447:10D760000000161300000080020000900000FFFF80
3448:10D7700000000080020000900000000004570180BB
3449:10D7800002C06E7C00000000005701EC068092721F
3450:10D790000000FFFF00000080020000900000641104
3451:10D7A00000000030030038F23300000000000010D9
3452:10D7B00009003632100080120000001419A02CD984
3453:10D7C0000000FB119D11020C09006EB20000FC115B
3454:10D7D00000F0011C09006E920000000000B8011C5E
3455:10D7E00009006E320000FE112CCD011809806EB2C6
3456:10D7F000000000000000000CC9C1903400000212BB
3457:10D800003B29020409806EB20000161380D6018005
3458:10D8100052C06EB60000000000D601EC56C06E3457
3459:10D82000000000000000000CB9C19034000012128A
3460:10D8300000A8010809006EF2000006129D01008098
3461:10D8400017E090BA000000000030008007C091325D
3462:10D8500000000912003800800700EE920000091253
3463:10D860000401008002C091BC0000000000B801E08B
3464:10D870000600EE3200000000007001E00600863273
3465:10D8800000000C123908008007C085B20000161392
3466:10D8900080000080C2812FB600000000D9C901E8D5
3467:10D8A0000680913200000000C811008007409032CD
3468:10D8B00000000F123B210080070086B2000000002C
3469:10D8C000DB0000601800863A00000000587801E094
3470:10D8D0001620863A000000000029008007008572AB
3471:10D8E0000000FFFF00000080020000900000161200
3472:10D8F000020C0280A29B90BC000000000000027895
3473:10D9000029006E360000161202000080E2A590BCCD
3474:10D91000000000000000000809000032000018129A
3475:10D920009F89017849216EBC00000000000000784A
3476:10D93000090000320000000000000008E9A5903F47
3477:10D9400000001E1204200208899B90BE0000000007
3478:10D95000000A0258B89B90360000000000000078D2
3479:10D9600049A1903A000000009F880180829B977C2B
3480:10D9700000000000008901E00680977200000000AE
3481:10D98000000B0258B89B90760000FFFF000000805B
3482:10D99000020000900000271280010080A2802FB6B4
3483:10D9A000000025121201007809C021B218003600CB
3484:10D9B000000000F8730A03F9000016130401008048
3485:10D9C00002802DBC00002712CA0000D802408492B9
3486:10D9D0001500161304010078E96517B8000000006F
3487:10D9E000000000F8A2802F3500001613040100800B
3488:10D9F00002402DBC000016130400008002802DBCE4
3489:10DA0000000000000040006C881C833A0000000009
3490:10DA10000048004C0800723200001613085000182D
3491:10DA2000C82072BC000000000600008062A0827C5A
3492:10DA3000000016139F000014184081BC000016134C
3493:10DA400002000020880182BA00000000000000D817
3494:10DA50000200003200000000000000000700063253
3495:10DA60000000161304010080020036BC070000000D
3496:10DA700000080000774A093900000000001000008B
3497:10DA80000700823200000000CA19000007408232FD
3498:10DA90000000161312000040F2C138B4000000006C
3499:10DAA000000100D8024084720000FFFF00000080E7
3500:10DAB000020000902B000000000000100900363228
3501:10DAC000000080120000001409C085D2000042123C
3502:10DAD00080010080F2C185B600003E121F40028422
3503:10DAE000E60100B4000042121D0100F822812FB4AB
3504:10DAF00000004212000000F862812F9500004012E1
3505:10DB00001D010080020000B000000000000000F8CD
3506:10DB100062812F3500000000004002800240683220
3507:10DB2000000016131F010080020000B00000161351
3508:10DB30001200006802C585B00000000000000078F7
3509:10DB400009C58530000016130201008082BA97BC17
3510:10DB5000000016130601008092BA97BC0000000076
3511:10DB60001D00008002000070010000000401008020
3512:10DB7000A28D2F702A0016131200002C82CD2EB217
3513:10DB800000000000000100F802812F740000FFFF78
3514:10DB9000000000800200009080A8000004000080C7
3515:10DBA000828D2F700000521280010080D2802FB62B
3516:10DBB000000016138000008072812FB60000521200
3517:10DBC00004B0008002006EBC00000000000000F8FD
3518:10DBD00072812F343D0055121201002C82CD2EB2DD
3519:10DBE0000000161300000080020000900000551293
3520:10DBF00080010080F2802FB63C0058121201002CE8
3521:10DC000082CD2EB2000016130000008002000090AA
3522:10DC10000000581280010080B2802FB63500161324
3523:10DC20001200002C82CD2EB200000000000000F88F
3524:10DC300042812F348000000004000080828D2F700C
3525:10DC40000200000004010080A28D2F703B0016131B
3526:10DC50001200002C82CD2EB200000000000100F85E
3527:10DC600012812F740000FFFF00000080020000906E
3528:10DC70000000161380000080A2802FB6000016134B
3529:10DC800004310280A2DB2CBC08000000001801E86F
3530:10DC900076208139EEFF0000000100F8828D2F719F
3531:10DCA0000000FFFF000000800200009000006612EC
3532:10DCB0000000013808C06EF20000000012010048A8
3533:10DCC00002C0807200001613000000800200009065
3534:10DCD0000000FFFF00000080020000900E00000026
3535:10DCE00000000010090036320000801200380114D4
3536:10DCF00009006ED200006A120438017809006EB281
3537:10DD000000000000003801E0060000320000161399
3538:10DD100080000080A2802FB600000000CA11000021
3539:10DD20000780823200006E122E190000078097B221
3540:10DD30000000000000000028E98192340000731206
3541:10DD40002731000007C02CB200000000D5080000F9
3542:10DD50000700873200000000C7000028E9809234E5
3543:10DD600000000000004001E00600873200000000D3
3544:10DD700000000008D8818034100000000039000045
3545:10DD8000E7A092790000FFFF0000008002000090F1
3546:10DD9000140000000000001009003632000080125C
3547:10DDA00000000014094090D2000016131200004435
3548:10DDB00012E438B218003600000000F8730A03F9C4
3549:10DDC00000007D120401008002802DBC00001613AB
3550:10DDD00080010080A2802FB600007812670000F852
3551:10DDE000A2802FB500001613120000E802C021B275
3552:10DDF000000016130401008072802DBC000000009A
3553:10DE0000000100D8024000720000FFFF0000008007
3554:10DE1000020000901B00000000000010790A9139F8
3555:10DE20000F00000000000010390B91390C000000B9
3556:10DE300000000010590A913909008312F101001005
3557:10DE4000690B91B903000000002486A8828D6C370D
3558:10DE500000000000000088E0070091320000000090
3559:10DE6000000088E00740913200C089120201008062
3560:10DE7000828D2ABC00008A12E12486C80600009226
3561:10DE800003000000E12486C8868D2A3600000000C9
3562:10DE900000010080020000500000FFFF0000008031
3563:10DEA000020000900000921204300080829B81BC2E
3564:10DEB000000016130D010080020000B000001613D0
3565:10DEC0009F3C001428806EBC000016138000008068
3566:10DED000A2802FB600000000CA0100F802802F3592
3567:10DEE00000A0161312000040A28D39B20000941257
3568:10DEF00080390080E2806EB6000016138038008002
3569:10DF0000F2806EB600C0161304010080A28D2FB0FF
3570:10DF100000C09A1204380078898D6EB010009A12F1
3571:10DF20009F0100F8E2A52FB900001613040000803D
3572:10DF300002C0EEBC00000000005801EC06C0EE324A
3573:10DF4000000000000000008002000030000000001F
3574:10DF50000428001809006E720000E30F0000008022
3575:10DF6000020000F00000C70F00A8012009006E9217
3576:10DF70000000FFFF00000080020000900000A712D8
3577:10DF800004B00080829B81BC000016130D0100804C
3578:10DF9000020000B0000016139FBC001428806EBC65
3579:10DFA0000000161380000080A2802FB60000161318
3580:10DFB00080B8008082806EB60000000000B800E8E3
3581:10DFC00086806E3400000000CA0100F842802F35C0
3582:10DFD00008A0000012010040A2CD39720000161303
3583:10DFE00000000080020000900000161380B800803E
3584:10DFF00082806EB60000000000B800E886806E34B3
3585:10E000000000000000010080020000700000FFFF1F
3586:10E0100000000080020000902800000000000010B6
3587:10E02000090036320000801200000014098090D2EE
3588:10E030000000B01233CD01BC08806EB20000EE12B9
3589:10E04000000000282922EEDC0000B512000000804C
3590:10E05000020000900000B51204B8012809006EB259
3591:10E060000000B5129F710180C2216EBC0000161322
3592:10E070009F000028A924EEBC0000EE12000000283A
3593:10E08000198092DF000000000000008002000030D4
3594:10E090000000C91202810180829B90BC000016130F
3595:10E0A00004000080028090BCEE05C112060C0280C4
3596:10E0B000828D6EBC00904C0000000084020037325C
3597:10E0C0000000BB12B8010080020000B00000B912CD
3598:10E0D000000000800200009000000000000000C46A
3599:10E0E000038090320000000000B001E096216E3CF9
3600:10E0F00000000000619801E0060087320000000087
3601:10E1000000D401EC0600003200000000A8000078F6
3602:10E1100049403C370000CE1200000008E9A5909A63
3603:10E120006089200000000084020037320000C41221
3604:10E13000B8010080020000B00000C21200000080A0
3605:10E140000200009000000000000000C40380903234
3606:10E150000000000000B001E096216E3C00000000CD
3607:10E16000619801E0060087320000000000D401EC55
3608:10E17000060000320000CE12A8000008198F909A05
3609:10E18000000000000000007899A1893E0000000016
3610:10E1900000000008E9A5903A0000000000B001E08E
3611:10E1A00096216E3C00000000619801E00600873275
3612:10E1B0000000000000D401EC060000320000D11283
3613:10E1C0000600008072A290BC00C0FF3F008001E00A
3614:10E1D00006003732000000000000000809C0893244
3615:10E1E0000000D61204790180821B87BC0000D41283
3616:10E1F00004B0008002006EBC0000D912D99001E08A
3617:10E20000068090920000DC128000008052812FB6C0
3618:10E210000000DC12D54101E0060087920000D9120F
3619:10E220003C9001E0068090B200001613800100804F
3620:10E2300092812FB60000000000C801E806C08B32B2
3621:10E24000000000009501008002802F720000DD12A6
3622:10E250009F410180821B87BC0000000000010080FC
3623:10E260000200007000000000D99001E006809032AA
3624:10E2700000000000000100F872802F740000FFFF12
3625:10E280000000008002000090270000000000001045
3626:10E29000090036320000801200000014094087D2C5
3627:10E2A0000000E7129FD8018022216EBC0000000010
3628:10E2B0000B010080020000700000E7129FE0018067
3629:10E2C000C2216EBC000000000B0100800200007043
3630:10E2D0000000E7129FB00180D2216EBC0000000058
3631:10E2E00000010080020000700000E9120668018051
3632:10E2F000825B87BC00000000006801E006408732B6
3633:10E300000000EB1237B001E0064087B200000000C9
3634:10E31000000000F8D2802F340000000000D801E097
3635:10E32000068084320000000000E101E006008772F0
3636:10E330000000FFFF000000800200009000001613A4
3637:10E3400008000080028092BC0000FB1204C101841E
3638:10E3500002006EB20500000000C001E8868D923711
3639:10E360000300000000C401E8868D92370000000021
3640:10E3700000000080020000300300000000C0012CFB
3641:10E38000898D6E360000000000C4012CA9DB923A92
3642:10E39000000000000000002C29C0923600000000A0
3643:10E3A0000000002C19FB923F000000000000002834
3644:10E3B0002980923A000000000000002CA9E4923F5E
3645:10E3C000000000006FCC01E826FB923E0000000038
3646:10E3D00000B901E0060000520000000000000094B7
3647:10E3E000028092320000000000C001E006402832A6
3648:10E3F000100000006FCC01E886CD2A360000000036
3649:10E4000000B901E0060000520000FFFF000000809C
3650:10E41000020000900000161304B0008002006EB2EB
3651:10E4200000000000009001BC08006E3200000000F7
3652:10E4300000B001BC88DB8B3E00000000009801BCEE
3653:10E4400088DB8B3A00000C139F0000BC88E18BBC7A
3654:10E4500000000C13040C0240A8DB8BBE000000007F
3655:10E4600000B00004881B843E0000091304B1008042
3656:10E47000825B80BC00000000000100F8C2802F74A5
3657:10E4800000000000040C0280A25B807C00000C13E2
3658:10E490000468017819006EB60000000002000080D8
3659:10E4A000E265807C2900000000000010090036327F
3660:10E4B000000080120000001409C08BD20000000090
3661:10E4C0000000008812002C3A0000FFFF00000080CE
3662:10E4D000020000900000161304310280A2DB2CBC65
3663:10E4E0000000161380000080A2802FB608000000F4
3664:10E4F000001C01E876208139EEFF0000000100F8E1
3665:10E50000828D2F710000FFFF00000080020000904C
3666:10E5100000001613000000B40F40FB940000000040
3667:10E52000000000880F402B32000000000000009027
3668:10E530000F00283200000000000000940F00293274
3669:10E5400010000000000000B85F461839FF0000000E
3670:10E550000000009C0F003632000000000000009C0C
3671:10E560005FCAF935000000000000004403C0F93222
3672:10E5700000000000000000E4030000324100001031
3673:10E58000000000E00300373200000000000000E45B
3674:10E590000300003240000010000000E003003732AA
3675:10E5A00000002513670000980F802AB200000000C9
3676:10E5B000000000A8020000320000231312C186E010
3677:10E5C00007C021B20000000000B886C006802A32D1
3678:10E5D0004C420000000000A8020036322713381415
3679:10E5E000000000B00F003692000000000000009C08
3680:10E5F0000200003200012414000000AC0F0036D2EB
3681:10E6000000000000000000AC0F802A320020000053
3682:10E61000000000A802003632000000000000009C4C
3683:10E620000F007E3200000000000000A00F007E32CC
3684:10E6300000000000000000A40F007E320000000077
3685:10E64000000000A80F007E3200000000000000A8BB
3686:10E6500002C0FA3200000000000000E007C0F932FA
3687:10E6600000000000000000E00700FA320000000097
3688:10E67000000000E00740FA3200003B13000000E019
3689:10E680000780FAD200000000000000E00780FB32A3
3690:10E6900001006213040100B48F4DFBB002000000C2
3691:10E6A000000000A002000039408000000000000CC3
3692:10E6B000ABCDB032100000000000000C5BCAB039D6
3693:10E6C000000000000000000C2BFEB03200006114BE
3694:10E6D000000000800200009000000000000000F830
3695:10E6E0000300013200000000000100E007803F52FB
3696:10E6F00018000000000000F8738A023900000000D2
3697:10E7000000000044530A1635000000000000009C81
3698:10E710000F80963200000000000000A00FC096326B
3699:10E7200000000000000000A40F009732A260030068
3700:10E730000000005803003732481300000000005C5E
3701:10E74000030036320000000000000050830D00344A
3702:10E750000000000000000048830D003400000000AD
3703:10E7600000000044530A003400003600000000801E
3704:10E7700002000090000000000000006809C0F932AB
3705:10E78000000000000000006C0900FA3200000000E8
3706:10E79000000000700940FA3200005A1300000080A7
3707:10E7A0000200009002000000000000A0F20B0039FF
3708:10E7B00000004F13800100801240B0B6000000003E
3709:10E7C000000000043B40B0330000000000000004E3
3710:10E7D000FD4BD035000053130000000C0B00979246
3711:10E7E00002000000000000A0F20B003900005313EB
3712:10E7F000000000046B01979400005313120000689E
3713:10E80000094020B2000054131200006C094020B2ED
3714:10E810000D000000000000FCA2E5163800005913AE
3715:10E820009F000080028096B200000000000000708F
3716:10E8300009C0963200005A130000006C09C0FD9216
3717:10E840000000591312000070094020B200000000BF
3718:10E850000000009C0200003200000000000000D810
3719:10E860000200003202005313040100BCAF2517B8A8
3720:10E8700006005113040000BCAF6516B800004C132D
3721:10E880000400008022C0FBBC00006A13040000806A
3722:10E8900012C1FBBC200053130401008082CDFBBCDD
3723:10E8A00002000000000000A0F20B003900006B1312
3724:10E8B00000000080020000D0641300000000008807
3725:10E8C00082CDF93A00005A14000000800200009046
3726:10E8D00000009313000000800200009000009413D9
3727:10E8E00000000080020000900000981300000080EB
3728:10E8F000020000900000A0130000008002000090C1
3729:10E900000000F91300000080020000900000531383
3730:10E91000000000DC0F0097920000000000000000E3
3731:10E920000700033240420000000000A80200363217
3732:10E93000000000000008000007802A3200000000EC
3733:10E9400000100000070097320000000000180000CF
3734:10E9500007C096320880701312000040028036B261
3735:10E960000000000000000080020000300000721370
3736:10E970001200009C0FC021B21D007513040000801E
3737:10E9800072BE17B800007213000000F81E80EF9AE4
3738:10E99000130000000000009C7FBE173800007813B1
3739:10E9A0000400008012C0F9BC00007213000000F8DF
3740:10E9B0001E80EF9A000000000000009C0F007E32D5
3741:10E9C00000000000000000A00F007E3200000000E8
3742:10E9D000000000A40F007E320000000000010000D3
3743:10E9E0000700FA52000000000000009C0200003204
3744:10E9F0004C420000000000A8020036320000000077
3745:10EA00000008000007802A3200004E140000008039
3746:10EA1000020000D00000521400000080020000D06C
3747:10EA2000000000000000000CCBC1B034000000006A
3748:10EA30000000009C0200003200000000000000D82E
3749:10EA400002000032000081110000002809C0B0D28D
3750:10EA50000000821304000080028092B2000086133E
3751:10EA60001200009C0FC021B21D0089130400008019
3752:10EA700072BE17B800008613000000F81E80EF9ADF
3753:10EA8000130000000000009C7FBE173800008C13AC
3754:10EA90000400008012C0F9BC00008613000000F8DA
3755:10EAA0001E80EF9A02008E13040100B48F4DFBB05C
3756:10EAB00000005313000000800200009008000000D6
3757:10EAC000000000F89340013900000000000000B48D
3758:10EAD0001F40FB35FE0000000000004803003632F6
3759:10EAE0000000000000000044030000340000821316
3760:10EAF0000000000C8BC1B09400005E140008000000
3761:10EB00000740FA9200004E14000800000740FAD2B5
3762:10EB10000880951312000050028036B20000531492
3763:10EB200000000080020000D000006014000000809F
3764:10EB300002000090000800000000009C0F00363228
3765:10EB400000040100000000A80200373200000000AD
3766:10EB5000000000A00200003200000000000000E001
3767:10EB60000700B03200000000000000A012002A3AA6
3768:10EB700000009B130401009C1FC0F9BC00040100AD
3769:10EB8000000000A80200373202005D14000000A05F
3770:10EB9000F20B00990000A813040100800240FAB2B1
3771:10EBA00000040100000000A8020037320000AA1390
3772:10EBB00000000080020000D00000B71300000084B5
3773:10EBC000020000D200000000000000E007C03C325C
3774:10EBD0000000A4138E010080024028B2000401004E
3775:10EBE000000000A40F0037320000931300000080E3
3776:10EBF0000200009000040100000000A4CF4DFA3A8A
3777:10EC0000000093130000008002000090000000004C
3778:10EC10000000009C0F00003210000001000000AC5A
3779:10EC20000F0037320000BC1300000080020000D04B
3780:10EC30000800AC130401008082CDF9BC0000000084
3781:10EC40000000009C0F0000320E000001000000AC2C
3782:10EC50000F0037320000BC1300000080020000D01B
3783:10EC60000B00B0130401008082CDF9BC200000002D
3784:10EC70000000009C0F0036320F000001000000ACC5
3785:10EC80000F0037320000BC1300000080020000D0EB
3786:10EC90002700B4130401008082CDF9BC00000000FD
3787:10ECA0000001008002000050000000000000009CF5
3788:10ECB0000F0000320F000001000000AC0F003732DF
3789:10ECC0000000BC1300000080020000D02000B91337
3790:10ECD0000401008082CDF9BC00000000000100802A
3791:10ECE0000200005000000000000000E403C0F93200
3792:10ECF0000D000001000000E00300373200000000BA
3793:10ED0000000000E003C0FA3200000000000000E054
3794:10ED100007403E32000000000001009C1FC0F95A6D
3795:10ED200000000000000000E003C0F9320000000015
3796:10ED3000000000E007403E32000000000000009CA0
3797:10ED40001FC0F93AFF000000000100AC8FCDF95060
3798:10ED5000000000000000009C0FC02F3200000000E7
3799:10ED6000000000FC0200003200000000000000E093
3800:10ED700007803E3200000000000000FC12C02F3A65
3801:10ED80000F00C7130401008082CD2FBC00000000DB
3802:10ED9000000000E007803E3200000000000100FC9F
3803:10EDA00002C0F95200000000000000E007003A3203
3804:10EDB00000000000000000E007403A3200000000C0
3805:10EDC000000000E007803A3200000000000000E090
3806:10EDD00007C03A32000000000000009C0FC02F3234
3807:10EDE00000000000000000FC0200003200000000F3
3808:10EDF000000000E007003D3200000000000000E0DD
3809:10EE000007403D320000D213830100FC12C02FBA2C
3810:10EE100000000000000100FC02C0F95200000000E8
3811:10EE20000000009C0F0000320C00000000000008F1
3812:10EE3000733E003900000000000000E0070030329F
3813:10EE4000000000000000009C1FC0F93A7000D713BA
3814:10EE50000401008082CDF9BC000000000000000C1D
3815:10EE60000300003200000000000000E00700303224
3816:10EE7000000000000000001003000032000000004D
3817:10EE8000000000E007003032000000000000009C9D
3818:10EE90000F00003200000000000000A00FC0293267
3819:10EEA000000000000000009C02C0F93200000000D9
3820:10EEB000000000A40FC02C32000000000000009CE5
3821:10EEC0000200FA32180000000000002C737EFA39AC
3822:10EED00000000000000000E0070030320000E013F6
3823:10EEE0008501009C1FC0F9BA0000000000010080ED
3824:10EEF00002000050010000010000009C0F003732AA
3825:10EF00000000C11300000080020000D00E00EF13CB
3826:10EF10000401008082CDFABC00000000000000E087
3827:10EF20000700003200000000000000E0070000328F
3828:10EF300000000000000000E0070000320000E913BC
3829:10EF40000000009C3FC0F99A1C00E91304010080F6
3830:10EF500082CDFABC0200C1130000009C8FCDF9DA0B
3831:10EF600000000000000100800200005001000002CB
3832:10EF70000000009C0F0037320000C1130000008029
3833:10EF8000020000D00E00F7130401008082CDFABC0D
3834:10EF900000000000000000E0070000320000F31352
3835:10EFA0000000009C1FC0F99A2600F31304010080A2
3836:10EFB00082CDFABC00000000000100800200005079
3837:10EFC00000000000000000A80F40293200040100EA
3838:10EFD000000000A8020037320000E81300000080A3
3839:10EFE000020000D00000F21300000080020000D0F8
3840:10EFF0000000C51300000080020000D000000000E7
3841:10F00000000000E00780183200000000000000E06F
3842:10F0100007401A3200000000000000E007001A322A
3843:10F0200000000000000000E007801A32000000002D
3844:10F03000000000E007C01A3200000000000000A03D
3845:10F040000F000032A26003000000005803003732B6
3846:10F050000B1400000000005C0300363200000000CA
3847:10F060000000009C0F802A3200000B140400008076
3848:10F07000024029B20000000000000050833E00342E
3849:10F080000000000000000048833E00340000000043
3850:10F0900000000044530A003400000C1400000088F3
3851:10F0A0000F402B9200000000000000900F0028325B
3852:10F0B00000000000000000940F0029320000000052
3853:10F0C000000000980F802A3200000000000000A815
3854:10F0D00002C0F93211143814000000B00F0036924B
3855:10F0E0000700141404000080824D29BC00000000B9
3856:10F0F000000000A01F00FA3A000008140000009C65
3857:10F100000F802A92C0010000000000AC0F003632D0
3858:10F11000010000000000009C0200363200002414B0
3859:10F1200000000080020000D01F001A1404000080BC
3860:10F1300082CD29BCC0000000000000AC8FCDFA3A9F
3861:10F14000000016140000009C12C0299A0000D6137B
3862:10F1500000000080020000D00000CC1300000080FE
3863:10F16000020000D00000221404000080528AFABC81
3864:10F17000A260030000000058030037322214000090
3865:10F180000000005C03003632000000000000005068
3866:10F19000A33E00340000000000000048A33E0034FD
3867:10F1A0000000000000000044530A00340004010085
3868:10F1B000000000A40F00373200009313000000800D
3869:10F1C0000200009000000000000000C402C0FA32FB
3870:10F1D000030000000000009C0F0036320000000019
3871:10F1E000000000BC0F402F3200002B140400009CD4
3872:10F1F0001FC0F9BC00002A140400008002402FB296
3873:10F2000000002714000000E007002C9200002714E3
3874:10F21000000000E00700369200000000000000E05F
3875:10F2200007402C3200000000000000E007802C3274
3876:10F2300000000000000000E007C02C3200000000C9
3877:10F24000000000E007002D3200000000000000E098
3878:10F2500007402D3200000000000000E007802D3242
3879:10F2600000000000000000E007C02D320000000098
3880:10F27000000000E007C0FB3200000000000000E0DA
3881:10F2800007802F3200000000000000E007C02F328E
3882:10F2900018000000000000F8730A023900000000A6
3883:10F2A000000100E007803F52FF0000000000004422
3884:10F2B0000300363200000000000000E00700F932D1
3885:10F2C00000000000000000E00740283200000000BD
3886:10F2D000000000E00780F832030000000000009CFE
3887:10F2E0000F00363200000000000000BC0FC02B32BF
3888:10F2F000000041140400009C1FC0F9BC0000401431
3889:10F300000400008002C02BB200003D14000000E0A9
3890:10F3100007C0289200003D14000000E0070036926C
3891:10F3200000000000000000E00740F932000000008B
3892:10F33000000000E00740293200000000000000E06B
3893:10F340000780293200000000000000E007C02932D9
3894:10F3500000000000000000E007002A32000000006A
3895:10F36000000000E007402A3200000000000000E03A
3896:10F370000780F93200000000000000E007C02A32D8
3897:10F3800000000000000000E007C02F320000000075
3898:10F39000000000E007402B3200000000000000E009
3899:10F3A00007802B3200000000000000E007C0FB32A5
3900:10F3B00000000000000000880200FB320000000096
3901:10F3C0000000009C0200003200000000000000D895
3902:10F3D0000200003200000000001000000700973219
3903:10F3E000000000000019000007C096520880521467
3904:10F3F00012000048028036B20000000000000080C9
3905:10F4000002000030000054141200009C0FC021B212
3906:10F410001D0057140400008072BE17B80000541479
3907:10F42000000000F81E80EF9A130000000000009C0E
3908:10F430007FBE1738000000000400008012C0F95C95
3909:10F4400000005414000000F81E80EF9A0000000035
3910:10F45000000000B40F40FB35000000000000009CDD
3911:10F46000020000324C420000000000A802003632C8
3912:10F47000000000000008000007802A3200004E143F
3913:10F4800000000080020000D0000052140000008044
3914:10F49000020000D0000000000000000CCBC1B0341E
3915:10F4A000000000000000009C02000032000000008C
3916:10F4B000000000D80200003200006B140000002899
3917:10F4C00009C0B0D20000611404000080028092B232
3918:10F4D000000065141200009C0FC021B21D006814CA
3919:10F4E0000400008072BE17B800006514000000F828
3920:10F4F0001E80EF9A130000000000009C7FBE1738AA
3921:10F50000000053130400008012C0F9BC0000651411
3922:10F51000000000F81E80EF9A00000000000000FCD0
3923:10F520000200003202000000000000A0F20B0039CF
3924:10F5300000006F14040100280934B0BA0000000074
3925:10F54000000100280900005200000000000000A88F
3926:10F5500022C02F3700000000000084C037ACB0325A
3927:10F56000000000000000000C0B000032FFFF000054
3928:10F57000000000C0AF4DB030000075148000008066
3929:10F580000240B0B600000000000000C06F01FC3572
3930:10F590000000000000000000073F013200420000B0
3931:10F5A00000080000878D2A3A0000000000100000CB
3932:10F5B0000700B03200000000001800000700D03241
3933:10F5C00000000000000000C03FC13834000000000F
3934:10F5D00012010048F201FC5400007A14000000807F
3935:10F5E000020000900000FFFF000000800200009079
3936:0CF5F000000036000000008002000090C7
3937:00000001FF
diff --git a/firmware/sxg/saharadownloadB.sys.ihex b/firmware/sxg/saharadownloadB.sys.ihex
deleted file mode 100644
index 0309852443b6..000000000000
--- a/firmware/sxg/saharadownloadB.sys.ihex
+++ /dev/null
@@ -1,3385 +0,0 @@
1:10000000020000005CD300000C00000000000000B3
2:10001000FF1F00000100000000000088824D293A07
3:100020000000400300000080020000900000090072
4:100030000000008002000090000009000000008025
5:100040000200009000000900000000800200009003
6:10005000000009000000008002000090000009007C
7:1000600000000080020000900000090000000080F5
8:1000700002000090000009000000008002000090D3
9:10008000FEFF0000000000AC020036320000360027
10:10009000000000A80200009200003610000000805E
11:1000A0000200009000003610000000800200009066
12:1000B00000003610000000800200009000003610A2
13:1000C0000000008002000090000036100000008058
14:1000D0000200009000002000000000D80F8028924D
15:1000E00000002100000000D80F80289200002200AC
16:1000F000000000D80F80289200002300000000D8E4
17:100100000F402B9200002400000000D80F8028929E
18:1001100000002500000000D80F8028920000260073
19:10012000000000D80F80289200002700000000D8AF
20:100130000F80289200002800000000D80F8028922D
21:1001400000002900000000D80F80289200002A003B
22:10015000000000D80F8028920000360000000098B0
23:100160001E80E99A00002C00000000D80F80289221
24:1001700000002D00000000D80F80289200002E0003
25:10018000000000D80F80289200002F00000000D847
26:100190000F80289200003000000000D40F00009271
27:1001A00000003000000000D40F400092000030003A
28:1001B000000000D40F80009200003400000000D442
29:1001C0000FC0009200003000000000D40F00019228
30:1001D00000003000000000D40F4001920000300009
31:1001E000000000D40F80019200003000000000D415
32:1001F0000FC0019200003000000000D40F000292F6
33:1002000000003000000000D40F40029200003000D7
34:10021000000000D40F800292000036100000008021
35:100220000200009000003000000000D40F00039294
36:1002300000003000000000D40F40039200003000A6
37:10024000000000D40F80039200003000000000D4B2
38:100250000FC0039200000000000000D05F3F003498
39:10026000000036100400008042FFFCB000000000D7
40:10027000000000881280FD3A000036100000008067
41:10028000020000903610361002010080828DFDBC05
42:1002900000000000000000881280FD3A000000000D
43:1002A000000000F803C001323800000000010084A3
44:1002B000824D281A000036000000007409400092A8
45:1002C00000004F00000000FC020000920000480007
46:1002D000000000800200009000004D00000000902F
47:1002E0000E80189200008F020000000008C02092CB
48:1002F00000007F00000000000800219200008D0235
49:10030000000000000840219200007C000000000076
50:10031000088521900000F202000000EC02C0229249
51:100320000000CE0300000080020000900000560094
52:10033000000000FC0240189D00005100000000D0A9
53:1003400002000092000020030000008002000090E4
54:100350000000361000000080020000900000000045
55:10036000000100800200007000004C00000000004E
56:1003700009C0219200004A0012010000088522B045
57:1003800018003600000000F8738A0299000084000B
58:100390006A000080020000B008008400000000F83D
59:1003A0002340019900000000000100E80200907263
60:1003B0000000361080010080B200E9B600003E0364
61:1003C0000000007C1EC0E79A08000000000000F852
62:1003D000134001390000320300000008B801009406
63:1003E000000036100300007809401ABD000000002C
64:1003F000000000A0E125003408000000000000F823
65:10040000B340013900003E03B20000D8020000B240
66:1004100000004005001001F802006E920000590033
67:100420000A0100CC020000B200006A00030100FCD7
68:10043000024019BD08003E03000000F8A3400199E6
69:10044000000000000000008401C02F320000000006
70:1004500000000090F1010034000000000000009452
71:1004600001C02F3202005C00B00000A0F20B00B906
72:1004700000005F000401008002C0B0BC0000680002
73:10048000A000008002000090000061008001008058
74:10049000F24BD0B600006800A0000080020000907F
75:1004A00000000000A0000004FD4BD03400006600F6
76:1004B000800100801281FCB600002D0F000000D8E2
77:1004C000020000D218000000000000F8730A03398F
78:1004D00068003600000000C0020036920000040FE1
79:1004E000000000D8020000D218003600000000F81A
80:1004F000730A03F900005900030100FC024018BD13
81:1005000000007B00030000FC024019BD0000000059
82:100510000000009401C02F320000000000000080A5
83:10052000F1010034000000000000008401C02F32FF
84:1005300002006D00B00000A0F20B00B900007000D6
85:100540000401008002C0B0BC00007900A00000805F
86:10055000020000900000720080010080F24BD0B6D3
87:1005600000007900A0000080020000900000000060
88:10057000A0000004FD4BD034000077008001008013
89:100580001281FCB600002D0F000000D8020000D23E
90:1005900018000000000000F8730A033979003600E3
91:1005A000000000C0020036920000040F000000D8D6
92:1005B000020000D218003600000000F8730A03F9A8
93:1005C00000006A00030100FC024019BD0000590050
94:1005D000030100FC024018BD08003E03000000F8C3
95:1005E000A340019908000000000000F873400139A1
96:1005F0000000840080010080E20180B600008100DC
97:1006000000000080020000900800ED020C0000F8DD
98:10061000534001B90000830080010080E20180B6F0
99:100620000000361012000068020580B0000032039E
100:100630000000006C1FC0F69A0000000000000000DF
101:100640000805803000000000000000FC02000132BC
102:10065000000000000000001008803D320000000093
103:10066000000000D40200003202A0000000000000E0
104:10067000A90D8032000088001200005402A438B294
105:10068000000200800000002C0800373218003600FD
106:10069000000000F8730A03F90000000000080004DD
107:1006A00008807232000090009F00005C080072B267
108:1006B00087008F008001008082CD85B00000A100FE
109:1006C0000000002CD8C182940000A1000000002C82
110:1006D00088C18294000F99000401008082CD85B00A
111:1006E00000009900800000804281FCB600003610B6
112:1006F00012000068020580B0000000000000006CDD
113:100700001FC0F63A00000000000000FC02000132A9
114:1007100000009700040100DC43603DB30000320399
115:10072000000000FC0200009218000000000000F829
116:10073000738A033994003600000000C0020036922C
117:1007400010009F0087000078792116B801009F00F3
118:1007500004010080828D97BC8700A8008700007884
119:1007600089CD85B000009E0004010080128097BCF6
120:100770000000A1000000002CD8C182940000A1005C
121:100780000000002C88C182940000A8008001008035
122:10079000F2C085B60000A8000000002C98C1829429
123:1007A0000000A70080010080D2C182B60000A8002E
124:1007B000800100807280FCB600000000001800A8D4
125:1007C000423D723000000000541889FCF2C07C30B9
126:1007D0000000CB0080010080F2C185B60000A900B6
127:1007E00000000080020000900000A3008000008054
128:1007F0008280FCB600000000540000FC02000032C1
129:100800008000802000000080C2CD85300000BE0046
130:100810000B000080020000B018000000000000780B
131:1008200079A116382000CB0004000080828D97BC8F
132:100830000000B500800100806280FCB68700B50032
133:100840008700007889CD85B00000B10004000080E9
134:10085000128097BC0000B50004010080228097BC84
135:100860000000B5008001008072C185B61000000054
136:1008700000000078796116380000BC000401008097
137:10088000328097BC0000CB000000002CB8C18294DD
138:100890000000BC00800100805280FCB60000BC005B
139:1008A0008000008072C185B60000BC00800100801D
140:1008B00002C185B60000BC0080010080D2C185B6AF
141:1008C000180000000000007879E116380000BC0034
142:1008D00004010080328097BC0000CB000000002C97
143:1008E000C8C1829400000000000000040800043227
144:1008F0000000CB000000002CA8C18294080000007A
145:1009000000000078792117380000CB000400008037
146:10091000328097BC0000CB0004010080228097BC8D
147:100920001F0000000012000889CD72300500000091
148:1009300000120000B9DC173800000000000000A819
149:10094000220090370000CB008000868022247CB6F5
150:100950000000361012000068020580B000000000A0
151:10096000000000FC020001320000C900040100DCAC
152:1009700043603DB300003203000000FC020000921F
153:1009800018000000000000F8738A0339C600360022
154:10099000000000C0020036920000CE00120100608C
155:1009A000084023B2008200000000000808803632B0
156:1009B0000000C500000000641F40F69A00003610D9
157:1009C00012000024080023B200003610120000209C
158:1009D00008C023B20000361012000018088023B2AD
159:1009E00000000000000000FC020001320000D50001
160:1009F000040000DC43603DB318000000000000F874
161:100A0000738A0339D1003600000000C0020036921C
162:100A100000000000000000FC020085320000000021
163:100A2000000000D80280013200000000000000D069
164:100A30000200003200C0E1001801000CA8CD3EB257
165:100A40000000D50012000038028081B200000000D2
166:100A50000000003C02008232000000000000003074
167:100A600002408232000000000000003402008632A2
168:100A700020800000000000080880363200000000DE
169:100A80000000005C1FC0F53A00003203120100684C
170:100A9000020580B0000036100000008002000090C7
171:100AA0000000000000180078090072320023E40002
172:100AB00004010080A2CD82B00000E500000000002B
173:100AC00009000092000036109F16000029C172BC78
174:100AD00000000000001800000780813200000000C4
175:100AE0000020000007008232000000000028000003
176:100AF0000780973210000000003000001720903966
177:100B0000000000000038000007C082320000000032
178:100B1000000000D8020000320000000000000000C9
179:100B2000074080320000EE0080010080A2C182B642
180:100B30000000EF000008000057008097050000004B
181:100B40000008000007A0043900003610041000005F
182:100B5000074082B200000000001800000700863243
183:100B60000000F10012000050F2C138B41800360045
184:100B7000000000F8730A03F9000036101200006844
185:100B8000020580B00000F4001200004802C080B2EC
186:100B900000003203CA010008E881809408000000C8
187:100BA000000000F89340013910000000540000FCE0
188:100BB000824D90360000F800F00100D8020000B22B
189:100BC00000000000620401A802C06E3200000000B4
190:100BD0000004010059C06E370000000000040178D5
191:100BE00019C06E3A000000004E0401EC06BD9730BB
192:100BF00000000000E00000F41E40EF3A000000009A
193:100C000000188BCC074000320000000000000000FC
194:100C100007400932000000000008000077C02937B3
195:100C20000000361004100000173D90BA00000000CC
196:100C3000001800000780F432000003011200004099
197:100C4000F2C138B400000000000000FC32C02F30B8
198:100C5000000000000000001008803D32180036003F
199:100C6000000000F8730A03F900000000000000D43F
200:100C700002000032000090018038008022C072B66D
201:100C800000000C01120000C8020020B20000130195
202:100C90001201005C088020B20000361012000060D3
203:100CA00002802CB218000000000000F8738A03399B
204:100CB00009013600000000C002003692000000006A
205:100CC000000000F81F80FF3A00000000000000FC58
206:100CD00032008530000068010400008042603DB3AE
207:100CE00018000000000000F8738A03390F01360075
208:100CF000000000C002003692080000000000000062
209:100D000088CD853700000000000000200800723206
210:100D100000000000000800240800723200003610B5
211:100D20000410006C080072B2000000000018004CB3
212:100D3000080072320000361004200018080072B259
213:100D4000000000000030002808007232000000009F
214:100D5000002800300800723200000000000000602F
215:100D600008808232000022010600008062A082BC5E
216:100D7000000000000000000007000632070000002D
217:100D800000080000774A09390000361004100000FE
218:100D9000070082B200000000CA190000074082323A
219:100DA0000000210112000040F2C138B40000000030
220:100DB000000000D8024000320000470104380078EB
221:100DC000D9C572B00000260180010080028097B66C
222:100DD00000000000000000F882802F34000028018D
223:100DE00080010080128097B600000000000000F82B
224:100DF00092802F34040000000038003CB81C1738E3
225:100E0000000000000000003C28C083370000000004
226:100E1000003A002C08C07232000000000000001CE4
227:100E2000B8E0833A00000000CB2900200700003220
228:100E3000000046010400008002C081BC00000000E8
229:100E40000000003478A0813E000000000000001C7B
230:100E5000D8E0813C00003501063A0080B25C83BCDA
231:100E600000000000003A000089C172370700340119
232:100E70002B010004790A04B900000000CB00000433
233:100E80001941903400003801003A002C070000920C
234:100E900000000000003A002CD7E0723C0000000087
235:100EA0000000000009000032000000000000000403
236:100EB00009000032000000000000000007648332D7
237:100EC000000000000008000007008032000036101B
238:100ED0000410000007C086B20000000000180000E7
239:100EE00007C084320000550104000028D8A082BC4D
240:100EF0000000000000000000D820803A00004101FE
241:100F00000400008072802DBC00003F0112000044EC
242:100F100012E438B200004201000000D812802D9A7D
243:100F20000000BD0F00000004F94190F400004401EE
244:100F300004000018D8A081BC00002D010000006C46
245:100F4000D8E0869A00007A0F0000004408802DF255
246:100F500000002D0100000030080000920000000099
247:100F6000CB19002007000032070049012B010004C3
248:100F7000790A02B900000000CB0000041941903446
249:100F8000000000004D000000A7A0813E000000000E
250:100F90000008000007008032000036100410000036
251:100FA00007C086B2000000000018000007C08432AD
252:100FB0000000550104000028D8A082BC00000000F9
253:100FC00000000000D820803A000052010400008098
254:100FD00072802DBC000050011200004412E438B2AF
255:100FE00000005301000000D812802D9A0000BD0FB0
256:100FF00000000004F94190F400007A0F0000004462
257:1010000008802DF200004701000000300800009227
258:101010000000000000000004F94190340000560177
259:101020001200004412E438B218003600000000F844
260:10103000730A03F9000000000018000409807332ED
261:1010400000000000002800088980733700000000BD
262:101050000000008007008632410000000006008C7E
263:101060000700363200005F012908008007C085B202
264:10107000000062012810008C070000B2000063012C
265:101080000012008407000092000000000010008C95
266:10109000F7E0823A0000620128180080074090B211
267:1010A00000006301001200840700009200000000AD
268:1010B0000012008427E482320000660104000080F0
269:1010C00042603DB318000000000000F8738A033945
270:1010D00063013600000000C00200369200000000EC
271:1010E000000000FC02008532000036101200005C97
272:1010F00052812CB400000000000000D802800132B0
273:10110000000000000000008002003B3208406A013D
274:10111000F0010008088036B2000000000004013829
275:1011200008C06E3200000000E00000F41E40EF3CFA
276:10113000000071010B01008C080000B200006E017C
277:10114000F2010080020000B000000000000000F08A
278:101150000E003A3200008201E20000800E8083928D
279:1011600000007101F2010078C93B3ABC00007B012C
280:1011700002010080828097BC00000000000000A8EF
281:101180000200E832000076010400008022A22ABC9E
282:1011900000007A0104198B8002C07CBC00000000B2
283:1011A0000000008C18C0883A00000000000000A871
284:1011B00012802A3A00000000000000A802BD2A3078
285:1011C0000000740104010080E2A02ABC00007F013D
286:1011D0000200008082C088BC00000000E20000081D
287:1011E0000800003200000000000000A802808832E1
288:1011F0000000000000188BCC070000320000320312
289:10120000000000DC03000092000000000000003835
290:1012100008802A3200000000000000F00E003A3280
291:1012200000000000E20000800E802A320000000072
292:10123000000000A8028088320000000000188BCC5B
293:101240000700003200000000000000DC0300003254
294:101250000000000000000000078083320000000052
295:101260000000000079C02937602000000000000065
296:10127000890D903A00000000CA0100D812802D3A72
297:101280000000000000000000070001320000000024
298:10129000000800000700903200000000001000006D
299:1012A0000740E83200000000001800000780E83224
300:1012B00000000000000000FC0200003200003203C9
301:1012C00012010048F2C138B400008E010000008015
302:1012D00002000090000000000030007808807232A8
303:1012E0000400000000380054A85C16380B00000011
304:1012F0000038002CA8DC1638140000000000001C88
305:10130000884D853A0000000000000020080072327D
306:1013100000000000000800240800723200000000F5
307:101320000010006C08007232000000000018004C31
308:10133000080072320000361004200018080072B253
309:101340000000000000280030080072320000A101F7
310:10135000083C0014188072BC00000000000000145B
311:101360001840813C00000000000000000700063229
312:101370000700000000080000774A09390000361015
313:1013800004100000070082B200000000CA1900002B
314:10139000074082320000A00112000040F2C138B4C0
315:1013A00000000000000000D80240003200000000F1
316:1013B0000000006478C029370210000000000064BB
317:1013C000884D863A000000000000008008000032CE
318:1013D0000000000000000040080000320000000093
319:1013E0004D00000077A0813E0000000000080000D2
320:1013F00007408632000036100410000007C086B295
321:10140000000000000018000007C084320000B9018D
322:101410000400001CD8E081BC000000000000006453
323:10142000D860863A0000AF010400008072802DBCB5
324:101430000000AD011200004002C038B20000B5014A
325:10144000000000D812802D9A0000AF011200004069
326:10145000F2C138B418003600000000F8730A03F92E
327:101460000000B4010401008002802DBC0000B00126
328:10147000670000F8A2802FB500003610120000E8C7
329:1014800002C021B200000000000000D8024000327B
330:101490000000B70104000018D8A081BC0000A6011C
331:1014A0000000006CD8E0869A00005D0E0000004449
332:1014B00008802DF20000A601000000300800009214
333:1014C0000000B90112000040F2C138B41800360023
334:1014D000000000F8730A03F90000BE010401008057
335:1014E00002802DBC0000BA01670000F8A2802FB571
336:1014F00000003610120000E802C021B20000C9014D
337:1015000004010080020084BC00000000000000D440
338:101510000240003200000000000000A42240853A92
339:10152000040000000018004088CD74360000000060
340:10153000000000402800843700000000000000D4B4
341:10154000020000321400C9010400001C880D84BC94
342:1015500000000000000000780961853A8000361024
343:1015600006010080828D97BC00000000000000642E
344:10157000D860863A0000B501000000D80240009211
345:101580000000CB0104000018D8A081BC0000CD01F0
346:101590000000006CD8E0869A00005D0E0000004458
347:1015A00008802DF20000000000000030080000322A
348:1015B00000000000000000D40240003200000000E3
349:1015C000000000A422C0823A000000000000003C9D
350:1015D000B860853C0400D3018100006088CD74B6FA
351:1015E0000000000000040028F8A0753C0000D401B1
352:1015F00000080074088075920000000000080028B0
353:10160000F8A0753C000000000000002808A1823C02
354:1016100000000000000000A4F2602A3A0000000070
355:101620000008004808007532000000000020007C1F
356:10163000088075320900DA01041A007088CD74B090
357:1016400009000000001A004C87CD74317F000000B3
358:1016500000000064884D8631000000000000006436
359:101660002840863A00000000000000D80240003206
360:10167000000000000010000007408632000000005B
361:10168000000000D8028000320000000000100000BE
362:101690005761863A0000E301120000C8020020B240
363:1016A0000000E6011201005C088020B20000361044
364:1016B0001200006002802CB200000E012A0100D44A
365:1016C000020000B218003600CA0000F8730A03F9DD
366:1016D00000000F01000000F81F80FF9A00000000CA
367:1016E000000000D4024000320800000000000000AA
368:1016F00088CD8537000000000000001CE8A1823E74
369:1017000000000000000000A42240853A0000000014
370:1017100000080050078084320000ED0104010080C1
371:1017200072A082BC00000000001A004CC7E17432B5
372:10173000000000000000006808E1813A0000F001AC
373:1017400090010078F9A186BA00000000000000783E
374:101750001980973A00000000002000580780973257
375:1017600000000000000000D80280003200000000ED
376:101770000000000007008432000000004008000064
377:101780005721803A0000F4011200004CF2C138B435
378:1017900000000000000000000821803A0000000066
379:1017A0000000000408C0813200000000510000D891
380:1017B00002C0003200000000000000D4020000322D
381:1017C00000000000CB190020070000320700FC01D8
382:1017D0002B010084780A02B900000000CB000084CD
383:1017E00018418834000000004D00000077A0813EC1
384:1017F00000000000000800000700803200003610E2
385:101800000410000007C086B20000000000180000AD
386:1018100007C08432000036109F000028D8A082BC88
387:10182000000014020400001CD8E081BC0000080283
388:101830002D000000D82080BA00000502120100E847
389:1018400002C021B218003600000000F8730A03F944
390:10185000000007020401008022802DBC0000080265
391:10186000CD0100D80240849200000402000000F87C
392:10187000A2802F9500000B020400008072802DBC16
393:10188000000009021200004412E238B20000120205
394:10189000000000D812802D9A000000000000008493
395:1018A000F841883400000C021200004412E238B201
396:1018B00018003600000000F8730A03F90000110256
397:1018C0000601008022802DBC00000D02670000F898
398:1018D000A2802FB500000E02000000E802C0219295
399:1018E00000000000000000D802C0003200005D0EC1
400:1018F0000000004408802DF20000FA0100000030D2
401:101900000800009200001A0280000080D2802FB6EA
402:1019100000001702120100E802C021B218003600D0
403:10192000000000F8730A03F90000190204010080A6
404:1019300022802DBC00001A02000000D802408492D0
405:1019400000001602000000F8A2802F9500000000A1
406:10195000CD000084F841883400001B0212000044CE
407:1019600012E238B200000000000000D40240003251
408:1019700000000000000000A422C0823A0000230200
409:1019800004010080420086BC0000000000080058EE
410:1019900007408732000022028F010074184087BA86
411:1019A0000000000000000074080000320000250262
412:1019B00000040058F7A0869A00000000000000789C
413:1019C000F9A0863A2800000000080058878D973C4F
414:1019D00000000000000000D80240003218000000A3
415:1019E00000000000B7608539080000000008000012
416:1019F00087CD8537000028021200004CF2C138B4B0
417:101A0000000000000000004818A0843A0000000018
418:101A1000000000D40200003200000000000000803E
419:101A200057A1863A410000000006008C07003632BC
420:101A3000000000000008008007C0853200000000A0
421:101A40000010008C0740853200000000000000D824
422:101A5000028000320000361004000058088071B285
423:101A600000000000000000800880003218003600EE
424:101A7000000000F8730A03F9000035020401008039
425:101A800002802DBC00003202000000F8A2802F95D9
426:101A90000000320204010080180088BC00003802F7
427:101AA00090190058E89C85BA00000000000000581A
428:101AB0001880853A000000000018008007858530F6
429:101AC00000003D0204010080420086BC00000000CE
430:101AD000000000D8024000320000000000000008B2
431:101AE0008980713700003E020012008427E4829250
432:101AF00000000000001200840700003200004202D3
433:101B0000270000FC020085B20000420204000080B1
434:101B100042603DB318000000000000F8738A0339EA
435:101B20003E023600000000C002003692000036106F
436:101B30001200005C52812CB40000450204010080B8
437:101B4000028082BC00006801000000D40200009204
438:101B50000000480204010018D8A081BC00005D0EFE
439:101B60000000004408802DF20000E001C7010030B1
440:101B7000080000920000E001C701006CD8E0869ADE
441:101B800008000000C60100F893400139000032034C
442:101B900080018080320B6AB600000C0E0000003C11
443:101BA000030038F200004E020406018002C06EBC41
444:101BB00000003103000601EC56E06E9A00000000C0
445:101BC000C40701EC56E06E3A08C04F021200004014
446:101BD000A2CD39B218003600000000F8730A03F9EC
447:101BE0000000361003B8000009C06EBD53020000AB
448:101BF00000000088820D903A2F007C050000001C38
449:101C000008003692000036100000008002000090AC
450:101C10002C007C050000001C0800369200003610E5
451:101C200000000080020000900000361000000080DC
452:101C300002000090000036100000008002000090BA
453:101C400038007C050000001C0800369239007C0535
454:101C50000000001C0800369208000000000000F898
455:101C60009340013900000C0E0000003C030038F2E4
456:101C700000000000000000F842802F3408C05E021F
457:101C800012000040A2CD39B218003600000000F862
458:101C9000730A03F9000000000004017809C06E32E5
459:101CA00000000000006201EC068097320000000096
460:101CB000000601EC0640003200006302B50000D8C7
461:101CC000020000B200000000A50080A0360B6A34BC
462:101CD00000000000003002E806C02C3200000000C6
463:101CE000001801E00600003200000000000000F8CB
464:101CF00082852F3000007D050000001C0800369210
465:101D000008000000000000F89340013900006C0258
466:101D100080008080320B6AB6000032030000008031
467:101D20000200009000000C0E00000038030038F2A2
468:101D300000006F020402018002C06EBC000031038B
469:101D4000000201EC56E06E9A00000000C00301ECB6
470:101D500056E06E3A00C0700212000040A28D39B207
471:101D600018003600000000F8730A03F900007C0236
472:101D70003828001809006EB200007502042101081D
473:101D800069246EBC03007D050000001C080036922B
474:101D90000000790202300080829B90BC0000780233
475:101DA0000603018012C06EBC04007D050000001C0B
476:101DB0000800369205007D050000001C08003692E0
477:101DC00000007B020603018012C06EBC0B007D0583
478:101DD0000000001C080036920C007D050000001C6D
479:101DE0000800369200007E020421010869246EBCBE
480:101DF00003007D050000001C0800369200008202EE
481:101E000002300080829B90BC0000810206030180AA
482:101E100012C06EBC04007D050000001C0800369254
483:101E200005007D050000001C0800369200008402B9
484:101E30009F31010C69246EBC000000000000000C02
485:101E4000090000320000880204310004899B90BC24
486:101E5000000087020603018012C06EBC20007D05D1
487:101E60000000001C0800369221007D050000001CC7
488:101E70000800369200008A020402018012C06EBC83
489:101E800022007D050000001C0800369200008C0234
490:101E90000401000039A490BC23007D050000001C53
491:101EA0000800369224007D050000001C08003692D0
492:101EB000080036100C0000F8634001B910009102D0
493:101EC000C50100CC022015980800ED020C0000F8B6
494:101ED000434001B910000000C50100CC02201538B4
495:101EE00000000C0E0000003C030038F200009402D9
496:101EF0003601005C080580B00F007D050000001C65
497:101F00000800369210000000002C0200A9DB853981
498:101F1000000095021200005402A438B20000000034
499:101F20000008028C08C06E3200000000000C02980D
500:101F300028806E37000000000000009C3822143713
501:101F400000009E020430002808006EB20000361027
502:101F50000410006C08006EB2000000000018004C75
503:101F600008006E32000036100420001808006EB21F
504:101F70000500A1020038020078E16E99000000001F
505:101F8000510000D802000032000000000038027842
506:101F900009C06E32050000006808000077A197397B
507:101FA0000000A3021201000009C021B2180036008F
508:101FB000000000F8730A03F900000000545401FC0B
509:101FC00002C06E321410A70204000080A20D72B08D
510:101FD0000000510F0000002809C002F20E007D052C
511:101FE0000000001C080036920000B602331500A461
512:101FF00002C072B20000EA0280010080B20172B633
513:102000000101AD0204290080828D74BC080AEA0235
514:10201000042D0080828D74BC000000000030007C24
515:10202000080075320000B402003800881800759C62
516:10203000080AEA0204290080828D74BC10000000A6
517:10204000002C007C888D7537000000000030007C7B
518:1020500068DD87320000B3029F390088188075BCA4
519:102060001000000000340088888D75370000B4022D
520:10207000000000881880889C100000000034008850
521:10208000689D88390000B7029FF1018082DB87BC20
522:102090000000EA0200000080020000900000EA0256
523:1020A00080000080B20172B6000000000008004805
524:1020B0000800753200000000001000700800753242
525:1020C00000000000001C007438A275370000BC023C
526:1020D000831B007808C074B200000000000000F804
527:1020E000C2802F340000CC029F780180C2216EBCD8
528:1020F0000000C0029F990164881B87BC0000CD02CC
529:102100009F680164885B86BA0000000000000064DC
530:102110000800003200000000001600A402C0723265
531:1021200000000000003C02A4B25B2A3A000000005C
532:10213000003A027809C06E320000CE0208010004A5
533:10214000E8A575BC1000EA020B01001C080036B2BD
534:102150000000CC0204A10180829B84BC00007D05AC
535:102160009F980180C2216EBC00007D0506B10180F0
536:10217000825B87BC0000E9020B010080020000B016
537:102180000000CD0204990180C2216EBC0000E7026C
538:1021900002D4018092FB6EBC16007D050000001C7D
539:1021A0000800369217007D050000001C08003692DA
540:1021B0001C007D050000001C080036920000D002C3
541:1021C00004A10180829B84BC0000D70206A8018084
542:1021D000825B80BC0000D40204A9018002006EBCB6
543:1021E0000000E80204A10180829B84BC0000E80298
544:1021F00004010080124080BC14007D050000001C1A
545:10220000080036920000E8029FA0017829216EBCE8
546:102210000000E8020201008012A097BC0000CC027E
547:1022200000000080020000900000E3020400008033
548:10223000028082BC0000DC0202000080A26080BC40
549:1022400006007D052C01001C080036B200C0E0022B
550:1022500004010080A28D2FB006007D050000001C47
551:10226000080036920000E00204000080A26080BCFA
552:102270000000DF020603018012C06EBC09007D056C
553:102280000000001C080036920A007D050000001CBA
554:10229000080036920000E2020603018012C06EBC04
555:1022A00007007D050000001C0800369208007D052F
556:1022B0000000001C0800369202007D053801001C59
557:1022C000080036B20000E602020C0280A25B80BC6D
558:1022D0001F007D050000001C080036921E007D05D1
559:1022E0000000001C080036920000EB0200000028ED
560:1022F000094000920000EB020000002809800092D3
561:102300000000EB020000002809C000920000EB0270
562:1023100000000028090001920E00510F0000001C6F
563:10232000080036F200007D050000008002000090E9
564:10233000100036102A0000CC022015B800000C0E48
565:102340000000003C030038F21D00F102800100781B
566:1023500009E000B81D007D050000001C0800369251
567:1023600015007D050000001C0800369200000000EA
568:102370000000001CA805283008000000000000F83C
569:102380008340013900003E0380018080320B6AB631
570:1023900000000C0E00000038030038F27E0500003B
571:1023A0000000008882CD813A0000F9021D41025CE4
572:1023B000F80168B441003103000000F8A28D2F91AC
573:1023C00010000000D02C0200A9DB85390000960225
574:1023D0001201005402A438B20000FA02000000808A
575:1023E000020000900000000304B0008002006EBCF8
576:1023F0000000000380B9008082806EB600002510C6
577:102400000078016008006EF230007C05D700001CE7
578:10241000080036920000020380010080D2812FB6AE
579:1024200031007C05D700001C080036920000040330
580:102430008001008042812FB635007C05D700001C4A
581:10244000080036920000110304A8010809006EB2CA
582:102450000000000000200208899B903E0000000060
583:1024600000A00108899B903A000011039F88010891
584:10247000899B90BC000000000034020009C06E3D42
585:1024800000000000000C020409A46E3700000D03D8
586:102490000200008012A490BC0000000000000008B0
587:1024A000198090370000110302010280829B90BCCA
588:1024B00031007C05D700001C080036920000110393
589:1024C00004B0008002006EBC001211030401008001
590:1024D000A28D2FB032007C05D700001C0800369278
591:1024E00000003103000000F872812F950000000009
592:1024F000000000F842802F3408C050021201004052
593:10250000A2CD39B200001303000000800200009049
594:1025100008000000000000F89340013900003E036D
595:1025200080018080320B6AB60000000000000014B9
596:102530000840903200000C0E00000038030038F212
597:102540007E0500000000008882CD813A080000006E
598:10255000000000F89340013900003E0380018080B4
599:10256000320B6AB600000C0E00000038030038F28F
600:1025700000001F030420018052206EBC26007D0550
601:102580000000001C0800369225007D050000001C9C
602:102590000800369200002503040100D81E80EDBC1F
603:1025A00000002103B70000D80EC0EDB200002403E4
604:1025B00004010080423BEEBC00000000000000E08F
605:1025C0001E00EE3A00000000A70000D00E00EE3220
606:1025D00000000000007486CC02806C320000000015
607:1025E000000000000940E7320000290380018080DC
608:1025F000320B6AB6360028031200002C82CD2EB2B0
609:1026000000002B030401008042C52CBC00002C03F9
610:10261000000000CC0200009200000000000000CC8E
611:1026200012C02C3A0000270304010000190090BCDE
612:1026300000000000007486C806C02C3208003E036B
613:10264000000000F8C34001990000FA0D0000002CC2
614:10265000090000F200003203000000800200009038
615:102660000000FA0D0000002CF90100F400003B030B
616:1026700004000028098080B200000000000000D89B
617:10268000020000320000F10E00000008080000D235
618:1026900000003B0304000080028092BC180036005A
619:1026A000000000F8730A03F900003E038001008077
620:1026B000A2802FB600003E031201000009C021B223
621:1026C00018000000000000F8730A03393E033600CA
622:1026D000000000C00200369200003E03800100802E
623:1026E000A2802FB600003E031201000009C021B2F3
624:1026F00018003600000000F8730A03F9000000001B
625:10270000000000F80200003218003600000000F857
626:10271000738A029910000000000000E403003632C2
627:1027200002000001000000E003003732000000005A
628:10273000000000E40300363204000001000000E065
629:1027400003003732AA040000000000E40300363220
630:1027500009000001000000E0030037320000000023
631:10276000000000CC0F00003200070000000000E471
632:102770000300363206000001000000E0030037329B
633:1027800020000000000000E40300363208000001D1
634:10279000000000E00300373200010000000000E408
635:1027A0000300363205000001000000E0030037326C
636:1027B00030000000000000E4030036320700000192
637:1027C000000000E00300373200A00000000000E439
638:1027D0000300363208000008000000E00300373232
639:1027E00000000000000000A0020000320000000015
640:1027F000000000000B000032000052038B0100A01B
641:1028000012002ABA00000000000000A802000032F6
642:1028100000000000000000E0070000320000550347
643:102820000601008002802ABC000000000000009C1D
644:102830000200003200000000000000D4020000325C
645:1028400000000000000000CC020000320000000088
646:10285000000000D80200003200000000000000D09C
647:102860000200003200000000000000DC0200003224
648:1028700000000000000000F802000032000000002C
649:10288000000000C80200003200000000000000C488
650:1028900002000032000058038501009C12C029BAD2
651:1028A00000000000000000E4030036320B000004CA
652:1028B000000000E00300373280000000000000E468
653:1028C0000300363213000004000000E0030037323A
654:1028D00000200000000000E4030036320C00000479
655:1028E000000000E00300373200000000000000E4B8
656:1028F000030006320F000004000000E0030037323E
657:1029000000440000000000E4030036320D00000423
658:10291000000000E00300373200040000000000E483
659:102920000300363214000004000000E003003732D8
660:102930009F000000000000E4030036321500000490
661:10294000000000E00300373200000000000000E457
662:102950000300363218000004000000E003003732A4
663:1029600060000000000000E4030036321D00000497
664:10297000000000E00300373200000000000000E427
665:10298000030004321E000004000000E003003732A0
666:1029900070000000000000E4030036321F00000455
667:1029A000000000E00300373200000000000000E4F7
668:1029B0000300003220000004000000E00300373272
669:1029C000A0030000000000E40300363217000004FA
670:1029D000000000E00300373240000000000000E487
671:1029E000030036321B000004000000E00300373211
672:1029F00060000000000000E4030036321C00000408
673:102A0000000000E00300373200000000000000E496
674:102A10000340003216000004000000E003003732DB
675:102A200000010000000000E4030036321A00000438
676:102A3000000000E00300373220010000000000E445
677:102A40000300363219000004000000E003003732B2
678:102A500080000000000000E4030036320B0000019B
679:102A6000000000E00300373200010000000000E435
680:102A7000030036320C000001000000E00300373292
681:102A8000FEFF0000000000AC020036320000000033
682:102A9000000000000900003218000000000000F8EB
683:102AA0000364023900008B0385010000190090BA0D
684:102AB00025260000000000E403003632010000017A
685:102AC000000000E00300373200000000000000803A
686:102AD0000F00003200000000000000840F000032F0
687:102AE00008000000000000F8F34001390800000071
688:102AF000000000F8E340013908000000000000F881
689:102B0000C340013908000000000000F8B34001395B
690:102B100008000000000000F8A34001390800000090
691:102B2000000000F89340013908000000000000F8A0
692:102B30008340013908000000000000F873400139AB
693:102B400008000000000000F86340013908000000A0
694:102B5000000000F85340013908000000000000F8B0
695:102B60004340013908000000000000F833400139FB
696:102B700008000000000000F81340013900000000C8
697:102B8000000000F80380003200000000000000C8D0
698:102B90003F80FC35000000000000009C0200003275
699:102BA0000000000000000000030000326E00000082
700:102BB000000000D0020036320000000000000028B3
701:102BC000034038320000361004010080D20130B6D4
702:102BD0000000A303040100D012002DBCE00300009C
703:102BE000000000E40300363203000001000000E0B2
704:102BF0000300373200000000170000D0020000324E
705:102C000000000000000000ACE10000340000000003
706:102C1000000001E00600003200000000000801E4AE
707:102C20000600003200000000000E01EC0600003239
708:102C300000000000001001E006000032000000006B
709:102C4000000000D012002D3A6E00AB03020100809C
710:102C5000820D2DBC020000000000009CAE0D02326F
711:102C600000000000000000A8020000320000000088
712:102C7000008886CC0700363200000000008A86CC2F
713:102C80000700003A002400000000000409803632EA
714:102C90000000361012000064024090B200000000F4
715:102CA000000000042940903A0000B70312000078A9
716:102CB00009C020B2000000000000007809459030F3
717:102CC0000000B50302010080C28297BC0000000032
718:102CD000000000840200003200000000000000CC70
719:102CE000030000320000BB038E010080024028B2C6
720:102CF0000000510E000000D8020000D2150F0000A5
721:102D00000000008C0E0036325200000000000074FB
722:102D10000E00363218000000000000E403003632D6
723:102D200009000002000000E003003732FECA000084
724:102D3000000000E4030036320A000002000000E058
725:102D4000030037320000C60312010000094020B220
726:102D50000000C40300000080020000900000C603D1
727:102D600012000004094020B20000C9039F01008046
728:102D7000020090B20000C80312000008094020B20F
729:102D80000200C40304010078092417B806000000FB
730:102D900000000078096416380000C40304010080B4
731:102DA000028197BCFE0000000000004403003632A0
732:102DB000FE00360000000048030036920000361086
733:102DC00012000000094020B20000CF0312000004EE
734:102DD000094020B20000D2039F010080020090B29F
735:102DE0000000D10312000008094020B200000000DA
736:102DF000000000B402009032000036100000008095
737:102E000002000090000036100000008002000090D8
738:102E10000000361000000080020000900000361014
739:102E200000000080020000900000361000000080CA
740:102E300002000090000036100000008002000090A8
741:102E400000003610000000800200009000003610E4
742:102E5000000000800200009000003610000000809A
743:102E60000200009000003610000000800200009078
744:102E700000003610000000800200009000003610B4
745:102E8000000000800200009000003610000000806A
746:102E9000020000900600EA030000000C0964169886
747:102EA00000004902000000140840909200006902EE
748:102EB0000000001408409092340015030000001C2C
749:102EC00008003692120015030000001C080036921C
750:102ED0003A0015030000001C08003692000036106E
751:102EE000000000800200009000005B02000000145F
752:102EF0000840909200001D04000000800200009035
753:102F000000001A030000001408409092EB03000038
754:102F10000000008882CD903A0D000D04000000FCF6
755:102F200002E416980D001E04000000FC02E416984E
756:102F30000D002704000000FC02E416980000340491
757:102F4000000000800200009000003D04000000002E
758:102F50000940909D000040040000008002000090A5
759:102F600000004904000000800200009000005204AC
760:102F7000000000800200009000005B0400000000E0
761:102F80000940909D00006004000000800200009055
762:102F900000006804000000000940909D00006D04DE
763:102FA00000000080020000900000DC04000000002F
764:102FB000090000920000DC040000000009400092BB
765:102FC0001D07DE04000000A0020036920000EC04A1
766:102FD0000000008002000090000036100000008019
767:102FE0000200009000001D04000000DC0F409092E1
768:102FF0000000B00400000080020000900000B50452
769:10300000000000D4020000921000CA0400000084F6
770:103010001F64149800001D04000000EC0E40909204
771:103020000000D604000000800200009000001D0493
772:10303000000000D40E4090920000D90400000080EF
773:103040000200009000006D05000000DC0E40909230
774:103050000000FB0400000080020000900800000552
775:10306000000000501F24169800000F05000000D833
776:10307000020000920D001905000000FC02E4169801
777:1030800000001A05000000D0020000920000F600C7
778:10309000000000D002000092000035100000008007
779:1030A0000200009000003610000000800200009036
780:1030B00008000000000000F8934001390000000003
781:1030C000000000780945903000003E0306010080B2
782:1030D000228097BC02001004B00000A0F20B00B9DF
783:1030E00000000000A00000046B41903400003E038B
784:1030F000800100800240B0B600003E030400008062
785:103100000280B0BC00000000000000D802000032C5
786:1031100000000000000000A822C02F3700000000BF
787:1031200000000000670100340042000000080000B9
788:10313000878D2A3A00003610041000000700B0B254
789:1031400000000000001800000700D03200001A0440
790:1031500012000048F2C138B418000000000000F866
791:10316000730A03393E033600000000C002003692A5
792:1031700008003E03000000F893400199000021047C
793:103180009F000080020090B20000000000000008D4
794:1031900009409032000000000000000409C0FD3228
795:1031A00002002104B00000A0F20B00B900000000F2
796:1031B000000000000B8090320000000000000000C2
797:1031C0000D40903200000000A00000043B40B031F0
798:1031D00000001D040400008002C02FBCF20E1D047C
799:1031E0000000008C0E00369208000000000000F87D
800:1031F0009340013902002804B00000A0F20B00B98E
801:1032000000002B04800100801240B0B600000000D6
802:10321000000000043B40B033000000000000000448
803:10322000FD4BD03500000000000000080B0000320C
804:1032300000000000A000000C1BE4B03200003E03C0
805:103240000B000080020000B0000031040400008088
806:10325000024090B21F003E03000000801140009920
807:103260000000300404000080123EF8BA00000000A4
808:10327000000000800100F83200003E0300000090D2
809:103280000140F89200003610800000800281FCB6F8
810:10329000000038049F000080020090B2000000008F
811:1032A0000000000809409032000000000000000407
812:1032B00009C0FD3200000000000000E403809032ED
813:1032C00009000004000000E00300373200000000A5
814:1032D000000000E4034090320A000004000000E017
815:1032E0000300373200001D04000000C80F81FC9469
816:1032F00000000000000000E47300903C1000000497
817:10330000000000E00300373200001D0400000080D0
818:1033100002000090000043049F000080020090B271
819:10332000000000000000000809409032000000008A
820:103330000000000409C0FD3200000000000000E4AD
821:103340000380903201000004000000E003003732E7
822:1033500000000000000000E00F809032000000003C
823:10336000000000E40340903202000004000000E08E
824:103370000300373200001D04000000E40F4090926B
825:1033800000004C049F000080020090B2000000008A
826:103390000000000809409032000000000000000416
827:1033A00009C0FD3200000000000000E403809032FC
828:1033B00003000004000000E00300373200000000BA
829:1033C000000000A80E80903200000000000000E421
830:1033D0000340903204000004000000E00300373294
831:1033E00000001D04000000AC0E4090920000550447
832:1033F0009F000080020090B2000000000000000862
833:1034000009409032000000000000000409C0FD32B5
834:1034100000000000000000E403809032050000047A
835:10342000000000E00300373200000000000000E46C
836:103430000340903206000004000000E00300373231
837:1034400000000000000000440F80903200001D04C6
838:10345000000000480F40909200005D0404010080CD
839:10346000824290BC00000000000000000900003211
840:1034700000000000000000E403009032120000048D
841:10348000000000E00300373200001D04000000408F
842:103490001F40909C000063049F000080020090B2D7
843:1034A0000000000000000008094090320000000009
844:1034B0000000000409C0FD3200000000000000E42C
845:1034C0000380903207000004000000E00300373260
846:1034D00000000000000000E40340903208000004F7
847:1034E000000000E00300373200001D0400000080EF
848:1034F0000200009000006A0404010080824290BC37
849:103500000000000000000000090000320000000080
850:10351000000000E40300903211000004000000E00D
851:103520000300373200001D04000000FC1F40909C87
852:10353000000070049F000080020090B200000000B4
853:103540000000000809409032000000000000000464
854:1035500009C0FD32030900000000002808003632CF
855:103560000000890400000030080036D200009304F7
856:1035700000000044088000D20000790404010080AB
857:10358000020084B2030E000000000028080036325A
858:103590008000890400000030080036D20000930447
859:1035A0000000004408C000D200007904040100803B
860:1035B000020084B200008004000000440800019270
861:1035C0008002000000000000070036328C45000039
862:1035D000000800000700363200003610041000001A
863:1035E000078090B2000000000018000007409032F1
864:1035F0000000000000000048F2C1383400007E04E2
865:1036000012000080020000B018003600000000F830
866:10361000730A03F920000000000000E403003632C2
867:1036200009000002000000E0030037320000000043
868:10363000000000E4034084320A000002000000E0C1
869:10364000030037328C450000000000A8020036322B
870:10365000A000000000000000090036320000000059
871:10366000000000E0070000320000860406010000B0
872:10367000190090BC00001D040000008002000090B2
873:103680008C450000000000C80200363280020000B5
874:103690000000003C0800363200000000000000344A
875:1036A0000800013200008E0402000080D2E083BCDA
876:1036B000000000000000003408C083320000A404B1
877:1036C00000000080020000F000000000000000A0E8
878:1036D000078083320000000000000030D820833AC9
879:1036E00000008C040401003CD8E083BC0000000012
880:1036F00000010080020000500000000000000040B7
881:1037000008000032000000000000004808000032FD
882:103710008C450000000000C80200363200020000A4
883:10372000000000C8828D2C3A800000000000003CA0
884:10373000080036320000000000000078098078326E
885:103740005A5A000004010080828D975C00009C049E
886:1037500002010048A89E84BA000000000000004852
887:103760001880843A00009A040601003C28C083BCFB
888:10377000000000000000007809858430100000007F
889:1037800000000048888D84360000A10490010048A4
890:10379000E8A584BA00000000000000481880843AC0
891:1037A0000000000000000048088584300000000090
892:1037B000040100800285845C0000000000010040DC
893:1037C0000840005200000000000000E403008332C3
894:1037D00001000002000000E0030037320C00AA04E0
895:1037E0000000002CD8A082F905000002000000E0D3
896:1037F00003003732000000000000008002000030AB
897:10380000000000000001003808403E720000000087
898:10381000000000E403C0823202000002000000E069
899:103820000300373202000002000000E003003732DC
900:103830000000000000000080020000300000AC0426
901:1038400080000080F2403EB60000000000010080D1
902:10385000020000700000B3049F000080020090B2DC
903:103860000000000000000008094090320000000045
904:103870000000000409C0FD320000000000000084C8
905:103880000E80903200001D04000000880E409092CF
906:1038900008000000000000F8934001390000B9045E
907:1038A0009F000080020090B20000000000000008AD
908:1038B00009409032000000000000000409C0FD3201
909:1038C00000000000000000200740F532000000006A
910:1038D0000008002007000032000000000010002057
911:1038E00007C0F53200000000001800200740F63243
912:1038F00000000000002000200780F63200000000D9
913:103900000028002007C0F632000000000030002030
914:103910000700F73200000000003800200780FF3267
915:1039200000000000000000D802000032000000008B
916:1039300000000000074009320000000000080000FD
917:1039400077C0293700000000001000000780903287
918:103950000000000000180000074090320000C6047C
919:1039600012000048F2C138B418003600000000F818
920:10397000730A03F90000000000000008C8010034C9
921:1039800000003203000000FC020000920000CC04A2
922:1039900080010080F24190B60000CD04000000C814
923:1039A0002F81FC9400000000000000C82F81FC352E
924:1039B00000000000000000800F4590300000D0049F
925:1039C00002000080027EF8BC0000000000000084BD
926:1039D0000F00F83200000000000000001940F83726
927:1039E00000000000000000843F40F83700000000A5
928:1039F000000000840F64F83A00000000000000009E
929:103A00001900F83700000000000000803F00F83780
930:103A100000001D04000000800F24F89A0000D80464
931:103A200080010080F24190B600001D04000000C833
932:103A30004F81FC9400001D04000000C84F81FC95DC
933:103A40000000DB0404010080024090BC0000000084
934:103A50000000000409C0003200001D04000000E462
935:103A60001E40909C00000000000000A8220090373B
936:103A700000001D04000086C007409092080000006E
937:103A8000000000F8934001390D000000000000FC28
938:103A900002E41638000000000000000009000232B5
939:103AA0000000E604040000800200B0B20000000044
940:103AB000000000000B00003220000000000000A009
941:103AC000820D2A3A0000E10404010000190090BCB4
942:103AD0000000E804000000287901009400000000C4
943:103AE000000000C83F80FC34408000000000002837
944:103AF000098036320000F10E000000D8020000D22A
945:103B000000003E0304000080028092BC1800000008
946:103B1000000000F8730A03393E033600000000C0BD
947:103B200002003692EA05F20404010080824D90BC46
948:103B300000000000000000EC0F00153200FE1F0026
949:103B4000000000F00F003732F0FF0000000000E836
950:103B50000F00363298050000000000F40F003632E6
951:103B60000000F804000000C84F80FC953623361092
952:103B700004010080824D90BC00000000000000ECB9
953:103B80000F80143200F81F00000000F00F003732E1
954:103B9000C0FF0000000000E80F0036329827000048
955:103BA000000000F40F00363200000000000000C8E2
956:103BB0004F80FC3404000000000000608F4D903AFC
957:103BC0000000BC0E00000080020000D000001D04B8
958:103BD00000000080020000900000FD0480010080D1
959:103BE000024090B600000000000000C86F80FC3466
960:103BF0000000FF0480010080124090B60000000029
961:103C0000000000C85F80FC3400001D04000000803C
962:103C1000020000900000020504010080324090B0D4
963:103C200080011D04000000C88F8DFC910000040578
964:103C300080000080124090B600000505000000C81A
965:103C40007F80FC9500000000000000C87F80FC34ED
966:103C50000000070580000080024090B600000805C3
967:103C6000000000C88F80FC9500000000000000C824
968:103C70008F80FC3400000B0580000080224090B64D
969:103C8000F20E00000000008C0E00363200000D0520
970:103C9000000000C81F81FC95150F00000000008C7B
971:103CA0000E00363200000000000000C81F81FC3406
972:103CB000100000000000004C1F24163800001D04F6
973:103CC000000000501F00F59C000012059F000080BE
974:103CD000020090B20000000000000008094090328D
975:103CE000000000000000000409C0FD3200000000D8
976:103CF000000000001700F53A8C44000000080000A6
977:103D0000070036320000361004100000078090B221
978:103D10000000000000180000074090320000160567
979:103D200012000040F2C138B418003600000000F85C
980:103D3000730A03F900001D040000008002000090D7
981:103D400000001D04000000EC0340909200001A05E2
982:103D5000B20000D8020000B200000000000201EC36
983:103D600016E46E3A08000000000000F893400139A4
984:103D700000004005171001F802006EB2060025058C
985:103D800004010080828D2FB003000000000000F8C5
986:103D9000828D2F3200C0050E00000028098036D227
987:103DA00000000000000201EC16C06E3C00000000A4
988:103DB000001886C80600003218003600000000F81F
989:103DC000730A03F900002605000000D002000092EB
990:103DD00000002B050419868002806CBC00000000E6
991:103DE0000000000009006E3200000000C10800045D
992:103DF00009006E3200000000C01586780FC06C32DA
993:103E0000000030058001008022802FB600003005C0
994:103E1000001886C806400092000000000040000024
995:103E200009006E3200000000C248000409006E3232
996:103E300000000000C01686780FC06C32000030050C
997:103E40008001008012802FB600000000001886C894
998:103E500006000032004000000000002809803632D1
999:103E6000000038050402018002C06EBC0000050E8F
1000:103E7000000201EC16C06EDC0000360580000080F8
1001:103E800002802FB600003805810000F822802FB490
1002:103E900000003805001886C806400092000038056A
1003:103EA000820000F812802FB400000000001886C8BD
1004:103EB0000600003200000000001086C80600003234
1005:103EC000000000000000000007C00A3200380000B7
1006:103ED0000008000007003632000036100410000011
1007:103EE000070090B200000000001800000740903268
1008:103EF00000003D0512000040F2C138B41800360041
1009:103F0000000000F8730A03F900000000170100F830
1010:103F1000A2802F3400000000001086A842806C3779
1011:103F200000004A051200703802007EB20000361010
1012:103F30001200703C02007EB2000036101200703099
1013:103F400002007EB2000036101200703402007EB211
1014:103F50000000410502010080B2822ABC000000007E
1015:103F6000170000D002000032060025050401008081
1016:103F7000828D2FB000001F050403018002C06EBCBB
1017:103F800000005505000000800200009000004C0574
1018:103F90000403018002C06EBC00005505001086C8F5
1019:103FA00046802A9600000000001086C846802A3607
1020:103FB000000050058000008012802FB603005205DB
1021:103FC000220000F8828D2FB200005205001886C82A
1022:103FD00006000092000055058000008022802FB668
1023:103FE00000000000C20100F802802F3500C0050E5D
1024:103FF00000000028098036D200000000000201EC19
1025:1040000016C06E3C18003600000000F8730A03F971
1026:1040100000000000001001E006802F3200000000C8
1027:10402000000000A8E100003400000000A20000FC35
1028:10403000020000320000320380010080A2802FB60F
1029:1040400000005B05B90100D8028001B20000320314
1030:10405000000000F80200009200000000000000389C
1031:104060001880F73A0000000000000038F8BF8330E5
1032:1040700000005F0504010080F2BD83BC0000320334
1033:10408000A90000F80200009200C066051801000CAB
1034:10409000A8CD3EB200006205840000741F40F7BA4C
1035:1040A00000003203A90000F80200009200000000A6
1036:1040B000000000740F00003200C066051801000CFB
1037:1040C000A8CD3EB218003600000000F8738A03F94C
1038:1040D00000006305000000B0020000920000000034
1039:1040E0000000007C0F8083320000000000280000E8
1040:1040F000070000320000000000300000070000321E
1041:104100000001008000380000070037320000000086
1042:10411000003C000C0780833200006B051200004851
1043:1041200002C080B200003203A9000008E801009438
1044:104130000000730504010080A2C0EDBC5200000025
1045:10414000000000740E00363200000000000000C0C5
1046:104150000E400132407E0500000000B40E003732F0
1047:1041600000000000000000C40E80073264007805E3
1048:10417000000000CC0E003692290000000000007400
1049:104180000E00363200000000000000C00E40003279
1050:10419000A08C0000000000B40E00363200000000C9
1051:1041A000000000C40EC0003200000000000000CC7F
1052:1041B0000E80023210000000000000E4337BEC3976
1053:1041C0001E000001000000E0030037320000000084
1054:1041D000000000C86EC0EC3700001D04000000D8CD
1055:1041E0000EC0ED927E0500000000008882CD813A6D
1056:1041F0007E0500000000008882CD813ABD050000E8
1057:104200000018018882CD6E3AC605000000180188AA
1058:1042100082CD6E3ACF0500000018018882CD6E3A3B
1059:10422000D80500000018018882CD6E3AE105000033
1060:104230000018018882CD6E3AEA0500000018018856
1061:1042400082CD6E3AF30500000018018882CD6E3AE7
1062:10425000FC0500000018018882CD6E3A05060000BA
1063:104260000018018882CD6E3A0E0600000018018801
1064:1042700082CD6E3A170600000018018882CD6E3A92
1065:10428000200600000018018882CD6E3A2906000041
1066:104290000018018882CD6E3A3206000000180188AD
1067:1042A00082CD6E3A3B0600000018018882CD6E3A3E
1068:1042B000440600000018018882CD6E3A4D060000C9
1069:1042C0000018018882CD6E3A560600000018018859
1070:1042D00082CD6E3A5F0600000018018882CD6E3AEA
1071:1042E000680600000018018882CD6E3A7106000051
1072:1042F0000018018882CD6E3A7A0600000018018805
1073:1043000082CD6E3A830600000018018882CD6E3A95
1074:104310008C0600000018018882CD6E3A95060000D8
1075:104320000018018882CD6E3A9E06000000180188B0
1076:1043300082CD6E3AA70600000018018882CD6E3A41
1077:10434000B00600000018018882CD6E3AB906000060
1078:104350000018018882CD6E3AC2060000001801885C
1079:1043600082CD6E3ACB0600000018018882CD6E3AED
1080:10437000D40600000018018882CD6E3ADD060000E8
1081:104380000018018882CD6E3AE60600000018018808
1082:1043900082CD6E3AEF0600000018018882CD6E3A99
1083:1043A000F80600000018018882CD6E3A010700006F
1084:1043B0000018018882CD6E3A0A07000000180188B3
1085:1043C00082CD6E3A130700000018018882CD6E3A44
1086:1043D0001C0700000018018882CD6E3A25070000F6
1087:1043E0000018018882CD6E3A2E070000001801885F
1088:1043F00082CD6E3A0000F702000000D40200009265
1089:1044000000007202000000800200009037070000E8
1090:10441000001C018882CD6E3A3C070000001C018818
1091:1044200082CD6E3A41070000001C018882CD6E3AB1
1092:1044300046070000001C018882CD6E3A4B07000041
1093:10444000001C018882CD6E3A50070000001C0188D4
1094:1044500082CD6E3A55070000001C018882CD6E3A6D
1095:104460005A070000001C018882CD6E3A5F070000E9
1096:10447000001C018882CD6E3A64070000001C018890
1097:1044800082CD6E3A69070000001C018882CD6E3A29
1098:104490006E070000001C018882CD6E3A7307000091
1099:1044A000001C018882CD6E3A78070000001C01884C
1100:1044B00082CD6E3A7D070000001C018882CD6E3AE5
1101:1044C00082070000001C018882CD6E3A8707000039
1102:1044D000001C018882CD6E3A0000FC02000000D46E
1103:1044E0000200009200001203000000D402000092BB
1104:1044F00000003C0900000010088001920000361006
1105:1045000000000080020000900000361000000080D3
1106:1045100002000090000036100000008002000090B1
1107:1045200000003610000000800200009000003610ED
1108:1045300000000080020000900000361000000080A3
1109:104540000200009000003610000000800200009081
1110:1045500000003610000000800200009000003610BD
1111:10456000000000800200009000007B0900000010A5
1112:1045700008800092000036100000008002000090C9
1113:10458000000036100000008002000090000036108D
1114:104590000000008002000090000036100000008043
1115:1045A0000200009000003610000000800200009021
1116:1045B000000036100000008002000090000036105D
1117:1045C0000000008002000090000036100000008013
1118:1045D00002000090000036100000008002000090F1
1119:1045E00000008809000000100880009200003610CA
1120:1045F00000000080020000900000361000000080E3
1121:10460000020000900000CF09000000100840019255
1122:1046100000003610000000800200009000003610FC
1123:1046200000000080020000900000361000000080B2
1124:104630000200009000003610000000800200009090
1125:104640000000361000000080020000900000D70932
1126:104650000000001008C0009200003610000000802A
1127:10466000020000900000D7090000001008C000926E
1128:1046700000003D0C000000100840019200003610C0
1129:1046800000000080020000900000D7090000001028
1130:1046900008C0009200003610000000800200009068
1131:1046A000000036100000008002000090000036106C
1132:1046B00000000080020000900000E40900000010EB
1133:1046C00008C0009200003610000000800200009038
1134:1046D0000000E4090000001008C0009200003D0C3A
1135:1046E0000000001008400192000036100000008019
1136:1046F000020000900000E4090000001008C00092D1
1137:10470000000036100000008002000090000036100B
1138:1047100000000080020000900000361000000080C1
1139:10472000020000900000E2090000001008C00092A2
1140:104730000000361000000080020000900000E20936
1141:104740000000001008C0009200003D0C00000010A6
1142:104750000840019200003610000000800200009026
1143:104760000000E2090000001008C0009200003610AE
1144:104770000000008002000090000036100000008061
1145:10478000020000900000361000000080020000903F
1146:1047900000003610000000800200009000007A0A3D
1147:1047A0000000001008C000920000D40900000010B2
1148:1047B000080001920000CF0900000010084001929B
1149:1047C000000036100000008002000090000036104B
1150:1047D0000000008002000090000036100000008001
1151:1047E00002000090000036100000008002000090DF
1152:1047F000000036100000008002000090000036101B
1153:1048000000000080020000900000750A0000001007
1154:10481000088000920000D4090000001008000192F6
1155:104820000000CF090000001008400192000036107F
1156:1048300000000080020000900000361000000080A0
1157:10484000020000900000361000000080020000907E
1158:1048500000003610000000800200009000003610BA
1159:104860000000008002000090000036100000008070
1160:10487000020000900000750A00000010080001927C
1161:104880000000D40900000010080001920000CF09C8
1162:104890000000001008400192000036100000008067
1163:1048A000020000900000361000000080020000901E
1164:1048B000000036100000008002000090000036105A
1165:1048C0000000008002000090000036100000008010
1166:1048D00002000090000036100000008002000090EE
1167:1048E0000000E40A00000010088000920000D409D3
1168:1048F00000000010080001920000CF090000001025
1169:104900000840019200003610000000800200009074
1170:1049100000003610000000800200009000003610F9
1171:1049200000000080020000900000361000000080AF
1172:10493000020000900000361000000080020000908D
1173:104940000000361000000080020000900000E40A21
1174:1049500000000010080001920000D40900000010BF
1175:10496000080001920000CF090000001008400192E9
1176:104970000000361000000080020000900000361099
1177:10498000000000800200009000003610000000804F
1178:10499000020000900000361000000080020000902D
1179:1049A0000000361000000080020000900000E309C3
1180:1049B0000000001008800092000036100000008007
1181:1049C000020000900000E30900000010088000923F
1182:1049D00000003D0C0000001008400192000036105D
1183:1049E00000000080020000900000361000000080EF
1184:1049F00002000090000036100000008002000090CD
1185:104A00000000361000000080020000900000361008
1186:104A100000000080020000900000E3090000001088
1187:104A20000800019200003610000000800200009093
1188:104A30000000E309000000100800019200003D0C96
1189:104A400000000010084001920000361000000080B5
1190:104A5000020000900000361000000080020000906C
1191:104A600000003610000000800200009000003610A8
1192:104A7000000000800200009000003610000000805E
1193:104A8000020000900000361000000080020000903C
1194:104A900000008C0700000010080001920000361092
1195:104AA000000000800200009000008C070000001051
1196:104AB00008400192000036100000008002000090C3
1197:104AC0000000361000000080020000900000361048
1198:104AD00000000080020000900000361000000080FE
1199:104AE00002000090000036100000008002000090DC
1200:104AF00000005E0C00000010084001920000540C01
1201:104B0000000000100840019200005E0C0000001040
1202:104B1000084001920000CF090000001008400192F7
1203:104B200000003610000000800200009000005E0CC3
1204:104B300000000010084001920000361000000080C4
1205:104B4000020000900000361000000080020000907B
1206:104B50000000810900000010084000920000810957
1207:104B60000000001008800092000081090000001081
1208:104B700008C00092000081090000001008000192A6
1209:104B80000000860900000010084001920000810921
1210:104B90000000001008800192000081090000001050
1211:104BA00008C0019200003610000000800200009052
1212:104BB0000000361000000080020000900000361057
1213:104BC00000000080020000900000490B000000106F
1214:104BD000088000920000490B0000001008C00092FD
1215:104BE0000000490B00000010080001920000CF09EE
1216:104BF0000000001008400192000036100000008004
1217:104C0000020000900000490B0000001008C0019253
1218:104C100000003610000000800200009000003610F6
1219:104C200000000080020000900000361000000080AC
1220:104C3000020000900000361000000080020000908A
1221:104C400000003610000000800200009000003610C6
1222:104C500000000080020000900000680C00000010BE
1223:104C60000840019200003610000000800200009011
1224:104C70000000361000000080020000900000361096
1225:104C8000000000800200009000003610000000804C
1226:104C9000020000900000D80C0000001008400192B3
1227:104CA0000000DB0C000000100840019200004C0CDA
1228:104CB00000000010084001920000DB0C0000001012
1229:104CC0000840019200008C0700000010084001928B
1230:104CD0000000361000000080020000900000DB0C95
1231:104CE000000000100840019200008D070000001035
1232:104CF00008000292000036100000008002000090C0
1233:104D00000000361000000080020000900000DC0C63
1234:104D1000000000100840019200004C0C0000001040
1235:104D2000084001920000DC0C0000001008400192D5
1236:104D300000008C07000000100840019200003610AF
1237:104D400000000080020000900000DC0C0000001059
1238:104D50000840019200003610000000800200009020
1239:104D600000003610000000800200009000003610A5
1240:104D700000000080020000900000E10C0000001024
1241:104D8000088000920000E10C0000001008C00092B2
1242:104D90000000E10C00000010080001920000CF09A3
1243:104DA0000000001008400192000036100000008052
1244:104DB000020000900000E10C0000001008C0019209
1245:104DC0000000361000000080020000900000361045
1246:104DD00000000080020000900000361000000080FB
1247:104DE00002000090000036100000008002000090D9
1248:104DF0000000361000000080020000900000361015
1249:104E000000000080020000900000361000000080CA
1250:104E10000200009000006A090000001008400092A3
1251:104E200000003610000000800200009000003610E4
1252:104E3000000000800200009000003610000000809A
1253:104E40000200009000003610000000800200009078
1254:104E50000000F10C00000010088000920000F10C2E
1255:104E60000000001008C000920000F10C00000010CB
1256:104E7000080001920000CF090000001008400192D4
1257:104E80000000361000000080020000900000F10CCD
1258:104E90000000001008C001920000361000000080E1
1259:104EA0000200009000003610000000800200009018
1260:104EB0000000361000000080020000900000050D88
1261:104EC00000000010088000920000050D0000001096
1262:104ED00008C000920000050D0000001008000192BB
1263:104EE0000000CF09000000100840019200003610B9
1264:104EF00000000080020000900000050D000000107E
1265:104F000008C00192000036100000008002000090EE
1266:104F100000008C070000001008000092000036100E
1267:104F2000000000800200009000008C0700000010CC
1268:104F3000088000920000130D0000001008C00092CD
1269:104F400000008C07000000100800019200008C0790
1270:104F500000000010084001920000361000000080A0
1271:104F60000200009000003610000000800200009057
1272:104F70000000361000000080020000900000361093
1273:104F80000000008002000090000036100000008049
1274:104F90000200009000008C070000001008800092C2
1275:104FA0000000210D000000100880009200008C0716
1276:104FB000000000100800019200008C0700000010A3
1277:104FC00008400192000036100000008002000090AE
1278:104FD0000000361000000080020000900000361033
1279:104FE00000000080020000900000361000000080E9
1280:104FF00002000090000036100000008002000090C7
1281:1050000000008C0700000010088000920000210DB5
1282:10501000000000100800019200008C070000001042
1283:105020000800019200008C07000000100840019267
1284:1050300000003610000000800200009000003610D2
1285:105040000000008002000090000036100000008088
1286:105050000200009000003610000000800200009066
1287:1050600000003610000000800200009000003610A2
1288:10507000000000800200009000008C07000000107B
1289:1050800008800092000036100000008002000090AE
1290:1050900000008C070000001008400192000036104C
1291:1050A0000000008002000090000036100000008028
1292:1050B0000200009000003610000000800200009006
1293:1050C0000000361000000080020000900000361042
1294:1050D00000000080020000900000FD0C00000010A5
1295:1050E000088000920000FD0C0000001008C0009233
1296:1050F0000000FD0C00000010080001920000CF0924
1297:1051000000000010084001920000361000000080EE
1298:10511000020000900000FD0C0000001008C0019289
1299:1051200000003610000000800200009000003610E1
1300:105130000000008002000090000036100000008097
1301:105140000200009000003610000000800200009075
1302:1051500000003610000000800200009000003610B1
1303:1051600000000080020000900000310D00000010DF
1304:10517000080002920000361000000080020000903B
1305:105180000000361000000080020000900000361081
1306:105190000000008002000090000036100000008037
1307:1051A0000200009000003610000000800200009015
1308:1051B000000088090000001008C0019200003610AD
1309:1051C0000000008002000090000036100000008007
1310:1051D000020000900000CF0900000010084001927A
1311:1051E0000000361000000080020000900000C1099D
1312:1051F0000000001008C0019200003610000000807E
1313:1052000002000090000036100000008002000090B4
1314:1052100000003610000000800200009000008809A5
1315:10522000000000100880009200003610000000808E
1316:105230000200009000003610000000800200009084
1317:105240000000CF0900000010084001920000361055
1318:1052500000000080020000900000C1090000001062
1319:1052600008C001920000361000000080020000908B
1320:105270000000361000000080020000900000361090
1321:10528000000000800200009000006F0B0000001082
1322:10529000088000920000361000000080020000909C
1323:1052A00000006F0B000000100880009200003D0C11
1324:1052B000000000100840019200003610000000803D
1325:1052C0000200009000006F0B0000001008800092A8
1326:1052D0000000361000000080020000900000361030
1327:1052E00000000080020000900000361000000080E6
1328:1052F0000200009000006F0B0000001008000192F7
1329:1053000000003610000000800200009000006F0BCB
1330:10531000000000100800019200003D0C0000001089
1331:10532000084001920000361000000080020000904A
1332:1053300000006F0B00000010080001920000361002
1333:105340000000008002000090000036100000008085
1334:105350000200009000003610000000800200009063
1335:1053600000006F0B000000100800019200003610D2
1336:10537000000000800200009000006F0B0000001091
1337:105380000800019200003D0C00000010084001924E
1338:1053900000003610000000800200009000006F0B3B
1339:1053A000000000100800019200003610000000808C
1340:1053B0000200009000003610000000800200009003
1341:1053C00000003610000000800200009000006F0B0B
1342:1053D00000000010088000920000361000000080DD
1343:1053E0000200009000006F0B000000100880009287
1344:1053F00000003D0C00000010084001920000361033
1345:10540000000000800200009000006F0B0000001000
1346:10541000088000920000361000000080020000901A
1347:1054200000003610000000800200009000003610DE
1348:105430000000008002000090000036100000008094
1349:105440000200009000003610000000800200009072
1350:1054500000006F0B0000001008C0019200003D0C1E
1351:10546000000000100840019200003610000000808B
1352:105470000200009000006F0B0000001008C00192B5
1353:10548000000036100000008002000090000036107E
1354:105490000000008002000090000036100000008034
1355:1054A000020000900000D70B00000010088000925E
1356:1054B000000036100000008002000090000036104E
1357:1054C000000000800200009000008C070000001027
1358:1054D0000840019200003610000000800200009099
1359:1054E0000000D70B0000001008800092000036106A
1360:1054F00000000080020000900000361000000080D4
1361:1055000002000090000036100000008002000090B1
1362:105510000000D70B00000010088000920000361039
1363:1055200000000080020000900000361000000080A3
1364:105530000200009000008C0700000010084001925B
1365:105540000000361000000080020000900000D70B21
1366:105550000000001008C0019200003610000000801A
1367:105560000200009000003610000000800200009051
1368:10557000000036100000008002000090000036108D
1369:105580000000008002000090000036100000008043
1370:105590000200009000003610000000800200009021
1371:1055A00000008C0700000010084001920000361037
1372:1055B00000000080020000900000DF0B00000010DF
1373:1055C00008C0019200003610000000800200009028
1374:1055D000000036100000008002000090000036102D
1375:1055E00000000080020000900000361000000080E3
1376:1055F00002000090000036100000008002000090C1
1377:1056000000003610000000800200009000008C07AF
1378:1056100000000010084001920000361000000080D9
1379:10562000020000900000DF0B0000001008800092D4
1380:1056300000003610000000800200009000003610CC
1381:105640000000008002000090000036100000008082
1382:105650000200009000003610000000800200009060
1383:10566000000036100000008002000090000036109C
1384:1056700000000080020000900000C30C0000001039
1385:1056800008400192000036100000008002000090E7
1386:10569000000036100000008002000090000036106C
1387:1056A000000000800200009000009407000000103D
1388:1056B00008400092000036100000008002000090B8
1389:1056C000000036100000008002000090000036103C
1390:1056D00000000080020000900000361000000080F2
1391:1056E00002000090000036100000008002000090D0
1392:1056F0000000E6070000001008800092000036104D
1393:1057000000000080020000900000361000000080C1
1394:105710000200009000009B080000001008000192A9
1395:105720000000361000000080020000900000930787
1396:1057300000000010080001920000A5080000001001
1397:10574000080001920000A508000000100800019266
1398:105750000000A508000000100800019200003610AB
1399:105760000000008002000090000036100000008061
1400:10577000020000900000F507000000100880009271
1401:105780000000361000000080020000900000930727
1402:105790000000001008000192000036100000008098
1403:1057A000020000900000361000000080020000900F
1404:1057B00000000308000000100880009200009A0812
1405:1057C0000000001008800092000093070000001005
1406:1057D00008000192000036100000008002000090D6
1407:1057E0000000BB0800000010084000920000BB0849
1408:1057F00000000010088000920000BB0800000010AC
1409:1058000008C00092000093070000001008000192F9
1410:1058100000003610000000800200009000003610EA
1411:1058200000000080020000900000E008000000106E
1412:1058300008C00092000036100000008002000090B6
1413:1058400000009307000000100800019200003610CD
1414:105850000000008002000090000036100000008070
1415:10586000020000900000E208000000100800019211
1416:105870000000E208000000100800019200009307F9
1417:1058800000000010080001920000361000000080A7
1418:10589000020000900000361000000080020000901E
1419:1058A0000000E40800000010088000920000E408F6
1420:1058B0000000001008C000920000930700000010D4
1421:1058C00008000192000036100000008002000090E5
1422:1058D0000000930700000010084000920000B1088B
1423:1058E00000000010088000920000B10800000010C5
1424:1058F00008C0009200009307000000100800019209
1425:1059000000009307000000100800009200009307B9
1426:1059100000000010084000920000F808000000108D
1427:10592000088000920000F8080000001008C00092F3
1428:1059300000009307000000100800019200003610DC
1429:10594000000000800200009000003610000000807F
1430:105950000200009000002C09000000100880009256
1431:10596000000093070000001008C000920000930799
1432:1059700000000010080001920000361000000080B6
1433:10598000020000900000361000000080020000902D
1434:1059900000000C0900000010088000920000361082
1435:1059A000000000800200009000009307000000103B
1436:1059B00008000192000036100000008002000090F4
1437:1059C0000000361000000080020000900000F40784
1438:1059D00000000010088000920000361000000080D7
1439:1059E00002000090000093070000001008000192E0
1440:1059F0000000361000000080020000900000361009
1441:105A0000000000800200009000002009000000104B
1442:105A100008800092000020090000001008C00092D9
1443:105A200000009307000000100800019200003610EB
1444:105A3000000000800200009000003610000000808E
1445:105A4000020000900000EF080000001008800092A3
1446:105A50000000EF080000001008C00092000093074B
1447:105A600000000010080001920000361000000080C5
1448:105A7000020000900000361000000080020000903C
1449:105A80000000390900000010088000920000390968
1450:105A90000000001008C000920000930700000010F2
1451:105AA0000800019208003103001801E8762081996E
1452:105AB00008002F03001801E8762081990000990F53
1453:105AC00000000080020000F0080091071D1901E8A5
1454:105AD000762081B900003103000000F862812F9523
1455:105AE000000031038000008002812FB62A003103BC
1456:105AF000D001002C82CD2E9208003103001C01E859
1457:105B00007620819900000000000000D802000032D9
1458:105B100000000000000E01EC06C06E3554000000CD
1459:105B2000000000000700363200000000000000BC4A
1460:105B3000A8002D37B44400000008000087CD8B3A40
1461:105B4000000000000000007899C02C37B40000006D
1462:105B500000000078898D973A00003610021000008E
1463:105B600087BF97BA00000000001800000740FE320F
1464:105B700000009D0712000040F2C138B40000000090
1465:105B80000090007809006E320000361004A000007A
1466:105B900009806EB20000A20704A5000409806EB25D
1467:105BA0000000000000000004090090320000A4077B
1468:105BB00004010004096490BC00000000000000041F
1469:105BC00009400032080000006E3402E816249039C3
1470:105BD0000000A507B71002E0068097B20000A807F2
1471:105BE00080000080F280FCB60000A907000000C819
1472:105BF000FF80FC940000AA079F990080821BEEBCE6
1473:105C000000000000009800E00E006E32000000006E
1474:105C1000A70000800200003018003600000000F8E5
1475:105C2000730A03F9000000000010021C09006E3224
1476:105C30004000AF070601008082CD91BC00C0B007D4
1477:105C4000001802E00680369200E00000001802E032
1478:105C50000680363200000000000000200980033278
1479:105C60000000B30780D7018032C06EB6000000008C
1480:105C7000000000204900923A00000000009801183E
1481:105C800009006E3200000000000A022409C06E32D2
1482:105C90000000000000C0012809806E320000C1072A
1483:105CA000800E018012C06EB602000000003C02ECC3
1484:105CB0000600363200000000000000004901923A60
1485:105CC0000000BD0780D6018042C06EB60082000091
1486:105CD000001002E0A6CD913200A00000002C02E8E6
1487:105CE000060036322800CB07003A02EC0600369256
1488:105CF00000000000D301001CD9C1913400820000D3
1489:105D0000001002E0A6CD913200A00000002C02E8B5
1490:105D1000060036323400CB07003A02EC0600369219
1491:105D200004000000003C02EC0600363228000000AF
1492:105D300000000000890D923A0000C70780D601805C
1493:105D400042C06EB600860000001002E0A6CD91327F
1494:105D500004A00000002C02E8060036321400CB0735
1495:105D6000003A02EC0600369200000000D301001C4D
1496:105D7000D9C1913400860000001002E0A6CD913216
1497:105D800004A00000002C02E8060036322000CB07F9
1498:105D9000003A02EC0600369212000000003802ECD5
1499:105DA00086CD913A08000000002802E88624903948
1500:105DB00000000000002002E09624143700000000DC
1501:105DC000004001E0068091320000D107040100800C
1502:105DD000028092BC0000000000C001E0060000321A
1503:105DE00000000000003000E006000032000000006B
1504:105DF00000B000E0060000322000000000000000BB
1505:105E0000070036320000000000000078A9002D379E
1506:105E10000045000000080000878D973A0000000050
1507:105E20000000007899C02C370001000000000078C5
1508:105E3000898D973A000036100210000087BF97BA8C
1509:105E400000000000001800000740FE320000DA07E2
1510:105E500012000048F2C138B40000DE0780D7012CE0
1511:105E600009C06EB200000000DAD701EC06C06E3542
1512:105E700000000000005A01EC0640ED320000000076
1513:105E8000005C01E806808B320000E10780010080A1
1514:105E900062C092B600000000000000F882812F343A
1515:105EA00018003600000000F8730A03F90000000033
1516:105EB0000004013808C06E3200000000006201ECEE
1517:105EC00006808332010093071201002C82CD2EB28E
1518:105ED0000000E407000000800200009000000000C5
1519:105EE000005401FC02C06E3200000000000000D827
1520:105EF0000280013200C0EC071801000CA8CD3EB2B0
1521:105F00002080000000000008088036322D002F039A
1522:105F10001201002C82CD2EB20000EA0700000080A2
1523:105F200002000090000000000062013808C06E32DC
1524:105F300000080080000000280900373200604B0F85
1525:105F400000000008088036F200009307040601EC08
1526:105F500016C06EBC000093078000008072812FB6CF
1527:105F600000000000000000F872812F343D0093070C
1528:105F70001201002C82CD2EB20000F207000000803A
1529:105F8000020000900000F507000000F8B2812F9495
1530:105F90000000CF0F00A0001808006EF200002510CE
1531:105FA0000078016008006EF20000F907120100C8D5
1532:105FB000020020B20000FC070000008002000090F8
1533:105FC000000006081201005C088020B20000FC07F7
1534:105FD0001201006002802CB20000FA07000000806D
1535:105FE000020000900000FE0704000080024080BC18
1536:105FF00000000000000000F81F80FF3A00000008C9
1537:1060000080010080A2802FB618003600CA0000F878
1538:10601000730A03F9000093078000008072812FB695
1539:106020003D0001081200002C82CD2EB20000930723
1540:10603000000000F872812F940000FC07120000C8D5
1541:10604000020020B20000FA071200005C088020B2B3
1542:106050000000361004A0001808006EB20000000016
1543:106060000000007879613832000007081218024CED
1544:10607000E2256EB2080000000010020078E16E39DF
1545:106080000000000000180020070000320700000098
1546:106090000000003878CAE939000036100400003CDE
1547:1060A000084080B2000036100490006C08006EB208
1548:1060B000000000000098004C08006E320000000054
1549:1060C000510000D802000032000000004D00000026
1550:1060D00067E0833E000000000008000007008032F7
1551:1060E000000000000010000007C086320000000021
1552:1060F0000018000007C084320000000000000018F3
1553:10610000D8A0813C0000680804B000E0D6206EBC36
1554:10611000000038080400003CD8E083BC00001E08E2
1555:106120008000008092802FB6000019081201000044
1556:1061300009C021B218003600000000F8730A03F904
1557:106140001D0000000000007809A4173800001D0899
1558:1061500004010080128097BC00001808670000F856
1559:10616000A2802FB5000019080000000009C021928C
1560:1061700000000000C90100D802408432000021085C
1561:106180000400008072802DBC00001F081200004433
1562:10619000E2E038B200002C08510000D812802D9A9D
1563:1061A0000000000000000078F9818334000022081C
1564:1061B00012000044E2E538B20000260880000080AA
1565:1061C00082802FB60000550F00A0015008006EF22B
1566:1061D0000000000000F801E00600853200002808F9
1567:1061E000120100E802C021B218003600000000F8D9
1568:1061F000730A03F900002B080401008002802DBC03
1569:1062000000002708670000F8A2802FB500003610B4
1570:10621000120000E802C021B200000000510000D8C6
1571:1062200002000032000030082A010000D82080BAA5
1572:10623000000030081201000009C021B21800360029
1573:10624000000000F8730A03F900000000000000D805
1574:106250000240843200000000CAE0006C08006E3288
1575:106260000000000000E8004C08006E32000036100C
1576:1062700004F0001808006EB20000000000000038B2
1577:106280001881833500000F0804B00080829B81BC18
1578:1062900000000000CA0100F842802F3508A00F0856
1579:1062A00012010040A2CD39B2000036080000008083
1580:1062B0000200009000004008293402B808806EB245
1581:1062C00000003B081201000009C021B2180036008E
1582:1062D000000000F8730A03F91D00000000000078B8
1583:1062E00009A4173800003F0804010080128097BC01
1584:1062F00000003A08670000F8A2802FB500003B08B4
1585:106300000000000009C0219200000000C90100D86F
1586:10631000024084320000000000000078F9818334DC
1587:106320000000410812000044E2E538B200004708CE
1588:106330002800006CD8E086BA0000540F00A001507D
1589:1063400008006EF2000047081DF801E0060085B263
1590:10635000000047088000008002812FB62A0000005C
1591:10636000D001002C82CD2E3200004A0804A000E0AB
1592:10637000068081B200003610049000E006C086B2AC
1593:1063800000005808009800E006C0849200004F0802
1594:1063900080010080A2802FB600004D08120100008D
1595:1063A00009C021B218003600000000F8730A03F992
1596:1063B0001D004F080401008002A417B800004C081B
1597:1063C000000000F8E2802F940000361004E0006C1A
1598:1063D00008006EB200000000CAE8004C08006E32EF
1599:1063E0000000361004F0001808006EB200005508D6
1600:1063F00004B00080829B81BC00000000CA0100F84C
1601:1064000042802F3508A0540812000040A2CD39B2B6
1602:106410000000000000A000E00680813200000000C3
1603:10642000009800E006C0843200003610049000E0BE
1604:1064300006C086B200005D082A5D01E806808BB2C6
1605:1064400000005B081201000009C021B218003600EC
1606:10645000000000F8730A03F91D005D0804010080C4
1607:1064600002A417B800005A08000000F8E2802F9438
1608:1064700010246008370000F8A28D2FB13D005E089F
1609:106480001200002C82CD2EB200000000000000F8A7
1610:1064900072812F3408000000CA1C01E8762081397F
1611:1064A0000000FA0D0000002CF90100F4000065085E
1612:1064B00080000080E2802FB6000065081201000015
1613:1064C00009C021B218003600000000F8730A03F971
1614:1064D000100000000018008067A1733930003203FB
1615:1064E0001201005CA28D2CB200003610000000806A
1616:1064F0000200009000006B088000008092802FB6A0
1617:1065000018003600000000F8730A03F900000000CC
1618:10651000C90100D802408432000036102A000078F9
1619:10652000F98183B400006C0812000044E2E538B23F
1620:106530000000DC0E00000030030038F2000071089B
1621:106540001D000038188183B50000710880000080AC
1622:1065500002812FB62A000000D001002C82CD2E32FD
1623:1065600000007408040601EC16C06EBC00000000B8
1624:10657000CA0100F842802F3408C07308120000409E
1625:10658000A2CD39B2000077088000008082802FB64B
1626:106590000000550F00A0015008006EF2000000003E
1627:1065A00000F801E0060085320000790812010000C1
1628:1065B00009C021B218003600000000F8730A03F980
1629:1065C000000095082A3502B808806EB200007C08E9
1630:1065D0001201000009C021B218003600000000F8C6
1631:1065E000730A03F900000000000000F8A2802F35B4
1632:1065F00000008E0804000080026180BC0000870853
1633:1066000080B8000009C06EB240008208040000801B
1634:10661000820D90BC0000820802B00080821B84BC06
1635:1066200000008708000000F8B2812F9400000000ED
1636:1066300000D601EC56C06E3400000000000000607F
1637:106640001800863A0000000000000080B70178348E
1638:1066500000000000007801E0060086324000950846
1639:1066600004000080820D90BC0000361004A00018C9
1640:1066700008006EB20000CF0F00000000D82080FAA2
1641:10668000000036100600003C182084BC00003610C4
1642:1066900004B0003C88DB83BE0000000000000080E6
1643:1066A000F720783A00000000587801E0F620863A9A
1644:1066B00000000C0800000004F860809A00009108B7
1645:1066C00080B9000009C06EB22F0095081201002C9D
1646:1066D00082CD2EB200008F080000008002000090E2
1647:1066E0004000930804010080820D90BC380094089B
1648:1066F00000000078090036923900000000000078A0
1649:1067000009003632000094081200002CE2E52EB297
1650:10671000100000000018008067A17339000000001D
1651:10672000005C01E806808B3210240000000000F8B5
1652:10673000A28D2F31300093071201005CA28D2CB284
1653:1067400000003610000000800200009000000308E6
1654:10675000000000F8C2812F9500000000005401FCE9
1655:1067600002C06E3200000000000000D8028001323A
1656:1067700000C0A1081801000CA8CD3EB22080000086
1657:1067800000000008088036322D002F031201002C73
1658:1067900082CD2EB200009F08000000800200009011
1659:1067A000000000000062013808C06E32000800805E
1660:1067B000000000280900373200604B0F000000087D
1661:1067C000088036F20000AF08000000800200009050
1662:1067D0000000A70880000080C2812FB60000AA0830
1663:1067E00000D001E80600009200000000000000F860
1664:1067F000C2812F350000AA0804D1018002806EBC3E
1665:106800000000000000D601EC26C06E340000AC0889
1666:106810008000008092812FB60000AF0800C801E818
1667:106820000600009200000000000000F892812F3561
1668:106830000000AF0804C9018002806EBC00000000A7
1669:1068400000D601EC16C06E34110093071201002C23
1670:1068500082CD2EB20000AF08000000800200009040
1671:10686000000093079A0100F842812FB50000B80894
1672:10687000120100C8020020B200000000005C01EC20
1673:106880000640003200009307370000F842812FB421
1674:1068900000000000000000F872812F343D009307D3
1675:1068A0001201002C82CD2EB20000B608000000803C
1676:1068B000020000900000C3081201005C088020B2B2
1677:1068C0000000B3081201006002802CB200003610F4
1678:1068D00000000080020000900000C008120100C803
1679:1068E000020020B200009307370000F8D2812FB4D5
1680:1068F00000000000000000F872812F343D00930773
1681:106900001201002C82CD2EB20000BE0800000080D3
1682:10691000020000900000C3081201005C088020B251
1683:106920000000BC081201006002802CB2000036108A
1684:1069300000000080020000900000000000000078CD
1685:10694000796138320000C4081218024CE2256EB298
1686:1069500000000000003402B808806E320000000021
1687:1069600000A0015008006E320000000000780160B5
1688:1069700008006E320000CA089D11023409006EB290
1689:106980000000000000F0018808006E3200006C0F6B
1690:1069900000A8010809006EF200000000D4F801E030
1691:1069A0000600853200000000DA5C01E806808B32C8
1692:1069B0000000DC0EDD000030030038F20000D008DB
1693:1069C0002329020409806EB23E00CF081200002C79
1694:1069D00082CD2EB20800D3081D1C01E8762081B9B3
1695:1069E0000000D3088000008002812FB62A0000003A
1696:1069F000D001002C82CD2E320000FA0D0000002CB8
1697:106A0000F90100F40000D7089D010080074093B20F
1698:106A10000000000000300080078088320000000085
1699:106A2000003800800700EE320000000000080080FF
1700:106A300007C085320000000000100080074090323F
1701:106A40001000000000180080878D853700000000CE
1702:106A5000002000800700863200000000002800802F
1703:106A6000070085320000DE081201000009C021B2D3
1704:106A700018003600000000F8730A03F930003203F2
1705:106A80001201005CA28D2CB20000361000000080C4
1706:106A9000020000900000000000CC017809806E32F6
1707:106AA00000009307DCD101E806809792130093075A
1708:106AB0001201002C82CD2EB20000E20800000080FE
1709:106AC000020000900000BA0D00000018094081F299
1710:106AD0000000A30D00A8012009006EF2000093073A
1711:106AE00080010080F2802FB60000EC08120100C87F
1712:106AF000020020B2000093078000008072812FB650
1713:106B000000000000000000F872812F343D00930760
1714:106B10001201002C82CD2EB20000EA080000008095
1715:106B2000020000900000C3081201005C088020B23F
1716:106B30000000E8081201006002802CB2000036104C
1717:106B4000000000800200009000009307350100F86B
1718:106B500012812FB500000000000000D80280013231
1719:106B600000000000005401FC02C06E3200C0F608B4
1720:106B70001801000CA8CD3EB220800000D101000811
1721:106B8000088036323B0031031201002C82CD2EB238
1722:106B90000000F40800000080020000900000440F94
1723:106BA0000098012809006EF20000930700000080A1
1724:106BB000020000900000FE0880010080A2812FB634
1725:106BC0000000FE088000008042812FB60000FE0811
1726:106BD000085B01EC06FB6EBC00000000005A01ECF3
1727:106BE000060000320000FE08370000F842812FB492
1728:106BF0003D000000D701002C82CD2E320000040998
1729:106C00008001008092812FB600000A0908C901E8BE
1730:106C100006BB6EBC0000000000C801E806000032A0
1731:106C2000330001091200002C82CD2EB20000510F5A
1732:106C300000000028098001F2000093070000008096
1733:106C40000200009000000A0980010080C2812FB676
1734:106C500000000A0908D101E806BB6EBC0000000074
1735:106C600000D001E806000032330007091200002CB2
1736:106C700082CD2EB20000510F0000002809C001F2A1
1737:106C800000009307000000800200009000009307BE
1738:106C900080010080F2812FB6180093070000002CBD
1739:106CA00082CD2E9200000F09120000C8020020B20F
1740:106CB000000012091201005C088020B200003610AA
1741:106CC0001200006002802CB200000000000000F8FA
1742:106CD0001F80FF3A000031031201002C72E02EB237
1743:106CE0000000100900000080020000900000000079
1744:106CF0000000007879613832000013091218024C44
1745:106D0000E2256EB200000000003402B808806E3246
1746:106D100000000000D4A0015008006E320000000006
1747:106D2000DB79016008006E320000550FDD000004C1
1748:106D3000080000F21000000000180080878D8537E1
1749:106D40000000000000F801E00600853200001C0988
1750:106D50001201000009C021B218003600000000F83E
1751:106D6000730A03F9300036101200005CA28D2CB2B9
1752:106D700000003610040701EC16C06EBC00000000D5
1753:106D800000B000E00600003200009307DA5C01E882
1754:106D900006808B92000093079F41018052206EBCB9
1755:106DA00000002B099F98018052206EBC000000005B
1756:106DB000000000D80280013200000000005401FCF5
1757:106DC00002C06E3200C029091801000CA8CD3EB2E5
1758:106DD0002080930731000008088036B200000000D0
1759:106DE000000000F812812F343B0093071201002CA1
1760:106DF00082CD2EB200002709000000800200009022
1761:106E00000000440F0098012809006EF2000093076B
1762:106E1000000000800200009000009307D54101E0CF
1763:106E2000064081920000930704B0008002006EBC0F
1764:106E3000000000000090010008006E3200002510E4
1765:106E40000078016008006EF20000930700000080E7
1766:106E50000200009000000000000C027809806E32F1
1767:106E60000000330904D4018012C06EBC0000000091
1768:106E7000000000781980973700000000009001E0C2
1769:106E8000E6256E3A0000251000000080020000F0A8
1770:106E90000000370900000080020000900000930706
1771:106EA000009001E00600809200000000009001E0E8
1772:106EB00006008032000003080000008002000090FD
1773:106EC0000000A30D00A8012009006EF20000E708F1
1774:106ED00080000080F2802FB6000093070000008041
1775:106EE0000200009000000000000000D80280013283
1776:106EF000000000000000007809006E320200410925
1777:106F000004B9008082CD6EBC00004309800000807F
1778:106F10007280FCB600004509000000FC02000092EF
1779:106F200000004309800000808280FCB60000450913
1780:106F3000000000FC0200009200000000000000A819
1781:106F400042BD973000000000541889FCF2C07C302C
1782:106F500000C04B091801000CA8CD3EB20000000093
1783:106F6000000E01EC0600003400000000005401ECAB
1784:106F700006C02F3220800000000000080880363252
1785:106F8000000031031201002C82CD2EB2000049090D
1786:106F90000000008002000090000000000062013844
1787:106FA00008C06E3200080080000000280900373257
1788:106FB00000004B0F00000008E80100F4000036104C
1789:106FC000040701EC16C06EBC00000000000000A821
1790:106FD000A2002D370A0000000000007809003632B8
1791:106FE00000000000001889E007000032000051098D
1792:106FF00004010078198097BC02005C0904B9008084
1793:1070000082CD6EBC00000048D6010078C9CD2C327C
1794:1070100000005509B6000080020000B000005609CB
1795:1070200012000064028097B2000057091208006441
1796:1070300002006EB2000058091218006402006EB21D
1797:10704000000059091210006402006EB20000000036
1798:10705000A65401EC06C02F3200008C07000E01EC94
1799:10706000060000940020004CD6010078C9CD2C32D7
1800:1070700000005D09B6000080020000B000005E095B
1801:1070800012000064028097B200005F0912080064D9
1802:1070900002006EB2000060091230006402006EB29D
1803:1070A000000061091238006402006EB2000062093B
1804:1070B0001240006402006EB20000630912480064CE
1805:1070C00002006EB2000064091210006402006EB289
1806:1070D000000065091218006402006EB20000660923
1807:1070E0001220006402006EB20000670912280064DA
1808:1070F00002006EB200000000A65401EC06C02F3260
1809:1071000003008C07000E01EC060036920000000020
1810:10711000000000FC0200013200006D0900000014B4
1811:1071200008803D9200000000000000FC02000132D7
1812:1071300000007009040000DC53603DB3180000003B
1813:10714000000000F8738A03396C093600000000C0A3
1814:107150000200369200000000005401FC02C06E32B2
1815:1071600000000000000000D80280013200C0760953
1816:107170001801000CA8CD3EB22080000000000008DD
1817:107180000880363215002F031201002C82CD2EB25A
1818:107190000000740900000080020000900000000060
1819:1071A000002800000700003200000000003000004E
1820:1071B00007C02C3200100082003800000700373270
1821:1071C000000079091200004802C080B200008C075C
1822:1071D000CA010008E80100942D007B091200002C70
1823:1071E00082CD2EB200007E091D010080020000B099
1824:1071F00000008C07000000F862812F95000000005D
1825:10720000000000F802812F342A008C071201002CA4
1826:1072100082CD2EB200007F090000008002000090A5
1827:1072200000003F0F0000002C09C085D20000DC0EDA
1828:1072300000000030030038F200003103230100F8A1
1829:1072400022812FB43E0031031201002C82CD2EB2D8
1830:1072500000008409000000800200009000003F0F41
1831:107260000000002C09C085D200003103000000F8A6
1832:1072700022812F9400008D09380100D8028001B2CC
1833:1072800000008B091E000080020000B000008D0984
1834:107290001A010080020000B000008C0F000000689E
1835:1072A0001F80F6FA00003103000000800200009009
1836:1072B0000000910912010060084023B20082000022
1837:1072C000000000080880363200008C0F00000064C7
1838:1072D0001F40F6FA00003103000000800200009019
1839:1072E0000000361012000024080023B200003610FF
1840:1072F0001200002008C023B200003610120000184F
1841:10730000088023B200C09C091801000CA8CD3EB231
1842:107310000000940912000038028081B2000036108B
1843:107320001200003C020082B2000036101200003051
1844:10733000024082B20000361012000034020086B211
1845:1073400020800000000000080880363200008C0F0A
1846:107350000000005C1FC0F5FA00003103000000804F
1847:107360000200009000000000450000D8020000323A
1848:107370000000000000000000074080320000000014
1849:1073800000100000074082320000000000180000DA
1850:10739000070086320000A00912000050F2C138B484
1851:1073A0000000640D003001E016206EFA0000A5090F
1852:1073B0003801002CF8010BB40000A509020D028071
1853:1073C000A25B80BC000000000000002CC8C1823419
1854:1073D0000000A7098000008042812FB60000940DB4
1855:1073E00000000080020000F00000AD0D00A801E0E8
1856:1073F00016206EFC0000AC09270100D8028001B203
1857:1074000000000000C700002CE8C08234000000002B
1858:1074100000000008D801003400000000D54001E061
1859:10742000060087320800990F001801E8762081F9DC
1860:107430000000DC0E00000030030038F20000B0094C
1861:1074400023190000078081B23E00AF091200002C12
1862:1074500082CD2EB20000B2091D210000070082B2C9
1863:107460000000B409000000F862812F950000B40903
1864:107470008000008002812FB62A000000D001002C7D
1865:1074800082CD2E320000FA0D0000002CF90100F42C
1866:107490001000B8092C30000017E02CB90000BA0920
1867:1074A0008E39000007C082B20000BA09000800004F
1868:1074B000070087920000BA098E390000B7C182B474
1869:1074C0000000000000080000070087320000BC092F
1870:1074D000120100E802C021B218003600000000F8D6
1871:1074E000730A03F90000BA099F010014184081BC17
1872:1074F0000000BF090400008002C085BC00003610F7
1873:107500001200006802C585B00000BF0912000048E3
1874:1075100002C080B200003203CA010008E8818094F2
1875:107520000000C3091E000080020000B00000C50971
1876:107530001A010080020000B000008C0F00000068FB
1877:107540001F80F6FA00003103000000800200009066
1878:10755000000036109FA801E016206EBC0000640DEC
1879:1075600000000014080000F20000C909800000803B
1880:1075700042812FB60000940D00000080020000F050
1881:107580000000AD0D00000080020000F000008E073A
1882:1075900004000080024081BC0000CD09120100E817
1883:1075A00002C021B218003600000000F8730A03F987
1884:1075B00000008E071201006802C585B00000361079
1885:1075C000000000800200009000008C078000008016
1886:1075D000F2C185B60000D3091C41028006C085B205
1887:1075E000000000000000006802C5853000000000B7
1888:1075F000000000701F00F73A00008C07000000F840
1889:1076000022812F9400008C0780000080F2C185B693
1890:1076100000003F0F0000002C09C085D2000031039C
1891:10762000D20100941E40E99A0000C40F0020001807
1892:1076300008006EF20000DB091F000080020000B0AD
1893:107640000000D8099E400278094068B20000361058
1894:1076500000000080020000900000DF09800100802F
1895:1076600082812FB600008E072A3101E0060000B2A9
1896:1076700018000000CA0000F8730A03398E073600AC
1897:10768000000000C00200369200008E0780010080DA
1898:10769000A2802FB618000000CA0000F8730A033950
1899:1076A0008E073600000000C0020036920D00E5098A
1900:1076B00000000058080036920000E509000000585C
1901:1076C000080000921B00000000000058080036323D
1902:1076D0000000C40F0020001808006EF20000000037
1903:1076E0000030002808006E3200000000545401FCF5
1904:1076F00002C06E320000300A380000A4088082B256
1905:107700000000300A0428010408006EB200003610A0
1906:107710009F500104A85B80BC00000000005001E8FD
1907:10772000060000320000110A0801007819A082BC8E
1908:1077300000000000002801E0A660803C0000F00985
1909:107740002A010014080000B200000000CA00001462
1910:107750001840813A0000A30D00A80120A9206EFA6C
1911:1077600000000000002001E0A6206E3C00000000A8
1912:10777000003000E0060000320000000000A801E038
1913:107780000600923200000000000000D802800132A2
1914:1077900000C0030A1801000CA8CD3EB20000FA098F
1915:1077A00004000080024081BC0000000000000014C2
1916:1077B0000800003218000000000000F8730A0339C6
1917:1077C000F4093600000000C002003692208000005C
1918:1077D00000000028098036320000F10E000000D8B9
1919:1077E000020000D20000FE0904000080028092BC6A
1920:1077F00018003600000000F8730A03F900000000CA
1921:10780000000000D80280013200C0030A1801000CF9
1922:10781000A8CD3EB218000000000000F8738A0339BA
1923:10782000FE090000000000C00200363200003600F1
1924:10783000000000800200009000000000DE00000850
1925:10784000E801003400000000DF00013808C06E329B
1926:1078500000000000001000000700003200000000DF
1927:107860000018000007808232000000000030000095
1928:1078700007C02C320020008000380000070037329B
1929:1078800000000000CA3D000C0780833200000000A9
1930:10789000000000141840813A00000F0A040201ECB5
1931:1078A00016C06EBC00000000C00100141840813AF0
1932:1078B00000000000000000F892802F3400C00E0A83
1933:1078C00012000040A28D39B20000690A120100487E
1934:1078D00002C080B200000F0A000000800200009089
1935:1078E000000000000000002808809732000000001F
1936:1078F000000000A408808232000000000010006C2C
1937:1079000018206E3A000000000018004C08006E328B
1938:107910000000A30D00A8012019206EFA000000004D
1939:10792000002001E016206E3C0000000000A801E0ED
1940:107930000600923200001B0A003801E006408092E7
1941:10794000000000000060006C18206E3A000000008B
1942:107950000068004C08006E3200001D0A9F01000400
1943:10796000686080BC0000240A000000181820009CF9
1944:1079700000001F0A120100E802C021B21800360000
1945:10798000000000F8730A03F900000000CA70001834
1946:1079900008006E320000190A02010080626080BC9B
1947:1079A00000000000CA0100F802802F3500A01B0A69
1948:1079B00012010040A28D39B20000220A00000080AE
1949:1079C000020000900000280A80000080A2802FB6EC
1950:1079D00000002B0A04000080A2A081BC000000006F
1951:1079E000CA0100F802802F3500A0270A12000040CB
1952:1079F000A28D39B200000000000000F8A2802F35EF
1953:107A000000002B0A120100E802C021B21800360063
1954:107A1000000000F8730A03F900000000002801E0EC
1955:107A20000600003200000000003000E006808232D4
1956:107A300000000000002000E00680813200003610C7
1957:107A4000041000E006C086B20000320A001800E010
1958:107A500006C08492000036100410006C08006EB25C
1959:107A6000000000000018004C08006E320000E00D1D
1960:107A7000510000D8020000F20000350A0050013C1D
1961:107A8000A85B809C00008E07003001E00600009299
1962:107A900000003A0A3E510100A81B80BA0000000015
1963:107AA000DE0000F8F2812F3400000000005801ECE5
1964:107AB00006C0EE3200003A0A80010080328087B6AC
1965:107AC00000000000000000F8E2802F340000730E78
1966:107AD000603001E0060000F200008E070000008028
1967:107AE00002000090000000000000001408000032B6
1968:107AF0000000430A040201EC16C06EBC0000000046
1969:107B0000C90100141840813A00000000C00101388A
1970:107B100008C06E3200000000DF0000A4A8608A3CAC
1971:107B200000C0460A12010040A28D39B20000410A8D
1972:107B3000000000800200009000000000003000E023
1973:107B40000600003200000000DF0000A4A8608A3CAC
1974:107B5000000000000000013808C06E320000000084
1975:107B6000DEA8012099226E3A0000490A2F2001E088
1976:107B700096226EBC0000A30D00000080020000F001
1977:107B800000004D0A1F5001E8060000B200004C0A38
1978:107B90000400008002C083BC00004D0A005001E8D0
1979:107BA000F660809C0800000000400268129AFE38CF
1980:107BB0000000510A2AA901E0060092B2180036001E
1981:107BC000CA0000F8730A03F91D00510A040000807E
1982:107BD00002A417B800004E0A000000141840819C4F
1983:107BE0000000DC0E00000030030038F20000540AF0
1984:107BF0008001008032802FB63E00530A1200002C14
1985:107C000082CD2EB200000000000000D802800132B8
1986:107C100000C0650A1801000CA8CD3EB2208000000B
1987:107C2000C3000028098036320000F10E000000D8A1
1988:107C3000020000D200005A0A04000080028092BCB8
1989:107C400000000000000000141840813A00005F0AA4
1990:107C500004000080024081BC18003600000000F8DB
1991:107C6000730A03F90000630A04000014184081BC81
1992:107C700000005B0A1200000009C021B200005C0A8B
1993:107C8000000000800200009018003600000000F89C
1994:107C9000738A03F90000DC0E00000030030038F2A4
1995:107CA0000000630A8001008032802FB63E00620A25
1996:107CB0001200002C82CD2EB200000000C30000D8BC
1997:107CC0000280013200C05F0A1800000CA8CD3EB24D
1998:107CD0000020008000000028090037320000B10FAA
1999:107CE00000000008E80100F40000670A12000048E4
2000:107CF00002C080B200000000000000141840813A69
2001:107D000018003600CA0000F8730A03F90000690A77
2002:107D100004010014184081BC0000990F000000808D
2003:107D2000020000F000006F0A8001008092802FB6F0
2004:107D30002B00720A1201002C82CD2EB200006D0AB7
2005:107D400000000080020000900000720A1D00008008
2006:107D5000020000B00000720A8000008002812FB68D
2007:107D60002A000000D001002C82CD2E3200008C07AA
2008:107D700004000080028085BC0000AA0F0000008083
2009:107D8000020000F000007D050000001C08808592C4
2010:107D900000000000CE0100D80280013200C07A0A43
2011:107DA0001801000CA8CD3EB22080000000000008A1
2012:107DB0000880363200008C0F0000005C1FC0F5FA0E
2013:107DC000000031030000008002000090000000006D
2014:107DD000600000D80200003200007F0A3F00003C33
2015:107DE000084080B200007F0A80010080E2812FB647
2016:107DF00000000000DE0000F8F2812F3400000000D7
2017:107E0000005801EC06C0EE32000000004D000000FA
2018:107E100067E0833E00000000000800000700803299
2019:107E2000000000000010000007C0863200000000C3
2020:107E30000018000007C084320000BE0A04000028B9
2021:107E4000D8A082BC0000000000000018D8A0813C2F
2022:107E500000009C0A0400003CD8E083BC0000890AB2
2023:107E60000400008072802DBC0000870A12000050C0
2024:107E700002C038B200009A0A510000D812802D9A30
2025:107E80000000890A12000050F2C138B40000950ABF
2026:107E9000280000D8020000B20000920A8001008091
2027:107EA000F2C185B600008F0A1F400284E60100B4CB
2028:107EB0000000920A1D0100F822812FB40000920AEE
2029:107EC000000000F862812F950000910A1D010080DA
2030:107ED000020000B000000000000000F862812F35B1
2031:107EE0000000000000400280024068320000940A56
2032:107EF000343000E016206EBC0000940D00000080BD
2033:107F0000020000F00000AE0DDA5B01EC0640EDF27D
2034:107F100018003600000000F8730A03F90000990AFF
2035:107F20000400008072802DBC0000950A670000F8F4
2036:107F3000A2802FB500003610120000E802C021B266
2037:107F400000000000510000D8020000320000E80DDF
2038:107F500000000000D82080FA0000800A4D000000D8
2039:107F600067E0839E00009C0A12000050F2C138B402
2040:107F70000000A80A28000080084000B20000A50AFE
2041:107F800080010080F2C185B60000A20A1F40028471
2042:107F9000E60100B40000A50A1D0100F822812FB4FB
2043:107FA0000000A50A000000F862812F950000A40AD5
2044:107FB0001D010080020000B000000000000000F879
2045:107FC00062812F35000000000040028002406832CC
2046:107FD0000000A70A343000E016206EBC0000940DAB
2047:107FE00000000080020000F00000AE0DDA5B01EC42
2048:107FF0000640EDF20000BF0A80000080E2802FB64C
2049:108000000000AC0A042100E0068081B20000E80D07
2050:1080100000000034080000F200000000002000E032
2051:10802000068081320000B10A2A1100E0D6E086BA4B
2052:1080300018003600CA0000F8730A03F91D00B10ADF
2053:108040000401008002A417B80000AD0A9F0100805F
2054:10805000180088BC0000361000000080020000906C
2055:108060000000990F00000080020000F00000DC0E0C
2056:1080700000000030030038F20800B50A231901E8B7
2057:10808000762081B93E00B40A1200002C82CD2EB2B7
2058:108090000000B80A1D1800E006C084B20000B80A4B
2059:1080A0008000008002812FB62A000000D001002C41
2060:1080B00082CD2E320000FA0D0000002CF90100F4F0
2061:1080C0000000BC0A04000080020088BC0000BC0A5A
2062:1080D0001201000009C021B218003600000000F8AB
2063:1080E000730A03F9000032031201006802C585B06B
2064:1080F0000000361000000080020000900000BE0A60
2065:1081000012000050F2C138B400000000C001013874
2066:1081100008C06E320000C30A040201EC16C06EBC37
2067:1081200000C0C10A12000040A28D39B20000C40A8A
2068:10813000C90100140800009200000000453000E072
2069:10814000060000320000CF0A28000008E80100B451
2070:108150000000CC0A80010080F2C185B60000C90A87
2071:108160001F400284E60100B40000CC0A1D0100F8A3
2072:1081700022812FB40000CC0A000000F862812F9504
2073:108180000000CB0A1D010080020000B000000000CA
2074:10819000000000F862812F350000000000400280DE
2075:1081A000024068320000CE0A8000008042812FB673
2076:1081B0000000940D00000080020000F00000AE0DF1
2077:1081C000DA5B01EC0640EDF200200080DF000028C1
2078:1081D000090037320000B10FDE0000D8028001F242
2079:1081E0000800990F001801E8762081F90000DC0EE4
2080:1081F00000000030030038F20000D50A8001008042
2081:1082000032802FB63E00D40A1200002C82CD2EB24E
2082:108210000000D90A290801E406C02DB20000DE0AD8
2083:108220001D000080020000B00000DE0A8000008017
2084:1082300002812FB62A00DE0AD001002C82CD2E92B8
2085:108240000000DB0A1201000009C021B2180036004C
2086:10825000000000F8730A03F91D00DD0A0401008024
2087:1082600002A417B80000DA0A000000141840819C2C
2088:108270002B00DD0A1200002C82CD2EB20000FB0D77
2089:108280000000002CF90100F40000E10A0401008064
2090:10829000024081BC18003600000000F8730A03F9A0
2091:1082A0000000E10A1200004802C080B20000320360
2092:1082B0001201006802C585B00000E20A00000080DB
2093:1082C0000200009000000000000000D8028001328F
2094:1082D00000C0E90A1801000CA8CD3EB220800000C1
2095:1082E000000000080880363200008C0F0000005C9F
2096:1082F0001FC0F5FA0000310300000080020000906A
2097:1083000000C00000000000F8A28D2F310000000026
2098:10831000000000D802000032000000000000000051
2099:108320000780813200000000000800000700803252
2100:10833000000000000010000007C0863200000000AE
2101:108340000018000007C084320000EF0A120000503D
2102:10835000F2C138B40000F50A8000008082802FB698
2103:108360000000000000000068A860803C00000000E1
2104:108370000000003C084080320000AD0D0000000409
2105:10838000088082F20000F60A1201000009C021B242
2106:1083900018003600000000F8730A03F91D00F80AFF
2107:1083A0000400008002A417B80000F50A000000F8DD
2108:1083B000A2802F9500000000000000006820803A95
2109:1083C0000000FC0A0400002868A082BC0000E80D40
2110:1083D00000000080020000F00000EB0A000000D85E
2111:1083E0000200009200000000000000D8028001326C
2112:1083F0000020008000000028090037320000AD0F87
2113:1084000000000008E80100F418003600CA0000F877
2114:10841000730A03F90000060B040201EC16C06EBCDF
2115:1084200000000000C00100F892802F3400C0040B4F
2116:1084300012010040A28D39B20000020B0000008042
2117:10844000020000902B00060B1201002C82CD2EB2F0
2118:108450000000040B000000800200009000000000FB
2119:10846000000000D8028001320000090B12010060F8
2120:10847000084023B20082120B00000008A88D8092F1
2121:108480000000361012000024080023B2000036104D
2122:108490001200002008C023B200003610120000189D
2123:1084A000088023B200C0210B1801000CA8CD3EB2F9
2124:1084B00000000C0B12000038028081B20000361060
2125:1084C0001200003C020082B20000361012000030A0
2126:1084D000024082B20000361012000034020086B260
2127:1084E0002080000000000008A88D80320000190BD9
2128:1084F00080010080F2C185B60000160B1F40028487
2129:10850000E60100B40000190B1D0100F822812FB410
2130:108510000000190B000000F862812F950000180B75
2131:108520001D010080020000B000000000000000F803
2132:1085300062812F3500000000004002800240683256
2133:10854000000036101200006802C585B000001C0B48
2134:108550003400005C1FC0F5BA0000940D00000080DC
2135:10856000020000F000001E0B8000008092802FB6F9
2136:1085700000008E07003000E00600009200008E0729
2137:10858000120100E802C021B218000000000000F84B
2138:10859000730A03398E073600000000C002003692CD
2139:1085A00000000000450000D802400032000000003A
2140:1085B0004100000007808632000000000008000033
2141:1085C00007008032000000000010000007408232E7
2142:1085D0000000000000180000070086320000260B93
2143:1085E00012000050F2C138B4000000000000007812
2144:1085F000388087350000000000A001E016206E3AA8
2145:10860000000000000000007809C58530000000006F
2146:1086100000A801E016206E3C08000000D20100789E
2147:10862000E9E58339180036101F410284E6A197B9A5
2148:108630000000300B365101E816E083BC0000300B1F
2149:108640001D010080020000B000000000000000F8E2
2150:1086500062812F350000320B382101E0064080B2E4
2151:1086600000000000003001E0064080320000000001
2152:10867000000000D8028001320000350B34180000E1
2153:10868000078081B20000940D00000080020000F01D
2154:108690001000990F0030000017E02CF90010008046
2155:1086A00000380000070037320000DC0E0000003008
2156:1086B000030038F200003A0B8001008032802FB6B0
2157:1086C0003E00390B1200002C82CD2EB200003F0B71
2158:1086D00029210000070082B200003D0B12010000BA
2159:1086E00009C021B218003600000000F8730A03F92F
2160:1086F0001D00420B0401008002A417B800003B0BD0
2161:1087000000000014080000920000420B1D3000E041
2162:10871000060000B20000420B8000008002812FB6EC
2163:108720002A000000D001002C82CD2E320000AA0FBA
2164:108730000000002CF90100F40000FA0D000000F820
2165:10874000A2802FF40000470B04000080024081BC8F
2166:108750000000470B120100E802C021B218003600E9
2167:10876000000000F8730A03F9000032031201004808
2168:1087700002C080B20000470B0000008002000090A1
2169:108780000000500B80010080F2C185B600004D0B47
2170:108790001F400284E60100B40000500B1D0100F8E8
2171:1087A00022812FB40000500B000000F862812F9549
2172:1087B00000004F0B1D010080020000B0000000000F
2173:1087C000000000F862812F350000000000400280A8
2174:1087D000024068320000520B04000080024086BC58
2175:1087E0000000D70F0090010809006EF2000007108A
2176:1087F00000000080020000F00000590B330100D897
2177:10880000028001B20000590B80010080B20172B6F3
2178:108810000000590B9FF0018082DB87BC0000590BE0
2179:108820009FF8018022216EBC0000000000E801E0FA
2180:108830000600EE320000000000F001E006C08732C2
2181:1088400008000000001801E87620813900005F0B65
2182:1088500080010080D2802FB600005F0B04B0008042
2183:1088600002006EBC00000000CD0000F872812F34C1
2184:108870003D005F0B1201002C82CD2EB200005D0B7B
2185:1088800000000080020000900000690B270901E44D
2186:1088900006C02DB200C0630B1801000CA8CD3EB27B
2187:1088A000000036101200006802C585B020808E07D7
2188:1088B000000000080880369200000000004001E03F
2189:1088C0000640883200000000D508000007408832CA
2190:1088D000000000000030000007C02C320040008083
2191:1088E000CA390000070037320000670B1200004849
2192:1088F00002C080B20060000000000008088036322C
2193:1089000000006C0B1D000080020000B000006C0B2A
2194:108910008000008002812FB62A000000D001002CC8
2195:1089200082CD2E320000FB0D0000002CF90100F476
2196:10893000000032031201006802C585B00000361045
2197:10894000000000800200009000000000545401FC70
2198:1089500002C06E3200000000000000D80280013228
2199:1089600000C0750B1801000CA8CD3EB2208000009D
2200:108970000000000808803632000031031201002C8C
2201:1089800072E02EB20000730B000000800200009025
2202:108990000000C40F0020001808006EF2000036101E
2203:1089A0001F30002808006EB200000000000000A484
2204:1089B00008808232000036100410006C08006EB28D
2205:1089C0000000E00D0018004C08006EF200007C0B67
2206:1089D0000050013CA85B809C000036100000008025
2207:1089E000020000900000000000500100A81B803A27
2208:1089F00000000000510000D802000032000000001A
2209:108A00004D00000067E0833E000000000008000009
2210:108A100007008032000000000010000007C086320E
2211:108A2000000000000018000007C084320000A60B00
2212:108A300004000028D8A082BC00000000000000183C
2213:108A4000D8A0813C0000940B0400003CD8E083BC1B
2214:108A50000000880B0400008072802DBC0000860B93
2215:108A60001200005002C038B200008E0B510000D836
2216:108A700012802D9A0000880B12000050F2C138B409
2217:108A800018003600000000F8730A03F900008D0B8F
2218:108A90000400008072802DBC0000890B670000F884
2219:108AA000A2802FB500003610120000E802C021B2EB
2220:108AB00000000000510000D8020000320000920BBC
2221:108AC0002A010000D82080BA0000920B1201000099
2222:108AD00009C021B218003600000000F8730A03F93B
2223:108AE00000000000000000D8024084320000F00DB9
2224:108AF0000060006C08006EF200007F0B4D0000006B
2225:108B000067E0839E0000940B12000050F2C138B45D
2226:108B100018003600000000F8730A03F91D00990BD5
2227:108B20000400008002A417B80000950B670000F84D
2228:108B3000A2802FB5000036101200000009C021B23B
2229:108B40000800361012400268129AFEB80000DC0ECF
2230:108B500000000030030038F2000036101F00006CE7
2231:108B6000D8E086BA0000E00D510000D8020000F203
2232:108B700000009F0B0000003C08408092000036106F
2233:108B8000000000800200009000007E0B04010080C5
2234:108B9000028081BC0000A40B80010080A2802FB65F
2235:108BA0000000A40B1201000009C021B21800360019
2236:108BB000000000F8730A03F900000000000000D86C
2237:108BC000024084320000F00D0060006C08006EF27C
2238:108BD00000007F0B4D00000067E0839E0000000056
2239:108BE000C001013808C06E3200000000453000E0CE
2240:108BF000060000320000A80B12000050F2C138B489
2241:108C00000000AD0B040201EC16C06EBC00000000B9
2242:108C1000C90100141840813A00C0AD0B1201004098
2243:108C2000A28D39B20000AB0B000000800200009062
2244:108C300000C00000000000F8A28D2F3100000000ED
2245:108C400000A8012099226E3A0000B10B2F2001E00C
2246:108C500096226EBC0000A30D00000080020000F010
2247:108C60000000B50B0400003CD8E083BC0000B40B4E
2248:108C70009F3101E096226EBC00000000003001E050
2249:108C8000060000320000B90B005001E8F660809C3D
2250:108C90000800000000400268129AFE380000B80B7D
2251:108CA0009F3101E096226EBC00000000003001E020
2252:108CB0000600003200000000005001E8060000320B
2253:108CC0000000000000A801E0060092321800360003
2254:108CD000000000F8730A03F91D00BD0B04000080BA
2255:108CE00002A417B80000BA0B000000141840819CC1
2256:108CF00000000000000000D8028001320020008047
2257:108D000000000028090037320000B10F0000000801
2258:108D1000E80100F40000C00B1200004802C080B25D
2259:108D20000000DC0E00000030030038F20000C40B2D
2260:108D300023010014184081BA3E00C30B1200002C1E
2261:108D400082CD2EB218003600CA0000F8730A03F96B
2262:108D50000000C40B04010014184081BC0000990FEE
2263:108D600000000080020000F00000CA0B2931010C55
2264:108D700009006EB22B008C071201002C82CD2EB29E
2265:108D80000000C80B000000800200009000009C0D55
2266:108D9000000C020009806EF20000D30B000000807E
2267:108DA000020000900000AA0F00000080020000F006
2268:108DB000000000000000001C080090320000D20BF0
2269:108DC00004000028098080B20000F10E000000D8E5
2270:108DD000020000D20000D20B04000080028092BC8E
2271:108DE00018003600000000F8730A03F900007D0542
2272:108DF000000000080800009200008C071D000080A1
2273:108E0000020000B000008C078000008002812FB6B5
2274:108E10002A00D50B1200002C82CD2EB200008C0748
2275:108E2000000000F802812F940000BA0D0000001825
2276:108E3000094081F20000A30D00A8012009006EF294
2277:108E4000000000000030010C09006E3200009C0D93
2278:108E5000000C020009806EF200008E070000008006
2279:108E6000020000900000990F00000080020000F056
2280:108E70000000AA0F00000080020000F000007D0545
2281:108E80000000001C0800909200000000545401FCF7
2282:108E900002C06E3210000000000000A8780B1638E7
2283:108EA00008000000000000AC780B1638000000003D
2284:108EB000000000B0A8002D3700440000000000B002
2285:108EC000880D8B3A00000000005001B408806E321B
2286:108ED0000000ED0B0431019008006EB202000000AA
2287:108EE000000000C8828D8A3700000000000000C822
2288:108EF000C2A22C3A1800EB0B86410278880D78B696
2289:108F00000000E60B9F0100A818808ABC9F00E60BBA
2290:108F1000000000A808003692000000000040020493
2291:108F2000B83F78300000FB0B00000004D862809C42
2292:108F300002000000000000C8828D8A370000000097
2293:108F4000000000C8C2A22C3A1800F20B8641027839
2294:108F5000880D78B60000ED0B9F0100A818808ABC30
2295:108F60009F00ED0B000000A8080036920000F40BF3
2296:108F700028400204B83F78B000000000C801000497
2297:108F8000D862803C0000F80B02010090182089BCD8
2298:108F900000000000000000B4080000320000ED0BEB
2299:108FA0009F0100A818808ABC9F00ED0B000000A85C
2300:108FB000080036920000FB0B04000090182089BACC
2301:108FC000000036109F000004486280BC000036108C
2302:108FD000900000B448628BBA0300361004400200CF
2303:108FE000081EFFB80000030C00000000D822809A81
2304:108FF0000000280C04000080A2E28ABC02000000ED
2305:10900000000000C8828D8A3700000000000000C800
2306:10901000C2A22C3A1800260C86400278880D78B639
2307:109020000000361004400204B83F78B00300361048
2308:1090300004400200081EFFB80000070C1201006087
2309:10904000084023B200820000000000080880363289
2310:10905000000031031201002C72E02EB20000050C5A
2311:109060000000008002000090000036101200002472
2312:10907000080023B2000036101200002008C023B2FE
2313:109080000000361012000018088023B20000000013
2314:10909000000000D80280013200C0110C1801000C41
2315:1090A000A8CD3EB200000B0C12000038028081B245
2316:1090B000000036101200003C020082B200003610A0
2317:1090C00012000030024082B200003610120000345C
2318:1090D000020086B22080050C00000008088036924D
2319:1090E00000000000000000D8020000320000000074
2320:1090F00000380200B81B803A00000000643001E034
2321:1091000016206E3A00000000000000000740803288
2322:10911000000000000008000007008032000000008E
2323:10912000001000000740823200000000001800001C
2324:10913000070086320000180C12000050F2C138B44B
2325:1091400000000000000000D8028001320000000092
2326:10915000001800000780813200000000002000009D
2327:1091600007008232100000000030000017E02C39A8
2328:109170000000000000380000F7010B340000200C54
2329:1091800080010080328087B60000000000380000B7
2330:10919000B70170340000000000000008E80100344E
2331:1091A00000002F0C020C0280A21B89BC18003600A4
2332:1091B000000000F8730A03F90000DC0E0000003024
2333:1091C000030038F20000240C1200004802C080B2F4
2334:1091D00018003600000000F8730A03F90000FD0BC8
2335:1091E0009F0100A818808ABC9F00FD0B000000A80A
2336:1091F0000800369200002A0C8001008032802FB6D1
2337:109200003E00290C1200002C82CD2EB200002C0C46
2338:109210001D010080020000B000008C07000000F873
2339:1092200062812F9500008C078000008002812FB69C
2340:109230002A002D0C1200002C82CD2EB200008C07CB
2341:10924000000000F802812F940000000000380000A8
2342:10925000C70170340000DC0E00000030030038F25B
2343:109260000800330C231901E8762081B93E00320C46
2344:109270001200002C82CD2EB20000350C1D010080A2
2345:10928000020000B00000380C000000F862812F9549
2346:109290000000380C8000008002812FB62A00360CB6
2347:1092A0001200002C82CD2EB200000000000000F859
2348:1092B00002812F340000FA0D0000002CF90100F4A7
2349:1092C00000003B0C120100E802C021B21800360079
2350:1092D000000000F8730A03F900003B0C120000487C
2351:1092E00002C080B200003203000000F8A2802F9478
2352:1092F00000000000000000D80280013200000000E1
2353:109300000030002808006E3200000000545401FCB8
2354:1093100002C06E3200C0490C1801000CA8CD3EB24C
2355:109320002080000000000028098036320000F10E85
2356:10933000000000D8020000D20000460C04000080AB
2357:10934000028092BC18000000000000F8730A033984
2358:10935000470C3600000000C00200369218003600AC
2359:10936000000000F8738A03F900000000000000D834
2360:109370000280013200C0460C1800000CA8CD3EB29D
2361:109380000020008400000028090037320000AD0FE3
2362:1093900000000008E80100F400008C0700000080D5
2363:1093A0000200009000000000000000D8028001329E
2364:1093B00000000000545401FC02C06E3200C0520C88
2365:1093C0001801000CA8CD3EB220800000000000086B
2366:1093D0000880363200002F031201002C72E02EB2FA
2367:1093E0000000500C00000080020000900000510FAF
2368:1093F00000000028090002F200005A0C0000005C86
2369:109400000800009200000000000000D80280013235
2370:1094100000000000545401FC02C06E3200C05A0C1F
2371:109420001801000CA8CD3EB220800000000000080A
2372:109430000880363200008C0F0000005C1FC0F5FA77
2373:1094400000003103000000800200009000000000D6
2374:109450000030002808006E32002000840000002840
2375:10946000090037320000AD0F00000008E80100F4E9
2376:1094700000005F0C0000008002000090000000006F
2377:1094800000000008080000320000650C04000080A5
2378:1094900002C085B20000650C80000080F2C185B674
2379:1094A0000000640C1C41028006C085B20000000070
2380:1094B0000000006802C58530000000000000007058
2381:1094C0001F00F73A00000000000000F822812F344E
2382:1094D0000000DC0C80010080A2802FB61800000084
2383:1094E000000000F8730A0339DC0C3600CA0000C023
2384:1094F000020036920000AD0C8001008082812FB600
2385:109500000000B20C1F20010809006EB20000AD0C73
2386:1095100004300108899B90BC0000710C043101806B
2387:1095200002006EBC0000E00D00000080020000F0B0
2388:1095300000006F0C0050014808806E920000361049
2389:109540000000008002000090000000000000000405
2390:109550002861803C0000810C000000002821809AD6
2391:109560000000E00D0030014808006EF20000740CAD
2392:1095700000500104A85B809C0000361000000080B1
2393:10958000020000900000000000500100A81B803A7B
2394:1095900000007E0C0700004818A084BC08000000F2
2395:1095A00000400200189AFE38000000000000006829
2396:1095B000020080320000E00D00000080020000F098
2397:1095C00000007B0C000000800200009000003610BC
2398:1095D000000000800200009000007E0C07000048A0
2399:1095E00018A084BC0800000000400200189AFE3851
2400:1095F0000000780C00000068020080920000810CDE
2401:109600000400004818A084BA000036109F0000042F
2402:10961000286180BC00000000000000002821803A82
2403:1096200000000000005401FC02C06E3200008A0CF1
2404:1096300012010060084023B200820000D601000839
2405:10964000088036320300361004400200381AFFB892
2406:109650000300000000000078096080391800000055
2407:10966000D241028CE6A1973900000000005001E8C9
2408:1096700006808432290031031201002C82CD2EB2E3
2409:109680000000880C000000800200009000003610EE
2410:1096900012000024080023B200003610120000203F
2411:1096A00008C023B20000361012000018088023B250
2412:1096B00000000000000000D80280013200C0950CBC
2413:1096C0001801000CA8CD3EB220800000D601000891
2414:1096D0000880363200008F0C12000038028081B200
2415:1096E000000036101200003C020082B2000036106A
2416:1096F00012000030024082B20000840C12010034DB
2417:10970000020086B2000036100000008002000090C7
2418:10971000080000000040025C189AFE3800000000BB
2419:10972000000000480800003200000000000000D8DF
2420:1097300002000032000000000000000007408032FC
2421:109740000000000000080000070080320000000058
2422:1097500000100000074082320000000000180000E6
2423:109760000700863200009C0C12000050F2C138B491
2424:1097700000000000D60100D8028001320000000085
2425:109780000018000007808132000000000020000067
2426:1097900007008232100000000030000017E02C3972
2427:1097A0000000A40C80000080328087B6001000808A
2428:1097B00000380000070037320000A50C00000080D0
2429:1097C00002000090001000880038000007003732C7
2430:1097D00018003600000000F8730A03F900000000CA
2431:1097E0000000006802C08532000000000000000890
2432:1097F000E80100340000A80C1200004802C080B24A
2433:1098000018003600000000F8730A03F90000E00DAC
2434:1098100000000080020000F00000810C00000080C9
2435:10982000020000900000B20C0000008002000090D6
2436:109830000000E00D00000080020000F00000B00C0D
2437:1098400000380200B81B809C0000B20C00000080B1
2438:1098500002000090050000000000006802A0FE3831
2439:109860000000AD0C00400280024068920000000041
2440:10987000CA0100D8020000320000B50C04B8018013
2441:1098800002006EBC0000000000B801E0861BEE3C48
2442:109890004C0000000000000007003632000000000D
2443:1098A00000000078A9002D37B44400000008000033
2444:1098B000878D973A000000000000007899C02C378F
2445:1098C000B400000000000078898D973A000036103F
2446:1098D0000210000087BF97BA0000000000180000C7
2447:1098E0000740FE320000BC0C12000048F2C138B440
2448:1098F0000000BD0CB6000080020000B00020BE0CCD
2449:1099000012000064A2CD2CB200000000A60000806E
2450:10991000020000300000C20C80010080A2802FB63F
2451:1099200018003600CA0000F8730A03F900008C071B
2452:10993000005401FC02C06E9200000000005401FCC3
2453:1099400002C06E320000C80C12010060084023B251
2454:109950000082000000000008088036322900310330
2455:109960001201002C82CD2EB20000C60C0000008037
2456:10997000020000900000361012000024080023B2FC
2457:10998000000036101200002008C023B2000036107C
2458:1099900012000018088023B200000000000000D868
2459:1099A0000280013200C0D30C1801000CA8CD3EB2D9
2460:1099B0002080000000000008088036320000CD0C36
2461:1099C00012000038028081B2000036101200003C04
2462:1099D000020082B20000361012000030024082B253
2463:1099E0000000C60C12010034020086B200003610DE
2464:1099F00000000080020000900000E00D0000004820
2465:109A0000080000F20800D60C0040025C189AFE988C
2466:109A100000003610000000800200009000000000EE
2467:109A200000500100A81B803A0000970C000000487D
2468:109A30000800009200000000005401FC02C06E32D9
2469:109A40000000510F00000028098002F20000BD0C48
2470:109A500000000080020000900000510F000000286C
2471:109A6000090002F20000DF0C9A0100F862812FB4B5
2472:109A700010240000000000F8A28D2F31000000002B
2473:109A800000D601EC06C06E342E008C071201002CAB
2474:109A900082CD2EB20000DF0C00000080020000909A
2475:109AA0000000E80C80010080F2C185B60000E50CE2
2476:109AB0001F400284E60100B40000E80C1D0100F81C
2477:109AC00022812FB40000E80C000000F862812F957D
2478:109AD0000000E70C1D010080020000B00000000043
2479:109AE000000000F862812F35000000000040028075
2480:109AF000024068320000EA0C04980164881B87BCAD
2481:109B00000000D70F0090010809006EF20000071056
2482:109B100000000080020000F0000036101200006813
2483:109B200002C585B000000000000000F8D2802F358B
2484:109B300000008E07370000F8D2812FB4000000002B
2485:109B4000000000F872812F343D008E071201002CB6
2486:109B500082CD2EB20000EF0C0000008002000090C9
2487:109B60000000F80C80010080F2C185B60000F50C01
2488:109B70001F400284E60100B40000F80C1D0100F84B
2489:109B800022812FB40000F80C000000F862812F95AC
2490:109B90000000F70C1D010080020000B00000000072
2491:109BA000000000F862812F350000000000400280B4
2492:109BB000024068320000000000D401EC16C06E3A8A
2493:109BC000000036101200006802C585B000008E0744
2494:109BD00004B0008002006EBC37008E071201002C1A
2495:109BE00082CD2EB20000FB0C00000080020000902D
2496:109BF0000000040D80010080F2C185B60000010D57
2497:109C00001F400284E60100B40000040D1D0100F8AD
2498:109C100022812FB40000040D000000F862812F950E
2499:109C20000000030D1D010080020000B000000000D4
2500:109C3000000000F862812F35000000000040028023
2501:109C4000024068320000100D000000800200009009
2502:109C500000000C0D80010080F2C185B60000090DE6
2503:109C60001F400284E60100B400000C0D1D0100F845
2504:109C700022812FB400000C0D000000F862812F95A6
2505:109C800000000B0D1D010080020000B0000000006C
2506:109C9000000000F862812F350000000000400280C3
2507:109CA000024068320000100D370000F8D2812FB456
2508:109CB00000000000000000F872812F343D00100DFC
2509:109CC0001201002C82CD2EB200000E0D000000808B
2510:109CD000020000900000000000D401EC06000032F9
2511:109CE00000008E071201006802C585B00000361022
2512:109CF000000000800200009000008C0780010080BE
2513:109D0000F2812FB600008C0780000080E2812FB620
2514:109D100000008C07085901EC06FB6EBC0000000037
2515:109D2000000000D80280013200000000545401FC01
2516:109D300002C06E3200C01D0D1801000CA8CD3EB24D
2517:109D400000000000005801EC06FB6E3A2080000085
2518:109D5000000000080880363200002F031201002C9A
2519:109D600072E02EB200001B0D000000800200009087
2520:109D70000000AA0F000000F8E2812FF40000200D7F
2521:109D80000603018012C06EBC19007D050000001C96
2522:109D9000080036921A007D050000001C080036926B
2523:109DA00000C00000000000F8A28D2F31000000006C
2524:109DB000000000D802800132002000C0000000280E
2525:109DC00009003732000000000030002808006E3221
2526:109DD00000000000453000E0060000320000AD0F3A
2527:109DE00000000008E80100F400002C0D040201EC62
2528:109DF00016C06EBC00000000C90100141840813A72
2529:109E000000000000000000F802802F3400C02C0D7C
2530:109E100012010040A28D39B200002A0D000000801E
2531:109E20000200009018003600CA0000F8730A03F917
2532:109E300000002C0D9F010014184081BC00008E070B
2533:109E40008001008092802FB62B008E071201002C1B
2534:109E500082CD2EB200002F0D000000800200009085
2535:109E6000000036101F0100D8028001B2000000007F
2536:109E7000005401FC02C06E3200C03C0D1801000C01
2537:109E8000A8CD3EB2208000000000002809803632B4
2538:109E90000000F10E000000D8020000D20000390DD1
2539:109EA00004000080028092BC18000000000000F84E
2540:109EB000730A03393A0D3600000000C002003692E2
2541:109EC00018003600000000F8738A03F90000000053
2542:109ED000000000D80280013200C0390D1800000CCB
2543:109EE000A8CD3EB20000AA0F000000D8024000F248
2544:109EF00000F0430D1D400200A80D68B100003610AF
2545:109F00001E400284060000B20000410D120000282D
2546:109F1000020580B008003D0D000000F823400199C3
2547:109F200000003D0D12010068020580B000003610EF
2548:109F300000000080020000900000430DB50000808A
2549:109F4000020000B000000000A50080A0360B6A35BA
2550:109F5000000000000000005009C02932000000008D
2551:109F60000056012808C06E32000000000000007892
2552:109F7000390B2E320000000000000020F3819734DE
2553:109F800000004C0D04000078D90130B6000000003C
2554:109F900000000000B905303018000000000000F893
2555:109FA00003A403390000000000000034330B2F32FB
2556:109FB0000000590D04000078D90130B600000000FF
2557:109FC00000000078B90530300000520D0400008018
2558:109FD00042E529BC00000000000000F80200003249
2559:109FE00018000000000000F8738A02390000000029
2560:109FF0000000009C028097320000580D25010008E7
2561:10A00000080000B20000560D12000028020580B0C2
2562:10A010000800580D000000F8234001990000580D79
2563:10A0200012010068020580B00000361000000080B8
2564:10A030000200009000004C0D000000F402000092AD
2565:10A0400000005D0D0400008042E529BC0000000016
2566:10A05000000000F80200003218000000000000F8C4
2567:10A06000738A0239000000000000009C0200953253
2568:10A0700000000000CA0100D8028001320000000088
2569:10A080000030000007C02C32001000A00038000093
2570:10A090000700373200000000002000000700EE3209
2571:10A0A000000000000038000C078082320000620DC2
2572:10A0B0001200004802C080B2000032030000000815
2573:10A0C000E801009400007A0D02000080A24280BCEA
2574:10A0D00000007A0D80000080F2C185B600007A0D84
2575:10A0E0001F400208B9BF68B000006C0D80410280BB
2576:10A0F000E28168B608000000000000107961803934
2577:10A1000000000000D22101E016206E3A1800000085
2578:10A1100000400288E6219139000000000001005C47
2579:10A1200008000072000000000000000C19A0903A26
2580:10A1300000007A0D06010080D2FF90BC0000700D77
2581:10A140002C410278F98168B400000000000000781A
2582:10A15000B98197340300000000400200291AFF383B
2583:10A160000000000000380200B91B903A0000000017
2584:10A17000D241028816A0973A00000000450000D89E
2585:10A1800002400032000036109F2001E016206EBA17
2586:10A1900000000000000000000740803200000000C6
2587:10A1A000000800002724903A000000000010000082
2588:10A1B00007008A320000000012010058F2C1387412
2589:10A1C0000000780D00000080020000900800840D5F
2590:10A1D0001A000034796180B900008F0D1E010080E3
2591:10A1E000020000B000008F0D1F400200094068B25D
2592:10A1F00000007C0D80000080E20190B60000361067
2593:10A20000380000541F40F5BA0000000000000008AC
2594:10A21000B93F903000000000002801E026246E3A8B
2595:10A22000080036101E00000009A4FEB800008F0DC3
2596:10A2300012010068020590B0000036100000008096
2597:10A240000200009000008F0D8000008082812FB6F8
2598:10A2500000008D0D1F410200094068B2000000009F
2599:10A26000002801E016206E3A00008A0D800100806F
2600:10A27000F2C185B60000000000400284E60100340F
2601:10A28000000000000000008002000030000000001C
2602:10A29000004002800240683200003610380000544E
2603:10A2A0001F40F5BA00000000002101E016206E7A80
2604:10A2B0000000850D80000080E20190B600007E0D58
2605:10A2C000000000541F40F59A000000000000005CF0
2606:10A2D0000800003200000000D22101E016206E3A92
2607:10A2E000180000001E410284E661937900003610D8
2608:10A2F00000000080020000900000FFFF00000080CE
2609:10A30000020000900000970D1D5D01EC16C06EBCB0
2610:10A31000000000000F01008002000070000000003B
2611:10A32000000100F8B2802F74000000000F010080CF
2612:10A33000020000700000960D045E01EC16C06EBCB9
2613:10A3400000000000005C01EC06400032000000004C
2614:10A3500000010080020000700000FFFF000000808C
2615:10A3600002000090000000000420018082DB907C4D
2616:10A3700000000000020C0280A2DB907C0000A00D17
2617:10A3800006210180821B90BC2700A10D0000000067
2618:10A390000900369228000000000000000900363253
2619:10A3A000000000000000008812002C3A0000FFFFAF
2620:10A3B0000000008002000090000000002FA0017843
2621:10A3C000891B927A0000000006880178899B977C9F
2622:10A3D000000000000034020409C06E3D00000000CF
2623:10A3E000000C020019A46E370000AB0D02000080C3
2624:10A3F00002A497BC0000AB0D02000080020000B078
2625:10A400000100000000000078898D973700000000EF
2626:10A4100002010280829B977C00000000000100F88E
2627:10A42000F2802F740000FFFF000000800200009007
2628:10A4300000000000DA5B01EC0640ED320000B10DD7
2629:10A4400004010080024086BC0000000000A001E082
2630:10A4500016206E3A0000B30D00D401EC0600009205
2631:10A460000000D70F0090010809006EF20000000004
2632:10A4700000A001E016206E3A00000710330100F83A
2633:10A4800082802FB4000007109FF0018082DB87BC20
2634:10A49000000007109FF8018022216EBC0000000020
2635:10A4A00000E801E00600EE320000000000F001E0EC
2636:10A4B00006C08732000007100000008002000090F4
2637:10A4C0000000FFFF00000080020000900000C50DAA
2638:10A4D0000421013069246EBC0000BF0D1F4002241E
2639:10A4E000094068B20000BB0D80000080E24192B6D6
2640:10A4F0000800BB0D1201006892A4FEB800003610DF
2641:10A5000000000080020000900000000000A801E0B0
2642:10A5100066246E3A0000C20D382001E0060093B2B6
2643:10A520000000C30D002801E00600009200000000BA
2644:10A53000003001E00600003200000000005001E899
2645:10A5400006000032000000000001008002000070E0
2646:10A550000000CA0D38510100A99B91BA0000C80D36
2647:10A5600004410208B9FF68B00000C60D0040028037
2648:10A57000024068920000D50D9F3101E066246EBC58
2649:10A580000000D50D003001E0060000920000D30D60
2650:10A590000428010409006EB20000D10D9F010000E3
2651:10A5A000192490BC0000000000A801E066246E3A67
2652:10A5B00000000000002801E00624003C000000002C
2653:10A5C000005001E806000032000036109F2001E034
2654:10A5D000060093B20000000000010080020000703D
2655:10A5E00000000000002801E0060000320000DB0D42
2656:10A5F00004000080020090BC0000D50D0441020858
2657:10A60000B9FF68B00000D30D00400280024068929C
2658:10A610000000D90D02000080222490BC0000DB0D58
2659:10A6200080400280F2C168B6000000000040028C49
2660:10A63000B6C168350000DB0D000000F822812F94C0
2661:10A640000800361012400268129AFEB80000D30DBE
2662:10A6500004010000292490BC0000000000A801E0D3
2663:10A6600066246E3A00000000005001E806009032B7
2664:10A67000000036109F2001E0060093B200000000A9
2665:10A6800000010080020000700000FFFF0000008059
2666:10A69000020000901800E20D1F41027888CD68B6D4
2667:10A6A000000000000000008812002C3A0000E40DB9
2668:10A6B00080010080628087B60000E00D00400280CB
2669:10A6C000024068920300361004400200381AFFB8B6
2670:10A6D000000036101F400204B8FF68B00000000000
2671:10A6E00000390200B81B807A0000FFFF00000080E4
2672:10A6F000020000900000EF0D80010080A2802FB6C4
2673:10A700000000EC0D1201000009C021B21800360053
2674:10A71000000000F8730A03F900000000000000D8F0
2675:10A72000024084321D00EF0D0401008002A417B81E
2676:10A730000000E90D9F010080180088BC0000361061
2677:10A740000000008002000090000000000060006C2B
2678:10A7500008006E3200000000CA68004C08006E322B
2679:10A76000000036100470001808006EB200000000EF
2680:10A7700004000080A2A0817C0000F60D8001008012
2681:10A78000E2802FB60000F60D1B000080020000B032
2682:10A79000000000000600008062E0837C00000000F2
2683:10A7A000CA0100F802802F3500A00000120100400D
2684:10A7B000A28D39720000F70D0000008002000090A9
2685:10A7C0000000FFFF00000080020000900000000079
2686:10A7D000000801E406C02D32EEFF0000001001E089
2687:10A7E000868D2F31000000000000001CB3E43932D8
2688:10A7F0000000000E04000078D90130B6000000000F
2689:10A8000000000078B905303018000000000000F8A2
2690:10A81000E3A503390000000000000034330B2F32A1
2691:10A820000000000004000078D9013076000000002C
2692:10A8300000000078B905303018000000000100F871
2693:10A84000E3A503790000FFFF0000008002000090F4
2694:10A8500000000000000000CC020000320000080EE2
2695:10A860002000012C09C06EB20000090E001686CC33
2696:10A8700006C0929200000000001486CC06C09232FE
2697:10A880000000000012010040628E92520000090E8A
2698:10A8900000000080020000900000FFFF0000008028
2699:10A8A0000200009000000E0E04000078D90130B6BE
2700:10A8B0000E0E3600000000C00200369200000000BC
2701:10A8C000000000140300383200000000000000E027
2702:10A8D0000200303200004E0E04000024D80130B6D1
2703:10A8E000120E000000000088824D823A00003610EF
2704:10A8F0000000008002000090000036100000008080
2705:10A90000020000900000361000000080020000905D
2706:10A910000000361000000080020000900E0E36008D
2707:10A92000000000C0020036920000380E00000080D7
2708:10A930000200009000001A0E000000204805309030
2709:10A940000000361000000080020000900000260E7B
2710:10A95000921101BC08006EB200000000000801DC8A
2711:10A9600002406E3200001E0E1F1101E026C18BB5A1
2712:10A970000000260E1D000080020000B00000000054
2713:10A98000000000D802000032800200000000000039
2714:10A99000070036320000000000000078A9002D37C3
2715:10A9A0002045000000080000878D973A0A0000004B
2716:10A9B00000000078890D82370000000000100000C0
2717:10A9C000A7BA973A000000000018000007C0EA325A
2718:10A9D0000000250E1200004802C038B200002A0E06
2719:10A9E000800E01BC08C06EB2000000000000000034
2720:10A9F000190E823200E0320E12010048A20D90B210
2721:10AA00000000280E000000800200009000000000FE
2722:10AA1000000000D802400032B40000000000000036
2723:10AA2000070036320000000000000078A9002D3732
2724:10AA30000044000000080000878D973A00000000E5
2725:10AA400000000078990082370000361002100000E4
2726:10AA500087BF97BA00000000001800000740FE32D0
2727:10AA60000000310E12000048F2C138B41800360060
2728:10AA7000000000F8730A03F9000000000000000461
2729:10AA8000896038320000000000000018F341903463
2730:10AA90000000380E04000078D90130B60000000034
2731:10AAA00000000000B905303018000000000000F878
2732:10AAB00003A40339000000000000000019CE2C326E
2733:10AAC0000060390E12000040A20D90B2000000009C
2734:10AAD000000000D80200003260000000000000000A
2735:10AAE0000700363200000000000000BCA8002D372F
2736:10AAF000A04700000008000087CD8B3A0A00000044
2737:10AB00000000007889CD2C3780020000000000781A
2738:10AB1000898D973A0000000000100000A7BA973A0C
2739:10AB2000000000000018000007C0EA320000420EDA
2740:10AB300012000040F2C138B418003600000000F8DE
2741:10AB4000730A03F900000000000801DC02406E32C5
2742:10AB50000A00470E1F01007889CD2CB700000000C5
2743:10AB60001D1001F802006E7280020000000000005B
2744:10AB700007003632204500000008000087CD8B3AE0
2745:10AB80000000000000100000A7BA973A0000000083
2746:10AB90000018000007C0EA3200004B0E120000400F
2747:10ABA000F2C138B418003600000000F8730A03F947
2748:10ABB00000000000001101F802006E7200000000A9
2749:10ABC000001001F802006E3200000000000901DCF4
2750:10ABD00002406E720000FFFF000000800200009043
2751:10ABE0000000000000000000090000320E0000001C
2752:10ABF00000000004894D0D36000000000000000038
2753:10AC000007800B32000000000008000007009032AF
2754:10AC10000000000000100000070036320000560E51
2755:10AC20001200004CF2C138B40000000000000080A7
2756:10AC3000020000300000570E1200008002C021B256
2757:10AC40000000000000000000E902903A0000530EEE
2758:10AC500004010004194090BC0000000000010080C5
2759:10AC6000020000500000FFFF000000800200009082
2760:10AC70000000650E80010080A2802FB60000600EEB
2761:10AC8000120100E802C021B218003600000000F8EE
2762:10AC9000730A03F90000640E0400008002802DBCDA
2763:10ACA000000036109F000080180088BC0000600E75
2764:10ACB000120100E802C021B200005F0E0000008017
2765:10ACC0000200009000000000CA0000D80240843258
2766:10ACD000000000000040006C881C833A0000000067
2767:10ACE0000048004C0800723200003610085000186E
2768:10ACF000C82072BC00000000040000800240817C7B
2769:10AD000000000000000000141840813C00003610D4
2770:10AD100002000020880182BA00000000000000D874
2771:10AD200002000032000000000000000007000632B0
2772:10AD30000700000000080000774A09390000000001
2773:10AD4000001000000700823200000000CA19000055
2774:10AD5000074082320000700E12000040F2C138B489
2775:10AD600000000000000100D8024084720000FFFFD4
2776:10AD70000000008002000090000000004D00000074
2777:10AD800067E0833E000000000008000007008032FA
2778:10AD9000000000000010000007C086320000000024
2779:10ADA0000018000007C084320000B70E040000281D
2780:10ADB000D8A082BC0000000000000018D8A0813C90
2781:10ADC0000000890E0400003CD8E083BC00007D0E2A
2782:10ADD0000400008072802DBC00007B0E1200005029
2783:10ADE00002C038B20000830E510000D812802D9AA4
2784:10ADF00000007D0E12000050F2C138B41800360079
2785:10AE0000000000F8730A03F90000820E04000080BD
2786:10AE100072802DBC00007E0E670000F8A2802FB566
2787:10AE200000003610120000E802C021B2000000004D
2788:10AE3000510000D8020000320000870E2A010000F5
2789:10AE4000D82080BA0000870E1201000009C021B28C
2790:10AE500018003600000000F8730A03F90000000033
2791:10AE6000000000D8024084320000F00D0060006C49
2792:10AE700008006EF20000740E4D00000067E0839E33
2793:10AE80000000890E12000050F2C138B418003600DC
2794:10AE9000000000F8730A03F91D008E0E0400008004
2795:10AEA00002A417B800008A0E670000F8A2802FB530
2796:10AEB000000036101200000009C021B20800361050
2797:10AEC00012400268129AFEB80000DC0E000000304A
2798:10AED000030038F200009F0E1F00006CD8E086BA15
2799:10AEE0000000E00D510000D8020000F20000940EB6
2800:10AEF0000000003C0840809200009F0E000000808F
2801:10AF0000020000900000980E80010080F2812FB6B0
2802:10AF10000000980E80000080E2802FB60000980E9E
2803:10AF200080010080328087B600000000000000F839
2804:10AF3000E2802F340000730E04010080028081BC87
2805:10AF400000009D0E80010080A2802FB600009D0EA3
2806:10AF50001201000009C021B218003600000000F8FC
2807:10AF6000730A03F900000000000000D80240843298
2808:10AF70000000F00D0060006C08006EF20000740E1E
2809:10AF80004D00000067E0839E0000A30E800100805A
2810:10AF9000E2802FB60000BA0E80010080A2802FB69A
2811:10AFA00018000000CA0000F8730A0339BA0E360010
2812:10AFB000000000C00200369200000000000000A463
2813:10AFC000A8608A3C0000A60E2FA8012099226EBA24
2814:10AFD0000000A30D00000080020000F0000000004F
2815:10AFE00000A801E00600923200000000005001E8D5
2816:10AFF000060000320000AA0E232101E0060000B284
2817:10B000003E00A90E1200002C82CD2EB20000361098
2818:10B01000043000E0068082B20000B20E042100E09D
2819:10B02000068081B20000B00E80010080A2802FB6A1
2820:10B030000000B00E1201000009C021B21800360055
2821:10B04000000000F8730A03F900000000000000D8B7
2822:10B05000024084320000F00D0060006C08006EF2C7
2823:10B0600000000000002000E0068081320000361061
2824:10B07000041000E006C086B2000000002A1900E0BB
2825:10B0800006C0847200000000000000F8A2802F3586
2826:10B09000000000001201000009C0217218003600F3
2827:10B0A000000000F8730A0399000000000000003C53
2828:10B0B000D8E0833C0000B80E12000050F2C138B452
2829:10B0C00000000000000000F8A2802F340000000003
2830:10B0D0000000008812002C3A0000FFFF00000080F2
2831:10B0E0000200009000000000000000000900003293
2832:10B0F000000000000000007809000032000000009D
2833:10B10000000000A802000032EE05C20E040100801B
2834:10B11000820DF6BC0006000000000008090036326F
2835:10B120000000C40E0000000409C0099200280000BD
2836:10B130000000000809003632000000000000000492
2837:10B14000098009321E000000000060C087CD003772
2838:10B1500000000000000860C0078097320030000047
2839:10B1600000000078898D2A3A000036101200005C39
2840:10B17000528197B400000000000000002924903A9A
2841:10B180000800000000000078890D903600000000E3
2842:10B19000000000041940903C00000000000000A8DE
2843:10B1A00052822A3A0008C40E02010080828D2ABC15
2844:10B1B0000000D50E06000080024090BC0000361052
2845:10B1C000120000A8020020B21E000000000000C013
2846:10B1D00087CD003700000000000800C007809732CC
2847:10B1E000000036101200005C52812AB400000000FA
2848:10B1F000000000002924903A0800000000000078B8
2849:10B20000890D90360000CE0E04010004194090BC58
2850:10B210000500000000000078890D9036000036100F
2851:10B2200012000068028097B20000000000000000D9
2852:10B230002924903A00000000000000785900903660
2853:10B240000000D60E95010080222490BA0000000074
2854:10B2500000010080020000500000FFFF000000809D
2855:10B26000020000900000000004010078D90130764F
2856:10B27000000000000000002809C029320000000082
2857:10B280000000009CB24528300000E80E860100084E
2858:10B2900009802FB2000000000000002C094081321C
2859:10B2A00000000000000000F8020000320000000072
2860:10B2B000000000F40200003218000000000000F856
2861:10B2C000738A0239000000000000009C0280923264
2862:10B2D0000000E70E0407018002C06EBC0000ED0E06
2863:10B2E000C30701ECB6E46E9A0000ED0E000601EC17
2864:10B2F000B6E46E9A000000000000002C09058030C2
2865:10B3000000000000000000F8020000320000000011
2866:10B31000000000F40200003218000000000000F8F5
2867:10B32000738A023900003F0F0000009C028092D215
2868:10B330000000000000000030030038320000000070
2869:10B3400004010078D90130760000DF0E0000009C77
2870:10B35000B24528900000FFFF00000080020000902E
2871:10B36000000000000000008802C0E8320200F20E77
2872:10B37000B00000A0F20B00B9000000000000000CBB
2873:10B38000ABE4B0320000F70E80010080F24BD0B683
2874:10B3900000000000A00000280900003200000000AA
2875:10B3A00000010080020000500000F90E040100803E
2876:10B3B000123EF8BA0000040FA0000004FD4BD09428
2877:10B3C0000000000F80010080D28192B60000000FC3
2878:10B3D000800100802281FCB600000000A000000473
2879:10B3E000FD4BD034000000000000008401C02F326B
2880:10B3F0000000000000000080F101003400000000A7
2881:10B400000000009401C02F320000040F00000090E3
2882:10B41000F101009400000000A000008401C02F3260
2883:10B420000000000000000080F101F834000000007E
2884:10B43000000000900140F8320000000000010028E8
2885:10B44000090000520000080F040100280934B0BAB6
2886:10B450000000050FB0000080020000B000000000F6
2887:10B46000A0000004FD4BD0350000000000010028C2
2888:10B47000090000520000080FB00000A822C02FB73A
2889:10B480000000060F040084C037ACB0B2000000001A
2890:10B49000A000000C0B000032FFFF0000000000784D
2891:10B4A000A94DB03000000F0F800000800240B0B600
2892:10B4B000000000000000007869819735000000005E
2893:10B4C000000084080B007C32000000000000000037
2894:10B4D000E72501320042000000080000878D2A3A6B
2895:10B4E00000000000001000000700B0320000000063
2896:10B4F000001800000700D0320000000012010048D0
2897:10B50000F2C138540000130F0000008002000090C8
2898:10B510000000150FB00000A0020000B20000000003
2899:10B520000000000CABE4B03200001A0F8001008074
2900:10B530000240D0B600000000A00000280900003240
2901:10B5400000000000000100800200005000001C0FFD
2902:10B5500004010080123EF8BA00002D0FA000000484
2903:10B560000D40D0940000260F80010080D28192B659
2904:10B570000000260F800100802281FCB60000000040
2905:10B58000A00000040D40D03400000000000000784E
2906:10B5900009C02F3200000000000000FC0200003251
2907:10B5A000000000000000008401C02F3200000000F5
2908:10B5B00000000080F1010034000000000000009451
2909:10B5C00001C02F320000000000000090F1010034A3
2910:10B5D00000002D0F000000FC028097920000000088
2911:10B5E000A000007809C02F3200000000000000FC1D
2912:10B5F00002000032000000000000008401C02F3271
2913:10B600000000000000000080F101F834000000009C
2914:10B61000000000900140F83200000000000000FC33
2915:10B62000028097320000000000010028090000524B
2916:10B630000000310F040100280934B0BA00002E0FB9
2917:10B64000B0000080020000B000000000A000000474
2918:10B650000D40D03500000000000100280900005214
2919:10B660000000310FB00000A8020000B200002F0F50
2920:10B67000040084C037ACB0B200000000A000000C91
2921:10B680000B000032FFFF000000000078A94DB03031
2922:10B690000000380F800000800240B0B600000000BB
2923:10B6A00000000078698197350000000000008408E0
2924:10B6B0000B007C320000000000000000E725013292
2925:10B6C0000042000000080000878D2A3A00000000B8
2926:10B6D000001000000700B032000000000018000059
2927:10B6E0000700D0320000000012010048F2C13854B7
2928:10B6F00000003C0F00000080020000900000FFFFEF
2929:10B7000000000080020000900000410F1C400280F9
2930:10B7100006C092B244000000000100F8A28D2F5232
2931:10B72000000036101200006802C592B00000000050
2932:10B73000000100701F00F75A0000FFFF00000080AA
2933:10B740000200009000000000D5080000078092323F
2934:10B75000000000000030000007C02C3200400080D4
2935:10B76000003800000700373200000000CA4101E045
2936:10B77000068092320000480F1200004802C080B2DA
2937:10B780000060000000010008088036720000FFFF22
2938:10B79000000000800200009000000000003800005F
2939:10B7A00007809232000000000030000007C02C32F9
2940:10B7B00000000000CA3D000C07808332000000003A
2941:10B7C0001201004802C0807200004E0F000000808D
2942:10B7D000020000900000FFFF0000008002000090C7
2943:10B7E000000000000457018002C06E7C00000000D1
2944:10B7F000005701EC068092720000FFFF00000080FD
2945:10B80000020000900000DC0E00000030030038F25F
2946:10B810000000570F9D11020C09006EB20000580F76
2947:10B8200000F0011C09006E920000000000B8011C2D
2948:10B8300009006E3200005A0F2CCD011809806EB23B
2949:10B84000000000000000000CC9C1903400005D0F32
2950:10B850003B29020409806EB20000000000D601EC12
2951:10B8600056C06E34000000000000000CB9C19034D6
2952:10B8700000006C0F00A8010809006EF20000610FC3
2953:10B880009D01008017E090BA0000000000300080A9
2954:10B8900007C091320000640F003800800700EE926C
2955:10B8A0000000640F0401008002C091BC0000000091
2956:10B8B00000B801E00600EE3200000000007001E078
2957:10B8C000060086320000660F3908008007C085B286
2958:10B8D00000000000D9C901E8068091320000000094
2959:10B8E000C8110080074090320000690F3B210080A2
2960:10B8F000070086B200000000DB0000601800863AF6
2961:10B9000000000000587801E01620863A0000000090
2962:10B9100000290080070085720000FFFF0000008002
2963:10B92000020000900000700F020C0280A29B90BCED
2964:10B93000000000000000027829006E360000700F41
2965:10B9400002000080E2A590BC00000000000000089A
2966:10B95000090000320000720F9F89017849216EBCF6
2967:10B960000000000000000078090000320000000024
2968:10B9700000000008E9A5903F0000780F04200208AD
2969:10B98000899B90BE00000000000A0258B89B9036C8
2970:10B99000000000000000007849A1903A000000007B
2971:10B9A0009F880180829B977C00000000008901E055
2972:10B9B0000680977200000000000B0258B89B90763A
2973:10B9C0000000FFFF000000800200009000007F0FD9
2974:10B9D00080010080A2802FB600007E0F1201007847
2975:10B9E00009C021B218003600000000F8730A03F9FC
2976:10B9F00000007F0FCA0000D80240849200000000BF
2977:10BA0000000000F8A2802F35000000000040006C0C
2978:10BA1000881C833A000000000048004C0800723285
2979:10BA20000000361008500018C82072BC000000004A
2980:10BA30000600008062A0827C000036100200002018
2981:10BA4000880182BA00000000000000D80200003225
2982:10BA500000000000000000000700063207000000A0
2983:10BA600000080000774A09390000000000100000BB
2984:10BA70000700823200000000CA190000074082322D
2985:10BA80000000890F12000040F2C138B4000000002D
2986:10BA9000000100D8024084720000FFFF0000008017
2987:10BAA000020000900000930F80010080F2C185B673
2988:10BAB0000000900F1F400284E60100B40000930FC5
2989:10BAC0001D0100F822812FB40000930F000000F840
2990:10BAD00062812F950000920F1D010080020000B0CE
2991:10BAE00000000000000000F862812F350000000017
2992:10BAF00000400280024068320000361012000068E8
2993:10BB000002C585B0000000001D000080020000702A
2994:10BB10000100000004010080A28D2F702A00960F02
2995:10BB20001200002C82CD2EB200000000000100F8AF
2996:10BB300002812F740000FFFF0000008002000090CF
2997:10BB400080A8000004000080828D2F7000009F0FED
2998:10BB500080010080D2802FB600009F0F04B00080CB
2999:10BB600002006EBC00000000000000F872812F345B
3000:10BB70003D00A20F1201002C82CD2EB200009D0FBD
3001:10BB800000000080020000900000A20F80010080F1
3002:10BB9000F2802FB63C00A50F1201002C82CD2EB2F0
3003:10BBA0000000A00F00000080020000900000A50F20
3004:10BBB00080010080B2802FB63500A30F1200002C48
3005:10BBC00082CD2EB200000000000000F842812F3428
3006:10BBD0008000000004000080828D2F7002000000B1
3007:10BBE00004010080A28D2F703B00A70F1200002CD3
3008:10BBF00082CD2EB200000000000100F812812F74E7
3009:10BC00000000FFFF0000008002000090080000001C
3010:10BC1000001801E876208139EEFF0000000100F8ED
3011:10BC2000828D2F710000FFFF000000800200009055
3012:10BC30000000B10F0000013808C06EF200000000E3
3013:10BC40001201004802C080720000AE0F00000080A8
3014:10BC5000020000900000FFFF000000800200009042
3015:10BC60000000B30F0438017809006EB20000000034
3016:10BC7000003801E00600003200000000CA11000098
3017:10BC8000078082320000B60F2E190000078097B29D
3018:10BC90000000000000000028E98192340000BB0F82
3019:10BCA0002731000007C02CB200000000D5080000BA
3020:10BCB0000700873200000000C7000028E9809234A6
3021:10BCC00000000000004001E0060087320000000094
3022:10BCD00000000008D8818034100000000039000006
3023:10BCE000E7A092790000FFFF0000008002000090B2
3024:10BCF0000000BD0F1200004412E438B218003600F4
3025:10BD0000000000F8730A03F90000C20F040100806C
3026:10BD100002802DBC0000BE0F670000F8A2802FB586
3027:10BD200000003610120000E802C021B2000000003E
3028:10BD3000000100D8024000720000FFFF00000080F8
3029:10BD4000020000900000C70F04300080829B81BC7D
3030:10BD500000000000CA0100F802802F3500A0C60FC5
3031:10BD600012000040A28D39B200C0CB0F0438007819
3032:10BD7000898D6EB01000CB0F9F0100F8E2A52FB99E
3033:10BD800000000000005801EC06C0EE320000000088
3034:10BD900000000080020000300000000004280018AD
3035:10BDA00009006E720000BA0D00000080020000F071
3036:10BDB0000000A30D00A8012009006E920000FFFF03
3037:10BDC00000000080020000900000D40F04B000804A
3038:10BDD000829B81BC0000000000B800E886806E34C1
3039:10BDE00000000000CA0100F842802F3508A00000C2
3040:10BDF00012010040A2CD39720000D20F0000008075
3041:10BE0000020000900000000000B800E886806E3458
3042:10BE10000000000000010080020000700000FFFF31
3043:10BE200000000080020000900000DA0F33CD01BC5A
3044:10BE300008806EB200001410000000282922EEDCF9
3045:10BE40000000DF0F00000080020000900000DF0F04
3046:10BE500004B8012809006EB20000DF0F9F71018055
3047:10BE6000C2216EBC000036109F000028A924EEBC41
3048:10BE70000000141000000028198092DF000000006C
3049:10BE800000000080020000300000F20F02810180FB
3050:10BE9000829B90BCEE05EA0F060C0280828D6EBC80
3051:10BEA00000904C0000000084020037320000E40FD4
3052:10BEB000B8010080020000B00000E20F0000008026
3053:10BEC0000200009000000000000000C403809032D7
3054:10BED0000000000000B001E096216E3C0000000070
3055:10BEE000619801E0060087320000000000D401ECF8
3056:10BEF0000600003200000000A800007849403C37EE
3057:10BF00000000F70F00000008E9A5909A6089200062
3058:10BF100000000084020037320000ED0FB8010080FD
3059:10BF2000020000B00000EB0F000000800200009053
3060:10BF300000000000000000C40380903200000000F8
3061:10BF400000B001E096216E3C00000000619801E025
3062:10BF5000060087320000000000D401EC0600003229
3063:10BF60000000F70FA8000008198F909A0000000049
3064:10BF70000000007899A1893E000000000000000840
3065:10BF8000E9A5903A0000000000B001E096216E3C67
3066:10BF900000000000619801E0060087320000000008
3067:10BFA00000D401EC060000320000FA0F0600008009
3068:10BFB00072A290BC00C0FF3F008001E00600373253
3069:10BFC000000000000000000809C089320000FF0FD7
3070:10BFD00004790180821B87BC0000FD0F04B0008043
3071:10BFE00002006EBC00000110D99001E00680909222
3072:10BFF000000004108000008052812FB60000041061
3073:10C00000D54101E006008792000001103C9001E05C
3074:10C01000068090B20000000000C801E806C08B3224
3075:10C02000000000009501008002802F7200000510C2
3076:10C030009F410180821B87BC00000000000100803E
3077:10C040000200007000000000D99001E006809032EC
3078:10C0500000000000000100F872802F740000FFFF54
3079:10C06000000000800200009000000D109FD80180A9
3080:10C0700022216EBC000000000B0100800200007055
3081:10C0800000000D109FE00180C2216EBC0000000086
3082:10C090000B0100800200007000000D109FB00180B5
3083:10C0A000D2216EBC00000000000100800200007080
3084:10C0B00000000F1006680180825B87BC0000000052
3085:10C0C000006801E0064087320000111037B001E03F
3086:10C0D000064087B200000000000000F8D2802F3434
3087:10C0E0000000000000D801E006808432000000005B
3088:10C0F00000E101E0060087720000FFFF0000008001
3089:10C10000020000900000201004C1018402006EB201
3090:10C110000500000000C001E8868D92370300000092
3091:10C1200000C401E8868D9237000000000000008006
3092:10C13000020000300300000000C0012C898D6E3623
3093:10C140000000000000C4012CA9DB923A00000000AE
3094:10C150000000002C29C09236000000000000002CD6
3095:10C1600019FB923F00000000000000282980923A4D
3096:10C17000000000000000002CA9E4923F0000000035
3097:10C180006FCC01E826FB923E0000000000B901E000
3098:10C19000060000520000000000000094028092326D
3099:10C1A0000000000000C001E006402832100000003E
3100:10C1B0006FCC01E886CD2A360000000000B901E00E
3101:10C1C000060000520000FFFF000000800200009007
3102:10C1D00000000000009001BC08006E32000000006A
3103:10C1E00000B001BC88DB8B3E00000000009801BC61
3104:10C1F00088DB8B3A000030109F0000BC88E18BBCCC
3105:10C2000000003010040C0240A8DB8BBE00000000D0
3106:10C2100000B00004881B843E00002D1004B1008093
3107:10C22000825B80BC00000000000100F8C2802F7417
3108:10C2300000000000040C0280A25B807C0000301033
3109:10C240000468017819006EB600000000020000804A
3110:10C25000E265807C000000000000008812002C3A9B
3111:10C260000000FFFF000000800200009008000000B6
3112:10C27000001C01E876208139EEFF0000000100F883
3113:10C28000828D2F710000FFFF0000008002000090EF
3114:10C2900000003610000000B40F40FB9400000000C6
3115:10C2A000000000880F402B320000000000000090CA
3116:10C2B0000F00283200000000000000940F00293217
3117:10C2C00010000000000000B85F461839FF000000B1
3118:10C2D0000000009C0F003632000000000000009CAF
3119:10C2E0005FCAF935000000000000004403C0F932C5
3120:10C2F00000000000000000E40300003241000010D4
3121:10C30000000000E00300373200000000000000E4FD
3122:10C310000300003240000010000000E0030037324C
3123:10C3200000004510670000980F802AB2000000004E
3124:10C33000000000A8020000320000431012C186E095
3125:10C3400007C021B20000000000B886C006802A3273
3126:10C350004C420000000000A802003632471058117D
3127:10C36000000000B00F003692000000000000009CAA
3128:10C370000200003200014411000000AC0F0036D270
3129:10C3800000000000000000AC0F802A3200200000F6
3130:10C39000000000A802003632000000000000009CEF
3131:10C3A0000F007E3200000000000000A00F007E326F
3132:10C3B00000000000000000A40F007E32000000001A
3133:10C3C000000000A80F007E3200000000000000A85E
3134:10C3D00002C0FA3200000000000000E007C0F9329D
3135:10C3E00000000000000000E00700FA32000000003A
3136:10C3F000000000E00740FA3200005B10000000E09F
3137:10C400000780FAD200000000000000E00780FB3245
3138:10C4100001008210040100B48F4DFBB00200000047
3139:10C42000000000A002000039408000000000000C65
3140:10C43000ABCDB032100000000000000C5BCAB03978
3141:10C44000000000000000000C2BFEB0320000811143
3142:10C45000000000800200009000000000000000F8D2
3143:10C460000300013200000000000100E007803F529D
3144:10C4700018000000000000F8738A02390000000074
3145:10C4800000000044530A1635000000000000009C24
3146:10C490000F80963200000000000000A00FC096320E
3147:10C4A00000000000000000A40F009732A26003000B
3148:10C4B0000000005803003732681000000000005CE4
3149:10C4C000030036320000000000000050830D0034ED
3150:10C4D0000000000000000048830D00340000000050
3151:10C4E00000000044530A00340000360000000080C1
3152:10C4F00002000090000000000000006809C0F9324E
3153:10C50000000000000000006C0900FA32000000008A
3154:10C51000000000700940FA3200007A10000000802C
3155:10C520000200009002000000000000A0F20B0039A1
3156:10C5300000006F10800100801240B0B600000000C3
3157:10C54000000000043B40B033000000000000000485
3158:10C55000FD4BD035000073100000000C0B009792CB
3159:10C5600002000000000000A0F20B00390000731070
3160:10C57000000000046B019794000073101200006823
3161:10C58000094020B2000074101200006C094020B273
3162:10C590000D000000000000FCA2E516380000791034
3163:10C5A0009F000080028096B2000000000000007032
3164:10C5B00009C0963200007A100000006C09C0FD929C
3165:10C5C0000000791012000070094020B20000000045
3166:10C5D0000000009C0200003200000000000000D8B3
3167:10C5E0000200003202007310040100BCAF2517B82E
3168:10C5F00006007110040000BCAF6516B800006C1096
3169:10C600000400008022C0FBBC00008A1004000080EF
3170:10C6100012C1FBBC200073100401008082CDFBBC62
3171:10C6200002000000000000A0F20B003900008B1097
3172:10C6300000000080020000D084100000000000888C
3173:10C6400082CDF93A00007A110000008002000090CB
3174:10C650000000B31000000080020000900000B41041
3175:10C6600000000080020000900000B8100000008070
3176:10C67000020000900000C010000000800200009046
3177:10C6800000001911000000800200009000007310EB
3178:10C69000000000DC0F009792000000000000000086
3179:10C6A0000700033240420000000000A802003632BA
3180:10C6B000000000000008000007802A32000000008F
3181:10C6C0000010000007009732000000000018000072
3182:10C6D00007C096320880901012000040028036B2E7
3183:10C6E00000000000000000800200003000009210F6
3184:10C6F0001200009C0FC021B21D00951004000080A4
3185:10C7000072BE17B800009210000000F81E80EF9A69
3186:10C71000130000000000009C7FBE17380000981036
3187:10C720000400008012C0F9BC00009210000000F864
3188:10C730001E80EF9A000000000000009C0F007E3277
3189:10C7400000000000000000A00F007E32000000008A
3190:10C75000000000A40F007E32000000000001000075
3191:10C760000700FA52000000000000009C02000032A6
3192:10C770004C420000000000A8020036320000000019
3193:10C780000008000007802A3200006E1100000080BF
3194:10C79000020000D00000721100000080020000D0F2
3195:10C7A000000000000000000CCBC1B034000000000D
3196:10C7B0000000009C0200003200000000000000D8D1
3197:10C7C000020000320000F10E0000002809C0B0D2C3
3198:10C7D0000000A21004000080028092B20000A610A7
3199:10C7E0001200009C0FC021B21D00A910040000809F
3200:10C7F00072BE17B80000A610000000F81E80EF9A65
3201:10C80000130000000000009C7FBE17380000AC1031
3202:10C810000400008012C0F9BC0000A610000000F85F
3203:10C820001E80EF9A0200AE10040100B48F4DFBB0E1
3204:10C83000000073100000008002000090080000005B
3205:10C84000000000F89340013900000000000000B42F
3206:10C850001F40FB35FE000000000000480300363298
3207:10C860000000000000000044030000340000A2109B
3208:10C870000000000C8BC1B09400007E110008000085
3209:10C880000740FA9200006E11000800000740FAD23B
3210:10C890000880B51012000050028036B200007311FB
3211:10C8A00000000080020000D0000080110000008025
3212:10C8B00002000090000800000000009C0F003632CB
3213:10C8C00000440000000000A8020036320000000012
3214:10C8D000000000A00200003200000000000000E0A4
3215:10C8E0000700B03200000000000000A012002A3A49
3216:10C8F0000000BB100401009C1FC0F9BC00440000F4
3217:10C90000000000A80200363202007D11000000A0E5
3218:10C91000F20B00990000C810040100800240FAB236
3219:10C9200000440000000000A8020036320000CA10D7
3220:10C9300000000080020000D00000D710000000843A
3221:10C94000020000D200000000000000E007C03C32FE
3222:10C950000000C4108E010080024028B20044000094
3223:10C96000000000A40F0036320000B3100000008069
3224:10C970000200009000440000000000A48F4DFA3A2D
3225:10C980000000B310000000800200009000000000D2
3226:10C990000000009C0F00003210000001000000ACFD
3227:10C9A0000F0037320000DC1000000080020000D0D1
3228:10C9B0000800CC100401008082CDF9BC000000000A
3229:10C9C0000000009C0F0000320E000001000000ACCF
3230:10C9D0000F0037320000DC1000000080020000D0A1
3231:10C9E0000B00D0100401008082CDF9BC20000000B3
3232:10C9F0000000009C0F0036320F000001000000AC68
3233:10CA00000F0037320000DC1000000080020000D070
3234:10CA10002700D4100401008082CDF9BC0000000082
3235:10CA20000001008002000050000000000000009C97
3236:10CA30000F0000320F000001000000AC0F00373281
3237:10CA40000000DC1000000080020000D02000D9109F
3238:10CA50000401008082CDF9BC0000000000010080CC
3239:10CA60000200005000000000000000E403C0F932A2
3240:10CA70000D000001000000E003003732000000005C
3241:10CA8000000000E003C0FA3200000000000000E0F7
3242:10CA900007403E32000000000001009C1FC0F95A10
3243:10CAA00000000000000000E003C0F93200000000B8
3244:10CAB000000000E007403E32000000000000009C43
3245:10CAC0001FC0F93AFF000000000100AC8FCDF95003
3246:10CAD000000000000000009C0FC02F32000000008A
3247:10CAE000000000FC0200003200000000000000E036
3248:10CAF00007803E3200000000000000FC12C02F3A08
3249:10CB00000F00E7100401008082CD2FBC0000000060
3250:10CB1000000000E007803E3200000000000100FC41
3251:10CB200002C0F95200000000000000E007003A32A5
3252:10CB300000000000000000E007403A320000000062
3253:10CB4000000000E007803A3200000000000000E032
3254:10CB500007C03A32000000000000009C0FC02F32D6
3255:10CB600000000000000000FC020000320000000095
3256:10CB7000000000E007003D3200000000000000E07F
3257:10CB800007403D320000F210830100FC12C02FBAB2
3258:10CB900000000000000100FC02C0F952000000008B
3259:10CBA0000000009C0F0000320C0000000000000894
3260:10CBB000733E003900000000000000E00700303242
3261:10CBC000000000000000009C1FC0F93A7000F71040
3262:10CBD0000401008082CDF9BC000000000000000CC0
3263:10CBE0000300003200000000000000E007003032C7
3264:10CBF00000000000000000100300003200000000F0
3265:10CC0000000000E007003032000000000000009C3F
3266:10CC10000F00003200000000000000A00FC0293209
3267:10CC2000000000000000009C02C0F932000000007B
3268:10CC3000000000A40FC02C32000000000000009C87
3269:10CC40000200FA32180000000000002C737EFA394E
3270:10CC500000000000000000E007003032000000117A
3271:10CC60008501009C1FC0F9BA00000000000100808F
3272:10CC700002000050010000010000009C0F0037324C
3273:10CC80000000E11000000080020000D00E000F1133
3274:10CC90000401008082CDFABC00000000000000E02A
3275:10CCA0000700003200000000000000E00700003232
3276:10CCB00000000000000000E0070000320000091141
3277:10CCC0000000009C3FC0F99A1C000911040100807B
3278:10CCD00082CDFABC0200E1100000009C8FCDF9DA91
3279:10CCE000000000000001008002000050010000026E
3280:10CCF0000000009C0F0037320000E11000000080AF
3281:10CD0000020000D00E0017110401008082CDFABC91
3282:10CD100000000000000000E00700003200001311D6
3283:10CD20000000009C1FC0F99A260013110401008026
3284:10CD300082CDFABC0000000000010080020000501B
3285:10CD400000000000000000A80F402932004400004D
3286:10CD5000000000A802003632000008110000008028
3287:10CD6000020000D00000121100000080020000D07C
3288:10CD70000000E51000000080020000D0000000006C
3289:10CD8000000000E00780183200000000000000E012
3290:10CD900007401A3200000000000000E007001A32CD
3291:10CDA00000000000000000E007801A3200000000D0
3292:10CDB000000000E007C01A3200000000000000A0E0
3293:10CDC0000F000032A2600300000000580300373259
3294:10CDD0002B1100000000005C030036320000000050
3295:10CDE0000000009C0F802A3200002B1104000080FC
3296:10CDF000024029B20000000000000050833E0034D1
3297:10CE00000000000000000048833E003400000000E5
3298:10CE100000000044530A003400002C110000008878
3299:10CE20000F402B9200000000000000900F002832FD
3300:10CE300000000000000000940F00293200000000F4
3301:10CE4000000000980F802A3200000000000000A8B7
3302:10CE500002C0F93231115811000000B00F003692B3
3303:10CE60000700341104000080824D29BC000000003E
3304:10CE7000000000A01F00FA3A000028110000009CEA
3305:10CE80000F802A92C0010000000000AC0F00363273
3306:10CE9000010000000000009C020036320000441136
3307:10CEA00000000080020000D01F003A110400008042
3308:10CEB00082CD29BCC0000000000000AC8FCDFA3A42
3309:10CEC000000036110000009C12C0299A0000F610E4
3310:10CED00000000080020000D00000EC100000008084
3311:10CEE000020000D00000421104000080528AFABC07
3312:10CEF000A260030000000058030037324211000016
3313:10CF00000000005C0300363200000000000000500A
3314:10CF1000A33E00340000000000000048A33E00349F
3315:10CF20000000000000000044530A003400440000E8
3316:10CF3000000000A40F0036320000B3100000008093
3317:10CF40000200009000000000000000C402C0FA329D
3318:10CF5000030000000000009C0F00363200000000BB
3319:10CF6000000000BC0F402F3200004B110400009C59
3320:10CF70001FC0F9BC00004A110400008002402FB21B
3321:10CF800000004711000000E007002C92000047114C
3322:10CF9000000000E00700369200000000000000E002
3323:10CFA00007402C3200000000000000E007802C3217
3324:10CFB00000000000000000E007C02C32000000006C
3325:10CFC000000000E007002D3200000000000000E03B
3326:10CFD00007402D3200000000000000E007802D32E5
3327:10CFE00000000000000000E007C02D32000000003B
3328:10CFF000000000E007C0FB3200000000000000E07D
3329:10D0000007802F3200000000000000E007C02F3230
3330:10D0100018000000000000F8730A02390000000048
3331:10D02000000100E007803F52FF00000000000044C4
3332:10D030000300363200000000000000E00700F93273
3333:10D0400000000000000000E007402832000000005F
3334:10D05000000000E00780F832030000000000009CA0
3335:10D060000F00363200000000000000BC0FC02B3261
3336:10D07000000061110400009C1FC0F9BC0000601199
3337:10D080000400008002C02BB200005D11000000E02F
3338:10D0900007C0289200005D11000000E007003692F2
3339:10D0A00000000000000000E00740F932000000002E
3340:10D0B000000000E00740293200000000000000E00E
3341:10D0C0000780293200000000000000E007C029327C
3342:10D0D00000000000000000E007002A32000000000D
3343:10D0E000000000E007402A3200000000000000E0DD
3344:10D0F0000780F93200000000000000E007C02A327B
3345:10D1000000000000000000E007C02F320000000017
3346:10D11000000000E007402B3200000000000000E0AB
3347:10D1200007802B3200000000000000E007C0FB3247
3348:10D1300000000000000000880200FB320000000038
3349:10D140000000009C0200003200000000000000D837
3350:10D1500002000032000000000010000007009732BB
3351:10D16000000000000019000007C0965208807211EC
3352:10D1700012000048028036B200000000000000806B
3353:10D1800002000030000074111200009C0FC021B298
3354:10D190001D0077110400008072BE17B800007411E2
3355:10D1A000000000F81E80EF9A130000000000009CB1
3356:10D1B0007FBE1738000000000400008012C0F95C38
3357:10D1C00000007411000000F81E80EF9A00000000BB
3358:10D1D000000000B40F40FB35000000000000009C80
3359:10D1E000020000324C420000000000A8020036326B
3360:10D1F000000000000008000007802A3200006E11C5
3361:10D2000000000080020000D00000721100000080C9
3362:10D21000020000D0000000000000000CCBC1B034C0
3363:10D22000000000000000009C02000032000000002E
3364:10D23000000000D80200003200008B11000000281E
3365:10D2400009C0B0D20000811104000080028092B2B7
3366:10D25000000085111200009C0FC021B21D00881132
3367:10D260000400008072BE17B800008511000000F8AD
3368:10D270001E80EF9A130000000000009C7FBE17384C
3369:10D28000000073100400008012C0F9BC000085117A
3370:10D29000000000F81E80EF9A00000000000000FC73
3371:10D2A0000200003202000000000000A0F20B003972
3372:10D2B00000008F11040100280934B0BA00000000FA
3373:10D2C000000100280900005200000000000000A832
3374:10D2D00022C02F3700000000000084C037ACB032FD
3375:10D2E000000000000000000C0B000032FFFF0000F7
3376:10D2F000000000C0AF4DB0300000951180000080EC
3377:10D300000240B0B600000000000000C06F01FC3514
3378:10D310000000000000000000073F01320042000052
3379:10D3200000080000878D2A3A00000000001000006D
3380:10D330000700B03200000000001800000700D032E3
3381:10D3400000000000000000C03FC1383400000000B1
3382:10D3500012010048F201FC5400009A110000008004
3383:10D36000020000900000FFFF00000080020000901B
3384:0CD3700000003600000000800200009069
3385:00000001FF
diff --git a/firmware/yamaha/yss225_registers.bin.ihex b/firmware/yamaha/yss225_registers.bin.ihex
new file mode 100644
index 000000000000..6dd3d8c4de2b
--- /dev/null
+++ b/firmware/yamaha/yss225_registers.bin.ihex
@@ -0,0 +1,998 @@
1:10000000FF000E100F00FF000E110F00FF000E1278
2:100010000F00FF000E130F00FF000E140F00FF0073
3:100020000E150F00FF000E160F00FF000E170F0039
4:10003000FF000E180F00FF000E190F00FF000E1A30
5:100040000F00FF000E1B0F00FF000E1C0F00FF0033
6:100050000E1D0F00FF000E1E0F00FF000E1F0F00F1
7:10006000FF000E200F00FF000E210F00FF000E22E8
8:100070000F00FF000E230F00FF000E240F00FF00F3
9:100080000E250F00FF000E260F00FF000E270F00A9
10:10009000FF000E280F00FF000E290F00FF000E2AA0
11:1000A0000F00FF000E2B0F00FF000E2C0F00FF00B3
12:1000B0000E2D0F00FF000E2E0F00FF000E2F0F0061
13:1000C000FF000E300F00FF000E310F00FF000E3258
14:1000D0000F00FF000E330F00FF000E340F00FF0073
15:1000E0000E350F00FF000E360F00FF000E370F0019
16:1000F000FF000E380F00FF000E390F00FF000E3A10
17:100100000F00FF000E3B0F00FF000E3C0F00FF0032
18:100110000E3D0F00FF000E3E0F00FF000E3F0F00D0
19:10012000FF000E400F00FF000E410F00FF000E42C7
20:100130000F00FF000E430F00FF000E440F00FF00F2
21:100140000E450F00FF000E460F00FF000E470F0088
22:10015000FF000E480F00FF000E490F00FF000E4A7F
23:100160000F00FF000E4B0F00FF000E4C0F00FF00B2
24:100170000E4D0F00FF000E4E0F00FF000E4F0F0040
25:10018000FF000E500F00FF000E510F00FF000E5237
26:100190000F00FF000E530F00FF000E540F00FF0072
27:1001A0000E550F00FF000E560F00FF000E570F00F8
28:1001B000FF000E580F00FF000E590F00FF000E5AEF
29:1001C0000F00FF000E5B0F00FF000E5C0F00FF0032
30:1001D0000E5D0F00FF000E5E0F00FF000E5F0F00B0
31:1001E000FF000E600F00FF000E610F00FF000E62A7
32:1001F0000F00FF000E630F00FF000E640F00FF00F2
33:100200000E650F00FF000E660F00FF000E670F0067
34:10021000FF000E680F00FF000E690F00FF000E6A5E
35:100220000F00FF000E6B0F00FF000E6C0F00FF00B1
36:100230000E6D0F00FF000E6E0F00FF000E6F0F001F
37:10024000FF000E700F00FF000E710F00FF000E7216
38:100250000F00FF000E730F00FF000E740F00FF0071
39:100260000E750F00FF000E760F00FF000E770F00D7
40:10027000FF000E780F00FF000E790F00FF000E7ACE
41:100280000F00FF000E7B0F00FF000E7C0F00FF0031
42:100290000E7D0F00FF000E7E0F00FF000E7F0F008F
43:1002A000FF000E800F00FF000E810F00FF000E8286
44:1002B0000F00FF000E830F00FF000E840F00FF00F1
45:1002C0000E850F00FF000E860F00FF000E870F0047
46:1002D000FF000E880F00FF000E890F00FF000E8A3E
47:1002E0000F00FF000E8B0F00FF000E8C0F00FF00B1
48:1002F0000E8D0F00FF000E8E0F00FF000E8F0F00FF
49:10030000FF000E900F00FF000E910F00FF000E92F5
50:100310000F00FF000E930F00FF000E940F00FF0070
51:100320000E950F00FF000E960F00FF000E970F00B6
52:10033000FF000E980F00FF000E990F00FF000E9AAD
53:100340000F00FF000E9B0F00FF000E9C0F00FF0030
54:100350000E9D0F00FF000E9E0F00FF000E9F0F006E
55:10036000FF000EA00F00FF000EA10F00FF000EA265
56:100370000F00FF000EA30F00FF000EA40F00FF00F0
57:100380000EA50F00FF000EA60F00FF000EA70F0026
58:10039000FF000EA80F00FF000EA90F00FF000EAA1D
59:1003A0000F00FF000EAB0F00FF000EAC0F00FF00B0
60:1003B0000EAD0F00FF000EAE0F00FF000EAF0F00DE
61:1003C000FF000EB00F00FF000EB10F00FF000EB2D5
62:1003D0000F00FF000EB30F00FF000EB40F00FF0070
63:1003E0000EB50F00FF000EB60F00FF000EB70F0096
64:1003F000FF000EB80F00FF000EB90F00FF000EBA8D
65:100400000F00FF000EBB0F00FF000EBC0F00FF002F
66:100410000EBD0F00FF000EBE0F00FF000EBF0F004D
67:10042000FF000EC00F00FF000EC10F00FF000EC244
68:100430000F00FF000EC30F00FF000EC40F00FF00EF
69:100440000EC50F00FF000EC60F00FF000EC70F0005
70:10045000FF000EC80F00FF000EC90F00FF000ECAFC
71:100460000F00FF000ECB0F00FF000ECC0F00FF00AF
72:100470000ECD0F00FF000ECE0F00FF000ECF0F00BD
73:10048000FF000ED00F00FF000ED10F00FF000ED2B4
74:100490000F00FF000ED30F00FF000ED40F00FF006F
75:1004A0000ED50F00FF000ED60F00FF000ED70F0075
76:1004B000FF000ED80F00FF000ED90F00FF000EDA6C
77:1004C0000F00FF000EDB0F00FF000EDC0F00FF002F
78:1004D0000EDD0F00FF000EDE0F00FF000EDF0F002D
79:1004E000FF000EE00F00FF000EE10F00FF000EE224
80:1004F0000F00FF000EE30F00FF000EE40F00FF00EF
81:100500000EE50F00FF000EE60F00FF000EE70F00E4
82:10051000FF000EE80F00FF000EE90F00FF000EEADB
83:100520000F00FF000EEB0F00FF000EEC0F00FF00AE
84:100530000EED0F00FF000EEE0F00FF000EEF0F009C
85:10054000FF000EF00F00FF000EF10F00FF000EF293
86:100550000F00FF000EF30F00FF000EF40F00FF006E
87:100560000EF50F00FF000EF60F00FF000EF70F0054
88:10057000FF000EF80F00FF000EF90F00FF000EFA4B
89:100580000F00FF000EFB0F00FF000EFC0F00FF002E
90:100590000EFD0F00FF000EFE0F00FF000EFF0F000C
91:1005A000FF000E100F00FF000E110F00FF000E12D3
92:1005B0000F00FF000E130F00FF000E140F00FF00CE
93:1005C0000E150F00FF000E160F00FF000E170F0094
94:1005D000FF000E180F00FF000E190F00FF000E1A8B
95:1005E0000F00FF000E1B0F00FF000E1C0F00FF008E
96:1005F0000E1D0F00FF000E1E0F00FF000E1F0F004C
97:10060000FF000E200F00FF000E210F00FF000E2242
98:100610000F00FF000E230F00FF000E240F00FF004D
99:100620000E250F00FF000E260F00FF000E270F0003
100:10063000FF000E280F00FF000E290F00FF000E2AFA
101:100640000F00FF000E2B0F00FF000E2C0F00FF000D
102:100650000E2D0F00FF000E2E0F00FF000E2F0F00BB
103:10066000FF000E300F00FF000E310F00FF000E32B2
104:100670000F00FF000E330F00FF000E340F00FF00CD
105:100680000E350F00FF000E360F00FF000E370F0073
106:10069000FF000E380F00FF000E390F00FF000E3A6A
107:1006A0000F00FF000E3B0F00FF000E3C0F00FF008D
108:1006B0000E3D0F00FF000E3E0F00FF000E3F0F002B
109:1006C000FF000E400F00FF000E410F00FF000E4222
110:1006D0000F00FF000E430F00FF000E440F00FF004D
111:1006E0000E450F00FF000E460F00FF000E470F00E3
112:1006F000FF000E480F00FF000E490F00FF000E4ADA
113:100700000F00FF000E4B0F00FF000E4C0F00FF000C
114:100710000E4D0F00FF000E4E0F00FF000E4F0F009A
115:10072000FF000E500F00FF000E510F00FF000E5291
116:100730000F00FF000E530F00FF000E540F00FF00CC
117:100740000E550F00FF000E560F00FF000E570F0052
118:10075000FF000E580F00FF000E590F00FF000E5A49
119:100760000F00FF000E5B0F00FF000E5C0F00FF008C
120:100770000E5D0F00FF000E5E0F00FF000E5F0F000A
121:10078000FF000E600F00FF000E610F00FF000E6201
122:100790000F00FF000E630F00FF000E640F00FF004C
123:1007A0000E650F00FF000E660F00FF000E670F00C2
124:1007B000FF000E680F00FF000E690F00FF000E6AB9
125:1007C0000F00FF000E6B0F00FF000E6C0F00FF000C
126:1007D0000E6D0F00FF000E6E0F00FF000E6F0F007A
127:1007E000FF000E700F00FF000E710F00FF000E7271
128:1007F0000F00FF000E730F00FF000E740F00FF00CC
129:100800000E750F00FF000E760F00FF000E770F0031
130:10081000FF000E780F00FF000E790F00FF000E7A28
131:100820000F00FF000E7B0F00FF000E7C0F00FF008B
132:100830000E7D0F00FF000E7E0F00FF000E7F0F00E9
133:10084000FF000E800F00FF000E810F00FF000E82E0
134:100850000F00FF000E830F00FF000E840F00FF004B
135:100860000E850F00FF000E860F00FF000E870F00A1
136:10087000FF000E880F00FF000E890F00FF000E8A98
137:100880000F00FF000E8B0F00FF000E8C0F00FF000B
138:100890000E8D0F00FF000E8E0F00FF000E8F0F0059
139:1008A000FF000E900F00FF000E910F00FF000E9250
140:1008B0000F00FF000E930F00FF000E940F00FF00CB
141:1008C0000E950F00FF000E960F00FF000E970F0011
142:1008D000FF000E980F00FF000E990F00FF000E9A08
143:1008E0000F00FF000E9B0F00FF000E9C0F00FF008B
144:1008F0000E9D0F00FF000E9E0F00FF000E9F0F00C9
145:10090000FF000EA00F00FF000EA10F00FF000EA2BF
146:100910000F00FF000EA30F00FF000EA40F00FF004A
147:100920000EA50F00FF000EA60F00FF000EA70F0080
148:10093000FF000EA80F00FF000EA90F00FF000EAA77
149:100940000F00FF000EAB0F00FF000EAC0F00FF000A
150:100950000EAD0F00FF000EAE0F00FF000EAF0F0038
151:10096000FF000EB00F00FF000EB10F00FF000EB22F
152:100970000F00FF000EB30F00FF000EB40F00FF00CA
153:100980000EB50F00FF000EB60F00FF000EB70F00F0
154:10099000FF000EB80F00FF000EB90F00FF000EBAE7
155:1009A0000F00FF000EBB0F00FF000EBC0F00FF008A
156:1009B0000EBD0F00FF000EBE0F00FF000EBF0F00A8
157:1009C000FF000EC00F00FF000EC10F00FF000EC29F
158:1009D0000F00FF000EC30F00FF000EC40F00FF004A
159:1009E0000EC50F00FF000EC60F00FF000EC70F0060
160:1009F000FF000EC80F00FF000EC90F00FF000ECA57
161:100A00000F00FF000ECB0F00FF000ECC0F00FF0009
162:100A10000ECD0F00FF000ECE0F00FF000ECF0F0017
163:100A2000FF000ED00F00FF000ED10F00FF000ED20E
164:100A30000F00FF000ED30F00FF000ED40F00FF00C9
165:100A40000ED50F00FF000ED60F00FF000ED70F00CF
166:100A5000FF000ED80F00FF000ED90F00FF000EDAC6
167:100A60000F00FF000EDB0F00FF000EDC0F00FF0089
168:100A70000EDD0F00FF000EDE0F00FF000EDF0F0087
169:100A8000FF000EE00F00FF000EE10F00FF000EE27E
170:100A90000F00FF000EE30F00FF000EE40F00FF0049
171:100AA0000EE50F00FF000EE60F00FF000EE70F003F
172:100AB000FF000EE80F00FF000EE90F00FF000EEA36
173:100AC0000F00FF000EEB0F00FF000EEC0F00FF0009
174:100AD0000EED0F00FF000EEE0F00FF000EEF0F00F7
175:100AE000FF000EF00F00FF000EF10F00FF000EF2EE
176:100AF0000F00FF000EF30F00FF000EF40F00FF00C9
177:100B00000EF50F00FF000EF60F00FF000EF70F00AE
178:100B1000FF000EF80F00FF000EF90F00FF000EFAA5
179:100B20000F00FF000EFB0F00FF000EFC0F00FF0088
180:100B30000EFD0F00FF000EFE0F00FF000EFF0F0066
181:100B4000FF000802FF000B070A440D000C00FF0025
182:100B50000B070A420D000C00FF000B070A430D00B3
183:100B60000C00FF000B070A7C0D000C00FF000B07B8
184:100B70000A7E0D000C00FF000B070A460D000C005A
185:100B8000FF000B070A490D000C00FF000B070A4786
186:100B90000D000C00FF000B070A4A0D000C00FF00BF
187:100BA0000E100F00FF000E110F00FF000E120F00BD
188:100BB000FF000E130F00FF000E140F00FF000E15B4
189:100BC0000F00FF000E160F00FF000E170F00FF00B2
190:100BD0000E180F00FF000E190F00FF000E1A0F0075
191:100BE000FF000E1B0F00FF000E1C0F00FF000E1D6C
192:100BF0000F00FF000E1E0F00FF000E1F0F00FF0072
193:100C00000E200F00FF000E210F00FF000E220F002C
194:100C1000FF000E230F00FF000E240F00FF000E2523
195:100C20000F00FF000E260F00FF000E270F00FF0031
196:100C30000E280F00FF000E290F00FF000E2A0F00E4
197:100C4000FF000E2B0F00FF000E2C0F00FF000E2DDB
198:100C50000F00FF000E2E0F00FF000E2F0F00FF00F1
199:100C60000E300F00FF000E310F00FF000E320F009C
200:100C7000FF000E330F00FF000E340F00FF000E3593
201:100C80000F00FF000E360F00FF000E370F00FF00B1
202:100C90000E380F00FF000E390F00FF000E3A0F0054
203:100CA000FF000E3B0F00FF000E3C0F00FF000E3D4B
204:100CB0000F00FF000E3E0F00FF000E3F0F00FF0071
205:100CC0000E400F00FF000E410F00FF000E420F000C
206:100CD000FF000E430F00FF000E440F00FF000E4503
207:100CE0000F00FF000E460F00FF000E470F00FF0031
208:100CF0000E480F00FF000E490F00FF000E4A0F00C4
209:100D0000FF000E4B0F00FF000E4C0F00FF000E4DBA
210:100D10000F00FF000E4E0F00FF000E4F0F00FF00F0
211:100D20000E500F00FF000E510F00FF000E520F007B
212:100D3000FF000E530F00FF000E540F00FF000E5572
213:100D40000F00FF000E560F00FF000E570F00FF00B0
214:100D50000E580F00FF000E590F00FF000E5A0F0033
215:100D6000FF000E5B0F00FF000E5C0F00FF000E5D2A
216:100D70000F00FF000E5E0F00FF000E5F0F00FF0070
217:100D80000E600F00FF000E610F00FF000E620F00EB
218:100D9000FF000E630F00FF000E640F00FF000E65E2
219:100DA0000F00FF000E660F00FF000E670F00FF0030
220:100DB0000E680F00FF000E690F00FF000E6A0F00A3
221:100DC000FF000E6B0F00FF000E6C0F00FF000E6D9A
222:100DD0000F00FF000E6E0F00FF000E6F0F00FF00F0
223:100DE0000E700F00FF000E710F00FF000E720F005B
224:100DF000FF000E730F00FF000E740F00FF000E7552
225:100E00000F00FF000E760F00FF000E770F00FF00AF
226:100E10000E780F00FF000E790F00FF000E7A0F0012
227:100E2000FF000E7B0F00FF000E7C0F00FF000E7D09
228:100E30000F00FF000E7E0F00FF000E7F0F00FF006F
229:100E40000E800F00FF000E810F00FF000E820F00CA
230:100E5000FF000E830F00FF000E840F00FF000E85C1
231:100E60000F00FF000E860F00FF000E870F00FF002F
232:100E70000E880F00FF000E890F00FF000E8A0F0082
233:100E8000FF000E8B0F00FF000E8C0F00FF000E8D79
234:100E90000F00FF000E8E0F00FF000E8F0F00FF00EF
235:100EA0000E900F00FF000E910F00FF000E920F003A
236:100EB000FF000E930F00FF000E940F00FF000E9531
237:100EC0000F00FF000E960F00FF000E970F00FF00AF
238:100ED0000E980F00FF000E990F00FF000E9A0F00F2
239:100EE000FF000E9B0F00FF000E9C0F00FF000E9DE9
240:100EF0000F00FF000E9E0F00FF000E9F0F00FF006F
241:100F00000EA00F00FF000EA10F00FF000EA20F00A9
242:100F1000FF000EA30F00FF000EA40F00FF000EA5A0
243:100F20000F00FF000EA60F00FF000EA70F00FF002E
244:100F30000EA80F00FF000EA90F00FF000EAA0F0061
245:100F4000FF000EAB0F00FF000EAC0F00FF000EAD58
246:100F50000F00FF000EAE0F00FF000EAF0F00FF00EE
247:100F60000EB00F00FF000EB10F00FF000EB20F0019
248:100F7000FF000EB30F00FF000EB40F00FF000EB510
249:100F80000F00FF000EB60F00FF000EB70F00FF00AE
250:100F90000EB80F00FF000EB90F00FF000EBA0F00D1
251:100FA000FF000EBB0F00FF000EBC0F00FF000EBDC8
252:100FB0000F00FF000EBE0F00FF000EBF0F00FF006E
253:100FC0000EC00F00FF000EC10F00FF000EC20F0089
254:100FD000FF000EC30F00FF000EC40F00FF000EC580
255:100FE0000F00FF000EC60F00FF000EC70F00FF002E
256:100FF0000EC80F00FF000EC90F00FF000ECA0F0041
257:10100000FF000ECB0F00FF000ECC0F00FF000ECD37
258:101010000F00FF000ECE0F00FF000ECF0F00FF00ED
259:101020000ED00F00FF000ED10F00FF000ED20F00F8
260:10103000FF000ED30F00FF000ED40F00FF000ED5EF
261:101040000F00FF000ED60F00FF000ED70F00FF00AD
262:101050000ED80F00FF000ED90F00FF000EDA0F00B0
263:10106000FF000EDB0F00FF000EDC0F00FF000EDDA7
264:101070000F00FF000EDE0F00FF000EDF0F00FF006D
265:101080000EE00F00FF000EE10F00FF000EE20F0068
266:10109000FF000EE30F00FF000EE40F00FF000EE55F
267:1010A0000F00FF000EE60F00FF000EE70F00FF002D
268:1010B0000EE80F00FF000EE90F00FF000EEA0F0020
269:1010C000FF000EEB0F00FF000EEC0F00FF000EED17
270:1010D0000F00FF000EEE0F00FF000EEF0F00FF00ED
271:1010E0000EF00F00FF000EF10F00FF000EF20F00D8
272:1010F000FF000EF30F00FF000EF40F00FF000EF5CF
273:101100000F00FF000EF60F00FF000EF70F00FF00AC
274:101110000EF80F00FF000EF90F00FF000EFA0F008F
275:10112000FF000EFB0F00FF000EFC0F00FF000EFD86
276:101130000F00FF000EFE0F00FF000EFF0F0009055D
277:101140000B000A000D010C7CFF000D000C1EFF00BF
278:101150000D000C00FF000D000C00FF000D000CF551
279:10116000FF000D000C11FF000D000C20FF000D0012
280:101170000C32FF000D000C40FF000D000C13FF00AF
281:101180000D000C00FF000D000C14FF000D020C768A
282:10119000FF000D000C60FF000D000C80FF000D0231
283:1011A0000C00FF000D000C00FF000D000C00FF0004
284:1011B0000D020C00FF000D000C00FF000D000C00E4
285:1011C000FF000D000C00FF000D000C00FF000D00E3
286:1011D0000C00FF000D000C00FF000D000C00FF00D4
287:1011E0000D000C00FF000D000C00FF000D000C00B6
288:1011F000FF000D000C00FF000D000C00FF000D00B3
289:101200000C00FF000D000C00FF000D000C00FF00A3
290:101210000D000C00FF000D000C00FF000D000C0085
291:10122000FF000D000C00FF000D000C00FF000D0082
292:101230000C00FF000D000C00FF000D000C00FF0073
293:101240000D000C00FF000D000C00FF000D000C0055
294:10125000FF000D000C00FF000D000C00FF000D0052
295:101260000C00FF000D000C00FF000D000C00FF0043
296:101270000D000C00FF000D000C00FF000D000C0025
297:10128000FF000D000C00FF000D000C00FF000D0022
298:101290000C00FF000D000C00FF000D000C00FF0013
299:1012A0000D000C00FF000D000C00FF000D000C00F5
300:1012B000FF000D000C00FF000D000C00FF000D00F2
301:1012C0000C00FF000D000C18FF000D000C19FF00B2
302:1012D0000D010C1AFF000D010C20FF000D010C4048
303:1012E000FF000D010C17FF000D000C00FF000D01A9
304:1012F0000C80FF000D010C20FF000D000C10FF0002
305:101300000D010CA0FF000D030CD1FF000D000C001F
306:10131000FF000D010CF2FF000D020C00FF000D009C
307:101320000C13FF000D000C00FF000D000CF4FF007B
308:101330000D020CE0FF000D000C15FF000D000C006D
309:10134000FF000D000C16FF000D000C00FF000D004B
310:101350000C17FF000D000C20FF000D000C00FF001B
311:101360000D000C20FF000D000C50FF000D000C00C4
312:10137000FF000D000C40FF000D000C00FF000D00F1
313:101380000C71FF000D020C00FF000D000C60FF004F
314:101390000D000C00FF000D000C92FF000D000C0072
315:1013A000FF000D000C80FF000D000C00FF000D0081
316:1013B0000CB3FF000D020C00FF000D000CA0FF009D
317:1013C0000D000C00FF000D000CD4FF000D000C0000
318:1013D000FF000D000C40FF000D000C80FF000D0011
319:1013E0000CF5FF000D000C20FF000D000C70FF003D
320:1013F0000D000CA0FF000D020C11FF000D000C16DB
321:10140000FF000D000C00FF000D000C00FF000D00A0
322:101410000C00FF000D000C20FF000D020C00FF006F
323:101420000D000C20FF000D000C10FF000D000C172C
324:10143000FF000D000C1BFF000D000C1DFF000D0236
325:101440000CDFFF0009050B010A000D000C00FF0076
326:101450000D000C00FF000D000C00FF000D020C0041
327:10146000FF000D000C19FF000D000C1FFF000D0008
328:101470000C00FF000D000C00FF000D000C00FF0031
329:101480000D030CD8FF000D000C00FF000D020C2016
330:10149000FF000D000C19FF000D000C00FF000D00F7
331:1014A0000C00FF000D000C18FF000D010CC0FF0028
332:1014B0000D010CFAFF000D000C1AFF000D000C00CE
333:1014C000FF000D000C00FF000D000C00FF000D00E0
334:1014D0000C00FF000D000C00FF000D000C00FF00D1
335:1014E0000D000C00FF000D000C00FF000D000C00B3
336:1014F000FF000D000C00FF000D000C00FF000D00B0
337:101500000C00FF000D000C00FF000D000C00FF00A0
338:101510000D000C00FF000D000C00FF000D000C0082
339:10152000FF000D000C00FF000D000C00FF000D007F
340:101530000C00FF000D000C00FF000D000C00FF0070
341:101540000D000C00FF000D000C00FF000D000C0052
342:10155000FF000D000C00FF000D000C00FF000D004F
343:101560000C00FF000D000C00FF000D000C00FF0040
344:101570000D000C00FF000D000C00FF000D000C0022
345:10158000FF000D000C00FF000D000C00FF000D001F
346:101590000C00FF000D000C00FF000D000C00FF0010
347:1015A0000D000C00FF000D000C00FF000D000C00F2
348:1015B000FF000D000C00FF000D000C00FF000D00EF
349:1015C0000C00FF000D000C00FF000D020C40FF009E
350:1015D0000D020C60FF000D000C00FF000D000C0060
351:1015E000FF000D000C00FF000D020CC0FF000D02FB
352:1015F0000C80FF000D000C00FF000D020CFBFF0033
353:101600000D020CA0FF000D000C00FF000D000C1BD4
354:10161000FF000D020CD7FF000D000C00FF000D02B3
355:101620000CF7FF000D030C20FF000D030C00FF0062
356:101630000D000C00FF000D000C1CFF000D030C3C06
357:10164000FF000D000C00FF000D030C3FFF000D001C
358:101650000C00FF000D030CC0FF000D000C00FF008C
359:101660000D030CDFFF000D000C00FF000D000C004F
360:10167000FF000D030C5DFF000D000C00FF000D03CB
361:101680000CC0FF000D000C00FF000D030C7DFF00DF
362:101690000D000C00FF000D030CC0FF000D000C003E
363:1016A000FF000D030C9EFF000D000C00FF000D035A
364:1016B0000CC0FF000D000C00FF000D030CBEFF006E
365:1016C0000D000C00FF000D030CC0FF000D000C000E
366:1016D000FF000D000C00FF000D000C00FF000D00CE
367:1016E0000C00FF000D000C1BFF000D000C00FF00A4
368:1016F0000D000C00FF000D000C00FF000D020CDBC4
369:10170000FF000D000C00FF000D020CDBFF000D00C0
370:101710000C00FF000D020CE0FF000D000C00FF00AC
371:101720000D020CFBFF000D000C00FF000D020CC0B1
372:10173000FF000D020C40FF000D020CFBFF000D022C
373:101740000C60FF000D000C1BFF0009050B020A00D6
374:101750000CC4FF000C00FF000C44FF000C07FF004E
375:101760000C44FF000C00FF000C40FF000C25FF00A4
376:101770000C01FF000C06FF000CC4FF000C07FF006B
377:101780000C40FF000C25FF000C01FF000C00FF00C7
378:101790000C46FF000C46FF000C00FF000C00FF0091
379:1017A0000C00FF000C00FF000C00FF000C00FF000D
380:1017B0000C00FF000C00FF000C00FF000C00FF00FD
381:1017C0000C00FF000C00FF000C00FF000C00FF00ED
382:1017D0000C00FF000C00FF000C00FF000C00FF00DD
383:1017E0000C00FF000C00FF000C00FF000C00FF00CD
384:1017F0000C00FF000C00FF000C00FF000C00FF00BD
385:101800000C00FF000C00FF000C00FF000C00FF00AC
386:101810000C00FF000C00FF000C00FF000C00FF009C
387:101820000C00FF000C00FF000C00FF000C00FF008C
388:101830000C00FF000C00FF000C00FF000C00FF007C
389:101840000C00FF000C00FF000C00FF000C00FF006C
390:101850000C46FF000C07FF000C05FF000C05FF0005
391:101860000C05FF000C04FF000C07FF000C05FF0037
392:101870000C04FF000C07FF000C05FF000C44FF00E8
393:101880000C46FF000C44FF000C46FF000C46FF0016
394:101890000C07FF000C05FF000C44FF000C46FF0086
395:1018A0000C05FF000C46FF000C05FF000C46FF0076
396:1018B0000C05FF000C46FF000C05FF000C44FF0068
397:1018C0000C46FF000C05FF000C07FF000C44FF0056
398:1018D0000C46FF000C05FF000C07FF000C44FF0046
399:1018E0000C46FF000C05FF000C07FF000C44FF0036
400:1018F0000C46FF000C05FF000C07FF000C44FF0026
401:101900000C05FF000C05FF000C05FF000C44FF0058
402:101910000C05FF000C05FF000C05FF000C46FF0046
403:101920000C05FF000C46FF000C05FF000C46FF00F5
404:101930000C05FF000C46FF000C05FF000C46FF00E5
405:101940000C07FF000C46FF000C07FF000C44FF00D3
406:1019500009050B030A000C07FF000C40FF000C00F8
407:10196000FF000C00FF000C00FF000C47FF000C0004
408:10197000FF000C40FF000C00FF000C40FF000C06B5
409:10198000FF000C40FF000C00FF000C00FF000C00EB
410:10199000FF000C00FF000C00FF000C00FF000C001B
411:1019A000FF000C00FF000C00FF000C00FF000C000B
412:1019B000FF000C00FF000C00FF000C00FF000C00FB
413:1019C000FF000C00FF000C00FF000C00FF000C00EB
414:1019D000FF000C00FF000C00FF000C00FF000C00DB
415:1019E000FF000C00FF000C00FF000C00FF000C00CB
416:1019F000FF000C00FF000C00FF000C00FF000C00BB
417:101A0000FF000C00FF000C00FF000C00FF000C00AA
418:101A1000FF000C00FF000C00FF000C00FF000C009A
419:101A2000FF000C00FF000C00FF000C00FF000C008A
420:101A3000FF000C00FF000C00FF000C00FF000C007A
421:101A4000FF000C00FF000C00FF000C00FF000C006A
422:101A5000FF000C00FF000C80FF000C80FF000CC09A
423:101A6000FF000C00FF000C00FF000C40FF000C000A
424:101A7000FF000C00FF000C00FF000C40FF000C00FA
425:101A8000FF000C40FF000C00FF000C60FF000C008A
426:101A9000FF000C70FF000C00FF000C40FF000C006A
427:101AA000FF000C40FF000C00FF000C42FF000C0088
428:101AB000FF000C40FF000C00FF000C02FF000C00B8
429:101AC000FF000C40FF000C00FF000C00FF000C00AA
430:101AD000FF000C40FF000C00FF000C00FF000C009A
431:101AE000FF000C40FF000C00FF000C00FF000C008A
432:101AF000FF000C40FF000C00FF000C00FF000C007A
433:101B0000FF000C40FF000C00FF000C00FF000C0069
434:101B1000FF000C42FF000C00FF000C40FF000C0017
435:101B2000FF000C42FF000C00FF000C02FF000C0045
436:101B3000FF000C02FF000C00FF000C02FF000C0075
437:101B4000FF000C42FF000C00FF000CC0FF000C0067
438:101B5000FF000C40FF0009050B040A000C63FF00A6
439:101B60000C03FF000C26FF000C02FF000C2CFF00F2
440:101B70000C00FF000C24FF000C00FF000C2EFF00E7
441:101B80000C02FF000C02FF000C02FF000C00FF0023
442:101B90000C00FF000C00FF000C00FF000C00FF0019
443:101BA0000C00FF000C00FF000C00FF000C00FF0009
444:101BB0000C00FF000C00FF000C00FF000C00FF00F9
445:101BC0000C00FF000C00FF000C00FF000C00FF00E9
446:101BD0000C00FF000C00FF000C00FF000C00FF00D9
447:101BE0000C00FF000C00FF000C00FF000C00FF00C9
448:101BF0000C00FF000C00FF000C00FF000C00FF00B9
449:101C00000C00FF000C00FF000C00FF000C00FF00A8
450:101C10000C00FF000C00FF000C00FF000C00FF0098
451:101C20000C00FF000C00FF000C00FF000C00FF0088
452:101C30000C00FF000C00FF000C00FF000C00FF0078
453:101C40000C00FF000C00FF000C00FF000C00FF0068
454:101C50000C00FF000C00FF000C00FF000C00FF0058
455:101C60000C01FF000C20FF000C00FF000C60FF00C7
456:101C70000C00FF000C20FF000C00FF000C20FF00F8
457:101C80000C00FF000C20FF000C00FF000C20FF00E8
458:101C90000C00FF000C20FF000C00FF000C20FF00D8
459:101CA0000C00FF000C20FF000C00FF000C20FF00C8
460:101CB0000C00FF000C60FF000C00FF000C20FF0078
461:101CC0000C00FF000C60FF000C00FF000C20FF0068
462:101CD0000C00FF000C60FF000C00FF000C20FF0058
463:101CE0000C00FF000C60FF000C00FF000C20FF0048
464:101CF0000C00FF000C60FF000C00FF000C20FF0038
465:101D00000C00FF000C60FF000C00FF000C20FF0027
466:101D10000C00FF000C20FF000C00FF000C22FF0055
467:101D20000C02FF000C22FF000C02FF000C20FF0041
468:101D30000C00FF000C60FF000C00FF000C22FF00F5
469:101D40000C02FF000C62FF000C02FF000C20FF00E1
470:101D50000C01FF000C21FF000C01FF0009010B0624
471:101D60000A000D000C00FF000A020D000C00FF002D
472:101D70000A040D000C00FF000A060D000C00FF0015
473:101D80000A080D000C00FF000A0A0D000C00FF00FD
474:101D90000A0C0D000C00FF000A0E0D000C00FF00E5
475:101DA0000A100D000C00FF000A120D000C00FF00CD
476:101DB0000A140D000C00FF000A160D000C00FF00B5
477:101DC0000A180D000C00FF000A1A0D000C00FF009D
478:101DD0000A1C0D000C00FF000A1E0D000C00FF0085
479:101DE0000A200D000C00FF000A220D000C00FF006D
480:101DF0000A240D000C00FF000A260D000C00FF0055
481:101E00000A280D000C00FF000A2A0D000C00FF003C
482:101E10000A2C0D000C00FF000A2E0D000C00FF0024
483:101E20000A300D000C00FF000A320D000C00FF000C
484:101E30000A340D000C00FF000A360D000C00FF00F4
485:101E40000A380D000C00FF000A3A0D000C00FF00DC
486:101E50000A3C0D000C00FF000A3E0D000C00FF00C4
487:101E60000A400D000C00FF000A420D030C00FF00A9
488:101E70000A440D010C00FF000A460D0A0C21FF0068
489:101E80000A480D0D0C23FF000A4A0D230C1BFF000E
490:101E90000A4C0D370C8FFF000A4E0D450C77FF00E2
491:101EA0000A500D520CE2FF000A520D1C0C92FF006A
492:101EB0000A540D1C0C52FF000A560D070C00FF00BF
493:101EC0000A580D2F0CC6FF000A5A0D0B0C00FF001C
494:101ED0000A5C0D300C06FF000A5E0D170C00FF00B7
495:101EE0000A600D3D0CDAFF000A620D290C00FF00AC
496:101EF0000A640D3E0C41FF000A660D390C00FF001C
497:101F00000A680D4C0C48FF000A6A0D490C00FF00DE
498:101F10000A6C0D4C0C6CFF000A6E0D110CD2FF0008
499:101F20000A700D160C0CFF000A720D000C00FF0069
500:101F30000A740D000C80FF000A760D0F0C00FF00E4
501:101F40000A780D000C80FF000A7A0D130C00FF00C8
502:101F50000A7C0D800C00FF000A7E0D800C80FF00C3
503:101F600009050B070A000D0F0CFFFF000D000C0008
504:101F7000FF000D080C00FF000D080C00FF000D0213
505:101F80000C00FF000D000C00FF000D000C00FF0016
506:101F90000D0F0CFFFF000D000C00FF000D000C00EA
507:101FA000FF000D080C00FF000D080C00FF000D00E5
508:101FB0000C00FF000D0F0CFFFF000D000C00FF00D8
509:101FC0000D000C00FF000D0F0CFFFF000D0F0CFFAC
510:101FD000FF000D000C00FF000D000C00FF000D00C5
511:101FE0000C00FF000D000C00FF000D000C00FF00B6
512:101FF0000D000C00FF000D000C00FF000D000C0098
513:10200000FF000D000C00FF000D000C00FF000D0094
514:102010000C00FF000D000C00FF000D000C00FF0085
515:102020000D000C00FF000D000C00FF000D000C0067
516:10203000FF000D000C00FF000D000C00FF000D0064
517:102040000C00FF000D000C00FF000D000C00FF0055
518:102050000D000C00FF000D000C00FF000D000C0037
519:10206000FF000D000C00FF000D000C00FF000D0034
520:102070000C00FF000D000C00FF000D000C00FF0025
521:102080000D000C00FF000D000C00FF000D000C0007
522:10209000FF000D000C00FF000D000C00FF000D0004
523:1020A0000C00FF000D000C00FF000D000C00FF00F5
524:1020B0000D000C00FF000D000C00FF000D000C00D7
525:1020C000FF000D000C00FF000D000C00FF000D00D4
526:1020D0000C00FF000D000C00FF000D000C00FF00C5
527:1020E0000D000C00FF000D000C00FF000D000C00A7
528:1020F000FF000D000C00FF000D000C00FF000D00A4
529:102100000C00FF000D000C00FF000D000C00FF0094
530:102110000D000C00FF000D000C00FF000D000C0076
531:10212000FF000D000C00FF000D0F0CFFFF000D0F56
532:102130000CFFFF000D0F0CFFFF000D0F0CFFFF0049
533:102140000D020CE9FF000D060C8CFF000D060C8C37
534:10215000FF000D0F0CFFFF000D1A0C75FF000D0D99
535:102160000C8BFF000D040CE9FF000D0B0C16FF009B
536:102170000D1A0C38FF000D0D0CC8FF000D040C6F7C
537:10218000FF000D0B0C91FF000D0F0CFFFF000D0663
538:102190000C40FF000D060C40FF000D020C8FFF00ED
539:1021A0000D0F0CFFFF000D060C62FF000D060C6208
540:1021B000FF000D020C7BFF000D0F0CFFFF000D0652
541:1021C0000C97FF000D060C97FF000D020C52FF004C
542:1021D0000D0F0CFFFF000D060CF6FF000D060CF6B0
543:1021E000FF000D020C19FF000D050C55FF000D0539
544:1021F0000C55FF000D050C55FF000D050C55FF009B
545:102200000D050C55FF000D050C55FF000D050C5577
546:10221000FF000D050C55FF000D140CDAFF000D0D2D
547:102220000C93FF000D040CDAFF000D050C93FF006A
548:102230000D140CDAFF000D0D0C93FF000D040CDAE9
549:10224000FF000D050C93FF000D000C00FF000D00BA
550:102250000C00FF000D000C00FF000D000C00FF0043
551:102260000D020C00FF000E010F00FF000E020F0018
552:10227000FF000E010F01FF000E020F00FF000E0114
553:102280000F02FF000E020F00FF000E010F03FF0000
554:102290000E020F00FF000E010F04FF000E020F00E0
555:1022A000FF000E010F05FF000E020F00FF000E01E0
556:1022B0000F06FF000E020F00FF000E010F07FF00C8
557:1022C0000E020F00FF000E010F08FF000E020F00AC
558:1022D000FF000E010F09FF000E020F00FF000E01AC
559:1022E0000F0AFF000E020F00FF000E010F0BFF0090
560:1022F0000E020F00FF000E010F0CFF000E020F0078
561:10230000FF000E010F0DFF000E020F00FF000E0177
562:102310000F0EFF000E020F00FF000E010F0FFF0057
563:102320000E020F00FF000EB00F20FF000EB10F20B5
564:10233000FF000EB20F20FF000EB30F20FF000EB4FF
565:102340000F20FF000EB50F20FF000EB60F20FF007C
566:102350000EB70F20FF000EB80F20FF000EB90F20A0
567:10236000FF000EBA0F20FF000EBB0F20FF000EBCB7
568:102370000F20FF000EBD0F20FF000EBE0F20FF003C
569:102380000EBF0F20FF000EF00F20FF000EF10F20F8
570:10239000FF000EF20F20FF000EF30F20FF000EF4DF
571:1023A0000F20FF000EF50F20FF000EF60F20FF009C
572:1023B0000EF70F20FF000EF80F20FF000EF90F2080
573:1023C000FF000EFA0F20FF000EFB0F20FF000EFC97
574:1023D0000F20FF000EFD0F20FF000EFE0F20FF005C
575:1023E0000EFF0F20FF000E100FFFFF000E110FFF5A
576:1023F000FF000E120FFFFF000E130FFFFF000E1461
577:102400000FFFFF000E150FFFFF000E160FFFFF005E
578:102410000E170FFFFF000E180FFFFF000E190FFF22
579:10242000FF000E1A0FFFFF000E1B0FFFFF000E1C18
580:102430000FFFFF000E1D0FFFFF000E1E0F40FF00DD
581:102440000E1F0FFFFF000E200FFFFF000E210FFFDA
582:10245000FF000E220FFFFF000E230FFFFF000E24D0
583:102460000FFFFF000E250FFFFF000E260FFFFF00DE
584:102470000E270FFFFF000E280FFFFF000E290FFF92
585:10248000FF000E2A0FFFFF000E2B0FFFFF000E2C88
586:102490000FFFFF000E2D0FFFFF000E2E0F00FF009D
587:1024A0000E2F0F00FF000E300F00FF000E310F0047
588:1024B000FF000E320F00FF000E330F00FF000E343E
589:1024C0000F00FF000E350F00FF000E360F00FF005B
590:1024D0000E370F00FF000E380F00FF000E390F00FF
591:1024E000FF000E3A0F00FF000E3B0F00FF000E3CF6
592:1024F0000F00FF000E3D0F00FF000E3E0F00FF001B
593:102500000E3F0F20FF000E400F00FF000E410F0096
594:10251000FF000E420F00FF000E430F00FF000E44AD
595:102520000F00FF000E450F00FF000E460F00FF00DA
596:102530000E470F00FF000E480F00FF000E490F006E
597:10254000FF000E4A0F00FF000E4B0F00FF000E4C65
598:102550000F00FF000E4D0F00FF000E4E0F0EFF008C
599:102560000E4F0F0EFF000E500F00FF000E510F0018
600:10257000FF000E520F00FF000E530F00FF000E541D
601:102580000F00FF000E550F00FF000E560F00FF005A
602:102590000E570F00FF000E580F00FF000E590F00DE
603:1025A000FF000E5A0F00FF000E5B0F00FF000E5CD5
604:1025B0000F00FF000E5D0F00FF000E5E0F00FF001A
605:1025C0000E5F0F00FF000E600F00FF000E610F0096
606:1025D000FF000E620F00FF000E630F00FF000E648D
607:1025E0000F00FF000E650F00FF000E660F00FF00DA
608:1025F0000E670F00FF000E680F00FF000E690F004E
609:10260000FF000E6A0F00FF000E6B0F00FF000E6C44
610:102610000F40FF000E6D0F00FF000E6E0F40FF0019
611:102620000E6F0F40FF000E700FC0FF000E710FC045
612:10263000FF000E720FC0FF000E730FC0FF000E747C
613:102640000FC0FF000E750FC0FF000E760FC0FF0019
614:102650000E770FC0FF000E780FC0FF000E790FC07D
615:10266000FF000E7A0FC0FF000E7B0FC0FF000E7C34
616:102670000FC0FF000E7D0FC0FF000E7E0FC0FF00D9
617:102680000E7F0FC0FF000E800F00FF000E810F00B5
618:10269000FF000E820F00FF000E830F00FF000E846C
619:1026A0000F00FF000E850F00FF000E860F00FF00D9
620:1026B0000E870F00FF000E880F00FF000E890F002D
621:1026C000FF000E8A0F00FF000E8B0F00FF000E8C24
622:1026D0000F00FF000E8D0F00FF000E8E0F00FF0099
623:1026E0000E8F0F00FF000E900F00FF000E910F00E5
624:1026F000FF000E920F00FF000E930F00FF000E94DC
625:102700000F00FF000E950F00FF000E960F00FF0058
626:102710000E970F00FF000E980F00FF000E990F009C
627:10272000FF000E9A0F00FF000E9B0F00FF000E9C93
628:102730000F00FF000E9D0F00FF000E9E0F00FF0018
629:102740000E9F0F00FF000EA00F00FF000EA10F0054
630:10275000FF000EA20F00FF000EA30F00FF000EA44B
631:102760000F00FF000EA50F00FF000EA60F00FF00D8
632:102770000EA70F00FF000EA80F00FF000EA90F000C
633:10278000FF000EAA0F00FF000EAB0F00FF000EAC03
634:102790000F00FF000EAD0F00FF000EAE0F00FF0098
635:1027A0000EAF0F00FF000EC00F00FF000EC10F00A4
636:1027B000FF000EC20F00FF000EC30F00FF000EC48B
637:1027C0000F00FF000EC50F00FF000EC60F00FF0038
638:1027D0000EC70F00FF000EC80F00FF000EC90F004C
639:1027E000FF000ECA0F00FF000ECB0F00FF000ECC43
640:1027F0000F00FF000ECD0F00FF000ECE0F00FF00F8
641:102800000ECF0F00FF000ED00F00FF000ED10F0003
642:10281000FF000ED20F00FF000ED30F00FF000ED4FA
643:102820000F00FF000ED50F00FF000ED60F00FF00B7
644:102830000ED70F00FF000ED80F00FF000ED90F00BB
645:10284000FF000EDA0F00FF000EDB0F00FF000EDCB2
646:102850000F00FF000EDD0F00FF000EDE0F10FF0067
647:102860000EDF0F10FF000EE00F00FF000EE10F0063
648:10287000FF000EE20F00FF000EE30F00FF000EE46A
649:102880000F00FF000EE50F00FF000EE60F00FF0037
650:102890000EE70F00FF000EE80F00FF000EE90F002B
651:1028A000FF000EEA0F00FF000EEB0F00FF000EEC22
652:1028B0000F00FF000EED0F00FF000EEE0F00FF00F7
653:1028C0000EEF0F00FF000E010F000E020F01FF00C0
654:1028D0000E010F010E020F01FF000E010F020E028A
655:1028E0000F01FF000E010F030E020F01FF000E018A
656:1028F0000F040E020F01FF000E010F050E020F0163
657:10290000FF000E010F060E020F01FF000E010F0760
658:102910000E020F01FF000E010F080E020F01FF0053
659:102920000E010F090E020F01FF000E010F0A0E0229
660:102930000F01FF000E010F0B0E020F01FF000E0131
661:102940000F0C0E020F01FF000E010F0D0E020F0102
662:10295000FF000E010F0E0E020F01FF000E010F0F00
663:102960000E020F01FF0008020B070A460D000C00C3
664:10297000FF000B070A490D000C00FF000B000A4B7B
665:102980000D030C11FF000B000A4D0D010C32FF006E
666:102990000B070A460D000C00FF000B070A490D004B
667:1029A0000C00FF000B070A400D000C00FF000B0796
668:1029B0000A410D000C00FF000B010A400D020C4003
669:1029C000FF000B010A410D020C60FF000B070A40DB
670:1029D0000D000C00FF000B070A410D000C00FF006A
671:1029E0000B070A470D000C00FF000B070A4A0D00F9
672:1029F0000C00FF000B000A470D010C00FF000B004C
673:102A00000A4A0D010C20FF000B070A470D000C00BD
674:102A1000FF000B070A4A0D000C00FF000B070A7CA1
675:102A20000D000C00FF000B070A7E0D000C00FF00DC
676:102A30000B000A000D010C1CFF000B070A7C0D00A7
677:102A40000C00FF000B070A7E0D000C00FF000B07B7
678:102A50000A440D000C00FF000B000A440D010C009D
679:102A6000FF000B070A440D000C00FF000B070A4291
680:102A70000D000C00FF000B070A430D000C00FF00C7
681:102A80000B000A420D010C1AFF000B000A430D0156
682:102A90000C20FF000B070A420D000C00FF000B0783
683:102AA0000A430D000C00FF000B070A400D000C004C
684:102AB000FF000B070A410D000C00FF000B010A404C
685:102AC0000D020C40FF000B010A410D020C60FF00DB
686:102AD0000B070A400D000C00FF000B070A410D0018
687:102AE0000C00FF000B070A440D0F0CFFFF000B0743
688:102AF0000A420D000C00FF000B070A430D000C00FA
689:102B0000FF000B070A400D000C00FF000B070A41F5
690:102B10000D000C00FF000B070A510D060C40FF00D2
691:102B20000B070A500D060C40FF000B070A4F0D0360
692:102B30000C81FF000B070A530D1A0C76FF000B07E0
693:102B40000A540D0D0C8BFF000B070A550D040CE900
694:102B5000FF000B070A560D0B0C17FF000B070A5757
695:102B60000D1A0C38FF000B070A580D0D0CC9FF0099
696:102B70000B070A590D040C6FFF000B070A5A0D0BC7
697:102B80000C91FF000B070A730D140CDAFF000B0702
698:102B90000A740D0D0C93FF000B070A750D040CD978
699:102BA000FF000B070A760D050C93FF000B070A7751
700:102BB0000D140CDAFF000B070A780D0D0C93FF00C3
701:102BC0000B070A790D040CD9FF000B070A7A0D05D3
702:102BD0000C93FF000B070A5E0D030C68FF000B0748
703:102BE0000A5C0D040C31FF000B070A5D0D040C316B
704:102BF000FF000B070A620D030C52FF000B070A606F
705:102C00000D040C76FF000B070A610D040C76FF0023
706:102C10000B070A660D030C2EFF000B070A640D0458
707:102C20000CDAFF000B070A650D040CDAFF000B0736
708:102C30000A6A0D020CF6FF000B070A680D050C620C
709:102C4000FF000B070A690D050C62FF000B060A4620
710:102C50000D0A0C22FF000B060A480D0D0C24FF0084
711:102C60000B060A6E0D110CD3FF000B060A700D1532
712:102C70000CCBFF000B060A520D200C93FF000B0635
713:102C80000A540D200C54FF000B060A4A0D270C1D98
714:102C9000FF000B060A580D2F0CC8FF000B060A5C3C
715:102CA0000D300C07FF000B060A4C0D370C90FF008F
716:102CB0000B060A600D3D0CDBFF000B060A640D3E9F
717:102CC0000C42FF000B060A4E0D450C78FF000B0668
718:102CD0000A680D4C0C48FF000B060A6C0D4C0C6C7E
719:102CE000FF000B060A500D520CE2FF000B060A42D1
720:102CF0000D020CBAFF00FF000E1E0F14FF000EDEC7
721:102D00000F20FF000EDF0F20FF000B060A780D00DA
722:102D10000C40FF000B070A030D0F0CFFFF000B0711
723:102D20000A0B0D0F0CFFFF000B070A020D000C0031
724:102D3000FF000B070A0A0D000C00FF000B070A46F4
725:102D40000D000C00FF000B070A490D000C000905DF
726:102D50000B000A100D000C00FF000D000C00FF001E
727:102D60000D020C00FF000D000C00FF000D000C0018
728:102D7000FF000D000C00FF000D000C00FF000D0017
729:102D80000C00FF000D000C00FF000D000C00FF0008
730:102D90000D000C00FF000D000C00FF000D000C00EA
731:102DA000FF000D000C00FF000D000C00FF000D00E7
732:102DB0000C00FF000D000C00FF000D000C00FF00D8
733:102DC0000D000C00FF000D000C00FF000D000C00BA
734:102DD000FF000D000C00FF000D000C00FF000D00B7
735:102DE0000C00FF000D000C00FF000D000C00FF00A8
736:102DF0000D000C00FF000D000C00FF000D000C008A
737:102E0000FF000D000C00FF000D000C00FF000D0086
738:102E10000C00FF000D000C00FF000D000C00FF0077
739:102E20000D000C00FF000D000C00FF000D000C0059
740:102E3000FF000D000C00FF000D000C00FF000D0056
741:102E40000C00FF000D000C00FF000D000C00FF0047
742:102E50000D000C00FF000D000C00FF000D000C0029
743:102E6000FF000D000C00FF000D000C00FF000D0026
744:102E70000C00FF0009050B010A100D010CC0FF003A
745:102E80000D010CFAFF000D000C1AFF000D000C00E4
746:102E9000FF000D000C00FF000D000C00FF000D00F6
747:102EA0000C00FF000D000C00FF000D000C00FF00E7
748:102EB0000D000C00FF000D000C00FF000D000C00C9
749:102EC000FF000D000C00FF000D000C00FF000D00C6
750:102ED0000C00FF000D000C00FF000D000C00FF00B7
751:102EE0000D000C00FF000D000C00FF000D000C0099
752:102EF000FF000D000C00FF000D000C00FF000D0096
753:102F00000C00FF000D000C00FF000D000C00FF0086
754:102F10000D000C00FF000D000C00FF000D000C0068
755:102F2000FF000D000C00FF000D000C00FF000D0065
756:102F30000C00FF000D000C00FF000D000C00FF0056
757:102F40000D000C00FF000D000C00FF000D000C0038
758:102F5000FF000D000C00FF000D000C00FF000D0035
759:102F60000C00FF000D000C00FF000D000C00FF0026
760:102F70000D000C00FF000D000C00FF000D000C0008
761:102F8000FF000D000C00FF000D000C00FF000D0005
762:102F90000C00FF000D000C00FF00FF00FF00090502
763:102FA0000B020A100C46FF000C46FF000C00FF004D
764:102FB0000C00FF000C00FF000C00FF000C00FF00E5
765:102FC0000C00FF000C00FF000C00FF000C00FF00D5
766:102FD0000C00FF000C00FF000C00FF000C00FF00C5
767:102FE0000C00FF000C00FF000C00FF000C00FF00B5
768:102FF0000C00FF000C00FF000C00FF000C00FF00A5
769:103000000C00FF000C00FF000C00FF000C00FF0094
770:103010000C00FF000C00FF000C00FF000C00FF0084
771:103020000C00FF000C00FF000C00FF000C00FF0074
772:103030000C00FF000C00FF000C00FF000C00FF0064
773:103040000C00FF000C00FF000C00FF000C00FF0054
774:103050000C00FF000C00FF000C00FF000C00FF0044
775:103060000C00FF0009050B030A100C00FF000C0008
776:10307000FF000C00FF000C00FF000C00FF000C0024
777:10308000FF000C00FF000C00FF000C00FF000C0014
778:10309000FF000C00FF000C00FF000C00FF000C0004
779:1030A000FF000C00FF000C00FF000C00FF000C00F4
780:1030B000FF000C00FF000C00FF000C00FF000C00E4
781:1030C000FF000C00FF000C00FF000C00FF000C00D4
782:1030D000FF000C00FF000C00FF000C00FF000C00C4
783:1030E000FF000C00FF000C00FF000C00FF000C00B4
784:1030F000FF000C00FF000C00FF000C00FF000C00A4
785:10310000FF000C00FF000C00FF000C00FF000C0093
786:10311000FF000C00FF000C00FF000C00FF000C0083
787:10312000FF000C00FF000C00FF0009050B040A1053
788:103130000C00FF000C00FF000C00FF000C00FF0063
789:103140000C00FF000C00FF000C00FF000C00FF0053
790:103150000C00FF000C00FF000C00FF000C00FF0043
791:103160000C00FF000C00FF000C00FF000C00FF0033
792:103170000C00FF000C00FF000C00FF000C00FF0023
793:103180000C00FF000C00FF000C00FF000C00FF0013
794:103190000C00FF000C00FF000C00FF000C00FF0003
795:1031A0000C00FF000C00FF000C00FF000C00FF00F3
796:1031B0000C00FF000C00FF000C00FF000C00FF00E3
797:1031C0000C00FF000C00FF000C00FF000C00FF00D3
798:1031D0000C00FF000C00FF000C00FF000C00FF00C3
799:1031E0000C00FF000C00FF000C00FF000C00FF00B3
800:1031F00009010B060A100D000C00FF000A120D0059
801:103200000C00FF000A140D000C00FF000A160D0050
802:103210000C00FF000A180D000C00FF000A1A0D0038
803:103220000C00FF000A1C0D000C00FF000A1E0D0020
804:103230000C00FF000A200D000C00FF000A220D0008
805:103240000C00FF000A240D000C00FF000A260D00F0
806:103250000C00FF000A280D000C00FF000A2A0D00D8
807:103260000C00FF000A2C0D000C00FF000A2E0D00C0
808:103270000C00FF000A300D000C00FF000A320D00A8
809:103280000C00FF000A340D000C00FF000A360D0090
810:103290000C00FF000A380D000C00FF000A3A0D0078
811:1032A0000C00FF000A3C0D000C00FF000A3E0D0060
812:1032B0000C00FF0009050B070A100D0F0CFFFF00A3
813:1032C0000D0F0CFFFF000D000C00FF000D000C00A7
814:1032D000FF000D000C00FF000D000C00FF000D00B2
815:1032E0000C00FF000D000C00FF000D000C00FF00A3
816:1032F0000D000C00FF000D000C00FF000D000C0085
817:10330000FF000D000C00FF000D000C00FF000D0081
818:103310000C00FF000D000C00FF000D000C00FF0072
819:103320000D000C00FF000D000C00FF000D000C0054
820:10333000FF000D000C00FF000D000C00FF000D0051
821:103340000C00FF000D000C00FF000D000C00FF0042
822:103350000D000C00FF000D000C00FF000D000C0024
823:10336000FF000D000C00FF000D000C00FF000D0021
824:103370000C00FF000D000C00FF000D000C00FF0012
825:103380000D000C00FF000D000C00FF000D000C00F4
826:10339000FF000D000C00FF000D000C00FF000D00F1
827:1033A0000C00FF000D000C00FF000D000C00FF00E2
828:1033B0000D000C00FF000D000C00FF000D000C00C4
829:1033C000FF000D000C00FF000D000C00FF000D00C1
830:1033D0000C00FF000D000C00FF000E010F00FF00AD
831:1033E0000E020F00FF000E010F01FF000E020F0082
832:1033F000FF000E010F02FF000E020F00FF000E0182
833:103400000F03FF000E020F00FF000E010F04FF006C
834:103410000E020F00FF000E010F05FF000E020F004D
835:10342000FF000E010F06FF000E020F00FF000E014D
836:103430000F07FF000E020F00FF000EB00F20FF006D
837:103440000EB10F20FF000EB20F20FF000EB30F20B1
838:10345000FF000EB40F20FF000EB50F20FF000EB6C8
839:103460000F20FF000EB70F20FF000EF00F20FF000F
840:103470000EF10F20FF000EF20F20FF000EF30F20C1
841:10348000FF000EF40F20FF000EF50F20FF000EF6D8
842:103490000F20FF000EF70F20FF000E100FFFFF00A0
843:1034A0000E110FFFFF000E120FFFFF000E130FFF94
844:1034B000FF000E140FFFFF000E150FFFFF000E168A
845:1034C0000FFFFF000E170FFFFF000E200FFFFF0082
846:1034D0000E210FFFFF000E220FFFFF000E230FFF34
847:1034E000FF000E240FFFFF000E250FFFFF000E262A
848:1034F0000FFFFF000E270FFFFF000E300F00FF0031
849:103500000E310F00FF000E320F00FF000E330F00D0
850:10351000FF000E340F00FF000E350F00FF000E36C7
851:103520000F00FF000E370F00FF000E400F00FF00DE
852:103530000E410F00FF000E420F00FF000E430F0070
853:10354000FF000E440F00FF000E450F00FF000E4667
854:103550000F00FF000E470F00FF000E500F00FF008E
855:103560000E510F00FF000E520F00FF000E530F0010
856:10357000FF000E540F00FF000E550F00FF000E5607
857:103580000F00FF000E570F00FF000E600F00FF003E
858:103590000E610F00FF000E620F00FF000E630F00B0
859:1035A000FF000E640F00FF000E650F00FF000E66A7
860:1035B0000F00FF000E670F00FF000E700FC0FF002E
861:1035C0000E710FC0FF000E720FC0FF000E730FC010
862:1035D000FF000E740FC0FF000E750FC0FF000E76C7
863:1035E0000FC0FF000E770FC0FF000E800F00FF001E
864:1035F0000E810F00FF000E820F00FF000E830F00F0
865:10360000FF000E840F00FF000E850F00FF000E86E6
866:103610000F00FF000E870F00FF000E900F00FF004D
867:103620000E910F00FF000E920F00FF000E930F008F
868:10363000FF000E940F00FF000E950F00FF000E9686
869:103640000F00FF000E970F00FF000EA00F00FF00FD
870:103650000EA10F00FF000EA20F00FF000EA30F002F
871:10366000FF000EA40F00FF000EA50F00FF000EA626
872:103670000F00FF000EA70F00FF000EC00F00FF009D
873:103680000EC10F00FF000EC20F00FF000EC30F009F
874:10369000FF000EC40F00FF000EC50F00FF000EC696
875:1036A0000F00FF000EC70F00FF000ED00F00FF003D
876:1036B0000ED10F00FF000ED20F00FF000ED30F003F
877:1036C000FF000ED40F00FF000ED50F00FF000ED636
878:1036D0000F00FF000ED70F00FF000EE00F00FF00ED
879:1036E0000EE10F00FF000EE20F00FF000EE30F00DF
880:1036F000FF000EE40F00FF000EE50F00FF000EE6D6
881:103700000F00FF000EE70F00FF000E010F00FF008B
882:103710000E020F01FF000E010F01FF000E020F014C
883:10372000FF000E010F02FF000E020F01FF000E014D
884:103730000F03FF000E020F01FF000E010F04FF0038
885:103740000E020F01FF000E010F05FF000E020F0118
886:10375000FF000E010F06FF000E020F01FF000E0119
887:103760000F07FF000E020F01FF000B070A460D00B6
888:103770000C00FF000B070A490D000C00FF000B07AF
889:103780000A450D0F0CFFFF000B070A480D0F0CFF39
890:10379000FF000B070A7B0D040CCCFF000B070A7D12
891:1037A0000D040CCCFF000B070A7C0D000C00FF0081
892:1037B0000B070A7E0D000C00FF000B070A460D00E8
893:1037C0000C00FF000B070A490D000C00FF000B075F
894:1037D0000A470D000C00FF000B070A4A0D000C0001
895:1037E000FF000B070A4C0D000C00FF000B070A4EF0
896:1037F0000D000C00FF000B070A4C0D000C000B071E
897:103800000A4E0D000C000B070A4C0D000C280B078C
898:103810000A4E0D000C280B070A4C0D000C510B072B
899:103820000A4E0D000C510B070A4C0D000C7A0B07C9
900:103830000A4E0D000C7A0B070A4C0D000CA30B0767
901:103840000A4E0D000CA30B070A4C0D000CCC0B0705
902:103850000A4E0D000CCC0B070A4C0D000CF50B07A3
903:103860000A4E0D000CF50B070A4C0D010C1E0B0740
904:103870000A4E0D010C1E0B070A4C0D010C470B07DD
905:103880000A4E0D010C470B070A4C0D010C700B077B
906:103890000A4E0D010C700B070A4C0D010C990B0719
907:1038A0000A4E0D010C990B070A4C0D010CC20B07B7
908:1038B0000A4E0D010CC20B070A4C0D010CEB0B0755
909:1038C0000A4E0D010CEB0B070A4C0D020C140B07F2
910:1038D0000A4E0D020C140B070A4C0D020C3D0B078F
911:1038E0000A4E0D020C3D0B070A4C0D020C660B072D
912:1038F0000A4E0D020C660B070A4C0D020C8F0B07CB
913:103900000A4E0D020C8F0B070A4C0D020CB80B0768
914:103910000A4E0D020CB80B070A4C0D020CE10B0706
915:103920000A4E0D020CE10B070A4C0D030C0A0B07A3
916:103930000A4E0D030C0A0B070A4C0D030C330B0740
917:103940000A4E0D030C330B070A4C0D030C5C0B07DE
918:103950000A4E0D030C5C0B070A4C0D030C850B077C
919:103960000A4E0D030C850B070A4C0D030CAE0B071A
920:103970000A4E0D030CAE0B070A4C0D030CD70B07B8
921:103980000A4E0D030CD70B070A4C0D040C000B0755
922:103990000A4E0D040C000B070A4C0D040C280B07F3
923:1039A0000A4E0D040C280B070A4C0D040C510B0792
924:1039B0000A4E0D040C510B070A4C0D040C7A0B0730
925:1039C0000A4E0D040C7A0B070A4C0D040CA30B07CE
926:1039D0000A4E0D040CA30B070A4C0D040CCC0B076C
927:1039E0000A4E0D040CCC0B070A4C0D040CF50B070A
928:1039F0000A4E0D040CF50B070A4C0D050C1E0B07A7
929:103A00000A4E0D050C1E0B070A4C0D050C470B0743
930:103A10000A4E0D050C470B070A4C0D050C700B07E1
931:103A20000A4E0D050C700B070A4C0D050C990B077F
932:103A30000A4E0D050C990B070A4C0D050CC20B071D
933:103A40000A4E0D050CC20B070A4C0D050CEB0B07BB
934:103A50000A4E0D050CEB0B070A4C0D060C140B0758
935:103A60000A4E0D060C140B070A4C0D060C3D0B07F5
936:103A70000A4E0D060C3D0B070A4C0D060C660B0793
937:103A80000A4E0D060C660B070A4C0D060C8F0B0731
938:103A90000A4E0D060C8F0B070A4C0D060CB80B07CF
939:103AA0000A4E0D060CB80B070A4C0D060CE10B076D
940:103AB0000A4E0D060CE10B070A4C0D070C0A0B070A
941:103AC0000A4E0D070C0A0B070A4C0D070C330B07A7
942:103AD0000A4E0D070C330B070A4C0D070C5C0B0745
943:103AE0000A4E0D070C5C0B070A4C0D070C850B07E3
944:103AF0000A4E0D070C850B070A4C0D070CAE0B0781
945:103B00000A4E0D070CAE0B070A4C0D070CD70B071E
946:103B10000A4E0D070CD70B070A4C0D080C000B07BB
947:103B20000A4E0D080C000B070A4C0D080C280B0759
948:103B30000A4E0D080C280B070A4C0D080C510B07F8
949:103B40000A4E0D080C510B070A4C0D080C7A0B0796
950:103B50000A4E0D080C7A0B070A4C0D080CA30B0734
951:103B60000A4E0D080CA30B070A4C0D080CCC0B07D2
952:103B70000A4E0D080CCC0B070A4C0D080CF50B0770
953:103B80000A4E0D080CF50B070A4C0D090C1E0B070D
954:103B90000A4E0D090C1E0B070A4C0D090C470B07AA
955:103BA0000A4E0D090C470B070A4C0D090C700B0748
956:103BB0000A4E0D090C700B070A4C0D090C990B07E6
957:103BC0000A4E0D090C990B070A4C0D090CC20B0784
958:103BD0000A4E0D090CC20B070A4C0D090CEB0B0722
959:103BE0000A4E0D090CEB0B070A4C0D0A0C140B07BF
960:103BF0000A4E0D0A0C140B070A4C0D0A0C3D0B075C
961:103C00000A4E0D0A0C3D0B070A4C0D0A0C660B07F9
962:103C10000A4E0D0A0C660B070A4C0D0A0C8F0B0797
963:103C20000A4E0D0A0C8F0B070A4C0D0A0CB80B0735
964:103C30000A4E0D0A0CB80B070A4C0D0A0CE10B07D3
965:103C40000A4E0D0A0CE10B070A4C0D0B0C0A0B0770
966:103C50000A4E0D0B0C0A0B070A4C0D0B0C330B070D
967:103C60000A4E0D0B0C330B070A4C0D0B0C5C0B07AB
968:103C70000A4E0D0B0C5C0B070A4C0D0B0C850B0749
969:103C80000A4E0D0B0C850B070A4C0D0B0CAE0B07E7
970:103C90000A4E0D0B0CAE0B070A4C0D0B0CD70B0785
971:103CA0000A4E0D0B0CD70B070A4C0D0C0C000B0722
972:103CB0000A4E0D0C0C000B070A4C0D0C0C280B07C0
973:103CC0000A4E0D0C0C280B070A4C0D0C0C510B075F
974:103CD0000A4E0D0C0C510B070A4C0D0C0C7A0B07FD
975:103CE0000A4E0D0C0C7A0B070A4C0D0C0CA30B079B
976:103CF0000A4E0D0C0CA30B070A4C0D0C0CCC0B0739
977:103D00000A4E0D0C0CCC0B070A4C0D0C0CF50B07D6
978:103D10000A4E0D0C0CF50B070A4C0D0D0C1E0B0773
979:103D20000A4E0D0D0C1E0B070A4C0D0D0C470B0710
980:103D30000A4E0D0D0C470B070A4C0D0D0C700B07AE
981:103D40000A4E0D0D0C700B070A4C0D0D0C990B074C
982:103D50000A4E0D0D0C990B070A4C0D0D0CC20B07EA
983:103D60000A4E0D0D0CC20B070A4C0D0D0CEB0B0788
984:103D70000A4E0D0D0CEB0B070A4C0D0E0C140B0725
985:103D80000A4E0D0E0C140B070A4C0D0E0C3D0B07C2
986:103D90000A4E0D0E0C3D0B070A4C0D0E0C660B0760
987:103DA0000A4E0D0E0C660B070A4C0D0E0C8F0B07FE
988:103DB0000A4E0D0E0C8F0B070A4C0D0E0CB80B079C
989:103DC0000A4E0D0E0CB80B070A4C0D0E0CE10B073A
990:103DD0000A4E0D0E0CE10B070A4C0D0F0C0A0B07D7
991:103DE0000A4E0D0F0C0A0B070A4C0D0F0C330B0774
992:103DF0000A4E0D0F0C330B070A4C0D0F0C5C0B0712
993:103E00000A4E0D0F0C5C0B070A4C0D0F0C850B07AF
994:103E10000A4E0D0F0C850B070A4C0D0F0CAE0B074D
995:103E20000A4E0D0F0CAE0B070A4C0D0F0CD70B07EB
996:103E30000A4E0D0F0CD70B070A4C0D0F0CFF0B078A
997:0A3E40000A4E0D0F0CFF0800FF00F2
998:00000001FF
diff --git a/fs/afs/file.c b/fs/afs/file.c
index 7a1d942ef68d..0149dab365e7 100644
--- a/fs/afs/file.c
+++ b/fs/afs/file.c
@@ -102,6 +102,7 @@ int afs_release(struct inode *inode, struct file *file)
102 return 0; 102 return 0;
103} 103}
104 104
105#ifdef CONFIG_AFS_FSCACHE
105/* 106/*
106 * deal with notification that a page was read from the cache 107 * deal with notification that a page was read from the cache
107 */ 108 */
@@ -117,6 +118,7 @@ static void afs_file_readpage_read_complete(struct page *page,
117 SetPageUptodate(page); 118 SetPageUptodate(page);
118 unlock_page(page); 119 unlock_page(page);
119} 120}
121#endif
120 122
121/* 123/*
122 * AFS read page from file, directory or symlink 124 * AFS read page from file, directory or symlink
diff --git a/fs/afs/netdevices.c b/fs/afs/netdevices.c
index 49f189423063..7ad36506c256 100644
--- a/fs/afs/netdevices.c
+++ b/fs/afs/netdevices.c
@@ -20,8 +20,7 @@ int afs_get_MAC_address(u8 *mac, size_t maclen)
20 struct net_device *dev; 20 struct net_device *dev;
21 int ret = -ENODEV; 21 int ret = -ENODEV;
22 22
23 if (maclen != ETH_ALEN) 23 BUG_ON(maclen != ETH_ALEN);
24 BUG();
25 24
26 rtnl_lock(); 25 rtnl_lock();
27 dev = __dev_getfirstbyhwtype(&init_net, ARPHRD_ETHER); 26 dev = __dev_getfirstbyhwtype(&init_net, ARPHRD_ETHER);
diff --git a/fs/autofs/dirhash.c b/fs/autofs/dirhash.c
index bf8c8af98004..4eb4d8dfb2f1 100644
--- a/fs/autofs/dirhash.c
+++ b/fs/autofs/dirhash.c
@@ -39,10 +39,12 @@ struct autofs_dir_ent *autofs_expire(struct super_block *sb,
39{ 39{
40 struct autofs_dirhash *dh = &sbi->dirhash; 40 struct autofs_dirhash *dh = &sbi->dirhash;
41 struct autofs_dir_ent *ent; 41 struct autofs_dir_ent *ent;
42 struct dentry *dentry;
43 unsigned long timeout = sbi->exp_timeout; 42 unsigned long timeout = sbi->exp_timeout;
44 43
45 while (1) { 44 while (1) {
45 struct path path;
46 int umount_ok;
47
46 if ( list_empty(&dh->expiry_head) || sbi->catatonic ) 48 if ( list_empty(&dh->expiry_head) || sbi->catatonic )
47 return NULL; /* No entries */ 49 return NULL; /* No entries */
48 /* We keep the list sorted by last_usage and want old stuff */ 50 /* We keep the list sorted by last_usage and want old stuff */
@@ -57,17 +59,17 @@ struct autofs_dir_ent *autofs_expire(struct super_block *sb,
57 return ent; /* Symlinks are always expirable */ 59 return ent; /* Symlinks are always expirable */
58 60
59 /* Get the dentry for the autofs subdirectory */ 61 /* Get the dentry for the autofs subdirectory */
60 dentry = ent->dentry; 62 path.dentry = ent->dentry;
61 63
62 if ( !dentry ) { 64 if (!path.dentry) {
63 /* Should only happen in catatonic mode */ 65 /* Should only happen in catatonic mode */
64 printk("autofs: dentry == NULL but inode range is directory, entry %s\n", ent->name); 66 printk("autofs: dentry == NULL but inode range is directory, entry %s\n", ent->name);
65 autofs_delete_usage(ent); 67 autofs_delete_usage(ent);
66 continue; 68 continue;
67 } 69 }
68 70
69 if ( !dentry->d_inode ) { 71 if (!path.dentry->d_inode) {
70 dput(dentry); 72 dput(path.dentry);
71 printk("autofs: negative dentry on expiry queue: %s\n", 73 printk("autofs: negative dentry on expiry queue: %s\n",
72 ent->name); 74 ent->name);
73 autofs_delete_usage(ent); 75 autofs_delete_usage(ent);
@@ -76,29 +78,29 @@ struct autofs_dir_ent *autofs_expire(struct super_block *sb,
76 78
77 /* Make sure entry is mounted and unused; note that dentry will 79 /* Make sure entry is mounted and unused; note that dentry will
78 point to the mounted-on-top root. */ 80 point to the mounted-on-top root. */
79 if (!S_ISDIR(dentry->d_inode->i_mode)||!d_mountpoint(dentry)) { 81 if (!S_ISDIR(path.dentry->d_inode->i_mode) ||
82 !d_mountpoint(path.dentry)) {
80 DPRINTK(("autofs: not expirable (not a mounted directory): %s\n", ent->name)); 83 DPRINTK(("autofs: not expirable (not a mounted directory): %s\n", ent->name));
81 continue; 84 continue;
82 } 85 }
83 mntget(mnt); 86 path.mnt = mnt;
84 dget(dentry); 87 path_get(&path);
85 if (!follow_down(&mnt, &dentry)) { 88 if (!follow_down(&path.mnt, &path.dentry)) {
86 dput(dentry); 89 path_put(&path);
87 mntput(mnt);
88 DPRINTK(("autofs: not expirable (not a mounted directory): %s\n", ent->name)); 90 DPRINTK(("autofs: not expirable (not a mounted directory): %s\n", ent->name));
89 continue; 91 continue;
90 } 92 }
91 while (d_mountpoint(dentry) && follow_down(&mnt, &dentry)) 93 while (d_mountpoint(path.dentry) &&
94 follow_down(&path.mnt, &path.dentry))
92 ; 95 ;
93 dput(dentry); 96 umount_ok = may_umount(path.mnt);
97 path_put(&path);
94 98
95 if ( may_umount(mnt) ) { 99 if (umount_ok) {
96 mntput(mnt);
97 DPRINTK(("autofs: signaling expire on %s\n", ent->name)); 100 DPRINTK(("autofs: signaling expire on %s\n", ent->name));
98 return ent; /* Expirable! */ 101 return ent; /* Expirable! */
99 } 102 }
100 DPRINTK(("autofs: didn't expire due to may_umount: %s\n", ent->name)); 103 DPRINTK(("autofs: didn't expire due to may_umount: %s\n", ent->name));
101 mntput(mnt);
102 } 104 }
103 return NULL; /* No expirable entries */ 105 return NULL; /* No expirable entries */
104} 106}
diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c
index 9e5ae8a4f5c8..84168c0dcc2d 100644
--- a/fs/autofs4/dev-ioctl.c
+++ b/fs/autofs4/dev-ioctl.c
@@ -54,11 +54,10 @@ static int check_name(const char *name)
54 * Check a string doesn't overrun the chunk of 54 * Check a string doesn't overrun the chunk of
55 * memory we copied from user land. 55 * memory we copied from user land.
56 */ 56 */
57static int invalid_str(char *str, void *end) 57static int invalid_str(char *str, size_t size)
58{ 58{
59 while ((void *) str <= end) 59 if (memchr(str, 0, size))
60 if (!*str++) 60 return 0;
61 return 0;
62 return -EINVAL; 61 return -EINVAL;
63} 62}
64 63
@@ -138,8 +137,7 @@ static int validate_dev_ioctl(int cmd, struct autofs_dev_ioctl *param)
138 } 137 }
139 138
140 if (param->size > sizeof(*param)) { 139 if (param->size > sizeof(*param)) {
141 err = invalid_str(param->path, 140 err = invalid_str(param->path, param->size - sizeof(*param));
142 (void *) ((size_t) param + param->size));
143 if (err) { 141 if (err) {
144 AUTOFS_WARN( 142 AUTOFS_WARN(
145 "path string terminator missing for cmd(0x%08x)", 143 "path string terminator missing for cmd(0x%08x)",
@@ -488,7 +486,7 @@ static int autofs_dev_ioctl_requester(struct file *fp,
488 } 486 }
489 487
490 path = param->path; 488 path = param->path;
491 devid = sbi->sb->s_dev; 489 devid = new_encode_dev(sbi->sb->s_dev);
492 490
493 param->requester.uid = param->requester.gid = -1; 491 param->requester.uid = param->requester.gid = -1;
494 492
diff --git a/fs/befs/super.c b/fs/befs/super.c
index 41f2b4d0093e..ca40f828f64d 100644
--- a/fs/befs/super.c
+++ b/fs/befs/super.c
@@ -8,6 +8,7 @@
8 */ 8 */
9 9
10#include <linux/fs.h> 10#include <linux/fs.h>
11#include <asm/page.h> /* for PAGE_SIZE */
11 12
12#include "befs.h" 13#include "befs.h"
13#include "super.h" 14#include "super.h"
diff --git a/fs/bio.c b/fs/bio.c
index e0c9e545bbfa..7bbc98f0eda1 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -175,14 +175,6 @@ struct bio_vec *bvec_alloc_bs(gfp_t gfp_mask, int nr, unsigned long *idx,
175 struct bio_vec *bvl; 175 struct bio_vec *bvl;
176 176
177 /* 177 /*
178 * If 'bs' is given, lookup the pool and do the mempool alloc.
179 * If not, this is a bio_kmalloc() allocation and just do a
180 * kzalloc() for the exact number of vecs right away.
181 */
182 if (!bs)
183 bvl = kmalloc(nr * sizeof(struct bio_vec), gfp_mask);
184
185 /*
186 * see comment near bvec_array define! 178 * see comment near bvec_array define!
187 */ 179 */
188 switch (nr) { 180 switch (nr) {
@@ -260,21 +252,6 @@ void bio_free(struct bio *bio, struct bio_set *bs)
260 mempool_free(p, bs->bio_pool); 252 mempool_free(p, bs->bio_pool);
261} 253}
262 254
263/*
264 * default destructor for a bio allocated with bio_alloc_bioset()
265 */
266static void bio_fs_destructor(struct bio *bio)
267{
268 bio_free(bio, fs_bio_set);
269}
270
271static void bio_kmalloc_destructor(struct bio *bio)
272{
273 if (bio_has_allocated_vec(bio))
274 kfree(bio->bi_io_vec);
275 kfree(bio);
276}
277
278void bio_init(struct bio *bio) 255void bio_init(struct bio *bio)
279{ 256{
280 memset(bio, 0, sizeof(*bio)); 257 memset(bio, 0, sizeof(*bio));
@@ -301,21 +278,15 @@ void bio_init(struct bio *bio)
301 **/ 278 **/
302struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs) 279struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs)
303{ 280{
281 unsigned long idx = BIO_POOL_NONE;
304 struct bio_vec *bvl = NULL; 282 struct bio_vec *bvl = NULL;
305 struct bio *bio = NULL; 283 struct bio *bio;
306 unsigned long idx = 0; 284 void *p;
307 void *p = NULL; 285
308 286 p = mempool_alloc(bs->bio_pool, gfp_mask);
309 if (bs) { 287 if (unlikely(!p))
310 p = mempool_alloc(bs->bio_pool, gfp_mask); 288 return NULL;
311 if (!p) 289 bio = p + bs->front_pad;
312 goto err;
313 bio = p + bs->front_pad;
314 } else {
315 bio = kmalloc(sizeof(*bio), gfp_mask);
316 if (!bio)
317 goto err;
318 }
319 290
320 bio_init(bio); 291 bio_init(bio);
321 292
@@ -332,22 +303,33 @@ struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs)
332 303
333 nr_iovecs = bvec_nr_vecs(idx); 304 nr_iovecs = bvec_nr_vecs(idx);
334 } 305 }
306out_set:
335 bio->bi_flags |= idx << BIO_POOL_OFFSET; 307 bio->bi_flags |= idx << BIO_POOL_OFFSET;
336 bio->bi_max_vecs = nr_iovecs; 308 bio->bi_max_vecs = nr_iovecs;
337out_set:
338 bio->bi_io_vec = bvl; 309 bio->bi_io_vec = bvl;
339
340 return bio; 310 return bio;
341 311
342err_free: 312err_free:
343 if (bs) 313 mempool_free(p, bs->bio_pool);
344 mempool_free(p, bs->bio_pool);
345 else
346 kfree(bio);
347err:
348 return NULL; 314 return NULL;
349} 315}
350 316
317static void bio_fs_destructor(struct bio *bio)
318{
319 bio_free(bio, fs_bio_set);
320}
321
322/**
323 * bio_alloc - allocate a new bio, memory pool backed
324 * @gfp_mask: allocation mask to use
325 * @nr_iovecs: number of iovecs
326 *
327 * Allocate a new bio with @nr_iovecs bvecs. If @gfp_mask
328 * contains __GFP_WAIT, the allocation is guaranteed to succeed.
329 *
330 * RETURNS:
331 * Pointer to new bio on success, NULL on failure.
332 */
351struct bio *bio_alloc(gfp_t gfp_mask, int nr_iovecs) 333struct bio *bio_alloc(gfp_t gfp_mask, int nr_iovecs)
352{ 334{
353 struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set); 335 struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set);
@@ -358,19 +340,45 @@ struct bio *bio_alloc(gfp_t gfp_mask, int nr_iovecs)
358 return bio; 340 return bio;
359} 341}
360 342
361/* 343static void bio_kmalloc_destructor(struct bio *bio)
362 * Like bio_alloc(), but doesn't use a mempool backing. This means that 344{
363 * it CAN fail, but while bio_alloc() can only be used for allocations 345 if (bio_integrity(bio))
364 * that have a short (finite) life span, bio_kmalloc() should be used 346 bio_integrity_free(bio);
365 * for more permanent bio allocations (like allocating some bio's for 347 kfree(bio);
366 * initalization or setup purposes). 348}
367 */ 349
350/**
351 * bio_alloc - allocate a bio for I/O
352 * @gfp_mask: the GFP_ mask given to the slab allocator
353 * @nr_iovecs: number of iovecs to pre-allocate
354 *
355 * Description:
356 * bio_alloc will allocate a bio and associated bio_vec array that can hold
357 * at least @nr_iovecs entries. Allocations will be done from the
358 * fs_bio_set. Also see @bio_alloc_bioset.
359 *
360 * If %__GFP_WAIT is set, then bio_alloc will always be able to allocate
361 * a bio. This is due to the mempool guarantees. To make this work, callers
362 * must never allocate more than 1 bio at the time from this pool. Callers
363 * that need to allocate more than 1 bio must always submit the previously
364 * allocate bio for IO before attempting to allocate a new one. Failure to
365 * do so can cause livelocks under memory pressure.
366 *
367 **/
368struct bio *bio_kmalloc(gfp_t gfp_mask, int nr_iovecs) 368struct bio *bio_kmalloc(gfp_t gfp_mask, int nr_iovecs)
369{ 369{
370 struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, NULL); 370 struct bio *bio;
371 371
372 if (bio) 372 bio = kmalloc(sizeof(struct bio) + nr_iovecs * sizeof(struct bio_vec),
373 bio->bi_destructor = bio_kmalloc_destructor; 373 gfp_mask);
374 if (unlikely(!bio))
375 return NULL;
376
377 bio_init(bio);
378 bio->bi_flags |= BIO_POOL_NONE << BIO_POOL_OFFSET;
379 bio->bi_max_vecs = nr_iovecs;
380 bio->bi_io_vec = bio->bi_inline_vecs;
381 bio->bi_destructor = bio_kmalloc_destructor;
374 382
375 return bio; 383 return bio;
376} 384}
@@ -814,7 +822,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
814 return ERR_PTR(-ENOMEM); 822 return ERR_PTR(-ENOMEM);
815 823
816 ret = -ENOMEM; 824 ret = -ENOMEM;
817 bio = bio_alloc(gfp_mask, nr_pages); 825 bio = bio_kmalloc(gfp_mask, nr_pages);
818 if (!bio) 826 if (!bio)
819 goto out_bmd; 827 goto out_bmd;
820 828
@@ -938,7 +946,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
938 if (!nr_pages) 946 if (!nr_pages)
939 return ERR_PTR(-EINVAL); 947 return ERR_PTR(-EINVAL);
940 948
941 bio = bio_alloc(gfp_mask, nr_pages); 949 bio = bio_kmalloc(gfp_mask, nr_pages);
942 if (!bio) 950 if (!bio)
943 return ERR_PTR(-ENOMEM); 951 return ERR_PTR(-ENOMEM);
944 952
@@ -1122,7 +1130,7 @@ static struct bio *__bio_map_kern(struct request_queue *q, void *data,
1122 int offset, i; 1130 int offset, i;
1123 struct bio *bio; 1131 struct bio *bio;
1124 1132
1125 bio = bio_alloc(gfp_mask, nr_pages); 1133 bio = bio_kmalloc(gfp_mask, nr_pages);
1126 if (!bio) 1134 if (!bio)
1127 return ERR_PTR(-ENOMEM); 1135 return ERR_PTR(-ENOMEM);
1128 1136
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c
index 51bfdfc8fcda..502c3d61de62 100644
--- a/fs/btrfs/async-thread.c
+++ b/fs/btrfs/async-thread.c
@@ -25,6 +25,7 @@
25#define WORK_QUEUED_BIT 0 25#define WORK_QUEUED_BIT 0
26#define WORK_DONE_BIT 1 26#define WORK_DONE_BIT 1
27#define WORK_ORDER_DONE_BIT 2 27#define WORK_ORDER_DONE_BIT 2
28#define WORK_HIGH_PRIO_BIT 3
28 29
29/* 30/*
30 * container for the kthread task pointer and the list of pending work 31 * container for the kthread task pointer and the list of pending work
@@ -36,6 +37,7 @@ struct btrfs_worker_thread {
36 37
37 /* list of struct btrfs_work that are waiting for service */ 38 /* list of struct btrfs_work that are waiting for service */
38 struct list_head pending; 39 struct list_head pending;
40 struct list_head prio_pending;
39 41
40 /* list of worker threads from struct btrfs_workers */ 42 /* list of worker threads from struct btrfs_workers */
41 struct list_head worker_list; 43 struct list_head worker_list;
@@ -103,10 +105,16 @@ static noinline int run_ordered_completions(struct btrfs_workers *workers,
103 105
104 spin_lock_irqsave(&workers->lock, flags); 106 spin_lock_irqsave(&workers->lock, flags);
105 107
106 while (!list_empty(&workers->order_list)) { 108 while (1) {
107 work = list_entry(workers->order_list.next, 109 if (!list_empty(&workers->prio_order_list)) {
108 struct btrfs_work, order_list); 110 work = list_entry(workers->prio_order_list.next,
109 111 struct btrfs_work, order_list);
112 } else if (!list_empty(&workers->order_list)) {
113 work = list_entry(workers->order_list.next,
114 struct btrfs_work, order_list);
115 } else {
116 break;
117 }
110 if (!test_bit(WORK_DONE_BIT, &work->flags)) 118 if (!test_bit(WORK_DONE_BIT, &work->flags))
111 break; 119 break;
112 120
@@ -143,8 +151,14 @@ static int worker_loop(void *arg)
143 do { 151 do {
144 spin_lock_irq(&worker->lock); 152 spin_lock_irq(&worker->lock);
145again_locked: 153again_locked:
146 while (!list_empty(&worker->pending)) { 154 while (1) {
147 cur = worker->pending.next; 155 if (!list_empty(&worker->prio_pending))
156 cur = worker->prio_pending.next;
157 else if (!list_empty(&worker->pending))
158 cur = worker->pending.next;
159 else
160 break;
161
148 work = list_entry(cur, struct btrfs_work, list); 162 work = list_entry(cur, struct btrfs_work, list);
149 list_del(&work->list); 163 list_del(&work->list);
150 clear_bit(WORK_QUEUED_BIT, &work->flags); 164 clear_bit(WORK_QUEUED_BIT, &work->flags);
@@ -163,7 +177,6 @@ again_locked:
163 177
164 spin_lock_irq(&worker->lock); 178 spin_lock_irq(&worker->lock);
165 check_idle_worker(worker); 179 check_idle_worker(worker);
166
167 } 180 }
168 if (freezing(current)) { 181 if (freezing(current)) {
169 worker->working = 0; 182 worker->working = 0;
@@ -178,7 +191,8 @@ again_locked:
178 * jump_in? 191 * jump_in?
179 */ 192 */
180 smp_mb(); 193 smp_mb();
181 if (!list_empty(&worker->pending)) 194 if (!list_empty(&worker->pending) ||
195 !list_empty(&worker->prio_pending))
182 continue; 196 continue;
183 197
184 /* 198 /*
@@ -191,7 +205,8 @@ again_locked:
191 */ 205 */
192 schedule_timeout(1); 206 schedule_timeout(1);
193 smp_mb(); 207 smp_mb();
194 if (!list_empty(&worker->pending)) 208 if (!list_empty(&worker->pending) ||
209 !list_empty(&worker->prio_pending))
195 continue; 210 continue;
196 211
197 if (kthread_should_stop()) 212 if (kthread_should_stop())
@@ -200,7 +215,8 @@ again_locked:
200 /* still no more work?, sleep for real */ 215 /* still no more work?, sleep for real */
201 spin_lock_irq(&worker->lock); 216 spin_lock_irq(&worker->lock);
202 set_current_state(TASK_INTERRUPTIBLE); 217 set_current_state(TASK_INTERRUPTIBLE);
203 if (!list_empty(&worker->pending)) 218 if (!list_empty(&worker->pending) ||
219 !list_empty(&worker->prio_pending))
204 goto again_locked; 220 goto again_locked;
205 221
206 /* 222 /*
@@ -248,6 +264,7 @@ void btrfs_init_workers(struct btrfs_workers *workers, char *name, int max)
248 INIT_LIST_HEAD(&workers->worker_list); 264 INIT_LIST_HEAD(&workers->worker_list);
249 INIT_LIST_HEAD(&workers->idle_list); 265 INIT_LIST_HEAD(&workers->idle_list);
250 INIT_LIST_HEAD(&workers->order_list); 266 INIT_LIST_HEAD(&workers->order_list);
267 INIT_LIST_HEAD(&workers->prio_order_list);
251 spin_lock_init(&workers->lock); 268 spin_lock_init(&workers->lock);
252 workers->max_workers = max; 269 workers->max_workers = max;
253 workers->idle_thresh = 32; 270 workers->idle_thresh = 32;
@@ -273,6 +290,7 @@ int btrfs_start_workers(struct btrfs_workers *workers, int num_workers)
273 } 290 }
274 291
275 INIT_LIST_HEAD(&worker->pending); 292 INIT_LIST_HEAD(&worker->pending);
293 INIT_LIST_HEAD(&worker->prio_pending);
276 INIT_LIST_HEAD(&worker->worker_list); 294 INIT_LIST_HEAD(&worker->worker_list);
277 spin_lock_init(&worker->lock); 295 spin_lock_init(&worker->lock);
278 atomic_set(&worker->num_pending, 0); 296 atomic_set(&worker->num_pending, 0);
@@ -396,7 +414,10 @@ int btrfs_requeue_work(struct btrfs_work *work)
396 goto out; 414 goto out;
397 415
398 spin_lock_irqsave(&worker->lock, flags); 416 spin_lock_irqsave(&worker->lock, flags);
399 list_add_tail(&work->list, &worker->pending); 417 if (test_bit(WORK_HIGH_PRIO_BIT, &work->flags))
418 list_add_tail(&work->list, &worker->prio_pending);
419 else
420 list_add_tail(&work->list, &worker->pending);
400 atomic_inc(&worker->num_pending); 421 atomic_inc(&worker->num_pending);
401 422
402 /* by definition we're busy, take ourselves off the idle 423 /* by definition we're busy, take ourselves off the idle
@@ -422,6 +443,11 @@ out:
422 return 0; 443 return 0;
423} 444}
424 445
446void btrfs_set_work_high_prio(struct btrfs_work *work)
447{
448 set_bit(WORK_HIGH_PRIO_BIT, &work->flags);
449}
450
425/* 451/*
426 * places a struct btrfs_work into the pending queue of one of the kthreads 452 * places a struct btrfs_work into the pending queue of one of the kthreads
427 */ 453 */
@@ -438,7 +464,12 @@ int btrfs_queue_worker(struct btrfs_workers *workers, struct btrfs_work *work)
438 worker = find_worker(workers); 464 worker = find_worker(workers);
439 if (workers->ordered) { 465 if (workers->ordered) {
440 spin_lock_irqsave(&workers->lock, flags); 466 spin_lock_irqsave(&workers->lock, flags);
441 list_add_tail(&work->order_list, &workers->order_list); 467 if (test_bit(WORK_HIGH_PRIO_BIT, &work->flags)) {
468 list_add_tail(&work->order_list,
469 &workers->prio_order_list);
470 } else {
471 list_add_tail(&work->order_list, &workers->order_list);
472 }
442 spin_unlock_irqrestore(&workers->lock, flags); 473 spin_unlock_irqrestore(&workers->lock, flags);
443 } else { 474 } else {
444 INIT_LIST_HEAD(&work->order_list); 475 INIT_LIST_HEAD(&work->order_list);
@@ -446,7 +477,10 @@ int btrfs_queue_worker(struct btrfs_workers *workers, struct btrfs_work *work)
446 477
447 spin_lock_irqsave(&worker->lock, flags); 478 spin_lock_irqsave(&worker->lock, flags);
448 479
449 list_add_tail(&work->list, &worker->pending); 480 if (test_bit(WORK_HIGH_PRIO_BIT, &work->flags))
481 list_add_tail(&work->list, &worker->prio_pending);
482 else
483 list_add_tail(&work->list, &worker->pending);
450 atomic_inc(&worker->num_pending); 484 atomic_inc(&worker->num_pending);
451 check_busy_worker(worker); 485 check_busy_worker(worker);
452 486
diff --git a/fs/btrfs/async-thread.h b/fs/btrfs/async-thread.h
index 31be4ed8b63e..1b511c109db6 100644
--- a/fs/btrfs/async-thread.h
+++ b/fs/btrfs/async-thread.h
@@ -85,6 +85,7 @@ struct btrfs_workers {
85 * of work items waiting for completion 85 * of work items waiting for completion
86 */ 86 */
87 struct list_head order_list; 87 struct list_head order_list;
88 struct list_head prio_order_list;
88 89
89 /* lock for finding the next worker thread to queue on */ 90 /* lock for finding the next worker thread to queue on */
90 spinlock_t lock; 91 spinlock_t lock;
@@ -98,4 +99,5 @@ int btrfs_start_workers(struct btrfs_workers *workers, int num_workers);
98int btrfs_stop_workers(struct btrfs_workers *workers); 99int btrfs_stop_workers(struct btrfs_workers *workers);
99void btrfs_init_workers(struct btrfs_workers *workers, char *name, int max); 100void btrfs_init_workers(struct btrfs_workers *workers, char *name, int max);
100int btrfs_requeue_work(struct btrfs_work *work); 101int btrfs_requeue_work(struct btrfs_work *work);
102void btrfs_set_work_high_prio(struct btrfs_work *work);
101#endif 103#endif
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index e5b2533b691a..a99f1c2a710d 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -1325,12 +1325,12 @@ static noinline int reada_for_balance(struct btrfs_root *root,
1325 int ret = 0; 1325 int ret = 0;
1326 int blocksize; 1326 int blocksize;
1327 1327
1328 parent = path->nodes[level - 1]; 1328 parent = path->nodes[level + 1];
1329 if (!parent) 1329 if (!parent)
1330 return 0; 1330 return 0;
1331 1331
1332 nritems = btrfs_header_nritems(parent); 1332 nritems = btrfs_header_nritems(parent);
1333 slot = path->slots[level]; 1333 slot = path->slots[level + 1];
1334 blocksize = btrfs_level_size(root, level); 1334 blocksize = btrfs_level_size(root, level);
1335 1335
1336 if (slot > 0) { 1336 if (slot > 0) {
@@ -1341,7 +1341,7 @@ static noinline int reada_for_balance(struct btrfs_root *root,
1341 block1 = 0; 1341 block1 = 0;
1342 free_extent_buffer(eb); 1342 free_extent_buffer(eb);
1343 } 1343 }
1344 if (slot < nritems) { 1344 if (slot + 1 < nritems) {
1345 block2 = btrfs_node_blockptr(parent, slot + 1); 1345 block2 = btrfs_node_blockptr(parent, slot + 1);
1346 gen = btrfs_node_ptr_generation(parent, slot + 1); 1346 gen = btrfs_node_ptr_generation(parent, slot + 1);
1347 eb = btrfs_find_tree_block(root, block2, blocksize); 1347 eb = btrfs_find_tree_block(root, block2, blocksize);
@@ -1351,7 +1351,11 @@ static noinline int reada_for_balance(struct btrfs_root *root,
1351 } 1351 }
1352 if (block1 || block2) { 1352 if (block1 || block2) {
1353 ret = -EAGAIN; 1353 ret = -EAGAIN;
1354
1355 /* release the whole path */
1354 btrfs_release_path(root, path); 1356 btrfs_release_path(root, path);
1357
1358 /* read the blocks */
1355 if (block1) 1359 if (block1)
1356 readahead_tree_block(root, block1, blocksize, 0); 1360 readahead_tree_block(root, block1, blocksize, 0);
1357 if (block2) 1361 if (block2)
@@ -1361,7 +1365,7 @@ static noinline int reada_for_balance(struct btrfs_root *root,
1361 eb = read_tree_block(root, block1, blocksize, 0); 1365 eb = read_tree_block(root, block1, blocksize, 0);
1362 free_extent_buffer(eb); 1366 free_extent_buffer(eb);
1363 } 1367 }
1364 if (block1) { 1368 if (block2) {
1365 eb = read_tree_block(root, block2, blocksize, 0); 1369 eb = read_tree_block(root, block2, blocksize, 0);
1366 free_extent_buffer(eb); 1370 free_extent_buffer(eb);
1367 } 1371 }
@@ -1481,12 +1485,15 @@ read_block_for_search(struct btrfs_trans_handle *trans,
1481 * of the btree by dropping locks before 1485 * of the btree by dropping locks before
1482 * we read. 1486 * we read.
1483 */ 1487 */
1484 btrfs_release_path(NULL, p); 1488 btrfs_unlock_up_safe(p, level + 1);
1489 btrfs_set_path_blocking(p);
1490
1485 if (tmp) 1491 if (tmp)
1486 free_extent_buffer(tmp); 1492 free_extent_buffer(tmp);
1487 if (p->reada) 1493 if (p->reada)
1488 reada_for_search(root, p, level, slot, key->objectid); 1494 reada_for_search(root, p, level, slot, key->objectid);
1489 1495
1496 btrfs_release_path(NULL, p);
1490 tmp = read_tree_block(root, blocknr, blocksize, gen); 1497 tmp = read_tree_block(root, blocknr, blocksize, gen);
1491 if (tmp) 1498 if (tmp)
1492 free_extent_buffer(tmp); 1499 free_extent_buffer(tmp);
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 92caa8035f36..a6b83744b05d 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -579,6 +579,10 @@ int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode,
579 async->bio_flags = bio_flags; 579 async->bio_flags = bio_flags;
580 580
581 atomic_inc(&fs_info->nr_async_submits); 581 atomic_inc(&fs_info->nr_async_submits);
582
583 if (rw & (1 << BIO_RW_SYNCIO))
584 btrfs_set_work_high_prio(&async->work);
585
582 btrfs_queue_worker(&fs_info->workers, &async->work); 586 btrfs_queue_worker(&fs_info->workers, &async->work);
583#if 0 587#if 0
584 int limit = btrfs_async_submit_limit(fs_info); 588 int limit = btrfs_async_submit_limit(fs_info);
@@ -656,6 +660,7 @@ static int btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,
656 return btrfs_map_bio(BTRFS_I(inode)->root, rw, bio, 660 return btrfs_map_bio(BTRFS_I(inode)->root, rw, bio,
657 mirror_num, 0); 661 mirror_num, 0);
658 } 662 }
663
659 /* 664 /*
660 * kthread helpers are used to submit writes so that checksumming 665 * kthread helpers are used to submit writes so that checksumming
661 * can happen in parallel across all CPUs 666 * can happen in parallel across all CPUs
@@ -2095,10 +2100,10 @@ static int write_dev_supers(struct btrfs_device *device,
2095 device->barriers = 0; 2100 device->barriers = 0;
2096 get_bh(bh); 2101 get_bh(bh);
2097 lock_buffer(bh); 2102 lock_buffer(bh);
2098 ret = submit_bh(WRITE, bh); 2103 ret = submit_bh(WRITE_SYNC, bh);
2099 } 2104 }
2100 } else { 2105 } else {
2101 ret = submit_bh(WRITE, bh); 2106 ret = submit_bh(WRITE_SYNC, bh);
2102 } 2107 }
2103 2108
2104 if (!ret && wait) { 2109 if (!ret && wait) {
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index eb2bee8b7fbf..05a1c42e25bf 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -50,7 +50,10 @@ struct extent_page_data {
50 /* tells writepage not to lock the state bits for this range 50 /* tells writepage not to lock the state bits for this range
51 * it still does the unlocking 51 * it still does the unlocking
52 */ 52 */
53 int extent_locked; 53 unsigned int extent_locked:1;
54
55 /* tells the submit_bio code to use a WRITE_SYNC */
56 unsigned int sync_io:1;
54}; 57};
55 58
56int __init extent_io_init(void) 59int __init extent_io_init(void)
@@ -2101,6 +2104,16 @@ int extent_read_full_page(struct extent_io_tree *tree, struct page *page,
2101 return ret; 2104 return ret;
2102} 2105}
2103 2106
2107static noinline void update_nr_written(struct page *page,
2108 struct writeback_control *wbc,
2109 unsigned long nr_written)
2110{
2111 wbc->nr_to_write -= nr_written;
2112 if (wbc->range_cyclic || (wbc->nr_to_write > 0 &&
2113 wbc->range_start == 0 && wbc->range_end == LLONG_MAX))
2114 page->mapping->writeback_index = page->index + nr_written;
2115}
2116
2104/* 2117/*
2105 * the writepage semantics are similar to regular writepage. extent 2118 * the writepage semantics are similar to regular writepage. extent
2106 * records are inserted to lock ranges in the tree, and as dirty areas 2119 * records are inserted to lock ranges in the tree, and as dirty areas
@@ -2136,8 +2149,14 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
2136 u64 delalloc_end; 2149 u64 delalloc_end;
2137 int page_started; 2150 int page_started;
2138 int compressed; 2151 int compressed;
2152 int write_flags;
2139 unsigned long nr_written = 0; 2153 unsigned long nr_written = 0;
2140 2154
2155 if (wbc->sync_mode == WB_SYNC_ALL)
2156 write_flags = WRITE_SYNC_PLUG;
2157 else
2158 write_flags = WRITE;
2159
2141 WARN_ON(!PageLocked(page)); 2160 WARN_ON(!PageLocked(page));
2142 pg_offset = i_size & (PAGE_CACHE_SIZE - 1); 2161 pg_offset = i_size & (PAGE_CACHE_SIZE - 1);
2143 if (page->index > end_index || 2162 if (page->index > end_index ||
@@ -2164,6 +2183,12 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
2164 delalloc_end = 0; 2183 delalloc_end = 0;
2165 page_started = 0; 2184 page_started = 0;
2166 if (!epd->extent_locked) { 2185 if (!epd->extent_locked) {
2186 /*
2187 * make sure the wbc mapping index is at least updated
2188 * to this page.
2189 */
2190 update_nr_written(page, wbc, 0);
2191
2167 while (delalloc_end < page_end) { 2192 while (delalloc_end < page_end) {
2168 nr_delalloc = find_lock_delalloc_range(inode, tree, 2193 nr_delalloc = find_lock_delalloc_range(inode, tree,
2169 page, 2194 page,
@@ -2185,7 +2210,13 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
2185 */ 2210 */
2186 if (page_started) { 2211 if (page_started) {
2187 ret = 0; 2212 ret = 0;
2188 goto update_nr_written; 2213 /*
2214 * we've unlocked the page, so we can't update
2215 * the mapping's writeback index, just update
2216 * nr_to_write.
2217 */
2218 wbc->nr_to_write -= nr_written;
2219 goto done_unlocked;
2189 } 2220 }
2190 } 2221 }
2191 lock_extent(tree, start, page_end, GFP_NOFS); 2222 lock_extent(tree, start, page_end, GFP_NOFS);
@@ -2198,13 +2229,18 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
2198 if (ret == -EAGAIN) { 2229 if (ret == -EAGAIN) {
2199 unlock_extent(tree, start, page_end, GFP_NOFS); 2230 unlock_extent(tree, start, page_end, GFP_NOFS);
2200 redirty_page_for_writepage(wbc, page); 2231 redirty_page_for_writepage(wbc, page);
2232 update_nr_written(page, wbc, nr_written);
2201 unlock_page(page); 2233 unlock_page(page);
2202 ret = 0; 2234 ret = 0;
2203 goto update_nr_written; 2235 goto done_unlocked;
2204 } 2236 }
2205 } 2237 }
2206 2238
2207 nr_written++; 2239 /*
2240 * we don't want to touch the inode after unlocking the page,
2241 * so we update the mapping writeback index now
2242 */
2243 update_nr_written(page, wbc, nr_written + 1);
2208 2244
2209 end = page_end; 2245 end = page_end;
2210 if (test_range_bit(tree, start, page_end, EXTENT_DELALLOC, 0)) 2246 if (test_range_bit(tree, start, page_end, EXTENT_DELALLOC, 0))
@@ -2314,9 +2350,9 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
2314 (unsigned long long)end); 2350 (unsigned long long)end);
2315 } 2351 }
2316 2352
2317 ret = submit_extent_page(WRITE, tree, page, sector, 2353 ret = submit_extent_page(write_flags, tree, page,
2318 iosize, pg_offset, bdev, 2354 sector, iosize, pg_offset,
2319 &epd->bio, max_nr, 2355 bdev, &epd->bio, max_nr,
2320 end_bio_extent_writepage, 2356 end_bio_extent_writepage,
2321 0, 0, 0); 2357 0, 0, 0);
2322 if (ret) 2358 if (ret)
@@ -2336,11 +2372,8 @@ done:
2336 unlock_extent(tree, unlock_start, page_end, GFP_NOFS); 2372 unlock_extent(tree, unlock_start, page_end, GFP_NOFS);
2337 unlock_page(page); 2373 unlock_page(page);
2338 2374
2339update_nr_written: 2375done_unlocked:
2340 wbc->nr_to_write -= nr_written; 2376
2341 if (wbc->range_cyclic || (wbc->nr_to_write > 0 &&
2342 wbc->range_start == 0 && wbc->range_end == LLONG_MAX))
2343 page->mapping->writeback_index = page->index + nr_written;
2344 return 0; 2377 return 0;
2345} 2378}
2346 2379
@@ -2460,15 +2493,23 @@ retry:
2460 return ret; 2493 return ret;
2461} 2494}
2462 2495
2463static noinline void flush_write_bio(void *data) 2496static void flush_epd_write_bio(struct extent_page_data *epd)
2464{ 2497{
2465 struct extent_page_data *epd = data;
2466 if (epd->bio) { 2498 if (epd->bio) {
2467 submit_one_bio(WRITE, epd->bio, 0, 0); 2499 if (epd->sync_io)
2500 submit_one_bio(WRITE_SYNC, epd->bio, 0, 0);
2501 else
2502 submit_one_bio(WRITE, epd->bio, 0, 0);
2468 epd->bio = NULL; 2503 epd->bio = NULL;
2469 } 2504 }
2470} 2505}
2471 2506
2507static noinline void flush_write_bio(void *data)
2508{
2509 struct extent_page_data *epd = data;
2510 flush_epd_write_bio(epd);
2511}
2512
2472int extent_write_full_page(struct extent_io_tree *tree, struct page *page, 2513int extent_write_full_page(struct extent_io_tree *tree, struct page *page,
2473 get_extent_t *get_extent, 2514 get_extent_t *get_extent,
2474 struct writeback_control *wbc) 2515 struct writeback_control *wbc)
@@ -2480,23 +2521,22 @@ int extent_write_full_page(struct extent_io_tree *tree, struct page *page,
2480 .tree = tree, 2521 .tree = tree,
2481 .get_extent = get_extent, 2522 .get_extent = get_extent,
2482 .extent_locked = 0, 2523 .extent_locked = 0,
2524 .sync_io = wbc->sync_mode == WB_SYNC_ALL,
2483 }; 2525 };
2484 struct writeback_control wbc_writepages = { 2526 struct writeback_control wbc_writepages = {
2485 .bdi = wbc->bdi, 2527 .bdi = wbc->bdi,
2486 .sync_mode = WB_SYNC_NONE, 2528 .sync_mode = wbc->sync_mode,
2487 .older_than_this = NULL, 2529 .older_than_this = NULL,
2488 .nr_to_write = 64, 2530 .nr_to_write = 64,
2489 .range_start = page_offset(page) + PAGE_CACHE_SIZE, 2531 .range_start = page_offset(page) + PAGE_CACHE_SIZE,
2490 .range_end = (loff_t)-1, 2532 .range_end = (loff_t)-1,
2491 }; 2533 };
2492 2534
2493
2494 ret = __extent_writepage(page, wbc, &epd); 2535 ret = __extent_writepage(page, wbc, &epd);
2495 2536
2496 extent_write_cache_pages(tree, mapping, &wbc_writepages, 2537 extent_write_cache_pages(tree, mapping, &wbc_writepages,
2497 __extent_writepage, &epd, flush_write_bio); 2538 __extent_writepage, &epd, flush_write_bio);
2498 if (epd.bio) 2539 flush_epd_write_bio(&epd);
2499 submit_one_bio(WRITE, epd.bio, 0, 0);
2500 return ret; 2540 return ret;
2501} 2541}
2502 2542
@@ -2515,6 +2555,7 @@ int extent_write_locked_range(struct extent_io_tree *tree, struct inode *inode,
2515 .tree = tree, 2555 .tree = tree,
2516 .get_extent = get_extent, 2556 .get_extent = get_extent,
2517 .extent_locked = 1, 2557 .extent_locked = 1,
2558 .sync_io = mode == WB_SYNC_ALL,
2518 }; 2559 };
2519 struct writeback_control wbc_writepages = { 2560 struct writeback_control wbc_writepages = {
2520 .bdi = inode->i_mapping->backing_dev_info, 2561 .bdi = inode->i_mapping->backing_dev_info,
@@ -2540,8 +2581,7 @@ int extent_write_locked_range(struct extent_io_tree *tree, struct inode *inode,
2540 start += PAGE_CACHE_SIZE; 2581 start += PAGE_CACHE_SIZE;
2541 } 2582 }
2542 2583
2543 if (epd.bio) 2584 flush_epd_write_bio(&epd);
2544 submit_one_bio(WRITE, epd.bio, 0, 0);
2545 return ret; 2585 return ret;
2546} 2586}
2547 2587
@@ -2556,13 +2596,13 @@ int extent_writepages(struct extent_io_tree *tree,
2556 .tree = tree, 2596 .tree = tree,
2557 .get_extent = get_extent, 2597 .get_extent = get_extent,
2558 .extent_locked = 0, 2598 .extent_locked = 0,
2599 .sync_io = wbc->sync_mode == WB_SYNC_ALL,
2559 }; 2600 };
2560 2601
2561 ret = extent_write_cache_pages(tree, mapping, wbc, 2602 ret = extent_write_cache_pages(tree, mapping, wbc,
2562 __extent_writepage, &epd, 2603 __extent_writepage, &epd,
2563 flush_write_bio); 2604 flush_write_bio);
2564 if (epd.bio) 2605 flush_epd_write_bio(&epd);
2565 submit_one_bio(WRITE, epd.bio, 0, 0);
2566 return ret; 2606 return ret;
2567} 2607}
2568 2608
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 9c9fb46ccd08..482f8db2cfd0 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -830,7 +830,7 @@ again:
830 830
831 ret = btrfs_del_items(trans, root, path, del_slot, del_nr); 831 ret = btrfs_del_items(trans, root, path, del_slot, del_nr);
832 BUG_ON(ret); 832 BUG_ON(ret);
833 goto done; 833 goto release;
834 } else if (split == start) { 834 } else if (split == start) {
835 if (locked_end < extent_end) { 835 if (locked_end < extent_end) {
836 ret = try_lock_extent(&BTRFS_I(inode)->io_tree, 836 ret = try_lock_extent(&BTRFS_I(inode)->io_tree,
@@ -926,6 +926,8 @@ again:
926 } 926 }
927done: 927done:
928 btrfs_mark_buffer_dirty(leaf); 928 btrfs_mark_buffer_dirty(leaf);
929
930release:
929 btrfs_release_path(root, path); 931 btrfs_release_path(root, path);
930 if (split_end && split == start) { 932 if (split_end && split == start) {
931 split = end; 933 split = end;
@@ -1131,7 +1133,7 @@ static ssize_t btrfs_file_write(struct file *file, const char __user *buf,
1131 if (will_write) { 1133 if (will_write) {
1132 btrfs_fdatawrite_range(inode->i_mapping, pos, 1134 btrfs_fdatawrite_range(inode->i_mapping, pos,
1133 pos + write_bytes - 1, 1135 pos + write_bytes - 1,
1134 WB_SYNC_NONE); 1136 WB_SYNC_ALL);
1135 } else { 1137 } else {
1136 balance_dirty_pages_ratelimited_nr(inode->i_mapping, 1138 balance_dirty_pages_ratelimited_nr(inode->i_mapping,
1137 num_pages); 1139 num_pages);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a0d1dd492a58..65219f6a16a1 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4970,10 +4970,10 @@ out_fail:
4970 return err; 4970 return err;
4971} 4971}
4972 4972
4973static int prealloc_file_range(struct inode *inode, u64 start, u64 end, 4973static int prealloc_file_range(struct btrfs_trans_handle *trans,
4974 struct inode *inode, u64 start, u64 end,
4974 u64 alloc_hint, int mode) 4975 u64 alloc_hint, int mode)
4975{ 4976{
4976 struct btrfs_trans_handle *trans;
4977 struct btrfs_root *root = BTRFS_I(inode)->root; 4977 struct btrfs_root *root = BTRFS_I(inode)->root;
4978 struct btrfs_key ins; 4978 struct btrfs_key ins;
4979 u64 alloc_size; 4979 u64 alloc_size;
@@ -4981,10 +4981,6 @@ static int prealloc_file_range(struct inode *inode, u64 start, u64 end,
4981 u64 num_bytes = end - start; 4981 u64 num_bytes = end - start;
4982 int ret = 0; 4982 int ret = 0;
4983 4983
4984 trans = btrfs_join_transaction(root, 1);
4985 BUG_ON(!trans);
4986 btrfs_set_trans_block_group(trans, inode);
4987
4988 while (num_bytes > 0) { 4984 while (num_bytes > 0) {
4989 alloc_size = min(num_bytes, root->fs_info->max_extent); 4985 alloc_size = min(num_bytes, root->fs_info->max_extent);
4990 ret = btrfs_reserve_extent(trans, root, alloc_size, 4986 ret = btrfs_reserve_extent(trans, root, alloc_size,
@@ -5015,7 +5011,6 @@ out:
5015 BUG_ON(ret); 5011 BUG_ON(ret);
5016 } 5012 }
5017 5013
5018 btrfs_end_transaction(trans, root);
5019 return ret; 5014 return ret;
5020} 5015}
5021 5016
@@ -5029,11 +5024,18 @@ static long btrfs_fallocate(struct inode *inode, int mode,
5029 u64 alloc_hint = 0; 5024 u64 alloc_hint = 0;
5030 u64 mask = BTRFS_I(inode)->root->sectorsize - 1; 5025 u64 mask = BTRFS_I(inode)->root->sectorsize - 1;
5031 struct extent_map *em; 5026 struct extent_map *em;
5027 struct btrfs_trans_handle *trans;
5032 int ret; 5028 int ret;
5033 5029
5034 alloc_start = offset & ~mask; 5030 alloc_start = offset & ~mask;
5035 alloc_end = (offset + len + mask) & ~mask; 5031 alloc_end = (offset + len + mask) & ~mask;
5036 5032
5033 /*
5034 * wait for ordered IO before we have any locks. We'll loop again
5035 * below with the locks held.
5036 */
5037 btrfs_wait_ordered_range(inode, alloc_start, alloc_end - alloc_start);
5038
5037 mutex_lock(&inode->i_mutex); 5039 mutex_lock(&inode->i_mutex);
5038 if (alloc_start > inode->i_size) { 5040 if (alloc_start > inode->i_size) {
5039 ret = btrfs_cont_expand(inode, alloc_start); 5041 ret = btrfs_cont_expand(inode, alloc_start);
@@ -5043,6 +5045,16 @@ static long btrfs_fallocate(struct inode *inode, int mode,
5043 5045
5044 while (1) { 5046 while (1) {
5045 struct btrfs_ordered_extent *ordered; 5047 struct btrfs_ordered_extent *ordered;
5048
5049 trans = btrfs_start_transaction(BTRFS_I(inode)->root, 1);
5050 if (!trans) {
5051 ret = -EIO;
5052 goto out;
5053 }
5054
5055 /* the extent lock is ordered inside the running
5056 * transaction
5057 */
5046 lock_extent(&BTRFS_I(inode)->io_tree, alloc_start, 5058 lock_extent(&BTRFS_I(inode)->io_tree, alloc_start,
5047 alloc_end - 1, GFP_NOFS); 5059 alloc_end - 1, GFP_NOFS);
5048 ordered = btrfs_lookup_first_ordered_extent(inode, 5060 ordered = btrfs_lookup_first_ordered_extent(inode,
@@ -5053,6 +5065,12 @@ static long btrfs_fallocate(struct inode *inode, int mode,
5053 btrfs_put_ordered_extent(ordered); 5065 btrfs_put_ordered_extent(ordered);
5054 unlock_extent(&BTRFS_I(inode)->io_tree, 5066 unlock_extent(&BTRFS_I(inode)->io_tree,
5055 alloc_start, alloc_end - 1, GFP_NOFS); 5067 alloc_start, alloc_end - 1, GFP_NOFS);
5068 btrfs_end_transaction(trans, BTRFS_I(inode)->root);
5069
5070 /*
5071 * we can't wait on the range with the transaction
5072 * running or with the extent lock held
5073 */
5056 btrfs_wait_ordered_range(inode, alloc_start, 5074 btrfs_wait_ordered_range(inode, alloc_start,
5057 alloc_end - alloc_start); 5075 alloc_end - alloc_start);
5058 } else { 5076 } else {
@@ -5070,7 +5088,7 @@ static long btrfs_fallocate(struct inode *inode, int mode,
5070 last_byte = min(extent_map_end(em), alloc_end); 5088 last_byte = min(extent_map_end(em), alloc_end);
5071 last_byte = (last_byte + mask) & ~mask; 5089 last_byte = (last_byte + mask) & ~mask;
5072 if (em->block_start == EXTENT_MAP_HOLE) { 5090 if (em->block_start == EXTENT_MAP_HOLE) {
5073 ret = prealloc_file_range(inode, cur_offset, 5091 ret = prealloc_file_range(trans, inode, cur_offset,
5074 last_byte, alloc_hint, mode); 5092 last_byte, alloc_hint, mode);
5075 if (ret < 0) { 5093 if (ret < 0) {
5076 free_extent_map(em); 5094 free_extent_map(em);
@@ -5089,6 +5107,8 @@ static long btrfs_fallocate(struct inode *inode, int mode,
5089 } 5107 }
5090 unlock_extent(&BTRFS_I(inode)->io_tree, alloc_start, alloc_end - 1, 5108 unlock_extent(&BTRFS_I(inode)->io_tree, alloc_start, alloc_end - 1,
5091 GFP_NOFS); 5109 GFP_NOFS);
5110
5111 btrfs_end_transaction(trans, BTRFS_I(inode)->root);
5092out: 5112out:
5093 mutex_unlock(&inode->i_mutex); 5113 mutex_unlock(&inode->i_mutex);
5094 return ret; 5114 return ret;
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 7594bec1be10..9f135e878507 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -461,15 +461,9 @@ static int btrfs_ioctl_resize(struct btrfs_root *root, void __user *arg)
461 if (!capable(CAP_SYS_ADMIN)) 461 if (!capable(CAP_SYS_ADMIN))
462 return -EPERM; 462 return -EPERM;
463 463
464 vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); 464 vol_args = memdup_user(arg, sizeof(*vol_args));
465 465 if (IS_ERR(vol_args))
466 if (!vol_args) 466 return PTR_ERR(vol_args);
467 return -ENOMEM;
468
469 if (copy_from_user(vol_args, arg, sizeof(*vol_args))) {
470 ret = -EFAULT;
471 goto out;
472 }
473 467
474 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0'; 468 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
475 namelen = strlen(vol_args->name); 469 namelen = strlen(vol_args->name);
@@ -545,7 +539,6 @@ static int btrfs_ioctl_resize(struct btrfs_root *root, void __user *arg)
545 539
546out_unlock: 540out_unlock:
547 mutex_unlock(&root->fs_info->volume_mutex); 541 mutex_unlock(&root->fs_info->volume_mutex);
548out:
549 kfree(vol_args); 542 kfree(vol_args);
550 return ret; 543 return ret;
551} 544}
@@ -565,15 +558,9 @@ static noinline int btrfs_ioctl_snap_create(struct file *file,
565 if (root->fs_info->sb->s_flags & MS_RDONLY) 558 if (root->fs_info->sb->s_flags & MS_RDONLY)
566 return -EROFS; 559 return -EROFS;
567 560
568 vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); 561 vol_args = memdup_user(arg, sizeof(*vol_args));
569 562 if (IS_ERR(vol_args))
570 if (!vol_args) 563 return PTR_ERR(vol_args);
571 return -ENOMEM;
572
573 if (copy_from_user(vol_args, arg, sizeof(*vol_args))) {
574 ret = -EFAULT;
575 goto out;
576 }
577 564
578 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0'; 565 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
579 namelen = strlen(vol_args->name); 566 namelen = strlen(vol_args->name);
@@ -675,19 +662,13 @@ static long btrfs_ioctl_add_dev(struct btrfs_root *root, void __user *arg)
675 if (!capable(CAP_SYS_ADMIN)) 662 if (!capable(CAP_SYS_ADMIN))
676 return -EPERM; 663 return -EPERM;
677 664
678 vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); 665 vol_args = memdup_user(arg, sizeof(*vol_args));
666 if (IS_ERR(vol_args))
667 return PTR_ERR(vol_args);
679 668
680 if (!vol_args)
681 return -ENOMEM;
682
683 if (copy_from_user(vol_args, arg, sizeof(*vol_args))) {
684 ret = -EFAULT;
685 goto out;
686 }
687 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0'; 669 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
688 ret = btrfs_init_new_device(root, vol_args->name); 670 ret = btrfs_init_new_device(root, vol_args->name);
689 671
690out:
691 kfree(vol_args); 672 kfree(vol_args);
692 return ret; 673 return ret;
693} 674}
@@ -703,19 +684,13 @@ static long btrfs_ioctl_rm_dev(struct btrfs_root *root, void __user *arg)
703 if (root->fs_info->sb->s_flags & MS_RDONLY) 684 if (root->fs_info->sb->s_flags & MS_RDONLY)
704 return -EROFS; 685 return -EROFS;
705 686
706 vol_args = kmalloc(sizeof(*vol_args), GFP_NOFS); 687 vol_args = memdup_user(arg, sizeof(*vol_args));
688 if (IS_ERR(vol_args))
689 return PTR_ERR(vol_args);
707 690
708 if (!vol_args)
709 return -ENOMEM;
710
711 if (copy_from_user(vol_args, arg, sizeof(*vol_args))) {
712 ret = -EFAULT;
713 goto out;
714 }
715 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0'; 691 vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
716 ret = btrfs_rm_device(root, vol_args->name); 692 ret = btrfs_rm_device(root, vol_args->name);
717 693
718out:
719 kfree(vol_args); 694 kfree(vol_args);
720 return ret; 695 return ret;
721} 696}
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 53c87b197d70..d6f0806c682f 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -489,7 +489,7 @@ again:
489 /* start IO across the range first to instantiate any delalloc 489 /* start IO across the range first to instantiate any delalloc
490 * extents 490 * extents
491 */ 491 */
492 btrfs_fdatawrite_range(inode->i_mapping, start, orig_end, WB_SYNC_NONE); 492 btrfs_fdatawrite_range(inode->i_mapping, start, orig_end, WB_SYNC_ALL);
493 493
494 /* The compression code will leave pages locked but return from 494 /* The compression code will leave pages locked but return from
495 * writepage without setting the page writeback. Starting again 495 * writepage without setting the page writeback. Starting again
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 9744af9d71e9..a7acfe639a44 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -635,14 +635,9 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
635 if (!capable(CAP_SYS_ADMIN)) 635 if (!capable(CAP_SYS_ADMIN))
636 return -EPERM; 636 return -EPERM;
637 637
638 vol = kmalloc(sizeof(*vol), GFP_KERNEL); 638 vol = memdup_user((void __user *)arg, sizeof(*vol));
639 if (!vol) 639 if (IS_ERR(vol))
640 return -ENOMEM; 640 return PTR_ERR(vol);
641
642 if (copy_from_user(vol, (void __user *)arg, sizeof(*vol))) {
643 ret = -EFAULT;
644 goto out;
645 }
646 641
647 switch (cmd) { 642 switch (cmd) {
648 case BTRFS_IOC_SCAN_DEV: 643 case BTRFS_IOC_SCAN_DEV:
@@ -650,7 +645,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
650 &btrfs_fs_type, &fs_devices); 645 &btrfs_fs_type, &fs_devices);
651 break; 646 break;
652 } 647 }
653out: 648
654 kfree(vol); 649 kfree(vol);
655 return ret; 650 return ret;
656} 651}
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index e0913e469728..e53835b88594 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -125,6 +125,20 @@ static noinline struct btrfs_fs_devices *find_fsid(u8 *fsid)
125 return NULL; 125 return NULL;
126} 126}
127 127
128static void requeue_list(struct btrfs_pending_bios *pending_bios,
129 struct bio *head, struct bio *tail)
130{
131
132 struct bio *old_head;
133
134 old_head = pending_bios->head;
135 pending_bios->head = head;
136 if (pending_bios->tail)
137 tail->bi_next = old_head;
138 else
139 pending_bios->tail = tail;
140}
141
128/* 142/*
129 * we try to collect pending bios for a device so we don't get a large 143 * we try to collect pending bios for a device so we don't get a large
130 * number of procs sending bios down to the same device. This greatly 144 * number of procs sending bios down to the same device. This greatly
@@ -141,10 +155,12 @@ static noinline int run_scheduled_bios(struct btrfs_device *device)
141 struct bio *pending; 155 struct bio *pending;
142 struct backing_dev_info *bdi; 156 struct backing_dev_info *bdi;
143 struct btrfs_fs_info *fs_info; 157 struct btrfs_fs_info *fs_info;
158 struct btrfs_pending_bios *pending_bios;
144 struct bio *tail; 159 struct bio *tail;
145 struct bio *cur; 160 struct bio *cur;
146 int again = 0; 161 int again = 0;
147 unsigned long num_run = 0; 162 unsigned long num_run;
163 unsigned long num_sync_run;
148 unsigned long limit; 164 unsigned long limit;
149 unsigned long last_waited = 0; 165 unsigned long last_waited = 0;
150 166
@@ -153,20 +169,30 @@ static noinline int run_scheduled_bios(struct btrfs_device *device)
153 limit = btrfs_async_submit_limit(fs_info); 169 limit = btrfs_async_submit_limit(fs_info);
154 limit = limit * 2 / 3; 170 limit = limit * 2 / 3;
155 171
172 /* we want to make sure that every time we switch from the sync
173 * list to the normal list, we unplug
174 */
175 num_sync_run = 0;
176
156loop: 177loop:
157 spin_lock(&device->io_lock); 178 spin_lock(&device->io_lock);
179 num_run = 0;
158 180
159loop_lock: 181loop_lock:
182
160 /* take all the bios off the list at once and process them 183 /* take all the bios off the list at once and process them
161 * later on (without the lock held). But, remember the 184 * later on (without the lock held). But, remember the
162 * tail and other pointers so the bios can be properly reinserted 185 * tail and other pointers so the bios can be properly reinserted
163 * into the list if we hit congestion 186 * into the list if we hit congestion
164 */ 187 */
165 pending = device->pending_bios; 188 if (device->pending_sync_bios.head)
166 tail = device->pending_bio_tail; 189 pending_bios = &device->pending_sync_bios;
190 else
191 pending_bios = &device->pending_bios;
192
193 pending = pending_bios->head;
194 tail = pending_bios->tail;
167 WARN_ON(pending && !tail); 195 WARN_ON(pending && !tail);
168 device->pending_bios = NULL;
169 device->pending_bio_tail = NULL;
170 196
171 /* 197 /*
172 * if pending was null this time around, no bios need processing 198 * if pending was null this time around, no bios need processing
@@ -176,16 +202,41 @@ loop_lock:
176 * device->running_pending is used to synchronize with the 202 * device->running_pending is used to synchronize with the
177 * schedule_bio code. 203 * schedule_bio code.
178 */ 204 */
179 if (pending) { 205 if (device->pending_sync_bios.head == NULL &&
180 again = 1; 206 device->pending_bios.head == NULL) {
181 device->running_pending = 1;
182 } else {
183 again = 0; 207 again = 0;
184 device->running_pending = 0; 208 device->running_pending = 0;
209 } else {
210 again = 1;
211 device->running_pending = 1;
185 } 212 }
213
214 pending_bios->head = NULL;
215 pending_bios->tail = NULL;
216
186 spin_unlock(&device->io_lock); 217 spin_unlock(&device->io_lock);
187 218
219 /*
220 * if we're doing the regular priority list, make sure we unplug
221 * for any high prio bios we've sent down
222 */
223 if (pending_bios == &device->pending_bios && num_sync_run > 0) {
224 num_sync_run = 0;
225 blk_run_backing_dev(bdi, NULL);
226 }
227
188 while (pending) { 228 while (pending) {
229
230 rmb();
231 if (pending_bios != &device->pending_sync_bios &&
232 device->pending_sync_bios.head &&
233 num_run > 16) {
234 cond_resched();
235 spin_lock(&device->io_lock);
236 requeue_list(pending_bios, pending, tail);
237 goto loop_lock;
238 }
239
189 cur = pending; 240 cur = pending;
190 pending = pending->bi_next; 241 pending = pending->bi_next;
191 cur->bi_next = NULL; 242 cur->bi_next = NULL;
@@ -196,10 +247,18 @@ loop_lock:
196 wake_up(&fs_info->async_submit_wait); 247 wake_up(&fs_info->async_submit_wait);
197 248
198 BUG_ON(atomic_read(&cur->bi_cnt) == 0); 249 BUG_ON(atomic_read(&cur->bi_cnt) == 0);
199 bio_get(cur);
200 submit_bio(cur->bi_rw, cur); 250 submit_bio(cur->bi_rw, cur);
201 bio_put(cur);
202 num_run++; 251 num_run++;
252 if (bio_sync(cur))
253 num_sync_run++;
254
255 if (need_resched()) {
256 if (num_sync_run) {
257 blk_run_backing_dev(bdi, NULL);
258 num_sync_run = 0;
259 }
260 cond_resched();
261 }
203 262
204 /* 263 /*
205 * we made progress, there is more work to do and the bdi 264 * we made progress, there is more work to do and the bdi
@@ -208,7 +267,6 @@ loop_lock:
208 */ 267 */
209 if (pending && bdi_write_congested(bdi) && num_run > 16 && 268 if (pending && bdi_write_congested(bdi) && num_run > 16 &&
210 fs_info->fs_devices->open_devices > 1) { 269 fs_info->fs_devices->open_devices > 1) {
211 struct bio *old_head;
212 struct io_context *ioc; 270 struct io_context *ioc;
213 271
214 ioc = current->io_context; 272 ioc = current->io_context;
@@ -233,17 +291,17 @@ loop_lock:
233 * against it before looping 291 * against it before looping
234 */ 292 */
235 last_waited = ioc->last_waited; 293 last_waited = ioc->last_waited;
294 if (need_resched()) {
295 if (num_sync_run) {
296 blk_run_backing_dev(bdi, NULL);
297 num_sync_run = 0;
298 }
299 cond_resched();
300 }
236 continue; 301 continue;
237 } 302 }
238 spin_lock(&device->io_lock); 303 spin_lock(&device->io_lock);
239 304 requeue_list(pending_bios, pending, tail);
240 old_head = device->pending_bios;
241 device->pending_bios = pending;
242 if (device->pending_bio_tail)
243 tail->bi_next = old_head;
244 else
245 device->pending_bio_tail = tail;
246
247 device->running_pending = 1; 305 device->running_pending = 1;
248 306
249 spin_unlock(&device->io_lock); 307 spin_unlock(&device->io_lock);
@@ -251,11 +309,18 @@ loop_lock:
251 goto done; 309 goto done;
252 } 310 }
253 } 311 }
312
313 if (num_sync_run) {
314 num_sync_run = 0;
315 blk_run_backing_dev(bdi, NULL);
316 }
317
318 cond_resched();
254 if (again) 319 if (again)
255 goto loop; 320 goto loop;
256 321
257 spin_lock(&device->io_lock); 322 spin_lock(&device->io_lock);
258 if (device->pending_bios) 323 if (device->pending_bios.head || device->pending_sync_bios.head)
259 goto loop_lock; 324 goto loop_lock;
260 spin_unlock(&device->io_lock); 325 spin_unlock(&device->io_lock);
261 326
@@ -2497,7 +2562,7 @@ again:
2497 max_errors = 1; 2562 max_errors = 1;
2498 } 2563 }
2499 } 2564 }
2500 if (multi_ret && rw == WRITE && 2565 if (multi_ret && (rw & (1 << BIO_RW)) &&
2501 stripes_allocated < stripes_required) { 2566 stripes_allocated < stripes_required) {
2502 stripes_allocated = map->num_stripes; 2567 stripes_allocated = map->num_stripes;
2503 free_extent_map(em); 2568 free_extent_map(em);
@@ -2762,6 +2827,7 @@ static noinline int schedule_bio(struct btrfs_root *root,
2762 int rw, struct bio *bio) 2827 int rw, struct bio *bio)
2763{ 2828{
2764 int should_queue = 1; 2829 int should_queue = 1;
2830 struct btrfs_pending_bios *pending_bios;
2765 2831
2766 /* don't bother with additional async steps for reads, right now */ 2832 /* don't bother with additional async steps for reads, right now */
2767 if (!(rw & (1 << BIO_RW))) { 2833 if (!(rw & (1 << BIO_RW))) {
@@ -2783,13 +2849,17 @@ static noinline int schedule_bio(struct btrfs_root *root,
2783 bio->bi_rw |= rw; 2849 bio->bi_rw |= rw;
2784 2850
2785 spin_lock(&device->io_lock); 2851 spin_lock(&device->io_lock);
2852 if (bio_sync(bio))
2853 pending_bios = &device->pending_sync_bios;
2854 else
2855 pending_bios = &device->pending_bios;
2786 2856
2787 if (device->pending_bio_tail) 2857 if (pending_bios->tail)
2788 device->pending_bio_tail->bi_next = bio; 2858 pending_bios->tail->bi_next = bio;
2789 2859
2790 device->pending_bio_tail = bio; 2860 pending_bios->tail = bio;
2791 if (!device->pending_bios) 2861 if (!pending_bios->head)
2792 device->pending_bios = bio; 2862 pending_bios->head = bio;
2793 if (device->running_pending) 2863 if (device->running_pending)
2794 should_queue = 0; 2864 should_queue = 0;
2795 2865
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
index 2185de72ff7d..5836327ba5dd 100644
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -23,13 +23,22 @@
23#include "async-thread.h" 23#include "async-thread.h"
24 24
25struct buffer_head; 25struct buffer_head;
26struct btrfs_pending_bios {
27 struct bio *head;
28 struct bio *tail;
29};
30
26struct btrfs_device { 31struct btrfs_device {
27 struct list_head dev_list; 32 struct list_head dev_list;
28 struct list_head dev_alloc_list; 33 struct list_head dev_alloc_list;
29 struct btrfs_fs_devices *fs_devices; 34 struct btrfs_fs_devices *fs_devices;
30 struct btrfs_root *dev_root; 35 struct btrfs_root *dev_root;
31 struct bio *pending_bios; 36
32 struct bio *pending_bio_tail; 37 /* regular prio bios */
38 struct btrfs_pending_bios pending_bios;
39 /* WRITE_SYNC bios */
40 struct btrfs_pending_bios pending_sync_bios;
41
33 int running_pending; 42 int running_pending;
34 u64 generation; 43 u64 generation;
35 44
diff --git a/fs/buffer.c b/fs/buffer.c
index 6e35762b6169..b3e5be7514f5 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -360,7 +360,7 @@ still_busy:
360 * Completion handler for block_write_full_page() - pages which are unlocked 360 * Completion handler for block_write_full_page() - pages which are unlocked
361 * during I/O, and which have PageWriteback cleared upon I/O completion. 361 * during I/O, and which have PageWriteback cleared upon I/O completion.
362 */ 362 */
363static void end_buffer_async_write(struct buffer_head *bh, int uptodate) 363void end_buffer_async_write(struct buffer_head *bh, int uptodate)
364{ 364{
365 char b[BDEVNAME_SIZE]; 365 char b[BDEVNAME_SIZE];
366 unsigned long flags; 366 unsigned long flags;
@@ -438,11 +438,17 @@ static void mark_buffer_async_read(struct buffer_head *bh)
438 set_buffer_async_read(bh); 438 set_buffer_async_read(bh);
439} 439}
440 440
441void mark_buffer_async_write(struct buffer_head *bh) 441void mark_buffer_async_write_endio(struct buffer_head *bh,
442 bh_end_io_t *handler)
442{ 443{
443 bh->b_end_io = end_buffer_async_write; 444 bh->b_end_io = handler;
444 set_buffer_async_write(bh); 445 set_buffer_async_write(bh);
445} 446}
447
448void mark_buffer_async_write(struct buffer_head *bh)
449{
450 mark_buffer_async_write_endio(bh, end_buffer_async_write);
451}
446EXPORT_SYMBOL(mark_buffer_async_write); 452EXPORT_SYMBOL(mark_buffer_async_write);
447 453
448 454
@@ -547,7 +553,7 @@ repeat:
547 return err; 553 return err;
548} 554}
549 555
550void do_thaw_all(unsigned long unused) 556void do_thaw_all(struct work_struct *work)
551{ 557{
552 struct super_block *sb; 558 struct super_block *sb;
553 char b[BDEVNAME_SIZE]; 559 char b[BDEVNAME_SIZE];
@@ -567,6 +573,7 @@ restart:
567 goto restart; 573 goto restart;
568 } 574 }
569 spin_unlock(&sb_lock); 575 spin_unlock(&sb_lock);
576 kfree(work);
570 printk(KERN_WARNING "Emergency Thaw complete\n"); 577 printk(KERN_WARNING "Emergency Thaw complete\n");
571} 578}
572 579
@@ -577,7 +584,13 @@ restart:
577 */ 584 */
578void emergency_thaw_all(void) 585void emergency_thaw_all(void)
579{ 586{
580 pdflush_operation(do_thaw_all, 0); 587 struct work_struct *work;
588
589 work = kmalloc(sizeof(*work), GFP_ATOMIC);
590 if (work) {
591 INIT_WORK(work, do_thaw_all);
592 schedule_work(work);
593 }
581} 594}
582 595
583/** 596/**
@@ -1596,9 +1609,20 @@ EXPORT_SYMBOL(unmap_underlying_metadata);
1596 * locked buffer. This only can happen if someone has written the buffer 1609 * locked buffer. This only can happen if someone has written the buffer
1597 * directly, with submit_bh(). At the address_space level PageWriteback 1610 * directly, with submit_bh(). At the address_space level PageWriteback
1598 * prevents this contention from occurring. 1611 * prevents this contention from occurring.
1612 *
1613 * If block_write_full_page() is called with wbc->sync_mode ==
1614 * WB_SYNC_ALL, the writes are posted using WRITE_SYNC_PLUG; this
1615 * causes the writes to be flagged as synchronous writes, but the
1616 * block device queue will NOT be unplugged, since usually many pages
1617 * will be pushed to the out before the higher-level caller actually
1618 * waits for the writes to be completed. The various wait functions,
1619 * such as wait_on_writeback_range() will ultimately call sync_page()
1620 * which will ultimately call blk_run_backing_dev(), which will end up
1621 * unplugging the device queue.
1599 */ 1622 */
1600static int __block_write_full_page(struct inode *inode, struct page *page, 1623static int __block_write_full_page(struct inode *inode, struct page *page,
1601 get_block_t *get_block, struct writeback_control *wbc) 1624 get_block_t *get_block, struct writeback_control *wbc,
1625 bh_end_io_t *handler)
1602{ 1626{
1603 int err; 1627 int err;
1604 sector_t block; 1628 sector_t block;
@@ -1606,7 +1630,8 @@ static int __block_write_full_page(struct inode *inode, struct page *page,
1606 struct buffer_head *bh, *head; 1630 struct buffer_head *bh, *head;
1607 const unsigned blocksize = 1 << inode->i_blkbits; 1631 const unsigned blocksize = 1 << inode->i_blkbits;
1608 int nr_underway = 0; 1632 int nr_underway = 0;
1609 int write_op = (wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE); 1633 int write_op = (wbc->sync_mode == WB_SYNC_ALL ?
1634 WRITE_SYNC_PLUG : WRITE);
1610 1635
1611 BUG_ON(!PageLocked(page)); 1636 BUG_ON(!PageLocked(page));
1612 1637
@@ -1682,7 +1707,7 @@ static int __block_write_full_page(struct inode *inode, struct page *page,
1682 continue; 1707 continue;
1683 } 1708 }
1684 if (test_clear_buffer_dirty(bh)) { 1709 if (test_clear_buffer_dirty(bh)) {
1685 mark_buffer_async_write(bh); 1710 mark_buffer_async_write_endio(bh, handler);
1686 } else { 1711 } else {
1687 unlock_buffer(bh); 1712 unlock_buffer(bh);
1688 } 1713 }
@@ -1735,7 +1760,7 @@ recover:
1735 if (buffer_mapped(bh) && buffer_dirty(bh) && 1760 if (buffer_mapped(bh) && buffer_dirty(bh) &&
1736 !buffer_delay(bh)) { 1761 !buffer_delay(bh)) {
1737 lock_buffer(bh); 1762 lock_buffer(bh);
1738 mark_buffer_async_write(bh); 1763 mark_buffer_async_write_endio(bh, handler);
1739 } else { 1764 } else {
1740 /* 1765 /*
1741 * The buffer may have been set dirty during 1766 * The buffer may have been set dirty during
@@ -2661,7 +2686,8 @@ int nobh_writepage(struct page *page, get_block_t *get_block,
2661out: 2686out:
2662 ret = mpage_writepage(page, get_block, wbc); 2687 ret = mpage_writepage(page, get_block, wbc);
2663 if (ret == -EAGAIN) 2688 if (ret == -EAGAIN)
2664 ret = __block_write_full_page(inode, page, get_block, wbc); 2689 ret = __block_write_full_page(inode, page, get_block, wbc,
2690 end_buffer_async_write);
2665 return ret; 2691 return ret;
2666} 2692}
2667EXPORT_SYMBOL(nobh_writepage); 2693EXPORT_SYMBOL(nobh_writepage);
@@ -2819,9 +2845,10 @@ out:
2819 2845
2820/* 2846/*
2821 * The generic ->writepage function for buffer-backed address_spaces 2847 * The generic ->writepage function for buffer-backed address_spaces
2848 * this form passes in the end_io handler used to finish the IO.
2822 */ 2849 */
2823int block_write_full_page(struct page *page, get_block_t *get_block, 2850int block_write_full_page_endio(struct page *page, get_block_t *get_block,
2824 struct writeback_control *wbc) 2851 struct writeback_control *wbc, bh_end_io_t *handler)
2825{ 2852{
2826 struct inode * const inode = page->mapping->host; 2853 struct inode * const inode = page->mapping->host;
2827 loff_t i_size = i_size_read(inode); 2854 loff_t i_size = i_size_read(inode);
@@ -2830,7 +2857,8 @@ int block_write_full_page(struct page *page, get_block_t *get_block,
2830 2857
2831 /* Is the page fully inside i_size? */ 2858 /* Is the page fully inside i_size? */
2832 if (page->index < end_index) 2859 if (page->index < end_index)
2833 return __block_write_full_page(inode, page, get_block, wbc); 2860 return __block_write_full_page(inode, page, get_block, wbc,
2861 handler);
2834 2862
2835 /* Is the page fully outside i_size? (truncate in progress) */ 2863 /* Is the page fully outside i_size? (truncate in progress) */
2836 offset = i_size & (PAGE_CACHE_SIZE-1); 2864 offset = i_size & (PAGE_CACHE_SIZE-1);
@@ -2853,9 +2881,20 @@ int block_write_full_page(struct page *page, get_block_t *get_block,
2853 * writes to that region are not written out to the file." 2881 * writes to that region are not written out to the file."
2854 */ 2882 */
2855 zero_user_segment(page, offset, PAGE_CACHE_SIZE); 2883 zero_user_segment(page, offset, PAGE_CACHE_SIZE);
2856 return __block_write_full_page(inode, page, get_block, wbc); 2884 return __block_write_full_page(inode, page, get_block, wbc, handler);
2885}
2886
2887/*
2888 * The generic ->writepage function for buffer-backed address_spaces
2889 */
2890int block_write_full_page(struct page *page, get_block_t *get_block,
2891 struct writeback_control *wbc)
2892{
2893 return block_write_full_page_endio(page, get_block, wbc,
2894 end_buffer_async_write);
2857} 2895}
2858 2896
2897
2859sector_t generic_block_bmap(struct address_space *mapping, sector_t block, 2898sector_t generic_block_bmap(struct address_space *mapping, sector_t block,
2860 get_block_t *get_block) 2899 get_block_t *get_block)
2861{ 2900{
@@ -3324,9 +3363,11 @@ EXPORT_SYMBOL(block_read_full_page);
3324EXPORT_SYMBOL(block_sync_page); 3363EXPORT_SYMBOL(block_sync_page);
3325EXPORT_SYMBOL(block_truncate_page); 3364EXPORT_SYMBOL(block_truncate_page);
3326EXPORT_SYMBOL(block_write_full_page); 3365EXPORT_SYMBOL(block_write_full_page);
3366EXPORT_SYMBOL(block_write_full_page_endio);
3327EXPORT_SYMBOL(cont_write_begin); 3367EXPORT_SYMBOL(cont_write_begin);
3328EXPORT_SYMBOL(end_buffer_read_sync); 3368EXPORT_SYMBOL(end_buffer_read_sync);
3329EXPORT_SYMBOL(end_buffer_write_sync); 3369EXPORT_SYMBOL(end_buffer_write_sync);
3370EXPORT_SYMBOL(end_buffer_async_write);
3330EXPORT_SYMBOL(file_fsync); 3371EXPORT_SYMBOL(file_fsync);
3331EXPORT_SYMBOL(generic_block_bmap); 3372EXPORT_SYMBOL(generic_block_bmap);
3332EXPORT_SYMBOL(generic_cont_expand_simple); 3373EXPORT_SYMBOL(generic_cont_expand_simple);
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 65984006192c..9d1fb6ec8a5a 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -15,7 +15,8 @@ Posix file open support added (turned off after one attempt if server
15fails to support it properly, as with Samba server versions prior to 3.3.2) 15fails to support it properly, as with Samba server versions prior to 3.3.2)
16Fix "redzone overwritten" bug in cifs_put_tcon (CIFSTcon may allocate too 16Fix "redzone overwritten" bug in cifs_put_tcon (CIFSTcon may allocate too
17little memory for the "nativeFileSystem" field returned by the server 17little memory for the "nativeFileSystem" field returned by the server
18during mount). 18during mount). Endian convert inode numbers if necessary (makes it easier
19to compare inode numbers on network files from big endian systems).
19 20
20Version 1.56 21Version 1.56
21------------ 22------------
diff --git a/fs/cifs/cifs_spnego.c b/fs/cifs/cifs_spnego.c
index 3fd3a9df043a..67bf93a40d2e 100644
--- a/fs/cifs/cifs_spnego.c
+++ b/fs/cifs/cifs_spnego.c
@@ -41,7 +41,7 @@ cifs_spnego_key_instantiate(struct key *key, const void *data, size_t datalen)
41 41
42 /* attach the data */ 42 /* attach the data */
43 memcpy(payload, data, datalen); 43 memcpy(payload, data, datalen);
44 rcu_assign_pointer(key->payload.data, payload); 44 key->payload.data = payload;
45 ret = 0; 45 ret = 0;
46 46
47error: 47error:
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 38491fd3871d..0d6d8b573652 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -66,9 +66,6 @@ unsigned int sign_CIFS_PDUs = 1;
66extern struct task_struct *oplockThread; /* remove sparse warning */ 66extern struct task_struct *oplockThread; /* remove sparse warning */
67struct task_struct *oplockThread = NULL; 67struct task_struct *oplockThread = NULL;
68/* extern struct task_struct * dnotifyThread; remove sparse warning */ 68/* extern struct task_struct * dnotifyThread; remove sparse warning */
69#ifdef CONFIG_CIFS_EXPERIMENTAL
70static struct task_struct *dnotifyThread = NULL;
71#endif
72static const struct super_operations cifs_super_ops; 69static const struct super_operations cifs_super_ops;
73unsigned int CIFSMaxBufSize = CIFS_MAX_MSGSIZE; 70unsigned int CIFSMaxBufSize = CIFS_MAX_MSGSIZE;
74module_param(CIFSMaxBufSize, int, 0); 71module_param(CIFSMaxBufSize, int, 0);
@@ -316,6 +313,7 @@ cifs_alloc_inode(struct super_block *sb)
316 cifs_inode->clientCanCacheAll = false; 313 cifs_inode->clientCanCacheAll = false;
317 cifs_inode->delete_pending = false; 314 cifs_inode->delete_pending = false;
318 cifs_inode->vfs_inode.i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */ 315 cifs_inode->vfs_inode.i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */
316 cifs_inode->server_eof = 0;
319 317
320 /* Can not set i_flags here - they get immediately overwritten 318 /* Can not set i_flags here - they get immediately overwritten
321 to zero by the VFS */ 319 to zero by the VFS */
@@ -1040,34 +1038,6 @@ static int cifs_oplock_thread(void *dummyarg)
1040 return 0; 1038 return 0;
1041} 1039}
1042 1040
1043#ifdef CONFIG_CIFS_EXPERIMENTAL
1044static int cifs_dnotify_thread(void *dummyarg)
1045{
1046 struct list_head *tmp;
1047 struct TCP_Server_Info *server;
1048
1049 do {
1050 if (try_to_freeze())
1051 continue;
1052 set_current_state(TASK_INTERRUPTIBLE);
1053 schedule_timeout(15*HZ);
1054 /* check if any stuck requests that need
1055 to be woken up and wakeq so the
1056 thread can wake up and error out */
1057 read_lock(&cifs_tcp_ses_lock);
1058 list_for_each(tmp, &cifs_tcp_ses_list) {
1059 server = list_entry(tmp, struct TCP_Server_Info,
1060 tcp_ses_list);
1061 if (atomic_read(&server->inFlight))
1062 wake_up_all(&server->response_q);
1063 }
1064 read_unlock(&cifs_tcp_ses_lock);
1065 } while (!kthread_should_stop());
1066
1067 return 0;
1068}
1069#endif
1070
1071static int __init 1041static int __init
1072init_cifs(void) 1042init_cifs(void)
1073{ 1043{
@@ -1144,21 +1114,8 @@ init_cifs(void)
1144 goto out_unregister_dfs_key_type; 1114 goto out_unregister_dfs_key_type;
1145 } 1115 }
1146 1116
1147#ifdef CONFIG_CIFS_EXPERIMENTAL
1148 dnotifyThread = kthread_run(cifs_dnotify_thread, NULL, "cifsdnotifyd");
1149 if (IS_ERR(dnotifyThread)) {
1150 rc = PTR_ERR(dnotifyThread);
1151 cERROR(1, ("error %d create dnotify thread", rc));
1152 goto out_stop_oplock_thread;
1153 }
1154#endif
1155
1156 return 0; 1117 return 0;
1157 1118
1158#ifdef CONFIG_CIFS_EXPERIMENTAL
1159 out_stop_oplock_thread:
1160#endif
1161 kthread_stop(oplockThread);
1162 out_unregister_dfs_key_type: 1119 out_unregister_dfs_key_type:
1163#ifdef CONFIG_CIFS_DFS_UPCALL 1120#ifdef CONFIG_CIFS_DFS_UPCALL
1164 unregister_key_type(&key_type_dns_resolver); 1121 unregister_key_type(&key_type_dns_resolver);
@@ -1196,9 +1153,6 @@ exit_cifs(void)
1196 cifs_destroy_inodecache(); 1153 cifs_destroy_inodecache();
1197 cifs_destroy_mids(); 1154 cifs_destroy_mids();
1198 cifs_destroy_request_bufs(); 1155 cifs_destroy_request_bufs();
1199#ifdef CONFIG_CIFS_EXPERIMENTAL
1200 kthread_stop(dnotifyThread);
1201#endif
1202 kthread_stop(oplockThread); 1156 kthread_stop(oplockThread);
1203} 1157}
1204 1158
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 9fbf4dff5da6..df40ab64cd95 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -350,7 +350,7 @@ struct cifsFileInfo {
350 bool invalidHandle:1; /* file closed via session abend */ 350 bool invalidHandle:1; /* file closed via session abend */
351 bool messageMode:1; /* for pipes: message vs byte mode */ 351 bool messageMode:1; /* for pipes: message vs byte mode */
352 atomic_t wrtPending; /* handle in use - defer close */ 352 atomic_t wrtPending; /* handle in use - defer close */
353 struct semaphore fh_sem; /* prevents reopen race after dead ses*/ 353 struct mutex fh_mutex; /* prevents reopen race after dead ses*/
354 struct cifs_search_info srch_inf; 354 struct cifs_search_info srch_inf;
355}; 355};
356 356
@@ -370,6 +370,7 @@ struct cifsInodeInfo {
370 bool clientCanCacheAll:1; /* read and writebehind oplock */ 370 bool clientCanCacheAll:1; /* read and writebehind oplock */
371 bool oplockPending:1; 371 bool oplockPending:1;
372 bool delete_pending:1; /* DELETE_ON_CLOSE is set */ 372 bool delete_pending:1; /* DELETE_ON_CLOSE is set */
373 u64 server_eof; /* current file size on server */
373 struct inode vfs_inode; 374 struct inode vfs_inode;
374}; 375};
375 376
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h
index b370489c8da5..a785f69dbc9f 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/cifs/cifspdu.h
@@ -2163,7 +2163,7 @@ typedef struct {
2163 __le32 Type; 2163 __le32 Type;
2164 __le64 DevMajor; 2164 __le64 DevMajor;
2165 __le64 DevMinor; 2165 __le64 DevMinor;
2166 __u64 UniqueId; 2166 __le64 UniqueId;
2167 __le64 Permissions; 2167 __le64 Permissions;
2168 __le64 Nlinks; 2168 __le64 Nlinks;
2169} __attribute__((packed)) FILE_UNIX_BASIC_INFO; /* level 0x200 QPathInfo */ 2169} __attribute__((packed)) FILE_UNIX_BASIC_INFO; /* level 0x200 QPathInfo */
@@ -2308,7 +2308,7 @@ struct unlink_psx_rq { /* level 0x20a SetPathInfo */
2308} __attribute__((packed)); 2308} __attribute__((packed));
2309 2309
2310struct file_internal_info { 2310struct file_internal_info {
2311 __u64 UniqueId; /* inode number */ 2311 __le64 UniqueId; /* inode number */
2312} __attribute__((packed)); /* level 0x3ee */ 2312} __attribute__((packed)); /* level 0x3ee */
2313 2313
2314struct file_mode_info { 2314struct file_mode_info {
@@ -2338,7 +2338,7 @@ typedef struct {
2338 __le32 Type; 2338 __le32 Type;
2339 __le64 DevMajor; 2339 __le64 DevMajor;
2340 __le64 DevMinor; 2340 __le64 DevMinor;
2341 __u64 UniqueId; 2341 __le64 UniqueId;
2342 __le64 Permissions; 2342 __le64 Permissions;
2343 __le64 Nlinks; 2343 __le64 Nlinks;
2344 char FileName[1]; 2344 char FileName[1];
@@ -2386,7 +2386,7 @@ typedef struct {
2386 __le32 FileNameLength; 2386 __le32 FileNameLength;
2387 __le32 EaSize; /* EA size */ 2387 __le32 EaSize; /* EA size */
2388 __le32 Reserved; 2388 __le32 Reserved;
2389 __u64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/ 2389 __le64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/
2390 char FileName[1]; 2390 char FileName[1];
2391} __attribute__((packed)) SEARCH_ID_FULL_DIR_INFO; /* level 0x105 FF rsp data */ 2391} __attribute__((packed)) SEARCH_ID_FULL_DIR_INFO; /* level 0x105 FF rsp data */
2392 2392
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index bc09c998631f..a0845dc7b8a9 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -1626,6 +1626,8 @@ CIFSSMBWrite2(const int xid, struct cifsTconInfo *tcon,
1626 int smb_hdr_len; 1626 int smb_hdr_len;
1627 int resp_buf_type = 0; 1627 int resp_buf_type = 0;
1628 1628
1629 *nbytes = 0;
1630
1629 cFYI(1, ("write2 at %lld %d bytes", (long long)offset, count)); 1631 cFYI(1, ("write2 at %lld %d bytes", (long long)offset, count));
1630 1632
1631 if (tcon->ses->capabilities & CAP_LARGE_FILES) { 1633 if (tcon->ses->capabilities & CAP_LARGE_FILES) {
@@ -1682,11 +1684,9 @@ CIFSSMBWrite2(const int xid, struct cifsTconInfo *tcon,
1682 cifs_stats_inc(&tcon->num_writes); 1684 cifs_stats_inc(&tcon->num_writes);
1683 if (rc) { 1685 if (rc) {
1684 cFYI(1, ("Send error Write2 = %d", rc)); 1686 cFYI(1, ("Send error Write2 = %d", rc));
1685 *nbytes = 0;
1686 } else if (resp_buf_type == 0) { 1687 } else if (resp_buf_type == 0) {
1687 /* presumably this can not happen, but best to be safe */ 1688 /* presumably this can not happen, but best to be safe */
1688 rc = -EIO; 1689 rc = -EIO;
1689 *nbytes = 0;
1690 } else { 1690 } else {
1691 WRITE_RSP *pSMBr = (WRITE_RSP *)iov[0].iov_base; 1691 WRITE_RSP *pSMBr = (WRITE_RSP *)iov[0].iov_base;
1692 *nbytes = le16_to_cpu(pSMBr->CountHigh); 1692 *nbytes = le16_to_cpu(pSMBr->CountHigh);
@@ -3918,7 +3918,7 @@ GetInodeNumberRetry:
3918 } 3918 }
3919 pfinfo = (struct file_internal_info *) 3919 pfinfo = (struct file_internal_info *)
3920 (data_offset + (char *) &pSMBr->hdr.Protocol); 3920 (data_offset + (char *) &pSMBr->hdr.Protocol);
3921 *inode_number = pfinfo->UniqueId; 3921 *inode_number = le64_to_cpu(pfinfo->UniqueId);
3922 } 3922 }
3923 } 3923 }
3924GetInodeNumOut: 3924GetInodeNumOut:
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 0de3b5615a22..bacdef1546b7 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -2214,9 +2214,58 @@ is_path_accessible(int xid, struct cifsTconInfo *tcon,
2214 return rc; 2214 return rc;
2215} 2215}
2216 2216
2217static void
2218cleanup_volume_info(struct smb_vol **pvolume_info)
2219{
2220 struct smb_vol *volume_info;
2221
2222 if (!pvolume_info && !*pvolume_info)
2223 return;
2224
2225 volume_info = *pvolume_info;
2226 kzfree(volume_info->password);
2227 kfree(volume_info->UNC);
2228 kfree(volume_info->prepath);
2229 kfree(volume_info);
2230 *pvolume_info = NULL;
2231 return;
2232}
2233
2234#ifdef CONFIG_CIFS_DFS_UPCALL
2235/* build_path_to_root returns full path to root when
2236 * we do not have an exiting connection (tcon) */
2237static char *
2238build_unc_path_to_root(const struct smb_vol *volume_info,
2239 const struct cifs_sb_info *cifs_sb)
2240{
2241 char *full_path;
2242
2243 int unc_len = strnlen(volume_info->UNC, MAX_TREE_SIZE + 1);
2244 full_path = kmalloc(unc_len + cifs_sb->prepathlen + 1, GFP_KERNEL);
2245 if (full_path == NULL)
2246 return ERR_PTR(-ENOMEM);
2247
2248 strncpy(full_path, volume_info->UNC, unc_len);
2249 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) {
2250 int i;
2251 for (i = 0; i < unc_len; i++) {
2252 if (full_path[i] == '\\')
2253 full_path[i] = '/';
2254 }
2255 }
2256
2257 if (cifs_sb->prepathlen)
2258 strncpy(full_path + unc_len, cifs_sb->prepath,
2259 cifs_sb->prepathlen);
2260
2261 full_path[unc_len + cifs_sb->prepathlen] = 0; /* add trailing null */
2262 return full_path;
2263}
2264#endif
2265
2217int 2266int
2218cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, 2267cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2219 char *mount_data, const char *devname) 2268 char *mount_data_global, const char *devname)
2220{ 2269{
2221 int rc = 0; 2270 int rc = 0;
2222 int xid; 2271 int xid;
@@ -2225,6 +2274,13 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2225 struct cifsTconInfo *tcon = NULL; 2274 struct cifsTconInfo *tcon = NULL;
2226 struct TCP_Server_Info *srvTcp = NULL; 2275 struct TCP_Server_Info *srvTcp = NULL;
2227 char *full_path; 2276 char *full_path;
2277 char *mount_data = mount_data_global;
2278#ifdef CONFIG_CIFS_DFS_UPCALL
2279 struct dfs_info3_param *referrals = NULL;
2280 unsigned int num_referrals = 0;
2281try_mount_again:
2282#endif
2283 full_path = NULL;
2228 2284
2229 xid = GetXid(); 2285 xid = GetXid();
2230 2286
@@ -2371,11 +2427,9 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2371 } 2427 }
2372 } 2428 }
2373 2429
2374 /* check for null share name ie connect to dfs root */
2375 if ((strchr(volume_info->UNC + 3, '\\') == NULL) 2430 if ((strchr(volume_info->UNC + 3, '\\') == NULL)
2376 && (strchr(volume_info->UNC + 3, '/') == NULL)) { 2431 && (strchr(volume_info->UNC + 3, '/') == NULL)) {
2377 /* rc = connect_to_dfs_path(...) */ 2432 cERROR(1, ("Missing share name"));
2378 cFYI(1, ("DFS root not supported"));
2379 rc = -ENODEV; 2433 rc = -ENODEV;
2380 goto mount_fail_check; 2434 goto mount_fail_check;
2381 } else { 2435 } else {
@@ -2392,7 +2446,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2392 } 2446 }
2393 } 2447 }
2394 if (rc) 2448 if (rc)
2395 goto mount_fail_check; 2449 goto remote_path_check;
2396 tcon->seal = volume_info->seal; 2450 tcon->seal = volume_info->seal;
2397 write_lock(&cifs_tcp_ses_lock); 2451 write_lock(&cifs_tcp_ses_lock);
2398 list_add(&tcon->tcon_list, &pSesInfo->tcon_list); 2452 list_add(&tcon->tcon_list, &pSesInfo->tcon_list);
@@ -2417,19 +2471,9 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2417 /* BB FIXME fix time_gran to be larger for LANMAN sessions */ 2471 /* BB FIXME fix time_gran to be larger for LANMAN sessions */
2418 sb->s_time_gran = 100; 2472 sb->s_time_gran = 100;
2419 2473
2420mount_fail_check: 2474 if (rc)
2421 /* on error free sesinfo and tcon struct if needed */ 2475 goto remote_path_check;
2422 if (rc) { 2476
2423 /* If find_unc succeeded then rc == 0 so we can not end */
2424 /* up accidently freeing someone elses tcon struct */
2425 if (tcon)
2426 cifs_put_tcon(tcon);
2427 else if (pSesInfo)
2428 cifs_put_smb_ses(pSesInfo);
2429 else
2430 cifs_put_tcp_session(srvTcp);
2431 goto out;
2432 }
2433 cifs_sb->tcon = tcon; 2477 cifs_sb->tcon = tcon;
2434 2478
2435 /* do not care if following two calls succeed - informational */ 2479 /* do not care if following two calls succeed - informational */
@@ -2461,7 +2505,9 @@ mount_fail_check:
2461 cifs_sb->rsize = min(cifs_sb->rsize, 2505 cifs_sb->rsize = min(cifs_sb->rsize,
2462 (tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE)); 2506 (tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE));
2463 2507
2464 if (!rc && cifs_sb->prepathlen) { 2508remote_path_check:
2509 /* check if a whole path (including prepath) is not remote */
2510 if (!rc && cifs_sb->prepathlen && tcon) {
2465 /* build_path_to_root works only when we have a valid tcon */ 2511 /* build_path_to_root works only when we have a valid tcon */
2466 full_path = cifs_build_path_to_root(cifs_sb); 2512 full_path = cifs_build_path_to_root(cifs_sb);
2467 if (full_path == NULL) { 2513 if (full_path == NULL) {
@@ -2469,31 +2515,79 @@ mount_fail_check:
2469 goto mount_fail_check; 2515 goto mount_fail_check;
2470 } 2516 }
2471 rc = is_path_accessible(xid, tcon, cifs_sb, full_path); 2517 rc = is_path_accessible(xid, tcon, cifs_sb, full_path);
2472 if (rc) { 2518 if (rc != -EREMOTE) {
2473 cERROR(1, ("Path %s in not accessible: %d",
2474 full_path, rc));
2475 kfree(full_path); 2519 kfree(full_path);
2476 goto mount_fail_check; 2520 goto mount_fail_check;
2477 } 2521 }
2478 kfree(full_path); 2522 kfree(full_path);
2479 } 2523 }
2480 2524
2525 /* get referral if needed */
2526 if (rc == -EREMOTE) {
2527#ifdef CONFIG_CIFS_DFS_UPCALL
2528 /* convert forward to back slashes in prepath here if needed */
2529 if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) == 0)
2530 convert_delimiter(cifs_sb->prepath,
2531 CIFS_DIR_SEP(cifs_sb));
2532 full_path = build_unc_path_to_root(volume_info, cifs_sb);
2533 if (IS_ERR(full_path)) {
2534 rc = PTR_ERR(full_path);
2535 goto mount_fail_check;
2536 }
2537
2538 cFYI(1, ("Getting referral for: %s", full_path));
2539 rc = get_dfs_path(xid, pSesInfo , full_path + 1,
2540 cifs_sb->local_nls, &num_referrals, &referrals,
2541 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
2542 if (!rc && num_referrals > 0) {
2543 char *fake_devname = NULL;
2544
2545 if (mount_data != mount_data_global)
2546 kfree(mount_data);
2547 mount_data = cifs_compose_mount_options(
2548 cifs_sb->mountdata, full_path + 1,
2549 referrals, &fake_devname);
2550 kfree(fake_devname);
2551 free_dfs_info_array(referrals, num_referrals);
2552
2553 if (tcon)
2554 cifs_put_tcon(tcon);
2555 else if (pSesInfo)
2556 cifs_put_smb_ses(pSesInfo);
2557
2558 cleanup_volume_info(&volume_info);
2559 FreeXid(xid);
2560 kfree(full_path);
2561 goto try_mount_again;
2562 }
2563#else /* No DFS support, return error on mount */
2564 rc = -EOPNOTSUPP;
2565#endif
2566 }
2567
2568mount_fail_check:
2569 /* on error free sesinfo and tcon struct if needed */
2570 if (rc) {
2571 if (mount_data != mount_data_global)
2572 kfree(mount_data);
2573 /* If find_unc succeeded then rc == 0 so we can not end */
2574 /* up accidently freeing someone elses tcon struct */
2575 if (tcon)
2576 cifs_put_tcon(tcon);
2577 else if (pSesInfo)
2578 cifs_put_smb_ses(pSesInfo);
2579 else
2580 cifs_put_tcp_session(srvTcp);
2581 goto out;
2582 }
2583
2481 /* volume_info->password is freed above when existing session found 2584 /* volume_info->password is freed above when existing session found
2482 (in which case it is not needed anymore) but when new sesion is created 2585 (in which case it is not needed anymore) but when new sesion is created
2483 the password ptr is put in the new session structure (in which case the 2586 the password ptr is put in the new session structure (in which case the
2484 password will be freed at unmount time) */ 2587 password will be freed at unmount time) */
2485out: 2588out:
2486 /* zero out password before freeing */ 2589 /* zero out password before freeing */
2487 if (volume_info) { 2590 cleanup_volume_info(&volume_info);
2488 if (volume_info->password != NULL) {
2489 memset(volume_info->password, 0,
2490 strlen(volume_info->password));
2491 kfree(volume_info->password);
2492 }
2493 kfree(volume_info->UNC);
2494 kfree(volume_info->prepath);
2495 kfree(volume_info);
2496 }
2497 FreeXid(xid); 2591 FreeXid(xid);
2498 return rc; 2592 return rc;
2499} 2593}
@@ -2673,8 +2767,7 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2673/* We look for obvious messed up bcc or strings in response so we do not go off 2767/* We look for obvious messed up bcc or strings in response so we do not go off
2674 the end since (at least) WIN2K and Windows XP have a major bug in not null 2768 the end since (at least) WIN2K and Windows XP have a major bug in not null
2675 terminating last Unicode string in response */ 2769 terminating last Unicode string in response */
2676 if (ses->serverOS) 2770 kfree(ses->serverOS);
2677 kfree(ses->serverOS);
2678 ses->serverOS = kzalloc(2 * (len + 1), 2771 ses->serverOS = kzalloc(2 * (len + 1),
2679 GFP_KERNEL); 2772 GFP_KERNEL);
2680 if (ses->serverOS == NULL) 2773 if (ses->serverOS == NULL)
@@ -2710,8 +2803,7 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2710 len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words); 2803 len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words);
2711 /* last string is not always null terminated 2804 /* last string is not always null terminated
2712 (for e.g. for Windows XP & 2000) */ 2805 (for e.g. for Windows XP & 2000) */
2713 if (ses->serverDomain) 2806 kfree(ses->serverDomain);
2714 kfree(ses->serverDomain);
2715 ses->serverDomain = 2807 ses->serverDomain =
2716 kzalloc(2*(len+1), 2808 kzalloc(2*(len+1),
2717 GFP_KERNEL); 2809 GFP_KERNEL);
@@ -2725,8 +2817,7 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2725 ses->serverDomain[1+(2*len)] = 0; 2817 ses->serverDomain[1+(2*len)] = 0;
2726 } else { /* else no more room so create 2818 } else { /* else no more room so create
2727 dummy domain string */ 2819 dummy domain string */
2728 if (ses->serverDomain) 2820 kfree(ses->serverDomain);
2729 kfree(ses->serverDomain);
2730 ses->serverDomain = 2821 ses->serverDomain =
2731 kzalloc(2, GFP_KERNEL); 2822 kzalloc(2, GFP_KERNEL);
2732 } 2823 }
@@ -2772,8 +2863,7 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2772 bcc_ptr++; 2863 bcc_ptr++;
2773 2864
2774 len = strnlen(bcc_ptr, 1024); 2865 len = strnlen(bcc_ptr, 1024);
2775 if (ses->serverDomain) 2866 kfree(ses->serverDomain);
2776 kfree(ses->serverDomain);
2777 ses->serverDomain = kzalloc(len + 1, 2867 ses->serverDomain = kzalloc(len + 1,
2778 GFP_KERNEL); 2868 GFP_KERNEL);
2779 if (ses->serverDomain == NULL) 2869 if (ses->serverDomain == NULL)
@@ -3013,8 +3103,7 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
3013/* We look for obvious messed up bcc or strings in response so we do not go off 3103/* We look for obvious messed up bcc or strings in response so we do not go off
3014 the end since (at least) WIN2K and Windows XP have a major bug in not null 3104 the end since (at least) WIN2K and Windows XP have a major bug in not null
3015 terminating last Unicode string in response */ 3105 terminating last Unicode string in response */
3016 if (ses->serverOS) 3106 kfree(ses->serverOS);
3017 kfree(ses->serverOS);
3018 ses->serverOS = 3107 ses->serverOS =
3019 kzalloc(2 * (len + 1), GFP_KERNEL); 3108 kzalloc(2 * (len + 1), GFP_KERNEL);
3020 cifs_strfromUCS_le(ses->serverOS, 3109 cifs_strfromUCS_le(ses->serverOS,
@@ -3086,8 +3175,7 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
3086 if (((long) bcc_ptr + len) - (long) 3175 if (((long) bcc_ptr + len) - (long)
3087 pByteArea(smb_buffer_response) 3176 pByteArea(smb_buffer_response)
3088 <= BCC(smb_buffer_response)) { 3177 <= BCC(smb_buffer_response)) {
3089 if (ses->serverOS) 3178 kfree(ses->serverOS);
3090 kfree(ses->serverOS);
3091 ses->serverOS = 3179 ses->serverOS =
3092 kzalloc(len + 1, 3180 kzalloc(len + 1,
3093 GFP_KERNEL); 3181 GFP_KERNEL);
@@ -3414,8 +3502,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
3414/* We look for obvious messed up bcc or strings in response so we do not go off 3502/* We look for obvious messed up bcc or strings in response so we do not go off
3415 the end since (at least) WIN2K and Windows XP have a major bug in not null 3503 the end since (at least) WIN2K and Windows XP have a major bug in not null
3416 terminating last Unicode string in response */ 3504 terminating last Unicode string in response */
3417 if (ses->serverOS) 3505 kfree(ses->serverOS);
3418 kfree(ses->serverOS);
3419 ses->serverOS = 3506 ses->serverOS =
3420 kzalloc(2 * (len + 1), GFP_KERNEL); 3507 kzalloc(2 * (len + 1), GFP_KERNEL);
3421 cifs_strfromUCS_le(ses->serverOS, 3508 cifs_strfromUCS_le(ses->serverOS,
@@ -3448,8 +3535,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
3448 if (remaining_words > 0) { 3535 if (remaining_words > 0) {
3449 len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words); 3536 len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words);
3450 /* last string not always null terminated (e.g. for Windows XP & 2000) */ 3537 /* last string not always null terminated (e.g. for Windows XP & 2000) */
3451 if (ses->serverDomain) 3538 kfree(ses->serverDomain);
3452 kfree(ses->serverDomain);
3453 ses->serverDomain = 3539 ses->serverDomain =
3454 kzalloc(2 * 3540 kzalloc(2 *
3455 (len + 3541 (len +
@@ -3476,13 +3562,11 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
3476 = 0; 3562 = 0;
3477 } /* else no more room so create dummy domain string */ 3563 } /* else no more room so create dummy domain string */
3478 else { 3564 else {
3479 if (ses->serverDomain) 3565 kfree(ses->serverDomain);
3480 kfree(ses->serverDomain);
3481 ses->serverDomain = kzalloc(2,GFP_KERNEL); 3566 ses->serverDomain = kzalloc(2,GFP_KERNEL);
3482 } 3567 }
3483 } else { /* no room so create dummy domain and NOS string */ 3568 } else { /* no room so create dummy domain and NOS string */
3484 if (ses->serverDomain) 3569 kfree(ses->serverDomain);
3485 kfree(ses->serverDomain);
3486 ses->serverDomain = kzalloc(2, GFP_KERNEL); 3570 ses->serverDomain = kzalloc(2, GFP_KERNEL);
3487 kfree(ses->serverNOS); 3571 kfree(ses->serverNOS);
3488 ses->serverNOS = kzalloc(2, GFP_KERNEL); 3572 ses->serverNOS = kzalloc(2, GFP_KERNEL);
@@ -3492,8 +3576,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
3492 if (((long) bcc_ptr + len) - 3576 if (((long) bcc_ptr + len) -
3493 (long) pByteArea(smb_buffer_response) 3577 (long) pByteArea(smb_buffer_response)
3494 <= BCC(smb_buffer_response)) { 3578 <= BCC(smb_buffer_response)) {
3495 if (ses->serverOS) 3579 kfree(ses->serverOS);
3496 kfree(ses->serverOS);
3497 ses->serverOS = kzalloc(len + 1, GFP_KERNEL); 3580 ses->serverOS = kzalloc(len + 1, GFP_KERNEL);
3498 strncpy(ses->serverOS,bcc_ptr, len); 3581 strncpy(ses->serverOS,bcc_ptr, len);
3499 3582
@@ -3512,8 +3595,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
3512 bcc_ptr++; 3595 bcc_ptr++;
3513 3596
3514 len = strnlen(bcc_ptr, 1024); 3597 len = strnlen(bcc_ptr, 1024);
3515 if (ses->serverDomain) 3598 kfree(ses->serverDomain);
3516 kfree(ses->serverDomain);
3517 ses->serverDomain = 3599 ses->serverDomain =
3518 kzalloc(len+1, 3600 kzalloc(len+1,
3519 GFP_KERNEL); 3601 GFP_KERNEL);
@@ -3674,16 +3756,15 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
3674 BCC(smb_buffer_response)) { 3756 BCC(smb_buffer_response)) {
3675 kfree(tcon->nativeFileSystem); 3757 kfree(tcon->nativeFileSystem);
3676 tcon->nativeFileSystem = 3758 tcon->nativeFileSystem =
3677 kzalloc(2*(length + 1), GFP_KERNEL); 3759 kzalloc((4 * length) + 2, GFP_KERNEL);
3678 if (tcon->nativeFileSystem) 3760 if (tcon->nativeFileSystem) {
3679 cifs_strfromUCS_le( 3761 cifs_strfromUCS_le(
3680 tcon->nativeFileSystem, 3762 tcon->nativeFileSystem,
3681 (__le16 *) bcc_ptr, 3763 (__le16 *) bcc_ptr,
3682 length, nls_codepage); 3764 length, nls_codepage);
3683 bcc_ptr += 2 * length; 3765 cFYI(1, ("nativeFileSystem=%s",
3684 bcc_ptr[0] = 0; /* null terminate the string */ 3766 tcon->nativeFileSystem));
3685 bcc_ptr[1] = 0; 3767 }
3686 bcc_ptr += 2;
3687 } 3768 }
3688 /* else do not bother copying these information fields*/ 3769 /* else do not bother copying these information fields*/
3689 } else { 3770 } else {
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index 54dce78fbb73..461750e01364 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -129,12 +129,62 @@ cifs_bp_rename_retry:
129 return full_path; 129 return full_path;
130} 130}
131 131
132static void
133cifs_fill_fileinfo(struct inode *newinode, __u16 fileHandle,
134 struct cifsTconInfo *tcon, bool write_only)
135{
136 int oplock = 0;
137 struct cifsFileInfo *pCifsFile;
138 struct cifsInodeInfo *pCifsInode;
139
140 pCifsFile = kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
141
142 if (pCifsFile == NULL)
143 return;
144
145 if (oplockEnabled)
146 oplock = REQ_OPLOCK;
147
148 pCifsFile->netfid = fileHandle;
149 pCifsFile->pid = current->tgid;
150 pCifsFile->pInode = newinode;
151 pCifsFile->invalidHandle = false;
152 pCifsFile->closePend = false;
153 mutex_init(&pCifsFile->fh_mutex);
154 mutex_init(&pCifsFile->lock_mutex);
155 INIT_LIST_HEAD(&pCifsFile->llist);
156 atomic_set(&pCifsFile->wrtPending, 0);
157
158 /* set the following in open now
159 pCifsFile->pfile = file; */
160 write_lock(&GlobalSMBSeslock);
161 list_add(&pCifsFile->tlist, &tcon->openFileList);
162 pCifsInode = CIFS_I(newinode);
163 if (pCifsInode) {
164 /* if readable file instance put first in list*/
165 if (write_only)
166 list_add_tail(&pCifsFile->flist,
167 &pCifsInode->openFileList);
168 else
169 list_add(&pCifsFile->flist, &pCifsInode->openFileList);
170
171 if ((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
172 pCifsInode->clientCanCacheAll = true;
173 pCifsInode->clientCanCacheRead = true;
174 cFYI(1, ("Exclusive Oplock inode %p", newinode));
175 } else if ((oplock & 0xF) == OPLOCK_READ)
176 pCifsInode->clientCanCacheRead = true;
177 }
178 write_unlock(&GlobalSMBSeslock);
179}
180
132int cifs_posix_open(char *full_path, struct inode **pinode, 181int cifs_posix_open(char *full_path, struct inode **pinode,
133 struct super_block *sb, int mode, int oflags, 182 struct super_block *sb, int mode, int oflags,
134 int *poplock, __u16 *pnetfid, int xid) 183 int *poplock, __u16 *pnetfid, int xid)
135{ 184{
136 int rc; 185 int rc;
137 __u32 oplock; 186 __u32 oplock;
187 bool write_only = false;
138 FILE_UNIX_BASIC_INFO *presp_data; 188 FILE_UNIX_BASIC_INFO *presp_data;
139 __u32 posix_flags = 0; 189 __u32 posix_flags = 0;
140 struct cifs_sb_info *cifs_sb = CIFS_SB(sb); 190 struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
@@ -172,6 +222,8 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
172 if (oflags & O_DIRECT) 222 if (oflags & O_DIRECT)
173 posix_flags |= SMB_O_DIRECT; 223 posix_flags |= SMB_O_DIRECT;
174 224
225 if (!(oflags & FMODE_READ))
226 write_only = true;
175 227
176 rc = CIFSPOSIXCreate(xid, cifs_sb->tcon, posix_flags, mode, 228 rc = CIFSPOSIXCreate(xid, cifs_sb->tcon, posix_flags, mode,
177 pnetfid, presp_data, &oplock, full_path, 229 pnetfid, presp_data, &oplock, full_path,
@@ -187,8 +239,10 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
187 if (!pinode) 239 if (!pinode)
188 goto posix_open_ret; /* caller does not need info */ 240 goto posix_open_ret; /* caller does not need info */
189 241
190 if (*pinode == NULL) 242 if (*pinode == NULL) {
191 *pinode = cifs_new_inode(sb, &presp_data->UniqueId); 243 __u64 unique_id = le64_to_cpu(presp_data->UniqueId);
244 *pinode = cifs_new_inode(sb, &unique_id);
245 }
192 /* else an inode was passed in. Update its info, don't create one */ 246 /* else an inode was passed in. Update its info, don't create one */
193 247
194 /* We do not need to close the file if new_inode fails since 248 /* We do not need to close the file if new_inode fails since
@@ -198,6 +252,8 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
198 252
199 posix_fill_in_inode(*pinode, presp_data, 1); 253 posix_fill_in_inode(*pinode, presp_data, 1);
200 254
255 cifs_fill_fileinfo(*pinode, *pnetfid, cifs_sb->tcon, write_only);
256
201posix_open_ret: 257posix_open_ret:
202 kfree(presp_data); 258 kfree(presp_data);
203 return rc; 259 return rc;
@@ -239,7 +295,6 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
239 char *full_path = NULL; 295 char *full_path = NULL;
240 FILE_ALL_INFO *buf = NULL; 296 FILE_ALL_INFO *buf = NULL;
241 struct inode *newinode = NULL; 297 struct inode *newinode = NULL;
242 struct cifsInodeInfo *pCifsInode;
243 int disposition = FILE_OVERWRITE_IF; 298 int disposition = FILE_OVERWRITE_IF;
244 bool write_only = false; 299 bool write_only = false;
245 300
@@ -410,44 +465,8 @@ cifs_create_set_dentry:
410 /* mknod case - do not leave file open */ 465 /* mknod case - do not leave file open */
411 CIFSSMBClose(xid, tcon, fileHandle); 466 CIFSSMBClose(xid, tcon, fileHandle);
412 } else if (newinode) { 467 } else if (newinode) {
413 struct cifsFileInfo *pCifsFile = 468 cifs_fill_fileinfo(newinode, fileHandle,
414 kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL); 469 cifs_sb->tcon, write_only);
415
416 if (pCifsFile == NULL)
417 goto cifs_create_out;
418 pCifsFile->netfid = fileHandle;
419 pCifsFile->pid = current->tgid;
420 pCifsFile->pInode = newinode;
421 pCifsFile->invalidHandle = false;
422 pCifsFile->closePend = false;
423 init_MUTEX(&pCifsFile->fh_sem);
424 mutex_init(&pCifsFile->lock_mutex);
425 INIT_LIST_HEAD(&pCifsFile->llist);
426 atomic_set(&pCifsFile->wrtPending, 0);
427
428 /* set the following in open now
429 pCifsFile->pfile = file; */
430 write_lock(&GlobalSMBSeslock);
431 list_add(&pCifsFile->tlist, &tcon->openFileList);
432 pCifsInode = CIFS_I(newinode);
433 if (pCifsInode) {
434 /* if readable file instance put first in list*/
435 if (write_only) {
436 list_add_tail(&pCifsFile->flist,
437 &pCifsInode->openFileList);
438 } else {
439 list_add(&pCifsFile->flist,
440 &pCifsInode->openFileList);
441 }
442 if ((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
443 pCifsInode->clientCanCacheAll = true;
444 pCifsInode->clientCanCacheRead = true;
445 cFYI(1, ("Exclusive Oplock inode %p",
446 newinode));
447 } else if ((oplock & 0xF) == OPLOCK_READ)
448 pCifsInode->clientCanCacheRead = true;
449 }
450 write_unlock(&GlobalSMBSeslock);
451 } 470 }
452cifs_create_out: 471cifs_create_out:
453 kfree(buf); 472 kfree(buf);
@@ -580,17 +599,21 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode,
580 return rc; 599 return rc;
581} 600}
582 601
583
584struct dentry * 602struct dentry *
585cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, 603cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
586 struct nameidata *nd) 604 struct nameidata *nd)
587{ 605{
588 int xid; 606 int xid;
589 int rc = 0; /* to get around spurious gcc warning, set to zero here */ 607 int rc = 0; /* to get around spurious gcc warning, set to zero here */
608 int oplock = 0;
609 int mode;
610 __u16 fileHandle = 0;
611 bool posix_open = false;
590 struct cifs_sb_info *cifs_sb; 612 struct cifs_sb_info *cifs_sb;
591 struct cifsTconInfo *pTcon; 613 struct cifsTconInfo *pTcon;
592 struct inode *newInode = NULL; 614 struct inode *newInode = NULL;
593 char *full_path = NULL; 615 char *full_path = NULL;
616 struct file *filp;
594 617
595 xid = GetXid(); 618 xid = GetXid();
596 619
@@ -632,12 +655,37 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
632 } 655 }
633 cFYI(1, ("Full path: %s inode = 0x%p", full_path, direntry->d_inode)); 656 cFYI(1, ("Full path: %s inode = 0x%p", full_path, direntry->d_inode));
634 657
635 if (pTcon->unix_ext) 658 if (pTcon->unix_ext) {
636 rc = cifs_get_inode_info_unix(&newInode, full_path, 659 if (!(nd->flags & (LOOKUP_PARENT | LOOKUP_DIRECTORY)) &&
637 parent_dir_inode->i_sb, xid); 660 (nd->flags & LOOKUP_OPEN)) {
638 else 661 if (!((nd->intent.open.flags & O_CREAT) &&
662 (nd->intent.open.flags & O_EXCL))) {
663 mode = nd->intent.open.create_mode &
664 ~current_umask();
665 rc = cifs_posix_open(full_path, &newInode,
666 parent_dir_inode->i_sb, mode,
667 nd->intent.open.flags, &oplock,
668 &fileHandle, xid);
669 /*
670 * This code works around a bug in
671 * samba posix open in samba versions 3.3.1
672 * and earlier where create works
673 * but open fails with invalid parameter.
674 * If either of these error codes are
675 * returned, follow the normal lookup.
676 * Otherwise, the error during posix open
677 * is handled.
678 */
679 if ((rc != -EINVAL) && (rc != -EOPNOTSUPP))
680 posix_open = true;
681 }
682 }
683 if (!posix_open)
684 rc = cifs_get_inode_info_unix(&newInode, full_path,
685 parent_dir_inode->i_sb, xid);
686 } else
639 rc = cifs_get_inode_info(&newInode, full_path, NULL, 687 rc = cifs_get_inode_info(&newInode, full_path, NULL,
640 parent_dir_inode->i_sb, xid, NULL); 688 parent_dir_inode->i_sb, xid, NULL);
641 689
642 if ((rc == 0) && (newInode != NULL)) { 690 if ((rc == 0) && (newInode != NULL)) {
643 if (pTcon->nocase) 691 if (pTcon->nocase)
@@ -645,7 +693,8 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
645 else 693 else
646 direntry->d_op = &cifs_dentry_ops; 694 direntry->d_op = &cifs_dentry_ops;
647 d_add(direntry, newInode); 695 d_add(direntry, newInode);
648 696 if (posix_open)
697 filp = lookup_instantiate_filp(nd, direntry, NULL);
649 /* since paths are not looked up by component - the parent 698 /* since paths are not looked up by component - the parent
650 directories are presumed to be good here */ 699 directories are presumed to be good here */
651 renew_parental_timestamps(direntry); 700 renew_parental_timestamps(direntry);
diff --git a/fs/cifs/dns_resolve.c b/fs/cifs/dns_resolve.c
index 1e0c1bd8f2e4..df4a306f697e 100644
--- a/fs/cifs/dns_resolve.c
+++ b/fs/cifs/dns_resolve.c
@@ -78,7 +78,7 @@ dns_resolver_instantiate(struct key *key, const void *data,
78 } 78 }
79 79
80 key->type_data.x[0] = datalen; 80 key->type_data.x[0] = datalen;
81 rcu_assign_pointer(key->payload.data, ip); 81 key->payload.data = ip;
82 82
83 return rc; 83 return rc;
84} 84}
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 81747acca4c4..50ca088d8860 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -46,7 +46,7 @@ static inline struct cifsFileInfo *cifs_init_private(
46 memset(private_data, 0, sizeof(struct cifsFileInfo)); 46 memset(private_data, 0, sizeof(struct cifsFileInfo));
47 private_data->netfid = netfid; 47 private_data->netfid = netfid;
48 private_data->pid = current->tgid; 48 private_data->pid = current->tgid;
49 init_MUTEX(&private_data->fh_sem); 49 mutex_init(&private_data->fh_mutex);
50 mutex_init(&private_data->lock_mutex); 50 mutex_init(&private_data->lock_mutex);
51 INIT_LIST_HEAD(&private_data->llist); 51 INIT_LIST_HEAD(&private_data->llist);
52 private_data->pfile = file; /* needed for writepage */ 52 private_data->pfile = file; /* needed for writepage */
@@ -284,35 +284,32 @@ int cifs_open(struct inode *inode, struct file *file)
284 cifs_sb = CIFS_SB(inode->i_sb); 284 cifs_sb = CIFS_SB(inode->i_sb);
285 tcon = cifs_sb->tcon; 285 tcon = cifs_sb->tcon;
286 286
287 if (file->f_flags & O_CREAT) { 287 /* search inode for this file and fill in file->private_data */
288 /* search inode for this file and fill in file->private_data */ 288 pCifsInode = CIFS_I(file->f_path.dentry->d_inode);
289 pCifsInode = CIFS_I(file->f_path.dentry->d_inode); 289 read_lock(&GlobalSMBSeslock);
290 read_lock(&GlobalSMBSeslock); 290 list_for_each(tmp, &pCifsInode->openFileList) {
291 list_for_each(tmp, &pCifsInode->openFileList) { 291 pCifsFile = list_entry(tmp, struct cifsFileInfo,
292 pCifsFile = list_entry(tmp, struct cifsFileInfo, 292 flist);
293 flist); 293 if ((pCifsFile->pfile == NULL) &&
294 if ((pCifsFile->pfile == NULL) && 294 (pCifsFile->pid == current->tgid)) {
295 (pCifsFile->pid == current->tgid)) { 295 /* mode set in cifs_create */
296 /* mode set in cifs_create */ 296
297 297 /* needed for writepage */
298 /* needed for writepage */ 298 pCifsFile->pfile = file;
299 pCifsFile->pfile = file; 299
300 300 file->private_data = pCifsFile;
301 file->private_data = pCifsFile; 301 break;
302 break;
303 }
304 }
305 read_unlock(&GlobalSMBSeslock);
306 if (file->private_data != NULL) {
307 rc = 0;
308 FreeXid(xid);
309 return rc;
310 } else {
311 if (file->f_flags & O_EXCL)
312 cERROR(1, ("could not find file instance for "
313 "new file %p", file));
314 } 302 }
315 } 303 }
304 read_unlock(&GlobalSMBSeslock);
305
306 if (file->private_data != NULL) {
307 rc = 0;
308 FreeXid(xid);
309 return rc;
310 } else if ((file->f_flags & O_CREAT) && (file->f_flags & O_EXCL))
311 cERROR(1, ("could not find file instance for "
312 "new file %p", file));
316 313
317 full_path = build_path_from_dentry(file->f_path.dentry); 314 full_path = build_path_from_dentry(file->f_path.dentry);
318 if (full_path == NULL) { 315 if (full_path == NULL) {
@@ -500,9 +497,9 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
500 return -EBADF; 497 return -EBADF;
501 498
502 xid = GetXid(); 499 xid = GetXid();
503 down(&pCifsFile->fh_sem); 500 mutex_unlock(&pCifsFile->fh_mutex);
504 if (!pCifsFile->invalidHandle) { 501 if (!pCifsFile->invalidHandle) {
505 up(&pCifsFile->fh_sem); 502 mutex_lock(&pCifsFile->fh_mutex);
506 FreeXid(xid); 503 FreeXid(xid);
507 return 0; 504 return 0;
508 } 505 }
@@ -533,7 +530,7 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
533 if (full_path == NULL) { 530 if (full_path == NULL) {
534 rc = -ENOMEM; 531 rc = -ENOMEM;
535reopen_error_exit: 532reopen_error_exit:
536 up(&pCifsFile->fh_sem); 533 mutex_lock(&pCifsFile->fh_mutex);
537 FreeXid(xid); 534 FreeXid(xid);
538 return rc; 535 return rc;
539 } 536 }
@@ -575,14 +572,14 @@ reopen_error_exit:
575 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & 572 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
576 CIFS_MOUNT_MAP_SPECIAL_CHR); 573 CIFS_MOUNT_MAP_SPECIAL_CHR);
577 if (rc) { 574 if (rc) {
578 up(&pCifsFile->fh_sem); 575 mutex_lock(&pCifsFile->fh_mutex);
579 cFYI(1, ("cifs_open returned 0x%x", rc)); 576 cFYI(1, ("cifs_open returned 0x%x", rc));
580 cFYI(1, ("oplock: %d", oplock)); 577 cFYI(1, ("oplock: %d", oplock));
581 } else { 578 } else {
582reopen_success: 579reopen_success:
583 pCifsFile->netfid = netfid; 580 pCifsFile->netfid = netfid;
584 pCifsFile->invalidHandle = false; 581 pCifsFile->invalidHandle = false;
585 up(&pCifsFile->fh_sem); 582 mutex_lock(&pCifsFile->fh_mutex);
586 pCifsInode = CIFS_I(inode); 583 pCifsInode = CIFS_I(inode);
587 if (pCifsInode) { 584 if (pCifsInode) {
588 if (can_flush) { 585 if (can_flush) {
@@ -971,6 +968,40 @@ int cifs_lock(struct file *file, int cmd, struct file_lock *pfLock)
971 return rc; 968 return rc;
972} 969}
973 970
971/*
972 * Set the timeout on write requests past EOF. For some servers (Windows)
973 * these calls can be very long.
974 *
975 * If we're writing >10M past the EOF we give a 180s timeout. Anything less
976 * than that gets a 45s timeout. Writes not past EOF get 15s timeouts.
977 * The 10M cutoff is totally arbitrary. A better scheme for this would be
978 * welcome if someone wants to suggest one.
979 *
980 * We may be able to do a better job with this if there were some way to
981 * declare that a file should be sparse.
982 */
983static int
984cifs_write_timeout(struct cifsInodeInfo *cifsi, loff_t offset)
985{
986 if (offset <= cifsi->server_eof)
987 return CIFS_STD_OP;
988 else if (offset > (cifsi->server_eof + (10 * 1024 * 1024)))
989 return CIFS_VLONG_OP;
990 else
991 return CIFS_LONG_OP;
992}
993
994/* update the file size (if needed) after a write */
995static void
996cifs_update_eof(struct cifsInodeInfo *cifsi, loff_t offset,
997 unsigned int bytes_written)
998{
999 loff_t end_of_write = offset + bytes_written;
1000
1001 if (end_of_write > cifsi->server_eof)
1002 cifsi->server_eof = end_of_write;
1003}
1004
974ssize_t cifs_user_write(struct file *file, const char __user *write_data, 1005ssize_t cifs_user_write(struct file *file, const char __user *write_data,
975 size_t write_size, loff_t *poffset) 1006 size_t write_size, loff_t *poffset)
976{ 1007{
@@ -981,6 +1012,7 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data,
981 struct cifsTconInfo *pTcon; 1012 struct cifsTconInfo *pTcon;
982 int xid, long_op; 1013 int xid, long_op;
983 struct cifsFileInfo *open_file; 1014 struct cifsFileInfo *open_file;
1015 struct cifsInodeInfo *cifsi = CIFS_I(file->f_path.dentry->d_inode);
984 1016
985 cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); 1017 cifs_sb = CIFS_SB(file->f_path.dentry->d_sb);
986 1018
@@ -1000,11 +1032,7 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data,
1000 1032
1001 xid = GetXid(); 1033 xid = GetXid();
1002 1034
1003 if (*poffset > file->f_path.dentry->d_inode->i_size) 1035 long_op = cifs_write_timeout(cifsi, *poffset);
1004 long_op = CIFS_VLONG_OP; /* writes past EOF take long time */
1005 else
1006 long_op = CIFS_LONG_OP;
1007
1008 for (total_written = 0; write_size > total_written; 1036 for (total_written = 0; write_size > total_written;
1009 total_written += bytes_written) { 1037 total_written += bytes_written) {
1010 rc = -EAGAIN; 1038 rc = -EAGAIN;
@@ -1048,8 +1076,10 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data,
1048 FreeXid(xid); 1076 FreeXid(xid);
1049 return rc; 1077 return rc;
1050 } 1078 }
1051 } else 1079 } else {
1080 cifs_update_eof(cifsi, *poffset, bytes_written);
1052 *poffset += bytes_written; 1081 *poffset += bytes_written;
1082 }
1053 long_op = CIFS_STD_OP; /* subsequent writes fast - 1083 long_op = CIFS_STD_OP; /* subsequent writes fast -
1054 15 seconds is plenty */ 1084 15 seconds is plenty */
1055 } 1085 }
@@ -1085,6 +1115,7 @@ static ssize_t cifs_write(struct file *file, const char *write_data,
1085 struct cifsTconInfo *pTcon; 1115 struct cifsTconInfo *pTcon;
1086 int xid, long_op; 1116 int xid, long_op;
1087 struct cifsFileInfo *open_file; 1117 struct cifsFileInfo *open_file;
1118 struct cifsInodeInfo *cifsi = CIFS_I(file->f_path.dentry->d_inode);
1088 1119
1089 cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); 1120 cifs_sb = CIFS_SB(file->f_path.dentry->d_sb);
1090 1121
@@ -1099,11 +1130,7 @@ static ssize_t cifs_write(struct file *file, const char *write_data,
1099 1130
1100 xid = GetXid(); 1131 xid = GetXid();
1101 1132
1102 if (*poffset > file->f_path.dentry->d_inode->i_size) 1133 long_op = cifs_write_timeout(cifsi, *poffset);
1103 long_op = CIFS_VLONG_OP; /* writes past EOF can be slow */
1104 else
1105 long_op = CIFS_LONG_OP;
1106
1107 for (total_written = 0; write_size > total_written; 1134 for (total_written = 0; write_size > total_written;
1108 total_written += bytes_written) { 1135 total_written += bytes_written) {
1109 rc = -EAGAIN; 1136 rc = -EAGAIN;
@@ -1166,8 +1193,10 @@ static ssize_t cifs_write(struct file *file, const char *write_data,
1166 FreeXid(xid); 1193 FreeXid(xid);
1167 return rc; 1194 return rc;
1168 } 1195 }
1169 } else 1196 } else {
1197 cifs_update_eof(cifsi, *poffset, bytes_written);
1170 *poffset += bytes_written; 1198 *poffset += bytes_written;
1199 }
1171 long_op = CIFS_STD_OP; /* subsequent writes fast - 1200 long_op = CIFS_STD_OP; /* subsequent writes fast -
1172 15 seconds is plenty */ 1201 15 seconds is plenty */
1173 } 1202 }
@@ -1380,11 +1409,12 @@ static int cifs_writepages(struct address_space *mapping,
1380 int nr_pages; 1409 int nr_pages;
1381 __u64 offset = 0; 1410 __u64 offset = 0;
1382 struct cifsFileInfo *open_file; 1411 struct cifsFileInfo *open_file;
1412 struct cifsInodeInfo *cifsi = CIFS_I(mapping->host);
1383 struct page *page; 1413 struct page *page;
1384 struct pagevec pvec; 1414 struct pagevec pvec;
1385 int rc = 0; 1415 int rc = 0;
1386 int scanned = 0; 1416 int scanned = 0;
1387 int xid; 1417 int xid, long_op;
1388 1418
1389 cifs_sb = CIFS_SB(mapping->host->i_sb); 1419 cifs_sb = CIFS_SB(mapping->host->i_sb);
1390 1420
@@ -1528,12 +1558,15 @@ retry:
1528 cERROR(1, ("No writable handles for inode")); 1558 cERROR(1, ("No writable handles for inode"));
1529 rc = -EBADF; 1559 rc = -EBADF;
1530 } else { 1560 } else {
1561 long_op = cifs_write_timeout(cifsi, offset);
1531 rc = CIFSSMBWrite2(xid, cifs_sb->tcon, 1562 rc = CIFSSMBWrite2(xid, cifs_sb->tcon,
1532 open_file->netfid, 1563 open_file->netfid,
1533 bytes_to_write, offset, 1564 bytes_to_write, offset,
1534 &bytes_written, iov, n_iov, 1565 &bytes_written, iov, n_iov,
1535 CIFS_LONG_OP); 1566 long_op);
1536 atomic_dec(&open_file->wrtPending); 1567 atomic_dec(&open_file->wrtPending);
1568 cifs_update_eof(cifsi, offset, bytes_written);
1569
1537 if (rc || bytes_written < bytes_to_write) { 1570 if (rc || bytes_written < bytes_to_write) {
1538 cERROR(1, ("Write2 ret %d, wrote %d", 1571 cERROR(1, ("Write2 ret %d, wrote %d",
1539 rc, bytes_written)); 1572 rc, bytes_written));
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index f121a80fdd6f..f36b4e40e443 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -143,6 +143,7 @@ static void cifs_unix_info_to_inode(struct inode *inode,
143 143
144 inode->i_nlink = le64_to_cpu(info->Nlinks); 144 inode->i_nlink = le64_to_cpu(info->Nlinks);
145 145
146 cifsInfo->server_eof = end_of_file;
146 spin_lock(&inode->i_lock); 147 spin_lock(&inode->i_lock);
147 if (is_size_safe_to_change(cifsInfo, end_of_file)) { 148 if (is_size_safe_to_change(cifsInfo, end_of_file)) {
148 /* 149 /*
@@ -276,7 +277,8 @@ int cifs_get_inode_info_unix(struct inode **pinode,
276 277
277 /* get new inode */ 278 /* get new inode */
278 if (*pinode == NULL) { 279 if (*pinode == NULL) {
279 *pinode = cifs_new_inode(sb, &find_data.UniqueId); 280 __u64 unique_id = le64_to_cpu(find_data.UniqueId);
281 *pinode = cifs_new_inode(sb, &unique_id);
280 if (*pinode == NULL) { 282 if (*pinode == NULL) {
281 rc = -ENOMEM; 283 rc = -ENOMEM;
282 goto cgiiu_exit; 284 goto cgiiu_exit;
@@ -605,12 +607,12 @@ int cifs_get_inode_info(struct inode **pinode,
605 inode->i_mode |= S_IFREG; 607 inode->i_mode |= S_IFREG;
606 } 608 }
607 609
610 cifsInfo->server_eof = le64_to_cpu(pfindData->EndOfFile);
608 spin_lock(&inode->i_lock); 611 spin_lock(&inode->i_lock);
609 if (is_size_safe_to_change(cifsInfo, 612 if (is_size_safe_to_change(cifsInfo, cifsInfo->server_eof)) {
610 le64_to_cpu(pfindData->EndOfFile))) {
611 /* can not safely shrink the file size here if the 613 /* can not safely shrink the file size here if the
612 client is writing to it due to potential races */ 614 client is writing to it due to potential races */
613 i_size_write(inode, le64_to_cpu(pfindData->EndOfFile)); 615 i_size_write(inode, cifsInfo->server_eof);
614 616
615 /* 512 bytes (2**9) is the fake blocksize that must be 617 /* 512 bytes (2**9) is the fake blocksize that must be
616 used for this calculation */ 618 used for this calculation */
@@ -1138,6 +1140,7 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
1138 cFYI(1, ("posix mkdir returned 0x%x", rc)); 1140 cFYI(1, ("posix mkdir returned 0x%x", rc));
1139 d_drop(direntry); 1141 d_drop(direntry);
1140 } else { 1142 } else {
1143 __u64 unique_id;
1141 if (pInfo->Type == cpu_to_le32(-1)) { 1144 if (pInfo->Type == cpu_to_le32(-1)) {
1142 /* no return info, go query for it */ 1145 /* no return info, go query for it */
1143 kfree(pInfo); 1146 kfree(pInfo);
@@ -1151,8 +1154,8 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
1151 else 1154 else
1152 direntry->d_op = &cifs_dentry_ops; 1155 direntry->d_op = &cifs_dentry_ops;
1153 1156
1154 newinode = cifs_new_inode(inode->i_sb, 1157 unique_id = le64_to_cpu(pInfo->UniqueId);
1155 &pInfo->UniqueId); 1158 newinode = cifs_new_inode(inode->i_sb, &unique_id);
1156 if (newinode == NULL) { 1159 if (newinode == NULL) {
1157 kfree(pInfo); 1160 kfree(pInfo);
1158 goto mkdir_get_info; 1161 goto mkdir_get_info;
@@ -1450,7 +1453,8 @@ int cifs_rename(struct inode *source_dir, struct dentry *source_dentry,
1450 checking the UniqueId via FILE_INTERNAL_INFO */ 1453 checking the UniqueId via FILE_INTERNAL_INFO */
1451 1454
1452unlink_target: 1455unlink_target:
1453 if ((rc == -EACCES) || (rc == -EEXIST)) { 1456 /* Try unlinking the target dentry if it's not negative */
1457 if (target_dentry->d_inode && (rc == -EACCES || rc == -EEXIST)) {
1454 tmprc = cifs_unlink(target_dir, target_dentry); 1458 tmprc = cifs_unlink(target_dir, target_dentry);
1455 if (tmprc) 1459 if (tmprc)
1456 goto cifs_rename_exit; 1460 goto cifs_rename_exit;
@@ -1753,6 +1757,7 @@ cifs_set_file_size(struct inode *inode, struct iattr *attrs,
1753 } 1757 }
1754 1758
1755 if (rc == 0) { 1759 if (rc == 0) {
1760 cifsInode->server_eof = attrs->ia_size;
1756 rc = cifs_vmtruncate(inode, attrs->ia_size); 1761 rc = cifs_vmtruncate(inode, attrs->ia_size);
1757 cifs_truncate_page(inode->i_mapping, inode->i_size); 1762 cifs_truncate_page(inode->i_mapping, inode->i_size);
1758 } 1763 }
@@ -1792,20 +1797,21 @@ cifs_setattr_unix(struct dentry *direntry, struct iattr *attrs)
1792 goto out; 1797 goto out;
1793 } 1798 }
1794 1799
1795 if ((attrs->ia_valid & ATTR_MTIME) || (attrs->ia_valid & ATTR_SIZE)) { 1800 /*
1796 /* 1801 * Attempt to flush data before changing attributes. We need to do
1797 Flush data before changing file size or changing the last 1802 * this for ATTR_SIZE and ATTR_MTIME for sure, and if we change the
1798 write time of the file on the server. If the 1803 * ownership or mode then we may also need to do this. Here, we take
1799 flush returns error, store it to report later and continue. 1804 * the safe way out and just do the flush on all setattr requests. If
1800 BB: This should be smarter. Why bother flushing pages that 1805 * the flush returns error, store it to report later and continue.
1801 will be truncated anyway? Also, should we error out here if 1806 *
1802 the flush returns error? 1807 * BB: This should be smarter. Why bother flushing pages that
1803 */ 1808 * will be truncated anyway? Also, should we error out here if
1804 rc = filemap_write_and_wait(inode->i_mapping); 1809 * the flush returns error?
1805 if (rc != 0) { 1810 */
1806 cifsInode->write_behind_rc = rc; 1811 rc = filemap_write_and_wait(inode->i_mapping);
1807 rc = 0; 1812 if (rc != 0) {
1808 } 1813 cifsInode->write_behind_rc = rc;
1814 rc = 0;
1809 } 1815 }
1810 1816
1811 if (attrs->ia_valid & ATTR_SIZE) { 1817 if (attrs->ia_valid & ATTR_SIZE) {
@@ -1903,20 +1909,21 @@ cifs_setattr_nounix(struct dentry *direntry, struct iattr *attrs)
1903 return -ENOMEM; 1909 return -ENOMEM;
1904 } 1910 }
1905 1911
1906 if ((attrs->ia_valid & ATTR_MTIME) || (attrs->ia_valid & ATTR_SIZE)) { 1912 /*
1907 /* 1913 * Attempt to flush data before changing attributes. We need to do
1908 Flush data before changing file size or changing the last 1914 * this for ATTR_SIZE and ATTR_MTIME for sure, and if we change the
1909 write time of the file on the server. If the 1915 * ownership or mode then we may also need to do this. Here, we take
1910 flush returns error, store it to report later and continue. 1916 * the safe way out and just do the flush on all setattr requests. If
1911 BB: This should be smarter. Why bother flushing pages that 1917 * the flush returns error, store it to report later and continue.
1912 will be truncated anyway? Also, should we error out here if 1918 *
1913 the flush returns error? 1919 * BB: This should be smarter. Why bother flushing pages that
1914 */ 1920 * will be truncated anyway? Also, should we error out here if
1915 rc = filemap_write_and_wait(inode->i_mapping); 1921 * the flush returns error?
1916 if (rc != 0) { 1922 */
1917 cifsInode->write_behind_rc = rc; 1923 rc = filemap_write_and_wait(inode->i_mapping);
1918 rc = 0; 1924 if (rc != 0) {
1919 } 1925 cifsInode->write_behind_rc = rc;
1926 rc = 0;
1920 } 1927 }
1921 1928
1922 if (attrs->ia_valid & ATTR_SIZE) { 1929 if (attrs->ia_valid & ATTR_SIZE) {
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index c2c01ff4c32c..1a8be6228333 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -239,6 +239,7 @@ static void fill_in_inode(struct inode *tmp_inode, int new_buf_type,
239 if (atomic_read(&cifsInfo->inUse) == 0) 239 if (atomic_read(&cifsInfo->inUse) == 0)
240 atomic_set(&cifsInfo->inUse, 1); 240 atomic_set(&cifsInfo->inUse, 1);
241 241
242 cifsInfo->server_eof = end_of_file;
242 spin_lock(&tmp_inode->i_lock); 243 spin_lock(&tmp_inode->i_lock);
243 if (is_size_safe_to_change(cifsInfo, end_of_file)) { 244 if (is_size_safe_to_change(cifsInfo, end_of_file)) {
244 /* can not safely change the file size here if the 245 /* can not safely change the file size here if the
@@ -375,6 +376,7 @@ static void unix_fill_in_inode(struct inode *tmp_inode,
375 tmp_inode->i_gid = le64_to_cpu(pfindData->Gid); 376 tmp_inode->i_gid = le64_to_cpu(pfindData->Gid);
376 tmp_inode->i_nlink = le64_to_cpu(pfindData->Nlinks); 377 tmp_inode->i_nlink = le64_to_cpu(pfindData->Nlinks);
377 378
379 cifsInfo->server_eof = end_of_file;
378 spin_lock(&tmp_inode->i_lock); 380 spin_lock(&tmp_inode->i_lock);
379 if (is_size_safe_to_change(cifsInfo, end_of_file)) { 381 if (is_size_safe_to_change(cifsInfo, end_of_file)) {
380 /* can not safely change the file size here if the 382 /* can not safely change the file size here if the
@@ -840,7 +842,7 @@ static int cifs_get_name_from_search_buf(struct qstr *pqst,
840 len = strnlen(filename, PATH_MAX); 842 len = strnlen(filename, PATH_MAX);
841 } 843 }
842 844
843 *pinum = pFindData->UniqueId; 845 *pinum = le64_to_cpu(pFindData->UniqueId);
844 } else if (level == SMB_FIND_FILE_DIRECTORY_INFO) { 846 } else if (level == SMB_FIND_FILE_DIRECTORY_INFO) {
845 FILE_DIRECTORY_INFO *pFindData = 847 FILE_DIRECTORY_INFO *pFindData =
846 (FILE_DIRECTORY_INFO *)current_entry; 848 (FILE_DIRECTORY_INFO *)current_entry;
@@ -856,7 +858,7 @@ static int cifs_get_name_from_search_buf(struct qstr *pqst,
856 (SEARCH_ID_FULL_DIR_INFO *)current_entry; 858 (SEARCH_ID_FULL_DIR_INFO *)current_entry;
857 filename = &pFindData->FileName[0]; 859 filename = &pFindData->FileName[0];
858 len = le32_to_cpu(pFindData->FileNameLength); 860 len = le32_to_cpu(pFindData->FileNameLength);
859 *pinum = pFindData->UniqueId; 861 *pinum = le64_to_cpu(pFindData->UniqueId);
860 } else if (level == SMB_FIND_FILE_BOTH_DIRECTORY_INFO) { 862 } else if (level == SMB_FIND_FILE_BOTH_DIRECTORY_INFO) {
861 FILE_BOTH_DIRECTORY_INFO *pFindData = 863 FILE_BOTH_DIRECTORY_INFO *pFindData =
862 (FILE_BOTH_DIRECTORY_INFO *)current_entry; 864 (FILE_BOTH_DIRECTORY_INFO *)current_entry;
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
index 5c68b4282be9..c652c73760dd 100644
--- a/fs/cifs/sess.c
+++ b/fs/cifs/sess.c
@@ -285,35 +285,36 @@ static int decode_unicode_ssetup(char **pbcc_area, int bleft,
285 int words_left, len; 285 int words_left, len;
286 char *data = *pbcc_area; 286 char *data = *pbcc_area;
287 287
288
289
290 cFYI(1, ("bleft %d", bleft)); 288 cFYI(1, ("bleft %d", bleft));
291 289
292 290 /*
293 /* SMB header is unaligned, so cifs servers word align start of 291 * Windows servers do not always double null terminate their final
294 Unicode strings */ 292 * Unicode string. Check to see if there are an uneven number of bytes
295 data++; 293 * left. If so, then add an extra NULL pad byte to the end of the
296 bleft--; /* Windows servers do not always double null terminate 294 * response.
297 their final Unicode string - in which case we 295 *
298 now will not attempt to decode the byte of junk 296 * See section 2.7.2 in "Implementing CIFS" for details
299 which follows it */ 297 */
298 if (bleft % 2) {
299 data[bleft] = 0;
300 ++bleft;
301 }
300 302
301 words_left = bleft / 2; 303 words_left = bleft / 2;
302 304
303 /* save off server operating system */ 305 /* save off server operating system */
304 len = UniStrnlen((wchar_t *) data, words_left); 306 len = UniStrnlen((wchar_t *) data, words_left);
305 307
306/* We look for obvious messed up bcc or strings in response so we do not go off
307 the end since (at least) WIN2K and Windows XP have a major bug in not null
308 terminating last Unicode string in response */
309 if (len >= words_left) 308 if (len >= words_left)
310 return rc; 309 return rc;
311 310
312 kfree(ses->serverOS); 311 kfree(ses->serverOS);
313 /* UTF-8 string will not grow more than four times as big as UCS-16 */ 312 /* UTF-8 string will not grow more than four times as big as UCS-16 */
314 ses->serverOS = kzalloc((4 * len) + 2 /* trailing null */, GFP_KERNEL); 313 ses->serverOS = kzalloc((4 * len) + 2 /* trailing null */, GFP_KERNEL);
315 if (ses->serverOS != NULL) 314 if (ses->serverOS != NULL) {
316 cifs_strfromUCS_le(ses->serverOS, (__le16 *)data, len, nls_cp); 315 cifs_strfromUCS_le(ses->serverOS, (__le16 *)data, len, nls_cp);
316 cFYI(1, ("serverOS=%s", ses->serverOS));
317 }
317 data += 2 * (len + 1); 318 data += 2 * (len + 1);
318 words_left -= len + 1; 319 words_left -= len + 1;
319 320
@@ -328,6 +329,7 @@ static int decode_unicode_ssetup(char **pbcc_area, int bleft,
328 if (ses->serverNOS != NULL) { 329 if (ses->serverNOS != NULL) {
329 cifs_strfromUCS_le(ses->serverNOS, (__le16 *)data, len, 330 cifs_strfromUCS_le(ses->serverNOS, (__le16 *)data, len,
330 nls_cp); 331 nls_cp);
332 cFYI(1, ("serverNOS=%s", ses->serverNOS));
331 if (strncmp(ses->serverNOS, "NT LAN Manager 4", 16) == 0) { 333 if (strncmp(ses->serverNOS, "NT LAN Manager 4", 16) == 0) {
332 cFYI(1, ("NT4 server")); 334 cFYI(1, ("NT4 server"));
333 ses->flags |= CIFS_SES_NT4; 335 ses->flags |= CIFS_SES_NT4;
@@ -343,12 +345,11 @@ static int decode_unicode_ssetup(char **pbcc_area, int bleft,
343 return rc; 345 return rc;
344 346
345 kfree(ses->serverDomain); 347 kfree(ses->serverDomain);
346 ses->serverDomain = kzalloc(2 * (len + 1), GFP_KERNEL); /* BB FIXME wrong length */ 348 ses->serverDomain = kzalloc((4 * len) + 2, GFP_KERNEL);
347 if (ses->serverDomain != NULL) { 349 if (ses->serverDomain != NULL) {
348 cifs_strfromUCS_le(ses->serverDomain, (__le16 *)data, len, 350 cifs_strfromUCS_le(ses->serverDomain, (__le16 *)data, len,
349 nls_cp); 351 nls_cp);
350 ses->serverDomain[2*len] = 0; 352 cFYI(1, ("serverDomain=%s", ses->serverDomain));
351 ses->serverDomain[(2*len) + 1] = 0;
352 } 353 }
353 data += 2 * (len + 1); 354 data += 2 * (len + 1);
354 words_left -= len + 1; 355 words_left -= len + 1;
@@ -702,12 +703,18 @@ CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, int first_time,
702 } 703 }
703 704
704 /* BB check if Unicode and decode strings */ 705 /* BB check if Unicode and decode strings */
705 if (smb_buf->Flags2 & SMBFLG2_UNICODE) 706 if (smb_buf->Flags2 & SMBFLG2_UNICODE) {
707 /* unicode string area must be word-aligned */
708 if (((unsigned long) bcc_ptr - (unsigned long) smb_buf) % 2) {
709 ++bcc_ptr;
710 --bytes_remaining;
711 }
706 rc = decode_unicode_ssetup(&bcc_ptr, bytes_remaining, 712 rc = decode_unicode_ssetup(&bcc_ptr, bytes_remaining,
707 ses, nls_cp); 713 ses, nls_cp);
708 else 714 } else {
709 rc = decode_ascii_ssetup(&bcc_ptr, bytes_remaining, 715 rc = decode_ascii_ssetup(&bcc_ptr, bytes_remaining,
710 ses, nls_cp); 716 ses, nls_cp);
717 }
711 718
712ssetup_exit: 719ssetup_exit:
713 if (spnego_key) { 720 if (spnego_key) {
diff --git a/fs/compat.c b/fs/compat.c
index 3f84d5f15889..681ed81e6be0 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -181,22 +181,24 @@ asmlinkage long compat_sys_newstat(char __user * filename,
181 struct compat_stat __user *statbuf) 181 struct compat_stat __user *statbuf)
182{ 182{
183 struct kstat stat; 183 struct kstat stat;
184 int error = vfs_stat_fd(AT_FDCWD, filename, &stat); 184 int error;
185 185
186 if (!error) 186 error = vfs_stat(filename, &stat);
187 error = cp_compat_stat(&stat, statbuf); 187 if (error)
188 return error; 188 return error;
189 return cp_compat_stat(&stat, statbuf);
189} 190}
190 191
191asmlinkage long compat_sys_newlstat(char __user * filename, 192asmlinkage long compat_sys_newlstat(char __user * filename,
192 struct compat_stat __user *statbuf) 193 struct compat_stat __user *statbuf)
193{ 194{
194 struct kstat stat; 195 struct kstat stat;
195 int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); 196 int error;
196 197
197 if (!error) 198 error = vfs_lstat(filename, &stat);
198 error = cp_compat_stat(&stat, statbuf); 199 if (error)
199 return error; 200 return error;
201 return cp_compat_stat(&stat, statbuf);
200} 202}
201 203
202#ifndef __ARCH_WANT_STAT64 204#ifndef __ARCH_WANT_STAT64
@@ -204,21 +206,12 @@ asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user *filename,
204 struct compat_stat __user *statbuf, int flag) 206 struct compat_stat __user *statbuf, int flag)
205{ 207{
206 struct kstat stat; 208 struct kstat stat;
207 int error = -EINVAL; 209 int error;
208
209 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
210 goto out;
211
212 if (flag & AT_SYMLINK_NOFOLLOW)
213 error = vfs_lstat_fd(dfd, filename, &stat);
214 else
215 error = vfs_stat_fd(dfd, filename, &stat);
216
217 if (!error)
218 error = cp_compat_stat(&stat, statbuf);
219 210
220out: 211 error = vfs_fstatat(dfd, filename, &stat, flag);
221 return error; 212 if (error)
213 return error;
214 return cp_compat_stat(&stat, statbuf);
222} 215}
223#endif 216#endif
224 217
@@ -1483,6 +1476,7 @@ int compat_do_execve(char * filename,
1483 struct linux_binprm *bprm; 1476 struct linux_binprm *bprm;
1484 struct file *file; 1477 struct file *file;
1485 struct files_struct *displaced; 1478 struct files_struct *displaced;
1479 bool clear_in_exec;
1486 int retval; 1480 int retval;
1487 1481
1488 retval = unshare_files(&displaced); 1482 retval = unshare_files(&displaced);
@@ -1505,8 +1499,9 @@ int compat_do_execve(char * filename,
1505 goto out_unlock; 1499 goto out_unlock;
1506 1500
1507 retval = check_unsafe_exec(bprm); 1501 retval = check_unsafe_exec(bprm);
1508 if (retval) 1502 if (retval < 0)
1509 goto out_unlock; 1503 goto out_unlock;
1504 clear_in_exec = retval;
1510 1505
1511 file = open_exec(filename); 1506 file = open_exec(filename);
1512 retval = PTR_ERR(file); 1507 retval = PTR_ERR(file);
@@ -1553,9 +1548,7 @@ int compat_do_execve(char * filename,
1553 goto out; 1548 goto out;
1554 1549
1555 /* execve succeeded */ 1550 /* execve succeeded */
1556 write_lock(&current->fs->lock);
1557 current->fs->in_exec = 0; 1551 current->fs->in_exec = 0;
1558 write_unlock(&current->fs->lock);
1559 current->in_execve = 0; 1552 current->in_execve = 0;
1560 mutex_unlock(&current->cred_exec_mutex); 1553 mutex_unlock(&current->cred_exec_mutex);
1561 acct_update_integrals(current); 1554 acct_update_integrals(current);
@@ -1575,9 +1568,8 @@ out_file:
1575 } 1568 }
1576 1569
1577out_unmark: 1570out_unmark:
1578 write_lock(&current->fs->lock); 1571 if (clear_in_exec)
1579 current->fs->in_exec = 0; 1572 current->fs->in_exec = 0;
1580 write_unlock(&current->fs->lock);
1581 1573
1582out_unlock: 1574out_unlock:
1583 current->in_execve = 0; 1575 current->in_execve = 0;
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 3e87ce443ea2..b83f6bcfa51a 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -58,7 +58,6 @@
58#include <linux/i2c.h> 58#include <linux/i2c.h>
59#include <linux/i2c-dev.h> 59#include <linux/i2c-dev.h>
60#include <linux/atalk.h> 60#include <linux/atalk.h>
61#include <linux/loop.h>
62 61
63#include <net/bluetooth/bluetooth.h> 62#include <net/bluetooth/bluetooth.h>
64#include <net/bluetooth/hci.h> 63#include <net/bluetooth/hci.h>
@@ -68,6 +67,7 @@
68#include <linux/gigaset_dev.h> 67#include <linux/gigaset_dev.h>
69 68
70#ifdef CONFIG_BLOCK 69#ifdef CONFIG_BLOCK
70#include <linux/loop.h>
71#include <scsi/scsi.h> 71#include <scsi/scsi.h>
72#include <scsi/scsi_ioctl.h> 72#include <scsi/scsi_ioctl.h>
73#include <scsi/sg.h> 73#include <scsi/sg.h>
@@ -2660,6 +2660,8 @@ HANDLE_IOCTL(SONET_GETFRAMING, do_atm_ioctl)
2660HANDLE_IOCTL(SONET_GETFRSENSE, do_atm_ioctl) 2660HANDLE_IOCTL(SONET_GETFRSENSE, do_atm_ioctl)
2661/* block stuff */ 2661/* block stuff */
2662#ifdef CONFIG_BLOCK 2662#ifdef CONFIG_BLOCK
2663/* loop */
2664IGNORE_IOCTL(LOOP_CLR_FD)
2663/* Raw devices */ 2665/* Raw devices */
2664HANDLE_IOCTL(RAW_SETBIND, raw_ioctl) 2666HANDLE_IOCTL(RAW_SETBIND, raw_ioctl)
2665HANDLE_IOCTL(RAW_GETBIND, raw_ioctl) 2667HANDLE_IOCTL(RAW_GETBIND, raw_ioctl)
@@ -2728,9 +2730,6 @@ HANDLE_IOCTL(LPSETTIMEOUT, lp_timeout_trans)
2728IGNORE_IOCTL(VFAT_IOCTL_READDIR_BOTH32) 2730IGNORE_IOCTL(VFAT_IOCTL_READDIR_BOTH32)
2729IGNORE_IOCTL(VFAT_IOCTL_READDIR_SHORT32) 2731IGNORE_IOCTL(VFAT_IOCTL_READDIR_SHORT32)
2730 2732
2731/* loop */
2732IGNORE_IOCTL(LOOP_CLR_FD)
2733
2734#ifdef CONFIG_SPARC 2733#ifdef CONFIG_SPARC
2735/* Sparc framebuffers, handled in sbusfb_compat_ioctl() */ 2734/* Sparc framebuffers, handled in sbusfb_compat_ioctl() */
2736IGNORE_IOCTL(FBIOGTYPE) 2735IGNORE_IOCTL(FBIOGTYPE)
diff --git a/fs/dcache.c b/fs/dcache.c
index 761d30be2683..1fcffebfb44f 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -2149,7 +2149,6 @@ int is_subdir(struct dentry *new_dentry, struct dentry *old_dentry)
2149 int result; 2149 int result;
2150 unsigned long seq; 2150 unsigned long seq;
2151 2151
2152 /* FIXME: This is old behavior, needed? Please check callers. */
2153 if (new_dentry == old_dentry) 2152 if (new_dentry == old_dentry)
2154 return 1; 2153 return 1;
2155 2154
diff --git a/fs/direct-io.c b/fs/direct-io.c
index da258e7249cc..05763bbc2050 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -307,8 +307,6 @@ dio_bio_alloc(struct dio *dio, struct block_device *bdev,
307 struct bio *bio; 307 struct bio *bio;
308 308
309 bio = bio_alloc(GFP_KERNEL, nr_vecs); 309 bio = bio_alloc(GFP_KERNEL, nr_vecs);
310 if (bio == NULL)
311 return -ENOMEM;
312 310
313 bio->bi_bdev = bdev; 311 bio->bi_bdev = bdev;
314 bio->bi_sector = first_sector; 312 bio->bi_sector = first_sector;
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index 8b65f289ee00..b91851f1cda3 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -483,15 +483,7 @@ int ecryptfs_encrypt_page(struct page *page)
483 ecryptfs_inode = page->mapping->host; 483 ecryptfs_inode = page->mapping->host;
484 crypt_stat = 484 crypt_stat =
485 &(ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat); 485 &(ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat);
486 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { 486 BUG_ON(!(crypt_stat->flags & ECRYPTFS_ENCRYPTED));
487 rc = ecryptfs_write_lower_page_segment(ecryptfs_inode, page,
488 0, PAGE_CACHE_SIZE);
489 if (rc)
490 printk(KERN_ERR "%s: Error attempting to copy "
491 "page at index [%ld]\n", __func__,
492 page->index);
493 goto out;
494 }
495 enc_extent_page = alloc_page(GFP_USER); 487 enc_extent_page = alloc_page(GFP_USER);
496 if (!enc_extent_page) { 488 if (!enc_extent_page) {
497 rc = -ENOMEM; 489 rc = -ENOMEM;
@@ -620,16 +612,7 @@ int ecryptfs_decrypt_page(struct page *page)
620 ecryptfs_inode = page->mapping->host; 612 ecryptfs_inode = page->mapping->host;
621 crypt_stat = 613 crypt_stat =
622 &(ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat); 614 &(ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat);
623 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { 615 BUG_ON(!(crypt_stat->flags & ECRYPTFS_ENCRYPTED));
624 rc = ecryptfs_read_lower_page_segment(page, page->index, 0,
625 PAGE_CACHE_SIZE,
626 ecryptfs_inode);
627 if (rc)
628 printk(KERN_ERR "%s: Error attempting to copy "
629 "page at index [%ld]\n", __func__,
630 page->index);
631 goto out;
632 }
633 enc_extent_page = alloc_page(GFP_USER); 616 enc_extent_page = alloc_page(GFP_USER);
634 if (!enc_extent_page) { 617 if (!enc_extent_page) {
635 rc = -ENOMEM; 618 rc = -ENOMEM;
diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h
index 064c5820e4e5..00b30a2d5466 100644
--- a/fs/ecryptfs/ecryptfs_kernel.h
+++ b/fs/ecryptfs/ecryptfs_kernel.h
@@ -269,6 +269,7 @@ struct ecryptfs_crypt_stat {
269#define ECRYPTFS_ENCRYPT_FILENAMES 0x00000800 269#define ECRYPTFS_ENCRYPT_FILENAMES 0x00000800
270#define ECRYPTFS_ENCFN_USE_MOUNT_FNEK 0x00001000 270#define ECRYPTFS_ENCFN_USE_MOUNT_FNEK 0x00001000
271#define ECRYPTFS_ENCFN_USE_FEK 0x00002000 271#define ECRYPTFS_ENCFN_USE_FEK 0x00002000
272#define ECRYPTFS_UNLINK_SIGS 0x00004000
272 u32 flags; 273 u32 flags;
273 unsigned int file_version; 274 unsigned int file_version;
274 size_t iv_bytes; 275 size_t iv_bytes;
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 55b3145b8072..93bc0f8174a7 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -379,9 +379,11 @@ static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode,
379 goto out_d_drop; 379 goto out_d_drop;
380 } 380 }
381 lower_dir_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry->d_parent); 381 lower_dir_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry->d_parent);
382 mutex_lock(&lower_dir_dentry->d_inode->i_mutex);
382 lower_dentry = lookup_one_len(ecryptfs_dentry->d_name.name, 383 lower_dentry = lookup_one_len(ecryptfs_dentry->d_name.name,
383 lower_dir_dentry, 384 lower_dir_dentry,
384 ecryptfs_dentry->d_name.len); 385 ecryptfs_dentry->d_name.len);
386 mutex_unlock(&lower_dir_dentry->d_inode->i_mutex);
385 if (IS_ERR(lower_dentry)) { 387 if (IS_ERR(lower_dentry)) {
386 rc = PTR_ERR(lower_dentry); 388 rc = PTR_ERR(lower_dentry);
387 printk(KERN_ERR "%s: lookup_one_len() returned [%d] on " 389 printk(KERN_ERR "%s: lookup_one_len() returned [%d] on "
@@ -406,9 +408,11 @@ static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode,
406 "filename; rc = [%d]\n", __func__, rc); 408 "filename; rc = [%d]\n", __func__, rc);
407 goto out_d_drop; 409 goto out_d_drop;
408 } 410 }
411 mutex_lock(&lower_dir_dentry->d_inode->i_mutex);
409 lower_dentry = lookup_one_len(encrypted_and_encoded_name, 412 lower_dentry = lookup_one_len(encrypted_and_encoded_name,
410 lower_dir_dentry, 413 lower_dir_dentry,
411 encrypted_and_encoded_name_size - 1); 414 encrypted_and_encoded_name_size - 1);
415 mutex_unlock(&lower_dir_dentry->d_inode->i_mutex);
412 if (IS_ERR(lower_dentry)) { 416 if (IS_ERR(lower_dentry)) {
413 rc = PTR_ERR(lower_dentry); 417 rc = PTR_ERR(lower_dentry);
414 printk(KERN_ERR "%s: lookup_one_len() returned [%d] on " 418 printk(KERN_ERR "%s: lookup_one_len() returned [%d] on "
@@ -636,8 +640,9 @@ static int
636ecryptfs_readlink(struct dentry *dentry, char __user *buf, int bufsiz) 640ecryptfs_readlink(struct dentry *dentry, char __user *buf, int bufsiz)
637{ 641{
638 char *lower_buf; 642 char *lower_buf;
643 size_t lower_bufsiz;
639 struct dentry *lower_dentry; 644 struct dentry *lower_dentry;
640 struct ecryptfs_crypt_stat *crypt_stat; 645 struct ecryptfs_mount_crypt_stat *mount_crypt_stat;
641 char *plaintext_name; 646 char *plaintext_name;
642 size_t plaintext_name_size; 647 size_t plaintext_name_size;
643 mm_segment_t old_fs; 648 mm_segment_t old_fs;
@@ -648,12 +653,21 @@ ecryptfs_readlink(struct dentry *dentry, char __user *buf, int bufsiz)
648 rc = -EINVAL; 653 rc = -EINVAL;
649 goto out; 654 goto out;
650 } 655 }
651 crypt_stat = &ecryptfs_inode_to_private(dentry->d_inode)->crypt_stat; 656 mount_crypt_stat = &ecryptfs_superblock_to_private(
657 dentry->d_sb)->mount_crypt_stat;
658 /*
659 * If the lower filename is encrypted, it will result in a significantly
660 * longer name. If needed, truncate the name after decode and decrypt.
661 */
662 if (mount_crypt_stat->flags & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES)
663 lower_bufsiz = PATH_MAX;
664 else
665 lower_bufsiz = bufsiz;
652 /* Released in this function */ 666 /* Released in this function */
653 lower_buf = kmalloc(bufsiz, GFP_KERNEL); 667 lower_buf = kmalloc(lower_bufsiz, GFP_KERNEL);
654 if (lower_buf == NULL) { 668 if (lower_buf == NULL) {
655 printk(KERN_ERR "%s: Out of memory whilst attempting to " 669 printk(KERN_ERR "%s: Out of memory whilst attempting to "
656 "kmalloc [%d] bytes\n", __func__, bufsiz); 670 "kmalloc [%d] bytes\n", __func__, lower_bufsiz);
657 rc = -ENOMEM; 671 rc = -ENOMEM;
658 goto out; 672 goto out;
659 } 673 }
@@ -661,7 +675,7 @@ ecryptfs_readlink(struct dentry *dentry, char __user *buf, int bufsiz)
661 set_fs(get_ds()); 675 set_fs(get_ds());
662 rc = lower_dentry->d_inode->i_op->readlink(lower_dentry, 676 rc = lower_dentry->d_inode->i_op->readlink(lower_dentry,
663 (char __user *)lower_buf, 677 (char __user *)lower_buf,
664 bufsiz); 678 lower_bufsiz);
665 set_fs(old_fs); 679 set_fs(old_fs);
666 if (rc >= 0) { 680 if (rc >= 0) {
667 rc = ecryptfs_decode_and_decrypt_filename(&plaintext_name, 681 rc = ecryptfs_decode_and_decrypt_filename(&plaintext_name,
@@ -674,7 +688,9 @@ ecryptfs_readlink(struct dentry *dentry, char __user *buf, int bufsiz)
674 rc); 688 rc);
675 goto out_free_lower_buf; 689 goto out_free_lower_buf;
676 } 690 }
677 rc = copy_to_user(buf, plaintext_name, plaintext_name_size); 691 /* Check for bufsiz <= 0 done in sys_readlinkat() */
692 rc = copy_to_user(buf, plaintext_name,
693 min((unsigned) bufsiz, plaintext_name_size));
678 if (rc) 694 if (rc)
679 rc = -EFAULT; 695 rc = -EFAULT;
680 else 696 else
@@ -814,6 +830,13 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
814 size_t num_zeros = (PAGE_CACHE_SIZE 830 size_t num_zeros = (PAGE_CACHE_SIZE
815 - (new_length & ~PAGE_CACHE_MASK)); 831 - (new_length & ~PAGE_CACHE_MASK));
816 832
833 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
834 rc = vmtruncate(inode, new_length);
835 if (rc)
836 goto out_free;
837 rc = vmtruncate(lower_dentry->d_inode, new_length);
838 goto out_free;
839 }
817 if (num_zeros) { 840 if (num_zeros) {
818 char *zeros_virt; 841 char *zeros_virt;
819 842
@@ -915,8 +938,6 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia)
915 } 938 }
916 rc = 0; 939 rc = 0;
917 crypt_stat->flags &= ~(ECRYPTFS_ENCRYPTED); 940 crypt_stat->flags &= ~(ECRYPTFS_ENCRYPTED);
918 mutex_unlock(&crypt_stat->cs_mutex);
919 goto out;
920 } 941 }
921 } 942 }
922 mutex_unlock(&crypt_stat->cs_mutex); 943 mutex_unlock(&crypt_stat->cs_mutex);
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
index aed56c25539b..ccabd5faa04d 100644
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -190,14 +190,14 @@ int ecryptfs_interpose(struct dentry *lower_dentry, struct dentry *dentry,
190 init_special_inode(inode, lower_inode->i_mode, 190 init_special_inode(inode, lower_inode->i_mode,
191 lower_inode->i_rdev); 191 lower_inode->i_rdev);
192 dentry->d_op = &ecryptfs_dops; 192 dentry->d_op = &ecryptfs_dops;
193 if (flags & ECRYPTFS_INTERPOSE_FLAG_D_ADD)
194 d_add(dentry, inode);
195 else
196 d_instantiate(dentry, inode);
197 fsstack_copy_attr_all(inode, lower_inode, NULL); 193 fsstack_copy_attr_all(inode, lower_inode, NULL);
198 /* This size will be overwritten for real files w/ headers and 194 /* This size will be overwritten for real files w/ headers and
199 * other metadata */ 195 * other metadata */
200 fsstack_copy_inode_size(inode, lower_inode); 196 fsstack_copy_inode_size(inode, lower_inode);
197 if (flags & ECRYPTFS_INTERPOSE_FLAG_D_ADD)
198 d_add(dentry, inode);
199 else
200 d_instantiate(dentry, inode);
201out: 201out:
202 return rc; 202 return rc;
203} 203}
@@ -208,7 +208,7 @@ enum { ecryptfs_opt_sig, ecryptfs_opt_ecryptfs_sig,
208 ecryptfs_opt_passthrough, ecryptfs_opt_xattr_metadata, 208 ecryptfs_opt_passthrough, ecryptfs_opt_xattr_metadata,
209 ecryptfs_opt_encrypted_view, ecryptfs_opt_fnek_sig, 209 ecryptfs_opt_encrypted_view, ecryptfs_opt_fnek_sig,
210 ecryptfs_opt_fn_cipher, ecryptfs_opt_fn_cipher_key_bytes, 210 ecryptfs_opt_fn_cipher, ecryptfs_opt_fn_cipher_key_bytes,
211 ecryptfs_opt_err }; 211 ecryptfs_opt_unlink_sigs, ecryptfs_opt_err };
212 212
213static const match_table_t tokens = { 213static const match_table_t tokens = {
214 {ecryptfs_opt_sig, "sig=%s"}, 214 {ecryptfs_opt_sig, "sig=%s"},
@@ -222,6 +222,7 @@ static const match_table_t tokens = {
222 {ecryptfs_opt_fnek_sig, "ecryptfs_fnek_sig=%s"}, 222 {ecryptfs_opt_fnek_sig, "ecryptfs_fnek_sig=%s"},
223 {ecryptfs_opt_fn_cipher, "ecryptfs_fn_cipher=%s"}, 223 {ecryptfs_opt_fn_cipher, "ecryptfs_fn_cipher=%s"},
224 {ecryptfs_opt_fn_cipher_key_bytes, "ecryptfs_fn_key_bytes=%u"}, 224 {ecryptfs_opt_fn_cipher_key_bytes, "ecryptfs_fn_key_bytes=%u"},
225 {ecryptfs_opt_unlink_sigs, "ecryptfs_unlink_sigs"},
225 {ecryptfs_opt_err, NULL} 226 {ecryptfs_opt_err, NULL}
226}; 227};
227 228
@@ -402,6 +403,9 @@ static int ecryptfs_parse_options(struct super_block *sb, char *options)
402 fn_cipher_key_bytes; 403 fn_cipher_key_bytes;
403 fn_cipher_key_bytes_set = 1; 404 fn_cipher_key_bytes_set = 1;
404 break; 405 break;
406 case ecryptfs_opt_unlink_sigs:
407 mount_crypt_stat->flags |= ECRYPTFS_UNLINK_SIGS;
408 break;
405 case ecryptfs_opt_err: 409 case ecryptfs_opt_err:
406 default: 410 default:
407 printk(KERN_WARNING 411 printk(KERN_WARNING
diff --git a/fs/ecryptfs/messaging.c b/fs/ecryptfs/messaging.c
index 295e7fa56755..f1c17e87c5fb 100644
--- a/fs/ecryptfs/messaging.c
+++ b/fs/ecryptfs/messaging.c
@@ -133,45 +133,6 @@ out:
133 return rc; 133 return rc;
134} 134}
135 135
136static int
137ecryptfs_send_message_locked(char *data, int data_len, u8 msg_type,
138 struct ecryptfs_msg_ctx **msg_ctx);
139
140/**
141 * ecryptfs_send_raw_message
142 * @msg_type: Message type
143 * @daemon: Daemon struct for recipient of message
144 *
145 * A raw message is one that does not include an ecryptfs_message
146 * struct. It simply has a type.
147 *
148 * Must be called with ecryptfs_daemon_hash_mux held.
149 *
150 * Returns zero on success; non-zero otherwise
151 */
152static int ecryptfs_send_raw_message(u8 msg_type,
153 struct ecryptfs_daemon *daemon)
154{
155 struct ecryptfs_msg_ctx *msg_ctx;
156 int rc;
157
158 rc = ecryptfs_send_message_locked(NULL, 0, msg_type, &msg_ctx);
159 if (rc) {
160 printk(KERN_ERR "%s: Error whilst attempting to send "
161 "message to ecryptfsd; rc = [%d]\n", __func__, rc);
162 goto out;
163 }
164 /* Raw messages are logically context-free (e.g., no
165 * reply is expected), so we set the state of the
166 * ecryptfs_msg_ctx object to indicate that it should
167 * be freed as soon as the message is sent. */
168 mutex_lock(&msg_ctx->mux);
169 msg_ctx->state = ECRYPTFS_MSG_CTX_STATE_NO_REPLY;
170 mutex_unlock(&msg_ctx->mux);
171out:
172 return rc;
173}
174
175/** 136/**
176 * ecryptfs_spawn_daemon - Create and initialize a new daemon struct 137 * ecryptfs_spawn_daemon - Create and initialize a new daemon struct
177 * @daemon: Pointer to set to newly allocated daemon struct 138 * @daemon: Pointer to set to newly allocated daemon struct
@@ -212,49 +173,6 @@ out:
212} 173}
213 174
214/** 175/**
215 * ecryptfs_process_helo
216 * @euid: The user ID owner of the message
217 * @user_ns: The namespace in which @euid applies
218 * @pid: The process ID for the userspace program that sent the
219 * message
220 *
221 * Adds the euid and pid values to the daemon euid hash. If an euid
222 * already has a daemon pid registered, the daemon will be
223 * unregistered before the new daemon is put into the hash list.
224 * Returns zero after adding a new daemon to the hash list;
225 * non-zero otherwise.
226 */
227int ecryptfs_process_helo(uid_t euid, struct user_namespace *user_ns,
228 struct pid *pid)
229{
230 struct ecryptfs_daemon *new_daemon;
231 struct ecryptfs_daemon *old_daemon;
232 int rc;
233
234 mutex_lock(&ecryptfs_daemon_hash_mux);
235 rc = ecryptfs_find_daemon_by_euid(&old_daemon, euid, user_ns);
236 if (rc != 0) {
237 printk(KERN_WARNING "Received request from user [%d] "
238 "to register daemon [0x%p]; unregistering daemon "
239 "[0x%p]\n", euid, pid, old_daemon->pid);
240 rc = ecryptfs_send_raw_message(ECRYPTFS_MSG_QUIT, old_daemon);
241 if (rc)
242 printk(KERN_WARNING "Failed to send QUIT "
243 "message to daemon [0x%p]; rc = [%d]\n",
244 old_daemon->pid, rc);
245 hlist_del(&old_daemon->euid_chain);
246 kfree(old_daemon);
247 }
248 rc = ecryptfs_spawn_daemon(&new_daemon, euid, user_ns, pid);
249 if (rc)
250 printk(KERN_ERR "%s: The gods are displeased with this attempt "
251 "to create a new daemon object for euid [%d]; pid "
252 "[0x%p]; rc = [%d]\n", __func__, euid, pid, rc);
253 mutex_unlock(&ecryptfs_daemon_hash_mux);
254 return rc;
255}
256
257/**
258 * ecryptfs_exorcise_daemon - Destroy the daemon struct 176 * ecryptfs_exorcise_daemon - Destroy the daemon struct
259 * 177 *
260 * Must be called ceremoniously while in possession of 178 * Must be called ceremoniously while in possession of
diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
index a67fea655f49..4ec8f61ccf5a 100644
--- a/fs/ecryptfs/miscdev.c
+++ b/fs/ecryptfs/miscdev.c
@@ -193,26 +193,20 @@ int ecryptfs_send_miscdev(char *data, size_t data_size,
193 int rc = 0; 193 int rc = 0;
194 194
195 mutex_lock(&msg_ctx->mux); 195 mutex_lock(&msg_ctx->mux);
196 if (data) { 196 msg_ctx->msg = kmalloc((sizeof(*msg_ctx->msg) + data_size),
197 msg_ctx->msg = kmalloc((sizeof(*msg_ctx->msg) + data_size), 197 GFP_KERNEL);
198 GFP_KERNEL); 198 if (!msg_ctx->msg) {
199 if (!msg_ctx->msg) { 199 rc = -ENOMEM;
200 rc = -ENOMEM; 200 printk(KERN_ERR "%s: Out of memory whilst attempting "
201 printk(KERN_ERR "%s: Out of memory whilst attempting " 201 "to kmalloc(%zd, GFP_KERNEL)\n", __func__,
202 "to kmalloc(%zd, GFP_KERNEL)\n", __func__, 202 (sizeof(*msg_ctx->msg) + data_size));
203 (sizeof(*msg_ctx->msg) + data_size)); 203 goto out_unlock;
204 goto out_unlock; 204 }
205 }
206 } else
207 msg_ctx->msg = NULL;
208 msg_ctx->msg->index = msg_ctx->index; 205 msg_ctx->msg->index = msg_ctx->index;
209 msg_ctx->msg->data_len = data_size; 206 msg_ctx->msg->data_len = data_size;
210 msg_ctx->type = msg_type; 207 msg_ctx->type = msg_type;
211 if (data) { 208 memcpy(msg_ctx->msg->data, data, data_size);
212 memcpy(msg_ctx->msg->data, data, data_size); 209 msg_ctx->msg_size = (sizeof(*msg_ctx->msg) + data_size);
213 msg_ctx->msg_size = (sizeof(*msg_ctx->msg) + data_size);
214 } else
215 msg_ctx->msg_size = 0;
216 mutex_lock(&daemon->mux); 210 mutex_lock(&daemon->mux);
217 list_add_tail(&msg_ctx->daemon_out_list, &daemon->msg_ctx_out_queue); 211 list_add_tail(&msg_ctx->daemon_out_list, &daemon->msg_ctx_out_queue);
218 daemon->num_queued_msg_ctx++; 212 daemon->num_queued_msg_ctx++;
@@ -418,18 +412,13 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
418 412
419 if (count == 0) 413 if (count == 0)
420 goto out; 414 goto out;
421 data = kmalloc(count, GFP_KERNEL); 415
422 if (!data) { 416 data = memdup_user(buf, count);
423 printk(KERN_ERR "%s: Out of memory whilst attempting to " 417 if (IS_ERR(data)) {
424 "kmalloc([%zd], GFP_KERNEL)\n", __func__, count); 418 printk(KERN_ERR "%s: memdup_user returned error [%ld]\n",
419 __func__, PTR_ERR(data));
425 goto out; 420 goto out;
426 } 421 }
427 rc = copy_from_user(data, buf, count);
428 if (rc) {
429 printk(KERN_ERR "%s: copy_from_user returned error [%d]\n",
430 __func__, rc);
431 goto out_free;
432 }
433 sz = count; 422 sz = count;
434 i = 0; 423 i = 0;
435 switch (data[i++]) { 424 switch (data[i++]) {
diff --git a/fs/ecryptfs/mmap.c b/fs/ecryptfs/mmap.c
index 46cec2b69796..5c6bab9786e3 100644
--- a/fs/ecryptfs/mmap.c
+++ b/fs/ecryptfs/mmap.c
@@ -449,6 +449,7 @@ int ecryptfs_write_inode_size_to_metadata(struct inode *ecryptfs_inode)
449 struct ecryptfs_crypt_stat *crypt_stat; 449 struct ecryptfs_crypt_stat *crypt_stat;
450 450
451 crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; 451 crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat;
452 BUG_ON(!(crypt_stat->flags & ECRYPTFS_ENCRYPTED));
452 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) 453 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR)
453 return ecryptfs_write_inode_size_to_xattr(ecryptfs_inode); 454 return ecryptfs_write_inode_size_to_xattr(ecryptfs_inode);
454 else 455 else
@@ -490,6 +491,16 @@ static int ecryptfs_write_end(struct file *file,
490 ecryptfs_printk(KERN_DEBUG, "Not a new file\n"); 491 ecryptfs_printk(KERN_DEBUG, "Not a new file\n");
491 ecryptfs_printk(KERN_DEBUG, "Calling fill_zeros_to_end_of_page" 492 ecryptfs_printk(KERN_DEBUG, "Calling fill_zeros_to_end_of_page"
492 "(page w/ index = [0x%.16x], to = [%d])\n", index, to); 493 "(page w/ index = [0x%.16x], to = [%d])\n", index, to);
494 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
495 rc = ecryptfs_write_lower_page_segment(ecryptfs_inode, page, 0,
496 to);
497 if (!rc) {
498 rc = copied;
499 fsstack_copy_inode_size(ecryptfs_inode,
500 ecryptfs_inode_to_lower(ecryptfs_inode));
501 }
502 goto out;
503 }
493 /* Fills in zeros if 'to' goes beyond inode size */ 504 /* Fills in zeros if 'to' goes beyond inode size */
494 rc = fill_zeros_to_end_of_page(page, to); 505 rc = fill_zeros_to_end_of_page(page, to);
495 if (rc) { 506 if (rc) {
diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
index 75c2ea9fee35..a137c6ea2fee 100644
--- a/fs/ecryptfs/read_write.c
+++ b/fs/ecryptfs/read_write.c
@@ -117,13 +117,15 @@ int ecryptfs_write(struct file *ecryptfs_file, char *data, loff_t offset,
117 size_t size) 117 size_t size)
118{ 118{
119 struct page *ecryptfs_page; 119 struct page *ecryptfs_page;
120 struct ecryptfs_crypt_stat *crypt_stat;
121 struct inode *ecryptfs_inode = ecryptfs_file->f_dentry->d_inode;
120 char *ecryptfs_page_virt; 122 char *ecryptfs_page_virt;
121 loff_t ecryptfs_file_size = 123 loff_t ecryptfs_file_size = i_size_read(ecryptfs_inode);
122 i_size_read(ecryptfs_file->f_dentry->d_inode);
123 loff_t data_offset = 0; 124 loff_t data_offset = 0;
124 loff_t pos; 125 loff_t pos;
125 int rc = 0; 126 int rc = 0;
126 127
128 crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat;
127 /* 129 /*
128 * if we are writing beyond current size, then start pos 130 * if we are writing beyond current size, then start pos
129 * at the current size - we'll fill in zeros from there. 131 * at the current size - we'll fill in zeros from there.
@@ -184,7 +186,13 @@ int ecryptfs_write(struct file *ecryptfs_file, char *data, loff_t offset,
184 flush_dcache_page(ecryptfs_page); 186 flush_dcache_page(ecryptfs_page);
185 SetPageUptodate(ecryptfs_page); 187 SetPageUptodate(ecryptfs_page);
186 unlock_page(ecryptfs_page); 188 unlock_page(ecryptfs_page);
187 rc = ecryptfs_encrypt_page(ecryptfs_page); 189 if (crypt_stat->flags & ECRYPTFS_ENCRYPTED)
190 rc = ecryptfs_encrypt_page(ecryptfs_page);
191 else
192 rc = ecryptfs_write_lower_page_segment(ecryptfs_inode,
193 ecryptfs_page,
194 start_offset_in_page,
195 data_offset);
188 page_cache_release(ecryptfs_page); 196 page_cache_release(ecryptfs_page);
189 if (rc) { 197 if (rc) {
190 printk(KERN_ERR "%s: Error encrypting " 198 printk(KERN_ERR "%s: Error encrypting "
@@ -194,14 +202,16 @@ int ecryptfs_write(struct file *ecryptfs_file, char *data, loff_t offset,
194 pos += num_bytes; 202 pos += num_bytes;
195 } 203 }
196 if ((offset + size) > ecryptfs_file_size) { 204 if ((offset + size) > ecryptfs_file_size) {
197 i_size_write(ecryptfs_file->f_dentry->d_inode, (offset + size)); 205 i_size_write(ecryptfs_inode, (offset + size));
198 rc = ecryptfs_write_inode_size_to_metadata( 206 if (crypt_stat->flags & ECRYPTFS_ENCRYPTED) {
199 ecryptfs_file->f_dentry->d_inode); 207 rc = ecryptfs_write_inode_size_to_metadata(
200 if (rc) { 208 ecryptfs_inode);
201 printk(KERN_ERR "Problem with " 209 if (rc) {
202 "ecryptfs_write_inode_size_to_metadata; " 210 printk(KERN_ERR "Problem with "
203 "rc = [%d]\n", rc); 211 "ecryptfs_write_inode_size_to_metadata; "
204 goto out; 212 "rc = [%d]\n", rc);
213 goto out;
214 }
205 } 215 }
206 } 216 }
207out: 217out:
diff --git a/fs/ecryptfs/super.c b/fs/ecryptfs/super.c
index c27ac2b358a1..fa4c7e7d15d9 100644
--- a/fs/ecryptfs/super.c
+++ b/fs/ecryptfs/super.c
@@ -170,7 +170,10 @@ static int ecryptfs_show_options(struct seq_file *m, struct vfsmount *mnt)
170 list_for_each_entry(walker, 170 list_for_each_entry(walker,
171 &mount_crypt_stat->global_auth_tok_list, 171 &mount_crypt_stat->global_auth_tok_list,
172 mount_crypt_stat_list) { 172 mount_crypt_stat_list) {
173 seq_printf(m, ",ecryptfs_sig=%s", walker->sig); 173 if (walker->flags & ECRYPTFS_AUTH_TOK_FNEK)
174 seq_printf(m, ",ecryptfs_fnek_sig=%s", walker->sig);
175 else
176 seq_printf(m, ",ecryptfs_sig=%s", walker->sig);
174 } 177 }
175 mutex_unlock(&mount_crypt_stat->global_auth_tok_list_mutex); 178 mutex_unlock(&mount_crypt_stat->global_auth_tok_list_mutex);
176 179
@@ -186,6 +189,8 @@ static int ecryptfs_show_options(struct seq_file *m, struct vfsmount *mnt)
186 seq_printf(m, ",ecryptfs_xattr_metadata"); 189 seq_printf(m, ",ecryptfs_xattr_metadata");
187 if (mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED) 190 if (mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED)
188 seq_printf(m, ",ecryptfs_encrypted_view"); 191 seq_printf(m, ",ecryptfs_encrypted_view");
192 if (mount_crypt_stat->flags & ECRYPTFS_UNLINK_SIGS)
193 seq_printf(m, ",ecryptfs_unlink_sigs");
189 194
190 return 0; 195 return 0;
191} 196}
diff --git a/fs/exec.c b/fs/exec.c
index 052a961e41aa..a3a8ce83940f 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1060,7 +1060,6 @@ EXPORT_SYMBOL(install_exec_creds);
1060int check_unsafe_exec(struct linux_binprm *bprm) 1060int check_unsafe_exec(struct linux_binprm *bprm)
1061{ 1061{
1062 struct task_struct *p = current, *t; 1062 struct task_struct *p = current, *t;
1063 unsigned long flags;
1064 unsigned n_fs; 1063 unsigned n_fs;
1065 int res = 0; 1064 int res = 0;
1066 1065
@@ -1068,21 +1067,22 @@ int check_unsafe_exec(struct linux_binprm *bprm)
1068 1067
1069 n_fs = 1; 1068 n_fs = 1;
1070 write_lock(&p->fs->lock); 1069 write_lock(&p->fs->lock);
1071 lock_task_sighand(p, &flags); 1070 rcu_read_lock();
1072 for (t = next_thread(p); t != p; t = next_thread(t)) { 1071 for (t = next_thread(p); t != p; t = next_thread(t)) {
1073 if (t->fs == p->fs) 1072 if (t->fs == p->fs)
1074 n_fs++; 1073 n_fs++;
1075 } 1074 }
1075 rcu_read_unlock();
1076 1076
1077 if (p->fs->users > n_fs) { 1077 if (p->fs->users > n_fs) {
1078 bprm->unsafe |= LSM_UNSAFE_SHARE; 1078 bprm->unsafe |= LSM_UNSAFE_SHARE;
1079 } else { 1079 } else {
1080 if (p->fs->in_exec) 1080 res = -EAGAIN;
1081 res = -EAGAIN; 1081 if (!p->fs->in_exec) {
1082 p->fs->in_exec = 1; 1082 p->fs->in_exec = 1;
1083 res = 1;
1084 }
1083 } 1085 }
1084
1085 unlock_task_sighand(p, &flags);
1086 write_unlock(&p->fs->lock); 1086 write_unlock(&p->fs->lock);
1087 1087
1088 return res; 1088 return res;
@@ -1284,6 +1284,7 @@ int do_execve(char * filename,
1284 struct linux_binprm *bprm; 1284 struct linux_binprm *bprm;
1285 struct file *file; 1285 struct file *file;
1286 struct files_struct *displaced; 1286 struct files_struct *displaced;
1287 bool clear_in_exec;
1287 int retval; 1288 int retval;
1288 1289
1289 retval = unshare_files(&displaced); 1290 retval = unshare_files(&displaced);
@@ -1306,8 +1307,9 @@ int do_execve(char * filename,
1306 goto out_unlock; 1307 goto out_unlock;
1307 1308
1308 retval = check_unsafe_exec(bprm); 1309 retval = check_unsafe_exec(bprm);
1309 if (retval) 1310 if (retval < 0)
1310 goto out_unlock; 1311 goto out_unlock;
1312 clear_in_exec = retval;
1311 1313
1312 file = open_exec(filename); 1314 file = open_exec(filename);
1313 retval = PTR_ERR(file); 1315 retval = PTR_ERR(file);
@@ -1355,9 +1357,7 @@ int do_execve(char * filename,
1355 goto out; 1357 goto out;
1356 1358
1357 /* execve succeeded */ 1359 /* execve succeeded */
1358 write_lock(&current->fs->lock);
1359 current->fs->in_exec = 0; 1360 current->fs->in_exec = 0;
1360 write_unlock(&current->fs->lock);
1361 current->in_execve = 0; 1361 current->in_execve = 0;
1362 mutex_unlock(&current->cred_exec_mutex); 1362 mutex_unlock(&current->cred_exec_mutex);
1363 acct_update_integrals(current); 1363 acct_update_integrals(current);
@@ -1377,9 +1377,8 @@ out_file:
1377 } 1377 }
1378 1378
1379out_unmark: 1379out_unmark:
1380 write_lock(&current->fs->lock); 1380 if (clear_in_exec)
1381 current->fs->in_exec = 0; 1381 current->fs->in_exec = 0;
1382 write_unlock(&current->fs->lock);
1383 1382
1384out_unlock: 1383out_unlock:
1385 current->in_execve = 0; 1384 current->in_execve = 0;
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index b43b95563663..acf678831103 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -590,9 +590,8 @@ static int ext2_get_blocks(struct inode *inode,
590 590
591 if (depth == 0) 591 if (depth == 0)
592 return (err); 592 return (err);
593reread:
594 partial = ext2_get_branch(inode, depth, offsets, chain, &err);
595 593
594 partial = ext2_get_branch(inode, depth, offsets, chain, &err);
596 /* Simplest case - block found, no allocation needed */ 595 /* Simplest case - block found, no allocation needed */
597 if (!partial) { 596 if (!partial) {
598 first_block = le32_to_cpu(chain[depth - 1].key); 597 first_block = le32_to_cpu(chain[depth - 1].key);
@@ -602,15 +601,16 @@ reread:
602 while (count < maxblocks && count <= blocks_to_boundary) { 601 while (count < maxblocks && count <= blocks_to_boundary) {
603 ext2_fsblk_t blk; 602 ext2_fsblk_t blk;
604 603
605 if (!verify_chain(chain, partial)) { 604 if (!verify_chain(chain, chain + depth - 1)) {
606 /* 605 /*
607 * Indirect block might be removed by 606 * Indirect block might be removed by
608 * truncate while we were reading it. 607 * truncate while we were reading it.
609 * Handling of that case: forget what we've 608 * Handling of that case: forget what we've
610 * got now, go to reread. 609 * got now, go to reread.
611 */ 610 */
611 err = -EAGAIN;
612 count = 0; 612 count = 0;
613 goto changed; 613 break;
614 } 614 }
615 blk = le32_to_cpu(*(chain[depth-1].p + count)); 615 blk = le32_to_cpu(*(chain[depth-1].p + count));
616 if (blk == first_block + count) 616 if (blk == first_block + count)
@@ -618,7 +618,8 @@ reread:
618 else 618 else
619 break; 619 break;
620 } 620 }
621 goto got_it; 621 if (err != -EAGAIN)
622 goto got_it;
622 } 623 }
623 624
624 /* Next simple case - plain lookup or failed read of indirect block */ 625 /* Next simple case - plain lookup or failed read of indirect block */
@@ -626,6 +627,33 @@ reread:
626 goto cleanup; 627 goto cleanup;
627 628
628 mutex_lock(&ei->truncate_mutex); 629 mutex_lock(&ei->truncate_mutex);
630 /*
631 * If the indirect block is missing while we are reading
632 * the chain(ext3_get_branch() returns -EAGAIN err), or
633 * if the chain has been changed after we grab the semaphore,
634 * (either because another process truncated this branch, or
635 * another get_block allocated this branch) re-grab the chain to see if
636 * the request block has been allocated or not.
637 *
638 * Since we already block the truncate/other get_block
639 * at this point, we will have the current copy of the chain when we
640 * splice the branch into the tree.
641 */
642 if (err == -EAGAIN || !verify_chain(chain, partial)) {
643 while (partial > chain) {
644 brelse(partial->bh);
645 partial--;
646 }
647 partial = ext2_get_branch(inode, depth, offsets, chain, &err);
648 if (!partial) {
649 count++;
650 mutex_unlock(&ei->truncate_mutex);
651 if (err)
652 goto cleanup;
653 clear_buffer_new(bh_result);
654 goto got_it;
655 }
656 }
629 657
630 /* 658 /*
631 * Okay, we need to do block allocation. Lazily initialize the block 659 * Okay, we need to do block allocation. Lazily initialize the block
@@ -683,12 +711,6 @@ cleanup:
683 partial--; 711 partial--;
684 } 712 }
685 return err; 713 return err;
686changed:
687 while (partial > chain) {
688 brelse(partial->bh);
689 partial--;
690 }
691 goto reread;
692} 714}
693 715
694int ext2_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create) 716int ext2_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create)
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
index 466a332e0bd1..fcfa24361856 100644
--- a/fs/ext3/inode.c
+++ b/fs/ext3/inode.c
@@ -1521,12 +1521,16 @@ static int ext3_ordered_writepage(struct page *page,
1521 if (!page_has_buffers(page)) { 1521 if (!page_has_buffers(page)) {
1522 create_empty_buffers(page, inode->i_sb->s_blocksize, 1522 create_empty_buffers(page, inode->i_sb->s_blocksize,
1523 (1 << BH_Dirty)|(1 << BH_Uptodate)); 1523 (1 << BH_Dirty)|(1 << BH_Uptodate));
1524 } else if (!walk_page_buffers(NULL, page_buffers(page), 0, PAGE_CACHE_SIZE, NULL, buffer_unmapped)) { 1524 page_bufs = page_buffers(page);
1525 /* Provide NULL instead of get_block so that we catch bugs if buffers weren't really mapped */ 1525 } else {
1526 return block_write_full_page(page, NULL, wbc); 1526 page_bufs = page_buffers(page);
1527 if (!walk_page_buffers(NULL, page_bufs, 0, PAGE_CACHE_SIZE,
1528 NULL, buffer_unmapped)) {
1529 /* Provide NULL get_block() to catch bugs if buffers
1530 * weren't really mapped */
1531 return block_write_full_page(page, NULL, wbc);
1532 }
1527 } 1533 }
1528 page_bufs = page_buffers(page);
1529
1530 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode)); 1534 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode));
1531 1535
1532 if (IS_ERR(handle)) { 1536 if (IS_ERR(handle)) {
@@ -1581,6 +1585,15 @@ static int ext3_writeback_writepage(struct page *page,
1581 if (ext3_journal_current_handle()) 1585 if (ext3_journal_current_handle())
1582 goto out_fail; 1586 goto out_fail;
1583 1587
1588 if (page_has_buffers(page)) {
1589 if (!walk_page_buffers(NULL, page_buffers(page), 0,
1590 PAGE_CACHE_SIZE, NULL, buffer_unmapped)) {
1591 /* Provide NULL get_block() to catch bugs if buffers
1592 * weren't really mapped */
1593 return block_write_full_page(page, NULL, wbc);
1594 }
1595 }
1596
1584 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode)); 1597 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode));
1585 if (IS_ERR(handle)) { 1598 if (IS_ERR(handle)) {
1586 ret = PTR_ERR(handle); 1599 ret = PTR_ERR(handle);
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index ac77d8b8251d..e40332158340 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -326,11 +326,14 @@ ext4_ext_max_entries(struct inode *inode, int depth)
326 326
327static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext) 327static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext)
328{ 328{
329 ext4_fsblk_t block = ext_pblock(ext); 329 ext4_fsblk_t block = ext_pblock(ext), valid_block;
330 int len = ext4_ext_get_actual_len(ext); 330 int len = ext4_ext_get_actual_len(ext);
331 struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es; 331 struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es;
332 if (unlikely(block < le32_to_cpu(es->s_first_data_block) || 332
333 ((block + len) > ext4_blocks_count(es)))) 333 valid_block = le32_to_cpu(es->s_first_data_block) +
334 EXT4_SB(inode->i_sb)->s_gdb_count;
335 if (unlikely(block <= valid_block ||
336 ((block + len) > ext4_blocks_count(es))))
334 return 0; 337 return 0;
335 else 338 else
336 return 1; 339 return 1;
@@ -339,10 +342,13 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext)
339static int ext4_valid_extent_idx(struct inode *inode, 342static int ext4_valid_extent_idx(struct inode *inode,
340 struct ext4_extent_idx *ext_idx) 343 struct ext4_extent_idx *ext_idx)
341{ 344{
342 ext4_fsblk_t block = idx_pblock(ext_idx); 345 ext4_fsblk_t block = idx_pblock(ext_idx), valid_block;
343 struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es; 346 struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es;
344 if (unlikely(block < le32_to_cpu(es->s_first_data_block) || 347
345 (block > ext4_blocks_count(es)))) 348 valid_block = le32_to_cpu(es->s_first_data_block) +
349 EXT4_SB(inode->i_sb)->s_gdb_count;
350 if (unlikely(block <= valid_block ||
351 (block >= ext4_blocks_count(es))))
346 return 0; 352 return 0;
347 else 353 else
348 return 1; 354 return 1;
@@ -2416,8 +2422,6 @@ static int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex)
2416 len = ee_len; 2422 len = ee_len;
2417 2423
2418 bio = bio_alloc(GFP_NOIO, len); 2424 bio = bio_alloc(GFP_NOIO, len);
2419 if (!bio)
2420 return -ENOMEM;
2421 bio->bi_sector = ee_pblock; 2425 bio->bi_sector = ee_pblock;
2422 bio->bi_bdev = inode->i_sb->s_bdev; 2426 bio->bi_bdev = inode->i_sb->s_bdev;
2423 2427
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index 47b84e8df568..f18e0a08a6b5 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -585,6 +585,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
585fallback: 585fallback:
586 ngroups = sbi->s_groups_count; 586 ngroups = sbi->s_groups_count;
587 avefreei = freei / ngroups; 587 avefreei = freei / ngroups;
588fallback_retry:
588 parent_group = EXT4_I(parent)->i_block_group; 589 parent_group = EXT4_I(parent)->i_block_group;
589 for (i = 0; i < ngroups; i++) { 590 for (i = 0; i < ngroups; i++) {
590 grp = (parent_group + i) % ngroups; 591 grp = (parent_group + i) % ngroups;
@@ -602,7 +603,7 @@ fallback:
602 * filesystems the above test can fail to find any blockgroups 603 * filesystems the above test can fail to find any blockgroups
603 */ 604 */
604 avefreei = 0; 605 avefreei = 0;
605 goto fallback; 606 goto fallback_retry;
606 } 607 }
607 608
608 return -1; 609 return -1;
@@ -831,11 +832,12 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode)
831 ret2 = find_group_flex(sb, dir, &group); 832 ret2 = find_group_flex(sb, dir, &group);
832 if (ret2 == -1) { 833 if (ret2 == -1) {
833 ret2 = find_group_other(sb, dir, &group, mode); 834 ret2 = find_group_other(sb, dir, &group, mode);
834 if (ret2 == 0 && once) 835 if (ret2 == 0 && once) {
835 once = 0; 836 once = 0;
836 printk(KERN_NOTICE "ext4: find_group_flex " 837 printk(KERN_NOTICE "ext4: find_group_flex "
837 "failed, fallback succeeded dir %lu\n", 838 "failed, fallback succeeded dir %lu\n",
838 dir->i_ino); 839 dir->i_ino);
840 }
839 } 841 }
840 goto got_group; 842 goto got_group;
841 } 843 }
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index a2e7952bc5f9..c6bd6ced3bb7 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -372,16 +372,16 @@ static int ext4_block_to_path(struct inode *inode,
372} 372}
373 373
374static int __ext4_check_blockref(const char *function, struct inode *inode, 374static int __ext4_check_blockref(const char *function, struct inode *inode,
375 unsigned int *p, unsigned int max) { 375 __le32 *p, unsigned int max) {
376 376
377 unsigned int maxblocks = ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es); 377 unsigned int maxblocks = ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es);
378 unsigned int *bref = p; 378 __le32 *bref = p;
379 while (bref < p+max) { 379 while (bref < p+max) {
380 if (unlikely(*bref >= maxblocks)) { 380 if (unlikely(le32_to_cpu(*bref) >= maxblocks)) {
381 ext4_error(inode->i_sb, function, 381 ext4_error(inode->i_sb, function,
382 "block reference %u >= max (%u) " 382 "block reference %u >= max (%u) "
383 "in inode #%lu, offset=%d", 383 "in inode #%lu, offset=%d",
384 *bref, maxblocks, 384 le32_to_cpu(*bref), maxblocks,
385 inode->i_ino, (int)(bref-p)); 385 inode->i_ino, (int)(bref-p));
386 return -EIO; 386 return -EIO;
387 } 387 }
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 9987bba99db3..2958f4e6f222 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -2508,6 +2508,15 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
2508 if (EXT4_BLOCKS_PER_GROUP(sb) == 0) 2508 if (EXT4_BLOCKS_PER_GROUP(sb) == 0)
2509 goto cantfind_ext4; 2509 goto cantfind_ext4;
2510 2510
2511 /* check blocks count against device size */
2512 blocks_count = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits;
2513 if (blocks_count && ext4_blocks_count(es) > blocks_count) {
2514 printk(KERN_WARNING "EXT4-fs: bad geometry: block count %llu "
2515 "exceeds size of device (%llu blocks)\n",
2516 ext4_blocks_count(es), blocks_count);
2517 goto failed_mount;
2518 }
2519
2511 /* 2520 /*
2512 * It makes no sense for the first data block to be beyond the end 2521 * It makes no sense for the first data block to be beyond the end
2513 * of the filesystem. 2522 * of the filesystem.
diff --git a/fs/fat/Kconfig b/fs/fat/Kconfig
index d0a69ff25375..182f9ffe2b51 100644
--- a/fs/fat/Kconfig
+++ b/fs/fat/Kconfig
@@ -95,3 +95,6 @@ config FAT_DEFAULT_IOCHARSET
95 Note that "utf8" is not recommended for FAT filesystems. 95 Note that "utf8" is not recommended for FAT filesystems.
96 If unsure, you shouldn't set "utf8" here. 96 If unsure, you shouldn't set "utf8" here.
97 See <file:Documentation/filesystems/vfat.txt> for more information. 97 See <file:Documentation/filesystems/vfat.txt> for more information.
98
99 Enable any character sets you need in File Systems/Native Language
100 Support.
diff --git a/fs/filesystems.c b/fs/filesystems.c
index 1aa70260e6d1..a24c58e181db 100644
--- a/fs/filesystems.c
+++ b/fs/filesystems.c
@@ -199,7 +199,7 @@ SYSCALL_DEFINE3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2)
199 return retval; 199 return retval;
200} 200}
201 201
202int get_filesystem_list(char * buf) 202int __init get_filesystem_list(char *buf)
203{ 203{
204 int len = 0; 204 int len = 0;
205 struct file_system_type * tmp; 205 struct file_system_type * tmp;
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 2b25133524a3..06f30e965676 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -938,9 +938,9 @@ static void fuse_release_user_pages(struct fuse_req *req, int write)
938} 938}
939 939
940static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf, 940static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf,
941 unsigned *nbytesp, int write) 941 size_t *nbytesp, int write)
942{ 942{
943 unsigned nbytes = *nbytesp; 943 size_t nbytes = *nbytesp;
944 unsigned long user_addr = (unsigned long) buf; 944 unsigned long user_addr = (unsigned long) buf;
945 unsigned offset = user_addr & ~PAGE_MASK; 945 unsigned offset = user_addr & ~PAGE_MASK;
946 int npages; 946 int npages;
@@ -955,7 +955,7 @@ static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf,
955 return 0; 955 return 0;
956 } 956 }
957 957
958 nbytes = min(nbytes, (unsigned) FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT); 958 nbytes = min_t(size_t, nbytes, FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT);
959 npages = (nbytes + offset + PAGE_SIZE - 1) >> PAGE_SHIFT; 959 npages = (nbytes + offset + PAGE_SIZE - 1) >> PAGE_SHIFT;
960 npages = clamp(npages, 1, FUSE_MAX_PAGES_PER_REQ); 960 npages = clamp(npages, 1, FUSE_MAX_PAGES_PER_REQ);
961 down_read(&current->mm->mmap_sem); 961 down_read(&current->mm->mmap_sem);
@@ -1298,6 +1298,8 @@ static int fuse_direct_mmap(struct file *file, struct vm_area_struct *vma)
1298 if (vma->vm_flags & VM_MAYSHARE) 1298 if (vma->vm_flags & VM_MAYSHARE)
1299 return -ENODEV; 1299 return -ENODEV;
1300 1300
1301 invalidate_inode_pages2(file->f_mapping);
1302
1301 return generic_file_mmap(file, vma); 1303 return generic_file_mmap(file, vma);
1302} 1304}
1303 1305
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 3984e47d1d33..1afd9f26bcb1 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -597,7 +597,6 @@ __acquires(&gl->gl_spin)
597 597
598 GLOCK_BUG_ON(gl, test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)); 598 GLOCK_BUG_ON(gl, test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags));
599 599
600 down_read(&gfs2_umount_flush_sem);
601 if (test_bit(GLF_DEMOTE, &gl->gl_flags) && 600 if (test_bit(GLF_DEMOTE, &gl->gl_flags) &&
602 gl->gl_demote_state != gl->gl_state) { 601 gl->gl_demote_state != gl->gl_state) {
603 if (find_first_holder(gl)) 602 if (find_first_holder(gl))
@@ -614,15 +613,14 @@ __acquires(&gl->gl_spin)
614 if (ret == 0) 613 if (ret == 0)
615 goto out_unlock; 614 goto out_unlock;
616 if (ret == 2) 615 if (ret == 2)
617 goto out_sem; 616 goto out;
618 gh = find_first_waiter(gl); 617 gh = find_first_waiter(gl);
619 gl->gl_target = gh->gh_state; 618 gl->gl_target = gh->gh_state;
620 if (!(gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB))) 619 if (!(gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB)))
621 do_error(gl, 0); /* Fail queued try locks */ 620 do_error(gl, 0); /* Fail queued try locks */
622 } 621 }
623 do_xmote(gl, gh, gl->gl_target); 622 do_xmote(gl, gh, gl->gl_target);
624out_sem: 623out:
625 up_read(&gfs2_umount_flush_sem);
626 return; 624 return;
627 625
628out_sched: 626out_sched:
@@ -631,7 +629,7 @@ out_sched:
631 gfs2_glock_put(gl); 629 gfs2_glock_put(gl);
632out_unlock: 630out_unlock:
633 clear_bit(GLF_LOCK, &gl->gl_flags); 631 clear_bit(GLF_LOCK, &gl->gl_flags);
634 goto out_sem; 632 goto out;
635} 633}
636 634
637static void glock_work_func(struct work_struct *work) 635static void glock_work_func(struct work_struct *work)
@@ -641,6 +639,7 @@ static void glock_work_func(struct work_struct *work)
641 639
642 if (test_and_clear_bit(GLF_REPLY_PENDING, &gl->gl_flags)) 640 if (test_and_clear_bit(GLF_REPLY_PENDING, &gl->gl_flags))
643 finish_xmote(gl, gl->gl_reply); 641 finish_xmote(gl, gl->gl_reply);
642 down_read(&gfs2_umount_flush_sem);
644 spin_lock(&gl->gl_spin); 643 spin_lock(&gl->gl_spin);
645 if (test_and_clear_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) && 644 if (test_and_clear_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) &&
646 gl->gl_state != LM_ST_UNLOCKED && 645 gl->gl_state != LM_ST_UNLOCKED &&
@@ -653,6 +652,7 @@ static void glock_work_func(struct work_struct *work)
653 } 652 }
654 run_queue(gl, 0); 653 run_queue(gl, 0);
655 spin_unlock(&gl->gl_spin); 654 spin_unlock(&gl->gl_spin);
655 up_read(&gfs2_umount_flush_sem);
656 if (!delay || 656 if (!delay ||
657 queue_delayed_work(glock_workqueue, &gl->gl_work, delay) == 0) 657 queue_delayed_work(glock_workqueue, &gl->gl_work, delay) == 0)
658 gfs2_glock_put(gl); 658 gfs2_glock_put(gl);
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
index bf23a62aa925..70f87f43afa2 100644
--- a/fs/gfs2/glops.c
+++ b/fs/gfs2/glops.c
@@ -156,6 +156,12 @@ static void inode_go_sync(struct gfs2_glock *gl)
156 error = filemap_fdatawait(metamapping); 156 error = filemap_fdatawait(metamapping);
157 mapping_set_error(metamapping, error); 157 mapping_set_error(metamapping, error);
158 gfs2_ail_empty_gl(gl); 158 gfs2_ail_empty_gl(gl);
159 /*
160 * Writeback of the data mapping may cause the dirty flag to be set
161 * so we have to clear it again here.
162 */
163 smp_mb__before_clear_bit();
164 clear_bit(GLF_DIRTY, &gl->gl_flags);
159} 165}
160 166
161/** 167/**
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 7b277d449155..5a31d426116f 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -137,15 +137,15 @@ void gfs2_set_iop(struct inode *inode)
137 if (S_ISREG(mode)) { 137 if (S_ISREG(mode)) {
138 inode->i_op = &gfs2_file_iops; 138 inode->i_op = &gfs2_file_iops;
139 if (gfs2_localflocks(sdp)) 139 if (gfs2_localflocks(sdp))
140 inode->i_fop = gfs2_file_fops_nolock; 140 inode->i_fop = &gfs2_file_fops_nolock;
141 else 141 else
142 inode->i_fop = gfs2_file_fops; 142 inode->i_fop = &gfs2_file_fops;
143 } else if (S_ISDIR(mode)) { 143 } else if (S_ISDIR(mode)) {
144 inode->i_op = &gfs2_dir_iops; 144 inode->i_op = &gfs2_dir_iops;
145 if (gfs2_localflocks(sdp)) 145 if (gfs2_localflocks(sdp))
146 inode->i_fop = gfs2_dir_fops_nolock; 146 inode->i_fop = &gfs2_dir_fops_nolock;
147 else 147 else
148 inode->i_fop = gfs2_dir_fops; 148 inode->i_fop = &gfs2_dir_fops;
149 } else if (S_ISLNK(mode)) { 149 } else if (S_ISLNK(mode)) {
150 inode->i_op = &gfs2_symlink_iops; 150 inode->i_op = &gfs2_symlink_iops;
151 } else { 151 } else {
diff --git a/fs/gfs2/inode.h b/fs/gfs2/inode.h
index dca4fee3078b..c30be2b66580 100644
--- a/fs/gfs2/inode.h
+++ b/fs/gfs2/inode.h
@@ -101,21 +101,23 @@ void gfs2_dinode_print(const struct gfs2_inode *ip);
101extern const struct inode_operations gfs2_file_iops; 101extern const struct inode_operations gfs2_file_iops;
102extern const struct inode_operations gfs2_dir_iops; 102extern const struct inode_operations gfs2_dir_iops;
103extern const struct inode_operations gfs2_symlink_iops; 103extern const struct inode_operations gfs2_symlink_iops;
104extern const struct file_operations *gfs2_file_fops_nolock; 104extern const struct file_operations gfs2_file_fops_nolock;
105extern const struct file_operations *gfs2_dir_fops_nolock; 105extern const struct file_operations gfs2_dir_fops_nolock;
106 106
107extern void gfs2_set_inode_flags(struct inode *inode); 107extern void gfs2_set_inode_flags(struct inode *inode);
108 108
109#ifdef CONFIG_GFS2_FS_LOCKING_DLM 109#ifdef CONFIG_GFS2_FS_LOCKING_DLM
110extern const struct file_operations *gfs2_file_fops; 110extern const struct file_operations gfs2_file_fops;
111extern const struct file_operations *gfs2_dir_fops; 111extern const struct file_operations gfs2_dir_fops;
112
112static inline int gfs2_localflocks(const struct gfs2_sbd *sdp) 113static inline int gfs2_localflocks(const struct gfs2_sbd *sdp)
113{ 114{
114 return sdp->sd_args.ar_localflocks; 115 return sdp->sd_args.ar_localflocks;
115} 116}
116#else /* Single node only */ 117#else /* Single node only */
117#define gfs2_file_fops NULL 118#define gfs2_file_fops gfs2_file_fops_nolock
118#define gfs2_dir_fops NULL 119#define gfs2_dir_fops gfs2_dir_fops_nolock
120
119static inline int gfs2_localflocks(const struct gfs2_sbd *sdp) 121static inline int gfs2_localflocks(const struct gfs2_sbd *sdp)
120{ 122{
121 return 1; 123 return 1;
diff --git a/fs/gfs2/ops_file.c b/fs/gfs2/ops_file.c
index 70b9b8548945..5d82e91887e3 100644
--- a/fs/gfs2/ops_file.c
+++ b/fs/gfs2/ops_file.c
@@ -413,7 +413,9 @@ out_unlock:
413 gfs2_glock_dq(&gh); 413 gfs2_glock_dq(&gh);
414out: 414out:
415 gfs2_holder_uninit(&gh); 415 gfs2_holder_uninit(&gh);
416 if (ret) 416 if (ret == -ENOMEM)
417 ret = VM_FAULT_OOM;
418 else if (ret)
417 ret = VM_FAULT_SIGBUS; 419 ret = VM_FAULT_SIGBUS;
418 return ret; 420 return ret;
419} 421}
@@ -705,7 +707,7 @@ static int gfs2_flock(struct file *file, int cmd, struct file_lock *fl)
705 } 707 }
706} 708}
707 709
708const struct file_operations *gfs2_file_fops = &(const struct file_operations){ 710const struct file_operations gfs2_file_fops = {
709 .llseek = gfs2_llseek, 711 .llseek = gfs2_llseek,
710 .read = do_sync_read, 712 .read = do_sync_read,
711 .aio_read = generic_file_aio_read, 713 .aio_read = generic_file_aio_read,
@@ -723,7 +725,7 @@ const struct file_operations *gfs2_file_fops = &(const struct file_operations){
723 .setlease = gfs2_setlease, 725 .setlease = gfs2_setlease,
724}; 726};
725 727
726const struct file_operations *gfs2_dir_fops = &(const struct file_operations){ 728const struct file_operations gfs2_dir_fops = {
727 .readdir = gfs2_readdir, 729 .readdir = gfs2_readdir,
728 .unlocked_ioctl = gfs2_ioctl, 730 .unlocked_ioctl = gfs2_ioctl,
729 .open = gfs2_open, 731 .open = gfs2_open,
@@ -735,7 +737,7 @@ const struct file_operations *gfs2_dir_fops = &(const struct file_operations){
735 737
736#endif /* CONFIG_GFS2_FS_LOCKING_DLM */ 738#endif /* CONFIG_GFS2_FS_LOCKING_DLM */
737 739
738const struct file_operations *gfs2_file_fops_nolock = &(const struct file_operations){ 740const struct file_operations gfs2_file_fops_nolock = {
739 .llseek = gfs2_llseek, 741 .llseek = gfs2_llseek,
740 .read = do_sync_read, 742 .read = do_sync_read,
741 .aio_read = generic_file_aio_read, 743 .aio_read = generic_file_aio_read,
@@ -751,7 +753,7 @@ const struct file_operations *gfs2_file_fops_nolock = &(const struct file_operat
751 .setlease = generic_setlease, 753 .setlease = generic_setlease,
752}; 754};
753 755
754const struct file_operations *gfs2_dir_fops_nolock = &(const struct file_operations){ 756const struct file_operations gfs2_dir_fops_nolock = {
755 .readdir = gfs2_readdir, 757 .readdir = gfs2_readdir,
756 .unlocked_ioctl = gfs2_ioctl, 758 .unlocked_ioctl = gfs2_ioctl,
757 .open = gfs2_open, 759 .open = gfs2_open,
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index 51883b3ad89c..650a730707b7 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -272,11 +272,6 @@ static int gfs2_read_super(struct gfs2_sbd *sdp, sector_t sector)
272 lock_page(page); 272 lock_page(page);
273 273
274 bio = bio_alloc(GFP_NOFS, 1); 274 bio = bio_alloc(GFP_NOFS, 1);
275 if (unlikely(!bio)) {
276 __free_page(page);
277 return -ENOBUFS;
278 }
279
280 bio->bi_sector = sector * (sb->s_blocksize >> 9); 275 bio->bi_sector = sector * (sb->s_blocksize >> 9);
281 bio->bi_bdev = sb->s_bdev; 276 bio->bi_bdev = sb->s_bdev;
282 bio_add_page(bio, page, PAGE_SIZE, 0); 277 bio_add_page(bio, page, PAGE_SIZE, 0);
diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c
index abd5429ae285..1c70fa5168d6 100644
--- a/fs/gfs2/ops_inode.c
+++ b/fs/gfs2/ops_inode.c
@@ -371,6 +371,7 @@ static int gfs2_symlink(struct inode *dir, struct dentry *dentry,
371 ip = ghs[1].gh_gl->gl_object; 371 ip = ghs[1].gh_gl->gl_object;
372 372
373 ip->i_disksize = size; 373 ip->i_disksize = size;
374 i_size_write(inode, size);
374 375
375 error = gfs2_meta_inode_buffer(ip, &dibh); 376 error = gfs2_meta_inode_buffer(ip, &dibh);
376 377
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
index 8d53f66b5bcc..152e6c4a0dca 100644
--- a/fs/gfs2/quota.c
+++ b/fs/gfs2/quota.c
@@ -81,7 +81,7 @@ struct gfs2_quota_change_host {
81 81
82static LIST_HEAD(qd_lru_list); 82static LIST_HEAD(qd_lru_list);
83static atomic_t qd_lru_count = ATOMIC_INIT(0); 83static atomic_t qd_lru_count = ATOMIC_INIT(0);
84static spinlock_t qd_lru_lock = SPIN_LOCK_UNLOCKED; 84static DEFINE_SPINLOCK(qd_lru_lock);
85 85
86int gfs2_shrink_qd_memory(int nr, gfp_t gfp_mask) 86int gfs2_shrink_qd_memory(int nr, gfp_t gfp_mask)
87{ 87{
@@ -1364,7 +1364,7 @@ int gfs2_quotad(void *data)
1364 refrigerator(); 1364 refrigerator();
1365 t = min(quotad_timeo, statfs_timeo); 1365 t = min(quotad_timeo, statfs_timeo);
1366 1366
1367 prepare_to_wait(&sdp->sd_quota_wait, &wait, TASK_UNINTERRUPTIBLE); 1367 prepare_to_wait(&sdp->sd_quota_wait, &wait, TASK_INTERRUPTIBLE);
1368 spin_lock(&sdp->sd_trunc_lock); 1368 spin_lock(&sdp->sd_trunc_lock);
1369 empty = list_empty(&sdp->sd_trunc_list); 1369 empty = list_empty(&sdp->sd_trunc_list);
1370 spin_unlock(&sdp->sd_trunc_lock); 1370 spin_unlock(&sdp->sd_trunc_lock);
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index f03d024038ea..565038243fa2 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -212,8 +212,7 @@ static u32 gfs2_bitfit(const u8 *buf, const unsigned int len,
212 if (tmp == 0) 212 if (tmp == 0)
213 return BFITNOENT; 213 return BFITNOENT;
214 ptr--; 214 ptr--;
215 bit = fls64(tmp); 215 bit = __ffs64(tmp);
216 bit--; /* fls64 always adds one to the bit count */
217 bit /= 2; /* two bits per entry in the bitmap */ 216 bit /= 2; /* two bits per entry in the bitmap */
218 return (((const unsigned char *)ptr - buf) * GFS2_NBBY) + bit; 217 return (((const unsigned char *)ptr - buf) * GFS2_NBBY) + bit;
219} 218}
@@ -1445,10 +1444,12 @@ static struct gfs2_rgrpd *rgblk_free(struct gfs2_sbd *sdp, u64 bstart,
1445u64 gfs2_alloc_block(struct gfs2_inode *ip, unsigned int *n) 1444u64 gfs2_alloc_block(struct gfs2_inode *ip, unsigned int *n)
1446{ 1445{
1447 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); 1446 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
1447 struct buffer_head *dibh;
1448 struct gfs2_alloc *al = ip->i_alloc; 1448 struct gfs2_alloc *al = ip->i_alloc;
1449 struct gfs2_rgrpd *rgd = al->al_rgd; 1449 struct gfs2_rgrpd *rgd = al->al_rgd;
1450 u32 goal, blk; 1450 u32 goal, blk;
1451 u64 block; 1451 u64 block;
1452 int error;
1452 1453
1453 if (rgrp_contains_block(rgd, ip->i_goal)) 1454 if (rgrp_contains_block(rgd, ip->i_goal))
1454 goal = ip->i_goal - rgd->rd_data0; 1455 goal = ip->i_goal - rgd->rd_data0;
@@ -1461,7 +1462,13 @@ u64 gfs2_alloc_block(struct gfs2_inode *ip, unsigned int *n)
1461 rgd->rd_last_alloc = blk; 1462 rgd->rd_last_alloc = blk;
1462 block = rgd->rd_data0 + blk; 1463 block = rgd->rd_data0 + blk;
1463 ip->i_goal = block; 1464 ip->i_goal = block;
1464 1465 error = gfs2_meta_inode_buffer(ip, &dibh);
1466 if (error == 0) {
1467 struct gfs2_dinode *di = (struct gfs2_dinode *)dibh->b_data;
1468 gfs2_trans_add_bh(ip->i_gl, dibh, 1);
1469 di->di_goal_meta = di->di_goal_data = cpu_to_be64(ip->i_goal);
1470 brelse(dibh);
1471 }
1465 gfs2_assert_withdraw(sdp, rgd->rd_free >= *n); 1472 gfs2_assert_withdraw(sdp, rgd->rd_free >= *n);
1466 rgd->rd_free -= *n; 1473 rgd->rd_free -= *n;
1467 1474
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index 9435dda8f1e0..a1cbff2b4d99 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -70,6 +70,10 @@ static int hfs_releasepage(struct page *page, gfp_t mask)
70 BUG(); 70 BUG();
71 return 0; 71 return 0;
72 } 72 }
73
74 if (!tree)
75 return 0;
76
73 if (tree->node_size >= PAGE_CACHE_SIZE) { 77 if (tree->node_size >= PAGE_CACHE_SIZE) {
74 nidx = page->index >> (tree->node_size_shift - PAGE_CACHE_SHIFT); 78 nidx = page->index >> (tree->node_size_shift - PAGE_CACHE_SHIFT);
75 spin_lock(&tree->hash_lock); 79 spin_lock(&tree->hash_lock);
diff --git a/fs/hfs/mdb.c b/fs/hfs/mdb.c
index 36ca2e1a4fa3..7b6165f25fbe 100644
--- a/fs/hfs/mdb.c
+++ b/fs/hfs/mdb.c
@@ -349,6 +349,7 @@ void hfs_mdb_put(struct super_block *sb)
349 if (HFS_SB(sb)->nls_disk) 349 if (HFS_SB(sb)->nls_disk)
350 unload_nls(HFS_SB(sb)->nls_disk); 350 unload_nls(HFS_SB(sb)->nls_disk);
351 351
352 free_pages((unsigned long)HFS_SB(sb)->bitmap, PAGE_SIZE < 8192 ? 1 : 0);
352 kfree(HFS_SB(sb)); 353 kfree(HFS_SB(sb));
353 sb->s_fs_info = NULL; 354 sb->s_fs_info = NULL;
354} 355}
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 23a3c76711e0..153d9681192b 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -26,7 +26,6 @@
26#include <linux/pagevec.h> 26#include <linux/pagevec.h>
27#include <linux/parser.h> 27#include <linux/parser.h>
28#include <linux/mman.h> 28#include <linux/mman.h>
29#include <linux/quotaops.h>
30#include <linux/slab.h> 29#include <linux/slab.h>
31#include <linux/dnotify.h> 30#include <linux/dnotify.h>
32#include <linux/statfs.h> 31#include <linux/statfs.h>
@@ -842,7 +841,7 @@ hugetlbfs_parse_options(char *options, struct hugetlbfs_config *pconfig)
842bad_val: 841bad_val:
843 printk(KERN_ERR "hugetlbfs: Bad value '%s' for mount option '%s'\n", 842 printk(KERN_ERR "hugetlbfs: Bad value '%s' for mount option '%s'\n",
844 args[0].from, p); 843 args[0].from, p);
845 return 1; 844 return -EINVAL;
846} 845}
847 846
848static int 847static int
diff --git a/fs/inode.c b/fs/inode.c
index d06d6d268de9..6ad14a1cd8c9 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1470,42 +1470,6 @@ static void __wait_on_freeing_inode(struct inode *inode)
1470 spin_lock(&inode_lock); 1470 spin_lock(&inode_lock);
1471} 1471}
1472 1472
1473/*
1474 * We rarely want to lock two inodes that do not have a parent/child
1475 * relationship (such as directory, child inode) simultaneously. The
1476 * vast majority of file systems should be able to get along fine
1477 * without this. Do not use these functions except as a last resort.
1478 */
1479void inode_double_lock(struct inode *inode1, struct inode *inode2)
1480{
1481 if (inode1 == NULL || inode2 == NULL || inode1 == inode2) {
1482 if (inode1)
1483 mutex_lock(&inode1->i_mutex);
1484 else if (inode2)
1485 mutex_lock(&inode2->i_mutex);
1486 return;
1487 }
1488
1489 if (inode1 < inode2) {
1490 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT);
1491 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD);
1492 } else {
1493 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT);
1494 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD);
1495 }
1496}
1497EXPORT_SYMBOL(inode_double_lock);
1498
1499void inode_double_unlock(struct inode *inode1, struct inode *inode2)
1500{
1501 if (inode1)
1502 mutex_unlock(&inode1->i_mutex);
1503
1504 if (inode2 && inode2 != inode1)
1505 mutex_unlock(&inode2->i_mutex);
1506}
1507EXPORT_SYMBOL(inode_double_unlock);
1508
1509static __initdata unsigned long ihash_entries; 1473static __initdata unsigned long ihash_entries;
1510static int __init set_ihash_entries(char *str) 1474static int __init set_ihash_entries(char *str)
1511{ 1475{
diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c
index a8e8513a78a9..06560c520f49 100644
--- a/fs/jbd/commit.c
+++ b/fs/jbd/commit.c
@@ -502,7 +502,7 @@ void journal_commit_transaction(journal_t *journal)
502 err = 0; 502 err = 0;
503 } 503 }
504 504
505 journal_write_revoke_records(journal, commit_transaction); 505 journal_write_revoke_records(journal, commit_transaction, write_op);
506 506
507 /* 507 /*
508 * If we found any dirty or locked buffers, then we should have 508 * If we found any dirty or locked buffers, then we should have
diff --git a/fs/jbd/revoke.c b/fs/jbd/revoke.c
index c7bd649bbbdc..da6cd9bdaabc 100644
--- a/fs/jbd/revoke.c
+++ b/fs/jbd/revoke.c
@@ -55,6 +55,25 @@
55 * need do nothing. 55 * need do nothing.
56 * RevokeValid set, Revoked set: 56 * RevokeValid set, Revoked set:
57 * buffer has been revoked. 57 * buffer has been revoked.
58 *
59 * Locking rules:
60 * We keep two hash tables of revoke records. One hashtable belongs to the
61 * running transaction (is pointed to by journal->j_revoke), the other one
62 * belongs to the committing transaction. Accesses to the second hash table
63 * happen only from the kjournald and no other thread touches this table. Also
64 * journal_switch_revoke_table() which switches which hashtable belongs to the
65 * running and which to the committing transaction is called only from
66 * kjournald. Therefore we need no locks when accessing the hashtable belonging
67 * to the committing transaction.
68 *
69 * All users operating on the hash table belonging to the running transaction
70 * have a handle to the transaction. Therefore they are safe from kjournald
71 * switching hash tables under them. For operations on the lists of entries in
72 * the hash table j_revoke_lock is used.
73 *
74 * Finally, also replay code uses the hash tables but at this moment noone else
75 * can touch them (filesystem isn't mounted yet) and hence no locking is
76 * needed.
58 */ 77 */
59 78
60#ifndef __KERNEL__ 79#ifndef __KERNEL__
@@ -67,6 +86,7 @@
67#include <linux/slab.h> 86#include <linux/slab.h>
68#include <linux/list.h> 87#include <linux/list.h>
69#include <linux/init.h> 88#include <linux/init.h>
89#include <linux/bio.h>
70#endif 90#endif
71#include <linux/log2.h> 91#include <linux/log2.h>
72 92
@@ -99,8 +119,8 @@ struct jbd_revoke_table_s
99#ifdef __KERNEL__ 119#ifdef __KERNEL__
100static void write_one_revoke_record(journal_t *, transaction_t *, 120static void write_one_revoke_record(journal_t *, transaction_t *,
101 struct journal_head **, int *, 121 struct journal_head **, int *,
102 struct jbd_revoke_record_s *); 122 struct jbd_revoke_record_s *, int);
103static void flush_descriptor(journal_t *, struct journal_head *, int); 123static void flush_descriptor(journal_t *, struct journal_head *, int, int);
104#endif 124#endif
105 125
106/* Utility functions to maintain the revoke table */ 126/* Utility functions to maintain the revoke table */
@@ -402,8 +422,6 @@ int journal_revoke(handle_t *handle, unsigned long blocknr,
402 * the second time we would still have a pending revoke to cancel. So, 422 * the second time we would still have a pending revoke to cancel. So,
403 * do not trust the Revoked bit on buffers unless RevokeValid is also 423 * do not trust the Revoked bit on buffers unless RevokeValid is also
404 * set. 424 * set.
405 *
406 * The caller must have the journal locked.
407 */ 425 */
408int journal_cancel_revoke(handle_t *handle, struct journal_head *jh) 426int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
409{ 427{
@@ -481,12 +499,9 @@ void journal_switch_revoke_table(journal_t *journal)
481/* 499/*
482 * Write revoke records to the journal for all entries in the current 500 * Write revoke records to the journal for all entries in the current
483 * revoke hash, deleting the entries as we go. 501 * revoke hash, deleting the entries as we go.
484 *
485 * Called with the journal lock held.
486 */ 502 */
487
488void journal_write_revoke_records(journal_t *journal, 503void journal_write_revoke_records(journal_t *journal,
489 transaction_t *transaction) 504 transaction_t *transaction, int write_op)
490{ 505{
491 struct journal_head *descriptor; 506 struct journal_head *descriptor;
492 struct jbd_revoke_record_s *record; 507 struct jbd_revoke_record_s *record;
@@ -510,14 +525,14 @@ void journal_write_revoke_records(journal_t *journal,
510 hash_list->next; 525 hash_list->next;
511 write_one_revoke_record(journal, transaction, 526 write_one_revoke_record(journal, transaction,
512 &descriptor, &offset, 527 &descriptor, &offset,
513 record); 528 record, write_op);
514 count++; 529 count++;
515 list_del(&record->hash); 530 list_del(&record->hash);
516 kmem_cache_free(revoke_record_cache, record); 531 kmem_cache_free(revoke_record_cache, record);
517 } 532 }
518 } 533 }
519 if (descriptor) 534 if (descriptor)
520 flush_descriptor(journal, descriptor, offset); 535 flush_descriptor(journal, descriptor, offset, write_op);
521 jbd_debug(1, "Wrote %d revoke records\n", count); 536 jbd_debug(1, "Wrote %d revoke records\n", count);
522} 537}
523 538
@@ -530,7 +545,8 @@ static void write_one_revoke_record(journal_t *journal,
530 transaction_t *transaction, 545 transaction_t *transaction,
531 struct journal_head **descriptorp, 546 struct journal_head **descriptorp,
532 int *offsetp, 547 int *offsetp,
533 struct jbd_revoke_record_s *record) 548 struct jbd_revoke_record_s *record,
549 int write_op)
534{ 550{
535 struct journal_head *descriptor; 551 struct journal_head *descriptor;
536 int offset; 552 int offset;
@@ -549,7 +565,7 @@ static void write_one_revoke_record(journal_t *journal,
549 /* Make sure we have a descriptor with space left for the record */ 565 /* Make sure we have a descriptor with space left for the record */
550 if (descriptor) { 566 if (descriptor) {
551 if (offset == journal->j_blocksize) { 567 if (offset == journal->j_blocksize) {
552 flush_descriptor(journal, descriptor, offset); 568 flush_descriptor(journal, descriptor, offset, write_op);
553 descriptor = NULL; 569 descriptor = NULL;
554 } 570 }
555 } 571 }
@@ -586,7 +602,7 @@ static void write_one_revoke_record(journal_t *journal,
586 602
587static void flush_descriptor(journal_t *journal, 603static void flush_descriptor(journal_t *journal,
588 struct journal_head *descriptor, 604 struct journal_head *descriptor,
589 int offset) 605 int offset, int write_op)
590{ 606{
591 journal_revoke_header_t *header; 607 journal_revoke_header_t *header;
592 struct buffer_head *bh = jh2bh(descriptor); 608 struct buffer_head *bh = jh2bh(descriptor);
@@ -601,7 +617,7 @@ static void flush_descriptor(journal_t *journal,
601 set_buffer_jwrite(bh); 617 set_buffer_jwrite(bh);
602 BUFFER_TRACE(bh, "write"); 618 BUFFER_TRACE(bh, "write");
603 set_buffer_dirty(bh); 619 set_buffer_dirty(bh);
604 ll_rw_block(SWRITE, 1, &bh); 620 ll_rw_block((write_op == WRITE) ? SWRITE : SWRITE_SYNC_PLUG, 1, &bh);
605} 621}
606#endif 622#endif
607 623
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c
index 073c8c3df7cd..0b7d3b8226fd 100644
--- a/fs/jbd2/commit.c
+++ b/fs/jbd2/commit.c
@@ -506,7 +506,8 @@ void jbd2_journal_commit_transaction(journal_t *journal)
506 if (err) 506 if (err)
507 jbd2_journal_abort(journal, err); 507 jbd2_journal_abort(journal, err);
508 508
509 jbd2_journal_write_revoke_records(journal, commit_transaction); 509 jbd2_journal_write_revoke_records(journal, commit_transaction,
510 write_op);
510 511
511 jbd_debug(3, "JBD: commit phase 2\n"); 512 jbd_debug(3, "JBD: commit phase 2\n");
512 513
diff --git a/fs/jbd2/revoke.c b/fs/jbd2/revoke.c
index bbe6d592d8b3..a360b06af2e3 100644
--- a/fs/jbd2/revoke.c
+++ b/fs/jbd2/revoke.c
@@ -86,6 +86,7 @@
86#include <linux/slab.h> 86#include <linux/slab.h>
87#include <linux/list.h> 87#include <linux/list.h>
88#include <linux/init.h> 88#include <linux/init.h>
89#include <linux/bio.h>
89#endif 90#endif
90#include <linux/log2.h> 91#include <linux/log2.h>
91 92
@@ -118,8 +119,8 @@ struct jbd2_revoke_table_s
118#ifdef __KERNEL__ 119#ifdef __KERNEL__
119static void write_one_revoke_record(journal_t *, transaction_t *, 120static void write_one_revoke_record(journal_t *, transaction_t *,
120 struct journal_head **, int *, 121 struct journal_head **, int *,
121 struct jbd2_revoke_record_s *); 122 struct jbd2_revoke_record_s *, int);
122static void flush_descriptor(journal_t *, struct journal_head *, int); 123static void flush_descriptor(journal_t *, struct journal_head *, int, int);
123#endif 124#endif
124 125
125/* Utility functions to maintain the revoke table */ 126/* Utility functions to maintain the revoke table */
@@ -499,7 +500,8 @@ void jbd2_journal_switch_revoke_table(journal_t *journal)
499 * revoke hash, deleting the entries as we go. 500 * revoke hash, deleting the entries as we go.
500 */ 501 */
501void jbd2_journal_write_revoke_records(journal_t *journal, 502void jbd2_journal_write_revoke_records(journal_t *journal,
502 transaction_t *transaction) 503 transaction_t *transaction,
504 int write_op)
503{ 505{
504 struct journal_head *descriptor; 506 struct journal_head *descriptor;
505 struct jbd2_revoke_record_s *record; 507 struct jbd2_revoke_record_s *record;
@@ -523,14 +525,14 @@ void jbd2_journal_write_revoke_records(journal_t *journal,
523 hash_list->next; 525 hash_list->next;
524 write_one_revoke_record(journal, transaction, 526 write_one_revoke_record(journal, transaction,
525 &descriptor, &offset, 527 &descriptor, &offset,
526 record); 528 record, write_op);
527 count++; 529 count++;
528 list_del(&record->hash); 530 list_del(&record->hash);
529 kmem_cache_free(jbd2_revoke_record_cache, record); 531 kmem_cache_free(jbd2_revoke_record_cache, record);
530 } 532 }
531 } 533 }
532 if (descriptor) 534 if (descriptor)
533 flush_descriptor(journal, descriptor, offset); 535 flush_descriptor(journal, descriptor, offset, write_op);
534 jbd_debug(1, "Wrote %d revoke records\n", count); 536 jbd_debug(1, "Wrote %d revoke records\n", count);
535} 537}
536 538
@@ -543,7 +545,8 @@ static void write_one_revoke_record(journal_t *journal,
543 transaction_t *transaction, 545 transaction_t *transaction,
544 struct journal_head **descriptorp, 546 struct journal_head **descriptorp,
545 int *offsetp, 547 int *offsetp,
546 struct jbd2_revoke_record_s *record) 548 struct jbd2_revoke_record_s *record,
549 int write_op)
547{ 550{
548 struct journal_head *descriptor; 551 struct journal_head *descriptor;
549 int offset; 552 int offset;
@@ -562,7 +565,7 @@ static void write_one_revoke_record(journal_t *journal,
562 /* Make sure we have a descriptor with space left for the record */ 565 /* Make sure we have a descriptor with space left for the record */
563 if (descriptor) { 566 if (descriptor) {
564 if (offset == journal->j_blocksize) { 567 if (offset == journal->j_blocksize) {
565 flush_descriptor(journal, descriptor, offset); 568 flush_descriptor(journal, descriptor, offset, write_op);
566 descriptor = NULL; 569 descriptor = NULL;
567 } 570 }
568 } 571 }
@@ -607,7 +610,7 @@ static void write_one_revoke_record(journal_t *journal,
607 610
608static void flush_descriptor(journal_t *journal, 611static void flush_descriptor(journal_t *journal,
609 struct journal_head *descriptor, 612 struct journal_head *descriptor,
610 int offset) 613 int offset, int write_op)
611{ 614{
612 jbd2_journal_revoke_header_t *header; 615 jbd2_journal_revoke_header_t *header;
613 struct buffer_head *bh = jh2bh(descriptor); 616 struct buffer_head *bh = jh2bh(descriptor);
@@ -622,7 +625,7 @@ static void flush_descriptor(journal_t *journal,
622 set_buffer_jwrite(bh); 625 set_buffer_jwrite(bh);
623 BUFFER_TRACE(bh, "write"); 626 BUFFER_TRACE(bh, "write");
624 set_buffer_dirty(bh); 627 set_buffer_dirty(bh);
625 ll_rw_block(SWRITE, 1, &bh); 628 ll_rw_block((write_op == WRITE) ? SWRITE : SWRITE_SYNC_PLUG, 1, &bh);
626} 629}
627#endif 630#endif
628 631
diff --git a/fs/namei.c b/fs/namei.c
index b8433ebfae05..78f253cd2d4f 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1248,6 +1248,8 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
1248 int err; 1248 int err;
1249 struct qstr this; 1249 struct qstr this;
1250 1250
1251 WARN_ON_ONCE(!mutex_is_locked(&base->d_inode->i_mutex));
1252
1251 err = __lookup_one_len(name, &this, base, len); 1253 err = __lookup_one_len(name, &this, base, len);
1252 if (err) 1254 if (err)
1253 return ERR_PTR(err); 1255 return ERR_PTR(err);
diff --git a/fs/namespace.c b/fs/namespace.c
index c6f54e4c4290..41196209a906 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1377,7 +1377,7 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt,
1377 if (parent_path) { 1377 if (parent_path) {
1378 detach_mnt(source_mnt, parent_path); 1378 detach_mnt(source_mnt, parent_path);
1379 attach_mnt(source_mnt, path); 1379 attach_mnt(source_mnt, path);
1380 touch_mnt_namespace(current->nsproxy->mnt_ns); 1380 touch_mnt_namespace(parent_path->mnt->mnt_ns);
1381 } else { 1381 } else {
1382 mnt_set_mountpoint(dest_mnt, dest_dentry, source_mnt); 1382 mnt_set_mountpoint(dest_mnt, dest_dentry, source_mnt);
1383 commit_tree(source_mnt); 1383 commit_tree(source_mnt);
@@ -1920,8 +1920,9 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,
1920 if (data_page) 1920 if (data_page)
1921 ((char *)data_page)[PAGE_SIZE - 1] = 0; 1921 ((char *)data_page)[PAGE_SIZE - 1] = 0;
1922 1922
1923 /* Default to relatime */ 1923 /* Default to relatime unless overriden */
1924 mnt_flags |= MNT_RELATIME; 1924 if (!(flags & MS_NOATIME))
1925 mnt_flags |= MNT_RELATIME;
1925 1926
1926 /* Separate the per-mountpoint flags */ 1927 /* Separate the per-mountpoint flags */
1927 if (flags & MS_NOSUID) 1928 if (flags & MS_NOSUID)
diff --git a/fs/ncpfs/ioctl.c b/fs/ncpfs/ioctl.c
index f54360f50a9c..fa038df63ac8 100644
--- a/fs/ncpfs/ioctl.c
+++ b/fs/ncpfs/ioctl.c
@@ -660,13 +660,10 @@ outrel:
660 if (user.object_name_len > NCP_OBJECT_NAME_MAX_LEN) 660 if (user.object_name_len > NCP_OBJECT_NAME_MAX_LEN)
661 return -ENOMEM; 661 return -ENOMEM;
662 if (user.object_name_len) { 662 if (user.object_name_len) {
663 newname = kmalloc(user.object_name_len, GFP_USER); 663 newname = memdup_user(user.object_name,
664 if (!newname) 664 user.object_name_len);
665 return -ENOMEM; 665 if (IS_ERR(newname))
666 if (copy_from_user(newname, user.object_name, user.object_name_len)) { 666 return PTR_ERR(newname);
667 kfree(newname);
668 return -EFAULT;
669 }
670 } else { 667 } else {
671 newname = NULL; 668 newname = NULL;
672 } 669 }
@@ -760,13 +757,9 @@ outrel:
760 if (user.len > NCP_PRIVATE_DATA_MAX_LEN) 757 if (user.len > NCP_PRIVATE_DATA_MAX_LEN)
761 return -ENOMEM; 758 return -ENOMEM;
762 if (user.len) { 759 if (user.len) {
763 new = kmalloc(user.len, GFP_USER); 760 new = memdup_user(user.data, user.len);
764 if (!new) 761 if (IS_ERR(new))
765 return -ENOMEM; 762 return PTR_ERR(new);
766 if (copy_from_user(new, user.data, user.len)) {
767 kfree(new);
768 return -EFAULT;
769 }
770 } else { 763 } else {
771 new = NULL; 764 new = NULL;
772 } 765 }
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
index e6a1932c7110..35869a4921f1 100644
--- a/fs/nfs/nfs3xdr.c
+++ b/fs/nfs/nfs3xdr.c
@@ -713,7 +713,8 @@ nfs3_xdr_setaclargs(struct rpc_rqst *req, __be32 *p,
713 if (args->npages != 0) 713 if (args->npages != 0)
714 xdr_encode_pages(buf, args->pages, 0, args->len); 714 xdr_encode_pages(buf, args->pages, 0, args->len);
715 else 715 else
716 req->rq_slen += args->len; 716 req->rq_slen = xdr_adjust_iovec(req->rq_svec,
717 p + XDR_QUADLEN(args->len));
717 718
718 err = nfsacl_encode(buf, base, args->inode, 719 err = nfsacl_encode(buf, base, args->inode,
719 (args->mask & NFS_ACL) ? 720 (args->mask & NFS_ACL) ?
diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
index 3444c0052a87..5275097a7565 100644
--- a/fs/nfsd/nfs4recover.c
+++ b/fs/nfsd/nfs4recover.c
@@ -229,21 +229,23 @@ nfsd4_list_rec_dir(struct dentry *dir, recdir_func *f)
229 goto out; 229 goto out;
230 status = vfs_readdir(filp, nfsd4_build_namelist, &names); 230 status = vfs_readdir(filp, nfsd4_build_namelist, &names);
231 fput(filp); 231 fput(filp);
232 mutex_lock(&dir->d_inode->i_mutex);
232 while (!list_empty(&names)) { 233 while (!list_empty(&names)) {
233 entry = list_entry(names.next, struct name_list, list); 234 entry = list_entry(names.next, struct name_list, list);
234 235
235 dentry = lookup_one_len(entry->name, dir, HEXDIR_LEN-1); 236 dentry = lookup_one_len(entry->name, dir, HEXDIR_LEN-1);
236 if (IS_ERR(dentry)) { 237 if (IS_ERR(dentry)) {
237 status = PTR_ERR(dentry); 238 status = PTR_ERR(dentry);
238 goto out; 239 break;
239 } 240 }
240 status = f(dir, dentry); 241 status = f(dir, dentry);
241 dput(dentry); 242 dput(dentry);
242 if (status) 243 if (status)
243 goto out; 244 break;
244 list_del(&entry->list); 245 list_del(&entry->list);
245 kfree(entry); 246 kfree(entry);
246 } 247 }
248 mutex_unlock(&dir->d_inode->i_mutex);
247out: 249out:
248 while (!list_empty(&names)) { 250 while (!list_empty(&names)) {
249 entry = list_entry(names.next, struct name_list, list); 251 entry = list_entry(names.next, struct name_list, list);
@@ -255,36 +257,6 @@ out:
255} 257}
256 258
257static int 259static int
258nfsd4_remove_clid_file(struct dentry *dir, struct dentry *dentry)
259{
260 int status;
261
262 if (!S_ISREG(dir->d_inode->i_mode)) {
263 printk("nfsd4: non-file found in client recovery directory\n");
264 return -EINVAL;
265 }
266 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT);
267 status = vfs_unlink(dir->d_inode, dentry);
268 mutex_unlock(&dir->d_inode->i_mutex);
269 return status;
270}
271
272static int
273nfsd4_clear_clid_dir(struct dentry *dir, struct dentry *dentry)
274{
275 int status;
276
277 /* For now this directory should already be empty, but we empty it of
278 * any regular files anyway, just in case the directory was created by
279 * a kernel from the future.... */
280 nfsd4_list_rec_dir(dentry, nfsd4_remove_clid_file);
281 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT);
282 status = vfs_rmdir(dir->d_inode, dentry);
283 mutex_unlock(&dir->d_inode->i_mutex);
284 return status;
285}
286
287static int
288nfsd4_unlink_clid_dir(char *name, int namlen) 260nfsd4_unlink_clid_dir(char *name, int namlen)
289{ 261{
290 struct dentry *dentry; 262 struct dentry *dentry;
@@ -294,18 +266,18 @@ nfsd4_unlink_clid_dir(char *name, int namlen)
294 266
295 mutex_lock(&rec_dir.dentry->d_inode->i_mutex); 267 mutex_lock(&rec_dir.dentry->d_inode->i_mutex);
296 dentry = lookup_one_len(name, rec_dir.dentry, namlen); 268 dentry = lookup_one_len(name, rec_dir.dentry, namlen);
297 mutex_unlock(&rec_dir.dentry->d_inode->i_mutex);
298 if (IS_ERR(dentry)) { 269 if (IS_ERR(dentry)) {
299 status = PTR_ERR(dentry); 270 status = PTR_ERR(dentry);
300 return status; 271 goto out_unlock;
301 } 272 }
302 status = -ENOENT; 273 status = -ENOENT;
303 if (!dentry->d_inode) 274 if (!dentry->d_inode)
304 goto out; 275 goto out;
305 276 status = vfs_rmdir(rec_dir.dentry->d_inode, dentry);
306 status = nfsd4_clear_clid_dir(rec_dir.dentry, dentry);
307out: 277out:
308 dput(dentry); 278 dput(dentry);
279out_unlock:
280 mutex_unlock(&rec_dir.dentry->d_inode->i_mutex);
309 return status; 281 return status;
310} 282}
311 283
@@ -348,7 +320,7 @@ purge_old(struct dentry *parent, struct dentry *child)
348 if (nfs4_has_reclaimed_state(child->d_name.name, false)) 320 if (nfs4_has_reclaimed_state(child->d_name.name, false))
349 return 0; 321 return 0;
350 322
351 status = nfsd4_clear_clid_dir(parent, child); 323 status = vfs_rmdir(parent->d_inode, child);
352 if (status) 324 if (status)
353 printk("failed to remove client recovery directory %s\n", 325 printk("failed to remove client recovery directory %s\n",
354 child->d_name.name); 326 child->d_name.name);
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index ab93fcfef254..6c68ffd6b4bb 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -116,10 +116,15 @@ nfsd_cross_mnt(struct svc_rqst *rqstp, struct dentry **dpp,
116 } 116 }
117 if ((exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) { 117 if ((exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) {
118 /* successfully crossed mount point */ 118 /* successfully crossed mount point */
119 exp_put(exp); 119 /*
120 *expp = exp2; 120 * This is subtle: dentry is *not* under mnt at this point.
121 * The only reason we are safe is that original mnt is pinned
122 * down by exp, so we should dput before putting exp.
123 */
121 dput(dentry); 124 dput(dentry);
122 *dpp = mounts; 125 *dpp = mounts;
126 exp_put(exp);
127 *expp = exp2;
123 } else { 128 } else {
124 exp_put(exp2); 129 exp_put(exp2);
125 dput(mounts); 130 dput(mounts);
@@ -1885,8 +1890,8 @@ static int nfsd_buffered_filldir(void *__buf, const char *name, int namlen,
1885 return 0; 1890 return 0;
1886} 1891}
1887 1892
1888static int nfsd_buffered_readdir(struct file *file, filldir_t func, 1893static __be32 nfsd_buffered_readdir(struct file *file, filldir_t func,
1889 struct readdir_cd *cdp, loff_t *offsetp) 1894 struct readdir_cd *cdp, loff_t *offsetp)
1890{ 1895{
1891 struct readdir_data buf; 1896 struct readdir_data buf;
1892 struct buffered_dirent *de; 1897 struct buffered_dirent *de;
@@ -1896,11 +1901,12 @@ static int nfsd_buffered_readdir(struct file *file, filldir_t func,
1896 1901
1897 buf.dirent = (void *)__get_free_page(GFP_KERNEL); 1902 buf.dirent = (void *)__get_free_page(GFP_KERNEL);
1898 if (!buf.dirent) 1903 if (!buf.dirent)
1899 return -ENOMEM; 1904 return nfserrno(-ENOMEM);
1900 1905
1901 offset = *offsetp; 1906 offset = *offsetp;
1902 1907
1903 while (1) { 1908 while (1) {
1909 struct inode *dir_inode = file->f_path.dentry->d_inode;
1904 unsigned int reclen; 1910 unsigned int reclen;
1905 1911
1906 cdp->err = nfserr_eof; /* will be cleared on successful read */ 1912 cdp->err = nfserr_eof; /* will be cleared on successful read */
@@ -1919,26 +1925,38 @@ static int nfsd_buffered_readdir(struct file *file, filldir_t func,
1919 if (!size) 1925 if (!size)
1920 break; 1926 break;
1921 1927
1928 /*
1929 * Various filldir functions may end up calling back into
1930 * lookup_one_len() and the file system's ->lookup() method.
1931 * These expect i_mutex to be held, as it would within readdir.
1932 */
1933 host_err = mutex_lock_killable(&dir_inode->i_mutex);
1934 if (host_err)
1935 break;
1936
1922 de = (struct buffered_dirent *)buf.dirent; 1937 de = (struct buffered_dirent *)buf.dirent;
1923 while (size > 0) { 1938 while (size > 0) {
1924 offset = de->offset; 1939 offset = de->offset;
1925 1940
1926 if (func(cdp, de->name, de->namlen, de->offset, 1941 if (func(cdp, de->name, de->namlen, de->offset,
1927 de->ino, de->d_type)) 1942 de->ino, de->d_type))
1928 goto done; 1943 break;
1929 1944
1930 if (cdp->err != nfs_ok) 1945 if (cdp->err != nfs_ok)
1931 goto done; 1946 break;
1932 1947
1933 reclen = ALIGN(sizeof(*de) + de->namlen, 1948 reclen = ALIGN(sizeof(*de) + de->namlen,
1934 sizeof(u64)); 1949 sizeof(u64));
1935 size -= reclen; 1950 size -= reclen;
1936 de = (struct buffered_dirent *)((char *)de + reclen); 1951 de = (struct buffered_dirent *)((char *)de + reclen);
1937 } 1952 }
1953 mutex_unlock(&dir_inode->i_mutex);
1954 if (size > 0) /* We bailed out early */
1955 break;
1956
1938 offset = vfs_llseek(file, 0, SEEK_CUR); 1957 offset = vfs_llseek(file, 0, SEEK_CUR);
1939 } 1958 }
1940 1959
1941 done:
1942 free_page((unsigned long)(buf.dirent)); 1960 free_page((unsigned long)(buf.dirent));
1943 1961
1944 if (host_err) 1962 if (host_err)
diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c
index 24638e059bf3..064279e33bbb 100644
--- a/fs/nilfs2/bmap.c
+++ b/fs/nilfs2/bmap.c
@@ -688,6 +688,8 @@ static const struct nilfs_bmap_ptr_operations nilfs_bmap_ptr_ops_gc = {
688 .bpop_translate = NULL, 688 .bpop_translate = NULL,
689}; 689};
690 690
691static struct lock_class_key nilfs_bmap_dat_lock_key;
692
691/** 693/**
692 * nilfs_bmap_read - read a bmap from an inode 694 * nilfs_bmap_read - read a bmap from an inode
693 * @bmap: bmap 695 * @bmap: bmap
@@ -715,6 +717,7 @@ int nilfs_bmap_read(struct nilfs_bmap *bmap, struct nilfs_inode *raw_inode)
715 bmap->b_pops = &nilfs_bmap_ptr_ops_p; 717 bmap->b_pops = &nilfs_bmap_ptr_ops_p;
716 bmap->b_last_allocated_key = 0; /* XXX: use macro */ 718 bmap->b_last_allocated_key = 0; /* XXX: use macro */
717 bmap->b_last_allocated_ptr = NILFS_BMAP_NEW_PTR_INIT; 719 bmap->b_last_allocated_ptr = NILFS_BMAP_NEW_PTR_INIT;
720 lockdep_set_class(&bmap->b_sem, &nilfs_bmap_dat_lock_key);
718 break; 721 break;
719 case NILFS_CPFILE_INO: 722 case NILFS_CPFILE_INO:
720 case NILFS_SUFILE_INO: 723 case NILFS_SUFILE_INO:
@@ -772,6 +775,7 @@ void nilfs_bmap_init_gcdat(struct nilfs_bmap *gcbmap, struct nilfs_bmap *bmap)
772{ 775{
773 memcpy(gcbmap, bmap, sizeof(union nilfs_bmap_union)); 776 memcpy(gcbmap, bmap, sizeof(union nilfs_bmap_union));
774 init_rwsem(&gcbmap->b_sem); 777 init_rwsem(&gcbmap->b_sem);
778 lockdep_set_class(&bmap->b_sem, &nilfs_bmap_dat_lock_key);
775 gcbmap->b_inode = &NILFS_BMAP_I(gcbmap)->vfs_inode; 779 gcbmap->b_inode = &NILFS_BMAP_I(gcbmap)->vfs_inode;
776} 780}
777 781
@@ -779,5 +783,6 @@ void nilfs_bmap_commit_gcdat(struct nilfs_bmap *gcbmap, struct nilfs_bmap *bmap)
779{ 783{
780 memcpy(bmap, gcbmap, sizeof(union nilfs_bmap_union)); 784 memcpy(bmap, gcbmap, sizeof(union nilfs_bmap_union));
781 init_rwsem(&bmap->b_sem); 785 init_rwsem(&bmap->b_sem);
786 lockdep_set_class(&bmap->b_sem, &nilfs_bmap_dat_lock_key);
782 bmap->b_inode = &NILFS_BMAP_I(bmap)->vfs_inode; 787 bmap->b_inode = &NILFS_BMAP_I(bmap)->vfs_inode;
783} 788}
diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h
index 7558c977db02..3d0c18a16db1 100644
--- a/fs/nilfs2/nilfs.h
+++ b/fs/nilfs2/nilfs.h
@@ -35,11 +35,6 @@
35#include "bmap_union.h" 35#include "bmap_union.h"
36 36
37/* 37/*
38 * NILFS filesystem version
39 */
40#define NILFS_VERSION "2.0.5"
41
42/*
43 * nilfs inode data in memory 38 * nilfs inode data in memory
44 */ 39 */
45struct nilfs_inode_info { 40struct nilfs_inode_info {
diff --git a/fs/nilfs2/recovery.c b/fs/nilfs2/recovery.c
index 6ade0963fc1d..4fc081e47d70 100644
--- a/fs/nilfs2/recovery.c
+++ b/fs/nilfs2/recovery.c
@@ -413,7 +413,6 @@ static int nilfs_prepare_segment_for_recovery(struct the_nilfs *nilfs,
413 struct nilfs_segment_entry *ent, *n; 413 struct nilfs_segment_entry *ent, *n;
414 struct inode *sufile = nilfs->ns_sufile; 414 struct inode *sufile = nilfs->ns_sufile;
415 __u64 segnum[4]; 415 __u64 segnum[4];
416 time_t mtime;
417 int err; 416 int err;
418 int i; 417 int i;
419 418
@@ -442,24 +441,13 @@ static int nilfs_prepare_segment_for_recovery(struct the_nilfs *nilfs,
442 * Collecting segments written after the latest super root. 441 * Collecting segments written after the latest super root.
443 * These are marked dirty to avoid being reallocated in the next write. 442 * These are marked dirty to avoid being reallocated in the next write.
444 */ 443 */
445 mtime = get_seconds();
446 list_for_each_entry_safe(ent, n, head, list) { 444 list_for_each_entry_safe(ent, n, head, list) {
447 if (ent->segnum == segnum[0]) { 445 if (ent->segnum != segnum[0]) {
448 list_del(&ent->list); 446 err = nilfs_sufile_scrap(sufile, ent->segnum);
449 nilfs_free_segment_entry(ent); 447 if (unlikely(err))
450 continue; 448 goto failed;
451 }
452 err = nilfs_open_segment_entry(ent, sufile);
453 if (unlikely(err))
454 goto failed;
455 if (!nilfs_segment_usage_dirty(ent->raw_su)) {
456 /* make the segment garbage */
457 ent->raw_su->su_nblocks = cpu_to_le32(0);
458 ent->raw_su->su_lastmod = cpu_to_le32(mtime);
459 nilfs_segment_usage_set_dirty(ent->raw_su);
460 } 449 }
461 list_del(&ent->list); 450 list_del(&ent->list);
462 nilfs_close_segment_entry(ent, sufile);
463 nilfs_free_segment_entry(ent); 451 nilfs_free_segment_entry(ent);
464 } 452 }
465 453
diff --git a/fs/nilfs2/sufile.c b/fs/nilfs2/sufile.c
index c774cf397e2f..98e68677f045 100644
--- a/fs/nilfs2/sufile.c
+++ b/fs/nilfs2/sufile.c
@@ -93,6 +93,52 @@ nilfs_sufile_get_segment_usage_block(struct inode *sufile, __u64 segnum,
93 create, NULL, bhp); 93 create, NULL, bhp);
94} 94}
95 95
96static void nilfs_sufile_mod_counter(struct buffer_head *header_bh,
97 u64 ncleanadd, u64 ndirtyadd)
98{
99 struct nilfs_sufile_header *header;
100 void *kaddr;
101
102 kaddr = kmap_atomic(header_bh->b_page, KM_USER0);
103 header = kaddr + bh_offset(header_bh);
104 le64_add_cpu(&header->sh_ncleansegs, ncleanadd);
105 le64_add_cpu(&header->sh_ndirtysegs, ndirtyadd);
106 kunmap_atomic(kaddr, KM_USER0);
107
108 nilfs_mdt_mark_buffer_dirty(header_bh);
109}
110
111int nilfs_sufile_update(struct inode *sufile, __u64 segnum, int create,
112 void (*dofunc)(struct inode *, __u64,
113 struct buffer_head *,
114 struct buffer_head *))
115{
116 struct buffer_head *header_bh, *bh;
117 int ret;
118
119 if (unlikely(segnum >= nilfs_sufile_get_nsegments(sufile))) {
120 printk(KERN_WARNING "%s: invalid segment number: %llu\n",
121 __func__, (unsigned long long)segnum);
122 return -EINVAL;
123 }
124 down_write(&NILFS_MDT(sufile)->mi_sem);
125
126 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
127 if (ret < 0)
128 goto out_sem;
129
130 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, create, &bh);
131 if (!ret) {
132 dofunc(sufile, segnum, header_bh, bh);
133 brelse(bh);
134 }
135 brelse(header_bh);
136
137 out_sem:
138 up_write(&NILFS_MDT(sufile)->mi_sem);
139 return ret;
140}
141
96/** 142/**
97 * nilfs_sufile_alloc - allocate a segment 143 * nilfs_sufile_alloc - allocate a segment
98 * @sufile: inode of segment usage file 144 * @sufile: inode of segment usage file
@@ -113,7 +159,6 @@ nilfs_sufile_get_segment_usage_block(struct inode *sufile, __u64 segnum,
113int nilfs_sufile_alloc(struct inode *sufile, __u64 *segnump) 159int nilfs_sufile_alloc(struct inode *sufile, __u64 *segnump)
114{ 160{
115 struct buffer_head *header_bh, *su_bh; 161 struct buffer_head *header_bh, *su_bh;
116 struct the_nilfs *nilfs;
117 struct nilfs_sufile_header *header; 162 struct nilfs_sufile_header *header;
118 struct nilfs_segment_usage *su; 163 struct nilfs_segment_usage *su;
119 size_t susz = NILFS_MDT(sufile)->mi_entry_size; 164 size_t susz = NILFS_MDT(sufile)->mi_entry_size;
@@ -124,8 +169,6 @@ int nilfs_sufile_alloc(struct inode *sufile, __u64 *segnump)
124 169
125 down_write(&NILFS_MDT(sufile)->mi_sem); 170 down_write(&NILFS_MDT(sufile)->mi_sem);
126 171
127 nilfs = NILFS_MDT(sufile)->mi_nilfs;
128
129 ret = nilfs_sufile_get_header_block(sufile, &header_bh); 172 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
130 if (ret < 0) 173 if (ret < 0)
131 goto out_sem; 174 goto out_sem;
@@ -192,165 +235,84 @@ int nilfs_sufile_alloc(struct inode *sufile, __u64 *segnump)
192 return ret; 235 return ret;
193} 236}
194 237
195/** 238void nilfs_sufile_do_cancel_free(struct inode *sufile, __u64 segnum,
196 * nilfs_sufile_cancel_free - 239 struct buffer_head *header_bh,
197 * @sufile: inode of segment usage file 240 struct buffer_head *su_bh)
198 * @segnum: segment number
199 *
200 * Description:
201 *
202 * Return Value: On success, 0 is returned. On error, one of the following
203 * negative error codes is returned.
204 *
205 * %-EIO - I/O error.
206 *
207 * %-ENOMEM - Insufficient amount of memory available.
208 */
209int nilfs_sufile_cancel_free(struct inode *sufile, __u64 segnum)
210{ 241{
211 struct buffer_head *header_bh, *su_bh;
212 struct the_nilfs *nilfs;
213 struct nilfs_sufile_header *header;
214 struct nilfs_segment_usage *su; 242 struct nilfs_segment_usage *su;
215 void *kaddr; 243 void *kaddr;
216 int ret;
217
218 down_write(&NILFS_MDT(sufile)->mi_sem);
219
220 nilfs = NILFS_MDT(sufile)->mi_nilfs;
221
222 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
223 if (ret < 0)
224 goto out_sem;
225
226 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &su_bh);
227 if (ret < 0)
228 goto out_header;
229 244
230 kaddr = kmap_atomic(su_bh->b_page, KM_USER0); 245 kaddr = kmap_atomic(su_bh->b_page, KM_USER0);
231 su = nilfs_sufile_block_get_segment_usage( 246 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
232 sufile, segnum, su_bh, kaddr);
233 if (unlikely(!nilfs_segment_usage_clean(su))) { 247 if (unlikely(!nilfs_segment_usage_clean(su))) {
234 printk(KERN_WARNING "%s: segment %llu must be clean\n", 248 printk(KERN_WARNING "%s: segment %llu must be clean\n",
235 __func__, (unsigned long long)segnum); 249 __func__, (unsigned long long)segnum);
236 kunmap_atomic(kaddr, KM_USER0); 250 kunmap_atomic(kaddr, KM_USER0);
237 goto out_su_bh; 251 return;
238 } 252 }
239 nilfs_segment_usage_set_dirty(su); 253 nilfs_segment_usage_set_dirty(su);
240 kunmap_atomic(kaddr, KM_USER0); 254 kunmap_atomic(kaddr, KM_USER0);
241 255
242 kaddr = kmap_atomic(header_bh->b_page, KM_USER0); 256 nilfs_sufile_mod_counter(header_bh, -1, 1);
243 header = nilfs_sufile_block_get_header(sufile, header_bh, kaddr);
244 le64_add_cpu(&header->sh_ncleansegs, -1);
245 le64_add_cpu(&header->sh_ndirtysegs, 1);
246 kunmap_atomic(kaddr, KM_USER0);
247
248 nilfs_mdt_mark_buffer_dirty(header_bh);
249 nilfs_mdt_mark_buffer_dirty(su_bh); 257 nilfs_mdt_mark_buffer_dirty(su_bh);
250 nilfs_mdt_mark_dirty(sufile); 258 nilfs_mdt_mark_dirty(sufile);
251
252 out_su_bh:
253 brelse(su_bh);
254 out_header:
255 brelse(header_bh);
256 out_sem:
257 up_write(&NILFS_MDT(sufile)->mi_sem);
258 return ret;
259} 259}
260 260
261/** 261void nilfs_sufile_do_scrap(struct inode *sufile, __u64 segnum,
262 * nilfs_sufile_freev - free segments 262 struct buffer_head *header_bh,
263 * @sufile: inode of segment usage file 263 struct buffer_head *su_bh)
264 * @segnum: array of segment numbers
265 * @nsegs: number of segments
266 *
267 * Description: nilfs_sufile_freev() frees segments specified by @segnum and
268 * @nsegs, which must have been returned by a previous call to
269 * nilfs_sufile_alloc().
270 *
271 * Return Value: On success, 0 is returned. On error, one of the following
272 * negative error codes is returned.
273 *
274 * %-EIO - I/O error.
275 *
276 * %-ENOMEM - Insufficient amount of memory available.
277 */
278#define NILFS_SUFILE_FREEV_PREALLOC 16
279int nilfs_sufile_freev(struct inode *sufile, __u64 *segnum, size_t nsegs)
280{ 264{
281 struct buffer_head *header_bh, **su_bh,
282 *su_bh_prealloc[NILFS_SUFILE_FREEV_PREALLOC];
283 struct the_nilfs *nilfs;
284 struct nilfs_sufile_header *header;
285 struct nilfs_segment_usage *su; 265 struct nilfs_segment_usage *su;
286 void *kaddr; 266 void *kaddr;
287 int ret, i; 267 int clean, dirty;
288 268
289 down_write(&NILFS_MDT(sufile)->mi_sem); 269 kaddr = kmap_atomic(su_bh->b_page, KM_USER0);
290 270 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
291 nilfs = NILFS_MDT(sufile)->mi_nilfs; 271 if (su->su_flags == cpu_to_le32(1UL << NILFS_SEGMENT_USAGE_DIRTY) &&
292 272 su->su_nblocks == cpu_to_le32(0)) {
293 /* prepare resources */
294 if (nsegs <= NILFS_SUFILE_FREEV_PREALLOC)
295 su_bh = su_bh_prealloc;
296 else {
297 su_bh = kmalloc(sizeof(*su_bh) * nsegs, GFP_NOFS);
298 if (su_bh == NULL) {
299 ret = -ENOMEM;
300 goto out_sem;
301 }
302 }
303
304 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
305 if (ret < 0)
306 goto out_su_bh;
307 for (i = 0; i < nsegs; i++) {
308 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum[i],
309 0, &su_bh[i]);
310 if (ret < 0)
311 goto out_bh;
312 }
313
314 /* free segments */
315 for (i = 0; i < nsegs; i++) {
316 kaddr = kmap_atomic(su_bh[i]->b_page, KM_USER0);
317 su = nilfs_sufile_block_get_segment_usage(
318 sufile, segnum[i], su_bh[i], kaddr);
319 WARN_ON(nilfs_segment_usage_error(su));
320 nilfs_segment_usage_set_clean(su);
321 kunmap_atomic(kaddr, KM_USER0); 273 kunmap_atomic(kaddr, KM_USER0);
322 nilfs_mdt_mark_buffer_dirty(su_bh[i]); 274 return;
323 } 275 }
324 kaddr = kmap_atomic(header_bh->b_page, KM_USER0); 276 clean = nilfs_segment_usage_clean(su);
325 header = nilfs_sufile_block_get_header(sufile, header_bh, kaddr); 277 dirty = nilfs_segment_usage_dirty(su);
326 le64_add_cpu(&header->sh_ncleansegs, nsegs); 278
327 le64_add_cpu(&header->sh_ndirtysegs, -(u64)nsegs); 279 /* make the segment garbage */
280 su->su_lastmod = cpu_to_le64(0);
281 su->su_nblocks = cpu_to_le32(0);
282 su->su_flags = cpu_to_le32(1UL << NILFS_SEGMENT_USAGE_DIRTY);
328 kunmap_atomic(kaddr, KM_USER0); 283 kunmap_atomic(kaddr, KM_USER0);
329 nilfs_mdt_mark_buffer_dirty(header_bh); 284
285 nilfs_sufile_mod_counter(header_bh, clean ? (u64)-1 : 0, dirty ? 0 : 1);
286 nilfs_mdt_mark_buffer_dirty(su_bh);
330 nilfs_mdt_mark_dirty(sufile); 287 nilfs_mdt_mark_dirty(sufile);
288}
331 289
332 out_bh: 290void nilfs_sufile_do_free(struct inode *sufile, __u64 segnum,
333 for (i--; i >= 0; i--) 291 struct buffer_head *header_bh,
334 brelse(su_bh[i]); 292 struct buffer_head *su_bh)
335 brelse(header_bh); 293{
294 struct nilfs_segment_usage *su;
295 void *kaddr;
296 int sudirty;
336 297
337 out_su_bh: 298 kaddr = kmap_atomic(su_bh->b_page, KM_USER0);
338 if (su_bh != su_bh_prealloc) 299 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
339 kfree(su_bh); 300 if (nilfs_segment_usage_clean(su)) {
301 printk(KERN_WARNING "%s: segment %llu is already clean\n",
302 __func__, (unsigned long long)segnum);
303 kunmap_atomic(kaddr, KM_USER0);
304 return;
305 }
306 WARN_ON(nilfs_segment_usage_error(su));
307 WARN_ON(!nilfs_segment_usage_dirty(su));
340 308
341 out_sem: 309 sudirty = nilfs_segment_usage_dirty(su);
342 up_write(&NILFS_MDT(sufile)->mi_sem); 310 nilfs_segment_usage_set_clean(su);
343 return ret; 311 kunmap_atomic(kaddr, KM_USER0);
344} 312 nilfs_mdt_mark_buffer_dirty(su_bh);
345 313
346/** 314 nilfs_sufile_mod_counter(header_bh, 1, sudirty ? (u64)-1 : 0);
347 * nilfs_sufile_free - 315 nilfs_mdt_mark_dirty(sufile);
348 * @sufile:
349 * @segnum:
350 */
351int nilfs_sufile_free(struct inode *sufile, __u64 segnum)
352{
353 return nilfs_sufile_freev(sufile, &segnum, 1);
354} 316}
355 317
356/** 318/**
@@ -500,72 +462,28 @@ int nilfs_sufile_get_ncleansegs(struct inode *sufile, unsigned long *nsegsp)
500 return ret; 462 return ret;
501} 463}
502 464
503/** 465void nilfs_sufile_do_set_error(struct inode *sufile, __u64 segnum,
504 * nilfs_sufile_set_error - mark a segment as erroneous 466 struct buffer_head *header_bh,
505 * @sufile: inode of segment usage file 467 struct buffer_head *su_bh)
506 * @segnum: segment number
507 *
508 * Description: nilfs_sufile_set_error() marks the segment specified by
509 * @segnum as erroneous. The error segment will never be used again.
510 *
511 * Return Value: On success, 0 is returned. On error, one of the following
512 * negative error codes is returned.
513 *
514 * %-EIO - I/O error.
515 *
516 * %-ENOMEM - Insufficient amount of memory available.
517 *
518 * %-EINVAL - Invalid segment usage number.
519 */
520int nilfs_sufile_set_error(struct inode *sufile, __u64 segnum)
521{ 468{
522 struct buffer_head *header_bh, *su_bh;
523 struct nilfs_segment_usage *su; 469 struct nilfs_segment_usage *su;
524 struct nilfs_sufile_header *header;
525 void *kaddr; 470 void *kaddr;
526 int ret; 471 int suclean;
527
528 if (unlikely(segnum >= nilfs_sufile_get_nsegments(sufile))) {
529 printk(KERN_WARNING "%s: invalid segment number: %llu\n",
530 __func__, (unsigned long long)segnum);
531 return -EINVAL;
532 }
533 down_write(&NILFS_MDT(sufile)->mi_sem);
534
535 ret = nilfs_sufile_get_header_block(sufile, &header_bh);
536 if (ret < 0)
537 goto out_sem;
538 ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &su_bh);
539 if (ret < 0)
540 goto out_header;
541 472
542 kaddr = kmap_atomic(su_bh->b_page, KM_USER0); 473 kaddr = kmap_atomic(su_bh->b_page, KM_USER0);
543 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr); 474 su = nilfs_sufile_block_get_segment_usage(sufile, segnum, su_bh, kaddr);
544 if (nilfs_segment_usage_error(su)) { 475 if (nilfs_segment_usage_error(su)) {
545 kunmap_atomic(kaddr, KM_USER0); 476 kunmap_atomic(kaddr, KM_USER0);
546 brelse(su_bh); 477 return;
547 goto out_header;
548 } 478 }
549 479 suclean = nilfs_segment_usage_clean(su);
550 nilfs_segment_usage_set_error(su); 480 nilfs_segment_usage_set_error(su);
551 kunmap_atomic(kaddr, KM_USER0); 481 kunmap_atomic(kaddr, KM_USER0);
552 brelse(su_bh);
553 482
554 kaddr = kmap_atomic(header_bh->b_page, KM_USER0); 483 if (suclean)
555 header = nilfs_sufile_block_get_header(sufile, header_bh, kaddr); 484 nilfs_sufile_mod_counter(header_bh, -1, 0);
556 le64_add_cpu(&header->sh_ndirtysegs, -1);
557 kunmap_atomic(kaddr, KM_USER0);
558 nilfs_mdt_mark_buffer_dirty(header_bh);
559 nilfs_mdt_mark_buffer_dirty(su_bh); 485 nilfs_mdt_mark_buffer_dirty(su_bh);
560 nilfs_mdt_mark_dirty(sufile); 486 nilfs_mdt_mark_dirty(sufile);
561 brelse(su_bh);
562
563 out_header:
564 brelse(header_bh);
565
566 out_sem:
567 up_write(&NILFS_MDT(sufile)->mi_sem);
568 return ret;
569} 487}
570 488
571/** 489/**
@@ -625,7 +543,7 @@ ssize_t nilfs_sufile_get_suinfo(struct inode *sufile, __u64 segnum,
625 si[i + j].sui_nblocks = le32_to_cpu(su->su_nblocks); 543 si[i + j].sui_nblocks = le32_to_cpu(su->su_nblocks);
626 si[i + j].sui_flags = le32_to_cpu(su->su_flags) & 544 si[i + j].sui_flags = le32_to_cpu(su->su_flags) &
627 ~(1UL << NILFS_SEGMENT_USAGE_ACTIVE); 545 ~(1UL << NILFS_SEGMENT_USAGE_ACTIVE);
628 if (nilfs_segment_is_active(nilfs, segnum + i + j)) 546 if (nilfs_segment_is_active(nilfs, segnum + j))
629 si[i + j].sui_flags |= 547 si[i + j].sui_flags |=
630 (1UL << NILFS_SEGMENT_USAGE_ACTIVE); 548 (1UL << NILFS_SEGMENT_USAGE_ACTIVE);
631 } 549 }
diff --git a/fs/nilfs2/sufile.h b/fs/nilfs2/sufile.h
index d595f33a768d..a2e2efd4ade1 100644
--- a/fs/nilfs2/sufile.h
+++ b/fs/nilfs2/sufile.h
@@ -36,9 +36,6 @@ static inline unsigned long nilfs_sufile_get_nsegments(struct inode *sufile)
36} 36}
37 37
38int nilfs_sufile_alloc(struct inode *, __u64 *); 38int nilfs_sufile_alloc(struct inode *, __u64 *);
39int nilfs_sufile_cancel_free(struct inode *, __u64);
40int nilfs_sufile_freev(struct inode *, __u64 *, size_t);
41int nilfs_sufile_free(struct inode *, __u64);
42int nilfs_sufile_get_segment_usage(struct inode *, __u64, 39int nilfs_sufile_get_segment_usage(struct inode *, __u64,
43 struct nilfs_segment_usage **, 40 struct nilfs_segment_usage **,
44 struct buffer_head **); 41 struct buffer_head **);
@@ -46,9 +43,83 @@ void nilfs_sufile_put_segment_usage(struct inode *, __u64,
46 struct buffer_head *); 43 struct buffer_head *);
47int nilfs_sufile_get_stat(struct inode *, struct nilfs_sustat *); 44int nilfs_sufile_get_stat(struct inode *, struct nilfs_sustat *);
48int nilfs_sufile_get_ncleansegs(struct inode *, unsigned long *); 45int nilfs_sufile_get_ncleansegs(struct inode *, unsigned long *);
49int nilfs_sufile_set_error(struct inode *, __u64);
50ssize_t nilfs_sufile_get_suinfo(struct inode *, __u64, struct nilfs_suinfo *, 46ssize_t nilfs_sufile_get_suinfo(struct inode *, __u64, struct nilfs_suinfo *,
51 size_t); 47 size_t);
52 48
49int nilfs_sufile_update(struct inode *, __u64, int,
50 void (*dofunc)(struct inode *, __u64,
51 struct buffer_head *,
52 struct buffer_head *));
53void nilfs_sufile_do_cancel_free(struct inode *, __u64, struct buffer_head *,
54 struct buffer_head *);
55void nilfs_sufile_do_scrap(struct inode *, __u64, struct buffer_head *,
56 struct buffer_head *);
57void nilfs_sufile_do_free(struct inode *, __u64, struct buffer_head *,
58 struct buffer_head *);
59void nilfs_sufile_do_set_error(struct inode *, __u64, struct buffer_head *,
60 struct buffer_head *);
61
62/**
63 * nilfs_sufile_cancel_free -
64 * @sufile: inode of segment usage file
65 * @segnum: segment number
66 *
67 * Description:
68 *
69 * Return Value: On success, 0 is returned. On error, one of the following
70 * negative error codes is returned.
71 *
72 * %-EIO - I/O error.
73 *
74 * %-ENOMEM - Insufficient amount of memory available.
75 */
76static inline int nilfs_sufile_cancel_free(struct inode *sufile, __u64 segnum)
77{
78 return nilfs_sufile_update(sufile, segnum, 0,
79 nilfs_sufile_do_cancel_free);
80}
81
82/**
83 * nilfs_sufile_scrap - make a segment garbage
84 * @sufile: inode of segment usage file
85 * @segnum: segment number to be freed
86 */
87static inline int nilfs_sufile_scrap(struct inode *sufile, __u64 segnum)
88{
89 return nilfs_sufile_update(sufile, segnum, 1, nilfs_sufile_do_scrap);
90}
91
92/**
93 * nilfs_sufile_free - free segment
94 * @sufile: inode of segment usage file
95 * @segnum: segment number to be freed
96 */
97static inline int nilfs_sufile_free(struct inode *sufile, __u64 segnum)
98{
99 return nilfs_sufile_update(sufile, segnum, 0, nilfs_sufile_do_free);
100}
101
102/**
103 * nilfs_sufile_set_error - mark a segment as erroneous
104 * @sufile: inode of segment usage file
105 * @segnum: segment number
106 *
107 * Description: nilfs_sufile_set_error() marks the segment specified by
108 * @segnum as erroneous. The error segment will never be used again.
109 *
110 * Return Value: On success, 0 is returned. On error, one of the following
111 * negative error codes is returned.
112 *
113 * %-EIO - I/O error.
114 *
115 * %-ENOMEM - Insufficient amount of memory available.
116 *
117 * %-EINVAL - Invalid segment usage number.
118 */
119static inline int nilfs_sufile_set_error(struct inode *sufile, __u64 segnum)
120{
121 return nilfs_sufile_update(sufile, segnum, 0,
122 nilfs_sufile_do_set_error);
123}
53 124
54#endif /* _NILFS_SUFILE_H */ 125#endif /* _NILFS_SUFILE_H */
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
index e117e1ea9bff..6989b03e97ab 100644
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -63,7 +63,6 @@
63MODULE_AUTHOR("NTT Corp."); 63MODULE_AUTHOR("NTT Corp.");
64MODULE_DESCRIPTION("A New Implementation of the Log-structured Filesystem " 64MODULE_DESCRIPTION("A New Implementation of the Log-structured Filesystem "
65 "(NILFS)"); 65 "(NILFS)");
66MODULE_VERSION(NILFS_VERSION);
67MODULE_LICENSE("GPL"); 66MODULE_LICENSE("GPL");
68 67
69static int nilfs_remount(struct super_block *sb, int *flags, char *data); 68static int nilfs_remount(struct super_block *sb, int *flags, char *data);
@@ -476,11 +475,12 @@ static int nilfs_statfs(struct dentry *dentry, struct kstatfs *buf)
476{ 475{
477 struct super_block *sb = dentry->d_sb; 476 struct super_block *sb = dentry->d_sb;
478 struct nilfs_sb_info *sbi = NILFS_SB(sb); 477 struct nilfs_sb_info *sbi = NILFS_SB(sb);
478 struct the_nilfs *nilfs = sbi->s_nilfs;
479 u64 id = huge_encode_dev(sb->s_bdev->bd_dev);
479 unsigned long long blocks; 480 unsigned long long blocks;
480 unsigned long overhead; 481 unsigned long overhead;
481 unsigned long nrsvblocks; 482 unsigned long nrsvblocks;
482 sector_t nfreeblocks; 483 sector_t nfreeblocks;
483 struct the_nilfs *nilfs = sbi->s_nilfs;
484 int err; 484 int err;
485 485
486 /* 486 /*
@@ -514,6 +514,9 @@ static int nilfs_statfs(struct dentry *dentry, struct kstatfs *buf)
514 buf->f_files = atomic_read(&sbi->s_inodes_count); 514 buf->f_files = atomic_read(&sbi->s_inodes_count);
515 buf->f_ffree = 0; /* nilfs_count_free_inodes(sb); */ 515 buf->f_ffree = 0; /* nilfs_count_free_inodes(sb); */
516 buf->f_namelen = NILFS_NAME_LEN; 516 buf->f_namelen = NILFS_NAME_LEN;
517 buf->f_fsid.val[0] = (u32)id;
518 buf->f_fsid.val[1] = (u32)(id >> 32);
519
517 return 0; 520 return 0;
518} 521}
519 522
diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c
index 33400cf0bbe2..7f65b3be4aa9 100644
--- a/fs/nilfs2/the_nilfs.c
+++ b/fs/nilfs2/the_nilfs.c
@@ -115,6 +115,7 @@ void put_nilfs(struct the_nilfs *nilfs)
115static int nilfs_load_super_root(struct the_nilfs *nilfs, 115static int nilfs_load_super_root(struct the_nilfs *nilfs,
116 struct nilfs_sb_info *sbi, sector_t sr_block) 116 struct nilfs_sb_info *sbi, sector_t sr_block)
117{ 117{
118 static struct lock_class_key dat_lock_key;
118 struct buffer_head *bh_sr; 119 struct buffer_head *bh_sr;
119 struct nilfs_super_root *raw_sr; 120 struct nilfs_super_root *raw_sr;
120 struct nilfs_super_block **sbp = nilfs->ns_sbp; 121 struct nilfs_super_block **sbp = nilfs->ns_sbp;
@@ -163,6 +164,9 @@ static int nilfs_load_super_root(struct the_nilfs *nilfs,
163 if (unlikely(err)) 164 if (unlikely(err))
164 goto failed_sufile; 165 goto failed_sufile;
165 166
167 lockdep_set_class(&NILFS_MDT(nilfs->ns_dat)->mi_sem, &dat_lock_key);
168 lockdep_set_class(&NILFS_MDT(nilfs->ns_gc_dat)->mi_sem, &dat_lock_key);
169
166 nilfs_mdt_set_shadow(nilfs->ns_dat, nilfs->ns_gc_dat); 170 nilfs_mdt_set_shadow(nilfs->ns_dat, nilfs->ns_gc_dat);
167 nilfs_mdt_set_entry_size(nilfs->ns_cpfile, checkpoint_size, 171 nilfs_mdt_set_entry_size(nilfs->ns_cpfile, checkpoint_size,
168 sizeof(struct nilfs_cpfile_header)); 172 sizeof(struct nilfs_cpfile_header));
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 8672b9536039..c2a87c885b73 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -1912,6 +1912,22 @@ out_sems:
1912 return written ? written : ret; 1912 return written ? written : ret;
1913} 1913}
1914 1914
1915static int ocfs2_splice_to_file(struct pipe_inode_info *pipe,
1916 struct file *out,
1917 struct splice_desc *sd)
1918{
1919 int ret;
1920
1921 ret = ocfs2_prepare_inode_for_write(out->f_path.dentry, &sd->pos,
1922 sd->total_len, 0, NULL);
1923 if (ret < 0) {
1924 mlog_errno(ret);
1925 return ret;
1926 }
1927
1928 return splice_from_pipe_feed(pipe, sd, pipe_to_file);
1929}
1930
1915static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe, 1931static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe,
1916 struct file *out, 1932 struct file *out,
1917 loff_t *ppos, 1933 loff_t *ppos,
@@ -1919,38 +1935,76 @@ static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe,
1919 unsigned int flags) 1935 unsigned int flags)
1920{ 1936{
1921 int ret; 1937 int ret;
1922 struct inode *inode = out->f_path.dentry->d_inode; 1938 struct address_space *mapping = out->f_mapping;
1939 struct inode *inode = mapping->host;
1940 struct splice_desc sd = {
1941 .total_len = len,
1942 .flags = flags,
1943 .pos = *ppos,
1944 .u.file = out,
1945 };
1923 1946
1924 mlog_entry("(0x%p, 0x%p, %u, '%.*s')\n", out, pipe, 1947 mlog_entry("(0x%p, 0x%p, %u, '%.*s')\n", out, pipe,
1925 (unsigned int)len, 1948 (unsigned int)len,
1926 out->f_path.dentry->d_name.len, 1949 out->f_path.dentry->d_name.len,
1927 out->f_path.dentry->d_name.name); 1950 out->f_path.dentry->d_name.name);
1928 1951
1929 mutex_lock_nested(&inode->i_mutex, I_MUTEX_PARENT); 1952 if (pipe->inode)
1953 mutex_lock_nested(&pipe->inode->i_mutex, I_MUTEX_PARENT);
1930 1954
1931 ret = ocfs2_rw_lock(inode, 1); 1955 splice_from_pipe_begin(&sd);
1932 if (ret < 0) { 1956 do {
1933 mlog_errno(ret); 1957 ret = splice_from_pipe_next(pipe, &sd);
1934 goto out; 1958 if (ret <= 0)
1935 } 1959 break;
1936 1960
1937 ret = ocfs2_prepare_inode_for_write(out->f_path.dentry, ppos, len, 0, 1961 mutex_lock_nested(&inode->i_mutex, I_MUTEX_CHILD);
1938 NULL); 1962 ret = ocfs2_rw_lock(inode, 1);
1939 if (ret < 0) { 1963 if (ret < 0)
1940 mlog_errno(ret); 1964 mlog_errno(ret);
1941 goto out_unlock; 1965 else {
1942 } 1966 ret = ocfs2_splice_to_file(pipe, out, &sd);
1967 ocfs2_rw_unlock(inode, 1);
1968 }
1969 mutex_unlock(&inode->i_mutex);
1970 } while (ret > 0);
1971 splice_from_pipe_end(pipe, &sd);
1943 1972
1944 if (pipe->inode) 1973 if (pipe->inode)
1945 mutex_lock_nested(&pipe->inode->i_mutex, I_MUTEX_CHILD);
1946 ret = generic_file_splice_write_nolock(pipe, out, ppos, len, flags);
1947 if (pipe->inode)
1948 mutex_unlock(&pipe->inode->i_mutex); 1974 mutex_unlock(&pipe->inode->i_mutex);
1949 1975
1950out_unlock: 1976 if (sd.num_spliced)
1951 ocfs2_rw_unlock(inode, 1); 1977 ret = sd.num_spliced;
1952out: 1978
1953 mutex_unlock(&inode->i_mutex); 1979 if (ret > 0) {
1980 unsigned long nr_pages;
1981
1982 *ppos += ret;
1983 nr_pages = (ret + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
1984
1985 /*
1986 * If file or inode is SYNC and we actually wrote some data,
1987 * sync it.
1988 */
1989 if (unlikely((out->f_flags & O_SYNC) || IS_SYNC(inode))) {
1990 int err;
1991
1992 mutex_lock(&inode->i_mutex);
1993 err = ocfs2_rw_lock(inode, 1);
1994 if (err < 0) {
1995 mlog_errno(err);
1996 } else {
1997 err = generic_osync_inode(inode, mapping,
1998 OSYNC_METADATA|OSYNC_DATA);
1999 ocfs2_rw_unlock(inode, 1);
2000 }
2001 mutex_unlock(&inode->i_mutex);
2002
2003 if (err)
2004 ret = err;
2005 }
2006 balance_dirty_pages_ratelimited_nr(mapping, nr_pages);
2007 }
1954 2008
1955 mlog_exit(ret); 2009 mlog_exit(ret);
1956 return ret; 2010 return ret;
diff --git a/fs/pipe.c b/fs/pipe.c
index 4af7aa521813..13414ec45b8d 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -37,6 +37,42 @@
37 * -- Manfred Spraul <manfred@colorfullife.com> 2002-05-09 37 * -- Manfred Spraul <manfred@colorfullife.com> 2002-05-09
38 */ 38 */
39 39
40static void pipe_lock_nested(struct pipe_inode_info *pipe, int subclass)
41{
42 if (pipe->inode)
43 mutex_lock_nested(&pipe->inode->i_mutex, subclass);
44}
45
46void pipe_lock(struct pipe_inode_info *pipe)
47{
48 /*
49 * pipe_lock() nests non-pipe inode locks (for writing to a file)
50 */
51 pipe_lock_nested(pipe, I_MUTEX_PARENT);
52}
53EXPORT_SYMBOL(pipe_lock);
54
55void pipe_unlock(struct pipe_inode_info *pipe)
56{
57 if (pipe->inode)
58 mutex_unlock(&pipe->inode->i_mutex);
59}
60EXPORT_SYMBOL(pipe_unlock);
61
62void pipe_double_lock(struct pipe_inode_info *pipe1,
63 struct pipe_inode_info *pipe2)
64{
65 BUG_ON(pipe1 == pipe2);
66
67 if (pipe1 < pipe2) {
68 pipe_lock_nested(pipe1, I_MUTEX_PARENT);
69 pipe_lock_nested(pipe2, I_MUTEX_CHILD);
70 } else {
71 pipe_lock_nested(pipe2, I_MUTEX_CHILD);
72 pipe_lock_nested(pipe1, I_MUTEX_PARENT);
73 }
74}
75
40/* Drop the inode semaphore and wait for a pipe event, atomically */ 76/* Drop the inode semaphore and wait for a pipe event, atomically */
41void pipe_wait(struct pipe_inode_info *pipe) 77void pipe_wait(struct pipe_inode_info *pipe)
42{ 78{
@@ -47,12 +83,10 @@ void pipe_wait(struct pipe_inode_info *pipe)
47 * is considered a noninteractive wait: 83 * is considered a noninteractive wait:
48 */ 84 */
49 prepare_to_wait(&pipe->wait, &wait, TASK_INTERRUPTIBLE); 85 prepare_to_wait(&pipe->wait, &wait, TASK_INTERRUPTIBLE);
50 if (pipe->inode) 86 pipe_unlock(pipe);
51 mutex_unlock(&pipe->inode->i_mutex);
52 schedule(); 87 schedule();
53 finish_wait(&pipe->wait, &wait); 88 finish_wait(&pipe->wait, &wait);
54 if (pipe->inode) 89 pipe_lock(pipe);
55 mutex_lock(&pipe->inode->i_mutex);
56} 90}
57 91
58static int 92static int
diff --git a/fs/proc/base.c b/fs/proc/base.c
index f71559784bfb..aa763ab00777 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -648,14 +648,14 @@ static unsigned mounts_poll(struct file *file, poll_table *wait)
648{ 648{
649 struct proc_mounts *p = file->private_data; 649 struct proc_mounts *p = file->private_data;
650 struct mnt_namespace *ns = p->ns; 650 struct mnt_namespace *ns = p->ns;
651 unsigned res = 0; 651 unsigned res = POLLIN | POLLRDNORM;
652 652
653 poll_wait(file, &ns->poll, wait); 653 poll_wait(file, &ns->poll, wait);
654 654
655 spin_lock(&vfsmount_lock); 655 spin_lock(&vfsmount_lock);
656 if (p->event != ns->event) { 656 if (p->event != ns->event) {
657 p->event = ns->event; 657 p->event = ns->event;
658 res = POLLERR; 658 res |= POLLERR | POLLPRI;
659 } 659 }
660 spin_unlock(&vfsmount_lock); 660 spin_unlock(&vfsmount_lock);
661 661
diff --git a/fs/proc/stat.c b/fs/proc/stat.c
index f75efa22df5e..81e4eb60972e 100644
--- a/fs/proc/stat.c
+++ b/fs/proc/stat.c
@@ -18,6 +18,9 @@
18#ifndef arch_irq_stat 18#ifndef arch_irq_stat
19#define arch_irq_stat() 0 19#define arch_irq_stat() 0
20#endif 20#endif
21#ifndef arch_idle_time
22#define arch_idle_time(cpu) 0
23#endif
21 24
22static int show_stat(struct seq_file *p, void *v) 25static int show_stat(struct seq_file *p, void *v)
23{ 26{
@@ -40,6 +43,7 @@ static int show_stat(struct seq_file *p, void *v)
40 nice = cputime64_add(nice, kstat_cpu(i).cpustat.nice); 43 nice = cputime64_add(nice, kstat_cpu(i).cpustat.nice);
41 system = cputime64_add(system, kstat_cpu(i).cpustat.system); 44 system = cputime64_add(system, kstat_cpu(i).cpustat.system);
42 idle = cputime64_add(idle, kstat_cpu(i).cpustat.idle); 45 idle = cputime64_add(idle, kstat_cpu(i).cpustat.idle);
46 idle = cputime64_add(idle, arch_idle_time(i));
43 iowait = cputime64_add(iowait, kstat_cpu(i).cpustat.iowait); 47 iowait = cputime64_add(iowait, kstat_cpu(i).cpustat.iowait);
44 irq = cputime64_add(irq, kstat_cpu(i).cpustat.irq); 48 irq = cputime64_add(irq, kstat_cpu(i).cpustat.irq);
45 softirq = cputime64_add(softirq, kstat_cpu(i).cpustat.softirq); 49 softirq = cputime64_add(softirq, kstat_cpu(i).cpustat.softirq);
@@ -69,6 +73,7 @@ static int show_stat(struct seq_file *p, void *v)
69 nice = kstat_cpu(i).cpustat.nice; 73 nice = kstat_cpu(i).cpustat.nice;
70 system = kstat_cpu(i).cpustat.system; 74 system = kstat_cpu(i).cpustat.system;
71 idle = kstat_cpu(i).cpustat.idle; 75 idle = kstat_cpu(i).cpustat.idle;
76 idle = cputime64_add(idle, arch_idle_time(i));
72 iowait = kstat_cpu(i).cpustat.iowait; 77 iowait = kstat_cpu(i).cpustat.iowait;
73 irq = kstat_cpu(i).cpustat.irq; 78 irq = kstat_cpu(i).cpustat.irq;
74 softirq = kstat_cpu(i).cpustat.softirq; 79 softirq = kstat_cpu(i).cpustat.softirq;
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
index 12c20377772d..64a72e2e7650 100644
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
@@ -135,7 +135,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
135 struct inode *inode = vma->vm_file->f_path.dentry->d_inode; 135 struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
136 dev = inode->i_sb->s_dev; 136 dev = inode->i_sb->s_dev;
137 ino = inode->i_ino; 137 ino = inode->i_ino;
138 pgoff = (loff_t)vma->pg_off << PAGE_SHIFT; 138 pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
139 } 139 }
140 140
141 seq_printf(m, 141 seq_printf(m,
diff --git a/fs/romfs/internal.h b/fs/romfs/internal.h
index 06044a9dc62d..95217b830118 100644
--- a/fs/romfs/internal.h
+++ b/fs/romfs/internal.h
@@ -43,5 +43,5 @@ extern int romfs_dev_read(struct super_block *sb, unsigned long pos,
43 void *buf, size_t buflen); 43 void *buf, size_t buflen);
44extern ssize_t romfs_dev_strnlen(struct super_block *sb, 44extern ssize_t romfs_dev_strnlen(struct super_block *sb,
45 unsigned long pos, size_t maxlen); 45 unsigned long pos, size_t maxlen);
46extern int romfs_dev_strncmp(struct super_block *sb, unsigned long pos, 46extern int romfs_dev_strcmp(struct super_block *sb, unsigned long pos,
47 const char *str, size_t size); 47 const char *str, size_t size);
diff --git a/fs/romfs/storage.c b/fs/romfs/storage.c
index 7e3e1e12a081..b3208adf8e71 100644
--- a/fs/romfs/storage.c
+++ b/fs/romfs/storage.c
@@ -67,26 +67,35 @@ static ssize_t romfs_mtd_strnlen(struct super_block *sb,
67 * compare a string to one in a romfs image on MTD 67 * compare a string to one in a romfs image on MTD
68 * - return 1 if matched, 0 if differ, -ve if error 68 * - return 1 if matched, 0 if differ, -ve if error
69 */ 69 */
70static int romfs_mtd_strncmp(struct super_block *sb, unsigned long pos, 70static int romfs_mtd_strcmp(struct super_block *sb, unsigned long pos,
71 const char *str, size_t size) 71 const char *str, size_t size)
72{ 72{
73 u_char buf[16]; 73 u_char buf[17];
74 size_t len, segment; 74 size_t len, segment;
75 int ret; 75 int ret;
76 76
77 /* scan the string up to 16 bytes at a time */ 77 /* scan the string up to 16 bytes at a time, and attempt to grab the
78 * trailing NUL whilst we're at it */
79 buf[0] = 0xff;
80
78 while (size > 0) { 81 while (size > 0) {
79 segment = min_t(size_t, size, 16); 82 segment = min_t(size_t, size + 1, 17);
80 ret = ROMFS_MTD_READ(sb, pos, segment, &len, buf); 83 ret = ROMFS_MTD_READ(sb, pos, segment, &len, buf);
81 if (ret < 0) 84 if (ret < 0)
82 return ret; 85 return ret;
86 len--;
83 if (memcmp(buf, str, len) != 0) 87 if (memcmp(buf, str, len) != 0)
84 return 0; 88 return 0;
89 buf[0] = buf[len];
85 size -= len; 90 size -= len;
86 pos += len; 91 pos += len;
87 str += len; 92 str += len;
88 } 93 }
89 94
95 /* check the trailing NUL was */
96 if (buf[0])
97 return 0;
98
90 return 1; 99 return 1;
91} 100}
92#endif /* CONFIG_ROMFS_ON_MTD */ 101#endif /* CONFIG_ROMFS_ON_MTD */
@@ -111,6 +120,7 @@ static int romfs_blk_read(struct super_block *sb, unsigned long pos,
111 return -EIO; 120 return -EIO;
112 memcpy(buf, bh->b_data + offset, segment); 121 memcpy(buf, bh->b_data + offset, segment);
113 brelse(bh); 122 brelse(bh);
123 buf += segment;
114 buflen -= segment; 124 buflen -= segment;
115 pos += segment; 125 pos += segment;
116 } 126 }
@@ -154,28 +164,48 @@ static ssize_t romfs_blk_strnlen(struct super_block *sb,
154 * compare a string to one in a romfs image on a block device 164 * compare a string to one in a romfs image on a block device
155 * - return 1 if matched, 0 if differ, -ve if error 165 * - return 1 if matched, 0 if differ, -ve if error
156 */ 166 */
157static int romfs_blk_strncmp(struct super_block *sb, unsigned long pos, 167static int romfs_blk_strcmp(struct super_block *sb, unsigned long pos,
158 const char *str, size_t size) 168 const char *str, size_t size)
159{ 169{
160 struct buffer_head *bh; 170 struct buffer_head *bh;
161 unsigned long offset; 171 unsigned long offset;
162 size_t segment; 172 size_t segment;
163 bool x; 173 bool matched, terminated = false;
164 174
165 /* scan the string up to 16 bytes at a time */ 175 /* compare string up to a block at a time */
166 while (size > 0) { 176 while (size > 0) {
167 offset = pos & (ROMBSIZE - 1); 177 offset = pos & (ROMBSIZE - 1);
168 segment = min_t(size_t, size, ROMBSIZE - offset); 178 segment = min_t(size_t, size, ROMBSIZE - offset);
169 bh = sb_bread(sb, pos >> ROMBSBITS); 179 bh = sb_bread(sb, pos >> ROMBSBITS);
170 if (!bh) 180 if (!bh)
171 return -EIO; 181 return -EIO;
172 x = (memcmp(bh->b_data + offset, str, segment) != 0); 182 matched = (memcmp(bh->b_data + offset, str, segment) == 0);
173 brelse(bh); 183
174 if (x)
175 return 0;
176 size -= segment; 184 size -= segment;
177 pos += segment; 185 pos += segment;
178 str += segment; 186 str += segment;
187 if (matched && size == 0 && offset + segment < ROMBSIZE) {
188 if (!bh->b_data[offset + segment])
189 terminated = true;
190 else
191 matched = false;
192 }
193 brelse(bh);
194 if (!matched)
195 return 0;
196 }
197
198 if (!terminated) {
199 /* the terminating NUL must be on the first byte of the next
200 * block */
201 BUG_ON((pos & (ROMBSIZE - 1)) != 0);
202 bh = sb_bread(sb, pos >> ROMBSBITS);
203 if (!bh)
204 return -EIO;
205 matched = !bh->b_data[0];
206 brelse(bh);
207 if (!matched)
208 return 0;
179 } 209 }
180 210
181 return 1; 211 return 1;
@@ -234,10 +264,12 @@ ssize_t romfs_dev_strnlen(struct super_block *sb,
234 264
235/* 265/*
236 * compare a string to one in romfs 266 * compare a string to one in romfs
267 * - the string to be compared to, str, may not be NUL-terminated; instead the
268 * string is of the specified size
237 * - return 1 if matched, 0 if differ, -ve if error 269 * - return 1 if matched, 0 if differ, -ve if error
238 */ 270 */
239int romfs_dev_strncmp(struct super_block *sb, unsigned long pos, 271int romfs_dev_strcmp(struct super_block *sb, unsigned long pos,
240 const char *str, size_t size) 272 const char *str, size_t size)
241{ 273{
242 size_t limit; 274 size_t limit;
243 275
@@ -246,16 +278,16 @@ int romfs_dev_strncmp(struct super_block *sb, unsigned long pos,
246 return -EIO; 278 return -EIO;
247 if (size > ROMFS_MAXFN) 279 if (size > ROMFS_MAXFN)
248 return -ENAMETOOLONG; 280 return -ENAMETOOLONG;
249 if (size > limit - pos) 281 if (size + 1 > limit - pos)
250 return -EIO; 282 return -EIO;
251 283
252#ifdef CONFIG_ROMFS_ON_MTD 284#ifdef CONFIG_ROMFS_ON_MTD
253 if (sb->s_mtd) 285 if (sb->s_mtd)
254 return romfs_mtd_strncmp(sb, pos, str, size); 286 return romfs_mtd_strcmp(sb, pos, str, size);
255#endif 287#endif
256#ifdef CONFIG_ROMFS_ON_BLOCK 288#ifdef CONFIG_ROMFS_ON_BLOCK
257 if (sb->s_bdev) 289 if (sb->s_bdev)
258 return romfs_blk_strncmp(sb, pos, str, size); 290 return romfs_blk_strcmp(sb, pos, str, size);
259#endif 291#endif
260 return -EIO; 292 return -EIO;
261} 293}
diff --git a/fs/romfs/super.c b/fs/romfs/super.c
index 10ca7d984a8b..c53b5ef8a02f 100644
--- a/fs/romfs/super.c
+++ b/fs/romfs/super.c
@@ -240,8 +240,8 @@ static struct dentry *romfs_lookup(struct inode *dir, struct dentry *dentry,
240 goto error; 240 goto error;
241 241
242 /* try to match the first 16 bytes of name */ 242 /* try to match the first 16 bytes of name */
243 ret = romfs_dev_strncmp(dir->i_sb, offset + ROMFH_SIZE, name, 243 ret = romfs_dev_strcmp(dir->i_sb, offset + ROMFH_SIZE, name,
244 len); 244 len);
245 if (ret < 0) 245 if (ret < 0)
246 goto error; 246 goto error;
247 if (ret == 1) 247 if (ret == 1)
diff --git a/fs/splice.c b/fs/splice.c
index c18aa7e03e2b..666953d59a35 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -182,8 +182,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
182 do_wakeup = 0; 182 do_wakeup = 0;
183 page_nr = 0; 183 page_nr = 0;
184 184
185 if (pipe->inode) 185 pipe_lock(pipe);
186 mutex_lock(&pipe->inode->i_mutex);
187 186
188 for (;;) { 187 for (;;) {
189 if (!pipe->readers) { 188 if (!pipe->readers) {
@@ -245,15 +244,13 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
245 pipe->waiting_writers--; 244 pipe->waiting_writers--;
246 } 245 }
247 246
248 if (pipe->inode) { 247 pipe_unlock(pipe);
249 mutex_unlock(&pipe->inode->i_mutex);
250 248
251 if (do_wakeup) { 249 if (do_wakeup) {
252 smp_mb(); 250 smp_mb();
253 if (waitqueue_active(&pipe->wait)) 251 if (waitqueue_active(&pipe->wait))
254 wake_up_interruptible(&pipe->wait); 252 wake_up_interruptible(&pipe->wait);
255 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); 253 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
256 }
257 } 254 }
258 255
259 while (page_nr < spd_pages) 256 while (page_nr < spd_pages)
@@ -555,8 +552,8 @@ static int pipe_to_sendpage(struct pipe_inode_info *pipe,
555 * SPLICE_F_MOVE isn't set, or we cannot move the page, we simply create 552 * SPLICE_F_MOVE isn't set, or we cannot move the page, we simply create
556 * a new page in the output file page cache and fill/dirty that. 553 * a new page in the output file page cache and fill/dirty that.
557 */ 554 */
558static int pipe_to_file(struct pipe_inode_info *pipe, struct pipe_buffer *buf, 555int pipe_to_file(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
559 struct splice_desc *sd) 556 struct splice_desc *sd)
560{ 557{
561 struct file *file = sd->u.file; 558 struct file *file = sd->u.file;
562 struct address_space *mapping = file->f_mapping; 559 struct address_space *mapping = file->f_mapping;
@@ -600,108 +597,177 @@ static int pipe_to_file(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
600out: 597out:
601 return ret; 598 return ret;
602} 599}
600EXPORT_SYMBOL(pipe_to_file);
601
602static void wakeup_pipe_writers(struct pipe_inode_info *pipe)
603{
604 smp_mb();
605 if (waitqueue_active(&pipe->wait))
606 wake_up_interruptible(&pipe->wait);
607 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
608}
603 609
604/** 610/**
605 * __splice_from_pipe - splice data from a pipe to given actor 611 * splice_from_pipe_feed - feed available data from a pipe to a file
606 * @pipe: pipe to splice from 612 * @pipe: pipe to splice from
607 * @sd: information to @actor 613 * @sd: information to @actor
608 * @actor: handler that splices the data 614 * @actor: handler that splices the data
609 * 615 *
610 * Description: 616 * Description:
611 * This function does little more than loop over the pipe and call 617 * This function loops over the pipe and calls @actor to do the
612 * @actor to do the actual moving of a single struct pipe_buffer to 618 * actual moving of a single struct pipe_buffer to the desired
613 * the desired destination. See pipe_to_file, pipe_to_sendpage, or 619 * destination. It returns when there's no more buffers left in
614 * pipe_to_user. 620 * the pipe or if the requested number of bytes (@sd->total_len)
621 * have been copied. It returns a positive number (one) if the
622 * pipe needs to be filled with more data, zero if the required
623 * number of bytes have been copied and -errno on error.
615 * 624 *
625 * This, together with splice_from_pipe_{begin,end,next}, may be
626 * used to implement the functionality of __splice_from_pipe() when
627 * locking is required around copying the pipe buffers to the
628 * destination.
616 */ 629 */
617ssize_t __splice_from_pipe(struct pipe_inode_info *pipe, struct splice_desc *sd, 630int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd,
618 splice_actor *actor) 631 splice_actor *actor)
619{ 632{
620 int ret, do_wakeup, err; 633 int ret;
621
622 ret = 0;
623 do_wakeup = 0;
624
625 for (;;) {
626 if (pipe->nrbufs) {
627 struct pipe_buffer *buf = pipe->bufs + pipe->curbuf;
628 const struct pipe_buf_operations *ops = buf->ops;
629 634
630 sd->len = buf->len; 635 while (pipe->nrbufs) {
631 if (sd->len > sd->total_len) 636 struct pipe_buffer *buf = pipe->bufs + pipe->curbuf;
632 sd->len = sd->total_len; 637 const struct pipe_buf_operations *ops = buf->ops;
633 638
634 err = actor(pipe, buf, sd); 639 sd->len = buf->len;
635 if (err <= 0) { 640 if (sd->len > sd->total_len)
636 if (!ret && err != -ENODATA) 641 sd->len = sd->total_len;
637 ret = err;
638 642
639 break; 643 ret = actor(pipe, buf, sd);
640 } 644 if (ret <= 0) {
645 if (ret == -ENODATA)
646 ret = 0;
647 return ret;
648 }
649 buf->offset += ret;
650 buf->len -= ret;
641 651
642 ret += err; 652 sd->num_spliced += ret;
643 buf->offset += err; 653 sd->len -= ret;
644 buf->len -= err; 654 sd->pos += ret;
655 sd->total_len -= ret;
645 656
646 sd->len -= err; 657 if (!buf->len) {
647 sd->pos += err; 658 buf->ops = NULL;
648 sd->total_len -= err; 659 ops->release(pipe, buf);
649 if (sd->len) 660 pipe->curbuf = (pipe->curbuf + 1) & (PIPE_BUFFERS - 1);
650 continue; 661 pipe->nrbufs--;
662 if (pipe->inode)
663 sd->need_wakeup = true;
664 }
651 665
652 if (!buf->len) { 666 if (!sd->total_len)
653 buf->ops = NULL; 667 return 0;
654 ops->release(pipe, buf); 668 }
655 pipe->curbuf = (pipe->curbuf + 1) & (PIPE_BUFFERS - 1);
656 pipe->nrbufs--;
657 if (pipe->inode)
658 do_wakeup = 1;
659 }
660 669
661 if (!sd->total_len) 670 return 1;
662 break; 671}
663 } 672EXPORT_SYMBOL(splice_from_pipe_feed);
664 673
665 if (pipe->nrbufs) 674/**
666 continue; 675 * splice_from_pipe_next - wait for some data to splice from
676 * @pipe: pipe to splice from
677 * @sd: information about the splice operation
678 *
679 * Description:
680 * This function will wait for some data and return a positive
681 * value (one) if pipe buffers are available. It will return zero
682 * or -errno if no more data needs to be spliced.
683 */
684int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
685{
686 while (!pipe->nrbufs) {
667 if (!pipe->writers) 687 if (!pipe->writers)
668 break; 688 return 0;
669 if (!pipe->waiting_writers) {
670 if (ret)
671 break;
672 }
673 689
674 if (sd->flags & SPLICE_F_NONBLOCK) { 690 if (!pipe->waiting_writers && sd->num_spliced)
675 if (!ret) 691 return 0;
676 ret = -EAGAIN;
677 break;
678 }
679 692
680 if (signal_pending(current)) { 693 if (sd->flags & SPLICE_F_NONBLOCK)
681 if (!ret) 694 return -EAGAIN;
682 ret = -ERESTARTSYS;
683 break;
684 }
685 695
686 if (do_wakeup) { 696 if (signal_pending(current))
687 smp_mb(); 697 return -ERESTARTSYS;
688 if (waitqueue_active(&pipe->wait)) 698
689 wake_up_interruptible_sync(&pipe->wait); 699 if (sd->need_wakeup) {
690 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); 700 wakeup_pipe_writers(pipe);
691 do_wakeup = 0; 701 sd->need_wakeup = false;
692 } 702 }
693 703
694 pipe_wait(pipe); 704 pipe_wait(pipe);
695 } 705 }
696 706
697 if (do_wakeup) { 707 return 1;
698 smp_mb(); 708}
699 if (waitqueue_active(&pipe->wait)) 709EXPORT_SYMBOL(splice_from_pipe_next);
700 wake_up_interruptible(&pipe->wait);
701 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
702 }
703 710
704 return ret; 711/**
712 * splice_from_pipe_begin - start splicing from pipe
713 * @sd: information about the splice operation
714 *
715 * Description:
716 * This function should be called before a loop containing
717 * splice_from_pipe_next() and splice_from_pipe_feed() to
718 * initialize the necessary fields of @sd.
719 */
720void splice_from_pipe_begin(struct splice_desc *sd)
721{
722 sd->num_spliced = 0;
723 sd->need_wakeup = false;
724}
725EXPORT_SYMBOL(splice_from_pipe_begin);
726
727/**
728 * splice_from_pipe_end - finish splicing from pipe
729 * @pipe: pipe to splice from
730 * @sd: information about the splice operation
731 *
732 * Description:
733 * This function will wake up pipe writers if necessary. It should
734 * be called after a loop containing splice_from_pipe_next() and
735 * splice_from_pipe_feed().
736 */
737void splice_from_pipe_end(struct pipe_inode_info *pipe, struct splice_desc *sd)
738{
739 if (sd->need_wakeup)
740 wakeup_pipe_writers(pipe);
741}
742EXPORT_SYMBOL(splice_from_pipe_end);
743
744/**
745 * __splice_from_pipe - splice data from a pipe to given actor
746 * @pipe: pipe to splice from
747 * @sd: information to @actor
748 * @actor: handler that splices the data
749 *
750 * Description:
751 * This function does little more than loop over the pipe and call
752 * @actor to do the actual moving of a single struct pipe_buffer to
753 * the desired destination. See pipe_to_file, pipe_to_sendpage, or
754 * pipe_to_user.
755 *
756 */
757ssize_t __splice_from_pipe(struct pipe_inode_info *pipe, struct splice_desc *sd,
758 splice_actor *actor)
759{
760 int ret;
761
762 splice_from_pipe_begin(sd);
763 do {
764 ret = splice_from_pipe_next(pipe, sd);
765 if (ret > 0)
766 ret = splice_from_pipe_feed(pipe, sd, actor);
767 } while (ret > 0);
768 splice_from_pipe_end(pipe, sd);
769
770 return sd->num_spliced ? sd->num_spliced : ret;
705} 771}
706EXPORT_SYMBOL(__splice_from_pipe); 772EXPORT_SYMBOL(__splice_from_pipe);
707 773
@@ -715,7 +781,7 @@ EXPORT_SYMBOL(__splice_from_pipe);
715 * @actor: handler that splices the data 781 * @actor: handler that splices the data
716 * 782 *
717 * Description: 783 * Description:
718 * See __splice_from_pipe. This function locks the input and output inodes, 784 * See __splice_from_pipe. This function locks the pipe inode,
719 * otherwise it's identical to __splice_from_pipe(). 785 * otherwise it's identical to __splice_from_pipe().
720 * 786 *
721 */ 787 */
@@ -724,7 +790,6 @@ ssize_t splice_from_pipe(struct pipe_inode_info *pipe, struct file *out,
724 splice_actor *actor) 790 splice_actor *actor)
725{ 791{
726 ssize_t ret; 792 ssize_t ret;
727 struct inode *inode = out->f_mapping->host;
728 struct splice_desc sd = { 793 struct splice_desc sd = {
729 .total_len = len, 794 .total_len = len,
730 .flags = flags, 795 .flags = flags,
@@ -732,30 +797,15 @@ ssize_t splice_from_pipe(struct pipe_inode_info *pipe, struct file *out,
732 .u.file = out, 797 .u.file = out,
733 }; 798 };
734 799
735 /* 800 pipe_lock(pipe);
736 * The actor worker might be calling ->write_begin and
737 * ->write_end. Most of the time, these expect i_mutex to
738 * be held. Since this may result in an ABBA deadlock with
739 * pipe->inode, we have to order lock acquiry here.
740 *
741 * Outer lock must be inode->i_mutex, as pipe_wait() will
742 * release and reacquire pipe->inode->i_mutex, AND inode must
743 * never be a pipe.
744 */
745 WARN_ON(S_ISFIFO(inode->i_mode));
746 mutex_lock_nested(&inode->i_mutex, I_MUTEX_PARENT);
747 if (pipe->inode)
748 mutex_lock_nested(&pipe->inode->i_mutex, I_MUTEX_CHILD);
749 ret = __splice_from_pipe(pipe, &sd, actor); 801 ret = __splice_from_pipe(pipe, &sd, actor);
750 if (pipe->inode) 802 pipe_unlock(pipe);
751 mutex_unlock(&pipe->inode->i_mutex);
752 mutex_unlock(&inode->i_mutex);
753 803
754 return ret; 804 return ret;
755} 805}
756 806
757/** 807/**
758 * generic_file_splice_write_nolock - generic_file_splice_write without mutexes 808 * generic_file_splice_write - splice data from a pipe to a file
759 * @pipe: pipe info 809 * @pipe: pipe info
760 * @out: file to write to 810 * @out: file to write to
761 * @ppos: position in @out 811 * @ppos: position in @out
@@ -764,13 +814,12 @@ ssize_t splice_from_pipe(struct pipe_inode_info *pipe, struct file *out,
764 * 814 *
765 * Description: 815 * Description:
766 * Will either move or copy pages (determined by @flags options) from 816 * Will either move or copy pages (determined by @flags options) from
767 * the given pipe inode to the given file. The caller is responsible 817 * the given pipe inode to the given file.
768 * for acquiring i_mutex on both inodes.
769 * 818 *
770 */ 819 */
771ssize_t 820ssize_t
772generic_file_splice_write_nolock(struct pipe_inode_info *pipe, struct file *out, 821generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
773 loff_t *ppos, size_t len, unsigned int flags) 822 loff_t *ppos, size_t len, unsigned int flags)
774{ 823{
775 struct address_space *mapping = out->f_mapping; 824 struct address_space *mapping = out->f_mapping;
776 struct inode *inode = mapping->host; 825 struct inode *inode = mapping->host;
@@ -781,76 +830,28 @@ generic_file_splice_write_nolock(struct pipe_inode_info *pipe, struct file *out,
781 .u.file = out, 830 .u.file = out,
782 }; 831 };
783 ssize_t ret; 832 ssize_t ret;
784 int err;
785
786 err = file_remove_suid(out);
787 if (unlikely(err))
788 return err;
789
790 ret = __splice_from_pipe(pipe, &sd, pipe_to_file);
791 if (ret > 0) {
792 unsigned long nr_pages;
793 833
794 *ppos += ret; 834 pipe_lock(pipe);
795 nr_pages = (ret + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
796
797 /*
798 * If file or inode is SYNC and we actually wrote some data,
799 * sync it.
800 */
801 if (unlikely((out->f_flags & O_SYNC) || IS_SYNC(inode))) {
802 err = generic_osync_inode(inode, mapping,
803 OSYNC_METADATA|OSYNC_DATA);
804 835
805 if (err) 836 splice_from_pipe_begin(&sd);
806 ret = err; 837 do {
807 } 838 ret = splice_from_pipe_next(pipe, &sd);
808 balance_dirty_pages_ratelimited_nr(mapping, nr_pages); 839 if (ret <= 0)
809 } 840 break;
810 841
811 return ret; 842 mutex_lock_nested(&inode->i_mutex, I_MUTEX_CHILD);
812} 843 ret = file_remove_suid(out);
844 if (!ret)
845 ret = splice_from_pipe_feed(pipe, &sd, pipe_to_file);
846 mutex_unlock(&inode->i_mutex);
847 } while (ret > 0);
848 splice_from_pipe_end(pipe, &sd);
813 849
814EXPORT_SYMBOL(generic_file_splice_write_nolock); 850 pipe_unlock(pipe);
815 851
816/** 852 if (sd.num_spliced)
817 * generic_file_splice_write - splice data from a pipe to a file 853 ret = sd.num_spliced;
818 * @pipe: pipe info
819 * @out: file to write to
820 * @ppos: position in @out
821 * @len: number of bytes to splice
822 * @flags: splice modifier flags
823 *
824 * Description:
825 * Will either move or copy pages (determined by @flags options) from
826 * the given pipe inode to the given file.
827 *
828 */
829ssize_t
830generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
831 loff_t *ppos, size_t len, unsigned int flags)
832{
833 struct address_space *mapping = out->f_mapping;
834 struct inode *inode = mapping->host;
835 struct splice_desc sd = {
836 .total_len = len,
837 .flags = flags,
838 .pos = *ppos,
839 .u.file = out,
840 };
841 ssize_t ret;
842 854
843 WARN_ON(S_ISFIFO(inode->i_mode));
844 mutex_lock_nested(&inode->i_mutex, I_MUTEX_PARENT);
845 ret = file_remove_suid(out);
846 if (likely(!ret)) {
847 if (pipe->inode)
848 mutex_lock_nested(&pipe->inode->i_mutex, I_MUTEX_CHILD);
849 ret = __splice_from_pipe(pipe, &sd, pipe_to_file);
850 if (pipe->inode)
851 mutex_unlock(&pipe->inode->i_mutex);
852 }
853 mutex_unlock(&inode->i_mutex);
854 if (ret > 0) { 855 if (ret > 0) {
855 unsigned long nr_pages; 856 unsigned long nr_pages;
856 857
@@ -1339,8 +1340,7 @@ static long vmsplice_to_user(struct file *file, const struct iovec __user *iov,
1339 if (!pipe) 1340 if (!pipe)
1340 return -EBADF; 1341 return -EBADF;
1341 1342
1342 if (pipe->inode) 1343 pipe_lock(pipe);
1343 mutex_lock(&pipe->inode->i_mutex);
1344 1344
1345 error = ret = 0; 1345 error = ret = 0;
1346 while (nr_segs) { 1346 while (nr_segs) {
@@ -1395,8 +1395,7 @@ static long vmsplice_to_user(struct file *file, const struct iovec __user *iov,
1395 iov++; 1395 iov++;
1396 } 1396 }
1397 1397
1398 if (pipe->inode) 1398 pipe_unlock(pipe);
1399 mutex_unlock(&pipe->inode->i_mutex);
1400 1399
1401 if (!ret) 1400 if (!ret)
1402 ret = error; 1401 ret = error;
@@ -1524,7 +1523,7 @@ static int link_ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
1524 return 0; 1523 return 0;
1525 1524
1526 ret = 0; 1525 ret = 0;
1527 mutex_lock(&pipe->inode->i_mutex); 1526 pipe_lock(pipe);
1528 1527
1529 while (!pipe->nrbufs) { 1528 while (!pipe->nrbufs) {
1530 if (signal_pending(current)) { 1529 if (signal_pending(current)) {
@@ -1542,7 +1541,7 @@ static int link_ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
1542 pipe_wait(pipe); 1541 pipe_wait(pipe);
1543 } 1542 }
1544 1543
1545 mutex_unlock(&pipe->inode->i_mutex); 1544 pipe_unlock(pipe);
1546 return ret; 1545 return ret;
1547} 1546}
1548 1547
@@ -1562,7 +1561,7 @@ static int link_opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
1562 return 0; 1561 return 0;
1563 1562
1564 ret = 0; 1563 ret = 0;
1565 mutex_lock(&pipe->inode->i_mutex); 1564 pipe_lock(pipe);
1566 1565
1567 while (pipe->nrbufs >= PIPE_BUFFERS) { 1566 while (pipe->nrbufs >= PIPE_BUFFERS) {
1568 if (!pipe->readers) { 1567 if (!pipe->readers) {
@@ -1583,7 +1582,7 @@ static int link_opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
1583 pipe->waiting_writers--; 1582 pipe->waiting_writers--;
1584 } 1583 }
1585 1584
1586 mutex_unlock(&pipe->inode->i_mutex); 1585 pipe_unlock(pipe);
1587 return ret; 1586 return ret;
1588} 1587}
1589 1588
@@ -1599,10 +1598,10 @@ static int link_pipe(struct pipe_inode_info *ipipe,
1599 1598
1600 /* 1599 /*
1601 * Potential ABBA deadlock, work around it by ordering lock 1600 * Potential ABBA deadlock, work around it by ordering lock
1602 * grabbing by inode address. Otherwise two different processes 1601 * grabbing by pipe info address. Otherwise two different processes
1603 * could deadlock (one doing tee from A -> B, the other from B -> A). 1602 * could deadlock (one doing tee from A -> B, the other from B -> A).
1604 */ 1603 */
1605 inode_double_lock(ipipe->inode, opipe->inode); 1604 pipe_double_lock(ipipe, opipe);
1606 1605
1607 do { 1606 do {
1608 if (!opipe->readers) { 1607 if (!opipe->readers) {
@@ -1653,7 +1652,8 @@ static int link_pipe(struct pipe_inode_info *ipipe,
1653 if (!ret && ipipe->waiting_writers && (flags & SPLICE_F_NONBLOCK)) 1652 if (!ret && ipipe->waiting_writers && (flags & SPLICE_F_NONBLOCK))
1654 ret = -EAGAIN; 1653 ret = -EAGAIN;
1655 1654
1656 inode_double_unlock(ipipe->inode, opipe->inode); 1655 pipe_unlock(ipipe);
1656 pipe_unlock(opipe);
1657 1657
1658 /* 1658 /*
1659 * If we put data in the output pipe, wakeup any potential readers. 1659 * If we put data in the output pipe, wakeup any potential readers.
diff --git a/fs/stat.c b/fs/stat.c
index 2db740a0cfb5..075694e31d8b 100644
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -55,59 +55,54 @@ int vfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
55 55
56EXPORT_SYMBOL(vfs_getattr); 56EXPORT_SYMBOL(vfs_getattr);
57 57
58int vfs_stat_fd(int dfd, char __user *name, struct kstat *stat) 58int vfs_fstat(unsigned int fd, struct kstat *stat)
59{ 59{
60 struct path path; 60 struct file *f = fget(fd);
61 int error; 61 int error = -EBADF;
62 62
63 error = user_path_at(dfd, name, LOOKUP_FOLLOW, &path); 63 if (f) {
64 if (!error) { 64 error = vfs_getattr(f->f_path.mnt, f->f_path.dentry, stat);
65 error = vfs_getattr(path.mnt, path.dentry, stat); 65 fput(f);
66 path_put(&path);
67 } 66 }
68 return error; 67 return error;
69} 68}
69EXPORT_SYMBOL(vfs_fstat);
70 70
71int vfs_stat(char __user *name, struct kstat *stat) 71int vfs_fstatat(int dfd, char __user *filename, struct kstat *stat, int flag)
72{ 72{
73 return vfs_stat_fd(AT_FDCWD, name, stat); 73 struct path path;
74} 74 int error = -EINVAL;
75 int lookup_flags = 0;
75 76
76EXPORT_SYMBOL(vfs_stat); 77 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
78 goto out;
77 79
78int vfs_lstat_fd(int dfd, char __user *name, struct kstat *stat) 80 if (!(flag & AT_SYMLINK_NOFOLLOW))
79{ 81 lookup_flags |= LOOKUP_FOLLOW;
80 struct path path;
81 int error;
82 82
83 error = user_path_at(dfd, name, 0, &path); 83 error = user_path_at(dfd, filename, lookup_flags, &path);
84 if (!error) { 84 if (error)
85 error = vfs_getattr(path.mnt, path.dentry, stat); 85 goto out;
86 path_put(&path); 86
87 } 87 error = vfs_getattr(path.mnt, path.dentry, stat);
88 path_put(&path);
89out:
88 return error; 90 return error;
89} 91}
92EXPORT_SYMBOL(vfs_fstatat);
90 93
91int vfs_lstat(char __user *name, struct kstat *stat) 94int vfs_stat(char __user *name, struct kstat *stat)
92{ 95{
93 return vfs_lstat_fd(AT_FDCWD, name, stat); 96 return vfs_fstatat(AT_FDCWD, name, stat, 0);
94} 97}
98EXPORT_SYMBOL(vfs_stat);
95 99
96EXPORT_SYMBOL(vfs_lstat); 100int vfs_lstat(char __user *name, struct kstat *stat)
97
98int vfs_fstat(unsigned int fd, struct kstat *stat)
99{ 101{
100 struct file *f = fget(fd); 102 return vfs_fstatat(AT_FDCWD, name, stat, AT_SYMLINK_NOFOLLOW);
101 int error = -EBADF;
102
103 if (f) {
104 error = vfs_getattr(f->f_path.mnt, f->f_path.dentry, stat);
105 fput(f);
106 }
107 return error;
108} 103}
104EXPORT_SYMBOL(vfs_lstat);
109 105
110EXPORT_SYMBOL(vfs_fstat);
111 106
112#ifdef __ARCH_WANT_OLD_STAT 107#ifdef __ARCH_WANT_OLD_STAT
113 108
@@ -155,23 +150,25 @@ static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat __user * sta
155SYSCALL_DEFINE2(stat, char __user *, filename, struct __old_kernel_stat __user *, statbuf) 150SYSCALL_DEFINE2(stat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
156{ 151{
157 struct kstat stat; 152 struct kstat stat;
158 int error = vfs_stat_fd(AT_FDCWD, filename, &stat); 153 int error;
159 154
160 if (!error) 155 error = vfs_stat(filename, &stat);
161 error = cp_old_stat(&stat, statbuf); 156 if (error)
157 return error;
162 158
163 return error; 159 return cp_old_stat(&stat, statbuf);
164} 160}
165 161
166SYSCALL_DEFINE2(lstat, char __user *, filename, struct __old_kernel_stat __user *, statbuf) 162SYSCALL_DEFINE2(lstat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
167{ 163{
168 struct kstat stat; 164 struct kstat stat;
169 int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); 165 int error;
170 166
171 if (!error) 167 error = vfs_lstat(filename, &stat);
172 error = cp_old_stat(&stat, statbuf); 168 if (error)
169 return error;
173 170
174 return error; 171 return cp_old_stat(&stat, statbuf);
175} 172}
176 173
177SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf) 174SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf)
@@ -240,23 +237,23 @@ static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
240SYSCALL_DEFINE2(newstat, char __user *, filename, struct stat __user *, statbuf) 237SYSCALL_DEFINE2(newstat, char __user *, filename, struct stat __user *, statbuf)
241{ 238{
242 struct kstat stat; 239 struct kstat stat;
243 int error = vfs_stat_fd(AT_FDCWD, filename, &stat); 240 int error = vfs_stat(filename, &stat);
244
245 if (!error)
246 error = cp_new_stat(&stat, statbuf);
247 241
248 return error; 242 if (error)
243 return error;
244 return cp_new_stat(&stat, statbuf);
249} 245}
250 246
251SYSCALL_DEFINE2(newlstat, char __user *, filename, struct stat __user *, statbuf) 247SYSCALL_DEFINE2(newlstat, char __user *, filename, struct stat __user *, statbuf)
252{ 248{
253 struct kstat stat; 249 struct kstat stat;
254 int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); 250 int error;
255 251
256 if (!error) 252 error = vfs_lstat(filename, &stat);
257 error = cp_new_stat(&stat, statbuf); 253 if (error)
254 return error;
258 255
259 return error; 256 return cp_new_stat(&stat, statbuf);
260} 257}
261 258
262#if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT) 259#if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT)
@@ -264,21 +261,12 @@ SYSCALL_DEFINE4(newfstatat, int, dfd, char __user *, filename,
264 struct stat __user *, statbuf, int, flag) 261 struct stat __user *, statbuf, int, flag)
265{ 262{
266 struct kstat stat; 263 struct kstat stat;
267 int error = -EINVAL; 264 int error;
268
269 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
270 goto out;
271
272 if (flag & AT_SYMLINK_NOFOLLOW)
273 error = vfs_lstat_fd(dfd, filename, &stat);
274 else
275 error = vfs_stat_fd(dfd, filename, &stat);
276
277 if (!error)
278 error = cp_new_stat(&stat, statbuf);
279 265
280out: 266 error = vfs_fstatat(dfd, filename, &stat, flag);
281 return error; 267 if (error)
268 return error;
269 return cp_new_stat(&stat, statbuf);
282} 270}
283#endif 271#endif
284 272
@@ -404,21 +392,12 @@ SYSCALL_DEFINE4(fstatat64, int, dfd, char __user *, filename,
404 struct stat64 __user *, statbuf, int, flag) 392 struct stat64 __user *, statbuf, int, flag)
405{ 393{
406 struct kstat stat; 394 struct kstat stat;
407 int error = -EINVAL; 395 int error;
408
409 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
410 goto out;
411
412 if (flag & AT_SYMLINK_NOFOLLOW)
413 error = vfs_lstat_fd(dfd, filename, &stat);
414 else
415 error = vfs_stat_fd(dfd, filename, &stat);
416
417 if (!error)
418 error = cp_new_stat64(&stat, statbuf);
419 396
420out: 397 error = vfs_fstatat(dfd, filename, &stat, flag);
421 return error; 398 if (error)
399 return error;
400 return cp_new_stat64(&stat, statbuf);
422} 401}
423#endif /* __ARCH_WANT_STAT64 */ 402#endif /* __ARCH_WANT_STAT64 */
424 403
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c
index 93e0c0281d45..9345806c8853 100644
--- a/fs/sysfs/bin.c
+++ b/fs/sysfs/bin.c
@@ -157,14 +157,9 @@ static ssize_t write(struct file *file, const char __user *userbuf,
157 count = size - offs; 157 count = size - offs;
158 } 158 }
159 159
160 temp = kmalloc(count, GFP_KERNEL); 160 temp = memdup_user(userbuf, count);
161 if (!temp) 161 if (IS_ERR(temp))
162 return -ENOMEM; 162 return PTR_ERR(temp);
163
164 if (copy_from_user(temp, userbuf, count)) {
165 count = -EFAULT;
166 goto out_free;
167 }
168 163
169 mutex_lock(&bb->mutex); 164 mutex_lock(&bb->mutex);
170 165
@@ -176,8 +171,6 @@ static ssize_t write(struct file *file, const char __user *userbuf,
176 if (count > 0) 171 if (count > 0)
177 *off = offs + count; 172 *off = offs + count;
178 173
179out_free:
180 kfree(temp);
181 return count; 174 return count;
182} 175}
183 176
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index 289c43a47263..b1606e07b7a3 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -446,11 +446,11 @@ static unsigned int sysfs_poll(struct file *filp, poll_table *wait)
446 if (buffer->event != atomic_read(&od->event)) 446 if (buffer->event != atomic_read(&od->event))
447 goto trigger; 447 goto trigger;
448 448
449 return 0; 449 return DEFAULT_POLLMASK;
450 450
451 trigger: 451 trigger:
452 buffer->needs_read_fill = 1; 452 buffer->needs_read_fill = 1;
453 return POLLERR|POLLPRI; 453 return DEFAULT_POLLMASK|POLLERR|POLLPRI;
454} 454}
455 455
456void sysfs_notify_dirent(struct sysfs_dirent *sd) 456void sysfs_notify_dirent(struct sysfs_dirent *sd)
@@ -667,6 +667,7 @@ struct sysfs_schedule_callback_struct {
667 struct work_struct work; 667 struct work_struct work;
668}; 668};
669 669
670static struct workqueue_struct *sysfs_workqueue;
670static DEFINE_MUTEX(sysfs_workq_mutex); 671static DEFINE_MUTEX(sysfs_workq_mutex);
671static LIST_HEAD(sysfs_workq); 672static LIST_HEAD(sysfs_workq);
672static void sysfs_schedule_callback_work(struct work_struct *work) 673static void sysfs_schedule_callback_work(struct work_struct *work)
@@ -715,11 +716,20 @@ int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *),
715 mutex_lock(&sysfs_workq_mutex); 716 mutex_lock(&sysfs_workq_mutex);
716 list_for_each_entry_safe(ss, tmp, &sysfs_workq, workq_list) 717 list_for_each_entry_safe(ss, tmp, &sysfs_workq, workq_list)
717 if (ss->kobj == kobj) { 718 if (ss->kobj == kobj) {
719 module_put(owner);
718 mutex_unlock(&sysfs_workq_mutex); 720 mutex_unlock(&sysfs_workq_mutex);
719 return -EAGAIN; 721 return -EAGAIN;
720 } 722 }
721 mutex_unlock(&sysfs_workq_mutex); 723 mutex_unlock(&sysfs_workq_mutex);
722 724
725 if (sysfs_workqueue == NULL) {
726 sysfs_workqueue = create_workqueue("sysfsd");
727 if (sysfs_workqueue == NULL) {
728 module_put(owner);
729 return -ENOMEM;
730 }
731 }
732
723 ss = kmalloc(sizeof(*ss), GFP_KERNEL); 733 ss = kmalloc(sizeof(*ss), GFP_KERNEL);
724 if (!ss) { 734 if (!ss) {
725 module_put(owner); 735 module_put(owner);
@@ -735,7 +745,7 @@ int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *),
735 mutex_lock(&sysfs_workq_mutex); 745 mutex_lock(&sysfs_workq_mutex);
736 list_add_tail(&ss->workq_list, &sysfs_workq); 746 list_add_tail(&ss->workq_list, &sysfs_workq);
737 mutex_unlock(&sysfs_workq_mutex); 747 mutex_unlock(&sysfs_workq_mutex);
738 schedule_work(&ss->work); 748 queue_work(sysfs_workqueue, &ss->work);
739 return 0; 749 return 0;
740} 750}
741EXPORT_SYMBOL_GPL(sysfs_schedule_callback); 751EXPORT_SYMBOL_GPL(sysfs_schedule_callback);
diff --git a/fs/xattr.c b/fs/xattr.c
index 197c4fcac032..d51b8f9db921 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
@@ -237,13 +237,9 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
237 if (size) { 237 if (size) {
238 if (size > XATTR_SIZE_MAX) 238 if (size > XATTR_SIZE_MAX)
239 return -E2BIG; 239 return -E2BIG;
240 kvalue = kmalloc(size, GFP_KERNEL); 240 kvalue = memdup_user(value, size);
241 if (!kvalue) 241 if (IS_ERR(kvalue))
242 return -ENOMEM; 242 return PTR_ERR(kvalue);
243 if (copy_from_user(kvalue, value, size)) {
244 kfree(kvalue);
245 return -EFAULT;
246 }
247 } 243 }
248 244
249 error = vfs_setxattr(d, kname, kvalue, size, flags); 245 error = vfs_setxattr(d, kname, kvalue, size, flags);
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c
index c13f67300fe7..7ec89fc05b2b 100644
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@ -153,23 +153,6 @@ xfs_find_bdev_for_inode(
153} 153}
154 154
155/* 155/*
156 * Schedule IO completion handling on a xfsdatad if this was
157 * the final hold on this ioend. If we are asked to wait,
158 * flush the workqueue.
159 */
160STATIC void
161xfs_finish_ioend(
162 xfs_ioend_t *ioend,
163 int wait)
164{
165 if (atomic_dec_and_test(&ioend->io_remaining)) {
166 queue_work(xfsdatad_workqueue, &ioend->io_work);
167 if (wait)
168 flush_workqueue(xfsdatad_workqueue);
169 }
170}
171
172/*
173 * We're now finished for good with this ioend structure. 156 * We're now finished for good with this ioend structure.
174 * Update the page state via the associated buffer_heads, 157 * Update the page state via the associated buffer_heads,
175 * release holds on the inode and bio, and finally free 158 * release holds on the inode and bio, and finally free
@@ -310,6 +293,27 @@ xfs_end_bio_read(
310} 293}
311 294
312/* 295/*
296 * Schedule IO completion handling on a xfsdatad if this was
297 * the final hold on this ioend. If we are asked to wait,
298 * flush the workqueue.
299 */
300STATIC void
301xfs_finish_ioend(
302 xfs_ioend_t *ioend,
303 int wait)
304{
305 if (atomic_dec_and_test(&ioend->io_remaining)) {
306 struct workqueue_struct *wq = xfsdatad_workqueue;
307 if (ioend->io_work.func == xfs_end_bio_unwritten)
308 wq = xfsconvertd_workqueue;
309
310 queue_work(wq, &ioend->io_work);
311 if (wait)
312 flush_workqueue(wq);
313 }
314}
315
316/*
313 * Allocate and initialise an IO completion structure. 317 * Allocate and initialise an IO completion structure.
314 * We need to track unwritten extent write completion here initially. 318 * We need to track unwritten extent write completion here initially.
315 * We'll need to extend this for updating the ondisk inode size later 319 * We'll need to extend this for updating the ondisk inode size later
diff --git a/fs/xfs/linux-2.6/xfs_aops.h b/fs/xfs/linux-2.6/xfs_aops.h
index 1dd528849755..221b3e66ceef 100644
--- a/fs/xfs/linux-2.6/xfs_aops.h
+++ b/fs/xfs/linux-2.6/xfs_aops.h
@@ -19,6 +19,7 @@
19#define __XFS_AOPS_H__ 19#define __XFS_AOPS_H__
20 20
21extern struct workqueue_struct *xfsdatad_workqueue; 21extern struct workqueue_struct *xfsdatad_workqueue;
22extern struct workqueue_struct *xfsconvertd_workqueue;
22extern mempool_t *xfs_ioend_pool; 23extern mempool_t *xfs_ioend_pool;
23 24
24/* 25/*
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c
index aa1016bb9134..e28800a9f2b5 100644
--- a/fs/xfs/linux-2.6/xfs_buf.c
+++ b/fs/xfs/linux-2.6/xfs_buf.c
@@ -51,6 +51,7 @@ static struct shrinker xfs_buf_shake = {
51 51
52static struct workqueue_struct *xfslogd_workqueue; 52static struct workqueue_struct *xfslogd_workqueue;
53struct workqueue_struct *xfsdatad_workqueue; 53struct workqueue_struct *xfsdatad_workqueue;
54struct workqueue_struct *xfsconvertd_workqueue;
54 55
55#ifdef XFS_BUF_TRACE 56#ifdef XFS_BUF_TRACE
56void 57void
@@ -1775,6 +1776,7 @@ xfs_flush_buftarg(
1775 xfs_buf_t *bp, *n; 1776 xfs_buf_t *bp, *n;
1776 int pincount = 0; 1777 int pincount = 0;
1777 1778
1779 xfs_buf_runall_queues(xfsconvertd_workqueue);
1778 xfs_buf_runall_queues(xfsdatad_workqueue); 1780 xfs_buf_runall_queues(xfsdatad_workqueue);
1779 xfs_buf_runall_queues(xfslogd_workqueue); 1781 xfs_buf_runall_queues(xfslogd_workqueue);
1780 1782
@@ -1831,9 +1833,15 @@ xfs_buf_init(void)
1831 if (!xfsdatad_workqueue) 1833 if (!xfsdatad_workqueue)
1832 goto out_destroy_xfslogd_workqueue; 1834 goto out_destroy_xfslogd_workqueue;
1833 1835
1836 xfsconvertd_workqueue = create_workqueue("xfsconvertd");
1837 if (!xfsconvertd_workqueue)
1838 goto out_destroy_xfsdatad_workqueue;
1839
1834 register_shrinker(&xfs_buf_shake); 1840 register_shrinker(&xfs_buf_shake);
1835 return 0; 1841 return 0;
1836 1842
1843 out_destroy_xfsdatad_workqueue:
1844 destroy_workqueue(xfsdatad_workqueue);
1837 out_destroy_xfslogd_workqueue: 1845 out_destroy_xfslogd_workqueue:
1838 destroy_workqueue(xfslogd_workqueue); 1846 destroy_workqueue(xfslogd_workqueue);
1839 out_free_buf_zone: 1847 out_free_buf_zone:
@@ -1849,6 +1857,7 @@ void
1849xfs_buf_terminate(void) 1857xfs_buf_terminate(void)
1850{ 1858{
1851 unregister_shrinker(&xfs_buf_shake); 1859 unregister_shrinker(&xfs_buf_shake);
1860 destroy_workqueue(xfsconvertd_workqueue);
1852 destroy_workqueue(xfsdatad_workqueue); 1861 destroy_workqueue(xfsdatad_workqueue);
1853 destroy_workqueue(xfslogd_workqueue); 1862 destroy_workqueue(xfslogd_workqueue);
1854 kmem_zone_destroy(xfs_buf_zone); 1863 kmem_zone_destroy(xfs_buf_zone);
diff --git a/fs/xfs/linux-2.6/xfs_fs_subr.c b/fs/xfs/linux-2.6/xfs_fs_subr.c
index 5aeb77776961..08be36d7326c 100644
--- a/fs/xfs/linux-2.6/xfs_fs_subr.c
+++ b/fs/xfs/linux-2.6/xfs_fs_subr.c
@@ -74,14 +74,14 @@ xfs_flush_pages(
74 74
75 if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { 75 if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) {
76 xfs_iflags_clear(ip, XFS_ITRUNCATED); 76 xfs_iflags_clear(ip, XFS_ITRUNCATED);
77 ret = filemap_fdatawrite(mapping); 77 ret = -filemap_fdatawrite(mapping);
78 if (flags & XFS_B_ASYNC)
79 return -ret;
80 ret2 = filemap_fdatawait(mapping);
81 if (!ret)
82 ret = ret2;
83 } 78 }
84 return -ret; 79 if (flags & XFS_B_ASYNC)
80 return ret;
81 ret2 = xfs_wait_on_pages(ip, first, last);
82 if (!ret)
83 ret = ret2;
84 return ret;
85} 85}
86 86
87int 87int
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c
index d0b499418a7d..34eaab608e6e 100644
--- a/fs/xfs/linux-2.6/xfs_ioctl.c
+++ b/fs/xfs/linux-2.6/xfs_ioctl.c
@@ -489,17 +489,12 @@ xfs_attrmulti_attr_set(
489 if (len > XATTR_SIZE_MAX) 489 if (len > XATTR_SIZE_MAX)
490 return EINVAL; 490 return EINVAL;
491 491
492 kbuf = kmalloc(len, GFP_KERNEL); 492 kbuf = memdup_user(ubuf, len);
493 if (!kbuf) 493 if (IS_ERR(kbuf))
494 return ENOMEM; 494 return PTR_ERR(kbuf);
495
496 if (copy_from_user(kbuf, ubuf, len))
497 goto out_kfree;
498 495
499 error = xfs_attr_set(XFS_I(inode), name, kbuf, len, flags); 496 error = xfs_attr_set(XFS_I(inode), name, kbuf, len, flags);
500 497
501 out_kfree:
502 kfree(kbuf);
503 return error; 498 return error;
504} 499}
505 500
@@ -540,20 +535,16 @@ xfs_attrmulti_by_handle(
540 if (!size || size > 16 * PAGE_SIZE) 535 if (!size || size > 16 * PAGE_SIZE)
541 goto out_dput; 536 goto out_dput;
542 537
543 error = ENOMEM; 538 ops = memdup_user(am_hreq.ops, size);
544 ops = kmalloc(size, GFP_KERNEL); 539 if (IS_ERR(ops)) {
545 if (!ops) 540 error = PTR_ERR(ops);
546 goto out_dput; 541 goto out_dput;
547 542 }
548 error = EFAULT;
549 if (copy_from_user(ops, am_hreq.ops, size))
550 goto out_kfree_ops;
551 543
552 attr_name = kmalloc(MAXNAMELEN, GFP_KERNEL); 544 attr_name = kmalloc(MAXNAMELEN, GFP_KERNEL);
553 if (!attr_name) 545 if (!attr_name)
554 goto out_kfree_ops; 546 goto out_kfree_ops;
555 547
556
557 error = 0; 548 error = 0;
558 for (i = 0; i < am_hreq.opcount; i++) { 549 for (i = 0; i < am_hreq.opcount; i++) {
559 ops[i].am_error = strncpy_from_user(attr_name, 550 ops[i].am_error = strncpy_from_user(attr_name,
diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.c b/fs/xfs/linux-2.6/xfs_ioctl32.c
index c70c4e3db790..0882d166239a 100644
--- a/fs/xfs/linux-2.6/xfs_ioctl32.c
+++ b/fs/xfs/linux-2.6/xfs_ioctl32.c
@@ -427,20 +427,16 @@ xfs_compat_attrmulti_by_handle(
427 if (!size || size > 16 * PAGE_SIZE) 427 if (!size || size > 16 * PAGE_SIZE)
428 goto out_dput; 428 goto out_dput;
429 429
430 error = ENOMEM; 430 ops = memdup_user(compat_ptr(am_hreq.ops), size);
431 ops = kmalloc(size, GFP_KERNEL); 431 if (IS_ERR(ops)) {
432 if (!ops) 432 error = PTR_ERR(ops);
433 goto out_dput; 433 goto out_dput;
434 434 }
435 error = EFAULT;
436 if (copy_from_user(ops, compat_ptr(am_hreq.ops), size))
437 goto out_kfree_ops;
438 435
439 attr_name = kmalloc(MAXNAMELEN, GFP_KERNEL); 436 attr_name = kmalloc(MAXNAMELEN, GFP_KERNEL);
440 if (!attr_name) 437 if (!attr_name)
441 goto out_kfree_ops; 438 goto out_kfree_ops;
442 439
443
444 error = 0; 440 error = 0;
445 for (i = 0; i < am_hreq.opcount; i++) { 441 for (i = 0; i < am_hreq.opcount; i++) {
446 ops[i].am_error = strncpy_from_user(attr_name, 442 ops[i].am_error = strncpy_from_user(attr_name,
diff --git a/fs/xfs/linux-2.6/xfs_lrw.c b/fs/xfs/linux-2.6/xfs_lrw.c
index 7e90daa0d1d1..9142192ccbe6 100644
--- a/fs/xfs/linux-2.6/xfs_lrw.c
+++ b/fs/xfs/linux-2.6/xfs_lrw.c
@@ -751,10 +751,26 @@ start:
751 goto relock; 751 goto relock;
752 } 752 }
753 } else { 753 } else {
754 int enospc = 0;
755 ssize_t ret2 = 0;
756
757write_retry:
754 xfs_rw_enter_trace(XFS_WRITE_ENTER, xip, (void *)iovp, segs, 758 xfs_rw_enter_trace(XFS_WRITE_ENTER, xip, (void *)iovp, segs,
755 *offset, ioflags); 759 *offset, ioflags);
756 ret = generic_file_buffered_write(iocb, iovp, segs, 760 ret2 = generic_file_buffered_write(iocb, iovp, segs,
757 pos, offset, count, ret); 761 pos, offset, count, ret);
762 /*
763 * if we just got an ENOSPC, flush the inode now we
764 * aren't holding any page locks and retry *once*
765 */
766 if (ret2 == -ENOSPC && !enospc) {
767 error = xfs_flush_pages(xip, 0, -1, 0, FI_NONE);
768 if (error)
769 goto out_unlock_internal;
770 enospc = 1;
771 goto write_retry;
772 }
773 ret = ret2;
758 } 774 }
759 775
760 current->backing_dev_info = NULL; 776 current->backing_dev_info = NULL;
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c
index a608e72fa405..f7ba76633c29 100644
--- a/fs/xfs/linux-2.6/xfs_sync.c
+++ b/fs/xfs/linux-2.6/xfs_sync.c
@@ -62,12 +62,6 @@ xfs_sync_inodes_ag(
62 uint32_t first_index = 0; 62 uint32_t first_index = 0;
63 int error = 0; 63 int error = 0;
64 int last_error = 0; 64 int last_error = 0;
65 int fflag = XFS_B_ASYNC;
66
67 if (flags & SYNC_DELWRI)
68 fflag = XFS_B_DELWRI;
69 if (flags & SYNC_WAIT)
70 fflag = 0; /* synchronous overrides all */
71 65
72 do { 66 do {
73 struct inode *inode; 67 struct inode *inode;
@@ -128,11 +122,23 @@ xfs_sync_inodes_ag(
128 * If we have to flush data or wait for I/O completion 122 * If we have to flush data or wait for I/O completion
129 * we need to hold the iolock. 123 * we need to hold the iolock.
130 */ 124 */
131 if ((flags & SYNC_DELWRI) && VN_DIRTY(inode)) { 125 if (flags & SYNC_DELWRI) {
132 xfs_ilock(ip, XFS_IOLOCK_SHARED); 126 if (VN_DIRTY(inode)) {
133 lock_flags |= XFS_IOLOCK_SHARED; 127 if (flags & SYNC_TRYLOCK) {
134 error = xfs_flush_pages(ip, 0, -1, fflag, FI_NONE); 128 if (xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))
135 if (flags & SYNC_IOWAIT) 129 lock_flags |= XFS_IOLOCK_SHARED;
130 } else {
131 xfs_ilock(ip, XFS_IOLOCK_SHARED);
132 lock_flags |= XFS_IOLOCK_SHARED;
133 }
134 if (lock_flags & XFS_IOLOCK_SHARED) {
135 error = xfs_flush_pages(ip, 0, -1,
136 (flags & SYNC_WAIT) ? 0
137 : XFS_B_ASYNC,
138 FI_NONE);
139 }
140 }
141 if (VN_CACHED(inode) && (flags & SYNC_IOWAIT))
136 xfs_ioend_wait(ip); 142 xfs_ioend_wait(ip);
137 } 143 }
138 xfs_ilock(ip, XFS_ILOCK_SHARED); 144 xfs_ilock(ip, XFS_ILOCK_SHARED);
@@ -398,15 +404,17 @@ STATIC void
398xfs_syncd_queue_work( 404xfs_syncd_queue_work(
399 struct xfs_mount *mp, 405 struct xfs_mount *mp,
400 void *data, 406 void *data,
401 void (*syncer)(struct xfs_mount *, void *)) 407 void (*syncer)(struct xfs_mount *, void *),
408 struct completion *completion)
402{ 409{
403 struct bhv_vfs_sync_work *work; 410 struct xfs_sync_work *work;
404 411
405 work = kmem_alloc(sizeof(struct bhv_vfs_sync_work), KM_SLEEP); 412 work = kmem_alloc(sizeof(struct xfs_sync_work), KM_SLEEP);
406 INIT_LIST_HEAD(&work->w_list); 413 INIT_LIST_HEAD(&work->w_list);
407 work->w_syncer = syncer; 414 work->w_syncer = syncer;
408 work->w_data = data; 415 work->w_data = data;
409 work->w_mount = mp; 416 work->w_mount = mp;
417 work->w_completion = completion;
410 spin_lock(&mp->m_sync_lock); 418 spin_lock(&mp->m_sync_lock);
411 list_add_tail(&work->w_list, &mp->m_sync_list); 419 list_add_tail(&work->w_list, &mp->m_sync_list);
412 spin_unlock(&mp->m_sync_lock); 420 spin_unlock(&mp->m_sync_lock);
@@ -420,49 +428,26 @@ xfs_syncd_queue_work(
420 * heads, looking about for more room... 428 * heads, looking about for more room...
421 */ 429 */
422STATIC void 430STATIC void
423xfs_flush_inode_work( 431xfs_flush_inodes_work(
424 struct xfs_mount *mp,
425 void *arg)
426{
427 struct inode *inode = arg;
428 filemap_flush(inode->i_mapping);
429 iput(inode);
430}
431
432void
433xfs_flush_inode(
434 xfs_inode_t *ip)
435{
436 struct inode *inode = VFS_I(ip);
437
438 igrab(inode);
439 xfs_syncd_queue_work(ip->i_mount, inode, xfs_flush_inode_work);
440 delay(msecs_to_jiffies(500));
441}
442
443/*
444 * This is the "bigger hammer" version of xfs_flush_inode_work...
445 * (IOW, "If at first you don't succeed, use a Bigger Hammer").
446 */
447STATIC void
448xfs_flush_device_work(
449 struct xfs_mount *mp, 432 struct xfs_mount *mp,
450 void *arg) 433 void *arg)
451{ 434{
452 struct inode *inode = arg; 435 struct inode *inode = arg;
453 sync_blockdev(mp->m_super->s_bdev); 436 xfs_sync_inodes(mp, SYNC_DELWRI | SYNC_TRYLOCK);
437 xfs_sync_inodes(mp, SYNC_DELWRI | SYNC_TRYLOCK | SYNC_IOWAIT);
454 iput(inode); 438 iput(inode);
455} 439}
456 440
457void 441void
458xfs_flush_device( 442xfs_flush_inodes(
459 xfs_inode_t *ip) 443 xfs_inode_t *ip)
460{ 444{
461 struct inode *inode = VFS_I(ip); 445 struct inode *inode = VFS_I(ip);
446 DECLARE_COMPLETION_ONSTACK(completion);
462 447
463 igrab(inode); 448 igrab(inode);
464 xfs_syncd_queue_work(ip->i_mount, inode, xfs_flush_device_work); 449 xfs_syncd_queue_work(ip->i_mount, inode, xfs_flush_inodes_work, &completion);
465 delay(msecs_to_jiffies(500)); 450 wait_for_completion(&completion);
466 xfs_log_force(ip->i_mount, (xfs_lsn_t)0, XFS_LOG_FORCE|XFS_LOG_SYNC); 451 xfs_log_force(ip->i_mount, (xfs_lsn_t)0, XFS_LOG_FORCE|XFS_LOG_SYNC);
467} 452}
468 453
@@ -497,7 +482,7 @@ xfssyncd(
497{ 482{
498 struct xfs_mount *mp = arg; 483 struct xfs_mount *mp = arg;
499 long timeleft; 484 long timeleft;
500 bhv_vfs_sync_work_t *work, *n; 485 xfs_sync_work_t *work, *n;
501 LIST_HEAD (tmp); 486 LIST_HEAD (tmp);
502 487
503 set_freezable(); 488 set_freezable();
@@ -532,6 +517,8 @@ xfssyncd(
532 list_del(&work->w_list); 517 list_del(&work->w_list);
533 if (work == &mp->m_sync_work) 518 if (work == &mp->m_sync_work)
534 continue; 519 continue;
520 if (work->w_completion)
521 complete(work->w_completion);
535 kmem_free(work); 522 kmem_free(work);
536 } 523 }
537 } 524 }
@@ -545,6 +532,7 @@ xfs_syncd_init(
545{ 532{
546 mp->m_sync_work.w_syncer = xfs_sync_worker; 533 mp->m_sync_work.w_syncer = xfs_sync_worker;
547 mp->m_sync_work.w_mount = mp; 534 mp->m_sync_work.w_mount = mp;
535 mp->m_sync_work.w_completion = NULL;
548 mp->m_sync_task = kthread_run(xfssyncd, mp, "xfssyncd"); 536 mp->m_sync_task = kthread_run(xfssyncd, mp, "xfssyncd");
549 if (IS_ERR(mp->m_sync_task)) 537 if (IS_ERR(mp->m_sync_task))
550 return -PTR_ERR(mp->m_sync_task); 538 return -PTR_ERR(mp->m_sync_task);
diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h
index 04f058c848ae..308d5bf6dfbd 100644
--- a/fs/xfs/linux-2.6/xfs_sync.h
+++ b/fs/xfs/linux-2.6/xfs_sync.h
@@ -21,18 +21,20 @@
21struct xfs_mount; 21struct xfs_mount;
22struct xfs_perag; 22struct xfs_perag;
23 23
24typedef struct bhv_vfs_sync_work { 24typedef struct xfs_sync_work {
25 struct list_head w_list; 25 struct list_head w_list;
26 struct xfs_mount *w_mount; 26 struct xfs_mount *w_mount;
27 void *w_data; /* syncer routine argument */ 27 void *w_data; /* syncer routine argument */
28 void (*w_syncer)(struct xfs_mount *, void *); 28 void (*w_syncer)(struct xfs_mount *, void *);
29} bhv_vfs_sync_work_t; 29 struct completion *w_completion;
30} xfs_sync_work_t;
30 31
31#define SYNC_ATTR 0x0001 /* sync attributes */ 32#define SYNC_ATTR 0x0001 /* sync attributes */
32#define SYNC_DELWRI 0x0002 /* look at delayed writes */ 33#define SYNC_DELWRI 0x0002 /* look at delayed writes */
33#define SYNC_WAIT 0x0004 /* wait for i/o to complete */ 34#define SYNC_WAIT 0x0004 /* wait for i/o to complete */
34#define SYNC_BDFLUSH 0x0008 /* BDFLUSH is calling -- don't block */ 35#define SYNC_BDFLUSH 0x0008 /* BDFLUSH is calling -- don't block */
35#define SYNC_IOWAIT 0x0010 /* wait for all I/O to complete */ 36#define SYNC_IOWAIT 0x0010 /* wait for all I/O to complete */
37#define SYNC_TRYLOCK 0x0020 /* only try to lock inodes */
36 38
37int xfs_syncd_init(struct xfs_mount *mp); 39int xfs_syncd_init(struct xfs_mount *mp);
38void xfs_syncd_stop(struct xfs_mount *mp); 40void xfs_syncd_stop(struct xfs_mount *mp);
@@ -43,8 +45,7 @@ int xfs_sync_fsdata(struct xfs_mount *mp, int flags);
43int xfs_quiesce_data(struct xfs_mount *mp); 45int xfs_quiesce_data(struct xfs_mount *mp);
44void xfs_quiesce_attr(struct xfs_mount *mp); 46void xfs_quiesce_attr(struct xfs_mount *mp);
45 47
46void xfs_flush_inode(struct xfs_inode *ip); 48void xfs_flush_inodes(struct xfs_inode *ip);
47void xfs_flush_device(struct xfs_inode *ip);
48 49
49int xfs_reclaim_inode(struct xfs_inode *ip, int locked, int sync_mode); 50int xfs_reclaim_inode(struct xfs_inode *ip, int locked, int sync_mode);
50int xfs_reclaim_inodes(struct xfs_mount *mp, int noblock, int mode); 51int xfs_reclaim_inodes(struct xfs_mount *mp, int noblock, int mode);
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c
index 478e587087fe..89b81eedce6a 100644
--- a/fs/xfs/xfs_iget.c
+++ b/fs/xfs/xfs_iget.c
@@ -69,15 +69,6 @@ xfs_inode_alloc(
69 ASSERT(!spin_is_locked(&ip->i_flags_lock)); 69 ASSERT(!spin_is_locked(&ip->i_flags_lock));
70 ASSERT(completion_done(&ip->i_flush)); 70 ASSERT(completion_done(&ip->i_flush));
71 71
72 /*
73 * initialise the VFS inode here to get failures
74 * out of the way early.
75 */
76 if (!inode_init_always(mp->m_super, VFS_I(ip))) {
77 kmem_zone_free(xfs_inode_zone, ip);
78 return NULL;
79 }
80
81 /* initialise the xfs inode */ 72 /* initialise the xfs inode */
82 ip->i_ino = ino; 73 ip->i_ino = ino;
83 ip->i_mount = mp; 74 ip->i_mount = mp;
@@ -113,6 +104,20 @@ xfs_inode_alloc(
113#ifdef XFS_DIR2_TRACE 104#ifdef XFS_DIR2_TRACE
114 ip->i_dir_trace = ktrace_alloc(XFS_DIR2_KTRACE_SIZE, KM_NOFS); 105 ip->i_dir_trace = ktrace_alloc(XFS_DIR2_KTRACE_SIZE, KM_NOFS);
115#endif 106#endif
107 /*
108 * Now initialise the VFS inode. We do this after the xfs_inode
109 * initialisation as internal failures will result in ->destroy_inode
110 * being called and that will pass down through the reclaim path and
111 * free the XFS inode. This path requires the XFS inode to already be
112 * initialised. Hence if this call fails, the xfs_inode has already
113 * been freed and we should not reference it at all in the error
114 * handling.
115 */
116 if (!inode_init_always(mp->m_super, VFS_I(ip)))
117 return NULL;
118
119 /* prevent anyone from using this yet */
120 VFS_I(ip)->i_state = I_NEW|I_LOCK;
116 121
117 return ip; 122 return ip;
118} 123}
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 08ce72316bfe..5aaa2d7ec155 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -338,38 +338,6 @@ xfs_iomap_eof_align_last_fsb(
338} 338}
339 339
340STATIC int 340STATIC int
341xfs_flush_space(
342 xfs_inode_t *ip,
343 int *fsynced,
344 int *ioflags)
345{
346 switch (*fsynced) {
347 case 0:
348 if (ip->i_delayed_blks) {
349 xfs_iunlock(ip, XFS_ILOCK_EXCL);
350 xfs_flush_inode(ip);
351 xfs_ilock(ip, XFS_ILOCK_EXCL);
352 *fsynced = 1;
353 } else {
354 *ioflags |= BMAPI_SYNC;
355 *fsynced = 2;
356 }
357 return 0;
358 case 1:
359 *fsynced = 2;
360 *ioflags |= BMAPI_SYNC;
361 return 0;
362 case 2:
363 xfs_iunlock(ip, XFS_ILOCK_EXCL);
364 xfs_flush_device(ip);
365 xfs_ilock(ip, XFS_ILOCK_EXCL);
366 *fsynced = 3;
367 return 0;
368 }
369 return 1;
370}
371
372STATIC int
373xfs_cmn_err_fsblock_zero( 341xfs_cmn_err_fsblock_zero(
374 xfs_inode_t *ip, 342 xfs_inode_t *ip,
375 xfs_bmbt_irec_t *imap) 343 xfs_bmbt_irec_t *imap)
@@ -538,15 +506,9 @@ error_out:
538} 506}
539 507
540/* 508/*
541 * If the caller is doing a write at the end of the file, 509 * If the caller is doing a write at the end of the file, then extend the
542 * then extend the allocation out to the file system's write 510 * allocation out to the file system's write iosize. We clean up any extra
543 * iosize. We clean up any extra space left over when the 511 * space left over when the file is closed in xfs_inactive().
544 * file is closed in xfs_inactive().
545 *
546 * For sync writes, we are flushing delayed allocate space to
547 * try to make additional space available for allocation near
548 * the filesystem full boundary - preallocation hurts in that
549 * situation, of course.
550 */ 512 */
551STATIC int 513STATIC int
552xfs_iomap_eof_want_preallocate( 514xfs_iomap_eof_want_preallocate(
@@ -565,7 +527,7 @@ xfs_iomap_eof_want_preallocate(
565 int n, error, imaps; 527 int n, error, imaps;
566 528
567 *prealloc = 0; 529 *prealloc = 0;
568 if ((ioflag & BMAPI_SYNC) || (offset + count) <= ip->i_size) 530 if ((offset + count) <= ip->i_size)
569 return 0; 531 return 0;
570 532
571 /* 533 /*
@@ -611,7 +573,7 @@ xfs_iomap_write_delay(
611 xfs_extlen_t extsz; 573 xfs_extlen_t extsz;
612 int nimaps; 574 int nimaps;
613 xfs_bmbt_irec_t imap[XFS_WRITE_IMAPS]; 575 xfs_bmbt_irec_t imap[XFS_WRITE_IMAPS];
614 int prealloc, fsynced = 0; 576 int prealloc, flushed = 0;
615 int error; 577 int error;
616 578
617 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); 579 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
@@ -627,12 +589,12 @@ xfs_iomap_write_delay(
627 extsz = xfs_get_extsz_hint(ip); 589 extsz = xfs_get_extsz_hint(ip);
628 offset_fsb = XFS_B_TO_FSBT(mp, offset); 590 offset_fsb = XFS_B_TO_FSBT(mp, offset);
629 591
630retry:
631 error = xfs_iomap_eof_want_preallocate(mp, ip, offset, count, 592 error = xfs_iomap_eof_want_preallocate(mp, ip, offset, count,
632 ioflag, imap, XFS_WRITE_IMAPS, &prealloc); 593 ioflag, imap, XFS_WRITE_IMAPS, &prealloc);
633 if (error) 594 if (error)
634 return error; 595 return error;
635 596
597retry:
636 if (prealloc) { 598 if (prealloc) {
637 aligned_offset = XFS_WRITEIO_ALIGN(mp, (offset + count - 1)); 599 aligned_offset = XFS_WRITEIO_ALIGN(mp, (offset + count - 1));
638 ioalign = XFS_B_TO_FSBT(mp, aligned_offset); 600 ioalign = XFS_B_TO_FSBT(mp, aligned_offset);
@@ -659,15 +621,22 @@ retry:
659 621
660 /* 622 /*
661 * If bmapi returned us nothing, and if we didn't get back EDQUOT, 623 * If bmapi returned us nothing, and if we didn't get back EDQUOT,
662 * then we must have run out of space - flush delalloc, and retry.. 624 * then we must have run out of space - flush all other inodes with
625 * delalloc blocks and retry without EOF preallocation.
663 */ 626 */
664 if (nimaps == 0) { 627 if (nimaps == 0) {
665 xfs_iomap_enter_trace(XFS_IOMAP_WRITE_NOSPACE, 628 xfs_iomap_enter_trace(XFS_IOMAP_WRITE_NOSPACE,
666 ip, offset, count); 629 ip, offset, count);
667 if (xfs_flush_space(ip, &fsynced, &ioflag)) 630 if (flushed)
668 return XFS_ERROR(ENOSPC); 631 return XFS_ERROR(ENOSPC);
669 632
633 xfs_iunlock(ip, XFS_ILOCK_EXCL);
634 xfs_flush_inodes(ip);
635 xfs_ilock(ip, XFS_ILOCK_EXCL);
636
637 flushed = 1;
670 error = 0; 638 error = 0;
639 prealloc = 0;
671 goto retry; 640 goto retry;
672 } 641 }
673 642
diff --git a/fs/xfs/xfs_iomap.h b/fs/xfs/xfs_iomap.h
index a1cc1322fc0f..fdcf7b82747f 100644
--- a/fs/xfs/xfs_iomap.h
+++ b/fs/xfs/xfs_iomap.h
@@ -40,8 +40,7 @@ typedef enum {
40 BMAPI_IGNSTATE = (1 << 4), /* ignore unwritten state on read */ 40 BMAPI_IGNSTATE = (1 << 4), /* ignore unwritten state on read */
41 BMAPI_DIRECT = (1 << 5), /* direct instead of buffered write */ 41 BMAPI_DIRECT = (1 << 5), /* direct instead of buffered write */
42 BMAPI_MMAP = (1 << 6), /* allocate for mmap write */ 42 BMAPI_MMAP = (1 << 6), /* allocate for mmap write */
43 BMAPI_SYNC = (1 << 7), /* sync write to flush delalloc space */ 43 BMAPI_TRYLOCK = (1 << 7), /* non-blocking request */
44 BMAPI_TRYLOCK = (1 << 8), /* non-blocking request */
45} bmapi_flags_t; 44} bmapi_flags_t;
46 45
47 46
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index f76c6d7cea21..3750f04ede0b 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -562,9 +562,8 @@ xfs_log_mount(
562 } 562 }
563 563
564 mp->m_log = xlog_alloc_log(mp, log_target, blk_offset, num_bblks); 564 mp->m_log = xlog_alloc_log(mp, log_target, blk_offset, num_bblks);
565 if (!mp->m_log) { 565 if (IS_ERR(mp->m_log)) {
566 cmn_err(CE_WARN, "XFS: Log allocation failed: No memory!"); 566 error = -PTR_ERR(mp->m_log);
567 error = ENOMEM;
568 goto out; 567 goto out;
569 } 568 }
570 569
@@ -1180,10 +1179,13 @@ xlog_alloc_log(xfs_mount_t *mp,
1180 xfs_buf_t *bp; 1179 xfs_buf_t *bp;
1181 int i; 1180 int i;
1182 int iclogsize; 1181 int iclogsize;
1182 int error = ENOMEM;
1183 1183
1184 log = kmem_zalloc(sizeof(xlog_t), KM_MAYFAIL); 1184 log = kmem_zalloc(sizeof(xlog_t), KM_MAYFAIL);
1185 if (!log) 1185 if (!log) {
1186 return NULL; 1186 xlog_warn("XFS: Log allocation failed: No memory!");
1187 goto out;
1188 }
1187 1189
1188 log->l_mp = mp; 1190 log->l_mp = mp;
1189 log->l_targ = log_target; 1191 log->l_targ = log_target;
@@ -1201,19 +1203,35 @@ xlog_alloc_log(xfs_mount_t *mp,
1201 log->l_grant_reserve_cycle = 1; 1203 log->l_grant_reserve_cycle = 1;
1202 log->l_grant_write_cycle = 1; 1204 log->l_grant_write_cycle = 1;
1203 1205
1206 error = EFSCORRUPTED;
1204 if (xfs_sb_version_hassector(&mp->m_sb)) { 1207 if (xfs_sb_version_hassector(&mp->m_sb)) {
1205 log->l_sectbb_log = mp->m_sb.sb_logsectlog - BBSHIFT; 1208 log->l_sectbb_log = mp->m_sb.sb_logsectlog - BBSHIFT;
1206 ASSERT(log->l_sectbb_log <= mp->m_sectbb_log); 1209 if (log->l_sectbb_log < 0 ||
1210 log->l_sectbb_log > mp->m_sectbb_log) {
1211 xlog_warn("XFS: Log sector size (0x%x) out of range.",
1212 log->l_sectbb_log);
1213 goto out_free_log;
1214 }
1215
1207 /* for larger sector sizes, must have v2 or external log */ 1216 /* for larger sector sizes, must have v2 or external log */
1208 ASSERT(log->l_sectbb_log == 0 || 1217 if (log->l_sectbb_log != 0 &&
1209 log->l_logBBstart == 0 || 1218 (log->l_logBBstart != 0 &&
1210 xfs_sb_version_haslogv2(&mp->m_sb)); 1219 !xfs_sb_version_haslogv2(&mp->m_sb))) {
1211 ASSERT(mp->m_sb.sb_logsectlog >= BBSHIFT); 1220 xlog_warn("XFS: log sector size (0x%x) invalid "
1221 "for configuration.", log->l_sectbb_log);
1222 goto out_free_log;
1223 }
1224 if (mp->m_sb.sb_logsectlog < BBSHIFT) {
1225 xlog_warn("XFS: Log sector log (0x%x) too small.",
1226 mp->m_sb.sb_logsectlog);
1227 goto out_free_log;
1228 }
1212 } 1229 }
1213 log->l_sectbb_mask = (1 << log->l_sectbb_log) - 1; 1230 log->l_sectbb_mask = (1 << log->l_sectbb_log) - 1;
1214 1231
1215 xlog_get_iclog_buffer_size(mp, log); 1232 xlog_get_iclog_buffer_size(mp, log);
1216 1233
1234 error = ENOMEM;
1217 bp = xfs_buf_get_empty(log->l_iclog_size, mp->m_logdev_targp); 1235 bp = xfs_buf_get_empty(log->l_iclog_size, mp->m_logdev_targp);
1218 if (!bp) 1236 if (!bp)
1219 goto out_free_log; 1237 goto out_free_log;
@@ -1313,7 +1331,8 @@ out_free_iclog:
1313 xfs_buf_free(log->l_xbuf); 1331 xfs_buf_free(log->l_xbuf);
1314out_free_log: 1332out_free_log:
1315 kmem_free(log); 1333 kmem_free(log);
1316 return NULL; 1334out:
1335 return ERR_PTR(-error);
1317} /* xlog_alloc_log */ 1336} /* xlog_alloc_log */
1318 1337
1319 1338
@@ -2541,18 +2560,19 @@ redo:
2541 xlog_ins_ticketq(&log->l_reserve_headq, tic); 2560 xlog_ins_ticketq(&log->l_reserve_headq, tic);
2542 xlog_trace_loggrant(log, tic, 2561 xlog_trace_loggrant(log, tic,
2543 "xlog_grant_log_space: sleep 2"); 2562 "xlog_grant_log_space: sleep 2");
2563 spin_unlock(&log->l_grant_lock);
2564 xlog_grant_push_ail(log->l_mp, need_bytes);
2565 spin_lock(&log->l_grant_lock);
2566
2544 XFS_STATS_INC(xs_sleep_logspace); 2567 XFS_STATS_INC(xs_sleep_logspace);
2545 sv_wait(&tic->t_wait, PINOD|PLTWAIT, &log->l_grant_lock, s); 2568 sv_wait(&tic->t_wait, PINOD|PLTWAIT, &log->l_grant_lock, s);
2546 2569
2547 if (XLOG_FORCED_SHUTDOWN(log)) { 2570 spin_lock(&log->l_grant_lock);
2548 spin_lock(&log->l_grant_lock); 2571 if (XLOG_FORCED_SHUTDOWN(log))
2549 goto error_return; 2572 goto error_return;
2550 }
2551 2573
2552 xlog_trace_loggrant(log, tic, 2574 xlog_trace_loggrant(log, tic,
2553 "xlog_grant_log_space: wake 2"); 2575 "xlog_grant_log_space: wake 2");
2554 xlog_grant_push_ail(log->l_mp, need_bytes);
2555 spin_lock(&log->l_grant_lock);
2556 goto redo; 2576 goto redo;
2557 } else if (tic->t_flags & XLOG_TIC_IN_Q) 2577 } else if (tic->t_flags & XLOG_TIC_IN_Q)
2558 xlog_del_ticketq(&log->l_reserve_headq, tic); 2578 xlog_del_ticketq(&log->l_reserve_headq, tic);
@@ -2631,7 +2651,7 @@ xlog_regrant_write_log_space(xlog_t *log,
2631 * for more free space, otherwise try to get some space for 2651 * for more free space, otherwise try to get some space for
2632 * this transaction. 2652 * this transaction.
2633 */ 2653 */
2634 2654 need_bytes = tic->t_unit_res;
2635 if ((ntic = log->l_write_headq)) { 2655 if ((ntic = log->l_write_headq)) {
2636 free_bytes = xlog_space_left(log, log->l_grant_write_cycle, 2656 free_bytes = xlog_space_left(log, log->l_grant_write_cycle,
2637 log->l_grant_write_bytes); 2657 log->l_grant_write_bytes);
@@ -2651,26 +2671,25 @@ xlog_regrant_write_log_space(xlog_t *log,
2651 2671
2652 xlog_trace_loggrant(log, tic, 2672 xlog_trace_loggrant(log, tic,
2653 "xlog_regrant_write_log_space: sleep 1"); 2673 "xlog_regrant_write_log_space: sleep 1");
2674 spin_unlock(&log->l_grant_lock);
2675 xlog_grant_push_ail(log->l_mp, need_bytes);
2676 spin_lock(&log->l_grant_lock);
2677
2654 XFS_STATS_INC(xs_sleep_logspace); 2678 XFS_STATS_INC(xs_sleep_logspace);
2655 sv_wait(&tic->t_wait, PINOD|PLTWAIT, 2679 sv_wait(&tic->t_wait, PINOD|PLTWAIT,
2656 &log->l_grant_lock, s); 2680 &log->l_grant_lock, s);
2657 2681
2658 /* If we're shutting down, this tic is already 2682 /* If we're shutting down, this tic is already
2659 * off the queue */ 2683 * off the queue */
2660 if (XLOG_FORCED_SHUTDOWN(log)) { 2684 spin_lock(&log->l_grant_lock);
2661 spin_lock(&log->l_grant_lock); 2685 if (XLOG_FORCED_SHUTDOWN(log))
2662 goto error_return; 2686 goto error_return;
2663 }
2664 2687
2665 xlog_trace_loggrant(log, tic, 2688 xlog_trace_loggrant(log, tic,
2666 "xlog_regrant_write_log_space: wake 1"); 2689 "xlog_regrant_write_log_space: wake 1");
2667 xlog_grant_push_ail(log->l_mp, tic->t_unit_res);
2668 spin_lock(&log->l_grant_lock);
2669 } 2690 }
2670 } 2691 }
2671 2692
2672 need_bytes = tic->t_unit_res;
2673
2674redo: 2693redo:
2675 if (XLOG_FORCED_SHUTDOWN(log)) 2694 if (XLOG_FORCED_SHUTDOWN(log))
2676 goto error_return; 2695 goto error_return;
@@ -2680,19 +2699,20 @@ redo:
2680 if (free_bytes < need_bytes) { 2699 if (free_bytes < need_bytes) {
2681 if ((tic->t_flags & XLOG_TIC_IN_Q) == 0) 2700 if ((tic->t_flags & XLOG_TIC_IN_Q) == 0)
2682 xlog_ins_ticketq(&log->l_write_headq, tic); 2701 xlog_ins_ticketq(&log->l_write_headq, tic);
2702 spin_unlock(&log->l_grant_lock);
2703 xlog_grant_push_ail(log->l_mp, need_bytes);
2704 spin_lock(&log->l_grant_lock);
2705
2683 XFS_STATS_INC(xs_sleep_logspace); 2706 XFS_STATS_INC(xs_sleep_logspace);
2684 sv_wait(&tic->t_wait, PINOD|PLTWAIT, &log->l_grant_lock, s); 2707 sv_wait(&tic->t_wait, PINOD|PLTWAIT, &log->l_grant_lock, s);
2685 2708
2686 /* If we're shutting down, this tic is already off the queue */ 2709 /* If we're shutting down, this tic is already off the queue */
2687 if (XLOG_FORCED_SHUTDOWN(log)) { 2710 spin_lock(&log->l_grant_lock);
2688 spin_lock(&log->l_grant_lock); 2711 if (XLOG_FORCED_SHUTDOWN(log))
2689 goto error_return; 2712 goto error_return;
2690 }
2691 2713
2692 xlog_trace_loggrant(log, tic, 2714 xlog_trace_loggrant(log, tic,
2693 "xlog_regrant_write_log_space: wake 2"); 2715 "xlog_regrant_write_log_space: wake 2");
2694 xlog_grant_push_ail(log->l_mp, need_bytes);
2695 spin_lock(&log->l_grant_lock);
2696 goto redo; 2716 goto redo;
2697 } else if (tic->t_flags & XLOG_TIC_IN_Q) 2717 } else if (tic->t_flags & XLOG_TIC_IN_Q)
2698 xlog_del_ticketq(&log->l_write_headq, tic); 2718 xlog_del_ticketq(&log->l_write_headq, tic);
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
index 7af44adffc8f..d6a64392f983 100644
--- a/fs/xfs/xfs_mount.h
+++ b/fs/xfs/xfs_mount.h
@@ -313,7 +313,7 @@ typedef struct xfs_mount {
313#endif 313#endif
314 struct xfs_mru_cache *m_filestream; /* per-mount filestream data */ 314 struct xfs_mru_cache *m_filestream; /* per-mount filestream data */
315 struct task_struct *m_sync_task; /* generalised sync thread */ 315 struct task_struct *m_sync_task; /* generalised sync thread */
316 bhv_vfs_sync_work_t m_sync_work; /* work item for VFS_SYNC */ 316 xfs_sync_work_t m_sync_work; /* work item for VFS_SYNC */
317 struct list_head m_sync_list; /* sync thread work item list */ 317 struct list_head m_sync_list; /* sync thread work item list */
318 spinlock_t m_sync_lock; /* work item list lock */ 318 spinlock_t m_sync_lock; /* work item list lock */
319 int m_sync_seq; /* sync thread generation no. */ 319 int m_sync_seq; /* sync thread generation no. */
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
index 7394c7af5de5..19cf90a9c762 100644
--- a/fs/xfs/xfs_vnodeops.c
+++ b/fs/xfs/xfs_vnodeops.c
@@ -1457,6 +1457,13 @@ xfs_create(
1457 error = xfs_trans_reserve(tp, resblks, log_res, 0, 1457 error = xfs_trans_reserve(tp, resblks, log_res, 0,
1458 XFS_TRANS_PERM_LOG_RES, log_count); 1458 XFS_TRANS_PERM_LOG_RES, log_count);
1459 if (error == ENOSPC) { 1459 if (error == ENOSPC) {
1460 /* flush outstanding delalloc blocks and retry */
1461 xfs_flush_inodes(dp);
1462 error = xfs_trans_reserve(tp, resblks, XFS_CREATE_LOG_RES(mp), 0,
1463 XFS_TRANS_PERM_LOG_RES, XFS_CREATE_LOG_COUNT);
1464 }
1465 if (error == ENOSPC) {
1466 /* No space at all so try a "no-allocation" reservation */
1460 resblks = 0; 1467 resblks = 0;
1461 error = xfs_trans_reserve(tp, 0, log_res, 0, 1468 error = xfs_trans_reserve(tp, 0, log_res, 0,
1462 XFS_TRANS_PERM_LOG_RES, log_count); 1469 XFS_TRANS_PERM_LOG_RES, log_count);
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index a2228511d4be..c34b11022908 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -270,7 +270,6 @@ struct acpi_device {
270 struct list_head children; 270 struct list_head children;
271 struct list_head node; 271 struct list_head node;
272 struct list_head wakeup_list; 272 struct list_head wakeup_list;
273 struct list_head g_list;
274 struct acpi_device_status status; 273 struct acpi_device_status status;
275 struct acpi_device_flags flags; 274 struct acpi_device_flags flags;
276 struct acpi_device_pnp pnp; 275 struct acpi_device_pnp pnp;
diff --git a/include/acpi/processor.h b/include/acpi/processor.h
index b09c4fde9725..4927c063347c 100644
--- a/include/acpi/processor.h
+++ b/include/acpi/processor.h
@@ -84,7 +84,6 @@ struct acpi_processor_power {
84 struct acpi_processor_cx *state; 84 struct acpi_processor_cx *state;
85 unsigned long bm_check_timestamp; 85 unsigned long bm_check_timestamp;
86 u32 default_state; 86 u32 default_state;
87 u32 bm_activity;
88 int count; 87 int count;
89 struct acpi_processor_cx states[ACPI_PROCESSOR_MAX_POWER]; 88 struct acpi_processor_cx states[ACPI_PROCESSOR_MAX_POWER];
90 int timer_broadcast_on_state; 89 int timer_broadcast_on_state;
diff --git a/include/asm-arm/.gitignore b/include/asm-arm/.gitignore
deleted file mode 100644
index e02c15d158fc..000000000000
--- a/include/asm-arm/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
1arch
2mach-types.h
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index 37b82cb96c89..e727fe0d1451 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -88,7 +88,7 @@ extern void warn_slowpath(const char *file, const int line,
88 88
89#else /* !CONFIG_BUG */ 89#else /* !CONFIG_BUG */
90#ifndef HAVE_ARCH_BUG 90#ifndef HAVE_ARCH_BUG
91#define BUG() 91#define BUG() do {} while(0)
92#endif 92#endif
93 93
94#ifndef HAVE_ARCH_BUG_ON 94#ifndef HAVE_ARCH_BUG_ON
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
index 00f45ff081a6..d7d50d7ee51e 100644
--- a/include/asm-generic/percpu.h
+++ b/include/asm-generic/percpu.h
@@ -1,13 +1,9 @@
1#ifndef _ASM_GENERIC_PERCPU_H_ 1#ifndef _ASM_GENERIC_PERCPU_H_
2#define _ASM_GENERIC_PERCPU_H_ 2#define _ASM_GENERIC_PERCPU_H_
3
3#include <linux/compiler.h> 4#include <linux/compiler.h>
4#include <linux/threads.h> 5#include <linux/threads.h>
5 6#include <linux/percpu-defs.h>
6/*
7 * Determine the real variable name from the name visible in the
8 * kernel sources.
9 */
10#define per_cpu_var(var) per_cpu__##var
11 7
12#ifdef CONFIG_SMP 8#ifdef CONFIG_SMP
13 9
@@ -73,63 +69,32 @@ extern void setup_per_cpu_areas(void);
73 69
74#endif /* SMP */ 70#endif /* SMP */
75 71
76#ifndef PER_CPU_ATTRIBUTES 72#ifndef PER_CPU_BASE_SECTION
77#define PER_CPU_ATTRIBUTES 73#ifdef CONFIG_SMP
74#define PER_CPU_BASE_SECTION ".data.percpu"
75#else
76#define PER_CPU_BASE_SECTION ".data"
78#endif 77#endif
79
80#define DECLARE_PER_CPU(type, name) extern PER_CPU_ATTRIBUTES \
81 __typeof__(type) per_cpu_var(name)
82
83/*
84 * Optional methods for optimized non-lvalue per-cpu variable access.
85 *
86 * @var can be a percpu variable or a field of it and its size should
87 * equal char, int or long. percpu_read() evaluates to a lvalue and
88 * all others to void.
89 *
90 * These operations are guaranteed to be atomic w.r.t. preemption.
91 * The generic versions use plain get/put_cpu_var(). Archs are
92 * encouraged to implement single-instruction alternatives which don't
93 * require preemption protection.
94 */
95#ifndef percpu_read
96# define percpu_read(var) \
97 ({ \
98 typeof(per_cpu_var(var)) __tmp_var__; \
99 __tmp_var__ = get_cpu_var(var); \
100 put_cpu_var(var); \
101 __tmp_var__; \
102 })
103#endif 78#endif
104 79
105#define __percpu_generic_to_op(var, val, op) \ 80#ifdef CONFIG_SMP
106do { \
107 get_cpu_var(var) op val; \
108 put_cpu_var(var); \
109} while (0)
110
111#ifndef percpu_write
112# define percpu_write(var, val) __percpu_generic_to_op(var, (val), =)
113#endif
114 81
115#ifndef percpu_add 82#ifdef MODULE
116# define percpu_add(var, val) __percpu_generic_to_op(var, (val), +=) 83#define PER_CPU_SHARED_ALIGNED_SECTION ""
84#else
85#define PER_CPU_SHARED_ALIGNED_SECTION ".shared_aligned"
117#endif 86#endif
87#define PER_CPU_FIRST_SECTION ".first"
118 88
119#ifndef percpu_sub 89#else
120# define percpu_sub(var, val) __percpu_generic_to_op(var, (val), -=)
121#endif
122 90
123#ifndef percpu_and 91#define PER_CPU_SHARED_ALIGNED_SECTION ""
124# define percpu_and(var, val) __percpu_generic_to_op(var, (val), &=) 92#define PER_CPU_FIRST_SECTION ""
125#endif
126 93
127#ifndef percpu_or
128# define percpu_or(var, val) __percpu_generic_to_op(var, (val), |=)
129#endif 94#endif
130 95
131#ifndef percpu_xor 96#ifndef PER_CPU_ATTRIBUTES
132# define percpu_xor(var, val) __percpu_generic_to_op(var, (val), ^=) 97#define PER_CPU_ATTRIBUTES
133#endif 98#endif
134 99
135#endif /* _ASM_GENERIC_PERCPU_H_ */ 100#endif /* _ASM_GENERIC_PERCPU_H_ */
diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h
index 35752dadd6df..c840719a8c59 100644
--- a/include/asm-generic/siginfo.h
+++ b/include/asm-generic/siginfo.h
@@ -201,7 +201,7 @@ typedef struct siginfo {
201#define TRAP_TRACE (__SI_FAULT|2) /* process trace trap */ 201#define TRAP_TRACE (__SI_FAULT|2) /* process trace trap */
202#define TRAP_BRANCH (__SI_FAULT|3) /* process taken branch trap */ 202#define TRAP_BRANCH (__SI_FAULT|3) /* process taken branch trap */
203#define TRAP_HWBKPT (__SI_FAULT|4) /* hardware breakpoint/watchpoint */ 203#define TRAP_HWBKPT (__SI_FAULT|4) /* hardware breakpoint/watchpoint */
204#define NSIGTRAP 2 204#define NSIGTRAP 4
205 205
206/* 206/*
207 * SIGCHLD si_codes 207 * SIGCHLD si_codes
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 7fa660fd449c..eaa06ef6f7d9 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -1,3 +1,5 @@
1#include <linux/section-names.h>
2
1#ifndef LOAD_OFFSET 3#ifndef LOAD_OFFSET
2#define LOAD_OFFSET 0 4#define LOAD_OFFSET 0
3#endif 5#endif
@@ -331,7 +333,7 @@
331#endif 333#endif
332 334
333/* Section used for early init (in .S files) */ 335/* Section used for early init (in .S files) */
334#define HEAD_TEXT *(.head.text) 336#define HEAD_TEXT *(HEAD_TEXT_SECTION)
335 337
336/* init and exit section handling */ 338/* init and exit section handling */
337#define INIT_DATA \ 339#define INIT_DATA \
diff --git a/include/asm-mn10300/.gitignore b/include/asm-mn10300/.gitignore
deleted file mode 100644
index 0f87ba790e26..000000000000
--- a/include/asm-mn10300/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
1proc
2unit
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
index 2df74eb09563..9477af01a639 100644
--- a/include/drm/drm_pciids.h
+++ b/include/drm/drm_pciids.h
@@ -472,6 +472,7 @@
472 {0x8086, 0x2562, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 472 {0x8086, 0x2562, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
473 {0x8086, 0x3582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 473 {0x8086, 0x3582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
474 {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 474 {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
475 {0x8086, 0x358e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
475 {0, 0, 0} 476 {0, 0, 0}
476 477
477#define gamma_PCI_IDS \ 478#define gamma_PCI_IDS \
@@ -533,4 +534,5 @@
533 {0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ 534 {0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
534 {0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ 535 {0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
535 {0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ 536 {0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
537 {0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
536 {0, 0, 0} 538 {0, 0, 0}
diff --git a/include/drm/i915_drm.h b/include/drm/i915_drm.h
index 67e3353a56d6..95962fa8398a 100644
--- a/include/drm/i915_drm.h
+++ b/include/drm/i915_drm.h
@@ -594,6 +594,9 @@ struct drm_i915_gem_busy {
594#define I915_BIT_6_SWIZZLE_9_10_11 4 594#define I915_BIT_6_SWIZZLE_9_10_11 4
595/* Not seen by userland */ 595/* Not seen by userland */
596#define I915_BIT_6_SWIZZLE_UNKNOWN 5 596#define I915_BIT_6_SWIZZLE_UNKNOWN 5
597/* Seen by userland. */
598#define I915_BIT_6_SWIZZLE_9_17 6
599#define I915_BIT_6_SWIZZLE_9_10_17 7
597 600
598struct drm_i915_gem_set_tiling { 601struct drm_i915_gem_set_tiling {
599 /** Handle of the buffer to have its tiling state updated */ 602 /** Handle of the buffer to have its tiling state updated */
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 6586cbd0d4af..88be890ee3c7 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -111,6 +111,7 @@ int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base);
111int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base); 111int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base);
112void acpi_irq_stats_init(void); 112void acpi_irq_stats_init(void);
113extern u32 acpi_irq_handled; 113extern u32 acpi_irq_handled;
114extern u32 acpi_irq_not_handled;
114 115
115extern struct acpi_mcfg_allocation *pci_mmcfg_config; 116extern struct acpi_mcfg_allocation *pci_mmcfg_config;
116extern int pci_mmcfg_config_num; 117extern int pci_mmcfg_config_num;
diff --git a/include/linux/bio.h b/include/linux/bio.h
index b900d2c67d29..7b214fd672a2 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -132,6 +132,7 @@ struct bio {
132 * top 4 bits of bio flags indicate the pool this bio came from 132 * top 4 bits of bio flags indicate the pool this bio came from
133 */ 133 */
134#define BIO_POOL_BITS (4) 134#define BIO_POOL_BITS (4)
135#define BIO_POOL_NONE ((1UL << BIO_POOL_BITS) - 1)
135#define BIO_POOL_OFFSET (BITS_PER_LONG - BIO_POOL_BITS) 136#define BIO_POOL_OFFSET (BITS_PER_LONG - BIO_POOL_BITS)
136#define BIO_POOL_MASK (1UL << BIO_POOL_OFFSET) 137#define BIO_POOL_MASK (1UL << BIO_POOL_OFFSET)
137#define BIO_POOL_IDX(bio) ((bio)->bi_flags >> BIO_POOL_OFFSET) 138#define BIO_POOL_IDX(bio) ((bio)->bi_flags >> BIO_POOL_OFFSET)
@@ -504,6 +505,115 @@ static inline int bio_has_data(struct bio *bio)
504 return bio && bio->bi_io_vec != NULL; 505 return bio && bio->bi_io_vec != NULL;
505} 506}
506 507
508/*
509 * BIO list managment for use by remapping drivers (e.g. DM or MD).
510 *
511 * A bio_list anchors a singly-linked list of bios chained through the bi_next
512 * member of the bio. The bio_list also caches the last list member to allow
513 * fast access to the tail.
514 */
515struct bio_list {
516 struct bio *head;
517 struct bio *tail;
518};
519
520static inline int bio_list_empty(const struct bio_list *bl)
521{
522 return bl->head == NULL;
523}
524
525static inline void bio_list_init(struct bio_list *bl)
526{
527 bl->head = bl->tail = NULL;
528}
529
530#define bio_list_for_each(bio, bl) \
531 for (bio = (bl)->head; bio; bio = bio->bi_next)
532
533static inline unsigned bio_list_size(const struct bio_list *bl)
534{
535 unsigned sz = 0;
536 struct bio *bio;
537
538 bio_list_for_each(bio, bl)
539 sz++;
540
541 return sz;
542}
543
544static inline void bio_list_add(struct bio_list *bl, struct bio *bio)
545{
546 bio->bi_next = NULL;
547
548 if (bl->tail)
549 bl->tail->bi_next = bio;
550 else
551 bl->head = bio;
552
553 bl->tail = bio;
554}
555
556static inline void bio_list_add_head(struct bio_list *bl, struct bio *bio)
557{
558 bio->bi_next = bl->head;
559
560 bl->head = bio;
561
562 if (!bl->tail)
563 bl->tail = bio;
564}
565
566static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2)
567{
568 if (!bl2->head)
569 return;
570
571 if (bl->tail)
572 bl->tail->bi_next = bl2->head;
573 else
574 bl->head = bl2->head;
575
576 bl->tail = bl2->tail;
577}
578
579static inline void bio_list_merge_head(struct bio_list *bl,
580 struct bio_list *bl2)
581{
582 if (!bl2->head)
583 return;
584
585 if (bl->head)
586 bl2->tail->bi_next = bl->head;
587 else
588 bl->tail = bl2->tail;
589
590 bl->head = bl2->head;
591}
592
593static inline struct bio *bio_list_pop(struct bio_list *bl)
594{
595 struct bio *bio = bl->head;
596
597 if (bio) {
598 bl->head = bl->head->bi_next;
599 if (!bl->head)
600 bl->tail = NULL;
601
602 bio->bi_next = NULL;
603 }
604
605 return bio;
606}
607
608static inline struct bio *bio_list_get(struct bio_list *bl)
609{
610 struct bio *bio = bl->head;
611
612 bl->head = bl->tail = NULL;
613
614 return bio;
615}
616
507#if defined(CONFIG_BLK_DEV_INTEGRITY) 617#if defined(CONFIG_BLK_DEV_INTEGRITY)
508 618
509#define bip_vec_idx(bip, idx) (&(bip->bip_vec[(idx)])) 619#define bip_vec_idx(bip, idx) (&(bip->bip_vec[(idx)]))
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 61829139795a..c05a29cb9bb2 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -112,6 +112,25 @@ static inline unsigned fls_long(unsigned long l)
112 return fls64(l); 112 return fls64(l);
113} 113}
114 114
115/**
116 * __ffs64 - find first set bit in a 64 bit word
117 * @word: The 64 bit word
118 *
119 * On 64 bit arches this is a synomyn for __ffs
120 * The result is not defined if no bits are set, so check that @word
121 * is non-zero before calling this.
122 */
123static inline unsigned long __ffs64(u64 word)
124{
125#if BITS_PER_LONG == 32
126 if (((u32)word) == 0UL)
127 return __ffs((u32)(word >> 32)) + 32;
128#elif BITS_PER_LONG != 64
129#error BITS_PER_LONG not 32 or 64
130#endif
131 return __ffs((unsigned long)word);
132}
133
115#ifdef __KERNEL__ 134#ifdef __KERNEL__
116#ifdef CONFIG_GENERIC_FIND_FIRST_BIT 135#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
117 136
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index ba54c834a590..2755d5c6da22 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -118,6 +118,7 @@ enum rq_flag_bits {
118 __REQ_COPY_USER, /* contains copies of user pages */ 118 __REQ_COPY_USER, /* contains copies of user pages */
119 __REQ_INTEGRITY, /* integrity metadata has been remapped */ 119 __REQ_INTEGRITY, /* integrity metadata has been remapped */
120 __REQ_NOIDLE, /* Don't anticipate more IO after this one */ 120 __REQ_NOIDLE, /* Don't anticipate more IO after this one */
121 __REQ_IO_STAT, /* account I/O stat */
121 __REQ_NR_BITS, /* stops here */ 122 __REQ_NR_BITS, /* stops here */
122}; 123};
123 124
@@ -145,6 +146,7 @@ enum rq_flag_bits {
145#define REQ_COPY_USER (1 << __REQ_COPY_USER) 146#define REQ_COPY_USER (1 << __REQ_COPY_USER)
146#define REQ_INTEGRITY (1 << __REQ_INTEGRITY) 147#define REQ_INTEGRITY (1 << __REQ_INTEGRITY)
147#define REQ_NOIDLE (1 << __REQ_NOIDLE) 148#define REQ_NOIDLE (1 << __REQ_NOIDLE)
149#define REQ_IO_STAT (1 << __REQ_IO_STAT)
148 150
149#define BLK_MAX_CDB 16 151#define BLK_MAX_CDB 16
150 152
@@ -598,6 +600,7 @@ enum {
598 blk_failfast_transport(rq) || \ 600 blk_failfast_transport(rq) || \
599 blk_failfast_driver(rq)) 601 blk_failfast_driver(rq))
600#define blk_rq_started(rq) ((rq)->cmd_flags & REQ_STARTED) 602#define blk_rq_started(rq) ((rq)->cmd_flags & REQ_STARTED)
603#define blk_rq_io_stat(rq) ((rq)->cmd_flags & REQ_IO_STAT)
601 604
602#define blk_account_rq(rq) (blk_rq_started(rq) && (blk_fs_request(rq) || blk_discard_rq(rq))) 605#define blk_account_rq(rq) (blk_rq_started(rq) && (blk_fs_request(rq) || blk_discard_rq(rq)))
603 606
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index 7b73bb8f1970..16ed0284d780 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -155,6 +155,7 @@ void create_empty_buffers(struct page *, unsigned long,
155 unsigned long b_state); 155 unsigned long b_state);
156void end_buffer_read_sync(struct buffer_head *bh, int uptodate); 156void end_buffer_read_sync(struct buffer_head *bh, int uptodate);
157void end_buffer_write_sync(struct buffer_head *bh, int uptodate); 157void end_buffer_write_sync(struct buffer_head *bh, int uptodate);
158void end_buffer_async_write(struct buffer_head *bh, int uptodate);
158 159
159/* Things to do with buffers at mapping->private_list */ 160/* Things to do with buffers at mapping->private_list */
160void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode); 161void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode);
@@ -197,6 +198,8 @@ extern int buffer_heads_over_limit;
197void block_invalidatepage(struct page *page, unsigned long offset); 198void block_invalidatepage(struct page *page, unsigned long offset);
198int block_write_full_page(struct page *page, get_block_t *get_block, 199int block_write_full_page(struct page *page, get_block_t *get_block,
199 struct writeback_control *wbc); 200 struct writeback_control *wbc);
201int block_write_full_page_endio(struct page *page, get_block_t *get_block,
202 struct writeback_control *wbc, bh_end_io_t *handler);
200int block_read_full_page(struct page*, get_block_t*); 203int block_read_full_page(struct page*, get_block_t*);
201int block_is_partially_uptodate(struct page *page, read_descriptor_t *desc, 204int block_is_partially_uptodate(struct page *page, read_descriptor_t *desc,
202 unsigned long from); 205 unsigned long from);
diff --git a/include/linux/capability.h b/include/linux/capability.h
index 4864a43b2b45..c3021105edc0 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -377,7 +377,21 @@ struct cpu_vfs_cap_data {
377#define CAP_FOR_EACH_U32(__capi) \ 377#define CAP_FOR_EACH_U32(__capi) \
378 for (__capi = 0; __capi < _KERNEL_CAPABILITY_U32S; ++__capi) 378 for (__capi = 0; __capi < _KERNEL_CAPABILITY_U32S; ++__capi)
379 379
380/*
381 * CAP_FS_MASK and CAP_NFSD_MASKS:
382 *
383 * The fs mask is all the privileges that fsuid==0 historically meant.
384 * At one time in the past, that included CAP_MKNOD and CAP_LINUX_IMMUTABLE.
385 *
386 * It has never meant setting security.* and trusted.* xattrs.
387 *
388 * We could also define fsmask as follows:
389 * 1. CAP_FS_MASK is the privilege to bypass all fs-related DAC permissions
390 * 2. The security.* and trusted.* xattrs are fs-related MAC permissions
391 */
392
380# define CAP_FS_MASK_B0 (CAP_TO_MASK(CAP_CHOWN) \ 393# define CAP_FS_MASK_B0 (CAP_TO_MASK(CAP_CHOWN) \
394 | CAP_TO_MASK(CAP_MKNOD) \
381 | CAP_TO_MASK(CAP_DAC_OVERRIDE) \ 395 | CAP_TO_MASK(CAP_DAC_OVERRIDE) \
382 | CAP_TO_MASK(CAP_DAC_READ_SEARCH) \ 396 | CAP_TO_MASK(CAP_DAC_READ_SEARCH) \
383 | CAP_TO_MASK(CAP_FOWNER) \ 397 | CAP_TO_MASK(CAP_FOWNER) \
@@ -392,11 +406,12 @@ struct cpu_vfs_cap_data {
392# define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }}) 406# define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }})
393# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }}) 407# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }})
394# define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }}) 408# define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }})
395# define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0, CAP_FS_MASK_B1 } }) 409# define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
410 | CAP_TO_MASK(CAP_LINUX_IMMUTABLE), \
411 CAP_FS_MASK_B1 } })
396# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \ 412# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
397 | CAP_TO_MASK(CAP_SYS_RESOURCE) \ 413 | CAP_TO_MASK(CAP_SYS_RESOURCE), \
398 | CAP_TO_MASK(CAP_MKNOD), \ 414 CAP_FS_MASK_B1 } })
399 CAP_FS_MASK_B1 } })
400 415
401#endif /* _KERNEL_CAPABILITY_U32S != 2 */ 416#endif /* _KERNEL_CAPABILITY_U32S != 2 */
402 417
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
index 573819ef4cc0..5a40d14daa9f 100644
--- a/include/linux/clocksource.h
+++ b/include/linux/clocksource.h
@@ -143,7 +143,9 @@ extern u64 timecounter_cyc2time(struct timecounter *tc,
143 * 400-499: Perfect 143 * 400-499: Perfect
144 * The ideal clocksource. A must-use where 144 * The ideal clocksource. A must-use where
145 * available. 145 * available.
146 * @read: returns a cycle value 146 * @read: returns a cycle value, passes clocksource as argument
147 * @enable: optional function to enable the clocksource
148 * @disable: optional function to disable the clocksource
147 * @mask: bitmask for two's complement 149 * @mask: bitmask for two's complement
148 * subtraction of non 64 bit counters 150 * subtraction of non 64 bit counters
149 * @mult: cycle to nanosecond multiplier (adjusted by NTP) 151 * @mult: cycle to nanosecond multiplier (adjusted by NTP)
@@ -162,7 +164,9 @@ struct clocksource {
162 char *name; 164 char *name;
163 struct list_head list; 165 struct list_head list;
164 int rating; 166 int rating;
165 cycle_t (*read)(void); 167 cycle_t (*read)(struct clocksource *cs);
168 int (*enable)(struct clocksource *cs);
169 void (*disable)(struct clocksource *cs);
166 cycle_t mask; 170 cycle_t mask;
167 u32 mult; 171 u32 mult;
168 u32 mult_orig; 172 u32 mult_orig;
@@ -271,7 +275,34 @@ static inline u32 clocksource_hz2mult(u32 hz, u32 shift_constant)
271 */ 275 */
272static inline cycle_t clocksource_read(struct clocksource *cs) 276static inline cycle_t clocksource_read(struct clocksource *cs)
273{ 277{
274 return cs->read(); 278 return cs->read(cs);
279}
280
281/**
282 * clocksource_enable: - enable clocksource
283 * @cs: pointer to clocksource
284 *
285 * Enables the specified clocksource. The clocksource callback
286 * function should start up the hardware and setup mult and field
287 * members of struct clocksource to reflect hardware capabilities.
288 */
289static inline int clocksource_enable(struct clocksource *cs)
290{
291 return cs->enable ? cs->enable(cs) : 0;
292}
293
294/**
295 * clocksource_disable: - disable clocksource
296 * @cs: pointer to clocksource
297 *
298 * Disables the specified clocksource. The clocksource callback
299 * function should power down the now unused hardware block to
300 * save power.
301 */
302static inline void clocksource_disable(struct clocksource *cs)
303{
304 if (cs->disable)
305 cs->disable(cs);
275} 306}
276 307
277/** 308/**
diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h
index 096476f1fb35..29b3ce3f2a1d 100644
--- a/include/linux/debug_locks.h
+++ b/include/linux/debug_locks.h
@@ -2,12 +2,20 @@
2#define __LINUX_DEBUG_LOCKING_H 2#define __LINUX_DEBUG_LOCKING_H
3 3
4#include <linux/kernel.h> 4#include <linux/kernel.h>
5#include <asm/atomic.h>
6#include <asm/system.h>
5 7
6struct task_struct; 8struct task_struct;
7 9
8extern int debug_locks; 10extern int debug_locks;
9extern int debug_locks_silent; 11extern int debug_locks_silent;
10 12
13
14static inline int __debug_locks_off(void)
15{
16 return xchg(&debug_locks, 0);
17}
18
11/* 19/*
12 * Generic 'turn off all lock debugging' function: 20 * Generic 'turn off all lock debugging' function:
13 */ 21 */
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h
index 66ec05a57955..ded2d7c42668 100644
--- a/include/linux/device-mapper.h
+++ b/include/linux/device-mapper.h
@@ -116,7 +116,6 @@ void dm_put_device(struct dm_target *ti, struct dm_dev *d);
116/* 116/*
117 * Target features 117 * Target features
118 */ 118 */
119#define DM_TARGET_SUPPORTS_BARRIERS 0x00000001
120 119
121struct target_type { 120struct target_type {
122 uint64_t features; 121 uint64_t features;
diff --git a/include/linux/device.h b/include/linux/device.h
index 2918c0e8fdfd..6a69caaac18a 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -551,6 +551,7 @@ extern int (*platform_notify_remove)(struct device *dev);
551extern struct device *get_device(struct device *dev); 551extern struct device *get_device(struct device *dev);
552extern void put_device(struct device *dev); 552extern void put_device(struct device *dev);
553 553
554extern void wait_for_device_probe(void);
554 555
555/* drivers/base/power/shutdown.c */ 556/* drivers/base/power/shutdown.c */
556extern void device_shutdown(void); 557extern void device_shutdown(void);
diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
index baabf33be244..a0d9422a1569 100644
--- a/include/linux/dynamic_debug.h
+++ b/include/linux/dynamic_debug.h
@@ -70,7 +70,7 @@ extern int ddebug_remove_module(char *mod_name);
70 DEBUG_HASH2, __LINE__, _DPRINTK_FLAGS_DEFAULT }; \ 70 DEBUG_HASH2, __LINE__, _DPRINTK_FLAGS_DEFAULT }; \
71 if (__dynamic_dbg_enabled(descriptor)) \ 71 if (__dynamic_dbg_enabled(descriptor)) \
72 dev_printk(KERN_DEBUG, dev, \ 72 dev_printk(KERN_DEBUG, dev, \
73 KBUILD_MODNAME ": " pr_fmt(fmt),\ 73 KBUILD_MODNAME ": " fmt, \
74 ##__VA_ARGS__); \ 74 ##__VA_ARGS__); \
75 } while (0) 75 } while (0)
76 76
diff --git a/include/linux/fb.h b/include/linux/fb.h
index f563c5013932..330c4b1bfcaa 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -173,8 +173,12 @@ struct fb_fix_screeninfo {
173/* Interpretation of offset for color fields: All offsets are from the right, 173/* Interpretation of offset for color fields: All offsets are from the right,
174 * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you 174 * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you
175 * can use the offset as right argument to <<). A pixel afterwards is a bit 175 * can use the offset as right argument to <<). A pixel afterwards is a bit
176 * stream and is written to video memory as that unmodified. This implies 176 * stream and is written to video memory as that unmodified.
177 * big-endian byte order if bits_per_pixel is greater than 8. 177 *
178 * For pseudocolor: offset and length should be the same for all color
179 * components. Offset specifies the position of the least significant bit
180 * of the pallette index in a pixel value. Length indicates the number
181 * of available palette entries (i.e. # of entries = 1 << length).
178 */ 182 */
179struct fb_bitfield { 183struct fb_bitfield {
180 __u32 offset; /* beginning of bitfield */ 184 __u32 offset; /* beginning of bitfield */
diff --git a/include/linux/fiemap.h b/include/linux/fiemap.h
index 671decbd2aeb..934e22d65801 100644
--- a/include/linux/fiemap.h
+++ b/include/linux/fiemap.h
@@ -11,6 +11,8 @@
11#ifndef _LINUX_FIEMAP_H 11#ifndef _LINUX_FIEMAP_H
12#define _LINUX_FIEMAP_H 12#define _LINUX_FIEMAP_H
13 13
14#include <linux/types.h>
15
14struct fiemap_extent { 16struct fiemap_extent {
15 __u64 fe_logical; /* logical offset in bytes for the start of 17 __u64 fe_logical; /* logical offset in bytes for the start of
16 * the extent from the beginning of the file */ 18 * the extent from the beginning of the file */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 562d2855cf30..5bed436f4353 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -87,6 +87,60 @@ struct inodes_stat_t {
87 */ 87 */
88#define FMODE_NOCMTIME ((__force fmode_t)2048) 88#define FMODE_NOCMTIME ((__force fmode_t)2048)
89 89
90/*
91 * The below are the various read and write types that we support. Some of
92 * them include behavioral modifiers that send information down to the
93 * block layer and IO scheduler. Terminology:
94 *
95 * The block layer uses device plugging to defer IO a little bit, in
96 * the hope that we will see more IO very shortly. This increases
97 * coalescing of adjacent IO and thus reduces the number of IOs we
98 * have to send to the device. It also allows for better queuing,
99 * if the IO isn't mergeable. If the caller is going to be waiting
100 * for the IO, then he must ensure that the device is unplugged so
101 * that the IO is dispatched to the driver.
102 *
103 * All IO is handled async in Linux. This is fine for background
104 * writes, but for reads or writes that someone waits for completion
105 * on, we want to notify the block layer and IO scheduler so that they
106 * know about it. That allows them to make better scheduling
107 * decisions. So when the below references 'sync' and 'async', it
108 * is referencing this priority hint.
109 *
110 * With that in mind, the available types are:
111 *
112 * READ A normal read operation. Device will be plugged.
113 * READ_SYNC A synchronous read. Device is not plugged, caller can
114 * immediately wait on this read without caring about
115 * unplugging.
116 * READA Used for read-ahead operations. Lower priority, and the
117 * block layer could (in theory) choose to ignore this
118 * request if it runs into resource problems.
119 * WRITE A normal async write. Device will be plugged.
120 * SWRITE Like WRITE, but a special case for ll_rw_block() that
121 * tells it to lock the buffer first. Normally a buffer
122 * must be locked before doing IO.
123 * WRITE_SYNC_PLUG Synchronous write. Identical to WRITE, but passes down
124 * the hint that someone will be waiting on this IO
125 * shortly. The device must still be unplugged explicitly,
126 * WRITE_SYNC_PLUG does not do this as we could be
127 * submitting more writes before we actually wait on any
128 * of them.
129 * WRITE_SYNC Like WRITE_SYNC_PLUG, but also unplugs the device
130 * immediately after submission. The write equivalent
131 * of READ_SYNC.
132 * WRITE_ODIRECT Special case write for O_DIRECT only.
133 * SWRITE_SYNC
134 * SWRITE_SYNC_PLUG Like WRITE_SYNC/WRITE_SYNC_PLUG, but locks the buffer.
135 * See SWRITE.
136 * WRITE_BARRIER Like WRITE, but tells the block layer that all
137 * previously submitted writes must be safely on storage
138 * before this one is started. Also guarantees that when
139 * this write is complete, it itself is also safely on
140 * storage. Prevents reordering of writes on both sides
141 * of this IO.
142 *
143 */
90#define RW_MASK 1 144#define RW_MASK 1
91#define RWA_MASK 2 145#define RWA_MASK 2
92#define READ 0 146#define READ 0
@@ -102,6 +156,11 @@ struct inodes_stat_t {
102 (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) 156 (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE))
103#define SWRITE_SYNC (SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) 157#define SWRITE_SYNC (SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG))
104#define WRITE_BARRIER (WRITE | (1 << BIO_RW_BARRIER)) 158#define WRITE_BARRIER (WRITE | (1 << BIO_RW_BARRIER))
159
160/*
161 * These aren't really reads or writes, they pass down information about
162 * parts of device that are now unused by the file system.
163 */
105#define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD) 164#define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD)
106#define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER)) 165#define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER))
107 166
@@ -738,9 +797,6 @@ enum inode_i_mutex_lock_class
738 I_MUTEX_QUOTA 797 I_MUTEX_QUOTA
739}; 798};
740 799
741extern void inode_double_lock(struct inode *inode1, struct inode *inode2);
742extern void inode_double_unlock(struct inode *inode1, struct inode *inode2);
743
744/* 800/*
745 * NOTE: in a 32bit arch with a preemptable kernel and 801 * NOTE: in a 32bit arch with a preemptable kernel and
746 * an UP compile the i_size_read/write must be atomic 802 * an UP compile the i_size_read/write must be atomic
@@ -2150,8 +2206,6 @@ extern ssize_t generic_file_splice_read(struct file *, loff_t *,
2150 struct pipe_inode_info *, size_t, unsigned int); 2206 struct pipe_inode_info *, size_t, unsigned int);
2151extern ssize_t generic_file_splice_write(struct pipe_inode_info *, 2207extern ssize_t generic_file_splice_write(struct pipe_inode_info *,
2152 struct file *, loff_t *, size_t, unsigned int); 2208 struct file *, loff_t *, size_t, unsigned int);
2153extern ssize_t generic_file_splice_write_nolock(struct pipe_inode_info *,
2154 struct file *, loff_t *, size_t, unsigned int);
2155extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, 2209extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
2156 struct file *out, loff_t *, size_t len, unsigned int flags); 2210 struct file *out, loff_t *, size_t len, unsigned int flags);
2157extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, 2211extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
@@ -2245,9 +2299,8 @@ extern int vfs_readdir(struct file *, filldir_t, void *);
2245 2299
2246extern int vfs_stat(char __user *, struct kstat *); 2300extern int vfs_stat(char __user *, struct kstat *);
2247extern int vfs_lstat(char __user *, struct kstat *); 2301extern int vfs_lstat(char __user *, struct kstat *);
2248extern int vfs_stat_fd(int dfd, char __user *, struct kstat *);
2249extern int vfs_lstat_fd(int dfd, char __user *, struct kstat *);
2250extern int vfs_fstat(unsigned int, struct kstat *); 2302extern int vfs_fstat(unsigned int, struct kstat *);
2303extern int vfs_fstatat(int , char __user *, struct kstat *, int);
2251 2304
2252extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd, 2305extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
2253 unsigned long arg); 2306 unsigned long arg);
@@ -2395,7 +2448,7 @@ struct ctl_table;
2395int proc_nr_files(struct ctl_table *table, int write, struct file *filp, 2448int proc_nr_files(struct ctl_table *table, int write, struct file *filp,
2396 void __user *buffer, size_t *lenp, loff_t *ppos); 2449 void __user *buffer, size_t *lenp, loff_t *ppos);
2397 2450
2398int get_filesystem_list(char * buf); 2451int __init get_filesystem_list(char *buf);
2399 2452
2400#endif /* __KERNEL__ */ 2453#endif /* __KERNEL__ */
2401#endif /* _LINUX_FS_H */ 2454#endif /* _LINUX_FS_H */
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
index f2a78b5e8b55..244677cc082b 100644
--- a/include/linux/fsl_devices.h
+++ b/include/linux/fsl_devices.h
@@ -43,10 +43,6 @@
43 * 43 *
44 */ 44 */
45 45
46/* Flags related to I2C device features */
47#define FSL_I2C_DEV_SEPARATE_DFSRR 0x00000001
48#define FSL_I2C_DEV_CLOCK_5200 0x00000002
49
50enum fsl_usb2_operating_modes { 46enum fsl_usb2_operating_modes {
51 FSL_USB2_MPH_HOST, 47 FSL_USB2_MPH_HOST,
52 FSL_USB2_DR_HOST, 48 FSL_USB2_DR_HOST,
@@ -83,6 +79,10 @@ struct fsl_spi_platform_data {
83 u16 max_chipselect; 79 u16 max_chipselect;
84 void (*cs_control)(struct spi_device *spi, bool on); 80 void (*cs_control)(struct spi_device *spi, bool on);
85 u32 sysclk; 81 u32 sysclk;
82
83 /* Legacy hooks, used by mpc52xx_psc_spi driver. */
84 void (*activate_cs)(u8 cs, u8 polarity);
85 void (*deactivate_cs)(u8 cs, u8 polarity);
86}; 86};
87 87
88struct mpc8xx_pcmcia_ops { 88struct mpc8xx_pcmcia_ops {
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index da5405dce347..8a0c2f221e6b 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -357,7 +357,7 @@ struct ftrace_graph_ret {
357#ifdef CONFIG_FUNCTION_GRAPH_TRACER 357#ifdef CONFIG_FUNCTION_GRAPH_TRACER
358 358
359/* for init task */ 359/* for init task */
360#define INIT_FTRACE_GRAPH .ret_stack = NULL 360#define INIT_FTRACE_GRAPH .ret_stack = NULL,
361 361
362/* 362/*
363 * Stack of return addresses for functions 363 * Stack of return addresses for functions
@@ -511,33 +511,4 @@ static inline void trace_hw_branch_oops(void) {}
511 511
512#endif /* CONFIG_HW_BRANCH_TRACER */ 512#endif /* CONFIG_HW_BRANCH_TRACER */
513 513
514/*
515 * A syscall entry in the ftrace syscalls array.
516 *
517 * @name: name of the syscall
518 * @nb_args: number of parameters it takes
519 * @types: list of types as strings
520 * @args: list of args as strings (args[i] matches types[i])
521 */
522struct syscall_metadata {
523 const char *name;
524 int nb_args;
525 const char **types;
526 const char **args;
527};
528
529#ifdef CONFIG_FTRACE_SYSCALLS
530extern void arch_init_ftrace_syscalls(void);
531extern struct syscall_metadata *syscall_nr_to_meta(int nr);
532extern void start_ftrace_syscalls(void);
533extern void stop_ftrace_syscalls(void);
534extern void ftrace_syscall_enter(struct pt_regs *regs);
535extern void ftrace_syscall_exit(struct pt_regs *regs);
536#else
537static inline void start_ftrace_syscalls(void) { }
538static inline void stop_ftrace_syscalls(void) { }
539static inline void ftrace_syscall_enter(struct pt_regs *regs) { }
540static inline void ftrace_syscall_exit(struct pt_regs *regs) { }
541#endif
542
543#endif /* _LINUX_FTRACE_H */ 514#endif /* _LINUX_FTRACE_H */
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 634c53028fb8..a1a28caed23d 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -214,6 +214,7 @@ static inline void disk_put_part(struct hd_struct *part)
214#define DISK_PITER_REVERSE (1 << 0) /* iterate in the reverse direction */ 214#define DISK_PITER_REVERSE (1 << 0) /* iterate in the reverse direction */
215#define DISK_PITER_INCL_EMPTY (1 << 1) /* include 0-sized parts */ 215#define DISK_PITER_INCL_EMPTY (1 << 1) /* include 0-sized parts */
216#define DISK_PITER_INCL_PART0 (1 << 2) /* include partition 0 */ 216#define DISK_PITER_INCL_PART0 (1 << 2) /* include partition 0 */
217#define DISK_PITER_INCL_EMPTY_PART0 (1 << 3) /* include empty partition 0 */
217 218
218struct disk_part_iter { 219struct disk_part_iter {
219 struct gendisk *disk; 220 struct gendisk *disk;
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 00ee11eb9092..ad2580596033 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -274,7 +274,7 @@ struct i2c_board_info {
274 * are provided using conventional syntax. 274 * are provided using conventional syntax.
275 */ 275 */
276#define I2C_BOARD_INFO(dev_type, dev_addr) \ 276#define I2C_BOARD_INFO(dev_type, dev_addr) \
277 .type = (dev_type), .addr = (dev_addr) 277 .type = dev_type, .addr = (dev_addr)
278 278
279 279
280/* Add-on boards should register/unregister their devices; e.g. a board 280/* Add-on boards should register/unregister their devices; e.g. a board
diff --git a/include/linux/ide.h b/include/linux/ide.h
index a5d26f66ef78..ff65fffb078f 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -240,65 +240,38 @@ typedef enum {
240} ide_startstop_t; 240} ide_startstop_t;
241 241
242enum { 242enum {
243 IDE_VALID_ERROR = (1 << 1),
244 IDE_VALID_FEATURE = IDE_VALID_ERROR,
245 IDE_VALID_NSECT = (1 << 2),
246 IDE_VALID_LBAL = (1 << 3),
247 IDE_VALID_LBAM = (1 << 4),
248 IDE_VALID_LBAH = (1 << 5),
249 IDE_VALID_DEVICE = (1 << 6),
250 IDE_VALID_LBA = IDE_VALID_LBAL |
251 IDE_VALID_LBAM |
252 IDE_VALID_LBAH,
253 IDE_VALID_OUT_TF = IDE_VALID_FEATURE |
254 IDE_VALID_NSECT |
255 IDE_VALID_LBA,
256 IDE_VALID_IN_TF = IDE_VALID_NSECT |
257 IDE_VALID_LBA,
258 IDE_VALID_OUT_HOB = IDE_VALID_OUT_TF,
259 IDE_VALID_IN_HOB = IDE_VALID_ERROR |
260 IDE_VALID_NSECT |
261 IDE_VALID_LBA,
262};
263
264enum {
243 IDE_TFLAG_LBA48 = (1 << 0), 265 IDE_TFLAG_LBA48 = (1 << 0),
244 IDE_TFLAG_OUT_HOB_FEATURE = (1 << 1), 266 IDE_TFLAG_WRITE = (1 << 1),
245 IDE_TFLAG_OUT_HOB_NSECT = (1 << 2), 267 IDE_TFLAG_CUSTOM_HANDLER = (1 << 2),
246 IDE_TFLAG_OUT_HOB_LBAL = (1 << 3), 268 IDE_TFLAG_DMA_PIO_FALLBACK = (1 << 3),
247 IDE_TFLAG_OUT_HOB_LBAM = (1 << 4),
248 IDE_TFLAG_OUT_HOB_LBAH = (1 << 5),
249 IDE_TFLAG_OUT_HOB = IDE_TFLAG_OUT_HOB_FEATURE |
250 IDE_TFLAG_OUT_HOB_NSECT |
251 IDE_TFLAG_OUT_HOB_LBAL |
252 IDE_TFLAG_OUT_HOB_LBAM |
253 IDE_TFLAG_OUT_HOB_LBAH,
254 IDE_TFLAG_OUT_FEATURE = (1 << 6),
255 IDE_TFLAG_OUT_NSECT = (1 << 7),
256 IDE_TFLAG_OUT_LBAL = (1 << 8),
257 IDE_TFLAG_OUT_LBAM = (1 << 9),
258 IDE_TFLAG_OUT_LBAH = (1 << 10),
259 IDE_TFLAG_OUT_TF = IDE_TFLAG_OUT_FEATURE |
260 IDE_TFLAG_OUT_NSECT |
261 IDE_TFLAG_OUT_LBAL |
262 IDE_TFLAG_OUT_LBAM |
263 IDE_TFLAG_OUT_LBAH,
264 IDE_TFLAG_OUT_DEVICE = (1 << 11),
265 IDE_TFLAG_WRITE = (1 << 12),
266 IDE_TFLAG_CUSTOM_HANDLER = (1 << 13),
267 IDE_TFLAG_DMA_PIO_FALLBACK = (1 << 14),
268 IDE_TFLAG_IN_HOB_ERROR = (1 << 15),
269 IDE_TFLAG_IN_HOB_NSECT = (1 << 16),
270 IDE_TFLAG_IN_HOB_LBAL = (1 << 17),
271 IDE_TFLAG_IN_HOB_LBAM = (1 << 18),
272 IDE_TFLAG_IN_HOB_LBAH = (1 << 19),
273 IDE_TFLAG_IN_HOB_LBA = IDE_TFLAG_IN_HOB_LBAL |
274 IDE_TFLAG_IN_HOB_LBAM |
275 IDE_TFLAG_IN_HOB_LBAH,
276 IDE_TFLAG_IN_HOB = IDE_TFLAG_IN_HOB_ERROR |
277 IDE_TFLAG_IN_HOB_NSECT |
278 IDE_TFLAG_IN_HOB_LBA,
279 IDE_TFLAG_IN_ERROR = (1 << 20),
280 IDE_TFLAG_IN_NSECT = (1 << 21),
281 IDE_TFLAG_IN_LBAL = (1 << 22),
282 IDE_TFLAG_IN_LBAM = (1 << 23),
283 IDE_TFLAG_IN_LBAH = (1 << 24),
284 IDE_TFLAG_IN_LBA = IDE_TFLAG_IN_LBAL |
285 IDE_TFLAG_IN_LBAM |
286 IDE_TFLAG_IN_LBAH,
287 IDE_TFLAG_IN_TF = IDE_TFLAG_IN_NSECT |
288 IDE_TFLAG_IN_LBA,
289 IDE_TFLAG_IN_DEVICE = (1 << 25),
290 IDE_TFLAG_HOB = IDE_TFLAG_OUT_HOB |
291 IDE_TFLAG_IN_HOB,
292 IDE_TFLAG_TF = IDE_TFLAG_OUT_TF |
293 IDE_TFLAG_IN_TF,
294 IDE_TFLAG_DEVICE = IDE_TFLAG_OUT_DEVICE |
295 IDE_TFLAG_IN_DEVICE,
296 /* force 16-bit I/O operations */ 269 /* force 16-bit I/O operations */
297 IDE_TFLAG_IO_16BIT = (1 << 26), 270 IDE_TFLAG_IO_16BIT = (1 << 4),
298 /* struct ide_cmd was allocated using kmalloc() */ 271 /* struct ide_cmd was allocated using kmalloc() */
299 IDE_TFLAG_DYN = (1 << 27), 272 IDE_TFLAG_DYN = (1 << 5),
300 IDE_TFLAG_FS = (1 << 28), 273 IDE_TFLAG_FS = (1 << 6),
301 IDE_TFLAG_MULTI_PIO = (1 << 29), 274 IDE_TFLAG_MULTI_PIO = (1 << 7),
302}; 275};
303 276
304enum { 277enum {
@@ -309,45 +282,34 @@ enum {
309}; 282};
310 283
311struct ide_taskfile { 284struct ide_taskfile {
312 u8 hob_data; /* 0: high data byte (for TASKFILE IOCTL) */ 285 u8 data; /* 0: data byte (for TASKFILE ioctl) */
313 /* 1-5: additional data to support LBA48 */ 286 union { /* 1: */
314 union { 287 u8 error; /* read: error */
315 u8 hob_error; /* read: error */ 288 u8 feature; /* write: feature */
316 u8 hob_feature; /* write: feature */
317 };
318
319 u8 hob_nsect;
320 u8 hob_lbal;
321 u8 hob_lbam;
322 u8 hob_lbah;
323
324 u8 data; /* 6: low data byte (for TASKFILE IOCTL) */
325
326 union { /*  7: */
327 u8 error; /* read: error */
328 u8 feature; /* write: feature */
329 }; 289 };
330 290 u8 nsect; /* 2: number of sectors */
331 u8 nsect; /* 8: number of sectors */ 291 u8 lbal; /* 3: LBA low */
332 u8 lbal; /* 9: LBA low */ 292 u8 lbam; /* 4: LBA mid */
333 u8 lbam; /* 10: LBA mid */ 293 u8 lbah; /* 5: LBA high */
334 u8 lbah; /* 11: LBA high */ 294 u8 device; /* 6: device select */
335 295 union { /* 7: */
336 u8 device; /* 12: device select */ 296 u8 status; /* read: status */
337
338 union { /* 13: */
339 u8 status; /*  read: status  */
340 u8 command; /* write: command */ 297 u8 command; /* write: command */
341 }; 298 };
342}; 299};
343 300
344struct ide_cmd { 301struct ide_cmd {
345 union { 302 struct ide_taskfile tf;
346 struct ide_taskfile tf; 303 struct ide_taskfile hob;
347 u8 tf_array[14]; 304 struct {
348 }; 305 struct {
306 u8 tf;
307 u8 hob;
308 } out, in;
309 } valid;
310
311 u8 tf_flags;
349 u8 ftf_flags; /* for TASKFILE ioctl */ 312 u8 ftf_flags; /* for TASKFILE ioctl */
350 u32 tf_flags;
351 int protocol; 313 int protocol;
352 314
353 int sg_nents; /* number of sg entries */ 315 int sg_nents; /* number of sg entries */
@@ -662,8 +624,8 @@ struct ide_tp_ops {
662 void (*write_devctl)(struct hwif_s *, u8); 624 void (*write_devctl)(struct hwif_s *, u8);
663 625
664 void (*dev_select)(ide_drive_t *); 626 void (*dev_select)(ide_drive_t *);
665 void (*tf_load)(ide_drive_t *, struct ide_cmd *); 627 void (*tf_load)(ide_drive_t *, struct ide_taskfile *, u8);
666 void (*tf_read)(ide_drive_t *, struct ide_cmd *); 628 void (*tf_read)(ide_drive_t *, struct ide_taskfile *, u8);
667 629
668 void (*input_data)(ide_drive_t *, struct ide_cmd *, 630 void (*input_data)(ide_drive_t *, struct ide_cmd *,
669 void *, unsigned int); 631 void *, unsigned int);
@@ -1162,7 +1124,8 @@ extern int ide_devset_execute(ide_drive_t *drive,
1162void ide_complete_cmd(ide_drive_t *, struct ide_cmd *, u8, u8); 1124void ide_complete_cmd(ide_drive_t *, struct ide_cmd *, u8, u8);
1163int ide_complete_rq(ide_drive_t *, int, unsigned int); 1125int ide_complete_rq(ide_drive_t *, int, unsigned int);
1164 1126
1165void ide_tf_dump(const char *, struct ide_taskfile *); 1127void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd);
1128void ide_tf_dump(const char *, struct ide_cmd *);
1166 1129
1167void ide_exec_command(ide_hwif_t *, u8); 1130void ide_exec_command(ide_hwif_t *, u8);
1168u8 ide_read_status(ide_hwif_t *); 1131u8 ide_read_status(ide_hwif_t *);
@@ -1170,8 +1133,8 @@ u8 ide_read_altstatus(ide_hwif_t *);
1170void ide_write_devctl(ide_hwif_t *, u8); 1133void ide_write_devctl(ide_hwif_t *, u8);
1171 1134
1172void ide_dev_select(ide_drive_t *); 1135void ide_dev_select(ide_drive_t *);
1173void ide_tf_load(ide_drive_t *, struct ide_cmd *); 1136void ide_tf_load(ide_drive_t *, struct ide_taskfile *, u8);
1174void ide_tf_read(ide_drive_t *, struct ide_cmd *); 1137void ide_tf_read(ide_drive_t *, struct ide_taskfile *, u8);
1175 1138
1176void ide_input_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int); 1139void ide_input_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
1177void ide_output_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int); 1140void ide_output_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
@@ -1529,7 +1492,7 @@ static inline void ide_set_hwifdata (ide_hwif_t * hwif, void *data)
1529 1492
1530extern void ide_toggle_bounce(ide_drive_t *drive, int on); 1493extern void ide_toggle_bounce(ide_drive_t *drive, int on);
1531 1494
1532u64 ide_get_lba_addr(struct ide_taskfile *, int); 1495u64 ide_get_lba_addr(struct ide_cmd *, int);
1533u8 ide_dump_status(ide_drive_t *, const char *, u8); 1496u8 ide_dump_status(ide_drive_t *, const char *, u8);
1534 1497
1535struct ide_timing { 1498struct ide_timing {
diff --git a/include/linux/init.h b/include/linux/init.h
index 68cb0265d009..20a1334e34e9 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -2,6 +2,8 @@
2#define _LINUX_INIT_H 2#define _LINUX_INIT_H
3 3
4#include <linux/compiler.h> 4#include <linux/compiler.h>
5#include <linux/section-names.h>
6#include <linux/stringify.h>
5 7
6/* These macros are used to mark some functions or 8/* These macros are used to mark some functions or
7 * initialized data (doesn't apply to uninitialized data) 9 * initialized data (doesn't apply to uninitialized data)
@@ -107,7 +109,7 @@
107#define __memexitconst __section(.memexit.rodata) 109#define __memexitconst __section(.memexit.rodata)
108 110
109/* For assembly routines */ 111/* For assembly routines */
110#define __HEAD .section ".head.text","ax" 112#define __HEAD .section __stringify(HEAD_TEXT_SECTION),"ax"
111#define __INIT .section ".init.text","ax" 113#define __INIT .section ".init.text","ax"
112#define __FINIT .previous 114#define __FINIT .previous
113 115
@@ -247,6 +249,7 @@ struct obs_kernel_param {
247 249
248/* Relies on boot_command_line being set */ 250/* Relies on boot_command_line being set */
249void __init parse_early_param(void); 251void __init parse_early_param(void);
252void __init parse_early_options(char *cmdline);
250#endif /* __ASSEMBLY__ */ 253#endif /* __ASSEMBLY__ */
251 254
252/** 255/**
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index dcfb93337e9a..d87247d2641f 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -15,19 +15,6 @@
15extern struct files_struct init_files; 15extern struct files_struct init_files;
16extern struct fs_struct init_fs; 16extern struct fs_struct init_fs;
17 17
18#define INIT_KIOCTX(name, which_mm) \
19{ \
20 .users = ATOMIC_INIT(1), \
21 .dead = 0, \
22 .mm = &which_mm, \
23 .user_id = 0, \
24 .next = NULL, \
25 .wait = __WAIT_QUEUE_HEAD_INITIALIZER(name.wait), \
26 .ctx_lock = __SPIN_LOCK_UNLOCKED(name.ctx_lock), \
27 .reqs_active = 0U, \
28 .max_reqs = ~0U, \
29}
30
31#define INIT_MM(name) \ 18#define INIT_MM(name) \
32{ \ 19{ \
33 .mm_rb = RB_ROOT, \ 20 .mm_rb = RB_ROOT, \
diff --git a/include/linux/ipmi.h b/include/linux/ipmi.h
index 7ebdb4fb4e54..65aae34759de 100644
--- a/include/linux/ipmi.h
+++ b/include/linux/ipmi.h
@@ -198,6 +198,8 @@ struct kernel_ipmi_msg {
198 response. When you send a 198 response. When you send a
199 response message, this will 199 response message, this will
200 be returned. */ 200 be returned. */
201#define IPMI_OEM_RECV_TYPE 5 /* The response for OEM Channels */
202
201/* Note that async events and received commands do not have a completion 203/* Note that async events and received commands do not have a completion
202 code as the first byte of the incoming data, unlike a response. */ 204 code as the first byte of the incoming data, unlike a response. */
203 205
diff --git a/include/linux/ipmi_msgdefs.h b/include/linux/ipmi_msgdefs.h
index b56a158d587a..df97e6e31e87 100644
--- a/include/linux/ipmi_msgdefs.h
+++ b/include/linux/ipmi_msgdefs.h
@@ -58,6 +58,12 @@
58#define IPMI_READ_EVENT_MSG_BUFFER_CMD 0x35 58#define IPMI_READ_EVENT_MSG_BUFFER_CMD 0x35
59#define IPMI_GET_CHANNEL_INFO_CMD 0x42 59#define IPMI_GET_CHANNEL_INFO_CMD 0x42
60 60
61/* Bit for BMC global enables. */
62#define IPMI_BMC_RCV_MSG_INTR 0x01
63#define IPMI_BMC_EVT_MSG_INTR 0x02
64#define IPMI_BMC_EVT_MSG_BUFF 0x04
65#define IPMI_BMC_SYS_LOG 0x08
66
61#define IPMI_NETFN_STORAGE_REQUEST 0x0a 67#define IPMI_NETFN_STORAGE_REQUEST 0x0a
62#define IPMI_NETFN_STORAGE_RESPONSE 0x0b 68#define IPMI_NETFN_STORAGE_RESPONSE 0x0b
63#define IPMI_ADD_SEL_ENTRY_CMD 0x44 69#define IPMI_ADD_SEL_ENTRY_CMD 0x44
@@ -109,5 +115,7 @@
109#define IPMI_CHANNEL_MEDIUM_USB1 10 115#define IPMI_CHANNEL_MEDIUM_USB1 10
110#define IPMI_CHANNEL_MEDIUM_USB2 11 116#define IPMI_CHANNEL_MEDIUM_USB2 11
111#define IPMI_CHANNEL_MEDIUM_SYSINTF 12 117#define IPMI_CHANNEL_MEDIUM_SYSINTF 12
118#define IPMI_CHANNEL_MEDIUM_OEM_MIN 0x60
119#define IPMI_CHANNEL_MEDIUM_OEM_MAX 0x7f
112 120
113#endif /* __LINUX_IPMI_MSGDEFS_H */ 121#endif /* __LINUX_IPMI_MSGDEFS_H */
diff --git a/include/linux/irq.h b/include/linux/irq.h
index ca507c9426b0..b7cbeed972e4 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -487,6 +487,16 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc,
487#endif 487#endif
488} 488}
489 489
490static inline void free_desc_masks(struct irq_desc *old_desc,
491 struct irq_desc *new_desc)
492{
493 free_cpumask_var(old_desc->affinity);
494
495#ifdef CONFIG_GENERIC_PENDING_IRQ
496 free_cpumask_var(old_desc->pending_mask);
497#endif
498}
499
490#else /* !CONFIG_SMP */ 500#else /* !CONFIG_SMP */
491 501
492static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu, 502static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu,
@@ -500,6 +510,10 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc,
500{ 510{
501} 511}
502 512
513static inline void free_desc_masks(struct irq_desc *old_desc,
514 struct irq_desc *new_desc)
515{
516}
503#endif /* CONFIG_SMP */ 517#endif /* CONFIG_SMP */
504 518
505#endif /* _LINUX_IRQ_H */ 519#endif /* _LINUX_IRQ_H */
diff --git a/include/linux/jbd.h b/include/linux/jbd.h
index 53ae4399da2d..c2049a04fa0b 100644
--- a/include/linux/jbd.h
+++ b/include/linux/jbd.h
@@ -978,7 +978,8 @@ extern void journal_destroy_revoke(journal_t *);
978extern int journal_revoke (handle_t *, 978extern int journal_revoke (handle_t *,
979 unsigned long, struct buffer_head *); 979 unsigned long, struct buffer_head *);
980extern int journal_cancel_revoke(handle_t *, struct journal_head *); 980extern int journal_cancel_revoke(handle_t *, struct journal_head *);
981extern void journal_write_revoke_records(journal_t *, transaction_t *); 981extern void journal_write_revoke_records(journal_t *,
982 transaction_t *, int);
982 983
983/* Recovery revoke support */ 984/* Recovery revoke support */
984extern int journal_set_revoke(journal_t *, unsigned long, tid_t); 985extern int journal_set_revoke(journal_t *, unsigned long, tid_t);
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
index 8815a3456b3b..cc02393bfce8 100644
--- a/include/linux/jbd2.h
+++ b/include/linux/jbd2.h
@@ -1193,7 +1193,8 @@ extern int jbd2_journal_init_revoke_caches(void);
1193extern void jbd2_journal_destroy_revoke(journal_t *); 1193extern void jbd2_journal_destroy_revoke(journal_t *);
1194extern int jbd2_journal_revoke (handle_t *, unsigned long long, struct buffer_head *); 1194extern int jbd2_journal_revoke (handle_t *, unsigned long long, struct buffer_head *);
1195extern int jbd2_journal_cancel_revoke(handle_t *, struct journal_head *); 1195extern int jbd2_journal_cancel_revoke(handle_t *, struct journal_head *);
1196extern void jbd2_journal_write_revoke_records(journal_t *, transaction_t *); 1196extern void jbd2_journal_write_revoke_records(journal_t *,
1197 transaction_t *, int);
1197 1198
1198/* Recovery revoke support */ 1199/* Recovery revoke support */
1199extern int jbd2_journal_set_revoke(journal_t *, unsigned long long, tid_t); 1200extern int jbd2_journal_set_revoke(journal_t *, unsigned long long, tid_t);
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index d9e75ec7def5..883cd44ff765 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -377,6 +377,15 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
377#define pr_cont(fmt, ...) \ 377#define pr_cont(fmt, ...) \
378 printk(KERN_CONT fmt, ##__VA_ARGS__) 378 printk(KERN_CONT fmt, ##__VA_ARGS__)
379 379
380/* pr_devel() should produce zero code unless DEBUG is defined */
381#ifdef DEBUG
382#define pr_devel(fmt, ...) \
383 printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
384#else
385#define pr_devel(fmt, ...) \
386 ({ if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); 0; })
387#endif
388
380/* If you are writing a driver, please use dev_dbg instead */ 389/* If you are writing a driver, please use dev_dbg instead */
381#if defined(DEBUG) 390#if defined(DEBUG)
382#define pr_debug(fmt, ...) \ 391#define pr_debug(fmt, ...) \
diff --git a/include/linux/kmod.h b/include/linux/kmod.h
index d5fa565086d1..384ca8bbf1ac 100644
--- a/include/linux/kmod.h
+++ b/include/linux/kmod.h
@@ -34,7 +34,7 @@ extern int __request_module(bool wait, const char *name, ...) \
34#define request_module(mod...) __request_module(true, mod) 34#define request_module(mod...) __request_module(true, mod)
35#define request_module_nowait(mod...) __request_module(false, mod) 35#define request_module_nowait(mod...) __request_module(false, mod)
36#define try_then_request_module(x, mod...) \ 36#define try_then_request_module(x, mod...) \
37 ((x) ?: (__request_module(false, mod), (x))) 37 ((x) ?: (__request_module(true, mod), (x)))
38#else 38#else
39static inline int request_module(const char *name, ...) { return -ENOSYS; } 39static inline int request_module(const char *name, ...) { return -ENOSYS; }
40static inline int request_module_nowait(const char *name, ...) { return -ENOSYS; } 40static inline int request_module_nowait(const char *name, ...) { return -ENOSYS; }
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index 311a073afe8a..8cc137911b34 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -409,6 +409,8 @@ struct kvm_trace_rec {
409#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT 409#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
410#define KVM_CAP_DEVICE_DEASSIGNMENT 27 410#define KVM_CAP_DEVICE_DEASSIGNMENT 27
411#endif 411#endif
412/* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */
413#define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
412 414
413#ifdef KVM_CAP_IRQ_ROUTING 415#ifdef KVM_CAP_IRQ_ROUTING
414 416
diff --git a/include/linux/libata.h b/include/linux/libata.h
index b450a2628855..3d501db36a26 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -209,6 +209,7 @@ enum {
209 209
210 /* bits 24:31 of ap->flags are reserved for LLD specific flags */ 210 /* bits 24:31 of ap->flags are reserved for LLD specific flags */
211 211
212
212 /* struct ata_port pflags */ 213 /* struct ata_port pflags */
213 ATA_PFLAG_EH_PENDING = (1 << 0), /* EH pending */ 214 ATA_PFLAG_EH_PENDING = (1 << 0), /* EH pending */
214 ATA_PFLAG_EH_IN_PROGRESS = (1 << 1), /* EH in progress */ 215 ATA_PFLAG_EH_IN_PROGRESS = (1 << 1), /* EH in progress */
@@ -225,6 +226,9 @@ enum {
225 ATA_PFLAG_PM_PENDING = (1 << 18), /* PM operation pending */ 226 ATA_PFLAG_PM_PENDING = (1 << 18), /* PM operation pending */
226 ATA_PFLAG_INIT_GTM_VALID = (1 << 19), /* initial gtm data valid */ 227 ATA_PFLAG_INIT_GTM_VALID = (1 << 19), /* initial gtm data valid */
227 228
229 ATA_PFLAG_PIO32 = (1 << 20), /* 32bit PIO */
230 ATA_PFLAG_PIO32CHANGE = (1 << 21), /* 32bit PIO can be turned on/off */
231
228 /* struct ata_queued_cmd flags */ 232 /* struct ata_queued_cmd flags */
229 ATA_QCFLAG_ACTIVE = (1 << 0), /* cmd not yet ack'd to scsi lyer */ 233 ATA_QCFLAG_ACTIVE = (1 << 0), /* cmd not yet ack'd to scsi lyer */
230 ATA_QCFLAG_DMAMAP = (1 << 1), /* SG table is DMA mapped */ 234 ATA_QCFLAG_DMAMAP = (1 << 1), /* SG table is DMA mapped */
@@ -689,7 +693,10 @@ struct ata_port {
689 struct Scsi_Host *scsi_host; /* our co-allocated scsi host */ 693 struct Scsi_Host *scsi_host; /* our co-allocated scsi host */
690 struct ata_port_operations *ops; 694 struct ata_port_operations *ops;
691 spinlock_t *lock; 695 spinlock_t *lock;
696 /* Flags owned by the EH context. Only EH should touch these once the
697 port is active */
692 unsigned long flags; /* ATA_FLAG_xxx */ 698 unsigned long flags; /* ATA_FLAG_xxx */
699 /* Flags that change dynamically, protected by ap->lock */
693 unsigned int pflags; /* ATA_PFLAG_xxx */ 700 unsigned int pflags; /* ATA_PFLAG_xxx */
694 unsigned int print_id; /* user visible unique port ID */ 701 unsigned int print_id; /* user visible unique port ID */
695 unsigned int port_no; /* 0 based port no. inside the host */ 702 unsigned int port_no; /* 0 based port no. inside the host */
@@ -1595,6 +1602,7 @@ extern void ata_sff_drain_fifo(struct ata_queued_cmd *qc);
1595extern void ata_sff_error_handler(struct ata_port *ap); 1602extern void ata_sff_error_handler(struct ata_port *ap);
1596extern void ata_sff_post_internal_cmd(struct ata_queued_cmd *qc); 1603extern void ata_sff_post_internal_cmd(struct ata_queued_cmd *qc);
1597extern int ata_sff_port_start(struct ata_port *ap); 1604extern int ata_sff_port_start(struct ata_port *ap);
1605extern int ata_sff_port_start32(struct ata_port *ap);
1598extern void ata_sff_std_ports(struct ata_ioports *ioaddr); 1606extern void ata_sff_std_ports(struct ata_ioports *ioaddr);
1599extern unsigned long ata_bmdma_mode_filter(struct ata_device *dev, 1607extern unsigned long ata_bmdma_mode_filter(struct ata_device *dev,
1600 unsigned long xfer_mask); 1608 unsigned long xfer_mask);
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 18146c980b68..a9e3b76aa884 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -75,7 +75,7 @@ int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
75{ 75{
76 struct mem_cgroup *mem; 76 struct mem_cgroup *mem;
77 rcu_read_lock(); 77 rcu_read_lock();
78 mem = mem_cgroup_from_task((mm)->owner); 78 mem = mem_cgroup_from_task(rcu_dereference((mm)->owner));
79 rcu_read_unlock(); 79 rcu_read_unlock();
80 return cgroup == mem; 80 return cgroup == mem;
81} 81}
diff --git a/include/linux/mfd/pcf50633/core.h b/include/linux/mfd/pcf50633/core.h
index 4455b212d75a..c8f51c3c0a72 100644
--- a/include/linux/mfd/pcf50633/core.h
+++ b/include/linux/mfd/pcf50633/core.h
@@ -29,6 +29,8 @@ struct pcf50633_platform_data {
29 char **batteries; 29 char **batteries;
30 int num_batteries; 30 int num_batteries;
31 31
32 int charging_restart_interval;
33
32 /* Callbacks */ 34 /* Callbacks */
33 void (*probe_done)(struct pcf50633 *); 35 void (*probe_done)(struct pcf50633 *);
34 void (*mbc_event_callback)(struct pcf50633 *, int); 36 void (*mbc_event_callback)(struct pcf50633 *, int);
diff --git a/include/linux/mfd/pcf50633/mbc.h b/include/linux/mfd/pcf50633/mbc.h
index 6e17619b773a..4119579acf2c 100644
--- a/include/linux/mfd/pcf50633/mbc.h
+++ b/include/linux/mfd/pcf50633/mbc.h
@@ -128,7 +128,6 @@ enum pcf50633_reg_mbcs3 {
128int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma); 128int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma);
129 129
130int pcf50633_mbc_get_status(struct pcf50633 *); 130int pcf50633_mbc_get_status(struct pcf50633 *);
131void pcf50633_mbc_set_status(struct pcf50633 *, int what, int status);
132 131
133#endif 132#endif
134 133
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index ee98cd570885..06ba90c211a5 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2514,6 +2514,8 @@
2514#define PCI_DEVICE_ID_INTEL_IOAT_TBG3 0x3433 2514#define PCI_DEVICE_ID_INTEL_IOAT_TBG3 0x3433
2515#define PCI_DEVICE_ID_INTEL_82830_HB 0x3575 2515#define PCI_DEVICE_ID_INTEL_82830_HB 0x3575
2516#define PCI_DEVICE_ID_INTEL_82830_CGC 0x3577 2516#define PCI_DEVICE_ID_INTEL_82830_CGC 0x3577
2517#define PCI_DEVICE_ID_INTEL_82854_HB 0x358c
2518#define PCI_DEVICE_ID_INTEL_82854_IG 0x358e
2517#define PCI_DEVICE_ID_INTEL_82855GM_HB 0x3580 2519#define PCI_DEVICE_ID_INTEL_82855GM_HB 0x3580
2518#define PCI_DEVICE_ID_INTEL_82855GM_IG 0x3582 2520#define PCI_DEVICE_ID_INTEL_82855GM_IG 0x3582
2519#define PCI_DEVICE_ID_INTEL_E7520_MCH 0x3590 2521#define PCI_DEVICE_ID_INTEL_E7520_MCH 0x3590
diff --git a/include/linux/pda_power.h b/include/linux/pda_power.h
index cb7d10f30763..d4cf7a2ceb3e 100644
--- a/include/linux/pda_power.h
+++ b/include/linux/pda_power.h
@@ -31,6 +31,8 @@ struct pda_power_pdata {
31 unsigned int wait_for_status; /* msecs, default is 500 */ 31 unsigned int wait_for_status; /* msecs, default is 500 */
32 unsigned int wait_for_charger; /* msecs, default is 500 */ 32 unsigned int wait_for_charger; /* msecs, default is 500 */
33 unsigned int polling_interval; /* msecs, default is 2000 */ 33 unsigned int polling_interval; /* msecs, default is 2000 */
34
35 unsigned long ac_max_uA; /* current to draw when on AC */
34}; 36};
35 37
36#endif /* __PDA_POWER_H__ */ 38#endif /* __PDA_POWER_H__ */
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
new file mode 100644
index 000000000000..8f921d74f49f
--- /dev/null
+++ b/include/linux/percpu-defs.h
@@ -0,0 +1,84 @@
1#ifndef _LINUX_PERCPU_DEFS_H
2#define _LINUX_PERCPU_DEFS_H
3
4/*
5 * Determine the real variable name from the name visible in the
6 * kernel sources.
7 */
8#define per_cpu_var(var) per_cpu__##var
9
10/*
11 * Base implementations of per-CPU variable declarations and definitions, where
12 * the section in which the variable is to be placed is provided by the
13 * 'section' argument. This may be used to affect the parameters governing the
14 * variable's storage.
15 *
16 * NOTE! The sections for the DECLARE and for the DEFINE must match, lest
17 * linkage errors occur due the compiler generating the wrong code to access
18 * that section.
19 */
20#define DECLARE_PER_CPU_SECTION(type, name, section) \
21 extern \
22 __attribute__((__section__(PER_CPU_BASE_SECTION section))) \
23 PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
24
25#define DEFINE_PER_CPU_SECTION(type, name, section) \
26 __attribute__((__section__(PER_CPU_BASE_SECTION section))) \
27 PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
28
29/*
30 * Variant on the per-CPU variable declaration/definition theme used for
31 * ordinary per-CPU variables.
32 */
33#define DECLARE_PER_CPU(type, name) \
34 DECLARE_PER_CPU_SECTION(type, name, "")
35
36#define DEFINE_PER_CPU(type, name) \
37 DEFINE_PER_CPU_SECTION(type, name, "")
38
39/*
40 * Declaration/definition used for per-CPU variables that must come first in
41 * the set of variables.
42 */
43#define DECLARE_PER_CPU_FIRST(type, name) \
44 DECLARE_PER_CPU_SECTION(type, name, PER_CPU_FIRST_SECTION)
45
46#define DEFINE_PER_CPU_FIRST(type, name) \
47 DEFINE_PER_CPU_SECTION(type, name, PER_CPU_FIRST_SECTION)
48
49/*
50 * Declaration/definition used for per-CPU variables that must be cacheline
51 * aligned under SMP conditions so that, whilst a particular instance of the
52 * data corresponds to a particular CPU, inefficiencies due to direct access by
53 * other CPUs are reduced by preventing the data from unnecessarily spanning
54 * cachelines.
55 *
56 * An example of this would be statistical data, where each CPU's set of data
57 * is updated by that CPU alone, but the data from across all CPUs is collated
58 * by a CPU processing a read from a proc file.
59 */
60#define DECLARE_PER_CPU_SHARED_ALIGNED(type, name) \
61 DECLARE_PER_CPU_SECTION(type, name, PER_CPU_SHARED_ALIGNED_SECTION) \
62 ____cacheline_aligned_in_smp
63
64#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
65 DEFINE_PER_CPU_SECTION(type, name, PER_CPU_SHARED_ALIGNED_SECTION) \
66 ____cacheline_aligned_in_smp
67
68/*
69 * Declaration/definition used for per-CPU variables that must be page aligned.
70 */
71#define DECLARE_PER_CPU_PAGE_ALIGNED(type, name) \
72 DECLARE_PER_CPU_SECTION(type, name, ".page_aligned")
73
74#define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
75 DEFINE_PER_CPU_SECTION(type, name, ".page_aligned")
76
77/*
78 * Intermodule exports for per-CPU variables.
79 */
80#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var)
81#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var)
82
83
84#endif /* _LINUX_PERCPU_DEFS_H */
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index ee5615d65211..1581ff235c7e 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -9,50 +9,6 @@
9 9
10#include <asm/percpu.h> 10#include <asm/percpu.h>
11 11
12#ifndef PER_CPU_BASE_SECTION
13#ifdef CONFIG_SMP
14#define PER_CPU_BASE_SECTION ".data.percpu"
15#else
16#define PER_CPU_BASE_SECTION ".data"
17#endif
18#endif
19
20#ifdef CONFIG_SMP
21
22#ifdef MODULE
23#define PER_CPU_SHARED_ALIGNED_SECTION ""
24#else
25#define PER_CPU_SHARED_ALIGNED_SECTION ".shared_aligned"
26#endif
27#define PER_CPU_FIRST_SECTION ".first"
28
29#else
30
31#define PER_CPU_SHARED_ALIGNED_SECTION ""
32#define PER_CPU_FIRST_SECTION ""
33
34#endif
35
36#define DEFINE_PER_CPU_SECTION(type, name, section) \
37 __attribute__((__section__(PER_CPU_BASE_SECTION section))) \
38 PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
39
40#define DEFINE_PER_CPU(type, name) \
41 DEFINE_PER_CPU_SECTION(type, name, "")
42
43#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
44 DEFINE_PER_CPU_SECTION(type, name, PER_CPU_SHARED_ALIGNED_SECTION) \
45 ____cacheline_aligned_in_smp
46
47#define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
48 DEFINE_PER_CPU_SECTION(type, name, ".page_aligned")
49
50#define DEFINE_PER_CPU_FIRST(type, name) \
51 DEFINE_PER_CPU_SECTION(type, name, PER_CPU_FIRST_SECTION)
52
53#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var)
54#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var)
55
56/* enough to cover all DEFINE_PER_CPUs in modules */ 12/* enough to cover all DEFINE_PER_CPUs in modules */
57#ifdef CONFIG_MODULES 13#ifdef CONFIG_MODULES
58#define PERCPU_MODULE_RESERVE (8 << 10) 14#define PERCPU_MODULE_RESERVE (8 << 10)
@@ -168,4 +124,56 @@ static inline void free_percpu(void *p)
168#define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \ 124#define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \
169 __alignof__(type)) 125 __alignof__(type))
170 126
127/*
128 * Optional methods for optimized non-lvalue per-cpu variable access.
129 *
130 * @var can be a percpu variable or a field of it and its size should
131 * equal char, int or long. percpu_read() evaluates to a lvalue and
132 * all others to void.
133 *
134 * These operations are guaranteed to be atomic w.r.t. preemption.
135 * The generic versions use plain get/put_cpu_var(). Archs are
136 * encouraged to implement single-instruction alternatives which don't
137 * require preemption protection.
138 */
139#ifndef percpu_read
140# define percpu_read(var) \
141 ({ \
142 typeof(per_cpu_var(var)) __tmp_var__; \
143 __tmp_var__ = get_cpu_var(var); \
144 put_cpu_var(var); \
145 __tmp_var__; \
146 })
147#endif
148
149#define __percpu_generic_to_op(var, val, op) \
150do { \
151 get_cpu_var(var) op val; \
152 put_cpu_var(var); \
153} while (0)
154
155#ifndef percpu_write
156# define percpu_write(var, val) __percpu_generic_to_op(var, (val), =)
157#endif
158
159#ifndef percpu_add
160# define percpu_add(var, val) __percpu_generic_to_op(var, (val), +=)
161#endif
162
163#ifndef percpu_sub
164# define percpu_sub(var, val) __percpu_generic_to_op(var, (val), -=)
165#endif
166
167#ifndef percpu_and
168# define percpu_and(var, val) __percpu_generic_to_op(var, (val), &=)
169#endif
170
171#ifndef percpu_or
172# define percpu_or(var, val) __percpu_generic_to_op(var, (val), |=)
173#endif
174
175#ifndef percpu_xor
176# define percpu_xor(var, val) __percpu_generic_to_op(var, (val), ^=)
177#endif
178
171#endif /* __LINUX_PERCPU_H */ 179#endif /* __LINUX_PERCPU_H */
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 32cf14a4b034..97e40cb6b588 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -388,6 +388,12 @@ struct phy_driver {
388 /* Enables or disables interrupts */ 388 /* Enables or disables interrupts */
389 int (*config_intr)(struct phy_device *phydev); 389 int (*config_intr)(struct phy_device *phydev);
390 390
391 /*
392 * Checks if the PHY generated an interrupt.
393 * For multi-PHY devices with shared PHY interrupt pin
394 */
395 int (*did_interrupt)(struct phy_device *phydev);
396
391 /* Clears up any memory if needed */ 397 /* Clears up any memory if needed */
392 void (*remove)(struct phy_device *phydev); 398 void (*remove)(struct phy_device *phydev);
393 399
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
index 8e4120285f72..c8f038554e80 100644
--- a/include/linux/pipe_fs_i.h
+++ b/include/linux/pipe_fs_i.h
@@ -134,6 +134,11 @@ struct pipe_buf_operations {
134 memory allocation, whereas PIPE_BUF makes atomicity guarantees. */ 134 memory allocation, whereas PIPE_BUF makes atomicity guarantees. */
135#define PIPE_SIZE PAGE_SIZE 135#define PIPE_SIZE PAGE_SIZE
136 136
137/* Pipe lock and unlock operations */
138void pipe_lock(struct pipe_inode_info *);
139void pipe_unlock(struct pipe_inode_info *);
140void pipe_double_lock(struct pipe_inode_info *, struct pipe_inode_info *);
141
137/* Drop the inode semaphore and wait for a pipe event, atomically */ 142/* Drop the inode semaphore and wait for a pipe event, atomically */
138void pipe_wait(struct pipe_inode_info *pipe); 143void pipe_wait(struct pipe_inode_info *pipe);
139 144
diff --git a/include/linux/pktcdvd.h b/include/linux/pktcdvd.h
index 04b4d7330e6d..d745f5b6c7b0 100644
--- a/include/linux/pktcdvd.h
+++ b/include/linux/pktcdvd.h
@@ -113,6 +113,7 @@ struct pkt_ctrl_command {
113#include <linux/cdrom.h> 113#include <linux/cdrom.h>
114#include <linux/kobject.h> 114#include <linux/kobject.h>
115#include <linux/sysfs.h> 115#include <linux/sysfs.h>
116#include <linux/mempool.h>
116 117
117/* default bio write queue congestion marks */ 118/* default bio write queue congestion marks */
118#define PKT_WRITE_CONGESTION_ON 10000 119#define PKT_WRITE_CONGESTION_ON 10000
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
index 76e470a299bf..72736fd8223c 100644
--- a/include/linux/platform_device.h
+++ b/include/linux/platform_device.h
@@ -77,4 +77,46 @@ extern int platform_driver_probe(struct platform_driver *driver,
77#define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev) 77#define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev)
78#define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data)) 78#define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data))
79 79
80/* early platform driver interface */
81struct early_platform_driver {
82 const char *class_str;
83 struct platform_driver *pdrv;
84 struct list_head list;
85 int requested_id;
86};
87
88#define EARLY_PLATFORM_ID_UNSET -2
89#define EARLY_PLATFORM_ID_ERROR -3
90
91extern int early_platform_driver_register(struct early_platform_driver *epdrv,
92 char *buf);
93extern void early_platform_add_devices(struct platform_device **devs, int num);
94
95static inline int is_early_platform_device(struct platform_device *pdev)
96{
97 return !pdev->dev.driver;
98}
99
100extern void early_platform_driver_register_all(char *class_str);
101extern int early_platform_driver_probe(char *class_str,
102 int nr_probe, int user_only);
103extern void early_platform_cleanup(void);
104
105
106#ifndef MODULE
107#define early_platform_init(class_string, platform_driver) \
108static __initdata struct early_platform_driver early_driver = { \
109 .class_str = class_string, \
110 .pdrv = platform_driver, \
111 .requested_id = EARLY_PLATFORM_ID_UNSET, \
112}; \
113static int __init early_platform_driver_setup_func(char *buf) \
114{ \
115 return early_platform_driver_register(&early_driver, buf); \
116} \
117early_param(class_string, early_platform_driver_setup_func)
118#else /* MODULE */
119#define early_platform_init(class_string, platform_driver)
120#endif /* MODULE */
121
80#endif /* _PLATFORM_DEVICE_H_ */ 122#endif /* _PLATFORM_DEVICE_H_ */
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
index 0cdda00f2b2a..58b2aa5312b9 100644
--- a/include/linux/rcutree.h
+++ b/include/linux/rcutree.h
@@ -161,9 +161,8 @@ struct rcu_data {
161 unsigned long offline_fqs; /* Kicked due to being offline. */ 161 unsigned long offline_fqs; /* Kicked due to being offline. */
162 unsigned long resched_ipi; /* Sent a resched IPI. */ 162 unsigned long resched_ipi; /* Sent a resched IPI. */
163 163
164 /* 5) state to allow this CPU to force_quiescent_state on others */ 164 /* 5) For future __rcu_pending statistics. */
165 long n_rcu_pending; /* rcu_pending() calls since boot. */ 165 long n_rcu_pending; /* rcu_pending() calls since boot. */
166 long n_rcu_pending_force_qs; /* when to force quiescent states. */
167 166
168 int cpu; 167 int cpu;
169}; 168};
diff --git a/include/linux/reiserfs_fs_sb.h b/include/linux/reiserfs_fs_sb.h
index 5621d87c4479..6b361d23a499 100644
--- a/include/linux/reiserfs_fs_sb.h
+++ b/include/linux/reiserfs_fs_sb.h
@@ -193,7 +193,7 @@ struct reiserfs_journal {
193 atomic_t j_wcount; /* count of writers for current commit */ 193 atomic_t j_wcount; /* count of writers for current commit */
194 unsigned long j_bcount; /* batch count. allows turning X transactions into 1 */ 194 unsigned long j_bcount; /* batch count. allows turning X transactions into 1 */
195 unsigned long j_first_unflushed_offset; /* first unflushed transactions offset */ 195 unsigned long j_first_unflushed_offset; /* first unflushed transactions offset */
196 unsigned long j_last_flush_trans_id; /* last fully flushed journal timestamp */ 196 unsigned j_last_flush_trans_id; /* last fully flushed journal timestamp */
197 struct buffer_head *j_header_bh; 197 struct buffer_head *j_header_bh;
198 198
199 time_t j_trans_start_time; /* time this transaction started */ 199 time_t j_trans_start_time; /* time this transaction started */
diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h
new file mode 100644
index 000000000000..12d63a30c347
--- /dev/null
+++ b/include/linux/rotary_encoder.h
@@ -0,0 +1,13 @@
1#ifndef __ROTARY_ENCODER_H__
2#define __ROTARY_ENCODER_H__
3
4struct rotary_encoder_platform_data {
5 unsigned int steps;
6 unsigned int axis;
7 unsigned int gpio_a;
8 unsigned int gpio_b;
9 unsigned int inverted_a;
10 unsigned int inverted_b;
11};
12
13#endif /* __ROTARY_ENCODER_H__ */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 98e1fe51601d..b4c38bc8049c 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -205,7 +205,8 @@ extern unsigned long long time_sync_thresh;
205#define task_is_stopped_or_traced(task) \ 205#define task_is_stopped_or_traced(task) \
206 ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) 206 ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
207#define task_contributes_to_load(task) \ 207#define task_contributes_to_load(task) \
208 ((task->state & TASK_UNINTERRUPTIBLE) != 0) 208 ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \
209 (task->flags & PF_FROZEN) == 0)
209 210
210#define __set_task_state(tsk, state_value) \ 211#define __set_task_state(tsk, state_value) \
211 do { (tsk)->state = (state_value); } while (0) 212 do { (tsk)->state = (state_value); } while (0)
diff --git a/include/linux/seccomp.h b/include/linux/seccomp.h
index 262a8dccfa81..167c33361d9c 100644
--- a/include/linux/seccomp.h
+++ b/include/linux/seccomp.h
@@ -21,6 +21,8 @@ extern long prctl_set_seccomp(unsigned long);
21 21
22#else /* CONFIG_SECCOMP */ 22#else /* CONFIG_SECCOMP */
23 23
24#include <linux/errno.h>
25
24typedef struct { } seccomp_t; 26typedef struct { } seccomp_t;
25 27
26#define secure_computing(x) do { } while (0) 28#define secure_computing(x) do { } while (0)
diff --git a/include/linux/section-names.h b/include/linux/section-names.h
new file mode 100644
index 000000000000..c956f4eb2adf
--- /dev/null
+++ b/include/linux/section-names.h
@@ -0,0 +1,6 @@
1#ifndef __LINUX_SECTION_NAMES_H
2#define __LINUX_SECTION_NAMES_H
3
4#define HEAD_TEXT_SECTION .head.text
5
6#endif /* !__LINUX_SECTION_NAMES_H */
diff --git a/include/linux/serial_max3100.h b/include/linux/serial_max3100.h
new file mode 100644
index 000000000000..4976befb6aeb
--- /dev/null
+++ b/include/linux/serial_max3100.h
@@ -0,0 +1,52 @@
1/*
2 *
3 * Copyright (C) 2007 Christian Pellegrin
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
11
12#ifndef _LINUX_SERIAL_MAX3100_H
13#define _LINUX_SERIAL_MAX3100_H 1
14
15
16/**
17 * struct plat_max3100 - MAX3100 SPI UART platform data
18 * @loopback: force MAX3100 in loopback
19 * @crystal: 1 for 3.6864 Mhz, 0 for 1.8432
20 * @max3100_hw_suspend: MAX3100 has a shutdown pin. This is a hook
21 * called on suspend and resume to activate it.
22 * @poll_time: poll time for CTS signal in ms, 0 disables (so no hw
23 * flow ctrl is possible but you have less CPU usage)
24 *
25 * You should use this structure in your machine description to specify
26 * how the MAX3100 is connected. Example:
27 *
28 * static struct plat_max3100 max3100_plat_data = {
29 * .loopback = 0,
30 * .crystal = 0,
31 * .poll_time = 100,
32 * };
33 *
34 * static struct spi_board_info spi_board_info[] = {
35 * {
36 * .modalias = "max3100",
37 * .platform_data = &max3100_plat_data,
38 * .irq = IRQ_EINT12,
39 * .max_speed_hz = 5*1000*1000,
40 * .chip_select = 0,
41 * },
42 * };
43 *
44 **/
45struct plat_max3100 {
46 int loopback;
47 int crystal;
48 void (*max3100_hw_suspend) (int suspend);
49 int poll_time;
50};
51
52#endif
diff --git a/include/linux/sht15.h b/include/linux/sht15.h
new file mode 100644
index 000000000000..046bce05ecab
--- /dev/null
+++ b/include/linux/sht15.h
@@ -0,0 +1,24 @@
1/*
2 * sht15.h - support for the SHT15 Temperature and Humidity Sensor
3 *
4 * Copyright (c) 2009 Jonathan Cameron
5 *
6 * Copyright (c) 2007 Wouter Horre
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13/**
14 * struct sht15_platform_data - sht15 connectivity info
15 * @gpio_data: no. of gpio to which bidirectional data line is connected
16 * @gpio_sck: no. of gpio to which the data clock is connected.
17 * @supply_mv: supply voltage in mv. Overridden by regulator if available.
18 **/
19struct sht15_platform_data {
20 int gpio_data;
21 int gpio_sck;
22 int supply_mv;
23};
24
diff --git a/include/linux/slow-work.h b/include/linux/slow-work.h
index 85958277f83d..b65c8881f07a 100644
--- a/include/linux/slow-work.h
+++ b/include/linux/slow-work.h
@@ -67,7 +67,7 @@ static inline void slow_work_init(struct slow_work *work,
67} 67}
68 68
69/** 69/**
70 * slow_work_init - Initialise a very slow work item 70 * vslow_work_init - Initialise a very slow work item
71 * @work: The work item to initialise 71 * @work: The work item to initialise
72 * @ops: The operations to use to handle the slow work item 72 * @ops: The operations to use to handle the slow work item
73 * 73 *
diff --git a/include/linux/spi/ad7879.h b/include/linux/spi/ad7879.h
new file mode 100644
index 000000000000..4231104c9afa
--- /dev/null
+++ b/include/linux/spi/ad7879.h
@@ -0,0 +1,35 @@
1/* linux/spi/ad7879.h */
2
3/* Touchscreen characteristics vary between boards and models. The
4 * platform_data for the device's "struct device" holds this information.
5 *
6 * It's OK if the min/max values are zero.
7 */
8struct ad7879_platform_data {
9 u16 model; /* 7879 */
10 u16 x_plate_ohms;
11 u16 x_min, x_max;
12 u16 y_min, y_max;
13 u16 pressure_min, pressure_max;
14
15 /* [0..255] 0=OFF Starts at 1=550us and goes
16 * all the way to 9.440ms in steps of 35us.
17 */
18 u8 pen_down_acc_interval;
19 /* [0..15] Starts at 0=128us and goes all the
20 * way to 4.096ms in steps of 128us.
21 */
22 u8 first_conversion_delay;
23 /* [0..3] 0 = 2us, 1 = 4us, 2 = 8us, 3 = 16us */
24 u8 acquisition_time;
25 /* [0..3] Average X middle samples 0 = 2, 1 = 4, 2 = 8, 3 = 16 */
26 u8 averaging;
27 /* [0..3] Perform X measurements 0 = OFF,
28 * 1 = 4, 2 = 8, 3 = 16 (median > averaging)
29 */
30 u8 median;
31 /* 1 = AUX/VBAT/GPIO set to GPIO Output */
32 u8 gpio_output;
33 /* Initial GPIO pin state (valid if gpio_output = 1) */
34 u8 gpio_default;
35};
diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h
index 05eab2f11e63..2ea20320c093 100644
--- a/include/linux/spi/ads7846.h
+++ b/include/linux/spi/ads7846.h
@@ -51,5 +51,6 @@ struct ads7846_platform_data {
51 void **filter_data); 51 void **filter_data);
52 int (*filter) (void *filter_data, int data_idx, int *val); 52 int (*filter) (void *filter_data, int data_idx, int *val);
53 void (*filter_cleanup)(void *filter_data); 53 void (*filter_cleanup)(void *filter_data);
54 void (*wait_for_sync)(void);
54}; 55};
55 56
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
index 2cc43fa380cb..a0faa18f7b1b 100644
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
@@ -245,7 +245,12 @@ struct spi_master {
245 */ 245 */
246 u16 dma_alignment; 246 u16 dma_alignment;
247 247
248 /* setup mode and clock, etc (spi driver may call many times) */ 248 /* Setup mode and clock, etc (spi driver may call many times).
249 *
250 * IMPORTANT: this may be called when transfers to another
251 * device are active. DO NOT UPDATE SHARED REGISTERS in ways
252 * which could break those transfers.
253 */
249 int (*setup)(struct spi_device *spi); 254 int (*setup)(struct spi_device *spi);
250 255
251 /* bidirectional bulk transfers 256 /* bidirectional bulk transfers
diff --git a/include/linux/splice.h b/include/linux/splice.h
index 528dcb93c2f2..5f3faa9d15ae 100644
--- a/include/linux/splice.h
+++ b/include/linux/splice.h
@@ -36,6 +36,8 @@ struct splice_desc {
36 void *data; /* cookie */ 36 void *data; /* cookie */
37 } u; 37 } u;
38 loff_t pos; /* file position */ 38 loff_t pos; /* file position */
39 size_t num_spliced; /* number of bytes already spliced */
40 bool need_wakeup; /* need to wake up writer */
39}; 41};
40 42
41struct partial_page { 43struct partial_page {
@@ -66,6 +68,16 @@ extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *,
66 splice_actor *); 68 splice_actor *);
67extern ssize_t __splice_from_pipe(struct pipe_inode_info *, 69extern ssize_t __splice_from_pipe(struct pipe_inode_info *,
68 struct splice_desc *, splice_actor *); 70 struct splice_desc *, splice_actor *);
71extern int splice_from_pipe_feed(struct pipe_inode_info *, struct splice_desc *,
72 splice_actor *);
73extern int splice_from_pipe_next(struct pipe_inode_info *,
74 struct splice_desc *);
75extern void splice_from_pipe_begin(struct splice_desc *);
76extern void splice_from_pipe_end(struct pipe_inode_info *,
77 struct splice_desc *);
78extern int pipe_to_file(struct pipe_inode_info *, struct pipe_buffer *,
79 struct splice_desc *);
80
69extern ssize_t splice_to_pipe(struct pipe_inode_info *, 81extern ssize_t splice_to_pipe(struct pipe_inode_info *,
70 struct splice_pipe_desc *); 82 struct splice_pipe_desc *);
71extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, 83extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *,
diff --git a/include/linux/stringify.h b/include/linux/stringify.h
index 0b4388356c87..841cec8ed525 100644
--- a/include/linux/stringify.h
+++ b/include/linux/stringify.h
@@ -6,7 +6,7 @@
6 * converts to "bar". 6 * converts to "bar".
7 */ 7 */
8 8
9#define __stringify_1(x) #x 9#define __stringify_1(x...) #x
10#define __stringify(x) __stringify_1(x) 10#define __stringify(x...) __stringify_1(x)
11 11
12#endif /* !__LINUX_STRINGIFY_H */ 12#endif /* !__LINUX_STRINGIFY_H */
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index 3e3a4364cbff..795032edfc46 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -58,10 +58,17 @@ typedef int __bitwise suspend_state_t;
58 * by @begin(). 58 * by @begin().
59 * @prepare() is called right after devices have been suspended (ie. the 59 * @prepare() is called right after devices have been suspended (ie. the
60 * appropriate .suspend() method has been executed for each device) and 60 * appropriate .suspend() method has been executed for each device) and
61 * before the nonboot CPUs are disabled (it is executed with IRQs enabled). 61 * before device drivers' late suspend callbacks are executed. It returns
62 * This callback is optional. It returns 0 on success or a negative 62 * 0 on success or a negative error code otherwise, in which case the
63 * error code otherwise, in which case the system cannot enter the desired 63 * system cannot enter the desired sleep state (@prepare_late(), @enter(),
64 * sleep state (@enter() and @finish() will not be called in that case). 64 * @wake(), and @finish() will not be called in that case).
65 *
66 * @prepare_late: Finish preparing the platform for entering the system sleep
67 * state indicated by @begin().
68 * @prepare_late is called before disabling nonboot CPUs and after
69 * device drivers' late suspend callbacks have been executed. It returns
70 * 0 on success or a negative error code otherwise, in which case the
71 * system cannot enter the desired sleep state (@enter() and @wake()).
65 * 72 *
66 * @enter: Enter the system sleep state indicated by @begin() or represented by 73 * @enter: Enter the system sleep state indicated by @begin() or represented by
67 * the argument if @begin() is not implemented. 74 * the argument if @begin() is not implemented.
@@ -69,19 +76,26 @@ typedef int __bitwise suspend_state_t;
69 * error code otherwise, in which case the system cannot enter the desired 76 * error code otherwise, in which case the system cannot enter the desired
70 * sleep state. 77 * sleep state.
71 * 78 *
72 * @finish: Called when the system has just left a sleep state, right after 79 * @wake: Called when the system has just left a sleep state, right after
73 * the nonboot CPUs have been enabled and before devices are resumed (it is 80 * the nonboot CPUs have been enabled and before device drivers' early
74 * executed with IRQs enabled). 81 * resume callbacks are executed.
82 * This callback is optional, but should be implemented by the platforms
83 * that implement @prepare_late(). If implemented, it is always called
84 * after @enter(), even if @enter() fails.
85 *
86 * @finish: Finish wake-up of the platform.
87 * @finish is called right prior to calling device drivers' regular suspend
88 * callbacks.
75 * This callback is optional, but should be implemented by the platforms 89 * This callback is optional, but should be implemented by the platforms
76 * that implement @prepare(). If implemented, it is always called after 90 * that implement @prepare(). If implemented, it is always called after
77 * @enter() (even if @enter() fails). 91 * @enter() and @wake(), if implemented, even if any of them fails.
78 * 92 *
79 * @end: Called by the PM core right after resuming devices, to indicate to 93 * @end: Called by the PM core right after resuming devices, to indicate to
80 * the platform that the system has returned to the working state or 94 * the platform that the system has returned to the working state or
81 * the transition to the sleep state has been aborted. 95 * the transition to the sleep state has been aborted.
82 * This callback is optional, but should be implemented by the platforms 96 * This callback is optional, but should be implemented by the platforms
83 * that implement @begin(), but platforms implementing @begin() should 97 * that implement @begin(). Accordingly, platforms implementing @begin()
84 * also provide a @end() which cleans up transitions aborted before 98 * should also provide a @end() which cleans up transitions aborted before
85 * @enter(). 99 * @enter().
86 * 100 *
87 * @recover: Recover the platform from a suspend failure. 101 * @recover: Recover the platform from a suspend failure.
@@ -93,7 +107,9 @@ struct platform_suspend_ops {
93 int (*valid)(suspend_state_t state); 107 int (*valid)(suspend_state_t state);
94 int (*begin)(suspend_state_t state); 108 int (*begin)(suspend_state_t state);
95 int (*prepare)(void); 109 int (*prepare)(void);
110 int (*prepare_late)(void);
96 int (*enter)(suspend_state_t state); 111 int (*enter)(suspend_state_t state);
112 void (*wake)(void);
97 void (*finish)(void); 113 void (*finish)(void);
98 void (*end)(void); 114 void (*end)(void);
99 void (*recover)(void); 115 void (*recover)(void);
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 6470f74074af..40617c1d8976 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -65,7 +65,7 @@ struct old_linux_dirent;
65#include <asm/signal.h> 65#include <asm/signal.h>
66#include <linux/quota.h> 66#include <linux/quota.h>
67#include <linux/key.h> 67#include <linux/key.h>
68#include <linux/ftrace.h> 68#include <trace/syscall.h>
69 69
70#define __SC_DECL1(t1, a1) t1 a1 70#define __SC_DECL1(t1, a1) t1 a1
71#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__) 71#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__)
@@ -148,7 +148,7 @@ struct old_linux_dirent;
148 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \ 148 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
149 "\t.globl ." #alias "\n\t.set ." #alias ", ." #name) 149 "\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
150#else 150#else
151#ifdef CONFIG_ALPHA 151#if defined(CONFIG_ALPHA) || defined(CONFIG_MIPS)
152#define SYSCALL_ALIAS(alias, name) \ 152#define SYSCALL_ALIAS(alias, name) \
153 asm ( #alias " = " #name "\n\t.globl " #alias) 153 asm ( #alias " = " #name "\n\t.globl " #alias)
154#else 154#else
diff --git a/include/linux/usb.h b/include/linux/usb.h
index c6b2ab41b908..3aa2cd1f8d08 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -1387,6 +1387,7 @@ extern int usb_string(struct usb_device *dev, int index,
1387extern int usb_clear_halt(struct usb_device *dev, int pipe); 1387extern int usb_clear_halt(struct usb_device *dev, int pipe);
1388extern int usb_reset_configuration(struct usb_device *dev); 1388extern int usb_reset_configuration(struct usb_device *dev);
1389extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); 1389extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
1390extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr);
1390 1391
1391/* this request isn't really synchronous, but it belongs with the others */ 1392/* this request isn't really synchronous, but it belongs with the others */
1392extern int usb_driver_set_configuration(struct usb_device *udev, int config); 1393extern int usb_driver_set_configuration(struct usb_device *udev, int config);
@@ -1491,14 +1492,6 @@ void usb_sg_wait(struct usb_sg_request *io);
1491#define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL) 1492#define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL)
1492#define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK) 1493#define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK)
1493 1494
1494/* The D0/D1 toggle bits ... USE WITH CAUTION (they're almost hcd-internal) */
1495#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> (ep)) & 1)
1496#define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << (ep)))
1497#define usb_settoggle(dev, ep, out, bit) \
1498 ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << (ep))) | \
1499 ((bit) << (ep)))
1500
1501
1502static inline unsigned int __create_pipe(struct usb_device *dev, 1495static inline unsigned int __create_pipe(struct usb_device *dev,
1503 unsigned int endpoint) 1496 unsigned int endpoint)
1504{ 1497{
diff --git a/include/linux/usb/musb.h b/include/linux/usb/musb.h
index d6aad0ea6033..d43755669261 100644
--- a/include/linux/usb/musb.h
+++ b/include/linux/usb/musb.h
@@ -7,6 +7,9 @@
7 * key configuration differences between boards. 7 * key configuration differences between boards.
8 */ 8 */
9 9
10#ifndef __LINUX_USB_MUSB_H
11#define __LINUX_USB_MUSB_H
12
10/* The USB role is defined by the connector used on the board, so long as 13/* The USB role is defined by the connector used on the board, so long as
11 * standards are being followed. (Developer boards sometimes won't.) 14 * standards are being followed. (Developer boards sometimes won't.)
12 */ 15 */
@@ -101,3 +104,5 @@ extern int __init tusb6010_setup_interface(
101extern int tusb6010_platform_retime(unsigned is_refclk); 104extern int tusb6010_platform_retime(unsigned is_refclk);
102 105
103#endif /* OMAP2 */ 106#endif /* OMAP2 */
107
108#endif /* __LINUX_USB_MUSB_H */
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h
index b95842542590..625e9e4639c6 100644
--- a/include/linux/usb/serial.h
+++ b/include/linux/usb/serial.h
@@ -29,7 +29,7 @@
29/** 29/**
30 * usb_serial_port: structure for the specific ports of a device. 30 * usb_serial_port: structure for the specific ports of a device.
31 * @serial: pointer back to the struct usb_serial owner of this port. 31 * @serial: pointer back to the struct usb_serial owner of this port.
32 * @tty: pointer to the corresponding tty for this port. 32 * @port: pointer to the corresponding tty_port for this port.
33 * @lock: spinlock to grab when updating portions of this structure. 33 * @lock: spinlock to grab when updating portions of this structure.
34 * @mutex: mutex used to synchronize serial_open() and serial_close() 34 * @mutex: mutex used to synchronize serial_open() and serial_close()
35 * access for this port. 35 * access for this port.
@@ -44,19 +44,22 @@
44 * @interrupt_out_endpointAddress: endpoint address for the interrupt out pipe 44 * @interrupt_out_endpointAddress: endpoint address for the interrupt out pipe
45 * for this port. 45 * for this port.
46 * @bulk_in_buffer: pointer to the bulk in buffer for this port. 46 * @bulk_in_buffer: pointer to the bulk in buffer for this port.
47 * @bulk_in_size: the size of the bulk_in_buffer, in bytes.
47 * @read_urb: pointer to the bulk in struct urb for this port. 48 * @read_urb: pointer to the bulk in struct urb for this port.
48 * @bulk_in_endpointAddress: endpoint address for the bulk in pipe for this 49 * @bulk_in_endpointAddress: endpoint address for the bulk in pipe for this
49 * port. 50 * port.
50 * @bulk_out_buffer: pointer to the bulk out buffer for this port. 51 * @bulk_out_buffer: pointer to the bulk out buffer for this port.
51 * @bulk_out_size: the size of the bulk_out_buffer, in bytes. 52 * @bulk_out_size: the size of the bulk_out_buffer, in bytes.
52 * @write_urb: pointer to the bulk out struct urb for this port. 53 * @write_urb: pointer to the bulk out struct urb for this port.
54 * @write_urb_busy: port`s writing status
53 * @bulk_out_endpointAddress: endpoint address for the bulk out pipe for this 55 * @bulk_out_endpointAddress: endpoint address for the bulk out pipe for this
54 * port. 56 * port.
55 * @write_wait: a wait_queue_head_t used by the port. 57 * @write_wait: a wait_queue_head_t used by the port.
56 * @work: work queue entry for the line discipline waking up. 58 * @work: work queue entry for the line discipline waking up.
57 * @open_count: number of times this port has been opened.
58 * @throttled: nonzero if the read urb is inactive to throttle the device 59 * @throttled: nonzero if the read urb is inactive to throttle the device
59 * @throttle_req: nonzero if the tty wants to throttle us 60 * @throttle_req: nonzero if the tty wants to throttle us
61 * @console: attached usb serial console
62 * @dev: pointer to the serial device
60 * 63 *
61 * This structure is used by the usb-serial core and drivers for the specific 64 * This structure is used by the usb-serial core and drivers for the specific
62 * ports of a device. 65 * ports of a device.
diff --git a/include/net/netfilter/nf_conntrack_expect.h b/include/net/netfilter/nf_conntrack_expect.h
index ab17a159ac66..a9652806d0df 100644
--- a/include/net/netfilter/nf_conntrack_expect.h
+++ b/include/net/netfilter/nf_conntrack_expect.h
@@ -99,9 +99,12 @@ void nf_ct_expect_init(struct nf_conntrack_expect *, unsigned int, u_int8_t,
99 const union nf_inet_addr *, 99 const union nf_inet_addr *,
100 u_int8_t, const __be16 *, const __be16 *); 100 u_int8_t, const __be16 *, const __be16 *);
101void nf_ct_expect_put(struct nf_conntrack_expect *exp); 101void nf_ct_expect_put(struct nf_conntrack_expect *exp);
102int nf_ct_expect_related(struct nf_conntrack_expect *expect);
103int nf_ct_expect_related_report(struct nf_conntrack_expect *expect, 102int nf_ct_expect_related_report(struct nf_conntrack_expect *expect,
104 u32 pid, int report); 103 u32 pid, int report);
104static inline int nf_ct_expect_related(struct nf_conntrack_expect *expect)
105{
106 return nf_ct_expect_related_report(expect, 0, 0);
107}
105 108
106#endif /*_NF_CONNTRACK_EXPECT_H*/ 109#endif /*_NF_CONNTRACK_EXPECT_H*/
107 110
diff --git a/include/net/netfilter/nf_nat.h b/include/net/netfilter/nf_nat.h
index 9dc1039ff78b..8df0b7f7fc6e 100644
--- a/include/net/netfilter/nf_nat.h
+++ b/include/net/netfilter/nf_nat.h
@@ -18,6 +18,7 @@ enum nf_nat_manip_type
18#define IP_NAT_RANGE_MAP_IPS 1 18#define IP_NAT_RANGE_MAP_IPS 1
19#define IP_NAT_RANGE_PROTO_SPECIFIED 2 19#define IP_NAT_RANGE_PROTO_SPECIFIED 2
20#define IP_NAT_RANGE_PROTO_RANDOM 4 20#define IP_NAT_RANGE_PROTO_RANDOM 4
21#define IP_NAT_RANGE_PERSISTENT 8
21 22
22/* NAT sequence number modifications */ 23/* NAT sequence number modifications */
23struct nf_nat_seq { 24struct nf_nat_seq {
diff --git a/include/net/udp.h b/include/net/udp.h
index 93dbe294d459..90e6ce56be65 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -124,8 +124,6 @@ static inline void udp_lib_close(struct sock *sk, long timeout)
124 sk_common_release(sk); 124 sk_common_release(sk);
125} 125}
126 126
127extern int ipv4_rcv_saddr_equal(const struct sock *sk1,
128 const struct sock *sk2);
129extern int udp_lib_get_port(struct sock *sk, unsigned short snum, 127extern int udp_lib_get_port(struct sock *sk, unsigned short snum,
130 int (*)(const struct sock*,const struct sock*)); 128 int (*)(const struct sock*,const struct sock*));
131 129
diff --git a/include/scsi/scsi_scan.h b/include/scsi/scsi_scan.h
new file mode 100644
index 000000000000..78898889243d
--- /dev/null
+++ b/include/scsi/scsi_scan.h
@@ -0,0 +1,11 @@
1#ifndef _SCSI_SCSI_SCAN_H
2#define _SCSI_SCSI_SCAN_H
3
4#ifdef CONFIG_SCSI
5/* drivers/scsi/scsi_scan.c */
6extern int scsi_complete_async_scans(void);
7#else
8static inline int scsi_complete_async_scans(void) { return 0; }
9#endif
10
11#endif /* _SCSI_SCSI_SCAN_H */
diff --git a/include/sound/jack.h b/include/sound/jack.h
index 6b013c6f6a04..f236e426a706 100644
--- a/include/sound/jack.h
+++ b/include/sound/jack.h
@@ -50,6 +50,8 @@ struct snd_jack {
50 int type; 50 int type;
51 const char *id; 51 const char *id;
52 char name[100]; 52 char name[100];
53 void *private_data;
54 void (*private_free)(struct snd_jack *);
53}; 55};
54 56
55#ifdef CONFIG_SND_JACK 57#ifdef CONFIG_SND_JACK
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index 8904b1900d7f..c17296891617 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -268,7 +268,8 @@ struct snd_pcm_runtime {
268 int overrange; 268 int overrange;
269 snd_pcm_uframes_t avail_max; 269 snd_pcm_uframes_t avail_max;
270 snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */ 270 snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */
271 snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time*/ 271 snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time */
272 unsigned long hw_ptr_jiffies; /* Time when hw_ptr is updated */
272 273
273 /* -- HW params -- */ 274 /* -- HW params -- */
274 snd_pcm_access_t access; /* access mode */ 275 snd_pcm_access_t access; /* access mode */
diff --git a/include/sound/pxa2xx-lib.h b/include/sound/pxa2xx-lib.h
index 2c894b600e5b..2fd3d251d9a5 100644
--- a/include/sound/pxa2xx-lib.h
+++ b/include/sound/pxa2xx-lib.h
@@ -42,19 +42,4 @@ extern int pxa2xx_ac97_hw_resume(void);
42extern int pxa2xx_ac97_hw_probe(struct platform_device *dev); 42extern int pxa2xx_ac97_hw_probe(struct platform_device *dev);
43extern void pxa2xx_ac97_hw_remove(struct platform_device *dev); 43extern void pxa2xx_ac97_hw_remove(struct platform_device *dev);
44 44
45/* AC97 platform_data */
46/**
47 * struct pxa2xx_ac97_platform_data - pxa ac97 platform data
48 * @reset_gpio: AC97 reset gpio (normally gpio113 or gpio95)
49 * a -1 value means no gpio will be used for reset
50 *
51 * Platform data should only be specified for pxa27x CPUs where a silicon bug
52 * prevents correct operation of the reset line. If not specified, the default
53 * behaviour is to consider gpio 113 as the AC97 reset line, which is the
54 * default on most boards.
55 */
56struct pxa2xx_ac97_platform_data {
57 int reset_gpio;
58};
59
60#endif 45#endif
diff --git a/include/trace/syscall.h b/include/trace/syscall.h
new file mode 100644
index 000000000000..8cfe515cbc47
--- /dev/null
+++ b/include/trace/syscall.h
@@ -0,0 +1,35 @@
1#ifndef _TRACE_SYSCALL_H
2#define _TRACE_SYSCALL_H
3
4#include <asm/ptrace.h>
5
6/*
7 * A syscall entry in the ftrace syscalls array.
8 *
9 * @name: name of the syscall
10 * @nb_args: number of parameters it takes
11 * @types: list of types as strings
12 * @args: list of args as strings (args[i] matches types[i])
13 */
14struct syscall_metadata {
15 const char *name;
16 int nb_args;
17 const char **types;
18 const char **args;
19};
20
21#ifdef CONFIG_FTRACE_SYSCALLS
22extern void arch_init_ftrace_syscalls(void);
23extern struct syscall_metadata *syscall_nr_to_meta(int nr);
24extern void start_ftrace_syscalls(void);
25extern void stop_ftrace_syscalls(void);
26extern void ftrace_syscall_enter(struct pt_regs *regs);
27extern void ftrace_syscall_exit(struct pt_regs *regs);
28#else
29static inline void start_ftrace_syscalls(void) { }
30static inline void stop_ftrace_syscalls(void) { }
31static inline void ftrace_syscall_enter(struct pt_regs *regs) { }
32static inline void ftrace_syscall_exit(struct pt_regs *regs) { }
33#endif
34
35#endif /* _TRACE_SYSCALL_H */
diff --git a/include/video/cyblafb.h b/include/video/cyblafb.h
deleted file mode 100644
index d3c1d4e2c8e3..000000000000
--- a/include/video/cyblafb.h
+++ /dev/null
@@ -1,175 +0,0 @@
1
2#ifndef CYBLAFB_DEBUG
3#define CYBLAFB_DEBUG 0
4#endif
5
6#if CYBLAFB_DEBUG
7#define debug(f,a...) printk("%s:" f, __func__ , ## a);
8#else
9#define debug(f,a...)
10#endif
11
12#define output(f, a...) printk("cyblafb: " f, ## a)
13
14#define Kb (1024)
15#define Mb (Kb*Kb)
16
17/* PCI IDS of supported cards temporarily here */
18
19#define CYBERBLADEi1 0x8500
20
21/* these defines are for 'lcd' variable */
22#define LCD_STRETCH 0
23#define LCD_CENTER 1
24#define LCD_BIOS 2
25
26/* display types */
27#define DISPLAY_CRT 0
28#define DISPLAY_FP 1
29
30#define ROP_S 0xCC
31
32#define point(x,y) ((y)<<16|(x))
33
34//
35// Attribute Regs, ARxx, 3c0/3c1
36//
37#define AR00 0x00
38#define AR01 0x01
39#define AR02 0x02
40#define AR03 0x03
41#define AR04 0x04
42#define AR05 0x05
43#define AR06 0x06
44#define AR07 0x07
45#define AR08 0x08
46#define AR09 0x09
47#define AR0A 0x0A
48#define AR0B 0x0B
49#define AR0C 0x0C
50#define AR0D 0x0D
51#define AR0E 0x0E
52#define AR0F 0x0F
53#define AR10 0x10
54#define AR12 0x12
55#define AR13 0x13
56
57//
58// Sequencer Regs, SRxx, 3c4/3c5
59//
60#define SR00 0x00
61#define SR01 0x01
62#define SR02 0x02
63#define SR03 0x03
64#define SR04 0x04
65#define SR0D 0x0D
66#define SR0E 0x0E
67#define SR11 0x11
68#define SR18 0x18
69#define SR19 0x19
70
71//
72//
73//
74#define CR00 0x00
75#define CR01 0x01
76#define CR02 0x02
77#define CR03 0x03
78#define CR04 0x04
79#define CR05 0x05
80#define CR06 0x06
81#define CR07 0x07
82#define CR08 0x08
83#define CR09 0x09
84#define CR0A 0x0A
85#define CR0B 0x0B
86#define CR0C 0x0C
87#define CR0D 0x0D
88#define CR0E 0x0E
89#define CR0F 0x0F
90#define CR10 0x10
91#define CR11 0x11
92#define CR12 0x12
93#define CR13 0x13
94#define CR14 0x14
95#define CR15 0x15
96#define CR16 0x16
97#define CR17 0x17
98#define CR18 0x18
99#define CR19 0x19
100#define CR1A 0x1A
101#define CR1B 0x1B
102#define CR1C 0x1C
103#define CR1D 0x1D
104#define CR1E 0x1E
105#define CR1F 0x1F
106#define CR20 0x20
107#define CR21 0x21
108#define CR27 0x27
109#define CR29 0x29
110#define CR2A 0x2A
111#define CR2B 0x2B
112#define CR2D 0x2D
113#define CR2F 0x2F
114#define CR36 0x36
115#define CR38 0x38
116#define CR39 0x39
117#define CR3A 0x3A
118#define CR55 0x55
119#define CR56 0x56
120#define CR57 0x57
121#define CR58 0x58
122
123//
124//
125//
126
127#define GR00 0x01
128#define GR01 0x01
129#define GR02 0x02
130#define GR03 0x03
131#define GR04 0x04
132#define GR05 0x05
133#define GR06 0x06
134#define GR07 0x07
135#define GR08 0x08
136#define GR0F 0x0F
137#define GR20 0x20
138#define GR23 0x23
139#define GR2F 0x2F
140#define GR30 0x30
141#define GR31 0x31
142#define GR33 0x33
143#define GR52 0x52
144#define GR53 0x53
145#define GR5D 0x5d
146
147
148//
149// Graphics Engine
150//
151#define GEBase 0x2100 // could be mapped elsewhere if we like it
152#define GE00 (GEBase+0x00) // source 1, p 111
153#define GE04 (GEBase+0x04) // source 2, p 111
154#define GE08 (GEBase+0x08) // destination 1, p 111
155#define GE0C (GEBase+0x0C) // destination 2, p 112
156#define GE10 (GEBase+0x10) // right view base & enable, p 112
157#define GE13 (GEBase+0x13) // left view base & enable, p 112
158#define GE18 (GEBase+0x18) // block write start address, p 112
159#define GE1C (GEBase+0x1C) // block write end address, p 112
160#define GE20 (GEBase+0x20) // engine status, p 113
161#define GE24 (GEBase+0x24) // reset all GE pointers
162#define GE44 (GEBase+0x44) // command register, p 126
163#define GE48 (GEBase+0x48) // raster operation, p 127
164#define GE60 (GEBase+0x60) // foreground color, p 128
165#define GE64 (GEBase+0x64) // background color, p 128
166#define GE6C (GEBase+0x6C) // Pattern and Style, p 129, ok
167#define GE9C (GEBase+0x9C) // pixel engine data port, p 125
168#define GEB8 (GEBase+0xB8) // Destination Stride / Buffer Base 0, p 133
169#define GEBC (GEBase+0xBC) // Destination Stride / Buffer Base 1, p 133
170#define GEC0 (GEBase+0xC0) // Destination Stride / Buffer Base 2, p 133
171#define GEC4 (GEBase+0xC4) // Destination Stride / Buffer Base 3, p 133
172#define GEC8 (GEBase+0xC8) // Source Stride / Buffer Base 0, p 133
173#define GECC (GEBase+0xCC) // Source Stride / Buffer Base 1, p 133
174#define GED0 (GEBase+0xD0) // Source Stride / Buffer Base 2, p 133
175#define GED4 (GEBase+0xD4) // Source Stride / Buffer Base 3, p 133
diff --git a/init/Kconfig b/init/Kconfig
index f2f9b5362b48..7be4d3836745 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -808,6 +808,14 @@ config KALLSYMS_EXTRA_PASS
808 you wait for kallsyms to be fixed. 808 you wait for kallsyms to be fixed.
809 809
810 810
811config STRIP_ASM_SYMS
812 bool "Strip assembler-generated symbols during link"
813 default n
814 help
815 Strip internal assembler-generated symbols during a link (symbols
816 that look like '.Lxxx') so they don't pollute the output of
817 get_wchan() and suchlike.
818
811config HOTPLUG 819config HOTPLUG
812 bool "Support for hot-pluggable devices" if EMBEDDED 820 bool "Support for hot-pluggable devices" if EMBEDDED
813 default y 821 default y
diff --git a/init/initramfs.c b/init/initramfs.c
index 80cd713f6cc5..9ee7b7810417 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -310,7 +310,8 @@ static int __init do_name(void)
310 if (wfd >= 0) { 310 if (wfd >= 0) {
311 sys_fchown(wfd, uid, gid); 311 sys_fchown(wfd, uid, gid);
312 sys_fchmod(wfd, mode); 312 sys_fchmod(wfd, mode);
313 sys_ftruncate(wfd, body_len); 313 if (body_len)
314 sys_ftruncate(wfd, body_len);
314 vcollected = kstrdup(collected, GFP_KERNEL); 315 vcollected = kstrdup(collected, GFP_KERNEL);
315 state = CopyFile; 316 state = CopyFile;
316 } 317 }
@@ -515,6 +516,7 @@ skip:
515 initrd_end = 0; 516 initrd_end = 0;
516} 517}
517 518
519#ifdef CONFIG_BLK_DEV_RAM
518#define BUF_SIZE 1024 520#define BUF_SIZE 1024
519static void __init clean_rootfs(void) 521static void __init clean_rootfs(void)
520{ 522{
@@ -561,6 +563,7 @@ static void __init clean_rootfs(void)
561 sys_close(fd); 563 sys_close(fd);
562 kfree(buf); 564 kfree(buf);
563} 565}
566#endif
564 567
565static int __init populate_rootfs(void) 568static int __init populate_rootfs(void)
566{ 569{
diff --git a/init/main.c b/init/main.c
index 3585f073d636..3bbf93be744c 100644
--- a/init/main.c
+++ b/init/main.c
@@ -492,6 +492,11 @@ static int __init do_early_param(char *param, char *val)
492 return 0; 492 return 0;
493} 493}
494 494
495void __init parse_early_options(char *cmdline)
496{
497 parse_args("early options", cmdline, NULL, 0, do_early_param);
498}
499
495/* Arch code calls this early on, or if not, just before other parsing. */ 500/* Arch code calls this early on, or if not, just before other parsing. */
496void __init parse_early_param(void) 501void __init parse_early_param(void)
497{ 502{
@@ -503,7 +508,7 @@ void __init parse_early_param(void)
503 508
504 /* All fall through to do_early_param. */ 509 /* All fall through to do_early_param. */
505 strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE); 510 strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE);
506 parse_args("early options", tmp_cmdline, NULL, 0, do_early_param); 511 parse_early_options(tmp_cmdline);
507 done = 1; 512 done = 1;
508} 513}
509 514
diff --git a/ipc/mq_sysctl.c b/ipc/mq_sysctl.c
index 89f60ec8ee54..24ae46dfe45d 100644
--- a/ipc/mq_sysctl.c
+++ b/ipc/mq_sysctl.c
@@ -22,6 +22,7 @@
22#define MIN_MSGSIZEMAX 128 /* min value for msgsize_max */ 22#define MIN_MSGSIZEMAX 128 /* min value for msgsize_max */
23#define MAX_MSGSIZEMAX (8192*128) /* max value for msgsize_max */ 23#define MAX_MSGSIZEMAX (8192*128) /* max value for msgsize_max */
24 24
25#ifdef CONFIG_PROC_SYSCTL
25static void *get_mq(ctl_table *table) 26static void *get_mq(ctl_table *table)
26{ 27{
27 char *which = table->data; 28 char *which = table->data;
@@ -30,7 +31,6 @@ static void *get_mq(ctl_table *table)
30 return which; 31 return which;
31} 32}
32 33
33#ifdef CONFIG_PROC_SYSCTL
34static int proc_mq_dointvec(ctl_table *table, int write, struct file *filp, 34static int proc_mq_dointvec(ctl_table *table, int write, struct file *filp,
35 void __user *buffer, size_t *lenp, loff_t *ppos) 35 void __user *buffer, size_t *lenp, loff_t *ppos)
36{ 36{
diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c
index 917ab9525568..6e7351739a82 100644
--- a/kernel/audit_tree.c
+++ b/kernel/audit_tree.c
@@ -734,9 +734,6 @@ int audit_tag_tree(char *old, char *new)
734 dentry = dget(path.dentry); 734 dentry = dget(path.dentry);
735 path_put(&path); 735 path_put(&path);
736 736
737 if (dentry == tagged->mnt_root && dentry == mnt->mnt_root)
738 follow_up(&mnt, &dentry);
739
740 list_add_tail(&list, &tagged->mnt_list); 737 list_add_tail(&list, &tagged->mnt_list);
741 738
742 mutex_lock(&audit_filter_mutex); 739 mutex_lock(&audit_filter_mutex);
diff --git a/kernel/fork.c b/kernel/fork.c
index 989c7c202b3d..b9e2edd00726 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -800,6 +800,12 @@ static void posix_cpu_timers_init_group(struct signal_struct *sig)
800 sig->cputime_expires.virt_exp = cputime_zero; 800 sig->cputime_expires.virt_exp = cputime_zero;
801 sig->cputime_expires.sched_exp = 0; 801 sig->cputime_expires.sched_exp = 0;
802 802
803 if (sig->rlim[RLIMIT_CPU].rlim_cur != RLIM_INFINITY) {
804 sig->cputime_expires.prof_exp =
805 secs_to_cputime(sig->rlim[RLIMIT_CPU].rlim_cur);
806 sig->cputimer.running = 1;
807 }
808
803 /* The timer lists. */ 809 /* The timer lists. */
804 INIT_LIST_HEAD(&sig->cpu_timers[0]); 810 INIT_LIST_HEAD(&sig->cpu_timers[0]);
805 INIT_LIST_HEAD(&sig->cpu_timers[1]); 811 INIT_LIST_HEAD(&sig->cpu_timers[1]);
@@ -815,11 +821,8 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
815 atomic_inc(&current->signal->live); 821 atomic_inc(&current->signal->live);
816 return 0; 822 return 0;
817 } 823 }
818 sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
819
820 if (sig)
821 posix_cpu_timers_init_group(sig);
822 824
825 sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
823 tsk->signal = sig; 826 tsk->signal = sig;
824 if (!sig) 827 if (!sig)
825 return -ENOMEM; 828 return -ENOMEM;
@@ -859,6 +862,8 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
859 memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim); 862 memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim);
860 task_unlock(current->group_leader); 863 task_unlock(current->group_leader);
861 864
865 posix_cpu_timers_init_group(sig);
866
862 acct_init_pacct(&sig->pacct); 867 acct_init_pacct(&sig->pacct);
863 868
864 tty_audit_fork(sig); 869 tty_audit_fork(sig);
diff --git a/kernel/futex.c b/kernel/futex.c
index 6b50a024bca2..eef8cd26b5e5 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -883,7 +883,12 @@ retry_private:
883out_unlock: 883out_unlock:
884 double_unlock_hb(hb1, hb2); 884 double_unlock_hb(hb1, hb2);
885 885
886 /* drop_futex_key_refs() must be called outside the spinlocks. */ 886 /*
887 * drop_futex_key_refs() must be called outside the spinlocks. During
888 * the requeue we moved futex_q's from the hash bucket at key1 to the
889 * one at key2 and updated their key pointer. We no longer need to
890 * hold the references to key1.
891 */
887 while (--drop_count >= 0) 892 while (--drop_count >= 0)
888 drop_futex_key_refs(&key1); 893 drop_futex_key_refs(&key1);
889 894
diff --git a/kernel/irq/numa_migrate.c b/kernel/irq/numa_migrate.c
index 243d6121e50e..44bbdcbaf8d2 100644
--- a/kernel/irq/numa_migrate.c
+++ b/kernel/irq/numa_migrate.c
@@ -54,6 +54,7 @@ static bool init_copy_one_irq_desc(int irq, struct irq_desc *old_desc,
54static void free_one_irq_desc(struct irq_desc *old_desc, struct irq_desc *desc) 54static void free_one_irq_desc(struct irq_desc *old_desc, struct irq_desc *desc)
55{ 55{
56 free_kstat_irqs(old_desc, desc); 56 free_kstat_irqs(old_desc, desc);
57 free_desc_masks(old_desc, desc);
57 arch_free_chip_data(old_desc, desc); 58 arch_free_chip_data(old_desc, desc);
58} 59}
59 60
diff --git a/kernel/kthread.c b/kernel/kthread.c
index 84bbadd4d021..4ebaf8519abf 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -76,6 +76,7 @@ static int kthread(void *_create)
76 76
77 /* OK, tell user we're spawned, wait for stop or wakeup */ 77 /* OK, tell user we're spawned, wait for stop or wakeup */
78 __set_current_state(TASK_UNINTERRUPTIBLE); 78 __set_current_state(TASK_UNINTERRUPTIBLE);
79 create->result = current;
79 complete(&create->started); 80 complete(&create->started);
80 schedule(); 81 schedule();
81 82
@@ -96,22 +97,10 @@ static void create_kthread(struct kthread_create_info *create)
96 97
97 /* We want our own signal handler (we take no signals by default). */ 98 /* We want our own signal handler (we take no signals by default). */
98 pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD); 99 pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD);
99 if (pid < 0) { 100 if (pid < 0)
100 create->result = ERR_PTR(pid); 101 create->result = ERR_PTR(pid);
101 } else { 102 else
102 struct sched_param param = { .sched_priority = 0 };
103 wait_for_completion(&create->started); 103 wait_for_completion(&create->started);
104 read_lock(&tasklist_lock);
105 create->result = find_task_by_pid_ns(pid, &init_pid_ns);
106 read_unlock(&tasklist_lock);
107 /*
108 * root may have changed our (kthreadd's) priority or CPU mask.
109 * The kernel thread should not inherit these properties.
110 */
111 sched_setscheduler(create->result, SCHED_NORMAL, &param);
112 set_user_nice(create->result, KTHREAD_NICE_LEVEL);
113 set_cpus_allowed_ptr(create->result, cpu_all_mask);
114 }
115 complete(&create->done); 104 complete(&create->done);
116} 105}
117 106
@@ -154,11 +143,20 @@ struct task_struct *kthread_create(int (*threadfn)(void *data),
154 wait_for_completion(&create.done); 143 wait_for_completion(&create.done);
155 144
156 if (!IS_ERR(create.result)) { 145 if (!IS_ERR(create.result)) {
146 struct sched_param param = { .sched_priority = 0 };
157 va_list args; 147 va_list args;
148
158 va_start(args, namefmt); 149 va_start(args, namefmt);
159 vsnprintf(create.result->comm, sizeof(create.result->comm), 150 vsnprintf(create.result->comm, sizeof(create.result->comm),
160 namefmt, args); 151 namefmt, args);
161 va_end(args); 152 va_end(args);
153 /*
154 * root may have changed our (kthreadd's) priority or CPU mask.
155 * The kernel thread should not inherit these properties.
156 */
157 sched_setscheduler_nocheck(create.result, SCHED_NORMAL, &param);
158 set_user_nice(create.result, KTHREAD_NICE_LEVEL);
159 set_cpus_allowed_ptr(create.result, cpu_all_mask);
162 } 160 }
163 return create.result; 161 return create.result;
164} 162}
diff --git a/kernel/module.c b/kernel/module.c
index 05f014efa32c..e797812a4d95 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2388,6 +2388,9 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
2388 blocking_notifier_call_chain(&module_notify_list, 2388 blocking_notifier_call_chain(&module_notify_list,
2389 MODULE_STATE_LIVE, mod); 2389 MODULE_STATE_LIVE, mod);
2390 2390
2391 /* We need to finish all async code before the module init sequence is done */
2392 async_synchronize_full();
2393
2391 mutex_lock(&module_mutex); 2394 mutex_lock(&module_mutex);
2392 /* Drop initial reference. */ 2395 /* Drop initial reference. */
2393 module_put(mod); 2396 module_put(mod);
diff --git a/kernel/mutex.c b/kernel/mutex.c
index 5d79781394a3..507cf2b5e9f1 100644
--- a/kernel/mutex.c
+++ b/kernel/mutex.c
@@ -148,7 +148,8 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
148 148
149 preempt_disable(); 149 preempt_disable();
150 mutex_acquire(&lock->dep_map, subclass, 0, ip); 150 mutex_acquire(&lock->dep_map, subclass, 0, ip);
151#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) 151#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) && \
152 !defined(CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES)
152 /* 153 /*
153 * Optimistic spinning. 154 * Optimistic spinning.
154 * 155 *
diff --git a/kernel/panic.c b/kernel/panic.c
index 3fd8c5bf8b39..934fb377f4b3 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -213,8 +213,16 @@ unsigned long get_taint(void)
213 213
214void add_taint(unsigned flag) 214void add_taint(unsigned flag)
215{ 215{
216 /* can't trust the integrity of the kernel anymore: */ 216 /*
217 debug_locks = 0; 217 * Can't trust the integrity of the kernel anymore.
218 * We don't call directly debug_locks_off() because the issue
219 * is not necessarily serious enough to set oops_in_progress to 1
220 * Also we want to keep up lockdep for staging development and
221 * post-warning case.
222 */
223 if (flag != TAINT_CRAP && flag != TAINT_WARN && __debug_locks_off())
224 printk(KERN_WARNING "Disabling lockdep due to kernel taint\n");
225
218 set_bit(flag, &tainted_mask); 226 set_bit(flag, &tainted_mask);
219} 227}
220EXPORT_SYMBOL(add_taint); 228EXPORT_SYMBOL(add_taint);
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index 8e5d9a68b022..c9dcf98b4463 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -18,7 +18,7 @@ void update_rlimit_cpu(unsigned long rlim_new)
18 18
19 cputime = secs_to_cputime(rlim_new); 19 cputime = secs_to_cputime(rlim_new);
20 if (cputime_eq(current->signal->it_prof_expires, cputime_zero) || 20 if (cputime_eq(current->signal->it_prof_expires, cputime_zero) ||
21 cputime_lt(current->signal->it_prof_expires, cputime)) { 21 cputime_gt(current->signal->it_prof_expires, cputime)) {
22 spin_lock_irq(&current->sighand->siglock); 22 spin_lock_irq(&current->sighand->siglock);
23 set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL); 23 set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL);
24 spin_unlock_irq(&current->sighand->siglock); 24 spin_unlock_irq(&current->sighand->siglock);
@@ -224,7 +224,7 @@ static int cpu_clock_sample(const clockid_t which_clock, struct task_struct *p,
224 cpu->cpu = virt_ticks(p); 224 cpu->cpu = virt_ticks(p);
225 break; 225 break;
226 case CPUCLOCK_SCHED: 226 case CPUCLOCK_SCHED:
227 cpu->sched = p->se.sum_exec_runtime + task_delta_exec(p); 227 cpu->sched = task_sched_runtime(p);
228 break; 228 break;
229 } 229 }
230 return 0; 230 return 0;
@@ -305,18 +305,19 @@ static int cpu_clock_sample_group(const clockid_t which_clock,
305{ 305{
306 struct task_cputime cputime; 306 struct task_cputime cputime;
307 307
308 thread_group_cputime(p, &cputime);
309 switch (CPUCLOCK_WHICH(which_clock)) { 308 switch (CPUCLOCK_WHICH(which_clock)) {
310 default: 309 default:
311 return -EINVAL; 310 return -EINVAL;
312 case CPUCLOCK_PROF: 311 case CPUCLOCK_PROF:
312 thread_group_cputime(p, &cputime);
313 cpu->cpu = cputime_add(cputime.utime, cputime.stime); 313 cpu->cpu = cputime_add(cputime.utime, cputime.stime);
314 break; 314 break;
315 case CPUCLOCK_VIRT: 315 case CPUCLOCK_VIRT:
316 thread_group_cputime(p, &cputime);
316 cpu->cpu = cputime.utime; 317 cpu->cpu = cputime.utime;
317 break; 318 break;
318 case CPUCLOCK_SCHED: 319 case CPUCLOCK_SCHED:
319 cpu->sched = cputime.sum_exec_runtime + task_delta_exec(p); 320 cpu->sched = thread_group_sched_runtime(p);
320 break; 321 break;
321 } 322 }
322 return 0; 323 return 0;
diff --git a/kernel/power/disk.c b/kernel/power/disk.c
index 5f21ab2bbcdf..e71ca9cd81b2 100644
--- a/kernel/power/disk.c
+++ b/kernel/power/disk.c
@@ -22,6 +22,7 @@
22#include <linux/console.h> 22#include <linux/console.h>
23#include <linux/cpu.h> 23#include <linux/cpu.h>
24#include <linux/freezer.h> 24#include <linux/freezer.h>
25#include <scsi/scsi_scan.h>
25#include <asm/suspend.h> 26#include <asm/suspend.h>
26 27
27#include "power.h" 28#include "power.h"
@@ -655,32 +656,42 @@ static int software_resume(void)
655 * here to avoid lockdep complaining. 656 * here to avoid lockdep complaining.
656 */ 657 */
657 mutex_lock_nested(&pm_mutex, SINGLE_DEPTH_NESTING); 658 mutex_lock_nested(&pm_mutex, SINGLE_DEPTH_NESTING);
659
660 if (swsusp_resume_device)
661 goto Check_image;
662
663 if (!strlen(resume_file)) {
664 error = -ENOENT;
665 goto Unlock;
666 }
667
668 pr_debug("PM: Checking image partition %s\n", resume_file);
669
670 /* Check if the device is there */
671 swsusp_resume_device = name_to_dev_t(resume_file);
658 if (!swsusp_resume_device) { 672 if (!swsusp_resume_device) {
659 if (!strlen(resume_file)) {
660 mutex_unlock(&pm_mutex);
661 return -ENOENT;
662 }
663 /* 673 /*
664 * Some device discovery might still be in progress; we need 674 * Some device discovery might still be in progress; we need
665 * to wait for this to finish. 675 * to wait for this to finish.
666 */ 676 */
667 wait_for_device_probe(); 677 wait_for_device_probe();
678 /*
679 * We can't depend on SCSI devices being available after loading
680 * one of their modules until scsi_complete_async_scans() is
681 * called and the resume device usually is a SCSI one.
682 */
683 scsi_complete_async_scans();
684
668 swsusp_resume_device = name_to_dev_t(resume_file); 685 swsusp_resume_device = name_to_dev_t(resume_file);
669 pr_debug("PM: Resume from partition %s\n", resume_file); 686 if (!swsusp_resume_device) {
670 } else { 687 error = -ENODEV;
671 pr_debug("PM: Resume from partition %d:%d\n", 688 goto Unlock;
672 MAJOR(swsusp_resume_device), 689 }
673 MINOR(swsusp_resume_device));
674 } 690 }
675 691
676 if (noresume) { 692 Check_image:
677 /** 693 pr_debug("PM: Resume from partition %d:%d\n",
678 * FIXME: If noresume is specified, we need to find the 694 MAJOR(swsusp_resume_device), MINOR(swsusp_resume_device));
679 * partition and reset it back to normal swap space.
680 */
681 mutex_unlock(&pm_mutex);
682 return 0;
683 }
684 695
685 pr_debug("PM: Checking hibernation image.\n"); 696 pr_debug("PM: Checking hibernation image.\n");
686 error = swsusp_check(); 697 error = swsusp_check();
diff --git a/kernel/power/main.c b/kernel/power/main.c
index f172f41858bb..f99ed6a75eac 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -291,20 +291,26 @@ static int suspend_enter(suspend_state_t state)
291 291
292 device_pm_lock(); 292 device_pm_lock();
293 293
294 if (suspend_ops->prepare) {
295 error = suspend_ops->prepare();
296 if (error)
297 goto Done;
298 }
299
294 error = device_power_down(PMSG_SUSPEND); 300 error = device_power_down(PMSG_SUSPEND);
295 if (error) { 301 if (error) {
296 printk(KERN_ERR "PM: Some devices failed to power down\n"); 302 printk(KERN_ERR "PM: Some devices failed to power down\n");
297 goto Done; 303 goto Platfrom_finish;
298 } 304 }
299 305
300 if (suspend_ops->prepare) { 306 if (suspend_ops->prepare_late) {
301 error = suspend_ops->prepare(); 307 error = suspend_ops->prepare_late();
302 if (error) 308 if (error)
303 goto Power_up_devices; 309 goto Power_up_devices;
304 } 310 }
305 311
306 if (suspend_test(TEST_PLATFORM)) 312 if (suspend_test(TEST_PLATFORM))
307 goto Platfrom_finish; 313 goto Platform_wake;
308 314
309 error = disable_nonboot_cpus(); 315 error = disable_nonboot_cpus();
310 if (error || suspend_test(TEST_CPUS)) 316 if (error || suspend_test(TEST_CPUS))
@@ -326,13 +332,17 @@ static int suspend_enter(suspend_state_t state)
326 Enable_cpus: 332 Enable_cpus:
327 enable_nonboot_cpus(); 333 enable_nonboot_cpus();
328 334
329 Platfrom_finish: 335 Platform_wake:
330 if (suspend_ops->finish) 336 if (suspend_ops->wake)
331 suspend_ops->finish(); 337 suspend_ops->wake();
332 338
333 Power_up_devices: 339 Power_up_devices:
334 device_power_up(PMSG_RESUME); 340 device_power_up(PMSG_RESUME);
335 341
342 Platfrom_finish:
343 if (suspend_ops->finish)
344 suspend_ops->finish();
345
336 Done: 346 Done:
337 device_pm_unlock(); 347 device_pm_unlock();
338 348
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index 505f319e489c..8ba052c86d48 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -64,8 +64,6 @@ static int submit(int rw, pgoff_t page_off, struct page *page,
64 struct bio *bio; 64 struct bio *bio;
65 65
66 bio = bio_alloc(__GFP_WAIT | __GFP_HIGH, 1); 66 bio = bio_alloc(__GFP_WAIT | __GFP_HIGH, 1);
67 if (!bio)
68 return -ENOMEM;
69 bio->bi_sector = page_off * (PAGE_SIZE >> 9); 67 bio->bi_sector = page_off * (PAGE_SIZE >> 9);
70 bio->bi_bdev = resume_bdev; 68 bio->bi_bdev = resume_bdev;
71 bio->bi_end_io = end_swap_bio_read; 69 bio->bi_end_io = end_swap_bio_read;
diff --git a/kernel/power/user.c b/kernel/power/user.c
index 6c85359364f2..ed97375daae9 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -24,6 +24,7 @@
24#include <linux/cpu.h> 24#include <linux/cpu.h>
25#include <linux/freezer.h> 25#include <linux/freezer.h>
26#include <linux/smp_lock.h> 26#include <linux/smp_lock.h>
27#include <scsi/scsi_scan.h>
27 28
28#include <asm/uaccess.h> 29#include <asm/uaccess.h>
29 30
@@ -92,6 +93,7 @@ static int snapshot_open(struct inode *inode, struct file *filp)
92 filp->private_data = data; 93 filp->private_data = data;
93 memset(&data->handle, 0, sizeof(struct snapshot_handle)); 94 memset(&data->handle, 0, sizeof(struct snapshot_handle));
94 if ((filp->f_flags & O_ACCMODE) == O_RDONLY) { 95 if ((filp->f_flags & O_ACCMODE) == O_RDONLY) {
96 /* Hibernating. The image device should be accessible. */
95 data->swap = swsusp_resume_device ? 97 data->swap = swsusp_resume_device ?
96 swap_type_of(swsusp_resume_device, 0, NULL) : -1; 98 swap_type_of(swsusp_resume_device, 0, NULL) : -1;
97 data->mode = O_RDONLY; 99 data->mode = O_RDONLY;
@@ -99,6 +101,13 @@ static int snapshot_open(struct inode *inode, struct file *filp)
99 if (error) 101 if (error)
100 pm_notifier_call_chain(PM_POST_HIBERNATION); 102 pm_notifier_call_chain(PM_POST_HIBERNATION);
101 } else { 103 } else {
104 /*
105 * Resuming. We may need to wait for the image device to
106 * appear.
107 */
108 wait_for_device_probe();
109 scsi_complete_async_scans();
110
102 data->swap = -1; 111 data->swap = -1;
103 data->mode = O_WRONLY; 112 data->mode = O_WRONLY;
104 error = pm_notifier_call_chain(PM_RESTORE_PREPARE); 113 error = pm_notifier_call_chain(PM_RESTORE_PREPARE);
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index aaad0ec34194..dfcd83ceee3b 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -21,9 +21,7 @@
21#include <linux/audit.h> 21#include <linux/audit.h>
22#include <linux/pid_namespace.h> 22#include <linux/pid_namespace.h>
23#include <linux/syscalls.h> 23#include <linux/syscalls.h>
24 24#include <linux/uaccess.h>
25#include <asm/pgtable.h>
26#include <asm/uaccess.h>
27 25
28 26
29/* 27/*
@@ -48,7 +46,7 @@ void __ptrace_link(struct task_struct *child, struct task_struct *new_parent)
48 list_add(&child->ptrace_entry, &new_parent->ptraced); 46 list_add(&child->ptrace_entry, &new_parent->ptraced);
49 child->parent = new_parent; 47 child->parent = new_parent;
50} 48}
51 49
52/* 50/*
53 * Turn a tracing stop into a normal stop now, since with no tracer there 51 * Turn a tracing stop into a normal stop now, since with no tracer there
54 * would be no way to wake it up with SIGCONT or SIGKILL. If there was a 52 * would be no way to wake it up with SIGCONT or SIGKILL. If there was a
@@ -173,7 +171,7 @@ bool ptrace_may_access(struct task_struct *task, unsigned int mode)
173 task_lock(task); 171 task_lock(task);
174 err = __ptrace_may_access(task, mode); 172 err = __ptrace_may_access(task, mode);
175 task_unlock(task); 173 task_unlock(task);
176 return (!err ? true : false); 174 return !err;
177} 175}
178 176
179int ptrace_attach(struct task_struct *task) 177int ptrace_attach(struct task_struct *task)
@@ -358,7 +356,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
358 copied += retval; 356 copied += retval;
359 src += retval; 357 src += retval;
360 dst += retval; 358 dst += retval;
361 len -= retval; 359 len -= retval;
362 } 360 }
363 return copied; 361 return copied;
364} 362}
@@ -383,7 +381,7 @@ int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long ds
383 copied += retval; 381 copied += retval;
384 src += retval; 382 src += retval;
385 dst += retval; 383 dst += retval;
386 len -= retval; 384 len -= retval;
387 } 385 }
388 return copied; 386 return copied;
389} 387}
@@ -496,9 +494,9 @@ static int ptrace_resume(struct task_struct *child, long request, long data)
496 if (unlikely(!arch_has_single_step())) 494 if (unlikely(!arch_has_single_step()))
497 return -EIO; 495 return -EIO;
498 user_enable_single_step(child); 496 user_enable_single_step(child);
499 } 497 } else {
500 else
501 user_disable_single_step(child); 498 user_disable_single_step(child);
499 }
502 500
503 child->exit_code = data; 501 child->exit_code = data;
504 wake_up_process(child); 502 wake_up_process(child);
@@ -606,10 +604,11 @@ repeat:
606 ret = security_ptrace_traceme(current->parent); 604 ret = security_ptrace_traceme(current->parent);
607 605
608 /* 606 /*
609 * Set the ptrace bit in the process ptrace flags. 607 * Check PF_EXITING to ensure ->real_parent has not passed
610 * Then link us on our parent's ptraced list. 608 * exit_ptrace(). Otherwise we don't report the error but
609 * pretend ->real_parent untraces us right after return.
611 */ 610 */
612 if (!ret) { 611 if (!ret && !(current->real_parent->flags & PF_EXITING)) {
613 current->ptrace |= PT_PTRACED; 612 current->ptrace |= PT_PTRACED;
614 __ptrace_link(current, current->real_parent); 613 __ptrace_link(current, current->real_parent);
615 } 614 }
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c
index 2c7b8457d0d2..a967c9feb90a 100644
--- a/kernel/rcupdate.c
+++ b/kernel/rcupdate.c
@@ -58,6 +58,10 @@ static DEFINE_MUTEX(rcu_barrier_mutex);
58static struct completion rcu_barrier_completion; 58static struct completion rcu_barrier_completion;
59int rcu_scheduler_active __read_mostly; 59int rcu_scheduler_active __read_mostly;
60 60
61static atomic_t rcu_migrate_type_count = ATOMIC_INIT(0);
62static struct rcu_head rcu_migrate_head[3];
63static DECLARE_WAIT_QUEUE_HEAD(rcu_migrate_wq);
64
61/* 65/*
62 * Awaken the corresponding synchronize_rcu() instance now that a 66 * Awaken the corresponding synchronize_rcu() instance now that a
63 * grace period has elapsed. 67 * grace period has elapsed.
@@ -122,7 +126,10 @@ static void rcu_barrier_func(void *type)
122 } 126 }
123} 127}
124 128
125static inline void wait_migrated_callbacks(void); 129static inline void wait_migrated_callbacks(void)
130{
131 wait_event(rcu_migrate_wq, !atomic_read(&rcu_migrate_type_count));
132}
126 133
127/* 134/*
128 * Orchestrate the specified type of RCU barrier, waiting for all 135 * Orchestrate the specified type of RCU barrier, waiting for all
@@ -179,21 +186,12 @@ void rcu_barrier_sched(void)
179} 186}
180EXPORT_SYMBOL_GPL(rcu_barrier_sched); 187EXPORT_SYMBOL_GPL(rcu_barrier_sched);
181 188
182static atomic_t rcu_migrate_type_count = ATOMIC_INIT(0);
183static struct rcu_head rcu_migrate_head[3];
184static DECLARE_WAIT_QUEUE_HEAD(rcu_migrate_wq);
185
186static void rcu_migrate_callback(struct rcu_head *notused) 189static void rcu_migrate_callback(struct rcu_head *notused)
187{ 190{
188 if (atomic_dec_and_test(&rcu_migrate_type_count)) 191 if (atomic_dec_and_test(&rcu_migrate_type_count))
189 wake_up(&rcu_migrate_wq); 192 wake_up(&rcu_migrate_wq);
190} 193}
191 194
192static inline void wait_migrated_callbacks(void)
193{
194 wait_event(rcu_migrate_wq, !atomic_read(&rcu_migrate_type_count));
195}
196
197static int __cpuinit rcu_barrier_cpu_hotplug(struct notifier_block *self, 195static int __cpuinit rcu_barrier_cpu_hotplug(struct notifier_block *self,
198 unsigned long action, void *hcpu) 196 unsigned long action, void *hcpu)
199{ 197{
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 7f3266922572..d2a372fb0b9b 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -530,8 +530,6 @@ static void note_new_gpnum(struct rcu_state *rsp, struct rcu_data *rdp)
530 rdp->qs_pending = 1; 530 rdp->qs_pending = 1;
531 rdp->passed_quiesc = 0; 531 rdp->passed_quiesc = 0;
532 rdp->gpnum = rsp->gpnum; 532 rdp->gpnum = rsp->gpnum;
533 rdp->n_rcu_pending_force_qs = rdp->n_rcu_pending +
534 RCU_JIFFIES_TILL_FORCE_QS;
535} 533}
536 534
537/* 535/*
@@ -578,8 +576,6 @@ rcu_start_gp(struct rcu_state *rsp, unsigned long flags)
578 rsp->gpnum++; 576 rsp->gpnum++;
579 rsp->signaled = RCU_GP_INIT; /* Hold off force_quiescent_state. */ 577 rsp->signaled = RCU_GP_INIT; /* Hold off force_quiescent_state. */
580 rsp->jiffies_force_qs = jiffies + RCU_JIFFIES_TILL_FORCE_QS; 578 rsp->jiffies_force_qs = jiffies + RCU_JIFFIES_TILL_FORCE_QS;
581 rdp->n_rcu_pending_force_qs = rdp->n_rcu_pending +
582 RCU_JIFFIES_TILL_FORCE_QS;
583 record_gp_stall_check_time(rsp); 579 record_gp_stall_check_time(rsp);
584 dyntick_record_completed(rsp, rsp->completed - 1); 580 dyntick_record_completed(rsp, rsp->completed - 1);
585 note_new_gpnum(rsp, rdp); 581 note_new_gpnum(rsp, rdp);
@@ -1055,7 +1051,6 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
1055{ 1051{
1056 unsigned long flags; 1052 unsigned long flags;
1057 long lastcomp; 1053 long lastcomp;
1058 struct rcu_data *rdp = rsp->rda[smp_processor_id()];
1059 struct rcu_node *rnp = rcu_get_root(rsp); 1054 struct rcu_node *rnp = rcu_get_root(rsp);
1060 u8 signaled; 1055 u8 signaled;
1061 1056
@@ -1066,16 +1061,13 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
1066 return; /* Someone else is already on the job. */ 1061 return; /* Someone else is already on the job. */
1067 } 1062 }
1068 if (relaxed && 1063 if (relaxed &&
1069 (long)(rsp->jiffies_force_qs - jiffies) >= 0 && 1064 (long)(rsp->jiffies_force_qs - jiffies) >= 0)
1070 (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) >= 0)
1071 goto unlock_ret; /* no emergency and done recently. */ 1065 goto unlock_ret; /* no emergency and done recently. */
1072 rsp->n_force_qs++; 1066 rsp->n_force_qs++;
1073 spin_lock(&rnp->lock); 1067 spin_lock(&rnp->lock);
1074 lastcomp = rsp->completed; 1068 lastcomp = rsp->completed;
1075 signaled = rsp->signaled; 1069 signaled = rsp->signaled;
1076 rsp->jiffies_force_qs = jiffies + RCU_JIFFIES_TILL_FORCE_QS; 1070 rsp->jiffies_force_qs = jiffies + RCU_JIFFIES_TILL_FORCE_QS;
1077 rdp->n_rcu_pending_force_qs = rdp->n_rcu_pending +
1078 RCU_JIFFIES_TILL_FORCE_QS;
1079 if (lastcomp == rsp->gpnum) { 1071 if (lastcomp == rsp->gpnum) {
1080 rsp->n_force_qs_ngp++; 1072 rsp->n_force_qs_ngp++;
1081 spin_unlock(&rnp->lock); 1073 spin_unlock(&rnp->lock);
@@ -1144,8 +1136,7 @@ __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
1144 * If an RCU GP has gone long enough, go check for dyntick 1136 * If an RCU GP has gone long enough, go check for dyntick
1145 * idle CPUs and, if needed, send resched IPIs. 1137 * idle CPUs and, if needed, send resched IPIs.
1146 */ 1138 */
1147 if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0 || 1139 if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0)
1148 (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) < 0)
1149 force_quiescent_state(rsp, 1); 1140 force_quiescent_state(rsp, 1);
1150 1141
1151 /* 1142 /*
@@ -1230,8 +1221,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
1230 if (unlikely(++rdp->qlen > qhimark)) { 1221 if (unlikely(++rdp->qlen > qhimark)) {
1231 rdp->blimit = LONG_MAX; 1222 rdp->blimit = LONG_MAX;
1232 force_quiescent_state(rsp, 0); 1223 force_quiescent_state(rsp, 0);
1233 } else if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0 || 1224 } else if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0)
1234 (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) < 0)
1235 force_quiescent_state(rsp, 1); 1225 force_quiescent_state(rsp, 1);
1236 local_irq_restore(flags); 1226 local_irq_restore(flags);
1237} 1227}
@@ -1290,8 +1280,7 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp)
1290 1280
1291 /* Has an RCU GP gone long enough to send resched IPIs &c? */ 1281 /* Has an RCU GP gone long enough to send resched IPIs &c? */
1292 if (ACCESS_ONCE(rsp->completed) != ACCESS_ONCE(rsp->gpnum) && 1282 if (ACCESS_ONCE(rsp->completed) != ACCESS_ONCE(rsp->gpnum) &&
1293 ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0 || 1283 ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0))
1294 (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) < 0))
1295 return 1; 1284 return 1;
1296 1285
1297 /* nothing to do */ 1286 /* nothing to do */
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c
index 4ee954f6a8d5..4b1875ba9404 100644
--- a/kernel/rcutree_trace.c
+++ b/kernel/rcutree_trace.c
@@ -49,14 +49,12 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
49{ 49{
50 if (!rdp->beenonline) 50 if (!rdp->beenonline)
51 return; 51 return;
52 seq_printf(m, "%3d%cc=%ld g=%ld pq=%d pqc=%ld qp=%d rpfq=%ld rp=%x", 52 seq_printf(m, "%3d%cc=%ld g=%ld pq=%d pqc=%ld qp=%d",
53 rdp->cpu, 53 rdp->cpu,
54 cpu_is_offline(rdp->cpu) ? '!' : ' ', 54 cpu_is_offline(rdp->cpu) ? '!' : ' ',
55 rdp->completed, rdp->gpnum, 55 rdp->completed, rdp->gpnum,
56 rdp->passed_quiesc, rdp->passed_quiesc_completed, 56 rdp->passed_quiesc, rdp->passed_quiesc_completed,
57 rdp->qs_pending, 57 rdp->qs_pending);
58 rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending,
59 (int)(rdp->n_rcu_pending & 0xffff));
60#ifdef CONFIG_NO_HZ 58#ifdef CONFIG_NO_HZ
61 seq_printf(m, " dt=%d/%d dn=%d df=%lu", 59 seq_printf(m, " dt=%d/%d dn=%d df=%lu",
62 rdp->dynticks->dynticks, 60 rdp->dynticks->dynticks,
@@ -102,14 +100,12 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp)
102{ 100{
103 if (!rdp->beenonline) 101 if (!rdp->beenonline)
104 return; 102 return;
105 seq_printf(m, "%d,%s,%ld,%ld,%d,%ld,%d,%ld,%ld", 103 seq_printf(m, "%d,%s,%ld,%ld,%d,%ld,%d",
106 rdp->cpu, 104 rdp->cpu,
107 cpu_is_offline(rdp->cpu) ? "\"Y\"" : "\"N\"", 105 cpu_is_offline(rdp->cpu) ? "\"Y\"" : "\"N\"",
108 rdp->completed, rdp->gpnum, 106 rdp->completed, rdp->gpnum,
109 rdp->passed_quiesc, rdp->passed_quiesc_completed, 107 rdp->passed_quiesc, rdp->passed_quiesc_completed,
110 rdp->qs_pending, 108 rdp->qs_pending);
111 rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending,
112 rdp->n_rcu_pending);
113#ifdef CONFIG_NO_HZ 109#ifdef CONFIG_NO_HZ
114 seq_printf(m, ",%d,%d,%d,%lu", 110 seq_printf(m, ",%d,%d,%d,%lu",
115 rdp->dynticks->dynticks, 111 rdp->dynticks->dynticks,
@@ -123,7 +119,7 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp)
123 119
124static int show_rcudata_csv(struct seq_file *m, void *unused) 120static int show_rcudata_csv(struct seq_file *m, void *unused)
125{ 121{
126 seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pqc\",\"pq\",\"rpfq\",\"rp\","); 122 seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pqc\",\"pq\",");
127#ifdef CONFIG_NO_HZ 123#ifdef CONFIG_NO_HZ
128 seq_puts(m, "\"dt\",\"dt nesting\",\"dn\",\"df\","); 124 seq_puts(m, "\"dt\",\"dt nesting\",\"dn\",\"df\",");
129#endif /* #ifdef CONFIG_NO_HZ */ 125#endif /* #ifdef CONFIG_NO_HZ */
diff --git a/kernel/resource.c b/kernel/resource.c
index fd5d7d574bb9..ac5f3a36923f 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -533,43 +533,21 @@ static void __init __reserve_region_with_split(struct resource *root,
533 res->end = end; 533 res->end = end;
534 res->flags = IORESOURCE_BUSY; 534 res->flags = IORESOURCE_BUSY;
535 535
536 for (;;) { 536 conflict = __request_resource(parent, res);
537 conflict = __request_resource(parent, res); 537 if (!conflict)
538 if (!conflict) 538 return;
539 break;
540 if (conflict != parent) {
541 parent = conflict;
542 if (!(conflict->flags & IORESOURCE_BUSY))
543 continue;
544 }
545
546 /* Uhhuh, that didn't work out.. */
547 kfree(res);
548 res = NULL;
549 break;
550 }
551
552 if (!res) {
553 /* failed, split and try again */
554
555 /* conflict covered whole area */
556 if (conflict->start <= start && conflict->end >= end)
557 return;
558 539
559 if (conflict->start > start) 540 /* failed, split and try again */
560 __reserve_region_with_split(root, start, conflict->start-1, name); 541 kfree(res);
561 if (!(conflict->flags & IORESOURCE_BUSY)) {
562 resource_size_t common_start, common_end;
563 542
564 common_start = max(conflict->start, start); 543 /* conflict covered whole area */
565 common_end = min(conflict->end, end); 544 if (conflict->start <= start && conflict->end >= end)
566 if (common_start < common_end) 545 return;
567 __reserve_region_with_split(root, common_start, common_end, name);
568 }
569 if (conflict->end < end)
570 __reserve_region_with_split(root, conflict->end+1, end, name);
571 }
572 546
547 if (conflict->start > start)
548 __reserve_region_with_split(root, start, conflict->start-1, name);
549 if (conflict->end < end)
550 __reserve_region_with_split(root, conflict->end+1, end, name);
573} 551}
574 552
575void __init reserve_region_with_split(struct resource *root, 553void __init reserve_region_with_split(struct resource *root,
diff --git a/kernel/sched.c b/kernel/sched.c
index 6cc1fd5d5072..b902e587a3a0 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1418,10 +1418,22 @@ iter_move_one_task(struct rq *this_rq, int this_cpu, struct rq *busiest,
1418 struct rq_iterator *iterator); 1418 struct rq_iterator *iterator);
1419#endif 1419#endif
1420 1420
1421/* Time spent by the tasks of the cpu accounting group executing in ... */
1422enum cpuacct_stat_index {
1423 CPUACCT_STAT_USER, /* ... user mode */
1424 CPUACCT_STAT_SYSTEM, /* ... kernel mode */
1425
1426 CPUACCT_STAT_NSTATS,
1427};
1428
1421#ifdef CONFIG_CGROUP_CPUACCT 1429#ifdef CONFIG_CGROUP_CPUACCT
1422static void cpuacct_charge(struct task_struct *tsk, u64 cputime); 1430static void cpuacct_charge(struct task_struct *tsk, u64 cputime);
1431static void cpuacct_update_stats(struct task_struct *tsk,
1432 enum cpuacct_stat_index idx, cputime_t val);
1423#else 1433#else
1424static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime) {} 1434static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime) {}
1435static inline void cpuacct_update_stats(struct task_struct *tsk,
1436 enum cpuacct_stat_index idx, cputime_t val) {}
1425#endif 1437#endif
1426 1438
1427static inline void inc_cpu_load(struct rq *rq, unsigned long load) 1439static inline void inc_cpu_load(struct rq *rq, unsigned long load)
@@ -4511,9 +4523,25 @@ DEFINE_PER_CPU(struct kernel_stat, kstat);
4511EXPORT_PER_CPU_SYMBOL(kstat); 4523EXPORT_PER_CPU_SYMBOL(kstat);
4512 4524
4513/* 4525/*
4514 * Return any ns on the sched_clock that have not yet been banked in 4526 * Return any ns on the sched_clock that have not yet been accounted in
4515 * @p in case that task is currently running. 4527 * @p in case that task is currently running.
4528 *
4529 * Called with task_rq_lock() held on @rq.
4516 */ 4530 */
4531static u64 do_task_delta_exec(struct task_struct *p, struct rq *rq)
4532{
4533 u64 ns = 0;
4534
4535 if (task_current(rq, p)) {
4536 update_rq_clock(rq);
4537 ns = rq->clock - p->se.exec_start;
4538 if ((s64)ns < 0)
4539 ns = 0;
4540 }
4541
4542 return ns;
4543}
4544
4517unsigned long long task_delta_exec(struct task_struct *p) 4545unsigned long long task_delta_exec(struct task_struct *p)
4518{ 4546{
4519 unsigned long flags; 4547 unsigned long flags;
@@ -4521,16 +4549,49 @@ unsigned long long task_delta_exec(struct task_struct *p)
4521 u64 ns = 0; 4549 u64 ns = 0;
4522 4550
4523 rq = task_rq_lock(p, &flags); 4551 rq = task_rq_lock(p, &flags);
4552 ns = do_task_delta_exec(p, rq);
4553 task_rq_unlock(rq, &flags);
4524 4554
4525 if (task_current(rq, p)) { 4555 return ns;
4526 u64 delta_exec; 4556}
4527 4557
4528 update_rq_clock(rq); 4558/*
4529 delta_exec = rq->clock - p->se.exec_start; 4559 * Return accounted runtime for the task.
4530 if ((s64)delta_exec > 0) 4560 * In case the task is currently running, return the runtime plus current's
4531 ns = delta_exec; 4561 * pending runtime that have not been accounted yet.
4532 } 4562 */
4563unsigned long long task_sched_runtime(struct task_struct *p)
4564{
4565 unsigned long flags;
4566 struct rq *rq;
4567 u64 ns = 0;
4568
4569 rq = task_rq_lock(p, &flags);
4570 ns = p->se.sum_exec_runtime + do_task_delta_exec(p, rq);
4571 task_rq_unlock(rq, &flags);
4572
4573 return ns;
4574}
4575
4576/*
4577 * Return sum_exec_runtime for the thread group.
4578 * In case the task is currently running, return the sum plus current's
4579 * pending runtime that have not been accounted yet.
4580 *
4581 * Note that the thread group might have other running tasks as well,
4582 * so the return value not includes other pending runtime that other
4583 * running tasks might have.
4584 */
4585unsigned long long thread_group_sched_runtime(struct task_struct *p)
4586{
4587 struct task_cputime totals;
4588 unsigned long flags;
4589 struct rq *rq;
4590 u64 ns;
4533 4591
4592 rq = task_rq_lock(p, &flags);
4593 thread_group_cputime(p, &totals);
4594 ns = totals.sum_exec_runtime + do_task_delta_exec(p, rq);
4534 task_rq_unlock(rq, &flags); 4595 task_rq_unlock(rq, &flags);
4535 4596
4536 return ns; 4597 return ns;
@@ -4559,6 +4620,8 @@ void account_user_time(struct task_struct *p, cputime_t cputime,
4559 cpustat->nice = cputime64_add(cpustat->nice, tmp); 4620 cpustat->nice = cputime64_add(cpustat->nice, tmp);
4560 else 4621 else
4561 cpustat->user = cputime64_add(cpustat->user, tmp); 4622 cpustat->user = cputime64_add(cpustat->user, tmp);
4623
4624 cpuacct_update_stats(p, CPUACCT_STAT_USER, cputime);
4562 /* Account for user time used */ 4625 /* Account for user time used */
4563 acct_update_integrals(p); 4626 acct_update_integrals(p);
4564} 4627}
@@ -4620,6 +4683,8 @@ void account_system_time(struct task_struct *p, int hardirq_offset,
4620 else 4683 else
4621 cpustat->system = cputime64_add(cpustat->system, tmp); 4684 cpustat->system = cputime64_add(cpustat->system, tmp);
4622 4685
4686 cpuacct_update_stats(p, CPUACCT_STAT_SYSTEM, cputime);
4687
4623 /* Account for system time used */ 4688 /* Account for system time used */
4624 acct_update_integrals(p); 4689 acct_update_integrals(p);
4625} 4690}
@@ -4781,7 +4846,7 @@ void scheduler_tick(void)
4781#endif 4846#endif
4782} 4847}
4783 4848
4784unsigned long get_parent_ip(unsigned long addr) 4849notrace unsigned long get_parent_ip(unsigned long addr)
4785{ 4850{
4786 if (in_lock_functions(addr)) { 4851 if (in_lock_functions(addr)) {
4787 addr = CALLER_ADDR2; 4852 addr = CALLER_ADDR2;
@@ -7302,7 +7367,12 @@ static int sched_domain_debug_one(struct sched_domain *sd, int cpu, int level,
7302 cpumask_or(groupmask, groupmask, sched_group_cpus(group)); 7367 cpumask_or(groupmask, groupmask, sched_group_cpus(group));
7303 7368
7304 cpulist_scnprintf(str, sizeof(str), sched_group_cpus(group)); 7369 cpulist_scnprintf(str, sizeof(str), sched_group_cpus(group));
7370
7305 printk(KERN_CONT " %s", str); 7371 printk(KERN_CONT " %s", str);
7372 if (group->__cpu_power != SCHED_LOAD_SCALE) {
7373 printk(KERN_CONT " (__cpu_power = %d)",
7374 group->__cpu_power);
7375 }
7306 7376
7307 group = group->next; 7377 group = group->next;
7308 } while (group != sd->groups); 7378 } while (group != sd->groups);
@@ -9925,6 +9995,7 @@ struct cpuacct {
9925 struct cgroup_subsys_state css; 9995 struct cgroup_subsys_state css;
9926 /* cpuusage holds pointer to a u64-type object on every cpu */ 9996 /* cpuusage holds pointer to a u64-type object on every cpu */
9927 u64 *cpuusage; 9997 u64 *cpuusage;
9998 struct percpu_counter cpustat[CPUACCT_STAT_NSTATS];
9928 struct cpuacct *parent; 9999 struct cpuacct *parent;
9929}; 10000};
9930 10001
@@ -9949,20 +10020,32 @@ static struct cgroup_subsys_state *cpuacct_create(
9949 struct cgroup_subsys *ss, struct cgroup *cgrp) 10020 struct cgroup_subsys *ss, struct cgroup *cgrp)
9950{ 10021{
9951 struct cpuacct *ca = kzalloc(sizeof(*ca), GFP_KERNEL); 10022 struct cpuacct *ca = kzalloc(sizeof(*ca), GFP_KERNEL);
10023 int i;
9952 10024
9953 if (!ca) 10025 if (!ca)
9954 return ERR_PTR(-ENOMEM); 10026 goto out;
9955 10027
9956 ca->cpuusage = alloc_percpu(u64); 10028 ca->cpuusage = alloc_percpu(u64);
9957 if (!ca->cpuusage) { 10029 if (!ca->cpuusage)
9958 kfree(ca); 10030 goto out_free_ca;
9959 return ERR_PTR(-ENOMEM); 10031
9960 } 10032 for (i = 0; i < CPUACCT_STAT_NSTATS; i++)
10033 if (percpu_counter_init(&ca->cpustat[i], 0))
10034 goto out_free_counters;
9961 10035
9962 if (cgrp->parent) 10036 if (cgrp->parent)
9963 ca->parent = cgroup_ca(cgrp->parent); 10037 ca->parent = cgroup_ca(cgrp->parent);
9964 10038
9965 return &ca->css; 10039 return &ca->css;
10040
10041out_free_counters:
10042 while (--i >= 0)
10043 percpu_counter_destroy(&ca->cpustat[i]);
10044 free_percpu(ca->cpuusage);
10045out_free_ca:
10046 kfree(ca);
10047out:
10048 return ERR_PTR(-ENOMEM);
9966} 10049}
9967 10050
9968/* destroy an existing cpu accounting group */ 10051/* destroy an existing cpu accounting group */
@@ -9970,7 +10053,10 @@ static void
9970cpuacct_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp) 10053cpuacct_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp)
9971{ 10054{
9972 struct cpuacct *ca = cgroup_ca(cgrp); 10055 struct cpuacct *ca = cgroup_ca(cgrp);
10056 int i;
9973 10057
10058 for (i = 0; i < CPUACCT_STAT_NSTATS; i++)
10059 percpu_counter_destroy(&ca->cpustat[i]);
9974 free_percpu(ca->cpuusage); 10060 free_percpu(ca->cpuusage);
9975 kfree(ca); 10061 kfree(ca);
9976} 10062}
@@ -10057,6 +10143,25 @@ static int cpuacct_percpu_seq_read(struct cgroup *cgroup, struct cftype *cft,
10057 return 0; 10143 return 0;
10058} 10144}
10059 10145
10146static const char *cpuacct_stat_desc[] = {
10147 [CPUACCT_STAT_USER] = "user",
10148 [CPUACCT_STAT_SYSTEM] = "system",
10149};
10150
10151static int cpuacct_stats_show(struct cgroup *cgrp, struct cftype *cft,
10152 struct cgroup_map_cb *cb)
10153{
10154 struct cpuacct *ca = cgroup_ca(cgrp);
10155 int i;
10156
10157 for (i = 0; i < CPUACCT_STAT_NSTATS; i++) {
10158 s64 val = percpu_counter_read(&ca->cpustat[i]);
10159 val = cputime64_to_clock_t(val);
10160 cb->fill(cb, cpuacct_stat_desc[i], val);
10161 }
10162 return 0;
10163}
10164
10060static struct cftype files[] = { 10165static struct cftype files[] = {
10061 { 10166 {
10062 .name = "usage", 10167 .name = "usage",
@@ -10067,7 +10172,10 @@ static struct cftype files[] = {
10067 .name = "usage_percpu", 10172 .name = "usage_percpu",
10068 .read_seq_string = cpuacct_percpu_seq_read, 10173 .read_seq_string = cpuacct_percpu_seq_read,
10069 }, 10174 },
10070 10175 {
10176 .name = "stat",
10177 .read_map = cpuacct_stats_show,
10178 },
10071}; 10179};
10072 10180
10073static int cpuacct_populate(struct cgroup_subsys *ss, struct cgroup *cgrp) 10181static int cpuacct_populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
@@ -10089,12 +10197,38 @@ static void cpuacct_charge(struct task_struct *tsk, u64 cputime)
10089 return; 10197 return;
10090 10198
10091 cpu = task_cpu(tsk); 10199 cpu = task_cpu(tsk);
10200
10201 rcu_read_lock();
10202
10092 ca = task_ca(tsk); 10203 ca = task_ca(tsk);
10093 10204
10094 for (; ca; ca = ca->parent) { 10205 for (; ca; ca = ca->parent) {
10095 u64 *cpuusage = per_cpu_ptr(ca->cpuusage, cpu); 10206 u64 *cpuusage = per_cpu_ptr(ca->cpuusage, cpu);
10096 *cpuusage += cputime; 10207 *cpuusage += cputime;
10097 } 10208 }
10209
10210 rcu_read_unlock();
10211}
10212
10213/*
10214 * Charge the system/user time to the task's accounting group.
10215 */
10216static void cpuacct_update_stats(struct task_struct *tsk,
10217 enum cpuacct_stat_index idx, cputime_t val)
10218{
10219 struct cpuacct *ca;
10220
10221 if (unlikely(!cpuacct_subsys.active))
10222 return;
10223
10224 rcu_read_lock();
10225 ca = task_ca(tsk);
10226
10227 do {
10228 percpu_counter_add(&ca->cpustat[idx], val);
10229 ca = ca->parent;
10230 } while (ca);
10231 rcu_read_unlock();
10098} 10232}
10099 10233
10100struct cgroup_subsys cpuacct_subsys = { 10234struct cgroup_subsys cpuacct_subsys = {
diff --git a/kernel/sched_cpupri.c b/kernel/sched_cpupri.c
index 1e00bfacf9b8..cdd3c89574cd 100644
--- a/kernel/sched_cpupri.c
+++ b/kernel/sched_cpupri.c
@@ -55,7 +55,7 @@ static int convert_prio(int prio)
55 * cpupri_find - find the best (lowest-pri) CPU in the system 55 * cpupri_find - find the best (lowest-pri) CPU in the system
56 * @cp: The cpupri context 56 * @cp: The cpupri context
57 * @p: The task 57 * @p: The task
58 * @lowest_mask: A mask to fill in with selected CPUs 58 * @lowest_mask: A mask to fill in with selected CPUs (or NULL)
59 * 59 *
60 * Note: This function returns the recommended CPUs as calculated during the 60 * Note: This function returns the recommended CPUs as calculated during the
61 * current invokation. By the time the call returns, the CPUs may have in 61 * current invokation. By the time the call returns, the CPUs may have in
@@ -81,7 +81,8 @@ int cpupri_find(struct cpupri *cp, struct task_struct *p,
81 if (cpumask_any_and(&p->cpus_allowed, vec->mask) >= nr_cpu_ids) 81 if (cpumask_any_and(&p->cpus_allowed, vec->mask) >= nr_cpu_ids)
82 continue; 82 continue;
83 83
84 cpumask_and(lowest_mask, &p->cpus_allowed, vec->mask); 84 if (lowest_mask)
85 cpumask_and(lowest_mask, &p->cpus_allowed, vec->mask);
85 return 1; 86 return 1;
86 } 87 }
87 88
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 299d012b4394..f2c66f8f9712 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -948,20 +948,15 @@ static int select_task_rq_rt(struct task_struct *p, int sync)
948 948
949static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p) 949static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p)
950{ 950{
951 cpumask_var_t mask;
952
953 if (rq->curr->rt.nr_cpus_allowed == 1) 951 if (rq->curr->rt.nr_cpus_allowed == 1)
954 return; 952 return;
955 953
956 if (!alloc_cpumask_var(&mask, GFP_ATOMIC))
957 return;
958
959 if (p->rt.nr_cpus_allowed != 1 954 if (p->rt.nr_cpus_allowed != 1
960 && cpupri_find(&rq->rd->cpupri, p, mask)) 955 && cpupri_find(&rq->rd->cpupri, p, NULL))
961 goto free; 956 return;
962 957
963 if (!cpupri_find(&rq->rd->cpupri, rq->curr, mask)) 958 if (!cpupri_find(&rq->rd->cpupri, rq->curr, NULL))
964 goto free; 959 return;
965 960
966 /* 961 /*
967 * There appears to be other cpus that can accept 962 * There appears to be other cpus that can accept
@@ -970,8 +965,6 @@ static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p)
970 */ 965 */
971 requeue_task_rt(rq, p, 1); 966 requeue_task_rt(rq, p, 1);
972 resched_task(rq->curr); 967 resched_task(rq->curr);
973free:
974 free_cpumask_var(mask);
975} 968}
976 969
977#endif /* CONFIG_SMP */ 970#endif /* CONFIG_SMP */
diff --git a/kernel/slow-work.c b/kernel/slow-work.c
index cf2bc01186ef..b28d19135f43 100644
--- a/kernel/slow-work.c
+++ b/kernel/slow-work.c
@@ -609,14 +609,14 @@ void slow_work_unregister_user(void)
609 if (slow_work_user_count == 0) { 609 if (slow_work_user_count == 0) {
610 printk(KERN_NOTICE "Slow work thread pool: Shutting down\n"); 610 printk(KERN_NOTICE "Slow work thread pool: Shutting down\n");
611 slow_work_threads_should_exit = true; 611 slow_work_threads_should_exit = true;
612 del_timer_sync(&slow_work_cull_timer);
613 del_timer_sync(&slow_work_oom_timer);
612 wake_up_all(&slow_work_thread_wq); 614 wake_up_all(&slow_work_thread_wq);
613 wait_for_completion(&slow_work_last_thread_exited); 615 wait_for_completion(&slow_work_last_thread_exited);
614 printk(KERN_NOTICE "Slow work thread pool:" 616 printk(KERN_NOTICE "Slow work thread pool:"
615 " Shut down complete\n"); 617 " Shut down complete\n");
616 } 618 }
617 619
618 del_timer_sync(&slow_work_cull_timer);
619
620 mutex_unlock(&slow_work_user_lock); 620 mutex_unlock(&slow_work_user_lock);
621} 621}
622EXPORT_SYMBOL(slow_work_unregister_user); 622EXPORT_SYMBOL(slow_work_unregister_user);
diff --git a/kernel/softirq.c b/kernel/softirq.c
index 2fecefacdc5b..b525dd348511 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -472,9 +472,9 @@ void tasklet_kill(struct tasklet_struct *t)
472 printk("Attempt to kill tasklet from interrupt\n"); 472 printk("Attempt to kill tasklet from interrupt\n");
473 473
474 while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) { 474 while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) {
475 do 475 do {
476 yield(); 476 yield();
477 while (test_bit(TASKLET_STATE_SCHED, &t->state)); 477 } while (test_bit(TASKLET_STATE_SCHED, &t->state));
478 } 478 }
479 tasklet_unlock_wait(t); 479 tasklet_unlock_wait(t);
480 clear_bit(TASKLET_STATE_SCHED, &t->state); 480 clear_bit(TASKLET_STATE_SCHED, &t->state);
diff --git a/kernel/sys.c b/kernel/sys.c
index 51dbb55604e8..e7998cf31498 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -360,6 +360,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
360 void __user *, arg) 360 void __user *, arg)
361{ 361{
362 char buffer[256]; 362 char buffer[256];
363 int ret = 0;
363 364
364 /* We only trust the superuser with rebooting the system. */ 365 /* We only trust the superuser with rebooting the system. */
365 if (!capable(CAP_SYS_BOOT)) 366 if (!capable(CAP_SYS_BOOT))
@@ -397,7 +398,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
397 kernel_halt(); 398 kernel_halt();
398 unlock_kernel(); 399 unlock_kernel();
399 do_exit(0); 400 do_exit(0);
400 break; 401 panic("cannot halt");
401 402
402 case LINUX_REBOOT_CMD_POWER_OFF: 403 case LINUX_REBOOT_CMD_POWER_OFF:
403 kernel_power_off(); 404 kernel_power_off();
@@ -417,29 +418,22 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
417 418
418#ifdef CONFIG_KEXEC 419#ifdef CONFIG_KEXEC
419 case LINUX_REBOOT_CMD_KEXEC: 420 case LINUX_REBOOT_CMD_KEXEC:
420 { 421 ret = kernel_kexec();
421 int ret; 422 break;
422 ret = kernel_kexec();
423 unlock_kernel();
424 return ret;
425 }
426#endif 423#endif
427 424
428#ifdef CONFIG_HIBERNATION 425#ifdef CONFIG_HIBERNATION
429 case LINUX_REBOOT_CMD_SW_SUSPEND: 426 case LINUX_REBOOT_CMD_SW_SUSPEND:
430 { 427 ret = hibernate();
431 int ret = hibernate(); 428 break;
432 unlock_kernel();
433 return ret;
434 }
435#endif 429#endif
436 430
437 default: 431 default:
438 unlock_kernel(); 432 ret = -EINVAL;
439 return -EINVAL; 433 break;
440 } 434 }
441 unlock_kernel(); 435 unlock_kernel();
442 return 0; 436 return ret;
443} 437}
444 438
445static void deferred_cad(struct work_struct *dummy) 439static void deferred_cad(struct work_struct *dummy)
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 4286b62b34a0..e3d2c7dd59b9 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -902,16 +902,6 @@ static struct ctl_table kern_table[] = {
902 .proc_handler = &proc_dointvec, 902 .proc_handler = &proc_dointvec,
903 }, 903 },
904#endif 904#endif
905#ifdef CONFIG_UNEVICTABLE_LRU
906 {
907 .ctl_name = CTL_UNNUMBERED,
908 .procname = "scan_unevictable_pages",
909 .data = &scan_unevictable_pages,
910 .maxlen = sizeof(scan_unevictable_pages),
911 .mode = 0644,
912 .proc_handler = &scan_unevictable_handler,
913 },
914#endif
915#ifdef CONFIG_SLOW_WORK 905#ifdef CONFIG_SLOW_WORK
916 { 906 {
917 .ctl_name = CTL_UNNUMBERED, 907 .ctl_name = CTL_UNNUMBERED,
@@ -1302,6 +1292,16 @@ static struct ctl_table vm_table[] = {
1302 .extra2 = &one, 1292 .extra2 = &one,
1303 }, 1293 },
1304#endif 1294#endif
1295#ifdef CONFIG_UNEVICTABLE_LRU
1296 {
1297 .ctl_name = CTL_UNNUMBERED,
1298 .procname = "scan_unevictable_pages",
1299 .data = &scan_unevictable_pages,
1300 .maxlen = sizeof(scan_unevictable_pages),
1301 .mode = 0644,
1302 .proc_handler = &scan_unevictable_handler,
1303 },
1304#endif
1305/* 1305/*
1306 * NOTE: do not add new entries to this table unless you have read 1306 * NOTE: do not add new entries to this table unless you have read
1307 * Documentation/sysctl/ctl_unnumbered.txt 1307 * Documentation/sysctl/ctl_unnumbered.txt
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index c46c931a7fe7..ecfd7b5187e0 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -181,12 +181,12 @@ static void clocksource_watchdog(unsigned long data)
181 181
182 resumed = test_and_clear_bit(0, &watchdog_resumed); 182 resumed = test_and_clear_bit(0, &watchdog_resumed);
183 183
184 wdnow = watchdog->read(); 184 wdnow = watchdog->read(watchdog);
185 wd_nsec = cyc2ns(watchdog, (wdnow - watchdog_last) & watchdog->mask); 185 wd_nsec = cyc2ns(watchdog, (wdnow - watchdog_last) & watchdog->mask);
186 watchdog_last = wdnow; 186 watchdog_last = wdnow;
187 187
188 list_for_each_entry_safe(cs, tmp, &watchdog_list, wd_list) { 188 list_for_each_entry_safe(cs, tmp, &watchdog_list, wd_list) {
189 csnow = cs->read(); 189 csnow = cs->read(cs);
190 190
191 if (unlikely(resumed)) { 191 if (unlikely(resumed)) {
192 cs->wd_last = csnow; 192 cs->wd_last = csnow;
@@ -247,7 +247,7 @@ static void clocksource_check_watchdog(struct clocksource *cs)
247 247
248 list_add(&cs->wd_list, &watchdog_list); 248 list_add(&cs->wd_list, &watchdog_list);
249 if (!started && watchdog) { 249 if (!started && watchdog) {
250 watchdog_last = watchdog->read(); 250 watchdog_last = watchdog->read(watchdog);
251 watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL; 251 watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL;
252 add_timer_on(&watchdog_timer, 252 add_timer_on(&watchdog_timer,
253 cpumask_first(cpu_online_mask)); 253 cpumask_first(cpu_online_mask));
@@ -268,7 +268,7 @@ static void clocksource_check_watchdog(struct clocksource *cs)
268 cse->flags &= ~CLOCK_SOURCE_WATCHDOG; 268 cse->flags &= ~CLOCK_SOURCE_WATCHDOG;
269 /* Start if list is not empty */ 269 /* Start if list is not empty */
270 if (!list_empty(&watchdog_list)) { 270 if (!list_empty(&watchdog_list)) {
271 watchdog_last = watchdog->read(); 271 watchdog_last = watchdog->read(watchdog);
272 watchdog_timer.expires = 272 watchdog_timer.expires =
273 jiffies + WATCHDOG_INTERVAL; 273 jiffies + WATCHDOG_INTERVAL;
274 add_timer_on(&watchdog_timer, 274 add_timer_on(&watchdog_timer,
diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
index 06f197560f3b..c3f6c30816e3 100644
--- a/kernel/time/jiffies.c
+++ b/kernel/time/jiffies.c
@@ -50,7 +50,7 @@
50 */ 50 */
51#define JIFFIES_SHIFT 8 51#define JIFFIES_SHIFT 8
52 52
53static cycle_t jiffies_read(void) 53static cycle_t jiffies_read(struct clocksource *cs)
54{ 54{
55 return (cycle_t) jiffies; 55 return (cycle_t) jiffies;
56} 56}
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 900f1b6598d1..687dff49f6e7 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -182,7 +182,7 @@ EXPORT_SYMBOL(do_settimeofday);
182 */ 182 */
183static void change_clocksource(void) 183static void change_clocksource(void)
184{ 184{
185 struct clocksource *new; 185 struct clocksource *new, *old;
186 186
187 new = clocksource_get_next(); 187 new = clocksource_get_next();
188 188
@@ -191,11 +191,16 @@ static void change_clocksource(void)
191 191
192 clocksource_forward_now(); 192 clocksource_forward_now();
193 193
194 new->raw_time = clock->raw_time; 194 if (clocksource_enable(new))
195 return;
195 196
197 new->raw_time = clock->raw_time;
198 old = clock;
196 clock = new; 199 clock = new;
200 clocksource_disable(old);
201
197 clock->cycle_last = 0; 202 clock->cycle_last = 0;
198 clock->cycle_last = clocksource_read(new); 203 clock->cycle_last = clocksource_read(clock);
199 clock->error = 0; 204 clock->error = 0;
200 clock->xtime_nsec = 0; 205 clock->xtime_nsec = 0;
201 clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH); 206 clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH);
@@ -292,6 +297,7 @@ void __init timekeeping_init(void)
292 ntp_init(); 297 ntp_init();
293 298
294 clock = clocksource_get_next(); 299 clock = clocksource_get_next();
300 clocksource_enable(clock);
295 clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH); 301 clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH);
296 clock->cycle_last = clocksource_read(clock); 302 clock->cycle_last = clocksource_read(clock);
297 303
diff --git a/kernel/timer.c b/kernel/timer.c
index b4555568b4e4..cffffad01c31 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -531,10 +531,13 @@ static void __init_timer(struct timer_list *timer,
531} 531}
532 532
533/** 533/**
534 * init_timer - initialize a timer. 534 * init_timer_key - initialize a timer
535 * @timer: the timer to be initialized 535 * @timer: the timer to be initialized
536 * @name: name of the timer
537 * @key: lockdep class key of the fake lock used for tracking timer
538 * sync lock dependencies
536 * 539 *
537 * init_timer() must be done to a timer prior calling *any* of the 540 * init_timer_key() must be done to a timer prior calling *any* of the
538 * other timer functions. 541 * other timer functions.
539 */ 542 */
540void init_timer_key(struct timer_list *timer, 543void init_timer_key(struct timer_list *timer,
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 2246141bda4d..417d1985e299 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -312,7 +312,7 @@ config KMEMTRACE
312 and profile kernel code. 312 and profile kernel code.
313 313
314 This requires an userspace application to use. See 314 This requires an userspace application to use. See
315 Documentation/vm/kmemtrace.txt for more information. 315 Documentation/trace/kmemtrace.txt for more information.
316 316
317 Saying Y will make the kernel somewhat larger and slower. However, 317 Saying Y will make the kernel somewhat larger and slower. However,
318 if you disable kmemtrace at run-time or boot-time, the performance 318 if you disable kmemtrace at run-time or boot-time, the performance
@@ -403,7 +403,7 @@ config MMIOTRACE
403 implementation and works via page faults. Tracing is disabled by 403 implementation and works via page faults. Tracing is disabled by
404 default and can be enabled at run-time. 404 default and can be enabled at run-time.
405 405
406 See Documentation/tracers/mmiotrace.txt. 406 See Documentation/trace/mmiotrace.txt.
407 If you are not helping to develop drivers, say N. 407 If you are not helping to develop drivers, say N.
408 408
409config MMIOTRACE_TEST 409config MMIOTRACE_TEST
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index b32ff446c3fb..921ef5d1f0ba 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -1377,12 +1377,12 @@ static int blk_trace_str2mask(const char *str)
1377{ 1377{
1378 int i; 1378 int i;
1379 int mask = 0; 1379 int mask = 0;
1380 char *s, *token; 1380 char *buf, *s, *token;
1381 1381
1382 s = kstrdup(str, GFP_KERNEL); 1382 buf = kstrdup(str, GFP_KERNEL);
1383 if (s == NULL) 1383 if (buf == NULL)
1384 return -ENOMEM; 1384 return -ENOMEM;
1385 s = strstrip(s); 1385 s = strstrip(buf);
1386 1386
1387 while (1) { 1387 while (1) {
1388 token = strsep(&s, ","); 1388 token = strsep(&s, ",");
@@ -1403,7 +1403,7 @@ static int blk_trace_str2mask(const char *str)
1403 break; 1403 break;
1404 } 1404 }
1405 } 1405 }
1406 kfree(s); 1406 kfree(buf);
1407 1407
1408 return mask; 1408 return mask;
1409} 1409}
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 9d28476a9851..1ce5dc6372b8 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -3277,19 +3277,13 @@ static int tracing_buffers_open(struct inode *inode, struct file *filp)
3277 3277
3278 info->tr = &global_trace; 3278 info->tr = &global_trace;
3279 info->cpu = cpu; 3279 info->cpu = cpu;
3280 info->spare = ring_buffer_alloc_read_page(info->tr->buffer); 3280 info->spare = NULL;
3281 /* Force reading ring buffer for first read */ 3281 /* Force reading ring buffer for first read */
3282 info->read = (unsigned int)-1; 3282 info->read = (unsigned int)-1;
3283 if (!info->spare)
3284 goto out;
3285 3283
3286 filp->private_data = info; 3284 filp->private_data = info;
3287 3285
3288 return 0; 3286 return nonseekable_open(inode, filp);
3289
3290 out:
3291 kfree(info);
3292 return -ENOMEM;
3293} 3287}
3294 3288
3295static ssize_t 3289static ssize_t
@@ -3304,6 +3298,11 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
3304 if (!count) 3298 if (!count)
3305 return 0; 3299 return 0;
3306 3300
3301 if (!info->spare)
3302 info->spare = ring_buffer_alloc_read_page(info->tr->buffer);
3303 if (!info->spare)
3304 return -ENOMEM;
3305
3307 /* Do we have previous read data to read? */ 3306 /* Do we have previous read data to read? */
3308 if (info->read < PAGE_SIZE) 3307 if (info->read < PAGE_SIZE)
3309 goto read; 3308 goto read;
@@ -3342,7 +3341,8 @@ static int tracing_buffers_release(struct inode *inode, struct file *file)
3342{ 3341{
3343 struct ftrace_buffer_info *info = file->private_data; 3342 struct ftrace_buffer_info *info = file->private_data;
3344 3343
3345 ring_buffer_free_read_page(info->tr->buffer, info->spare); 3344 if (info->spare)
3345 ring_buffer_free_read_page(info->tr->buffer, info->spare);
3346 kfree(info); 3346 kfree(info);
3347 3347
3348 return 0; 3348 return 0;
@@ -3428,14 +3428,19 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
3428 int size, i; 3428 int size, i;
3429 size_t ret; 3429 size_t ret;
3430 3430
3431 /* 3431 if (*ppos & (PAGE_SIZE - 1)) {
3432 * We can't seek on a buffer input 3432 WARN_ONCE(1, "Ftrace: previous read must page-align\n");
3433 */ 3433 return -EINVAL;
3434 if (unlikely(*ppos)) 3434 }
3435 return -ESPIPE;
3436 3435
3436 if (len & (PAGE_SIZE - 1)) {
3437 WARN_ONCE(1, "Ftrace: splice_read should page-align\n");
3438 if (len < PAGE_SIZE)
3439 return -EINVAL;
3440 len &= PAGE_MASK;
3441 }
3437 3442
3438 for (i = 0; i < PIPE_BUFFERS && len; i++, len -= size) { 3443 for (i = 0; i < PIPE_BUFFERS && len; i++, len -= PAGE_SIZE) {
3439 struct page *page; 3444 struct page *page;
3440 int r; 3445 int r;
3441 3446
@@ -3474,6 +3479,7 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
3474 spd.partial[i].offset = 0; 3479 spd.partial[i].offset = 0;
3475 spd.partial[i].private = (unsigned long)ref; 3480 spd.partial[i].private = (unsigned long)ref;
3476 spd.nr_pages++; 3481 spd.nr_pages++;
3482 *ppos += PAGE_SIZE;
3477 } 3483 }
3478 3484
3479 spd.nr_pages = i; 3485 spd.nr_pages = i;
diff --git a/kernel/trace/trace_branch.c b/kernel/trace/trace_branch.c
index ad8c22efff41..8333715e4066 100644
--- a/kernel/trace/trace_branch.c
+++ b/kernel/trace/trace_branch.c
@@ -155,6 +155,13 @@ static enum print_line_t trace_branch_print(struct trace_iterator *iter,
155 return TRACE_TYPE_HANDLED; 155 return TRACE_TYPE_HANDLED;
156} 156}
157 157
158static void branch_print_header(struct seq_file *s)
159{
160 seq_puts(s, "# TASK-PID CPU# TIMESTAMP CORRECT"
161 " FUNC:FILE:LINE\n");
162 seq_puts(s, "# | | | | | "
163 " |\n");
164}
158 165
159static struct trace_event trace_branch_event = { 166static struct trace_event trace_branch_event = {
160 .type = TRACE_BRANCH, 167 .type = TRACE_BRANCH,
@@ -169,6 +176,7 @@ static struct tracer branch_trace __read_mostly =
169#ifdef CONFIG_FTRACE_SELFTEST 176#ifdef CONFIG_FTRACE_SELFTEST
170 .selftest = trace_selftest_startup_branch, 177 .selftest = trace_selftest_startup_branch,
171#endif /* CONFIG_FTRACE_SELFTEST */ 178#endif /* CONFIG_FTRACE_SELFTEST */
179 .print_header = branch_print_header,
172}; 180};
173 181
174__init static int init_branch_tracer(void) 182__init static int init_branch_tracer(void)
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 64ec4d278ffb..576f4fa2af0d 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -503,6 +503,7 @@ event_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
503 503
504 if (copy_from_user(&buf, ubuf, cnt)) 504 if (copy_from_user(&buf, ubuf, cnt))
505 return -EFAULT; 505 return -EFAULT;
506 buf[cnt] = '\0';
506 507
507 pred = kzalloc(sizeof(*pred), GFP_KERNEL); 508 pred = kzalloc(sizeof(*pred), GFP_KERNEL);
508 if (!pred) 509 if (!pred)
@@ -520,9 +521,10 @@ event_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
520 return cnt; 521 return cnt;
521 } 522 }
522 523
523 if (filter_add_pred(call, pred)) { 524 err = filter_add_pred(call, pred);
525 if (err < 0) {
524 filter_free_pred(pred); 526 filter_free_pred(pred);
525 return -EINVAL; 527 return err;
526 } 528 }
527 529
528 *ppos += cnt; 530 *ppos += cnt;
@@ -569,6 +571,7 @@ subsystem_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
569 571
570 if (copy_from_user(&buf, ubuf, cnt)) 572 if (copy_from_user(&buf, ubuf, cnt))
571 return -EFAULT; 573 return -EFAULT;
574 buf[cnt] = '\0';
572 575
573 pred = kzalloc(sizeof(*pred), GFP_KERNEL); 576 pred = kzalloc(sizeof(*pred), GFP_KERNEL);
574 if (!pred) 577 if (!pred)
@@ -586,10 +589,11 @@ subsystem_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
586 return cnt; 589 return cnt;
587 } 590 }
588 591
589 if (filter_add_subsystem_pred(system, pred)) { 592 err = filter_add_subsystem_pred(system, pred);
593 if (err < 0) {
590 filter_free_subsystem_preds(system); 594 filter_free_subsystem_preds(system);
591 filter_free_pred(pred); 595 filter_free_pred(pred);
592 return -EINVAL; 596 return err;
593 } 597 }
594 598
595 *ppos += cnt; 599 *ppos += cnt;
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 026be412f356..e03cbf1e38f3 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -215,7 +215,7 @@ static int __filter_add_pred(struct ftrace_event_call *call,
215 } 215 }
216 } 216 }
217 217
218 return -ENOMEM; 218 return -ENOSPC;
219} 219}
220 220
221static int is_string_field(const char *type) 221static int is_string_field(const char *type)
@@ -319,7 +319,7 @@ int filter_add_subsystem_pred(struct event_subsystem *system,
319 } 319 }
320 320
321 if (i == MAX_FILTER_PRED) 321 if (i == MAX_FILTER_PRED)
322 return -EINVAL; 322 return -ENOSPC;
323 323
324 events_for_each(call) { 324 events_for_each(call) {
325 int err; 325 int err;
@@ -410,16 +410,22 @@ int filter_parse(char **pbuf, struct filter_pred *pred)
410 } 410 }
411 } 411 }
412 412
413 if (!val_str) {
414 pred->field_name = NULL;
415 return -EINVAL;
416 }
417
413 pred->field_name = kstrdup(pred->field_name, GFP_KERNEL); 418 pred->field_name = kstrdup(pred->field_name, GFP_KERNEL);
414 if (!pred->field_name) 419 if (!pred->field_name)
415 return -ENOMEM; 420 return -ENOMEM;
416 421
417 pred->val = simple_strtoull(val_str, &tmp, 10); 422 pred->val = simple_strtoull(val_str, &tmp, 0);
418 if (tmp == val_str) { 423 if (tmp == val_str) {
419 pred->str_val = kstrdup(val_str, GFP_KERNEL); 424 pred->str_val = kstrdup(val_str, GFP_KERNEL);
420 if (!pred->str_val) 425 if (!pred->str_val)
421 return -ENOMEM; 426 return -ENOMEM;
422 } 427 } else if (*tmp != '\0')
428 return -EINVAL;
423 429
424 return 0; 430 return 0;
425} 431}
diff --git a/kernel/trace/trace_events_stage_2.h b/kernel/trace/trace_events_stage_2.h
index 30743f7d4110..d363c6672c6c 100644
--- a/kernel/trace/trace_events_stage_2.h
+++ b/kernel/trace/trace_events_stage_2.h
@@ -105,10 +105,10 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \
105 return 0; 105 return 0;
106 106
107#undef __entry 107#undef __entry
108#define __entry "REC" 108#define __entry REC
109 109
110#undef TP_printk 110#undef TP_printk
111#define TP_printk(fmt, args...) "%s, %s\n", #fmt, #args 111#define TP_printk(fmt, args...) "%s, %s\n", #fmt, __stringify(args)
112 112
113#undef TP_fast_assign 113#undef TP_fast_assign
114#define TP_fast_assign(args...) args 114#define TP_fast_assign(args...) args
diff --git a/kernel/trace/trace_power.c b/kernel/trace/trace_power.c
index bae791ebcc51..118439709fb7 100644
--- a/kernel/trace/trace_power.c
+++ b/kernel/trace/trace_power.c
@@ -186,6 +186,12 @@ static enum print_line_t power_print_line(struct trace_iterator *iter)
186 return TRACE_TYPE_UNHANDLED; 186 return TRACE_TYPE_UNHANDLED;
187} 187}
188 188
189static void power_print_header(struct seq_file *s)
190{
191 seq_puts(s, "# TIMESTAMP STATE EVENT\n");
192 seq_puts(s, "# | | |\n");
193}
194
189static struct tracer power_tracer __read_mostly = 195static struct tracer power_tracer __read_mostly =
190{ 196{
191 .name = "power", 197 .name = "power",
@@ -194,6 +200,7 @@ static struct tracer power_tracer __read_mostly =
194 .stop = stop_power_trace, 200 .stop = stop_power_trace,
195 .reset = power_trace_reset, 201 .reset = power_trace_reset,
196 .print_line = power_print_line, 202 .print_line = power_print_line,
203 .print_header = power_print_header,
197}; 204};
198 205
199static int init_power_trace(void) 206static int init_power_trace(void)
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
index a2a3af29c943..5e579645ac86 100644
--- a/kernel/trace/trace_syscalls.c
+++ b/kernel/trace/trace_syscalls.c
@@ -1,5 +1,5 @@
1#include <trace/syscall.h>
1#include <linux/kernel.h> 2#include <linux/kernel.h>
2#include <linux/ftrace.h>
3#include <asm/syscall.h> 3#include <asm/syscall.h>
4 4
5#include "trace_output.h" 5#include "trace_output.h"
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index b6b966ce1451..f71fb2a08950 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -966,20 +966,20 @@ undo:
966} 966}
967 967
968#ifdef CONFIG_SMP 968#ifdef CONFIG_SMP
969static struct workqueue_struct *work_on_cpu_wq __read_mostly;
970 969
971struct work_for_cpu { 970struct work_for_cpu {
972 struct work_struct work; 971 struct completion completion;
973 long (*fn)(void *); 972 long (*fn)(void *);
974 void *arg; 973 void *arg;
975 long ret; 974 long ret;
976}; 975};
977 976
978static void do_work_for_cpu(struct work_struct *w) 977static int do_work_for_cpu(void *_wfc)
979{ 978{
980 struct work_for_cpu *wfc = container_of(w, struct work_for_cpu, work); 979 struct work_for_cpu *wfc = _wfc;
981
982 wfc->ret = wfc->fn(wfc->arg); 980 wfc->ret = wfc->fn(wfc->arg);
981 complete(&wfc->completion);
982 return 0;
983} 983}
984 984
985/** 985/**
@@ -990,17 +990,23 @@ static void do_work_for_cpu(struct work_struct *w)
990 * 990 *
991 * This will return the value @fn returns. 991 * This will return the value @fn returns.
992 * It is up to the caller to ensure that the cpu doesn't go offline. 992 * It is up to the caller to ensure that the cpu doesn't go offline.
993 * The caller must not hold any locks which would prevent @fn from completing.
993 */ 994 */
994long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) 995long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg)
995{ 996{
996 struct work_for_cpu wfc; 997 struct task_struct *sub_thread;
997 998 struct work_for_cpu wfc = {
998 INIT_WORK(&wfc.work, do_work_for_cpu); 999 .completion = COMPLETION_INITIALIZER_ONSTACK(wfc.completion),
999 wfc.fn = fn; 1000 .fn = fn,
1000 wfc.arg = arg; 1001 .arg = arg,
1001 queue_work_on(cpu, work_on_cpu_wq, &wfc.work); 1002 };
1002 flush_work(&wfc.work); 1003
1003 1004 sub_thread = kthread_create(do_work_for_cpu, &wfc, "work_for_cpu");
1005 if (IS_ERR(sub_thread))
1006 return PTR_ERR(sub_thread);
1007 kthread_bind(sub_thread, cpu);
1008 wake_up_process(sub_thread);
1009 wait_for_completion(&wfc.completion);
1004 return wfc.ret; 1010 return wfc.ret;
1005} 1011}
1006EXPORT_SYMBOL_GPL(work_on_cpu); 1012EXPORT_SYMBOL_GPL(work_on_cpu);
@@ -1016,8 +1022,4 @@ void __init init_workqueues(void)
1016 hotcpu_notifier(workqueue_cpu_callback, 0); 1022 hotcpu_notifier(workqueue_cpu_callback, 0);
1017 keventd_wq = create_workqueue("events"); 1023 keventd_wq = create_workqueue("events");
1018 BUG_ON(!keventd_wq); 1024 BUG_ON(!keventd_wq);
1019#ifdef CONFIG_SMP
1020 work_on_cpu_wq = create_workqueue("work_on_cpu");
1021 BUG_ON(!work_on_cpu_wq);
1022#endif
1023} 1025}
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index c6e854f215fa..812c28207baf 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -440,7 +440,7 @@ config LOCKDEP
440 bool 440 bool
441 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT 441 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
442 select STACKTRACE 442 select STACKTRACE
443 select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND 443 select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND && !S390
444 select KALLSYMS 444 select KALLSYMS
445 select KALLSYMS_ALL 445 select KALLSYMS_ALL
446 446
@@ -620,7 +620,7 @@ config ARCH_WANT_FRAME_POINTERS
620config FRAME_POINTER 620config FRAME_POINTER
621 bool "Compile the kernel with frame pointers" 621 bool "Compile the kernel with frame pointers"
622 depends on DEBUG_KERNEL && \ 622 depends on DEBUG_KERNEL && \
623 (CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \ 623 (CRIS || M68K || M68KNOMMU || FRV || UML || \
624 AVR32 || SUPERH || BLACKFIN || MN10300) || \ 624 AVR32 || SUPERH || BLACKFIN || MN10300) || \
625 ARCH_WANT_FRAME_POINTERS 625 ARCH_WANT_FRAME_POINTERS
626 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS 626 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
@@ -809,13 +809,13 @@ config FAULT_INJECTION_STACKTRACE_FILTER
809 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT 809 depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
810 depends on !X86_64 810 depends on !X86_64
811 select STACKTRACE 811 select STACKTRACE
812 select FRAME_POINTER if !PPC 812 select FRAME_POINTER if !PPC && !S390
813 help 813 help
814 Provide stacktrace filter for fault-injection capabilities 814 Provide stacktrace filter for fault-injection capabilities
815 815
816config LATENCYTOP 816config LATENCYTOP
817 bool "Latency measuring infrastructure" 817 bool "Latency measuring infrastructure"
818 select FRAME_POINTER if !MIPS && !PPC 818 select FRAME_POINTER if !MIPS && !PPC && !S390
819 select KALLSYMS 819 select KALLSYMS
820 select KALLSYMS_ALL 820 select KALLSYMS_ALL
821 select STACKTRACE 821 select STACKTRACE
diff --git a/lib/Makefile b/lib/Makefile
index d6edd6753f40..33a40e40e3ee 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -38,7 +38,7 @@ lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
38lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o 38lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
39lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o 39lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o
40lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o 40lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o
41lib-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o 41obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o
42obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o 42obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
43obj-$(CONFIG_LOCK_KERNEL) += kernel_lock.o 43obj-$(CONFIG_LOCK_KERNEL) += kernel_lock.o
44obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o 44obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
diff --git a/lib/debug_locks.c b/lib/debug_locks.c
index 0218b4693dd8..bc3b11731b9c 100644
--- a/lib/debug_locks.c
+++ b/lib/debug_locks.c
@@ -36,7 +36,7 @@ int debug_locks_silent;
36 */ 36 */
37int debug_locks_off(void) 37int debug_locks_off(void)
38{ 38{
39 if (xchg(&debug_locks, 0)) { 39 if (__debug_locks_off()) {
40 if (!debug_locks_silent) { 40 if (!debug_locks_silent) {
41 oops_in_progress = 1; 41 oops_in_progress = 1;
42 console_verbose(); 42 console_verbose();
diff --git a/lib/kobject.c b/lib/kobject.c
index a6dec32f2ddd..bacf6fe4f7a0 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -218,6 +218,9 @@ int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
218 const char *old_name = kobj->name; 218 const char *old_name = kobj->name;
219 char *s; 219 char *s;
220 220
221 if (kobj->name && !fmt)
222 return 0;
223
221 kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); 224 kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs);
222 if (!kobj->name) 225 if (!kobj->name)
223 return -ENOMEM; 226 return -ENOMEM;
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
index 97a777ad4f59..920a3ca6e259 100644
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
@@ -258,7 +258,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
258 goto exit; 258 goto exit;
259 259
260 retval = call_usermodehelper(argv[0], argv, 260 retval = call_usermodehelper(argv[0], argv,
261 env->envp, UMH_NO_WAIT); 261 env->envp, UMH_WAIT_EXEC);
262 } 262 }
263 263
264exit: 264exit:
@@ -328,7 +328,7 @@ static int __init kobject_uevent_init(void)
328 "kobject_uevent: unable to create netlink socket!\n"); 328 "kobject_uevent: unable to create netlink socket!\n");
329 return -ENODEV; 329 return -ENODEV;
330 } 330 }
331 331 netlink_set_nonroot(NETLINK_KOBJECT_UEVENT, NL_NONROOT_RECV);
332 return 0; 332 return 0;
333} 333}
334 334
diff --git a/lib/scatterlist.c b/lib/scatterlist.c
index b7b449dafbe5..a295e404e908 100644
--- a/lib/scatterlist.c
+++ b/lib/scatterlist.c
@@ -347,9 +347,12 @@ bool sg_miter_next(struct sg_mapping_iter *miter)
347 sg_miter_stop(miter); 347 sg_miter_stop(miter);
348 348
349 /* get to the next sg if necessary. __offset is adjusted by stop */ 349 /* get to the next sg if necessary. __offset is adjusted by stop */
350 if (miter->__offset == miter->__sg->length && --miter->__nents) { 350 while (miter->__offset == miter->__sg->length) {
351 miter->__sg = sg_next(miter->__sg); 351 if (--miter->__nents) {
352 miter->__offset = 0; 352 miter->__sg = sg_next(miter->__sg);
353 miter->__offset = 0;
354 } else
355 return false;
353 } 356 }
354 357
355 /* map the next page */ 358 /* map the next page */
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index be3001f912e4..7536acea135b 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -1051,13 +1051,6 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
1051 if (str < end) 1051 if (str < end)
1052 *str = '%'; 1052 *str = '%';
1053 ++str; 1053 ++str;
1054 if (*fmt) {
1055 if (str < end)
1056 *str = *fmt;
1057 ++str;
1058 } else {
1059 --fmt;
1060 }
1061 break; 1054 break;
1062 1055
1063 case FORMAT_TYPE_NRCHARS: { 1056 case FORMAT_TYPE_NRCHARS: {
@@ -1339,8 +1332,6 @@ do { \
1339 break; 1332 break;
1340 1333
1341 case FORMAT_TYPE_INVALID: 1334 case FORMAT_TYPE_INVALID:
1342 if (!*fmt)
1343 --fmt;
1344 break; 1335 break;
1345 1336
1346 case FORMAT_TYPE_NRCHARS: { 1337 case FORMAT_TYPE_NRCHARS: {
@@ -1523,13 +1514,6 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
1523 if (str < end) 1514 if (str < end)
1524 *str = '%'; 1515 *str = '%';
1525 ++str; 1516 ++str;
1526 if (*fmt) {
1527 if (str < end)
1528 *str = *fmt;
1529 ++str;
1530 } else {
1531 --fmt;
1532 }
1533 break; 1517 break;
1534 1518
1535 case FORMAT_TYPE_NRCHARS: 1519 case FORMAT_TYPE_NRCHARS:
diff --git a/mm/Kconfig b/mm/Kconfig
index b53427ad30a3..57971d2ab848 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -213,6 +213,8 @@ config UNEVICTABLE_LRU
213 will use one page flag and increase the code size a little, 213 will use one page flag and increase the code size a little,
214 say Y unless you know what you are doing. 214 say Y unless you know what you are doing.
215 215
216 See Documentation/vm/unevictable-lru.txt for more information.
217
216config HAVE_MLOCK 218config HAVE_MLOCK
217 bool 219 bool
218 default y if MMU=y 220 default y if MMU=y
diff --git a/mm/filemap.c b/mm/filemap.c
index 2e2d38ebda4b..379ff0bcbf6e 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -441,6 +441,7 @@ int filemap_write_and_wait_range(struct address_space *mapping,
441 } 441 }
442 return err; 442 return err;
443} 443}
444EXPORT_SYMBOL(filemap_write_and_wait_range);
444 445
445/** 446/**
446 * add_to_page_cache_locked - add a locked page to the pagecache 447 * add_to_page_cache_locked - add a locked page to the pagecache
@@ -567,8 +568,8 @@ EXPORT_SYMBOL(wait_on_page_bit);
567 568
568/** 569/**
569 * add_page_wait_queue - Add an arbitrary waiter to a page's wait queue 570 * add_page_wait_queue - Add an arbitrary waiter to a page's wait queue
570 * @page - Page defining the wait queue of interest 571 * @page: Page defining the wait queue of interest
571 * @waiter - Waiter to add to the queue 572 * @waiter: Waiter to add to the queue
572 * 573 *
573 * Add an arbitrary @waiter to the wait queue for the nominated @page. 574 * Add an arbitrary @waiter to the wait queue for the nominated @page.
574 */ 575 */
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 2fc6d6c48238..e44fb0fbb80e 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -932,7 +932,7 @@ static int __mem_cgroup_try_charge(struct mm_struct *mm,
932 if (unlikely(!mem)) 932 if (unlikely(!mem))
933 return 0; 933 return 0;
934 934
935 VM_BUG_ON(mem_cgroup_is_obsolete(mem)); 935 VM_BUG_ON(!mem || mem_cgroup_is_obsolete(mem));
936 936
937 while (1) { 937 while (1) {
938 int ret; 938 int ret;
diff --git a/mm/mmap.c b/mm/mmap.c
index 4a3841186c11..3303d1ba8e87 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1575,7 +1575,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
1575 * Overcommit.. This must be the final test, as it will 1575 * Overcommit.. This must be the final test, as it will
1576 * update security statistics. 1576 * update security statistics.
1577 */ 1577 */
1578 if (security_vm_enough_memory(grow)) 1578 if (security_vm_enough_memory_mm(mm, grow))
1579 return -ENOMEM; 1579 return -ENOMEM;
1580 1580
1581 /* Ok, everything looks good - let it rip */ 1581 /* Ok, everything looks good - let it rip */
diff --git a/mm/shmem.c b/mm/shmem.c
index d94d2e9146bc..f9cb20ebb990 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -24,6 +24,7 @@
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/vfs.h> 25#include <linux/vfs.h>
26#include <linux/mount.h> 26#include <linux/mount.h>
27#include <linux/pagemap.h>
27#include <linux/file.h> 28#include <linux/file.h>
28#include <linux/mm.h> 29#include <linux/mm.h>
29#include <linux/module.h> 30#include <linux/module.h>
@@ -43,7 +44,6 @@ static struct vfsmount *shm_mnt;
43#include <linux/exportfs.h> 44#include <linux/exportfs.h>
44#include <linux/generic_acl.h> 45#include <linux/generic_acl.h>
45#include <linux/mman.h> 46#include <linux/mman.h>
46#include <linux/pagemap.h>
47#include <linux/string.h> 47#include <linux/string.h>
48#include <linux/slab.h> 48#include <linux/slab.h>
49#include <linux/backing-dev.h> 49#include <linux/backing-dev.h>
@@ -65,13 +65,28 @@ static struct vfsmount *shm_mnt;
65#include <asm/div64.h> 65#include <asm/div64.h>
66#include <asm/pgtable.h> 66#include <asm/pgtable.h>
67 67
68/*
69 * The maximum size of a shmem/tmpfs file is limited by the maximum size of
70 * its triple-indirect swap vector - see illustration at shmem_swp_entry().
71 *
72 * With 4kB page size, maximum file size is just over 2TB on a 32-bit kernel,
73 * but one eighth of that on a 64-bit kernel. With 8kB page size, maximum
74 * file size is just over 4TB on a 64-bit kernel, but 16TB on a 32-bit kernel,
75 * MAX_LFS_FILESIZE being then more restrictive than swap vector layout.
76 *
77 * We use / and * instead of shifts in the definitions below, so that the swap
78 * vector can be tested with small even values (e.g. 20) for ENTRIES_PER_PAGE.
79 */
68#define ENTRIES_PER_PAGE (PAGE_CACHE_SIZE/sizeof(unsigned long)) 80#define ENTRIES_PER_PAGE (PAGE_CACHE_SIZE/sizeof(unsigned long))
69#define ENTRIES_PER_PAGEPAGE (ENTRIES_PER_PAGE*ENTRIES_PER_PAGE) 81#define ENTRIES_PER_PAGEPAGE ((unsigned long long)ENTRIES_PER_PAGE*ENTRIES_PER_PAGE)
70#define BLOCKS_PER_PAGE (PAGE_CACHE_SIZE/512)
71 82
72#define SHMEM_MAX_INDEX (SHMEM_NR_DIRECT + (ENTRIES_PER_PAGEPAGE/2) * (ENTRIES_PER_PAGE+1)) 83#define SHMSWP_MAX_INDEX (SHMEM_NR_DIRECT + (ENTRIES_PER_PAGEPAGE/2) * (ENTRIES_PER_PAGE+1))
73#define SHMEM_MAX_BYTES ((unsigned long long)SHMEM_MAX_INDEX << PAGE_CACHE_SHIFT) 84#define SHMSWP_MAX_BYTES (SHMSWP_MAX_INDEX << PAGE_CACHE_SHIFT)
74 85
86#define SHMEM_MAX_BYTES min_t(unsigned long long, SHMSWP_MAX_BYTES, MAX_LFS_FILESIZE)
87#define SHMEM_MAX_INDEX ((unsigned long)((SHMEM_MAX_BYTES+1) >> PAGE_CACHE_SHIFT))
88
89#define BLOCKS_PER_PAGE (PAGE_CACHE_SIZE/512)
75#define VM_ACCT(size) (PAGE_CACHE_ALIGN(size) >> PAGE_SHIFT) 90#define VM_ACCT(size) (PAGE_CACHE_ALIGN(size) >> PAGE_SHIFT)
76 91
77/* info->flags needs VM_flags to handle pagein/truncate races efficiently */ 92/* info->flags needs VM_flags to handle pagein/truncate races efficiently */
@@ -2581,7 +2596,7 @@ int shmem_unuse(swp_entry_t entry, struct page *page)
2581#define shmem_get_inode(sb, mode, dev, flags) ramfs_get_inode(sb, mode, dev) 2596#define shmem_get_inode(sb, mode, dev, flags) ramfs_get_inode(sb, mode, dev)
2582#define shmem_acct_size(flags, size) 0 2597#define shmem_acct_size(flags, size) 0
2583#define shmem_unacct_size(flags, size) do {} while (0) 2598#define shmem_unacct_size(flags, size) do {} while (0)
2584#define SHMEM_MAX_BYTES LLONG_MAX 2599#define SHMEM_MAX_BYTES MAX_LFS_FILESIZE
2585 2600
2586#endif /* CONFIG_SHMEM */ 2601#endif /* CONFIG_SHMEM */
2587 2602
diff --git a/mm/util.c b/mm/util.c
index 2599e83eea17..55bef160b9f1 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -223,6 +223,22 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
223} 223}
224#endif 224#endif
225 225
226/**
227 * get_user_pages_fast() - pin user pages in memory
228 * @start: starting user address
229 * @nr_pages: number of pages from start to pin
230 * @write: whether pages will be written to
231 * @pages: array that receives pointers to the pages pinned.
232 * Should be at least nr_pages long.
233 *
234 * Attempt to pin user pages in memory without taking mm->mmap_sem.
235 * If not successful, it will fall back to taking the lock and
236 * calling get_user_pages().
237 *
238 * Returns number of pages pinned. This may be fewer than the number
239 * requested. If nr_pages is 0 or negative, returns 0. If no pages
240 * were pinned, returns -errno.
241 */
226int __attribute__((weak)) get_user_pages_fast(unsigned long start, 242int __attribute__((weak)) get_user_pages_fast(unsigned long start,
227 int nr_pages, int write, struct page **pages) 243 int nr_pages, int write, struct page **pages)
228{ 244{
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 39fdfb14eeaa..eac9577941f9 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -63,6 +63,9 @@ struct scan_control {
63 /* Can mapped pages be reclaimed? */ 63 /* Can mapped pages be reclaimed? */
64 int may_unmap; 64 int may_unmap;
65 65
66 /* Can pages be swapped as part of reclaim? */
67 int may_swap;
68
66 /* This context's SWAP_CLUSTER_MAX. If freeing memory for 69 /* This context's SWAP_CLUSTER_MAX. If freeing memory for
67 * suspend, we effectively ignore SWAP_CLUSTER_MAX. 70 * suspend, we effectively ignore SWAP_CLUSTER_MAX.
68 * In this context, it doesn't matter that we scan the 71 * In this context, it doesn't matter that we scan the
@@ -1380,7 +1383,7 @@ static void get_scan_ratio(struct zone *zone, struct scan_control *sc,
1380 struct zone_reclaim_stat *reclaim_stat = get_reclaim_stat(zone, sc); 1383 struct zone_reclaim_stat *reclaim_stat = get_reclaim_stat(zone, sc);
1381 1384
1382 /* If we have no swap space, do not bother scanning anon pages. */ 1385 /* If we have no swap space, do not bother scanning anon pages. */
1383 if (nr_swap_pages <= 0) { 1386 if (!sc->may_swap || (nr_swap_pages <= 0)) {
1384 percent[0] = 0; 1387 percent[0] = 0;
1385 percent[1] = 100; 1388 percent[1] = 100;
1386 return; 1389 return;
@@ -1697,6 +1700,7 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
1697 .may_writepage = !laptop_mode, 1700 .may_writepage = !laptop_mode,
1698 .swap_cluster_max = SWAP_CLUSTER_MAX, 1701 .swap_cluster_max = SWAP_CLUSTER_MAX,
1699 .may_unmap = 1, 1702 .may_unmap = 1,
1703 .may_swap = 1,
1700 .swappiness = vm_swappiness, 1704 .swappiness = vm_swappiness,
1701 .order = order, 1705 .order = order,
1702 .mem_cgroup = NULL, 1706 .mem_cgroup = NULL,
@@ -1717,6 +1721,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
1717 struct scan_control sc = { 1721 struct scan_control sc = {
1718 .may_writepage = !laptop_mode, 1722 .may_writepage = !laptop_mode,
1719 .may_unmap = 1, 1723 .may_unmap = 1,
1724 .may_swap = !noswap,
1720 .swap_cluster_max = SWAP_CLUSTER_MAX, 1725 .swap_cluster_max = SWAP_CLUSTER_MAX,
1721 .swappiness = swappiness, 1726 .swappiness = swappiness,
1722 .order = 0, 1727 .order = 0,
@@ -1726,9 +1731,6 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
1726 }; 1731 };
1727 struct zonelist *zonelist; 1732 struct zonelist *zonelist;
1728 1733
1729 if (noswap)
1730 sc.may_unmap = 0;
1731
1732 sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) | 1734 sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) |
1733 (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK); 1735 (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK);
1734 zonelist = NODE_DATA(numa_node_id())->node_zonelists; 1736 zonelist = NODE_DATA(numa_node_id())->node_zonelists;
@@ -1767,6 +1769,7 @@ static unsigned long balance_pgdat(pg_data_t *pgdat, int order)
1767 struct scan_control sc = { 1769 struct scan_control sc = {
1768 .gfp_mask = GFP_KERNEL, 1770 .gfp_mask = GFP_KERNEL,
1769 .may_unmap = 1, 1771 .may_unmap = 1,
1772 .may_swap = 1,
1770 .swap_cluster_max = SWAP_CLUSTER_MAX, 1773 .swap_cluster_max = SWAP_CLUSTER_MAX,
1771 .swappiness = vm_swappiness, 1774 .swappiness = vm_swappiness,
1772 .order = order, 1775 .order = order,
@@ -2088,13 +2091,13 @@ static void shrink_all_zones(unsigned long nr_pages, int prio,
2088 nr_reclaimed += shrink_list(l, nr_to_scan, zone, 2091 nr_reclaimed += shrink_list(l, nr_to_scan, zone,
2089 sc, prio); 2092 sc, prio);
2090 if (nr_reclaimed >= nr_pages) { 2093 if (nr_reclaimed >= nr_pages) {
2091 sc->nr_reclaimed = nr_reclaimed; 2094 sc->nr_reclaimed += nr_reclaimed;
2092 return; 2095 return;
2093 } 2096 }
2094 } 2097 }
2095 } 2098 }
2096 } 2099 }
2097 sc->nr_reclaimed = nr_reclaimed; 2100 sc->nr_reclaimed += nr_reclaimed;
2098} 2101}
2099 2102
2100/* 2103/*
@@ -2115,6 +2118,7 @@ unsigned long shrink_all_memory(unsigned long nr_pages)
2115 .may_unmap = 0, 2118 .may_unmap = 0,
2116 .may_writepage = 1, 2119 .may_writepage = 1,
2117 .isolate_pages = isolate_pages_global, 2120 .isolate_pages = isolate_pages_global,
2121 .nr_reclaimed = 0,
2118 }; 2122 };
2119 2123
2120 current->reclaim_state = &reclaim_state; 2124 current->reclaim_state = &reclaim_state;
@@ -2297,6 +2301,7 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
2297 struct scan_control sc = { 2301 struct scan_control sc = {
2298 .may_writepage = !!(zone_reclaim_mode & RECLAIM_WRITE), 2302 .may_writepage = !!(zone_reclaim_mode & RECLAIM_WRITE),
2299 .may_unmap = !!(zone_reclaim_mode & RECLAIM_SWAP), 2303 .may_unmap = !!(zone_reclaim_mode & RECLAIM_SWAP),
2304 .may_swap = 1,
2300 .swap_cluster_max = max_t(unsigned long, nr_pages, 2305 .swap_cluster_max = max_t(unsigned long, nr_pages,
2301 SWAP_CLUSTER_MAX), 2306 SWAP_CLUSTER_MAX),
2302 .gfp_mask = gfp_mask, 2307 .gfp_mask = gfp_mask,
diff --git a/net/802/tr.c b/net/802/tr.c
index e7eb13084d71..e874447ad144 100644
--- a/net/802/tr.c
+++ b/net/802/tr.c
@@ -561,6 +561,9 @@ static int rif_seq_show(struct seq_file *seq, void *v)
561 } 561 }
562 seq_putc(seq, '\n'); 562 seq_putc(seq, '\n');
563 } 563 }
564
565 if (dev)
566 dev_put(dev);
564 } 567 }
565 return 0; 568 return 0;
566} 569}
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c
index 654e45f5719d..c67fe6f75653 100644
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -121,8 +121,10 @@ int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp,
121 if (!skb) 121 if (!skb)
122 return NET_RX_DROP; 122 return NET_RX_DROP;
123 123
124 if (netpoll_rx_on(skb)) 124 if (netpoll_rx_on(skb)) {
125 skb->protocol = eth_type_trans(skb, skb->dev);
125 return vlan_hwaccel_receive_skb(skb, grp, vlan_tci); 126 return vlan_hwaccel_receive_skb(skb, grp, vlan_tci);
127 }
126 128
127 return napi_frags_finish(napi, skb, 129 return napi_frags_finish(napi, skb,
128 vlan_gro_common(napi, grp, vlan_tci, skb)); 130 vlan_gro_common(napi, grp, vlan_tci, skb));
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 1b34135cf990..6b0921364014 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -668,7 +668,8 @@ static int vlan_ethtool_get_settings(struct net_device *dev,
668 const struct vlan_dev_info *vlan = vlan_dev_info(dev); 668 const struct vlan_dev_info *vlan = vlan_dev_info(dev);
669 struct net_device *real_dev = vlan->real_dev; 669 struct net_device *real_dev = vlan->real_dev;
670 670
671 if (!real_dev->ethtool_ops->get_settings) 671 if (!real_dev->ethtool_ops ||
672 !real_dev->ethtool_ops->get_settings)
672 return -EOPNOTSUPP; 673 return -EOPNOTSUPP;
673 674
674 return real_dev->ethtool_ops->get_settings(real_dev, cmd); 675 return real_dev->ethtool_ops->get_settings(real_dev, cmd);
diff --git a/net/ax25/ax25_uid.c b/net/ax25/ax25_uid.c
index 57aeba729bae..832bcf092a01 100644
--- a/net/ax25/ax25_uid.c
+++ b/net/ax25/ax25_uid.c
@@ -148,9 +148,13 @@ static void *ax25_uid_seq_start(struct seq_file *seq, loff_t *pos)
148{ 148{
149 struct ax25_uid_assoc *pt; 149 struct ax25_uid_assoc *pt;
150 struct hlist_node *node; 150 struct hlist_node *node;
151 int i = 0; 151 int i = 1;
152 152
153 read_lock(&ax25_uid_lock); 153 read_lock(&ax25_uid_lock);
154
155 if (*pos == 0)
156 return SEQ_START_TOKEN;
157
154 ax25_uid_for_each(pt, node, &ax25_uid_list) { 158 ax25_uid_for_each(pt, node, &ax25_uid_list) {
155 if (i == *pos) 159 if (i == *pos)
156 return pt; 160 return pt;
@@ -162,8 +166,10 @@ static void *ax25_uid_seq_start(struct seq_file *seq, loff_t *pos)
162static void *ax25_uid_seq_next(struct seq_file *seq, void *v, loff_t *pos) 166static void *ax25_uid_seq_next(struct seq_file *seq, void *v, loff_t *pos)
163{ 167{
164 ++*pos; 168 ++*pos;
165 169 if (v == SEQ_START_TOKEN)
166 return hlist_entry(((ax25_uid_assoc *)v)->uid_node.next, 170 return ax25_uid_list.first;
171 else
172 return hlist_entry(((ax25_uid_assoc *)v)->uid_node.next,
167 ax25_uid_assoc, uid_node); 173 ax25_uid_assoc, uid_node);
168} 174}
169 175
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 55534244c3a0..15f40ea8d544 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -866,8 +866,16 @@ static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *s
866 hci_dev_lock(hdev); 866 hci_dev_lock(hdev);
867 867
868 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr); 868 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
869 if (!conn) 869 if (!conn) {
870 goto unlock; 870 if (ev->link_type != SCO_LINK)
871 goto unlock;
872
873 conn = hci_conn_hash_lookup_ba(hdev, ESCO_LINK, &ev->bdaddr);
874 if (!conn)
875 goto unlock;
876
877 conn->type = SCO_LINK;
878 }
871 879
872 if (!ev->status) { 880 if (!ev->status) {
873 conn->handle = __le16_to_cpu(ev->handle); 881 conn->handle = __le16_to_cpu(ev->handle);
@@ -1646,20 +1654,28 @@ static inline void hci_sync_conn_complete_evt(struct hci_dev *hdev, struct sk_bu
1646 conn->type = SCO_LINK; 1654 conn->type = SCO_LINK;
1647 } 1655 }
1648 1656
1649 if (conn->out && ev->status == 0x1c && conn->attempt < 2) { 1657 switch (ev->status) {
1650 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) | 1658 case 0x00:
1651 (hdev->esco_type & EDR_ESCO_MASK);
1652 hci_setup_sync(conn, conn->link->handle);
1653 goto unlock;
1654 }
1655
1656 if (!ev->status) {
1657 conn->handle = __le16_to_cpu(ev->handle); 1659 conn->handle = __le16_to_cpu(ev->handle);
1658 conn->state = BT_CONNECTED; 1660 conn->state = BT_CONNECTED;
1659 1661
1660 hci_conn_add_sysfs(conn); 1662 hci_conn_add_sysfs(conn);
1661 } else 1663 break;
1664
1665 case 0x1c: /* SCO interval rejected */
1666 case 0x1f: /* Unspecified error */
1667 if (conn->out && conn->attempt < 2) {
1668 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) |
1669 (hdev->esco_type & EDR_ESCO_MASK);
1670 hci_setup_sync(conn, conn->link->handle);
1671 goto unlock;
1672 }
1673 /* fall through */
1674
1675 default:
1662 conn->state = BT_CLOSED; 1676 conn->state = BT_CLOSED;
1677 break;
1678 }
1663 1679
1664 hci_proto_connect_cfm(conn, ev->status); 1680 hci_proto_connect_cfm(conn, ev->status);
1665 if (ev->status) 1681 if (ev->status)
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 1d0fb0f23c63..374536e050aa 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -1194,6 +1194,8 @@ void rfcomm_dlc_accept(struct rfcomm_dlc *d)
1194 1194
1195 rfcomm_send_ua(d->session, d->dlci); 1195 rfcomm_send_ua(d->session, d->dlci);
1196 1196
1197 rfcomm_dlc_clear_timer(d);
1198
1197 rfcomm_dlc_lock(d); 1199 rfcomm_dlc_lock(d);
1198 d->state = BT_CONNECTED; 1200 d->state = BT_CONNECTED;
1199 d->state_change(d, 0); 1201 d->state_change(d, 0);
diff --git a/net/can/af_can.c b/net/can/af_can.c
index 547bafc79e28..10f0528c3bf5 100644
--- a/net/can/af_can.c
+++ b/net/can/af_can.c
@@ -674,8 +674,8 @@ static int can_rcv(struct sk_buff *skb, struct net_device *dev,
674 674
675 rcu_read_unlock(); 675 rcu_read_unlock();
676 676
677 /* free the skbuff allocated by the netdevice driver */ 677 /* consume the skbuff allocated by the netdevice driver */
678 kfree_skb(skb); 678 consume_skb(skb);
679 679
680 if (matches > 0) { 680 if (matches > 0) {
681 can_stats.matches++; 681 can_stats.matches++;
diff --git a/net/core/dev.c b/net/core/dev.c
index 91d792d17e09..308a7d0c277f 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1336,7 +1336,12 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
1336{ 1336{
1337 struct packet_type *ptype; 1337 struct packet_type *ptype;
1338 1338
1339#ifdef CONFIG_NET_CLS_ACT
1340 if (!(skb->tstamp.tv64 && (G_TC_FROM(skb->tc_verd) & AT_INGRESS)))
1341 net_timestamp(skb);
1342#else
1339 net_timestamp(skb); 1343 net_timestamp(skb);
1344#endif
1340 1345
1341 rcu_read_lock(); 1346 rcu_read_lock();
1342 list_for_each_entry_rcu(ptype, &ptype_all, list) { 1347 list_for_each_entry_rcu(ptype, &ptype_all, list) {
@@ -1430,7 +1435,7 @@ void netif_device_detach(struct net_device *dev)
1430{ 1435{
1431 if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) && 1436 if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
1432 netif_running(dev)) { 1437 netif_running(dev)) {
1433 netif_stop_queue(dev); 1438 netif_tx_stop_all_queues(dev);
1434 } 1439 }
1435} 1440}
1436EXPORT_SYMBOL(netif_device_detach); 1441EXPORT_SYMBOL(netif_device_detach);
@@ -1445,7 +1450,7 @@ void netif_device_attach(struct net_device *dev)
1445{ 1450{
1446 if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) && 1451 if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
1447 netif_running(dev)) { 1452 netif_running(dev)) {
1448 netif_wake_queue(dev); 1453 netif_tx_wake_all_queues(dev);
1449 __netdev_watchdog_up(dev); 1454 __netdev_watchdog_up(dev);
1450 } 1455 }
1451} 1456}
@@ -2328,8 +2333,10 @@ static int napi_gro_complete(struct sk_buff *skb)
2328 struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK]; 2333 struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK];
2329 int err = -ENOENT; 2334 int err = -ENOENT;
2330 2335
2331 if (NAPI_GRO_CB(skb)->count == 1) 2336 if (NAPI_GRO_CB(skb)->count == 1) {
2337 skb_shinfo(skb)->gso_size = 0;
2332 goto out; 2338 goto out;
2339 }
2333 2340
2334 rcu_read_lock(); 2341 rcu_read_lock();
2335 list_for_each_entry_rcu(ptype, head, list) { 2342 list_for_each_entry_rcu(ptype, head, list) {
@@ -2348,7 +2355,6 @@ static int napi_gro_complete(struct sk_buff *skb)
2348 } 2355 }
2349 2356
2350out: 2357out:
2351 skb_shinfo(skb)->gso_size = 0;
2352 return netif_receive_skb(skb); 2358 return netif_receive_skb(skb);
2353} 2359}
2354 2360
@@ -2539,9 +2545,9 @@ struct sk_buff *napi_fraginfo_skb(struct napi_struct *napi,
2539 } 2545 }
2540 2546
2541 BUG_ON(info->nr_frags > MAX_SKB_FRAGS); 2547 BUG_ON(info->nr_frags > MAX_SKB_FRAGS);
2542 frag = &info->frags[info->nr_frags - 1]; 2548 frag = info->frags;
2543 2549
2544 for (i = skb_shinfo(skb)->nr_frags; i < info->nr_frags; i++) { 2550 for (i = 0; i < info->nr_frags; i++) {
2545 skb_fill_page_desc(skb, i, frag->page, frag->page_offset, 2551 skb_fill_page_desc(skb, i, frag->page, frag->page_offset,
2546 frag->size); 2552 frag->size);
2547 frag++; 2553 frag++;
@@ -4399,7 +4405,7 @@ int register_netdevice(struct net_device *dev)
4399 dev->iflink = -1; 4405 dev->iflink = -1;
4400 4406
4401#ifdef CONFIG_COMPAT_NET_DEV_OPS 4407#ifdef CONFIG_COMPAT_NET_DEV_OPS
4402 /* Netdevice_ops API compatiability support. 4408 /* Netdevice_ops API compatibility support.
4403 * This is temporary until all network devices are converted. 4409 * This is temporary until all network devices are converted.
4404 */ 4410 */
4405 if (dev->netdev_ops) { 4411 if (dev->netdev_ops) {
@@ -4410,7 +4416,7 @@ int register_netdevice(struct net_device *dev)
4410 dev->name, netdev_drivername(dev, drivername, 64)); 4416 dev->name, netdev_drivername(dev, drivername, 64));
4411 4417
4412 /* This works only because net_device_ops and the 4418 /* This works only because net_device_ops and the
4413 compatiablity structure are the same. */ 4419 compatibility structure are the same. */
4414 dev->netdev_ops = (void *) &(dev->init); 4420 dev->netdev_ops = (void *) &(dev->init);
4415 } 4421 }
4416#endif 4422#endif
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c
index fe65187810f0..3229e0a81ba6 100644
--- a/net/ipv4/netfilter/nf_nat_core.c
+++ b/net/ipv4/netfilter/nf_nat_core.c
@@ -211,7 +211,8 @@ find_best_ips_proto(struct nf_conntrack_tuple *tuple,
211 minip = ntohl(range->min_ip); 211 minip = ntohl(range->min_ip);
212 maxip = ntohl(range->max_ip); 212 maxip = ntohl(range->max_ip);
213 j = jhash_2words((__force u32)tuple->src.u3.ip, 213 j = jhash_2words((__force u32)tuple->src.u3.ip,
214 (__force u32)tuple->dst.u3.ip, 0); 214 range->flags & IP_NAT_RANGE_PERSISTENT ?
215 (__force u32)tuple->dst.u3.ip : 0, 0);
215 j = ((u64)j * (maxip - minip + 1)) >> 32; 216 j = ((u64)j * (maxip - minip + 1)) >> 32;
216 *var_ipp = htonl(minip + j); 217 *var_ipp = htonl(minip + j);
217} 218}
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index fafbec8b073e..1d7f49c6f0ca 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -2511,6 +2511,7 @@ struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb)
2511 struct sk_buff *p; 2511 struct sk_buff *p;
2512 struct tcphdr *th; 2512 struct tcphdr *th;
2513 struct tcphdr *th2; 2513 struct tcphdr *th2;
2514 unsigned int len;
2514 unsigned int thlen; 2515 unsigned int thlen;
2515 unsigned int flags; 2516 unsigned int flags;
2516 unsigned int mss = 1; 2517 unsigned int mss = 1;
@@ -2531,6 +2532,7 @@ struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb)
2531 2532
2532 skb_gro_pull(skb, thlen); 2533 skb_gro_pull(skb, thlen);
2533 2534
2535 len = skb_gro_len(skb);
2534 flags = tcp_flag_word(th); 2536 flags = tcp_flag_word(th);
2535 2537
2536 for (; (p = *head); head = &p->next) { 2538 for (; (p = *head); head = &p->next) {
@@ -2561,7 +2563,7 @@ found:
2561 2563
2562 mss = skb_shinfo(p)->gso_size; 2564 mss = skb_shinfo(p)->gso_size;
2563 2565
2564 flush |= (skb_gro_len(skb) > mss) | !skb_gro_len(skb); 2566 flush |= (len > mss) | !len;
2565 flush |= (ntohl(th2->seq) + skb_gro_len(p)) ^ ntohl(th->seq); 2567 flush |= (ntohl(th2->seq) + skb_gro_len(p)) ^ ntohl(th->seq);
2566 2568
2567 if (flush || skb_gro_receive(head, skb)) { 2569 if (flush || skb_gro_receive(head, skb)) {
@@ -2574,7 +2576,7 @@ found:
2574 tcp_flag_word(th2) |= flags & (TCP_FLAG_FIN | TCP_FLAG_PSH); 2576 tcp_flag_word(th2) |= flags & (TCP_FLAG_FIN | TCP_FLAG_PSH);
2575 2577
2576out_check_final: 2578out_check_final:
2577 flush = skb_gro_len(skb) < mss; 2579 flush = len < mss;
2578 flush |= flags & (TCP_FLAG_URG | TCP_FLAG_PSH | TCP_FLAG_RST | 2580 flush |= flags & (TCP_FLAG_URG | TCP_FLAG_PSH | TCP_FLAG_RST |
2579 TCP_FLAG_SYN | TCP_FLAG_FIN); 2581 TCP_FLAG_SYN | TCP_FLAG_FIN);
2580 2582
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 2bc8e27a163d..c96a6bb25430 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -928,6 +928,8 @@ static void tcp_init_metrics(struct sock *sk)
928 tcp_set_rto(sk); 928 tcp_set_rto(sk);
929 if (inet_csk(sk)->icsk_rto < TCP_TIMEOUT_INIT && !tp->rx_opt.saw_tstamp) 929 if (inet_csk(sk)->icsk_rto < TCP_TIMEOUT_INIT && !tp->rx_opt.saw_tstamp)
930 goto reset; 930 goto reset;
931
932cwnd:
931 tp->snd_cwnd = tcp_init_cwnd(tp, dst); 933 tp->snd_cwnd = tcp_init_cwnd(tp, dst);
932 tp->snd_cwnd_stamp = tcp_time_stamp; 934 tp->snd_cwnd_stamp = tcp_time_stamp;
933 return; 935 return;
@@ -942,6 +944,7 @@ reset:
942 tp->mdev = tp->mdev_max = tp->rttvar = TCP_TIMEOUT_INIT; 944 tp->mdev = tp->mdev_max = tp->rttvar = TCP_TIMEOUT_INIT;
943 inet_csk(sk)->icsk_rto = TCP_TIMEOUT_INIT; 945 inet_csk(sk)->icsk_rto = TCP_TIMEOUT_INIT;
944 } 946 }
947 goto cwnd;
945} 948}
946 949
947static void tcp_update_reordering(struct sock *sk, const int metric, 950static void tcp_update_reordering(struct sock *sk, const int metric,
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 53300fa2359f..59aec609cec6 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -778,7 +778,7 @@ static void tcp_adjust_pcount(struct sock *sk, struct sk_buff *skb, int decr)
778 778
779 if (tp->lost_skb_hint && 779 if (tp->lost_skb_hint &&
780 before(TCP_SKB_CB(skb)->seq, TCP_SKB_CB(tp->lost_skb_hint)->seq) && 780 before(TCP_SKB_CB(skb)->seq, TCP_SKB_CB(tp->lost_skb_hint)->seq) &&
781 (tcp_is_fack(tp) || TCP_SKB_CB(skb)->sacked)) 781 (tcp_is_fack(tp) || (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)))
782 tp->lost_cnt_hint -= decr; 782 tp->lost_cnt_hint -= decr;
783 783
784 tcp_verify_left_out(tp); 784 tcp_verify_left_out(tp);
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index bda08a09357d..7a1d1ce22e66 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -222,7 +222,7 @@ fail:
222 return error; 222 return error;
223} 223}
224 224
225int ipv4_rcv_saddr_equal(const struct sock *sk1, const struct sock *sk2) 225static int ipv4_rcv_saddr_equal(const struct sock *sk1, const struct sock *sk2)
226{ 226{
227 struct inet_sock *inet1 = inet_sk(sk1), *inet2 = inet_sk(sk2); 227 struct inet_sock *inet1 = inet_sk(sk1), *inet2 = inet_sk(sk2);
228 228
@@ -1823,7 +1823,6 @@ EXPORT_SYMBOL(udp_lib_getsockopt);
1823EXPORT_SYMBOL(udp_lib_setsockopt); 1823EXPORT_SYMBOL(udp_lib_setsockopt);
1824EXPORT_SYMBOL(udp_poll); 1824EXPORT_SYMBOL(udp_poll);
1825EXPORT_SYMBOL(udp_lib_get_port); 1825EXPORT_SYMBOL(udp_lib_get_port);
1826EXPORT_SYMBOL(ipv4_rcv_saddr_equal);
1827 1826
1828#ifdef CONFIG_PROC_FS 1827#ifdef CONFIG_PROC_FS
1829EXPORT_SYMBOL(udp_proc_register); 1828EXPORT_SYMBOL(udp_proc_register);
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index d31df0f4bc9a..a7fdf9a27f15 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -380,10 +380,6 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
380 default: 380 default:
381 goto sticky_done; 381 goto sticky_done;
382 } 382 }
383
384 if ((rthdr->hdrlen & 1) ||
385 (rthdr->hdrlen >> 1) != rthdr->segments_left)
386 goto sticky_done;
387 } 383 }
388 384
389 retv = 0; 385 retv = 0;
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
index dfed176aed37..800ae8542471 100644
--- a/net/ipv6/netfilter/ip6_tables.c
+++ b/net/ipv6/netfilter/ip6_tables.c
@@ -1033,6 +1033,8 @@ static struct xt_counters *alloc_counters(struct xt_table *table)
1033 1033
1034 xt_free_table_info(info); 1034 xt_free_table_info(info);
1035 1035
1036 return counters;
1037
1036 free_counters: 1038 free_counters:
1037 vfree(counters); 1039 vfree(counters);
1038 nomem: 1040 nomem:
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 6842dd2edd5b..8905712cfbb8 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -53,6 +53,8 @@ int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
53{ 53{
54 const struct in6_addr *sk_rcv_saddr6 = &inet6_sk(sk)->rcv_saddr; 54 const struct in6_addr *sk_rcv_saddr6 = &inet6_sk(sk)->rcv_saddr;
55 const struct in6_addr *sk2_rcv_saddr6 = inet6_rcv_saddr(sk2); 55 const struct in6_addr *sk2_rcv_saddr6 = inet6_rcv_saddr(sk2);
56 __be32 sk_rcv_saddr = inet_sk(sk)->rcv_saddr;
57 __be32 sk2_rcv_saddr = inet_rcv_saddr(sk2);
56 int sk_ipv6only = ipv6_only_sock(sk); 58 int sk_ipv6only = ipv6_only_sock(sk);
57 int sk2_ipv6only = inet_v6_ipv6only(sk2); 59 int sk2_ipv6only = inet_v6_ipv6only(sk2);
58 int addr_type = ipv6_addr_type(sk_rcv_saddr6); 60 int addr_type = ipv6_addr_type(sk_rcv_saddr6);
@@ -60,7 +62,9 @@ int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
60 62
61 /* if both are mapped, treat as IPv4 */ 63 /* if both are mapped, treat as IPv4 */
62 if (addr_type == IPV6_ADDR_MAPPED && addr_type2 == IPV6_ADDR_MAPPED) 64 if (addr_type == IPV6_ADDR_MAPPED && addr_type2 == IPV6_ADDR_MAPPED)
63 return ipv4_rcv_saddr_equal(sk, sk2); 65 return (!sk2_ipv6only &&
66 (!sk_rcv_saddr || !sk2_rcv_saddr ||
67 sk_rcv_saddr == sk2_rcv_saddr));
64 68
65 if (addr_type2 == IPV6_ADDR_ANY && 69 if (addr_type2 == IPV6_ADDR_ANY &&
66 !(sk2_ipv6only && addr_type == IPV6_ADDR_MAPPED)) 70 !(sk2_ipv6only && addr_type == IPV6_ADDR_MAPPED))
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
index 49e786535dc8..b51c9187c347 100644
--- a/net/iucv/af_iucv.c
+++ b/net/iucv/af_iucv.c
@@ -172,6 +172,7 @@ static void iucv_sock_close(struct sock *sk)
172 err = iucv_sock_wait_state(sk, IUCV_CLOSED, 0, timeo); 172 err = iucv_sock_wait_state(sk, IUCV_CLOSED, 0, timeo);
173 } 173 }
174 174
175 case IUCV_CLOSING: /* fall through */
175 sk->sk_state = IUCV_CLOSED; 176 sk->sk_state = IUCV_CLOSED;
176 sk->sk_state_change(sk); 177 sk->sk_state_change(sk);
177 178
@@ -224,6 +225,8 @@ static struct sock *iucv_sock_alloc(struct socket *sock, int proto, gfp_t prio)
224 spin_lock_init(&iucv_sk(sk)->message_q.lock); 225 spin_lock_init(&iucv_sk(sk)->message_q.lock);
225 skb_queue_head_init(&iucv_sk(sk)->backlog_skb_q); 226 skb_queue_head_init(&iucv_sk(sk)->backlog_skb_q);
226 iucv_sk(sk)->send_tag = 0; 227 iucv_sk(sk)->send_tag = 0;
228 iucv_sk(sk)->path = NULL;
229 memset(&iucv_sk(sk)->src_user_id , 0, 32);
227 230
228 sk->sk_destruct = iucv_sock_destruct; 231 sk->sk_destruct = iucv_sock_destruct;
229 sk->sk_sndtimeo = IUCV_CONN_TIMEOUT; 232 sk->sk_sndtimeo = IUCV_CONN_TIMEOUT;
@@ -811,6 +814,8 @@ static int iucv_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
811 814
812 target = sock_rcvlowat(sk, flags & MSG_WAITALL, len); 815 target = sock_rcvlowat(sk, flags & MSG_WAITALL, len);
813 816
817 /* receive/dequeue next skb:
818 * the function understands MSG_PEEK and, thus, does not dequeue skb */
814 skb = skb_recv_datagram(sk, flags, noblock, &err); 819 skb = skb_recv_datagram(sk, flags, noblock, &err);
815 if (!skb) { 820 if (!skb) {
816 if (sk->sk_shutdown & RCV_SHUTDOWN) 821 if (sk->sk_shutdown & RCV_SHUTDOWN)
@@ -858,9 +863,7 @@ static int iucv_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
858 iucv_process_message_q(sk); 863 iucv_process_message_q(sk);
859 spin_unlock_bh(&iucv->message_q.lock); 864 spin_unlock_bh(&iucv->message_q.lock);
860 } 865 }
861 866 }
862 } else
863 skb_queue_head(&sk->sk_receive_queue, skb);
864 867
865done: 868done:
866 return err ? : copied; 869 return err ? : copied;
@@ -934,6 +937,9 @@ static int iucv_sock_shutdown(struct socket *sock, int how)
934 937
935 lock_sock(sk); 938 lock_sock(sk);
936 switch (sk->sk_state) { 939 switch (sk->sk_state) {
940 case IUCV_DISCONN:
941 case IUCV_CLOSING:
942 case IUCV_SEVERED:
937 case IUCV_CLOSED: 943 case IUCV_CLOSED:
938 err = -ENOTCONN; 944 err = -ENOTCONN;
939 goto fail; 945 goto fail;
@@ -1113,8 +1119,12 @@ static void iucv_callback_rx(struct iucv_path *path, struct iucv_message *msg)
1113 struct sock_msg_q *save_msg; 1119 struct sock_msg_q *save_msg;
1114 int len; 1120 int len;
1115 1121
1116 if (sk->sk_shutdown & RCV_SHUTDOWN) 1122 if (sk->sk_shutdown & RCV_SHUTDOWN) {
1123 iucv_message_reject(path, msg);
1117 return; 1124 return;
1125 }
1126
1127 spin_lock(&iucv->message_q.lock);
1118 1128
1119 if (!list_empty(&iucv->message_q.list) || 1129 if (!list_empty(&iucv->message_q.list) ||
1120 !skb_queue_empty(&iucv->backlog_skb_q)) 1130 !skb_queue_empty(&iucv->backlog_skb_q))
@@ -1129,9 +1139,8 @@ static void iucv_callback_rx(struct iucv_path *path, struct iucv_message *msg)
1129 if (!skb) 1139 if (!skb)
1130 goto save_message; 1140 goto save_message;
1131 1141
1132 spin_lock(&iucv->message_q.lock);
1133 iucv_process_message(sk, skb, path, msg); 1142 iucv_process_message(sk, skb, path, msg);
1134 spin_unlock(&iucv->message_q.lock); 1143 goto out_unlock;
1135 1144
1136 return; 1145 return;
1137 1146
@@ -1142,8 +1151,9 @@ save_message:
1142 save_msg->path = path; 1151 save_msg->path = path;
1143 save_msg->msg = *msg; 1152 save_msg->msg = *msg;
1144 1153
1145 spin_lock(&iucv->message_q.lock);
1146 list_add_tail(&save_msg->list, &iucv->message_q.list); 1154 list_add_tail(&save_msg->list, &iucv->message_q.list);
1155
1156out_unlock:
1147 spin_unlock(&iucv->message_q.lock); 1157 spin_unlock(&iucv->message_q.lock);
1148} 1158}
1149 1159
diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig
index f3d9ae350fb6..ecc3faf9f11a 100644
--- a/net/mac80211/Kconfig
+++ b/net/mac80211/Kconfig
@@ -202,10 +202,3 @@ config MAC80211_DEBUG_COUNTERS
202 and show them in debugfs. 202 and show them in debugfs.
203 203
204 If unsure, say N. 204 If unsure, say N.
205
206config MAC80211_VERBOSE_SPECT_MGMT_DEBUG
207 bool "Verbose Spectrum Management (IEEE 802.11h)debugging"
208 depends on MAC80211_DEBUG_MENU
209 ---help---
210 Say Y here to print out verbose Spectrum Management (IEEE 802.11h)
211 debug messages.
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index a6f1d8a869bc..fbcbed6cad01 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -258,7 +258,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
258 (chan->max_power - local->power_constr_level) : 258 (chan->max_power - local->power_constr_level) :
259 chan->max_power; 259 chan->max_power;
260 260
261 if (local->user_power_level) 261 if (local->user_power_level >= 0)
262 power = min(power, local->user_power_level); 262 power = min(power, local->user_power_level);
263 263
264 if (local->hw.conf.power_level != power) { 264 if (local->hw.conf.power_level != power) {
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 7ecda9d59d8a..132938b073dc 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -441,6 +441,9 @@ static bool ieee80211_check_tim(struct ieee802_11_elems *elems, u16 aid)
441 u8 index, indexn1, indexn2; 441 u8 index, indexn1, indexn2;
442 struct ieee80211_tim_ie *tim = (struct ieee80211_tim_ie *) elems->tim; 442 struct ieee80211_tim_ie *tim = (struct ieee80211_tim_ie *) elems->tim;
443 443
444 if (unlikely(!tim || elems->tim_len < 4))
445 return false;
446
444 aid &= 0x3fff; 447 aid &= 0x3fff;
445 index = aid / 8; 448 index = aid / 8;
446 mask = 1 << (aid & 7); 449 mask = 1 << (aid & 7);
@@ -945,9 +948,13 @@ void ieee80211_beacon_loss_work(struct work_struct *work)
945 u.mgd.beacon_loss_work); 948 u.mgd.beacon_loss_work);
946 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; 949 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
947 950
948 printk(KERN_DEBUG "%s: driver reports beacon loss from AP %pM " 951#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
949 "- sending probe request\n", sdata->dev->name, 952 if (net_ratelimit()) {
950 sdata->u.mgd.bssid); 953 printk(KERN_DEBUG "%s: driver reports beacon loss from AP %pM "
954 "- sending probe request\n", sdata->dev->name,
955 sdata->u.mgd.bssid);
956 }
957#endif
951 958
952 ifmgd->flags |= IEEE80211_STA_PROBEREQ_POLL; 959 ifmgd->flags |= IEEE80211_STA_PROBEREQ_POLL;
953 ieee80211_send_probe_req(sdata, ifmgd->bssid, ifmgd->ssid, 960 ieee80211_send_probe_req(sdata, ifmgd->bssid, ifmgd->ssid,
@@ -1007,9 +1014,13 @@ static void ieee80211_associated(struct ieee80211_sub_if_data *sdata)
1007 (local->hw.conf.flags & IEEE80211_CONF_PS)) && 1014 (local->hw.conf.flags & IEEE80211_CONF_PS)) &&
1008 time_after(jiffies, 1015 time_after(jiffies,
1009 ifmgd->last_beacon + IEEE80211_MONITORING_INTERVAL)) { 1016 ifmgd->last_beacon + IEEE80211_MONITORING_INTERVAL)) {
1010 printk(KERN_DEBUG "%s: beacon loss from AP %pM " 1017#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
1011 "- sending probe request\n", 1018 if (net_ratelimit()) {
1012 sdata->dev->name, ifmgd->bssid); 1019 printk(KERN_DEBUG "%s: beacon loss from AP %pM "
1020 "- sending probe request\n",
1021 sdata->dev->name, ifmgd->bssid);
1022 }
1023#endif
1013 ifmgd->flags |= IEEE80211_STA_PROBEREQ_POLL; 1024 ifmgd->flags |= IEEE80211_STA_PROBEREQ_POLL;
1014 ieee80211_send_probe_req(sdata, ifmgd->bssid, ifmgd->ssid, 1025 ieee80211_send_probe_req(sdata, ifmgd->bssid, ifmgd->ssid,
1015 ifmgd->ssid_len, NULL, 0); 1026 ifmgd->ssid_len, NULL, 0);
@@ -1355,7 +1366,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
1355 1366
1356 for (i = 0; i < elems.ext_supp_rates_len; i++) { 1367 for (i = 0; i < elems.ext_supp_rates_len; i++) {
1357 int rate = (elems.ext_supp_rates[i] & 0x7f) * 5; 1368 int rate = (elems.ext_supp_rates[i] & 0x7f) * 5;
1358 bool is_basic = !!(elems.supp_rates[i] & 0x80); 1369 bool is_basic = !!(elems.ext_supp_rates[i] & 0x80);
1359 1370
1360 if (rate > 110) 1371 if (rate > 110)
1361 have_higher_than_11mbit = true; 1372 have_higher_than_11mbit = true;
@@ -1902,9 +1913,17 @@ static void ieee80211_sta_work(struct work_struct *work)
1902 1913
1903static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata) 1914static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
1904{ 1915{
1905 if (sdata->vif.type == NL80211_IFTYPE_STATION) 1916 if (sdata->vif.type == NL80211_IFTYPE_STATION) {
1917 /*
1918 * Need to update last_beacon to avoid beacon loss
1919 * test to trigger.
1920 */
1921 sdata->u.mgd.last_beacon = jiffies;
1922
1923
1906 queue_work(sdata->local->hw.workqueue, 1924 queue_work(sdata->local->hw.workqueue,
1907 &sdata->u.mgd.work); 1925 &sdata->u.mgd.work);
1926 }
1908} 1927}
1909 1928
1910/* interface setup */ 1929/* interface setup */
@@ -2105,12 +2124,13 @@ void ieee80211_dynamic_ps_enable_work(struct work_struct *work)
2105 struct ieee80211_local *local = 2124 struct ieee80211_local *local =
2106 container_of(work, struct ieee80211_local, 2125 container_of(work, struct ieee80211_local,
2107 dynamic_ps_enable_work); 2126 dynamic_ps_enable_work);
2127 /* XXX: using scan_sdata is completely broken! */
2108 struct ieee80211_sub_if_data *sdata = local->scan_sdata; 2128 struct ieee80211_sub_if_data *sdata = local->scan_sdata;
2109 2129
2110 if (local->hw.conf.flags & IEEE80211_CONF_PS) 2130 if (local->hw.conf.flags & IEEE80211_CONF_PS)
2111 return; 2131 return;
2112 2132
2113 if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) 2133 if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK && sdata)
2114 ieee80211_send_nullfunc(local, sdata, 1); 2134 ieee80211_send_nullfunc(local, sdata, 1);
2115 2135
2116 local->hw.conf.flags |= IEEE80211_CONF_PS; 2136 local->hw.conf.flags |= IEEE80211_CONF_PS;
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
index 027302326498..81985d27cbda 100644
--- a/net/mac80211/pm.c
+++ b/net/mac80211/pm.c
@@ -156,8 +156,19 @@ int __ieee80211_resume(struct ieee80211_hw *hw)
156 case NL80211_IFTYPE_ADHOC: 156 case NL80211_IFTYPE_ADHOC:
157 case NL80211_IFTYPE_AP: 157 case NL80211_IFTYPE_AP:
158 case NL80211_IFTYPE_MESH_POINT: 158 case NL80211_IFTYPE_MESH_POINT:
159 WARN_ON(ieee80211_if_config(sdata, changed)); 159 /*
160 ieee80211_bss_info_change_notify(sdata, ~0); 160 * Driver's config_interface can fail if rfkill is
161 * enabled. Accommodate this return code.
162 * FIXME: When mac80211 has knowledge of rfkill
163 * state the code below can change back to:
164 * WARN(ieee80211_if_config(sdata, changed));
165 * ieee80211_bss_info_change_notify(sdata, ~0);
166 */
167 if (ieee80211_if_config(sdata, changed))
168 printk(KERN_DEBUG "%s: failed to configure interface during resume\n",
169 sdata->dev->name);
170 else
171 ieee80211_bss_info_change_notify(sdata, ~0);
161 break; 172 break;
162 case NL80211_IFTYPE_WDS: 173 case NL80211_IFTYPE_WDS:
163 break; 174 break;
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 64ebe664effc..9776f73c51ad 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -29,6 +29,7 @@
29static u8 ieee80211_sta_manage_reorder_buf(struct ieee80211_hw *hw, 29static u8 ieee80211_sta_manage_reorder_buf(struct ieee80211_hw *hw,
30 struct tid_ampdu_rx *tid_agg_rx, 30 struct tid_ampdu_rx *tid_agg_rx,
31 struct sk_buff *skb, 31 struct sk_buff *skb,
32 struct ieee80211_rx_status *status,
32 u16 mpdu_seq_num, 33 u16 mpdu_seq_num,
33 int bar_req); 34 int bar_req);
34/* 35/*
@@ -1396,7 +1397,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
1396 * mac80211. That also explains the __skb_push() 1397 * mac80211. That also explains the __skb_push()
1397 * below. 1398 * below.
1398 */ 1399 */
1399 align = (unsigned long)skb->data & 4; 1400 align = (unsigned long)skb->data & 3;
1400 if (align) { 1401 if (align) {
1401 if (WARN_ON(skb_headroom(skb) < 3)) { 1402 if (WARN_ON(skb_headroom(skb) < 3)) {
1402 dev_kfree_skb(skb); 1403 dev_kfree_skb(skb);
@@ -1688,7 +1689,7 @@ ieee80211_rx_h_ctrl(struct ieee80211_rx_data *rx)
1688 /* manage reordering buffer according to requested */ 1689 /* manage reordering buffer according to requested */
1689 /* sequence number */ 1690 /* sequence number */
1690 rcu_read_lock(); 1691 rcu_read_lock();
1691 ieee80211_sta_manage_reorder_buf(hw, tid_agg_rx, NULL, 1692 ieee80211_sta_manage_reorder_buf(hw, tid_agg_rx, NULL, NULL,
1692 start_seq_num, 1); 1693 start_seq_num, 1);
1693 rcu_read_unlock(); 1694 rcu_read_unlock();
1694 return RX_DROP_UNUSABLE; 1695 return RX_DROP_UNUSABLE;
@@ -2293,6 +2294,7 @@ static inline u16 seq_sub(u16 sq1, u16 sq2)
2293static u8 ieee80211_sta_manage_reorder_buf(struct ieee80211_hw *hw, 2294static u8 ieee80211_sta_manage_reorder_buf(struct ieee80211_hw *hw,
2294 struct tid_ampdu_rx *tid_agg_rx, 2295 struct tid_ampdu_rx *tid_agg_rx,
2295 struct sk_buff *skb, 2296 struct sk_buff *skb,
2297 struct ieee80211_rx_status *rxstatus,
2296 u16 mpdu_seq_num, 2298 u16 mpdu_seq_num,
2297 int bar_req) 2299 int bar_req)
2298{ 2300{
@@ -2374,6 +2376,8 @@ static u8 ieee80211_sta_manage_reorder_buf(struct ieee80211_hw *hw,
2374 2376
2375 /* put the frame in the reordering buffer */ 2377 /* put the frame in the reordering buffer */
2376 tid_agg_rx->reorder_buf[index] = skb; 2378 tid_agg_rx->reorder_buf[index] = skb;
2379 memcpy(tid_agg_rx->reorder_buf[index]->cb, rxstatus,
2380 sizeof(*rxstatus));
2377 tid_agg_rx->stored_mpdu_num++; 2381 tid_agg_rx->stored_mpdu_num++;
2378 /* release the buffer until next missing frame */ 2382 /* release the buffer until next missing frame */
2379 index = seq_sub(tid_agg_rx->head_seq_num, tid_agg_rx->ssn) 2383 index = seq_sub(tid_agg_rx->head_seq_num, tid_agg_rx->ssn)
@@ -2399,7 +2403,8 @@ static u8 ieee80211_sta_manage_reorder_buf(struct ieee80211_hw *hw,
2399} 2403}
2400 2404
2401static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local, 2405static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local,
2402 struct sk_buff *skb) 2406 struct sk_buff *skb,
2407 struct ieee80211_rx_status *status)
2403{ 2408{
2404 struct ieee80211_hw *hw = &local->hw; 2409 struct ieee80211_hw *hw = &local->hw;
2405 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; 2410 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
@@ -2448,7 +2453,7 @@ static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local,
2448 2453
2449 /* according to mpdu sequence number deal with reordering buffer */ 2454 /* according to mpdu sequence number deal with reordering buffer */
2450 mpdu_seq_num = (sc & IEEE80211_SCTL_SEQ) >> 4; 2455 mpdu_seq_num = (sc & IEEE80211_SCTL_SEQ) >> 4;
2451 ret = ieee80211_sta_manage_reorder_buf(hw, tid_agg_rx, skb, 2456 ret = ieee80211_sta_manage_reorder_buf(hw, tid_agg_rx, skb, status,
2452 mpdu_seq_num, 0); 2457 mpdu_seq_num, 0);
2453 end_reorder: 2458 end_reorder:
2454 return ret; 2459 return ret;
@@ -2512,7 +2517,7 @@ void __ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb,
2512 return; 2517 return;
2513 } 2518 }
2514 2519
2515 if (!ieee80211_rx_reorder_ampdu(local, skb)) 2520 if (!ieee80211_rx_reorder_ampdu(local, skb, status))
2516 __ieee80211_rx_handle_packet(hw, skb, status, rate); 2521 __ieee80211_rx_handle_packet(hw, skb, status, rate);
2517 2522
2518 rcu_read_unlock(); 2523 rcu_read_unlock();
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
index deb4ecec122a..959aa8379ccf 100644
--- a/net/mac80211/wext.c
+++ b/net/mac80211/wext.c
@@ -417,6 +417,7 @@ static int ieee80211_ioctl_siwtxpower(struct net_device *dev,
417{ 417{
418 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); 418 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
419 struct ieee80211_channel* chan = local->hw.conf.channel; 419 struct ieee80211_channel* chan = local->hw.conf.channel;
420 bool reconf = false;
420 u32 reconf_flags = 0; 421 u32 reconf_flags = 0;
421 int new_power_level; 422 int new_power_level;
422 423
@@ -427,14 +428,38 @@ static int ieee80211_ioctl_siwtxpower(struct net_device *dev,
427 if (!chan) 428 if (!chan)
428 return -EINVAL; 429 return -EINVAL;
429 430
430 if (data->txpower.fixed) 431 /* only change when not disabling */
431 new_power_level = min(data->txpower.value, chan->max_power); 432 if (!data->txpower.disabled) {
432 else /* Automatic power level setting */ 433 if (data->txpower.fixed) {
433 new_power_level = chan->max_power; 434 if (data->txpower.value < 0)
435 return -EINVAL;
436 new_power_level = data->txpower.value;
437 /*
438 * Debatable, but we cannot do a fixed power
439 * level above the regulatory constraint.
440 * Use "iwconfig wlan0 txpower 15dBm" instead.
441 */
442 if (new_power_level > chan->max_power)
443 return -EINVAL;
444 } else {
445 /*
446 * Automatic power level setting, max being the value
447 * passed in from userland.
448 */
449 if (data->txpower.value < 0)
450 new_power_level = -1;
451 else
452 new_power_level = data->txpower.value;
453 }
454
455 reconf = true;
434 456
435 local->user_power_level = new_power_level; 457 /*
436 if (local->hw.conf.power_level != new_power_level) 458 * ieee80211_hw_config() will limit to the channel's
437 reconf_flags |= IEEE80211_CONF_CHANGE_POWER; 459 * max power and possibly power constraint from AP.
460 */
461 local->user_power_level = new_power_level;
462 }
438 463
439 if (local->hw.conf.radio_enabled != !(data->txpower.disabled)) { 464 if (local->hw.conf.radio_enabled != !(data->txpower.disabled)) {
440 local->hw.conf.radio_enabled = !(data->txpower.disabled); 465 local->hw.conf.radio_enabled = !(data->txpower.disabled);
@@ -442,7 +467,7 @@ static int ieee80211_ioctl_siwtxpower(struct net_device *dev,
442 ieee80211_led_radio(local, local->hw.conf.radio_enabled); 467 ieee80211_led_radio(local, local->hw.conf.radio_enabled);
443 } 468 }
444 469
445 if (reconf_flags) 470 if (reconf || reconf_flags)
446 ieee80211_hw_config(local, reconf_flags); 471 ieee80211_hw_config(local, reconf_flags);
447 472
448 return 0; 473 return 0;
@@ -530,7 +555,7 @@ static int ieee80211_ioctl_giwfrag(struct net_device *dev,
530 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); 555 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
531 556
532 frag->value = local->fragmentation_threshold; 557 frag->value = local->fragmentation_threshold;
533 frag->disabled = (frag->value >= IEEE80211_MAX_RTS_THRESHOLD); 558 frag->disabled = (frag->value >= IEEE80211_MAX_FRAG_THRESHOLD);
534 frag->fixed = 1; 559 frag->fixed = 1;
535 560
536 return 0; 561 return 0;
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index bb279bf59a1b..2329c5f50551 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -374,7 +374,7 @@ config NETFILTER_XT_TARGET_HL
374 374
375config NETFILTER_XT_TARGET_LED 375config NETFILTER_XT_TARGET_LED
376 tristate '"LED" target support' 376 tristate '"LED" target support'
377 depends on LEDS_CLASS && LED_TRIGGERS 377 depends on LEDS_CLASS && LEDS_TRIGGERS
378 depends on NETFILTER_ADVANCED 378 depends on NETFILTER_ADVANCED
379 help 379 help
380 This option adds a `LED' target, which allows you to blink LEDs in 380 This option adds a `LED' target, which allows you to blink LEDs in
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
index 3940f996a2e4..afde8f991646 100644
--- a/net/netfilter/nf_conntrack_expect.c
+++ b/net/netfilter/nf_conntrack_expect.c
@@ -372,7 +372,7 @@ static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect)
372 struct net *net = nf_ct_exp_net(expect); 372 struct net *net = nf_ct_exp_net(expect);
373 struct hlist_node *n; 373 struct hlist_node *n;
374 unsigned int h; 374 unsigned int h;
375 int ret = 0; 375 int ret = 1;
376 376
377 if (!master_help->helper) { 377 if (!master_help->helper) {
378 ret = -ESHUTDOWN; 378 ret = -ESHUTDOWN;
@@ -412,41 +412,23 @@ out:
412 return ret; 412 return ret;
413} 413}
414 414
415int nf_ct_expect_related(struct nf_conntrack_expect *expect) 415int nf_ct_expect_related_report(struct nf_conntrack_expect *expect,
416 u32 pid, int report)
416{ 417{
417 int ret; 418 int ret;
418 419
419 spin_lock_bh(&nf_conntrack_lock); 420 spin_lock_bh(&nf_conntrack_lock);
420 ret = __nf_ct_expect_check(expect); 421 ret = __nf_ct_expect_check(expect);
421 if (ret < 0) 422 if (ret <= 0)
422 goto out; 423 goto out;
423 424
425 ret = 0;
424 nf_ct_expect_insert(expect); 426 nf_ct_expect_insert(expect);
425 atomic_inc(&expect->use);
426 spin_unlock_bh(&nf_conntrack_lock);
427 nf_ct_expect_event(IPEXP_NEW, expect);
428 nf_ct_expect_put(expect);
429 return ret;
430out:
431 spin_unlock_bh(&nf_conntrack_lock); 427 spin_unlock_bh(&nf_conntrack_lock);
428 nf_ct_expect_event_report(IPEXP_NEW, expect, pid, report);
432 return ret; 429 return ret;
433}
434EXPORT_SYMBOL_GPL(nf_ct_expect_related);
435
436int nf_ct_expect_related_report(struct nf_conntrack_expect *expect,
437 u32 pid, int report)
438{
439 int ret;
440
441 spin_lock_bh(&nf_conntrack_lock);
442 ret = __nf_ct_expect_check(expect);
443 if (ret < 0)
444 goto out;
445 nf_ct_expect_insert(expect);
446out: 430out:
447 spin_unlock_bh(&nf_conntrack_lock); 431 spin_unlock_bh(&nf_conntrack_lock);
448 if (ret == 0)
449 nf_ct_expect_event_report(IPEXP_NEW, expect, pid, report);
450 return ret; 432 return ret;
451} 433}
452EXPORT_SYMBOL_GPL(nf_ct_expect_related_report); 434EXPORT_SYMBOL_GPL(nf_ct_expect_related_report);
diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c
index 30b8e9009f99..0fa5a422959f 100644
--- a/net/netfilter/nf_conntrack_helper.c
+++ b/net/netfilter/nf_conntrack_helper.c
@@ -176,7 +176,7 @@ static void __nf_conntrack_helper_unregister(struct nf_conntrack_helper *me,
176 } 176 }
177 177
178 /* Get rid of expecteds, set helpers to NULL. */ 178 /* Get rid of expecteds, set helpers to NULL. */
179 hlist_for_each_entry(h, nn, &net->ct.unconfirmed, hnnode) 179 hlist_nulls_for_each_entry(h, nn, &net->ct.unconfirmed, hnnode)
180 unhelp(h, me); 180 unhelp(h, me);
181 for (i = 0; i < nf_conntrack_htable_size; i++) { 181 for (i = 0; i < nf_conntrack_htable_size; i++) {
182 hlist_nulls_for_each_entry(h, nn, &net->ct.hash[i], hnnode) 182 hlist_nulls_for_each_entry(h, nn, &net->ct.hash[i], hnnode)
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index c6439c77953c..f13fc57e1ecb 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -512,7 +512,7 @@ static int ctnetlink_conntrack_event(struct notifier_block *this,
512 512
513 skb = ctnetlink_alloc_skb(tuple(ct, IP_CT_DIR_ORIGINAL), GFP_ATOMIC); 513 skb = ctnetlink_alloc_skb(tuple(ct, IP_CT_DIR_ORIGINAL), GFP_ATOMIC);
514 if (!skb) 514 if (!skb)
515 return NOTIFY_DONE; 515 goto errout;
516 516
517 b = skb->tail; 517 b = skb->tail;
518 518
@@ -591,8 +591,9 @@ static int ctnetlink_conntrack_event(struct notifier_block *this,
591nla_put_failure: 591nla_put_failure:
592 rcu_read_unlock(); 592 rcu_read_unlock();
593nlmsg_failure: 593nlmsg_failure:
594 nfnetlink_set_err(0, group, -ENOBUFS);
595 kfree_skb(skb); 594 kfree_skb(skb);
595errout:
596 nfnetlink_set_err(0, group, -ENOBUFS);
596 return NOTIFY_DONE; 597 return NOTIFY_DONE;
597} 598}
598#endif /* CONFIG_NF_CONNTRACK_EVENTS */ 599#endif /* CONFIG_NF_CONNTRACK_EVENTS */
@@ -987,7 +988,7 @@ ctnetlink_change_helper(struct nf_conn *ct, struct nlattr *cda[])
987{ 988{
988 struct nf_conntrack_helper *helper; 989 struct nf_conntrack_helper *helper;
989 struct nf_conn_help *help = nfct_help(ct); 990 struct nf_conn_help *help = nfct_help(ct);
990 char *helpname; 991 char *helpname = NULL;
991 int err; 992 int err;
992 993
993 /* don't change helper of sibling connections */ 994 /* don't change helper of sibling connections */
@@ -1230,7 +1231,7 @@ ctnetlink_create_conntrack(struct nlattr *cda[],
1230 1231
1231 rcu_read_lock(); 1232 rcu_read_lock();
1232 if (cda[CTA_HELP]) { 1233 if (cda[CTA_HELP]) {
1233 char *helpname; 1234 char *helpname = NULL;
1234 1235
1235 err = ctnetlink_parse_help(cda[CTA_HELP], &helpname); 1236 err = ctnetlink_parse_help(cda[CTA_HELP], &helpname);
1236 if (err < 0) 1237 if (err < 0)
@@ -1564,7 +1565,7 @@ static int ctnetlink_expect_event(struct notifier_block *this,
1564 1565
1565 skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC); 1566 skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC);
1566 if (!skb) 1567 if (!skb)
1567 return NOTIFY_DONE; 1568 goto errout;
1568 1569
1569 b = skb->tail; 1570 b = skb->tail;
1570 1571
@@ -1589,8 +1590,9 @@ static int ctnetlink_expect_event(struct notifier_block *this,
1589nla_put_failure: 1590nla_put_failure:
1590 rcu_read_unlock(); 1591 rcu_read_unlock();
1591nlmsg_failure: 1592nlmsg_failure:
1592 nfnetlink_set_err(0, 0, -ENOBUFS);
1593 kfree_skb(skb); 1593 kfree_skb(skb);
1594errout:
1595 nfnetlink_set_err(0, 0, -ENOBUFS);
1594 return NOTIFY_DONE; 1596 return NOTIFY_DONE;
1595} 1597}
1596#endif 1598#endif
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
index 8bb998fe098b..beb37311e1a5 100644
--- a/net/netfilter/nf_log.c
+++ b/net/netfilter/nf_log.c
@@ -36,10 +36,14 @@ static struct nf_logger *__find_logger(int pf, const char *str_logger)
36int nf_log_register(u_int8_t pf, struct nf_logger *logger) 36int nf_log_register(u_int8_t pf, struct nf_logger *logger)
37{ 37{
38 const struct nf_logger *llog; 38 const struct nf_logger *llog;
39 int i;
39 40
40 if (pf >= ARRAY_SIZE(nf_loggers)) 41 if (pf >= ARRAY_SIZE(nf_loggers))
41 return -EINVAL; 42 return -EINVAL;
42 43
44 for (i = 0; i < ARRAY_SIZE(logger->list); i++)
45 INIT_LIST_HEAD(&logger->list[i]);
46
43 mutex_lock(&nf_log_mutex); 47 mutex_lock(&nf_log_mutex);
44 48
45 if (pf == NFPROTO_UNSPEC) { 49 if (pf == NFPROTO_UNSPEC) {
diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c
index 2785d66a7e38..b8ab37ad7ed5 100644
--- a/net/netfilter/nfnetlink.c
+++ b/net/netfilter/nfnetlink.c
@@ -203,7 +203,7 @@ static int __init nfnetlink_init(void)
203 nfnetlink_rcv, NULL, THIS_MODULE); 203 nfnetlink_rcv, NULL, THIS_MODULE);
204 if (!nfnl) { 204 if (!nfnl) {
205 printk(KERN_ERR "cannot initialize nfnetlink!\n"); 205 printk(KERN_ERR "cannot initialize nfnetlink!\n");
206 return -1; 206 return -ENOMEM;
207 } 207 }
208 208
209 return 0; 209 return 0;
diff --git a/net/netlabel/netlabel_addrlist.c b/net/netlabel/netlabel_addrlist.c
index 834c6eb7f484..c0519139679e 100644
--- a/net/netlabel/netlabel_addrlist.c
+++ b/net/netlabel/netlabel_addrlist.c
@@ -256,13 +256,11 @@ struct netlbl_af4list *netlbl_af4list_remove(__be32 addr, __be32 mask,
256{ 256{
257 struct netlbl_af4list *entry; 257 struct netlbl_af4list *entry;
258 258
259 entry = netlbl_af4list_search(addr, head); 259 entry = netlbl_af4list_search_exact(addr, mask, head);
260 if (entry != NULL && entry->addr == addr && entry->mask == mask) { 260 if (entry == NULL)
261 netlbl_af4list_remove_entry(entry); 261 return NULL;
262 return entry; 262 netlbl_af4list_remove_entry(entry);
263 } 263 return entry;
264
265 return NULL;
266} 264}
267 265
268#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) 266#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
@@ -299,15 +297,11 @@ struct netlbl_af6list *netlbl_af6list_remove(const struct in6_addr *addr,
299{ 297{
300 struct netlbl_af6list *entry; 298 struct netlbl_af6list *entry;
301 299
302 entry = netlbl_af6list_search(addr, head); 300 entry = netlbl_af6list_search_exact(addr, mask, head);
303 if (entry != NULL && 301 if (entry == NULL)
304 ipv6_addr_equal(&entry->addr, addr) && 302 return NULL;
305 ipv6_addr_equal(&entry->mask, mask)) { 303 netlbl_af6list_remove_entry(entry);
306 netlbl_af6list_remove_entry(entry); 304 return entry;
307 return entry;
308 }
309
310 return NULL;
311} 305}
312#endif /* IPv6 */ 306#endif /* IPv6 */
313 307
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
index 4e705f87969f..3be0e016ab7d 100644
--- a/net/netrom/af_netrom.c
+++ b/net/netrom/af_netrom.c
@@ -1084,8 +1084,10 @@ static int nr_sendmsg(struct kiocb *iocb, struct socket *sock,
1084 1084
1085 /* Build a packet - the conventional user limit is 236 bytes. We can 1085 /* Build a packet - the conventional user limit is 236 bytes. We can
1086 do ludicrously large NetROM frames but must not overflow */ 1086 do ludicrously large NetROM frames but must not overflow */
1087 if (len > 65536) 1087 if (len > 65536) {
1088 return -EMSGSIZE; 1088 err = -EMSGSIZE;
1089 goto out;
1090 }
1089 1091
1090 SOCK_DEBUG(sk, "NET/ROM: sendto: building packet.\n"); 1092 SOCK_DEBUG(sk, "NET/ROM: sendto: building packet.\n");
1091 size = len + NR_NETWORK_LEN + NR_TRANSPORT_LEN; 1093 size = len + NR_NETWORK_LEN + NR_TRANSPORT_LEN;
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 74776de523ec..f546e81acc45 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -1758,8 +1758,9 @@ static void free_pg_vec(char **pg_vec, unsigned int order, unsigned int len)
1758 1758
1759static inline char *alloc_one_pg_vec_page(unsigned long order) 1759static inline char *alloc_one_pg_vec_page(unsigned long order)
1760{ 1760{
1761 return (char *) __get_free_pages(GFP_KERNEL | __GFP_COMP | __GFP_ZERO, 1761 gfp_t gfp_flags = GFP_KERNEL | __GFP_COMP | __GFP_ZERO | __GFP_NOWARN;
1762 order); 1762
1763 return (char *) __get_free_pages(gfp_flags, order);
1763} 1764}
1764 1765
1765static char **alloc_pg_vec(struct tpacket_req *req, int order) 1766static char **alloc_pg_vec(struct tpacket_req *req, int order)
diff --git a/net/rds/rds.h b/net/rds/rds.h
index 619f0a30a4e5..71794449ca4e 100644
--- a/net/rds/rds.h
+++ b/net/rds/rds.h
@@ -638,7 +638,7 @@ struct rds_message *rds_send_get_message(struct rds_connection *,
638void rds_rdma_unuse(struct rds_sock *rs, u32 r_key, int force); 638void rds_rdma_unuse(struct rds_sock *rs, u32 r_key, int force);
639 639
640/* stats.c */ 640/* stats.c */
641DECLARE_PER_CPU(struct rds_statistics, rds_stats); 641DECLARE_PER_CPU_SHARED_ALIGNED(struct rds_statistics, rds_stats);
642#define rds_stats_inc_which(which, member) do { \ 642#define rds_stats_inc_which(which, member) do { \
643 per_cpu(which, get_cpu()).member++; \ 643 per_cpu(which, get_cpu()).member++; \
644 put_cpu(); \ 644 put_cpu(); \
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c
index 0f36e8d59b29..877a7f65f707 100644
--- a/net/rose/af_rose.c
+++ b/net/rose/af_rose.c
@@ -1072,10 +1072,6 @@ static int rose_sendmsg(struct kiocb *iocb, struct socket *sock,
1072 unsigned char *asmptr; 1072 unsigned char *asmptr;
1073 int n, size, qbit = 0; 1073 int n, size, qbit = 0;
1074 1074
1075 /* ROSE empty frame has no meaning : don't send */
1076 if (len == 0)
1077 return 0;
1078
1079 if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_EOR|MSG_CMSG_COMPAT)) 1075 if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_EOR|MSG_CMSG_COMPAT))
1080 return -EINVAL; 1076 return -EINVAL;
1081 1077
@@ -1273,12 +1269,6 @@ static int rose_recvmsg(struct kiocb *iocb, struct socket *sock,
1273 skb_reset_transport_header(skb); 1269 skb_reset_transport_header(skb);
1274 copied = skb->len; 1270 copied = skb->len;
1275 1271
1276 /* ROSE empty frame has no meaning : ignore it */
1277 if (copied == 0) {
1278 skb_free_datagram(sk, skb);
1279 return copied;
1280 }
1281
1282 if (copied > size) { 1272 if (copied > size) {
1283 copied = size; 1273 copied = size;
1284 msg->msg_flags |= MSG_TRUNC; 1274 msg->msg_flags |= MSG_TRUNC;
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c
index 72cf86e3c090..fad596bf32d7 100644
--- a/net/sched/em_meta.c
+++ b/net/sched/em_meta.c
@@ -176,8 +176,10 @@ META_COLLECTOR(var_dev)
176 176
177META_COLLECTOR(int_vlan_tag) 177META_COLLECTOR(int_vlan_tag)
178{ 178{
179 unsigned short uninitialized_var(tag); 179 unsigned short tag;
180 if (vlan_get_tag(skb, &tag) < 0) 180
181 tag = vlan_tx_tag_get(skb);
182 if (!tag && __vlan_get_tag(skb, &tag))
181 *err = -1; 183 *err = -1;
182 else 184 else
183 dst->value = tag; 185 dst->value = tag;
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index d876b8734848..2b88295cb7b7 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -280,6 +280,14 @@ static struct sk_buff *netem_dequeue(struct Qdisc *sch)
280 if (unlikely(!skb)) 280 if (unlikely(!skb))
281 return NULL; 281 return NULL;
282 282
283#ifdef CONFIG_NET_CLS_ACT
284 /*
285 * If it's at ingress let's pretend the delay is
286 * from the network (tstamp will be updated).
287 */
288 if (G_TC_FROM(skb->tc_verd) & AT_INGRESS)
289 skb->tstamp.tv64 = 0;
290#endif
283 pr_debug("netem_dequeue: return skb=%p\n", skb); 291 pr_debug("netem_dequeue: return skb=%p\n", skb);
284 sch->q.qlen--; 292 sch->q.qlen--;
285 return skb; 293 return skb;
diff --git a/net/wireless/core.h b/net/wireless/core.h
index d43daa236ef9..0a592e4295f0 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -90,7 +90,7 @@ struct cfg80211_internal_bss {
90 struct rb_node rbn; 90 struct rb_node rbn;
91 unsigned long ts; 91 unsigned long ts;
92 struct kref ref; 92 struct kref ref;
93 bool hold; 93 bool hold, ies_allocated;
94 94
95 /* must be last because of priv member */ 95 /* must be last because of priv member */
96 struct cfg80211_bss pub; 96 struct cfg80211_bss pub;
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 353e1a4ece83..2456e4ee445e 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -3334,7 +3334,7 @@ static void nl80211_send_mlme_event(struct cfg80211_registered_device *rdev,
3334 struct sk_buff *msg; 3334 struct sk_buff *msg;
3335 void *hdr; 3335 void *hdr;
3336 3336
3337 msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 3337 msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC);
3338 if (!msg) 3338 if (!msg)
3339 return; 3339 return;
3340 3340
@@ -3353,7 +3353,7 @@ static void nl80211_send_mlme_event(struct cfg80211_registered_device *rdev,
3353 return; 3353 return;
3354 } 3354 }
3355 3355
3356 genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, GFP_KERNEL); 3356 genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, GFP_ATOMIC);
3357 return; 3357 return;
3358 3358
3359 nla_put_failure: 3359 nla_put_failure:
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 6327e1617acb..6c1993d99902 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -2095,11 +2095,12 @@ int set_regdom(const struct ieee80211_regdomain *rd)
2095/* Caller must hold cfg80211_mutex */ 2095/* Caller must hold cfg80211_mutex */
2096void reg_device_remove(struct wiphy *wiphy) 2096void reg_device_remove(struct wiphy *wiphy)
2097{ 2097{
2098 struct wiphy *request_wiphy; 2098 struct wiphy *request_wiphy = NULL;
2099 2099
2100 assert_cfg80211_lock(); 2100 assert_cfg80211_lock();
2101 2101
2102 request_wiphy = wiphy_idx_to_wiphy(last_request->wiphy_idx); 2102 if (last_request)
2103 request_wiphy = wiphy_idx_to_wiphy(last_request->wiphy_idx);
2103 2104
2104 kfree(wiphy->regd); 2105 kfree(wiphy->regd);
2105 if (!last_request || !request_wiphy) 2106 if (!last_request || !request_wiphy)
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index 2a00e362f5fe..2ae65b39b529 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -58,6 +58,10 @@ static void bss_release(struct kref *ref)
58 bss = container_of(ref, struct cfg80211_internal_bss, ref); 58 bss = container_of(ref, struct cfg80211_internal_bss, ref);
59 if (bss->pub.free_priv) 59 if (bss->pub.free_priv)
60 bss->pub.free_priv(&bss->pub); 60 bss->pub.free_priv(&bss->pub);
61
62 if (bss->ies_allocated)
63 kfree(bss->pub.information_elements);
64
61 kfree(bss); 65 kfree(bss);
62} 66}
63 67
@@ -360,19 +364,41 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
360 364
361 found = rb_find_bss(dev, res); 365 found = rb_find_bss(dev, res);
362 366
363 if (found && overwrite) { 367 if (found) {
364 list_replace(&found->list, &res->list);
365 rb_replace_node(&found->rbn, &res->rbn,
366 &dev->bss_tree);
367 kref_put(&found->ref, bss_release);
368 found = res;
369 } else if (found) {
370 kref_get(&found->ref); 368 kref_get(&found->ref);
371 found->pub.beacon_interval = res->pub.beacon_interval; 369 found->pub.beacon_interval = res->pub.beacon_interval;
372 found->pub.tsf = res->pub.tsf; 370 found->pub.tsf = res->pub.tsf;
373 found->pub.signal = res->pub.signal; 371 found->pub.signal = res->pub.signal;
374 found->pub.capability = res->pub.capability; 372 found->pub.capability = res->pub.capability;
375 found->ts = res->ts; 373 found->ts = res->ts;
374
375 /* overwrite IEs */
376 if (overwrite) {
377 size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
378 size_t ielen = res->pub.len_information_elements;
379
380 if (ksize(found) >= used + ielen) {
381 memcpy(found->pub.information_elements,
382 res->pub.information_elements, ielen);
383 found->pub.len_information_elements = ielen;
384 } else {
385 u8 *ies = found->pub.information_elements;
386
387 if (found->ies_allocated) {
388 if (ksize(ies) < ielen)
389 ies = krealloc(ies, ielen,
390 GFP_ATOMIC);
391 } else
392 ies = kmalloc(ielen, GFP_ATOMIC);
393
394 if (ies) {
395 memcpy(ies, res->pub.information_elements, ielen);
396 found->ies_allocated = true;
397 found->pub.information_elements = ies;
398 }
399 }
400 }
401
376 kref_put(&res->ref, bss_release); 402 kref_put(&res->ref, bss_release);
377 } else { 403 } else {
378 /* this "consumes" the reference */ 404 /* this "consumes" the reference */
diff --git a/scripts/.gitignore b/scripts/.gitignore
index 09e2406f3b78..b939fbd01195 100644
--- a/scripts/.gitignore
+++ b/scripts/.gitignore
@@ -1,7 +1,6 @@
1# 1#
2# Generated files 2# Generated files
3# 3#
4ihex2fw
5conmakehash 4conmakehash
6kallsyms 5kallsyms
7pnmtologo 6pnmtologo
diff --git a/scripts/Makefile b/scripts/Makefile
index 035182e16afb..aafdf064feef 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -2,12 +2,11 @@
2# scripts contains sources for various helper programs used throughout 2# scripts contains sources for various helper programs used throughout
3# the kernel for the build process. 3# the kernel for the build process.
4# --------------------------------------------------------------------------- 4# ---------------------------------------------------------------------------
5# ihex2fw: Parser/loader for IHEX formatted data
6# kallsyms: Find all symbols in vmlinux 5# kallsyms: Find all symbols in vmlinux
7# pnmttologo: Convert pnm files to logo files 6# pnmttologo: Convert pnm files to logo files
7# conmakehash: Create chartable
8# conmakehash: Create arrays for initializing the kernel console tables 8# conmakehash: Create arrays for initializing the kernel console tables
9 9
10hostprogs-y := ihex2fw
11hostprogs-$(CONFIG_KALLSYMS) += kallsyms 10hostprogs-$(CONFIG_KALLSYMS) += kallsyms
12hostprogs-$(CONFIG_LOGO) += pnmtologo 11hostprogs-$(CONFIG_LOGO) += pnmtologo
13hostprogs-$(CONFIG_VT) += conmakehash 12hostprogs-$(CONFIG_VT) += conmakehash
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 39a9642927d3..5c4b7a400c18 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -27,6 +27,9 @@ ccflags-y :=
27cppflags-y := 27cppflags-y :=
28ldflags-y := 28ldflags-y :=
29 29
30subdir-asflags-y :=
31subdir-ccflags-y :=
32
30# Read auto.conf if it exists, otherwise ignore 33# Read auto.conf if it exists, otherwise ignore
31-include include/config/auto.conf 34-include include/config/auto.conf
32 35
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst
index 612dc13ddd85..095cfc8b9dbf 100644
--- a/scripts/Makefile.headersinst
+++ b/scripts/Makefile.headersinst
@@ -14,6 +14,8 @@ _dst := $(if $(dst),$(dst),$(obj))
14kbuild-file := $(srctree)/$(obj)/Kbuild 14kbuild-file := $(srctree)/$(obj)/Kbuild
15include $(kbuild-file) 15include $(kbuild-file)
16 16
17_dst := $(if $(destination-y),$(destination-y),$(_dst))
18
17include scripts/Kbuild.include 19include scripts/Kbuild.include
18 20
19install := $(INSTALL_HDR_PATH)/$(_dst) 21install := $(INSTALL_HDR_PATH)/$(_dst)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 979619574f70..cba61ca403ca 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -4,6 +4,11 @@ ccflags-y += $(EXTRA_CFLAGS)
4cppflags-y += $(EXTRA_CPPFLAGS) 4cppflags-y += $(EXTRA_CPPFLAGS)
5ldflags-y += $(EXTRA_LDFLAGS) 5ldflags-y += $(EXTRA_LDFLAGS)
6 6
7#
8# flags that take effect in sub directories
9export KBUILD_SUBDIR_ASFLAGS := $(KBUILD_SUBDIR_ASFLAGS) $(subdir-asflags-y)
10export KBUILD_SUBDIR_CCFLAGS := $(KBUILD_SUBDIR_CCFLAGS) $(subdir-ccflags-y)
11
7# Figure out what we need to build from the various variables 12# Figure out what we need to build from the various variables
8# =========================================================================== 13# ===========================================================================
9 14
@@ -104,10 +109,10 @@ else
104debug_flags = 109debug_flags =
105endif 110endif
106 111
107orig_c_flags = $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) \ 112orig_c_flags = $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(KBUILD_SUBDIR_CCFLAGS) \
108 $(ccflags-y) $(CFLAGS_$(basetarget).o) 113 $(ccflags-y) $(CFLAGS_$(basetarget).o)
109_c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags)) 114_c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags))
110_a_flags = $(KBUILD_CPPFLAGS) $(KBUILD_AFLAGS) \ 115_a_flags = $(KBUILD_CPPFLAGS) $(KBUILD_AFLAGS) $(KBUILD_SUBDIR_ASFLAGS) \
111 $(asflags-y) $(AFLAGS_$(basetarget).o) 116 $(asflags-y) $(AFLAGS_$(basetarget).o)
112_cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F)) 117_cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F))
113 118
diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
index 3eea8f15131b..76af5f9623e3 100644
--- a/scripts/gen_initramfs_list.sh
+++ b/scripts/gen_initramfs_list.sh
@@ -97,7 +97,7 @@ print_mtime() {
97} 97}
98 98
99list_parse() { 99list_parse() {
100 echo "$1 \\" 100 [ ! -L "$1" ] && echo "$1 \\" || :
101} 101}
102 102
103# for each file print a line in following format 103# for each file print a line in following format
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
new file mode 100755
index 000000000000..60dc0c48c929
--- /dev/null
+++ b/scripts/get_maintainer.pl
@@ -0,0 +1,515 @@
1#!/usr/bin/perl -w
2# (c) 2007, Joe Perches <joe@perches.com>
3# created from checkpatch.pl
4#
5# Print selected MAINTAINERS information for
6# the files modified in a patch or for a file
7#
8# usage: perl scripts/get_maintainers.pl [OPTIONS] <patch>
9# perl scripts/get_maintainers.pl [OPTIONS] -f <file>
10#
11# Licensed under the terms of the GNU GPL License version 2
12
13use strict;
14
15my $P = $0;
16my $V = '0.15';
17
18use Getopt::Long qw(:config no_auto_abbrev);
19
20my $lk_path = "./";
21my $email = 1;
22my $email_usename = 1;
23my $email_maintainer = 1;
24my $email_list = 1;
25my $email_subscriber_list = 0;
26my $email_git = 1;
27my $email_git_penguin_chiefs = 0;
28my $email_git_min_signatures = 1;
29my $email_git_max_maintainers = 5;
30my $email_git_since = "1-year-ago";
31my $output_multiline = 1;
32my $output_separator = ", ";
33my $scm = 0;
34my $web = 0;
35my $subsystem = 0;
36my $status = 0;
37my $from_filename = 0;
38my $version = 0;
39my $help = 0;
40
41my $exit = 0;
42
43my @penguin_chief = ();
44push(@penguin_chief,"Linus Torvalds:torvalds\@linux-foundation.org");
45#Andrew wants in on most everything - 2009/01/14
46#push(@penguin_chief,"Andrew Morton:akpm\@linux-foundation.org");
47
48my @penguin_chief_names = ();
49foreach my $chief (@penguin_chief) {
50 if ($chief =~ m/^(.*):(.*)/) {
51 my $chief_name = $1;
52 my $chief_addr = $2;
53 push(@penguin_chief_names, $chief_name);
54 }
55}
56my $penguin_chiefs = "\(" . join("|",@penguin_chief_names) . "\)";
57
58if (!GetOptions(
59 'email!' => \$email,
60 'git!' => \$email_git,
61 'git-chief-penguins!' => \$email_git_penguin_chiefs,
62 'git-min-signatures=i' => \$email_git_min_signatures,
63 'git-max-maintainers=i' => \$email_git_max_maintainers,
64 'git-since=s' => \$email_git_since,
65 'm!' => \$email_maintainer,
66 'n!' => \$email_usename,
67 'l!' => \$email_list,
68 's!' => \$email_subscriber_list,
69 'multiline!' => \$output_multiline,
70 'separator=s' => \$output_separator,
71 'subsystem!' => \$subsystem,
72 'status!' => \$status,
73 'scm!' => \$scm,
74 'web!' => \$web,
75 'f|file' => \$from_filename,
76 'v|version' => \$version,
77 'h|help' => \$help,
78 )) {
79 usage();
80 die "$P: invalid argument\n";
81}
82
83if ($help != 0) {
84 usage();
85 exit 0;
86}
87
88if ($version != 0) {
89 print("${P} ${V}\n");
90 exit 0;
91}
92
93if ($#ARGV < 0) {
94 usage();
95 die "$P: argument missing: patchfile or -f file please\n";
96}
97
98my $selections = $email + $scm + $status + $subsystem + $web;
99if ($selections == 0) {
100 usage();
101 die "$P: Missing required option: email, scm, status, subsystem or web\n";
102}
103
104if ($email && ($email_maintainer + $email_list + $email_subscriber_list
105 + $email_git + $email_git_penguin_chiefs) == 0) {
106 usage();
107 die "$P: Please select at least 1 email option\n";
108}
109
110if (!top_of_kernel_tree($lk_path)) {
111 die "$P: The current directory does not appear to be "
112 . "a linux kernel source tree.\n";
113}
114
115## Read MAINTAINERS for type/value pairs
116
117my @typevalue = ();
118open(MAINT, "<${lk_path}MAINTAINERS") || die "$P: Can't open MAINTAINERS\n";
119while (<MAINT>) {
120 my $line = $_;
121
122 if ($line =~ m/^(\C):\s*(.*)/) {
123 my $type = $1;
124 my $value = $2;
125
126 ##Filename pattern matching
127 if ($type eq "F" || $type eq "X") {
128 $value =~ s@\.@\\\.@g; ##Convert . to \.
129 $value =~ s/\*/\.\*/g; ##Convert * to .*
130 $value =~ s/\?/\./g; ##Convert ? to .
131 }
132 push(@typevalue, "$type:$value");
133 } elsif (!/^(\s)*$/) {
134 $line =~ s/\n$//g;
135 push(@typevalue, $line);
136 }
137}
138close(MAINT);
139
140## use the filenames on the command line or find the filenames in the patchfiles
141
142my @files = ();
143
144foreach my $file (@ARGV) {
145 next if ((-d $file));
146 if (!(-f $file)) {
147 die "$P: file '${file}' not found\n";
148 }
149 if ($from_filename) {
150 push(@files, $file);
151 } else {
152 my $file_cnt = @files;
153 open(PATCH, "<$file") or die "$P: Can't open ${file}\n";
154 while (<PATCH>) {
155 if (m/^\+\+\+\s+(\S+)/) {
156 my $filename = $1;
157 $filename =~ s@^[^/]*/@@;
158 $filename =~ s@\n@@;
159 push(@files, $filename);
160 }
161 }
162 close(PATCH);
163 if ($file_cnt == @files) {
164 die "$P: file '${file}' doesn't appear to be a patch. "
165 . "Add -f to options?\n";
166 }
167 @files = sort_and_uniq(@files);
168 }
169}
170
171my @email_to = ();
172my @scm = ();
173my @web = ();
174my @subsystem = ();
175my @status = ();
176
177# Find responsible parties
178
179foreach my $file (@files) {
180
181#Do not match excluded file patterns
182
183 my $exclude = 0;
184 foreach my $line (@typevalue) {
185 if ($line =~ m/^(\C):(.*)/) {
186 my $type = $1;
187 my $value = $2;
188 if ($type eq 'X') {
189 if (file_match_pattern($file, $value)) {
190 $exclude = 1;
191 }
192 }
193 }
194 }
195
196 if (!$exclude) {
197 my $tvi = 0;
198 foreach my $line (@typevalue) {
199 if ($line =~ m/^(\C):(.*)/) {
200 my $type = $1;
201 my $value = $2;
202 if ($type eq 'F') {
203 if (file_match_pattern($file, $value)) {
204 add_categories($tvi);
205 }
206 }
207 }
208 $tvi++;
209 }
210 }
211
212 if ($email && $email_git) {
213 recent_git_signoffs($file);
214 }
215
216}
217
218if ($email_git_penguin_chiefs) {
219 foreach my $chief (@penguin_chief) {
220 if ($chief =~ m/^(.*):(.*)/) {
221 my $chief_name = $1;
222 my $chief_addr = $2;
223 if ($email_usename) {
224 push(@email_to, format_email($chief_name, $chief_addr));
225 } else {
226 push(@email_to, $chief_addr);
227 }
228 }
229 }
230}
231
232if ($email) {
233 my $address_cnt = @email_to;
234 if ($address_cnt == 0 && $email_list) {
235 push(@email_to, "linux-kernel\@vger.kernel.org");
236 }
237
238#Don't sort email address list, but do remove duplicates
239 @email_to = uniq(@email_to);
240 output(@email_to);
241}
242
243if ($scm) {
244 @scm = sort_and_uniq(@scm);
245 output(@scm);
246}
247
248if ($status) {
249 @status = sort_and_uniq(@status);
250 output(@status);
251}
252
253if ($subsystem) {
254 @subsystem = sort_and_uniq(@subsystem);
255 output(@subsystem);
256}
257
258if ($web) {
259 @web = sort_and_uniq(@web);
260 output(@web);
261}
262
263exit($exit);
264
265sub file_match_pattern {
266 my ($file, $pattern) = @_;
267 if (substr($pattern, -1) eq "/") {
268 if ($file =~ m@^$pattern@) {
269 return 1;
270 }
271 } else {
272 if ($file =~ m@^$pattern@) {
273 my $s1 = ($file =~ tr@/@@);
274 my $s2 = ($pattern =~ tr@/@@);
275 if ($s1 == $s2) {
276 return 1;
277 }
278 }
279 }
280 return 0;
281}
282
283sub usage {
284 print <<EOT;
285usage: $P [options] patchfile
286 $P [options] -f file
287version: $V
288
289MAINTAINER field selection options:
290 --email => print email address(es) if any
291 --git => include recent git \*-by: signers
292 --git-chief-penguins => include ${penguin_chiefs}
293 --git-min-signatures => number of signatures required (default: 1)
294 --git-max-maintainers => maximum maintainers to add (default: 5)
295 --git-since => git history to use (default: 1-year-ago)
296 --m => include maintainer(s) if any
297 --n => include name 'Full Name <addr\@domain.tld>'
298 --l => include list(s) if any
299 --s => include subscriber only list(s) if any
300 --scm => print SCM tree(s) if any
301 --status => print status if any
302 --subsystem => print subsystem name if any
303 --web => print website(s) if any
304
305Output type options:
306 --separator [, ] => separator for multiple entries on 1 line
307 --multiline => print 1 entry per line
308
309Default options:
310 [--email --git --m --l --multiline]
311
312Other options:
313 --version -> show version
314 --help => show this help information
315
316EOT
317}
318
319sub top_of_kernel_tree {
320 my ($lk_path) = @_;
321
322 if ($lk_path ne "" && substr($lk_path,length($lk_path)-1,1) ne "/") {
323 $lk_path .= "/";
324 }
325 if ( (-f "${lk_path}COPYING")
326 && (-f "${lk_path}CREDITS")
327 && (-f "${lk_path}Kbuild")
328 && (-f "${lk_path}MAINTAINERS")
329 && (-f "${lk_path}Makefile")
330 && (-f "${lk_path}README")
331 && (-d "${lk_path}Documentation")
332 && (-d "${lk_path}arch")
333 && (-d "${lk_path}include")
334 && (-d "${lk_path}drivers")
335 && (-d "${lk_path}fs")
336 && (-d "${lk_path}init")
337 && (-d "${lk_path}ipc")
338 && (-d "${lk_path}kernel")
339 && (-d "${lk_path}lib")
340 && (-d "${lk_path}scripts")) {
341 return 1;
342 }
343 return 0;
344}
345
346sub format_email {
347 my ($name, $email) = @_;
348
349 $name =~ s/^\s+|\s+$//g;
350 $email =~ s/^\s+|\s+$//g;
351
352 my $formatted_email = "";
353
354 if ($name =~ /[^a-z0-9 \.\-]/i) { ##has "must quote" chars
355 $name =~ s/(?<!\\)"/\\"/g; ##escape quotes
356 $formatted_email = "\"${name}\"\ \<${email}\>";
357 } else {
358 $formatted_email = "${name} \<${email}\>";
359 }
360 return $formatted_email;
361}
362
363sub add_categories {
364 my ($index) = @_;
365
366 $index = $index - 1;
367 while ($index >= 0) {
368 my $tv = $typevalue[$index];
369 if ($tv =~ m/^(\C):(.*)/) {
370 my $ptype = $1;
371 my $pvalue = $2;
372 if ($ptype eq "L") {
373 my $subscr = $pvalue;
374 if ($subscr =~ m/\s*\(subscribers-only\)/) {
375 if ($email_subscriber_list) {
376 $subscr =~ s/\s*\(subscribers-only\)//g;
377 push(@email_to, $subscr);
378 }
379 } else {
380 if ($email_list) {
381 push(@email_to, $pvalue);
382 }
383 }
384 } elsif ($ptype eq "M") {
385 if ($email_maintainer) {
386 if ($index >= 0) {
387 my $tv = $typevalue[$index - 1];
388 if ($tv =~ m/^(\C):(.*)/) {
389 if ($1 eq "P" && $email_usename) {
390 push(@email_to, format_email($2, $pvalue));
391 } else {
392 push(@email_to, $pvalue);
393 }
394 }
395 } else {
396 push(@email_to, $pvalue);
397 }
398 }
399 } elsif ($ptype eq "T") {
400 push(@scm, $pvalue);
401 } elsif ($ptype eq "W") {
402 push(@web, $pvalue);
403 } elsif ($ptype eq "S") {
404 push(@status, $pvalue);
405 }
406
407 $index--;
408 } else {
409 push(@subsystem,$tv);
410 $index = -1;
411 }
412 }
413}
414
415sub which {
416 my ($bin) = @_;
417
418 foreach my $path (split /:/, $ENV{PATH}) {
419 if (-e "$path/$bin") {
420 return "$path/$bin";
421 }
422 }
423
424 return "";
425}
426
427sub recent_git_signoffs {
428 my ($file) = @_;
429
430 my $sign_offs = "";
431 my $cmd = "";
432 my $output = "";
433 my $count = 0;
434 my @lines = ();
435
436 if (which("git") eq "") {
437 die("$P: git not found. Add --nogit to options?\n");
438 }
439
440 $cmd = "git log --since=${email_git_since} -- ${file}";
441 $cmd .= " | grep -Pi \"^[-_ a-z]+by:.*\\\@\"";
442 if (!$email_git_penguin_chiefs) {
443 $cmd .= " | grep -Pv \"${penguin_chiefs}\"";
444 }
445 $cmd .= " | cut -f2- -d\":\"";
446 $cmd .= " | sed -e \"s/^\\s+//g\"";
447 $cmd .= " | sort | uniq -c | sort -rn";
448
449 $output = `${cmd}`;
450 $output =~ s/^\s*//gm;
451
452 @lines = split("\n", $output);
453 foreach my $line (@lines) {
454 if ($line =~ m/([0-9]+)\s+(.*)/) {
455 my $sign_offs = $1;
456 $line = $2;
457 $count++;
458 if ($sign_offs < $email_git_min_signatures ||
459 $count > $email_git_max_maintainers) {
460 last;
461 }
462 } else {
463 die("$P: Unexpected git output: ${line}\n");
464 }
465 if ($line =~ m/(.+)<(.+)>/) {
466 my $git_name = $1;
467 my $git_addr = $2;
468 $git_name =~ tr/^\"//;
469 $git_name =~ tr/^\\s*//;
470 $git_name =~ tr/\"$//;
471 $git_name =~ tr/\\s*$//;
472 if ($email_usename) {
473 push(@email_to, format_email($git_name, $git_addr));
474 } else {
475 push(@email_to, $git_addr);
476 }
477 } elsif ($line =~ m/<(.+)>/) {
478 my $git_addr = $1;
479 push(@email_to, $git_addr);
480 } else {
481 push(@email_to, $line);
482 }
483 }
484 return $output;
485}
486
487sub uniq {
488 my @parms = @_;
489
490 my %saw;
491 @parms = grep(!$saw{$_}++, @parms);
492 return @parms;
493}
494
495sub sort_and_uniq {
496 my @parms = @_;
497
498 my %saw;
499 @parms = sort @parms;
500 @parms = grep(!$saw{$_}++, @parms);
501 return @parms;
502}
503
504sub output {
505 my @parms = @_;
506
507 if ($output_multiline) {
508 foreach my $line (@parms) {
509 print("${line}\n");
510 }
511 } else {
512 print(join($output_separator, @parms));
513 print("\n");
514 }
515}
diff --git a/scripts/headerdep.pl b/scripts/headerdep.pl
index 97399da89ef2..b7f6c560e24d 100755
--- a/scripts/headerdep.pl
+++ b/scripts/headerdep.pl
@@ -19,7 +19,7 @@ my $opt_graph;
19 version => \&version, 19 version => \&version,
20 20
21 all => \$opt_all, 21 all => \$opt_all,
22 I => \@opt_include, 22 "I=s" => \@opt_include,
23 graph => \$opt_graph, 23 graph => \$opt_graph,
24); 24);
25 25
diff --git a/scripts/kconfig/kxgettext.c b/scripts/kconfig/kxgettext.c
index 6eb72a7f2562..8d9ce22b0fc5 100644
--- a/scripts/kconfig/kxgettext.c
+++ b/scripts/kconfig/kxgettext.c
@@ -43,6 +43,10 @@ static char *escape(const char* text, char *bf, int len)
43 ++text; 43 ++text;
44 goto next; 44 goto next;
45 } 45 }
46 else if (*text == '\\') {
47 *bfp++ = '\\';
48 len--;
49 }
46 *bfp++ = *text++; 50 *bfp++ = *text++;
47next: 51next:
48 --len; 52 --len;
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 8cc70612984c..df6e6286a065 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1913,7 +1913,7 @@ static void read_dump(const char *fname, unsigned int kernel)
1913 if (!mod) { 1913 if (!mod) {
1914 if (is_vmlinux(modname)) 1914 if (is_vmlinux(modname))
1915 have_vmlinux = 1; 1915 have_vmlinux = 1;
1916 mod = new_module(NOFAIL(strdup(modname))); 1916 mod = new_module(modname);
1917 mod->skip = 1; 1917 mod->skip = 1;
1918 } 1918 }
1919 s = sym_add_exported(symname, mod, export_no(export)); 1919 s = sym_add_exported(symname, mod, export_no(export));
@@ -1997,7 +1997,7 @@ static void read_markers(const char *fname)
1997 1997
1998 mod = find_module(modname); 1998 mod = find_module(modname);
1999 if (!mod) { 1999 if (!mod) {
2000 mod = new_module(NOFAIL(strdup(modname))); 2000 mod = new_module(modname);
2001 mod->skip = 1; 2001 mod->skip = 1;
2002 } 2002 }
2003 if (is_vmlinux(modname)) { 2003 if (is_vmlinux(modname)) {
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index f1c4b35bc324..47e75b69a2e9 100755
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -21,7 +21,7 @@ if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
21 21
22 # Is this git on svn? 22 # Is this git on svn?
23 if git config --get svn-remote.svn.url >/dev/null; then 23 if git config --get svn-remote.svn.url >/dev/null; then
24 printf -- '-svn%s' "`git-svn find-rev $head`" 24 printf -- '-svn%s' "`git svn find-rev $head`"
25 fi 25 fi
26 26
27 # Are there uncommitted changes? 27 # Are there uncommitted changes?
diff --git a/security/commoncap.c b/security/commoncap.c
index 7cd61a5f5205..beac0258c2a8 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -916,7 +916,6 @@ changed:
916 return commit_creds(new); 916 return commit_creds(new);
917 917
918no_change: 918no_change:
919 error = 0;
920error: 919error:
921 abort_creds(new); 920 abort_creds(new);
922 return error; 921 return error;
diff --git a/security/keys/request_key.c b/security/keys/request_key.c
index 22a31582bfaa..03fe63ed55bd 100644
--- a/security/keys/request_key.c
+++ b/security/keys/request_key.c
@@ -311,7 +311,8 @@ static int construct_alloc_key(struct key_type *type,
311 311
312 set_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags); 312 set_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags);
313 313
314 down_write(&dest_keyring->sem); 314 if (dest_keyring)
315 down_write(&dest_keyring->sem);
315 316
316 /* attach the key to the destination keyring under lock, but we do need 317 /* attach the key to the destination keyring under lock, but we do need
317 * to do another check just in case someone beat us to it whilst we 318 * to do another check just in case someone beat us to it whilst we
@@ -322,10 +323,12 @@ static int construct_alloc_key(struct key_type *type,
322 if (!IS_ERR(key_ref)) 323 if (!IS_ERR(key_ref))
323 goto key_already_present; 324 goto key_already_present;
324 325
325 __key_link(dest_keyring, key); 326 if (dest_keyring)
327 __key_link(dest_keyring, key);
326 328
327 mutex_unlock(&key_construction_mutex); 329 mutex_unlock(&key_construction_mutex);
328 up_write(&dest_keyring->sem); 330 if (dest_keyring)
331 up_write(&dest_keyring->sem);
329 mutex_unlock(&user->cons_lock); 332 mutex_unlock(&user->cons_lock);
330 *_key = key; 333 *_key = key;
331 kleave(" = 0 [%d]", key_serial(key)); 334 kleave(" = 0 [%d]", key_serial(key));
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 921514902eca..98b3195347ab 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -609,8 +609,12 @@ static int smack_inode_setxattr(struct dentry *dentry, const char *name,
609 strcmp(name, XATTR_NAME_SMACKIPOUT) == 0) { 609 strcmp(name, XATTR_NAME_SMACKIPOUT) == 0) {
610 if (!capable(CAP_MAC_ADMIN)) 610 if (!capable(CAP_MAC_ADMIN))
611 rc = -EPERM; 611 rc = -EPERM;
612 /* a label cannot be void and cannot begin with '-' */ 612 /*
613 if (size == 0 || (size > 0 && ((char *)value)[0] == '-')) 613 * check label validity here so import wont fail on
614 * post_setxattr
615 */
616 if (size == 0 || size >= SMK_LABELLEN ||
617 smk_import(value, size) == NULL)
614 rc = -EINVAL; 618 rc = -EINVAL;
615 } else 619 } else
616 rc = cap_inode_setxattr(dentry, name, value, size, flags); 620 rc = cap_inode_setxattr(dentry, name, value, size, flags);
@@ -644,9 +648,6 @@ static void smack_inode_post_setxattr(struct dentry *dentry, const char *name,
644 if (strcmp(name, XATTR_NAME_SMACK)) 648 if (strcmp(name, XATTR_NAME_SMACK))
645 return; 649 return;
646 650
647 if (size >= SMK_LABELLEN)
648 return;
649
650 isp = dentry->d_inode->i_security; 651 isp = dentry->d_inode->i_security;
651 652
652 /* 653 /*
diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c
index a0affd9cfca8..d4d41b3efc7c 100644
--- a/security/tomoyo/common.c
+++ b/security/tomoyo/common.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
@@ -1773,7 +1773,7 @@ void tomoyo_load_policy(const char *filename)
1773 envp[2] = NULL; 1773 envp[2] = NULL;
1774 call_usermodehelper(argv[0], argv, envp, 1); 1774 call_usermodehelper(argv[0], argv, envp, 1);
1775 1775
1776 printk(KERN_INFO "TOMOYO: 2.2.0-pre 2009/02/01\n"); 1776 printk(KERN_INFO "TOMOYO: 2.2.0 2009/04/01\n");
1777 printk(KERN_INFO "Mandatory Access Control activated.\n"); 1777 printk(KERN_INFO "Mandatory Access Control activated.\n");
1778 tomoyo_policy_loaded = true; 1778 tomoyo_policy_loaded = true;
1779 { /* Check all profiles currently assigned to domains are defined. */ 1779 { /* Check all profiles currently assigned to domains are defined. */
@@ -1800,7 +1800,7 @@ void tomoyo_load_policy(const char *filename)
1800static int tomoyo_read_version(struct tomoyo_io_buffer *head) 1800static int tomoyo_read_version(struct tomoyo_io_buffer *head)
1801{ 1801{
1802 if (!head->read_eof) { 1802 if (!head->read_eof) {
1803 tomoyo_io_printf(head, "2.2.0-pre"); 1803 tomoyo_io_printf(head, "2.2.0");
1804 head->read_eof = true; 1804 head->read_eof = true;
1805 } 1805 }
1806 return 0; 1806 return 0;
diff --git a/security/tomoyo/common.h b/security/tomoyo/common.h
index e77e6a6de0f2..678f4ff16aa4 100644
--- a/security/tomoyo/common.h
+++ b/security/tomoyo/common.h
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
diff --git a/security/tomoyo/domain.c b/security/tomoyo/domain.c
index 2f2b449ffd2d..2d6748741a26 100644
--- a/security/tomoyo/domain.c
+++ b/security/tomoyo/domain.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
diff --git a/security/tomoyo/file.c b/security/tomoyo/file.c
index 65f50c1c5ee9..2316da8ec5bc 100644
--- a/security/tomoyo/file.c
+++ b/security/tomoyo/file.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
diff --git a/security/tomoyo/realpath.c b/security/tomoyo/realpath.c
index 3bbe01a7a4b5..bf8e2b451687 100644
--- a/security/tomoyo/realpath.c
+++ b/security/tomoyo/realpath.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
diff --git a/security/tomoyo/realpath.h b/security/tomoyo/realpath.h
index 7ec9fc9cbc07..78217a37960b 100644
--- a/security/tomoyo/realpath.h
+++ b/security/tomoyo/realpath.h
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c
index 3eeeae12c4dc..5b481912752a 100644
--- a/security/tomoyo/tomoyo.c
+++ b/security/tomoyo/tomoyo.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
diff --git a/security/tomoyo/tomoyo.h b/security/tomoyo/tomoyo.h
index a0c8f6e0bea4..41c6ebafb9c5 100644
--- a/security/tomoyo/tomoyo.h
+++ b/security/tomoyo/tomoyo.h
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION 6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
7 * 7 *
8 * Version: 2.2.0-pre 2009/02/01 8 * Version: 2.2.0 2009/04/01
9 * 9 *
10 */ 10 */
11 11
diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c
index 15500b9d2da0..84bb07d39a7f 100644
--- a/sound/aoa/codecs/onyx.c
+++ b/sound/aoa/codecs/onyx.c
@@ -47,7 +47,7 @@ MODULE_DESCRIPTION("pcm3052 (onyx) codec driver for snd-aoa");
47struct onyx { 47struct onyx {
48 /* cache registers 65 to 80, they are write-only! */ 48 /* cache registers 65 to 80, they are write-only! */
49 u8 cache[16]; 49 u8 cache[16];
50 struct i2c_client i2c; 50 struct i2c_client *i2c;
51 struct aoa_codec codec; 51 struct aoa_codec codec;
52 u32 initialised:1, 52 u32 initialised:1,
53 spdif_locked:1, 53 spdif_locked:1,
@@ -72,7 +72,7 @@ static int onyx_read_register(struct onyx *onyx, u8 reg, u8 *value)
72 *value = onyx->cache[reg-FIRSTREGISTER]; 72 *value = onyx->cache[reg-FIRSTREGISTER];
73 return 0; 73 return 0;
74 } 74 }
75 v = i2c_smbus_read_byte_data(&onyx->i2c, reg); 75 v = i2c_smbus_read_byte_data(onyx->i2c, reg);
76 if (v < 0) 76 if (v < 0)
77 return -1; 77 return -1;
78 *value = (u8)v; 78 *value = (u8)v;
@@ -84,7 +84,7 @@ static int onyx_write_register(struct onyx *onyx, u8 reg, u8 value)
84{ 84{
85 int result; 85 int result;
86 86
87 result = i2c_smbus_write_byte_data(&onyx->i2c, reg, value); 87 result = i2c_smbus_write_byte_data(onyx->i2c, reg, value);
88 if (!result) 88 if (!result)
89 onyx->cache[reg-FIRSTREGISTER] = value; 89 onyx->cache[reg-FIRSTREGISTER] = value;
90 return result; 90 return result;
@@ -996,12 +996,45 @@ static void onyx_exit_codec(struct aoa_codec *codec)
996 onyx->codec.soundbus_dev->detach_codec(onyx->codec.soundbus_dev, onyx); 996 onyx->codec.soundbus_dev->detach_codec(onyx->codec.soundbus_dev, onyx);
997} 997}
998 998
999static struct i2c_driver onyx_driver;
1000
1001static int onyx_create(struct i2c_adapter *adapter, 999static int onyx_create(struct i2c_adapter *adapter,
1002 struct device_node *node, 1000 struct device_node *node,
1003 int addr) 1001 int addr)
1004{ 1002{
1003 struct i2c_board_info info;
1004 struct i2c_client *client;
1005
1006 memset(&info, 0, sizeof(struct i2c_board_info));
1007 strlcpy(info.type, "aoa_codec_onyx", I2C_NAME_SIZE);
1008 info.addr = addr;
1009 info.platform_data = node;
1010 client = i2c_new_device(adapter, &info);
1011 if (!client)
1012 return -ENODEV;
1013
1014 /*
1015 * We know the driver is already loaded, so the device should be
1016 * already bound. If not it means binding failed, which suggests
1017 * the device doesn't really exist and should be deleted.
1018 * Ideally this would be replaced by better checks _before_
1019 * instantiating the device.
1020 */
1021 if (!client->driver) {
1022 i2c_unregister_device(client);
1023 return -ENODEV;
1024 }
1025
1026 /*
1027 * Let i2c-core delete that device on driver removal.
1028 * This is safe because i2c-core holds the core_lock mutex for us.
1029 */
1030 list_add_tail(&client->detected, &client->driver->clients);
1031 return 0;
1032}
1033
1034static int onyx_i2c_probe(struct i2c_client *client,
1035 const struct i2c_device_id *id)
1036{
1037 struct device_node *node = client->dev.platform_data;
1005 struct onyx *onyx; 1038 struct onyx *onyx;
1006 u8 dummy; 1039 u8 dummy;
1007 1040
@@ -1011,20 +1044,12 @@ static int onyx_create(struct i2c_adapter *adapter,
1011 return -ENOMEM; 1044 return -ENOMEM;
1012 1045
1013 mutex_init(&onyx->mutex); 1046 mutex_init(&onyx->mutex);
1014 onyx->i2c.driver = &onyx_driver; 1047 onyx->i2c = client;
1015 onyx->i2c.adapter = adapter; 1048 i2c_set_clientdata(client, onyx);
1016 onyx->i2c.addr = addr & 0x7f;
1017 strlcpy(onyx->i2c.name, "onyx audio codec", I2C_NAME_SIZE);
1018
1019 if (i2c_attach_client(&onyx->i2c)) {
1020 printk(KERN_ERR PFX "failed to attach to i2c\n");
1021 goto fail;
1022 }
1023 1049
1024 /* we try to read from register ONYX_REG_CONTROL 1050 /* we try to read from register ONYX_REG_CONTROL
1025 * to check if the codec is present */ 1051 * to check if the codec is present */
1026 if (onyx_read_register(onyx, ONYX_REG_CONTROL, &dummy) != 0) { 1052 if (onyx_read_register(onyx, ONYX_REG_CONTROL, &dummy) != 0) {
1027 i2c_detach_client(&onyx->i2c);
1028 printk(KERN_ERR PFX "failed to read control register\n"); 1053 printk(KERN_ERR PFX "failed to read control register\n");
1029 goto fail; 1054 goto fail;
1030 } 1055 }
@@ -1036,14 +1061,14 @@ static int onyx_create(struct i2c_adapter *adapter,
1036 onyx->codec.node = of_node_get(node); 1061 onyx->codec.node = of_node_get(node);
1037 1062
1038 if (aoa_codec_register(&onyx->codec)) { 1063 if (aoa_codec_register(&onyx->codec)) {
1039 i2c_detach_client(&onyx->i2c);
1040 goto fail; 1064 goto fail;
1041 } 1065 }
1042 printk(KERN_DEBUG PFX "created and attached onyx instance\n"); 1066 printk(KERN_DEBUG PFX "created and attached onyx instance\n");
1043 return 0; 1067 return 0;
1044 fail: 1068 fail:
1069 i2c_set_clientdata(client, NULL);
1045 kfree(onyx); 1070 kfree(onyx);
1046 return -EINVAL; 1071 return -ENODEV;
1047} 1072}
1048 1073
1049static int onyx_i2c_attach(struct i2c_adapter *adapter) 1074static int onyx_i2c_attach(struct i2c_adapter *adapter)
@@ -1080,28 +1105,33 @@ static int onyx_i2c_attach(struct i2c_adapter *adapter)
1080 return onyx_create(adapter, NULL, 0x47); 1105 return onyx_create(adapter, NULL, 0x47);
1081} 1106}
1082 1107
1083static int onyx_i2c_detach(struct i2c_client *client) 1108static int onyx_i2c_remove(struct i2c_client *client)
1084{ 1109{
1085 struct onyx *onyx = container_of(client, struct onyx, i2c); 1110 struct onyx *onyx = i2c_get_clientdata(client);
1086 int err;
1087 1111
1088 if ((err = i2c_detach_client(client)))
1089 return err;
1090 aoa_codec_unregister(&onyx->codec); 1112 aoa_codec_unregister(&onyx->codec);
1091 of_node_put(onyx->codec.node); 1113 of_node_put(onyx->codec.node);
1092 if (onyx->codec_info) 1114 if (onyx->codec_info)
1093 kfree(onyx->codec_info); 1115 kfree(onyx->codec_info);
1116 i2c_set_clientdata(client, onyx);
1094 kfree(onyx); 1117 kfree(onyx);
1095 return 0; 1118 return 0;
1096} 1119}
1097 1120
1121static const struct i2c_device_id onyx_i2c_id[] = {
1122 { "aoa_codec_onyx", 0 },
1123 { }
1124};
1125
1098static struct i2c_driver onyx_driver = { 1126static struct i2c_driver onyx_driver = {
1099 .driver = { 1127 .driver = {
1100 .name = "aoa_codec_onyx", 1128 .name = "aoa_codec_onyx",
1101 .owner = THIS_MODULE, 1129 .owner = THIS_MODULE,
1102 }, 1130 },
1103 .attach_adapter = onyx_i2c_attach, 1131 .attach_adapter = onyx_i2c_attach,
1104 .detach_client = onyx_i2c_detach, 1132 .probe = onyx_i2c_probe,
1133 .remove = onyx_i2c_remove,
1134 .id_table = onyx_i2c_id,
1105}; 1135};
1106 1136
1107static int __init onyx_init(void) 1137static int __init onyx_init(void)
diff --git a/sound/aoa/codecs/tas.c b/sound/aoa/codecs/tas.c
index 008e0f85097d..f0ebc971c686 100644
--- a/sound/aoa/codecs/tas.c
+++ b/sound/aoa/codecs/tas.c
@@ -82,7 +82,7 @@ MODULE_DESCRIPTION("tas codec driver for snd-aoa");
82 82
83struct tas { 83struct tas {
84 struct aoa_codec codec; 84 struct aoa_codec codec;
85 struct i2c_client i2c; 85 struct i2c_client *i2c;
86 u32 mute_l:1, mute_r:1 , 86 u32 mute_l:1, mute_r:1 ,
87 controls_created:1 , 87 controls_created:1 ,
88 drc_enabled:1, 88 drc_enabled:1,
@@ -108,9 +108,9 @@ static struct tas *codec_to_tas(struct aoa_codec *codec)
108static inline int tas_write_reg(struct tas *tas, u8 reg, u8 len, u8 *data) 108static inline int tas_write_reg(struct tas *tas, u8 reg, u8 len, u8 *data)
109{ 109{
110 if (len == 1) 110 if (len == 1)
111 return i2c_smbus_write_byte_data(&tas->i2c, reg, *data); 111 return i2c_smbus_write_byte_data(tas->i2c, reg, *data);
112 else 112 else
113 return i2c_smbus_write_i2c_block_data(&tas->i2c, reg, len, data); 113 return i2c_smbus_write_i2c_block_data(tas->i2c, reg, len, data);
114} 114}
115 115
116static void tas3004_set_drc(struct tas *tas) 116static void tas3004_set_drc(struct tas *tas)
@@ -882,12 +882,34 @@ static void tas_exit_codec(struct aoa_codec *codec)
882} 882}
883 883
884 884
885static struct i2c_driver tas_driver;
886
887static int tas_create(struct i2c_adapter *adapter, 885static int tas_create(struct i2c_adapter *adapter,
888 struct device_node *node, 886 struct device_node *node,
889 int addr) 887 int addr)
890{ 888{
889 struct i2c_board_info info;
890 struct i2c_client *client;
891
892 memset(&info, 0, sizeof(struct i2c_board_info));
893 strlcpy(info.type, "aoa_codec_tas", I2C_NAME_SIZE);
894 info.addr = addr;
895 info.platform_data = node;
896
897 client = i2c_new_device(adapter, &info);
898 if (!client)
899 return -ENODEV;
900
901 /*
902 * Let i2c-core delete that device on driver removal.
903 * This is safe because i2c-core holds the core_lock mutex for us.
904 */
905 list_add_tail(&client->detected, &client->driver->clients);
906 return 0;
907}
908
909static int tas_i2c_probe(struct i2c_client *client,
910 const struct i2c_device_id *id)
911{
912 struct device_node *node = client->dev.platform_data;
891 struct tas *tas; 913 struct tas *tas;
892 914
893 tas = kzalloc(sizeof(struct tas), GFP_KERNEL); 915 tas = kzalloc(sizeof(struct tas), GFP_KERNEL);
@@ -896,17 +918,11 @@ static int tas_create(struct i2c_adapter *adapter,
896 return -ENOMEM; 918 return -ENOMEM;
897 919
898 mutex_init(&tas->mtx); 920 mutex_init(&tas->mtx);
899 tas->i2c.driver = &tas_driver; 921 tas->i2c = client;
900 tas->i2c.adapter = adapter; 922 i2c_set_clientdata(client, tas);
901 tas->i2c.addr = addr; 923
902 /* seems that half is a saner default */ 924 /* seems that half is a saner default */
903 tas->drc_range = TAS3004_DRC_MAX / 2; 925 tas->drc_range = TAS3004_DRC_MAX / 2;
904 strlcpy(tas->i2c.name, "tas audio codec", I2C_NAME_SIZE);
905
906 if (i2c_attach_client(&tas->i2c)) {
907 printk(KERN_ERR PFX "failed to attach to i2c\n");
908 goto fail;
909 }
910 926
911 strlcpy(tas->codec.name, "tas", MAX_CODEC_NAME_LEN); 927 strlcpy(tas->codec.name, "tas", MAX_CODEC_NAME_LEN);
912 tas->codec.owner = THIS_MODULE; 928 tas->codec.owner = THIS_MODULE;
@@ -915,14 +931,12 @@ static int tas_create(struct i2c_adapter *adapter,
915 tas->codec.node = of_node_get(node); 931 tas->codec.node = of_node_get(node);
916 932
917 if (aoa_codec_register(&tas->codec)) { 933 if (aoa_codec_register(&tas->codec)) {
918 goto detach; 934 goto fail;
919 } 935 }
920 printk(KERN_DEBUG 936 printk(KERN_DEBUG
921 "snd-aoa-codec-tas: tas found, addr 0x%02x on %s\n", 937 "snd-aoa-codec-tas: tas found, addr 0x%02x on %s\n",
922 addr, node->full_name); 938 (unsigned int)client->addr, node->full_name);
923 return 0; 939 return 0;
924 detach:
925 i2c_detach_client(&tas->i2c);
926 fail: 940 fail:
927 mutex_destroy(&tas->mtx); 941 mutex_destroy(&tas->mtx);
928 kfree(tas); 942 kfree(tas);
@@ -970,14 +984,11 @@ static int tas_i2c_attach(struct i2c_adapter *adapter)
970 return -ENODEV; 984 return -ENODEV;
971} 985}
972 986
973static int tas_i2c_detach(struct i2c_client *client) 987static int tas_i2c_remove(struct i2c_client *client)
974{ 988{
975 struct tas *tas = container_of(client, struct tas, i2c); 989 struct tas *tas = i2c_get_clientdata(client);
976 int err;
977 u8 tmp = TAS_ACR_ANALOG_PDOWN; 990 u8 tmp = TAS_ACR_ANALOG_PDOWN;
978 991
979 if ((err = i2c_detach_client(client)))
980 return err;
981 aoa_codec_unregister(&tas->codec); 992 aoa_codec_unregister(&tas->codec);
982 of_node_put(tas->codec.node); 993 of_node_put(tas->codec.node);
983 994
@@ -989,13 +1000,20 @@ static int tas_i2c_detach(struct i2c_client *client)
989 return 0; 1000 return 0;
990} 1001}
991 1002
1003static const struct i2c_device_id tas_i2c_id[] = {
1004 { "aoa_codec_tas", 0 },
1005 { }
1006};
1007
992static struct i2c_driver tas_driver = { 1008static struct i2c_driver tas_driver = {
993 .driver = { 1009 .driver = {
994 .name = "aoa_codec_tas", 1010 .name = "aoa_codec_tas",
995 .owner = THIS_MODULE, 1011 .owner = THIS_MODULE,
996 }, 1012 },
997 .attach_adapter = tas_i2c_attach, 1013 .attach_adapter = tas_i2c_attach,
998 .detach_client = tas_i2c_detach, 1014 .probe = tas_i2c_probe,
1015 .remove = tas_i2c_remove,
1016 .id_table = tas_i2c_id,
999}; 1017};
1000 1018
1001static int __init tas_init(void) 1019static int __init tas_init(void)
diff --git a/sound/arm/pxa2xx-ac97-lib.c b/sound/arm/pxa2xx-ac97-lib.c
index 0afd1a8226fb..a2c12d105c9a 100644
--- a/sound/arm/pxa2xx-ac97-lib.c
+++ b/sound/arm/pxa2xx-ac97-lib.c
@@ -364,7 +364,7 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_hw_resume);
364int __devinit pxa2xx_ac97_hw_probe(struct platform_device *dev) 364int __devinit pxa2xx_ac97_hw_probe(struct platform_device *dev)
365{ 365{
366 int ret; 366 int ret;
367 struct pxa2xx_ac97_platform_data *pdata = dev->dev.platform_data; 367 pxa2xx_audio_ops_t *pdata = dev->dev.platform_data;
368 368
369 if (pdata) { 369 if (pdata) {
370 switch (pdata->reset_gpio) { 370 switch (pdata->reset_gpio) {
diff --git a/sound/core/control.c b/sound/core/control.c
index 4b20fa2b7e6d..17b8d47a5cd0 100644
--- a/sound/core/control.c
+++ b/sound/core/control.c
@@ -723,14 +723,11 @@ static int snd_ctl_elem_read_user(struct snd_card *card,
723{ 723{
724 struct snd_ctl_elem_value *control; 724 struct snd_ctl_elem_value *control;
725 int result; 725 int result;
726 726
727 control = kmalloc(sizeof(*control), GFP_KERNEL); 727 control = memdup_user(_control, sizeof(*control));
728 if (control == NULL) 728 if (IS_ERR(control))
729 return -ENOMEM; 729 return PTR_ERR(control);
730 if (copy_from_user(control, _control, sizeof(*control))) { 730
731 kfree(control);
732 return -EFAULT;
733 }
734 snd_power_lock(card); 731 snd_power_lock(card);
735 result = snd_power_wait(card, SNDRV_CTL_POWER_D0); 732 result = snd_power_wait(card, SNDRV_CTL_POWER_D0);
736 if (result >= 0) 733 if (result >= 0)
@@ -784,13 +781,10 @@ static int snd_ctl_elem_write_user(struct snd_ctl_file *file,
784 struct snd_card *card; 781 struct snd_card *card;
785 int result; 782 int result;
786 783
787 control = kmalloc(sizeof(*control), GFP_KERNEL); 784 control = memdup_user(_control, sizeof(*control));
788 if (control == NULL) 785 if (IS_ERR(control))
789 return -ENOMEM; 786 return PTR_ERR(control);
790 if (copy_from_user(control, _control, sizeof(*control))) { 787
791 kfree(control);
792 return -EFAULT;
793 }
794 card = file->card; 788 card = file->card;
795 snd_power_lock(card); 789 snd_power_lock(card);
796 result = snd_power_wait(card, SNDRV_CTL_POWER_D0); 790 result = snd_power_wait(card, SNDRV_CTL_POWER_D0);
@@ -916,13 +910,10 @@ static int snd_ctl_elem_user_tlv(struct snd_kcontrol *kcontrol,
916 if (op_flag > 0) { 910 if (op_flag > 0) {
917 if (size > 1024 * 128) /* sane value */ 911 if (size > 1024 * 128) /* sane value */
918 return -EINVAL; 912 return -EINVAL;
919 new_data = kmalloc(size, GFP_KERNEL); 913
920 if (new_data == NULL) 914 new_data = memdup_user(tlv, size);
921 return -ENOMEM; 915 if (IS_ERR(new_data))
922 if (copy_from_user(new_data, tlv, size)) { 916 return PTR_ERR(new_data);
923 kfree(new_data);
924 return -EFAULT;
925 }
926 change = ue->tlv_data_size != size; 917 change = ue->tlv_data_size != size;
927 if (!change) 918 if (!change)
928 change = memcmp(ue->tlv_data, new_data, size); 919 change = memcmp(ue->tlv_data, new_data, size);
diff --git a/sound/core/jack.c b/sound/core/jack.c
index c8254c667c62..d54d1a05fe65 100644
--- a/sound/core/jack.c
+++ b/sound/core/jack.c
@@ -35,6 +35,9 @@ static int snd_jack_dev_free(struct snd_device *device)
35{ 35{
36 struct snd_jack *jack = device->device_data; 36 struct snd_jack *jack = device->device_data;
37 37
38 if (jack->private_free)
39 jack->private_free(jack);
40
38 /* If the input device is registered with the input subsystem 41 /* If the input device is registered with the input subsystem
39 * then we need to use a different deallocator. */ 42 * then we need to use a different deallocator. */
40 if (jack->registered) 43 if (jack->registered)
diff --git a/sound/core/pcm_compat.c b/sound/core/pcm_compat.c
index 36d7a5998234..08bfed594a83 100644
--- a/sound/core/pcm_compat.c
+++ b/sound/core/pcm_compat.c
@@ -232,14 +232,11 @@ static int snd_pcm_ioctl_hw_params_compat(struct snd_pcm_substream *substream,
232 if (! (runtime = substream->runtime)) 232 if (! (runtime = substream->runtime))
233 return -ENOTTY; 233 return -ENOTTY;
234 234
235 data = kmalloc(sizeof(*data), GFP_KERNEL);
236 if (data == NULL)
237 return -ENOMEM;
238 /* only fifo_size is different, so just copy all */ 235 /* only fifo_size is different, so just copy all */
239 if (copy_from_user(data, data32, sizeof(*data32))) { 236 data = memdup_user(data32, sizeof(*data32));
240 err = -EFAULT; 237 if (IS_ERR(data))
241 goto error; 238 return PTR_ERR(data);
242 } 239
243 if (refine) 240 if (refine)
244 err = snd_pcm_hw_refine(substream, data); 241 err = snd_pcm_hw_refine(substream, data);
245 else 242 else
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index fbb2e391591e..63d088f2265f 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -209,9 +209,11 @@ static int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *substream)
209{ 209{
210 struct snd_pcm_runtime *runtime = substream->runtime; 210 struct snd_pcm_runtime *runtime = substream->runtime;
211 snd_pcm_uframes_t pos; 211 snd_pcm_uframes_t pos;
212 snd_pcm_uframes_t new_hw_ptr, hw_ptr_interrupt, hw_base; 212 snd_pcm_uframes_t old_hw_ptr, new_hw_ptr, hw_ptr_interrupt, hw_base;
213 snd_pcm_sframes_t delta; 213 snd_pcm_sframes_t hdelta, delta;
214 unsigned long jdelta;
214 215
216 old_hw_ptr = runtime->status->hw_ptr;
215 pos = snd_pcm_update_hw_ptr_pos(substream, runtime); 217 pos = snd_pcm_update_hw_ptr_pos(substream, runtime);
216 if (pos == SNDRV_PCM_POS_XRUN) { 218 if (pos == SNDRV_PCM_POS_XRUN) {
217 xrun(substream); 219 xrun(substream);
@@ -247,7 +249,30 @@ static int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *substream)
247 new_hw_ptr = hw_base + pos; 249 new_hw_ptr = hw_base + pos;
248 } 250 }
249 } 251 }
250 if (delta > runtime->period_size) { 252 hdelta = new_hw_ptr - old_hw_ptr;
253 jdelta = jiffies - runtime->hw_ptr_jiffies;
254 if (((hdelta * HZ) / runtime->rate) > jdelta + HZ/100) {
255 delta = jdelta /
256 (((runtime->period_size * HZ) / runtime->rate)
257 + HZ/100);
258 hw_ptr_error(substream,
259 "hw_ptr skipping! [Q] "
260 "(pos=%ld, delta=%ld, period=%ld, "
261 "jdelta=%lu/%lu/%lu)\n",
262 (long)pos, (long)hdelta,
263 (long)runtime->period_size, jdelta,
264 ((hdelta * HZ) / runtime->rate), delta);
265 hw_ptr_interrupt = runtime->hw_ptr_interrupt +
266 runtime->period_size * delta;
267 if (hw_ptr_interrupt >= runtime->boundary)
268 hw_ptr_interrupt -= runtime->boundary;
269 /* rebase to interrupt position */
270 hw_base = new_hw_ptr = hw_ptr_interrupt;
271 /* align hw_base to buffer_size */
272 hw_base -= hw_base % runtime->buffer_size;
273 delta = 0;
274 }
275 if (delta > runtime->period_size + runtime->period_size / 2) {
251 hw_ptr_error(substream, 276 hw_ptr_error(substream,
252 "Lost interrupts? " 277 "Lost interrupts? "
253 "(stream=%i, delta=%ld, intr_ptr=%ld)\n", 278 "(stream=%i, delta=%ld, intr_ptr=%ld)\n",
@@ -263,6 +288,7 @@ static int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *substream)
263 288
264 runtime->hw_ptr_base = hw_base; 289 runtime->hw_ptr_base = hw_base;
265 runtime->status->hw_ptr = new_hw_ptr; 290 runtime->status->hw_ptr = new_hw_ptr;
291 runtime->hw_ptr_jiffies = jiffies;
266 runtime->hw_ptr_interrupt = hw_ptr_interrupt; 292 runtime->hw_ptr_interrupt = hw_ptr_interrupt;
267 293
268 return snd_pcm_update_hw_ptr_post(substream, runtime); 294 return snd_pcm_update_hw_ptr_post(substream, runtime);
@@ -275,6 +301,7 @@ int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream)
275 snd_pcm_uframes_t pos; 301 snd_pcm_uframes_t pos;
276 snd_pcm_uframes_t old_hw_ptr, new_hw_ptr, hw_base; 302 snd_pcm_uframes_t old_hw_ptr, new_hw_ptr, hw_base;
277 snd_pcm_sframes_t delta; 303 snd_pcm_sframes_t delta;
304 unsigned long jdelta;
278 305
279 old_hw_ptr = runtime->status->hw_ptr; 306 old_hw_ptr = runtime->status->hw_ptr;
280 pos = snd_pcm_update_hw_ptr_pos(substream, runtime); 307 pos = snd_pcm_update_hw_ptr_pos(substream, runtime);
@@ -286,14 +313,15 @@ int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream)
286 new_hw_ptr = hw_base + pos; 313 new_hw_ptr = hw_base + pos;
287 314
288 delta = new_hw_ptr - old_hw_ptr; 315 delta = new_hw_ptr - old_hw_ptr;
316 jdelta = jiffies - runtime->hw_ptr_jiffies;
289 if (delta < 0) { 317 if (delta < 0) {
290 delta += runtime->buffer_size; 318 delta += runtime->buffer_size;
291 if (delta < 0) { 319 if (delta < 0) {
292 hw_ptr_error(substream, 320 hw_ptr_error(substream,
293 "Unexpected hw_pointer value [2] " 321 "Unexpected hw_pointer value [2] "
294 "(stream=%i, pos=%ld, old_ptr=%ld)\n", 322 "(stream=%i, pos=%ld, old_ptr=%ld, jdelta=%li)\n",
295 substream->stream, (long)pos, 323 substream->stream, (long)pos,
296 (long)old_hw_ptr); 324 (long)old_hw_ptr, jdelta);
297 return 0; 325 return 0;
298 } 326 }
299 hw_base += runtime->buffer_size; 327 hw_base += runtime->buffer_size;
@@ -301,12 +329,13 @@ int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream)
301 hw_base = 0; 329 hw_base = 0;
302 new_hw_ptr = hw_base + pos; 330 new_hw_ptr = hw_base + pos;
303 } 331 }
304 if (delta > runtime->period_size && runtime->periods > 1) { 332 if (((delta * HZ) / runtime->rate) > jdelta + HZ/100) {
305 hw_ptr_error(substream, 333 hw_ptr_error(substream,
306 "hw_ptr skipping! " 334 "hw_ptr skipping! "
307 "(pos=%ld, delta=%ld, period=%ld)\n", 335 "(pos=%ld, delta=%ld, period=%ld, jdelta=%lu/%lu)\n",
308 (long)pos, (long)delta, 336 (long)pos, (long)delta,
309 (long)runtime->period_size); 337 (long)runtime->period_size, jdelta,
338 ((delta * HZ) / runtime->rate));
310 return 0; 339 return 0;
311 } 340 }
312 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK && 341 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
@@ -315,6 +344,7 @@ int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream)
315 344
316 runtime->hw_ptr_base = hw_base; 345 runtime->hw_ptr_base = hw_base;
317 runtime->status->hw_ptr = new_hw_ptr; 346 runtime->status->hw_ptr = new_hw_ptr;
347 runtime->hw_ptr_jiffies = jiffies;
318 348
319 return snd_pcm_update_hw_ptr_post(substream, runtime); 349 return snd_pcm_update_hw_ptr_post(substream, runtime);
320} 350}
@@ -1441,6 +1471,7 @@ static int snd_pcm_lib_ioctl_reset(struct snd_pcm_substream *substream,
1441 runtime->status->hw_ptr %= runtime->buffer_size; 1471 runtime->status->hw_ptr %= runtime->buffer_size;
1442 else 1472 else
1443 runtime->status->hw_ptr = 0; 1473 runtime->status->hw_ptr = 0;
1474 runtime->hw_ptr_jiffies = jiffies;
1444 snd_pcm_stream_unlock_irqrestore(substream, flags); 1475 snd_pcm_stream_unlock_irqrestore(substream, flags);
1445 return 0; 1476 return 0;
1446} 1477}
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index a151fb01ba82..fc6f98e257df 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -327,21 +327,16 @@ static int snd_pcm_hw_refine_user(struct snd_pcm_substream *substream,
327 struct snd_pcm_hw_params *params; 327 struct snd_pcm_hw_params *params;
328 int err; 328 int err;
329 329
330 params = kmalloc(sizeof(*params), GFP_KERNEL); 330 params = memdup_user(_params, sizeof(*params));
331 if (!params) { 331 if (IS_ERR(params))
332 err = -ENOMEM; 332 return PTR_ERR(params);
333 goto out; 333
334 }
335 if (copy_from_user(params, _params, sizeof(*params))) {
336 err = -EFAULT;
337 goto out;
338 }
339 err = snd_pcm_hw_refine(substream, params); 334 err = snd_pcm_hw_refine(substream, params);
340 if (copy_to_user(_params, params, sizeof(*params))) { 335 if (copy_to_user(_params, params, sizeof(*params))) {
341 if (!err) 336 if (!err)
342 err = -EFAULT; 337 err = -EFAULT;
343 } 338 }
344out: 339
345 kfree(params); 340 kfree(params);
346 return err; 341 return err;
347} 342}
@@ -465,21 +460,16 @@ static int snd_pcm_hw_params_user(struct snd_pcm_substream *substream,
465 struct snd_pcm_hw_params *params; 460 struct snd_pcm_hw_params *params;
466 int err; 461 int err;
467 462
468 params = kmalloc(sizeof(*params), GFP_KERNEL); 463 params = memdup_user(_params, sizeof(*params));
469 if (!params) { 464 if (IS_ERR(params))
470 err = -ENOMEM; 465 return PTR_ERR(params);
471 goto out; 466
472 }
473 if (copy_from_user(params, _params, sizeof(*params))) {
474 err = -EFAULT;
475 goto out;
476 }
477 err = snd_pcm_hw_params(substream, params); 467 err = snd_pcm_hw_params(substream, params);
478 if (copy_to_user(_params, params, sizeof(*params))) { 468 if (copy_to_user(_params, params, sizeof(*params))) {
479 if (!err) 469 if (!err)
480 err = -EFAULT; 470 err = -EFAULT;
481 } 471 }
482out: 472
483 kfree(params); 473 kfree(params);
484 return err; 474 return err;
485} 475}
@@ -2593,13 +2583,11 @@ static int snd_pcm_playback_ioctl1(struct file *file,
2593 return -EFAULT; 2583 return -EFAULT;
2594 if (copy_from_user(&xfern, _xfern, sizeof(xfern))) 2584 if (copy_from_user(&xfern, _xfern, sizeof(xfern)))
2595 return -EFAULT; 2585 return -EFAULT;
2596 bufs = kmalloc(sizeof(void *) * runtime->channels, GFP_KERNEL); 2586
2597 if (bufs == NULL) 2587 bufs = memdup_user(xfern.bufs,
2598 return -ENOMEM; 2588 sizeof(void *) * runtime->channels);
2599 if (copy_from_user(bufs, xfern.bufs, sizeof(void *) * runtime->channels)) { 2589 if (IS_ERR(bufs))
2600 kfree(bufs); 2590 return PTR_ERR(bufs);
2601 return -EFAULT;
2602 }
2603 result = snd_pcm_lib_writev(substream, bufs, xfern.frames); 2591 result = snd_pcm_lib_writev(substream, bufs, xfern.frames);
2604 kfree(bufs); 2592 kfree(bufs);
2605 __put_user(result, &_xfern->result); 2593 __put_user(result, &_xfern->result);
@@ -2675,13 +2663,11 @@ static int snd_pcm_capture_ioctl1(struct file *file,
2675 return -EFAULT; 2663 return -EFAULT;
2676 if (copy_from_user(&xfern, _xfern, sizeof(xfern))) 2664 if (copy_from_user(&xfern, _xfern, sizeof(xfern)))
2677 return -EFAULT; 2665 return -EFAULT;
2678 bufs = kmalloc(sizeof(void *) * runtime->channels, GFP_KERNEL); 2666
2679 if (bufs == NULL) 2667 bufs = memdup_user(xfern.bufs,
2680 return -ENOMEM; 2668 sizeof(void *) * runtime->channels);
2681 if (copy_from_user(bufs, xfern.bufs, sizeof(void *) * runtime->channels)) { 2669 if (IS_ERR(bufs))
2682 kfree(bufs); 2670 return PTR_ERR(bufs);
2683 return -EFAULT;
2684 }
2685 result = snd_pcm_lib_readv(substream, bufs, xfern.frames); 2671 result = snd_pcm_lib_readv(substream, bufs, xfern.frames);
2686 kfree(bufs); 2672 kfree(bufs);
2687 __put_user(result, &_xfern->result); 2673 __put_user(result, &_xfern->result);
@@ -3312,18 +3298,12 @@ static int snd_pcm_hw_refine_old_user(struct snd_pcm_substream *substream,
3312 int err; 3298 int err;
3313 3299
3314 params = kmalloc(sizeof(*params), GFP_KERNEL); 3300 params = kmalloc(sizeof(*params), GFP_KERNEL);
3315 if (!params) { 3301 if (!params)
3316 err = -ENOMEM; 3302 return -ENOMEM;
3317 goto out;
3318 }
3319 oparams = kmalloc(sizeof(*oparams), GFP_KERNEL);
3320 if (!oparams) {
3321 err = -ENOMEM;
3322 goto out;
3323 }
3324 3303
3325 if (copy_from_user(oparams, _oparams, sizeof(*oparams))) { 3304 oparams = memdup_user(_oparams, sizeof(*oparams));
3326 err = -EFAULT; 3305 if (IS_ERR(oparams)) {
3306 err = PTR_ERR(oparams);
3327 goto out; 3307 goto out;
3328 } 3308 }
3329 snd_pcm_hw_convert_from_old_params(params, oparams); 3309 snd_pcm_hw_convert_from_old_params(params, oparams);
@@ -3333,9 +3313,10 @@ static int snd_pcm_hw_refine_old_user(struct snd_pcm_substream *substream,
3333 if (!err) 3313 if (!err)
3334 err = -EFAULT; 3314 err = -EFAULT;
3335 } 3315 }
3316
3317 kfree(oparams);
3336out: 3318out:
3337 kfree(params); 3319 kfree(params);
3338 kfree(oparams);
3339 return err; 3320 return err;
3340} 3321}
3341 3322
@@ -3347,17 +3328,12 @@ static int snd_pcm_hw_params_old_user(struct snd_pcm_substream *substream,
3347 int err; 3328 int err;
3348 3329
3349 params = kmalloc(sizeof(*params), GFP_KERNEL); 3330 params = kmalloc(sizeof(*params), GFP_KERNEL);
3350 if (!params) { 3331 if (!params)
3351 err = -ENOMEM; 3332 return -ENOMEM;
3352 goto out; 3333
3353 } 3334 oparams = memdup_user(_oparams, sizeof(*oparams));
3354 oparams = kmalloc(sizeof(*oparams), GFP_KERNEL); 3335 if (IS_ERR(oparams)) {
3355 if (!oparams) { 3336 err = PTR_ERR(oparams);
3356 err = -ENOMEM;
3357 goto out;
3358 }
3359 if (copy_from_user(oparams, _oparams, sizeof(*oparams))) {
3360 err = -EFAULT;
3361 goto out; 3337 goto out;
3362 } 3338 }
3363 snd_pcm_hw_convert_from_old_params(params, oparams); 3339 snd_pcm_hw_convert_from_old_params(params, oparams);
@@ -3367,9 +3343,10 @@ static int snd_pcm_hw_params_old_user(struct snd_pcm_substream *substream,
3367 if (!err) 3343 if (!err)
3368 err = -EFAULT; 3344 err = -EFAULT;
3369 } 3345 }
3346
3347 kfree(oparams);
3370out: 3348out:
3371 kfree(params); 3349 kfree(params);
3372 kfree(oparams);
3373 return err; 3350 return err;
3374} 3351}
3375#endif /* CONFIG_SND_SUPPORT_OLD_API */ 3352#endif /* CONFIG_SND_SUPPORT_OLD_API */
diff --git a/sound/core/seq/seq_compat.c b/sound/core/seq/seq_compat.c
index 38693f47c262..c956fe462569 100644
--- a/sound/core/seq/seq_compat.c
+++ b/sound/core/seq/seq_compat.c
@@ -48,12 +48,11 @@ static int snd_seq_call_port_info_ioctl(struct snd_seq_client *client, unsigned
48 struct snd_seq_port_info *data; 48 struct snd_seq_port_info *data;
49 mm_segment_t fs; 49 mm_segment_t fs;
50 50
51 data = kmalloc(sizeof(*data), GFP_KERNEL); 51 data = memdup_user(data32, sizeof(*data32));
52 if (! data) 52 if (IS_ERR(data))
53 return -ENOMEM; 53 return PTR_ERR(data);
54 54
55 if (copy_from_user(data, data32, sizeof(*data32)) || 55 if (get_user(data->flags, &data32->flags) ||
56 get_user(data->flags, &data32->flags) ||
57 get_user(data->time_queue, &data32->time_queue)) 56 get_user(data->time_queue, &data32->time_queue))
58 goto error; 57 goto error;
59 data->kernel = NULL; 58 data->kernel = NULL;
diff --git a/sound/core/timer.c b/sound/core/timer.c
index 3f0050d0b71e..8f8b17ac074d 100644
--- a/sound/core/timer.c
+++ b/sound/core/timer.c
@@ -1395,13 +1395,10 @@ static int snd_timer_user_ginfo(struct file *file,
1395 struct list_head *p; 1395 struct list_head *p;
1396 int err = 0; 1396 int err = 0;
1397 1397
1398 ginfo = kmalloc(sizeof(*ginfo), GFP_KERNEL); 1398 ginfo = memdup_user(_ginfo, sizeof(*ginfo));
1399 if (! ginfo) 1399 if (IS_ERR(ginfo))
1400 return -ENOMEM; 1400 return PTR_ERR(ginfo);
1401 if (copy_from_user(ginfo, _ginfo, sizeof(*ginfo))) { 1401
1402 kfree(ginfo);
1403 return -EFAULT;
1404 }
1405 tid = ginfo->tid; 1402 tid = ginfo->tid;
1406 memset(ginfo, 0, sizeof(*ginfo)); 1403 memset(ginfo, 0, sizeof(*ginfo));
1407 ginfo->tid = tid; 1404 ginfo->tid = tid;
diff --git a/sound/isa/Kconfig b/sound/isa/Kconfig
index c5c9a9218ff6..c6942a4de99b 100644
--- a/sound/isa/Kconfig
+++ b/sound/isa/Kconfig
@@ -395,16 +395,6 @@ config SND_WAVEFRONT
395 To compile this driver as a module, choose M here: the module 395 To compile this driver as a module, choose M here: the module
396 will be called snd-wavefront. 396 will be called snd-wavefront.
397 397
398config SND_WAVEFRONT_FIRMWARE_IN_KERNEL
399 bool "In-kernel firmware for Wavefront"
400 depends on SND_WAVEFRONT
401 default y
402 help
403 Say Y here to include the static firmware for FX DSP built in
404 the kernel for the Wavefront driver. If you choose N here,
405 you need to install the firmware files from the
406 alsa-firmware package.
407
408config SND_MSND_PINNACLE 398config SND_MSND_PINNACLE
409 tristate "Turtle Beach MultiSound Pinnacle/Fiji driver" 399 tristate "Turtle Beach MultiSound Pinnacle/Fiji driver"
410 depends on X86 && EXPERIMENTAL 400 depends on X86 && EXPERIMENTAL
diff --git a/sound/isa/sb/sb16_csp.c b/sound/isa/sb/sb16_csp.c
index 49037d074c71..bdc8dde4e4a2 100644
--- a/sound/isa/sb/sb16_csp.c
+++ b/sound/isa/sb/sb16_csp.c
@@ -684,15 +684,16 @@ static int snd_sb_csp_load(struct snd_sb_csp * p, const unsigned char *buf, int
684 684
685static int snd_sb_csp_load_user(struct snd_sb_csp * p, const unsigned char __user *buf, int size, int load_flags) 685static int snd_sb_csp_load_user(struct snd_sb_csp * p, const unsigned char __user *buf, int size, int load_flags)
686{ 686{
687 int err = -ENOMEM; 687 int err;
688 unsigned char *kbuf = kmalloc(size, GFP_KERNEL); 688 unsigned char *kbuf;
689 if (kbuf) { 689
690 if (copy_from_user(kbuf, buf, size)) 690 kbuf = memdup_user(buf, size);
691 err = -EFAULT; 691 if (IS_ERR(kbuf))
692 else 692 return PTR_ERR(kbuf);
693 err = snd_sb_csp_load(p, kbuf, size, load_flags); 693
694 kfree(kbuf); 694 err = snd_sb_csp_load(p, kbuf, size, load_flags);
695 } 695
696 kfree(kbuf);
696 return err; 697 return err;
697} 698}
698 699
diff --git a/sound/isa/wavefront/wavefront_fx.c b/sound/isa/wavefront/wavefront_fx.c
index dfc449a2194e..2bb1cee09255 100644
--- a/sound/isa/wavefront/wavefront_fx.c
+++ b/sound/isa/wavefront/wavefront_fx.c
@@ -34,14 +34,6 @@
34 34
35#define WAIT_IDLE 0xff 35#define WAIT_IDLE 0xff
36 36
37#ifdef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
38#include "yss225.c"
39static const struct firmware yss225_registers_firmware = {
40 .data = (u8 *)yss225_registers,
41 .size = sizeof yss225_registers
42};
43#endif
44
45static int 37static int
46wavefront_fx_idle (snd_wavefront_t *dev) 38wavefront_fx_idle (snd_wavefront_t *dev)
47 39
@@ -210,15 +202,11 @@ snd_wavefront_fx_ioctl (struct snd_hwdep *sdev, struct file *file,
210 "> 512 bytes to FX\n"); 202 "> 512 bytes to FX\n");
211 return -EIO; 203 return -EIO;
212 } 204 }
213 page_data = kmalloc(r.data[2] * sizeof(short), GFP_KERNEL); 205 page_data = memdup_user((unsigned char __user *)
214 if (!page_data) 206 r.data[3],
215 return -ENOMEM; 207 r.data[2] * sizeof(short));
216 if (copy_from_user (page_data, 208 if (IS_ERR(page_data))
217 (unsigned char __user *) r.data[3], 209 return PTR_ERR(page_data);
218 r.data[2] * sizeof(short))) {
219 kfree(page_data);
220 return -EFAULT;
221 }
222 pd = page_data; 210 pd = page_data;
223 } 211 }
224 212
@@ -260,16 +248,12 @@ snd_wavefront_fx_start (snd_wavefront_t *dev)
260 if (dev->fx_initialized) 248 if (dev->fx_initialized)
261 return 0; 249 return 0;
262 250
263#ifdef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
264 firmware = &yss225_registers_firmware;
265#else
266 err = request_firmware(&firmware, "yamaha/yss225_registers.bin", 251 err = request_firmware(&firmware, "yamaha/yss225_registers.bin",
267 dev->card->dev); 252 dev->card->dev);
268 if (err < 0) { 253 if (err < 0) {
269 err = -1; 254 err = -1;
270 goto out; 255 goto out;
271 } 256 }
272#endif
273 257
274 for (i = 0; i + 1 < firmware->size; i += 2) { 258 for (i = 0; i + 1 < firmware->size; i += 2) {
275 if (firmware->data[i] >= 8 && firmware->data[i] < 16) { 259 if (firmware->data[i] >= 8 && firmware->data[i] < 16) {
@@ -292,12 +276,8 @@ snd_wavefront_fx_start (snd_wavefront_t *dev)
292 err = 0; 276 err = 0;
293 277
294out: 278out:
295#ifndef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
296 release_firmware(firmware); 279 release_firmware(firmware);
297#endif
298 return err; 280 return err;
299} 281}
300 282
301#ifndef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
302MODULE_FIRMWARE("yamaha/yss225_registers.bin"); 283MODULE_FIRMWARE("yamaha/yss225_registers.bin");
303#endif
diff --git a/sound/isa/wavefront/wavefront_synth.c b/sound/isa/wavefront/wavefront_synth.c
index beb312cca75b..5d4ff48c4345 100644
--- a/sound/isa/wavefront/wavefront_synth.c
+++ b/sound/isa/wavefront/wavefront_synth.c
@@ -1664,12 +1664,11 @@ snd_wavefront_synth_ioctl (struct snd_hwdep *hw, struct file *file,
1664 break; 1664 break;
1665 1665
1666 case WFCTL_WFCMD: 1666 case WFCTL_WFCMD:
1667 wc = kmalloc(sizeof(*wc), GFP_KERNEL); 1667 wc = memdup_user(argp, sizeof(*wc));
1668 if (! wc) 1668 if (IS_ERR(wc))
1669 return -ENOMEM; 1669 return PTR_ERR(wc);
1670 if (copy_from_user (wc, argp, sizeof (*wc))) 1670
1671 err = -EFAULT; 1671 if (wavefront_synth_control (acard, wc) < 0)
1672 else if (wavefront_synth_control (acard, wc) < 0)
1673 err = -EIO; 1672 err = -EIO;
1674 else if (copy_to_user (argp, wc, sizeof (*wc))) 1673 else if (copy_to_user (argp, wc, sizeof (*wc)))
1675 err = -EFAULT; 1674 err = -EFAULT;
diff --git a/sound/isa/wavefront/yss225.c b/sound/isa/wavefront/yss225.c
deleted file mode 100644
index 9f6be3ff8ecf..000000000000
--- a/sound/isa/wavefront/yss225.c
+++ /dev/null
@@ -1,2739 +0,0 @@
1/*
2 * Copyright (c) 1998-2002 by Paul Davis <pbd@op.net>
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/* weird stuff, derived from port I/O tracing with dosemu */
20
21static const struct {
22 unsigned char addr;
23 unsigned char data;
24} yss225_registers[] __devinitdata = {
25/* Set all bits for all channels on the MOD unit to zero */
26{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
27{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
28{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
29{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
30{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
31{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
32{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
33{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
34{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
35{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
36{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
37{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
38{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
39{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
40{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
41{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
42{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
43{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
44{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
45{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
46{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
47{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
48{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
49{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
50{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
51{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
52{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
53{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
54{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
55{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
56{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
57{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
58{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
59{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
60{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
61{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
62{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
63{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
64{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
65{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
66{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
67{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
68{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
69{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
70{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
71{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
72{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
73{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
74{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
75{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
76{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
77{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
78{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
79{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
80{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
81{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
82{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
83{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
84{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
85{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
86{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
87{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
88{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
89{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
90{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
91{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
92{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
93{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
94{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
95{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
96{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
97{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
98{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
99{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
100{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
101{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
102{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
103{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
104{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
105{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
106{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
107{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
108{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
109{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
110{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
111{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
112{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
113{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
114{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
115{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
116{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
117{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
118{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
119{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
120{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
121{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
122{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
123{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
124{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
125{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
126{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
127{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
128{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
129{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
130{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
131{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
132{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
133{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
134{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
135{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
136{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
137{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
138{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
139{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
140{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
141{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
142{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
143{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
144{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
145{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
146{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
147{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
148{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
149{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
150{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
151{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
152{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
153{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
154{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
155{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
156{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
157{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
158{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
159{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
160{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
161{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
162{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
163{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
164{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
165{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
166{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
167{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
168{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
169{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
170{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
171{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
172{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
173{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
174{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
175{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
176{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
177{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
178{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
179{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
180{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
181{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
182{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
183{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
184{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
185{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
186{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
187{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
188{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
189{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
190{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
191{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
192{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
193{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
194{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
195{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
196{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
197{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
198{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
199{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
200{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
201{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
202{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
203{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
204{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
205{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
206{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
207{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
208{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
209{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
210{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
211{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
212{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
213{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
214{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
215{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
216{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
217{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
218{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
219{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
220{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
221{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
222{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
223{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
224{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
225{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
226{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
227{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
228{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
229{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
230{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
231{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
232{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
233{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
234{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
235{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
236{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
237{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
238{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
239{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
240{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
241{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
242{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
243{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
244{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
245{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
246{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
247{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
248{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
249{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
250{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
251{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
252{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
253{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
254{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
255{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
256{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
257{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
258{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
259{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
260{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
261{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
262{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
263{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
264{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
265{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
266
267/* XXX But why do this twice? */
268{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
269{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
270{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
271{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
272{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
273{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
274{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
275{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
276{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
277{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
278{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
279{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
280{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
281{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
282{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
283{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
284{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
285{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
286{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
287{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
288{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
289{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
290{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
291{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
292{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
293{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
294{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
295{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
296{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
297{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
298{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
299{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
300{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
301{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
302{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
303{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
304{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
305{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
306{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
307{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
308{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
309{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
310{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
311{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
312{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
313{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
314{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
315{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
316{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
317{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
318{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
319{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
320{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
321{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
322{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
323{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
324{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
325{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
326{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
327{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
328{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
329{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
330{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
331{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
332{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
333{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
334{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
335{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
336{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
337{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
338{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
339{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
340{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
341{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
342{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
343{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
344{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
345{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
346{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
347{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
348{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
349{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
350{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
351{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
352{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
353{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
354{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
355{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
356{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
357{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
358{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
359{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
360{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
361{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
362{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
363{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
364{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
365{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
366{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
367{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
368{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
369{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
370{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
371{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
372{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
373{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
374{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
375{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
376{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
377{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
378{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
379{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
380{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
381{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
382{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
383{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
384{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
385{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
386{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
387{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
388{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
389{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
390{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
391{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
392{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
393{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
394{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
395{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
396{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
397{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
398{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
399{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
400{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
401{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
402{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
403{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
404{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
405{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
406{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
407{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
408{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
409{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
410{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
411{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
412{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
413{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
414{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
415{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
416{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
417{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
418{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
419{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
420{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
421{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
422{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
423{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
424{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
425{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
426{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
427{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
428{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
429{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
430{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
431{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
432{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
433{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
434{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
435{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
436{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
437{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
438{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
439{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
440{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
441{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
442{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
443{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
444{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
445{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
446{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
447{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
448{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
449{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
450{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
451{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
452{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
453{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
454{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
455{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
456{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
457{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
458{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
459{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
460{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
461{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
462{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
463{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
464{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
465{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
466{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
467{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
468{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
469{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
470{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
471{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
472{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
473{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
474{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
475{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
476{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
477{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
478{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
479{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
480{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
481{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
482{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
483{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
484{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
485{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
486{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
487{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
488{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
489{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
490{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
491{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
492{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
493{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
494{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
495{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
496{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
497{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
498{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
499{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
500{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
501{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
502{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
503{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
504{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
505{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
506{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
507{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
508
509/* mute on */
510{ WAIT_IDLE }, { 0x8, 0x02 },
511
512{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 },
513{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 },
514{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 },
515{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 },
516{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 },
517{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 },
518{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 },
519{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 },
520{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 },
521
522/* either because of stupidity by TB's programmers, or because it
523 actually does something, rezero the MOD page. */
524{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
525{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
526{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
527{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
528{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
529{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
530{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
531{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
532{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
533{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
534{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
535{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
536{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
537{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
538{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
539{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
540{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
541{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
542{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
543{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
544{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
545{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
546{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
547{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
548{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
549{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
550{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
551{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
552{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
553{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
554{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
555{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
556{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
557{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
558{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
559{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
560{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
561{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
562{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
563{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
564{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
565{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
566{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
567{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
568{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
569{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
570{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
571{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
572{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
573{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
574{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
575{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
576{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
577{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
578{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
579{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
580{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
581{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
582{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
583{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
584{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
585{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
586{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
587{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
588{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
589{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
590{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
591{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
592{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
593{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
594{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
595{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
596{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
597{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
598{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
599{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
600{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
601{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
602{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
603{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
604{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
605{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
606{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
607{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
608{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
609{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
610{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
611{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
612{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
613{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
614{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
615{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
616{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
617{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
618{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
619{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
620{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
621{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
622{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
623{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
624{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
625{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
626{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
627{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
628{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
629{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
630{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
631{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
632{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
633{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
634{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
635{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
636{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
637{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
638{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
639{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
640{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
641{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
642{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
643{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
644{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
645{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
646{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
647{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
648{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
649{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
650{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
651{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
652{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
653{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
654{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
655{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
656{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
657{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
658{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
659{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
660{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
661{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
662{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
663{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
664{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
665{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
666{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
667{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
668{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
669{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
670{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
671{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
672{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
673{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
674{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
675{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
676{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
677{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
678{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
679{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
680{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
681{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
682{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
683{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
684{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
685{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
686{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
687{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
688{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
689{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
690{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
691{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
692{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
693{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
694{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
695{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
696{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
697{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
698{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
699{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
700{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
701{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
702{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
703{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
704{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
705{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
706{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
707{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
708{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
709{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
710{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
711{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
712{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
713{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
714{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
715{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
716{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
717{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
718{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
719{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
720{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
721{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
722{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
723{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
724{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
725{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
726{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
727{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
728{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
729{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
730{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
731{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
732{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
733{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
734{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
735{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
736{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
737{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
738{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
739{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
740{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
741{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
742{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
743{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
744{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
745{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
746{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
747{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
748{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
749{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
750{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
751{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
752{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
753{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
754{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
755{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
756{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
757{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
758{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
759{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
760{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
761{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
762{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
763{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
764
765/* load page zero */
766{ 0x9, 0x05 }, { 0xb, 0x00 }, { 0xa, 0x00 },
767
768{ 0xd, 0x01 }, { 0xc, 0x7c }, { WAIT_IDLE },
769{ 0xd, 0x00 }, { 0xc, 0x1e }, { WAIT_IDLE },
770{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
771{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
772{ 0xd, 0x00 }, { 0xc, 0xf5 }, { WAIT_IDLE },
773{ 0xd, 0x00 }, { 0xc, 0x11 }, { WAIT_IDLE },
774{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
775{ 0xd, 0x00 }, { 0xc, 0x32 }, { WAIT_IDLE },
776{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
777{ 0xd, 0x00 }, { 0xc, 0x13 }, { WAIT_IDLE },
778{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
779{ 0xd, 0x00 }, { 0xc, 0x14 }, { WAIT_IDLE },
780{ 0xd, 0x02 }, { 0xc, 0x76 }, { WAIT_IDLE },
781{ 0xd, 0x00 }, { 0xc, 0x60 }, { WAIT_IDLE },
782{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
783{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
784{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
785{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
786{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
787{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
788{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
789{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
790{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
791{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
792{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
793{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
794{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
795{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
796{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
797{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
798{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
799{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
800{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
801{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
802{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
803{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
804{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
805{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
806{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
807{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
808{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
809{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
810{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
811{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
812{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
813{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
814{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
815{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
816{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
817{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
818{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
819{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
820{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
821{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
822{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
823{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
824{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
825{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
826{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
827{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
828{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
829{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
830{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
831{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
832{ 0xd, 0x00 }, { 0xc, 0x18 }, { WAIT_IDLE },
833{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
834{ 0xd, 0x01 }, { 0xc, 0x1a }, { WAIT_IDLE },
835{ 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
836{ 0xd, 0x01 }, { 0xc, 0x40 }, { WAIT_IDLE },
837{ 0xd, 0x01 }, { 0xc, 0x17 }, { WAIT_IDLE },
838{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
839{ 0xd, 0x01 }, { 0xc, 0x80 }, { WAIT_IDLE },
840{ 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
841{ 0xd, 0x00 }, { 0xc, 0x10 }, { WAIT_IDLE },
842{ 0xd, 0x01 }, { 0xc, 0xa0 }, { WAIT_IDLE },
843{ 0xd, 0x03 }, { 0xc, 0xd1 }, { WAIT_IDLE },
844{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
845{ 0xd, 0x01 }, { 0xc, 0xf2 }, { WAIT_IDLE },
846{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
847{ 0xd, 0x00 }, { 0xc, 0x13 }, { WAIT_IDLE },
848{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
849{ 0xd, 0x00 }, { 0xc, 0xf4 }, { WAIT_IDLE },
850{ 0xd, 0x02 }, { 0xc, 0xe0 }, { WAIT_IDLE },
851{ 0xd, 0x00 }, { 0xc, 0x15 }, { WAIT_IDLE },
852{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
853{ 0xd, 0x00 }, { 0xc, 0x16 }, { WAIT_IDLE },
854{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
855{ 0xd, 0x00 }, { 0xc, 0x17 }, { WAIT_IDLE },
856{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
857{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
858{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
859{ 0xd, 0x00 }, { 0xc, 0x50 }, { WAIT_IDLE },
860{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
861{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
862{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
863{ 0xd, 0x00 }, { 0xc, 0x71 }, { WAIT_IDLE },
864{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
865{ 0xd, 0x00 }, { 0xc, 0x60 }, { WAIT_IDLE },
866{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
867{ 0xd, 0x00 }, { 0xc, 0x92 }, { WAIT_IDLE },
868{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
869{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
870{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
871{ 0xd, 0x00 }, { 0xc, 0xb3 }, { WAIT_IDLE },
872{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
873{ 0xd, 0x00 }, { 0xc, 0xa0 }, { WAIT_IDLE },
874{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
875{ 0xd, 0x00 }, { 0xc, 0xd4 }, { WAIT_IDLE },
876{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
877{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
878{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
879{ 0xd, 0x00 }, { 0xc, 0xf5 }, { WAIT_IDLE },
880{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
881{ 0xd, 0x00 }, { 0xc, 0x70 }, { WAIT_IDLE },
882{ 0xd, 0x00 }, { 0xc, 0xa0 }, { WAIT_IDLE },
883{ 0xd, 0x02 }, { 0xc, 0x11 }, { WAIT_IDLE },
884{ 0xd, 0x00 }, { 0xc, 0x16 }, { WAIT_IDLE },
885{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
886{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
887{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
888{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
889{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
890{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
891{ 0xd, 0x00 }, { 0xc, 0x10 }, { WAIT_IDLE },
892{ 0xd, 0x00 }, { 0xc, 0x17 }, { WAIT_IDLE },
893{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
894{ 0xd, 0x00 }, { 0xc, 0x1d }, { WAIT_IDLE },
895{ 0xd, 0x02 }, { 0xc, 0xdf }, { WAIT_IDLE },
896
897/* Now load page one */
898{ 0x9, 0x05 }, { 0xb, 0x01 }, { 0xa, 0x00 },
899
900{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
901{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
902{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
903{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
904{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
905{ 0xd, 0x00 }, { 0xc, 0x1f }, { WAIT_IDLE },
906{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
907{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
908{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
909{ 0xd, 0x03 }, { 0xc, 0xd8 }, { WAIT_IDLE },
910{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
911{ 0xd, 0x02 }, { 0xc, 0x20 }, { WAIT_IDLE },
912{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
913{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
914{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
915{ 0xd, 0x00 }, { 0xc, 0x18 }, { WAIT_IDLE },
916{ 0xd, 0x01 }, { 0xc, 0xc0 }, { WAIT_IDLE },
917{ 0xd, 0x01 }, { 0xc, 0xfa }, { WAIT_IDLE },
918{ 0xd, 0x00 }, { 0xc, 0x1a }, { WAIT_IDLE },
919{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
920{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
921{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
922{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
923{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
924{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
925{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
926{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
927{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
928{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
929{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
930{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
931{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
932{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
933{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
934{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
935{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
936{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
937{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
938{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
939{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
940{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
941{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
942{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
943{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
944{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
945{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
946{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
947{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
948{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
949{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
950{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
951{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
952{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
953{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
954{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
955{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
956{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
957{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
958{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
959{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
960{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
961{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
962{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
963{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
964{ 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
965{ 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
966{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
967{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
968{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
969{ 0xd, 0x02 }, { 0xc, 0xc0 }, { WAIT_IDLE },
970{ 0xd, 0x02 }, { 0xc, 0x80 }, { WAIT_IDLE },
971{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
972{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
973{ 0xd, 0x02 }, { 0xc, 0xa0 }, { WAIT_IDLE },
974{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
975{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
976{ 0xd, 0x02 }, { 0xc, 0xd7 }, { WAIT_IDLE },
977{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
978{ 0xd, 0x02 }, { 0xc, 0xf7 }, { WAIT_IDLE },
979{ 0xd, 0x03 }, { 0xc, 0x20 }, { WAIT_IDLE },
980{ 0xd, 0x03 }, { 0xc, 0x00 }, { WAIT_IDLE },
981{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
982{ 0xd, 0x00 }, { 0xc, 0x1c }, { WAIT_IDLE },
983{ 0xd, 0x03 }, { 0xc, 0x3c }, { WAIT_IDLE },
984{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
985{ 0xd, 0x03 }, { 0xc, 0x3f }, { WAIT_IDLE },
986{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
987{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
988{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
989{ 0xd, 0x03 }, { 0xc, 0xdf }, { WAIT_IDLE },
990{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
991{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
992{ 0xd, 0x03 }, { 0xc, 0x5d }, { WAIT_IDLE },
993{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
994{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
995{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
996{ 0xd, 0x03 }, { 0xc, 0x7d }, { WAIT_IDLE },
997{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
998{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
999{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1000{ 0xd, 0x03 }, { 0xc, 0x9e }, { WAIT_IDLE },
1001{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1002{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
1003{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1004{ 0xd, 0x03 }, { 0xc, 0xbe }, { WAIT_IDLE },
1005{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1006{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
1007{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1008{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1009{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1010{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1011{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
1012{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1013{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1014{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1015{ 0xd, 0x02 }, { 0xc, 0xdb }, { WAIT_IDLE },
1016{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1017{ 0xd, 0x02 }, { 0xc, 0xdb }, { WAIT_IDLE },
1018{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1019{ 0xd, 0x02 }, { 0xc, 0xe0 }, { WAIT_IDLE },
1020{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1021{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
1022{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1023{ 0xd, 0x02 }, { 0xc, 0xc0 }, { WAIT_IDLE },
1024{ 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
1025{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
1026{ 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
1027{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
1028
1029{ 0x9, 0x05 }, { 0xb, 0x02 }, { 0xa, 0x00 },
1030
1031{ 0xc, 0xc4 }, { WAIT_IDLE },
1032{ 0xc, 0x00 }, { WAIT_IDLE },
1033{ 0xc, 0x44 }, { WAIT_IDLE },
1034{ 0xc, 0x07 }, { WAIT_IDLE },
1035{ 0xc, 0x44 }, { WAIT_IDLE },
1036{ 0xc, 0x00 }, { WAIT_IDLE },
1037{ 0xc, 0x40 }, { WAIT_IDLE },
1038{ 0xc, 0x25 }, { WAIT_IDLE },
1039{ 0xc, 0x01 }, { WAIT_IDLE },
1040{ 0xc, 0x06 }, { WAIT_IDLE },
1041{ 0xc, 0xc4 }, { WAIT_IDLE },
1042{ 0xc, 0x07 }, { WAIT_IDLE },
1043{ 0xc, 0x40 }, { WAIT_IDLE },
1044{ 0xc, 0x25 }, { WAIT_IDLE },
1045{ 0xc, 0x01 }, { WAIT_IDLE },
1046{ 0xc, 0x00 }, { WAIT_IDLE },
1047{ 0xc, 0x46 }, { WAIT_IDLE },
1048{ 0xc, 0x46 }, { WAIT_IDLE },
1049{ 0xc, 0x00 }, { WAIT_IDLE },
1050{ 0xc, 0x00 }, { WAIT_IDLE },
1051{ 0xc, 0x00 }, { WAIT_IDLE },
1052{ 0xc, 0x00 }, { WAIT_IDLE },
1053{ 0xc, 0x00 }, { WAIT_IDLE },
1054{ 0xc, 0x00 }, { WAIT_IDLE },
1055{ 0xc, 0x00 }, { WAIT_IDLE },
1056{ 0xc, 0x00 }, { WAIT_IDLE },
1057{ 0xc, 0x00 }, { WAIT_IDLE },
1058{ 0xc, 0x00 }, { WAIT_IDLE },
1059{ 0xc, 0x00 }, { WAIT_IDLE },
1060{ 0xc, 0x00 }, { WAIT_IDLE },
1061{ 0xc, 0x00 }, { WAIT_IDLE },
1062{ 0xc, 0x00 }, { WAIT_IDLE },
1063{ 0xc, 0x00 }, { WAIT_IDLE },
1064{ 0xc, 0x00 }, { WAIT_IDLE },
1065{ 0xc, 0x00 }, { WAIT_IDLE },
1066{ 0xc, 0x00 }, { WAIT_IDLE },
1067{ 0xc, 0x00 }, { WAIT_IDLE },
1068{ 0xc, 0x00 }, { WAIT_IDLE },
1069{ 0xc, 0x00 }, { WAIT_IDLE },
1070{ 0xc, 0x00 }, { WAIT_IDLE },
1071{ 0xc, 0x00 }, { WAIT_IDLE },
1072{ 0xc, 0x00 }, { WAIT_IDLE },
1073{ 0xc, 0x00 }, { WAIT_IDLE },
1074{ 0xc, 0x00 }, { WAIT_IDLE },
1075{ 0xc, 0x00 }, { WAIT_IDLE },
1076{ 0xc, 0x00 }, { WAIT_IDLE },
1077{ 0xc, 0x00 }, { WAIT_IDLE },
1078{ 0xc, 0x00 }, { WAIT_IDLE },
1079{ 0xc, 0x00 }, { WAIT_IDLE },
1080{ 0xc, 0x00 }, { WAIT_IDLE },
1081{ 0xc, 0x00 }, { WAIT_IDLE },
1082{ 0xc, 0x00 }, { WAIT_IDLE },
1083{ 0xc, 0x00 }, { WAIT_IDLE },
1084{ 0xc, 0x00 }, { WAIT_IDLE },
1085{ 0xc, 0x00 }, { WAIT_IDLE },
1086{ 0xc, 0x00 }, { WAIT_IDLE },
1087{ 0xc, 0x00 }, { WAIT_IDLE },
1088{ 0xc, 0x00 }, { WAIT_IDLE },
1089{ 0xc, 0x00 }, { WAIT_IDLE },
1090{ 0xc, 0x00 }, { WAIT_IDLE },
1091{ 0xc, 0x00 }, { WAIT_IDLE },
1092{ 0xc, 0x00 }, { WAIT_IDLE },
1093{ 0xc, 0x00 }, { WAIT_IDLE },
1094{ 0xc, 0x00 }, { WAIT_IDLE },
1095{ 0xc, 0x46 }, { WAIT_IDLE },
1096{ 0xc, 0x07 }, { WAIT_IDLE },
1097{ 0xc, 0x05 }, { WAIT_IDLE },
1098{ 0xc, 0x05 }, { WAIT_IDLE },
1099{ 0xc, 0x05 }, { WAIT_IDLE },
1100{ 0xc, 0x04 }, { WAIT_IDLE },
1101{ 0xc, 0x07 }, { WAIT_IDLE },
1102{ 0xc, 0x05 }, { WAIT_IDLE },
1103{ 0xc, 0x04 }, { WAIT_IDLE },
1104{ 0xc, 0x07 }, { WAIT_IDLE },
1105{ 0xc, 0x05 }, { WAIT_IDLE },
1106{ 0xc, 0x44 }, { WAIT_IDLE },
1107{ 0xc, 0x46 }, { WAIT_IDLE },
1108{ 0xc, 0x44 }, { WAIT_IDLE },
1109{ 0xc, 0x46 }, { WAIT_IDLE },
1110{ 0xc, 0x46 }, { WAIT_IDLE },
1111{ 0xc, 0x07 }, { WAIT_IDLE },
1112{ 0xc, 0x05 }, { WAIT_IDLE },
1113{ 0xc, 0x44 }, { WAIT_IDLE },
1114{ 0xc, 0x46 }, { WAIT_IDLE },
1115{ 0xc, 0x05 }, { WAIT_IDLE },
1116{ 0xc, 0x46 }, { WAIT_IDLE },
1117{ 0xc, 0x05 }, { WAIT_IDLE },
1118{ 0xc, 0x46 }, { WAIT_IDLE },
1119{ 0xc, 0x05 }, { WAIT_IDLE },
1120{ 0xc, 0x46 }, { WAIT_IDLE },
1121{ 0xc, 0x05 }, { WAIT_IDLE },
1122{ 0xc, 0x44 }, { WAIT_IDLE },
1123{ 0xc, 0x46 }, { WAIT_IDLE },
1124{ 0xc, 0x05 }, { WAIT_IDLE },
1125{ 0xc, 0x07 }, { WAIT_IDLE },
1126{ 0xc, 0x44 }, { WAIT_IDLE },
1127{ 0xc, 0x46 }, { WAIT_IDLE },
1128{ 0xc, 0x05 }, { WAIT_IDLE },
1129{ 0xc, 0x07 }, { WAIT_IDLE },
1130{ 0xc, 0x44 }, { WAIT_IDLE },
1131{ 0xc, 0x46 }, { WAIT_IDLE },
1132{ 0xc, 0x05 }, { WAIT_IDLE },
1133{ 0xc, 0x07 }, { WAIT_IDLE },
1134{ 0xc, 0x44 }, { WAIT_IDLE },
1135{ 0xc, 0x46 }, { WAIT_IDLE },
1136{ 0xc, 0x05 }, { WAIT_IDLE },
1137{ 0xc, 0x07 }, { WAIT_IDLE },
1138{ 0xc, 0x44 }, { WAIT_IDLE },
1139{ 0xc, 0x05 }, { WAIT_IDLE },
1140{ 0xc, 0x05 }, { WAIT_IDLE },
1141{ 0xc, 0x05 }, { WAIT_IDLE },
1142{ 0xc, 0x44 }, { WAIT_IDLE },
1143{ 0xc, 0x05 }, { WAIT_IDLE },
1144{ 0xc, 0x05 }, { WAIT_IDLE },
1145{ 0xc, 0x05 }, { WAIT_IDLE },
1146{ 0xc, 0x46 }, { WAIT_IDLE },
1147{ 0xc, 0x05 }, { WAIT_IDLE },
1148{ 0xc, 0x46 }, { WAIT_IDLE },
1149{ 0xc, 0x05 }, { WAIT_IDLE },
1150{ 0xc, 0x46 }, { WAIT_IDLE },
1151{ 0xc, 0x05 }, { WAIT_IDLE },
1152{ 0xc, 0x46 }, { WAIT_IDLE },
1153{ 0xc, 0x05 }, { WAIT_IDLE },
1154{ 0xc, 0x46 }, { WAIT_IDLE },
1155{ 0xc, 0x07 }, { WAIT_IDLE },
1156{ 0xc, 0x46 }, { WAIT_IDLE },
1157{ 0xc, 0x07 }, { WAIT_IDLE },
1158{ 0xc, 0x44 }, { WAIT_IDLE },
1159
1160{ 0x9, 0x05 }, { 0xb, 0x03 }, { 0xa, 0x00 },
1161
1162{ 0xc, 0x07 }, { WAIT_IDLE },
1163{ 0xc, 0x40 }, { WAIT_IDLE },
1164{ 0xc, 0x00 }, { WAIT_IDLE },
1165{ 0xc, 0x00 }, { WAIT_IDLE },
1166{ 0xc, 0x00 }, { WAIT_IDLE },
1167{ 0xc, 0x47 }, { WAIT_IDLE },
1168{ 0xc, 0x00 }, { WAIT_IDLE },
1169{ 0xc, 0x40 }, { WAIT_IDLE },
1170{ 0xc, 0x00 }, { WAIT_IDLE },
1171{ 0xc, 0x40 }, { WAIT_IDLE },
1172{ 0xc, 0x06 }, { WAIT_IDLE },
1173{ 0xc, 0x40 }, { WAIT_IDLE },
1174{ 0xc, 0x00 }, { WAIT_IDLE },
1175{ 0xc, 0x00 }, { WAIT_IDLE },
1176{ 0xc, 0x00 }, { WAIT_IDLE },
1177{ 0xc, 0x00 }, { WAIT_IDLE },
1178{ 0xc, 0x00 }, { WAIT_IDLE },
1179{ 0xc, 0x00 }, { WAIT_IDLE },
1180{ 0xc, 0x00 }, { WAIT_IDLE },
1181{ 0xc, 0x00 }, { WAIT_IDLE },
1182{ 0xc, 0x00 }, { WAIT_IDLE },
1183{ 0xc, 0x00 }, { WAIT_IDLE },
1184{ 0xc, 0x00 }, { WAIT_IDLE },
1185{ 0xc, 0x00 }, { WAIT_IDLE },
1186{ 0xc, 0x00 }, { WAIT_IDLE },
1187{ 0xc, 0x00 }, { WAIT_IDLE },
1188{ 0xc, 0x00 }, { WAIT_IDLE },
1189{ 0xc, 0x00 }, { WAIT_IDLE },
1190{ 0xc, 0x00 }, { WAIT_IDLE },
1191{ 0xc, 0x00 }, { WAIT_IDLE },
1192{ 0xc, 0x00 }, { WAIT_IDLE },
1193{ 0xc, 0x00 }, { WAIT_IDLE },
1194{ 0xc, 0x00 }, { WAIT_IDLE },
1195{ 0xc, 0x00 }, { WAIT_IDLE },
1196{ 0xc, 0x00 }, { WAIT_IDLE },
1197{ 0xc, 0x00 }, { WAIT_IDLE },
1198{ 0xc, 0x00 }, { WAIT_IDLE },
1199{ 0xc, 0x00 }, { WAIT_IDLE },
1200{ 0xc, 0x00 }, { WAIT_IDLE },
1201{ 0xc, 0x00 }, { WAIT_IDLE },
1202{ 0xc, 0x00 }, { WAIT_IDLE },
1203{ 0xc, 0x00 }, { WAIT_IDLE },
1204{ 0xc, 0x00 }, { WAIT_IDLE },
1205{ 0xc, 0x00 }, { WAIT_IDLE },
1206{ 0xc, 0x00 }, { WAIT_IDLE },
1207{ 0xc, 0x00 }, { WAIT_IDLE },
1208{ 0xc, 0x00 }, { WAIT_IDLE },
1209{ 0xc, 0x00 }, { WAIT_IDLE },
1210{ 0xc, 0x00 }, { WAIT_IDLE },
1211{ 0xc, 0x00 }, { WAIT_IDLE },
1212{ 0xc, 0x00 }, { WAIT_IDLE },
1213{ 0xc, 0x00 }, { WAIT_IDLE },
1214{ 0xc, 0x00 }, { WAIT_IDLE },
1215{ 0xc, 0x00 }, { WAIT_IDLE },
1216{ 0xc, 0x00 }, { WAIT_IDLE },
1217{ 0xc, 0x00 }, { WAIT_IDLE },
1218{ 0xc, 0x00 }, { WAIT_IDLE },
1219{ 0xc, 0x00 }, { WAIT_IDLE },
1220{ 0xc, 0x00 }, { WAIT_IDLE },
1221{ 0xc, 0x00 }, { WAIT_IDLE },
1222{ 0xc, 0x00 }, { WAIT_IDLE },
1223{ 0xc, 0x00 }, { WAIT_IDLE },
1224{ 0xc, 0x00 }, { WAIT_IDLE },
1225{ 0xc, 0x00 }, { WAIT_IDLE },
1226{ 0xc, 0x80 }, { WAIT_IDLE },
1227{ 0xc, 0x80 }, { WAIT_IDLE },
1228{ 0xc, 0xc0 }, { WAIT_IDLE },
1229{ 0xc, 0x00 }, { WAIT_IDLE },
1230{ 0xc, 0x00 }, { WAIT_IDLE },
1231{ 0xc, 0x40 }, { WAIT_IDLE },
1232{ 0xc, 0x00 }, { WAIT_IDLE },
1233{ 0xc, 0x00 }, { WAIT_IDLE },
1234{ 0xc, 0x00 }, { WAIT_IDLE },
1235{ 0xc, 0x40 }, { WAIT_IDLE },
1236{ 0xc, 0x00 }, { WAIT_IDLE },
1237{ 0xc, 0x40 }, { WAIT_IDLE },
1238{ 0xc, 0x00 }, { WAIT_IDLE },
1239{ 0xc, 0x60 }, { WAIT_IDLE },
1240{ 0xc, 0x00 }, { WAIT_IDLE },
1241{ 0xc, 0x70 }, { WAIT_IDLE },
1242{ 0xc, 0x00 }, { WAIT_IDLE },
1243{ 0xc, 0x40 }, { WAIT_IDLE },
1244{ 0xc, 0x00 }, { WAIT_IDLE },
1245{ 0xc, 0x40 }, { WAIT_IDLE },
1246{ 0xc, 0x00 }, { WAIT_IDLE },
1247{ 0xc, 0x42 }, { WAIT_IDLE },
1248{ 0xc, 0x00 }, { WAIT_IDLE },
1249{ 0xc, 0x40 }, { WAIT_IDLE },
1250{ 0xc, 0x00 }, { WAIT_IDLE },
1251{ 0xc, 0x02 }, { WAIT_IDLE },
1252{ 0xc, 0x00 }, { WAIT_IDLE },
1253{ 0xc, 0x40 }, { WAIT_IDLE },
1254{ 0xc, 0x00 }, { WAIT_IDLE },
1255{ 0xc, 0x00 }, { WAIT_IDLE },
1256{ 0xc, 0x00 }, { WAIT_IDLE },
1257{ 0xc, 0x40 }, { WAIT_IDLE },
1258{ 0xc, 0x00 }, { WAIT_IDLE },
1259{ 0xc, 0x00 }, { WAIT_IDLE },
1260{ 0xc, 0x00 }, { WAIT_IDLE },
1261{ 0xc, 0x40 }, { WAIT_IDLE },
1262{ 0xc, 0x00 }, { WAIT_IDLE },
1263{ 0xc, 0x00 }, { WAIT_IDLE },
1264{ 0xc, 0x00 }, { WAIT_IDLE },
1265{ 0xc, 0x40 }, { WAIT_IDLE },
1266{ 0xc, 0x00 }, { WAIT_IDLE },
1267{ 0xc, 0x00 }, { WAIT_IDLE },
1268{ 0xc, 0x00 }, { WAIT_IDLE },
1269{ 0xc, 0x40 }, { WAIT_IDLE },
1270{ 0xc, 0x00 }, { WAIT_IDLE },
1271{ 0xc, 0x00 }, { WAIT_IDLE },
1272{ 0xc, 0x00 }, { WAIT_IDLE },
1273{ 0xc, 0x42 }, { WAIT_IDLE },
1274{ 0xc, 0x00 }, { WAIT_IDLE },
1275{ 0xc, 0x40 }, { WAIT_IDLE },
1276{ 0xc, 0x00 }, { WAIT_IDLE },
1277{ 0xc, 0x42 }, { WAIT_IDLE },
1278{ 0xc, 0x00 }, { WAIT_IDLE },
1279{ 0xc, 0x02 }, { WAIT_IDLE },
1280{ 0xc, 0x00 }, { WAIT_IDLE },
1281{ 0xc, 0x02 }, { WAIT_IDLE },
1282{ 0xc, 0x00 }, { WAIT_IDLE },
1283{ 0xc, 0x02 }, { WAIT_IDLE },
1284{ 0xc, 0x00 }, { WAIT_IDLE },
1285{ 0xc, 0x42 }, { WAIT_IDLE },
1286{ 0xc, 0x00 }, { WAIT_IDLE },
1287{ 0xc, 0xc0 }, { WAIT_IDLE },
1288{ 0xc, 0x00 }, { WAIT_IDLE },
1289{ 0xc, 0x40 }, { WAIT_IDLE },
1290
1291{ 0x9, 0x05 }, { 0xb, 0x04 }, { 0xa, 0x00 },
1292
1293{ 0xc, 0x63 }, { WAIT_IDLE },
1294{ 0xc, 0x03 }, { WAIT_IDLE },
1295{ 0xc, 0x26 }, { WAIT_IDLE },
1296{ 0xc, 0x02 }, { WAIT_IDLE },
1297{ 0xc, 0x2c }, { WAIT_IDLE },
1298{ 0xc, 0x00 }, { WAIT_IDLE },
1299{ 0xc, 0x24 }, { WAIT_IDLE },
1300{ 0xc, 0x00 }, { WAIT_IDLE },
1301{ 0xc, 0x2e }, { WAIT_IDLE },
1302{ 0xc, 0x02 }, { WAIT_IDLE },
1303{ 0xc, 0x02 }, { WAIT_IDLE },
1304{ 0xc, 0x02 }, { WAIT_IDLE },
1305{ 0xc, 0x00 }, { WAIT_IDLE },
1306{ 0xc, 0x00 }, { WAIT_IDLE },
1307{ 0xc, 0x00 }, { WAIT_IDLE },
1308{ 0xc, 0x00 }, { WAIT_IDLE },
1309{ 0xc, 0x00 }, { WAIT_IDLE },
1310{ 0xc, 0x00 }, { WAIT_IDLE },
1311{ 0xc, 0x00 }, { WAIT_IDLE },
1312{ 0xc, 0x00 }, { WAIT_IDLE },
1313{ 0xc, 0x00 }, { WAIT_IDLE },
1314{ 0xc, 0x00 }, { WAIT_IDLE },
1315{ 0xc, 0x00 }, { WAIT_IDLE },
1316{ 0xc, 0x00 }, { WAIT_IDLE },
1317{ 0xc, 0x00 }, { WAIT_IDLE },
1318{ 0xc, 0x00 }, { WAIT_IDLE },
1319{ 0xc, 0x00 }, { WAIT_IDLE },
1320{ 0xc, 0x00 }, { WAIT_IDLE },
1321{ 0xc, 0x00 }, { WAIT_IDLE },
1322{ 0xc, 0x00 }, { WAIT_IDLE },
1323{ 0xc, 0x00 }, { WAIT_IDLE },
1324{ 0xc, 0x00 }, { WAIT_IDLE },
1325{ 0xc, 0x00 }, { WAIT_IDLE },
1326{ 0xc, 0x00 }, { WAIT_IDLE },
1327{ 0xc, 0x00 }, { WAIT_IDLE },
1328{ 0xc, 0x00 }, { WAIT_IDLE },
1329{ 0xc, 0x00 }, { WAIT_IDLE },
1330{ 0xc, 0x00 }, { WAIT_IDLE },
1331{ 0xc, 0x00 }, { WAIT_IDLE },
1332{ 0xc, 0x00 }, { WAIT_IDLE },
1333{ 0xc, 0x00 }, { WAIT_IDLE },
1334{ 0xc, 0x00 }, { WAIT_IDLE },
1335{ 0xc, 0x00 }, { WAIT_IDLE },
1336{ 0xc, 0x00 }, { WAIT_IDLE },
1337{ 0xc, 0x00 }, { WAIT_IDLE },
1338{ 0xc, 0x00 }, { WAIT_IDLE },
1339{ 0xc, 0x00 }, { WAIT_IDLE },
1340{ 0xc, 0x00 }, { WAIT_IDLE },
1341{ 0xc, 0x00 }, { WAIT_IDLE },
1342{ 0xc, 0x00 }, { WAIT_IDLE },
1343{ 0xc, 0x00 }, { WAIT_IDLE },
1344{ 0xc, 0x00 }, { WAIT_IDLE },
1345{ 0xc, 0x00 }, { WAIT_IDLE },
1346{ 0xc, 0x00 }, { WAIT_IDLE },
1347{ 0xc, 0x00 }, { WAIT_IDLE },
1348{ 0xc, 0x00 }, { WAIT_IDLE },
1349{ 0xc, 0x00 }, { WAIT_IDLE },
1350{ 0xc, 0x00 }, { WAIT_IDLE },
1351{ 0xc, 0x00 }, { WAIT_IDLE },
1352{ 0xc, 0x00 }, { WAIT_IDLE },
1353{ 0xc, 0x00 }, { WAIT_IDLE },
1354{ 0xc, 0x00 }, { WAIT_IDLE },
1355{ 0xc, 0x00 }, { WAIT_IDLE },
1356{ 0xc, 0x00 }, { WAIT_IDLE },
1357{ 0xc, 0x00 }, { WAIT_IDLE },
1358{ 0xc, 0x01 }, { WAIT_IDLE },
1359{ 0xc, 0x20 }, { WAIT_IDLE },
1360{ 0xc, 0x00 }, { WAIT_IDLE },
1361{ 0xc, 0x60 }, { WAIT_IDLE },
1362{ 0xc, 0x00 }, { WAIT_IDLE },
1363{ 0xc, 0x20 }, { WAIT_IDLE },
1364{ 0xc, 0x00 }, { WAIT_IDLE },
1365{ 0xc, 0x20 }, { WAIT_IDLE },
1366{ 0xc, 0x00 }, { WAIT_IDLE },
1367{ 0xc, 0x20 }, { WAIT_IDLE },
1368{ 0xc, 0x00 }, { WAIT_IDLE },
1369{ 0xc, 0x20 }, { WAIT_IDLE },
1370{ 0xc, 0x00 }, { WAIT_IDLE },
1371{ 0xc, 0x20 }, { WAIT_IDLE },
1372{ 0xc, 0x00 }, { WAIT_IDLE },
1373{ 0xc, 0x20 }, { WAIT_IDLE },
1374{ 0xc, 0x00 }, { WAIT_IDLE },
1375{ 0xc, 0x20 }, { WAIT_IDLE },
1376{ 0xc, 0x00 }, { WAIT_IDLE },
1377{ 0xc, 0x20 }, { WAIT_IDLE },
1378{ 0xc, 0x00 }, { WAIT_IDLE },
1379{ 0xc, 0x60 }, { WAIT_IDLE },
1380{ 0xc, 0x00 }, { WAIT_IDLE },
1381{ 0xc, 0x20 }, { WAIT_IDLE },
1382{ 0xc, 0x00 }, { WAIT_IDLE },
1383{ 0xc, 0x60 }, { WAIT_IDLE },
1384{ 0xc, 0x00 }, { WAIT_IDLE },
1385{ 0xc, 0x20 }, { WAIT_IDLE },
1386{ 0xc, 0x00 }, { WAIT_IDLE },
1387{ 0xc, 0x60 }, { WAIT_IDLE },
1388{ 0xc, 0x00 }, { WAIT_IDLE },
1389{ 0xc, 0x20 }, { WAIT_IDLE },
1390{ 0xc, 0x00 }, { WAIT_IDLE },
1391{ 0xc, 0x60 }, { WAIT_IDLE },
1392{ 0xc, 0x00 }, { WAIT_IDLE },
1393{ 0xc, 0x20 }, { WAIT_IDLE },
1394{ 0xc, 0x00 }, { WAIT_IDLE },
1395{ 0xc, 0x60 }, { WAIT_IDLE },
1396{ 0xc, 0x00 }, { WAIT_IDLE },
1397{ 0xc, 0x20 }, { WAIT_IDLE },
1398{ 0xc, 0x00 }, { WAIT_IDLE },
1399{ 0xc, 0x60 }, { WAIT_IDLE },
1400{ 0xc, 0x00 }, { WAIT_IDLE },
1401{ 0xc, 0x20 }, { WAIT_IDLE },
1402{ 0xc, 0x00 }, { WAIT_IDLE },
1403{ 0xc, 0x20 }, { WAIT_IDLE },
1404{ 0xc, 0x00 }, { WAIT_IDLE },
1405{ 0xc, 0x22 }, { WAIT_IDLE },
1406{ 0xc, 0x02 }, { WAIT_IDLE },
1407{ 0xc, 0x22 }, { WAIT_IDLE },
1408{ 0xc, 0x02 }, { WAIT_IDLE },
1409{ 0xc, 0x20 }, { WAIT_IDLE },
1410{ 0xc, 0x00 }, { WAIT_IDLE },
1411{ 0xc, 0x60 }, { WAIT_IDLE },
1412{ 0xc, 0x00 }, { WAIT_IDLE },
1413{ 0xc, 0x22 }, { WAIT_IDLE },
1414{ 0xc, 0x02 }, { WAIT_IDLE },
1415{ 0xc, 0x62 }, { WAIT_IDLE },
1416{ 0xc, 0x02 }, { WAIT_IDLE },
1417{ 0xc, 0x20 }, { WAIT_IDLE },
1418{ 0xc, 0x01 }, { WAIT_IDLE },
1419{ 0xc, 0x21 }, { WAIT_IDLE },
1420{ 0xc, 0x01 }, { WAIT_IDLE },
1421
1422/* Load memory area (page six) */
1423{ 0x9, 0x01 }, { 0xb, 0x06 },
1424
1425{ 0xa, 0x00 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1426{ 0xa, 0x02 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1427{ 0xa, 0x04 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1428{ 0xa, 0x06 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1429{ 0xa, 0x08 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1430{ 0xa, 0x0a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1431{ 0xa, 0x0c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1432{ 0xa, 0x0e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1433{ 0xa, 0x10 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1434{ 0xa, 0x12 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1435{ 0xa, 0x14 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1436{ 0xa, 0x16 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1437{ 0xa, 0x18 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1438{ 0xa, 0x1a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1439{ 0xa, 0x1c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1440{ 0xa, 0x1e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1441{ 0xa, 0x20 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1442{ 0xa, 0x22 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1443{ 0xa, 0x24 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1444{ 0xa, 0x26 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1445{ 0xa, 0x28 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1446{ 0xa, 0x2a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1447{ 0xa, 0x2c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1448{ 0xa, 0x2e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1449{ 0xa, 0x30 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1450{ 0xa, 0x32 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1451{ 0xa, 0x34 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1452{ 0xa, 0x36 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1453{ 0xa, 0x38 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1454{ 0xa, 0x3a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1455{ 0xa, 0x3c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1456{ 0xa, 0x3e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1457{ 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1458{ 0xa, 0x42 }, { 0xd, 0x03 }, { 0xc, 0x00 }, { WAIT_IDLE },
1459{ 0xa, 0x44 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
1460{ 0xa, 0x46 }, { 0xd, 0x0a }, { 0xc, 0x21 }, { WAIT_IDLE },
1461{ 0xa, 0x48 }, { 0xd, 0x0d }, { 0xc, 0x23 }, { WAIT_IDLE },
1462{ 0xa, 0x4a }, { 0xd, 0x23 }, { 0xc, 0x1b }, { WAIT_IDLE },
1463{ 0xa, 0x4c }, { 0xd, 0x37 }, { 0xc, 0x8f }, { WAIT_IDLE },
1464{ 0xa, 0x4e }, { 0xd, 0x45 }, { 0xc, 0x77 }, { WAIT_IDLE },
1465{ 0xa, 0x50 }, { 0xd, 0x52 }, { 0xc, 0xe2 }, { WAIT_IDLE },
1466{ 0xa, 0x52 }, { 0xd, 0x1c }, { 0xc, 0x92 }, { WAIT_IDLE },
1467{ 0xa, 0x54 }, { 0xd, 0x1c }, { 0xc, 0x52 }, { WAIT_IDLE },
1468{ 0xa, 0x56 }, { 0xd, 0x07 }, { 0xc, 0x00 }, { WAIT_IDLE },
1469{ 0xa, 0x58 }, { 0xd, 0x2f }, { 0xc, 0xc6 }, { WAIT_IDLE },
1470{ 0xa, 0x5a }, { 0xd, 0x0b }, { 0xc, 0x00 }, { WAIT_IDLE },
1471{ 0xa, 0x5c }, { 0xd, 0x30 }, { 0xc, 0x06 }, { WAIT_IDLE },
1472{ 0xa, 0x5e }, { 0xd, 0x17 }, { 0xc, 0x00 }, { WAIT_IDLE },
1473{ 0xa, 0x60 }, { 0xd, 0x3d }, { 0xc, 0xda }, { WAIT_IDLE },
1474{ 0xa, 0x62 }, { 0xd, 0x29 }, { 0xc, 0x00 }, { WAIT_IDLE },
1475{ 0xa, 0x64 }, { 0xd, 0x3e }, { 0xc, 0x41 }, { WAIT_IDLE },
1476{ 0xa, 0x66 }, { 0xd, 0x39 }, { 0xc, 0x00 }, { WAIT_IDLE },
1477{ 0xa, 0x68 }, { 0xd, 0x4c }, { 0xc, 0x48 }, { WAIT_IDLE },
1478{ 0xa, 0x6a }, { 0xd, 0x49 }, { 0xc, 0x00 }, { WAIT_IDLE },
1479{ 0xa, 0x6c }, { 0xd, 0x4c }, { 0xc, 0x6c }, { WAIT_IDLE },
1480{ 0xa, 0x6e }, { 0xd, 0x11 }, { 0xc, 0xd2 }, { WAIT_IDLE },
1481{ 0xa, 0x70 }, { 0xd, 0x16 }, { 0xc, 0x0c }, { WAIT_IDLE },
1482{ 0xa, 0x72 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1483{ 0xa, 0x74 }, { 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
1484{ 0xa, 0x76 }, { 0xd, 0x0f }, { 0xc, 0x00 }, { WAIT_IDLE },
1485{ 0xa, 0x78 }, { 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
1486{ 0xa, 0x7a }, { 0xd, 0x13 }, { 0xc, 0x00 }, { WAIT_IDLE },
1487{ 0xa, 0x7c }, { 0xd, 0x80 }, { 0xc, 0x00 }, { WAIT_IDLE },
1488{ 0xa, 0x7e }, { 0xd, 0x80 }, { 0xc, 0x80 }, { WAIT_IDLE },
1489
1490{ 0x9, 0x05 }, { 0xb, 0x07 }, { 0xa, 0x00 },
1491
1492{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1493{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1494{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1495{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1496{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
1497{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1498{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1499{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1500{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1501{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1502{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1503{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1504{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1505{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1506{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1507{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1508{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1509{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1510{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1511{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1512{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1513{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1514{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1515{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1516{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1517{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1518{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1519{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1520{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1521{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1522{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1523{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1524{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1525{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1526{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1527{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1528{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1529{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1530{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1531{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1532{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1533{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1534{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1535{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1536{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1537{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1538{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1539{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1540{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1541{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1542{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1543{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1544{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1545{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1546{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1547{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1548{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1549{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1550{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1551{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1552{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1553{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1554{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1555{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1556{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1557{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1558{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1559{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1560{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1561{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1562{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1563{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1564{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1565{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1566{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1567{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1568{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1569{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1570{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1571{ 0xd, 0x02 }, { 0xc, 0xe9 }, { WAIT_IDLE },
1572{ 0xd, 0x06 }, { 0xc, 0x8c }, { WAIT_IDLE },
1573{ 0xd, 0x06 }, { 0xc, 0x8c }, { WAIT_IDLE },
1574{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1575{ 0xd, 0x1a }, { 0xc, 0x75 }, { WAIT_IDLE },
1576{ 0xd, 0x0d }, { 0xc, 0x8b }, { WAIT_IDLE },
1577{ 0xd, 0x04 }, { 0xc, 0xe9 }, { WAIT_IDLE },
1578{ 0xd, 0x0b }, { 0xc, 0x16 }, { WAIT_IDLE },
1579{ 0xd, 0x1a }, { 0xc, 0x38 }, { WAIT_IDLE },
1580{ 0xd, 0x0d }, { 0xc, 0xc8 }, { WAIT_IDLE },
1581{ 0xd, 0x04 }, { 0xc, 0x6f }, { WAIT_IDLE },
1582{ 0xd, 0x0b }, { 0xc, 0x91 }, { WAIT_IDLE },
1583{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1584{ 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1585{ 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1586{ 0xd, 0x02 }, { 0xc, 0x8f }, { WAIT_IDLE },
1587{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1588{ 0xd, 0x06 }, { 0xc, 0x62 }, { WAIT_IDLE },
1589{ 0xd, 0x06 }, { 0xc, 0x62 }, { WAIT_IDLE },
1590{ 0xd, 0x02 }, { 0xc, 0x7b }, { WAIT_IDLE },
1591{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1592{ 0xd, 0x06 }, { 0xc, 0x97 }, { WAIT_IDLE },
1593{ 0xd, 0x06 }, { 0xc, 0x97 }, { WAIT_IDLE },
1594{ 0xd, 0x02 }, { 0xc, 0x52 }, { WAIT_IDLE },
1595{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1596{ 0xd, 0x06 }, { 0xc, 0xf6 }, { WAIT_IDLE },
1597{ 0xd, 0x06 }, { 0xc, 0xf6 }, { WAIT_IDLE },
1598{ 0xd, 0x02 }, { 0xc, 0x19 }, { WAIT_IDLE },
1599{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1600{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1601{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1602{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1603{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1604{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1605{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1606{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1607{ 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1608{ 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1609{ 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1610{ 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1611{ 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1612{ 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1613{ 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1614{ 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1615{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1616{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1617{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1618{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1619{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
1620
1621/* Now setup the MOD area. */
1622{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
1623{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1624{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
1625{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1626{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
1627{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1628{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
1629{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1630{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
1631{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1632{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
1633{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1634{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
1635{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1636{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
1637{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1638{ 0xe, 0x01 }, { 0xf, 0x08 }, { WAIT_IDLE },
1639{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1640{ 0xe, 0x01 }, { 0xf, 0x09 }, { WAIT_IDLE },
1641{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1642{ 0xe, 0x01 }, { 0xf, 0x0a }, { WAIT_IDLE },
1643{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1644{ 0xe, 0x01 }, { 0xf, 0x0b }, { WAIT_IDLE },
1645{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1646{ 0xe, 0x01 }, { 0xf, 0x0c }, { WAIT_IDLE },
1647{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1648{ 0xe, 0x01 }, { 0xf, 0x0d }, { WAIT_IDLE },
1649{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1650{ 0xe, 0x01 }, { 0xf, 0x0e }, { WAIT_IDLE },
1651{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1652{ 0xe, 0x01 }, { 0xf, 0x0f }, { WAIT_IDLE },
1653{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1654
1655{ 0xe, 0xb0 }, { 0xf, 0x20 }, { WAIT_IDLE },
1656{ 0xe, 0xb1 }, { 0xf, 0x20 }, { WAIT_IDLE },
1657{ 0xe, 0xb2 }, { 0xf, 0x20 }, { WAIT_IDLE },
1658{ 0xe, 0xb3 }, { 0xf, 0x20 }, { WAIT_IDLE },
1659{ 0xe, 0xb4 }, { 0xf, 0x20 }, { WAIT_IDLE },
1660{ 0xe, 0xb5 }, { 0xf, 0x20 }, { WAIT_IDLE },
1661{ 0xe, 0xb6 }, { 0xf, 0x20 }, { WAIT_IDLE },
1662{ 0xe, 0xb7 }, { 0xf, 0x20 }, { WAIT_IDLE },
1663{ 0xe, 0xb8 }, { 0xf, 0x20 }, { WAIT_IDLE },
1664{ 0xe, 0xb9 }, { 0xf, 0x20 }, { WAIT_IDLE },
1665{ 0xe, 0xba }, { 0xf, 0x20 }, { WAIT_IDLE },
1666{ 0xe, 0xbb }, { 0xf, 0x20 }, { WAIT_IDLE },
1667{ 0xe, 0xbc }, { 0xf, 0x20 }, { WAIT_IDLE },
1668{ 0xe, 0xbd }, { 0xf, 0x20 }, { WAIT_IDLE },
1669{ 0xe, 0xbe }, { 0xf, 0x20 }, { WAIT_IDLE },
1670{ 0xe, 0xbf }, { 0xf, 0x20 }, { WAIT_IDLE },
1671
1672{ 0xe, 0xf0 }, { 0xf, 0x20 }, { WAIT_IDLE },
1673{ 0xe, 0xf1 }, { 0xf, 0x20 }, { WAIT_IDLE },
1674{ 0xe, 0xf2 }, { 0xf, 0x20 }, { WAIT_IDLE },
1675{ 0xe, 0xf3 }, { 0xf, 0x20 }, { WAIT_IDLE },
1676{ 0xe, 0xf4 }, { 0xf, 0x20 }, { WAIT_IDLE },
1677{ 0xe, 0xf5 }, { 0xf, 0x20 }, { WAIT_IDLE },
1678{ 0xe, 0xf6 }, { 0xf, 0x20 }, { WAIT_IDLE },
1679{ 0xe, 0xf7 }, { 0xf, 0x20 }, { WAIT_IDLE },
1680{ 0xe, 0xf8 }, { 0xf, 0x20 }, { WAIT_IDLE },
1681{ 0xe, 0xf9 }, { 0xf, 0x20 }, { WAIT_IDLE },
1682{ 0xe, 0xfa }, { 0xf, 0x20 }, { WAIT_IDLE },
1683{ 0xe, 0xfb }, { 0xf, 0x20 }, { WAIT_IDLE },
1684{ 0xe, 0xfc }, { 0xf, 0x20 }, { WAIT_IDLE },
1685{ 0xe, 0xfd }, { 0xf, 0x20 }, { WAIT_IDLE },
1686{ 0xe, 0xfe }, { 0xf, 0x20 }, { WAIT_IDLE },
1687{ 0xe, 0xff }, { 0xf, 0x20 }, { WAIT_IDLE },
1688
1689{ 0xe, 0x10 }, { 0xf, 0xff }, { WAIT_IDLE },
1690{ 0xe, 0x11 }, { 0xf, 0xff }, { WAIT_IDLE },
1691{ 0xe, 0x12 }, { 0xf, 0xff }, { WAIT_IDLE },
1692{ 0xe, 0x13 }, { 0xf, 0xff }, { WAIT_IDLE },
1693{ 0xe, 0x14 }, { 0xf, 0xff }, { WAIT_IDLE },
1694{ 0xe, 0x15 }, { 0xf, 0xff }, { WAIT_IDLE },
1695{ 0xe, 0x16 }, { 0xf, 0xff }, { WAIT_IDLE },
1696{ 0xe, 0x17 }, { 0xf, 0xff }, { WAIT_IDLE },
1697{ 0xe, 0x18 }, { 0xf, 0xff }, { WAIT_IDLE },
1698{ 0xe, 0x19 }, { 0xf, 0xff }, { WAIT_IDLE },
1699{ 0xe, 0x1a }, { 0xf, 0xff }, { WAIT_IDLE },
1700{ 0xe, 0x1b }, { 0xf, 0xff }, { WAIT_IDLE },
1701{ 0xe, 0x1c }, { 0xf, 0xff }, { WAIT_IDLE },
1702{ 0xe, 0x1d }, { 0xf, 0xff }, { WAIT_IDLE },
1703{ 0xe, 0x1e }, { 0xf, 0x40 }, { WAIT_IDLE },
1704{ 0xe, 0x1f }, { 0xf, 0xff }, { WAIT_IDLE },
1705{ 0xe, 0x20 }, { 0xf, 0xff }, { WAIT_IDLE },
1706{ 0xe, 0x21 }, { 0xf, 0xff }, { WAIT_IDLE },
1707{ 0xe, 0x22 }, { 0xf, 0xff }, { WAIT_IDLE },
1708{ 0xe, 0x23 }, { 0xf, 0xff }, { WAIT_IDLE },
1709{ 0xe, 0x24 }, { 0xf, 0xff }, { WAIT_IDLE },
1710{ 0xe, 0x25 }, { 0xf, 0xff }, { WAIT_IDLE },
1711{ 0xe, 0x26 }, { 0xf, 0xff }, { WAIT_IDLE },
1712{ 0xe, 0x27 }, { 0xf, 0xff }, { WAIT_IDLE },
1713{ 0xe, 0x28 }, { 0xf, 0xff }, { WAIT_IDLE },
1714{ 0xe, 0x29 }, { 0xf, 0xff }, { WAIT_IDLE },
1715{ 0xe, 0x2a }, { 0xf, 0xff }, { WAIT_IDLE },
1716{ 0xe, 0x2b }, { 0xf, 0xff }, { WAIT_IDLE },
1717{ 0xe, 0x2c }, { 0xf, 0xff }, { WAIT_IDLE },
1718{ 0xe, 0x2d }, { 0xf, 0xff }, { WAIT_IDLE },
1719{ 0xe, 0x2e }, { 0xf, 0x00 }, { WAIT_IDLE },
1720{ 0xe, 0x2f }, { 0xf, 0x00 }, { WAIT_IDLE },
1721{ 0xe, 0x30 }, { 0xf, 0x00 }, { WAIT_IDLE },
1722{ 0xe, 0x31 }, { 0xf, 0x00 }, { WAIT_IDLE },
1723{ 0xe, 0x32 }, { 0xf, 0x00 }, { WAIT_IDLE },
1724{ 0xe, 0x33 }, { 0xf, 0x00 }, { WAIT_IDLE },
1725{ 0xe, 0x34 }, { 0xf, 0x00 }, { WAIT_IDLE },
1726{ 0xe, 0x35 }, { 0xf, 0x00 }, { WAIT_IDLE },
1727{ 0xe, 0x36 }, { 0xf, 0x00 }, { WAIT_IDLE },
1728{ 0xe, 0x37 }, { 0xf, 0x00 }, { WAIT_IDLE },
1729{ 0xe, 0x38 }, { 0xf, 0x00 }, { WAIT_IDLE },
1730{ 0xe, 0x39 }, { 0xf, 0x00 }, { WAIT_IDLE },
1731{ 0xe, 0x3a }, { 0xf, 0x00 }, { WAIT_IDLE },
1732{ 0xe, 0x3b }, { 0xf, 0x00 }, { WAIT_IDLE },
1733{ 0xe, 0x3c }, { 0xf, 0x00 }, { WAIT_IDLE },
1734{ 0xe, 0x3d }, { 0xf, 0x00 }, { WAIT_IDLE },
1735{ 0xe, 0x3e }, { 0xf, 0x00 }, { WAIT_IDLE },
1736{ 0xe, 0x3f }, { 0xf, 0x20 }, { WAIT_IDLE },
1737{ 0xe, 0x40 }, { 0xf, 0x00 }, { WAIT_IDLE },
1738{ 0xe, 0x41 }, { 0xf, 0x00 }, { WAIT_IDLE },
1739{ 0xe, 0x42 }, { 0xf, 0x00 }, { WAIT_IDLE },
1740{ 0xe, 0x43 }, { 0xf, 0x00 }, { WAIT_IDLE },
1741{ 0xe, 0x44 }, { 0xf, 0x00 }, { WAIT_IDLE },
1742{ 0xe, 0x45 }, { 0xf, 0x00 }, { WAIT_IDLE },
1743{ 0xe, 0x46 }, { 0xf, 0x00 }, { WAIT_IDLE },
1744{ 0xe, 0x47 }, { 0xf, 0x00 }, { WAIT_IDLE },
1745{ 0xe, 0x48 }, { 0xf, 0x00 }, { WAIT_IDLE },
1746{ 0xe, 0x49 }, { 0xf, 0x00 }, { WAIT_IDLE },
1747{ 0xe, 0x4a }, { 0xf, 0x00 }, { WAIT_IDLE },
1748{ 0xe, 0x4b }, { 0xf, 0x00 }, { WAIT_IDLE },
1749{ 0xe, 0x4c }, { 0xf, 0x00 }, { WAIT_IDLE },
1750{ 0xe, 0x4d }, { 0xf, 0x00 }, { WAIT_IDLE },
1751{ 0xe, 0x4e }, { 0xf, 0x0e }, { WAIT_IDLE },
1752{ 0xe, 0x4f }, { 0xf, 0x0e }, { WAIT_IDLE },
1753{ 0xe, 0x50 }, { 0xf, 0x00 }, { WAIT_IDLE },
1754{ 0xe, 0x51 }, { 0xf, 0x00 }, { WAIT_IDLE },
1755{ 0xe, 0x52 }, { 0xf, 0x00 }, { WAIT_IDLE },
1756{ 0xe, 0x53 }, { 0xf, 0x00 }, { WAIT_IDLE },
1757{ 0xe, 0x54 }, { 0xf, 0x00 }, { WAIT_IDLE },
1758{ 0xe, 0x55 }, { 0xf, 0x00 }, { WAIT_IDLE },
1759{ 0xe, 0x56 }, { 0xf, 0x00 }, { WAIT_IDLE },
1760{ 0xe, 0x57 }, { 0xf, 0x00 }, { WAIT_IDLE },
1761{ 0xe, 0x58 }, { 0xf, 0x00 }, { WAIT_IDLE },
1762{ 0xe, 0x59 }, { 0xf, 0x00 }, { WAIT_IDLE },
1763{ 0xe, 0x5a }, { 0xf, 0x00 }, { WAIT_IDLE },
1764{ 0xe, 0x5b }, { 0xf, 0x00 }, { WAIT_IDLE },
1765{ 0xe, 0x5c }, { 0xf, 0x00 }, { WAIT_IDLE },
1766{ 0xe, 0x5d }, { 0xf, 0x00 }, { WAIT_IDLE },
1767{ 0xe, 0x5e }, { 0xf, 0x00 }, { WAIT_IDLE },
1768{ 0xe, 0x5f }, { 0xf, 0x00 }, { WAIT_IDLE },
1769{ 0xe, 0x60 }, { 0xf, 0x00 }, { WAIT_IDLE },
1770{ 0xe, 0x61 }, { 0xf, 0x00 }, { WAIT_IDLE },
1771{ 0xe, 0x62 }, { 0xf, 0x00 }, { WAIT_IDLE },
1772{ 0xe, 0x63 }, { 0xf, 0x00 }, { WAIT_IDLE },
1773{ 0xe, 0x64 }, { 0xf, 0x00 }, { WAIT_IDLE },
1774{ 0xe, 0x65 }, { 0xf, 0x00 }, { WAIT_IDLE },
1775{ 0xe, 0x66 }, { 0xf, 0x00 }, { WAIT_IDLE },
1776{ 0xe, 0x67 }, { 0xf, 0x00 }, { WAIT_IDLE },
1777{ 0xe, 0x68 }, { 0xf, 0x00 }, { WAIT_IDLE },
1778{ 0xe, 0x69 }, { 0xf, 0x00 }, { WAIT_IDLE },
1779{ 0xe, 0x6a }, { 0xf, 0x00 }, { WAIT_IDLE },
1780{ 0xe, 0x6b }, { 0xf, 0x00 }, { WAIT_IDLE },
1781{ 0xe, 0x6c }, { 0xf, 0x40 }, { WAIT_IDLE },
1782{ 0xe, 0x6d }, { 0xf, 0x00 }, { WAIT_IDLE },
1783{ 0xe, 0x6e }, { 0xf, 0x40 }, { WAIT_IDLE },
1784{ 0xe, 0x6f }, { 0xf, 0x40 }, { WAIT_IDLE },
1785{ 0xe, 0x70 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1786{ 0xe, 0x71 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1787{ 0xe, 0x72 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1788{ 0xe, 0x73 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1789{ 0xe, 0x74 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1790{ 0xe, 0x75 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1791{ 0xe, 0x76 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1792{ 0xe, 0x77 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1793{ 0xe, 0x78 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1794{ 0xe, 0x79 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1795{ 0xe, 0x7a }, { 0xf, 0xc0 }, { WAIT_IDLE },
1796{ 0xe, 0x7b }, { 0xf, 0xc0 }, { WAIT_IDLE },
1797{ 0xe, 0x7c }, { 0xf, 0xc0 }, { WAIT_IDLE },
1798{ 0xe, 0x7d }, { 0xf, 0xc0 }, { WAIT_IDLE },
1799{ 0xe, 0x7e }, { 0xf, 0xc0 }, { WAIT_IDLE },
1800{ 0xe, 0x7f }, { 0xf, 0xc0 }, { WAIT_IDLE },
1801{ 0xe, 0x80 }, { 0xf, 0x00 }, { WAIT_IDLE },
1802{ 0xe, 0x81 }, { 0xf, 0x00 }, { WAIT_IDLE },
1803{ 0xe, 0x82 }, { 0xf, 0x00 }, { WAIT_IDLE },
1804{ 0xe, 0x83 }, { 0xf, 0x00 }, { WAIT_IDLE },
1805{ 0xe, 0x84 }, { 0xf, 0x00 }, { WAIT_IDLE },
1806{ 0xe, 0x85 }, { 0xf, 0x00 }, { WAIT_IDLE },
1807{ 0xe, 0x86 }, { 0xf, 0x00 }, { WAIT_IDLE },
1808{ 0xe, 0x87 }, { 0xf, 0x00 }, { WAIT_IDLE },
1809{ 0xe, 0x88 }, { 0xf, 0x00 }, { WAIT_IDLE },
1810{ 0xe, 0x89 }, { 0xf, 0x00 }, { WAIT_IDLE },
1811{ 0xe, 0x8a }, { 0xf, 0x00 }, { WAIT_IDLE },
1812{ 0xe, 0x8b }, { 0xf, 0x00 }, { WAIT_IDLE },
1813{ 0xe, 0x8c }, { 0xf, 0x00 }, { WAIT_IDLE },
1814{ 0xe, 0x8d }, { 0xf, 0x00 }, { WAIT_IDLE },
1815{ 0xe, 0x8e }, { 0xf, 0x00 }, { WAIT_IDLE },
1816{ 0xe, 0x8f }, { 0xf, 0x00 }, { WAIT_IDLE },
1817{ 0xe, 0x90 }, { 0xf, 0x00 }, { WAIT_IDLE },
1818{ 0xe, 0x91 }, { 0xf, 0x00 }, { WAIT_IDLE },
1819{ 0xe, 0x92 }, { 0xf, 0x00 }, { WAIT_IDLE },
1820{ 0xe, 0x93 }, { 0xf, 0x00 }, { WAIT_IDLE },
1821{ 0xe, 0x94 }, { 0xf, 0x00 }, { WAIT_IDLE },
1822{ 0xe, 0x95 }, { 0xf, 0x00 }, { WAIT_IDLE },
1823{ 0xe, 0x96 }, { 0xf, 0x00 }, { WAIT_IDLE },
1824{ 0xe, 0x97 }, { 0xf, 0x00 }, { WAIT_IDLE },
1825{ 0xe, 0x98 }, { 0xf, 0x00 }, { WAIT_IDLE },
1826{ 0xe, 0x99 }, { 0xf, 0x00 }, { WAIT_IDLE },
1827{ 0xe, 0x9a }, { 0xf, 0x00 }, { WAIT_IDLE },
1828{ 0xe, 0x9b }, { 0xf, 0x00 }, { WAIT_IDLE },
1829{ 0xe, 0x9c }, { 0xf, 0x00 }, { WAIT_IDLE },
1830{ 0xe, 0x9d }, { 0xf, 0x00 }, { WAIT_IDLE },
1831{ 0xe, 0x9e }, { 0xf, 0x00 }, { WAIT_IDLE },
1832{ 0xe, 0x9f }, { 0xf, 0x00 }, { WAIT_IDLE },
1833{ 0xe, 0xa0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1834{ 0xe, 0xa1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1835{ 0xe, 0xa2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1836{ 0xe, 0xa3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1837{ 0xe, 0xa4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1838{ 0xe, 0xa5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1839{ 0xe, 0xa6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1840{ 0xe, 0xa7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1841{ 0xe, 0xa8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1842{ 0xe, 0xa9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1843{ 0xe, 0xaa }, { 0xf, 0x00 }, { WAIT_IDLE },
1844{ 0xe, 0xab }, { 0xf, 0x00 }, { WAIT_IDLE },
1845{ 0xe, 0xac }, { 0xf, 0x00 }, { WAIT_IDLE },
1846{ 0xe, 0xad }, { 0xf, 0x00 }, { WAIT_IDLE },
1847{ 0xe, 0xae }, { 0xf, 0x00 }, { WAIT_IDLE },
1848{ 0xe, 0xaf }, { 0xf, 0x00 }, { WAIT_IDLE },
1849
1850{ 0xe, 0xc0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1851{ 0xe, 0xc1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1852{ 0xe, 0xc2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1853{ 0xe, 0xc3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1854{ 0xe, 0xc4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1855{ 0xe, 0xc5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1856{ 0xe, 0xc6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1857{ 0xe, 0xc7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1858{ 0xe, 0xc8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1859{ 0xe, 0xc9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1860{ 0xe, 0xca }, { 0xf, 0x00 }, { WAIT_IDLE },
1861{ 0xe, 0xcb }, { 0xf, 0x00 }, { WAIT_IDLE },
1862{ 0xe, 0xcc }, { 0xf, 0x00 }, { WAIT_IDLE },
1863{ 0xe, 0xcd }, { 0xf, 0x00 }, { WAIT_IDLE },
1864{ 0xe, 0xce }, { 0xf, 0x00 }, { WAIT_IDLE },
1865{ 0xe, 0xcf }, { 0xf, 0x00 }, { WAIT_IDLE },
1866{ 0xe, 0xd0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1867{ 0xe, 0xd1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1868{ 0xe, 0xd2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1869{ 0xe, 0xd3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1870{ 0xe, 0xd4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1871{ 0xe, 0xd5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1872{ 0xe, 0xd6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1873{ 0xe, 0xd7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1874{ 0xe, 0xd8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1875{ 0xe, 0xd9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1876{ 0xe, 0xda }, { 0xf, 0x00 }, { WAIT_IDLE },
1877{ 0xe, 0xdb }, { 0xf, 0x00 }, { WAIT_IDLE },
1878{ 0xe, 0xdc }, { 0xf, 0x00 }, { WAIT_IDLE },
1879{ 0xe, 0xdd }, { 0xf, 0x00 }, { WAIT_IDLE },
1880{ 0xe, 0xde }, { 0xf, 0x10 }, { WAIT_IDLE },
1881{ 0xe, 0xdf }, { 0xf, 0x10 }, { WAIT_IDLE },
1882{ 0xe, 0xe0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1883{ 0xe, 0xe1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1884{ 0xe, 0xe2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1885{ 0xe, 0xe3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1886{ 0xe, 0xe4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1887{ 0xe, 0xe5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1888{ 0xe, 0xe6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1889{ 0xe, 0xe7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1890{ 0xe, 0xe8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1891{ 0xe, 0xe9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1892{ 0xe, 0xea }, { 0xf, 0x00 }, { WAIT_IDLE },
1893{ 0xe, 0xeb }, { 0xf, 0x00 }, { WAIT_IDLE },
1894{ 0xe, 0xec }, { 0xf, 0x00 }, { WAIT_IDLE },
1895{ 0xe, 0xed }, { 0xf, 0x00 }, { WAIT_IDLE },
1896{ 0xe, 0xee }, { 0xf, 0x00 }, { WAIT_IDLE },
1897{ 0xe, 0xef }, { 0xf, 0x00 }, { WAIT_IDLE },
1898
1899{ 0xe, 0x01 }, { 0xf, 0x00 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1900{ 0xe, 0x01 }, { 0xf, 0x01 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1901{ 0xe, 0x01 }, { 0xf, 0x02 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1902{ 0xe, 0x01 }, { 0xf, 0x03 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1903{ 0xe, 0x01 }, { 0xf, 0x04 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1904{ 0xe, 0x01 }, { 0xf, 0x05 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1905{ 0xe, 0x01 }, { 0xf, 0x06 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1906{ 0xe, 0x01 }, { 0xf, 0x07 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1907{ 0xe, 0x01 }, { 0xf, 0x08 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1908{ 0xe, 0x01 }, { 0xf, 0x09 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1909{ 0xe, 0x01 }, { 0xf, 0x0a }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1910{ 0xe, 0x01 }, { 0xf, 0x0b }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1911{ 0xe, 0x01 }, { 0xf, 0x0c }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1912{ 0xe, 0x01 }, { 0xf, 0x0d }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1913{ 0xe, 0x01 }, { 0xf, 0x0e }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1914{ 0xe, 0x01 }, { 0xf, 0x0f }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1915
1916/* mute on */
1917{ 0x8, 0x02 },
1918
1919/* Now set the coefficients and so forth for the programs above */
1920{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1921{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1922{ 0xb, 0x00 }, { 0xa, 0x4b }, { 0xd, 0x03 }, { 0xc, 0x11 }, { WAIT_IDLE },
1923{ 0xb, 0x00 }, { 0xa, 0x4d }, { 0xd, 0x01 }, { 0xc, 0x32 }, { WAIT_IDLE },
1924{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1925{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1926{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1927{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1928{ 0xb, 0x01 }, { 0xa, 0x40 }, { 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
1929{ 0xb, 0x01 }, { 0xa, 0x41 }, { 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
1930{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1931{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1932{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1933{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1934{ 0xb, 0x00 }, { 0xa, 0x47 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
1935{ 0xb, 0x00 }, { 0xa, 0x4a }, { 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
1936{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1937{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1938{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1939{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1940{ 0xb, 0x00 }, { 0xa, 0x00 }, { 0xd, 0x01 }, { 0xc, 0x1c }, { WAIT_IDLE },
1941{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1942{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1943{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1944{ 0xb, 0x00 }, { 0xa, 0x44 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
1945{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1946{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1947{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1948{ 0xb, 0x00 }, { 0xa, 0x42 }, { 0xd, 0x01 }, { 0xc, 0x1a }, { WAIT_IDLE },
1949{ 0xb, 0x00 }, { 0xa, 0x43 }, { 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
1950{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1951{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1952{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1953{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1954{ 0xb, 0x01 }, { 0xa, 0x40 }, { 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
1955{ 0xb, 0x01 }, { 0xa, 0x41 }, { 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
1956{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1957{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1958{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1959{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1960{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1961{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1962{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1963{ 0xb, 0x07 }, { 0xa, 0x51 }, { 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1964{ 0xb, 0x07 }, { 0xa, 0x50 }, { 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1965{ 0xb, 0x07 }, { 0xa, 0x4f }, { 0xd, 0x03 }, { 0xc, 0x81 }, { WAIT_IDLE },
1966{ 0xb, 0x07 }, { 0xa, 0x53 }, { 0xd, 0x1a }, { 0xc, 0x76 }, { WAIT_IDLE },
1967{ 0xb, 0x07 }, { 0xa, 0x54 }, { 0xd, 0x0d }, { 0xc, 0x8b }, { WAIT_IDLE },
1968{ 0xb, 0x07 }, { 0xa, 0x55 }, { 0xd, 0x04 }, { 0xc, 0xe9 }, { WAIT_IDLE },
1969{ 0xb, 0x07 }, { 0xa, 0x56 }, { 0xd, 0x0b }, { 0xc, 0x17 }, { WAIT_IDLE },
1970{ 0xb, 0x07 }, { 0xa, 0x57 }, { 0xd, 0x1a }, { 0xc, 0x38 }, { WAIT_IDLE },
1971{ 0xb, 0x07 }, { 0xa, 0x58 }, { 0xd, 0x0d }, { 0xc, 0xc9 }, { WAIT_IDLE },
1972{ 0xb, 0x07 }, { 0xa, 0x59 }, { 0xd, 0x04 }, { 0xc, 0x6f }, { WAIT_IDLE },
1973{ 0xb, 0x07 }, { 0xa, 0x5a }, { 0xd, 0x0b }, { 0xc, 0x91 }, { WAIT_IDLE },
1974{ 0xb, 0x07 }, { 0xa, 0x73 }, { 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1975{ 0xb, 0x07 }, { 0xa, 0x74 }, { 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1976{ 0xb, 0x07 }, { 0xa, 0x75 }, { 0xd, 0x04 }, { 0xc, 0xd9 }, { WAIT_IDLE },
1977{ 0xb, 0x07 }, { 0xa, 0x76 }, { 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1978{ 0xb, 0x07 }, { 0xa, 0x77 }, { 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1979{ 0xb, 0x07 }, { 0xa, 0x78 }, { 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1980{ 0xb, 0x07 }, { 0xa, 0x79 }, { 0xd, 0x04 }, { 0xc, 0xd9 }, { WAIT_IDLE },
1981{ 0xb, 0x07 }, { 0xa, 0x7a }, { 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1982{ 0xb, 0x07 }, { 0xa, 0x5e }, { 0xd, 0x03 }, { 0xc, 0x68 }, { WAIT_IDLE },
1983{ 0xb, 0x07 }, { 0xa, 0x5c }, { 0xd, 0x04 }, { 0xc, 0x31 }, { WAIT_IDLE },
1984{ 0xb, 0x07 }, { 0xa, 0x5d }, { 0xd, 0x04 }, { 0xc, 0x31 }, { WAIT_IDLE },
1985{ 0xb, 0x07 }, { 0xa, 0x62 }, { 0xd, 0x03 }, { 0xc, 0x52 }, { WAIT_IDLE },
1986{ 0xb, 0x07 }, { 0xa, 0x60 }, { 0xd, 0x04 }, { 0xc, 0x76 }, { WAIT_IDLE },
1987{ 0xb, 0x07 }, { 0xa, 0x61 }, { 0xd, 0x04 }, { 0xc, 0x76 }, { WAIT_IDLE },
1988{ 0xb, 0x07 }, { 0xa, 0x66 }, { 0xd, 0x03 }, { 0xc, 0x2e }, { WAIT_IDLE },
1989{ 0xb, 0x07 }, { 0xa, 0x64 }, { 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1990{ 0xb, 0x07 }, { 0xa, 0x65 }, { 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1991{ 0xb, 0x07 }, { 0xa, 0x6a }, { 0xd, 0x02 }, { 0xc, 0xf6 }, { WAIT_IDLE },
1992{ 0xb, 0x07 }, { 0xa, 0x68 }, { 0xd, 0x05 }, { 0xc, 0x62 }, { WAIT_IDLE },
1993{ 0xb, 0x07 }, { 0xa, 0x69 }, { 0xd, 0x05 }, { 0xc, 0x62 }, { WAIT_IDLE },
1994{ 0xb, 0x06 }, { 0xa, 0x46 }, { 0xd, 0x0a }, { 0xc, 0x22 }, { WAIT_IDLE },
1995{ 0xb, 0x06 }, { 0xa, 0x48 }, { 0xd, 0x0d }, { 0xc, 0x24 }, { WAIT_IDLE },
1996{ 0xb, 0x06 }, { 0xa, 0x6e }, { 0xd, 0x11 }, { 0xc, 0xd3 }, { WAIT_IDLE },
1997{ 0xb, 0x06 }, { 0xa, 0x70 }, { 0xd, 0x15 }, { 0xc, 0xcb }, { WAIT_IDLE },
1998{ 0xb, 0x06 }, { 0xa, 0x52 }, { 0xd, 0x20 }, { 0xc, 0x93 }, { WAIT_IDLE },
1999{ 0xb, 0x06 }, { 0xa, 0x54 }, { 0xd, 0x20 }, { 0xc, 0x54 }, { WAIT_IDLE },
2000{ 0xb, 0x06 }, { 0xa, 0x4a }, { 0xd, 0x27 }, { 0xc, 0x1d }, { WAIT_IDLE },
2001{ 0xb, 0x06 }, { 0xa, 0x58 }, { 0xd, 0x2f }, { 0xc, 0xc8 }, { WAIT_IDLE },
2002{ 0xb, 0x06 }, { 0xa, 0x5c }, { 0xd, 0x30 }, { 0xc, 0x07 }, { WAIT_IDLE },
2003{ 0xb, 0x06 }, { 0xa, 0x4c }, { 0xd, 0x37 }, { 0xc, 0x90 }, { WAIT_IDLE },
2004{ 0xb, 0x06 }, { 0xa, 0x60 }, { 0xd, 0x3d }, { 0xc, 0xdb }, { WAIT_IDLE },
2005{ 0xb, 0x06 }, { 0xa, 0x64 }, { 0xd, 0x3e }, { 0xc, 0x42 }, { WAIT_IDLE },
2006{ 0xb, 0x06 }, { 0xa, 0x4e }, { 0xd, 0x45 }, { 0xc, 0x78 }, { WAIT_IDLE },
2007{ 0xb, 0x06 }, { 0xa, 0x68 }, { 0xd, 0x4c }, { 0xc, 0x48 }, { WAIT_IDLE },
2008{ 0xb, 0x06 }, { 0xa, 0x6c }, { 0xd, 0x4c }, { 0xc, 0x6c }, { WAIT_IDLE },
2009{ 0xb, 0x06 }, { 0xa, 0x50 }, { 0xd, 0x52 }, { 0xc, 0xe2 }, { WAIT_IDLE },
2010{ 0xb, 0x06 }, { 0xa, 0x42 }, { 0xd, 0x02 }, { 0xc, 0xba }, { WAIT_IDLE },
2011
2012/* Some settings (?) */
2013{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x14 },
2014{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x20 },
2015{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x20 },
2016
2017/* some more coefficients */
2018{ WAIT_IDLE }, { 0xb, 0x06 }, { 0xa, 0x78 }, { 0xd, 0x00 }, { 0xc, 0x40 },
2019{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x03 }, { 0xd, 0x0f }, { 0xc, 0xff },
2020{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x0b }, { 0xd, 0x0f }, { 0xc, 0xff },
2021{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x02 }, { 0xd, 0x00 }, { 0xc, 0x00 },
2022{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x0a }, { 0xd, 0x00 }, { 0xc, 0x00 },
2023{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 },
2024{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 },
2025
2026/* Now, for some strange reason, lets reload every page
2027 and all the coefficients over again. I have *NO* idea
2028 why this is done. I do know that no sound is produced
2029 is this phase is omitted. */
2030{ 0x9, 0x05 }, { 0xb, 0x00 }, { 0xa, 0x10 },
2031
2032{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2033{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2034{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
2035{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2036{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2037{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2038{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2039{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2040{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2041{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2042{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2043{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2044{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2045{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2046{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2047{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2048{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2049{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2050{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2051{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2052{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2053{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2054{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2055{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2056{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2057{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2058{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2059{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2060{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2061{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2062{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2063{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2064{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2065{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2066{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2067{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2068{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2069{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2070{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2071{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2072{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2073{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2074{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2075{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2076{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2077{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2078{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2079{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2080
2081{ 0x9, 0x05 }, { 0xb, 0x01 }, { 0xa, 0x10 },
2082
2083{ 0xd, 0x01 }, { 0xc, 0xc0 }, { WAIT_IDLE },
2084{ 0xd, 0x01 }, { 0xc, 0xfa }, { WAIT_IDLE },
2085{ 0xd, 0x00 }, { 0xc, 0x1a }, { WAIT_IDLE },
2086{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2087{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2088{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2089{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2090{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2091{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2092{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2093{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2094{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2095{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2096{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2097{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2098{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2099{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2100{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2101{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2102{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2103{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2104{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2105{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2106{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2107{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2108{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2109{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2110{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2111{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2112{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2113{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2114{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2115{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2116{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2117{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2118{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2119{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2120{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2121{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2122{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2123{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2124{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2125{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2126{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2127{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2128{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2129{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2130{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2131
2132{ WAIT_IDLE }, { WAIT_IDLE },
2133
2134{ 0x9, 0x05 }, { 0xb, 0x02 }, { 0xa, 0x10 },
2135
2136{ 0xc, 0x46 }, { WAIT_IDLE },
2137{ 0xc, 0x46 }, { WAIT_IDLE },
2138{ 0xc, 0x00 }, { WAIT_IDLE },
2139{ 0xc, 0x00 }, { WAIT_IDLE },
2140{ 0xc, 0x00 }, { WAIT_IDLE },
2141{ 0xc, 0x00 }, { WAIT_IDLE },
2142{ 0xc, 0x00 }, { WAIT_IDLE },
2143{ 0xc, 0x00 }, { WAIT_IDLE },
2144{ 0xc, 0x00 }, { WAIT_IDLE },
2145{ 0xc, 0x00 }, { WAIT_IDLE },
2146{ 0xc, 0x00 }, { WAIT_IDLE },
2147{ 0xc, 0x00 }, { WAIT_IDLE },
2148{ 0xc, 0x00 }, { WAIT_IDLE },
2149{ 0xc, 0x00 }, { WAIT_IDLE },
2150{ 0xc, 0x00 }, { WAIT_IDLE },
2151{ 0xc, 0x00 }, { WAIT_IDLE },
2152{ 0xc, 0x00 }, { WAIT_IDLE },
2153{ 0xc, 0x00 }, { WAIT_IDLE },
2154{ 0xc, 0x00 }, { WAIT_IDLE },
2155{ 0xc, 0x00 }, { WAIT_IDLE },
2156{ 0xc, 0x00 }, { WAIT_IDLE },
2157{ 0xc, 0x00 }, { WAIT_IDLE },
2158{ 0xc, 0x00 }, { WAIT_IDLE },
2159{ 0xc, 0x00 }, { WAIT_IDLE },
2160{ 0xc, 0x00 }, { WAIT_IDLE },
2161{ 0xc, 0x00 }, { WAIT_IDLE },
2162{ 0xc, 0x00 }, { WAIT_IDLE },
2163{ 0xc, 0x00 }, { WAIT_IDLE },
2164{ 0xc, 0x00 }, { WAIT_IDLE },
2165{ 0xc, 0x00 }, { WAIT_IDLE },
2166{ 0xc, 0x00 }, { WAIT_IDLE },
2167{ 0xc, 0x00 }, { WAIT_IDLE },
2168{ 0xc, 0x00 }, { WAIT_IDLE },
2169{ 0xc, 0x00 }, { WAIT_IDLE },
2170{ 0xc, 0x00 }, { WAIT_IDLE },
2171{ 0xc, 0x00 }, { WAIT_IDLE },
2172{ 0xc, 0x00 }, { WAIT_IDLE },
2173{ 0xc, 0x00 }, { WAIT_IDLE },
2174{ 0xc, 0x00 }, { WAIT_IDLE },
2175{ 0xc, 0x00 }, { WAIT_IDLE },
2176{ 0xc, 0x00 }, { WAIT_IDLE },
2177{ 0xc, 0x00 }, { WAIT_IDLE },
2178{ 0xc, 0x00 }, { WAIT_IDLE },
2179{ 0xc, 0x00 }, { WAIT_IDLE },
2180{ 0xc, 0x00 }, { WAIT_IDLE },
2181{ 0xc, 0x00 }, { WAIT_IDLE },
2182{ 0xc, 0x00 }, { WAIT_IDLE },
2183{ 0xc, 0x00 }, { WAIT_IDLE },
2184
2185{ 0x9, 0x05 }, { 0xb, 0x03 }, { 0xa, 0x10 },
2186
2187{ 0xc, 0x00 }, { WAIT_IDLE },
2188{ 0xc, 0x00 }, { WAIT_IDLE },
2189{ 0xc, 0x00 }, { WAIT_IDLE },
2190{ 0xc, 0x00 }, { WAIT_IDLE },
2191{ 0xc, 0x00 }, { WAIT_IDLE },
2192{ 0xc, 0x00 }, { WAIT_IDLE },
2193{ 0xc, 0x00 }, { WAIT_IDLE },
2194{ 0xc, 0x00 }, { WAIT_IDLE },
2195{ 0xc, 0x00 }, { WAIT_IDLE },
2196{ 0xc, 0x00 }, { WAIT_IDLE },
2197{ 0xc, 0x00 }, { WAIT_IDLE },
2198{ 0xc, 0x00 }, { WAIT_IDLE },
2199{ 0xc, 0x00 }, { WAIT_IDLE },
2200{ 0xc, 0x00 }, { WAIT_IDLE },
2201{ 0xc, 0x00 }, { WAIT_IDLE },
2202{ 0xc, 0x00 }, { WAIT_IDLE },
2203{ 0xc, 0x00 }, { WAIT_IDLE },
2204{ 0xc, 0x00 }, { WAIT_IDLE },
2205{ 0xc, 0x00 }, { WAIT_IDLE },
2206{ 0xc, 0x00 }, { WAIT_IDLE },
2207{ 0xc, 0x00 }, { WAIT_IDLE },
2208{ 0xc, 0x00 }, { WAIT_IDLE },
2209{ 0xc, 0x00 }, { WAIT_IDLE },
2210{ 0xc, 0x00 }, { WAIT_IDLE },
2211{ 0xc, 0x00 }, { WAIT_IDLE },
2212{ 0xc, 0x00 }, { WAIT_IDLE },
2213{ 0xc, 0x00 }, { WAIT_IDLE },
2214{ 0xc, 0x00 }, { WAIT_IDLE },
2215{ 0xc, 0x00 }, { WAIT_IDLE },
2216{ 0xc, 0x00 }, { WAIT_IDLE },
2217{ 0xc, 0x00 }, { WAIT_IDLE },
2218{ 0xc, 0x00 }, { WAIT_IDLE },
2219{ 0xc, 0x00 }, { WAIT_IDLE },
2220{ 0xc, 0x00 }, { WAIT_IDLE },
2221{ 0xc, 0x00 }, { WAIT_IDLE },
2222{ 0xc, 0x00 }, { WAIT_IDLE },
2223{ 0xc, 0x00 }, { WAIT_IDLE },
2224{ 0xc, 0x00 }, { WAIT_IDLE },
2225{ 0xc, 0x00 }, { WAIT_IDLE },
2226{ 0xc, 0x00 }, { WAIT_IDLE },
2227{ 0xc, 0x00 }, { WAIT_IDLE },
2228{ 0xc, 0x00 }, { WAIT_IDLE },
2229{ 0xc, 0x00 }, { WAIT_IDLE },
2230{ 0xc, 0x00 }, { WAIT_IDLE },
2231{ 0xc, 0x00 }, { WAIT_IDLE },
2232{ 0xc, 0x00 }, { WAIT_IDLE },
2233{ 0xc, 0x00 }, { WAIT_IDLE },
2234{ 0xc, 0x00 }, { WAIT_IDLE },
2235
2236{ 0x9, 0x05 }, { 0xb, 0x04 }, { 0xa, 0x10 },
2237
2238{ 0xc, 0x00 }, { WAIT_IDLE },
2239{ 0xc, 0x00 }, { WAIT_IDLE },
2240{ 0xc, 0x00 }, { WAIT_IDLE },
2241{ 0xc, 0x00 }, { WAIT_IDLE },
2242{ 0xc, 0x00 }, { WAIT_IDLE },
2243{ 0xc, 0x00 }, { WAIT_IDLE },
2244{ 0xc, 0x00 }, { WAIT_IDLE },
2245{ 0xc, 0x00 }, { WAIT_IDLE },
2246{ 0xc, 0x00 }, { WAIT_IDLE },
2247{ 0xc, 0x00 }, { WAIT_IDLE },
2248{ 0xc, 0x00 }, { WAIT_IDLE },
2249{ 0xc, 0x00 }, { WAIT_IDLE },
2250{ 0xc, 0x00 }, { WAIT_IDLE },
2251{ 0xc, 0x00 }, { WAIT_IDLE },
2252{ 0xc, 0x00 }, { WAIT_IDLE },
2253{ 0xc, 0x00 }, { WAIT_IDLE },
2254{ 0xc, 0x00 }, { WAIT_IDLE },
2255{ 0xc, 0x00 }, { WAIT_IDLE },
2256{ 0xc, 0x00 }, { WAIT_IDLE },
2257{ 0xc, 0x00 }, { WAIT_IDLE },
2258{ 0xc, 0x00 }, { WAIT_IDLE },
2259{ 0xc, 0x00 }, { WAIT_IDLE },
2260{ 0xc, 0x00 }, { WAIT_IDLE },
2261{ 0xc, 0x00 }, { WAIT_IDLE },
2262{ 0xc, 0x00 }, { WAIT_IDLE },
2263{ 0xc, 0x00 }, { WAIT_IDLE },
2264{ 0xc, 0x00 }, { WAIT_IDLE },
2265{ 0xc, 0x00 }, { WAIT_IDLE },
2266{ 0xc, 0x00 }, { WAIT_IDLE },
2267{ 0xc, 0x00 }, { WAIT_IDLE },
2268{ 0xc, 0x00 }, { WAIT_IDLE },
2269{ 0xc, 0x00 }, { WAIT_IDLE },
2270{ 0xc, 0x00 }, { WAIT_IDLE },
2271{ 0xc, 0x00 }, { WAIT_IDLE },
2272{ 0xc, 0x00 }, { WAIT_IDLE },
2273{ 0xc, 0x00 }, { WAIT_IDLE },
2274{ 0xc, 0x00 }, { WAIT_IDLE },
2275{ 0xc, 0x00 }, { WAIT_IDLE },
2276{ 0xc, 0x00 }, { WAIT_IDLE },
2277{ 0xc, 0x00 }, { WAIT_IDLE },
2278{ 0xc, 0x00 }, { WAIT_IDLE },
2279{ 0xc, 0x00 }, { WAIT_IDLE },
2280{ 0xc, 0x00 }, { WAIT_IDLE },
2281{ 0xc, 0x00 }, { WAIT_IDLE },
2282{ 0xc, 0x00 }, { WAIT_IDLE },
2283{ 0xc, 0x00 }, { WAIT_IDLE },
2284{ 0xc, 0x00 }, { WAIT_IDLE },
2285{ 0xc, 0x00 }, { WAIT_IDLE },
2286
2287/* Page six v.2 */
2288{ 0x9, 0x01 }, { 0xb, 0x06 },
2289
2290{ 0xa, 0x10 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2291{ 0xa, 0x12 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2292{ 0xa, 0x14 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2293{ 0xa, 0x16 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2294{ 0xa, 0x18 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2295{ 0xa, 0x1a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2296{ 0xa, 0x1c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2297{ 0xa, 0x1e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2298{ 0xa, 0x20 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2299{ 0xa, 0x22 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2300{ 0xa, 0x24 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2301{ 0xa, 0x26 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2302{ 0xa, 0x28 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2303{ 0xa, 0x2a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2304{ 0xa, 0x2c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2305{ 0xa, 0x2e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2306{ 0xa, 0x30 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2307{ 0xa, 0x32 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2308{ 0xa, 0x34 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2309{ 0xa, 0x36 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2310{ 0xa, 0x38 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2311{ 0xa, 0x3a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2312{ 0xa, 0x3c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2313{ 0xa, 0x3e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2314
2315{ 0x9, 0x05 }, { 0xb, 0x07 }, { 0xa, 0x10 },
2316
2317{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2318{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2319{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2320{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2321{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2322{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2323{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2324{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2325{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2326{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2327{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2328{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2329{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2330{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2331{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2332{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2333{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2334{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2335{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2336{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2337{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2338{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2339{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2340{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2341{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2342{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2343{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2344{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2345{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2346{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2347{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2348{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2349{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2350{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2351{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2352{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2353{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2354{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2355{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2356{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2357{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2358{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2359{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2360{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2361{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2362{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2363{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2364{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2365
2366{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
2367{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2368{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
2369{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2370{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
2371{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2372{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
2373{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2374{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
2375{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2376{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
2377{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2378{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
2379{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2380{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
2381{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2382{ 0xe, 0xb0 }, { 0xf, 0x20 }, { WAIT_IDLE },
2383{ 0xe, 0xb1 }, { 0xf, 0x20 }, { WAIT_IDLE },
2384{ 0xe, 0xb2 }, { 0xf, 0x20 }, { WAIT_IDLE },
2385{ 0xe, 0xb3 }, { 0xf, 0x20 }, { WAIT_IDLE },
2386{ 0xe, 0xb4 }, { 0xf, 0x20 }, { WAIT_IDLE },
2387{ 0xe, 0xb5 }, { 0xf, 0x20 }, { WAIT_IDLE },
2388{ 0xe, 0xb6 }, { 0xf, 0x20 }, { WAIT_IDLE },
2389{ 0xe, 0xb7 }, { 0xf, 0x20 }, { WAIT_IDLE },
2390{ 0xe, 0xf0 }, { 0xf, 0x20 }, { WAIT_IDLE },
2391{ 0xe, 0xf1 }, { 0xf, 0x20 }, { WAIT_IDLE },
2392{ 0xe, 0xf2 }, { 0xf, 0x20 }, { WAIT_IDLE },
2393{ 0xe, 0xf3 }, { 0xf, 0x20 }, { WAIT_IDLE },
2394{ 0xe, 0xf4 }, { 0xf, 0x20 }, { WAIT_IDLE },
2395{ 0xe, 0xf5 }, { 0xf, 0x20 }, { WAIT_IDLE },
2396{ 0xe, 0xf6 }, { 0xf, 0x20 }, { WAIT_IDLE },
2397{ 0xe, 0xf7 }, { 0xf, 0x20 }, { WAIT_IDLE },
2398{ 0xe, 0x10 }, { 0xf, 0xff }, { WAIT_IDLE },
2399{ 0xe, 0x11 }, { 0xf, 0xff }, { WAIT_IDLE },
2400{ 0xe, 0x12 }, { 0xf, 0xff }, { WAIT_IDLE },
2401{ 0xe, 0x13 }, { 0xf, 0xff }, { WAIT_IDLE },
2402{ 0xe, 0x14 }, { 0xf, 0xff }, { WAIT_IDLE },
2403{ 0xe, 0x15 }, { 0xf, 0xff }, { WAIT_IDLE },
2404{ 0xe, 0x16 }, { 0xf, 0xff }, { WAIT_IDLE },
2405{ 0xe, 0x17 }, { 0xf, 0xff }, { WAIT_IDLE },
2406{ 0xe, 0x20 }, { 0xf, 0xff }, { WAIT_IDLE },
2407{ 0xe, 0x21 }, { 0xf, 0xff }, { WAIT_IDLE },
2408{ 0xe, 0x22 }, { 0xf, 0xff }, { WAIT_IDLE },
2409{ 0xe, 0x23 }, { 0xf, 0xff }, { WAIT_IDLE },
2410{ 0xe, 0x24 }, { 0xf, 0xff }, { WAIT_IDLE },
2411{ 0xe, 0x25 }, { 0xf, 0xff }, { WAIT_IDLE },
2412{ 0xe, 0x26 }, { 0xf, 0xff }, { WAIT_IDLE },
2413{ 0xe, 0x27 }, { 0xf, 0xff }, { WAIT_IDLE },
2414{ 0xe, 0x30 }, { 0xf, 0x00 }, { WAIT_IDLE },
2415{ 0xe, 0x31 }, { 0xf, 0x00 }, { WAIT_IDLE },
2416{ 0xe, 0x32 }, { 0xf, 0x00 }, { WAIT_IDLE },
2417{ 0xe, 0x33 }, { 0xf, 0x00 }, { WAIT_IDLE },
2418{ 0xe, 0x34 }, { 0xf, 0x00 }, { WAIT_IDLE },
2419{ 0xe, 0x35 }, { 0xf, 0x00 }, { WAIT_IDLE },
2420{ 0xe, 0x36 }, { 0xf, 0x00 }, { WAIT_IDLE },
2421{ 0xe, 0x37 }, { 0xf, 0x00 }, { WAIT_IDLE },
2422{ 0xe, 0x40 }, { 0xf, 0x00 }, { WAIT_IDLE },
2423{ 0xe, 0x41 }, { 0xf, 0x00 }, { WAIT_IDLE },
2424{ 0xe, 0x42 }, { 0xf, 0x00 }, { WAIT_IDLE },
2425{ 0xe, 0x43 }, { 0xf, 0x00 }, { WAIT_IDLE },
2426{ 0xe, 0x44 }, { 0xf, 0x00 }, { WAIT_IDLE },
2427{ 0xe, 0x45 }, { 0xf, 0x00 }, { WAIT_IDLE },
2428{ 0xe, 0x46 }, { 0xf, 0x00 }, { WAIT_IDLE },
2429{ 0xe, 0x47 }, { 0xf, 0x00 }, { WAIT_IDLE },
2430{ 0xe, 0x50 }, { 0xf, 0x00 }, { WAIT_IDLE },
2431{ 0xe, 0x51 }, { 0xf, 0x00 }, { WAIT_IDLE },
2432{ 0xe, 0x52 }, { 0xf, 0x00 }, { WAIT_IDLE },
2433{ 0xe, 0x53 }, { 0xf, 0x00 }, { WAIT_IDLE },
2434{ 0xe, 0x54 }, { 0xf, 0x00 }, { WAIT_IDLE },
2435{ 0xe, 0x55 }, { 0xf, 0x00 }, { WAIT_IDLE },
2436{ 0xe, 0x56 }, { 0xf, 0x00 }, { WAIT_IDLE },
2437{ 0xe, 0x57 }, { 0xf, 0x00 }, { WAIT_IDLE },
2438{ 0xe, 0x60 }, { 0xf, 0x00 }, { WAIT_IDLE },
2439{ 0xe, 0x61 }, { 0xf, 0x00 }, { WAIT_IDLE },
2440{ 0xe, 0x62 }, { 0xf, 0x00 }, { WAIT_IDLE },
2441{ 0xe, 0x63 }, { 0xf, 0x00 }, { WAIT_IDLE },
2442{ 0xe, 0x64 }, { 0xf, 0x00 }, { WAIT_IDLE },
2443{ 0xe, 0x65 }, { 0xf, 0x00 }, { WAIT_IDLE },
2444{ 0xe, 0x66 }, { 0xf, 0x00 }, { WAIT_IDLE },
2445{ 0xe, 0x67 }, { 0xf, 0x00 }, { WAIT_IDLE },
2446{ 0xe, 0x70 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2447{ 0xe, 0x71 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2448{ 0xe, 0x72 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2449{ 0xe, 0x73 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2450{ 0xe, 0x74 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2451{ 0xe, 0x75 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2452{ 0xe, 0x76 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2453{ 0xe, 0x77 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2454{ 0xe, 0x80 }, { 0xf, 0x00 }, { WAIT_IDLE },
2455{ 0xe, 0x81 }, { 0xf, 0x00 }, { WAIT_IDLE },
2456{ 0xe, 0x82 }, { 0xf, 0x00 }, { WAIT_IDLE },
2457{ 0xe, 0x83 }, { 0xf, 0x00 }, { WAIT_IDLE },
2458{ 0xe, 0x84 }, { 0xf, 0x00 }, { WAIT_IDLE },
2459{ 0xe, 0x85 }, { 0xf, 0x00 }, { WAIT_IDLE },
2460{ 0xe, 0x86 }, { 0xf, 0x00 }, { WAIT_IDLE },
2461{ 0xe, 0x87 }, { 0xf, 0x00 }, { WAIT_IDLE },
2462{ 0xe, 0x90 }, { 0xf, 0x00 }, { WAIT_IDLE },
2463{ 0xe, 0x91 }, { 0xf, 0x00 }, { WAIT_IDLE },
2464{ 0xe, 0x92 }, { 0xf, 0x00 }, { WAIT_IDLE },
2465{ 0xe, 0x93 }, { 0xf, 0x00 }, { WAIT_IDLE },
2466{ 0xe, 0x94 }, { 0xf, 0x00 }, { WAIT_IDLE },
2467{ 0xe, 0x95 }, { 0xf, 0x00 }, { WAIT_IDLE },
2468{ 0xe, 0x96 }, { 0xf, 0x00 }, { WAIT_IDLE },
2469{ 0xe, 0x97 }, { 0xf, 0x00 }, { WAIT_IDLE },
2470{ 0xe, 0xa0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2471{ 0xe, 0xa1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2472{ 0xe, 0xa2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2473{ 0xe, 0xa3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2474{ 0xe, 0xa4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2475{ 0xe, 0xa5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2476{ 0xe, 0xa6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2477{ 0xe, 0xa7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2478{ 0xe, 0xc0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2479{ 0xe, 0xc1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2480{ 0xe, 0xc2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2481{ 0xe, 0xc3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2482{ 0xe, 0xc4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2483{ 0xe, 0xc5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2484{ 0xe, 0xc6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2485{ 0xe, 0xc7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2486{ 0xe, 0xd0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2487{ 0xe, 0xd1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2488{ 0xe, 0xd2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2489{ 0xe, 0xd3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2490{ 0xe, 0xd4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2491{ 0xe, 0xd5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2492{ 0xe, 0xd6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2493{ 0xe, 0xd7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2494{ 0xe, 0xe0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2495{ 0xe, 0xe1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2496{ 0xe, 0xe2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2497{ 0xe, 0xe3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2498{ 0xe, 0xe4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2499{ 0xe, 0xe5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2500{ 0xe, 0xe6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2501{ 0xe, 0xe7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2502{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
2503{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2504{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
2505{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2506{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
2507{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2508{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
2509{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2510{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
2511{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2512{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
2513{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2514{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
2515{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2516{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
2517{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2518
2519{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2520{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2521{ 0xb, 0x07 }, { 0xa, 0x45 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2522{ 0xb, 0x07 }, { 0xa, 0x48 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2523{ 0xb, 0x07 }, { 0xa, 0x7b }, { 0xd, 0x04 }, { 0xc, 0xcc }, { WAIT_IDLE },
2524{ 0xb, 0x07 }, { 0xa, 0x7d }, { 0xd, 0x04 }, { 0xc, 0xcc }, { WAIT_IDLE },
2525{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2526{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2527{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2528{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2529{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2530{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2531{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2532{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2533
2534{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x00 },
2535{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x00 },
2536{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x28 },
2537{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x28 },
2538{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x51 },
2539{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x51 },
2540{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x7a },
2541{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x7a },
2542{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xa3 },
2543{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xa3 },
2544{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xcc },
2545{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xcc },
2546{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xf5 },
2547{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xf5 },
2548{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x1e },
2549{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x1e },
2550{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x47 },
2551{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x47 },
2552{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x70 },
2553{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x70 },
2554{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x99 },
2555{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x99 },
2556{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0xc2 },
2557{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0xc2 },
2558{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0xeb },
2559{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0xeb },
2560{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x14 },
2561{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x14 },
2562{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x3d },
2563{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x3d },
2564{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x66 },
2565{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x66 },
2566{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x8f },
2567{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x8f },
2568{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0xb8 },
2569{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0xb8 },
2570{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0xe1 },
2571{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0xe1 },
2572{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x0a },
2573{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x0a },
2574{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x33 },
2575{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x33 },
2576{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x5c },
2577{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x5c },
2578{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x85 },
2579{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x85 },
2580{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0xae },
2581{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0xae },
2582{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0xd7 },
2583{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0xd7 },
2584{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x00 },
2585{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x00 },
2586{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x28 },
2587{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x28 },
2588{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x51 },
2589{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x51 },
2590{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x7a },
2591{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x7a },
2592{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xa3 },
2593{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xa3 },
2594{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xcc },
2595{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xcc },
2596{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xf5 },
2597{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xf5 },
2598{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x1e },
2599{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x1e },
2600{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x47 },
2601{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x47 },
2602{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x70 },
2603{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x70 },
2604{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x99 },
2605{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x99 },
2606{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0xc2 },
2607{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0xc2 },
2608{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0xeb },
2609{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0xeb },
2610{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x14 },
2611{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x14 },
2612{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x3d },
2613{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x3d },
2614{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x66 },
2615{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x66 },
2616{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x8f },
2617{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x8f },
2618{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0xb8 },
2619{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0xb8 },
2620{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0xe1 },
2621{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0xe1 },
2622{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x0a },
2623{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x0a },
2624{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x33 },
2625{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x33 },
2626{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x5c },
2627{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x5c },
2628{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x85 },
2629{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x85 },
2630{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0xae },
2631{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0xae },
2632{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0xd7 },
2633{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0xd7 },
2634{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x00 },
2635{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x00 },
2636{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x28 },
2637{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x28 },
2638{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x51 },
2639{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x51 },
2640{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x7a },
2641{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x7a },
2642{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xa3 },
2643{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xa3 },
2644{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xcc },
2645{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xcc },
2646{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xf5 },
2647{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xf5 },
2648{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x1e },
2649{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x1e },
2650{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x47 },
2651{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x47 },
2652{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x70 },
2653{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x70 },
2654{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x99 },
2655{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x99 },
2656{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0xc2 },
2657{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0xc2 },
2658{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0xeb },
2659{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0xeb },
2660{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x14 },
2661{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x14 },
2662{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x3d },
2663{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x3d },
2664{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x66 },
2665{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x66 },
2666{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x8f },
2667{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x8f },
2668{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0xb8 },
2669{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0xb8 },
2670{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0xe1 },
2671{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0xe1 },
2672{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x0a },
2673{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x0a },
2674{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x33 },
2675{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x33 },
2676{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x5c },
2677{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x5c },
2678{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x85 },
2679{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x85 },
2680{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0xae },
2681{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0xae },
2682{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0xd7 },
2683{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0xd7 },
2684{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x00 },
2685{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x00 },
2686{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x28 },
2687{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x28 },
2688{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x51 },
2689{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x51 },
2690{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x7a },
2691{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x7a },
2692{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xa3 },
2693{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xa3 },
2694{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xcc },
2695{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xcc },
2696{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xf5 },
2697{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xf5 },
2698{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x1e },
2699{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x1e },
2700{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x47 },
2701{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x47 },
2702{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x70 },
2703{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x70 },
2704{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x99 },
2705{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x99 },
2706{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0xc2 },
2707{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0xc2 },
2708{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0xeb },
2709{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0xeb },
2710{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x14 },
2711{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x14 },
2712{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x3d },
2713{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x3d },
2714{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x66 },
2715{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x66 },
2716{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x8f },
2717{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x8f },
2718{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0xb8 },
2719{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0xb8 },
2720{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0xe1 },
2721{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0xe1 },
2722{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x0a },
2723{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x0a },
2724{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x33 },
2725{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x33 },
2726{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x5c },
2727{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x5c },
2728{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x85 },
2729{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x85 },
2730{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xae },
2731{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xae },
2732{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xd7 },
2733{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xd7 },
2734{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xff },
2735{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xff },
2736
2737/* mute off */
2738{ 0x8, 0x00 }, { WAIT_IDLE }
2739};
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
index 97ee127ac33d..78288dbfc17a 100644
--- a/sound/pci/ac97/ac97_codec.c
+++ b/sound/pci/ac97/ac97_codec.c
@@ -2122,7 +2122,7 @@ int snd_ac97_mixer(struct snd_ac97_bus *bus, struct snd_ac97_template *template,
2122 } 2122 }
2123 /* nothing should be in powerdown mode */ 2123 /* nothing should be in powerdown mode */
2124 snd_ac97_write_cache(ac97, AC97_GENERAL_PURPOSE, 0); 2124 snd_ac97_write_cache(ac97, AC97_GENERAL_PURPOSE, 0);
2125 end_time = jiffies + msecs_to_jiffies(100); 2125 end_time = jiffies + msecs_to_jiffies(120);
2126 do { 2126 do {
2127 if ((snd_ac97_read(ac97, AC97_POWERDOWN) & 0x0f) == 0x0f) 2127 if ((snd_ac97_read(ac97, AC97_POWERDOWN) & 0x0f) == 0x0f)
2128 goto __ready_ok; 2128 goto __ready_ok;
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c
index 9ce8548c03e4..71515ddb4593 100644
--- a/sound/pci/atiixp.c
+++ b/sound/pci/atiixp.c
@@ -1393,6 +1393,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
1393 .name = "HP nx6125", 1393 .name = "HP nx6125",
1394 .type = AC97_TUNE_MUTE_LED 1394 .type = AC97_TUNE_MUTE_LED
1395 }, 1395 },
1396 {
1397 .subvendor = 0x103c,
1398 .subdevice = 0x3091,
1399 .name = "unknown HP",
1400 .type = AC97_TUNE_MUTE_LED
1401 },
1396 { } /* terminator */ 1402 { } /* terminator */
1397}; 1403};
1398 1404
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index 191e1cd9997d..4b302d86f5f2 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -2493,24 +2493,17 @@ static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, un
2493 case SNDRV_EMU10K1_IOCTL_CODE_POKE: 2493 case SNDRV_EMU10K1_IOCTL_CODE_POKE:
2494 if (!capable(CAP_SYS_ADMIN)) 2494 if (!capable(CAP_SYS_ADMIN))
2495 return -EPERM; 2495 return -EPERM;
2496 icode = kmalloc(sizeof(*icode), GFP_KERNEL); 2496
2497 if (icode == NULL) 2497 icode = memdup_user(argp, sizeof(*icode));
2498 return -ENOMEM; 2498 if (IS_ERR(icode))
2499 if (copy_from_user(icode, argp, sizeof(*icode))) { 2499 return PTR_ERR(icode);
2500 kfree(icode);
2501 return -EFAULT;
2502 }
2503 res = snd_emu10k1_icode_poke(emu, icode); 2500 res = snd_emu10k1_icode_poke(emu, icode);
2504 kfree(icode); 2501 kfree(icode);
2505 return res; 2502 return res;
2506 case SNDRV_EMU10K1_IOCTL_CODE_PEEK: 2503 case SNDRV_EMU10K1_IOCTL_CODE_PEEK:
2507 icode = kmalloc(sizeof(*icode), GFP_KERNEL); 2504 icode = memdup_user(argp, sizeof(*icode));
2508 if (icode == NULL) 2505 if (IS_ERR(icode))
2509 return -ENOMEM; 2506 return PTR_ERR(icode);
2510 if (copy_from_user(icode, argp, sizeof(*icode))) {
2511 kfree(icode);
2512 return -EFAULT;
2513 }
2514 res = snd_emu10k1_icode_peek(emu, icode); 2507 res = snd_emu10k1_icode_peek(emu, icode);
2515 if (res == 0 && copy_to_user(argp, icode, sizeof(*icode))) { 2508 if (res == 0 && copy_to_user(argp, icode, sizeof(*icode))) {
2516 kfree(icode); 2509 kfree(icode);
@@ -2519,24 +2512,16 @@ static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, un
2519 kfree(icode); 2512 kfree(icode);
2520 return res; 2513 return res;
2521 case SNDRV_EMU10K1_IOCTL_PCM_POKE: 2514 case SNDRV_EMU10K1_IOCTL_PCM_POKE:
2522 ipcm = kmalloc(sizeof(*ipcm), GFP_KERNEL); 2515 ipcm = memdup_user(argp, sizeof(*ipcm));
2523 if (ipcm == NULL) 2516 if (IS_ERR(ipcm))
2524 return -ENOMEM; 2517 return PTR_ERR(ipcm);
2525 if (copy_from_user(ipcm, argp, sizeof(*ipcm))) {
2526 kfree(ipcm);
2527 return -EFAULT;
2528 }
2529 res = snd_emu10k1_ipcm_poke(emu, ipcm); 2518 res = snd_emu10k1_ipcm_poke(emu, ipcm);
2530 kfree(ipcm); 2519 kfree(ipcm);
2531 return res; 2520 return res;
2532 case SNDRV_EMU10K1_IOCTL_PCM_PEEK: 2521 case SNDRV_EMU10K1_IOCTL_PCM_PEEK:
2533 ipcm = kzalloc(sizeof(*ipcm), GFP_KERNEL); 2522 ipcm = memdup_user(argp, sizeof(*ipcm));
2534 if (ipcm == NULL) 2523 if (IS_ERR(ipcm))
2535 return -ENOMEM; 2524 return PTR_ERR(ipcm);
2536 if (copy_from_user(ipcm, argp, sizeof(*ipcm))) {
2537 kfree(ipcm);
2538 return -EFAULT;
2539 }
2540 res = snd_emu10k1_ipcm_peek(emu, ipcm); 2525 res = snd_emu10k1_ipcm_peek(emu, ipcm);
2541 if (res == 0 && copy_to_user(argp, ipcm, sizeof(*ipcm))) { 2526 if (res == 0 && copy_to_user(argp, ipcm, sizeof(*ipcm))) {
2542 kfree(ipcm); 2527 kfree(ipcm);
diff --git a/sound/pci/emu10k1/io.c b/sound/pci/emu10k1/io.c
index 4bfc31d1b281..c1a5aa15af8f 100644
--- a/sound/pci/emu10k1/io.c
+++ b/sound/pci/emu10k1/io.c
@@ -490,7 +490,7 @@ void snd_emu10k1_wait(struct snd_emu10k1 *emu, unsigned int wait)
490 if (newtime != curtime) 490 if (newtime != curtime)
491 break; 491 break;
492 } 492 }
493 if (count >= 16384) 493 if (count > 16384)
494 break; 494 break;
495 curtime = newtime; 495 curtime = newtime;
496 } 496 }
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index a4e5e5952115..8820faf6c9d8 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -642,19 +642,21 @@ static int get_codec_name(struct hda_codec *codec)
642 */ 642 */
643static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec) 643static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec)
644{ 644{
645 int i, total_nodes; 645 int i, total_nodes, function_id;
646 hda_nid_t nid; 646 hda_nid_t nid;
647 647
648 total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid); 648 total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid);
649 for (i = 0; i < total_nodes; i++, nid++) { 649 for (i = 0; i < total_nodes; i++, nid++) {
650 codec->function_id = snd_hda_param_read(codec, nid, 650 function_id = snd_hda_param_read(codec, nid,
651 AC_PAR_FUNCTION_TYPE) & 0xff; 651 AC_PAR_FUNCTION_TYPE) & 0xff;
652 switch (codec->function_id) { 652 switch (function_id) {
653 case AC_GRP_AUDIO_FUNCTION: 653 case AC_GRP_AUDIO_FUNCTION:
654 codec->afg = nid; 654 codec->afg = nid;
655 codec->function_id = function_id;
655 break; 656 break;
656 case AC_GRP_MODEM_FUNCTION: 657 case AC_GRP_MODEM_FUNCTION:
657 codec->mfg = nid; 658 codec->mfg = nid;
659 codec->function_id = function_id;
658 break; 660 break;
659 default: 661 default:
660 break; 662 break;
@@ -2250,7 +2252,11 @@ int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
2250 err = bus->ops.command(bus, res); 2252 err = bus->ops.command(bus, res);
2251 if (!err) { 2253 if (!err) {
2252 struct hda_cache_head *c; 2254 struct hda_cache_head *c;
2253 u32 key = build_cmd_cache_key(nid, verb); 2255 u32 key;
2256 /* parm may contain the verb stuff for get/set amp */
2257 verb = verb | (parm >> 8);
2258 parm &= 0xff;
2259 key = build_cmd_cache_key(nid, verb);
2254 c = get_alloc_hash(&codec->cmd_cache, key); 2260 c = get_alloc_hash(&codec->cmd_cache, key);
2255 if (c) 2261 if (c)
2256 c->val = parm; 2262 c->val = parm;
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 30829ee920c3..21e99cfa8c49 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -312,6 +312,8 @@ struct azx_dev {
312 unsigned int period_bytes; /* size of the period in bytes */ 312 unsigned int period_bytes; /* size of the period in bytes */
313 unsigned int frags; /* number for period in the play buffer */ 313 unsigned int frags; /* number for period in the play buffer */
314 unsigned int fifo_size; /* FIFO size */ 314 unsigned int fifo_size; /* FIFO size */
315 unsigned long start_jiffies; /* start + minimum jiffies */
316 unsigned long min_jiffies; /* minimum jiffies before position is valid */
315 317
316 void __iomem *sd_addr; /* stream descriptor pointer */ 318 void __iomem *sd_addr; /* stream descriptor pointer */
317 319
@@ -330,7 +332,7 @@ struct azx_dev {
330 unsigned int opened :1; 332 unsigned int opened :1;
331 unsigned int running :1; 333 unsigned int running :1;
332 unsigned int irq_pending :1; 334 unsigned int irq_pending :1;
333 unsigned int irq_ignore :1; 335 unsigned int start_flag: 1; /* stream full start flag */
334 /* 336 /*
335 * For VIA: 337 * For VIA:
336 * A flag to ensure DMA position is 0 338 * A flag to ensure DMA position is 0
@@ -975,7 +977,7 @@ static irqreturn_t azx_interrupt(int irq, void *dev_id)
975 struct azx *chip = dev_id; 977 struct azx *chip = dev_id;
976 struct azx_dev *azx_dev; 978 struct azx_dev *azx_dev;
977 u32 status; 979 u32 status;
978 int i; 980 int i, ok;
979 981
980 spin_lock(&chip->reg_lock); 982 spin_lock(&chip->reg_lock);
981 983
@@ -991,18 +993,14 @@ static irqreturn_t azx_interrupt(int irq, void *dev_id)
991 azx_sd_writeb(azx_dev, SD_STS, SD_INT_MASK); 993 azx_sd_writeb(azx_dev, SD_STS, SD_INT_MASK);
992 if (!azx_dev->substream || !azx_dev->running) 994 if (!azx_dev->substream || !azx_dev->running)
993 continue; 995 continue;
994 /* ignore the first dummy IRQ (due to pos_adj) */
995 if (azx_dev->irq_ignore) {
996 azx_dev->irq_ignore = 0;
997 continue;
998 }
999 /* check whether this IRQ is really acceptable */ 996 /* check whether this IRQ is really acceptable */
1000 if (azx_position_ok(chip, azx_dev)) { 997 ok = azx_position_ok(chip, azx_dev);
998 if (ok == 1) {
1001 azx_dev->irq_pending = 0; 999 azx_dev->irq_pending = 0;
1002 spin_unlock(&chip->reg_lock); 1000 spin_unlock(&chip->reg_lock);
1003 snd_pcm_period_elapsed(azx_dev->substream); 1001 snd_pcm_period_elapsed(azx_dev->substream);
1004 spin_lock(&chip->reg_lock); 1002 spin_lock(&chip->reg_lock);
1005 } else if (chip->bus && chip->bus->workq) { 1003 } else if (ok == 0 && chip->bus && chip->bus->workq) {
1006 /* bogus IRQ, process it later */ 1004 /* bogus IRQ, process it later */
1007 azx_dev->irq_pending = 1; 1005 azx_dev->irq_pending = 1;
1008 queue_work(chip->bus->workq, 1006 queue_work(chip->bus->workq,
@@ -1088,7 +1086,6 @@ static int azx_setup_periods(struct azx *chip,
1088 bdl = (u32 *)azx_dev->bdl.area; 1086 bdl = (u32 *)azx_dev->bdl.area;
1089 ofs = 0; 1087 ofs = 0;
1090 azx_dev->frags = 0; 1088 azx_dev->frags = 0;
1091 azx_dev->irq_ignore = 0;
1092 pos_adj = bdl_pos_adj[chip->dev_index]; 1089 pos_adj = bdl_pos_adj[chip->dev_index];
1093 if (pos_adj > 0) { 1090 if (pos_adj > 0) {
1094 struct snd_pcm_runtime *runtime = substream->runtime; 1091 struct snd_pcm_runtime *runtime = substream->runtime;
@@ -1109,7 +1106,6 @@ static int azx_setup_periods(struct azx *chip,
1109 &bdl, ofs, pos_adj, 1); 1106 &bdl, ofs, pos_adj, 1);
1110 if (ofs < 0) 1107 if (ofs < 0)
1111 goto error; 1108 goto error;
1112 azx_dev->irq_ignore = 1;
1113 } 1109 }
1114 } else 1110 } else
1115 pos_adj = 0; 1111 pos_adj = 0;
@@ -1155,6 +1151,9 @@ static void azx_stream_reset(struct azx *chip, struct azx_dev *azx_dev)
1155 while (((val = azx_sd_readb(azx_dev, SD_CTL)) & SD_CTL_STREAM_RESET) && 1151 while (((val = azx_sd_readb(azx_dev, SD_CTL)) & SD_CTL_STREAM_RESET) &&
1156 --timeout) 1152 --timeout)
1157 ; 1153 ;
1154
1155 /* reset first position - may not be synced with hw at this time */
1156 *azx_dev->posbuf = 0;
1158} 1157}
1159 1158
1160/* 1159/*
@@ -1409,7 +1408,6 @@ static int azx_pcm_open(struct snd_pcm_substream *substream)
1409 snd_pcm_set_sync(substream); 1408 snd_pcm_set_sync(substream);
1410 mutex_unlock(&chip->open_mutex); 1409 mutex_unlock(&chip->open_mutex);
1411 1410
1412 azx_stream_reset(chip, azx_dev);
1413 return 0; 1411 return 0;
1414} 1412}
1415 1413
@@ -1474,6 +1472,7 @@ static int azx_pcm_prepare(struct snd_pcm_substream *substream)
1474 unsigned int bufsize, period_bytes, format_val; 1472 unsigned int bufsize, period_bytes, format_val;
1475 int err; 1473 int err;
1476 1474
1475 azx_stream_reset(chip, azx_dev);
1477 format_val = snd_hda_calc_stream_format(runtime->rate, 1476 format_val = snd_hda_calc_stream_format(runtime->rate,
1478 runtime->channels, 1477 runtime->channels,
1479 runtime->format, 1478 runtime->format,
@@ -1502,6 +1501,8 @@ static int azx_pcm_prepare(struct snd_pcm_substream *substream)
1502 return err; 1501 return err;
1503 } 1502 }
1504 1503
1504 azx_dev->min_jiffies = (runtime->period_size * HZ) /
1505 (runtime->rate * 2);
1505 azx_setup_controller(chip, azx_dev); 1506 azx_setup_controller(chip, azx_dev);
1506 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 1507 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
1507 azx_dev->fifo_size = azx_sd_readw(azx_dev, SD_FIFOSIZE) + 1; 1508 azx_dev->fifo_size = azx_sd_readw(azx_dev, SD_FIFOSIZE) + 1;
@@ -1518,13 +1519,14 @@ static int azx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
1518 struct azx *chip = apcm->chip; 1519 struct azx *chip = apcm->chip;
1519 struct azx_dev *azx_dev; 1520 struct azx_dev *azx_dev;
1520 struct snd_pcm_substream *s; 1521 struct snd_pcm_substream *s;
1521 int start, nsync = 0, sbits = 0; 1522 int rstart = 0, start, nsync = 0, sbits = 0;
1522 int nwait, timeout; 1523 int nwait, timeout;
1523 1524
1524 switch (cmd) { 1525 switch (cmd) {
1526 case SNDRV_PCM_TRIGGER_START:
1527 rstart = 1;
1525 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: 1528 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
1526 case SNDRV_PCM_TRIGGER_RESUME: 1529 case SNDRV_PCM_TRIGGER_RESUME:
1527 case SNDRV_PCM_TRIGGER_START:
1528 start = 1; 1530 start = 1;
1529 break; 1531 break;
1530 case SNDRV_PCM_TRIGGER_PAUSE_PUSH: 1532 case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
@@ -1554,6 +1556,10 @@ static int azx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
1554 if (s->pcm->card != substream->pcm->card) 1556 if (s->pcm->card != substream->pcm->card)
1555 continue; 1557 continue;
1556 azx_dev = get_azx_dev(s); 1558 azx_dev = get_azx_dev(s);
1559 if (rstart) {
1560 azx_dev->start_flag = 1;
1561 azx_dev->start_jiffies = jiffies + azx_dev->min_jiffies;
1562 }
1557 if (start) 1563 if (start)
1558 azx_stream_start(chip, azx_dev); 1564 azx_stream_start(chip, azx_dev);
1559 else 1565 else
@@ -1703,6 +1709,11 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
1703{ 1709{
1704 unsigned int pos; 1710 unsigned int pos;
1705 1711
1712 if (azx_dev->start_flag &&
1713 time_before_eq(jiffies, azx_dev->start_jiffies))
1714 return -1; /* bogus (too early) interrupt */
1715 azx_dev->start_flag = 0;
1716
1706 pos = azx_get_position(chip, azx_dev); 1717 pos = azx_get_position(chip, azx_dev);
1707 if (chip->position_fix == POS_FIX_AUTO) { 1718 if (chip->position_fix == POS_FIX_AUTO) {
1708 if (!pos) { 1719 if (!pos) {
@@ -2260,11 +2271,11 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci,
2260 gcap &= ~0x01; 2271 gcap &= ~0x01;
2261 2272
2262 /* allow 64bit DMA address if supported by H/W */ 2273 /* allow 64bit DMA address if supported by H/W */
2263 if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_64BIT_MASK)) 2274 if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_BIT_MASK(64)))
2264 pci_set_consistent_dma_mask(pci, DMA_64BIT_MASK); 2275 pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(64));
2265 else { 2276 else {
2266 pci_set_dma_mask(pci, DMA_32BIT_MASK); 2277 pci_set_dma_mask(pci, DMA_BIT_MASK(32));
2267 pci_set_consistent_dma_mask(pci, DMA_32BIT_MASK); 2278 pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(32));
2268 } 2279 }
2269 2280
2270 /* read number of streams from GCAP register instead of using 2281 /* read number of streams from GCAP register instead of using
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 38ad3f7b040f..84cc49ca9148 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -3817,6 +3817,49 @@ static struct hda_verb ad1884a_laptop_verbs[] = {
3817 { } /* end */ 3817 { } /* end */
3818}; 3818};
3819 3819
3820static struct hda_verb ad1884a_mobile_verbs[] = {
3821 /* DACs; unmute as default */
3822 {0x03, AC_VERB_SET_AMP_GAIN_MUTE, 0x27}, /* 0dB */
3823 {0x04, AC_VERB_SET_AMP_GAIN_MUTE, 0x27}, /* 0dB */
3824 /* Port-A (HP) mixer - route only from analog mixer */
3825 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
3826 {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
3827 /* Port-A pin */
3828 {0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
3829 /* Port-A (HP) pin - always unmuted */
3830 {0x11, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
3831 /* Port-B (mic jack) pin */
3832 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
3833 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x7002}, /* raise mic as default */
3834 /* Port-C (int mic) pin */
3835 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
3836 {0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0x7002}, /* raise mic as default */
3837 /* Port-F (int speaker) mixer - route only from analog mixer */
3838 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
3839 {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
3840 /* Port-F pin */
3841 {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
3842 {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
3843 /* Analog mixer; mute as default */
3844 {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
3845 {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
3846 {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)},
3847 {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)},
3848 {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)},
3849 {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(5)},
3850 /* Analog Mix output amp */
3851 {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
3852 /* capture sources */
3853 /* {0x0c, AC_VERB_SET_CONNECT_SEL, 0x0}, */ /* set via unsol */
3854 {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
3855 {0x0d, AC_VERB_SET_CONNECT_SEL, 0x0},
3856 {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
3857 /* unsolicited event for pin-sense */
3858 {0x11, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | AD1884A_HP_EVENT},
3859 {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | AD1884A_MIC_EVENT},
3860 { } /* end */
3861};
3862
3820/* 3863/*
3821 * Thinkpad X300 3864 * Thinkpad X300
3822 * 0x11 - HP 3865 * 0x11 - HP
@@ -3977,10 +4020,18 @@ static int patch_ad1884a(struct hda_codec *codec)
3977 spec->input_mux = &ad1884a_laptop_capture_source; 4020 spec->input_mux = &ad1884a_laptop_capture_source;
3978 codec->patch_ops.unsol_event = ad1884a_hp_unsol_event; 4021 codec->patch_ops.unsol_event = ad1884a_hp_unsol_event;
3979 codec->patch_ops.init = ad1884a_hp_init; 4022 codec->patch_ops.init = ad1884a_hp_init;
4023 /* set the upper-limit for mixer amp to 0dB for avoiding the
4024 * possible damage by overloading
4025 */
4026 snd_hda_override_amp_caps(codec, 0x20, HDA_INPUT,
4027 (0x17 << AC_AMPCAP_OFFSET_SHIFT) |
4028 (0x17 << AC_AMPCAP_NUM_STEPS_SHIFT) |
4029 (0x05 << AC_AMPCAP_STEP_SIZE_SHIFT) |
4030 (1 << AC_AMPCAP_MUTE_SHIFT));
3980 break; 4031 break;
3981 case AD1884A_MOBILE: 4032 case AD1884A_MOBILE:
3982 spec->mixers[0] = ad1884a_mobile_mixers; 4033 spec->mixers[0] = ad1884a_mobile_mixers;
3983 spec->init_verbs[spec->num_init_verbs++] = ad1884a_laptop_verbs; 4034 spec->init_verbs[0] = ad1884a_mobile_verbs;
3984 spec->multiout.dig_out_nid = 0; 4035 spec->multiout.dig_out_nid = 0;
3985 codec->patch_ops.unsol_event = ad1884a_hp_unsol_event; 4036 codec->patch_ops.unsol_event = ad1884a_hp_unsol_event;
3986 codec->patch_ops.init = ad1884a_hp_init; 4037 codec->patch_ops.init = ad1884a_hp_init;
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index 1f2ad76ca94b..56ce19e68cb5 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -350,12 +350,20 @@ static int conexant_mux_enum_put(struct snd_kcontrol *kcontrol,
350} 350}
351 351
352#ifdef CONFIG_SND_JACK 352#ifdef CONFIG_SND_JACK
353static void conexant_free_jack_priv(struct snd_jack *jack)
354{
355 struct conexant_jack *jacks = jack->private_data;
356 jacks->nid = 0;
357 jacks->jack = NULL;
358}
359
353static int conexant_add_jack(struct hda_codec *codec, 360static int conexant_add_jack(struct hda_codec *codec,
354 hda_nid_t nid, int type) 361 hda_nid_t nid, int type)
355{ 362{
356 struct conexant_spec *spec; 363 struct conexant_spec *spec;
357 struct conexant_jack *jack; 364 struct conexant_jack *jack;
358 const char *name; 365 const char *name;
366 int err;
359 367
360 spec = codec->spec; 368 spec = codec->spec;
361 snd_array_init(&spec->jacks, sizeof(*jack), 32); 369 snd_array_init(&spec->jacks, sizeof(*jack), 32);
@@ -368,7 +376,12 @@ static int conexant_add_jack(struct hda_codec *codec,
368 jack->nid = nid; 376 jack->nid = nid;
369 jack->type = type; 377 jack->type = type;
370 378
371 return snd_jack_new(codec->bus->card, name, type, &jack->jack); 379 err = snd_jack_new(codec->bus->card, name, type, &jack->jack);
380 if (err < 0)
381 return err;
382 jack->jack->private_data = jack;
383 jack->jack->private_free = conexant_free_jack_priv;
384 return 0;
372} 385}
373 386
374static void conexant_report_jack(struct hda_codec *codec, hda_nid_t nid) 387static void conexant_report_jack(struct hda_codec *codec, hda_nid_t nid)
@@ -455,8 +468,10 @@ static void conexant_free(struct hda_codec *codec)
455 if (spec->jacks.list) { 468 if (spec->jacks.list) {
456 struct conexant_jack *jacks = spec->jacks.list; 469 struct conexant_jack *jacks = spec->jacks.list;
457 int i; 470 int i;
458 for (i = 0; i < spec->jacks.used; i++) 471 for (i = 0; i < spec->jacks.used; i++, jacks++) {
459 snd_device_free(codec->bus->card, &jacks[i].jack); 472 if (jacks->jack)
473 snd_device_free(codec->bus->card, jacks->jack);
474 }
460 snd_array_free(&spec->jacks); 475 snd_array_free(&spec->jacks);
461 } 476 }
462#endif 477#endif
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index f35e58a2d921..b8a0d3e79272 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -188,6 +188,8 @@ enum {
188 ALC663_ASUS_MODE4, 188 ALC663_ASUS_MODE4,
189 ALC663_ASUS_MODE5, 189 ALC663_ASUS_MODE5,
190 ALC663_ASUS_MODE6, 190 ALC663_ASUS_MODE6,
191 ALC272_DELL,
192 ALC272_DELL_ZM1,
191 ALC662_AUTO, 193 ALC662_AUTO,
192 ALC662_MODEL_LAST, 194 ALC662_MODEL_LAST,
193}; 195};
@@ -8742,10 +8744,9 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
8742 SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC883_LAPTOP_EAPD), 8744 SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC883_LAPTOP_EAPD),
8743 SND_PCI_QUIRK(0x15d9, 0x8780, "Supermicro PDSBA", ALC883_3ST_6ch), 8745 SND_PCI_QUIRK(0x15d9, 0x8780, "Supermicro PDSBA", ALC883_3ST_6ch),
8744 SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION), 8746 SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION),
8745 SND_PCI_QUIRK(0x1734, 0x1107, "FSC AMILO Xi2550", 8747 SND_PCI_QUIRK_MASK(0x1734, 0xfff0, 0x1100, "FSC AMILO Xi/Pi25xx",
8746 ALC883_FUJITSU_PI2515), 8748 ALC883_FUJITSU_PI2515),
8747 SND_PCI_QUIRK(0x1734, 0x1108, "Fujitsu AMILO Pi2515", ALC883_FUJITSU_PI2515), 8749 SND_PCI_QUIRK_MASK(0x1734, 0xfff0, 0x1130, "Fujitsu AMILO Xa35xx",
8748 SND_PCI_QUIRK(0x1734, 0x113d, "Fujitsu AMILO Xa3530",
8749 ALC888_FUJITSU_XA3530), 8750 ALC888_FUJITSU_XA3530),
8750 SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo 101e", ALC883_LENOVO_101E_2ch), 8751 SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo 101e", ALC883_LENOVO_101E_2ch),
8751 SND_PCI_QUIRK(0x17aa, 0x2085, "Lenovo NB0763", ALC883_LENOVO_NB0763), 8752 SND_PCI_QUIRK(0x17aa, 0x2085, "Lenovo NB0763", ALC883_LENOVO_NB0763),
@@ -12977,10 +12978,17 @@ static struct snd_pci_quirk alc269_cfg_tbl[] = {
12977 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), 12978 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1),
12978 SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", 12979 SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A",
12979 ALC269_ASUS_EEEPC_P703), 12980 ALC269_ASUS_EEEPC_P703),
12981 SND_PCI_QUIRK(0x1043, 0x1883, "ASUS F81Se", ALC269_ASUS_EEEPC_P703),
12982 SND_PCI_QUIRK(0x1043, 0x16a3, "ASUS F5Q", ALC269_ASUS_EEEPC_P703),
12983 SND_PCI_QUIRK(0x1043, 0x1723, "ASUS P80", ALC269_ASUS_EEEPC_P703),
12984 SND_PCI_QUIRK(0x1043, 0x1773, "ASUS U20A", ALC269_ASUS_EEEPC_P703),
12985 SND_PCI_QUIRK(0x1043, 0x1743, "ASUS U80", ALC269_ASUS_EEEPC_P703),
12986 SND_PCI_QUIRK(0x1043, 0x1653, "ASUS U50", ALC269_ASUS_EEEPC_P703),
12980 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901", 12987 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901",
12981 ALC269_ASUS_EEEPC_P901), 12988 ALC269_ASUS_EEEPC_P901),
12982 SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101", 12989 SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101",
12983 ALC269_ASUS_EEEPC_P901), 12990 ALC269_ASUS_EEEPC_P901),
12991 SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_ASUS_EEEPC_P901),
12984 SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), 12992 SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU),
12985 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), 12993 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK),
12986 {} 12994 {}
@@ -15211,12 +15219,23 @@ static hda_nid_t alc662_dac_nids[4] = {
15211 0x02, 0x03, 0x04 15219 0x02, 0x03, 0x04
15212}; 15220};
15213 15221
15222static hda_nid_t alc272_dac_nids[2] = {
15223 0x02, 0x03
15224};
15225
15214static hda_nid_t alc662_adc_nids[1] = { 15226static hda_nid_t alc662_adc_nids[1] = {
15215 /* ADC1-2 */ 15227 /* ADC1-2 */
15216 0x09, 15228 0x09,
15217}; 15229};
15218 15230
15231static hda_nid_t alc272_adc_nids[1] = {
15232 /* ADC1-2 */
15233 0x08,
15234};
15235
15219static hda_nid_t alc662_capsrc_nids[1] = { 0x22 }; 15236static hda_nid_t alc662_capsrc_nids[1] = { 0x22 };
15237static hda_nid_t alc272_capsrc_nids[1] = { 0x23 };
15238
15220 15239
15221/* input MUX */ 15240/* input MUX */
15222/* FIXME: should be a matrix-type input source selection */ 15241/* FIXME: should be a matrix-type input source selection */
@@ -15642,14 +15661,7 @@ static struct hda_verb alc662_init_verbs[] = {
15642 /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ 15661 /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */
15643 /* Input mixer */ 15662 /* Input mixer */
15644 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 15663 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
15645 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
15646 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)},
15647 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)},
15648
15649 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, 15664 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
15650 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
15651 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)},
15652 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)},
15653 15665
15654 /* always trun on EAPD */ 15666 /* always trun on EAPD */
15655 {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2}, 15667 {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2},
@@ -15844,12 +15856,48 @@ static struct hda_verb alc662_ecs_init_verbs[] = {
15844 {} 15856 {}
15845}; 15857};
15846 15858
15859static struct hda_verb alc272_dell_zm1_init_verbs[] = {
15860 {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15861 {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15862 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15863 {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15864 {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
15865 {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
15866 {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */
15867 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
15868 {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)},
15869 {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT},
15870 {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
15871 {}
15872};
15873
15874static struct hda_verb alc272_dell_init_verbs[] = {
15875 {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15876 {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15877 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15878 {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
15879 {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
15880 {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
15881 {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */
15882 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
15883 {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)},
15884 {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT},
15885 {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
15886 {}
15887};
15888
15847static struct snd_kcontrol_new alc662_auto_capture_mixer[] = { 15889static struct snd_kcontrol_new alc662_auto_capture_mixer[] = {
15848 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT), 15890 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT),
15849 HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT), 15891 HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT),
15850 { } /* end */ 15892 { } /* end */
15851}; 15893};
15852 15894
15895static struct snd_kcontrol_new alc272_auto_capture_mixer[] = {
15896 HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
15897 HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT),
15898 { } /* end */
15899};
15900
15853static void alc662_lenovo_101e_ispeaker_automute(struct hda_codec *codec) 15901static void alc662_lenovo_101e_ispeaker_automute(struct hda_codec *codec)
15854{ 15902{
15855 unsigned int present; 15903 unsigned int present;
@@ -16361,6 +16409,8 @@ static const char *alc662_models[ALC662_MODEL_LAST] = {
16361 16409
16362static struct snd_pci_quirk alc662_cfg_tbl[] = { 16410static struct snd_pci_quirk alc662_cfg_tbl[] = {
16363 SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS), 16411 SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS),
16412 SND_PCI_QUIRK(0x1028, 0x02d6, "DELL", ALC272_DELL),
16413 SND_PCI_QUIRK(0x1028, 0x02f4, "DELL ZM1", ALC272_DELL_ZM1),
16364 SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1), 16414 SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1),
16365 SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3), 16415 SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3),
16366 SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3), 16416 SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3),
@@ -16373,26 +16423,36 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = {
16373 SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6), 16423 SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6),
16374 SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6), 16424 SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6),
16375 SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2), 16425 SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2),
16426 SND_PCI_QUIRK(0x1043, 0x17b3, "ASUS F70SL", ALC663_ASUS_MODE3),
16427 SND_PCI_QUIRK(0x1043, 0x17c3, "ASUS UX20", ALC663_ASUS_M51VA),
16428 SND_PCI_QUIRK(0x1043, 0x17f3, "ASUS X58LE", ALC662_ASUS_MODE2),
16376 SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2), 16429 SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2),
16377 SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5), 16430 SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5),
16378 SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6), 16431 SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6),
16379 SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2), 16432 SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2),
16433 SND_PCI_QUIRK(0x1043, 0x1853, "ASUS F50Z", ALC663_ASUS_MODE1),
16380 SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2), 16434 SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2),
16381 SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2), 16435 SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2),
16382 SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA), 16436 SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA),
16383 /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/ 16437 /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/
16384 SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3), 16438 SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3),
16385 SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3), 16439 SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3),
16440 SND_PCI_QUIRK(0x1043, 0x18b3, "ASUS N80Vc", ALC663_ASUS_MODE1),
16441 SND_PCI_QUIRK(0x1043, 0x18d3, "ASUS N81Te", ALC663_ASUS_MODE1),
16442 SND_PCI_QUIRK(0x1043, 0x18f3, "ASUS N505Tp", ALC663_ASUS_MODE1),
16386 SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1), 16443 SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1),
16387 SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2), 16444 SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2),
16388 SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2), 16445 SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2),
16446 SND_PCI_QUIRK(0x1043, 0x1943, "ASUS Vx3V", ALC663_ASUS_MODE1),
16389 SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1), 16447 SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1),
16390 SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3), 16448 SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3),
16449 SND_PCI_QUIRK(0x1043, 0x1983, "ASUS N5051A", ALC663_ASUS_MODE1),
16391 SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1), 16450 SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1),
16392 SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V), 16451 SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V),
16393 /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/ 16452 /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/
16394 SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1), 16453 SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1),
16395 SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2), 16454 SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2),
16455 SND_PCI_QUIRK(0x1043, 0x19d3, "ASUS NB", ALC663_ASUS_M51VA),
16396 SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1), 16456 SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1),
16397 SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4), 16457 SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4),
16398 SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG), 16458 SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG),
@@ -16404,6 +16464,7 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = {
16404 SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", 16464 SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L",
16405 ALC662_3ST_6ch_DIG), 16465 ALC662_3ST_6ch_DIG),
16406 SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG), 16466 SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG),
16467 SND_PCI_QUIRK(0x1631, 0xc10c, "PB RS65", ALC663_ASUS_M51VA),
16407 SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo", ALC662_LENOVO_101E), 16468 SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo", ALC662_LENOVO_101E),
16408 SND_PCI_QUIRK(0x1849, 0x3662, "ASROCK K10N78FullHD-hSLI R3.0", 16469 SND_PCI_QUIRK(0x1849, 0x3662, "ASROCK K10N78FullHD-hSLI R3.0",
16409 ALC662_3ST_6ch_DIG), 16470 ALC662_3ST_6ch_DIG),
@@ -16641,6 +16702,36 @@ static struct alc_config_preset alc662_presets[] = {
16641 .unsol_event = alc663_mode6_unsol_event, 16702 .unsol_event = alc663_mode6_unsol_event,
16642 .init_hook = alc663_mode6_inithook, 16703 .init_hook = alc663_mode6_inithook,
16643 }, 16704 },
16705 [ALC272_DELL] = {
16706 .mixers = { alc663_m51va_mixer },
16707 .cap_mixer = alc272_auto_capture_mixer,
16708 .init_verbs = { alc662_init_verbs, alc272_dell_init_verbs },
16709 .num_dacs = ARRAY_SIZE(alc272_dac_nids),
16710 .dac_nids = alc662_dac_nids,
16711 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
16712 .adc_nids = alc272_adc_nids,
16713 .num_adc_nids = ARRAY_SIZE(alc272_adc_nids),
16714 .capsrc_nids = alc272_capsrc_nids,
16715 .channel_mode = alc662_3ST_2ch_modes,
16716 .input_mux = &alc663_m51va_capture_source,
16717 .unsol_event = alc663_m51va_unsol_event,
16718 .init_hook = alc663_m51va_inithook,
16719 },
16720 [ALC272_DELL_ZM1] = {
16721 .mixers = { alc663_m51va_mixer },
16722 .cap_mixer = alc662_auto_capture_mixer,
16723 .init_verbs = { alc662_init_verbs, alc272_dell_zm1_init_verbs },
16724 .num_dacs = ARRAY_SIZE(alc272_dac_nids),
16725 .dac_nids = alc662_dac_nids,
16726 .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
16727 .adc_nids = alc662_adc_nids,
16728 .num_adc_nids = ARRAY_SIZE(alc662_adc_nids),
16729 .capsrc_nids = alc662_capsrc_nids,
16730 .channel_mode = alc662_3ST_2ch_modes,
16731 .input_mux = &alc663_m51va_capture_source,
16732 .unsol_event = alc663_m51va_unsol_event,
16733 .init_hook = alc663_m51va_inithook,
16734 },
16644}; 16735};
16645 16736
16646 16737
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 61996a2f45df..917bc5d3ac2c 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -3076,6 +3076,11 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
3076 unsigned int wid_caps; 3076 unsigned int wid_caps;
3077 3077
3078 for (i = 0; i < num_outs && i < ARRAY_SIZE(chname); i++) { 3078 for (i = 0; i < num_outs && i < ARRAY_SIZE(chname); i++) {
3079 if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) {
3080 wid_caps = get_wcaps(codec, pins[i]);
3081 if (wid_caps & AC_WCAP_UNSOL_CAP)
3082 spec->hp_detect = 1;
3083 }
3079 nid = dac_nids[i]; 3084 nid = dac_nids[i];
3080 if (!nid) 3085 if (!nid)
3081 continue; 3086 continue;
@@ -3119,11 +3124,6 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
3119 err = create_controls_idx(codec, name, idx, nid, 3); 3124 err = create_controls_idx(codec, name, idx, nid, 3);
3120 if (err < 0) 3125 if (err < 0)
3121 return err; 3126 return err;
3122 if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) {
3123 wid_caps = get_wcaps(codec, pins[i]);
3124 if (wid_caps & AC_WCAP_UNSOL_CAP)
3125 spec->hp_detect = 1;
3126 }
3127 } 3127 }
3128 } 3128 }
3129 return 0; 3129 return 0;
@@ -3851,6 +3851,15 @@ static void stac_gpio_set(struct hda_codec *codec, unsigned int mask,
3851 AC_VERB_SET_GPIO_DATA, gpiostate); /* sync */ 3851 AC_VERB_SET_GPIO_DATA, gpiostate); /* sync */
3852} 3852}
3853 3853
3854#ifdef CONFIG_SND_JACK
3855static void stac92xx_free_jack_priv(struct snd_jack *jack)
3856{
3857 struct sigmatel_jack *jacks = jack->private_data;
3858 jacks->nid = 0;
3859 jacks->jack = NULL;
3860}
3861#endif
3862
3854static int stac92xx_add_jack(struct hda_codec *codec, 3863static int stac92xx_add_jack(struct hda_codec *codec,
3855 hda_nid_t nid, int type) 3864 hda_nid_t nid, int type)
3856{ 3865{
@@ -3860,6 +3869,7 @@ static int stac92xx_add_jack(struct hda_codec *codec,
3860 int def_conf = snd_hda_codec_get_pincfg(codec, nid); 3869 int def_conf = snd_hda_codec_get_pincfg(codec, nid);
3861 int connectivity = get_defcfg_connect(def_conf); 3870 int connectivity = get_defcfg_connect(def_conf);
3862 char name[32]; 3871 char name[32];
3872 int err;
3863 3873
3864 if (connectivity && connectivity != AC_JACK_PORT_FIXED) 3874 if (connectivity && connectivity != AC_JACK_PORT_FIXED)
3865 return 0; 3875 return 0;
@@ -3876,10 +3886,15 @@ static int stac92xx_add_jack(struct hda_codec *codec,
3876 snd_hda_get_jack_connectivity(def_conf), 3886 snd_hda_get_jack_connectivity(def_conf),
3877 snd_hda_get_jack_location(def_conf)); 3887 snd_hda_get_jack_location(def_conf));
3878 3888
3879 return snd_jack_new(codec->bus->card, name, type, &jack->jack); 3889 err = snd_jack_new(codec->bus->card, name, type, &jack->jack);
3880#else 3890 if (err < 0) {
3881 return 0; 3891 jack->nid = 0;
3892 return err;
3893 }
3894 jack->jack->private_data = jack;
3895 jack->jack->private_free = stac92xx_free_jack_priv;
3882#endif 3896#endif
3897 return 0;
3883} 3898}
3884 3899
3885static int stac_add_event(struct sigmatel_spec *spec, hda_nid_t nid, 3900static int stac_add_event(struct sigmatel_spec *spec, hda_nid_t nid,
@@ -4138,8 +4153,10 @@ static void stac92xx_free_jacks(struct hda_codec *codec)
4138 if (!codec->bus->shutdown && spec->jacks.list) { 4153 if (!codec->bus->shutdown && spec->jacks.list) {
4139 struct sigmatel_jack *jacks = spec->jacks.list; 4154 struct sigmatel_jack *jacks = spec->jacks.list;
4140 int i; 4155 int i;
4141 for (i = 0; i < spec->jacks.used; i++) 4156 for (i = 0; i < spec->jacks.used; i++, jacks++) {
4142 snd_device_free(codec->bus->card, &jacks[i].jack); 4157 if (jacks->jack)
4158 snd_device_free(codec->bus->card, jacks->jack);
4159 }
4143 } 4160 }
4144 snd_array_free(&spec->jacks); 4161 snd_array_free(&spec->jacks);
4145#endif 4162#endif
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index 57648810eaf1..173bebf9f51d 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -355,6 +355,9 @@ struct ichdev {
355 unsigned int fragsize1; 355 unsigned int fragsize1;
356 unsigned int position; 356 unsigned int position;
357 unsigned int pos_shift; 357 unsigned int pos_shift;
358 unsigned int last_pos;
359 unsigned long last_pos_jiffies;
360 unsigned int jiffy_to_bytes;
358 int frags; 361 int frags;
359 int lvi; 362 int lvi;
360 int lvi_frag; 363 int lvi_frag;
@@ -838,7 +841,10 @@ static int snd_intel8x0_pcm_trigger(struct snd_pcm_substream *substream, int cmd
838 ichdev->suspended = 0; 841 ichdev->suspended = 0;
839 /* fallthru */ 842 /* fallthru */
840 case SNDRV_PCM_TRIGGER_START: 843 case SNDRV_PCM_TRIGGER_START:
844 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
841 val = ICH_IOCE | ICH_STARTBM; 845 val = ICH_IOCE | ICH_STARTBM;
846 ichdev->last_pos = ichdev->position;
847 ichdev->last_pos_jiffies = jiffies;
842 break; 848 break;
843 case SNDRV_PCM_TRIGGER_SUSPEND: 849 case SNDRV_PCM_TRIGGER_SUSPEND:
844 ichdev->suspended = 1; 850 ichdev->suspended = 1;
@@ -849,9 +855,6 @@ static int snd_intel8x0_pcm_trigger(struct snd_pcm_substream *substream, int cmd
849 case SNDRV_PCM_TRIGGER_PAUSE_PUSH: 855 case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
850 val = ICH_IOCE; 856 val = ICH_IOCE;
851 break; 857 break;
852 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
853 val = ICH_IOCE | ICH_STARTBM;
854 break;
855 default: 858 default:
856 return -EINVAL; 859 return -EINVAL;
857 } 860 }
@@ -1045,6 +1048,7 @@ static int snd_intel8x0_pcm_prepare(struct snd_pcm_substream *substream)
1045 ichdev->pos_shift = (runtime->sample_bits > 16) ? 2 : 1; 1048 ichdev->pos_shift = (runtime->sample_bits > 16) ? 2 : 1;
1046 } 1049 }
1047 snd_intel8x0_setup_periods(chip, ichdev); 1050 snd_intel8x0_setup_periods(chip, ichdev);
1051 ichdev->jiffy_to_bytes = (runtime->rate * 4 * ichdev->pos_shift) / HZ;
1048 return 0; 1052 return 0;
1049} 1053}
1050 1054
@@ -1053,7 +1057,7 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(struct snd_pcm_substream *subs
1053 struct intel8x0 *chip = snd_pcm_substream_chip(substream); 1057 struct intel8x0 *chip = snd_pcm_substream_chip(substream);
1054 struct ichdev *ichdev = get_ichdev(substream); 1058 struct ichdev *ichdev = get_ichdev(substream);
1055 size_t ptr1, ptr; 1059 size_t ptr1, ptr;
1056 int civ, timeout = 100; 1060 int civ, timeout = 10;
1057 unsigned int position; 1061 unsigned int position;
1058 1062
1059 spin_lock(&chip->reg_lock); 1063 spin_lock(&chip->reg_lock);
@@ -1069,9 +1073,19 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(struct snd_pcm_substream *subs
1069 ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb)) 1073 ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb))
1070 break; 1074 break;
1071 } while (timeout--); 1075 } while (timeout--);
1072 ptr1 <<= ichdev->pos_shift; 1076 if (ptr1 != 0) {
1073 ptr = ichdev->fragsize1 - ptr1; 1077 ptr1 <<= ichdev->pos_shift;
1074 ptr += position; 1078 ptr = ichdev->fragsize1 - ptr1;
1079 ptr += position;
1080 ichdev->last_pos = ptr;
1081 ichdev->last_pos_jiffies = jiffies;
1082 } else {
1083 ptr1 = jiffies - ichdev->last_pos_jiffies;
1084 if (ptr1)
1085 ptr1 -= 1;
1086 ptr = ichdev->last_pos + ptr1 * ichdev->jiffy_to_bytes;
1087 ptr %= ichdev->size;
1088 }
1075 spin_unlock(&chip->reg_lock); 1089 spin_unlock(&chip->reg_lock);
1076 if (ptr >= ichdev->size) 1090 if (ptr >= ichdev->size)
1077 return 0; 1091 return 0;
@@ -1840,6 +1854,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
1840 }, 1854 },
1841 { 1855 {
1842 .subvendor = 0x1028, 1856 .subvendor = 0x1028,
1857 .subdevice = 0x016a,
1858 .name = "Dell Inspiron 8600", /* STAC9750/51 */
1859 .type = AC97_TUNE_HP_ONLY
1860 },
1861 {
1862 .subvendor = 0x1028,
1843 .subdevice = 0x0186, 1863 .subdevice = 0x0186,
1844 .name = "Dell Latitude D810", /* cf. Malone #41015 */ 1864 .name = "Dell Latitude D810", /* cf. Malone #41015 */
1845 .type = AC97_TUNE_HP_MUTE_LED 1865 .type = AC97_TUNE_HP_MUTE_LED
@@ -1882,12 +1902,6 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
1882 }, 1902 },
1883 { 1903 {
1884 .subvendor = 0x103c, 1904 .subvendor = 0x103c,
1885 .subdevice = 0x0934,
1886 .name = "HP nx8220",
1887 .type = AC97_TUNE_MUTE_LED
1888 },
1889 {
1890 .subvendor = 0x103c,
1891 .subdevice = 0x129d, 1905 .subdevice = 0x129d,
1892 .name = "HP xw8000", 1906 .name = "HP xw8000",
1893 .type = AC97_TUNE_HP_ONLY 1907 .type = AC97_TUNE_HP_ONLY
@@ -2661,12 +2675,14 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip)
2661 struct snd_pcm_substream *subs; 2675 struct snd_pcm_substream *subs;
2662 struct ichdev *ichdev; 2676 struct ichdev *ichdev;
2663 unsigned long port; 2677 unsigned long port;
2664 unsigned long pos, t; 2678 unsigned long pos, pos1, t;
2665 struct timeval start_time, stop_time; 2679 int civ, timeout = 1000, attempt = 1;
2680 struct timespec start_time, stop_time;
2666 2681
2667 if (chip->ac97_bus->clock != 48000) 2682 if (chip->ac97_bus->clock != 48000)
2668 return; /* specified in module option */ 2683 return; /* specified in module option */
2669 2684
2685 __again:
2670 subs = chip->pcm[0]->streams[0].substream; 2686 subs = chip->pcm[0]->streams[0].substream;
2671 if (! subs || subs->dma_buffer.bytes < INTEL8X0_TESTBUF_SIZE) { 2687 if (! subs || subs->dma_buffer.bytes < INTEL8X0_TESTBUF_SIZE) {
2672 snd_printk(KERN_WARNING "no playback buffer allocated - aborting measure ac97 clock\n"); 2688 snd_printk(KERN_WARNING "no playback buffer allocated - aborting measure ac97 clock\n");
@@ -2674,7 +2690,7 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip)
2674 } 2690 }
2675 ichdev = &chip->ichd[ICHD_PCMOUT]; 2691 ichdev = &chip->ichd[ICHD_PCMOUT];
2676 ichdev->physbuf = subs->dma_buffer.addr; 2692 ichdev->physbuf = subs->dma_buffer.addr;
2677 ichdev->size = chip->ichd[ICHD_PCMOUT].fragsize = INTEL8X0_TESTBUF_SIZE; 2693 ichdev->size = ichdev->fragsize = INTEL8X0_TESTBUF_SIZE;
2678 ichdev->substream = NULL; /* don't process interrupts */ 2694 ichdev->substream = NULL; /* don't process interrupts */
2679 2695
2680 /* set rate */ 2696 /* set rate */
@@ -2693,16 +2709,31 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip)
2693 iputbyte(chip, port + ICH_REG_OFF_CR, ICH_IOCE); 2709 iputbyte(chip, port + ICH_REG_OFF_CR, ICH_IOCE);
2694 iputdword(chip, ICHREG(ALI_DMACR), 1 << ichdev->ali_slot); 2710 iputdword(chip, ICHREG(ALI_DMACR), 1 << ichdev->ali_slot);
2695 } 2711 }
2696 do_gettimeofday(&start_time); 2712 do_posix_clock_monotonic_gettime(&start_time);
2697 spin_unlock_irq(&chip->reg_lock); 2713 spin_unlock_irq(&chip->reg_lock);
2698 msleep(50); 2714 msleep(50);
2699 spin_lock_irq(&chip->reg_lock); 2715 spin_lock_irq(&chip->reg_lock);
2700 /* check the position */ 2716 /* check the position */
2701 pos = ichdev->fragsize1; 2717 do {
2702 pos -= igetword(chip, ichdev->reg_offset + ichdev->roff_picb) << ichdev->pos_shift; 2718 civ = igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV);
2703 pos += ichdev->position; 2719 pos1 = igetword(chip, ichdev->reg_offset + ichdev->roff_picb);
2720 if (pos1 == 0) {
2721 udelay(10);
2722 continue;
2723 }
2724 if (civ == igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV) &&
2725 pos1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb))
2726 break;
2727 } while (timeout--);
2728 if (pos1 == 0) { /* oops, this value is not reliable */
2729 pos = 0;
2730 } else {
2731 pos = ichdev->fragsize1;
2732 pos -= pos1 << ichdev->pos_shift;
2733 pos += ichdev->position;
2734 }
2704 chip->in_measurement = 0; 2735 chip->in_measurement = 0;
2705 do_gettimeofday(&stop_time); 2736 do_posix_clock_monotonic_gettime(&stop_time);
2706 /* stop */ 2737 /* stop */
2707 if (chip->device_type == DEVICE_ALI) { 2738 if (chip->device_type == DEVICE_ALI) {
2708 iputdword(chip, ICHREG(ALI_DMACR), 1 << (ichdev->ali_slot + 16)); 2739 iputdword(chip, ICHREG(ALI_DMACR), 1 << (ichdev->ali_slot + 16));
@@ -2717,22 +2748,42 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip)
2717 iputbyte(chip, port + ICH_REG_OFF_CR, ICH_RESETREGS); 2748 iputbyte(chip, port + ICH_REG_OFF_CR, ICH_RESETREGS);
2718 spin_unlock_irq(&chip->reg_lock); 2749 spin_unlock_irq(&chip->reg_lock);
2719 2750
2751 if (pos == 0) {
2752 snd_printk(KERN_ERR "intel8x0: measure - unreliable DMA position..\n");
2753 __retry:
2754 if (attempt < 3) {
2755 msleep(300);
2756 attempt++;
2757 goto __again;
2758 }
2759 goto __end;
2760 }
2761
2762 pos /= 4;
2720 t = stop_time.tv_sec - start_time.tv_sec; 2763 t = stop_time.tv_sec - start_time.tv_sec;
2721 t *= 1000000; 2764 t *= 1000000;
2722 t += stop_time.tv_usec - start_time.tv_usec; 2765 t += (stop_time.tv_nsec - start_time.tv_nsec) / 1000;
2723 printk(KERN_INFO "%s: measured %lu usecs\n", __func__, t); 2766 printk(KERN_INFO "%s: measured %lu usecs (%lu samples)\n", __func__, t, pos);
2724 if (t == 0) { 2767 if (t == 0) {
2725 snd_printk(KERN_ERR "?? calculation error..\n"); 2768 snd_printk(KERN_ERR "intel8x0: ?? calculation error..\n");
2726 return; 2769 goto __retry;
2727 } 2770 }
2728 pos = (pos / 4) * 1000; 2771 pos *= 1000;
2729 pos = (pos / t) * 1000 + ((pos % t) * 1000) / t; 2772 pos = (pos / t) * 1000 + ((pos % t) * 1000) / t;
2730 if (pos < 40000 || pos >= 60000) 2773 if (pos < 40000 || pos >= 60000) {
2731 /* abnormal value. hw problem? */ 2774 /* abnormal value. hw problem? */
2732 printk(KERN_INFO "intel8x0: measured clock %ld rejected\n", pos); 2775 printk(KERN_INFO "intel8x0: measured clock %ld rejected\n", pos);
2776 goto __retry;
2777 } else if (pos > 40500 && pos < 41500)
2778 /* first exception - 41000Hz reference clock */
2779 chip->ac97_bus->clock = 41000;
2780 else if (pos > 43600 && pos < 44600)
2781 /* second exception - 44100HZ reference clock */
2782 chip->ac97_bus->clock = 44100;
2733 else if (pos < 47500 || pos > 48500) 2783 else if (pos < 47500 || pos > 48500)
2734 /* not 48000Hz, tuning the clock.. */ 2784 /* not 48000Hz, tuning the clock.. */
2735 chip->ac97_bus->clock = (chip->ac97_bus->clock * 48000) / pos; 2785 chip->ac97_bus->clock = (chip->ac97_bus->clock * 48000) / pos;
2786 __end:
2736 printk(KERN_INFO "intel8x0: clocking to %d\n", chip->ac97_bus->clock); 2787 printk(KERN_INFO "intel8x0: clocking to %d\n", chip->ac97_bus->clock);
2737 snd_ac97_update_power(chip->ac97[0], AC97_PCM_FRONT_DAC_RATE, 0); 2788 snd_ac97_update_power(chip->ac97[0], AC97_PCM_FRONT_DAC_RATE, 0);
2738} 2789}
diff --git a/sound/ppc/keywest.c b/sound/ppc/keywest.c
index 6ff99ed77516..a5afb2682e7f 100644
--- a/sound/ppc/keywest.c
+++ b/sound/ppc/keywest.c
@@ -33,26 +33,25 @@
33static struct pmac_keywest *keywest_ctx; 33static struct pmac_keywest *keywest_ctx;
34 34
35 35
36static int keywest_attach_adapter(struct i2c_adapter *adapter);
37static int keywest_detach_client(struct i2c_client *client);
38
39struct i2c_driver keywest_driver = {
40 .driver = {
41 .name = "PMac Keywest Audio",
42 },
43 .attach_adapter = &keywest_attach_adapter,
44 .detach_client = &keywest_detach_client,
45};
46
47
48#ifndef i2c_device_name 36#ifndef i2c_device_name
49#define i2c_device_name(x) ((x)->name) 37#define i2c_device_name(x) ((x)->name)
50#endif 38#endif
51 39
40static int keywest_probe(struct i2c_client *client,
41 const struct i2c_device_id *id)
42{
43 i2c_set_clientdata(client, keywest_ctx);
44 return 0;
45}
46
47/*
48 * This is kind of a hack, best would be to turn powermac to fixed i2c
49 * bus numbers and declare the sound device as part of platform
50 * initialization
51 */
52static int keywest_attach_adapter(struct i2c_adapter *adapter) 52static int keywest_attach_adapter(struct i2c_adapter *adapter)
53{ 53{
54 int err; 54 struct i2c_board_info info;
55 struct i2c_client *new_client;
56 55
57 if (! keywest_ctx) 56 if (! keywest_ctx)
58 return -EINVAL; 57 return -EINVAL;
@@ -60,46 +59,47 @@ static int keywest_attach_adapter(struct i2c_adapter *adapter)
60 if (strncmp(i2c_device_name(adapter), "mac-io", 6)) 59 if (strncmp(i2c_device_name(adapter), "mac-io", 6))
61 return 0; /* ignored */ 60 return 0; /* ignored */
62 61
63 new_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); 62 memset(&info, 0, sizeof(struct i2c_board_info));
64 if (! new_client) 63 strlcpy(info.type, "keywest", I2C_NAME_SIZE);
65 return -ENOMEM; 64 info.addr = keywest_ctx->addr;
66 65 keywest_ctx->client = i2c_new_device(adapter, &info);
67 new_client->addr = keywest_ctx->addr;
68 i2c_set_clientdata(new_client, keywest_ctx);
69 new_client->adapter = adapter;
70 new_client->driver = &keywest_driver;
71 new_client->flags = 0;
72
73 strcpy(i2c_device_name(new_client), keywest_ctx->name);
74 keywest_ctx->client = new_client;
75 66
76 /* Tell the i2c layer a new client has arrived */ 67 /*
77 if (i2c_attach_client(new_client)) { 68 * Let i2c-core delete that device on driver removal.
78 snd_printk(KERN_ERR "tumbler: cannot attach i2c client\n"); 69 * This is safe because i2c-core holds the core_lock mutex for us.
79 err = -ENODEV; 70 */
80 goto __err; 71 list_add_tail(&keywest_ctx->client->detected,
81 } 72 &keywest_ctx->client->driver->clients);
82
83 return 0; 73 return 0;
84
85 __err:
86 kfree(new_client);
87 keywest_ctx->client = NULL;
88 return err;
89} 74}
90 75
91static int keywest_detach_client(struct i2c_client *client) 76static int keywest_remove(struct i2c_client *client)
92{ 77{
78 i2c_set_clientdata(client, NULL);
93 if (! keywest_ctx) 79 if (! keywest_ctx)
94 return 0; 80 return 0;
95 if (client == keywest_ctx->client) 81 if (client == keywest_ctx->client)
96 keywest_ctx->client = NULL; 82 keywest_ctx->client = NULL;
97 83
98 i2c_detach_client(client);
99 kfree(client);
100 return 0; 84 return 0;
101} 85}
102 86
87
88static const struct i2c_device_id keywest_i2c_id[] = {
89 { "keywest", 0 },
90 { }
91};
92
93struct i2c_driver keywest_driver = {
94 .driver = {
95 .name = "PMac Keywest Audio",
96 },
97 .attach_adapter = keywest_attach_adapter,
98 .probe = keywest_probe,
99 .remove = keywest_remove,
100 .id_table = keywest_i2c_id,
101};
102
103/* exported */ 103/* exported */
104void snd_pmac_keywest_cleanup(struct pmac_keywest *i2c) 104void snd_pmac_keywest_cleanup(struct pmac_keywest *i2c)
105{ 105{
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 030d2454725f..f2653803ede8 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -56,7 +56,6 @@ obj-$(CONFIG_SND_SOC_WM8900) += snd-soc-wm8900.o
56obj-$(CONFIG_SND_SOC_WM8903) += snd-soc-wm8903.o 56obj-$(CONFIG_SND_SOC_WM8903) += snd-soc-wm8903.o
57obj-$(CONFIG_SND_SOC_WM8971) += snd-soc-wm8971.o 57obj-$(CONFIG_SND_SOC_WM8971) += snd-soc-wm8971.o
58obj-$(CONFIG_SND_SOC_WM8990) += snd-soc-wm8990.o 58obj-$(CONFIG_SND_SOC_WM8990) += snd-soc-wm8990.o
59obj-$(CONFIG_SND_SOC_WM8991) += snd-soc-wm8991.o
60obj-$(CONFIG_SND_SOC_WM9705) += snd-soc-wm9705.o 59obj-$(CONFIG_SND_SOC_WM9705) += snd-soc-wm9705.o
61obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o 60obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
62obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o 61obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c
index 442ea6f160fc..9f6be3d31ac0 100644
--- a/sound/soc/codecs/wm8580.c
+++ b/sound/soc/codecs/wm8580.c
@@ -268,9 +268,11 @@ static const DECLARE_TLV_DB_SCALE(dac_tlv, -12750, 50, 1);
268static int wm8580_out_vu(struct snd_kcontrol *kcontrol, 268static int wm8580_out_vu(struct snd_kcontrol *kcontrol,
269 struct snd_ctl_elem_value *ucontrol) 269 struct snd_ctl_elem_value *ucontrol)
270{ 270{
271 struct soc_mixer_control *mc =
272 (struct soc_mixer_control *)kcontrol->private_value;
271 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); 273 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
272 int reg = kcontrol->private_value & 0xff; 274 unsigned int reg = mc->reg;
273 int reg2 = (kcontrol->private_value >> 24) & 0xff; 275 unsigned int reg2 = mc->rreg;
274 int ret; 276 int ret;
275 u16 val; 277 u16 val;
276 278
@@ -292,15 +294,17 @@ static int wm8580_out_vu(struct snd_kcontrol *kcontrol,
292 return 0; 294 return 0;
293} 295}
294 296
295#define SOC_WM8580_OUT_DOUBLE_R_TLV(xname, reg_left, reg_right, shift, max, invert, tlv_array) \ 297#define SOC_WM8580_OUT_DOUBLE_R_TLV(xname, reg_left, reg_right, xshift, xmax, \
298 xinvert, tlv_array) \
296{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ 299{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
297 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\ 300 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
298 SNDRV_CTL_ELEM_ACCESS_READWRITE, \ 301 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
299 .tlv.p = (tlv_array), \ 302 .tlv.p = (tlv_array), \
300 .info = snd_soc_info_volsw_2r, \ 303 .info = snd_soc_info_volsw_2r, \
301 .get = snd_soc_get_volsw_2r, .put = wm8580_out_vu, \ 304 .get = snd_soc_get_volsw_2r, .put = wm8580_out_vu, \
302 .private_value = (reg_left) | ((shift) << 8) | \ 305 .private_value = (unsigned long)&(struct soc_mixer_control) \
303 ((max) << 12) | ((invert) << 20) | ((reg_right) << 24) } 306 {.reg = reg_left, .rreg = reg_right, .shift = xshift, \
307 .max = xmax, .invert = xinvert} }
304 308
305static const struct snd_kcontrol_new wm8580_snd_controls[] = { 309static const struct snd_kcontrol_new wm8580_snd_controls[] = {
306SOC_WM8580_OUT_DOUBLE_R_TLV("DAC1 Playback Volume", 310SOC_WM8580_OUT_DOUBLE_R_TLV("DAC1 Playback Volume",
@@ -522,7 +526,7 @@ static int wm8580_set_dai_pll(struct snd_soc_dai *codec_dai,
522 reg = wm8580_read(codec, WM8580_PLLA4 + offset); 526 reg = wm8580_read(codec, WM8580_PLLA4 + offset);
523 reg &= ~0x3f; 527 reg &= ~0x3f;
524 reg |= pll_div.prescale | pll_div.postscale << 1 | 528 reg |= pll_div.prescale | pll_div.postscale << 1 |
525 pll_div.freqmode << 4; 529 pll_div.freqmode << 3;
526 530
527 wm8580_write(codec, WM8580_PLLA4 + offset, reg); 531 wm8580_write(codec, WM8580_PLLA4 + offset, reg);
528 532
diff --git a/sound/soc/codecs/wm9705.c b/sound/soc/codecs/wm9705.c
index 6e23a81dba78..c2d1a7a18fa3 100644
--- a/sound/soc/codecs/wm9705.c
+++ b/sound/soc/codecs/wm9705.c
@@ -318,7 +318,7 @@ static int wm9705_reset(struct snd_soc_codec *codec)
318} 318}
319 319
320#ifdef CONFIG_PM 320#ifdef CONFIG_PM
321static int wm9705_soc_suspend(struct platform_device *pdev) 321static int wm9705_soc_suspend(struct platform_device *pdev, pm_message_t msg)
322{ 322{
323 struct snd_soc_device *socdev = platform_get_drvdata(pdev); 323 struct snd_soc_device *socdev = platform_get_drvdata(pdev);
324 struct snd_soc_codec *codec = socdev->card->codec; 324 struct snd_soc_codec *codec = socdev->card->codec;
diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c
index a6d1178ce128..91ef17992de5 100644
--- a/sound/soc/omap/n810.c
+++ b/sound/soc/omap/n810.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Copyright (C) 2008 Nokia Corporation 4 * Copyright (C) 2008 Nokia Corporation
5 * 5 *
6 * Contact: Jarkko Nikula <jarkko.nikula@nokia.com> 6 * Contact: Jarkko Nikula <jhnikula@gmail.com>
7 * 7 *
8 * This program is free software; you can redistribute it and/or 8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 9 * modify it under the terms of the GNU General Public License
@@ -417,6 +417,6 @@ static void __exit n810_soc_exit(void)
417module_init(n810_soc_init); 417module_init(n810_soc_init);
418module_exit(n810_soc_exit); 418module_exit(n810_soc_exit);
419 419
420MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@nokia.com>"); 420MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");
421MODULE_DESCRIPTION("ALSA SoC Nokia N810"); 421MODULE_DESCRIPTION("ALSA SoC Nokia N810");
422MODULE_LICENSE("GPL"); 422MODULE_LICENSE("GPL");
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
index 9c09b94f0cf8..912614283848 100644
--- a/sound/soc/omap/omap-mcbsp.c
+++ b/sound/soc/omap/omap-mcbsp.c
@@ -3,7 +3,8 @@
3 * 3 *
4 * Copyright (C) 2008 Nokia Corporation 4 * Copyright (C) 2008 Nokia Corporation
5 * 5 *
6 * Contact: Jarkko Nikula <jarkko.nikula@nokia.com> 6 * Contact: Jarkko Nikula <jhnikula@gmail.com>
7 * Peter Ujfalusi <peter.ujfalusi@nokia.com>
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -283,7 +284,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
283 break; 284 break;
284 case SND_SOC_DAIFMT_DSP_B: 285 case SND_SOC_DAIFMT_DSP_B:
285 regs->srgr2 |= FPER(wlen * channels - 1); 286 regs->srgr2 |= FPER(wlen * channels - 1);
286 regs->srgr1 |= FWID(wlen * channels - 2); 287 regs->srgr1 |= FWID(0);
287 break; 288 break;
288 } 289 }
289 290
@@ -302,6 +303,7 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
302{ 303{
303 struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data); 304 struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
304 struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs; 305 struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
306 unsigned int temp_fmt = fmt;
305 307
306 if (mcbsp_data->configured) 308 if (mcbsp_data->configured)
307 return 0; 309 return 0;
@@ -328,6 +330,8 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
328 /* 0-bit data delay */ 330 /* 0-bit data delay */
329 regs->rcr2 |= RDATDLY(0); 331 regs->rcr2 |= RDATDLY(0);
330 regs->xcr2 |= XDATDLY(0); 332 regs->xcr2 |= XDATDLY(0);
333 /* Invert FS polarity configuration */
334 temp_fmt ^= SND_SOC_DAIFMT_NB_IF;
331 break; 335 break;
332 default: 336 default:
333 /* Unsupported data format */ 337 /* Unsupported data format */
@@ -351,7 +355,7 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
351 } 355 }
352 356
353 /* Set bit clock (CLKX/CLKR) and FS polarities */ 357 /* Set bit clock (CLKX/CLKR) and FS polarities */
354 switch (fmt & SND_SOC_DAIFMT_INV_MASK) { 358 switch (temp_fmt & SND_SOC_DAIFMT_INV_MASK) {
355 case SND_SOC_DAIFMT_NB_NF: 359 case SND_SOC_DAIFMT_NB_NF:
356 /* 360 /*
357 * Normal BCLK + FS. 361 * Normal BCLK + FS.
@@ -529,6 +533,6 @@ static void __exit snd_omap_mcbsp_exit(void)
529} 533}
530module_exit(snd_omap_mcbsp_exit); 534module_exit(snd_omap_mcbsp_exit);
531 535
532MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@nokia.com>"); 536MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");
533MODULE_DESCRIPTION("OMAP I2S SoC Interface"); 537MODULE_DESCRIPTION("OMAP I2S SoC Interface");
534MODULE_LICENSE("GPL"); 538MODULE_LICENSE("GPL");
diff --git a/sound/soc/omap/omap-mcbsp.h b/sound/soc/omap/omap-mcbsp.h
index df7ad13ba73d..c8147aace813 100644
--- a/sound/soc/omap/omap-mcbsp.h
+++ b/sound/soc/omap/omap-mcbsp.h
@@ -3,7 +3,8 @@
3 * 3 *
4 * Copyright (C) 2008 Nokia Corporation 4 * Copyright (C) 2008 Nokia Corporation
5 * 5 *
6 * Contact: Jarkko Nikula <jarkko.nikula@nokia.com> 6 * Contact: Jarkko Nikula <jhnikula@gmail.com>
7 * Peter Ujfalusi <peter.ujfalusi@nokia.com>
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
index 1bdbb0427183..07cf7f46b584 100644
--- a/sound/soc/omap/omap-pcm.c
+++ b/sound/soc/omap/omap-pcm.c
@@ -3,7 +3,8 @@
3 * 3 *
4 * Copyright (C) 2008 Nokia Corporation 4 * Copyright (C) 2008 Nokia Corporation
5 * 5 *
6 * Contact: Jarkko Nikula <jarkko.nikula@nokia.com> 6 * Contact: Jarkko Nikula <jhnikula@gmail.com>
7 * Peter Ujfalusi <peter.ujfalusi@nokia.com>
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -367,6 +368,6 @@ static void __exit omap_soc_platform_exit(void)
367} 368}
368module_exit(omap_soc_platform_exit); 369module_exit(omap_soc_platform_exit);
369 370
370MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@nokia.com>"); 371MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");
371MODULE_DESCRIPTION("OMAP PCM DMA module"); 372MODULE_DESCRIPTION("OMAP PCM DMA module");
372MODULE_LICENSE("GPL"); 373MODULE_LICENSE("GPL");
diff --git a/sound/soc/omap/omap-pcm.h b/sound/soc/omap/omap-pcm.h
index e4369bdfd77d..8d9d26916b05 100644
--- a/sound/soc/omap/omap-pcm.h
+++ b/sound/soc/omap/omap-pcm.h
@@ -3,7 +3,8 @@
3 * 3 *
4 * Copyright (C) 2008 Nokia Corporation 4 * Copyright (C) 2008 Nokia Corporation
5 * 5 *
6 * Contact: Jarkko Nikula <jarkko.nikula@nokia.com> 6 * Contact: Jarkko Nikula <jhnikula@gmail.com>
7 * Peter Ujfalusi <peter.ujfalusi@nokia.com>
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
diff --git a/sound/soc/omap/osk5912.c b/sound/soc/omap/osk5912.c
index a952a4eb3361..a4e149b7f0eb 100644
--- a/sound/soc/omap/osk5912.c
+++ b/sound/soc/omap/osk5912.c
@@ -62,7 +62,7 @@ static int osk_hw_params(struct snd_pcm_substream *substream,
62 /* Set codec DAI configuration */ 62 /* Set codec DAI configuration */
63 err = snd_soc_dai_set_fmt(codec_dai, 63 err = snd_soc_dai_set_fmt(codec_dai,
64 SND_SOC_DAIFMT_DSP_B | 64 SND_SOC_DAIFMT_DSP_B |
65 SND_SOC_DAIFMT_NB_IF | 65 SND_SOC_DAIFMT_NB_NF |
66 SND_SOC_DAIFMT_CBM_CFM); 66 SND_SOC_DAIFMT_CBM_CFM);
67 if (err < 0) { 67 if (err < 0) {
68 printk(KERN_ERR "can't set codec DAI configuration\n"); 68 printk(KERN_ERR "can't set codec DAI configuration\n");
@@ -72,7 +72,7 @@ static int osk_hw_params(struct snd_pcm_substream *substream,
72 /* Set cpu DAI configuration */ 72 /* Set cpu DAI configuration */
73 err = snd_soc_dai_set_fmt(cpu_dai, 73 err = snd_soc_dai_set_fmt(cpu_dai,
74 SND_SOC_DAIFMT_DSP_B | 74 SND_SOC_DAIFMT_DSP_B |
75 SND_SOC_DAIFMT_NB_IF | 75 SND_SOC_DAIFMT_NB_NF |
76 SND_SOC_DAIFMT_CBM_CFM); 76 SND_SOC_DAIFMT_CBM_CFM);
77 if (err < 0) { 77 if (err < 0) {
78 printk(KERN_ERR "can't set cpu DAI configuration\n"); 78 printk(KERN_ERR "can't set cpu DAI configuration\n");
diff --git a/sound/soc/pxa/magician.c b/sound/soc/pxa/magician.c
index f7c4544f7859..0625c342a1c9 100644
--- a/sound/soc/pxa/magician.c
+++ b/sound/soc/pxa/magician.c
@@ -27,8 +27,6 @@
27#include <sound/soc.h> 27#include <sound/soc.h>
28#include <sound/soc-dapm.h> 28#include <sound/soc-dapm.h>
29 29
30#include <mach/pxa-regs.h>
31#include <mach/hardware.h>
32#include <mach/magician.h> 30#include <mach/magician.h>
33#include <asm/mach-types.h> 31#include <asm/mach-types.h>
34#include "../codecs/uda1380.h" 32#include "../codecs/uda1380.h"
diff --git a/sound/soc/pxa/palm27x.c b/sound/soc/pxa/palm27x.c
index 48a73f64500b..44fcc4e01e08 100644
--- a/sound/soc/pxa/palm27x.c
+++ b/sound/soc/pxa/palm27x.c
@@ -200,7 +200,7 @@ static struct snd_soc_device palm27x_snd_devdata = {
200 200
201static struct platform_device *palm27x_snd_device; 201static struct platform_device *palm27x_snd_device;
202 202
203static int __init palm27x_asoc_init(void) 203static int palm27x_asoc_probe(struct platform_device *pdev)
204{ 204{
205 int ret; 205 int ret;
206 206
@@ -208,6 +208,10 @@ static int __init palm27x_asoc_init(void)
208 machine_is_palmld())) 208 machine_is_palmld()))
209 return -ENODEV; 209 return -ENODEV;
210 210
211 if (pdev->dev.platform_data)
212 palm27x_ep_gpio = ((struct palm27x_asoc_info *)
213 (pdev->dev.platform_data))->jack_gpio;
214
211 ret = gpio_request(palm27x_ep_gpio, "Headphone Jack"); 215 ret = gpio_request(palm27x_ep_gpio, "Headphone Jack");
212 if (ret) 216 if (ret)
213 return ret; 217 return ret;
@@ -245,16 +249,31 @@ err_alloc:
245 return ret; 249 return ret;
246} 250}
247 251
248static void __exit palm27x_asoc_exit(void) 252static int __devexit palm27x_asoc_remove(struct platform_device *pdev)
249{ 253{
250 free_irq(gpio_to_irq(palm27x_ep_gpio), NULL); 254 free_irq(gpio_to_irq(palm27x_ep_gpio), NULL);
251 gpio_free(palm27x_ep_gpio); 255 gpio_free(palm27x_ep_gpio);
252 platform_device_unregister(palm27x_snd_device); 256 platform_device_unregister(palm27x_snd_device);
257 return 0;
253} 258}
254 259
255void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data) 260static struct platform_driver palm27x_wm9712_driver = {
261 .probe = palm27x_asoc_probe,
262 .remove = __devexit_p(palm27x_asoc_remove),
263 .driver = {
264 .name = "palm27x-asoc",
265 .owner = THIS_MODULE,
266 },
267};
268
269static int __init palm27x_asoc_init(void)
270{
271 return platform_driver_register(&palm27x_wm9712_driver);
272}
273
274static void __exit palm27x_asoc_exit(void)
256{ 275{
257 palm27x_ep_gpio = data->jack_gpio; 276 platform_driver_unregister(&palm27x_wm9712_driver);
258} 277}
259 278
260module_init(palm27x_asoc_init); 279module_init(palm27x_asoc_init);
diff --git a/sound/soc/pxa/pxa-ssp.c b/sound/soc/pxa/pxa-ssp.c
index 308a657928d2..286be31545df 100644
--- a/sound/soc/pxa/pxa-ssp.c
+++ b/sound/soc/pxa/pxa-ssp.c
@@ -280,12 +280,33 @@ static int pxa_ssp_resume(struct snd_soc_dai *cpu_dai)
280 * ssp_set_clkdiv - set SSP clock divider 280 * ssp_set_clkdiv - set SSP clock divider
281 * @div: serial clock rate divider 281 * @div: serial clock rate divider
282 */ 282 */
283static void ssp_set_scr(struct ssp_dev *dev, u32 div) 283static void ssp_set_scr(struct ssp_device *ssp, u32 div)
284{ 284{
285 struct ssp_device *ssp = dev->ssp; 285 u32 sscr0 = ssp_read_reg(ssp, SSCR0);
286 u32 sscr0 = ssp_read_reg(dev->ssp, SSCR0) & ~SSCR0_SCR; 286
287 if (cpu_is_pxa25x() && ssp->type == PXA25x_SSP) {
288 sscr0 &= ~0x0000ff00;
289 sscr0 |= ((div - 2)/2) << 8; /* 2..512 */
290 } else {
291 sscr0 &= ~0x000fff00;
292 sscr0 |= (div - 1) << 8; /* 1..4096 */
293 }
294 ssp_write_reg(ssp, SSCR0, sscr0);
295}
296
297/**
298 * ssp_get_clkdiv - get SSP clock divider
299 */
300static u32 ssp_get_scr(struct ssp_device *ssp)
301{
302 u32 sscr0 = ssp_read_reg(ssp, SSCR0);
303 u32 div;
287 304
288 ssp_write_reg(ssp, SSCR0, (sscr0 | SSCR0_SerClkDiv(div))); 305 if (cpu_is_pxa25x() && ssp->type == PXA25x_SSP)
306 div = ((sscr0 >> 8) & 0xff) * 2 + 2;
307 else
308 div = ((sscr0 >> 8) & 0xfff) + 1;
309 return div;
289} 310}
290 311
291/* 312/*
@@ -326,7 +347,7 @@ static int pxa_ssp_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
326 break; 347 break;
327 case PXA_SSP_CLK_AUDIO: 348 case PXA_SSP_CLK_AUDIO:
328 priv->sysclk = 0; 349 priv->sysclk = 0;
329 ssp_set_scr(&priv->dev, 1); 350 ssp_set_scr(ssp, 1);
330 sscr0 |= SSCR0_ACS; 351 sscr0 |= SSCR0_ACS;
331 break; 352 break;
332 default: 353 default:
@@ -387,7 +408,7 @@ static int pxa_ssp_set_dai_clkdiv(struct snd_soc_dai *cpu_dai,
387 ssp_write_reg(ssp, SSACD, val); 408 ssp_write_reg(ssp, SSACD, val);
388 break; 409 break;
389 case PXA_SSP_DIV_SCR: 410 case PXA_SSP_DIV_SCR:
390 ssp_set_scr(&priv->dev, div); 411 ssp_set_scr(ssp, div);
391 break; 412 break;
392 default: 413 default:
393 return -ENODEV; 414 return -ENODEV;
@@ -674,8 +695,7 @@ static int pxa_ssp_hw_params(struct snd_pcm_substream *substream,
674 case SND_SOC_DAIFMT_I2S: 695 case SND_SOC_DAIFMT_I2S:
675 sspsp = ssp_read_reg(ssp, SSPSP); 696 sspsp = ssp_read_reg(ssp, SSPSP);
676 697
677 if (((sscr0 & SSCR0_SCR) == SSCR0_SerClkDiv(4)) && 698 if ((ssp_get_scr(ssp) == 4) && (width == 16)) {
678 (width == 16)) {
679 /* This is a special case where the bitclk is 64fs 699 /* This is a special case where the bitclk is 64fs
680 * and we're not dealing with 2*32 bits of audio 700 * and we're not dealing with 2*32 bits of audio
681 * samples. 701 * samples.
@@ -806,6 +826,7 @@ static int pxa_ssp_probe(struct platform_device *pdev,
806 goto err_priv; 826 goto err_priv;
807 } 827 }
808 828
829 priv->dai_fmt = (unsigned int) -1;
809 dai->private_data = priv; 830 dai->private_data = priv;
810 831
811 return 0; 832 return 0;
diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
index 2f3a21eee051..df494d1e346f 100644
--- a/sound/soc/s3c24xx/Kconfig
+++ b/sound/soc/s3c24xx/Kconfig
@@ -1,10 +1,10 @@
1config SND_S3C24XX_SOC 1config SND_S3C24XX_SOC
2 tristate "SoC Audio for the Samsung S3CXXXX chips" 2 tristate "SoC Audio for the Samsung S3CXXXX chips"
3 depends on ARCH_S3C2410 || ARCH_S3C64XX 3 depends on ARCH_S3C2410
4 help 4 help
5 Say Y or M if you want to add support for codecs attached to 5 Say Y or M if you want to add support for codecs attached to
6 the S3C24XX and S3C64XX AC97, I2S or SSP interface. You will 6 the S3C24XX AC97 or I2S interfaces. You will also need to
7 also need to select the audio interfaces to support below. 7 select the audio interfaces to support below.
8 8
9config SND_S3C24XX_SOC_I2S 9config SND_S3C24XX_SOC_I2S
10 tristate 10 tristate
diff --git a/sound/soc/s3c24xx/jive_wm8750.c b/sound/soc/s3c24xx/jive_wm8750.c
index 32063790d95b..93e6c87b7399 100644
--- a/sound/soc/s3c24xx/jive_wm8750.c
+++ b/sound/soc/s3c24xx/jive_wm8750.c
@@ -69,8 +69,8 @@ static int jive_hw_params(struct snd_pcm_substream *substream,
69 break; 69 break;
70 } 70 }
71 71
72 s3c_i2sv2_calc_rate(&div, NULL, params_rate(params), 72 s3c_i2sv2_iis_calc_rate(&div, NULL, params_rate(params),
73 s3c2412_get_iisclk()); 73 s3c2412_get_iisclk());
74 74
75 /* set codec DAI configuration */ 75 /* set codec DAI configuration */
76 ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S | 76 ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
@@ -145,8 +145,9 @@ static struct snd_soc_dai_link jive_dai = {
145}; 145};
146 146
147/* jive audio machine driver */ 147/* jive audio machine driver */
148static struct snd_soc_machine snd_soc_machine_jive = { 148static struct snd_soc_card snd_soc_machine_jive = {
149 .name = "Jive", 149 .name = "Jive",
150 .platform = &s3c24xx_soc_platform,
150 .dai_link = &jive_dai, 151 .dai_link = &jive_dai,
151 .num_links = 1, 152 .num_links = 1,
152}; 153};
@@ -157,9 +158,8 @@ static struct wm8750_setup_data jive_wm8750_setup = {
157 158
158/* jive audio subsystem */ 159/* jive audio subsystem */
159static struct snd_soc_device jive_snd_devdata = { 160static struct snd_soc_device jive_snd_devdata = {
160 .machine = &snd_soc_machine_jive, 161 .card = &snd_soc_machine_jive,
161 .platform = &s3c24xx_soc_platform, 162 .codec_dev = &soc_codec_dev_wm8750,
162 .codec_dev = &soc_codec_dev_wm8750_spi,
163 .codec_data = &jive_wm8750_setup, 163 .codec_data = &jive_wm8750_setup,
164}; 164};
165 165
diff --git a/sound/soc/s3c24xx/s3c-i2s-v2.c b/sound/soc/s3c24xx/s3c-i2s-v2.c
index 295a4c910262..ab680aac3fcb 100644
--- a/sound/soc/s3c24xx/s3c-i2s-v2.c
+++ b/sound/soc/s3c24xx/s3c-i2s-v2.c
@@ -473,9 +473,9 @@ static int s3c2412_i2s_set_clkdiv(struct snd_soc_dai *cpu_dai,
473/* default table of all avaialable root fs divisors */ 473/* default table of all avaialable root fs divisors */
474static unsigned int iis_fs_tab[] = { 256, 512, 384, 768 }; 474static unsigned int iis_fs_tab[] = { 256, 512, 384, 768 };
475 475
476int s3c2412_iis_calc_rate(struct s3c_i2sv2_rate_calc *info, 476int s3c_i2sv2_iis_calc_rate(struct s3c_i2sv2_rate_calc *info,
477 unsigned int *fstab, 477 unsigned int *fstab,
478 unsigned int rate, struct clk *clk) 478 unsigned int rate, struct clk *clk)
479{ 479{
480 unsigned long clkrate = clk_get_rate(clk); 480 unsigned long clkrate = clk_get_rate(clk);
481 unsigned int div; 481 unsigned int div;
@@ -531,7 +531,7 @@ int s3c2412_iis_calc_rate(struct s3c_i2sv2_rate_calc *info,
531 531
532 return 0; 532 return 0;
533} 533}
534EXPORT_SYMBOL_GPL(s3c2412_iis_calc_rate); 534EXPORT_SYMBOL_GPL(s3c_i2sv2_iis_calc_rate);
535 535
536int s3c_i2sv2_probe(struct platform_device *pdev, 536int s3c_i2sv2_probe(struct platform_device *pdev,
537 struct snd_soc_dai *dai, 537 struct snd_soc_dai *dai,
@@ -624,15 +624,18 @@ static int s3c2412_i2s_resume(struct snd_soc_dai *dai)
624 624
625int s3c_i2sv2_register_dai(struct snd_soc_dai *dai) 625int s3c_i2sv2_register_dai(struct snd_soc_dai *dai)
626{ 626{
627 dai->ops.trigger = s3c2412_i2s_trigger; 627 struct snd_soc_dai_ops *ops = dai->ops;
628 dai->ops.hw_params = s3c2412_i2s_hw_params; 628
629 dai->ops.set_fmt = s3c2412_i2s_set_fmt; 629 ops->trigger = s3c2412_i2s_trigger;
630 dai->ops.set_clkdiv = s3c2412_i2s_set_clkdiv; 630 ops->hw_params = s3c2412_i2s_hw_params;
631 ops->set_fmt = s3c2412_i2s_set_fmt;
632 ops->set_clkdiv = s3c2412_i2s_set_clkdiv;
631 633
632 dai->suspend = s3c2412_i2s_suspend; 634 dai->suspend = s3c2412_i2s_suspend;
633 dai->resume = s3c2412_i2s_resume; 635 dai->resume = s3c2412_i2s_resume;
634 636
635 return snd_soc_register_dai(dai); 637 return snd_soc_register_dai(dai);
636} 638}
637
638EXPORT_SYMBOL_GPL(s3c_i2sv2_register_dai); 639EXPORT_SYMBOL_GPL(s3c_i2sv2_register_dai);
640
641MODULE_LICENSE("GPL");
diff --git a/sound/soc/s3c24xx/s3c2412-i2s.c b/sound/soc/s3c24xx/s3c2412-i2s.c
index 1ca3cdaa8213..b7e0b3f0bfc8 100644
--- a/sound/soc/s3c24xx/s3c2412-i2s.c
+++ b/sound/soc/s3c24xx/s3c2412-i2s.c
@@ -33,8 +33,8 @@
33 33
34#include <plat/regs-s3c2412-iis.h> 34#include <plat/regs-s3c2412-iis.h>
35 35
36#include <plat/regs-gpio.h>
37#include <plat/audio.h> 36#include <plat/audio.h>
37#include <mach/regs-gpio.h>
38#include <mach/dma.h> 38#include <mach/dma.h>
39 39
40#include "s3c24xx-pcm.h" 40#include "s3c24xx-pcm.h"
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c
index 7d93fa705ccf..8d13d933087d 100644
--- a/sound/sparc/cs4231.c
+++ b/sound/sparc/cs4231.c
@@ -703,7 +703,7 @@ static int snd_cs4231_timer_stop(struct snd_timer *timer)
703 return 0; 703 return 0;
704} 704}
705 705
706static void __init snd_cs4231_init(struct snd_cs4231 *chip) 706static void __devinit snd_cs4231_init(struct snd_cs4231 *chip)
707{ 707{
708 unsigned long flags; 708 unsigned long flags;
709 709
@@ -1020,7 +1020,7 @@ static snd_pcm_uframes_t snd_cs4231_capture_pointer(
1020 return bytes_to_frames(substream->runtime, ptr); 1020 return bytes_to_frames(substream->runtime, ptr);
1021} 1021}
1022 1022
1023static int __init snd_cs4231_probe(struct snd_cs4231 *chip) 1023static int __devinit snd_cs4231_probe(struct snd_cs4231 *chip)
1024{ 1024{
1025 unsigned long flags; 1025 unsigned long flags;
1026 int i; 1026 int i;
@@ -1219,7 +1219,7 @@ static struct snd_pcm_ops snd_cs4231_capture_ops = {
1219 .pointer = snd_cs4231_capture_pointer, 1219 .pointer = snd_cs4231_capture_pointer,
1220}; 1220};
1221 1221
1222static int __init snd_cs4231_pcm(struct snd_card *card) 1222static int __devinit snd_cs4231_pcm(struct snd_card *card)
1223{ 1223{
1224 struct snd_cs4231 *chip = card->private_data; 1224 struct snd_cs4231 *chip = card->private_data;
1225 struct snd_pcm *pcm; 1225 struct snd_pcm *pcm;
@@ -1248,7 +1248,7 @@ static int __init snd_cs4231_pcm(struct snd_card *card)
1248 return 0; 1248 return 0;
1249} 1249}
1250 1250
1251static int __init snd_cs4231_timer(struct snd_card *card) 1251static int __devinit snd_cs4231_timer(struct snd_card *card)
1252{ 1252{
1253 struct snd_cs4231 *chip = card->private_data; 1253 struct snd_cs4231 *chip = card->private_data;
1254 struct snd_timer *timer; 1254 struct snd_timer *timer;
@@ -1499,7 +1499,7 @@ static int snd_cs4231_put_double(struct snd_kcontrol *kcontrol,
1499 .private_value = (left_reg) | ((right_reg) << 8) | ((shift_left) << 16) | \ 1499 .private_value = (left_reg) | ((right_reg) << 8) | ((shift_left) << 16) | \
1500 ((shift_right) << 19) | ((mask) << 24) | ((invert) << 22) } 1500 ((shift_right) << 19) | ((mask) << 24) | ((invert) << 22) }
1501 1501
1502static struct snd_kcontrol_new snd_cs4231_controls[] __initdata = { 1502static struct snd_kcontrol_new snd_cs4231_controls[] __devinitdata = {
1503CS4231_DOUBLE("PCM Playback Switch", 0, CS4231_LEFT_OUTPUT, 1503CS4231_DOUBLE("PCM Playback Switch", 0, CS4231_LEFT_OUTPUT,
1504 CS4231_RIGHT_OUTPUT, 7, 7, 1, 1), 1504 CS4231_RIGHT_OUTPUT, 7, 7, 1, 1),
1505CS4231_DOUBLE("PCM Playback Volume", 0, CS4231_LEFT_OUTPUT, 1505CS4231_DOUBLE("PCM Playback Volume", 0, CS4231_LEFT_OUTPUT,
@@ -1538,7 +1538,7 @@ CS4231_SINGLE("Line Out Switch", 0, CS4231_PIN_CTRL, 6, 1, 1),
1538CS4231_SINGLE("Headphone Out Switch", 0, CS4231_PIN_CTRL, 7, 1, 1) 1538CS4231_SINGLE("Headphone Out Switch", 0, CS4231_PIN_CTRL, 7, 1, 1)
1539}; 1539};
1540 1540
1541static int __init snd_cs4231_mixer(struct snd_card *card) 1541static int __devinit snd_cs4231_mixer(struct snd_card *card)
1542{ 1542{
1543 struct snd_cs4231 *chip = card->private_data; 1543 struct snd_cs4231 *chip = card->private_data;
1544 int err, idx; 1544 int err, idx;
@@ -1559,7 +1559,7 @@ static int __init snd_cs4231_mixer(struct snd_card *card)
1559 1559
1560static int dev; 1560static int dev;
1561 1561
1562static int __init cs4231_attach_begin(struct snd_card **rcard) 1562static int __devinit cs4231_attach_begin(struct snd_card **rcard)
1563{ 1563{
1564 struct snd_card *card; 1564 struct snd_card *card;
1565 struct snd_cs4231 *chip; 1565 struct snd_cs4231 *chip;
@@ -1590,7 +1590,7 @@ static int __init cs4231_attach_begin(struct snd_card **rcard)
1590 return 0; 1590 return 0;
1591} 1591}
1592 1592
1593static int __init cs4231_attach_finish(struct snd_card *card) 1593static int __devinit cs4231_attach_finish(struct snd_card *card)
1594{ 1594{
1595 struct snd_cs4231 *chip = card->private_data; 1595 struct snd_cs4231 *chip = card->private_data;
1596 int err; 1596 int err;
@@ -1794,9 +1794,9 @@ static struct snd_device_ops snd_cs4231_sbus_dev_ops = {
1794 .dev_free = snd_cs4231_sbus_dev_free, 1794 .dev_free = snd_cs4231_sbus_dev_free,
1795}; 1795};
1796 1796
1797static int __init snd_cs4231_sbus_create(struct snd_card *card, 1797static int __devinit snd_cs4231_sbus_create(struct snd_card *card,
1798 struct of_device *op, 1798 struct of_device *op,
1799 int dev) 1799 int dev)
1800{ 1800{
1801 struct snd_cs4231 *chip = card->private_data; 1801 struct snd_cs4231 *chip = card->private_data;
1802 int err; 1802 int err;
@@ -1960,9 +1960,9 @@ static struct snd_device_ops snd_cs4231_ebus_dev_ops = {
1960 .dev_free = snd_cs4231_ebus_dev_free, 1960 .dev_free = snd_cs4231_ebus_dev_free,
1961}; 1961};
1962 1962
1963static int __init snd_cs4231_ebus_create(struct snd_card *card, 1963static int __devinit snd_cs4231_ebus_create(struct snd_card *card,
1964 struct of_device *op, 1964 struct of_device *op,
1965 int dev) 1965 int dev)
1966{ 1966{
1967 struct snd_cs4231 *chip = card->private_data; 1967 struct snd_cs4231 *chip = card->private_data;
1968 int err; 1968 int err;
diff --git a/sound/usb/usx2y/us122l.c b/sound/usb/usx2y/us122l.c
index 98276aafefe6..a5aae9d67f31 100644
--- a/sound/usb/usx2y/us122l.c
+++ b/sound/usb/usx2y/us122l.c
@@ -349,14 +349,10 @@ static int usb_stream_hwdep_ioctl(struct snd_hwdep *hw, struct file *file,
349 if (cmd != SNDRV_USB_STREAM_IOCTL_SET_PARAMS) 349 if (cmd != SNDRV_USB_STREAM_IOCTL_SET_PARAMS)
350 return -ENOTTY; 350 return -ENOTTY;
351 351
352 cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); 352 cfg = memdup_user((void *)arg, sizeof(*cfg));
353 if (!cfg) 353 if (IS_ERR(cfg))
354 return -ENOMEM; 354 return PTR_ERR(cfg);
355 355
356 if (copy_from_user(cfg, (void *)arg, sizeof(*cfg))) {
357 err = -EFAULT;
358 goto free;
359 }
360 if (cfg->version != USB_STREAM_INTERFACE_VERSION) { 356 if (cfg->version != USB_STREAM_INTERFACE_VERSION) {
361 err = -ENXIO; 357 err = -ENXIO;
362 goto free; 358 goto free;
@@ -478,6 +474,14 @@ static bool us122l_create_card(struct snd_card *card)
478 return true; 474 return true;
479} 475}
480 476
477static void snd_us122l_free(struct snd_card *card)
478{
479 struct us122l *us122l = US122L(card);
480 int index = us122l->chip.index;
481 if (index >= 0 && index < SNDRV_CARDS)
482 snd_us122l_card_used[index] = 0;
483}
484
481static int usx2y_create_card(struct usb_device *device, struct snd_card **cardp) 485static int usx2y_create_card(struct usb_device *device, struct snd_card **cardp)
482{ 486{
483 int dev; 487 int dev;
@@ -494,7 +498,7 @@ static int usx2y_create_card(struct usb_device *device, struct snd_card **cardp)
494 if (err < 0) 498 if (err < 0)
495 return err; 499 return err;
496 snd_us122l_card_used[US122L(card)->chip.index = dev] = 1; 500 snd_us122l_card_used[US122L(card)->chip.index = dev] = 1;
497 501 card->private_free = snd_us122l_free;
498 US122L(card)->chip.dev = device; 502 US122L(card)->chip.dev = device;
499 US122L(card)->chip.card = card; 503 US122L(card)->chip.card = card;
500 mutex_init(&US122L(card)->mutex); 504 mutex_init(&US122L(card)->mutex);
@@ -588,7 +592,7 @@ static void snd_us122l_disconnect(struct usb_interface *intf)
588 } 592 }
589 593
590 usb_put_intf(intf); 594 usb_put_intf(intf);
591 usb_put_dev(US122L(card)->chip.dev); 595 usb_put_dev(us122l->chip.dev);
592 596
593 while (atomic_read(&us122l->mmap_count)) 597 while (atomic_read(&us122l->mmap_count))
594 msleep(500); 598 msleep(500);
diff --git a/sound/usb/usx2y/usX2Yhwdep.c b/sound/usb/usx2y/usX2Yhwdep.c
index 4af8740db717..f3d8f71265dd 100644
--- a/sound/usb/usx2y/usX2Yhwdep.c
+++ b/sound/usb/usx2y/usX2Yhwdep.c
@@ -203,13 +203,12 @@ static int snd_usX2Y_hwdep_dsp_load(struct snd_hwdep *hw,
203 203
204 if (access_ok(VERIFY_READ, dsp->image, dsp->length)) { 204 if (access_ok(VERIFY_READ, dsp->image, dsp->length)) {
205 struct usb_device* dev = priv->chip.dev; 205 struct usb_device* dev = priv->chip.dev;
206 char *buf = kmalloc(dsp->length, GFP_KERNEL); 206 char *buf;
207 if (!buf) 207
208 return -ENOMEM; 208 buf = memdup_user(dsp->image, dsp->length);
209 if (copy_from_user(buf, dsp->image, dsp->length)) { 209 if (IS_ERR(buf))
210 kfree(buf); 210 return PTR_ERR(buf);
211 return -EFAULT; 211
212 }
213 err = usb_set_interface(dev, 0, 1); 212 err = usb_set_interface(dev, 0, 1);
214 if (err) 213 if (err)
215 snd_printk(KERN_ERR "usb_set_interface error \n"); 214 snd_printk(KERN_ERR "usb_set_interface error \n");
diff --git a/sound/usb/usx2y/usb_stream.c b/sound/usb/usx2y/usb_stream.c
index 24393dafcb6e..12ae0340adc0 100644
--- a/sound/usb/usx2y/usb_stream.c
+++ b/sound/usb/usx2y/usb_stream.c
@@ -33,32 +33,26 @@ static unsigned usb_stream_next_packet_size(struct usb_stream_kernel *sk)
33static void playback_prep_freqn(struct usb_stream_kernel *sk, struct urb *urb) 33static void playback_prep_freqn(struct usb_stream_kernel *sk, struct urb *urb)
34{ 34{
35 struct usb_stream *s = sk->s; 35 struct usb_stream *s = sk->s;
36 unsigned l = 0; 36 int pack, lb = 0;
37 int pack; 37
38 38 for (pack = 0; pack < sk->n_o_ps; pack++) {
39 urb->iso_frame_desc[0].offset = 0; 39 int l = usb_stream_next_packet_size(sk);
40 urb->iso_frame_desc[0].length = usb_stream_next_packet_size(sk); 40 if (s->idle_outsize + lb + l > s->period_size)
41 sk->out_phase = sk->out_phase_peeked;
42 urb->transfer_buffer_length = urb->iso_frame_desc[0].length;
43
44 for (pack = 1; pack < sk->n_o_ps; pack++) {
45 l = usb_stream_next_packet_size(sk);
46 if (s->idle_outsize + urb->transfer_buffer_length + l >
47 s->period_size)
48 goto check; 41 goto check;
49 42
50 sk->out_phase = sk->out_phase_peeked; 43 sk->out_phase = sk->out_phase_peeked;
51 urb->iso_frame_desc[pack].offset = urb->transfer_buffer_length; 44 urb->iso_frame_desc[pack].offset = lb;
52 urb->iso_frame_desc[pack].length = l; 45 urb->iso_frame_desc[pack].length = l;
53 urb->transfer_buffer_length += l; 46 lb += l;
54 } 47 }
55 snd_printdd(KERN_DEBUG "%i\n", urb->transfer_buffer_length); 48 snd_printdd(KERN_DEBUG "%i\n", lb);
56 49
57check: 50check:
58 urb->number_of_packets = pack; 51 urb->number_of_packets = pack;
59 s->idle_outsize += urb->transfer_buffer_length - s->period_size; 52 urb->transfer_buffer_length = lb;
53 s->idle_outsize += lb - s->period_size;
60 snd_printdd(KERN_DEBUG "idle=%i ul=%i ps=%i\n", s->idle_outsize, 54 snd_printdd(KERN_DEBUG "idle=%i ul=%i ps=%i\n", s->idle_outsize,
61 urb->transfer_buffer_length, s->period_size); 55 lb, s->period_size);
62} 56}
63 57
64static void init_pipe_urbs(struct usb_stream_kernel *sk, unsigned use_packsize, 58static void init_pipe_urbs(struct usb_stream_kernel *sk, unsigned use_packsize,
@@ -282,21 +276,20 @@ static int usb_stream_prepare_playback(struct usb_stream_kernel *sk,
282 struct usb_stream *s = sk->s; 276 struct usb_stream *s = sk->s;
283 struct urb *io; 277 struct urb *io;
284 struct usb_iso_packet_descriptor *id, *od; 278 struct usb_iso_packet_descriptor *id, *od;
285 int p, l = 0; 279 int p = 0, lb = 0, l = 0;
286 280
287 io = sk->idle_outurb; 281 io = sk->idle_outurb;
288 od = io->iso_frame_desc; 282 od = io->iso_frame_desc;
289 io->transfer_buffer_length = 0;
290 283
291 for (p = 0; s->sync_packet < 0; ++p, ++s->sync_packet) { 284 for (; s->sync_packet < 0; ++p, ++s->sync_packet) {
292 struct urb *ii = sk->completed_inurb; 285 struct urb *ii = sk->completed_inurb;
293 id = ii->iso_frame_desc + 286 id = ii->iso_frame_desc +
294 ii->number_of_packets + s->sync_packet; 287 ii->number_of_packets + s->sync_packet;
295 l = id->actual_length; 288 l = id->actual_length;
296 289
297 od[p].length = l; 290 od[p].length = l;
298 od[p].offset = io->transfer_buffer_length; 291 od[p].offset = lb;
299 io->transfer_buffer_length += l; 292 lb += l;
300 } 293 }
301 294
302 for (; 295 for (;
@@ -304,38 +297,38 @@ static int usb_stream_prepare_playback(struct usb_stream_kernel *sk,
304 ++p, ++s->sync_packet) { 297 ++p, ++s->sync_packet) {
305 l = inurb->iso_frame_desc[s->sync_packet].actual_length; 298 l = inurb->iso_frame_desc[s->sync_packet].actual_length;
306 299
307 if (s->idle_outsize + io->transfer_buffer_length + l > 300 if (s->idle_outsize + lb + l > s->period_size)
308 s->period_size)
309 goto check_ok; 301 goto check_ok;
310 302
311 od[p].length = l; 303 od[p].length = l;
312 od[p].offset = io->transfer_buffer_length; 304 od[p].offset = lb;
313 io->transfer_buffer_length += l; 305 lb += l;
314 } 306 }
315 307
316check_ok: 308check_ok:
317 s->sync_packet -= inurb->number_of_packets; 309 s->sync_packet -= inurb->number_of_packets;
318 if (s->sync_packet < -2 || s->sync_packet > 0) { 310 if (unlikely(s->sync_packet < -2 || s->sync_packet > 0)) {
319 snd_printk(KERN_WARNING "invalid sync_packet = %i;" 311 snd_printk(KERN_WARNING "invalid sync_packet = %i;"
320 " p=%i nop=%i %i %x %x %x > %x\n", 312 " p=%i nop=%i %i %x %x %x > %x\n",
321 s->sync_packet, p, inurb->number_of_packets, 313 s->sync_packet, p, inurb->number_of_packets,
322 s->idle_outsize + io->transfer_buffer_length + l, 314 s->idle_outsize + lb + l,
323 s->idle_outsize, io->transfer_buffer_length, l, 315 s->idle_outsize, lb, l,
324 s->period_size); 316 s->period_size);
325 return -1; 317 return -1;
326 } 318 }
327 if (io->transfer_buffer_length % s->cfg.frame_size) { 319 if (unlikely(lb % s->cfg.frame_size)) {
328 snd_printk(KERN_WARNING"invalid outsize = %i\n", 320 snd_printk(KERN_WARNING"invalid outsize = %i\n",
329 io->transfer_buffer_length); 321 lb);
330 return -1; 322 return -1;
331 } 323 }
332 s->idle_outsize += io->transfer_buffer_length - s->period_size; 324 s->idle_outsize += lb - s->period_size;
333 io->number_of_packets = p; 325 io->number_of_packets = p;
334 if (s->idle_outsize > 0) { 326 io->transfer_buffer_length = lb;
335 snd_printk(KERN_WARNING "idle=%i\n", s->idle_outsize); 327 if (s->idle_outsize <= 0)
336 return -1; 328 return 0;
337 } 329
338 return 0; 330 snd_printk(KERN_WARNING "idle=%i\n", s->idle_outsize);
331 return -1;
339} 332}
340 333
341static void prepare_inurb(int number_of_packets, struct urb *iu) 334static void prepare_inurb(int number_of_packets, struct urb *iu)
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 605697e9c4dd..1ecbe2391c8b 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -920,6 +920,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
920 int r; 920 int r;
921 gfn_t base_gfn; 921 gfn_t base_gfn;
922 unsigned long npages; 922 unsigned long npages;
923 int largepages;
923 unsigned long i; 924 unsigned long i;
924 struct kvm_memory_slot *memslot; 925 struct kvm_memory_slot *memslot;
925 struct kvm_memory_slot old, new; 926 struct kvm_memory_slot old, new;
@@ -960,7 +961,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
960 for (i = 0; i < KVM_MEMORY_SLOTS; ++i) { 961 for (i = 0; i < KVM_MEMORY_SLOTS; ++i) {
961 struct kvm_memory_slot *s = &kvm->memslots[i]; 962 struct kvm_memory_slot *s = &kvm->memslots[i];
962 963
963 if (s == memslot) 964 if (s == memslot || !s->npages)
964 continue; 965 continue;
965 if (!((base_gfn + npages <= s->base_gfn) || 966 if (!((base_gfn + npages <= s->base_gfn) ||
966 (base_gfn >= s->base_gfn + s->npages))) 967 (base_gfn >= s->base_gfn + s->npages)))
@@ -995,11 +996,8 @@ int __kvm_set_memory_region(struct kvm *kvm,
995 new.userspace_addr = 0; 996 new.userspace_addr = 0;
996 } 997 }
997 if (npages && !new.lpage_info) { 998 if (npages && !new.lpage_info) {
998 int largepages = npages / KVM_PAGES_PER_HPAGE; 999 largepages = 1 + (base_gfn + npages - 1) / KVM_PAGES_PER_HPAGE;
999 if (npages % KVM_PAGES_PER_HPAGE) 1000 largepages -= base_gfn / KVM_PAGES_PER_HPAGE;
1000 largepages++;
1001 if (base_gfn % KVM_PAGES_PER_HPAGE)
1002 largepages++;
1003 1001
1004 new.lpage_info = vmalloc(largepages * sizeof(*new.lpage_info)); 1002 new.lpage_info = vmalloc(largepages * sizeof(*new.lpage_info));
1005 1003
@@ -1985,6 +1983,7 @@ static long kvm_dev_ioctl_check_extension_generic(long arg)
1985 switch (arg) { 1983 switch (arg) {
1986 case KVM_CAP_USER_MEMORY: 1984 case KVM_CAP_USER_MEMORY:
1987 case KVM_CAP_DESTROY_MEMORY_REGION_WORKS: 1985 case KVM_CAP_DESTROY_MEMORY_REGION_WORKS:
1986 case KVM_CAP_JOIN_MEMORY_REGIONS_WORKS:
1988 return 1; 1987 return 1;
1989#ifdef CONFIG_HAVE_KVM_IRQCHIP 1988#ifdef CONFIG_HAVE_KVM_IRQCHIP
1990 case KVM_CAP_IRQ_ROUTING: 1989 case KVM_CAP_IRQ_ROUTING: