1. 30 May, 2016 1 commit
    • David S. Miller's avatar
      sparc64: Fix return from trap window fill crashes. · 7cafc0b8
      David S. Miller authored
      We must handle data access exception as well as memory address unaligned
      exceptions from return from trap window fill faults, not just normal
      TLB misses.
      
      Otherwise we can get an OOPS that looks like this:
      
      ld-linux.so.2(36808): Kernel bad sw trap 5 [#1]
      CPU: 1 PID: 36808 Comm: ld-linux.so.2 Not tainted 4.6.0 #34
      task: fff8000303be5c60 ti: fff8000301344000 task.ti: fff8000301344000
      TSTATE: 0000004410001601 TPC: 0000000000a1a784 TNPC: 0000000000a1a788 Y: 00000002    Not tainted
      TPC: <do_sparc64_fault+0x5c4/0x700>
      g0: fff8000024fc8248 g1: 0000000000db04dc g2: 0000000000000000 g3: 0000000000000001
      g4: fff8000303be5c60 g5: fff800030e672000 g6: fff8000301344000 g7: 0000000000000001
      o0: 0000000000b95ee8 o1: 000000000000012b o2: 0000000000000000 o3: 0000000200b9b358
      o4: 0000000000000000 o5: fff8000301344040 sp: fff80003013475c1 ret_pc: 0000000000a1a77c
      RPC: <do_sparc64_fault+0x5bc/0x700>
      l0: 00000000000007ff l1: 0000000000000000 l2: 000000000000005f l3: 0000000000000000
      l4: fff8000301347e98 l5: fff8000024ff3060 l6: 0000000000000000 l7: 0000000000000000
      i0: fff8000301347f60 i1: 0000000000102400 i2: 0000000000000000 i3: 0000000000000000
      i4: 0000000000000000 i5: 0000000000000000 i6: fff80003013476a1 i7: 0000000000404d4c
      I7: <user_rtt_fill_fixup+0x6c/0x7c>
      Call Trace:
       [0000000000404d4c] user_rtt_fill_fixup+0x6c/0x7c
      
      The window trap handlers are slightly clever, the trap table entries for them are
      composed of two pieces of code.  First comes the code that actually performs
      the window fill or spill trap handling, and then there are three instructions at
      the end which are for exception processing.
      
      The userland register window fill handler is:
      
      	add	%sp, STACK_BIAS + 0x00, %g1;		\
      	ldxa	[%g1 + %g0] ASI, %l0;			\
      	mov	0x08, %g2;				\
      	mov	0x10, %g3;				\
      	ldxa	[%g1 + %g2] ASI, %l1;			\
      	mov	0x18, %g5;				\
      	ldxa	[%g1 + %g3] ASI, %l2;			\
      	ldxa	[%g1 + %g5] ASI, %l3;			\
      	add	%g1, 0x20, %g1;				\
      	ldxa	[%g1 + %g0] ASI, %l4;			\
      	ldxa	[%g1 + %g2] ASI, %l5;			\
      	ldxa	[%g1 + %g3] ASI, %l6;			\
      	ldxa	[%g1 + %g5] ASI, %l7;			\
      	add	%g1, 0x20, %g1;				\
      	ldxa	[%g1 + %g0] ASI, %i0;			\
      	ldxa	[%g1 + %g2] ASI, %i1;			\
      	ldxa	[%g1 + %g3] ASI, %i2;			\
      	ldxa	[%g1 + %g5] ASI, %i3;			\
      	add	%g1, 0x20, %g1;				\
      	ldxa	[%g1 + %g0] ASI, %i4;			\
      	ldxa	[%g1 + %g2] ASI, %i5;			\
      	ldxa	[%g1 + %g3] ASI, %i6;			\
      	ldxa	[%g1 + %g5] ASI, %i7;			\
      	restored;					\
      	retry; nop; nop; nop; nop;			\
      	b,a,pt	%xcc, fill_fixup_dax;			\
      	b,a,pt	%xcc, fill_fixup_mna;			\
      	b,a,pt	%xcc, fill_fixup;
      
      And the way this works is that if any of those memory accesses
      generate an exception, the exception handler can revector to one of
      those final three branch instructions depending upon which kind of
      exception the memory access took.  In this way, the fault handler
      doesn't have to know if it was a spill or a fill that it's handling
      the fault for.  It just always branches to the last instruction in
      the parent trap's handler.
      
      For example, for a regular fault, the code goes:
      
      winfix_trampoline:
      	rdpr	%tpc, %g3
      	or	%g3, 0x7c, %g3
      	wrpr	%g3, %tnpc
      	done
      
      All window trap handlers are 0x80 aligned, so if we "or" 0x7c into the
      trap time program counter, we'll get that final instruction in the
      trap handler.
      
      On return from trap, we have to pull the register window in but we do
      this by hand instead of just executing a "restore" instruction for
      several reasons.  The largest being that from Niagara and onward we
      simply don't have enough levels in the trap stack to fully resolve all
      possible exception cases of a window fault when we are already at
      trap level 1 (which we enter to get ready to return from the original
      trap).
      
      This is executed inline via the FILL_*_RTRAP handlers.  rtrap_64.S's
      code branches directly to these to do the window fill by hand if
      necessary.  Now if you look at them, we'll see at the end:
      
      	    ba,a,pt    %xcc, user_rtt_fill_fixup;
      	    ba,a,pt    %xcc, user_rtt_fill_fixup;
      	    ba,a,pt    %xcc, user_rtt_fill_fixup;
      
      And oops, all three cases are handled like a fault.
      
      This doesn't work because each of these trap types (data access
      exception, memory address unaligned, and faults) store their auxiliary
      info in different registers to pass on to the C handler which does the
      real work.
      
      So in the case where the stack was unaligned, the unaligned trap
      handler sets up the arg registers one way, and then we branched to
      the fault handler which expects them setup another way.
      
      So the FAULT_TYPE_* value ends up basically being garbage, and
      randomly would generate the backtrace seen above.
      Reported-by: default avatarNick Alcock <nix@esperi.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7cafc0b8
  2. 29 May, 2016 1 commit
  3. 25 May, 2016 7 commits
    • David S. Miller's avatar
      sparc64: Take ctx_alloc_lock properly in hugetlb_setup(). · 9ea46abe
      David S. Miller authored
      On cheetahplus chips we take the ctx_alloc_lock in order to
      modify the TLB lookup parameters for the indexed TLBs, which
      are stored in the context register.
      
      This is called with interrupts disabled, however ctx_alloc_lock
      is an IRQ safe lock, therefore we must take acquire/release it
      properly with spin_{lock,unlock}_irq().
      Reported-by: default avatarMeelis Roos <mroos@linux.ee>
      Tested-by: default avatarMeelis Roos <mroos@linux.ee>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9ea46abe
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-4.7-rc1' of... · ecc5fbd5
      Linus Torvalds authored
      Merge tag 'pwm/for-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm
      
      Pull pwm updates from Thierry Reding:
       "This set of changes introduces an atomic API to the PWM subsystem.
        This is influenced by the DRM atomic API that was introduced a while
        back, though it is obviously a lot simpler.  The fundamental idea
        remains the same, though: drivers provide a single callback to
        implement the atomic configuration of a PWM channel.
      
        As a side-effect the PWM subsystem gains the ability for initial state
        retrieval, so that the logical state mirrors that of the hardware.
        Many use-cases don't care about this, but for others it is essential.
      
        These new features require changes in all users, which these patches
        take care of.  The core is transitioned to use the atomic callback if
        available and provides a fallback mechanism for other drivers.
      
        Changes to transition users and drivers to the atomic API are
        postponed to v4.8"
      
      * tag 'pwm/for-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm: (30 commits)
        pwm: Add information about polarity, duty cycle and period to debugfs
        pwm: Switch to the atomic API
        pwm: Update documentation
        pwm: Add core infrastructure to allow atomic updates
        pwm: Add hardware readout infrastructure
        pwm: Move the enabled/disabled info into pwm_state
        pwm: Introduce the pwm_state concept
        pwm: Keep PWM state in sync with hardware state
        ARM: Explicitly apply PWM config extracted from pwm_args
        drm: i915: Explicitly apply PWM config extracted from pwm_args
        input: misc: pwm-beeper: Explicitly apply PWM config extracted from pwm_args
        input: misc: max8997: Explicitly apply PWM config extracted from pwm_args
        backlight: lm3630a: explicitly apply PWM config extracted from pwm_args
        backlight: lp855x: Explicitly apply PWM config extracted from pwm_args
        backlight: lp8788: Explicitly apply PWM config extracted from pwm_args
        backlight: pwm_bl: Use pwm_get_args() where appropriate
        fbdev: ssd1307fb: Use pwm_get_args() where appropriate
        regulator: pwm: Use pwm_get_args() where appropriate
        leds: pwm: Use pwm_get_args() where appropriate
        input: misc: max77693: Use pwm_get_args() where appropriate
        ...
      ecc5fbd5
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 1f93d2ab
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
      
       - add support for Fintek F81865 Super-IO chip
      
       - add support for watchdogs (RWDT and SWDT) found on RCar Gen3 based
         SoCs from Renesas
      
       - octeon: Handle the FROZEN hot plug notifier actions
      
       - f71808e_wdt fixes and cleanups
      
       - some small improvements in code and documentation
      
      * git://www.linux-watchdog.org/linux-watchdog:
        MAINTAINERS: Add file patterns for watchdog device tree bindings
        Documentation: Add ebc-c384_wdt watchdog-parameters.txt entry
        watchdog: shwdt: Use setup_timer()
        watchdog: cpwd: Use setup_timer()
        arm64: defconfig: enable Renesas Watchdog Timer
        watchdog: renesas-wdt: add driver
        watchdog: remove error message when unable to allocate watchdog device
        watchdog: f71808e_wdt: Fix WDTMOUT_STS register read
        watchdog: f71808e_wdt: Fix typo
        watchdog: f71808e_wdt: Add F81865 support
        watchdog: sp5100_tco: properly check for new register layouts
        watchdog: core: Fix circular locking dependency
        watchdog: core: fix trivial typo in a comment
        watchdog: hpwdt: Adjust documentation to match latest kernel module parameters.
        watchdog: imx2_wdt: add external reset support via dt prop
        watchdog: octeon: Handle the FROZEN hot plug notifier actions.
        watchdog: qcom: Report reboot reason
      1f93d2ab
    • Linus Torvalds's avatar
      Merge tag 'vfio-v4.7-rc1' of git://github.com/awilliam/linux-vfio · 48dd7cef
      Linus Torvalds authored
      Pull VFIO updates from Alex Williamson:
      
       - Hide INTx on certain known broken devices (Alex Williamson)
      
       - Additional backdoor reset detection (Alex Williamson)
      
       - Remove unused iommudata reference (Alexey Kardashevskiy)
      
       - Use cfg_size to avoid probing extended config space (Alexey
         Kardashevskiy)
      
      * tag 'vfio-v4.7-rc1' of git://github.com/awilliam/linux-vfio:
        vfio_pci: Test for extended capabilities if config space > 256 bytes
        vfio_iommu_spapr_tce: Remove unneeded iommu_group_get_iommudata
        vfio/pci: Add test for BAR restore
        vfio/pci: Hide broken INTx support from user
      48dd7cef
    • Linus Torvalds's avatar
      Merge tag 'drm-4.7-rc1-headers-fix' of git://people.freedesktop.org/~airlied/linux · b462b37b
      Linus Torvalds authored
      Pull header warning fix from Dave Airlie:
       "Here is the C++ guards warning fix from Arnd"
      
      [ Background: there are 'extern "C" { }' guards in include/uapi for the
        GPU headers.
      
        They should arguably be wrapped somehow, but as it is they caused
        checkpatch to warn because it would trigger on the 'extern' and think
        it's exporting a function or variable from the kernel to user space.
      
        This just fixes checkpatch.  Whether we wrap the C++ guards some way
        in the future will be an independent issue. ]
      
      * tag 'drm-4.7-rc1-headers-fix' of git://people.freedesktop.org/~airlied/linux:
        headers_check: don't warn about c++ guards
      b462b37b
    • Linus Torvalds's avatar
      Merge branch 'parisc-4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 24c82fbb
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
      
       - Add native high-resolution timing code for sched_clock() and other
         timing functions based on the processor internal cr16 cycle counters
      
       - Add syscall tracepoint support
      
       - Add regset support
      
       - Speed up get_user() and put_user() functions
      
       - Updated futex.h to match generic implementation (John David Anglin)
      
       - A few smaller ftrace build fixes
      
       - Fixed thuge-gen kernel self test to utilize architectured MAP_HUGETLB
         value
      
       - Added parisc architecture to seccomp_bpf kernel self test
      
       - Various typo fixes (Andrea Gelmini)
      
      * 'parisc-4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Whitespace cleanups in unistd.h
        parisc: Use long jump to reach ftrace_return_to_handler()
        parisc: Fix typo in fpudispatch.c
        parisc: Fix typos in eisa_eeprom.h
        parisc: Fix typo in ldcw.h
        parisc: Fix typo in pdc.h
        parisc: Update futex.h to match generic implementation
        parisc: Merge ftrace C-helper and assembler functions into .text.hot section
        selftests/thuge-gen: Use platform specific MAP_HUGETLB value
        parisc: Add native high-resolution sched_clock() implementation
        parisc: Add ARCH_TRACEHOOK and regset support
        parisc: Add 64bit get_user() and put_user() for 32bit kernel
        parisc: Simplify and speed up get_user() and put_user()
        parisc: Add syscall tracepoint support
      24c82fbb
    • Helge Deller's avatar
      parisc: Whitespace cleanups in unistd.h · 784c2213
      Helge Deller authored
      Clean up whitespaces and mark unused syscalls as such.
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      784c2213
  4. 24 May, 2016 31 commits
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 28165ec7
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "This is a first set of bug fixes on top of what was merged for 4.7.
      
        Two patches for lpc32xx address a harmless build warning that was just
        introduced, one patch for the mediatek soc driver fixes a warning for
        arm64, and the pxa changes are minor cleanups that should have been
        part of the original pull requests but that I forgot to apply to the
        cleanup-fixes branch earlier"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: lpc32xx: fix NR_IRQS confict
        ARM: lpc32xx: remove legacy irq controller driver
        soc: mtk-pmic-wrap: avoid integer overflow warning
        ARM: pxa: Remove CLK_IS_ROOT
        ARM: pxa: activate pinctrl for device-tree machines
      28165ec7
    • Linus Torvalds's avatar
      Merge tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 08344f3b
      Linus Torvalds authored
      Pull ARM SoC late DT updates from Arnd Bergmann:
       "This is a collection of a few late fixes and other misc stuff that had
        dependencies on things being merged from other trees.
      
        The Renesas R-Car power domain handling, and the Nvidia Tegra USB
        support both hand notable changes that required changing the DT
        binding in a way that only provides compatibility with old DT blobs on
        new kernels but not vice versa.  As a consequence, the DT changes are
        based on top of the driver changes and are now in this branch.
      
        For NXP i.MX and Samsung Exynos, the changes in here depend on other
        changes that got merged through the clk maintainer tree"
      
      * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (35 commits)
        ARM: dts: exynos: Add support of Bus frequency using VDD_INT for exynos5422-odroidxu3
        ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos542x SoC
        ARM: dts: exynos: Add NoC Probe dt node for Exynos542x SoC
        ARM: dts: exynos: Add support of bus frequency for exynos4412-trats/odroidu3
        ARM: dts: exynos: Expand the voltage range of buck1/3 regulator for exynos4412-odroidu3
        ARM: dts: exynos: Add support of bus frequency using VDD_INT for exynos3250-rinato
        ARM: dts: exynos: Add exynos4412-ppmu-common dtsi to delete duplicate PPMU nodes
        ARM: dts: exynos: Add bus nodes using VDD_MIF for Exynos4210
        ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos4x12
        ARM: dts: exynos: Add bus nodes using VDD_MIF for Exynos4x12
        ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos3250
        ARM: dts: exynos: Add DMC bus frequency for exynos3250-rinato/monk
        ARM: dts: exynos: Add DMC bus node for Exynos3250
        ARM: tegra: Enable XUSB on Nyan
        ARM: tegra: Enable XUSB on Jetson TK1
        ARM: tegra: Enable XUSB on Venice2
        ARM: tegra: Add Tegra124 XUSB controller
        ARM: tegra: Move Tegra124 to the new XUSB pad controller binding
        ARM: dts: r8a7794: Use SYSC "always-on" PM Domain
        ARM: dts: r8a7793: Use SYSC "always-on" PM Domain
        ...
      08344f3b
    • Linus Torvalds's avatar
      Merge tag 'asm-generic-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic · d04f90ff
      Linus Torvalds authored
      Pull asm-generic cleanup from Arnd Bergmann:
       "I have only one patch for asm-generic in this release, this one is
        from James Hogan and updates the generic system call table for
        renameat2 so we don't need to provide both renameat and renameat2 in
        newly added architectures"
      
      * tag 'asm-generic-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
        asm-generic: Drop renameat syscall from default list
      d04f90ff
    • Linus Torvalds's avatar
      Merge tag 'nfsd-4.7' of git://linux-nfs.org/~bfields/linux · 5d22c5ab
      Linus Torvalds authored
      Pull nfsd updates from Bruce Fields:
       "A very quiet cycle for nfsd, mainly just an RDMA update from Chuck
        Lever"
      
      * tag 'nfsd-4.7' of git://linux-nfs.org/~bfields/linux:
        sunrpc: fix stripping of padded MIC tokens
        svcrpc: autoload rdma module
        svcrdma: Generalize svc_rdma_xdr_decode_req()
        svcrdma: Eliminate code duplication in svc_rdma_recvfrom()
        svcrdma: Drain QP before freeing svcrdma_xprt
        svcrdma: Post Receives only for forward channel requests
        svcrdma: Remove superfluous line from rdma_read_chunks()
        svcrdma: svc_rdma_put_context() is invoked twice in Send error path
        svcrdma: Do not add XDR padding to xdr_buf page vector
        svcrdma: Support IPv6 with NFS/RDMA
        nfsd: handle seqid wraparound in nfsd4_preprocess_layout_stateid
        Remove unnecessary allocation
      5d22c5ab
    • Linus Torvalds's avatar
      Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 0e01df10
      Linus Torvalds authored
      Pull ext4 updates from Ted Ts'o:
       "Fix a number of bugs, most notably a potential stale data exposure
        after a crash and a potential BUG_ON crash if a file has the data
        journalling flag enabled while it has dirty delayed allocation blocks
        that haven't been written yet.  Also fix a potential crash in the new
        project quota code and a maliciously corrupted file system.
      
        In addition, fix some DAX-specific bugs, including when there is a
        transient ENOSPC situation and races between writes via direct I/O and
        an mmap'ed segment that could lead to lost I/O.
      
        Finally the usual set of miscellaneous cleanups"
      
      * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (23 commits)
        ext4: pre-zero allocated blocks for DAX IO
        ext4: refactor direct IO code
        ext4: fix race in transient ENOSPC detection
        ext4: handle transient ENOSPC properly for DAX
        dax: call get_blocks() with create == 1 for write faults to unwritten extents
        ext4: remove unmeetable inconsisteny check from ext4_find_extent()
        jbd2: remove excess descriptions for handle_s
        ext4: remove unnecessary bio get/put
        ext4: silence UBSAN in ext4_mb_init()
        ext4: address UBSAN warning in mb_find_order_for_block()
        ext4: fix oops on corrupted filesystem
        ext4: fix check of dqget() return value in ext4_ioctl_setproject()
        ext4: clean up error handling when orphan list is corrupted
        ext4: fix hang when processing corrupted orphaned inode list
        ext4: remove trailing \n from ext4_warning/ext4_error calls
        ext4: fix races between changing inode journal mode and ext4_writepages
        ext4: handle unwritten or delalloc buffers before enabling data journaling
        ext4: fix jbd2 handle extension in ext4_ext_truncate_extend_restart()
        ext4: do not ask jbd2 to write data for delalloc buffers
        jbd2: add support for avoiding data writes during transaction commits
        ...
      0e01df10
    • Arnd Bergmann's avatar
      ARM: lpc32xx: fix NR_IRQS confict · 09564b7d
      Arnd Bergmann authored
      With the change to sparse IRQs, the lpc32xx platform gets a warning about
      conflicting macros:
      
      In file included from arch/arm/mach-lpc32xx/irq.c:31:0:
      arch/arm/mach-lpc32xx/include/mach/irqs.h:115:0: warning: "NR_IRQS" redefined
       #define NR_IRQS    96
      arch/arm/include/asm/irq.h:9:0: note: this is the location of the previous definition
       #define NR_IRQS NR_IRQS_LEGACY
      
      One such instance was in the old irq driver that is now removed by
      the previous patch, but any other file including mach/irqs.h still
      has the issue. Since none of them use this constant, we can just
      remove the old definition.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: 8cb17b5e ("irqchip: Add LPC32xx interrupt controller driver")
      09564b7d
    • Vladimir Zapolskiy's avatar
      ARM: lpc32xx: remove legacy irq controller driver · 342f3f9b
      Vladimir Zapolskiy authored
      New NXP LPC32xx irq chip driver is used instead of a legacy one.
      
      [this also fixes a harmless build warning about the NR_IRQS redefinition]
      Signed-off-by: default avatarVladimir Zapolskiy <vz@mleia.com>
      Acked-by: default avatarSylvain Lemieux <slemieux.tyco@gmail.com>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      342f3f9b
    • Linus Torvalds's avatar
      Merge tag 'spi-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · a56f4895
      Linus Torvalds authored
      Pull spi updates from Mark Brown:
       "Another quiet release for SPI, almost entirely driver specific changes
        with the diffstat dominated by two new drivers which are about two
        thirds of it in terms of lines of code:
      
         - new drivers for PIC32 standard and SQI controllers
         - the Cadence driver has had runtime PM support added and quite a few
           fixes and cleanups
         - flash-specific accelerated path support now has a feature query
           interface
         - the pxa2xx driver has been moved to use the core DMA mapping support"
      
      * tag 'spi-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (48 commits)
        spi: pic32-sqi: Fix linker error, undefined reference to `bad_dma_ops'
        spi: dw-pci: Spelling s/paltforms/platforms/g
        spi: pic32-sqi: Remove pic32_sqi_setup and pic32_sqi_cleanup
        spi: Fix simple typo s/impelment/implement
        spi: rockchip: potential NULL dereference on error
        spi: zynqmp: disable clocks in error paths
        spi: Drop unnecessary dependencies on relaxed I/O accessors
        spi: qup: Add spi_master_put in remove function
        spi: qup: Handle clocks in pm_runtime suspend and resume
        spi: st-ssc4: Fix missing spi_master_put in spi_st_probe error paths
        spi: st-ssc4: Allow compile test build
        spi: omap2-mcspi: Use dma_request_chan() for requesting DMA channel
        spi: davinci: Use dma_request_chan() for requesting DMA channel
        spi: pic32: Fix checking return value of devm_ioremap_resource
        spi: spi-fsl-dspi: Update DT binding documentation
        spi: Drop duplicate code to set master->dev.parent
        spi: pic32: Set proper bits_per_word_mask
        spi: return error if kmap'd buffers passed to spi_map_buf()
        spi: core: add hook flash_read_supported to spi_master
        spi: pic32-sqi: silence array overflow warning
        ...
      a56f4895
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20160523' of git://git.infradead.org/linux-mtd · 8bc4d5f3
      Linus Torvalds authored
      Pull MTD updates from Brian Norris:
       "First cycle with Boris as NAND maintainer! Many (most) bullets stolen
        from him.
      
        Generic:
         - Migrated NAND LED trigger to be a generic MTD trigger
      
        NAND:
         - Introduction of the "ECC algorithm" concept, to avoid overloading
           the ECC mode field too much more
         - Replaced the nand_ecclayout infrastructure with something a little
           more flexible (finally!) and future proof
         - Rework of the OMAP GPMC and NAND drivers; the TI folks pulled some
           of this into their own tree as well
         - Prepare the sunxi NAND driver to receive DMA support
         - Handle bitflips in erased pages on GPMI revisions that do not
           support this in hardware.
      
        SPI NOR:
         - Start using the spi_flash_read() API for SPI drivers that support
           it (i.e., SPI drivers with special memory-mapped flash modes)
      
        And other small scattered improvments"
      
      * tag 'for-linus-20160523' of git://git.infradead.org/linux-mtd: (155 commits)
        mtd: spi-nor: support GigaDevice gd25lq64c
        mtd: nand_bch: fix spelling of "probably"
        mtd: brcmnand: respect ECC algorithm set by NAND subsystem
        gpmi-nand: Handle ECC Errors in erased pages
        Documentation: devicetree: deprecate "soft_bch" nand-ecc-mode value
        mtd: nand: add support for "nand-ecc-algo" DT property
        mtd: mtd: drop NAND_ECC_SOFT_BCH enum value
        mtd: drop support for NAND_ECC_SOFT_BCH as "soft_bch" mapping
        mtd: nand: read ECC algorithm from the new field
        mtd: nand: fsmc: validate ECC setup by checking algorithm directly
        mtd: nand: set ECC algorithm to Hamming on fallback
        staging: mt29f_spinand: set ECC algorithm explicitly
        CRIS v32: nand: set ECC algorithm explicitly
        mtd: nand: atmel: set ECC algorithm explicitly
        mtd: nand: davinci: set ECC algorithm explicitly
        mtd: nand: bf5xx: set ECC algorithm explicitly
        mtd: nand: omap2: Fix high memory dma prefetch transfer
        mtd: nand: omap2: Start dma request before enabling prefetch
        mtd: nandsim: add __init attribute
        mtd: nand: move of_get_nand_xxx() helpers into nand_base.c
        ...
      8bc4d5f3
    • Linus Torvalds's avatar
      Merge tag 'for-linus-4.7-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 29567292
      Linus Torvalds authored
      Pull xen bug fixes from David Vrabel.
      
      * tag 'for-linus-4.7-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen: use same main loop for counting and remapping pages
        xen/events: Don't move disabled irqs
        xen/x86: actually allocate legacy interrupts on PV guests
        Xen: don't warn about 2-byte wchar_t in efi
        xen/gntdev: reduce copy batch size to 16
        xen/x86: don't lose event interrupts
      29567292
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · ecaba718
      Linus Torvalds authored
      Pull virtio updates from Michael Tsirkin:
       "Looks like a quiet cycle for virtio.  There's a new inorder option for
        the ringtest tool, and a bugfix for balloon for ppc platforms when
        using virtio 1 mode"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        ringtest: pass buf != NULL
        virtio_balloon: fix PFN format for virtio-1
        virtio: add inorder option
      ecaba718
    • Linus Torvalds's avatar
      Merge tag 'nios2-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2 · e989cc56
      Linus Torvalds authored
      Pull nios2 update from Ley Foon Tan:
       - add order-only DTC dependency to %.dtb target
       - fix libgcc location detection
      
      * tag 'nios2-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2:
        nios2: Add order-only DTC dependency to %.dtb target
        nios2: Fix libgcc location detection
      e989cc56
    • Linus Torvalds's avatar
      Merge tag 'microblaze-4.7-rc1' of git://git.monstr.eu/linux-2.6-microblaze · 36b150bb
      Linus Torvalds authored
      Pull Microblaze updates from Michal Simek:
      
       - Wire-up new syscalls
      
       - Fix link error
      
      * tag 'microblaze-4.7-rc1' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: pci: export isa_io_base to fix link errors
        microblaze: Wire up userfaultfd, membarrier, mlock2 syscalls
      36b150bb
    • Juergen Gross's avatar
      xen: use same main loop for counting and remapping pages · dd14be92
      Juergen Gross authored
      Instead of having two functions for cycling through the E820 map in
      order to count to be remapped pages and remap them later, just use one
      function with a caller supplied sub-function called for each region to
      be processed. This eliminates the possibility of a mismatch between
      both loops which showed up in certain configurations.
      Suggested-by: default avatarEd Swierk <eswierk@skyportsystems.com>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      dd14be92
    • Ross Lagerwall's avatar
      xen/events: Don't move disabled irqs · f0f39387
      Ross Lagerwall authored
      Commit ff1e22e7 ("xen/events: Mask a moving irq") open-coded
      irq_move_irq() but left out checking if the IRQ is disabled. This broke
      resuming from suspend since it tries to move a (disabled) irq without
      holding the IRQ's desc->lock. Fix it by adding in a check for disabled
      IRQs.
      
      The resulting stacktrace was:
      kernel BUG at /build/linux-UbQGH5/linux-4.4.0/kernel/irq/migration.c:31!
      invalid opcode: 0000 [#1] SMP
      Modules linked in: xenfs xen_privcmd ...
      CPU: 0 PID: 9 Comm: migration/0 Not tainted 4.4.0-22-generic #39-Ubuntu
      Hardware name: Xen HVM domU, BIOS 4.6.1-xs125180 05/04/2016
      task: ffff88003d75ee00 ti: ffff88003d7bc000 task.ti: ffff88003d7bc000
      RIP: 0010:[<ffffffff810e26e2>]  [<ffffffff810e26e2>] irq_move_masked_irq+0xd2/0xe0
      RSP: 0018:ffff88003d7bfc50  EFLAGS: 00010046
      RAX: 0000000000000000 RBX: ffff88003d40ba00 RCX: 0000000000000001
      RDX: 0000000000000001 RSI: 0000000000000100 RDI: ffff88003d40bad8
      RBP: ffff88003d7bfc68 R08: 0000000000000000 R09: ffff88003d000000
      R10: 0000000000000000 R11: 000000000000023c R12: ffff88003d40bad0
      R13: ffffffff81f3a4a0 R14: 0000000000000010 R15: 00000000ffffffff
      FS:  0000000000000000(0000) GS:ffff88003da00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007fd4264de624 CR3: 0000000037922000 CR4: 00000000003406f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Stack:
       ffff88003d40ba38 0000000000000024 0000000000000000 ffff88003d7bfca0
       ffffffff814c8d92 00000010813ef89d 00000000805ea732 0000000000000009
       0000000000000024 ffff88003cc39b80 ffff88003d7bfce0 ffffffff814c8f66
      Call Trace:
       [<ffffffff814c8d92>] eoi_pirq+0xb2/0xf0
       [<ffffffff814c8f66>] __startup_pirq+0xe6/0x150
       [<ffffffff814ca659>] xen_irq_resume+0x319/0x360
       [<ffffffff814c7e75>] xen_suspend+0xb5/0x180
       [<ffffffff81120155>] multi_cpu_stop+0xb5/0xe0
       [<ffffffff811200a0>] ? cpu_stop_queue_work+0x80/0x80
       [<ffffffff811203d0>] cpu_stopper_thread+0xb0/0x140
       [<ffffffff810a94e6>] ? finish_task_switch+0x76/0x220
       [<ffffffff810ca731>] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
       [<ffffffff810a3935>] smpboot_thread_fn+0x105/0x160
       [<ffffffff810a3830>] ? sort_range+0x30/0x30
       [<ffffffff810a0588>] kthread+0xd8/0xf0
       [<ffffffff810a04b0>] ? kthread_create_on_node+0x1e0/0x1e0
       [<ffffffff8182568f>] ret_from_fork+0x3f/0x70
       [<ffffffff810a04b0>] ? kthread_create_on_node+0x1e0/0x1e0
      Signed-off-by: default avatarRoss Lagerwall <ross.lagerwall@citrix.com>
      Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      f0f39387
    • Stefano Stabellini's avatar
      xen/x86: actually allocate legacy interrupts on PV guests · 702f9260
      Stefano Stabellini authored
      b4ff8389 is incomplete: relies on nr_legacy_irqs() to get the number
      of legacy interrupts when actually nr_legacy_irqs() returns 0 after
      probe_8259A(). Use NR_IRQS_LEGACY instead.
      Signed-off-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      CC: stable@vger.kernel.org
      702f9260
    • Arnd Bergmann's avatar
      Xen: don't warn about 2-byte wchar_t in efi · 971a69db
      Arnd Bergmann authored
      The XEN UEFI code has become available on the ARM architecture
      recently, but now causes a link-time warning:
      
      ld: warning: drivers/xen/efi.o uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail
      
      This seems harmless, because the efi code only uses 2-byte
      characters when interacting with EFI, so we don't pass on those
      strings to elsewhere in the system, and we just need to
      silence the warning.
      
      It is not clear to me whether we actually need to build the file
      with the -fshort-wchar flag, but if we do, then we should also
      pass --no-wchar-size-warning to the linker, to avoid the warning.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Fixes: 37060935dc04 ("ARM64: XEN: Add a function to initialize Xen specific UEFI runtime services")
      971a69db
    • David Vrabel's avatar
      xen/gntdev: reduce copy batch size to 16 · 36ae220a
      David Vrabel authored
      IOCTL_GNTDEV_GRANT_COPY batches copy operations to reduce the number
      of hypercalls.  The stack is used to avoid a memory allocation in a
      hot path. However, a batch size of 24 requires more than 1024 bytes of
      stack which in some configurations causes a compiler warning.
      
          xen/gntdev.c: In function ‘gntdev_ioctl_grant_copy’:
          xen/gntdev.c:949:1: warning: the frame size of 1248 bytes is
          larger than 1024 bytes [-Wframe-larger-than=]
      
      This is a harmless warning as there is still plenty of stack spare,
      but people keep trying to "fix" it.  Reduce the batch size to 16 to
      reduce stack usage to less than 1024 bytes.  This should have minimal
      impact on performance.
      Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      36ae220a
    • Stefano Stabellini's avatar
      xen/x86: don't lose event interrupts · c06b6d70
      Stefano Stabellini authored
      On slow platforms with unreliable TSC, such as QEMU emulated machines,
      it is possible for the kernel to request the next event in the past. In
      that case, in the current implementation of xen_vcpuop_clockevent, we
      simply return -ETIME. To be precise the Xen returns -ETIME and we pass
      it on. However the result of this is a missed event, which simply causes
      the kernel to hang.
      
      Instead it is better to always ask the hypervisor for a timer event,
      even if the timeout is in the past. That way there are no lost
      interrupts and the kernel survives. To do that, remove the
      VCPU_SSHOTTMR_future flag.
      Signed-off-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Acked-by: default avatarJuergen Gross <jgross@suse.com>
      c06b6d70
    • Arnd Bergmann's avatar
      headers_check: don't warn about c++ guards · 92181d47
      Arnd Bergmann authored
      A recent addition to the DRM tree for 4.7 added 'extern "C"' guards
      for c++ to all the DRM headers, and that now causes warnings
      in 'make headers_check':
      
      usr/include/drm/amdgpu_drm.h:38: userspace cannot reference function or variable defined in the kernel
      usr/include/drm/drm.h:63: userspace cannot reference function or variable defined in the kernel
      usr/include/drm/drm.h:699: userspace cannot reference function or variable defined in the kernel
      usr/include/drm/drm_fourcc.h:30: userspace cannot reference function or variable defined in the kernel
      usr/include/drm/drm_mode.h:33: userspace cannot reference function or variable defined in the kernel
      usr/include/drm/drm_sarea.h:38: userspace cannot reference function or variable defined in the kernel
      usr/include/drm/exynos_drm.h:21: userspace cannot reference function or variable defined in the kernel
      usr/include/drm/i810_drm.h:7: userspace cannot reference function or variable defined in the kernel
      
      This changes the headers_check.pl script to not warn about this.
      I'm listing the merge commit as introducing the problem, because
      there are several patches in this branch that each do this for
      one file.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: 7c10ddf8 ("Merge branch 'drm-uapi-extern-c-fixes' of https://github.com/evelikov/linux into drm-next")
      Reviewed-by: default avatarEmil Velikov <emil.l.velikov@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      92181d47
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 84787c57
      Linus Torvalds authored
      Merge yet more updates from Andrew Morton:
      
       - Oleg's "wait/ptrace: assume __WALL if the child is traced".  It's a
         kernel-based workaround for existing userspace issues.
      
       - A few hotfixes
      
       - befs cleanups
      
       - nilfs2 updates
      
       - sys_wait() changes
      
       - kexec updates
      
       - kdump
      
       - scripts/gdb updates
      
       - the last of the MM queue
      
       - a few other misc things
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (84 commits)
        kgdb: depends on VT
        drm/amdgpu: make amdgpu_mn_get wait for mmap_sem killable
        drm/radeon: make radeon_mn_get wait for mmap_sem killable
        drm/i915: make i915_gem_mmap_ioctl wait for mmap_sem killable
        uprobes: wait for mmap_sem for write killable
        prctl: make PR_SET_THP_DISABLE wait for mmap_sem killable
        exec: make exec path waiting for mmap_sem killable
        aio: make aio_setup_ring killable
        coredump: make coredump_wait wait for mmap_sem for write killable
        vdso: make arch_setup_additional_pages wait for mmap_sem for write killable
        ipc, shm: make shmem attach/detach wait for mmap_sem killable
        mm, fork: make dup_mmap wait for mmap_sem for write killable
        mm, proc: make clear_refs killable
        mm: make vm_brk killable
        mm, elf: handle vm_brk error
        mm, aout: handle vm_brk failures
        mm: make vm_munmap killable
        mm: make vm_mmap killable
        mm: make mmap_sem for write waits killable for mm syscalls
        MAINTAINERS: add co-maintainer for scripts/gdb
        ...
      84787c57
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-4.7-rc1' of... · d62a0234
      Linus Torvalds authored
      Merge tag 'linux-kselftest-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kselftest updates from Shuah Khan:
       "This update for Kselftest adds:
      
         - a new ftrace testcase
         - fixes for ftrace and intel_pstate tests"
      
      * tag 'linux-kselftest-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        tools: testing: define the _GNU_SOURCE macro
        kselftests/ftrace: Add a test case for event pid filtering
        kselftests/ftrace: Detect tracefs mount point
      d62a0234
    • Linus Torvalds's avatar
      Merge tag 'trace-v4.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 4496a1d9
      Linus Torvalds authored
      Pull tracing fix from Steven Rostedt:
       "Reviewing the selftest I recently submitted, I realize that the second
        part of it uses my old hack to get the PID of the spawned background
        tasks, which doesn't work for all shells, instead of the common use of
        $!"
      
      * tag 'trace-v4.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        ftracetest: Use proper logic to find process PID
      4496a1d9
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile · d6542d76
      Linus Torvalds authored
      Pull arch/tile updates from Chris Metcalf:
       "This is an even quieter cycle than usual"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
        Fix typo
        Fix typo
        Fix typo
        tile: sort the "select" lines in the TILE/TILEGX configs
        tile: clarify barrier semantics of atomic_add_return
        tile/defconfigs: Remove CONFIG_IPV6_PRIVACY
      d6542d76
    • Linus Torvalds's avatar
      Merge branch 'for-4.7-dw' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · 3ec438af
      Linus Torvalds authored
      Pull libata sata_dwc_460ex updates from Tejun Heo:
       "Patches to bring sata_dwc_460ex up to snuff.
      
        It was a separate pull request because it depends on dmaengine dw
        platform changes which are now in mainline"
      
      * 'for-4.7-dw' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: (24 commits)
        ata: dwc: add DMADEVICES dependency
        powerpc/4xx: Device tree update for the 460ex DWC SATA
        ata: sata_dwc_460ex: make debug messages neat
        ata: sata_dwc_460ex: supply physical address of FIFO to DMA
        ata: sata_dwc_460ex: use devm_ioremap
        ata: sata_dwc_460ex: tidy up sata_dwc_clear_dmacr()
        ata: sata_dwc_460ex: use readl/writel_relaxed()
        ata: sata_dwc_460ex: switch to new dmaengine_terminate_* API
        ata: sata_dwc_460ex: add __iomem to register base pointer
        ata: sata_dwc_460ex: get rid of incorrect cast
        ata: sata_dwc_460ex: get rid of some pointless casts
        ata: sata_dwc_460ex: remove empty libata callback
        ata: sata_dwc_460ex: correct HOSTDEV{P}_FROM_*() macros
        ata: sata_dwc_460ex: get rid of global data
        ata: sata_dwc_460ex: add phy support
        ata: sata_dwc_460ex: use "dmas" DT property to find dma channel
        ata: sata_dwc_460ex: don't call ata_sff_qc_issue() on DMA commands
        ata: sata_dwc_460ex: skip dma setup for non-dma commands
        ata: sata_dwc_460ex: select only core part of DMA driver
        ata: sata_dwc_460ex: DMA is always a flow controller
        ...
      3ec438af
    • Linus Torvalds's avatar
      Merge branch 'for-4.7-zac' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · e4f7bdc2
      Linus Torvalds authored
      Pull libata ZAC support from Tejun Heo:
       "This contains Zone ATA Command support for Shingled Magnetic Recording
        devices.
      
        In addition to sending the new commands down to the device, as ZAC
        commands depend on getting a lot of responses from the device, piping
        up responses is beefed up too.  However, it doesn't involve changes to
        libata core mechanism or its interaction with upper layers, so I'm not
        expecting too many fallouts.
      
        Kudos to Hannes for driving SMR support"
      
      * 'for-4.7-zac' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: (28 commits)
        libata: support host-aware and host-managed ZAC devices
        libata: support device-managed ZAC devices
        libata: NCQ encapsulation for ZAC MANAGEMENT OUT
        libata: Implement ZBC OUT translation
        libata: implement ZBC IN translation
        libata: fixup ZAC device disabling
        libata-scsi: Generate sense code for disabled devices
        libata-trace: decode subcommands
        libata: Check log page directory before accessing pages
        libata: Add command definitions for NCQ Encapsulation for READ LOG DMA EXT
        libata: Separate out ata_dev_config_ncq_send_recv()
        libata/libsas: Define ATA_CMD_NCQ_NON_DATA
        libsas: enable FPDMA SEND/RECEIVE
        libata: do not attempt to retrieve sense code twice
        libata-scsi: Set information sense field for invalid parameter
        libata-scsi: set bit pointer for sense code information
        libata-scsi: Set field pointer in sense code
        scsi: add scsi_set_sense_field_pointer()
        libata: Implement control mode page to select sense format
        libata-scsi: generate correct ATA pass-through sense
        ...
      e4f7bdc2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security · 3159ee58
      Linus Torvalds authored
      Pull more security subsystem updates from James Morris:
       "Minor updates for the keys code"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
        MAINTAINERS: Update keyrings record and add asymmetric keys record
        lib: asn1_decoder - add MODULE_LICENSE("GPL")
        KEYS: The PKCS#7 test key type should use the secondary keyring
      3159ee58
    • Jiri Slaby's avatar
      kgdb: depends on VT · c5d2cac0
      Jiri Slaby authored
      With VT=n, the kernel build fails with:
      
        drivers/built-in.o: In function `kgdboc_pre_exp_handler':
        kgdboc.c:(.text+0x7b5aa): undefined reference to `fg_console'
        kgdboc.c:(.text+0x7b5ce): undefined reference to `vc_cons'
        kgdboc.c:(.text+0x7b5d5): undefined reference to `vc_cons'
      
      kgdboc.o is built when KGDB_SERIAL_CONSOLE is set.  So make
      KGDB_SERIAL_CONSOLE depend on HW_CONSOLE which includes those symbols.
      
      Link: http://lkml.kernel.org/r/1459412955-4696-1-git-send-email-jslaby@suse.czSigned-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Reported-by: default avatar"Jim Davis" <jim.epost@gmail.com>
      Acked-by: default avatarJason Wessel <jason.wessel@windriver.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c5d2cac0
    • Michal Hocko's avatar
      drm/amdgpu: make amdgpu_mn_get wait for mmap_sem killable · b5637051
      Michal Hocko authored
      amdgpu_mn_get which is called during ioct path relies on mmap_sem for
      write.  If the waiting task gets killed by the oom killer it would block
      oom_reaper from asynchronous address space reclaim and reduce the
      chances of timely OOM resolving.  Wait for the lock in the killable mode
      and return with EINTR if the task got killed while waiting.
      
      [arnd@arndb.de: use ERR_PTR() to return from amdgpu_mn_get]
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b5637051
    • Michal Hocko's avatar
      drm/radeon: make radeon_mn_get wait for mmap_sem killable · 2267c299
      Michal Hocko authored
      radeon_mn_get which is called during ioct path relies on mmap_sem for
      write.  If the waiting task gets killed by the oom killer it would block
      oom_reaper from asynchronous address space reclaim and reduce the
      chances of timely OOM resolving.  Wait for the lock in the killable mode
      and return with EINTR if the task got killed while waiting.
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: David Airlie <airlied@linux.ie>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2267c299
    • Michal Hocko's avatar
      drm/i915: make i915_gem_mmap_ioctl wait for mmap_sem killable · 80a89a5e
      Michal Hocko authored
      i915_gem_mmap_ioctl relies on mmap_sem for write.  If the waiting task
      gets killed by the oom killer it would block oom_reaper from
      asynchronous address space reclaim and reduce the chances of timely OOM
      resolving.  Wait for the lock in the killable mode and return with EINTR
      if the task got killed while waiting.
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: David Airlie <airlied@linux.ie>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      80a89a5e