31 Jul, 2017

6 commits

  • This patch replaces an rwlock and raw notifier by an atomic notifier
    protected by a spin_lock and RCU.

    The main reason for this change is due to a 'scheduling while atomic'
    bug with RT kernels on ARM/ARM64. On ARM/ARM64, the rwlock
    cpu_pm_notifier_lock in cpu_pm_enter/exit() causes a potential
    schedule after IRQ disable in the idle call chain:

    cpu_startup_entry
    cpu_idle_loop
    local_irq_disable()
    cpuidle_idle_call
    call_cpuidle
    cpuidle_enter
    cpuidle_enter_state
    ->enter :arm_enter_idle_state
    cpu_pm_enter/exit
    CPU_PM_CPU_IDLE_ENTER
    read_lock(&cpu_pm_notifier_lock); ] arm_enter_idle_state+0x18/0x70
    [ 4.609614] Modules linked in:
    [ 4.609615] [] cpuidle_enter_state+0xf0/0x218
    [ 4.609620] [] cpuidle_enter+0x18/0x20
    [ 4.609626] Preemption disabled at:
    [ 4.609627] [] call_cpuidle+0x24/0x40
    [ 4.609635] [] schedule_preempt_disabled+0x1c/0x28
    [ 4.609639] [] cpu_startup_entry+0x154/0x1f8
    [ 4.609645] [] secondary_start_kernel+0x15c/0x1a0

    Daniel Lezcano said this notification is needed on arm/arm64 platforms.
    Sebastian suggested using atomic_notifier instead of rwlock, which is not
    only removing the sleeping in idle, but also improving latency.

    Tony Lindgren found a miss use that rcu_read_lock used after rcu_idle_enter
    Paul McKenney suggested trying RCU_NONIDLE.

    Signed-off-by: Alex Shi
    Tested-by: Tony Lindgren
    Acked-by: Sebastian Andrzej Siewior
    [ rjw: Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki

    Alex Shi
     
  • Linus Torvalds
     
  • Pull x86 fixes from Thomas Gleixner:
    "A small set of x86 fixes:

    - prevent the kernel from using the EFI reboot method when EFI is
    disabled.

    - two patches addressing clang issues"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/boot: Disable the address-of-packed-member compiler warning
    x86/efi: Fix reboot_mode when EFI runtime services are disabled
    x86/boot: #undef memcpy() et al in string.c

    Linus Torvalds
     
  • Pull scheduler fixes from Thomas Gleixner:
    "Two patches addressing build warnings caused by inconsistent kernel
    doc comments"

    * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    sched/wait: Clean up some documentation warnings
    sched/core: Fix some documentation build warnings

    Linus Torvalds
     
  • Pull perf fixes from Thomas Gleixner:
    "A couple of fixes for performance counters and kprobes:

    - a series of small patches which make the uncore performance
    counters on Skylake server systems work correctly

    - add a missing instruction slot release to the failure path of
    kprobes"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    kprobes/x86: Release insn_slot in failure path
    perf/x86/intel/uncore: Fix missing marker for skx_uncore_cha_extra_regs
    perf/x86/intel/uncore: Fix SKX CHA event extra regs
    perf/x86/intel/uncore: Remove invalid Skylake server CHA filter field
    perf/x86/intel/uncore: Fix Skylake server CHA LLC_LOOKUP event umask
    perf/x86/intel/uncore: Fix Skylake server PCU PMU event format
    perf/x86/intel/uncore: Fix Skylake UPI PMU event masks

    Linus Torvalds
     
  • Pull irq fix from Thomas Gleixner:
    "Fix for a regression caused by the conversion of x86 to the generic
    hotplug code.

    Instead of doing a plain single line revert, this adds a pile of
    comments so the semantics of the force argument are clear"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    genirq/cpuhotplug: Revert "Set force affinity flag on hotplug migration"

    Linus Torvalds
     

29 Jul, 2017

14 commits

  • Pull DeviceTree fixes from Rob Herring:
    "Two small DT fixes:

    - Fix error handling in of_irq_to_resource_table() due to
    of_irq_to_resource() error return changes.

    - Fix dtx_diff script due to dts include path changes"

    * tag 'devicetree-fixes-for-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    of: irq: fix of_irq_to_resource() error check
    scripts/dtc: dtx_diff - update include dts paths to match build

    Linus Torvalds
     
  • Pull NFS client fixes from Anna Schumaker:
    "More NFS client bugfixes for 4.13.

    Most of these fix locking bugs that Ben and Neil noticed, but I also
    have a patch to fix one more access bug that was reported after last
    week.

    Stable fixes:
    - Fix a race where CB_NOTIFY_LOCK fails to wake a waiter
    - Invalidate file size when taking a lock to prevent corruption

    Other fixes:
    - Don't excessively generate tiny writes with fallocate
    - Use the raw NFS access mask in nfs4_opendata_access()"

    * tag 'nfs-for-4.13-3' of git://git.linux-nfs.org/projects/anna/linux-nfs:
    NFSv4.1: Fix a race where CB_NOTIFY_LOCK fails to wake a waiter
    NFS: Optimize fallocate by refreshing mapping when needed.
    NFS: invalidate file size when taking a lock.
    NFS: Use raw NFS access mask in nfs4_opendata_access()

    Linus Torvalds
     
  • Pull xfs fixes from Darrick Wong:

    - fix firstfsb variables that we left uninitialized, which could lead
    to locking problems.

    - check for NULL metadata buffer pointers before using them.

    - don't allow btree cursor manipulation if the btree block is corrupt.
    Better to just shut down.

    - fix infinite loop problems in quotacheck.

    - fix buffer overrun when validating directory blocks.

    - fix deadlock problem in bunmapi.

    * tag 'xfs-4.13-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
    xfs: fix multi-AG deadlock in xfs_bunmapi
    xfs: check that dir block entries don't off the end of the buffer
    xfs: fix quotacheck dquot id overflow infinite loop
    xfs: check _alloc_read_agf buffer pointer before using
    xfs: set firstfsb to NULLFSBLOCK before feeding it to _bmapi_write
    xfs: check _btree_check_block value

    Linus Torvalds
     
  • Pull KVM fixes from Paolo Bonzini:
    "s390:
    - SRCU fix

    PPC:
    - host crash fixes

    x86:
    - bugfixes, including making nested posted interrupts really work

    Generic:
    - tweaks to kvm_stat and to uevents"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: LAPIC: Fix reentrancy issues with preempt notifiers
    tools/kvm_stat: add '-f help' to get the available event list
    tools/kvm_stat: use variables instead of hard paths in help output
    KVM: nVMX: Fix loss of L2's NMI blocking state
    KVM: nVMX: Fix posted intr delivery when vcpu is in guest mode
    x86: irq: Define a global vector for nested posted interrupts
    KVM: x86: do mask out upper bits of PAE CR3
    KVM: make pid available for uevents without debugfs
    KVM: s390: take srcu lock when getting/setting storage keys
    KVM: VMX: remove unused field
    KVM: PPC: Book3S HV: Fix host crash on changing HPT size
    KVM: PPC: Book3S HV: Enable TM before accessing TM registers

    Linus Torvalds
     
  • Pull xen fixes from Juergen Gross:
    "Three minor cleanups for xen related drivers"

    * tag 'for-linus-4.13b-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen: dont fiddle with event channel masking in suspend/resume
    xen: selfballoon: remove unnecessary static in frontswap_selfshrink()
    xen: Drop un-informative message during boot

    Linus Torvalds
     
  • Pull arm64 fixes from Will Deacon:
    "I'd been collecting these whilst we debugged a CPU hotplug failure,
    but we ended up diagnosing that one to tglx, who has taken a fix via
    the -tip tree separately.

    We're seeing some NFS issues that we haven't gotten to the bottom of
    yet, and we've uncovered some issues with our backtracing too so there
    might be another fixes pull before we're done.

    Summary:

    - Ensure we have a guard page after the kernel image in vmalloc

    - Fix incorrect prefetch stride in copy_page

    - Ensure irqs are disabled in die()

    - Fix for event group validation in QCOM L2 PMU driver

    - Fix requesting of PMU IRQs on AMD Seattle

    - Minor cleanups and fixes"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: mmu: Place guard page after mapping of kernel image
    drivers/perf: arm_pmu: Request PMU SPIs with IRQF_PER_CPU
    arm64: sysreg: Fix unprotected macro argmuent in write_sysreg
    perf: qcom_l2: fix column exclusion check
    arm64/lib: copy_page: use consistent prefetch stride
    arm64/numa: Drop duplicate message
    perf: Convert to using %pOF instead of full_name
    arm64: Convert to using %pOF instead of full_name
    arm64: traps: disable irq in die()
    arm64: atomics: Remove '&' from '+&' asm constraint in lse atomics
    arm64: uaccess: Remove redundant __force from addr cast in __range_ok

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:
    "The highlight is Ben's patch to work around a host killing bug when
    running KVM guests with the Radix MMU on Power9. See the long change
    log of that commit for more detail.

    And then three fairly minor fixes:

    - fix of_node_put() underflow during reconfig remove, using old DLPAR
    tools.

    - fix recently introduced ld version check with 64-bit LE-only
    toolchain.

    - free the subpage_prot_table correctly, avoiding a memory leak.

    Thanks to: Aneesh Kumar K.V, Benjamin Herrenschmidt, Laurent Vivier"

    * tag 'powerpc-4.13-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/mm/hash: Free the subpage_prot_table correctly
    powerpc/Makefile: Fix ld version check with 64-bit LE-only toolchain
    powerpc/pseries: Fix of_node_put() underflow during reconfig remove
    powerpc/mm/radix: Workaround prefetch issue with KVM

    Linus Torvalds
     
  • nfs4_retry_setlk() sets the task's state to TASK_INTERRUPTIBLE within the
    same region protected by the wait_queue's lock after checking for a
    notification from CB_NOTIFY_LOCK callback. However, after releasing that
    lock, a wakeup for that task may race in before the call to
    freezable_schedule_timeout_interruptible() and set TASK_WAKING, then
    freezable_schedule_timeout_interruptible() will set the state back to
    TASK_INTERRUPTIBLE before the task will sleep. The result is that the task
    will sleep for the entire duration of the timeout.

    Since we've already set TASK_INTERRUPTIBLE in the locked section, just use
    freezable_schedule_timout() instead.

    Fixes: a1d617d8f134 ("nfs: allow blocking locks to be awoken by lock callbacks")
    Signed-off-by: Benjamin Coddington
    Reviewed-by: Jeff Layton
    Cc: stable@vger.kernel.org # v4.9+
    Signed-off-by: Anna Schumaker

    Benjamin Coddington
     
  • Pull crypto fixes from Herbert Xu:

    - remove broken dt bindings in inside-secure

    - fix authencesn crash when used with digest_null

    - fix cavium/nitrox firmware path

    - fix SHA3 failure in brcm

    - fix Kconfig dependency for brcm

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: authencesn - Fix digest_null crash
    crypto: brcm - remove BCM_PDC_MBOX dependency in Kconfig
    Documentation/bindings: crypto: remove the dma-mask property
    crypto: inside-secure - do not parse the dma mask from dt
    crypto: cavium/nitrox - Change in firmware path.
    crypto: brcm - Fix SHA3-512 algorithm failure

    Linus Torvalds
     
  • Pull btrfs fixes from David Sterba:
    "Fixes addressing problems reported by users, and there's one more
    regression fix"

    * 'for-4.13-part3' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
    btrfs: round down size diff when shrinking/growing device
    Btrfs: fix early ENOSPC due to delalloc
    btrfs: fix lockup in find_free_extent with read-only block groups
    Btrfs: fix dir item validation when replaying xattr deletes

    Linus Torvalds
     
  • Pull MD fixes from Shaohua Li:
    "This fixes several bugs, three of them are marked for stable:

    - an initialization issue fixed by Ming

    - a bio clone race issue fixed by me

    - an async tx flush issue fixed by Ofer

    - other cleanups"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md:
    MD: fix warnning for UP case
    md/raid5: add thread_group worker async_tx_issue_pending_all
    md: simplify code with bio_io_error
    md/raid1: fix writebehind bio clone
    md: raid1-10: move raid1/raid10 common code into raid1-10.c
    md: raid1/raid10: initialize bvec table via bio_add_page()
    md: remove 'idx' from 'struct resync_pages'

    Linus Torvalds
     
  • …evice-mapper/linux-dm

    Pull device mapper fixes from Mike Snitzer:

    - a few DM integrity fixes that improve performance. One that address
    inefficiencies in the on-disk journal device layout. Another that
    makes use of the block layer's on-stack plugging when writing the
    journal.

    - a dm-bufio fix for the blk_status_t conversion that went in during
    the merge window.

    - a few DM raid fixes that address correctness when suspending the
    device and a validation fix for validation that occurs during device
    activation.

    - a couple DM zoned target fixes. Important one being the fix to not
    use GFP_KERNEL in the IO path due to concerns about deadlock in
    low-memory conditions (e.g. swap over a DM zoned device, etc).

    - a DM DAX device fix to make sure dm_dax_flush() is called if the
    underlying DAX device is operating as a write cache.

    * tag 'for-4.13/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
    dm, dax: Make sure dm_dax_flush() is called if device supports it
    dm verity fec: fix GFP flags used with mempool_alloc()
    dm zoned: use GFP_NOIO in I/O path
    dm zoned: remove test for impossible REQ_OP_FLUSH conditions
    dm raid: bump target version
    dm raid: avoid mddev->suspended access
    dm raid: fix activation check in validate_raid_redundancy()
    dm raid: remove WARN_ON() in raid10_md_layout_to_format()
    dm bufio: fix error code in dm_bufio_write_dirty_buffers()
    dm integrity: test for corrupted disk format during table load
    dm integrity: WARN_ON if variables representing journal usage get out of sync
    dm integrity: use plugging when writing the journal
    dm integrity: fix inefficient allocation of journal space

    Linus Torvalds
     
  • Pull block fixes from Jens Axboe:
    "A small collection of fixes that should go into this series. This
    contains:

    - NVMe pull request from Christoph, with various fixes for nvme
    proper and nvme-fc.

    - disable runtime PM for blk-mq for now.

    With scsi now defaulting to using blk-mq, this reared its head as
    an issue. Longer term we'll fix up runtime PM for blk-mq, for now
    just disable it to prevent a hang on laptop resume for some folks.

    - blk-mq CPU hw queue map fix from Christoph.

    - xen/blkfront pull request from Konrad, with two small fixes for the
    blkfront driver.

    - a few fixups for nbd from Joseph.

    - a stable fix for pblk from Javier"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    lightnvm: pblk: advance bio according to lba index
    nvme: validate admin queue before unquiesce
    nbd: clear disconnected on reconnect
    nvme-pci: fix HMB size calculation
    nvme-fc: revise TRADDR parsing
    nvme-fc: address target disconnect race conditions in fcp io submit
    nvme: fabrics commands should use the fctype field for data direction
    nvme: also provide a UUID in the WWID sysfs attribute
    xen/blkfront: always allocate grants first from per-queue persistent grants
    xen-blkfront: fix mq start/stop race
    blk-mq: map queues to all present CPUs
    block: disable runtime-pm for blk-mq
    xen-blkfront: Fix handling of non-supported operations
    nbd: only set sndtimeo if we have a timeout set
    nbd: take tx_lock before disconnecting
    nbd: allow multiple disconnects to be sent

    Linus Torvalds
     
  • Pull MMC fixes from Ulf Hansson:
    "Here are a couple of mmc fixes intended for v4.13-rc1.

    I have also included a couple of cleanup patches in this pull request
    for OMAP2+, related to the omap_hsmmc driver. The reason is because of
    the changes are also depending on OMAP SoC specific code, so this
    simplifies how to deal with this.

    Summary:

    MMC host:
    - sunxi: Correct time phase settings
    - omap_hsmmc: Clean up some dead code
    - dw_mmc: Fix message printed for deprecated num-slots DT binding
    - dw_mmc: Fix DT documentation"

    * tag 'mmc-v4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
    Documentation: dw-mshc: deprecate num-slots
    mmc: dw_mmc: fix the wrong condition check of getting num-slots from DT
    mmc: host: omap_hsmmc: remove unused platform callbacks
    ARM: OMAP2+: hsmmc.c: Remove dead code
    mmc: sunxi: Keep default timing phase settings for new timing mode

    Linus Torvalds
     

28 Jul, 2017

20 commits

  • When a lba either hits the cache or corresponds to an empty entry in the
    L2P table, we need to advance the bio according to the position in which
    the lba is located. Otherwise, we will copy data in the wrong page, thus
    causing data corruption for the application.

    In case of a cache hit, we assumed that bio->bi_iter.bi_idx would
    contain the correct index, but this is no necessarily true. Instead, use
    the local bio advance counter and iterator. This guarantees that lbas
    hitting the cache are copied into the right bv_page.

    In case of an empty L2P entry, we omitted to advance the bio. In the
    cases when the same I/O also contains a cache hit, data corresponding
    to this lba will be copied to the wrong bv_page. Fix this by advancing
    the bio as we do in the case of a cache hit.

    Fixes: a4bd217b4326 lightnvm: physical block device (pblk) target

    Signed-off-by: Javier González
    Signed-off-by: Jens Axboe

    Javier González
     
  • The vast majority of virtual allocations in the vmalloc region are followed
    by a guard page, which can help to avoid overruning on vma into another,
    which may map a read-sensitive device.

    This patch adds a guard page to the end of the kernel image mapping (i.e.
    following the data/bss segments).

    Cc: Mark Rutland
    Reviewed-by: Ard Biesheuvel
    Signed-off-by: Will Deacon

    Will Deacon
     
  • The clang warning 'address-of-packed-member' is disabled for the general
    kernel code, also disable it for the x86 boot code.

    This suppresses a bunch of warnings like this when building with clang:

    ./arch/x86/include/asm/processor.h:535:30: warning: taking address of
    packed member 'sp0' of class or structure 'x86_hw_tss' may result in an
    unaligned pointer value [-Waddress-of-packed-member]
    return this_cpu_read_stable(cpu_tss.x86_tss.sp0);
    ^~~~~~~~~~~~~~~~~~~
    ./arch/x86/include/asm/percpu.h:391:59: note: expanded from macro
    'this_cpu_read_stable'
    #define this_cpu_read_stable(var) percpu_stable_op("mov", var)
    ^~~
    ./arch/x86/include/asm/percpu.h:228:16: note: expanded from macro
    'percpu_stable_op'
    : "p" (&(var)));
    ^~~

    Signed-off-by: Matthias Kaehlcke
    Cc: Doug Anderson
    Cc: Linus Torvalds
    Cc: Masahiro Yamada
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/20170725215053.135586-1-mka@chromium.org
    Signed-off-by: Ingo Molnar

    Matthias Kaehlcke
     
  • Pull drm fixes from Dave Airlie:
    "These iare the fixes for 4.13-rc3: vmwgfx, exynos, i915, amdgpu,
    nouveau, host1x and displayport fixes.

    As expected people woke up this week, i915 didn't do an -rc2 pull so
    got a bumper -rc3 pull, and Ben resurfaced on nouveau and fixed a
    bunch of major crashers seen on Fedora 26, and there are a few vmwgfx
    fixes as well.

    Otherwise exynos had some regression fixes/cleanups, and amdgpu has an
    rcu locking regression fix and a couple of minor fixes"

    * tag 'drm-fixes-for-v4.13-rc3' of git://people.freedesktop.org/~airlied/linux: (44 commits)
    drm/i915: Fix bad comparison in skl_compute_plane_wm.
    drm/i915: Force CPU synchronisation even if userspace requests ASYNC
    drm/i915: Only skip updating execobject.offset after error
    drm/i915: Only mark the execobject as pinned on success
    drm/i915: Remove assertion from raw __i915_vma_unpin()
    drm/i915/cnl: Fix loadgen select programming on ddi vswing sequence
    drm/i915: Fix scaler init during CRTC HW state readout
    drm/i915/selftests: Fix an error handling path in 'mock_gem_device()'
    drm/i915: Unbreak gpu reset vs. modeset locking
    gpu: host1x: Free the IOMMU domain when there is no device to attach
    drm/i915: Fix cursor updates on some platforms
    drm/i915: Fix user ptr check size in eb_relocate_vma()
    drm: exynos: mark pm functions as __maybe_unused
    drm/exynos: select CEC_CORE if CEC_NOTIFIER
    drm/exynos/hdmi: fix disable sequence
    drm/exynos: mic: add a bridge at probe
    drm/exynos/dsi: Remove error handling for bridge_node DT parsing
    drm/exynos: dsi: do not try to find bridge
    drm: exynos: hdmi: make of_device_ids const.
    drm: exynos: constify mixer_match_types and *_mxr_drv_data.
    ...

    Linus Torvalds
     
  • …/kernel/git/daeinki/drm-exynos into drm-fixes

    Summary:
    - fix probing fail issue of dsi driver without bridge device.
    - fix disable sequence of hdmi driver.
    - trivial cleanups.

    * tag 'exynos-drm-fixes-for-v4.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos:
    drm: exynos: mark pm functions as __maybe_unused
    drm/exynos: select CEC_CORE if CEC_NOTIFIER
    drm/exynos/hdmi: fix disable sequence
    drm/exynos: mic: add a bridge at probe
    drm/exynos/dsi: Remove error handling for bridge_node DT parsing
    drm/exynos: dsi: do not try to find bridge
    drm: exynos: hdmi: make of_device_ids const.
    drm: exynos: constify mixer_match_types and *_mxr_drv_data.
    exynos_drm: Clean up duplicated assignment in exynos_drm_driver

    Dave Airlie
     
  • i915 fixes for -rc3

    Bit more than usual since we missed -rc2. 4x cc: stable, 2 gvt
    patches, but all fairly minor stuff. Last minute rebase was to add a
    few missing cc: stable, I did prep the pull this morning already and
    made sure CI approves.

    * tag 'drm-intel-fixes-2017-07-27' of git://anongit.freedesktop.org/git/drm-intel:
    drm/i915: Fix bad comparison in skl_compute_plane_wm.
    drm/i915: Force CPU synchronisation even if userspace requests ASYNC
    drm/i915: Only skip updating execobject.offset after error
    drm/i915: Only mark the execobject as pinned on success
    drm/i915: Remove assertion from raw __i915_vma_unpin()
    drm/i915/cnl: Fix loadgen select programming on ddi vswing sequence
    drm/i915: Fix scaler init during CRTC HW state readout
    drm/i915/selftests: Fix an error handling path in 'mock_gem_device()'
    drm/i915: Unbreak gpu reset vs. modeset locking
    drm/i915: Fix cursor updates on some platforms
    drm/i915: Fix user ptr check size in eb_relocate_vma()
    drm/i915/gvt: Extend KBL platform support in GVT-g
    drm/i915/gvt: Fix the vblank timer close issue after shutdown VMs in reverse

    Dave Airlie
     
  • Core Changes:
    - dp: A few fixes in drm_dp_downstream_debug() (Chris)
    - rockchip: sanitize the Kconfig dependencies (fallout from EXTCON) (Arnd)
    - host1x: Free the iommu domain when attach_device fails (Paul)

    Cc: Chris Wilson
    Cc: Arnd Bergmann
    Cc: Paul Kocialkowski

    * tag 'drm-misc-fixes-2017-07-27' of git://anongit.freedesktop.org/git/drm-misc:
    gpu: host1x: Free the IOMMU domain when there is no device to attach
    drm/rockchip: fix Kconfig dependencies
    drm/dp: Don't trust drm_dp_downstream_id()
    drm/dp: Fix read pointer for drm_dp_downsteam_debug()

    Dave Airlie
     
  • Pull ACPI fixes from Rafael Wysocki:
    "These are two fixups for the suspend-to-idle handling in the ACPI
    subsystem after recent changes in that area and two simple fixes of
    the ACPI NUMA code.

    Specifics:

    - Add an ACPI module parameter to allow users to override the new
    default behavior on some systems where the EC GPE is not disabled
    during suspend-to-idle in case the EC on their systems generates
    excessive wakeup events and they want to sacrifice some
    functionality (like power button wakeups) for extra battery life
    while suspended (Rafael Wysocki).

    - Fix flushing of the outstanding EC work in the ACPI core
    suspend-to-idle code (Rafael Wysocki).

    - Add a missing include and fix a messed-up comment in the ACPI NUMA
    code (Ross Zwisler)"

    * tag 'acpi-4.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI: NUMA: Fix typo in the full name of SRAT
    ACPI: NUMA: add missing include in acpi_numa.h
    ACPI / PM / EC: Flush all EC work in acpi_freeze_sync()
    ACPI / EC: Add parameter to force disable the GPE on suspend

    Linus Torvalds
     
  • * acpi-pm:
    ACPI / PM / EC: Flush all EC work in acpi_freeze_sync()
    ACPI / EC: Add parameter to force disable the GPE on suspend

    * acpi-numa:
    ACPI: NUMA: Fix typo in the full name of SRAT
    ACPI: NUMA: add missing include in acpi_numa.h

    Rafael J. Wysocki
     
  • gvt-fixes-2017-07-26

    - Turn on KBL support for more SKUs (Jianjun)
    - Fix vblank timer close bug (Fred)

    Signed-off-by: Daniel Vetter
    Link: https://patchwork.freedesktop.org/patch/msgid/20170726075621.hrauvik62gi2jecj@zhen-hp.sh.intel.com

    Daniel Vetter
     
  • ddb_allocation && ddb_allocation / blocks_per_line >= 1 is the same
    as ddb_allocation >= blocks_per_line, so use the latter to simplify
    this.

    This fixes the following compiler warning:

    drivers/gpu/drm/i915/intel_pm.c:4467]: (warning) Comparison of a
    boolean expression with an integer other than 0 or 1.

    Signed-off-by: Maarten Lankhorst
    Fixes: d555cb5827d6 ("drm/i915/skl+: use linetime latency if ddb size is not available")
    Cc: "Mahesh Kumar"
    Reported-by: David Binderman
    Cc: David Binderman
    Cc: # v4.13-rc1+
    Reviewed-by: Mahesh Kumar
    (cherry picked from commit 54d20ed1fff23c7d2633f01fc788111bf9c51c5d)
    Signed-off-by: Jani Nikula
    Link: https://patchwork.freedesktop.org/patch/msgid/20170717111355.4523-1-maarten.lankhorst@linux.intel.com
    Signed-off-by: Daniel Vetter

    Maarten Lankhorst
     
  • The goal here was to minimise doing any thing or any check inside the
    kernel that was not strictly required. For a userspace that assumes
    complete control over the cache domains, the kernel is usually using
    outdated information and may trigger clflushes where none were
    required.

    However, swapping is a situation where userspace has no knowledge of the
    domain transfer, and will leave the object in the CPU cache. The kernel
    must flush this out to the backing storage prior to use with the GPU. As
    we use an asynchronous task tracked by an implicit fence for this, we
    also need to cancel the ASYNC flag on the object so that the object will
    wait for the clflush to complete before being executed. This also absolves
    userspace of the responsibility imposed by commit 77ae9957897d ("drm/i915:
    Enable userspace to opt-out of implicit fencing") that its needed to ensure
    that the object was out of the CPU cache prior to use on the GPU.

    Fixes: 77ae9957897d ("drm/i915: Enable userspace to opt-out of implicit fencing")
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101571
    Signed-off-by: Chris Wilson
    Cc: Joonas Lahtinen
    Cc: Jason Ekstrand
    Reviewed-by: Jason Ekstrand
    Link: https://patchwork.freedesktop.org/patch/msgid/20170721145037.25105-5-chris@chris-wilson.co.uk
    Reviewed-by: Joonas Lahtinen
    Signed-off-by: Daniel Vetter
    (cherry picked from commit 0f46daa1a273779a0b73d768a788ca3f04238f9c)
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • I was being overly paranoid in not updating the execobject.offset after
    performing the fallback copy where we set reloc.presumed_offset to -1.
    The thinking was to ensure that a subsequent NORELOC execbuf would be
    forced to process the invalid relocations. However this is overkill so
    long as we *only* update the execobject.offset following a successful
    update of the relocation value witin the batch. If we have to repeat the
    execbuf due to a later interruption, then we may skip the relocations on
    the second pass (honouring NORELOC) since the execobject.offset match
    the actual offsets (even though reloc.presumed_offset is garbage).

    Subsequent calls to execbuf with NORELOC should themselves ensure that
    the reloc.presumed_offset have been corrected in case of future
    migration.

    Reporting back the actual execobject.offset, even when
    reloc.presumed_offset is garbage, ensures that reuse of those objects
    use the latest information to avoid relocations.

    Fixes: 2889caa92321 ("drm/i915: Eliminate lots of iterations over the execobjects array")
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101635
    Signed-off-by: Chris Wilson
    Cc: Joonas Lahtinen
    Cc: Tvrtko Ursulin
    Link: https://patchwork.freedesktop.org/patch/msgid/20170721145037.25105-4-chris@chris-wilson.co.uk
    Reviewed-by: Joonas Lahtinen
    Signed-off-by: Daniel Vetter
    (cherry picked from commit 1f727d9e725a408ef58d159c20fb2e51818ff153)
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • If we fail to acquire a fence (for old school fenced GPU access) then we
    unwind the vma reservation, including its pin. However, we were making
    the execobject as holding the pin before erring out, leading to a double
    unpin:

    [ 3193.991802] kernel BUG at drivers/gpu/drm/i915/i915_vma.h:287!
    [ 3193.998131] invalid opcode: 0000 [#1] PREEMPT SMP
    [ 3194.002816] Modules linked in: snd_hda_intel i915 vgem snd_hda_codec_analog snd_hda_codec_generic coretemp snd_hda_codec snd_hwdep snd_hda_core snd_pcm lpc_ich mei_me e1000e mei prime_numbers ptp pps_core [last unloaded: i915]
    [ 3194.022841] CPU: 0 PID: 8123 Comm: kms_flip Tainted: G U 4.13.0-rc1-CI-CI_DRM_471+ #1
    [ 3194.031765] Hardware name: Dell Inc. OptiPlex 755 /0PU052, BIOS A04 11/05/2007
    [ 3194.040343] task: ffff8800785d4c40 task.stack: ffffc90001768000
    [ 3194.046339] RIP: 0010:eb_release_vmas.isra.6+0x119/0x180 [i915]
    [ 3194.052234] RSP: 0018:ffffc9000176ba80 EFLAGS: 00010246
    [ 3194.057439] RAX: 00000000000003c0 RBX: ffff8800710fc2d8 RCX: ffff8800588e4f48
    [ 3194.064546] RDX: ffffffff1fffffff RSI: 00000000ffffffff RDI: ffff8800588e00d0
    [ 3194.071654] RBP: ffffc9000176bab0 R08: 0000000000000000 R09: 0000000000000000
    [ 3194.078761] R10: 0000000000000040 R11: 0000000000000001 R12: ffff880060822f00
    [ 3194.085867] R13: 0000000000000310 R14: 00000000000003b8 R15: ffffc9000176bbb0
    [ 3194.092975] FS: 00007fd2b94aba40(0000) GS:ffff88007d200000(0000) knlGS:0000000000000000
    [ 3194.101033] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 3194.106754] CR2: 00007ffbec3ff000 CR3: 0000000074e67000 CR4: 00000000000006f0
    [ 3194.113861] Call Trace:
    [ 3194.116321] eb_relocate_slow+0x67/0x4e0 [i915]
    [ 3194.120861] i915_gem_do_execbuffer+0x429/0x1260 [i915]
    [ 3194.126070] ? lock_acquire+0xb5/0x210
    [ 3194.129803] ? __might_fault+0x39/0x90
    [ 3194.133563] i915_gem_execbuffer2+0x9b/0x1b0 [i915]
    [ 3194.138447] ? i915_gem_execbuffer+0x2b0/0x2b0 [i915]
    [ 3194.143478] drm_ioctl_kernel+0x64/0xb0
    [ 3194.147298] drm_ioctl+0x2cd/0x390
    [ 3194.150710] ? i915_gem_execbuffer+0x2b0/0x2b0 [i915]
    [ 3194.155741] ? finish_task_switch+0xa5/0x210
    [ 3194.159993] ? finish_task_switch+0x6a/0x210
    [ 3194.164247] do_vfs_ioctl+0x90/0x670
    [ 3194.167806] ? entry_SYSCALL_64_fastpath+0x5/0xb1
    [ 3194.172492] ? __this_cpu_preempt_check+0x13/0x20
    [ 3194.177176] ? trace_hardirqs_on_caller+0xe7/0x1c0
    [ 3194.181946] SyS_ioctl+0x3c/0x70
    [ 3194.185159] entry_SYSCALL_64_fastpath+0x1c/0xb1
    [ 3194.189756] RIP: 0033:0x7fd2b76a8587
    [ 3194.193314] RSP: 002b:00007fff074845b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [ 3194.200855] RAX: ffffffffffffffda RBX: ffffffff8146da43 RCX: 00007fd2b76a8587
    [ 3194.207962] RDX: 00007fff074846e0 RSI: 0000000040406469 RDI: 0000000000000003
    [ 3194.215068] RBP: ffffc9000176bf88 R08: 0000000000000000 R09: 0000000000000003
    [ 3194.222175] R10: 00007fd2b796bb58 R11: 0000000000000246 R12: 00007fff07484880
    [ 3194.229280] R13: 0000000000000003 R14: 0000000040406469 R15: 0000000000000000
    [ 3194.236386] ? __this_cpu_preempt_check+0x13/0x20
    [ 3194.241070] Code: 24 b0 00 00 00 48 85 c9 0f 84 6c ff ff ff 8b 41 20 85 c0 7e 73 83 e8 01 89 41 20 41 8b 84 24 e8 00 00 00 a8 0f 0f 85 5f ff ff ff 0b 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d f3 c3 49 8b 84
    [ 3194.259943] RIP: eb_release_vmas.isra.6+0x119/0x180 [i915] RSP: ffffc9000176ba80
    [ 3194.268047] ---[ end trace 1d7348c6575d8800 ]---
    [ 3673.658819] softdog: Initiating panic
    [ 3673.662471] Kernel panic - not syncing: Software Watchdog Timer expired
    [ 3673.669066] Kernel Offset: disabled
    [ 3673.672541] Rebooting in 1 seconds..

    Reported-by: Tomi Sarvela
    Fixes: 2889caa92321 ("drm/i915: Eliminate lots of iterations over the execobjects array")
    Signed-off-by: Chris Wilson
    Cc: Joonas Lahtinen
    Link: https://patchwork.freedesktop.org/patch/msgid/20170721145037.25105-3-chris@chris-wilson.co.uk
    Reviewed-by: Joonas Lahtinen
    Signed-off-by: Daniel Vetter
    (cherry picked from commit 1da7b54c46bcfe5484af0b27d8c9003b238031b0)
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • After we detect a i915_vma pin overflow, we call __i915_vma_unpin to
    cleanup. However, on an overflow the pin_count bitfield will be zero,
    triggering an assertion, even though we the intention is to merely warn
    and report the error back to the user (as historically the culprit has
    be a leak in the display code).

    Fixes: 20dfbde463c8 ("drm/i915: Wrap vma->pin_count accessors with small inline helpers")
    Signed-off-by: Chris Wilson
    Cc: Joonas Lahtinen
    Link: https://patchwork.freedesktop.org/patch/msgid/20170721145037.25105-2-chris@chris-wilson.co.uk
    Reviewed-by: Joonas Lahtinen
    Signed-off-by: Daniel Vetter
    (cherry picked from commit 67fddd902b8e37b15a905c287ce4e40f52a564af)
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • The condition for setting the Loadgen Select bit of
    PORT_TX_DW4 register during DDI Vswing Sequence should be
    Bit rate < 6GHz. This patch fixes this condition.
    While at it also remove the redundant paranthesis.

    Fixes: cf54ca8bc567 ("drm/i915/cnl: Implement voltage swing sequence.")
    Cc: Paulo Zanoni
    Cc: Rodrigo Vivi
    Signed-off-by: Manasi Navare
    Reviewed-by: Paulo Zanoni
    Signed-off-by: Paulo Zanoni
    Link: https://patchwork.freedesktop.org/patch/msgid/1500329122-32662-1-git-send-email-manasi.d.navare@intel.com
    Signed-off-by: Daniel Vetter
    (cherry picked from commit a8e45a1c42d11597e975f3e5f2fe182f90cdaa7f)
    Signed-off-by: Daniel Vetter

    Navare, Manasi D
     
  • The scaler allocation code depends on a non-zero default value for the
    crtc scaler_id, so make sure we initialize the scaler state accordingly
    even if the crtc is off. This fixes at least an initial YUV420 modeset
    (added in a follow-up patchset by Shashank) when booting with the screen
    off: after the initial HW readout and modeset which enables the scaler a
    subsequent modeset will disable the scaler which isn't properly
    allocated. This results in a funky HW state where the pipe scaler HW
    registers can't be modified and the normally black screen is grey and
    shifted to the right or jitters.

    The problem was revealed by Shashank's YUV420 patchset and first
    reported by Ville.

    v2:
    - In the stable tag also include versions which need backporting (Jani)

    Cc: Jani Nikula
    Cc: Shashank Sharma
    Cc: Ville Syrjälä
    Cc: Chandra Konduru
    Cc: Matt Roper
    Cc: # 4.2.x
    Reported-by: Ville Syrjälä
    Fixes: a1b2278e4dfc ("drm/i915: skylake panel fitting using shared scalers")
    Signed-off-by: Imre Deak
    Reviewed-by: Mahesh Kumar
    Link: https://patchwork.freedesktop.org/patch/msgid/20170720112820.26816-1-imre.deak@intel.com
    Signed-off-by: Daniel Vetter
    (cherry picked from commit 5fb9dadf336f3590c799e8cbde348215dccc2aa2)
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter

    Imre Deak
     
  • Goto the right label in case of error, otherwise there is a leak.
    This has been introduced by c5cf9a9147ff. In this patch a goto has not been
    updated.

    Fixes: c5cf9a9147ff ("drm/i915: Create a kmem_cache to allocate struct i915_priolist from")
    Signed-off-by: Christophe JAILLET
    Link: https://patchwork.freedesktop.org/patch/msgid/20170719223503.30580-1-christophe.jaillet@wanadoo.fr
    Reviewed-by: Tvrtko Ursulin
    Signed-off-by: Chris Wilson
    (cherry picked from commit a5ec7fe81a6ec38cb8b8a798d0552cbcadce7aa9)
    Signed-off-by: Daniel Vetter

    Christophe JAILLET
     
  • Taking the modeset locks unconditionally isn't the greatest idea,
    because atm that part is still broken and times out (and then atomic
    keels over). And there's really no reason to do so, the old code
    didn't do that either.

    To make the patch a bit simpler let's also nuke 2 cases that are only
    around for the old mmioflip paths. Atomic nonblocking workers will not
    die (minus bugs) when a gpu reset happens.

    And of course this doesn't fix any of the gpu reset vs. modeset
    deadlock fun, but it at least stop modern CI machines from keeling
    over all over the place for no reason at all.

    And we still have the explicit testcases to run the fake gpu reset, so
    coverage isn't that much worse.

    v2: Split out additional changes on top, restrict this to purely reducing
    the critical section of modeset locks.

    v2: Review from Maarten
    - update comments
    - don't oops when state is NULL in intel_finish_reset, but try to at
    least still drop locks properly. The hw is going to be toast anyway.

    Fixes: 739748939974 ("drm/i915: Fix modeset handling during gpu reset, v5.")
    Cc: Maarten Lankhorst
    Reviewed-by: Maarten Lankhorst
    Cc: Ville Syrjälä
    Signed-off-by: Daniel Vetter
    Link: https://patchwork.freedesktop.org/patch/msgid/20170719125502.25696-3-daniel.vetter@ffwll.ch
    (cherry picked from commit ce87ea15ebc60a9f8f156b2549f7b2cf7fe48d04)
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • Pull parisc fixes from Helge Deller:

    - The majority of lines changed are due to regenerated defconfig files.

    - The support for the Page Deallocation Table (PDT) which was merged in
    the merge window for 4.13 contained a bug which crashes the kernel if
    a bad page is reported by firmware. This is now fixed and the kernel
    messages will show which memory slot holds the broken DIMM.

    - Commit 3a166fc2d4ef ("kbuild: handle libs-y archives separately from
    built-in.o archives") broke linking the parisc kernel due to
    millicode symbols which can't be reached then any longer. This was
    fixed by modifying the parisc vmlinux.lds linker script.

    - If the stack checker panics on stack overflow, avoid recursive
    panics.

    - Some parisc machines can't physically power off and thus instead
    start after some time to flood the console by presumably detected
    soft lockups. Avoid this by disabling the lockup detectors before
    entering the endless for-next loop.

    - Dave Anglin provided fixes which prevents TLB speculation on flushed
    pages on PA8800/PA9000 CPUs.

    - Arvind Yadav sent a trivial patch to constify the attribute_group
    structure in our firmware on-board-flash storage driver
    (pdc_stable.c)

    * 'parisc-4.13-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Extend disabled preemption in copy_user_page
    parisc: Prevent TLB speculation on flushed pages on CPUs that only support equivalent aliases
    parisc: Suspend lockup detectors before system halt
    parisc: Show DIMM slot number which holds broken memory module
    parisc: Add function to return DIMM slot of physical address
    parisc: Fix crash when calling PDC_PAT_MEM PDT firmware function
    parisc: regenerate defconfig files
    parisc: pdc_stable: constify attribute_group structures.
    parisc: Merge millicode routines via linker script
    parisc: Disable further stack checks when panic occurs during stack check

    Linus Torvalds