1. 26 May, 2012 7 commits
    • Linus Torvalds's avatar
      Merge tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 30b84288
      Linus Torvalds authored
      Pull arm-soc: soc specific changes (part 2) from Olof Johansson:
       "This adds support for the spear13xx platform, which has first been
        under review a long time ago and finally been completed after generic
        spear work has gone into the clock, dt and pinctrl branches.
      
        Also a number of updates for the samsung socs are part of this branch."
      
      Fix up trivial conflicts in drivers/gpio/gpio-samsung.c that look much
      worse than they are: the exonys5 init code was refactored in commit
      fd454997 ("gpio: samsung: refactor gpiolib init for exynos4/5"), and
      then commit f10590c9 ("ARM: EXYNOS: add GPC4 bank instance") added a
      new gpio chip define and did tiny updates to the init code.
      
      So the conflict diff looks like hell, but it's actually a fairly simple
      change.
      
      * tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (34 commits)
        ARM: exynos: fix building with CONFIG_OF disabled
        ARM: EXYNOS: Add AUXDATA for i2c controllers
        ARM: dts: Update device tree source files for EXYNOS5250
        ARM: EXYNOS: Add device tree support for interrupt combiner
        ARM: EXYNOS: Add irq_domain support for interrupt combiner
        ARM: EXYNOS: Remove a new bus_type instance for EXYNOS5
        ARM: EXYNOS: update irqs for EXYNOS5250 SoC
        ARM: EXYNOS: Add pre-divider and fout mux clocks for bpll and mpll
        ARM: EXYNOS: add GPC4 bank instance
        ARM: EXYNOS: Redefine IRQ_MCT_L0,1 definition
        ARM: EXYNOS: Modify the GIC physical address for static io-mapping
        ARM: EXYNOS: Add watchdog timer clock instance
        pinctrl: SPEAr1310: Fix pin numbers for clcd_high_res
        SPEAr: Update MAINTAINERS and Documentation
        SPEAr13xx: Add defconfig
        SPEAr13xx: Add compilation support
        SPEAr13xx: Add dts and dtsi files
        pinctrl: Add SPEAr13xx pinctrl drivers
        pinctrl: SPEAr: Create macro for declaring GPIO PINS
        SPEAr13xx: Add common clock framework support
        ...
      30b84288
    • Linus Torvalds's avatar
      Merge tag 'dt2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 84a442b9
      Linus Torvalds authored
      Pull arm-soc device tree conversions (part 2) from Olof Johansson:
       "These continue the device tree work from part 1, this set is for the
        tegra, mxs and imx platforms, all of which have dependencies on clock
        or pinctrl changes submitted earlier."
      
      Fix up trivial conflicts due to nearby changes in
      drivers/{gpio/gpio,i2c/busses/i2c}-mxs.c
      
      * tag 'dt2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (73 commits)
        ARM: dt: tegra: invert status=disable vs status=okay
        ARM: dt: tegra: consistent basic property ordering
        ARM: dt: tegra: sort nodes based on bus order
        ARM: dt: tegra: remove duplicate device_type property
        ARM: dt: tegra: consistenly use lower-case for hex constants
        ARM: dt: tegra: format regs properties consistently
        ARM: dt: tegra: gpio comment cleanup
        ARM: dt: tegra: remove unnecessary unit addresses
        ARM: dt: tegra: whitespace cleanup
        ARM: dt: tegra cardhu: fix typo in SDHCI node name
        ARM: dt: tegra: cardhu: register core regulator tps62361
        ARM: dt: tegra30.dtsi: Add SMMU node
        ARM: dt: tegra20.dtsi: Add GART node
        ARM: dt: tegra30.dtsi: Add Memory Controller(MC) nodes
        ARM: dt: tegra20.dtsi: Add Memory Controller(MC) nodes
        ARM: dt: tegra: Add device tree support for AHB
        ARM: dts: enable audio support for imx28-evk
        ARM: dts: enable i2c device for imx28-evk
        i2c: mxs: add device tree probe support
        ARM: dts: enable mmc for imx28-evk
        ...
      84a442b9
    • Linus Torvalds's avatar
      Merge tag 'stmp-dev' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 39b6cc66
      Linus Torvalds authored
      Pull arm-soc stmp-dev library code from Olof Johansson:
       "A number of devices are using a common register layout, this adds
        support code for it in lib/stmp_device.c so we do not need to
        duplicate it in each driver."
      
      Fix up trivial conflicts in drivers/i2c/busses/i2c-mxs.c and
      lib/Makefile
      
      * tag 'stmp-dev' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        i2c: mxs: use global reset function
        lib: add support for stmp-style devices
      39b6cc66
    • Linus Torvalds's avatar
      Merge tag 'clock' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 27953437
      Linus Torvalds authored
      Pull arm-soc clock driver changes from Olof Johansson:
       "The new clock subsystem was merged in linux-3.4 without any users,
        this now moves the first three platforms over to it: imx, mxs and
        spear.
      
        The series also contains the changes for the clock subsystem itself,
        since Mike preferred to have it together with the platforms that
        require these changes, in order to avoid interdependencies and
        conflicts."
      
      Fix up trivial conflicts in arch/arm/mach-kirkwood/common.c (code
      removed in one branch, added OF support in another) and
      drivers/dma/imx-sdma.c (independent changes next to each other).
      
      * tag 'clock' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (97 commits)
        clk: Fix CLK_SET_RATE_GATE flag validation in clk_set_rate().
        clk: Provide dummy clk_unregister()
        SPEAr: Update defconfigs
        SPEAr: Add SMI NOR partition info in dts files
        SPEAr: Switch to common clock framework
        SPEAr: Call clk_prepare() before calling clk_enable
        SPEAr: clk: Add General Purpose Timer Synthesizer clock
        SPEAr: clk: Add Fractional Synthesizer clock
        SPEAr: clk: Add Auxiliary Synthesizer clock
        SPEAr: clk: Add VCO-PLL Synthesizer clock
        SPEAr: Add DT bindings for SPEAr's timer
        ARM i.MX: remove now unused clock files
        ARM: i.MX6: implement clocks using common clock framework
        ARM i.MX35: implement clocks using common clock framework
        ARM i.MX5: implement clocks using common clock framework
        ARM: Kirkwood: Replace clock gating
        ARM: Orion: Audio: Add clk/clkdev support
        ARM: Orion: PCIE: Add support for clk
        ARM: Orion: XOR: Add support for clk
        ARM: Orion: CESA: Add support for clk
        ...
      27953437
    • Linus Torvalds's avatar
      Merge tag 'cleanup2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 2c757fd5
      Linus Torvalds authored
      Pull arm-soc cleanups (part 2) from Olof Johansson:
       "More cleanups, continuing an earlier set with omap and samsung
        specific cleanups.  These could not go into the first set because they
        have dependencies on various other series that in turn depend on the
        first cleanups."
      
      Fixed up conflicts in arch/arm/plat-omap/counter_32k.c due to commit
      bd0493ea: "move read_{boot,persistent}_clock to the architecture
      level" that changed how the persistent clocks were handled.  And trivial
      conflicts in arch/arm/mach-omap1/common.h due to just independent
      changes close to each other.
      
      * tag 'cleanup2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (35 commits)
        ARM: SAMSUNG: merge plat-s5p into plat-samsung
        ARM: SAMSUNG: move options for common s5p into plat-samsung/Kconfig
        ARM: SAMSUNG: move setup code for s5p mfc and mipiphy into plat-samsung
        ARM: SAMSUNG: move platform device for s5p uart into plat-samsung
        ARM: SAMSUNG: move hr timer for common s5p into plat-samsung
        ARM: SAMSUNG: move pm part for common s5p into plat-samsung
        ARM: SAMSUNG: move interrupt part for common s5p into plat-samsung
        ARM: SAMSUNG: move clock part for common s5p into plat-samsung
        ARM: S3C24XX: Use common macro to define resources on dev-uart.c
        ARM: S3C24XX: move common clock init into common.c
        ARM: S3C24XX: move common power-management code to mach-s3c24xx
        ARM: S3C24XX: move plat-s3c24xx/dev-uart.c into common.c
        ARM: S3C24XX: move plat-s3c24xx/cpu.c
        ARM: OMAP2+: Kconfig: convert SOC_OMAPAM33XX to SOC_AM33XX
        ARM: OMAP2+: Kconfig: convert SOC_OMAPTI81XX to SOC_TI81XX
        GPMC: add ECC control definitions
        ARM: OMAP2+: dmtimer: remove redundant sysconfig context restore
        ARM: OMAP: AM35xx: convert 3517 detection/flags to AM35xx
        ARM: OMAP: AM35xx: remove redunant cpu_is checks for AM3505
        ARM: OMAP1: Pass dma request lines in platform data to MMC driver
        ...
      2c757fd5
    • Linus Torvalds's avatar
      Merge tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · ce53044c
      Linus Torvalds authored
      Pull arm-soc driver specific updates from Olof Johansson:
       "These changes are specific to some driver that may be used by multiple
        boards or socs.  The most significant change in here is the move of
        the samsung iommu code from a platform specific in-kernel interface to
        the generic iommu subsystem."
      
      Fix up trivial conflicts in arch/arm/mach-exynos/Kconfig
      
      * tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (28 commits)
        mmc: dt: Consolidate DT bindings
        iommu/exynos: Add iommu driver for EXYNOS Platforms
        ARM: davinci: optimize the DMA ISR
        ARM: davinci: implement DEBUG_LL port choice
        ARM: tegra: Add SMMU enabler in AHB
        ARM: tegra: Add Tegra AHB driver
        Input: pxa27x_keypad add choice to set direct_key_mask
        Input: pxa27x_keypad direct key may be low active
        Input: pxa27x_keypad bug fix for direct_key_mask
        Input: pxa27x_keypad keep clock on as wakeup source
        ARM: dt: tegra: pinmux changes for USB ULPI
        ARM: tegra: add USB ULPI PHY reset GPIO to device tree
        ARM: tegra: don't hard-code USB ULPI PHY reset_gpio
        ARM: tegra: change pll_p_out4's rate to 24MHz
        ARM: tegra: fix pclk rate
        ARM: tegra: reparent sclk to pll_c_out1
        ARM: tegra: Add pllc clock init table
        ARM: dt: tegra cardhu: basic audio support
        ARM: dt: tegra30.dtsi: Add audio-related nodes
        ARM: tegra: add AUXDATA required for audio
        ...
      ce53044c
    • Linus Torvalds's avatar
      Merge tag 'defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 0877aa39
      Linus Torvalds authored
      Pull arm-soc defconfig updates from Olof Johansson:
       "For the first time, we have one branch that collects just updates to
        defconfig files, mostly for adapting to changes in other subsystems."
      
      * tag 'defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: PRIMA2: add prima2_defconfig for CSR SiRFprimaII
        ARM: tegra: update defconfig
        ARM: tegra: update defconfig
        ARM: imx_v6_v7_defconfig: Add SPI NOR support
        ARM: imx_v4_v5_defconfig: Let CONFIG_MACH_IMX27_DT be built by default
      0877aa39
  2. 25 May, 2012 33 commits
    • Linus Torvalds's avatar
      Merge tag 'x86-mce-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras · 786f02b7
      Linus Torvalds authored
      Pull x86/mce merge window patches from Tony Luck:
       "Including two that make error_context() checks less sucky"
      
      * tag 'x86-mce-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
        x86/mce: Add instruction recovery signatures to mce-severity table
        x86/mce: Fix check for processor context when machine check was taken.
        MCE: Fix vm86 handling for 32bit mce handler
        x86/mce Add validation check before GHES error is recorded
        x86/mce: Avoid reading every machine check bank register twice.
      786f02b7
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile · fa2af6e4
      Linus Torvalds authored
      Pull tile updates from Chris Metcalf:
       "These changes cover a range of new arch/tile features and
        optimizations.  They've been through LKML review and on linux-next for
        a month or so.  There's also one bug-fix that just missed 3.4, which
        I've marked for stable."
      
      Fixed up trivial conflict in arch/tile/Kconfig (new added tile Kconfig
      entries clashing with the generic timer/clockevents changes).
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
        tile: default to tilegx_defconfig for ARCH=tile
        tile: fix bug where fls(0) was not returning 0
        arch/tile: mark TILEGX as not EXPERIMENTAL
        tile/mm/fault.c: Port OOM changes to handle_page_fault
        arch/tile: add descriptive text if the kernel reports a bad trap
        arch/tile: allow querying cpu module information from the hypervisor
        arch/tile: fix hardwall for tilegx and generalize for idn and ipi
        arch/tile: support multiple huge page sizes dynamically
        mm: add new arch_make_huge_pte() method for tile support
        arch/tile: support kexec() for tilegx
        arch/tile: support <asm/cachectl.h> header for cacheflush() syscall
        arch/tile: Allow tilegx to build with either 16K or 64K page size
        arch/tile: optimize get_user/put_user and friends
        arch/tile: support building big-endian kernel
        arch/tile: allow building Linux with transparent huge pages enabled
        arch/tile: use interrupt critical sections less
      fa2af6e4
    • David Woodhouse's avatar
      intel-iommu: Move duplicate list-mangling code into unlink_domain_info() helper · 109b9b04
      David Woodhouse authored
      Now we have four copies of this code, Linus "suggested" it was about time
      we stopped copying it and turned it into a helper.
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      109b9b04
    • David Woodhouse's avatar
      intel-iommu: Add device info into list before doing context mapping · e2ad23d0
      David Woodhouse authored
      Add device info into list before doing context mapping, because device
      info will be used by iommu_enable_dev_iotlb(). Without it, ATS won't get
      enabled as it should be.
      
      ATS, while a dubious decision from a security point of view, can be very
      important for performance.
      Signed-off-by: default avatarXudong Hao <xudong.hao@intel.com>
      Signed-off-by: default avatarXiantao Zhang <xiantao.zhang@intel.com>
      Acked-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e2ad23d0
    • Chris Metcalf's avatar
      tile: default to tilegx_defconfig for ARCH=tile · 1fcb78e9
      Chris Metcalf authored
      There is no "ARCH=tile" (just like there is no "ARCH=x86") so we need
      to pick a default configuration, either tilepro or tilegx, when users
      specify ARCH=tile.  We'll use tilegx, since that's our current chip.
      Reported-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      1fcb78e9
    • Chris Metcalf's avatar
      tile: fix bug where fls(0) was not returning 0 · 9f1d62be
      Chris Metcalf authored
      This is because __builtin_clz(0) returns 64 for the "undefined" case
      of 0, since the builtin just does a right-shift 32 and "clz" instruction.
      So, use the alpha approach of casting to u32 and using __builtin_clzll().
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      9f1d62be
    • Chris Metcalf's avatar
      arch/tile: mark TILEGX as not EXPERIMENTAL · acd1a19e
      Chris Metcalf authored
      Also create a TILEPRO config setting to use for #ifdefs where it
      is cleaner to do so, and make the 64BIT setting depend directly
      on the setting of TILEGX.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      acd1a19e
    • Kautuk Consul's avatar
      tile/mm/fault.c: Port OOM changes to handle_page_fault · 4ce6bea2
      Kautuk Consul authored
      Commit d065bd81
      (mm: retry page fault when blocking on disk transfer) and
      commit 37b23e05
      (x86,mm: make pagefault killable)
      
      The above commits introduced changes into the x86 pagefault handler
      for making the page fault handler retryable as well as killable.
      
      These changes reduce the mmap_sem hold time, which is crucial
      during OOM killer invocation.
      
      Port these changes to tile.
      Signed-off-by: default avatarKautuk Consul <consul.kautuk@gmail.com>
      [cmetcalf@tilera.com: initialize "flags" after "write" updated.]
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      4ce6bea2
    • Chris Metcalf's avatar
      arch/tile: add descriptive text if the kernel reports a bad trap · c6f696f6
      Chris Metcalf authored
      If the kernel unexpectedly takes a bad trap, it's convenient to
      have it report the type of trap as part of the error.  This gives
      customers a bit more context before they call up customer support.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      c6f696f6
    • Chris Metcalf's avatar
      arch/tile: allow querying cpu module information from the hypervisor · 8703d6e0
      Chris Metcalf authored
      This just adds a few more attributes to the information Linux
      can query from the hypervisor for the /sys/hypervisor/board/ directory,
      providing part, serial#, revision#, and description for cpu modules
      (as opposed to the board itself, or any mezzanine boards).
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      8703d6e0
    • Chris Metcalf's avatar
      arch/tile: fix hardwall for tilegx and generalize for idn and ipi · b8ace083
      Chris Metcalf authored
      The hardwall drain code was not properly implemented for tilegx,
      just tilepro, so you couldn't reliably restart an application that
      made use of the udn.
      
      In addition, the code was only applicable to the udn (user dynamic
      network).  On tilegx there is a second user network that is available
      (the "idn"), and there is support for having I/O shims deliver
      user-level interrupts to applications ("ipi") which functions in a
      very similar way to the inter-core permissions used for udn/idn.
      So this change also generalizes the code from supporting just the udn
      to supports udn/idn/ipi on tilegx.
      
      By default we now use /dev/hardwall/{udn,idn,ipi} with separate
      minor numbers for the three devices.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      b8ace083
    • Chris Metcalf's avatar
      arch/tile: support multiple huge page sizes dynamically · 621b1955
      Chris Metcalf authored
      This change adds support for a new "super" bit in the PTE, using the new
      arch_make_huge_pte() method.  The Tilera hypervisor sees the bit set at a
      given level of the page table and gangs together 4, 16, or 64 consecutive
      pages from that level of the hierarchy to create a larger TLB entry.
      
      One extra "super" page size can be specified at each of the three levels
      of the page table hierarchy on tilegx, using the "hugepagesz" argument
      on the boot command line.  A new hypervisor API is added to allow Linux
      to tell the hypervisor how many PTEs to gang together at each level of
      the page table.
      
      To allow pre-allocating huge pages larger than the buddy allocator can
      handle, this change modifies the Tilera bootmem support to put all of
      memory on tilegx platforms into bootmem.
      
      As part of this change I eliminate the vestigial CONFIG_HIGHPTE support,
      which never worked anyway, and eliminate the hv_page_size() API in favor
      of the standard vma_kernel_pagesize() API.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      621b1955
    • Chris Metcalf's avatar
      mm: add new arch_make_huge_pte() method for tile support · d9ed9faa
      Chris Metcalf authored
      The tile support for multiple-size huge pages requires tagging
      the hugetlb PTE with a "super" bit for PTEs that are multiples of
      the basic size of a pagetable span.  To set that bit properly
      we need to tweak the PTe in make_huge_pte() based on the vma.
      
      This change provides the API for a subsequent tile-specific
      change to use.
      Reviewed-by: default avatarHillf Danton <dhillf@gmail.com>
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      d9ed9faa
    • Chris Metcalf's avatar
      arch/tile: support kexec() for tilegx · fc0c49f5
      Chris Metcalf authored
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      fc0c49f5
    • Chris Metcalf's avatar
      arch/tile: support <asm/cachectl.h> header for cacheflush() syscall · cd6f32aa
      Chris Metcalf authored
      We already had a syscall that did some dcache flushing, but it was
      not used in practice.  Make it MIPS compatible instead so it can
      do both the DCACHE and ICACHE actions.  We have code that wants to
      be able to use the ICACHE flush mode from userspace so this change
      enables that.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      cd6f32aa
    • Chris Metcalf's avatar
      arch/tile: Allow tilegx to build with either 16K or 64K page size · d5d14ed6
      Chris Metcalf authored
      This change introduces new flags for the hv_install_context()
      API that passes a page table pointer to the hypervisor.  Clients
      can explicitly request 4K, 16K, or 64K small pages when they
      install a new context.  In practice, the page size is fixed at
      kernel compile time and the same size is always requested every
      time a new page table is installed.
      
      The <hv/hypervisor.h> header changes so that it provides more abstract
      macros for managing "page" things like PFNs and page tables.  For
      example there is now a HV_DEFAULT_PAGE_SIZE_SMALL instead of the old
      HV_PAGE_SIZE_SMALL.  The various PFN routines have been eliminated and
      only PA- or PTFN-based ones remain (since PTFNs are always expressed
      in fixed 2KB "page" size).  The page-table management macros are
      renamed with a leading underscore and take page-size arguments with
      the presumption that clients will use those macros in some single
      place to provide the "real" macros they will use themselves.
      
      I happened to notice the old hv_set_caching() API was totally broken
      (it assumed 4KB pages) so I changed it so it would nominally work
      correctly with other page sizes.
      
      Tag modules with the page size so you can't load a module built with
      a conflicting page size.  (And add a test for SMP while we're at it.)
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      d5d14ed6
    • Chris Metcalf's avatar
      arch/tile: optimize get_user/put_user and friends · 47d632f9
      Chris Metcalf authored
      Use direct load/store for the get_user/put_user.
      
      Previously, we would call out to a helper routine that would do the
      appropriate thing and then return, handling the possible exception
      internally.  Now we inline the load or store, along with a "we succeeded"
      indication in a register; if the load or store faults, we write a
      "we failed" indication into the same register and then return to the
      following instruction.  This is more efficient and gives us more compact
      code, as well as being more in line with what other architectures do.
      
      The special futex assembly source file for TILE-Gx also disappears in
      this change; we just use the same inlining idiom there as well, putting
      the appropriate atomic operations directly into futex_atomic_op_inuser()
      (and thus into the FUTEX_WAIT function).
      
      The underlying atomic copy_from_user, copy_to_user functions were
      renamed using the (cryptic) x86 convention as copy_from_user_ll and
      copy_to_user_ll.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      47d632f9
    • Chris Metcalf's avatar
      arch/tile: support building big-endian kernel · 1efea40d
      Chris Metcalf authored
      The toolchain supports big-endian mode now, so add support for building
      the kernel to run big-endian as well.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      1efea40d
    • Chris Metcalf's avatar
      arch/tile: allow building Linux with transparent huge pages enabled · 73636b1a
      Chris Metcalf authored
      The change adds some infrastructure for managing tile pmd's more generally,
      using pte_pmd() and pmd_pte() methods to translate pmd values to and
      from ptes, since on TILEPro a pmd is really just a nested structure
      holding a pgd (aka pte).  Several existing pmd methods are moved into
      this framework, and a whole raft of additional pmd accessors are defined
      that are used by the transparent hugepage framework.
      
      The tile PTE now has a "client2" bit.  The bit is used to indicate a
      transparent huge page is in the process of being split into subpages.
      
      This change also fixes a generic bug where the return value of the
      generic pmdp_splitting_flush() was incorrect.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      73636b1a
    • Chris Metcalf's avatar
      arch/tile: use interrupt critical sections less · 51007004
      Chris Metcalf authored
      In general we want to avoid ever touching memory while within an
      interrupt critical section, since the page fault path goes through
      a different path from the hypervisor when in an interrupt critical
      section, and we carefully decided with tilegx that we didn't need
      to support this path in the kernel.  (On tilepro we did implement
      that path as part of supporting atomic instructions in software.)
      
      In practice we always need to touch the kernel stack, since that's
      where we store the interrupt state before releasing the critical
      section, but this change cleans up a few things.  The IRQ_ENABLE
      macro is split up so that when we want to enable interrupts in a
      deferred way (e.g. for cpu_idle or for interrupt return) we can
      read the per-cpu enable mask before entering the critical section.
      The cache-migration code is changed to use interrupt masking instead
      of interrupt critical sections.  And, the interrupt-entry code is
      changed so that we defer loading "tp" from per-cpu data until after
      we have released the interrupt critical section.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      51007004
    • Linus Torvalds's avatar
      Merge tag 'tag-for-linus-3.5' of git://git.linaro.org/people/sumitsemwal/linux-dma-buf · da89fb16
      Linus Torvalds authored
      Pull dma-buf updates from Sumit Semwal:
       "Here's the first signed-tag pull request for dma-buf framework.  It
        includes the following key items:
         - mmap support
         - vmap support
         - related documentation updates
      
        These are needed by various drivers to allow mmap/vmap of dma-buf
        shared buffers.  Dave Airlie has some prime patches dependent on the
        vmap pull as well."
      
      * tag 'tag-for-linus-3.5' of git://git.linaro.org/people/sumitsemwal/linux-dma-buf:
        dma-buf: add initial vmap documentation
        dma-buf: minor documentation fixes.
        dma-buf: add vmap interface
        dma-buf: mmap support
      da89fb16
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma · d5adf235
      Linus Torvalds authored
      Pull slave-dmaengine updates from Vinod Koul:
       "Nothing exciting this time, odd fixes in a bunch of drivers"
      
      * 'next' of git://git.infradead.org/users/vkoul/slave-dma:
        dmaengine: at_hdmac: take maxburst from slave configuration
        dmaengine: at_hdmac: remove ATC_DEFAULT_CTRLA constant
        dmaengine: at_hdmac: remove some at_dma_slave comments
        dma: imx-sdma: make channel0 operations atomic
        dmaengine: Fixup dmaengine_prep_slave_single() to be actually useful
        dmaengine: Use dma_sg_len(sg) instead of sg->length
        dmaengine: Use sg_dma_address instead of sg_phys
        DMA: PL330: Remove duplicate header file inclusion
        dma: imx-sdma: keep the callbacks invoked in the tasklet
        dmaengine: dw_dma: add Device Tree probing capability
        dmaengine: dw_dmac: Add clk_{un}prepare() support
        dma/amba-pl08x: add support for the Nomadik variant
        dma/amba-pl08x: check for terminal count status only
      d5adf235
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping · d484864d
      Linus Torvalds authored
      Pull CMA and ARM DMA-mapping updates from Marek Szyprowski:
       "These patches contain two major updates for DMA mapping subsystem
        (mainly for ARM architecture).  First one is Contiguous Memory
        Allocator (CMA) which makes it possible for device drivers to allocate
        big contiguous chunks of memory after the system has booted.
      
        The main difference from the similar frameworks is the fact that CMA
        allows to transparently reuse the memory region reserved for the big
        chunk allocation as a system memory, so no memory is wasted when no
        big chunk is allocated.  Once the alloc request is issued, the
        framework migrates system pages to create space for the required big
        chunk of physically contiguous memory.
      
        For more information one can refer to nice LWN articles:
      
         - 'A reworked contiguous memory allocator':
      		http://lwn.net/Articles/447405/
      
         - 'CMA and ARM':
      		http://lwn.net/Articles/450286/
      
         - 'A deep dive into CMA':
      		http://lwn.net/Articles/486301/
      
         - and the following thread with the patches and links to all previous
           versions:
      		https://lkml.org/lkml/2012/4/3/204
      
        The main client for this new framework is ARM DMA-mapping subsystem.
      
        The second part provides a complete redesign in ARM DMA-mapping
        subsystem.  The core implementation has been changed to use common
        struct dma_map_ops based infrastructure with the recent updates for
        new dma attributes merged in v3.4-rc2.  This allows to use more than
        one implementation of dma-mapping calls and change/select them on the
        struct device basis.  The first client of this new infractructure is
        dmabounce implementation which has been completely cut out of the
        core, common code.
      
        The last patch of this redesign update introduces a new, experimental
        implementation of dma-mapping calls on top of generic IOMMU framework.
        This lets ARM sub-platform to transparently use IOMMU for DMA-mapping
        calls if one provides required IOMMU hardware.
      
        For more information please refer to the following thread:
      		http://www.spinics.net/lists/arm-kernel/msg175729.html
      
        The last patch merges changes from both updates and provides a
        resolution for the conflicts which cannot be avoided when patches have
        been applied on the same files (mainly arch/arm/mm/dma-mapping.c)."
      
      Acked by Andrew Morton <akpm@linux-foundation.org>:
       "Yup, this one please.  It's had much work, plenty of review and I
        think even Russell is happy with it."
      
      * 'for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping: (28 commits)
        ARM: dma-mapping: use PMD size for section unmap
        cma: fix migration mode
        ARM: integrate CMA with DMA-mapping subsystem
        X86: integrate CMA with DMA-mapping subsystem
        drivers: add Contiguous Memory Allocator
        mm: trigger page reclaim in alloc_contig_range() to stabilise watermarks
        mm: extract reclaim code from __alloc_pages_direct_reclaim()
        mm: Serialize access to min_free_kbytes
        mm: page_isolation: MIGRATE_CMA isolation functions added
        mm: mmzone: MIGRATE_CMA migration type added
        mm: page_alloc: change fallbacks array handling
        mm: page_alloc: introduce alloc_contig_range()
        mm: compaction: export some of the functions
        mm: compaction: introduce isolate_freepages_range()
        mm: compaction: introduce map_pages()
        mm: compaction: introduce isolate_migratepages_range()
        mm: page_alloc: remove trailing whitespace
        ARM: dma-mapping: add support for IOMMU mapper
        ARM: dma-mapping: use alloc, mmap, free from dma_ops
        ARM: dma-mapping: remove redundant code and do the cleanup
        ...
      
      Conflicts:
      	arch/x86/include/asm/dma-mapping.h
      d484864d
    • Linus Torvalds's avatar
      Merge tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · be87cfb4
      Linus Torvalds authored
      Pull sound update from Takashi Iwai:
       "This is the second updates for 3.5-rc1.  It's mainly for OMAP4 HDMI
        updates and the device tree updates for OMAP, in addition to a couple
        of PCM accuray improvement and Realtek ALC269VD codec support."
      
      * tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (21 commits)
        ALSA: hda/realtek - Add new codec support for ALC269VD
        ALSA: core: group read of pointer, tstamp and jiffies
        ASoC: OMAP: HDMI: Rename sound card source file
        ASoC: OMAP: HDMI: Make sound card naming more generic
        ASoC: OMAP: HDMI: Make build config options more generic
        ASoC: OMAP: HDMI: Expand capabilities of the HDMI DAI
        ASoC: OMAP: HDMI: Improve how the display state is verified
        ASoC: OMAP: HDMI: Expand configuration of hw_params
        ASoC: OMAP: HDMI: Use the DSS audio interface
        ASoC: OMAP: HDMI: Create a structure for private data of the CPU DAI
        ASoC: OMAP: HDMI: Change error values in HDMI CPU DAI
        ASoC: OMAP: HDMI: Update the platform device names
        ASoC: omap-abe-twl6040: Introduce driver data for runtime parameters
        ASoC: omap-abe-twl6040: Move Digital Mic widget into dapm table
        ASoC: omap-abe-twl6040: Keep only one snd_soc_dai_link structure
        ASoC: omap-dmic: Add device tree bindings
        ASoC: omap-mcpdm: Add device tree bindings
        ASoC: omap-mcbsp: buffer size constraint only applies to playback stream
        ASoC: omap-mcbsp: Use the common interrupt line if supported by the SoC
        ASoC: omap-mcbsp: Remove unused FRAME dma_op_mode
        ...
      be87cfb4
    • Linus Torvalds's avatar
      Merge tag 'hda-switcheroo' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 58823de9
      Linus Torvalds authored
      Pull VGA-switcheroo audio client support for HD-audio from Takashi Iwai.
      
      This depended on the recent drm pull.
      
      * tag 'hda-switcheroo' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda - unlock on error in azx_interrupt()
        ALSA: hda - Support VGA-switcheroo
        ALSA: hda - Export snd_hda_lock_devices()
        ALSA: hda - Check the dead HDMI audio controller by vga-switcheroo
      58823de9
    • Linus Torvalds's avatar
      Merge tag 'cris-for-linus' of git://jni.nu/cris · 4b7eba49
      Linus Torvalds authored
      Pull CRIS changes from Jesper Nilsson:
       "No major changes here, but fixes some compile errors for CRIS, some
        small style issues, some documentation and as a bonus nukes a couple
        of obsolete rtc-files and related code."
      
      * tag 'cris-for-linus' of git://jni.nu/cris:
        cris: Remove old legacy "-traditional" flag from arch-v10/lib/Makefile
        CRIS: Remove legacy RTC drivers
        cris/mm/fault.c: Port OOM changes to do_page_fault
        cris:fix the wrong function declear
        CRIS: Add _sdata to vmlinux.lds.S
        cris: posix_types.h, include asm-generic/posix_types.h
        CRIS: Update documentation
        cris/arch-v32: cryptocop: Use kzalloc
        net:removed the unused variable
        cris:removed the unused variable
        CRISv32: Correct name of read_mostly section.
      4b7eba49
    • Linus Torvalds's avatar
      Merge tag 'mmc-merge-for-3.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc · 92bf3d09
      Linus Torvalds authored
      Pull MMC changes from Chris Ball
       - at91-mci: This driver will be replaced by atmel-mci in 3.7.
       - atmel-mci: Add support for old at91-mci hardware.
       - dw_mmc: Allow multiple controllers; this previously caused
         corruption.
       - imxmmc: Remove this driver, replaced by mxcmmc.
       - mmci: Add device tree support.
       - omap: Allow multiple controllers.
       - omap_hsmmc: Auto CMD12, DDR support.
       - tegra: Support SD 3.0 spec.
      
      Fix up the usual trivial conflicts in feature-removal-schedule.txt
      
      * tag 'mmc-merge-for-3.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (38 commits)
        mmc: at91-mci: this driver is now deprecated
        mmc: omap_hsmmc: pass IRQF_ONESHOT to request_threaded_irq
        mmc: block: Allow disabling 512B sector size emulation
        mmc: atmel-mci: add debug logs
        mmc: atmel-mci: add support for version lower than v2xx
        mmc: atmel-mci: change the state machine for compatibility with old IP
        mmc: atmel-mci: the r/w proof capability lack was not well managed
        mmc: dw_mmc: Fixed sdio interrupt mask bit setting bug
        mmc: omap: convert to module_platform_driver
        mmc: omap: make it behave well as a module
        mmc: omap: convert to per instance workqueue
        mmc: core: Remove dead code
        mmc: card: Avoid null pointer dereference
        mmc: core: Prevent eMMC VCC supply to be cut from late init
        mmc: dw_mmc: make multiple instances of dw_mci_card_workqueue
        mmc: queue: remove redundant memsets
        mmc: queue: rename mmc_request function
        mmc: core: skip card initialization if power class selection fails
        mmc: core: fix the signaling 1.8V for HS200
        mmc: core: fix the decision of HS200/DDR card-type
        ...
      92bf3d09
    • Jonas Bonn's avatar
      openrisc: use generic strncpy_from_user · 603d6637
      Jonas Bonn authored
      As per commits 2922585b ("lib: Sparc's strncpy_from_user is generic
      enough, move under lib/") and 92ae03f2 ("x86: merge 32/64-bit
      versions of 'strncpy_from_user()' and speed it up"), and corresponding
      discussion on linux-arch.
      Signed-off-by: default avatarJonas Bonn <jonas@southpole.se>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      603d6637
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · ece78b7d
      Linus Torvalds authored
      Pull ext2, ext3 and quota fixes from Jan Kara:
       "Interesting bits are:
         - removal of a special i_mutex locking subclass (I_MUTEX_QUOTA) since
           quota code does not need i_mutex anymore in any unusual way.
         - backport (from ext4) of a fix of a checkpointing bug (missing cache
           flush) that could lead to fs corruption on power failure
      
        The rest are just random small fixes & cleanups."
      
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        ext2: trivial fix to comment for ext2_free_blocks
        ext2: remove the redundant comment for ext2_export_ops
        ext3: return 32/64-bit dir name hash according to usage type
        quota: Get rid of nested I_MUTEX_QUOTA locking subclass
        quota: Use precomputed value of sb_dqopt in dquot_quota_sync
        ext2: Remove i_mutex use from ext2_quota_write()
        reiserfs: Remove i_mutex use from reiserfs_quota_write()
        ext4: Remove i_mutex use from ext4_quota_write()
        ext3: Remove i_mutex use from ext3_quota_write()
        quota: Fix double lock in add_dquot_ref() with CONFIG_QUOTA_DEBUG
        jbd: Write journal superblock with WRITE_FUA after checkpointing
        jbd: protect all log tail updates with j_checkpoint_mutex
        jbd: Split updating of journal superblock and marking journal empty
        ext2: do not register write_super within VFS
        ext2: Remove s_dirt handling
        ext2: write superblock only once on unmount
        ext3: update documentation with barrier=1 default
        ext3: remove max_debt in find_group_orlov()
        jbd: Refine commit writeout logic
      ece78b7d
    • Dave Airlie's avatar
      b25b086d
    • Sumit Semwal's avatar
      dma-buf: minor documentation fixes. · 12c4727e
      Sumit Semwal authored
      Some minor inline documentation fixes for gaps resulting from new patches.
      Signed-off-by: default avatarSumit Semwal <sumit.semwal@ti.com>
      Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
      12c4727e
    • Dave Airlie's avatar
      dma-buf: add vmap interface · 98f86c9e
      Dave Airlie authored
      The main requirement I have for this interface is for scanning out
      using the USB gpu devices. Since these devices have to read the
      framebuffer on updates and linearly compress it, using kmaps
      is a major overhead for every update.
      
      v2: fix warn issues pointed out by Sylwester Nawrocki.
      
      v3: fix compile !CONFIG_DMA_SHARED_BUFFER and add _GPL for now
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Reviewed-by: default avatarRob Clark <rob.clark@linaro.org>
      Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
      98f86c9e
    • Daniel Vetter's avatar
      dma-buf: mmap support · 4c78513e
      Daniel Vetter authored
      Compared to Rob Clark's RFC I've ditched the prepare/finish hooks
      and corresponding ioctls on the dma_buf file. The major reason for
      that is that many people seem to be under the impression that this is
      also for synchronization with outstanding asynchronous processsing.
      I'm pretty massively opposed to this because:
      
      - It boils down reinventing a new rather general-purpose userspace
        synchronization interface. If we look at things like futexes, this
        is hard to get right.
      - Furthermore a lot of kernel code has to interact with this
        synchronization primitive. This smells a look like the dri1 hw_lock,
        a horror show I prefer not to reinvent.
      - Even more fun is that multiple different subsystems would interact
        here, so we have plenty of opportunities to create funny deadlock
        scenarios.
      
      I think synchronization is a wholesale different problem from data
      sharing and should be tackled as an orthogonal problem.
      
      Now we could demand that prepare/finish may only ensure cache
      coherency (as Rob intended), but that runs up into the next problem:
      We not only need mmap support to facilitate sw-only processing nodes
      in a pipeline (without jumping through hoops by importing the dma_buf
      into some sw-access only importer), which allows for a nicer
      ION->dma-buf upgrade path for existing Android userspace. We also need
      mmap support for existing importing subsystems to support existing
      userspace libraries. And a loot of these subsystems are expected to
      export coherent userspace mappings.
      
      So prepare/finish can only ever be optional and the exporter /needs/
      to support coherent mappings. Given that mmap access is always
      somewhat fallback-y in nature I've decided to drop this optimization,
      instead of just making it optional. If we demonstrate a clear need for
      this, supported by benchmark results, we can always add it in again
      later as an optional extension.
      
      Other differences compared to Rob's RFC is the above mentioned support
      for mapping a dma-buf through facilities provided by the importer.
      Which results in mmap support no longer being optional.
      
      Note that this dma-buf mmap patch does _not_ support every possible
      insanity an existing subsystem could pull of with mmap: Because it
      does not allow to intercept pagefaults and shoot down ptes importing
      subsystems can't add some magic of their own at these points (e.g. to
      automatically synchronize with outstanding rendering or set up some
      special resources). I've done a cursory read through a few mmap
      implementions of various subsytems and I'm hopeful that we can avoid
      this (and the complexity it'd bring with it).
      
      Additonally I've extended the documentation a bit to explain the hows
      and whys of this mmap extension.
      
      In case we ever want to add support for explicitly cache maneged
      userspace mmap with a prepare/finish ioctl pair, we could specify that
      userspace needs to mmap a different part of the dma_buf, e.g. the
      range starting at dma_buf->size up to dma_buf->size*2. This works
      because the size of a dma_buf is invariant over it's lifetime. The
      exporter would obviously need to fall back to coherent mappings for
      both ranges if a legacy clients maps the coherent range and the
      architecture cannot suppor conflicting caching policies. Also, this
      would obviously be optional and userspace needs to be able to fall
      back to coherent mappings.
      
      v2:
      - Spelling fixes from Rob Clark.
      - Compile fix for !DMA_BUF from Rob Clark.
      - Extend commit message to explain how explicitly cache managed mmap
        support could be added later.
      - Extend the documentation with implementations notes for exporters
        that need to manually fake coherency.
      
      v3:
      - dma_buf pointer initialization goof-up noticed by Rebecca Schultz
        Zavin.
      
      Cc: Rob Clark <rob.clark@linaro.org>
      Cc: Rebecca Schultz Zavin <rebecca@android.com>
      Acked-by: default avatarRob Clark <rob.clark@linaro.org>
      Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
      4c78513e