1. 01 10月, 2020 1 次提交
    • C
      drm/i915/gem: Hold request reference for canceling an active context · 3cfea8c9
      Chris Wilson 提交于
      We have to be very careful while walking the timeline->requests list
      under the RCU guard, as the requests (and so rq->link) use
      SLAB_TYPESAFE_BY_RCU and so the requests may be reallocated within an
      rcu grace period. As the requests are reallocated, they are removed from
      one list and placed on another, and if we are iterating over that
      request at that moment, the list iteration jumps from one list to the
      next and promptly gets confused. Verify we hold the request reference
      to ensure that the request is not added to a new list behind our backs.
      
      <4> [582.745252] general protection fault, probably for non-canonical address 0xcccccccccccccd5c: 0000 [#1] PREEMPT SMP PTI
      <4> [582.745297] CPU: 0 PID: 1475 Comm: gem_ctx_persist Not tainted 5.9.0-rc1-CI-CI_DRM_8908+ #1
      <4> [582.745304] Hardware name: Intel Corporation NUC7CJYH/NUC7JYB, BIOS JYGLKCPX.86A.0027.2018.0125.1347 01/25/2018
      <4> [582.745317] RIP: 0010:__lock_acquire+0x2c3/0x1f40
      <4> [582.745323] Code: 00 65 8b 05 c7 8a ef 7e 85 c0 0f 85 b4 07 00 00 44 8b 9d c4 08 00 00 45 85 db 0f 84 0f 01 00 00 ba 05 00 00 00 e9 c8 06 00 00 <48> 81 3f c0 89 c7 82 b8 00 00 00 00 41 0f 45 c0 83 fe 01 41 89 c3
      <4> [582.745334] RSP: 0018:ffffc9000461bc40 EFLAGS: 00010002
      <4> [582.745340] RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000000
      <4> [582.745345] RDX: 0000000000000000 RSI: 0000000000000000 RDI: cccccccccccccd5c
      <4> [582.745350] RBP: ffff8881ec4a2880 R08: 0000000000000001 R09: 0000000000000001
      <4> [582.745356] R10: 0000000000000001 R11: 0000000000000001 R12: 0000000000000000
      <4> [582.745361] R13: 0000000000000000 R14: 0000000000000000 R15: cccccccccccccd5c
      <4> [582.745367] FS:  00007fb44da78e40(0000) GS:ffff888278000000(0000) knlGS:0000000000000000
      <4> [582.745373] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4> [582.745378] CR2: 00007fb44daad040 CR3: 0000000268428000 CR4: 0000000000350ef0
      <4> [582.745383] Call Trace:
      <4> [582.745390]  ? __lock_acquire+0x913/0x1f40
      <4> [582.745397]  lock_acquire+0xb5/0x3c0
      <4> [582.745526]  ? kill_engines+0x19a/0x4b0 [i915]
      <4> [582.745533]  ? find_held_lock+0x2d/0x90
      <4> [582.745541]  _raw_spin_lock_irq+0x30/0x40
      <4> [582.745635]  ? kill_engines+0x19a/0x4b0 [i915]
      <4> [582.745727]  kill_engines+0x19a/0x4b0 [i915]
      <4> [582.745820]  context_close+0x195/0x410 [i915]
      <4> [582.745912]  i915_gem_context_close+0x5b/0x160 [i915]
      <4> [582.745994]  i915_driver_postclose+0x14/0x40 [i915]
      <4> [582.746003]  drm_file_free.part.13+0x240/0x290
      <4> [582.746009]  drm_release_noglobal+0x16/0x50
      <4> [582.746016]  __fput+0xa5/0x250
      <4> [582.746021]  task_work_run+0x6e/0xb0
      <4> [582.746028]  exit_to_user_mode_prepare+0x178/0x180
      <4> [582.746034]  syscall_exit_to_user_mode+0x36/0x220
      <4> [582.746040]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      <4> [582.746045] RIP: 0033:0x7fb44d1dc421
      <4> [582.746050] Code: f7 d8 64 89 02 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 8b 05 ea cf 20 00 85 c0 75 16 b8 03 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 3f f3 c3 0f 1f 44 00 00 53 89 fb 48 83 ec 10
      <4> [582.746062] RSP: 002b:00007ffed2e83818 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
      <4> [582.746069] RAX: 0000000000000000 RBX: 0000556410bfe840 RCX: 00007fb44d1dc421
      <4> [582.746075] RDX: 000000000000000a RSI: 00000000c0406469 RDI: 0000000000000008
      <4> [582.746080] RBP: 0000000000000008 R08: 00007fb44d1c51cc R09: 00007fb44d1c5240
      <4> [582.746086] R10: 0000000000000001 R11: 0000000000000246 R12: 00000000fffffffb
      <4> [582.746091] R13: 0000000000000006 R14: 0000000000000000 R15: 000000000000000a
      <4> [582.746099] Modules linked in: vgem mei_hdcp snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio btusb btrtl btbcm btintel x86_pkg_temp_thermal coretemp crct10dif_pclmul crc32_pclmul bluetooth ghash_clmulni_intel ecdh_generic ecc i915 r8169 realtek mei_me mei snd_hda_intel i2c_hid snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core snd_pcm pinctrl_geminilake pinctrl_intel prime_numbers [last unloaded: test_drm_mm]
      
      Fixes: 736e785f ("drm/i915/gem: Reduce context termination list iteration guard to RCU")
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200925101107.27869-2-chris@chris-wilson.co.uk
      (cherry picked from commit badef44d)
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      3cfea8c9
  2. 07 9月, 2020 5 次提交
  3. 09 7月, 2020 1 次提交
  4. 03 7月, 2020 1 次提交
  5. 01 7月, 2020 1 次提交
  6. 23 6月, 2020 1 次提交
    • J
      drm/i915/params: switch to device specific parameters · 8a25c4be
      Jani Nikula 提交于
      Start using device specific parameters instead of module parameters for
      most things. The module parameters become the immutable initial values
      for i915 parameters. The device specific parameters in i915->params
      start life as a copy of i915_modparams. Any later changes are only
      reflected in the debugfs.
      
      The stragglers are:
      
      * i915.force_probe and i915.modeset. Needed before dev_priv is
        available. This is fine because the parameters are read-only and never
        modified.
      
      * i915.verbose_state_checks. Passing dev_priv to I915_STATE_WARN and
        I915_STATE_WARN_ON would result in massive and ugly churn. This is
        handled by not exposing the parameter via debugfs, and leaving the
        parameter writable in sysfs. This may be fixed up in follow-up work.
      
      * i915.inject_probe_failure. Only makes sense in terms of the module,
        not the device. This is handled by not exposing the parameter via
        debugfs.
      
      v2: Fix uc i915 lookup code (Michał Winiarski)
      
      Cc: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>
      Cc: Venkata Sandeep Dhanalakota <venkata.s.dhanalakota@intel.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Acked-by: NMichał Winiarski <michal.winiarski@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20200618150402.14022-1-jani.nikula@intel.com
      8a25c4be
  7. 25 5月, 2020 1 次提交
  8. 22 5月, 2020 1 次提交
  9. 02 5月, 2020 1 次提交
  10. 24 4月, 2020 1 次提交
  11. 07 4月, 2020 1 次提交
  12. 03 4月, 2020 1 次提交
  13. 27 3月, 2020 1 次提交
  14. 20 3月, 2020 1 次提交
  15. 17 3月, 2020 1 次提交
    • L
      drm/i915/perf: introduce global sseu pinning · 11ecbddd
      Lionel Landwerlin 提交于
      On Gen11 powergating half the execution units is a functional
      requirement when using the VME samplers. Not fullfilling this
      requirement can lead to hangs.
      
      This unfortunately plays fairly poorly with the NOA requirements. NOA
      requires a stable power configuration to maintain its configuration.
      
      As a result using OA (and NOA feeding into it) so far has required us
      to use a power configuration that can work for all contexts. The only
      power configuration fullfilling this is powergating half the execution
      units.
      
      This makes performance analysis for 3D workloads somewhat pointless.
      
      Failing to find a solution that would work for everybody, this change
      introduces a new i915-perf stream open parameter that punts the
      decision off to userspace. If this parameter is omitted, the existing
      Gen11 behavior remains (half EU array powergating).
      
      This change takes the initiative to move all perf related sseu
      configuration into i915_perf.c
      
      v2: Make parameter priviliged if different from default
      
      v3: Fix context modifying its sseu config while i915-perf is enabled
      
      v4: Always consider global sseu a privileged operation (Tvrtko)
          Override req_sseu point in intel_sseu_make_rpcs() (Tvrtko)
          Remove unrelated changes (Tvrtko)
      
      v5: Some typos (Tvrtko)
          Process sseu param in read_properties_unlocked() (Tvrtko)
      
      v6: Actually commit the bits from v5...
          Fixup some checkpath warnings
      
      v7: Only compare engine uabi field (Chris)
      Signed-off-by: NLionel Landwerlin <lionel.g.landwerlin@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200317132222.2638719-3-lionel.g.landwerlin@intel.com
      11ecbddd
  16. 13 3月, 2020 1 次提交
  17. 12 3月, 2020 2 次提交
  18. 04 3月, 2020 1 次提交
  19. 27 2月, 2020 1 次提交
  20. 26 2月, 2020 1 次提交
  21. 21 2月, 2020 1 次提交
  22. 18 2月, 2020 1 次提交
  23. 12 2月, 2020 1 次提交
  24. 08 2月, 2020 1 次提交
  25. 04 2月, 2020 1 次提交
  26. 31 1月, 2020 1 次提交
  27. 27 1月, 2020 2 次提交
  28. 24 1月, 2020 1 次提交
  29. 23 1月, 2020 1 次提交
  30. 09 1月, 2020 1 次提交
  31. 08 1月, 2020 1 次提交
  32. 24 12月, 2019 1 次提交
  33. 23 12月, 2019 1 次提交
  34. 22 12月, 2019 1 次提交