1. 12 1月, 2018 3 次提交
  2. 11 1月, 2018 2 次提交
    • C
      drm/i915: Don't adjust priority on an already signaled fence · 5005c851
      Chris Wilson 提交于
      When we retire a signaled fence, we free the dependency tree. However,
      we skip clearing the list so that if we then try to adjust the priority
      of the signaled fence, we may walk the list of freed dependencies.
      
      [ 3083.156757] ==================================================================
      [ 3083.156806] BUG: KASAN: use-after-free in execlists_schedule+0x199/0x660 [i915]
      [ 3083.156810] Read of size 8 at addr ffff8806bf20f400 by task Xorg/831
      
      [ 3083.156815] CPU: 0 PID: 831 Comm: Xorg Not tainted 4.15.0-rc6-no-psn+ #1
      [ 3083.156817] Hardware name: Notebook                         N24_25BU/N24_25BU, BIOS 5.12 02/17/2017
      [ 3083.156818] Call Trace:
      [ 3083.156823]  dump_stack+0x5c/0x7a
      [ 3083.156827]  print_address_description+0x6b/0x290
      [ 3083.156830]  kasan_report+0x28f/0x380
      [ 3083.156872]  ? execlists_schedule+0x199/0x660 [i915]
      [ 3083.156914]  execlists_schedule+0x199/0x660 [i915]
      [ 3083.156956]  ? intel_crtc_atomic_check+0x146/0x4e0 [i915]
      [ 3083.156997]  ? execlists_submit_request+0xe0/0xe0 [i915]
      [ 3083.157038]  ? i915_vma_misplaced.part.4+0x25/0xb0 [i915]
      [ 3083.157079]  ? __i915_vma_do_pin+0x7c8/0xc80 [i915]
      [ 3083.157121]  ? intel_atomic_state_alloc+0x44/0x60 [i915]
      [ 3083.157130]  ? drm_atomic_helper_page_flip+0x3e/0xb0 [drm_kms_helper]
      [ 3083.157145]  ? drm_mode_page_flip_ioctl+0x7d2/0x850 [drm]
      [ 3083.157159]  ? drm_ioctl_kernel+0xa7/0xf0 [drm]
      [ 3083.157172]  ? drm_ioctl+0x45b/0x560 [drm]
      [ 3083.157211]  i915_gem_object_wait_priority+0x14c/0x2c0 [i915]
      [ 3083.157251]  ? i915_gem_get_aperture_ioctl+0x150/0x150 [i915]
      [ 3083.157290]  ? i915_vma_pin_fence+0x1d8/0x320 [i915]
      [ 3083.157331]  ? intel_pin_and_fence_fb_obj+0x175/0x250 [i915]
      [ 3083.157372]  ? intel_rotation_info_size+0x60/0x60 [i915]
      [ 3083.157413]  ? intel_link_compute_m_n+0x80/0x80 [i915]
      [ 3083.157428]  ? drm_dev_printk+0x1b0/0x1b0 [drm]
      [ 3083.157443]  ? drm_dev_printk+0x1b0/0x1b0 [drm]
      [ 3083.157485]  intel_prepare_plane_fb+0x2f8/0x5a0 [i915]
      [ 3083.157527]  ? intel_crtc_get_vblank_counter+0x80/0x80 [i915]
      [ 3083.157536]  drm_atomic_helper_prepare_planes+0xa0/0x1c0 [drm_kms_helper]
      [ 3083.157587]  intel_atomic_commit+0x12e/0x4e0 [i915]
      [ 3083.157605]  drm_atomic_helper_page_flip+0xa2/0xb0 [drm_kms_helper]
      [ 3083.157621]  drm_mode_page_flip_ioctl+0x7d2/0x850 [drm]
      [ 3083.157638]  ? drm_mode_cursor2_ioctl+0x10/0x10 [drm]
      [ 3083.157652]  ? drm_lease_owner+0x1a/0x30 [drm]
      [ 3083.157668]  ? drm_mode_cursor2_ioctl+0x10/0x10 [drm]
      [ 3083.157681]  drm_ioctl_kernel+0xa7/0xf0 [drm]
      [ 3083.157696]  drm_ioctl+0x45b/0x560 [drm]
      [ 3083.157711]  ? drm_mode_cursor2_ioctl+0x10/0x10 [drm]
      [ 3083.157725]  ? drm_getstats+0x20/0x20 [drm]
      [ 3083.157729]  ? timerqueue_del+0x49/0x80
      [ 3083.157732]  ? __remove_hrtimer+0x62/0xb0
      [ 3083.157735]  ? hrtimer_try_to_cancel+0x173/0x210
      [ 3083.157738]  do_vfs_ioctl+0x13b/0x880
      [ 3083.157741]  ? ioctl_preallocate+0x140/0x140
      [ 3083.157744]  ? _raw_spin_unlock_irq+0xe/0x30
      [ 3083.157746]  ? do_setitimer+0x234/0x370
      [ 3083.157750]  ? SyS_setitimer+0x19e/0x1b0
      [ 3083.157752]  ? SyS_alarm+0x140/0x140
      [ 3083.157755]  ? __rcu_read_unlock+0x66/0x80
      [ 3083.157757]  ? __fget+0xc4/0x100
      [ 3083.157760]  SyS_ioctl+0x74/0x80
      [ 3083.157763]  entry_SYSCALL_64_fastpath+0x1a/0x7d
      [ 3083.157765] RIP: 0033:0x7f6135d0c6a7
      [ 3083.157767] RSP: 002b:00007fff01451888 EFLAGS: 00003246 ORIG_RAX: 0000000000000010
      [ 3083.157769] RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00007f6135d0c6a7
      [ 3083.157771] RDX: 00007fff01451950 RSI: 00000000c01864b0 RDI: 000000000000000c
      [ 3083.157772] RBP: 00007f613076f600 R08: 0000000000000001 R09: 0000000000000000
      [ 3083.157773] R10: 0000000000000060 R11: 0000000000003246 R12: 0000000000000000
      [ 3083.157774] R13: 0000000000000060 R14: 000000000000001b R15: 0000000000000060
      
      [ 3083.157779] Allocated by task 831:
      [ 3083.157783]  kmem_cache_alloc+0xc0/0x200
      [ 3083.157822]  i915_gem_request_await_dma_fence+0x2c4/0x5d0 [i915]
      [ 3083.157861]  i915_gem_request_await_object+0x321/0x370 [i915]
      [ 3083.157900]  i915_gem_do_execbuffer+0x1165/0x19c0 [i915]
      [ 3083.157937]  i915_gem_execbuffer2+0x1ad/0x550 [i915]
      [ 3083.157950]  drm_ioctl_kernel+0xa7/0xf0 [drm]
      [ 3083.157962]  drm_ioctl+0x45b/0x560 [drm]
      [ 3083.157964]  do_vfs_ioctl+0x13b/0x880
      [ 3083.157966]  SyS_ioctl+0x74/0x80
      [ 3083.157968]  entry_SYSCALL_64_fastpath+0x1a/0x7d
      
      [ 3083.157971] Freed by task 831:
      [ 3083.157973]  kmem_cache_free+0x77/0x220
      [ 3083.158012]  i915_gem_request_retire+0x72c/0xa70 [i915]
      [ 3083.158051]  i915_gem_request_alloc+0x1e9/0x8b0 [i915]
      [ 3083.158089]  i915_gem_do_execbuffer+0xa96/0x19c0 [i915]
      [ 3083.158127]  i915_gem_execbuffer2+0x1ad/0x550 [i915]
      [ 3083.158140]  drm_ioctl_kernel+0xa7/0xf0 [drm]
      [ 3083.158153]  drm_ioctl+0x45b/0x560 [drm]
      [ 3083.158155]  do_vfs_ioctl+0x13b/0x880
      [ 3083.158156]  SyS_ioctl+0x74/0x80
      [ 3083.158158]  entry_SYSCALL_64_fastpath+0x1a/0x7d
      
      [ 3083.158162] The buggy address belongs to the object at ffff8806bf20f400
                      which belongs to the cache i915_dependency of size 64
      [ 3083.158166] The buggy address is located 0 bytes inside of
                      64-byte region [ffff8806bf20f400, ffff8806bf20f440)
      [ 3083.158168] The buggy address belongs to the page:
      [ 3083.158171] page:00000000d43decc4 count:1 mapcount:0 mapping:          (null) index:0x0
      [ 3083.158174] flags: 0x17ffe0000000100(slab)
      [ 3083.158179] raw: 017ffe0000000100 0000000000000000 0000000000000000 0000000180200020
      [ 3083.158182] raw: ffffea001afc16c0 0000000500000005 ffff880731b881c0 0000000000000000
      [ 3083.158184] page dumped because: kasan: bad access detected
      
      [ 3083.158187] Memory state around the buggy address:
      [ 3083.158190]  ffff8806bf20f300: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
      [ 3083.158192]  ffff8806bf20f380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
      [ 3083.158195] >ffff8806bf20f400: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
      [ 3083.158196]                    ^
      [ 3083.158199]  ffff8806bf20f480: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
      [ 3083.158201]  ffff8806bf20f500: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
      [ 3083.158203] ==================================================================
      Reported-by: NAlexandru Chirvasitu <achirvasub@gmail.com>
      Reported-by: NMike Keehan <mike@keehan.net>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104436
      Fixes: 1f181225 ("drm/i915/execlists: Keep request->priority for its lifetime")
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Alexandru Chirvasitu <achirvasub@gmail.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Tested-by: NAlexandru Chirvasitu <achirvasub@gmail.com>
      Reviewed-by: NMichał Winiarski <michal.winiarski@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180106105618.13532-1-chris@chris-wilson.co.uk
      (cherry picked from commit c218ee03)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      5005c851
    • K
      drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake. · 4636bda8
      Kenneth Graunke 提交于
      Geminilake requires the 3D driver to select whether barriers are
      intended for compute shaders, or tessellation control shaders, by
      whacking a "Barrier Mode" bit in SLICE_COMMON_ECO_CHICKEN1 when
      switching pipelines.  Failure to do this properly can result in GPU
      hangs.
      
      Unfortunately, this means it needs to switch mid-batch, so only
      userspace can properly set it.  To facilitate this, the kernel needs
      to whitelist the register.
      
      The workarounds page currently tags this as applying to Broxton only,
      but that doesn't make sense.  The documentation for the register it
      references says the bit userspace is supposed to toggle only exists on
      Geminilake.  Empirically, the Mesa patch to toggle this bit appears to
      fix intermittent GPU hangs in tessellation control shader barrier tests
      on Geminilake; we haven't seen those hangs on Broxton.
      
      v2: Mention WA #0862 in the comment (it doesn't have a name).
      Signed-off-by: NKenneth Graunke <kenneth@whitecape.org>
      Acked-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180105085905.9298-1-kenneth@whitecape.org
      (cherry picked from commit ab062639)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      4636bda8
  3. 10 1月, 2018 2 次提交
    • D
      drm/vmwgfx: Potential off by one in vmw_view_add() · 0d9cac0c
      Dan Carpenter 提交于
      The vmw_view_cmd_to_type() function returns vmw_view_max (3) on error.
      It's one element beyond the end of the vmw_view_cotables[] table.
      
      My read on this is that it's possible to hit this failure.  header->id
      comes from vmw_cmd_check() and it's a user controlled number between
      1040 and 1225 so we can hit that error.  But I don't have the hardware
      to test this code.
      
      Fixes: d80efd5c ("drm/vmwgfx: Initial DX support")
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: NThomas Hellstrom <thellstrom@vmware.com>
      Cc: <stable@vger.kernel.org>
      0d9cac0c
    • T
      drm/tegra: sor: Fix hang on Tegra124 eDP · d780537f
      Thierry Reding 提交于
      The SOR0 found on Tegra124 and Tegra210 only supports eDP and LVDS and
      therefore has a slightly different clock tree than the SOR1 which does
      not support eDP, but HDMI and DP instead.
      
      Commit e1335e2f ("drm/tegra: sor: Reimplement pad clock") breaks
      setups with eDP because the sor->clk_out clock is uninitialized and
      therefore setting the parent clock (either the safe clock or either of
      the display PLLs) fails, which can cause hangs later on since there is
      no clock driving the module.
      
      Fix this by falling back to the module clock for sor->clk_out on those
      setups. This guarantees that the module will always be clocked by an
      enabled clock and hence prevents those hangs.
      
      Fixes: e1335e2f ("drm/tegra: sor: Reimplement pad clock")
      Reported-by: NGuillaume Tucker <guillaume.tucker@collabora.com>
      Tested-by: NJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      d780537f
  4. 09 1月, 2018 4 次提交
  5. 08 1月, 2018 7 次提交
    • J
      Merge tag 'gvt-fixes-2018-01-08' of https://github.com/intel/gvt-linux into drm-intel-fixes · 67c3f3fc
      Jani Nikula 提交于
      gvt-fixes-2018-01-08
      
      - clear shadow entry for post-sync (Zhi)
      - fix stack out-of-bound warning in cmd parser (Changbin)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180108061130.ucwtumhpbfbu4psu@zhen-hp.sh.intel.com
      67c3f3fc
    • C
      drm/i915/gvt: Fix stack-out-of-bounds bug in cmd parser · 65e74392
      Changbin Du 提交于
      for_each_set_bit() only accepts variable of type unsigned long, and we can
      not cast it from smaller types.
      
      [   16.499365] ==================================================================
      [   16.506655] BUG: KASAN: stack-out-of-bounds in find_first_bit+0x1d/0x70
      [   16.513313] Read of size 8 at addr ffff8803616cf510 by task systemd-udevd/180
      [   16.521998] CPU: 0 PID: 180 Comm: systemd-udevd Tainted: G     U     O     4.15.0-rc3+ #14
      [   16.530317] Hardware name: Dell Inc. OptiPlex 7040/0Y7WYT, BIOS 1.2.8 01/26/2016
      [   16.537760] Call Trace:
      [   16.540230]  dump_stack+0x7c/0xbb
      [   16.543569]  print_address_description+0x6b/0x290
      [   16.548306]  kasan_report+0x28a/0x370
      [   16.551993]  ? find_first_bit+0x1d/0x70
      [   16.555858]  find_first_bit+0x1d/0x70
      [   16.559625]  intel_gvt_init_cmd_parser+0x127/0x3c0 [i915]
      [   16.565060]  ? __lock_is_held+0x8f/0xf0
      [   16.568990]  ? intel_gvt_clean_cmd_parser+0x10/0x10 [i915]
      [   16.574514]  ? __hrtimer_init+0x5d/0xb0
      [   16.578445]  intel_gvt_init_device+0x2c3/0x690 [i915]
      [   16.583537]  ? unregister_module_notifier+0x20/0x20
      [   16.588515]  intel_gvt_init+0x89/0x100 [i915]
      [   16.592962]  i915_driver_load+0x1992/0x1c70 [i915]
      [   16.597846]  ? __i915_printk+0x210/0x210 [i915]
      [   16.602410]  ? wait_for_completion+0x280/0x280
      [   16.606883]  ? lock_downgrade+0x2c0/0x2c0
      [   16.610923]  ? __pm_runtime_resume+0x46/0x90
      [   16.615238]  ? acpi_dev_found+0x76/0x80
      [   16.619162]  ? i915_pci_remove+0x30/0x30 [i915]
      [   16.623733]  local_pci_probe+0x74/0xe0
      [   16.627518]  pci_device_probe+0x208/0x310
      [   16.631561]  ? pci_device_remove+0x100/0x100
      [   16.635871]  ? __list_add_valid+0x29/0xa0
      [   16.639919]  driver_probe_device+0x40b/0x6b0
      [   16.644223]  ? driver_probe_device+0x6b0/0x6b0
      [   16.648696]  __driver_attach+0x11d/0x130
      [   16.652649]  bus_for_each_dev+0xe7/0x160
      [   16.656600]  ? subsys_dev_iter_exit+0x10/0x10
      [   16.660987]  ? __list_add_valid+0x29/0xa0
      [   16.665028]  bus_add_driver+0x31d/0x3a0
      [   16.668893]  driver_register+0xc6/0x170
      [   16.672758]  ? 0xffffffffc0ad8000
      [   16.676108]  do_one_initcall+0x9c/0x206
      [   16.679984]  ? initcall_blacklisted+0x150/0x150
      [   16.684545]  ? do_init_module+0x35/0x33b
      [   16.688494]  ? kasan_unpoison_shadow+0x31/0x40
      [   16.692968]  ? kasan_kmalloc+0xa6/0xd0
      [   16.696743]  ? do_init_module+0x35/0x33b
      [   16.700694]  ? kasan_unpoison_shadow+0x31/0x40
      [   16.705168]  ? __asan_register_globals+0x82/0xa0
      [   16.709819]  do_init_module+0xe7/0x33b
      [   16.713597]  load_module+0x4481/0x4ce0
      [   16.717397]  ? module_frob_arch_sections+0x20/0x20
      [   16.722228]  ? vfs_read+0x13b/0x190
      [   16.725742]  ? kernel_read+0x74/0xa0
      [   16.729351]  ? get_user_arg_ptr.isra.17+0x70/0x70
      [   16.734099]  ? SYSC_finit_module+0x175/0x1b0
      [   16.738399]  SYSC_finit_module+0x175/0x1b0
      [   16.742524]  ? SYSC_init_module+0x1e0/0x1e0
      [   16.746741]  ? __fget+0x157/0x240
      [   16.750090]  ? trace_hardirqs_on_thunk+0x1a/0x1c
      [   16.754747]  entry_SYSCALL_64_fastpath+0x23/0x9a
      [   16.759397] RIP: 0033:0x7f8fbc837499
      [   16.762996] RSP: 002b:00007ffead76c138 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
      [   16.770618] RAX: ffffffffffffffda RBX: 0000000000000012 RCX: 00007f8fbc837499
      [   16.777800] RDX: 0000000000000000 RSI: 000056484e67b080 RDI: 0000000000000012
      [   16.784979] RBP: 00007ffead76b140 R08: 0000000000000000 R09: 0000000000000021
      [   16.792164] R10: 0000000000000012 R11: 0000000000000246 R12: 000056484e67b460
      [   16.799345] R13: 00007ffead76b120 R14: 0000000000000005 R15: 0000000000000000
      [   16.808052] The buggy address belongs to the page:
      [   16.812876] page:00000000dc4b8c1e count:0 mapcount:0 mapping:          (null) index:0x0
      [   16.820934] flags: 0x17ffffc0000000()
      [   16.824621] raw: 0017ffffc0000000 0000000000000000 0000000000000000 00000000ffffffff
      [   16.832416] raw: ffffea000d85b3e0 ffffea000d85b3e0 0000000000000000 0000000000000000
      [   16.840208] page dumped because: kasan: bad access detected
      [   16.847318] Memory state around the buggy address:
      [   16.852143]  ffff8803616cf400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      [   16.859427]  ffff8803616cf480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1
      [   16.866708] >ffff8803616cf500: f1 f1 04 f4 f4 f4 f3 f3 f3 f3 00 00 00 00 00 00
      [   16.873988]                          ^
      [   16.877770]  ffff8803616cf580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      [   16.885042]  ffff8803616cf600: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1
      [   16.892312] ==================================================================
      Signed-off-by: NChangbin Du <changbin.du@intel.com>
      Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      65e74392
    • L
      Linux 4.15-rc7 · b2cd1df6
      Linus Torvalds 提交于
      b2cd1df6
    • L
      Merge branch 'parisc-4.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · b84449dc
      Linus Torvalds 提交于
      Pull parisc fixes from Helge Deller:
      
       - Many small fixes to show the real physical addresses of devices
         instead of hashed addresses.
      
       - One important fix to unbreak 32-bit SMP support: We forgot to 16-byte
         align the spinlocks in the assembler code.
      
       - Qemu support: The host will get a chance to sleep when the parisc
         guest is idle. We use the same mechanism as the power architecture by
         overlaying the "or %r10,%r10,%r10" instruction which is simply a nop
         on real hardware.
      
      * 'parisc-4.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: qemu idle sleep support
        parisc: Fix alignment of pa_tlb_lock in assembly on 32-bit SMP kernel
        parisc: Show unhashed EISA EEPROM address
        parisc: Show unhashed HPA of Dino chip
        parisc: Show initial kernel memory layout unhashed
        parisc: Show unhashed hardware inventory
      b84449dc
    • L
      Merge tag 'apparmor-pr-2018-01-07' of... · 9cfd403a
      Linus Torvalds 提交于
      Merge tag 'apparmor-pr-2018-01-07' of git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor
      
      Pull apparmor fix from John Johansen:
       "This fixes a regression when the kernel feature set is reported as
        supporting mount and policy is pinned to a feature set that does not
        support mount mediation"
      
      * tag 'apparmor-pr-2018-01-07' of git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor:
        apparmor: fix regression in mount mediation when feature set is pinned
      9cfd403a
    • L
      Merge tag 'led_fixes_for_4.15-rc7' of... · 9d61ec5b
      Linus Torvalds 提交于
      Merge tag 'led_fixes_for_4.15-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds
      
      Pull LED fix from Jacek Anaszewski:
       "The commit 2b83ff96 for 4.15-rc6, which was fixing LED brightness
        setting after clearing delay_off broke the behavior on any alteration
        of delay_on{off} properties, due to use of a LED core helper that does
        too much for this particular case"
      
      * tag 'led_fixes_for_4.15-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
        leds: core: Fix regression caused by commit 2b83ff96
      9d61ec5b
    • L
      Merge tag 'for-linus-20180107' of git://git.infradead.org/linux-mtd · c11a5fe6
      Linus Torvalds 提交于
      Pull MTD bugfix from Richard Weinberger:
       "A single fix for the pxa3xx NAND driver"
      
      * tag 'for-linus-20180107' of git://git.infradead.org/linux-mtd:
        mtd: nand: pxa3xx: Fix READOOB implementation
      c11a5fe6
  6. 07 1月, 2018 6 次提交
  7. 06 1月, 2018 15 次提交
  8. 05 1月, 2018 1 次提交