1. 28 May, 2014 3 commits
    • Linus Torvalds's avatar
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · 9e3d6331
      Linus Torvalds authored
      Pull two powerpc fixes from Ben Herrenschmidt:
       "Here's a pair of powerpc fixes for 3.15 which are also going to
        stable.
      
        One's a fix for building with newer binutils (the problem currently
        only affects the BookE kernels but the affected macro might come back
        into use on BookS platforms at any time).  Unfortunately, the binutils
        maintainer did a backward incompatible change to a construct that we
        use so we have to add Makefile check.
      
        The other one is a fix for CPUs getting stuck in kexec when running
        single threaded.  Since we routinely use kexec on power (including in
        our newer bootloaders), I deemed that important enough"
      
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
        powerpc, kexec: Fix "Processor X is stuck" issue during kexec from ST mode
        powerpc: Fix 64 bit builds with binutils 2.24
      9e3d6331
    • Srivatsa S. Bhat's avatar
      powerpc, kexec: Fix "Processor X is stuck" issue during kexec from ST mode · 011e4b02
      Srivatsa S. Bhat authored
      If we try to perform a kexec when the machine is in ST (Single-Threaded) mode
      (ppc64_cpu --smt=off), the kexec operation doesn't succeed properly, and we
      get the following messages during boot:
      
      [    0.089866] POWER8 performance monitor hardware support registered
      [    0.089985] power8-pmu: PMAO restore workaround active.
      [    5.095419] Processor 1 is stuck.
      [   10.097933] Processor 2 is stuck.
      [   15.100480] Processor 3 is stuck.
      [   20.102982] Processor 4 is stuck.
      [   25.105489] Processor 5 is stuck.
      [   30.108005] Processor 6 is stuck.
      [   35.110518] Processor 7 is stuck.
      [   40.113369] Processor 9 is stuck.
      [   45.115879] Processor 10 is stuck.
      [   50.118389] Processor 11 is stuck.
      [   55.120904] Processor 12 is stuck.
      [   60.123425] Processor 13 is stuck.
      [   65.125970] Processor 14 is stuck.
      [   70.128495] Processor 15 is stuck.
      [   75.131316] Processor 17 is stuck.
      
      Note that only the sibling threads are stuck, while the primary threads (0, 8,
      16 etc) boot just fine. Looking closer at the previous step of kexec, we observe
      that kexec tries to wakeup (bring online) the sibling threads of all the cores,
      before performing kexec:
      
      [ 9464.131231] Starting new kernel
      [ 9464.148507] kexec: Waking offline cpu 1.
      [ 9464.148552] kexec: Waking offline cpu 2.
      [ 9464.148600] kexec: Waking offline cpu 3.
      [ 9464.148636] kexec: Waking offline cpu 4.
      [ 9464.148671] kexec: Waking offline cpu 5.
      [ 9464.148708] kexec: Waking offline cpu 6.
      [ 9464.148743] kexec: Waking offline cpu 7.
      [ 9464.148779] kexec: Waking offline cpu 9.
      [ 9464.148815] kexec: Waking offline cpu 10.
      [ 9464.148851] kexec: Waking offline cpu 11.
      [ 9464.148887] kexec: Waking offline cpu 12.
      [ 9464.148922] kexec: Waking offline cpu 13.
      [ 9464.148958] kexec: Waking offline cpu 14.
      [ 9464.148994] kexec: Waking offline cpu 15.
      [ 9464.149030] kexec: Waking offline cpu 17.
      
      Instrumenting this piece of code revealed that the cpu_up() operation actually
      fails with -EBUSY. Thus, only the primary threads of all the cores are online
      during kexec, and hence this is a sure-shot receipe for disaster, as explained
      in commit e8e5c215 (powerpc/kexec: Fix orphaned offline CPUs across kexec),
      as well as in the comment above wake_offline_cpus().
      
      It turns out that cpu_up() was returning -EBUSY because the variable
      'cpu_hotplug_disabled' was set to 1; and this disabling of CPU hotplug was done
      by migrate_to_reboot_cpu() inside kernel_kexec().
      
      Now, migrate_to_reboot_cpu() was originally written with the assumption that
      any further code will not need to perform CPU hotplug, since we are anyway in
      the reboot path. However, kexec is clearly not such a case, since we depend on
      onlining CPUs, atleast on powerpc.
      
      So re-enable cpu-hotplug after returning from migrate_to_reboot_cpu() in the
      kexec path, to fix this regression in kexec on powerpc.
      
      Also, wrap the cpu_up() in powerpc kexec code within a WARN_ON(), so that we
      can catch such issues more easily in the future.
      
      Fixes: c97102ba (kexec: migrate to reboot cpu)
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      011e4b02
    • Guenter Roeck's avatar
      powerpc: Fix 64 bit builds with binutils 2.24 · 7998eb3d
      Guenter Roeck authored
      With binutils 2.24, various 64 bit builds fail with relocation errors
      such as
      
      arch/powerpc/kernel/built-in.o: In function `exc_debug_crit_book3e':
      	(.text+0x165ee): relocation truncated to fit: R_PPC64_ADDR16_HI
      	against symbol `interrupt_base_book3e' defined in .text section
      	in arch/powerpc/kernel/built-in.o
      arch/powerpc/kernel/built-in.o: In function `exc_debug_crit_book3e':
      	(.text+0x16602): relocation truncated to fit: R_PPC64_ADDR16_HI
      	against symbol `interrupt_end_book3e' defined in .text section
      	in arch/powerpc/kernel/built-in.o
      
      The assembler maintainer says:
      
       I changed the ABI, something that had to be done but unfortunately
       happens to break the booke kernel code.  When building up a 64-bit
       value with lis, ori, shl, oris, ori or similar sequences, you now
       should use @high and @higha in place of @h and @ha.  @h and @ha
       (and their associated relocs R_PPC64_ADDR16_HI and R_PPC64_ADDR16_HA)
       now report overflow if the value is out of 32-bit signed range.
       ie. @h and @ha assume you're building a 32-bit value. This is needed
       to report out-of-range -mcmodel=medium toc pointer offsets in @toc@h
       and @toc@ha expressions, and for consistency I did the same for all
       other @h and @ha relocs.
      
      Replacing @h with @high in one strategic location fixes the relocation
      errors. This has to be done conditionally since the assembler either
      supports @h or @high but not both.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      7998eb3d
  2. 27 May, 2014 7 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · cd79bde2
      Linus Torvalds authored
      Pull virtio_blk fix from Jens Axboe:
       "There's a start/stop queue race in virtio_blk, which causes stalls and
        erratic behaviour for some.  I've had this queued up for 3.16 for a
        while, but I think we should push it into the current series as well.
      
        So I cherry picked the commit and added a stable marker as well, so it
        can propagate down"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        virtio_blk: fix race between start and stop queue
      cd79bde2
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · aa699a1d
      Linus Torvalds authored
      Pull two timer fixes from Thomas Gleixner:
       "Two small fixlets for ARM SoC clocksource drivers:
      
         - avoid calling functions which might sleep from interrupt [disabled]
           context in tcb_clksrc used on Atmel SoCs
      
         - use irq_force_affinity() to pin the per cpu timer interrupt on a
           not yet online cpu in the SiRFprimaII driver"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        clocksource: tcb_clksrc: Make tc_mode interrupt safe
        clocksource: marco: Fix the affinity set for local timer of CPU1
      aa699a1d
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 758b6712
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "A slightly larger set of fixes than we'd like at this point in the
        release.  Hopefully our very last batch before 3.15:
      
        OMAP:
         - Fix boot regression with CPU_IDLE enabled
         - Fixes for audio playback on OMAP5
         - Clock rate setting fix for OMAP3
         - Misc idle/PM fixes
        Exynos:
         - Removal of a couple of power domains to work around issues with
           access when they are powered down
         - Enabling missing highspeed-i2c driver to make MMC regulators work
         - Secondary CPU spin-up fix for 4212
         - Remove MDMA1 engine to avoid conflicts on secure mode platforms
         - A few other DT fixes
        Marvell:
         - PCI-e fixes for clocks and resource allocation
      
        plus a few other smaller fixes, add a MAINTAINERS entry for reset
        drivers, etc"
      
      * tag 'fixes-for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (21 commits)
        MAINTAINERS: Add reset controller framework entry
        ARM: trusted_foundations: fix compile error on non-SMP
        ARM: at91: sam9260: fix compilation issues
        ARM: mvebu: fix definitions of PCIe interfaces on Armada 38x
        ARM: imx: fix error handling in ipu device registration
        ARM: OMAP4: Fix the boot regression with CPU_IDLE enabled
        ARM: dts: Keep LDO4 always ON for exynos5250-arndale board
        ARM: dts: Fix SPI interrupt numbers for exynos5420
        ARM: dts: fix incorrect ak8975 compatible for exynos4412-trats2 board
        ARM: OMAP2+: Fix DMA hang after off-idle
        ARM: OMAP2+: nand: Fix NAND on OMAP2 and OMAP3 boards
        ARM: dts: Remove g2d_pd node for exynos5420
        ARM: dts: Remove mau_pd node for exynos5420
        ARM: exynos_defconfig: enable HS-I2C to fix for mmc partition mount
        ARM: dts: disable MDMA1 node for exynos5420
        ARM: EXYNOS: fix the secondary CPU boot of exynos4212
        ARM: omap5: hwmod_data: Correct IDLEMODE for McPDM
        ARM: mvebu: mvebu-soc-id: keep clock enabled if PCIe unit is enabled
        ARM: mvebu: mvebu-soc-id: add missing clk_put() call
        ARM: at91/dt: sam9260: correct external trigger value
        ...
      758b6712
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v3.15-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 51d56652
      Linus Torvalds authored
      Pull pinctrl fix from Linus Walleij:
       "A single last pinctrl fix for the v3.15 series: the vt8500 driver was
        failing to update the output value when the combined set direction
        output and set value was executed"
      
      * tag 'pinctrl-v3.15-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: vt8500: Ensure value reg is updated when setting direction
      51d56652
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma · c949ddf9
      Linus Torvalds authored
      Pull slave-dmaengine fixes from Vinod Koul:
       "We have three small fixes.
      
        First one from Andy reverts the devm_request irq as we need to ensure
        the tasklet is killed after irq is freed, so we need to do free irq in
        our code.  Other two from Arnd are fixing the compilation issue in
        omap and sa11x0 drivers with ARM randconfigs"
      
      * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
        dmaengine: sa11x0: remove broken #ifdef
        dmaengine: omap: hide filter_fn for built-in drivers
        dmaengine: dw: went back to plain {request,free}_irq() calls
      c949ddf9
    • Philipp Zabel's avatar
      1b0fe6be
    • Ming Lei's avatar
      virtio_blk: fix race between start and stop queue · aa0818c6
      Ming Lei authored
      When there isn't enough vring descriptor for adding to vq,
      blk-mq will be put as stopped state until some of pending
      descriptors are completed & freed.
      
      Unfortunately, the vq's interrupt may come just before
      blk-mq's BLK_MQ_S_STOPPED flag is set, so the blk-mq will
      still be kept as stopped even though lots of descriptors
      are completed and freed in the interrupt handler. The worst
      case is that all pending descriptors are freed in the
      interrupt handler, and the queue is kept as stopped forever.
      
      This patch fixes the problem by starting/stopping blk-mq
      with holding vq_lock.
      
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarMing Lei <tom.leiming@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      
      Conflicts:
      	drivers/block/virtio_blk.c
      aa0818c6
  3. 25 May, 2014 13 commits
  4. 23 May, 2014 17 commits
    • Linus Torvalds's avatar
      Merge tag 'dmaengine-fixes-3.15-rc5' of... · 03743007
      Linus Torvalds authored
      Merge tag 'dmaengine-fixes-3.15-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/dmaengine
      
      Pull dmaengine fixes from Dan Williams:
       "Two fixes for -stable:
      
         - async_mult() sometimes maps less buffers than initially requested.
            We end up freeing dmaengine_unmap_data on an invalid pool.
      
         - mv_xor: register write ordering fix"
      
      * tag 'dmaengine-fixes-3.15-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/dmaengine:
        dmaengine: fix dmaengine_unmap failure
        dma: mv_xor: Flush descriptors before activating a channel
      03743007
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 1ee1ceaf
      Linus Torvalds authored
      Pull sparc fixes from David Miller:
       "A small bunch of bug fixes, in particular:
      
         1) On older cpus we need a different chunk of virtual address space
            to map the huge page TSB.
      
         2) Missing memory barrier in Niagara2 memcpy.
      
         3) trinity showed some places where fault validation was
            unnecessarily loud on sparc64
      
         4) Some sysfs printf's need a type adjustment, from Toralf Förster"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: fix format string mismatch in arch/sparc/kernel/sysfs.c
        sparc64: Add membar to Niagara2 memcpy code.
        sparc64: Fix huge TSB mapping on pre-UltraSPARC-III cpus.
        sparc64: Don't bark so loudly about 32-bit tasks generating 64-bit fault addresses.
      1ee1ceaf
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 5fa6a683
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "It looks like a sizeble collection but this is nearly 3 weeks of bug
        fixing while you were away.
      
         1) Fix crashes over IPSEC tunnels with NAT, the latter can reroute
            the packet through a non-IPSEC protected path and the code has to
            be able to handle SKBs attached to routes lacking an attached xfrm
            state.  From Steffen Klassert.
      
         2) Fix OOPSs in ipv4 and ipv6 ipsec layers for unsupported
            sub-protocols, also from Steffen Klassert.
      
         3) Set local_df on fragmented netfilter skbs otherwise we won't be
            able to forward successfully, from Florian Westphal.
      
         4) cdc_mbim ipv6 neighbour code does __vlan_find_dev_deep without
            holding RCU lock, from Bjorn Mork.
      
         5) local_df test in ip_may_fragment is inverted, from Florian
            Westphal.
      
         6) jme driver doesn't check for DMA mapping failures, from Neil
            Horman.
      
         7) qlogic driver doesn't calculate number of TX queues properly, from
            Shahed Shaikh.
      
         8) fib_info_cnt can drift irreversibly positive if we fail to
            allocate the fi->fib_metrics array, from Sergey Popovich.
      
         9) Fix use after free in ip6_route_me_harder(), also from Sergey
            Popovich.
      
        10) When SYSCTL is disabled, we don't handle local_port_range and
            ping_group_range defaults properly at all, from Cong Wang.
      
        11) Unaccelerated VLAN tagged frames improperly handled by cdc_mbim
            driver, fix from Bjorn Mork.
      
        12) cassini driver needs nested lock annotations for TX locking, from
            Emil Goode.
      
        13) On init error ipv6 VTI driver can unregister pernet ops twice,
            oops.  Fix from Mahtias Krause.
      
        14) If macvlan device is down, don't propagate IFF_ALLMULTI changes,
            from Peter Christensen.
      
        15) Missing NULL pointer check while parsing netlink config options in
            ip6_tnl_validate().  From Susant Sahani.
      
        16) Fix handling of neighbour entries during ipv6 router reachability
            probing, from Duan Jiong.
      
        17) x86 and s390 JIT address randomization has some address
            calculation bugs leading to crashes, from Alexei Starovoitov and
            Heiko Carstens.
      
        18) Clear up those uglies with nop patching and net_get_random_once(),
            from Hannes Frederic Sowa.
      
        19) Option length miscalculated in ip6_append_data(), fix also from
            Hannes Frederic Sowa.
      
        20) A while ago we fixed a race during device unregistry when a
            namespace went down, turns out there is a second place that needs
            similar protection.  From Cong Wang.
      
        21) In the new Altera TSE driver multicast filtering isn't working,
            disable it and just use promisc mode until the cause is found.
            From Vince Bridgers.
      
        22) When we disable router enabling in ipv6 we have to flush the
            cached routes explicitly, from Duan Jiong.
      
        23) NBMA tunnels should not cache routes on the tunnel object because
            the key is variable, from Timo Teräs.
      
        24) With stacked devices GRO information in skb->cb[] can be not setup
            properly, make sure it is in all code paths.  From Eric Dumazet.
      
        25) Really fix stacked vlan locking, multiple levels of nesting with
            intervening non-vlan devices are possible.  From Vlad Yasevich.
      
        26) Fallback ipip tunnel device's mtu is not setup properly, from
            Steffen Klassert.
      
        27) The packet scheduler's tcindex filter can crash because we
            structure copy objects with list_head's inside, oops.  From Cong
            Wang.
      
        28) Fix CHECKSUM_COMPLETE handling for ipv6 GRE tunnels, from Eric
            Dumazet.
      
        29) In some configurations 'itag' in __mkroute_input() can end up
            being used uninitialized because of how fib_validate_source()
            works.  Fix it by explitly initializing itag to zero like all the
            other fib_validate_source() callers do, from Li RongQing"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits)
        batman: fix a bogus warning from batadv_is_on_batman_iface()
        ipv4: initialise the itag variable in __mkroute_input
        bonding: Send ALB learning packets using the right source
        bonding: Don't assume 802.1Q when sending alb learning packets.
        net: doc: Update references to skb->rxhash
        stmmac: Remove unbalanced clk_disable call
        ipv6: gro: fix CHECKSUM_COMPLETE support
        net_sched: fix an oops in tcindex filter
        can: peak_pci: prevent use after free at netdev removal
        ip_tunnel: Initialize the fallback device properly
        vlan: Fix build error wth vlan_get_encap_level()
        can: c_can: remove obsolete STRICT_FRAME_ORDERING Kconfig option
        MAINTAINERS: Pravin Shelar is Open vSwitch maintainer.
        bnx2x: Convert return 0 to return rc
        bonding: Fix alb mode to only use first level vlans.
        bonding: Fix stacked device detection in arp monitoring
        macvlan: Fix lockdep warnings with stacked macvlan devices
        vlan: Fix lockdep warning with stacked vlan devices.
        net: Allow for more then a single subclass for netif_addr_lock
        net: Find the nesting level of a given device by type.
        ...
      5fa6a683
    • Arnd Bergmann's avatar
      Merge tag 'samsung-fixes-2nd-tag' of... · 5644b427
      Arnd Bergmann authored
      Merge tag 'samsung-fixes-2nd-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into fixes
      
      Samsung-fixes-2 for 3.15
      - keep LD04 always on for exynos5250-arndale
      - fix spi interrupt numbers for exynos5420
      - fix ak8975 compatible for exynos4412-trats2
      
      * tag 'samsung-fixes-2nd-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
        ARM: dts: Keep LDO4 always ON for exynos5250-arndale board
        ARM: dts: Fix SPI interrupt numbers for exynos5420
        ARM: dts: fix incorrect ak8975 compatible for exynos4412-trats2 board
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      5644b427
    • Alexandre Courbot's avatar
      ARM: trusted_foundations: fix compile error on non-SMP · 3aae97c8
      Alexandre Courbot authored
      The setup_max_cpus variable is only defined if CONFIG_SMP is set. Add
      a preprocessor condition to avoid the following compilation error if
      CONFIG_SMP is not set:
      
          arch/arm/include/asm/trusted_foundations.h: In function 'register_trusted_foundations':
          arch/arm/include/asm/trusted_foundations.h:57:2: error: 'setup_max_cpus' undeclared (first use in this function)
      Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
      Reported-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      3aae97c8
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f02f79db
      Linus Torvalds authored
      Pull scheduler fixes from Ingo Molnar:
       "The biggest commit is an irqtime accounting loop latency fix, the rest
        are misc fixes all over the place: deadline scheduling, docs, numa,
        balancer and a bad to-idle latency fix"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/numa: Initialize newidle balance stats in sd_numa_init()
        sched: Fix updating rq->max_idle_balance_cost and rq->next_balance in idle_balance()
        sched: Skip double execution of pick_next_task_fair()
        sched: Use CPUPRI_NR_PRIORITIES instead of MAX_RT_PRIO in cpupri check
        sched/deadline: Fix memory leak
        sched/deadline: Fix sched_yield() behavior
        sched: Sanitize irq accounting madness
        sched/docbook: Fix 'make htmldocs' warnings caused by missing description
      f02f79db
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e6a32c3a
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
       "The biggest changes are fixes for races that kept triggering Trinity
        crashes, plus liblockdep build fixes and smaller misc fixes.
      
        The liblockdep bits in perf/urgent are a pull mistake - they should
        have been in locking/urgent - but by the time I noticed other commits
        were added and testing was done :-/ Sorry about that"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf: Fix a race between ring_buffer_detach() and ring_buffer_attach()
        perf: Prevent false warning in perf_swevent_add
        perf: Limit perf_event_attr::sample_period to 63 bits
        tools/liblockdep: Remove all build files when doing make clean
        tools/liblockdep: Build liblockdep from tools/Makefile
        perf/x86/intel: Fix Silvermont's event constraints
        perf: Fix perf_event_init_context()
        perf: Fix race in removing an event
      e6a32c3a
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 2b2d323a
      Linus Torvalds authored
      Pull drm radeon and nouveau fixes from Dave Airlie:
       "Fixes for the other big two.
      
        The radeon VCE one is large but it fixes some userspace triggerable
        issues, otherwise its blackscreens and oopses.
      
        Nouveau fixes a bleeding laptop panel issue when displayport is used
        sometimes"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/radeon/pm: don't allow debugfs/sysfs access when PX card is off (v2)
        drm/radeon: avoid segfault on device open when accel is not working.
        drm/radeon: fix typo in finding PLL params
        drm/radeon: fix register typo on si
        drm/radeon: fix buffer placement under memory pressure v2
        drm/radeon: fix page directory update size estimation
        drm/radeon: handle non-VGA class pci devices with ATRM
        drm/radeon: fix DCE83 check for mullins
        drm/radeon: check VCE relocation buffer range v3
        drm/radeon: also try GART for CPU accessed buffers
        drm/gf119-/disp: fix nasty bug which can clobber SOR0's clock setup
        drm/nvd9/therm: handle another kind of PWM fan
      2b2d323a
    • Linus Torvalds's avatar
      Merge branch 'akpm' (incoming from Andrew) · fc3ac5c7
      Linus Torvalds authored
      Merge misc fixes from Andrew Morton:
       "9 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        MAINTAINERS: add closing angle bracket to Vince Bridgers' email address
        Documentation: fix DOCBOOKS=... building
        ocfs2: fix double kmem_cache_destroy in dlm_init
        mm/memory-failure.c: fix memory leak by race between poison and unpoison
        wait: swap EXIT_ZOMBIE(Z) and EXIT_DEAD(X) chars in TASK_STATE_TO_CHAR_STR
        memcg: fix swapcache charge from kernel thread context
        mm: madvise: fix MADV_WILLNEED on shmem swapouts
        mm/filemap.c: avoid always dirtying mapping->flags on O_DIRECT
        hwpoison, hugetlb: lock_page/unlock_page does not match for handling a free hugepage
      fc3ac5c7
    • Tobias Klauser's avatar
      MAINTAINERS: add closing angle bracket to Vince Bridgers' email address · 0d9327ab
      Tobias Klauser authored
      Signed-off-by: default avatarTobias Klauser <tklauser@distanz.ch>
      Cc: Vince Bridgers <vbridgers2013@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0d9327ab
    • Johannes Berg's avatar
      Documentation: fix DOCBOOKS=... building · e60cbeed
      Johannes Berg authored
      Prior to commit 42661299 ("[media] DocBook: Move all media docbook
      stuff into its own directory") it was possible to build only a single
      (or more) book(s) by calling, for example
      
          make htmldocs DOCBOOKS=80211.xml
      
      This now fails:
      
          cp: target `.../Documentation/DocBook//media_api' is not a directory
      
      Ignore errors from that copy to make this possible again.
      
      Fixes: 42661299 ("[media] DocBook: Move all media docbook stuff into its own directory")
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
      Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e60cbeed
    • Joseph Qi's avatar
      ocfs2: fix double kmem_cache_destroy in dlm_init · 66db6cfd
      Joseph Qi authored
      In dlm_init, if create dlm_lockname_cache failed in
      dlm_init_master_caches, it will destroy dlm_lockres_cache which created
      before twice.  And this will cause system die when loading modules.
      Signed-off-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      66db6cfd
    • Naoya Horiguchi's avatar
      mm/memory-failure.c: fix memory leak by race between poison and unpoison · 3e030ecc
      Naoya Horiguchi authored
      When a memory error happens on an in-use page or (free and in-use)
      hugepage, the victim page is isolated with its refcount set to one.
      
      When you try to unpoison it later, unpoison_memory() calls put_page()
      for it twice in order to bring the page back to free page pool (buddy or
      free hugepage list).  However, if another memory error occurs on the
      page which we are unpoisoning, memory_failure() returns without
      releasing the refcount which was incremented in the same call at first,
      which results in memory leak and unconsistent num_poisoned_pages
      statistics.  This patch fixes it.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: <stable@vger.kernel.org>    [2.6.32+]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3e030ecc
    • Masatake YAMATO's avatar
      wait: swap EXIT_ZOMBIE(Z) and EXIT_DEAD(X) chars in TASK_STATE_TO_CHAR_STR · ad0f614e
      Masatake YAMATO authored
      In commit ad86622b ("wait: swap EXIT_ZOMBIE and EXIT_DEAD to hide
      EXIT_TRACE from user-space") the order of task state definitions were
      changed: EXIT_DEAD and EXIT_ZOMBIE were swapped.  Though the charterers
      for the states in TASK_STATE_TO_CHAR_STR string were not updated.  This
      patch synchronizes the string to the order of definitions.
      Signed-off-by: default avatarMasatake YAMATO <yamato@redhat.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ad0f614e
    • Michal Hocko's avatar
      memcg: fix swapcache charge from kernel thread context · 6f6acb00
      Michal Hocko authored
      Commit 284f39af ("mm: memcg: push !mm handling out to page cache
      charge function") explicitly checks for page cache charges without any
      mm context (from kernel thread context[1]).
      
      This seemed to be the only possible case where memory could be charged
      without mm context so commit 03583f1a ("memcg: remove unnecessary
      !mm check from try_get_mem_cgroup_from_mm()") removed the mm check from
      get_mem_cgroup_from_mm().  This however caused another NULL ptr
      dereference during early boot when loopback kernel thread splices to
      tmpfs as reported by Stephan Kulow:
      
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000360
        IP: get_mem_cgroup_from_mm.isra.42+0x2b/0x60
        Oops: 0000 [#1] SMP
        Modules linked in: btrfs dm_multipath dm_mod scsi_dh multipath raid10 raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor async_tx raid1 raid0 md_mod parport_pc parport nls_utf8 isofs usb_storage iscsi_ibft iscsi_boot_sysfs arc4 ecb fan thermal nfs lockd fscache nls_iso8859_1 nls_cp437 sg st hid_generic usbhid af_packet sunrpc sr_mod cdrom ata_generic uhci_hcd virtio_net virtio_blk ehci_hcd usbcore ata_piix floppy processor button usb_common virtio_pci virtio_ring virtio edd squashfs loop ppa]
        CPU: 0 PID: 97 Comm: loop1 Not tainted 3.15.0-rc5-5-default #1
        Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
        Call Trace:
          __mem_cgroup_try_charge_swapin+0x40/0xe0
          mem_cgroup_charge_file+0x8b/0xd0
          shmem_getpage_gfp+0x66b/0x7b0
          shmem_file_splice_read+0x18f/0x430
          splice_direct_to_actor+0xa2/0x1c0
          do_lo_receive+0x5a/0x60 [loop]
          loop_thread+0x298/0x720 [loop]
          kthread+0xc6/0xe0
          ret_from_fork+0x7c/0xb0
      
      Also Branimir Maksimovic reported the following oops which is tiggered
      for the swapcache charge path from the accounting code for kernel threads:
      
        CPU: 1 PID: 160 Comm: kworker/u8:5 Tainted: P           OE 3.15.0-rc5-core2-custom #159
        Hardware name: System manufacturer System Product Name/MAXIMUSV GENE, BIOS 1903 08/19/2013
        task: ffff880404e349b0 ti: ffff88040486a000 task.ti: ffff88040486a000
        RIP: get_mem_cgroup_from_mm.isra.42+0x2b/0x60
        Call Trace:
          __mem_cgroup_try_charge_swapin+0x45/0xf0
          mem_cgroup_charge_file+0x9c/0xe0
          shmem_getpage_gfp+0x62c/0x770
          shmem_write_begin+0x38/0x40
          generic_perform_write+0xc5/0x1c0
          __generic_file_aio_write+0x1d1/0x3f0
          generic_file_aio_write+0x4f/0xc0
          do_sync_write+0x5a/0x90
          do_acct_process+0x4b1/0x550
          acct_process+0x6d/0xa0
          do_exit+0x827/0xa70
          kthread+0xc3/0xf0
      
      This patch fixes the issue by reintroducing mm check into
      get_mem_cgroup_from_mm.  We could do the same trick in
      __mem_cgroup_try_charge_swapin as we do for the regular page cache path
      but it is not worth troubles.  The check is not that expensive and it is
      better to have get_mem_cgroup_from_mm more robust.
      
      [1] - http://marc.info/?l=linux-mm&m=139463617808941&w=2
      
      Fixes: 03583f1a ("memcg: remove unnecessary !mm check from try_get_mem_cgroup_from_mm()")
      Reported-and-tested-by: default avatarStephan Kulow <coolo@suse.com>
      Reported-by: default avatarBranimir Maksimovic <branimir.maksimovic@gmail.com>
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Hugh Dickins <hughd@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6f6acb00
    • Johannes Weiner's avatar
      mm: madvise: fix MADV_WILLNEED on shmem swapouts · 55231e5c
      Johannes Weiner authored
      MADV_WILLNEED currently does not read swapped out shmem pages back in.
      
      Commit 0cd6144a ("mm + fs: prepare for non-page entries in page
      cache radix trees") made find_get_page() filter exceptional radix tree
      entries but failed to convert all find_get_page() callers that WANT
      exceptional entries over to find_get_entry().  One of them is shmem swap
      readahead in madvise, which now skips over any swap-out records.
      
      Convert it to find_get_entry().
      
      Fixes: 0cd6144a ("mm + fs: prepare for non-page entries in page cache radix trees")
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Reported-by: default avatarHugh Dickins <hughd@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      55231e5c
    • Jens Axboe's avatar
      mm/filemap.c: avoid always dirtying mapping->flags on O_DIRECT · 7fcbbaf1
      Jens Axboe authored
      In some testing I ran today (some fio jobs that spread over two nodes),
      we end up spending 40% of the time in filemap_check_errors().  That
      smells fishy.  Looking further, this is basically what happens:
      
      blkdev_aio_read()
          generic_file_aio_read()
              filemap_write_and_wait_range()
                  if (!mapping->nr_pages)
                      filemap_check_errors()
      
      and filemap_check_errors() always attempts two test_and_clear_bit() on
      the mapping flags, thus dirtying it for every single invocation.  The
      patch below tests each of these bits before clearing them, avoiding this
      issue.  In my test case (4-socket box), performance went from 1.7M IOPS
      to 4.0M IOPS.
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      Acked-by: default avatarJeff Moyer <jmoyer@redhat.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7fcbbaf1