1. 19 Aug, 2015 4 commits
  2. 17 Aug, 2015 1 commit
  3. 13 Aug, 2015 3 commits
    • Maarten Lankhorst's avatar
      drm/i915: Commit planes on each crtc separately. · d2944cf2
      Maarten Lankhorst authored
      This patch is based on the upstream commit 5ac1c4bc and amended
      for v4.2 to make sure it works as intended.
      
      Repeated calls to begin_crtc_commit can cause warnings like this:
      [  169.127746] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:616
      [  169.127835] in_atomic(): 0, irqs_disabled(): 1, pid: 1947, name: kms_flip
      [  169.127840] 3 locks held by kms_flip/1947:
      [  169.127843]  #0:  (&dev->mode_config.mutex){+.+.+.}, at: [<ffffffff814774bc>] __drm_modeset_lock_all+0x9c/0x130
      [  169.127860]  #1:  (crtc_ww_class_acquire){+.+.+.}, at: [<ffffffff814774cd>] __drm_modeset_lock_all+0xad/0x130
      [  169.127870]  #2:  (crtc_ww_class_mutex){+.+.+.}, at: [<ffffffff81477178>] drm_modeset_lock+0x38/0x110
      [  169.127879] irq event stamp: 665690
      [  169.127882] hardirqs last  enabled at (665689): [<ffffffff817ffdb5>] _raw_spin_unlock_irqrestore+0x55/0x70
      [  169.127889] hardirqs last disabled at (665690): [<ffffffffc0197a23>] intel_pipe_update_start+0x113/0x5c0 [i915]
      [  169.127936] softirqs last  enabled at (665470): [<ffffffff8108a766>] __do_softirq+0x236/0x650
      [  169.127942] softirqs last disabled at (665465): [<ffffffff8108ae75>] irq_exit+0xc5/0xd0
      [  169.127951] CPU: 1 PID: 1947 Comm: kms_flip Not tainted 4.1.0-rc4-patser+ #4039
      [  169.127954] Hardware name: LENOVO 2349AV8/2349AV8, BIOS G1ETA5WW (2.65 ) 04/15/2014
      [  169.127957]  ffff8800c49036f0 ffff8800cde5fa28 ffffffff817f6907 0000000080000001
      [  169.127964]  0000000000000000 ffff8800cde5fa58 ffffffff810aebed 0000000000000046
      [  169.127970]  ffffffff81c5d518 0000000000000268 0000000000000000 ffff8800cde5fa88
      [  169.127981] Call Trace:
      [  169.127992]  [<ffffffff817f6907>] dump_stack+0x4f/0x7b
      [  169.128001]  [<ffffffff810aebed>] ___might_sleep+0x16d/0x270
      [  169.128008]  [<ffffffff810aed38>] __might_sleep+0x48/0x90
      [  169.128017]  [<ffffffff817fc359>] mutex_lock_nested+0x29/0x410
      [  169.128073]  [<ffffffffc01635f0>] ? vgpu_write64+0x220/0x220 [i915]
      [  169.128138]  [<ffffffffc017fddf>] ? ironlake_update_primary_plane+0x2ff/0x410 [i915]
      [  169.128198]  [<ffffffffc0190e75>] intel_frontbuffer_flush+0x25/0x70 [i915]
      [  169.128253]  [<ffffffffc01831ac>] intel_finish_crtc_commit+0x4c/0x180 [i915]
      [  169.128279]  [<ffffffffc00784ac>] drm_atomic_helper_commit_planes+0x12c/0x240 [drm_kms_helper]
      [  169.128338]  [<ffffffffc0184264>] __intel_set_mode+0x684/0x830 [i915]
      [  169.128378]  [<ffffffffc018a84a>] intel_crtc_set_config+0x49a/0x620 [i915]
      [  169.128385]  [<ffffffff817fdd39>] ? mutex_unlock+0x9/0x10
      [  169.128391]  [<ffffffff81467b69>] drm_mode_set_config_internal+0x69/0x120
      [  169.128398]  [<ffffffff8119b547>] ? might_fault+0x57/0xb0
      [  169.128403]  [<ffffffff8146bf93>] drm_mode_setcrtc+0x253/0x620
      [  169.128409]  [<ffffffff8145c600>] drm_ioctl+0x1a0/0x6a0
      [  169.128415]  [<ffffffff810b3b41>] ? get_parent_ip+0x11/0x50
      [  169.128424]  [<ffffffff811e9ab8>] do_vfs_ioctl+0x2f8/0x530
      [  169.128429]  [<ffffffff810d0fcd>] ? trace_hardirqs_on+0xd/0x10
      [  169.128435]  [<ffffffff812e7676>] ? selinux_file_ioctl+0x56/0x100
      [  169.128439]  [<ffffffff811e9d71>] SyS_ioctl+0x81/0xa0
      [  169.128445]  [<ffffffff81800697>] system_call_fastpath+0x12/0x6f
      
      Solve it by using the newly introduced drm_atomic_helper_commit_planes_on_crtc.
      
      The problem here was that the drm_atomic_helper_commit_planes() helper
      we were using was basically designed to do
      
          begin_crtc_commit(crtc #1)
          begin_crtc_commit(crtc #2)
          ...
          commit all planes
          finish_crtc_commit(crtc #1)
          finish_crtc_commit(crtc #2)
      
      The problem here is that since our hardware relies on vblank evasion,
      our CRTC 'begin' function waits until we're out of the danger zone in
      which register writes might wind up straddling the vblank, then disables
      interrupts; our 'finish' function re-enables interrupts after the
      registers have been written.  The expectation is that the operations between
      'begin' and 'end' must be performed without sleeping (since interrupts
      are disabled) and should happen as quickly as possible.  By clumping all
      of the 'begin' calls together, we introducing a couple problems:
       * Subsequent 'begin' invocations might sleep (which is illegal)
       * The first 'begin' ensured that we were far enough from the vblank that
         we could write our registers safely and ensure they all fell within
         the same frame.  Adding extra delay waiting for subsequent CRTC's
         wasn't accounted for and could put us back into the 'danger zone' for
         CRTC #1.
      
      This commit solves the problem by using a new helper that allows an
      order of operations like:
      
         for each crtc {
              begin_crtc_commit(crtc)  // sleep (maybe), then disable interrupts
              commit planes for this specific CRTC
              end_crtc_commit(crtc)    // reenable interrupts
         }
      
      so that sleeps will only be performed while interrupts are enabled and
      we can be sure that registers for a CRTC will be written immediately
      once we know we're in the safe zone.
      
      The crtc->config->base.crtc update may seem unrelated, but the helper
      will use it to obtain the crtc for the state. Without the update it
      will dereference NULL and crash.
      
      Changes since v1:
      - Use Matt Roper's commit message.
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      References: https://bugs.freedesktop.org/show_bug.cgi?id=90398Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      d2944cf2
    • Maarten Lankhorst's avatar
      f0fdc55d
    • Daniel Vetter's avatar
      drm/i915: Only dither on 6bpc panels · e8fa4270
      Daniel Vetter authored
      In
      
      commit d328c9d7
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Fri Apr 10 16:22:37 2015 +0200
      
          drm/i915: Select starting pipe bpp irrespective or the primary plane
      
      we started to select the pipe bpp from sink capabilities and not from
      the primary framebuffer - that one might change (and we don't want to
      incur a modeset) and sprites might contain higher bpp content too.
      
      We also selected dithering on a 8 bpc screen displaying a 24bpp rgb
      primary, because pipe_bpp is 24 for such a typical 8 bpc sink, but since
      the commit mentioned above, base_bpp is always the absolute maximum
      supported by the hardware, e.g., 36 bpp on my Ironlake chip. Iow. the
      only way to not get dithering would have been to connect a deep color 12
      bpc display, so pipe_bpp == 36 == base_bpp.
      
      Hence only enable dithering on 6bpc screens where we difinitely and
      always want it.
      
      Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
      Reported-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-and-tested-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      e8fa4270
  4. 09 Aug, 2015 5 commits
    • Linus Torvalds's avatar
      Linux 4.2-rc6 · f7644cbf
      Linus Torvalds authored
      f7644cbf
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · a230e95c
      Linus Torvalds authored
      Pull input subsystem fixes from Dmitry Torokhov:
       "Just small ALPS and Elan touchpads, and other driver fixups"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: elantech - add special check for fw_version 0x470f01 touchpad
        Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning
        Input: alps - only Dell laptops have separate button bits for v2 dualpoint sticks
        Input: axp20x-pek - add module alias
        Input: turbografx - fix potential out of bound access
      a230e95c
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 3fbdc379
      Linus Torvalds authored
      Pull MIPS fixes from Ralf Baechle:
       "Another round of MIPS fixes for 4.2.  No area does particularly stand
        out but we have a two unpleasant ones:
      
         - Kernel ptes are marked with a global bit which allows the kernel to
           share kernel TLB entries between all processes.  For this to work
           both entries of an adjacent even/odd pte pair need to have the
           global bit set.  There has been a subtle race in setting the other
           entry's global bit since ~ 2000 but it take particularly
           pathological workloads that essentially do mostly vmalloc/vfree to
           trigger this.
      
           This pull request fixes the 64-bit case but leaves the case of 32
           bit CPUs with 64 bit ptes unsolved for now.  The unfixed cases
           affect hardware that is not available in the field yet.
      
         - Instruction emulation requires loading instructions from user space
           but the current fast but simplistic approach will fail on pages
           that are PROT_EXEC but !PROT_READ.  For this reason we temporarily
           do not permit this permission and will map pages with PROT_EXEC |
           PROT_READ.
      
        The remainder of this pull request is more or less across the field
        and the short log explains them well"
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
        MIPS: Make set_pte() SMP safe.
        MIPS: Replace add and sub instructions in relocate_kernel.S with addiu
        MIPS: Flush RPS on kernel entry with EVA
        Revert "MIPS: BCM63xx: Provide a plat_post_dma_flush hook"
        MIPS: BMIPS: Delete unused Kconfig symbol
        MIPS: Export get_c0_perfcount_int()
        MIPS: show_stack: Fix stack trace with EVA
        MIPS: do_mcheck: Fix kernel code dump with EVA
        MIPS: SMP: Don't increment irq_count multiple times for call function IPIs
        MIPS: Partially disable RIXI support.
        MIPS: Handle page faults of executable but unreadable pages correctly.
        MIPS: Malta: Don't reinitialise RTC
        MIPS: unaligned: Fix build error on big endian R6 kernels
        MIPS: Fix sched_getaffinity with MT FPAFF enabled
        MIPS: Fix build with CONFIG_OF=y for non OF-enabled targets
        CPUFREQ: Loongson2: Fix broken build due to incorrect include.
      3fbdc379
    • Linus Torvalds's avatar
      Merge branch 'for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · af0b3152
      Linus Torvalds authored
      Pull btrfs fix from Chris Mason:
       "We have a btrfs quota regression fix.
      
        I merged this one on Thursday and have run it through tests against
        current master.
      
        Normally I wouldn't have sent this while you were finalizing rc6, but
        I'm feeding mosquitoes in the adirondacks next week, so I wanted to
        get this one out before leaving.  I'll leave longer tests running and
        check on things during the week, but I don't expect any problems"
      
      * 'for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        btrfs: qgroup: Fix a regression in qgroup reserved space.
      af0b3152
    • Linus Torvalds's avatar
      Merge branch 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux · bae1577e
      Linus Torvalds authored
      Pull thermal management fixes from Zhang Rui:
       "Specifics:
      
         - fix an error that "weight_attr" sysfs attribute is not removed
           while unbinding.  From: Viresh Kumar.
      
         - fix power allocator governor tracing to return the real request.
           From Javi Merino.
      
         - remove redundant owner assignment of hisi platform thermal driver.
           From Krzysztof Kozlowski.
      
         - a couple of small fixes of Exynos thermal driver.  From Krzysztof
           Kozlowski and Chanwoo Choi"
      
      * 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
        thermal: Drop owner assignment from platform_driver
        thermal: exynos: Remove unused code related to platform_data on probe()
        thermal: exynos: Add the dependency of CONFIG_THERMAL_OF instead of CONFIG_OF
        thermal: exynos: Disable the regulator on probe failure
        thermal: power_allocator: trace the real requested power
        thermal: remove dangling 'weight_attr' device file
      bae1577e
  5. 08 Aug, 2015 9 commits
    • Linus Torvalds's avatar
      Merge tag 'arc-v4.2-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc · dd2384a7
      Linus Torvalds authored
      Pull ARC fixes from Vineet Gupta:
       "Here's a late pull request for accumulated ARC fixes which came out of
        extended testing of the new ARCv2 port with LTP etc.  llock/scond
        livelock workaround has been reviewed by PeterZ.  The changes look a
        lot but I've crafted them into finer grained patches for better
        tracking later.
      
        I have some more fixes (ARC Futex backend) ready to go but those will
        have to wait for tglx to return from vacation.
      
        Summary:
         - Enable a reduced config of HS38 (w/o div-rem, ll64...)
         - Add software workaround for LLOCK/SCOND livelock
         - Fallout of a recent pt_regs update"
      
      * tag 'arc-v4.2-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
        ARCv2: spinlock/rwlock/atomics: reduce 1 instruction in exponential backoff
        ARC: Make pt_regs regs unsigned
        ARCv2: spinlock/rwlock: Reset retry delay when starting a new spin-wait cycle
        ARCv2: spinlock/rwlock/atomics: Delayed retry of failed SCOND with exponential backoff
        ARC: LLOCK/SCOND based rwlock
        ARC: LLOCK/SCOND based spin_lock
        ARC: refactor atomic inline asm operands with symbolic names
        Revert "ARCv2: STAR 9000837815 workaround hardware exclusive transactions livelock"
        ARCv2: [axs103_smp] Reduce clk for Quad FPGA configs
        ARCv2: Fix the peripheral address space detection
        ARCv2: allow selection of page size for MMUv4
        ARCv2: lib: memset: Don't assume 64-bit load/stores
        ARCv2: lib: memcpy: Missing PREFETCHW
        ARCv2: add knob for DIV_REV in Kconfig
        ARC/time: Migrate to new 'set-state' interface
      dd2384a7
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · b3b98a55
      Linus Torvalds authored
      Pull virtio fix from Michael Tsirkin:
       "A last minute fix for the new virtio input driver.  It seems pretty
         obvious, and the problem it's fixing would be quite hard to debug"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        virtio-input: reset device and detach unused during remove
      b3b98a55
    • Linus Torvalds's avatar
      Merge tag 'dm-4.2-fixes-4' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm · 39171c86
      Linus Torvalds authored
      Pull device mapper fixes from Mike Snitzer:
      
       - stable fix for a dm_merge_bvec() regression on 32 bit Fedora systems.
      
       - fix for a 4.2 DM thinp discard regression due to inability to
         properly delete a range of blocks in a data mapping btree.
      
      * tag 'dm-4.2-fixes-4' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm btree remove: fix bug in remove_one()
        dm: fix dm_merge_bvec regression on 32 bit systems
      39171c86
    • Linus Torvalds's avatar
      Merge tag 'sound-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · f0943013
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "The only bulk changes in this request is ABI updates for ASoC topology
        API.  It's a new API that was introduced in 4.2, and we'd like to
        avoid ABI change after the release, so it's taken now.  As there is no
        real in-tree user for this API, it should be fairly safe.
      
        Other than that, the usual small fixes are found in various drivers:
        ASoC cs4265, rt5645, intel-sst, firewire, oxygen and HD-audio"
      
      * tag 'sound-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ASoC: topology: Add private data type and bump ABI version to 3
        ASoC: topology: Add ops support to byte controls UAPI
        ASoC: topology: Update TLV support so we can support more TLV types
        ASoC: topology: add private data to manifest
        ASoC: topology: Add subsequence in topology
        ALSA: hda - one Dell machine needs the headphone white noise fixup
        ALSA: fireworks/firewire-lib: add support for recent firmware quirk
        Revert "ALSA: fireworks: add support for AudioFire2 quirk"
        ASoC: topology: fix typo in soc_tplg_kcontrol_bind_io()
        ALSA: HDA: Dont check return for snd_hdac_chip_readl
        ALSA: HDA: Fix stream assignment for host in decoupled mode
        ASoC: rt5645: Fix lost pin setting for DMIC1
        ALSA: oxygen: Fix logical-not-parentheses warning
        ASoC: Intel: sst_byt: fix initialize 'NULL device *' issue
        ASoC: Intel: haswell: fix initialize 'NULL device *' issue
        ASoC: cs4265: Fix setting dai format for Left/Right Justified
      f0943013
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus-v4.2-rc6' of... · ea8dc1ab
      Linus Torvalds authored
      Merge tag 'hwmon-for-linus-v4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - Export module alias information in g762 and nct7904 to support
         auto-loading.
      
       - Blacklist Dell Studio XPS 8100 in dell-smm to fix fan control
         problems.
      
      * tag 'hwmon-for-linus-v4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (g762) Export OF module alias information
        hwmon: (nct7904) Export I2C module alias information
        hwmon: (dell-smm) Blacklist Dell Studio XPS 8100
      ea8dc1ab
    • Linus Torvalds's avatar
      Merge tag 'usb-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · d5a8ab40
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are some USB and PHY fixes for 4.2-rc6 that resolve some reported
        issues.
      
        All of these have been in the linux-next tree for a while, full
        details on the patches are in the shortlog below"
      
      * tag 'usb-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        ARM: dts: dra7: Add syscon-pllreset syscon to SATA PHY
        drivers/usb: Delete XHCI command timer if necessary
        xhci: fix off by one error in TRB DMA address boundary check
        usb: udc: core: add device_del() call to error pathway
        phy: ti-pipe3: i783 workaround for SATA lockup after dpll unlock/relock
        phy-sun4i-usb: Add missing EXPORT_SYMBOL_GPL for sun4i_usb_phy_set_squelch_detect
        USB: sierra: add 1199:68AB device ID
        usb: gadget: f_printer: actually limit the number of instances
        usb: gadget: f_hid: actually limit the number of instances
        usb: gadget: f_uac2: fix calculation of uac2->p_interval
        usb: gadget: bdc: fix a driver crash on disconnect
        usb: chipidea: ehci_init_driver is intended to call one time
        USB: qcserial: Add support for Dell Wireless 5809e 4G Modem
        USB: qcserial/option: make AT URCs work for Sierra Wireless MC7305/MC7355
      d5a8ab40
    • Linus Torvalds's avatar
      Merge tag 'staging-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · 9f21a8bd
      Linus Torvalds authored
      Pull staging driver fixes from Greg KH:
       "Here are three bugfixes for some staging driver issues that have been
        reported.  All have been in the linux-next tree for a while"
      
      * tag 'staging-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        staging: lustre: Include unaligned.h instead of access_ok.h
        staging: vt6655: vnt_bss_info_changed check conf->beacon_rate is not NULL
        staging: comedi: das1800: add missing break in switch
      9f21a8bd
    • Linus Torvalds's avatar
      Merge tag 'char-misc-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 83c2768b
      Linus Torvalds authored
      Pull char/misc fixes from Greg KH:
       "Here are some extcon fixes for 4.2-rc6 that resolve some reported
        problems.
      
        All have been in linux-next for a while"
      
      * tag 'char-misc-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        extcon: Fix extcon_cable_get_state() from getting old state after notification
        extcon: Fix hang and extcon_get/set_cable_state().
        extcon: palmas: Fix NULL pointer error
      83c2768b
    • Linus Torvalds's avatar
      Merge tag 'drm-intel-fixes-2015-08-07' of git://anongit.freedesktop.org/drm-intel · 981dae74
      Linus Torvalds authored
      Pull drm fixes from Daniel Vetter:
       "One i915 regression fix and a drm core one since Dave's not around,
        both introduced in 4.2 so not cc: stable.
      
        The fix for the warning Ted reported isn't in here yet since he didn't
        yet supply a tested-by and I can't repro this one myself (it's in
        fixup code that needs firmware doing something i915 wouldn't do)"
      
      * tag 'drm-intel-fixes-2015-08-07' of git://anongit.freedesktop.org/drm-intel:
        drm/vblank: Use u32 consistently for vblank counters
        drm/i915: Allow parsing of variable size child device entries from VBT
      981dae74
  6. 07 Aug, 2015 18 commits
    • Duson Lin's avatar
      Input: elantech - add special check for fw_version 0x470f01 touchpad · 6b30c73e
      Duson Lin authored
      It is no need to check the packet[0] for sanity check when doing
      elantech_packet_check_v4() function for fw_version = 0x470f01 touchpad.
      
      Signed-off by: Duson Lin <dusonlin@emc.com.tw>
      Reviewed-by: default avatarUlrik De Bie <ulrik.debie-os@e2big.org>
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      6b30c73e
    • Joe Thornber's avatar
      dm btree remove: fix bug in remove_one() · aa0cd28d
      Joe Thornber authored
      remove_one() was not incrementing the key for the beginning of the
      range, so not all entries were being removed.  This resulted in
      discards that were not unmapping all blocks.
      
      Fixes: 4ec331c3 ("dm btree: add dm_btree_remove_leaves()")
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      aa0cd28d
    • Daniel Vetter's avatar
      drm/vblank: Use u32 consistently for vblank counters · 209e4dbc
      Daniel Vetter authored
      In
      
      commit 99264a61
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Wed Apr 15 19:34:43 2015 +0200
      
          drm/vblank: Fixup and document timestamp update/read barriers
      
      I've switched vblank->count from atomic_t to unsigned long and
      accidentally created an integer comparison bug in
      drm_vblank_count_and_time since vblanke->count might overflow the u32
      local copy and hence the retry loop never succeed.
      
      Fix this by consistently using u32.
      
      Cc: Michel Dänzer <michel@daenzer.net>
      Reported-by: default avatarMichel Dänzer <michel@daenzer.net>
      Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      209e4dbc
    • Takashi Iwai's avatar
      Merge tag 'asoc-fix-v4.2-rc5' of... · 6ac7ada2
      Takashi Iwai authored
      Merge tag 'asoc-fix-v4.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      ASoC: Fixes for v4.2
      
      There are a couple of small driver specific fixes here but the
      overwhelming bulk of these changes are fixes to the topology ABI that
      has been newly introduced in v4.2.  Once this makes it into a release we
      will have to firm this up but for now getting enhancements in before
      they've made it into a release is the most expedient thing.
      6ac7ada2
    • Vineet Gupta's avatar
      ARCv2: spinlock/rwlock/atomics: reduce 1 instruction in exponential backoff · 10971638
      Vineet Gupta authored
      The increment of delay counter was 2 instructions:
      Arithmatic Shfit Left (ASL) + set to 1 on overflow
      
      This can be done in 1 using ROtate Left (ROL)
      Suggested-by: default avatarNigel Topham <ntopham@synopsys.com>
      Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      10971638
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 49d7c655
      Linus Torvalds authored
      Pull sparc fix from David Miller:
       "FPU register corruption bug fix"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: Fix userspace FPU register corruptions.
      49d7c655
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 8664b90b
      Linus Torvalds authored
      Merge fixes from Andrew Morton:
       "21 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (21 commits)
        writeback: fix initial dirty limit
        mm/memory-failure: set PageHWPoison before migrate_pages()
        mm: check __PG_HWPOISON separately from PAGE_FLAGS_CHECK_AT_*
        mm/memory-failure: give up error handling for non-tail-refcounted thp
        mm/memory-failure: fix race in counting num_poisoned_pages
        mm/memory-failure: unlock_page before put_page
        ipc: use private shmem or hugetlbfs inodes for shm segments.
        mm: initialize hotplugged pages as reserved
        ocfs2: fix shift left overflow
        kthread: export kthread functions
        fsnotify: fix oops in fsnotify_clear_marks_by_group_flags()
        lib/iommu-common.c: do not use 0xffffffffffffffffl for computing align_mask
        mm/slub: allow merging when SLAB_DEBUG_FREE is set
        signalfd: fix information leak in signalfd_copyinfo
        signal: fix information leak in copy_siginfo_to_user
        signal: fix information leak in copy_siginfo_from_user32
        ocfs2: fix BUG in ocfs2_downconvert_thread_do_work()
        fs, file table: reinit files_stat.max_files after deferred memory initialisation
        mm, meminit: replace rwsem with completion
        mm, meminit: allow early_pfn_to_nid to be used during runtime
        ...
      8664b90b
    • David S. Miller's avatar
      sparc64: Fix userspace FPU register corruptions. · 44922150
      David S. Miller authored
      If we have a series of events from userpsace, with %fprs=FPRS_FEF,
      like follows:
      
      ETRAP
      	ETRAP
      		VIS_ENTRY(fprs=0x4)
      		VIS_EXIT
      		RTRAP (kernel FPU restore with fpu_saved=0x4)
      	RTRAP
      
      We will not restore the user registers that were clobbered by the FPU
      using kernel code in the inner-most trap.
      
      Traps allocate FPU save slots in the thread struct, and FPU using
      sequences save the "dirty" FPU registers only.
      
      This works at the initial trap level because all of the registers
      get recorded into the top-level FPU save area, and we'll return
      to userspace with the FPU disabled so that any FPU use by the user
      will take an FPU disabled trap wherein we'll load the registers
      back up properly.
      
      But this is not how trap returns from kernel to kernel operate.
      
      The simplest fix for this bug is to always save all FPU register state
      for anything other than the top-most FPU save area.
      
      Getting rid of the optimized inner-slot FPU saving code ends up
      making VISEntryHalf degenerate into plain VISEntry.
      
      Longer term we need to do something smarter to reinstate the partial
      save optimizations.  Perhaps the fundament error is having trap entry
      and exit allocate FPU save slots and restore register state.  Instead,
      the VISEntry et al. calls should be doing that work.
      
      This bug is about two decades old.
      Reported-by: default avatarJames Y Knight <jyknight@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      44922150
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes-4.2' of git://people.freedesktop.org/~agd5f/linux · a58997e1
      Linus Torvalds authored
      Pull amdgpu fixes from Alex Deucher:
       "Just a few amdgpu fixes to make sure we report the proper firmware
        information and number of render buffers to userspace and a typo in a
        debugging function"
      
      [ Pulling directly from Alex since Dave Airlie is on vacation  - Linus ]
      
      * 'drm-fixes-4.2' of git://people.freedesktop.org/~agd5f/linux:
        drm/amdgpu: set fw_version and feature_version for smu fw loading
        drm/amdgpu: add feature version for SDMA ucode
        drm/amdgpu: add feature version for RLC and MEC v2
        drm/amdgpu: increment queue when iterating on this variable.
        drm/amdgpu: fix rb setting for CZ
      a58997e1
    • Linus Torvalds's avatar
      Merge branch 'drm-tda998x-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · ebc90be6
      Linus Torvalds authored
      Pull TDA998x i2c driver fixes from Russell King:
       "This fixes the double-checksumming of the AVI infoframe which was
        resulting in the checksum always being zero.  It went unnoticed as
        none of my HDMI devices had a problem with this"
      
      [ Pulling directly from rmk since Dave Airlie is on vacation  - Linus ]
      
      * 'drm-tda998x-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        drm/i2c: tda998x: fix bad checksum of the HDMI AVI infoframe
      ebc90be6
    • Rabin Vincent's avatar
      writeback: fix initial dirty limit · a50fcb51
      Rabin Vincent authored
      The initial value of global_wb_domain.dirty_limit set by
      writeback_set_ratelimit() is zeroed out by the memset in
      wb_domain_init().
      Signed-off-by: default avatarRabin Vincent <rabin.vincent@axis.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Jens Axboe <axboe@fb.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a50fcb51
    • Naoya Horiguchi's avatar
      mm/memory-failure: set PageHWPoison before migrate_pages() · 4491f712
      Naoya Horiguchi authored
      Now page freeing code doesn't consider PageHWPoison as a bad page, so by
      setting it before completing the page containment, we can prevent the
      error page from being reused just after successful page migration.
      
      I added TTU_IGNORE_HWPOISON for try_to_unmap() to make sure that the
      page table entry is transformed into migration entry, not to hwpoison
      entry.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Dean Nelson <dnelson@redhat.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4491f712
    • Naoya Horiguchi's avatar
      mm: check __PG_HWPOISON separately from PAGE_FLAGS_CHECK_AT_* · f4c18e6f
      Naoya Horiguchi authored
      The race condition addressed in commit add05cec ("mm: soft-offline:
      don't free target page in successful page migration") was not closed
      completely, because that can happen not only for soft-offline, but also
      for hard-offline.  Consider that a slab page is about to be freed into
      buddy pool, and then an uncorrected memory error hits the page just
      after entering __free_one_page(), then VM_BUG_ON_PAGE(page->flags &
      PAGE_FLAGS_CHECK_AT_PREP) is triggered, despite the fact that it's not
      necessary because the data on the affected page is not consumed.
      
      To solve it, this patch drops __PG_HWPOISON from page flag checks at
      allocation/free time.  I think it's justified because __PG_HWPOISON
      flags is defined to prevent the page from being reused, and setting it
      outside the page's alloc-free cycle is a designed behavior (not a bug.)
      
      For recent months, I was annoyed about BUG_ON when soft-offlined page
      remains on lru cache list for a while, which is avoided by calling
      put_page() instead of putback_lru_page() in page migration's success
      path.  This means that this patch reverts a major change from commit
      add05cec about the new refcounting rule of soft-offlined pages, so
      "reuse window" revives.  This will be closed by a subsequent patch.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Dean Nelson <dnelson@redhat.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f4c18e6f
    • Naoya Horiguchi's avatar
      mm/memory-failure: give up error handling for non-tail-refcounted thp · 98ed2b00
      Naoya Horiguchi authored
      "non anonymous thp" case is still racy with freeing thp, which causes
      panic due to put_page() for refcount-0 page.  It seems that closing up
      this race might be hard (and/or not worth doing,) so let's give up the
      error handling for this case.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Dean Nelson <dnelson@redhat.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      98ed2b00
    • Naoya Horiguchi's avatar
      mm/memory-failure: fix race in counting num_poisoned_pages · a209ef09
      Naoya Horiguchi authored
      When memory_failure() is called on a page which are just freed after
      page migration from soft offlining, the counter num_poisoned_pages is
      raised twi= ce.  So let's fix it with using TestSetPageHWPoison.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Dean Nelson <dnelson@redhat.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a209ef09
    • Naoya Horiguchi's avatar
      mm/memory-failure: unlock_page before put_page · a09233f3
      Naoya Horiguchi authored
      Recently I addressed a few of hwpoison race problems and the patches are
      merged on v4.2-rc1.  It made progress, but unfortunately some problems
      still remain due to less coverage of my testing.  So I'm trying to fix
      or avoid them in this series.
      
      One point I'm expecting to discuss is that patch 4/5 changes the page
      flag set to be checked on free time.  In current behavior, __PG_HWPOISON
      is not supposed to be set when the page is freed.  I think that there is
      no strong reason for this behavior, and it causes a problem hard to fix
      only in error handler side (because __PG_HWPOISON could be set at
      arbitrary timing.) So I suggest to change it.
      
      With this patchset, hwpoison stress testing in official mce-test
      testsuite (which previously failed) passes.
      
      This patch (of 5):
      
      In "just unpoisoned" path, we do put_page and then unlock_page, which is
      a wrong order and causes "freeing locked page" bug.  So let's fix it.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Dean Nelson <dnelson@redhat.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
      Cc: Hugh Dickins <hughd@google.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a09233f3
    • Stephen Smalley's avatar
      ipc: use private shmem or hugetlbfs inodes for shm segments. · e1832f29
      Stephen Smalley authored
      The shm implementation internally uses shmem or hugetlbfs inodes for shm
      segments.  As these inodes are never directly exposed to userspace and
      only accessed through the shm operations which are already hooked by
      security modules, mark the inodes with the S_PRIVATE flag so that inode
      security initialization and permission checking is skipped.
      
      This was motivated by the following lockdep warning:
      
        ======================================================
         [ INFO: possible circular locking dependency detected ]
         4.2.0-0.rc3.git0.1.fc24.x86_64+debug #1 Tainted: G        W
        -------------------------------------------------------
         httpd/1597 is trying to acquire lock:
         (&ids->rwsem){+++++.}, at: shm_close+0x34/0x130
         but task is already holding lock:
         (&mm->mmap_sem){++++++}, at: SyS_shmdt+0x4b/0x180
         which lock already depends on the new lock.
         the existing dependency chain (in reverse order) is:
         -> #3 (&mm->mmap_sem){++++++}:
              lock_acquire+0xc7/0x270
              __might_fault+0x7a/0xa0
              filldir+0x9e/0x130
              xfs_dir2_block_getdents.isra.12+0x198/0x1c0 [xfs]
              xfs_readdir+0x1b4/0x330 [xfs]
              xfs_file_readdir+0x2b/0x30 [xfs]
              iterate_dir+0x97/0x130
              SyS_getdents+0x91/0x120
              entry_SYSCALL_64_fastpath+0x12/0x76
         -> #2 (&xfs_dir_ilock_class){++++.+}:
              lock_acquire+0xc7/0x270
              down_read_nested+0x57/0xa0
              xfs_ilock+0x167/0x350 [xfs]
              xfs_ilock_attr_map_shared+0x38/0x50 [xfs]
              xfs_attr_get+0xbd/0x190 [xfs]
              xfs_xattr_get+0x3d/0x70 [xfs]
              generic_getxattr+0x4f/0x70
              inode_doinit_with_dentry+0x162/0x670
              sb_finish_set_opts+0xd9/0x230
              selinux_set_mnt_opts+0x35c/0x660
              superblock_doinit+0x77/0xf0
              delayed_superblock_init+0x10/0x20
              iterate_supers+0xb3/0x110
              selinux_complete_init+0x2f/0x40
              security_load_policy+0x103/0x600
              sel_write_load+0xc1/0x750
              __vfs_write+0x37/0x100
              vfs_write+0xa9/0x1a0
              SyS_write+0x58/0xd0
              entry_SYSCALL_64_fastpath+0x12/0x76
        ...
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      Reported-by: default avatarMorten Stevens <mstevens@fedoraproject.org>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarPaul Moore <paul@paul-moore.com>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Eric Paris <eparis@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e1832f29
    • Mel Gorman's avatar
      mm: initialize hotplugged pages as reserved · e298ff75
      Mel Gorman authored
      Commit 92923ca3 ("mm: meminit: only set page reserved in the
      memblock region") broke memory hotplug which expects the memmap for
      newly added sections to be reserved until onlined by
      online_pages_range().  This patch marks hotplugged pages as reserved
      when adding new zones.
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Reported-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Tested-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Cc: Nathan Zimmer <nzimmer@sgi.com>
      Cc: Robin Holt <holt@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e298ff75