1. 26 2月, 2016 8 次提交
    • L
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 73056bbc
      Linus Torvalds 提交于
      Pull KVM fixes from Paolo Bonzini:
       "KVM/ARM fixes:
         - Fix per-vcpu vgic bitmap allocation
         - Do not give copy random memory on MMIO read
         - Fix GICv3 APR register restore order
      
        KVM/x86 fixes:
         - Fix ubsan warning
         - Fix hardware breakpoints in a guest vs. preempt notifiers
         - Fix Hurd
      
        Generic:
         - use __GFP_NOWARN together with GFP_NOWAIT"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: x86: MMU: fix ubsan index-out-of-range warning
        arm64: KVM: vgic-v3: Restore ICH_APR0Rn_EL2 before ICH_APR1Rn_EL2
        KVM: async_pf: do not warn on page allocation failures
        KVM: x86: fix conversion of addresses to linear in 32-bit protected mode
        KVM: x86: fix missed hardware breakpoints
        arm/arm64: KVM: Feed initialized memory to MMIO accesses
        KVM: arm/arm64: vgic: Ensure bitmaps are long enough
      73056bbc
    • L
      Merge tag 'renesas-sh-drivers-fixes-for-v4.5' of... · 5882c169
      Linus Torvalds 提交于
      Merge tag 'renesas-sh-drivers-fixes-for-v4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas
      
      Pull SuperH driver fix from Simon Horman:
       "Restore legacy clock domain on SuperH platforms"
      
      * tag 'renesas-sh-drivers-fixes-for-v4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
        drivers: sh: Restore legacy clock domain on SuperH platforms
      5882c169
    • L
      Merge tag 'powerpc-4.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 9aca90a7
      Linus Torvalds 提交于
      Pull powerpc fixes from Michael Ellerman:
       - eeh: Fix partial hotplug criterion from Gavin Shan
       - mm: Clear the invalid slot information correctly from Aneesh Kumar K.V
      
      * tag 'powerpc-4.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/mm/hash: Clear the invalid slot information correctly
        powerpc/eeh: Fix partial hotplug criterion
      9aca90a7
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 70d070f5
      Linus Torvalds 提交于
      Pull s390 bugfixes from Martin Schwidefsky:
       "Two critical bug fixes for the signal handling"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/fpu: signals vs. floating point control register
        s390/compat: correct restore of high gprs on signal return
      70d070f5
    • L
      Merge tag 'nfsd-4.5-1' of git://linux-nfs.org/~bfields/linux · 81904dbb
      Linus Torvalds 提交于
      Pull nfsd bugfix from Bruce Fields:
       "One fix for a bug that could cause a NULL write past the end of a
        buffer in case of unusually long writes to some system interfaces used
        by mountd and other nfs support utilities"
      
      * tag 'nfsd-4.5-1' of git://linux-nfs.org/~bfields/linux:
        sunrpc/cache: fix off-by-one in qword_get()
      81904dbb
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 3acdb84c
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "This is a bit larger than Id like, but I asked the Intel guys to pull
        in some Skylake fixes in the possibly vain hope that Skylake might be
        more functional now that I'm seeing production hardware shipping.
      
        For i915, it's mostly the same patch in a few places, making sure the
        hw doesn't turn off when we are programming it.
      
        Apart from that are two nouveau fixes, one for a module defer bug, and
        one for using nouveau on new Lenovo P50 models.
      
        Then there are a bunch of AMDGPU fixes, one is a fix for v4.4 vblank
        regressions, and some PM fixes"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (26 commits)
        drm/nouveau/disp/dp: ensure sink is powered up before attempting link training
        drm/nouveau: platform: Fix deferred probe
        drm/amdgpu: disable direct VM updates when vm_debug is set
        amdgpu: fix NULL pointer dereference at tonga_check_states_equal
        drm/i915/gen9: Verify and enforce dc6 state writes
        drm/i915/gen9: Check for DC state mismatch
        drm/radeon/pm: adjust display configuration after powerstate
        drm/amdgpu/pm: adjust display configuration after powerstate
        drm/amdgpu/pm: add some checks for PX
        drm/amdgpu: fix locking in force performance level
        drm/amdgpu/gfx8: fix priv reg interrupt enable
        drm/i915/skl: Ensure HW is powered during DDB HW state readout
        drm/i915/lvds: Ensure the HW is powered during HW state readout
        drm/i915/hdmi: Ensure the HW is powered during HW state readout
        drm/i915/dsi: Ensure the HW is powered during HW state readout
        drm/i915/dp: Ensure the HW is powered during HW state readout
        drm/i915: Ensure the HW is powered when accessing the CRC HW block
        drm/i915/ddi: Ensure the HW is powered during HW state readout
        drm/i915/crt: Ensure the HW is powered during HW state readout
        drm/i915: Ensure the HW is powered during HW access in assert_pipe
        ...
      3acdb84c
    • L
      Merge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · 3d7b3654
      Linus Torvalds 提交于
      Pull libnvdimm fixes from Dan Williams:
      
       - Two fixes for compatibility with the ACPI 6.1 specification.
      
         Without these fixes multi-interface DIMMs will fail to be probed, and
         address range scrub commands to find memory errors will give results
         that the kernel will mis-interpret.  For multi-interface DIMMs Linux
         will accept either the original 6.0 implementation or 6.1.
      
         For address range scrub we'll only support 6.1 since ACPI formalized
         this DSM differently than the original example [1] implemented in
         v4.2.  The expectation is that production systems will only ever ship
         the ACPI 6.1 address range scrub command definition.
      
       - The wider async address range scrub work targeting 4.6 discovered
         that the original synchronous implementation in 4.5 is not sizing its
         return buffer correctly.
      
       - Arnd caught that my recent fix to the size of the pfn_t flags missed
         updating the flags variable used in the pmem driver.
      
       - Toshi found that we mishandle the memremap() return value in
         devm_memremap().
      
      * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
        nvdimm: use 'u64' for pfn flags
        devm_memremap: Fix error value when memremap failed
        nfit: update address range scrub commands to the acpi 6.1 format
        libnvdimm, tools/testing/nvdimm: fix 'ars_status' output buffer sizing
        nfit: fix multi-interface dimm handling, acpi6.1 compatibility
      3d7b3654
    • L
      Merge tag 'for-v4.5-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · 1ebe3839
      Linus Torvalds 提交于
      Pull power supply fixes from Sebastian Reichel:
       "Add a regression fix for changed sysfs path of bq27xxx_battery and
        update MAINTAINERS file"
      
      * tag 'for-v4.5-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply:
        power: bq27xxx_battery: Restore device name
        MAINTAINERS: update bq27xxx driver
      1ebe3839
  2. 25 2月, 2016 14 次提交
    • P
      Merge tag 'kvm-arm-for-4.5-rc6' of... · 0fb00d32
      Paolo Bonzini 提交于
      Merge tag 'kvm-arm-for-4.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master
      
      KVM/ARM fixes for 4.5-rc6
      
      - Fix per-vcpu vgic bitmap allocation
      - Do not give copy random memory on MMIO read
      - Fix GICv3 APR register restore order
      0fb00d32
    • M
      KVM: x86: MMU: fix ubsan index-out-of-range warning · 17e4bce0
      Mike Krinkin 提交于
      Ubsan reports the following warning due to a typo in
      update_accessed_dirty_bits template, the patch fixes
      the typo:
      
      [  168.791851] ================================================================================
      [  168.791862] UBSAN: Undefined behaviour in arch/x86/kvm/paging_tmpl.h:252:15
      [  168.791866] index 4 is out of range for type 'u64 [4]'
      [  168.791871] CPU: 0 PID: 2950 Comm: qemu-system-x86 Tainted: G           O L  4.5.0-rc5-next-20160222 #7
      [  168.791873] Hardware name: LENOVO 23205NG/23205NG, BIOS G2ET95WW (2.55 ) 07/09/2013
      [  168.791876]  0000000000000000 ffff8801cfcaf208 ffffffff81c9f780 0000000041b58ab3
      [  168.791882]  ffffffff82eb2cc1 ffffffff81c9f6b4 ffff8801cfcaf230 ffff8801cfcaf1e0
      [  168.791886]  0000000000000004 0000000000000001 0000000000000000 ffffffffa1981600
      [  168.791891] Call Trace:
      [  168.791899]  [<ffffffff81c9f780>] dump_stack+0xcc/0x12c
      [  168.791904]  [<ffffffff81c9f6b4>] ? _atomic_dec_and_lock+0xc4/0xc4
      [  168.791910]  [<ffffffff81da9e81>] ubsan_epilogue+0xd/0x8a
      [  168.791914]  [<ffffffff81daafa2>] __ubsan_handle_out_of_bounds+0x15c/0x1a3
      [  168.791918]  [<ffffffff81daae46>] ? __ubsan_handle_shift_out_of_bounds+0x2bd/0x2bd
      [  168.791922]  [<ffffffff811287ef>] ? get_user_pages_fast+0x2bf/0x360
      [  168.791954]  [<ffffffffa1794050>] ? kvm_largepages_enabled+0x30/0x30 [kvm]
      [  168.791958]  [<ffffffff81128530>] ? __get_user_pages_fast+0x360/0x360
      [  168.791987]  [<ffffffffa181b818>] paging64_walk_addr_generic+0x1b28/0x2600 [kvm]
      [  168.792014]  [<ffffffffa1819cf0>] ? init_kvm_mmu+0x1100/0x1100 [kvm]
      [  168.792019]  [<ffffffff8129e350>] ? debug_check_no_locks_freed+0x350/0x350
      [  168.792044]  [<ffffffffa1819cf0>] ? init_kvm_mmu+0x1100/0x1100 [kvm]
      [  168.792076]  [<ffffffffa181c36d>] paging64_gva_to_gpa+0x7d/0x110 [kvm]
      [  168.792121]  [<ffffffffa181c2f0>] ? paging64_walk_addr_generic+0x2600/0x2600 [kvm]
      [  168.792130]  [<ffffffff812e848b>] ? debug_lockdep_rcu_enabled+0x7b/0x90
      [  168.792178]  [<ffffffffa17d9a4a>] emulator_read_write_onepage+0x27a/0x1150 [kvm]
      [  168.792208]  [<ffffffffa1794d44>] ? __kvm_read_guest_page+0x54/0x70 [kvm]
      [  168.792234]  [<ffffffffa17d97d0>] ? kvm_task_switch+0x160/0x160 [kvm]
      [  168.792238]  [<ffffffff812e848b>] ? debug_lockdep_rcu_enabled+0x7b/0x90
      [  168.792263]  [<ffffffffa17daa07>] emulator_read_write+0xe7/0x6d0 [kvm]
      [  168.792290]  [<ffffffffa183b620>] ? em_cr_write+0x230/0x230 [kvm]
      [  168.792314]  [<ffffffffa17db005>] emulator_write_emulated+0x15/0x20 [kvm]
      [  168.792340]  [<ffffffffa18465f8>] segmented_write+0xf8/0x130 [kvm]
      [  168.792367]  [<ffffffffa1846500>] ? em_lgdt+0x20/0x20 [kvm]
      [  168.792374]  [<ffffffffa14db512>] ? vmx_read_guest_seg_ar+0x42/0x1e0 [kvm_intel]
      [  168.792400]  [<ffffffffa1846d82>] writeback+0x3f2/0x700 [kvm]
      [  168.792424]  [<ffffffffa1846990>] ? em_sidt+0xa0/0xa0 [kvm]
      [  168.792449]  [<ffffffffa185554d>] ? x86_decode_insn+0x1b3d/0x4f70 [kvm]
      [  168.792474]  [<ffffffffa1859032>] x86_emulate_insn+0x572/0x3010 [kvm]
      [  168.792499]  [<ffffffffa17e71dd>] x86_emulate_instruction+0x3bd/0x2110 [kvm]
      [  168.792524]  [<ffffffffa17e6e20>] ? reexecute_instruction.part.110+0x2e0/0x2e0 [kvm]
      [  168.792532]  [<ffffffffa14e9a81>] handle_ept_misconfig+0x61/0x460 [kvm_intel]
      [  168.792539]  [<ffffffffa14e9a20>] ? handle_pause+0x450/0x450 [kvm_intel]
      [  168.792546]  [<ffffffffa15130ea>] vmx_handle_exit+0xd6a/0x1ad0 [kvm_intel]
      [  168.792572]  [<ffffffffa17f6a6c>] ? kvm_arch_vcpu_ioctl_run+0xbdc/0x6090 [kvm]
      [  168.792597]  [<ffffffffa17f6bcd>] kvm_arch_vcpu_ioctl_run+0xd3d/0x6090 [kvm]
      [  168.792621]  [<ffffffffa17f6a6c>] ? kvm_arch_vcpu_ioctl_run+0xbdc/0x6090 [kvm]
      [  168.792627]  [<ffffffff8293b530>] ? __ww_mutex_lock_interruptible+0x1630/0x1630
      [  168.792651]  [<ffffffffa17f5e90>] ? kvm_arch_vcpu_runnable+0x4f0/0x4f0 [kvm]
      [  168.792656]  [<ffffffff811eeb30>] ? preempt_notifier_unregister+0x190/0x190
      [  168.792681]  [<ffffffffa17e0447>] ? kvm_arch_vcpu_load+0x127/0x650 [kvm]
      [  168.792704]  [<ffffffffa178e9a3>] kvm_vcpu_ioctl+0x553/0xda0 [kvm]
      [  168.792727]  [<ffffffffa178e450>] ? vcpu_put+0x40/0x40 [kvm]
      [  168.792732]  [<ffffffff8129e350>] ? debug_check_no_locks_freed+0x350/0x350
      [  168.792735]  [<ffffffff82946087>] ? _raw_spin_unlock+0x27/0x40
      [  168.792740]  [<ffffffff8163a943>] ? handle_mm_fault+0x1673/0x2e40
      [  168.792744]  [<ffffffff8129daa8>] ? trace_hardirqs_on_caller+0x478/0x6c0
      [  168.792747]  [<ffffffff8129dcfd>] ? trace_hardirqs_on+0xd/0x10
      [  168.792751]  [<ffffffff812e848b>] ? debug_lockdep_rcu_enabled+0x7b/0x90
      [  168.792756]  [<ffffffff81725a80>] do_vfs_ioctl+0x1b0/0x12b0
      [  168.792759]  [<ffffffff817258d0>] ? ioctl_preallocate+0x210/0x210
      [  168.792763]  [<ffffffff8174aef3>] ? __fget+0x273/0x4a0
      [  168.792766]  [<ffffffff8174acd0>] ? __fget+0x50/0x4a0
      [  168.792770]  [<ffffffff8174b1f6>] ? __fget_light+0x96/0x2b0
      [  168.792773]  [<ffffffff81726bf9>] SyS_ioctl+0x79/0x90
      [  168.792777]  [<ffffffff82946880>] entry_SYSCALL_64_fastpath+0x23/0xc1
      [  168.792780] ================================================================================
      Signed-off-by: NMike Krinkin <krinkin.m.u@gmail.com>
      Reviewed-by: NXiao Guangrong <guangrong.xiao@linux.intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      17e4bce0
    • D
      Merge branch 'linux-4.5' of git://github.com/skeggsb/linux into drm-fixes · 3772e727
      Dave Airlie 提交于
      single for for eDP panel issues on Lenovo P50
      * 'linux-4.5' of git://github.com/skeggsb/linux:
        drm/nouveau/disp/dp: ensure sink is powered up before attempting link training
      3772e727
    • B
      drm/nouveau/disp/dp: ensure sink is powered up before attempting link training · 95664e66
      Ben Skeggs 提交于
      This can happen under some annoying circumstances, and is a quick fix
      until more substantial changes can be made.
      
      Fixed eDP mode changes on (at least) the Lenovo P50.
      Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
      Cc: stable@vger.kernel.org
      95664e66
    • T
      drm/nouveau: platform: Fix deferred probe · 870571a5
      Thierry Reding 提交于
      The error cleanup paths aren't quite correct and will crash upon
      deferred probe.
      
      Cc: stable@vger.kernel.org # v4.3+
      Reviewed-by: NBen Skeggs <bskeggs@redhat.com>
      Reviewed-by: NAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      870571a5
    • G
      drivers: sh: Restore legacy clock domain on SuperH platforms · 0378ba48
      Geert Uytterhoeven 提交于
      CONFIG_ARCH_SHMOBILE is not only enabled for Renesas ARM platforms
      (which are DT based and multi-platform), but also on a select set of
      Renesas SuperH platforms (SH7722/SH7723/SH7724/SH7343/SH7366). Hence
      since commit 0ba58de2 ("drivers: sh: Get rid of
      CONFIG_ARCH_SHMOBILE_MULTI"), the legacy clock domain is no longer
      installed on these SuperH platforms, and module clocks may not be
      enabled when needed, leading to driver failures.
      
      To fix this, add an additional check for CONFIG_OF.
      
      Fixes: 0ba58de2 ("drivers: sh: Get rid of CONFIG_ARCH_SHMOBILE_MULTI").
      Signed-off-by: NGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: NSimon Horman <horms+renesas@verge.net.au>
      0378ba48
    • D
      Merge tag 'drm-intel-fixes-2016-02-22' of git://anongit.freedesktop.org/drm-intel into drm-fixes · 398cb0c9
      Dave Airlie 提交于
      This is a bit large, but it really helps Skylake bugs we are seeing
      on a number of laptops.
      
      Most of the commits are quite similar, ensuring the display power
      doesn't vanish under us during hardware access. Also do note that it's
      not just Skylake that's affected.
      
      * tag 'drm-intel-fixes-2016-02-22' of git://anongit.freedesktop.org/drm-intel:
        drm/i915/gen9: Verify and enforce dc6 state writes
        drm/i915/gen9: Check for DC state mismatch
        drm/i915/skl: Ensure HW is powered during DDB HW state readout
        drm/i915/lvds: Ensure the HW is powered during HW state readout
        drm/i915/hdmi: Ensure the HW is powered during HW state readout
        drm/i915/dsi: Ensure the HW is powered during HW state readout
        drm/i915/dp: Ensure the HW is powered during HW state readout
        drm/i915: Ensure the HW is powered when accessing the CRC HW block
        drm/i915/ddi: Ensure the HW is powered during HW state readout
        drm/i915/crt: Ensure the HW is powered during HW state readout
        drm/i915: Ensure the HW is powered during HW access in assert_pipe
        drm/i915: Ensure the HW is powered when disabling VGA
        drm/i915/ibx: Ensure the HW is powered during PLL HW readout
        drm/i915: Ensure the HW is powered during display pipe HW readout
        drm/i915: Add helper to get a display power ref if it was already enabled
      398cb0c9
    • D
      Merge branch 'drm-fixes-4.5' of git://people.freedesktop.org/~agd5f/linux into drm-fixes · ad00a57a
      Dave Airlie 提交于
      A few radeon and amdgpu fixes for 4.5.  A few further fixes for the vblank
      regressions in 4.4 and a couple of other minor fixes.
      
      * 'drm-fixes-4.5' of git://people.freedesktop.org/~agd5f/linux:
        drm/amdgpu: disable direct VM updates when vm_debug is set
        amdgpu: fix NULL pointer dereference at tonga_check_states_equal
        drm/radeon/pm: adjust display configuration after powerstate
        drm/amdgpu/pm: adjust display configuration after powerstate
        drm/amdgpu/pm: add some checks for PX
        drm/amdgpu: fix locking in force performance level
        drm/amdgpu/gfx8: fix priv reg interrupt enable
        drm/amdgpu: Don't hang in amdgpu_flip_work_func on disabled crtc.
        drm/radeon: Don't hang in radeon_flip_work_func on disabled crtc. (v2)
      ad00a57a
    • L
      Merge tag 'arc-4.5-rc6-fixes-upd' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc · 6dc390ad
      Linus Torvalds 提交于
      Pull ARC fixes from Vineet Gupta:
       - Fix for csd deadlock due to missing self IPI
       - Accompanying IPI cleanups / optimization
       - Brown paper bag bug in one of the cleanups above
       - Boot reporting updates for new hardware features
       - Don't force DEVTMPFS if INITRAMFS
      
      * tag 'arc-4.5-rc6-fixes-upd' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
        arc: SMP: CONFIG_ARC_IPI_DBG cleanup
        ARC: SMP: No need for CONFIG_ARC_IPI_DBG
        ARCv2: Elide sending new cross core intr if receiver didn't ack prev
        ARCv2: SMP: Push IPI_IRQ into IPI provider
        ARC: [intc-compact] Remove IPI setup from ARCompact port
        ARCv2: SMP: Emulate IPI to self using software triggered interrupt
        arc: get rid of DEVTMPFS dependency on INITRAMFS_SOURCE
        ARCv2: boot report CCMs (Closely Coupled Memories)
        ARCv2: boot print Low Latency Memory
        ARC: Assume multiplier is always present
      6dc390ad
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · aa263c43
      Linus Torvalds 提交于
      Pull vfs fixes from Al Viro:
       "Assorted fixes - xattr one from this cycle, the rest - stable fodder"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        fs/pnode.c: treat zero mnt_group_id-s as unequal
        affs_do_readpage_ofs(): just use kmap_atomic() around memcpy()
        xattr handlers: plug a lock leak in simple_xattr_list
        fs: allow no_seek_end_llseek to actually seek
      aa263c43
    • K
      thp: call pmdp_invalidate() with correct virtual address · 2ac015e2
      Kirill A. Shutemov 提交于
      Sebastian Ott and Gerald Schaefer reported random crashes on s390.
      It was bisected to my THP refcounting patchset.
      
      The problem is that pmdp_invalidated() called with wrong virtual
      address. It got offset up by HPAGE_PMD_SIZE by loop over ptes.
      
      The solution is to introduce new variable to be used in loop and don't
      touch 'haddr'.
      Signed-off-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Reported-and-tested-by: NGerald Schaefer <gerald.schaefer@de.ibm.com>
      Reported-and-tested-by Sebastian Ott <sebott@linux.vnet.ibm.com>
      Reviewed-by: NWill Deacon <will.deacon@arm.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2ac015e2
    • C
      drm/amdgpu: disable direct VM updates when vm_debug is set · 6378076b
      Christian König 提交于
      That should make user space bugs more obvious.
      Signed-off-by: NChristian König <christian.koenig@amd.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      6378076b
    • B
      amdgpu: fix NULL pointer dereference at tonga_check_states_equal · 827108d0
      Bradley Pankow 提交于
      The event_data passed from pem_fini was not cleared upon initialization.
      This caused NULL checks to pass and cast_const_phw_tonga_power_state to
      attempt to dereference an invalid pointer. Clear the event_data in
      pem_init and pem_fini before calling pem_handle_event.
      Reviewed-by: NRex Zhu <Rex.Zhu@amd.com>
      Signed-off-by: NBradley Pankow <btpankow@gmail.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      827108d0
    • M
      arm64: KVM: vgic-v3: Restore ICH_APR0Rn_EL2 before ICH_APR1Rn_EL2 · fd451b90
      Marc Zyngier 提交于
      The GICv3 architecture spec says:
      
      Writing to the active priority registers in any order other than
      the following order will result in UNPREDICTABLE behavior:
      - ICH_AP0R<n>_EL2.
      - ICH_AP1R<n>_EL2.
      
      So let's not pointlessly go against the rule...
      Acked-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      fd451b90
  3. 24 2月, 2016 18 次提交
    • C
      KVM: async_pf: do not warn on page allocation failures · d7444794
      Christian Borntraeger 提交于
      In async_pf we try to allocate with NOWAIT to get an element quickly
      or fail. This code also handle failures gracefully. Lets silence
      potential page allocation failures under load.
      
      qemu-system-s39: page allocation failure: order:0,mode:0x2200000
      [...]
      Call Trace:
      ([<00000000001146b8>] show_trace+0xf8/0x148)
      [<000000000011476a>] show_stack+0x62/0xe8
      [<00000000004a36b8>] dump_stack+0x70/0x98
      [<0000000000272c3a>] warn_alloc_failed+0xd2/0x148
      [<000000000027709e>] __alloc_pages_nodemask+0x94e/0xb38
      [<00000000002cd36a>] new_slab+0x382/0x400
      [<00000000002cf7ac>] ___slab_alloc.constprop.30+0x2dc/0x378
      [<00000000002d03d0>] kmem_cache_alloc+0x160/0x1d0
      [<0000000000133db4>] kvm_setup_async_pf+0x6c/0x198
      [<000000000013dee8>] kvm_arch_vcpu_ioctl_run+0xd48/0xd58
      [<000000000012fcaa>] kvm_vcpu_ioctl+0x372/0x690
      [<00000000002f66f6>] do_vfs_ioctl+0x3be/0x510
      [<00000000002f68ec>] SyS_ioctl+0xa4/0xb8
      [<0000000000781c5e>] system_call+0xd6/0x264
      [<000003ffa24fa06a>] 0x3ffa24fa06a
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Reviewed-by: NDominik Dingel <dingel@linux.vnet.ibm.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      d7444794
    • P
      KVM: x86: fix conversion of addresses to linear in 32-bit protected mode · 0c1d77f4
      Paolo Bonzini 提交于
      Commit e8dd2d2d ("Silence compiler warning in arch/x86/kvm/emulate.c",
      2015-09-06) broke boot of the Hurd.  The bug is that the "default:"
      case actually could modify "la", but after the patch this change is
      not reflected in *linear.
      
      The bug is visible whenever a non-zero segment base causes the linear
      address to wrap around the 4GB mark.
      
      Fixes: e8dd2d2d
      Cc: stable@vger.kernel.org
      Reported-by: NAurelien Jarno <aurelien@aurel32.net>
      Tested-by: NAurelien Jarno <aurelien@aurel32.net>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      0c1d77f4
    • P
      KVM: x86: fix missed hardware breakpoints · 172b2386
      Paolo Bonzini 提交于
      Sometimes when setting a breakpoint a process doesn't stop on it.
      This is because the debug registers are not loaded correctly on
      VCPU load.
      
      The following simple reproducer from Oleg Nesterov tries using debug
      registers in two threads.  To see the bug, run a 2-VCPU guest with
      "taskset -c 0" and run "./bp 0 1" inside the guest.
      
          #include <unistd.h>
          #include <signal.h>
          #include <stdlib.h>
          #include <stdio.h>
          #include <sys/wait.h>
          #include <sys/ptrace.h>
          #include <sys/user.h>
          #include <asm/debugreg.h>
          #include <assert.h>
      
          #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
      
          unsigned long encode_dr7(int drnum, int enable, unsigned int type, unsigned int len)
          {
              unsigned long dr7;
      
              dr7 = ((len | type) & 0xf)
                  << (DR_CONTROL_SHIFT + drnum * DR_CONTROL_SIZE);
              if (enable)
                  dr7 |= (DR_GLOBAL_ENABLE << (drnum * DR_ENABLE_SIZE));
      
              return dr7;
          }
      
          int write_dr(int pid, int dr, unsigned long val)
          {
              return ptrace(PTRACE_POKEUSER, pid,
                      offsetof (struct user, u_debugreg[dr]),
                      val);
          }
      
          void set_bp(pid_t pid, void *addr)
          {
              unsigned long dr7;
              assert(write_dr(pid, 0, (long)addr) == 0);
              dr7 = encode_dr7(0, 1, DR_RW_EXECUTE, DR_LEN_1);
              assert(write_dr(pid, 7, dr7) == 0);
          }
      
          void *get_rip(int pid)
          {
              return (void*)ptrace(PTRACE_PEEKUSER, pid,
                      offsetof(struct user, regs.rip), 0);
          }
      
          void test(int nr)
          {
              void *bp_addr = &&label + nr, *bp_hit;
              int pid;
      
              printf("test bp %d\n", nr);
              assert(nr < 16); // see 16 asm nops below
      
              pid = fork();
              if (!pid) {
                  assert(ptrace(PTRACE_TRACEME, 0,0,0) == 0);
                  kill(getpid(), SIGSTOP);
                  for (;;) {
                      label: asm (
                          "nop; nop; nop; nop;"
                          "nop; nop; nop; nop;"
                          "nop; nop; nop; nop;"
                          "nop; nop; nop; nop;"
                      );
                  }
              }
      
              assert(pid == wait(NULL));
              set_bp(pid, bp_addr);
      
              for (;;) {
                  assert(ptrace(PTRACE_CONT, pid, 0, 0) == 0);
                  assert(pid == wait(NULL));
      
                  bp_hit = get_rip(pid);
                  if (bp_hit != bp_addr)
                      fprintf(stderr, "ERR!! hit wrong bp %ld != %d\n",
                          bp_hit - &&label, nr);
              }
          }
      
          int main(int argc, const char *argv[])
          {
              while (--argc) {
                  int nr = atoi(*++argv);
                  if (!fork())
                      test(nr);
              }
      
              while (wait(NULL) > 0)
                  ;
              return 0;
          }
      
      Cc: stable@vger.kernel.org
      Suggested-by: NNadav Amit <namit@cs.technion.ac.il>
      Reported-by: NAndrey Wagin <avagin@gmail.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      172b2386
    • M
      arm/arm64: KVM: Feed initialized memory to MMIO accesses · 1d6a8212
      Marc Zyngier 提交于
      On an MMIO access, we always copy the on-stack buffer info
      the shared "run" structure, even if this is a read access.
      This ends up leaking up to 8 bytes of uninitialized memory
      into userspace, depending on the size of the access.
      
      An obvious fix for this one is to only perform the copy if
      this is an actual write.
      Reviewed-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      1d6a8212
    • V
      arc: SMP: CONFIG_ARC_IPI_DBG cleanup · 9ef2d8be
      Valentin Rothberg 提交于
      Previous Commit ("ARC: SMP: No need for CONFIG_ARC_IPI_DBG") removed
      the Kconfig option ARC_IPI_DBG.  Remove the last reference on this
      option.
      Signed-off-by: NValentin Rothberg <valentinrothberg@gmail.com>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      9ef2d8be
    • V
      ARC: SMP: No need for CONFIG_ARC_IPI_DBG · d73b73f5
      Vineet Gupta 提交于
      This was more relevant during SMP bringup.
      
      The warning for bogus msg better be visible always.
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      d73b73f5
    • V
      ARCv2: Elide sending new cross core intr if receiver didn't ack prev · 3dea30ca
      Vineet Gupta 提交于
      ARConnect/MCIP IPI sending has a retry-wait loop in case caller had
      not seen a previous such interrupt. Turns out that it is not needed at
      all. Linux cross core calling allows coalescing multiple IPIs to same
      receiver - it is fine as long as there is one.
      
      This logic is built into upper layer already, at a higher level of
      abstraction. ipi_send_msg_one() sets the actual msg payload, but it only
      calls MCIP IPI sending if msg holder was empty (using
      atomic-set-new-and-get-old construct). Thus it is unlikely that the
      retry-wait looping was ever getting exercised at all.
      
      Cc: Chuck Jordan <cjordan@synopsys.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      3dea30ca
    • V
      ARCv2: SMP: Push IPI_IRQ into IPI provider · 96817879
      Vineet Gupta 提交于
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      96817879
    • V
      ARC: [intc-compact] Remove IPI setup from ARCompact port · dbcbc7e7
      Vineet Gupta 提交于
      There is no real ARC700 based SMP SoC so remove IPI definition.
      EZChip's SMP ARC700 is going to use a different intc and IPI provider
      anyways.
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      dbcbc7e7
    • V
      ARCv2: SMP: Emulate IPI to self using software triggered interrupt · bb143f81
      Vineet Gupta 提交于
      ARConnect/MCIP Inter-Core-Interrupt module can't send interrupt to
      local core. So use core intc capability to trigger software
      interrupt to self, using an unsued IRQ #21.
      
      This showed up as csd deadlock with LTP trace_sched on a dual core
      system. This test acts as scheduler fuzzer, triggering all sorts of
      schedulting activity. Trouble starts with IPI to self, which doesn't get
      delivered (effectively lost due to H/w capability), but the msg intended
      to be sent remain enqueued in per-cpu @ipi_data.
      
      All subsequent IPIs to this core from other cores get elided due to the
      IPI coalescing optimization in ipi_send_msg_one() where a pending msg
      implies an IPI already sent and assumes other core is yet to ack it.
      After the elided IPI, other core simply goes into csd_lock_wait()
      but never comes out as this core never sees the interrupt.
      
      Fixes STAR 9001008624
      
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: <stable@vger.kernel.org>        [4.2]
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      bb143f81
    • L
      Merge tag 'dm-4.5-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm · 84e54c46
      Linus Torvalds 提交于
      Pull device mapper fix from Mike Snitzer:
       "Fix a 112 byte leak for each IO request that is requeued while DM
        multipath is handling faults due to path failures.
      
        This leak does not happen if blk-mq DM multipath is used.  It only
        occurs if .request_fn DM multipath is stacked ontop of blk-mq paths
        (e.g. scsi-mq devices)"
      
      * tag 'dm-4.5-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm: fix dm_rq_target_io leak on faults with .request_fn DM w/ blk-mq paths
      84e54c46
    • L
      Merge tag 'mmc-v4.5-rc4' of git://git.linaro.org/people/ulf.hansson/mmc · 0ecdcd3a
      Linus Torvalds 提交于
      Pull MMC fix from Ulf Hansson:
       "Here's an mmc fix intended for v4.5 rc6.
      
        MMC host:
         - omap_hsmmc: Fix PM regression for deferred probe"
      
      * tag 'mmc-v4.5-rc4' of git://git.linaro.org/people/ulf.hansson/mmc:
        mmc: omap_hsmmc: Fix PM regression with deferred probe for pm_runtime_reinit
      0ecdcd3a
    • A
      nvdimm: use 'u64' for pfn flags · c4544205
      Arnd Bergmann 提交于
      A recent bugfix changed pfn_t to always be 64-bit wide, but did not
      change the code in pmem.c, which is now broken on 32-bit architectures
      as reported by gcc:
      
      In file included from ../drivers/nvdimm/pmem.c:28:0:
      drivers/nvdimm/pmem.c: In function 'pmem_alloc':
      include/linux/pfn_t.h:15:17: error: large integer implicitly truncated to unsigned type [-Werror=overflow]
       #define PFN_DEV (1ULL << (BITS_PER_LONG_LONG - 3))
      
      This changes the intermediate pfn_flags in struct pmem_device to
      be 64 bit wide as well, so they can store the flags correctly.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: db78c222 ("mm: fix pfn_t vs highmem")
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      c4544205
    • T
      devm_memremap: Fix error value when memremap failed · 93f834df
      Toshi Kani 提交于
      devm_memremap() returns an ERR_PTR() value in case of error.
      However, it returns NULL when memremap() failed.  This causes
      the caller, such as the pmem driver, to proceed and oops later.
      
      Change devm_memremap() to return ERR_PTR(-ENXIO) when memremap()
      failed.
      Signed-off-by: NToshi Kani <toshi.kani@hpe.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: <stable@vger.kernel.org>
      Reviewed-by: NRoss Zwisler <ross.zwisler@linux.intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      93f834df
    • D
      nfit: update address range scrub commands to the acpi 6.1 format · 4577b066
      Dan Williams 提交于
      The original format of these commands from the "NVDIMM DSM Interface
      Example" [1] are superseded by the ACPI 6.1 definition of the "NVDIMM Root
      Device _DSMs" [2].
      
      [1]: http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
      [2]: http://www.uefi.org/sites/default/files/resources/ACPI_6_1.pdf
           "9.20.7 NVDIMM Root Device _DSMs"
      
      Changes include:
      1/ New 'restart' fields in ars_status, unfortunately these are
         implemented in the middle of the existing definition so this change
         is not backwards compatible.  The expectation is that shipping
         platforms will only ever support the ACPI 6.1 definition.
      
      2/ New status values for ars_start ('busy') and ars_status ('overflow').
      
      Cc: Vishal Verma <vishal.l.verma@intel.com>
      Cc: Linda Knippers <linda.knippers@hpe.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      4577b066
    • L
      Merge tag 'nfs-for-4.5-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 420eb6d7
      Linus Torvalds 提交于
      Pull NFS client bugfixes from Trond Myklebust:
       "Stable bugfixes:
         - Fix nfs_size_to_loff_t
         - NFSv4: Fix a dentry leak on alias use
      
        Other bugfixes:
         - Don't schedule a layoutreturn if the layout segment can be freed
           immediately.
         - Always set NFS_LAYOUT_RETURN_REQUESTED with lo->plh_return_iomode
         - rpcrdma_bc_receive_call() should init rq_private_buf.len
         - fix stateid handling for the NFS v4.2 operations
         - pnfs/blocklayout: fix a memeory leak when using,vmalloc_to_page
         - fix panic in gss_pipe_downcall() in fips mode
         - Fix a race between layoutget and pnfs_destroy_layout
         - Fix a race between layoutget and bulk recalls"
      
      * tag 'nfs-for-4.5-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        NFSv4.x/pnfs: Fix a race between layoutget and bulk recalls
        NFSv4.x/pnfs: Fix a race between layoutget and pnfs_destroy_layout
        auth_gss: fix panic in gss_pipe_downcall() in fips mode
        pnfs/blocklayout: fix a memeory leak when using,vmalloc_to_page
        nfs4: fix stateid handling for the NFS v4.2 operations
        NFSv4: Fix a dentry leak on alias use
        xprtrdma: rpcrdma_bc_receive_call() should init rq_private_buf.len
        pNFS: Always set NFS_LAYOUT_RETURN_REQUESTED with lo->plh_return_iomode
        pNFS: Fix pnfs_mark_matching_lsegs_return()
        nfs: fix nfs_size_to_loff_t
      420eb6d7
    • L
      x86: fix SMAP in 32-bit environments · de9e478b
      Linus Torvalds 提交于
      In commit 11f1a4b9 ("x86: reorganize SMAP handling in user space
      accesses") I changed how the stac/clac instructions were generated
      around the user space accesses, which then made it possible to do
      batched accesses efficiently for user string copies etc.
      
      However, in doing so, I completely spaced out, and didn't even think
      about the 32-bit case.  And nobody really even seemed to notice, because
      SMAP doesn't even exist until modern Skylake processors, and you'd have
      to be crazy to run 32-bit kernels on a modern CPU.
      
      Which brings us to Andy Lutomirski.
      
      He actually tested the 32-bit kernel on new hardware, and noticed that
      it doesn't work.  My bad.  The trivial fix is to add the required
      uaccess begin/end markers around the raw accesses in <asm/uaccess_32.h>.
      
      I feel a bit bad about this patch, just because that header file really
      should be cleaned up to avoid all the duplicated code in it, and this
      commit just expands on the problem.  But this just fixes the bug without
      any bigger cleanup surgery.
      Reported-and-tested-by: NAndy Lutomirski <luto@kernel.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      de9e478b
    • M
      KVM: arm/arm64: vgic: Ensure bitmaps are long enough · 236cf17c
      Mark Rutland 提交于
      When we allocate bitmaps in vgic_vcpu_init_maps, we divide the number of
      bits we need by 8 to figure out how many bytes to allocate. However,
      bitmap elements are always accessed as unsigned longs, and if we didn't
      happen to allocate a size such that size % sizeof(unsigned long) == 0,
      bitmap accesses may go past the end of the allocation.
      
      When using KASAN (which does byte-granular access checks), this results
      in a continuous stream of BUGs whenever these bitmaps are accessed:
      
      =============================================================================
      BUG kmalloc-128 (Tainted: G    B          ): kasan: bad access detected
      -----------------------------------------------------------------------------
      
      INFO: Allocated in vgic_init.part.25+0x55c/0x990 age=7493 cpu=3 pid=1730
      INFO: Slab 0xffffffbde6d5da40 objects=16 used=15 fp=0xffffffc935769700 flags=0x4000000000000080
      INFO: Object 0xffffffc935769500 @offset=1280 fp=0x          (null)
      
      Bytes b4 ffffffc9357694f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object ffffffc935769570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Padding ffffffc9357695b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Padding ffffffc9357695c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Padding ffffffc9357695d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Padding ffffffc9357695e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Padding ffffffc9357695f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      CPU: 3 PID: 1740 Comm: kvm-vcpu-0 Tainted: G    B           4.4.0+ #17
      Hardware name: ARM Juno development board (r1) (DT)
      Call trace:
      [<ffffffc00008e770>] dump_backtrace+0x0/0x280
      [<ffffffc00008ea04>] show_stack+0x14/0x20
      [<ffffffc000726360>] dump_stack+0x100/0x188
      [<ffffffc00030d324>] print_trailer+0xfc/0x168
      [<ffffffc000312294>] object_err+0x3c/0x50
      [<ffffffc0003140fc>] kasan_report_error+0x244/0x558
      [<ffffffc000314548>] __asan_report_load8_noabort+0x48/0x50
      [<ffffffc000745688>] __bitmap_or+0xc0/0xc8
      [<ffffffc0000d9e44>] kvm_vgic_flush_hwstate+0x1bc/0x650
      [<ffffffc0000c514c>] kvm_arch_vcpu_ioctl_run+0x2ec/0xa60
      [<ffffffc0000b9a6c>] kvm_vcpu_ioctl+0x474/0xa68
      [<ffffffc00036b7b0>] do_vfs_ioctl+0x5b8/0xcb0
      [<ffffffc00036bf34>] SyS_ioctl+0x8c/0xa0
      [<ffffffc000086cb0>] el0_svc_naked+0x24/0x28
      Memory state around the buggy address:
       ffffffc935769400: 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       ffffffc935769480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      >ffffffc935769500: 04 fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                         ^
       ffffffc935769580: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       ffffffc935769600: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc
      ==================================================================
      
      Fix the issue by always allocating a multiple of sizeof(unsigned long),
      as we do elsewhere in the vgic code.
      
      Fixes: c1bfb577 ("arm/arm64: KVM: vgic: switch to dynamic allocation")
      Cc: stable@vger.kernel.org
      Acked-by: NMarc Zyngier <marc.zyngier@arm.com>
      Acked-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      236cf17c