Merge tag 'kvm-3.10-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Linus Torvalds [Fri, 10 May 2013 16:08:21 +0000 (09:08 -0700)]
Pull kvm fixes from Gleb Natapov:
 "Most of the fixes are in the emulator since now we emulate more than
  we did before for correctness sake we see more bugs there, but there
  is also an OOPS fixed and corruption of xcr0 register."

* tag 'kvm-3.10-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
  KVM: emulator: emulate SALC
  KVM: emulator: emulate XLAT
  KVM: emulator: emulate AAM
  KVM: VMX: fix halt emulation while emulating invalid guest sate
  KVM: Fix kvm_irqfd_init initialization
  KVM: x86: fix maintenance of guest/host xcr0 state

891 files changed:
Documentation/ABI/testing/sysfs-block-bcache [new file with mode: 0644]
Documentation/ABI/testing/sysfs-class-mtd
Documentation/acpi/enumeration.txt
Documentation/bcache.txt [new file with mode: 0644]
Documentation/block/cfq-iosched.txt
Documentation/devicetree/bindings/dma/atmel-dma.txt
Documentation/devicetree/bindings/mips/ralink.txt [new file with mode: 0644]
Documentation/devicetree/bindings/mtd/gpmc-nand.txt
Documentation/devicetree/bindings/mtd/partition.txt
Documentation/devicetree/bindings/net/gpmc-eth.txt
Documentation/devicetree/bindings/thermal/armada-thermal.txt [new file with mode: 0644]
Documentation/devicetree/bindings/vendor-prefixes.txt
Documentation/dmatest.txt [new file with mode: 0644]
Documentation/filesystems/btrfs.txt
Documentation/filesystems/f2fs.txt
Documentation/gpio.txt
Documentation/thermal/exynos_thermal_emulation
Documentation/thermal/sysfs-api.txt
Documentation/xtensa/mmu.txt [new file with mode: 0644]
Documentation/zh_CN/gpio.txt
MAINTAINERS
arch/alpha/Kconfig
arch/arc/Kconfig
arch/arc/Makefile
arch/arc/boot/Makefile
arch/arc/boot/dts/Makefile
arch/arc/boot/dts/abilis_tb100.dtsi [new file with mode: 0644]
arch/arc/boot/dts/abilis_tb100_dvk.dts [new file with mode: 0644]
arch/arc/boot/dts/abilis_tb101.dtsi [new file with mode: 0644]
arch/arc/boot/dts/abilis_tb101_dvk.dts [new file with mode: 0644]
arch/arc/boot/dts/abilis_tb10x.dtsi [new file with mode: 0644]
arch/arc/boot/dts/nsimosci.dts [new file with mode: 0644]
arch/arc/configs/fpga_defconfig
arch/arc/configs/nsimosci_defconfig [new file with mode: 0644]
arch/arc/configs/tb10x_defconfig [new file with mode: 0644]
arch/arc/include/asm/Kbuild
arch/arc/include/asm/cache.h
arch/arc/include/asm/cacheflush.h
arch/arc/include/asm/irq.h
arch/arc/include/asm/page.h
arch/arc/include/asm/pgtable.h
arch/arc/include/asm/serial.h
arch/arc/include/asm/shmparam.h [new file with mode: 0644]
arch/arc/include/asm/tlb.h
arch/arc/kernel/asm-offsets.c
arch/arc/kernel/clk.c
arch/arc/kernel/disasm.c
arch/arc/kernel/entry.S
arch/arc/kernel/irq.c
arch/arc/kernel/kprobes.c
arch/arc/kernel/module.c
arch/arc/kernel/setup.c
arch/arc/kernel/time.c
arch/arc/kernel/traps.c
arch/arc/kernel/troubleshoot.c
arch/arc/mm/Makefile
arch/arc/mm/cache_arc700.c
arch/arc/mm/extable.c
arch/arc/mm/fault.c
arch/arc/mm/init.c
arch/arc/mm/ioremap.c
arch/arc/mm/mmap.c [new file with mode: 0644]
arch/arc/mm/tlb.c
arch/arc/plat-arcfpga/platform.c
arch/arc/plat-tb10x/Kconfig [new file with mode: 0644]
arch/arc/plat-tb10x/Makefile [new file with mode: 0644]
arch/arc/plat-tb10x/tb10x.c [new file with mode: 0644]
arch/arm/Kconfig
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/cros5250-common.dtsi
arch/arm/boot/dts/exynos5250-smdk5250.dts
arch/arm/boot/dts/exynos5250-snow.dts
arch/arm/boot/dts/omap3-beagle-xm.dts
arch/arm/boot/dts/omap3-evm.dts
arch/arm/boot/dts/omap3-overo.dtsi
arch/arm/boot/dts/omap3.dtsi
arch/arm/boot/dts/omap36xx.dtsi
arch/arm/boot/dts/omap4-sdp.dts
arch/arm/boot/dts/omap4-var-som.dts
arch/arm/boot/dts/omap4460.dtsi
arch/arm/configs/omap2plus_defconfig
arch/arm/kernel/devtree.c
arch/arm/kernel/setup.c
arch/arm/mach-exynos/include/mach/regs-pmu.h
arch/arm/mach-exynos/pmu.c
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/Makefile
arch/arm/mach-imx/common.h
arch/arm/mach-imx/headsmp.S
arch/arm/mach-imx/hotplug.c
arch/arm/mach-imx/iram_alloc.c [deleted file]
arch/arm/mach-omap1/dma.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/dma.c
arch/arm/mach-omap2/gpmc.c
arch/arm/mach-omap2/id.c
arch/arm/mach-omap2/mux34xx.h
arch/arm/mach-omap2/omap_device.c
arch/arm/mach-omap2/soc.h
arch/arm/mach-prima2/Kconfig
arch/arm/mach-pxa/Kconfig
arch/arm/mach-spear/spear13xx.c
arch/arm/mach-tegra/Kconfig
arch/arm/mach-ux500/Kconfig
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/plat-orion/Makefile
arch/arm/plat-orion/gpio.c
arch/arm64/Kconfig
arch/arm64/boot/dts/foundation-v8.dts
arch/arm64/include/asm/system_misc.h
arch/arm64/kernel/process.c
arch/arm64/lib/bitops.S
arch/arm64/mm/fault.c
arch/avr32/Kconfig
arch/blackfin/Kconfig
arch/blackfin/Makefile
arch/blackfin/boot/Makefile
arch/blackfin/include/asm/atomic.h
arch/blackfin/include/asm/bfin_sdh.h
arch/blackfin/include/asm/bitops.h
arch/blackfin/include/asm/def_LPBlackfin.h
arch/blackfin/include/asm/mem_init.h
arch/blackfin/kernel/cplb-nompu/cplbinit.c
arch/blackfin/kernel/cplb-nompu/cplbmgr.c
arch/blackfin/kernel/cplbinfo.c
arch/blackfin/kernel/setup.c
arch/blackfin/mach-bf537/boards/stamp.c
arch/blackfin/mach-bf538/boards/ezkit.c
arch/blackfin/mach-bf609/include/mach/cdefBF60x_base.h
arch/cris/Kconfig
arch/cris/arch-v32/drivers/Kconfig
arch/hexagon/Kconfig
arch/hexagon/kernel/vm_entry.S
arch/ia64/Kconfig
arch/m68k/Kconfig
arch/m68k/Kconfig.cpu
arch/m68k/Kconfig.machine
arch/m68k/Makefile
arch/m68k/include/asm/dbg.h [deleted file]
arch/m68k/include/asm/dma.h
arch/m68k/include/asm/m53xxacr.h
arch/m68k/include/asm/m53xxsim.h [moved from arch/m68k/include/asm/m532xsim.h with 99% similarity]
arch/m68k/include/asm/m54xxacr.h
arch/m68k/include/asm/mcfgpio.h
arch/m68k/include/asm/mcfsim.h
arch/m68k/include/asm/mcftimer.h
arch/m68k/platform/coldfire/Makefile
arch/m68k/platform/coldfire/m53xx.c [moved from arch/m68k/platform/coldfire/m532x.c with 98% similarity]
arch/m68k/platform/coldfire/timers.c
arch/metag/Kconfig
arch/microblaze/Kconfig
arch/microblaze/configs/mmu_defconfig
arch/microblaze/include/asm/pci.h
arch/microblaze/include/asm/uaccess.h
arch/microblaze/kernel/cpu/cpuinfo.c
arch/microblaze/kernel/head.S
arch/microblaze/kernel/intc.c
arch/microblaze/kernel/process.c
arch/microblaze/mm/init.c
arch/microblaze/pci/pci-common.c
arch/mips/Kbuild
arch/mips/Kconfig
arch/mips/Makefile
arch/mips/alchemy/Kconfig
arch/mips/alchemy/Platform
arch/mips/ar7/memory.c
arch/mips/ath79/setup.c
arch/mips/bcm63xx/Kconfig
arch/mips/bcm63xx/boards/board_bcm963xx.c
arch/mips/bcm63xx/clk.c
arch/mips/bcm63xx/cpu.c
arch/mips/bcm63xx/dev-flash.c
arch/mips/bcm63xx/dev-spi.c
arch/mips/bcm63xx/irq.c
arch/mips/bcm63xx/prom.c
arch/mips/bcm63xx/reset.c
arch/mips/bcm63xx/setup.c
arch/mips/cavium-octeon/octeon-irq.c
arch/mips/configs/malta_defconfig
arch/mips/configs/malta_kvm_defconfig [new file with mode: 0644]
arch/mips/configs/malta_kvm_guest_defconfig [new file with mode: 0644]
arch/mips/configs/maltaaprp_defconfig [new file with mode: 0644]
arch/mips/configs/maltasmtc_defconfig [new file with mode: 0644]
arch/mips/configs/maltasmvp_defconfig [new file with mode: 0644]
arch/mips/configs/maltaup_defconfig [new file with mode: 0644]
arch/mips/configs/sead3_defconfig
arch/mips/configs/sead3micro_defconfig [new file with mode: 0644]
arch/mips/fw/lib/Makefile
arch/mips/fw/lib/cmdline.c [new file with mode: 0644]
arch/mips/include/asm/asm.h
arch/mips/include/asm/bootinfo.h
arch/mips/include/asm/branch.h
arch/mips/include/asm/cpu-features.h
arch/mips/include/asm/dma-coherence.h [new file with mode: 0644]
arch/mips/include/asm/dma-mapping.h
arch/mips/include/asm/fpu_emulator.h
arch/mips/include/asm/fw/fw.h [new file with mode: 0644]
arch/mips/include/asm/gic.h
arch/mips/include/asm/hazards.h
arch/mips/include/asm/inst.h
arch/mips/include/asm/irqflags.h
arch/mips/include/asm/kvm.h [new file with mode: 0644]
arch/mips/include/asm/kvm_host.h [new file with mode: 0644]
arch/mips/include/asm/mach-bcm63xx/bcm63xx_clk.h [deleted file]
arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h
arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
arch/mips/include/asm/mach-bcm63xx/ioremap.h
arch/mips/include/asm/mach-generic/dma-coherence.h
arch/mips/include/asm/mach-generic/spaces.h
arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h
arch/mips/include/asm/mach-ralink/mt7620.h [new file with mode: 0644]
arch/mips/include/asm/mach-ralink/rt288x.h [new file with mode: 0644]
arch/mips/include/asm/mach-ralink/rt288x/cpu-feature-overrides.h [new file with mode: 0644]
arch/mips/include/asm/mach-ralink/rt305x.h
arch/mips/include/asm/mach-ralink/rt305x/cpu-feature-overrides.h [new file with mode: 0644]
arch/mips/include/asm/mach-ralink/rt3883.h [new file with mode: 0644]
arch/mips/include/asm/mach-ralink/rt3883/cpu-feature-overrides.h [new file with mode: 0644]
arch/mips/include/asm/mach-sead3/cpu-feature-overrides.h
arch/mips/include/asm/mips-boards/generic.h
arch/mips/include/asm/mips-boards/prom.h [deleted file]
arch/mips/include/asm/mips_machine.h
arch/mips/include/asm/mipsregs.h
arch/mips/include/asm/mmu_context.h
arch/mips/include/asm/netlogic/haldefs.h
arch/mips/include/asm/netlogic/mips-extns.h
arch/mips/include/asm/netlogic/xlp-hal/pic.h
arch/mips/include/asm/netlogic/xlp-hal/usb.h [deleted file]
arch/mips/include/asm/pgtable.h
arch/mips/include/asm/processor.h
arch/mips/include/asm/prom.h
arch/mips/include/asm/sn/sn_private.h
arch/mips/include/asm/sn/types.h
arch/mips/include/asm/spinlock.h
arch/mips/include/asm/stackframe.h
arch/mips/include/asm/thread_info.h
arch/mips/include/asm/time.h
arch/mips/include/asm/uaccess.h
arch/mips/include/asm/uasm.h
arch/mips/include/uapi/asm/inst.h
arch/mips/kernel/Makefile
arch/mips/kernel/asm-offsets.c
arch/mips/kernel/binfmt_elfo32.c
arch/mips/kernel/branch.c
arch/mips/kernel/cevt-gic.c [new file with mode: 0644]
arch/mips/kernel/cevt-r4k.c
arch/mips/kernel/cpu-probe.c
arch/mips/kernel/csrc-gic.c
arch/mips/kernel/genex.S
arch/mips/kernel/irq-gic.c
arch/mips/kernel/mips_machine.c
arch/mips/kernel/proc.c
arch/mips/kernel/process.c
arch/mips/kernel/prom.c
arch/mips/kernel/scall32-o32.S
arch/mips/kernel/setup.c
arch/mips/kernel/signal.c
arch/mips/kernel/smp-mt.c
arch/mips/kernel/smp.c
arch/mips/kernel/smtc-asm.S
arch/mips/kernel/smtc.c
arch/mips/kernel/traps.c
arch/mips/kernel/unaligned.c
arch/mips/kvm/00README.txt [new file with mode: 0644]
arch/mips/kvm/Kconfig [new file with mode: 0644]
arch/mips/kvm/Makefile [new file with mode: 0644]
arch/mips/kvm/kvm_cb.c [new file with mode: 0644]
arch/mips/kvm/kvm_locore.S [new file with mode: 0644]
arch/mips/kvm/kvm_mips.c [new file with mode: 0644]
arch/mips/kvm/kvm_mips_comm.h [new file with mode: 0644]
arch/mips/kvm/kvm_mips_commpage.c [new file with mode: 0644]
arch/mips/kvm/kvm_mips_dyntrans.c [new file with mode: 0644]
arch/mips/kvm/kvm_mips_emul.c [new file with mode: 0644]
arch/mips/kvm/kvm_mips_int.c [new file with mode: 0644]
arch/mips/kvm/kvm_mips_int.h [new file with mode: 0644]
arch/mips/kvm/kvm_mips_opcode.h [new file with mode: 0644]
arch/mips/kvm/kvm_mips_stats.c [new file with mode: 0644]
arch/mips/kvm/kvm_tlb.c [new file with mode: 0644]
arch/mips/kvm/kvm_trap_emul.c [new file with mode: 0644]
arch/mips/kvm/trace.h [new file with mode: 0644]
arch/mips/lib/bitops.c
arch/mips/lib/dump_tlb.c
arch/mips/lib/memset.S
arch/mips/lib/mips-atomic.c
arch/mips/lib/r3k_dump_tlb.c
arch/mips/lib/strlen_user.S
arch/mips/lib/strncpy_user.S
arch/mips/lib/strnlen_user.S
arch/mips/loongson/common/Makefile
arch/mips/math-emu/cp1emu.c
arch/mips/math-emu/dsemul.c
arch/mips/mm/Makefile
arch/mips/mm/c-r4k.c
arch/mips/mm/cache.c
arch/mips/mm/dma-default.c
arch/mips/mm/page.c
arch/mips/mm/tlb-r3k.c
arch/mips/mm/tlb-r4k.c
arch/mips/mm/tlb-r8k.c
arch/mips/mm/tlbex.c
arch/mips/mm/uasm-micromips.c [new file with mode: 0644]
arch/mips/mm/uasm-mips.c [new file with mode: 0644]
arch/mips/mm/uasm.c
arch/mips/mti-malta/Makefile
arch/mips/mti-malta/Platform
arch/mips/mti-malta/malta-cmdline.c [deleted file]
arch/mips/mti-malta/malta-display.c
arch/mips/mti-malta/malta-init.c
arch/mips/mti-malta/malta-int.c
arch/mips/mti-malta/malta-memory.c
arch/mips/mti-malta/malta-setup.c
arch/mips/mti-malta/malta-time.c
arch/mips/mti-sead3/Makefile
arch/mips/mti-sead3/leds-sead3.c
arch/mips/mti-sead3/sead3-cmdline.c [deleted file]
arch/mips/mti-sead3/sead3-console.c
arch/mips/mti-sead3/sead3-display.c
arch/mips/mti-sead3/sead3-init.c
arch/mips/mti-sead3/sead3-int.c
arch/mips/mti-sead3/sead3-setup.c
arch/mips/mti-sead3/sead3-time.c
arch/mips/netlogic/Kconfig
arch/mips/netlogic/common/smp.c
arch/mips/netlogic/dts/Makefile
arch/mips/netlogic/dts/xlp_evp.dts
arch/mips/netlogic/dts/xlp_svp.dts [new file with mode: 0644]
arch/mips/netlogic/xlp/nlm_hal.c
arch/mips/netlogic/xlp/setup.c
arch/mips/netlogic/xlp/usb-init.c
arch/mips/oprofile/op_model_mipsxx.c
arch/mips/pci/pci-ar71xx.c
arch/mips/pci/pci-ar724x.c
arch/mips/pci/pci-bcm63xx.c
arch/mips/powertv/init.c
arch/mips/powertv/init.h
arch/mips/powertv/memory.c
arch/mips/powertv/powertv_setup.c
arch/mips/ralink/Kconfig
arch/mips/ralink/Makefile
arch/mips/ralink/Platform
arch/mips/ralink/common.h
arch/mips/ralink/dts/Makefile
arch/mips/ralink/dts/mt7620a.dtsi [new file with mode: 0644]
arch/mips/ralink/dts/mt7620a_eval.dts [new file with mode: 0644]
arch/mips/ralink/dts/rt2880.dtsi [new file with mode: 0644]
arch/mips/ralink/dts/rt2880_eval.dts [new file with mode: 0644]
arch/mips/ralink/dts/rt3050.dtsi
arch/mips/ralink/dts/rt3052_eval.dts
arch/mips/ralink/dts/rt3883.dtsi [new file with mode: 0644]
arch/mips/ralink/dts/rt3883_eval.dts [new file with mode: 0644]
arch/mips/ralink/early_printk.c
arch/mips/ralink/irq.c
arch/mips/ralink/mt7620.c [new file with mode: 0644]
arch/mips/ralink/of.c
arch/mips/ralink/rt288x.c [new file with mode: 0644]
arch/mips/ralink/rt305x.c
arch/mips/ralink/rt3883.c [new file with mode: 0644]
arch/mips/sgi-ip27/ip27-klnuma.c
arch/mips/sgi-ip27/ip27-memory.c
arch/mips/sgi-ip27/ip27-timer.c
arch/mips/txx9/generic/setup.c
arch/openrisc/Kconfig
arch/powerpc/Kconfig
arch/powerpc/platforms/40x/Kconfig
arch/powerpc/platforms/44x/Kconfig
arch/powerpc/platforms/85xx/Kconfig
arch/powerpc/platforms/86xx/Kconfig
arch/powerpc/platforms/8xx/Kconfig
arch/powerpc/platforms/Kconfig
arch/sh/Kconfig
arch/sh/boards/mach-sdk7786/Makefile
arch/sh/boards/mach-x3proto/Makefile
arch/sh/kernel/cpu/sh2a/Makefile
arch/sh/kernel/cpu/sh3/Makefile
arch/sh/kernel/cpu/sh4a/Makefile
arch/sparc/Kconfig
arch/tile/Kconfig
arch/tile/include/hv/hypervisor.h
arch/tile/kernel/head_32.S
arch/tile/kernel/head_64.S
arch/tile/lib/spinlock_32.c
arch/unicore32/Kconfig
arch/x86/Kconfig
arch/x86/pci/mrst.c
arch/xtensa/Kconfig
arch/xtensa/boot/boot-elf/Makefile
arch/xtensa/boot/boot-elf/boot.lds.S
arch/xtensa/boot/boot-elf/bootstrap.S
arch/xtensa/boot/boot-redboot/boot.ld
arch/xtensa/boot/boot-uboot/Makefile
arch/xtensa/configs/iss_defconfig
arch/xtensa/configs/s6105_defconfig
arch/xtensa/include/asm/Kbuild
arch/xtensa/include/asm/ftrace.h
arch/xtensa/include/asm/initialize_mmu.h
arch/xtensa/include/asm/irqflags.h
arch/xtensa/include/asm/linkage.h [deleted file]
arch/xtensa/include/asm/stacktrace.h [new file with mode: 0644]
arch/xtensa/include/asm/timex.h
arch/xtensa/include/asm/traps.h
arch/xtensa/include/asm/vectors.h [new file with mode: 0644]
arch/xtensa/kernel/Makefile
arch/xtensa/kernel/entry.S
arch/xtensa/kernel/head.S
arch/xtensa/kernel/platform.c
arch/xtensa/kernel/stacktrace.c [new file with mode: 0644]
arch/xtensa/kernel/traps.c
arch/xtensa/kernel/vectors.S
arch/xtensa/kernel/vmlinux.lds.S
arch/xtensa/kernel/xtensa_ksyms.c
arch/xtensa/mm/mmu.c
arch/xtensa/oprofile/backtrace.c
arch/xtensa/platforms/iss/console.c
arch/xtensa/platforms/iss/include/platform/simcall.h
arch/xtensa/platforms/iss/setup.c
arch/xtensa/platforms/iss/simdisk.c
arch/xtensa/platforms/xt2000/setup.c
arch/xtensa/platforms/xtfpga/setup.c
block/blk-cgroup.c
block/blk-core.c
block/cfq-iosched.c
block/deadline-iosched.c
block/elevator.c
block/partitions/efi.c
drivers/acpi/acpica/exfldio.c
drivers/acpi/acpica/nsinit.c
drivers/acpi/acpica/utosi.c
drivers/bcma/driver_mips.c
drivers/block/Makefile
drivers/block/aoe/aoecmd.c
drivers/block/brd.c
drivers/block/cciss.c
drivers/block/drbd/drbd_actlog.c
drivers/block/drbd/drbd_bitmap.c
drivers/block/drbd/drbd_int.h
drivers/block/drbd/drbd_main.c
drivers/block/drbd/drbd_nl.c
drivers/block/drbd/drbd_proc.c
drivers/block/drbd/drbd_receiver.c
drivers/block/drbd/drbd_req.c
drivers/block/drbd/drbd_req.h
drivers/block/drbd/drbd_state.c
drivers/block/drbd/drbd_strings.c
drivers/block/drbd/drbd_worker.c
drivers/block/floppy.c
drivers/block/mg_disk.c
drivers/block/mtip32xx/mtip32xx.c
drivers/block/mtip32xx/mtip32xx.h
drivers/block/nvme-core.c [moved from drivers/block/nvme.c with 79% similarity]
drivers/block/nvme-scsi.c [new file with mode: 0644]
drivers/block/pktcdvd.c
drivers/block/rbd.c
drivers/dma/Kconfig
drivers/dma/Makefile
drivers/dma/acpi-dma.c [new file with mode: 0644]
drivers/dma/at_hdmac.c
drivers/dma/at_hdmac_regs.h
drivers/dma/coh901318.c
drivers/dma/dmaengine.c
drivers/dma/dmatest.c
drivers/dma/dw_dmac.c
drivers/dma/dw_dmac_regs.h
drivers/dma/imx-dma.c
drivers/dma/imx-sdma.c
drivers/dma/ioat/dma.c
drivers/dma/ioat/dma.h
drivers/dma/ioat/dma_v2.h
drivers/dma/ioat/dma_v3.c
drivers/dma/ioat/hw.h
drivers/dma/ioat/pci.c
drivers/dma/ioat/registers.h
drivers/dma/ipu/ipu_idmac.c
drivers/dma/of-dma.c
drivers/dma/omap-dma.c
drivers/dma/pch_dma.c
drivers/dma/pl330.c
drivers/dma/sh/Kconfig [new file with mode: 0644]
drivers/dma/sh/Makefile
drivers/dma/sh/sudmac.c [new file with mode: 0644]
drivers/dma/sirf-dma.c
drivers/dma/tegra20-apb-dma.c
drivers/dma/timb_dma.c
drivers/dma/txx9dmac.c
drivers/edac/edac_mc_sysfs.c
drivers/extcon/Kconfig
drivers/firewire/core-cdev.c
drivers/firewire/core-device.c
drivers/firewire/net.c
drivers/firewire/ohci.c
drivers/firewire/sbp2.c
drivers/gpio/Kconfig
drivers/gpio/gpio-lpc32xx.c
drivers/hid/hid-core.c
drivers/hid/hid-debug.c
drivers/hid/hid-steelseries.c
drivers/i2c/busses/Kconfig
drivers/i2c/muxes/Kconfig
drivers/infiniband/core/iwcm.c
drivers/infiniband/core/verbs.c
drivers/infiniband/hw/cxgb3/iwch_provider.c
drivers/infiniband/hw/cxgb4/qp.c
drivers/infiniband/hw/ipath/ipath_verbs.c
drivers/infiniband/hw/mlx4/cq.c
drivers/infiniband/hw/mlx4/qp.c
drivers/infiniband/hw/qib/qib_sysfs.c
drivers/infiniband/hw/qib/qib_verbs.c
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/infiniband/ulp/iser/iscsi_iser.c
drivers/infiniband/ulp/iser/iscsi_iser.h
drivers/infiniband/ulp/iser/iser_memory.c
drivers/infiniband/ulp/iser/iser_verbs.c
drivers/infiniband/ulp/srpt/ib_srpt.c
drivers/input/keyboard/Kconfig
drivers/input/misc/Kconfig
drivers/input/mouse/Kconfig
drivers/leds/Kconfig
drivers/md/Kconfig
drivers/md/Makefile
drivers/md/bcache/Kconfig [new file with mode: 0644]
drivers/md/bcache/Makefile [new file with mode: 0644]
drivers/md/bcache/alloc.c [new file with mode: 0644]
drivers/md/bcache/bcache.h [new file with mode: 0644]
drivers/md/bcache/bset.c [new file with mode: 0644]
drivers/md/bcache/bset.h [new file with mode: 0644]
drivers/md/bcache/btree.c [new file with mode: 0644]
drivers/md/bcache/btree.h [new file with mode: 0644]
drivers/md/bcache/closure.c [new file with mode: 0644]
drivers/md/bcache/closure.h [new file with mode: 0644]
drivers/md/bcache/debug.c [new file with mode: 0644]
drivers/md/bcache/debug.h [new file with mode: 0644]
drivers/md/bcache/io.c [new file with mode: 0644]
drivers/md/bcache/journal.c [new file with mode: 0644]
drivers/md/bcache/journal.h [new file with mode: 0644]
drivers/md/bcache/movinggc.c [new file with mode: 0644]
drivers/md/bcache/request.c [new file with mode: 0644]
drivers/md/bcache/request.h [new file with mode: 0644]
drivers/md/bcache/stats.c [new file with mode: 0644]
drivers/md/bcache/stats.h [new file with mode: 0644]
drivers/md/bcache/super.c [new file with mode: 0644]
drivers/md/bcache/sysfs.c [new file with mode: 0644]
drivers/md/bcache/sysfs.h [new file with mode: 0644]
drivers/md/bcache/trace.c [new file with mode: 0644]
drivers/md/bcache/util.c [new file with mode: 0644]
drivers/md/bcache/util.h [new file with mode: 0644]
drivers/md/bcache/writeback.c [new file with mode: 0644]
drivers/md/dm-bufio.c
drivers/md/dm-cache-metadata.c
drivers/md/dm-cache-policy.h
drivers/md/dm-cache-target.c
drivers/md/dm-crypt.c
drivers/md/dm-mpath.c
drivers/md/dm-raid1.c
drivers/md/dm-snap.c
drivers/md/dm-stripe.c
drivers/md/dm-table.c
drivers/md/dm-thin-metadata.c
drivers/md/dm-thin-metadata.h
drivers/md/dm-thin.c
drivers/md/dm-verity.c
drivers/md/faulty.c
drivers/md/linear.c
drivers/md/md.c
drivers/md/persistent-data/dm-space-map-disk.c
drivers/md/persistent-data/dm-space-map-metadata.c
drivers/md/persistent-data/dm-space-map.h
drivers/md/raid0.c
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c
drivers/message/fusion/mptsas.c
drivers/mtd/Kconfig
drivers/mtd/Makefile
drivers/mtd/chips/Kconfig
drivers/mtd/devices/Kconfig
drivers/mtd/devices/Makefile
drivers/mtd/devices/bcm47xxsflash.c
drivers/mtd/devices/bcm47xxsflash.h
drivers/mtd/devices/doc2000.c [deleted file]
drivers/mtd/devices/doc2001.c [deleted file]
drivers/mtd/devices/doc2001plus.c [deleted file]
drivers/mtd/devices/docecc.c [deleted file]
drivers/mtd/devices/docg3.c
drivers/mtd/devices/docprobe.c [deleted file]
drivers/mtd/devices/elm.c
drivers/mtd/devices/m25p80.c
drivers/mtd/devices/mtd_dataflash.c
drivers/mtd/maps/Kconfig
drivers/mtd/maps/Makefile
drivers/mtd/maps/bfin-async-flash.c
drivers/mtd/maps/ck804xrom.c
drivers/mtd/maps/dbox2-flash.c [deleted file]
drivers/mtd/maps/dc21285.c
drivers/mtd/maps/dilnetpc.c [deleted file]
drivers/mtd/maps/dmv182.c [deleted file]
drivers/mtd/maps/gpio-addr-flash.c
drivers/mtd/maps/h720x-flash.c [deleted file]
drivers/mtd/maps/impa7.c
drivers/mtd/maps/intel_vr_nor.c
drivers/mtd/maps/ixp2000.c [deleted file]
drivers/mtd/maps/ixp4xx.c
drivers/mtd/maps/lantiq-flash.c
drivers/mtd/maps/mbx860.c [deleted file]
drivers/mtd/maps/pci.c
drivers/mtd/maps/physmap.c
drivers/mtd/maps/physmap_of.c
drivers/mtd/maps/plat-ram.c
drivers/mtd/maps/pxa2xx-flash.c
drivers/mtd/maps/rbtx4939-flash.c
drivers/mtd/maps/rpxlite.c [deleted file]
drivers/mtd/maps/sa1100-flash.c
drivers/mtd/maps/solutionengine.c
drivers/mtd/maps/tqm8xxl.c [deleted file]
drivers/mtd/maps/tsunami_flash.c
drivers/mtd/mtdchar.c
drivers/mtd/mtdcore.c
drivers/mtd/mtdcore.h
drivers/mtd/mtdpart.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/Makefile
drivers/mtd/nand/atmel_nand.c
drivers/mtd/nand/bf5xx_nand.c
drivers/mtd/nand/cafe_nand.c
drivers/mtd/nand/davinci_nand.c
drivers/mtd/nand/denali_dt.c
drivers/mtd/nand/docg4.c
drivers/mtd/nand/fsmc_nand.c
drivers/mtd/nand/gpio.c
drivers/mtd/nand/h1910.c [deleted file]
drivers/mtd/nand/lpc32xx_mlc.c
drivers/mtd/nand/nand_base.c
drivers/mtd/nand/nand_bbt.c
drivers/mtd/nand/nand_ids.c
drivers/mtd/nand/nandsim.c
drivers/mtd/nand/nuc900_nand.c
drivers/mtd/nand/omap2.c
drivers/mtd/nand/orion_nand.c
drivers/mtd/nand/ppchameleonevb.c [deleted file]
drivers/mtd/nand/pxa3xx_nand.c
drivers/mtd/nand/rtc_from4.c [deleted file]
drivers/mtd/nand/sh_flctl.c
drivers/mtd/nand/sm_common.c
drivers/mtd/nand/txx9ndfmc.c
drivers/mtd/ofpart.c
drivers/mtd/onenand/Kconfig
drivers/mtd/onenand/Makefile
drivers/mtd/onenand/omap2.c
drivers/mtd/onenand/onenand_sim.c [deleted file]
drivers/net/ethernet/adi/bfin_mac.c
drivers/net/ethernet/emulex/benet/be_cmds.c
drivers/net/ethernet/emulex/benet/be_main.c
drivers/net/ethernet/freescale/fec.h
drivers/net/ethernet/freescale/fec_main.c
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
drivers/net/ethernet/mellanox/mlx4/eq.c
drivers/net/ethernet/mellanox/mlx4/mcg.c
drivers/net/ethernet/mellanox/mlx4/mlx4.h
drivers/net/ethernet/mellanox/mlx4/srq.c
drivers/net/ethernet/sfc/ptp.c
drivers/net/ethernet/tile/tilegx.c
drivers/net/ethernet/toshiba/spider_net.c
drivers/net/irda/bfin_sir.c
drivers/net/phy/Kconfig
drivers/net/usb/cdc_ether.c
drivers/net/usb/qmi_wwan.c
drivers/net/usb/sierra_net.c
drivers/net/usb/usbnet.c
drivers/of/of_mdio.c
drivers/pci/bus.c
drivers/pci/msi.c
drivers/pci/probe.c
drivers/pinctrl/sh-pfc/Kconfig
drivers/regulator/Kconfig
drivers/rtc/rtc-tile.c
drivers/s390/block/dcssblk.c
drivers/scsi/libsas/sas_expander.c
drivers/scsi/mpt2sas/mpt2sas_transport.c
drivers/spi/Kconfig
drivers/ssb/driver_mipscore.c
drivers/staging/android/Kconfig
drivers/staging/iio/accel/Kconfig
drivers/staging/iio/adc/Kconfig
drivers/staging/iio/addac/Kconfig
drivers/staging/iio/resolver/Kconfig
drivers/staging/iio/trigger/Kconfig
drivers/thermal/Kconfig
drivers/thermal/Makefile
drivers/thermal/armada_thermal.c [new file with mode: 0644]
drivers/thermal/cpu_cooling.c
drivers/thermal/db8500_cpufreq_cooling.c
drivers/thermal/db8500_thermal.c
drivers/thermal/dove_thermal.c
drivers/thermal/exynos_thermal.c
drivers/thermal/fair_share.c
drivers/thermal/kirkwood_thermal.c
drivers/thermal/rcar_thermal.c
drivers/thermal/step_wise.c
drivers/thermal/thermal_core.c [moved from drivers/thermal/thermal_sys.c with 89% similarity]
drivers/thermal/thermal_core.h
drivers/thermal/user_space.c
drivers/tty/serial/68328serial.c
drivers/tty/serial/bcm63xx_uart.c
drivers/usb/host/ehci-tilegx.c
drivers/usb/host/ohci-tilegx.c
drivers/usb/phy/Kconfig
drivers/video/Kconfig
drivers/video/au1100fb.c
drivers/video/backlight/Kconfig
drivers/video/mxsfb.c
drivers/w1/masters/Kconfig
drivers/watchdog/ath79_wdt.c
drivers/watchdog/davinci_wdt.c
drivers/watchdog/s3c2410_wdt.c
drivers/watchdog/shwdt.c
drivers/watchdog/watchdog_dev.c
fs/bio-integrity.c
fs/bio.c
fs/block_dev.c
fs/btrfs/Kconfig
fs/btrfs/backref.c
fs/btrfs/backref.h
fs/btrfs/btrfs_inode.h
fs/btrfs/compression.c
fs/btrfs/compression.h
fs/btrfs/ctree.c
fs/btrfs/ctree.h
fs/btrfs/delayed-inode.c
fs/btrfs/delayed-ref.c
fs/btrfs/dir-item.c
fs/btrfs/disk-io.c
fs/btrfs/disk-io.h
fs/btrfs/extent-tree.c
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h
fs/btrfs/extent_map.c
fs/btrfs/extent_map.h
fs/btrfs/file-item.c
fs/btrfs/file.c
fs/btrfs/free-space-cache.c
fs/btrfs/free-space-cache.h
fs/btrfs/inode-item.c
fs/btrfs/inode.c
fs/btrfs/ioctl.c
fs/btrfs/locking.c
fs/btrfs/ordered-data.c
fs/btrfs/ordered-data.h
fs/btrfs/print-tree.c
fs/btrfs/print-tree.h
fs/btrfs/qgroup.c
fs/btrfs/raid56.c
fs/btrfs/reada.c
fs/btrfs/relocation.c
fs/btrfs/root-tree.c
fs/btrfs/scrub.c
fs/btrfs/send.c
fs/btrfs/send.h
fs/btrfs/super.c
fs/btrfs/transaction.c
fs/btrfs/transaction.h
fs/btrfs/tree-log.c
fs/btrfs/tree-log.h
fs/btrfs/ulist.c
fs/btrfs/ulist.h
fs/btrfs/volumes.c
fs/btrfs/volumes.h
fs/btrfs/xattr.c
fs/buffer.c
fs/direct-io.c
fs/ecryptfs/read_write.c
fs/exofs/ore.c
fs/exofs/ore_raid.c
fs/f2fs/checkpoint.c
fs/f2fs/data.c
fs/f2fs/debug.c
fs/f2fs/dir.c
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/gc.c
fs/f2fs/gc.h
fs/f2fs/inode.c
fs/f2fs/namei.c
fs/f2fs/node.c
fs/f2fs/node.h
fs/f2fs/recovery.c
fs/f2fs/segment.c
fs/f2fs/segment.h
fs/f2fs/super.c
fs/f2fs/xattr.c
fs/fs-writeback.c
fs/gfs2/lops.c
fs/jfs/jfs_logmgr.c
fs/logfs/dev_bdev.c
fs/nfs/nfs4_fs.h
fs/nfs/nfs4filelayout.h
fs/nfs/nfs4filelayoutdev.c
fs/nfs/nfs4proc.c
fs/nfs/nfs4state.c
fs/nfs/nfs4xdr.c
fs/nfs/super.c
fs/pstore/ram.c
fs/romfs/mmap-nommu.c
fs/xfs/Kconfig
fs/xfs/mrlock.h
fs/xfs/xfs.h
fs/xfs/xfs_alloc_btree.c
fs/xfs/xfs_bmap_btree.c
fs/xfs/xfs_btree.h
fs/xfs/xfs_dir2_node.c
fs/xfs/xfs_ialloc_btree.c
fs/xfs/xfs_inode.c
fs/xfs/xfs_ioctl.c
fs/xfs/xfs_ioctl32.c
fs/xfs/xfs_linux.h
fs/xfs/xfs_message.c
fs/xfs/xfs_message.h
fs/xfs/xfs_trans.h
include/linux/acpi_dma.h [new file with mode: 0644]
include/linux/backing-dev.h
include/linux/bio.h
include/linux/blk_types.h
include/linux/blkdev.h
include/linux/cgroup_subsys.h
include/linux/cpu_cooling.h
include/linux/device-mapper.h
include/linux/dmaengine.h
include/linux/drbd.h
include/linux/drbd_limits.h
include/linux/f2fs_fs.h
include/linux/gpio.h
include/linux/hid.h
include/linux/idr.h
include/linux/lru_cache.h
include/linux/mlx4/device.h
include/linux/mlx4/srq.h
include/linux/mtd/mtd.h
include/linux/mtd/nand.h
include/linux/mtd/physmap.h
include/linux/mtd/plat-ram.h
include/linux/nfs_xdr.h
include/linux/nvme.h
include/linux/of_dma.h
include/linux/platform_data/elm.h
include/linux/platform_data/imx-iram.h [deleted file]
include/linux/rwsem.h
include/linux/sched.h
include/linux/sudmac.h [new file with mode: 0644]
include/linux/thermal.h
include/linux/usb/usbnet.h
include/sound/tlv.h
include/trace/events/bcache.h [new file with mode: 0644]
include/trace/events/block.h
include/trace/events/f2fs.h [new file with mode: 0644]
include/trace/events/writeback.h
include/uapi/linux/btrfs.h
include/uapi/linux/if_cablemodem.h
ipc/sem.c
ipc/shm.c
kernel/fork.c
kernel/lockdep.c
kernel/relay.c
kernel/rwsem.c
kernel/trace/blktrace.c
lib/lru_cache.c
mm/backing-dev.c
mm/bounce.c
mm/mmap.c
mm/page_io.c
mm/slab_common.c
net/core/dev.c
net/ipv4/gre.c
net/ipv4/udp.c
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/clnt.c
sound/atmel/abdac.c
sound/atmel/ac97c.c
sound/mips/hal2.c
sound/mips/sgio2audio.c
sound/oss/Kconfig
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_intel.c
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_hdmi.c
sound/soc/codecs/wm8994.c
sound/soc/davinci/davinci-mcasp.c
sound/soc/soc-dapm.c
virt/kvm/kvm_main.c

diff --git a/Documentation/ABI/testing/sysfs-block-bcache b/Documentation/ABI/testing/sysfs-block-bcache
new file mode 100644 (file)
index 0000000..9e4bbc5
--- /dev/null
@@ -0,0 +1,156 @@
+What:          /sys/block/<disk>/bcache/unregister
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               A write to this file causes the backing device or cache to be
+               unregistered. If a backing device had dirty data in the cache,
+               writeback mode is automatically disabled and all dirty data is
+               flushed before the device is unregistered. Caches unregister
+               all associated backing devices before unregistering themselves.
+
+What:          /sys/block/<disk>/bcache/clear_stats
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               Writing to this file resets all the statistics for the device.
+
+What:          /sys/block/<disk>/bcache/cache
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a backing device that has cache, a symlink to
+               the bcache/ dir of that cache.
+
+What:          /sys/block/<disk>/bcache/cache_hits
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: integer number of full cache hits,
+               counted per bio. A partial cache hit counts as a miss.
+
+What:          /sys/block/<disk>/bcache/cache_misses
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: integer number of cache misses.
+
+What:          /sys/block/<disk>/bcache/cache_hit_ratio
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: cache hits as a percentage.
+
+What:          /sys/block/<disk>/bcache/sequential_cutoff
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: Threshold past which sequential IO will
+               skip the cache. Read and written as bytes in human readable
+               units (i.e. echo 10M > sequntial_cutoff).
+
+What:          /sys/block/<disk>/bcache/bypassed
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               Sum of all reads and writes that have bypassed the cache (due
+               to the sequential cutoff).  Expressed as bytes in human
+               readable units.
+
+What:          /sys/block/<disk>/bcache/writeback
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: When on, writeback caching is enabled and
+               writes will be buffered in the cache. When off, caching is in
+               writethrough mode; reads and writes will be added to the
+               cache but no write buffering will take place.
+
+What:          /sys/block/<disk>/bcache/writeback_running
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: when off, dirty data will not be written
+               from the cache to the backing device. The cache will still be
+               used to buffer writes until it is mostly full, at which point
+               writes transparently revert to writethrough mode. Intended only
+               for benchmarking/testing.
+
+What:          /sys/block/<disk>/bcache/writeback_delay
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: In writeback mode, when dirty data is
+               written to the cache and the cache held no dirty data for that
+               backing device, writeback from cache to backing device starts
+               after this delay, expressed as an integer number of seconds.
+
+What:          /sys/block/<disk>/bcache/writeback_percent
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For backing devices: If nonzero, writeback from cache to
+               backing device only takes place when more than this percentage
+               of the cache is used, allowing more write coalescing to take
+               place and reducing total number of writes sent to the backing
+               device. Integer between 0 and 40.
+
+What:          /sys/block/<disk>/bcache/synchronous
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a cache, a boolean that allows synchronous mode to be
+               switched on and off. In synchronous mode all writes are ordered
+               such that the cache can reliably recover from unclean shutdown;
+               if disabled bcache will not generally wait for writes to
+               complete but if the cache is not shut down cleanly all data
+               will be discarded from the cache. Should not be turned off with
+               writeback caching enabled.
+
+What:          /sys/block/<disk>/bcache/discard
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a cache, a boolean allowing discard/TRIM to be turned off
+               or back on if the device supports it.
+
+What:          /sys/block/<disk>/bcache/bucket_size
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a cache, bucket size in human readable units, as set at
+               cache creation time; should match the erase block size of the
+               SSD for optimal performance.
+
+What:          /sys/block/<disk>/bcache/nbuckets
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a cache, the number of usable buckets.
+
+What:          /sys/block/<disk>/bcache/tree_depth
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a cache, height of the btree excluding leaf nodes (i.e. a
+               one node tree will have a depth of 0).
+
+What:          /sys/block/<disk>/bcache/btree_cache_size
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               Number of btree buckets/nodes that are currently cached in
+               memory; cache dynamically grows and shrinks in response to
+               memory pressure from the rest of the system.
+
+What:          /sys/block/<disk>/bcache/written
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a cache, total amount of data in human readable units
+               written to the cache, excluding all metadata.
+
+What:          /sys/block/<disk>/bcache/btree_written
+Date:          November 2010
+Contact:       Kent Overstreet <kent.overstreet@gmail.com>
+Description:
+               For a cache, sum of all btree writes in human readable units.
index 938ef71..3105644 100644 (file)
@@ -14,8 +14,7 @@ Description:
                The /sys/class/mtd/mtd{0,1,2,3,...} directories correspond
                to each /dev/mtdX character device.  These may represent
                physical/simulated flash devices, partitions on a flash
-               device, or concatenated flash devices.  They exist regardless
-               of whether CONFIG_MTD_CHAR is actually enabled.
+               device, or concatenated flash devices.
 
 What:          /sys/class/mtd/mtdXro/
 Date:          April 2009
@@ -23,8 +22,7 @@ KernelVersion:        2.6.29
 Contact:       linux-mtd@lists.infradead.org
 Description:
                These directories provide the corresponding read-only device
-               nodes for /sys/class/mtd/mtdX/ .  They are only created
-               (for the benefit of udev) if CONFIG_MTD_CHAR is enabled.
+               nodes for /sys/class/mtd/mtdX/ .
 
 What:          /sys/class/mtd/mtdX/dev
 Date:          April 2009
index b0d5410..d9be7a9 100644 (file)
@@ -66,6 +66,83 @@ the ACPI device explicitly to acpi_platform_device_ids list defined in
 drivers/acpi/acpi_platform.c. This limitation is only for the platform
 devices, SPI and I2C devices are created automatically as described below.
 
+DMA support
+~~~~~~~~~~~
+DMA controllers enumerated via ACPI should be registered in the system to
+provide generic access to their resources. For example, a driver that would
+like to be accessible to slave devices via generic API call
+dma_request_slave_channel() must register itself at the end of the probe
+function like this:
+
+       err = devm_acpi_dma_controller_register(dev, xlate_func, dw);
+       /* Handle the error if it's not a case of !CONFIG_ACPI */
+
+and implement custom xlate function if needed (usually acpi_dma_simple_xlate()
+is enough) which converts the FixedDMA resource provided by struct
+acpi_dma_spec into the corresponding DMA channel. A piece of code for that case
+could look like:
+
+       #ifdef CONFIG_ACPI
+       struct filter_args {
+               /* Provide necessary information for the filter_func */
+               ...
+       };
+
+       static bool filter_func(struct dma_chan *chan, void *param)
+       {
+               /* Choose the proper channel */
+               ...
+       }
+
+       static struct dma_chan *xlate_func(struct acpi_dma_spec *dma_spec,
+                       struct acpi_dma *adma)
+       {
+               dma_cap_mask_t cap;
+               struct filter_args args;
+
+               /* Prepare arguments for filter_func */
+               ...
+               return dma_request_channel(cap, filter_func, &args);
+       }
+       #else
+       static struct dma_chan *xlate_func(struct acpi_dma_spec *dma_spec,
+                       struct acpi_dma *adma)
+       {
+               return NULL;
+       }
+       #endif
+
+dma_request_slave_channel() will call xlate_func() for each registered DMA
+controller. In the xlate function the proper channel must be chosen based on
+information in struct acpi_dma_spec and the properties of the controller
+provided by struct acpi_dma.
+
+Clients must call dma_request_slave_channel() with the string parameter that
+corresponds to a specific FixedDMA resource. By default "tx" means the first
+entry of the FixedDMA resource array, "rx" means the second entry. The table
+below shows a layout:
+
+       Device (I2C0)
+       {
+               ...
+               Method (_CRS, 0, NotSerialized)
+               {
+                       Name (DBUF, ResourceTemplate ()
+                       {
+                               FixedDMA (0x0018, 0x0004, Width32bit, _Y48)
+                               FixedDMA (0x0019, 0x0005, Width32bit, )
+                       })
+               ...
+               }
+       }
+
+So, the FixedDMA with request line 0x0018 is "tx" and next one is "rx" in
+this example.
+
+In robust cases the client unfortunately needs to call
+acpi_dma_request_slave_chan_by_index() directly and therefore choose the
+specific FixedDMA resource by its index.
+
 SPI serial bus support
 ~~~~~~~~~~~~~~~~~~~~~~
 Slave devices behind SPI bus have SpiSerialBus resource attached to them.
diff --git a/Documentation/bcache.txt b/Documentation/bcache.txt
new file mode 100644 (file)
index 0000000..77db880
--- /dev/null
@@ -0,0 +1,431 @@
+Say you've got a big slow raid 6, and an X-25E or three. Wouldn't it be
+nice if you could use them as cache... Hence bcache.
+
+Wiki and git repositories are at:
+  http://bcache.evilpiepirate.org
+  http://evilpiepirate.org/git/linux-bcache.git
+  http://evilpiepirate.org/git/bcache-tools.git
+
+It's designed around the performance characteristics of SSDs - it only allocates
+in erase block sized buckets, and it uses a hybrid btree/log to track cached
+extants (which can be anywhere from a single sector to the bucket size). It's
+designed to avoid random writes at all costs; it fills up an erase block
+sequentially, then issues a discard before reusing it.
+
+Both writethrough and writeback caching are supported. Writeback defaults to
+off, but can be switched on and off arbitrarily at runtime. Bcache goes to
+great lengths to protect your data - it reliably handles unclean shutdown. (It
+doesn't even have a notion of a clean shutdown; bcache simply doesn't return
+writes as completed until they're on stable storage).
+
+Writeback caching can use most of the cache for buffering writes - writing
+dirty data to the backing device is always done sequentially, scanning from the
+start to the end of the index.
+
+Since random IO is what SSDs excel at, there generally won't be much benefit
+to caching large sequential IO. Bcache detects sequential IO and skips it;
+it also keeps a rolling average of the IO sizes per task, and as long as the
+average is above the cutoff it will skip all IO from that task - instead of
+caching the first 512k after every seek. Backups and large file copies should
+thus entirely bypass the cache.
+
+In the event of a data IO error on the flash it will try to recover by reading
+from disk or invalidating cache entries.  For unrecoverable errors (meta data
+or dirty data), caching is automatically disabled; if dirty data was present
+in the cache it first disables writeback caching and waits for all dirty data
+to be flushed.
+
+Getting started:
+You'll need make-bcache from the bcache-tools repository. Both the cache device
+and backing device must be formatted before use.
+  make-bcache -B /dev/sdb
+  make-bcache -C /dev/sdc
+
+make-bcache has the ability to format multiple devices at the same time - if
+you format your backing devices and cache device at the same time, you won't
+have to manually attach:
+  make-bcache -B /dev/sda /dev/sdb -C /dev/sdc
+
+To make bcache devices known to the kernel, echo them to /sys/fs/bcache/register:
+
+  echo /dev/sdb > /sys/fs/bcache/register
+  echo /dev/sdc > /sys/fs/bcache/register
+
+To register your bcache devices automatically, you could add something like
+this to an init script:
+
+  echo /dev/sd* > /sys/fs/bcache/register_quiet
+
+It'll look for bcache superblocks and ignore everything that doesn't have one.
+
+Registering the backing device makes the bcache show up in /dev; you can now
+format it and use it as normal. But the first time using a new bcache device,
+it'll be running in passthrough mode until you attach it to a cache. See the
+section on attaching.
+
+The devices show up at /dev/bcacheN, and can be controlled via sysfs from
+/sys/block/bcacheN/bcache:
+
+  mkfs.ext4 /dev/bcache0
+  mount /dev/bcache0 /mnt
+
+Cache devices are managed as sets; multiple caches per set isn't supported yet
+but will allow for mirroring of metadata and dirty data in the future. Your new
+cache set shows up as /sys/fs/bcache/<UUID>
+
+ATTACHING:
+
+After your cache device and backing device are registered, the backing device
+must be attached to your cache set to enable caching. Attaching a backing
+device to a cache set is done thusly, with the UUID of the cache set in
+/sys/fs/bcache:
+
+  echo <UUID> > /sys/block/bcache0/bcache/attach
+
+This only has to be done once. The next time you reboot, just reregister all
+your bcache devices. If a backing device has data in a cache somewhere, the
+/dev/bcache# device won't be created until the cache shows up - particularly
+important if you have writeback caching turned on.
+
+If you're booting up and your cache device is gone and never coming back, you
+can force run the backing device:
+
+  echo 1 > /sys/block/sdb/bcache/running
+
+(You need to use /sys/block/sdb (or whatever your backing device is called), not
+/sys/block/bcache0, because bcache0 doesn't exist yet. If you're using a
+partition, the bcache directory would be at /sys/block/sdb/sdb2/bcache)
+
+The backing device will still use that cache set if it shows up in the future,
+but all the cached data will be invalidated. If there was dirty data in the
+cache, don't expect the filesystem to be recoverable - you will have massive
+filesystem corruption, though ext4's fsck does work miracles.
+
+ERROR HANDLING:
+
+Bcache tries to transparently handle IO errors to/from the cache device without
+affecting normal operation; if it sees too many errors (the threshold is
+configurable, and defaults to 0) it shuts down the cache device and switches all
+the backing devices to passthrough mode.
+
+ - For reads from the cache, if they error we just retry the read from the
+   backing device.
+
+ - For writethrough writes, if the write to the cache errors we just switch to
+   invalidating the data at that lba in the cache (i.e. the same thing we do for
+   a write that bypasses the cache)
+
+ - For writeback writes, we currently pass that error back up to the
+   filesystem/userspace. This could be improved - we could retry it as a write
+   that skips the cache so we don't have to error the write.
+
+ - When we detach, we first try to flush any dirty data (if we were running in
+   writeback mode). It currently doesn't do anything intelligent if it fails to
+   read some of the dirty data, though.
+
+TROUBLESHOOTING PERFORMANCE:
+
+Bcache has a bunch of config options and tunables. The defaults are intended to
+be reasonable for typical desktop and server workloads, but they're not what you
+want for getting the best possible numbers when benchmarking.
+
+ - Bad write performance
+
+   If write performance is not what you expected, you probably wanted to be
+   running in writeback mode, which isn't the default (not due to a lack of
+   maturity, but simply because in writeback mode you'll lose data if something
+   happens to your SSD)
+
+   # echo writeback > /sys/block/bcache0/cache_mode
+
+ - Bad performance, or traffic not going to the SSD that you'd expect
+
+   By default, bcache doesn't cache everything. It tries to skip sequential IO -
+   because you really want to be caching the random IO, and if you copy a 10
+   gigabyte file you probably don't want that pushing 10 gigabytes of randomly
+   accessed data out of your cache.
+
+   But if you want to benchmark reads from cache, and you start out with fio
+   writing an 8 gigabyte test file - so you want to disable that.
+
+   # echo 0 > /sys/block/bcache0/bcache/sequential_cutoff
+
+   To set it back to the default (4 mb), do
+
+   # echo 4M > /sys/block/bcache0/bcache/sequential_cutoff
+
+ - Traffic's still going to the spindle/still getting cache misses
+
+   In the real world, SSDs don't always keep up with disks - particularly with
+   slower SSDs, many disks being cached by one SSD, or mostly sequential IO. So
+   you want to avoid being bottlenecked by the SSD and having it slow everything
+   down.
+
+   To avoid that bcache tracks latency to the cache device, and gradually
+   throttles traffic if the latency exceeds a threshold (it does this by
+   cranking down the sequential bypass).
+
+   You can disable this if you need to by setting the thresholds to 0:
+
+   # echo 0 > /sys/fs/bcache/<cache set>/congested_read_threshold_us
+   # echo 0 > /sys/fs/bcache/<cache set>/congested_write_threshold_us
+
+   The default is 2000 us (2 milliseconds) for reads, and 20000 for writes.
+
+ - Still getting cache misses, of the same data
+
+   One last issue that sometimes trips people up is actually an old bug, due to
+   the way cache coherency is handled for cache misses. If a btree node is full,
+   a cache miss won't be able to insert a key for the new data and the data
+   won't be written to the cache.
+
+   In practice this isn't an issue because as soon as a write comes along it'll
+   cause the btree node to be split, and you need almost no write traffic for
+   this to not show up enough to be noticable (especially since bcache's btree
+   nodes are huge and index large regions of the device). But when you're
+   benchmarking, if you're trying to warm the cache by reading a bunch of data
+   and there's no other traffic - that can be a problem.
+
+   Solution: warm the cache by doing writes, or use the testing branch (there's
+   a fix for the issue there).
+
+SYSFS - BACKING DEVICE:
+
+attach
+  Echo the UUID of a cache set to this file to enable caching.
+
+cache_mode
+  Can be one of either writethrough, writeback, writearound or none.
+
+clear_stats
+  Writing to this file resets the running total stats (not the day/hour/5 minute
+  decaying versions).
+
+detach
+  Write to this file to detach from a cache set. If there is dirty data in the
+  cache, it will be flushed first.
+
+dirty_data
+  Amount of dirty data for this backing device in the cache. Continuously
+  updated unlike the cache set's version, but may be slightly off.
+
+label
+  Name of underlying device.
+
+readahead
+  Size of readahead that should be performed.  Defaults to 0.  If set to e.g.
+  1M, it will round cache miss reads up to that size, but without overlapping
+  existing cache entries.
+
+running
+  1 if bcache is running (i.e. whether the /dev/bcache device exists, whether
+  it's in passthrough mode or caching).
+
+sequential_cutoff
+  A sequential IO will bypass the cache once it passes this threshhold; the
+  most recent 128 IOs are tracked so sequential IO can be detected even when
+  it isn't all done at once.
+
+sequential_merge
+  If non zero, bcache keeps a list of the last 128 requests submitted to compare
+  against all new requests to determine which new requests are sequential
+  continuations of previous requests for the purpose of determining sequential
+  cutoff. This is necessary if the sequential cutoff value is greater than the
+  maximum acceptable sequential size for any single request. 
+
+state
+  The backing device can be in one of four different states:
+
+  no cache: Has never been attached to a cache set.
+
+  clean: Part of a cache set, and there is no cached dirty data.
+
+  dirty: Part of a cache set, and there is cached dirty data.
+
+  inconsistent: The backing device was forcibly run by the user when there was
+  dirty data cached but the cache set was unavailable; whatever data was on the
+  backing device has likely been corrupted.
+
+stop
+  Write to this file to shut down the bcache device and close the backing
+  device.
+
+writeback_delay
+  When dirty data is written to the cache and it previously did not contain
+  any, waits some number of seconds before initiating writeback. Defaults to
+  30.
+
+writeback_percent
+  If nonzero, bcache tries to keep around this percentage of the cache dirty by
+  throttling background writeback and using a PD controller to smoothly adjust
+  the rate.
+
+writeback_rate
+  Rate in sectors per second - if writeback_percent is nonzero, background
+  writeback is throttled to this rate. Continuously adjusted by bcache but may
+  also be set by the user.
+
+writeback_running
+  If off, writeback of dirty data will not take place at all. Dirty data will
+  still be added to the cache until it is mostly full; only meant for
+  benchmarking. Defaults to on.
+
+SYSFS - BACKING DEVICE STATS:
+
+There are directories with these numbers for a running total, as well as
+versions that decay over the past day, hour and 5 minutes; they're also
+aggregated in the cache set directory as well.
+
+bypassed
+  Amount of IO (both reads and writes) that has bypassed the cache
+
+cache_hits
+cache_misses
+cache_hit_ratio
+  Hits and misses are counted per individual IO as bcache sees them; a
+  partial hit is counted as a miss.
+
+cache_bypass_hits
+cache_bypass_misses
+  Hits and misses for IO that is intended to skip the cache are still counted,
+  but broken out here.
+
+cache_miss_collisions
+  Counts instances where data was going to be inserted into the cache from a
+  cache miss, but raced with a write and data was already present (usually 0
+  since the synchronization for cache misses was rewritten)
+
+cache_readaheads
+  Count of times readahead occured.
+
+SYSFS - CACHE SET:
+
+average_key_size
+  Average data per key in the btree.
+
+bdev<0..n>
+  Symlink to each of the attached backing devices.
+
+block_size
+  Block size of the cache devices.
+
+btree_cache_size
+  Amount of memory currently used by the btree cache
+
+bucket_size
+  Size of buckets
+
+cache<0..n>
+  Symlink to each of the cache devices comprising this cache set. 
+
+cache_available_percent
+  Percentage of cache device free.
+
+clear_stats
+  Clears the statistics associated with this cache
+
+dirty_data
+  Amount of dirty data is in the cache (updated when garbage collection runs).
+
+flash_vol_create
+  Echoing a size to this file (in human readable units, k/M/G) creates a thinly
+  provisioned volume backed by the cache set.
+
+io_error_halflife
+io_error_limit
+  These determines how many errors we accept before disabling the cache.
+  Each error is decayed by the half life (in # ios).  If the decaying count
+  reaches io_error_limit dirty data is written out and the cache is disabled.
+
+journal_delay_ms
+  Journal writes will delay for up to this many milliseconds, unless a cache
+  flush happens sooner. Defaults to 100.
+
+root_usage_percent
+  Percentage of the root btree node in use.  If this gets too high the node
+  will split, increasing the tree depth.
+
+stop
+  Write to this file to shut down the cache set - waits until all attached
+  backing devices have been shut down.
+
+tree_depth
+  Depth of the btree (A single node btree has depth 0).
+
+unregister
+  Detaches all backing devices and closes the cache devices; if dirty data is
+  present it will disable writeback caching and wait for it to be flushed.
+
+SYSFS - CACHE SET INTERNAL:
+
+This directory also exposes timings for a number of internal operations, with
+separate files for average duration, average frequency, last occurence and max
+duration: garbage collection, btree read, btree node sorts and btree splits.
+
+active_journal_entries
+  Number of journal entries that are newer than the index.
+
+btree_nodes
+  Total nodes in the btree.
+
+btree_used_percent
+  Average fraction of btree in use.
+
+bset_tree_stats
+  Statistics about the auxiliary search trees
+
+btree_cache_max_chain
+  Longest chain in the btree node cache's hash table
+
+cache_read_races
+  Counts instances where while data was being read from the cache, the bucket
+  was reused and invalidated - i.e. where the pointer was stale after the read
+  completed. When this occurs the data is reread from the backing device.
+
+trigger_gc
+  Writing to this file forces garbage collection to run.
+
+SYSFS - CACHE DEVICE:
+
+block_size
+  Minimum granularity of writes - should match hardware sector size.
+
+btree_written
+  Sum of all btree writes, in (kilo/mega/giga) bytes
+
+bucket_size
+  Size of buckets
+
+cache_replacement_policy
+  One of either lru, fifo or random.
+
+discard
+  Boolean; if on a discard/TRIM will be issued to each bucket before it is
+  reused. Defaults to off, since SATA TRIM is an unqueued command (and thus
+  slow).
+
+freelist_percent
+  Size of the freelist as a percentage of nbuckets. Can be written to to
+  increase the number of buckets kept on the freelist, which lets you
+  artificially reduce the size of the cache at runtime. Mostly for testing
+  purposes (i.e. testing how different size caches affect your hit rate), but
+  since buckets are discarded when they move on to the freelist will also make
+  the SSD's garbage collection easier by effectively giving it more reserved
+  space.
+
+io_errors
+  Number of errors that have occured, decayed by io_error_halflife.
+
+metadata_written
+  Sum of all non data writes (btree writes and all other metadata).
+
+nbuckets
+  Total buckets in this cache
+
+priority_stats
+  Statistics about how recently data in the cache has been accessed.  This can
+  reveal your working set size.
+
+written
+  Sum of all data that has been written to the cache; comparison with
+  btree_written gives the amount of write inflation in bcache.
index a5eb7d1..9887f04 100644 (file)
@@ -5,7 +5,7 @@ The main aim of CFQ scheduler is to provide a fair allocation of the disk
 I/O bandwidth for all the processes which requests an I/O operation.
 
 CFQ maintains the per process queue for the processes which request I/O
-operation(syncronous requests). In case of asynchronous requests, all the
+operation(synchronous requests). In case of asynchronous requests, all the
 requests from all the processes are batched together according to their
 process's I/O priority.
 
@@ -66,6 +66,47 @@ This parameter is used to set the timeout of synchronous requests. Default
 value of this is 124ms. In case to favor synchronous requests over asynchronous
 one, this value should be decreased relative to fifo_expire_async.
 
+group_idle
+-----------
+This parameter forces idling at the CFQ group level instead of CFQ
+queue level. This was introduced after after a bottleneck was observed
+in higher end storage due to idle on sequential queue and allow dispatch
+from a single queue. The idea with this parameter is that it can be run with
+slice_idle=0 and group_idle=8, so that idling does not happen on individual
+queues in the group but happens overall on the group and thus still keeps the
+IO controller working.
+Not idling on individual queues in the group will dispatch requests from
+multiple queues in the group at the same time and achieve higher throughput
+on higher end storage.
+
+Default value for this parameter is 8ms.
+
+latency
+-------
+This parameter is used to enable/disable the latency mode of the CFQ
+scheduler. If latency mode (called low_latency) is enabled, CFQ tries
+to recompute the slice time for each process based on the target_latency set
+for the system. This favors fairness over throughput. Disabling low
+latency (setting it to 0) ignores target latency, allowing each process in the
+system to get a full time slice.
+
+By default low latency mode is enabled.
+
+target_latency
+--------------
+This parameter is used to calculate the time slice for a process if cfq's
+latency mode is enabled. It will ensure that sync requests have an estimated
+latency. But if sequential workload is higher(e.g. sequential read),
+then to meet the latency constraints, throughput may decrease because of less
+time for each process to issue I/O request before the cfq queue is switched.
+
+Though this can be overcome by disabling the latency_mode, it may increase
+the read latency for some applications. This parameter allows for changing
+target_latency through the sysfs interface which can provide the balanced
+throughput and read latency.
+
+Default value for target_latency is 300ms.
+
 slice_async
 -----------
 This parameter is same as of slice_sync but for asynchronous queue. The
@@ -98,8 +139,8 @@ in the device exceeds this parameter. This parameter is used for synchronous
 request.
 
 In case of storage with several disk, this setting can limit the parallel
-processing of request. Therefore, increasing the value can imporve the
-performace although this can cause the latency of some I/O to increase due
+processing of request. Therefore, increasing the value can improve the
+performance although this can cause the latency of some I/O to increase due
 to more number of requests.
 
 CFQ Group scheduling
index 3c046ee..c80e8a3 100644 (file)
@@ -1,14 +1,39 @@
 * Atmel Direct Memory Access Controller (DMA)
 
 Required properties:
-- compatible: Should be "atmel,<chip>-dma"
-- reg: Should contain DMA registers location and length
-- interrupts: Should contain DMA interrupt
+- compatible: Should be "atmel,<chip>-dma".
+- reg: Should contain DMA registers location and length.
+- interrupts: Should contain DMA interrupt.
+- #dma-cells: Must be <2>, used to represent the number of integer cells in
+the dmas property of client devices.
 
-Examples:
+Example:
 
-dma@ffffec00 {
+dma0: dma@ffffec00 {
        compatible = "atmel,at91sam9g45-dma";
        reg = <0xffffec00 0x200>;
        interrupts = <21>;
+       #dma-cells = <2>;
+};
+
+DMA clients connected to the Atmel DMA controller must use the format
+described in the dma.txt file, using a three-cell specifier for each channel:
+a phandle plus two interger cells.
+The three cells in order are:
+
+1. A phandle pointing to the DMA controller.
+2. The memory interface (16 most significant bits), the peripheral interface
+(16 less significant bits).
+3. The peripheral identifier for the hardware handshaking interface. The
+identifier can be different for tx and rx.
+
+Example:
+
+i2c0@i2c@f8010000 {
+       compatible = "atmel,at91sam9x5-i2c";
+       reg = <0xf8010000 0x100>;
+       interrupts = <9 4 6>;
+       dmas = <&dma0 1 7>,
+              <&dma0 1 8>;
+       dma-names = "tx", "rx";
 };
diff --git a/Documentation/devicetree/bindings/mips/ralink.txt b/Documentation/devicetree/bindings/mips/ralink.txt
new file mode 100644 (file)
index 0000000..b35a8d0
--- /dev/null
@@ -0,0 +1,17 @@
+Ralink MIPS SoC device tree bindings
+
+1. SoCs
+
+Each device tree must specify a compatible value for the Ralink SoC
+it uses in the compatible property of the root node. The compatible
+value must be one of the following values:
+
+  ralink,rt2880-soc
+  ralink,rt3050-soc
+  ralink,rt3052-soc
+  ralink,rt3350-soc
+  ralink,rt3352-soc
+  ralink,rt3883-soc
+  ralink,rt5350-soc
+  ralink,mt7620a-soc
+  ralink,mt7620n-soc
index e7f8d7e..6a983c1 100644 (file)
@@ -56,20 +56,20 @@ Example for an AM33xx board:
                        nand-bus-width = <16>;
                        ti,nand-ecc-opt = "bch8";
 
-                       gpmc,sync-clk = <0>;
-                       gpmc,cs-on = <0>;
-                       gpmc,cs-rd-off = <44>;
-                       gpmc,cs-wr-off = <44>;
-                       gpmc,adv-on = <6>;
-                       gpmc,adv-rd-off = <34>;
-                       gpmc,adv-wr-off = <44>;
-                       gpmc,we-off = <40>;
-                       gpmc,oe-off = <54>;
-                       gpmc,access = <64>;
-                       gpmc,rd-cycle = <82>;
-                       gpmc,wr-cycle = <82>;
-                       gpmc,wr-access = <40>;
-                       gpmc,wr-data-mux-bus = <0>;
+                       gpmc,sync-clk-ps = <0>;
+                       gpmc,cs-on-ns = <0>;
+                       gpmc,cs-rd-off-ns = <44>;
+                       gpmc,cs-wr-off-ns = <44>;
+                       gpmc,adv-on-ns = <6>;
+                       gpmc,adv-rd-off-ns = <34>;
+                       gpmc,adv-wr-off-ns = <44>;
+                       gpmc,we-off-ns = <40>;
+                       gpmc,oe-off-ns = <54>;
+                       gpmc,access-ns = <64>;
+                       gpmc,rd-cycle-ns = <82>;
+                       gpmc,wr-cycle-ns = <82>;
+                       gpmc,wr-access-ns = <40>;
+                       gpmc,wr-data-mux-bus-ns = <0>;
 
                        #address-cells = <1>;
                        #size-cells = <1>;
index 6e1f61f..9315ac9 100644 (file)
@@ -5,8 +5,12 @@ on platforms which have strong conventions about which portions of a flash are
 used for what purposes, but which don't use an on-flash partition table such
 as RedBoot.
 
-#address-cells & #size-cells must both be present in the mtd device and be
-equal to 1.
+#address-cells & #size-cells must both be present in the mtd device. There are
+two valid values for both:
+<1>: for partitions that require a single 32-bit cell to represent their
+     size/address (aka the value is below 4 GiB)
+<2>: for partitions that require two 32-bit cells to represent their
+     size/address (aka the value is 4 GiB or greater).
 
 Required properties:
 - reg : The partition's offset and size within the mtd bank.
@@ -36,3 +40,31 @@ flash@0 {
                reg = <0x0100000 0x200000>;
        };
 };
+
+flash@1 {
+       #address-cells = <1>;
+       #size-cells = <2>;
+
+       /* a 4 GiB partition */
+       partition@0 {
+               label = "filesystem";
+               reg = <0x00000000 0x1 0x00000000>;
+       };
+};
+
+flash@2 {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       /* an 8 GiB partition */
+       partition@0 {
+               label = "filesystem #1";
+               reg = <0x0 0x00000000 0x2 0x00000000>;
+       };
+
+       /* a 4 GiB partition */
+       partition@200000000 {
+               label = "filesystem #2";
+               reg = <0x2 0x00000000 0x1 0x00000000>;
+       };
+};
index 24cb4e4..ace4a64 100644 (file)
@@ -26,16 +26,16 @@ Required properties:
 - bank-width:          Address width of the device in bytes. GPMC supports 8-bit
                        and 16-bit devices and so must be either 1 or 2 bytes.
 - compatible:          Compatible string property for the ethernet child device.
-- gpmc,cs-on:          Chip-select assertion time
-- gpmc,cs-rd-off:      Chip-select de-assertion time for reads
-- gpmc,cs-wr-off:      Chip-select de-assertion time for writes
-- gpmc,oe-on:          Output-enable assertion time
-- gpmc,oe-off          Output-enable de-assertion time
-- gpmc,we-on:          Write-enable assertion time
-- gpmc,we-off:         Write-enable de-assertion time
-- gpmc,access:         Start cycle to first data capture (read access)
-- gpmc,rd-cycle:       Total read cycle time
-- gpmc,wr-cycle:       Total write cycle time
+- gpmc,cs-on-ns:       Chip-select assertion time
+- gpmc,cs-rd-off-ns:   Chip-select de-assertion time for reads
+- gpmc,cs-wr-off-ns:   Chip-select de-assertion time for writes
+- gpmc,oe-on-ns:       Output-enable assertion time
+- gpmc,oe-off-ns:      Output-enable de-assertion time
+- gpmc,we-on-ns:       Write-enable assertion time
+- gpmc,we-off-ns:      Write-enable de-assertion time
+- gpmc,access-ns:      Start cycle to first data capture (read access)
+- gpmc,rd-cycle-ns:    Total read cycle time
+- gpmc,wr-cycle-ns:    Total write cycle time
 - reg:                 Chip-select, base address (relative to chip-select)
                        and size of the memory mapped for the device.
                        Note that base address will be typically 0 as this
@@ -65,24 +65,24 @@ gpmc: gpmc@6e000000 {
                bank-width = <2>;
 
                gpmc,mux-add-data;
-               gpmc,cs-on = <0>;
-               gpmc,cs-rd-off = <186>;
-               gpmc,cs-wr-off = <186>;
-               gpmc,adv-on = <12>;
-               gpmc,adv-rd-off = <48>;
-               gpmc,adv-wr-off = <48>;
-               gpmc,oe-on = <54>;
-               gpmc,oe-off = <168>;
-               gpmc,we-on = <54>;
-               gpmc,we-off = <168>;
-               gpmc,rd-cycle = <186>;
-               gpmc,wr-cycle = <186>;
-               gpmc,access = <114>;
-               gpmc,page-burst-access = <6>;
-               gpmc,bus-turnaround = <12>;
-               gpmc,cycle2cycle-delay = <18>;
-               gpmc,wr-data-mux-bus = <90>;
-               gpmc,wr-access = <186>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <186>;
+               gpmc,cs-wr-off-ns = <186>;
+               gpmc,adv-on-ns = <12>;
+               gpmc,adv-rd-off-ns = <48>;
+               gpmc,adv-wr-off-ns = <48>;
+               gpmc,oe-on-ns = <54>;
+               gpmc,oe-off-ns = <168>;
+               gpmc,we-on-ns = <54>;
+               gpmc,we-off-ns = <168>;
+               gpmc,rd-cycle-ns = <186>;
+               gpmc,wr-cycle-ns = <186>;
+               gpmc,access-ns = <114>;
+               gpmc,page-burst-access-ns = <6>;
+               gpmc,bus-turnaround-ns = <12>;
+               gpmc,cycle2cycle-delay-ns = <18>;
+               gpmc,wr-data-mux-bus-ns = <90>;
+               gpmc,wr-access-ns = <186>;
                gpmc,cycle2cycle-samecsen;
                gpmc,cycle2cycle-diffcsen;
 
diff --git a/Documentation/devicetree/bindings/thermal/armada-thermal.txt b/Documentation/devicetree/bindings/thermal/armada-thermal.txt
new file mode 100644 (file)
index 0000000..fff93d5
--- /dev/null
@@ -0,0 +1,22 @@
+* Marvell Armada 370/XP thermal management
+
+Required properties:
+
+- compatible:  Should be set to one of the following:
+               marvell,armada370-thermal
+               marvell,armadaxp-thermal
+
+- reg:         Device's register space.
+               Two entries are expected, see the examples below.
+               The first one is required for the sensor register;
+               the second one is required for the control register
+               to be used for sensor initialization (a.k.a. calibration).
+
+Example:
+
+       thermal@d0018300 {
+               compatible = "marvell,armada370-thermal";
+                reg = <0xd0018300 0x4
+                      0xd0018304 0x4>;
+               status = "okay";
+       };
index 4d1919b..6931c43 100644 (file)
@@ -42,6 +42,7 @@ onnn  ON Semiconductor Corp.
 picochip       Picochip Ltd
 powervr        PowerVR (deprecated, use img)
 qcom   Qualcomm, Inc.
+ralink Mediatek/Ralink Technology Corp.
 ramtron        Ramtron International
 realtek Realtek Semiconductor Corp.
 renesas        Renesas Electronics Corporation
diff --git a/Documentation/dmatest.txt b/Documentation/dmatest.txt
new file mode 100644 (file)
index 0000000..279ac0a
--- /dev/null
@@ -0,0 +1,81 @@
+                               DMA Test Guide
+                               ==============
+
+               Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+This small document introduces how to test DMA drivers using dmatest module.
+
+       Part 1 - How to build the test module
+
+The menuconfig contains an option that could be found by following path:
+       Device Drivers -> DMA Engine support -> DMA Test client
+
+In the configuration file the option called CONFIG_DMATEST. The dmatest could
+be built as module or inside kernel. Let's consider those cases.
+
+       Part 2 - When dmatest is built as a module...
+
+After mounting debugfs and loading the module, the /sys/kernel/debug/dmatest
+folder with nodes will be created. They are the same as module parameters with
+addition of the 'run' node that controls run and stop phases of the test.
+
+Note that in this case test will not run on load automatically.
+
+Example of usage:
+       % echo dma0chan0 > /sys/kernel/debug/dmatest/channel
+       % echo 2000 > /sys/kernel/debug/dmatest/timeout
+       % echo 1 > /sys/kernel/debug/dmatest/iterations
+       % echo 1 > /sys/kernel/debug/dmatest/run
+
+Hint: available channel list could be extracted by running the following
+command:
+       % ls -1 /sys/class/dma/
+
+After a while you will start to get messages about current status or error like
+in the original code.
+
+Note that running a new test will stop any in progress test.
+
+The following command should return actual state of the test.
+       % cat /sys/kernel/debug/dmatest/run
+
+To wait for test done the user may perform a busy loop that checks the state.
+
+       % while [ $(cat /sys/kernel/debug/dmatest/run) = "Y" ]
+       > do
+       >       echo -n "."
+       >       sleep 1
+       > done
+       > echo
+
+       Part 3 - When built-in in the kernel...
+
+The module parameters that is supplied to the kernel command line will be used
+for the first performed test. After user gets a control, the test could be
+interrupted or re-run with same or different parameters. For the details see
+the above section "Part 2 - When dmatest is built as a module..."
+
+In both cases the module parameters are used as initial values for the test case.
+You always could check them at run-time by running
+       % grep -H . /sys/module/dmatest/parameters/*
+
+       Part 4 - Gathering the test results
+
+The module provides a storage for the test results in the memory. The gathered
+data could be used after test is done.
+
+The special file 'results' in the debugfs represents gathered data of the in
+progress test. The messages collected are printed to the kernel log as well.
+
+Example of output:
+       % cat /sys/kernel/debug/dmatest/results
+       dma0chan0-copy0: #1: No errors with src_off=0x7bf dst_off=0x8ad len=0x3fea (0)
+
+The message format is unified across the different types of errors. A number in
+the parens represents additional information, e.g. error code, error counter,
+or status.
+
+Comparison between buffers is stored to the dedicated structure.
+
+Note that the verify result is now accessible only via file 'results' in the
+debugfs.
index 7671352..b349d57 100644 (file)
@@ -1,8 +1,8 @@
 
-       BTRFS
-       =====
+BTRFS
+=====
 
-Btrfs is a new copy on write filesystem for Linux aimed at
+Btrfs is a copy on write filesystem for Linux aimed at
 implementing advanced features while focusing on fault tolerance,
 repair and easy administration. Initially developed by Oracle, Btrfs
 is licensed under the GPL and open for contribution from anyone.
@@ -34,9 +34,175 @@ The main Btrfs features include:
     * Online filesystem defragmentation
 
 
+Mount Options
+=============
 
-       MAILING LIST
-       ============
+When mounting a btrfs filesystem, the following option are accepted.
+Unless otherwise specified, all options default to off.
+
+  alloc_start=<bytes>
+       Debugging option to force all block allocations above a certain
+       byte threshold on each block device.  The value is specified in
+       bytes, optionally with a K, M, or G suffix, case insensitive.
+       Default is 1MB.
+
+  autodefrag
+       Detect small random writes into files and queue them up for the
+       defrag process.  Works best for small files; Not well suited for
+       large database workloads.
+
+  check_int
+  check_int_data
+  check_int_print_mask=<value>
+       These debugging options control the behavior of the integrity checking
+       module (the BTRFS_FS_CHECK_INTEGRITY config option required).
+
+       check_int enables the integrity checker module, which examines all
+       block write requests to ensure on-disk consistency, at a large
+       memory and CPU cost.  
+
+       check_int_data includes extent data in the integrity checks, and
+       implies the check_int option.
+
+       check_int_print_mask takes a bitmask of BTRFSIC_PRINT_MASK_* values
+       as defined in fs/btrfs/check-integrity.c, to control the integrity
+       checker module behavior.
+
+       See comments at the top of fs/btrfs/check-integrity.c for more info.
+
+  compress
+  compress=<type>
+  compress-force
+  compress-force=<type>
+       Control BTRFS file data compression.  Type may be specified as "zlib"
+       "lzo" or "no" (for no compression, used for remounting).  If no type
+       is specified, zlib is used.  If compress-force is specified,
+       all files will be compressed, whether or not they compress well.
+       If compression is enabled, nodatacow and nodatasum are disabled.
+
+  degraded
+       Allow mounts to continue with missing devices.  A read-write mount may
+       fail with too many devices missing, for example if a stripe member
+       is completely missing.
+
+  device=<devicepath>
+       Specify a device during mount so that ioctls on the control device
+       can be avoided.  Especialy useful when trying to mount a multi-device
+       setup as root.  May be specified multiple times for multiple devices.
+
+  discard
+       Issue frequent commands to let the block device reclaim space freed by
+       the filesystem.  This is useful for SSD devices, thinly provisioned
+       LUNs and virtual machine images, but may have a significant
+       performance impact.  (The fstrim command is also available to
+       initiate batch trims from userspace).
+
+  enospc_debug
+       Debugging option to be more verbose in some ENOSPC conditions.
+
+  fatal_errors=<action>
+       Action to take when encountering a fatal error: 
+         "bug" - BUG() on a fatal error.  This is the default.
+         "panic" - panic() on a fatal error.
+
+  flushoncommit
+       The 'flushoncommit' mount option forces any data dirtied by a write in a
+       prior transaction to commit as part of the current commit.  This makes
+       the committed state a fully consistent view of the file system from the
+       application's perspective (i.e., it includes all completed file system
+       operations).  This was previously the behavior only when a snapshot is
+       created.
+
+  inode_cache
+       Enable free inode number caching.   Defaults to off due to an overflow
+       problem when the free space crcs don't fit inside a single page.
+
+  max_inline=<bytes>
+       Specify the maximum amount of space, in bytes, that can be inlined in
+       a metadata B-tree leaf.  The value is specified in bytes, optionally 
+       with a K, M, or G suffix, case insensitive.  In practice, this value
+       is limited by the root sector size, with some space unavailable due
+       to leaf headers.  For a 4k sectorsize, max inline data is ~3900 bytes.
+
+  metadata_ratio=<value>
+       Specify that 1 metadata chunk should be allocated after every <value>
+       data chunks.  Off by default.
+
+  noacl
+       Disable support for Posix Access Control Lists (ACLs).  See the
+       acl(5) manual page for more information about ACLs.
+
+  nobarrier
+        Disables the use of block layer write barriers.  Write barriers ensure
+       that certain IOs make it through the device cache and are on persistent
+       storage.  If used on a device with a volatile (non-battery-backed)
+       write-back cache, this option will lead to filesystem corruption on a
+       system crash or power loss.
+
+  nodatacow
+       Disable data copy-on-write for newly created files.  Implies nodatasum,
+       and disables all compression.
+
+  nodatasum
+       Disable data checksumming for newly created files.
+
+  notreelog
+       Disable the tree logging used for fsync and O_SYNC writes.
+
+  recovery
+       Enable autorecovery attempts if a bad tree root is found at mount time.
+       Currently this scans a list of several previous tree roots and tries to 
+       use the first readable.
+
+ skip_balance
+       Skip automatic resume of interrupted balance operation after mount.
+       May be resumed with "btrfs balance resume."
+
+  space_cache (*)
+       Enable the on-disk freespace cache.
+  nospace_cache
+       Disable freespace cache loading without clearing the cache.
+  clear_cache
+       Force clearing and rebuilding of the disk space cache if something
+       has gone wrong.
+
+  ssd
+  nossd
+  ssd_spread
+       Options to control ssd allocation schemes.  By default, BTRFS will
+       enable or disable ssd allocation heuristics depending on whether a
+       rotational or nonrotational disk is in use.  The ssd and nossd options
+       can override this autodetection.
+
+       The ssd_spread mount option attempts to allocate into big chunks
+       of unused space, and may perform better on low-end ssds.  ssd_spread
+       implies ssd, enabling all other ssd heuristics as well.
+
+  subvol=<path>
+       Mount subvolume at <path> rather than the root subvolume.  <path> is
+       relative to the top level subvolume.
+
+  subvolid=<ID>
+       Mount subvolume specified by an ID number rather than the root subvolume.
+       This allows mounting of subvolumes which are not in the root of the mounted
+       filesystem.
+       You can use "btrfs subvolume list" to see subvolume ID numbers.
+
+  subvolrootid=<objectid> (deprecated)
+       Mount subvolume specified by <objectid> rather than the root subvolume.
+       This allows mounting of subvolumes which are not in the root of the mounted
+       filesystem.
+       You can use "btrfs subvolume show " to see the object ID for a subvolume.
+       
+  thread_pool=<number>
+       The number of worker threads to allocate.  The default number is equal
+       to the number of CPUs + 2, or 8, whichever is smaller.
+
+  user_subvol_rm_allowed
+       Allow subvolumes to be deleted by a non-root user. Use with caution. 
+
+MAILING LIST
+============
 
 There is a Btrfs mailing list hosted on vger.kernel.org. You can
 find details on how to subscribe here:
@@ -49,8 +215,8 @@ http://dir.gmane.org/gmane.comp.file-systems.btrfs
 
 
 
-       IRC
-       ===
+IRC
+===
 
 Discussion of Btrfs also occurs on the #btrfs channel of the Freenode
 IRC network.
index dcf338e..bd3c56c 100644 (file)
@@ -146,7 +146,7 @@ USAGE
 
 Format options
 --------------
--l [label]   : Give a volume label, up to 256 unicode name.
+-l [label]   : Give a volume label, up to 512 unicode name.
 -a [0 or 1]  : Split start location of each area for heap-based allocation.
                1 is set by default, which performs this.
 -o [int]     : Set overprovision ratio in percent over volume size.
@@ -156,6 +156,8 @@ Format options
 -z [int]     : Set the number of sections per zone.
                1 is set by default.
 -e [str]     : Set basic extension list. e.g. "mp3,gif,mov"
+-t [0 or 1]  : Disable discard command or not.
+               1 is set by default, which conducts discard.
 
 ================================================================================
 DESIGN
index 77a1d11..6f83fa9 100644 (file)
@@ -72,11 +72,11 @@ in this document, but drivers acting as clients to the GPIO interface must
 not care how it's implemented.)
 
 That said, if the convention is supported on their platform, drivers should
-use it when possible.  Platforms must declare GENERIC_GPIO support in their
-Kconfig (boolean true), and provide an <asm/gpio.h> file.  Drivers that can't
-work without standard GPIO calls should have Kconfig entries which depend
-on GENERIC_GPIO.  The GPIO calls are available, either as "real code" or as
-optimized-away stubs, when drivers use the include file:
+use it when possible.  Platforms must select ARCH_REQUIRE_GPIOLIB or
+ARCH_WANT_OPTIONAL_GPIOLIB in their Kconfig.  Drivers that can't work without
+standard GPIO calls should have Kconfig entries which depend on GPIOLIB.  The
+GPIO calls are available, either as "real code" or as optimized-away stubs,
+when drivers use the include file:
 
        #include <linux/gpio.h>
 
index b73bbfb..36a3e79 100644 (file)
@@ -13,11 +13,11 @@ Thermal emulation mode supports software debug for TMU's operation. User can set
 manually with software code and TMU will read current temperature from user value not from
 sensor's value.
 
-Enabling CONFIG_EXYNOS_THERMAL_EMUL option will make this support in available.
-When it's enabled, sysfs node will be created under
-/sys/bus/platform/devices/'exynos device name'/ with name of 'emulation'.
+Enabling CONFIG_THERMAL_EMULATION option will make this support available.
+When it's enabled, sysfs node will be created as
+/sys/devices/virtual/thermal/thermal_zone'zone id'/emul_temp.
 
-The sysfs node, 'emulation', will contain value 0 for the initial state. When you input any
+The sysfs node, 'emul_node', will contain value 0 for the initial state. When you input any
 temperature you want to update to sysfs node, it automatically enable emulation mode and
 current temperature will be changed into it.
 (Exynos also supports user changable delay time which would be used to delay of
index 6859661..a71bd5b 100644 (file)
@@ -31,15 +31,17 @@ temperature) and throttle appropriate devices.
 1. thermal sysfs driver interface functions
 
 1.1 thermal zone device interface
-1.1.1 struct thermal_zone_device *thermal_zone_device_register(char *name,
+1.1.1 struct thermal_zone_device *thermal_zone_device_register(char *type,
                int trips, int mask, void *devdata,
-               struct thermal_zone_device_ops *ops)
+               struct thermal_zone_device_ops *ops,
+               const struct thermal_zone_params *tzp,
+               int passive_delay, int polling_delay))
 
     This interface function adds a new thermal zone device (sensor) to
     /sys/class/thermal folder as thermal_zone[0-*]. It tries to bind all the
     thermal cooling devices registered at the same time.
 
-    name: the thermal zone name.
+    type: the thermal zone type.
     trips: the total number of trip points this thermal zone supports.
     mask: Bit string: If 'n'th bit is set, then trip point 'n' is writeable.
     devdata: device private data
@@ -57,6 +59,12 @@ temperature) and throttle appropriate devices.
                        will be fired.
        .set_emul_temp: set the emulation temperature which helps in debugging
                        different threshold temperature points.
+    tzp: thermal zone platform parameters.
+    passive_delay: number of milliseconds to wait between polls when
+       performing passive cooling.
+    polling_delay: number of milliseconds to wait between polls when checking
+       whether trip points have been crossed (0 for interrupt driven systems).
+
 
 1.1.2 void thermal_zone_device_unregister(struct thermal_zone_device *tz)
 
@@ -265,6 +273,10 @@ emul_temp
        Unit: millidegree Celsius
        WO, Optional
 
+         WARNING: Be careful while enabling this option on production systems,
+         because userland can easily disable the thermal policy by simply
+         flooding this sysfs node with low temperature values.
+
 *****************************
 * Cooling device attributes *
 *****************************
@@ -363,7 +375,7 @@ This function returns the thermal_instance corresponding to a given
 {thermal_zone, cooling_device, trip_point} combination. Returns NULL
 if such an instance does not exist.
 
-5.3:notify_thermal_framework:
+5.3:thermal_notify_framework:
 This function handles the trip events from sensor drivers. It starts
 throttling the cooling devices according to the policy configured.
 For CRITICAL and HOT trip points, this notifies the respective drivers,
@@ -375,11 +387,3 @@ platform data is provided, this uses the step_wise throttling policy.
 This function serves as an arbitrator to set the state of a cooling
 device. It sets the cooling device to the deepest cooling state if
 possible.
-
-5.5:thermal_register_governor:
-This function lets the various thermal governors to register themselves
-with the Thermal framework. At run time, depending on a zone's platform
-data, a particular governor is used for throttling.
-
-5.6:thermal_unregister_governor:
-This function unregisters a governor from the thermal framework.
diff --git a/Documentation/xtensa/mmu.txt b/Documentation/xtensa/mmu.txt
new file mode 100644 (file)
index 0000000..2b1af76
--- /dev/null
@@ -0,0 +1,46 @@
+MMUv3 initialization sequence.
+
+The code in the initialize_mmu macro sets up MMUv3 memory mapping
+identically to MMUv2 fixed memory mapping. Depending on
+CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX symbol this code is
+located in one of the following address ranges:
+
+    0xF0000000..0xFFFFFFFF (will keep same address in MMU v2 layout;
+                        typically ROM)
+    0x00000000..0x07FFFFFF (system RAM; this code is actually linked
+                        at 0xD0000000..0xD7FFFFFF [cached]
+                        or 0xD8000000..0xDFFFFFFF [uncached];
+                        in any case, initially runs elsewhere
+                        than linked, so have to be careful)
+
+The code has the following assumptions:
+  This code fragment is run only on an MMU v3.
+  TLBs are in their reset state.
+  ITLBCFG and DTLBCFG are zero (reset state).
+  RASID is 0x04030201 (reset state).
+  PS.RING is zero (reset state).
+  LITBASE is zero (reset state, PC-relative literals); required to be PIC.
+
+TLB setup proceeds along the following steps.
+
+  Legend:
+    VA = virtual address (two upper nibbles of it);
+    PA = physical address (two upper nibbles of it);
+    pc = physical range that contains this code;
+
+After step 2, we jump to virtual address in 0x40000000..0x5fffffff
+that corresponds to next instruction to execute in this code.
+After step 4, we jump to intended (linked) address of this code.
+
+    Step 0     Step1     Step 2     Step3     Step 4     Step5
+ ============  =====  ============  =====  ============  =====
+   VA      PA     PA    VA      PA     PA    VA      PA     PA
+ ------    --     --  ------    --     --  ------    --     --
+ E0..FF -> E0  -> E0  E0..FF -> E0         F0..FF -> F0  -> F0
+ C0..DF -> C0  -> C0  C0..DF -> C0         E0..EF -> F0  -> F0
+ A0..BF -> A0  -> A0  A0..BF -> A0         D8..DF -> 00  -> 00
+ 80..9F -> 80  -> 80  80..9F -> 80         D0..D7 -> 00  -> 00
+ 60..7F -> 60  -> 60  60..7F -> 60
+ 40..5F -> 40         40..5F -> pc  -> pc  40..5F -> pc
+ 20..3F -> 20  -> 20  20..3F -> 20
+ 00..1F -> 00  -> 00  00..1F -> 00
index 4fa7b4e..d5b8f01 100644 (file)
@@ -84,10 +84,10 @@ GPIO 公约
 控制器的抽象函数来实现它。(有一些可选的代码能支持这种策略的实现,本文档
 后面会介绍,但作为 GPIO 接口的客户端驱动程序必须与它的实现无关。)
 
-也就是说,如果在他们的平台上支持这个公约,驱动应尽可能的使用它。平台
-必须在 Kconfig 中声明对 GENERIC_GPIO的支持 (布尔型 true),并提供
-一个 <asm/gpio.h> 文件。那些调用标准 GPIO 函数的驱动应该在 Kconfig
-入口中声明依赖GENERIC_GPIO。当驱动包含文件:
+也就是说,如果在他们的平台上支持这个公约,驱动应尽可能的使用它。同时,平台
+必须在 Kconfig 中选择 ARCH_REQUIRE_GPIOLIB 或者 ARCH_WANT_OPTIONAL_GPIOLIB
+选项。那些调用标准 GPIO 函数的驱动应该在 Kconfig 入口中声明依赖GENERIC_GPIO。
+当驱动包含文件:
 
        #include <linux/gpio.h>
 
index e73c374..3d7782b 100644 (file)
@@ -1620,6 +1620,13 @@ W:       http://www.baycom.org/~tom/ham/ham.html
 S:     Maintained
 F:     drivers/net/hamradio/baycom*
 
+BCACHE (BLOCK LAYER CACHE)
+M:     Kent Overstreet <koverstreet@google.com>
+L:     linux-bcache@vger.kernel.org
+W:     http://bcache.evilpiepirate.org
+S:     Maintained:
+F:     drivers/md/bcache/
+
 BEFS FILE SYSTEM
 S:     Orphan
 F:     Documentation/filesystems/befs.txt
@@ -8022,11 +8029,14 @@ F:      arch/xtensa/
 
 THERMAL
 M:      Zhang Rui <rui.zhang@intel.com>
+M:      Eduardo Valentin <eduardo.valentin@ti.com>
 L:      linux-pm@vger.kernel.org
 T:      git git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux.git
+Q:      https://patchwork.kernel.org/project/linux-pm/list/
 S:      Supported
 F:      drivers/thermal/
 F:      include/linux/thermal.h
+F:      include/linux/cpu_cooling.h
 
 THINGM BLINK(1) USB RGB LED DRIVER
 M:     Vivien Didelot <vivien.didelot@savoirfairelinux.com>
index 8629127..837a1f2 100644 (file)
@@ -55,9 +55,6 @@ config GENERIC_CALIBRATE_DELAY
        bool
        default y
 
-config GENERIC_GPIO
-       bool
-
 config ZONE_DMA
        bool
        default y
index e6f4eca..5917099 100644 (file)
@@ -16,8 +16,6 @@ config ARC
        select GENERIC_FIND_FIRST_BIT
        # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
        select GENERIC_IRQ_SHOW
-       select GENERIC_KERNEL_EXECVE
-       select GENERIC_KERNEL_THREAD
        select GENERIC_PENDING_IRQ if SMP
        select GENERIC_SMP_IDLE_THREAD
        select HAVE_ARCH_KGDB
@@ -61,9 +59,6 @@ config GENERIC_CALIBRATE_DELAY
 config GENERIC_HWEIGHT
        def_bool y
 
-config BINFMT_ELF
-       def_bool y
-
 config STACKTRACE_SUPPORT
        def_bool y
        select STACKTRACE
@@ -82,6 +77,7 @@ menu "ARC Architecture Configuration"
 menu "ARC Platform/SoC/Board"
 
 source "arch/arc/plat-arcfpga/Kconfig"
+source "arch/arc/plat-tb10x/Kconfig"
 #New platform adds here
 
 endmenu
@@ -134,9 +130,6 @@ if SMP
 config ARC_HAS_COH_CACHES
        def_bool n
 
-config ARC_HAS_COH_LLSC
-       def_bool n
-
 config ARC_HAS_COH_RTSC
        def_bool n
 
@@ -189,6 +182,10 @@ config ARC_CACHE_PAGES
          Note that Global I/D ENABLE + Per Page DISABLE works but corollary
          Global DISABLE + Per Page ENABLE won't work
 
+config ARC_CACHE_VIPT_ALIASING
+       bool "Support VIPT Aliasing D$"
+       default n
+
 endif  #ARC_CACHE
 
 config ARC_HAS_ICCM
@@ -304,6 +301,9 @@ config ARC_FPU_SAVE_RESTORE
          based on actual usage of FPU by a task. Thus our implemn does
          this for all tasks in system.
 
+config ARC_CANT_LLSC
+       def_bool n
+
 menuconfig ARC_CPU_REL_4_10
        bool "Enable support for Rel 4.10 features"
        default n
@@ -314,9 +314,7 @@ menuconfig ARC_CPU_REL_4_10
 config ARC_HAS_LLSC
        bool "Insn: LLOCK/SCOND (efficient atomic ops)"
        default y
-       depends on ARC_CPU_770
-       # if SMP, enable LLSC ONLY if ARC implementation has coherent atomics
-       depends on !SMP || ARC_HAS_COH_LLSC
+       depends on ARC_CPU_770 && !ARC_CANT_LLSC
 
 config ARC_HAS_SWAPE
        bool "Insn: SWAPE (endian-swap)"
@@ -415,13 +413,6 @@ config ARC_DBG_TLB_MISS_COUNT
          Counts number of I and D TLB Misses and exports them via Debugfs
          The counters can be cleared via Debugfs as well
 
-config CMDLINE
-       string "Kernel command line to built-in"
-       default "print-fatal-signals=1"
-       help
-         The default command line which will be appended to the optional
-         u-boot provided command line (see below)
-
 config CMDLINE_UBOOT
        bool "Support U-boot kernel command line passing"
        default n
@@ -430,8 +421,8 @@ config CMDLINE_UBOOT
          command line from the U-boot environment to the Linux kernel then
          switch this option on.
          ARC U-boot will setup the cmdline in RAM/flash and set r2 to point
-         to it. kernel startup code will copy the string into cmdline buffer
-         and also append CONFIG_CMDLINE.
+         to it. kernel startup code will append this to DeviceTree
+         /bootargs provided cmdline args.
 
 config ARC_BUILTIN_DTB_NAME
        string "Built in DTB"
@@ -441,6 +432,10 @@ config ARC_BUILTIN_DTB_NAME
 
 source "kernel/Kconfig.preempt"
 
+menu "Executable file formats"
+source "fs/Kconfig.binfmt"
+endmenu
+
 endmenu         # "ARC Architecture Configuration"
 
 source "mm/Kconfig"
index 92379c7..183397f 100644 (file)
@@ -8,6 +8,10 @@
 
 UTS_MACHINE := arc
 
+ifeq ($(CROSS_COMPILE),)
+CROSS_COMPILE := arc-elf32-
+endif
+
 KBUILD_DEFCONFIG := fpga_defconfig
 
 cflags-y       += -mA7 -fno-common -pipe -fno-builtin -D__linux__
@@ -87,20 +91,23 @@ core-y              += arch/arc/
 core-y         += arch/arc/boot/dts/
 
 core-$(CONFIG_ARC_PLAT_FPGA_LEGACY)    += arch/arc/plat-arcfpga/
+core-$(CONFIG_ARC_PLAT_TB10X)          += arch/arc/plat-tb10x/
 
 drivers-$(CONFIG_OPROFILE)     += arch/arc/oprofile/
 
 libs-y         += arch/arc/lib/ $(LIBGCC)
 
+boot           := arch/arc/boot
+
 #default target for make without any arguements.
-KBUILD_IMAGE := bootpImage
+KBUILD_IMAGE   := bootpImage
 
 all:   $(KBUILD_IMAGE)
-boot   := arch/arc/boot
-
 bootpImage: vmlinux
 
-uImage: vmlinux
+boot_targets += uImage uImage.bin uImage.gz
+
+$(boot_targets): vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 
 %.dtb %.dtb.S %.dtb.o: scripts
index 7d514c2..e597cb3 100644 (file)
@@ -3,7 +3,6 @@ targets := vmlinux.bin vmlinux.bin.gz uImage
 # uImage build relies on mkimage being availble on your host for ARC target
 # You will need to build u-boot for ARC, rename mkimage to arc-elf32-mkimage
 # and make sure it's reacable from your PATH
-MKIMAGE := $(srctree)/scripts/mkuboot.sh
 
 OBJCOPYFLAGS= -O binary -R .note -R .note.gnu.build-id -R .comment -S
 
@@ -12,7 +11,12 @@ LINUX_START_TEXT = $$(readelf -h vmlinux | \
 
 UIMAGE_LOADADDR    = $(CONFIG_LINUX_LINK_BASE)
 UIMAGE_ENTRYADDR   = $(LINUX_START_TEXT)
-UIMAGE_COMPRESSION = gzip
+
+suffix-y := bin
+suffix-$(CONFIG_KERNEL_GZIP)   := gz
+
+targets += uImage uImage.bin uImage.gz
+extra-y += vmlinux.bin vmlinux.bin.gz
 
 $(obj)/vmlinux.bin: vmlinux FORCE
        $(call if_changed,objcopy)
@@ -20,7 +24,12 @@ $(obj)/vmlinux.bin: vmlinux FORCE
 $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
        $(call if_changed,gzip)
 
-$(obj)/uImage: $(obj)/vmlinux.bin.gz FORCE
-       $(call if_changed,uimage)
+$(obj)/uImage.bin: $(obj)/vmlinux.bin FORCE
+       $(call if_changed,uimage,none)
+
+$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE
+       $(call if_changed,uimage,gzip)
 
-PHONY += FORCE
+$(obj)/uImage: $(obj)/uImage.$(suffix-y)
+       @ln -sf $(notdir $<) $@
+       @echo '  Image $@ is ready'
index 5776835..faf240e 100644 (file)
@@ -8,6 +8,8 @@ endif
 obj-y   += $(builtindtb-y).dtb.o
 targets += $(builtindtb-y).dtb
 
+.SECONDARY: $(obj)/$(builtindtb-y).dtb.S
+
 dtbs:  $(addprefix  $(obj)/, $(builtindtb-y).dtb)
 
-clean-files := *.dtb
+clean-files := *.dtb  *.dtb.S
diff --git a/arch/arc/boot/dts/abilis_tb100.dtsi b/arch/arc/boot/dts/abilis_tb100.dtsi
new file mode 100644 (file)
index 0000000..941ad11
--- /dev/null
@@ -0,0 +1,340 @@
+/*
+ * Abilis Systems TB100 SOC device tree
+ *
+ * Copyright (C) Abilis Systems 2013
+ *
+ * Author: Christian Ruppert <christian.ruppert@abilis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/include/ "abilis_tb10x.dtsi"
+
+/* interrupt specifiers
+ * --------------------
+ * 0: rising, 1: low, 2: high, 3: falling,
+ */
+
+/ {
+       clock-frequency         = <500000000>;  /* 500 MHZ */
+
+       soc100 {
+               bus-frequency   = <166666666>;
+
+               pll0: oscillator {
+                       clock-frequency  = <1000000000>;
+               };
+               cpu_clk: clkdiv_cpu {
+                       clock-mult = <1>;
+                       clock-div = <2>;
+               };
+               ahb_clk: clkdiv_ahb {
+                       clock-mult = <1>;
+                       clock-div = <6>;
+               };
+
+               iomux: iomux@FF10601c {
+                       /* Port 1 */
+                       pctl_tsin_s0: pctl-tsin-s0 {   /* Serial TS-in 0 */
+                               pingrp = "mis0_pins";
+                       };
+                       pctl_tsin_s1: pctl-tsin-s1 {   /* Serial TS-in 1 */
+                               pingrp = "mis1_pins";
+                       };
+                       pctl_gpio_a: pctl-gpio-a {     /* GPIO bank A */
+                               pingrp = "gpioa_pins";
+                       };
+                       pctl_tsin_p1: pctl-tsin-p1 {   /* Parallel TS-in 1 */
+                               pingrp = "mip1_pins";
+                       };
+                       /* Port 2 */
+                       pctl_tsin_s2: pctl-tsin-s2 {   /* Serial TS-in 2 */
+                               pingrp = "mis2_pins";
+                       };
+                       pctl_tsin_s3: pctl-tsin-s3 {   /* Serial TS-in 3 */
+                               pingrp = "mis3_pins";
+                       };
+                       pctl_gpio_c: pctl-gpio-c {     /* GPIO bank C */
+                               pingrp = "gpioc_pins";
+                       };
+                       pctl_tsin_p3: pctl-tsin-p3 {   /* Parallel TS-in 3 */
+                               pingrp = "mip3_pins";
+                       };
+                       /* Port 3 */
+                       pctl_tsin_s4: pctl-tsin-s4 {   /* Serial TS-in 4 */
+                               pingrp = "mis4_pins";
+                       };
+                       pctl_tsin_s5: pctl-tsin-s5 {   /* Serial TS-in 5 */
+                               pingrp = "mis5_pins";
+                       };
+                       pctl_gpio_e: pctl-gpio-e {     /* GPIO bank E */
+                               pingrp = "gpioe_pins";
+                       };
+                       pctl_tsin_p5: pctl-tsin-p5 {   /* Parallel TS-in 5 */
+                               pingrp = "mip5_pins";
+                       };
+                       /* Port 4 */
+                       pctl_tsin_s6: pctl-tsin-s6 {   /* Serial TS-in 6 */
+                               pingrp = "mis6_pins";
+                       };
+                       pctl_tsin_s7: pctl-tsin-s7 {   /* Serial TS-in 7 */
+                               pingrp = "mis7_pins";
+                       };
+                       pctl_gpio_g: pctl-gpio-g {     /* GPIO bank G */
+                               pingrp = "gpiog_pins";
+                       };
+                       pctl_tsin_p7: pctl-tsin-p7 {   /* Parallel TS-in 7 */
+                               pingrp = "mip7_pins";
+                       };
+                       /* Port 5 */
+                       pctl_gpio_j: pctl-gpio-j {     /* GPIO bank J */
+                               pingrp = "gpioj_pins";
+                       };
+                       pctl_gpio_k: pctl-gpio-k {     /* GPIO bank K */
+                               pingrp = "gpiok_pins";
+                       };
+                       pctl_ciplus: pctl-ciplus {     /* CI+ interface */
+                               pingrp = "ciplus_pins";
+                       };
+                       pctl_mcard: pctl-mcard {       /* M-Card interface */
+                               pingrp = "mcard_pins";
+                       };
+                       /* Port 6 */
+                       pctl_tsout_p: pctl-tsout-p {   /* Parallel TS-out */
+                               pingrp = "mop_pins";
+                       };
+                       pctl_tsout_s0: pctl-tsout-s0 { /* Serial TS-out 0 */
+                               pingrp = "mos0_pins";
+                       };
+                       pctl_tsout_s1: pctl-tsout-s1 { /* Serial TS-out 1 */
+                               pingrp = "mos1_pins";
+                       };
+                       pctl_tsout_s2: pctl-tsout-s2 { /* Serial TS-out 2 */
+                               pingrp = "mos2_pins";
+                       };
+                       pctl_tsout_s3: pctl-tsout-s3 { /* Serial TS-out 3 */
+                               pingrp = "mos3_pins";
+                       };
+                       /* Port 7 */
+                       pctl_uart0: pctl-uart0 {       /* UART 0 */
+                               pingrp = "uart0_pins";
+                       };
+                       pctl_uart1: pctl-uart1 {       /* UART 1 */
+                               pingrp = "uart1_pins";
+                       };
+                       pctl_gpio_l: pctl-gpio-l {     /* GPIO bank L */
+                               pingrp = "gpiol_pins";
+                       };
+                       pctl_gpio_m: pctl-gpio-m {     /* GPIO bank M */
+                               pingrp = "gpiom_pins";
+                       };
+                       /* Port 8 */
+                       pctl_spi3: pctl-spi3 {
+                               pingrp = "spi3_pins";
+                       };
+                       /* Port 9 */
+                       pctl_spi1: pctl-spi1 {
+                               pingrp = "spi1_pins";
+                       };
+                       pctl_gpio_n: pctl-gpio-n {
+                               pingrp = "gpion_pins";
+                       };
+                       /* Unmuxed GPIOs */
+                       pctl_gpio_b: pctl-gpio-b {
+                               pingrp = "gpiob_pins";
+                       };
+                       pctl_gpio_d: pctl-gpio-d {
+                               pingrp = "gpiod_pins";
+                       };
+                       pctl_gpio_f: pctl-gpio-f {
+                               pingrp = "gpiof_pins";
+                       };
+                       pctl_gpio_h: pctl-gpio-h {
+                               pingrp = "gpioh_pins";
+                       };
+                       pctl_gpio_i: pctl-gpio-i {
+                               pingrp = "gpioi_pins";
+                       };
+               };
+
+               gpioa: gpio@FF140000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF140000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <0>;
+                       gpio-pins = <&pctl_gpio_a>;
+               };
+               gpiob: gpio@FF141000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF141000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <3>;
+                       gpio-pins = <&pctl_gpio_b>;
+               };
+               gpioc: gpio@FF142000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF142000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <5>;
+                       gpio-pins = <&pctl_gpio_c>;
+               };
+               gpiod: gpio@FF143000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF143000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <8>;
+                       gpio-pins = <&pctl_gpio_d>;
+               };
+               gpioe: gpio@FF144000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF144000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <10>;
+                       gpio-pins = <&pctl_gpio_e>;
+               };
+               gpiof: gpio@FF145000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF145000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <13>;
+                       gpio-pins = <&pctl_gpio_f>;
+               };
+               gpiog: gpio@FF146000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF146000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <15>;
+                       gpio-pins = <&pctl_gpio_g>;
+               };
+               gpioh: gpio@FF147000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF147000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <18>;
+                       gpio-pins = <&pctl_gpio_h>;
+               };
+               gpioi: gpio@FF148000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF148000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <20>;
+                       gpio-pins = <&pctl_gpio_i>;
+               };
+               gpioj: gpio@FF149000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF149000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <32>;
+                       gpio-pins = <&pctl_gpio_j>;
+               };
+               gpiok: gpio@FF14a000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14A000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <64>;
+                       gpio-pins = <&pctl_gpio_k>;
+               };
+               gpiol: gpio@FF14b000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14B000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <86>;
+                       gpio-pins = <&pctl_gpio_l>;
+               };
+               gpiom: gpio@FF14c000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14C000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <90>;
+                       gpio-pins = <&pctl_gpio_m>;
+               };
+               gpion: gpio@FF14d000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14D000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <94>;
+                       gpio-pins = <&pctl_gpio_n>;
+               };
+       };
+};
diff --git a/arch/arc/boot/dts/abilis_tb100_dvk.dts b/arch/arc/boot/dts/abilis_tb100_dvk.dts
new file mode 100644 (file)
index 0000000..c0fd362
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * Abilis Systems TB100 Development Kit PCB device tree
+ *
+ * Copyright (C) Abilis Systems 2013
+ *
+ * Author: Christian Ruppert <christian.ruppert@abilis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/dts-v1/;
+
+/include/ "abilis_tb100.dtsi"
+
+/ {
+       chosen {
+               bootargs = "earlycon=uart8250,mmio32,0xff100000,9600n8 console=ttyS0,9600n8";
+       };
+
+       aliases { };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x08000000>;  /* 128M */
+       };
+
+       soc100 {
+               uart@FF100000 {
+                       pinctrl-names = "abilis,simple-default";
+                       pinctrl-0 = <&pctl_uart0>;
+               };
+               ethernet@FE100000 {
+                       phy-mode = "rgmii";
+               };
+
+               i2c0: i2c@FF120000 {
+                       sda-hold-time = <432>;
+               };
+               i2c1: i2c@FF121000 {
+                       sda-hold-time = <432>;
+               };
+               i2c2: i2c@FF122000 {
+                       sda-hold-time = <432>;
+               };
+               i2c3: i2c@FF123000 {
+                       sda-hold-time = <432>;
+               };
+               i2c4: i2c@FF124000 {
+                       sda-hold-time = <432>;
+               };
+
+               leds {
+                       compatible = "gpio-leds";
+                       power {
+                               label = "Power";
+                               gpios = <&gpioi 0>;
+                               linux,default-trigger = "default-on";
+                       };
+                       heartbeat {
+                               label = "Heartbeat";
+                               gpios = <&gpioi 1>;
+                               linux,default-trigger = "heartbeat";
+                       };
+                       led2 {
+                               label = "LED2";
+                               gpios = <&gpioi 2>;
+                               default-state = "off";
+                       };
+                       led3 {
+                               label = "LED3";
+                               gpios = <&gpioi 3>;
+                               default-state = "off";
+                       };
+                       led4 {
+                               label = "LED4";
+                               gpios = <&gpioi 4>;
+                               default-state = "off";
+                       };
+                       led5 {
+                               label = "LED5";
+                               gpios = <&gpioi 5>;
+                               default-state = "off";
+                       };
+                       led6 {
+                               label = "LED6";
+                               gpios = <&gpioi 6>;
+                               default-state = "off";
+                       };
+                       led7 {
+                               label = "LED7";
+                               gpios = <&gpioi 7>;
+                               default-state = "off";
+                       };
+                       led8 {
+                               label = "LED8";
+                               gpios = <&gpioi 8>;
+                               default-state = "off";
+                       };
+                       led9 {
+                               label = "LED9";
+                               gpios = <&gpioi 9>;
+                               default-state = "off";
+                       };
+                       led10 {
+                               label = "LED10";
+                               gpios = <&gpioi 10>;
+                               default-state = "off";
+                       };
+                       led11 {
+                               label = "LED11";
+                               gpios = <&gpioi 11>;
+                               default-state = "off";
+                       };
+               };
+       };
+};
diff --git a/arch/arc/boot/dts/abilis_tb101.dtsi b/arch/arc/boot/dts/abilis_tb101.dtsi
new file mode 100644 (file)
index 0000000..fd25c21
--- /dev/null
@@ -0,0 +1,349 @@
+/*
+ * Abilis Systems TB101 SOC device tree
+ *
+ * Copyright (C) Abilis Systems 2013
+ *
+ * Author: Christian Ruppert <christian.ruppert@abilis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/include/ "abilis_tb10x.dtsi"
+
+/* interrupt specifiers
+ * --------------------
+ * 0: rising, 1: low, 2: high, 3: falling,
+ */
+
+/ {
+       clock-frequency         = <500000000>;  /* 500 MHZ */
+
+       soc100 {
+               bus-frequency   = <166666666>;
+
+               pll0: oscillator {
+                       clock-frequency  = <1000000000>;
+               };
+               cpu_clk: clkdiv_cpu {
+                       clock-mult = <1>;
+                       clock-div = <2>;
+               };
+               ahb_clk: clkdiv_ahb {
+                       clock-mult = <1>;
+                       clock-div = <6>;
+               };
+
+               iomux: iomux@FF10601c {
+                       /* Port 1 */
+                       pctl_tsin_s0: pctl-tsin-s0 {   /* Serial TS-in 0 */
+                               pingrp = "mis0_pins";
+                       };
+                       pctl_tsin_s1: pctl-tsin-s1 {   /* Serial TS-in 1 */
+                               pingrp = "mis1_pins";
+                       };
+                       pctl_gpio_a: pctl-gpio-a {     /* GPIO bank A */
+                               pingrp = "gpioa_pins";
+                       };
+                       pctl_tsin_p1: pctl-tsin-p1 {   /* Parallel TS-in 1 */
+                               pingrp = "mip1_pins";
+                       };
+                       /* Port 2 */
+                       pctl_tsin_s2: pctl-tsin-s2 {   /* Serial TS-in 2 */
+                               pingrp = "mis2_pins";
+                       };
+                       pctl_tsin_s3: pctl-tsin-s3 {   /* Serial TS-in 3 */
+                               pingrp = "mis3_pins";
+                       };
+                       pctl_gpio_c: pctl-gpio-c {     /* GPIO bank C */
+                               pingrp = "gpioc_pins";
+                       };
+                       pctl_tsin_p3: pctl-tsin-p3 {   /* Parallel TS-in 3 */
+                               pingrp = "mip3_pins";
+                       };
+                       /* Port 3 */
+                       pctl_tsin_s4: pctl-tsin-s4 {   /* Serial TS-in 4 */
+                               pingrp = "mis4_pins";
+                       };
+                       pctl_tsin_s5: pctl-tsin-s5 {   /* Serial TS-in 5 */
+                               pingrp = "mis5_pins";
+                       };
+                       pctl_gpio_e: pctl-gpio-e {     /* GPIO bank E */
+                               pingrp = "gpioe_pins";
+                       };
+                       pctl_tsin_p5: pctl-tsin-p5 {   /* Parallel TS-in 5 */
+                               pingrp = "mip5_pins";
+                       };
+                       /* Port 4 */
+                       pctl_tsin_s6: pctl-tsin-s6 {   /* Serial TS-in 6 */
+                               pingrp = "mis6_pins";
+                       };
+                       pctl_tsin_s7: pctl-tsin-s7 {   /* Serial TS-in 7 */
+                               pingrp = "mis7_pins";
+                       };
+                       pctl_gpio_g: pctl-gpio-g {     /* GPIO bank G */
+                               pingrp = "gpiog_pins";
+                       };
+                       pctl_tsin_p7: pctl-tsin-p7 {   /* Parallel TS-in 7 */
+                               pingrp = "mip7_pins";
+                       };
+                       /* Port 5 */
+                       pctl_gpio_j: pctl-gpio-j {     /* GPIO bank J */
+                               pingrp = "gpioj_pins";
+                       };
+                       pctl_gpio_k: pctl-gpio-k {     /* GPIO bank K */
+                               pingrp = "gpiok_pins";
+                       };
+                       pctl_ciplus: pctl-ciplus {     /* CI+ interface */
+                               pingrp = "ciplus_pins";
+                       };
+                       pctl_mcard: pctl-mcard {       /* M-Card interface */
+                               pingrp = "mcard_pins";
+                       };
+                       pctl_stc0: pctl-stc0 {         /* Smart card I/F 0 */
+                               pingrp = "stc0_pins";
+                       };
+                       pctl_stc1: pctl-stc1 {         /* Smart card I/F 1 */
+                               pingrp = "stc1_pins";
+                       };
+                       /* Port 6 */
+                       pctl_tsout_p: pctl-tsout-p {   /* Parallel TS-out */
+                               pingrp = "mop_pins";
+                       };
+                       pctl_tsout_s0: pctl-tsout-s0 { /* Serial TS-out 0 */
+                               pingrp = "mos0_pins";
+                       };
+                       pctl_tsout_s1: pctl-tsout-s1 { /* Serial TS-out 1 */
+                               pingrp = "mos1_pins";
+                       };
+                       pctl_tsout_s2: pctl-tsout-s2 { /* Serial TS-out 2 */
+                               pingrp = "mos2_pins";
+                       };
+                       pctl_tsout_s3: pctl-tsout-s3 { /* Serial TS-out 3 */
+                               pingrp = "mos3_pins";
+                       };
+                       /* Port 7 */
+                       pctl_uart0: pctl-uart0 {       /* UART 0 */
+                               pingrp = "uart0_pins";
+                       };
+                       pctl_uart1: pctl-uart1 {       /* UART 1 */
+                               pingrp = "uart1_pins";
+                       };
+                       pctl_gpio_l: pctl-gpio-l {     /* GPIO bank L */
+                               pingrp = "gpiol_pins";
+                       };
+                       pctl_gpio_m: pctl-gpio-m {     /* GPIO bank M */
+                               pingrp = "gpiom_pins";
+                       };
+                       /* Port 8 */
+                       pctl_spi3: pctl-spi3 {
+                               pingrp = "spi3_pins";
+                       };
+                       pctl_jtag: pctl-jtag {
+                               pingrp = "jtag_pins";
+                       };
+                       /* Port 9 */
+                       pctl_spi1: pctl-spi1 {
+                               pingrp = "spi1_pins";
+                       };
+                       pctl_gpio_n: pctl-gpio-n {
+                               pingrp = "gpion_pins";
+                       };
+                       /* Unmuxed GPIOs */
+                       pctl_gpio_b: pctl-gpio-b {
+                               pingrp = "gpiob_pins";
+                       };
+                       pctl_gpio_d: pctl-gpio-d {
+                               pingrp = "gpiod_pins";
+                       };
+                       pctl_gpio_f: pctl-gpio-f {
+                               pingrp = "gpiof_pins";
+                       };
+                       pctl_gpio_h: pctl-gpio-h {
+                               pingrp = "gpioh_pins";
+                       };
+                       pctl_gpio_i: pctl-gpio-i {
+                               pingrp = "gpioi_pins";
+                       };
+               };
+
+               gpioa: gpio@FF140000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF140000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <0>;
+                       gpio-pins = <&pctl_gpio_a>;
+               };
+               gpiob: gpio@FF141000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF141000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <3>;
+                       gpio-pins = <&pctl_gpio_b>;
+               };
+               gpioc: gpio@FF142000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF142000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <5>;
+                       gpio-pins = <&pctl_gpio_c>;
+               };
+               gpiod: gpio@FF143000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF143000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <8>;
+                       gpio-pins = <&pctl_gpio_d>;
+               };
+               gpioe: gpio@FF144000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF144000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <10>;
+                       gpio-pins = <&pctl_gpio_e>;
+               };
+               gpiof: gpio@FF145000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF145000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <13>;
+                       gpio-pins = <&pctl_gpio_f>;
+               };
+               gpiog: gpio@FF146000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF146000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <15>;
+                       gpio-pins = <&pctl_gpio_g>;
+               };
+               gpioh: gpio@FF147000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF147000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <18>;
+                       gpio-pins = <&pctl_gpio_h>;
+               };
+               gpioi: gpio@FF148000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF148000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <20>;
+                       gpio-pins = <&pctl_gpio_i>;
+               };
+               gpioj: gpio@FF149000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF149000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <32>;
+                       gpio-pins = <&pctl_gpio_j>;
+               };
+               gpiok: gpio@FF14a000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14A000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <64>;
+                       gpio-pins = <&pctl_gpio_k>;
+               };
+               gpiol: gpio@FF14b000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14B000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <86>;
+                       gpio-pins = <&pctl_gpio_l>;
+               };
+               gpiom: gpio@FF14c000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14C000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <90>;
+                       gpio-pins = <&pctl_gpio_m>;
+               };
+               gpion: gpio@FF14d000 {
+                       compatible = "abilis,tb10x-gpio";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <27 1>;
+                       reg = <0xFF14D000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <1>;
+                       gpio-base  = <94>;
+                       gpio-pins = <&pctl_gpio_n>;
+               };
+       };
+};
diff --git a/arch/arc/boot/dts/abilis_tb101_dvk.dts b/arch/arc/boot/dts/abilis_tb101_dvk.dts
new file mode 100644 (file)
index 0000000..6f8c381
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * Abilis Systems TB101 Development Kit PCB device tree
+ *
+ * Copyright (C) Abilis Systems 2013
+ *
+ * Author: Christian Ruppert <christian.ruppert@abilis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/dts-v1/;
+
+/include/ "abilis_tb101.dtsi"
+
+/ {
+       chosen {
+               bootargs = "earlycon=uart8250,mmio32,0xff100000,9600n8 console=ttyS0,9600n8";
+       };
+
+       aliases { };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x08000000>;  /* 128M */
+       };
+
+       soc100 {
+               uart@FF100000 {
+                       pinctrl-names = "abilis,simple-default";
+                       pinctrl-0 = <&pctl_uart0>;
+               };
+               ethernet@FE100000 {
+                       phy-mode = "rgmii";
+               };
+
+               i2c0: i2c@FF120000 {
+                       sda-hold-time = <432>;
+               };
+               i2c1: i2c@FF121000 {
+                       sda-hold-time = <432>;
+               };
+               i2c2: i2c@FF122000 {
+                       sda-hold-time = <432>;
+               };
+               i2c3: i2c@FF123000 {
+                       sda-hold-time = <432>;
+               };
+               i2c4: i2c@FF124000 {
+                       sda-hold-time = <432>;
+               };
+
+               leds {
+                       compatible = "gpio-leds";
+                       power {
+                               label = "Power";
+                               gpios = <&gpioi 0>;
+                               linux,default-trigger = "default-on";
+                       };
+                       heartbeat {
+                               label = "Heartbeat";
+                               gpios = <&gpioi 1>;
+                               linux,default-trigger = "heartbeat";
+                       };
+                       led2 {
+                               label = "LED2";
+                               gpios = <&gpioi 2>;
+                               default-state = "off";
+                       };
+                       led3 {
+                               label = "LED3";
+                               gpios = <&gpioi 3>;
+                               default-state = "off";
+                       };
+                       led4 {
+                               label = "LED4";
+                               gpios = <&gpioi 4>;
+                               default-state = "off";
+                       };
+                       led5 {
+                               label = "LED5";
+                               gpios = <&gpioi 5>;
+                               default-state = "off";
+                       };
+                       led6 {
+                               label = "LED6";
+                               gpios = <&gpioi 6>;
+                               default-state = "off";
+                       };
+                       led7 {
+                               label = "LED7";
+                               gpios = <&gpioi 7>;
+                               default-state = "off";
+                       };
+                       led8 {
+                               label = "LED8";
+                               gpios = <&gpioi 8>;
+                               default-state = "off";
+                       };
+                       led9 {
+                               label = "LED9";
+                               gpios = <&gpioi 9>;
+                               default-state = "off";
+                       };
+                       led10 {
+                               label = "LED10";
+                               gpios = <&gpioi 10>;
+                               default-state = "off";
+                       };
+                       led11 {
+                               label = "LED11";
+                               gpios = <&gpioi 11>;
+                               default-state = "off";
+                       };
+               };
+       };
+};
diff --git a/arch/arc/boot/dts/abilis_tb10x.dtsi b/arch/arc/boot/dts/abilis_tb10x.dtsi
new file mode 100644 (file)
index 0000000..a6139fc
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * Abilis Systems TB10X SOC device tree
+ *
+ * Copyright (C) Abilis Systems 2013
+ *
+ * Author: Christian Ruppert <christian.ruppert@abilis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/* interrupt specifiers
+ * --------------------
+ * 0: rising, 1: low, 2: high, 3: falling,
+ */
+
+/ {
+       compatible              = "abilis,arc-tb10x";
+       #address-cells          = <1>;
+       #size-cells             = <1>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "snps,arc770d";
+                       reg = <0>;
+               };
+       };
+
+       soc100 {
+               #address-cells  = <1>;
+               #size-cells     = <1>;
+               device_type     = "soc";
+               ranges          = <0xfe000000 0xfe000000 0x02000000
+                               0x000F0000 0x000F0000 0x00010000>;
+               compatible      = "abilis,tb10x", "simple-bus";
+
+               pll0: oscillator {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-output-names = "pll0";
+               };
+               cpu_clk: clkdiv_cpu {
+                       compatible = "fixed-factor-clock";
+                       #clock-cells = <0>;
+                       clocks = <&pll0>;
+                       clock-output-names = "cpu_clk";
+               };
+               ahb_clk: clkdiv_ahb {
+                       compatible = "fixed-factor-clock";
+                       #clock-cells = <0>;
+                       clocks = <&pll0>;
+                       clock-output-names = "ahb_clk";
+               };
+
+               iomux: iomux@FF10601c {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "abilis,tb10x-iomux";
+                       reg = <0xFF10601c 0x4>;
+               };
+
+               intc: interrupt-controller {
+                       compatible = "snps,arc700-intc";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+               tb10x_ictl: pic@fe002000 {
+                       compatible = "abilis,tb10x_ictl";
+                       reg = <0xFE002000 0x20>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
+                                       20 21 22 23 24 25 26 27 28 29 30 31>;
+               };
+
+               uart@FF100000 {
+                       compatible = "snps,dw-apb-uart",
+                                       "abilis,simple-pinctrl";
+                       reg = <0xFF100000 0x100>;
+                       clock-frequency = <166666666>;
+                       interrupts = <25 1>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       interrupt-parent = <&tb10x_ictl>;
+               };
+               ethernet@FE100000 {
+                       compatible = "snps,dwmac-3.70a","snps,dwmac";
+                       reg = <0xFE100000 0x1058>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <6 1>;
+                       interrupt-names = "macirq";
+                       clocks = <&ahb_clk>;
+                       clock-names = "stmmaceth";
+               };
+               dma@FE000000 {
+                       compatible = "snps,dma-spear1340";
+                       reg = <0xFE000000 0x400>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <14 1>;
+                       dma-channels = <6>;
+                       dma-requests = <0>;
+                       dma-masters = <1>;
+                       #dma-cells = <3>;
+                       chan_allocation_order = <0>;
+                       chan_priority = <1>;
+                       block_size = <0x7ff>;
+                       data_width = <2 0 0 0>;
+                       clocks = <&ahb_clk>;
+                       clock-names = "hclk";
+               };
+
+               i2c0: i2c@FF120000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xFF120000 0x1000>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <12 1>;
+                       clocks = <&ahb_clk>;
+               };
+               i2c1: i2c@FF121000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xFF121000 0x1000>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <12 1>;
+                       clocks = <&ahb_clk>;
+               };
+               i2c2: i2c@FF122000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xFF122000 0x1000>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <12 1>;
+                       clocks = <&ahb_clk>;
+               };
+               i2c3: i2c@FF123000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xFF123000 0x1000>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <12 1>;
+                       clocks = <&ahb_clk>;
+               };
+               i2c4: i2c@FF124000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xFF124000 0x1000>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <12 1>;
+                       clocks = <&ahb_clk>;
+               };
+
+               spi0: spi@0xFE010000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       cell-index = <0>;
+                       compatible = "abilis,tb100-spi";
+                       num-cs = <1>;
+                       reg = <0xFE010000 0x20>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <26 1>;
+                       clocks = <&ahb_clk>;
+               };
+               spi1: spi@0xFE011000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       cell-index = <1>;
+                       compatible = "abilis,tb100-spi",
+                                       "abilis,simple-pinctrl";
+                       num-cs = <2>;
+                       reg = <0xFE011000 0x20>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <10 1>;
+                       clocks = <&ahb_clk>;
+               };
+
+               tb10x_tsm: tb10x-tsm@ff316000 {
+                       compatible = "abilis,tb100-tsm";
+                       reg = <0xff316000 0x400>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <17 1>;
+                       output-clkdiv = <4>;
+                       global-packet-delay = <0x21>;
+                       port-packet-delay = <0>;
+               };
+               tb10x_stream_proc: tb10x-stream-proc {
+                       compatible = "abilis,tb100-streamproc";
+                       reg =   <0xfff00000 0x200>,
+                               <0x000f0000 0x10000>,
+                               <0xfff00200 0x105>,
+                               <0xff10600c 0x1>,
+                               <0xfe001018 0x1>;
+                       reg-names =     "mbox",
+                                       "sp_iccm",
+                                       "mbox_irq",
+                                       "cpuctrl",
+                                       "a6it_int_force";
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <20 1>, <19 1>;
+                       interrupt-names = "cmd_irq", "event_irq";
+               };
+               tb10x_mdsc0: tb10x-mdscr@FF300000 {
+                       compatible = "abilis,tb100-mdscr";
+                       reg = <0xFF300000 0x7000>;
+                       tb100-mdscr-manage-tsin;
+               };
+               tb10x_mscr0: tb10x-mdscr@FF307000 {
+                       compatible = "abilis,tb100-mdscr";
+                       reg = <0xFF307000 0x7000>;
+               };
+               tb10x_scr0: tb10x-mdscr@ff30e000 {
+                       compatible = "abilis,tb100-mdscr";
+                       reg = <0xFF30e000 0x4000>;
+                       tb100-mdscr-manage-tsin;
+               };
+               tb10x_scr1: tb10x-mdscr@ff312000 {
+                       compatible = "abilis,tb100-mdscr";
+                       reg = <0xFF312000 0x4000>;
+                       tb100-mdscr-manage-tsin;
+               };
+               tb10x_wfb: tb10x-wfb@ff319000 {
+                       compatible = "abilis,tb100-wfb";
+                       reg = <0xff319000 0x1000>;
+                       interrupt-parent = <&tb10x_ictl>;
+                       interrupts = <16 1>;
+               };
+       };
+};
diff --git a/arch/arc/boot/dts/nsimosci.dts b/arch/arc/boot/dts/nsimosci.dts
new file mode 100644 (file)
index 0000000..ea16d78
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/include/ "skeleton.dtsi"
+
+/ {
+       compatible = "snps,nsimosci";
+       clock-frequency = <80000000>;   /* 80 MHZ */
+       #address-cells = <1>;
+       #size-cells = <1>;
+       interrupt-parent = <&intc>;
+
+       chosen {
+               bootargs = "console=tty0 consoleblank=0";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>;  /* 256M */
+       };
+
+       fpga {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               /* child and parent address space 1:1 mapped */
+               ranges;
+
+               intc: interrupt-controller {
+                       compatible = "snps,arc700-intc";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               uart0: serial@c0000000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0xc0000000 0x2000>;
+                       interrupts = <11>;
+                       #clock-frequency = <80000000>;
+                       clock-frequency = <3686400>;
+                       baud = <115200>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "okay";
+               };
+
+               pgu0: pgu@c9000000 {
+                       compatible = "snps,arcpgufb";
+                       reg = <0xc9000000 0x400>;
+               };
+
+               ps2: ps2@c9001000 {
+                       compatible = "snps,arc_ps2";
+                       reg = <0xc9000400 0x14>;
+                       interrupts = <13>;
+                       interrupt-names = "arc_ps2_irq";
+               };
+
+               eth0: ethernet@c0003000 {
+                       compatible = "snps,oscilan";
+                       reg = <0xc0003000 0x44>;
+                       interrupts = <7>, <8>;
+                       interrupt-names = "rx", "tx";
+               };
+       };
+};
index b869806..95350be 100644 (file)
@@ -9,7 +9,7 @@ CONFIG_NAMESPACES=y
 # CONFIG_UTS_NS is not set
 # CONFIG_PID_NS is not set
 CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE="../arc_initramfs"
+CONFIG_INITRAMFS_SOURCE="../arc_initramfs/"
 CONFIG_KALLSYMS_ALL=y
 CONFIG_EMBEDDED=y
 # CONFIG_SLUB_DEBUG is not set
@@ -24,6 +24,7 @@ CONFIG_ARC_PLAT_FPGA_LEGACY=y
 CONFIG_ARC_BOARD_ML509=y
 # CONFIG_ARC_HAS_RTSC is not set
 CONFIG_ARC_BUILTIN_DTB_NAME="angel4"
+CONFIG_PREEMPT=y
 # CONFIG_COMPACTION is not set
 # CONFIG_CROSS_MEMORY_ATTACH is not set
 CONFIG_NET=y
diff --git a/arch/arc/configs/nsimosci_defconfig b/arch/arc/configs/nsimosci_defconfig
new file mode 100644 (file)
index 0000000..446c96c
--- /dev/null
@@ -0,0 +1,75 @@
+CONFIG_CROSS_COMPILE="arc-elf32-"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_DEFAULT_HOSTNAME="ARCLinux"
+# CONFIG_SWAP is not set
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_NAMESPACES=y
+# CONFIG_UTS_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE="../arc_initramfs"
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_KPROBES=y
+CONFIG_MODULES=y
+# CONFIG_LBDAF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_ARC_PLAT_FPGA_LEGACY=y
+CONFIG_ARC_BOARD_ML509=y
+# CONFIG_ARC_IDE is not set
+# CONFIG_ARCTANGENT_EMAC is not set
+# CONFIG_ARC_HAS_RTSC is not set
+CONFIG_ARC_BUILTIN_DTB_NAME="nsimosci"
+# CONFIG_COMPACTION is not set
+# CONFIG_CROSS_MEMORY_ATTACH is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=y
+CONFIG_NET_KEY=y
+CONFIG_INET=y
+# CONFIG_IPV6 is not set
+# CONFIG_STANDALONE is not set
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+# CONFIG_BLK_DEV is not set
+CONFIG_NETDEVICES=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+# CONFIG_MOUSE_PS2_ALPS is not set
+# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
+# CONFIG_MOUSE_PS2_SYNAPTICS is not set
+# CONFIG_MOUSE_PS2_TRACKPOINT is not set
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+# CONFIG_SERIO_I8042 is not set
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_ARC_PS2=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_ARC=y
+CONFIG_SERIAL_ARC_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_HWMON is not set
+CONFIG_FB=y
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+# CONFIG_HID is not set
+# CONFIG_USB_SUPPORT is not set
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_TMPFS=y
+# CONFIG_MISC_FILESYSTEMS is not set
+CONFIG_NFS_FS=y
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_XZ_DEC=y
diff --git a/arch/arc/configs/tb10x_defconfig b/arch/arc/configs/tb10x_defconfig
new file mode 100644 (file)
index 0000000..4fa5cd9
--- /dev/null
@@ -0,0 +1,117 @@
+CONFIG_CROSS_COMPILE="arc-elf32-"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_DEFAULT_HOSTNAME="tb10x"
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE="../tb10x-rootfs.cpio"
+CONFIG_INITRAMFS_ROOT_UID=2100
+CONFIG_INITRAMFS_ROOT_GID=501
+# CONFIG_RD_GZIP is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_AIO is not set
+CONFIG_EMBEDDED=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_SLAB=y
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_BLOCK is not set
+CONFIG_ARC_PLAT_TB10X=y
+CONFIG_ARC_CACHE_LINE_SHIFT=5
+# CONFIG_ARC_HAS_RTSC is not set
+CONFIG_ARC_STACK_NONEXEC=y
+CONFIG_HZ=250
+CONFIG_ARC_BUILTIN_DTB_NAME="abilis_tb100_dvk"
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_COMPACTION is not set
+# CONFIG_CROSS_MEMORY_ATTACH is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_PROC_DEVICETREE=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_STMMAC_ETH=y
+CONFIG_STMMAC_DEBUG_FS=y
+CONFIG_STMMAC_DA=y
+CONFIG_STMMAC_CHAINED=y
+# CONFIG_NET_VENDOR_WIZNET is not set
+# CONFIG_WLAN is not set
+# CONFIG_INPUT is not set
+# CONFIG_SERIO is not set
+# CONFIG_VT is not set
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=1
+CONFIG_SERIAL_8250_RUNTIME_UARTS=1
+CONFIG_SERIAL_8250_DW=y
+# CONFIG_HW_RANDOM is not set
+CONFIG_I2C=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_GPIO_SYSFS=y
+# CONFIG_HWMON is not set
+# CONFIG_USB_SUPPORT is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_LEDS_TRIGGER_TRANSIENT=y
+CONFIG_DMADEVICES=y
+CONFIG_DW_DMAC=y
+CONFIG_NET_DMA=y
+CONFIG_ASYNC_TX_DMA=y
+# CONFIG_IOMMU_SUPPORT is not set
+# CONFIG_DNOTIFY is not set
+CONFIG_PROC_KCORE=y
+CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
+# CONFIG_MISC_FILESYSTEMS is not set
+# CONFIG_NETWORK_FILESYSTEMS is not set
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+CONFIG_HEADERS_CHECK=y
+CONFIG_DEBUG_SECTION_MISMATCH=y
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_DEBUG_STACKOVERFLOW=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_HW is not set
index 48af742..d8dd660 100644 (file)
@@ -32,7 +32,6 @@ generic-y += resource.h
 generic-y += scatterlist.h
 generic-y += sembuf.h
 generic-y += shmbuf.h
-generic-y += shmparam.h
 generic-y += siginfo.h
 generic-y += socket.h
 generic-y += sockios.h
index 6632273..d5555fe 100644 (file)
@@ -55,9 +55,6 @@
        : "r"(data), "r"(ptr));         \
 })
 
-/* used to give SHMLBA a value to avoid Cache Aliasing */
-extern unsigned int ARC_shmlba;
-
 #define ARCH_DMA_MINALIGN      L1_CACHE_BYTES
 
 /*
index 97ee96f..9f841af 100644 (file)
 #define _ASM_CACHEFLUSH_H
 
 #include <linux/mm.h>
+#include <asm/shmparam.h>
+
+/*
+ * Semantically we need this because icache doesn't snoop dcache/dma.
+ * However ARC Cache flush requires paddr as well as vaddr, latter not available
+ * in the flush_icache_page() API. So we no-op it but do the equivalent work
+ * in update_mmu_cache()
+ */
+#define flush_icache_page(vma, page)
 
 void flush_cache_all(void);
 
 void flush_icache_range(unsigned long start, unsigned long end);
-void flush_icache_page(struct vm_area_struct *vma, struct page *page);
-void flush_icache_range_vaddr(unsigned long paddr, unsigned long u_vaddr,
-                                    int len);
+void __sync_icache_dcache(unsigned long paddr, unsigned long vaddr, int len);
+void __inv_icache_page(unsigned long paddr, unsigned long vaddr);
+void ___flush_dcache_page(unsigned long paddr, unsigned long vaddr);
+#define __flush_dcache_page(p, v)      \
+               ___flush_dcache_page((unsigned long)p, (unsigned long)v)