Skip to content
  1. Jun 11, 2017
  2. Jun 10, 2017
    • Linus Torvalds's avatar
      Merge tag 'iommu-fixes-v4.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 179145e6
      Linus Torvalds authored
      Pull IOMMU fixes from Joerg Roedel:
      
       - another compile-fix for my header cleanup
      
       - a couple of fixes for the recently merged IOMMU probe deferal code
      
       - fixes for ACPI/IORT code necessary with IOMMU probe deferal
      
      * tag 'iommu-fixes-v4.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        arm: dma-mapping: Reset the device's dma_ops
        ACPI/IORT: Move the check to get iommu_ops from translated fwspec
        ARM: dma-mapping: Don't tear down third-party mappings
        ACPI/IORT: Ignore all errors except EPROBE_DEFER
        iommu/of: Ignore all errors except EPROBE_DEFER
        iommu/of: Fix check for returning EPROBE_DEFER
        iommu/dma: Fix function declaration
      179145e6
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · c7a1aefc
      Linus Torvalds authored
      Pull input fixes from Dmitry Torokhov:
      
       - mark "guest" RMI device as pass-through port to avoid "phantom" ALPS
         toouchpad on newer Lenovo Carbons
      
       - add two more laptops to the Elantech's lists of devices using CRC
         mode
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: synaptics-rmi4 - register F03 port as pass-through serio
        Input: elantech - add Fujitsu Lifebook E546/E557 to force crc_enabled
      c7a1aefc
    • Linus Torvalds's avatar
      Merge tag 'md/4.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md · 2833b7e9
      Linus Torvalds authored
      Pull MD bugfix from Shaohua Li:
       "One bug fix from Neil Brown for MD. The bug was introduced in this
        cycle"
      
      * tag 'md/4.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md:
        md: initialise ->writes_pending in personality modules.
      2833b7e9
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 42211f6c
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "A set of fixes in the area of block IO, that should go into the next
        -rc release. This contains:
      
         - An OOPS fix from Dmitry, fixing a regression with the bio integrity
           code in this series.
      
         - Fix truncation of elevator io context cache name, from Eric
           Biggers.
      
         - NVMe pull from Christoph includes FC fixes from James, APST
           fixes/tweaks from Kai-Heng, removal fix from Rakesh, and an RDMA
           fix from Sagi.
      
         - Two tweaks for the block throttling code. One from Joseph Qi,
           fixing an oops from the timer code, and one from Shaohua, improving
           the behavior on rotatonal storage.
      
         - Two blk-mq fixes from Ming, fixing corner cases with the direct
           issue code.
      
         - Locking fix for bfq cgroups from Paolo"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        block, bfq: access and cache blkg data only when safe
        Fix loop device flush before configure v3
        blk-throttle: set default latency baseline for harddisk
        blk-throttle: fix NULL pointer dereference in throtl_schedule_pending_timer
        nvme: relax APST default max latency to 100ms
        nvme: only consider exit latency when choosing useful non-op power states
        nvme-fc: fix missing put reference on controller create failure
        nvme-fc: on lldd/transport io error, terminate association
        nvme-rdma: fast fail incoming requests while we reconnect
        nvme-pci: fix multiple ctrl removal scheduling
        nvme: fix hang in remove path
        elevator: fix truncation of icq_cache_name
        blk-mq: fix direct issue
        blk-mq: pass correct hctx to blk_mq_try_issue_directly
        bio-integrity: Do not allocate integrity context for bio w/o data
      42211f6c
    • Linus Torvalds's avatar
      Merge tag 'sound-4.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 39e4edfd
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "This update contains a slightly hight amount of changes due to the
        pending ASoC fixes:
      
         - ALSA timer core got a couple of fixes for races between read and
           ioctl, leading to potential read of uninitialized kmalloced memory
      
         - ASoC core fixed the de-registration pattern for use-after-free bug
      
         - The rewrite of probe code in ASoC Intel Skylake for i915 component
      
         - ASoC R-snd got a series of fixes for SSI
      
         - ASoC simple-card, atmel, da7213, and rt286 trivial fixes
      
         - HD-audio ALC269 quirk and rearrangement of quirk table"
      
      * tag 'sound-4.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT
        ALSA: timer: Fix race between read and ioctl
        ALSA: hda/realtek - Reorder ALC269 ASUS quirk entries
        ALSA: hda/realtek: Fix mic and headset jack sense on Asus X705UD
        ASoC: rsnd: fixup parent_clk_name of AUDIO_CLKOUTx
        ASoC: Intel: Skylake: Fix to parse consecutive string tkns in manifest
        ASoC: Intel: Skylake: Fix IPC rx_list corruption
        ASoC: rsnd: SSI PIO adjust to 24bit mode
        MAINTAINERS: Update email address for patches to Wolfson parts
        ASoC: Fix use-after-free at card unregistration
        ASoC: simple-card: fix mic jack initialization
        ASoC: rsnd: don't call free_irq() on Parent SSI
        ASoC: atmel-classd: sync regcache when resuming
        ASoC: rsnd: don't use PDTA bit for 24bit on SSI
        ASoC: da7213: Fix incorrect usage of bitwise '&' operator for SRM check
        rt286: add Thinkpad Helix 2 to force_combo_jack_table
        ASoC: Intel: Skylake: Move i915 registration to worker thread
      39e4edfd
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-for-v4.12-rc5' of git://people.freedesktop.org/~airlied/linux · 6107cc58
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Intel, nouveau, rockchip, vmwgfx, imx, meson, mediatek and core fixes.
      
        Bit more spread out fixes this time, fixes for 7 drivers + a couple of
        core fixes.
      
        i915 and vmwgfx are the main ones. The vmwgfx ones fix a bunch of
        regressions in their atomic rework, and a few fixes destined for
        stable. i915 has some 4.12 regressions and older things that need to
        be fixed in stable as well.
      
        nouveau also has some runtime pm fixes and a timer list handling fix,
        otherwise a couple of core and small driver regression fixes"
      
      * tag 'drm-fixes-for-v4.12-rc5' of git://people.freedesktop.org/~airlied/linux: (37 commits)
        drm/i915: fix warning for unused variable
        drm/meson: Fix driver bind when only CVBS is available
        drm/i915: Fix 90/270 rotated coordinates for FBC
        drm/i915: Restore has_fbc=1 for ILK-M
        drm/i915: Workaround VLV/CHV DSI scanline counter hardware fail
        drm/i915: Fix logical inversion for gen4 quirking
        drm/i915: Guard against i915_ggtt_disable_guc() being invoked unconditionally
        drm/i915: Always recompute watermarks when distrust_bios_wm is set, v2.
        drm/i915: Prevent the system suspend complete optimization
        drm/i915/psr: disable psr2 for resolution greater than 32X20
        drm/i915: Hold a wakeref for probing the ring registers
        drm/i915: Short-circuit i915_gem_wait_for_idle() if already idle
        drm/i915: Disable decoupled MMIO
        drm/i915/guc: Remove stale comment for q_fail
        drm/vmwgfx: Bump driver minor and date
        drm/vmwgfx: Remove unused legacy cursor functions
        drm/vmwgfx: fix spelling mistake "exeeds" -> "exceeds"
        drm/vmwgfx: Fix large topology crash
        drm/vmwgfx: Make sure to update STDU when FB is updated
        drm/vmwgfx: Make sure backup_handle is always valid
        ...
      6107cc58
    • Linus Torvalds's avatar
      Merge tag 'for-linus-4.12b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · eb4125df
      Linus Torvalds authored
      Pull xen fix from Juergen Gross:
       "A fix for Xen on ARM when dealing with 64kB page size of a guest"
      
      * tag 'for-linus-4.12b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen/privcmd: Support correctly 64KB page granularity when mapping memory
      eb4125df
    • Dmitry Torokhov's avatar
      Input: synaptics-rmi4 - register F03 port as pass-through serio · a0897d5f
      Dmitry Torokhov authored
      
      
      The 5th generation Thinkpad X1 Carbons use Synaptics touchpads accessible
      over SMBus/RMI, combined with ALPS or Elantech trackpoint devices instead
      of classic IBM/Lenovo trackpoints. Unfortunately there is no way for ALPS
      driver to detect whether it is dealing with touchpad + trackpoint
      combination or just a trackpoint, so we end up with a "phantom" dualpoint
      ALPS device in addition to real touchpad and trackpoint.
      
      Given that we do not have any special advanced handling for ALPS or
      Elantech trackpoints (unlike IBM trackpoints that have separate driver and
      a host of options) we are better off keeping the trackpoints in PS/2
      emulation mode. We achieve that by setting serio type to SERIO_PS_PSTHRU,
      which will limit number of protocols psmouse driver will try. In addition
      to getting rid of the "phantom" touchpads, this will also speed up probing
      of F03 pass-through port.
      
      Reported-by: default avatarDamjan Georgievski <gdamjan@gmail.com>
      Suggested-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Acked-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      a0897d5f
    • Linus Torvalds's avatar
      Merge tag 'powerpc-4.12-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · a92f63cd
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
       "Mostly fairly minor, of note are:
      
         - Fix percpu allocations to be NUMA aware
      
         - Limit 4k page size config to 64TB virtual address space
      
         - Avoid needlessly restoring FP and vector registers
      
        Thanks to Aneesh Kumar K.V, Breno Leitao, Christophe Leroy, Frederic
        Barrat, Madhavan Srinivasan, Michael Bringmann, Nicholas Piggin,
        Vaibhav Jain"
      
      * tag 'powerpc-4.12-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/book3s64: Move PPC_DT_CPU_FTRs and enable it by default
        powerpc/mm/4k: Limit 4k page size config to 64TB virtual address space
        cxl: Fix error path on bad ioctl
        powerpc/perf: Fix Power9 test_adder fields
        powerpc/numa: Fix percpu allocations to be NUMA aware
        cxl: Avoid double free_irq() for psl,slice interrupts
        powerpc/kernel: Initialize load_tm on task creation
        powerpc/kernel: Fix FP and vector register restoration
        powerpc/64: Reclaim CPU_FTR_SUBCORE
        powerpc/hotplug-mem: Fix missing endian conversion of aa_index
        powerpc/sysdev/simple_gpio: Fix oops in gpio save_regs function
        powerpc/spufs: Fix coredump of SPU contexts
        powerpc/64s: Add dt_cpu_ftrs boot time setup option
      a92f63cd
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 788a73f4
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "Been sitting on these for a couple of weeks waiting on some larger
        batches to come in but it's been pretty quiet.
      
        Just your garden variety fixes here:
      
         - A few maintainers updates (ep93xx, Exynos, TI, Marvell)
         - Some PM fixes for Atmel/at91 and Marvell
         - A few DT fixes for Marvell, Versatile, TI Keystone, bcm283x
         - A reset driver patch to set module license for symbol access"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        MAINTAINERS: EP93XX: Update maintainership
        MAINTAINERS: remove kernel@stlinux.com obsolete mailing list
        ARM: dts: versatile: use #include "..." to include local DT
        MAINTAINERS: add device-tree files to TI DaVinci entry
        ARM: at91: select CONFIG_ARM_CPU_SUSPEND
        ARM: dts: keystone-k2l: fix broken Ethernet due to disabled OSR
        arm64: defconfig: enable some core options for 64bit Rockchip socs
        arm64: marvell: dts: fix interrupts in 7k/8k crypto nodes
        reset: hi6220: Set module license so that it can be loaded
        MAINTAINERS: add irqchip related drivers to Marvell EBU maintainers
        MAINTAINERS: sort F entries for Marvell EBU maintainers
        ARM: davinci: PM: Do not free useful resources in normal path in 'davinci_pm_init'
        ARM: davinci: PM: Free resources in error handling path in 'davinci_pm_init'
        ARM: dts: bcm283x: Reserve first page for firmware
        memory: atmel-ebi: mark PM ops as __maybe_unused
        MAINTAINERS: Remove Javier Martinez Canillas as reviewer for Exynos
      788a73f4
  3. Jun 09, 2017
  4. Jun 08, 2017
    • Paolo Valente's avatar
      block, bfq: access and cache blkg data only when safe · 8f9bebc3
      Paolo Valente authored
      
      
      In blk-cgroup, operations on blkg objects are protected with the
      request_queue lock. This is no more the lock that protects
      I/O-scheduler operations in blk-mq. In fact, the latter are now
      protected with a finer-grained per-scheduler-instance lock. As a
      consequence, although blkg lookups are also rcu-protected, blk-mq I/O
      schedulers may see inconsistent data when they access blkg and
      blkg-related objects. BFQ does access these objects, and does incur
      this problem, in the following case.
      
      The blkg_lookup performed in bfq_get_queue, being protected (only)
      through rcu, may happen to return the address of a copy of the
      original blkg. If this is the case, then the blkg_get performed in
      bfq_get_queue, to pin down the blkg, is useless: it does not prevent
      blk-cgroup code from destroying both the original blkg and all objects
      directly or indirectly referred by the copy of the blkg. BFQ accesses
      these objects, which typically causes a crash for NULL-pointer
      dereference of memory-protection violation.
      
      Some additional protection mechanism should be added to blk-cgroup to
      address this issue. In the meantime, this commit provides a quick
      temporary fix for BFQ: cache (when safe) blkg data that might
      disappear right after a blkg_lookup.
      
      In particular, this commit exploits the following facts to achieve its
      goal without introducing further locks.  Destroy operations on a blkg
      invoke, as a first step, hooks of the scheduler associated with the
      blkg. And these hooks are executed with bfqd->lock held for BFQ. As a
      consequence, for any blkg associated with the request queue an
      instance of BFQ is attached to, we are guaranteed that such a blkg is
      not destroyed, and that all the pointers it contains are consistent,
      while that instance is holding its bfqd->lock. A blkg_lookup performed
      with bfqd->lock held then returns a fully consistent blkg, which
      remains consistent until this lock is held. In more detail, this holds
      even if the returned blkg is a copy of the original one.
      
      Finally, also the object describing a group inside BFQ needs to be
      protected from destruction on the blkg_free of the original blkg
      (which invokes bfq_pd_free). This commit adds private refcounting for
      this object, to let it disappear only after no bfq_queue refers to it
      any longer.
      
      This commit also removes or updates some stale comments on locking
      issues related to blk-cgroup operations.
      
      Reported-by: default avatarTomas Konir <tomas.konir@gmail.com>
      Reported-by: default avatarLee Tibbert <lee.tibbert@gmail.com>
      Reported-by: default avatarMarco Piazza <mpiazza@gmail.com>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Tested-by: default avatarTomas Konir <tomas.konir@gmail.com>
      Tested-by: default avatarLee Tibbert <lee.tibbert@gmail.com>
      Tested-by: default avatarMarco Piazza <mpiazza@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      8f9bebc3
    • Paolo Bonzini's avatar
      srcu: Allow use of Classic SRCU from both process and interrupt context · 1123a604
      Paolo Bonzini authored
      Linu Cherian reported a WARN in cleanup_srcu_struct() when shutting
      down a guest running iperf on a VFIO assigned device.  This happens
      because irqfd_wakeup() calls srcu_read_lock(&kvm->irq_srcu) in interrupt
      context, while a worker thread does the same inside kvm_set_irq().  If the
      interrupt happens while the worker thread is executing __srcu_read_lock(),
      updates to the Classic SRCU ->lock_count[] field or the Tree SRCU
      ->srcu_lock_count[] field can be lost.
      
      The docs say you are not supposed to call srcu_read_lock() and
      srcu_read_unlock() from irq context, but KVM interrupt injection happens
      from (host) interrupt context and it would be nice if SRCU supported the
      use case.  KVM is using SRCU here not really for the "sleepable" part,
      but rather due to its IPI-free fast detection of grace periods.  It is
      therefore not desirable to switch back to RCU, which would effectively
      revert commit 719d93cd ("kvm/irqchip: Speed up KVM_SET_GSI_ROUTING",
      2014-01-16).
      
      However, the docs are overly conservative.  You can have an SRCU instance
      only has users in irq context, and you can mix process and irq context
      as long as process context users disable interrupts.  In addition,
      __srcu_read_unlock() actually uses this_cpu_dec() on both Tree SRCU and
      Classic SRCU.  For those two implementations, only srcu_read_lock()
      is unsafe.
      
      When Classic SRCU's __srcu_read_unlock() was changed to use this_cpu_dec(),
      in commit 5a41344a ("srcu: Simplify __srcu_read_unlock() via
      this_cpu_dec()", 2012-11-29), __srcu_read_lock() did two increments.
      Therefore it kept __this_cpu_inc(), with preempt_disable/enable in
      the caller.  Tree SRCU however only does one increment, so on most
      architectures it is more efficient for __srcu_read_lock() to use
      this_cpu_inc(), and any performance differences appear to be down in
      the noise.
      
      Cc: stable@vger.kernel.org
      Fixes: 719d93cd
      
       ("kvm/irqchip: Speed up KVM_SET_GSI_ROUTING")
      Reported-by: default avatarLinu Cherian <linuc.decode@gmail.com>
      Suggested-by: default avatarLinu Cherian <linuc.decode@gmail.com>
      Cc: kvm@vger.kernel.org
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      1123a604
    • Paolo Bonzini's avatar
      srcu: Allow use of Tiny/Tree SRCU from both process and interrupt context · cdf7abc4
      Paolo Bonzini authored
      Linu Cherian reported a WARN in cleanup_srcu_struct() when shutting
      down a guest running iperf on a VFIO assigned device.  This happens
      because irqfd_wakeup() calls srcu_read_lock(&kvm->irq_srcu) in interrupt
      context, while a worker thread does the same inside kvm_set_irq().  If the
      interrupt happens while the worker thread is executing __srcu_read_lock(),
      updates to the Classic SRCU ->lock_count[] field or the Tree SRCU
      ->srcu_lock_count[] field can be lost.
      
      The docs say you are not supposed to call srcu_read_lock() and
      srcu_read_unlock() from irq context, but KVM interrupt injection happens
      from (host) interrupt context and it would be nice if SRCU supported the
      use case.  KVM is using SRCU here not really for the "sleepable" part,
      but rather due to its IPI-free fast detection of grace periods.  It is
      therefore not desirable to switch back to RCU, which would effectively
      revert commit 719d93cd ("kvm/irqchip: Speed up KVM_SET_GSI_ROUTING",
      2014-01-16).
      
      However, the docs are overly conservative.  You can have an SRCU instance
      only has users in irq context, and you can mix process and irq context
      as long as process context users disable interrupts.  In addition,
      __srcu_read_unlock() actually uses this_cpu_dec() on both Tree SRCU and
      Classic SRCU.  For those two implementations, only srcu_read_lock()
      is unsafe.
      
      When Classic SRCU's __srcu_read_unlock() was changed to use this_cpu_dec(),
      in commit 5a41344a ("srcu: Simplify __srcu_read_unlock() via
      this_cpu_dec()", 2012-11-29), __srcu_read_lock() did two increments.
      Therefore it kept __this_cpu_inc(), with preempt_disable/enable in
      the caller.  Tree SRCU however only does one increment, so on most
      architectures it is more efficient for __srcu_read_lock() to use
      this_cpu_inc(), and any performance differences appear to be down in
      the noise.
      
      Unlike Classic and Tree SRCU, Tiny SRCU does increments and decrements on
      a single variable.  Therefore, as Peter Zijlstra pointed out, Tiny SRCU's
      implementation already supports mixed-context use of srcu_read_lock()
      and srcu_read_unlock(), at least as long as uses of srcu_read_lock()
      and srcu_read_unlock() in each handler are nested and paired properly.
      In other words, it is still illegal to (say) invoke srcu_read_lock()
      in an interrupt handler and to invoke the matching srcu_read_unlock()
      in a softirq handler.  Therefore, the only change required for Tiny SRCU
      is to its comments.
      
      Fixes: 719d93cd
      
       ("kvm/irqchip: Speed up KVM_SET_GSI_ROUTING")
      Reported-by: default avatarLinu Cherian <linuc.decode@gmail.com>
      Suggested-by: default avatarLinu Cherian <linuc.decode@gmail.com>
      Cc: kvm@vger.kernel.org
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Tested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      cdf7abc4