Skip to content
  1. Sep 22, 2021
  2. Sep 21, 2021
  3. Sep 20, 2021
  4. Sep 19, 2021
  5. Sep 17, 2021
    • Maarten Lankhorst's avatar
      kernel/locking: Add context to ww_mutex_trylock() · 12235da8
      Maarten Lankhorst authored
      
      
      i915 will soon gain an eviction path that trylock a whole lot of locks
      for eviction, getting dmesg failures like below:
      
        BUG: MAX_LOCK_DEPTH too low!
        turning off the locking correctness validator.
        depth: 48  max: 48!
        48 locks held by i915_selftest/5776:
         #0: ffff888101a79240 (&dev->mutex){....}-{3:3}, at: __driver_attach+0x88/0x160
         #1: ffffc900009778c0 (reservation_ww_class_acquire){+.+.}-{0:0}, at: i915_vma_pin.constprop.63+0x39/0x1b0 [i915]
         #2: ffff88800cf74de8 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_vma_pin.constprop.63+0x5f/0x1b0 [i915]
         #3: ffff88810c7f9e38 (&vm->mutex/1){+.+.}-{3:3}, at: i915_vma_pin_ww+0x1c4/0x9d0 [i915]
         #4: ffff88810bad5768 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915]
         #5: ffff88810bad60e8 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915]
        ...
         #46: ffff88811964d768 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915]
         #47: ffff88811964e0e8 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915]
        INFO: lockdep is turned off.
      
      Fixing eviction to nest into ww_class_acquire is a high priority, but
      it requires a rework of the entire driver, which can only be done one
      step at a time.
      
      As an intermediate solution, add an acquire context to
      ww_mutex_trylock, which allows us to do proper nesting annotations on
      the trylocks, making the above lockdep splat disappear.
      
      This is also useful in regulator_lock_nested, which may avoid dropping
      regulator_nesting_mutex in the uncontended path, so use it there.
      
      TTM may be another user for this, where we could lock a buffer in a
      fastpath with list locks held, without dropping all locks we hold.
      
      [peterz: rework actual ww_mutex_trylock() implementations]
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Link: https://lkml.kernel.org/r/YUBGPdDDjKlxAuXJ@hirez.programming.kicks-ass.net
      12235da8
  6. Sep 16, 2021
  7. Sep 15, 2021
    • Janusz Krzysztofik's avatar
      drm/i915: Mark GPU wedging on driver unregister unrecoverable · dc34ca92
      Janusz Krzysztofik authored
      
      
      GPU wedged flag now set on driver unregister to prevent from further
      using the GPU can be then cleared unintentionally when calling
      __intel_gt_unset_wedged() still before the flag is finally marked
      unrecoverable.  We need to have it marked unrecoverable earlier.
      Implement that by replacing a call to intel_gt_set_wedged() in
      intel_gt_driver_unregister() with intel_gt_set_wedged_on_fini().
      
      With the above in place, intel_gt_set_wedged_on_fini() is now called
      twice on driver remove, second time from __intel_gt_disable().  This
      seems harmless, while dropping intel_gt_set_wedged_on_fini() from
      __intel_gt_disable() proved to break some driver probe error unwind
      paths as well as mock selftest exit path.
      
      Signed-off-by: default avatarJanusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Reviewed-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210903142837.216978-1-janusz.krzysztofik@linux.intel.com
      dc34ca92
    • Maarten Lankhorst's avatar
      drm/i915: Add mmap lock around vma_lookup() in the mman selftest. · ce079f6d
      Maarten Lankhorst authored
      
      
      Add mmap_read_lock/unlock around vma_lookup(). The core code requires
      this for lookups. Since we only check if the return value is NULL,
      we can immediately unlock.
      
      This fixes the following splat in the selftes:
      
      i915: Running i915_gem_mman_live_selftests/igt_mmap
      ------------[ cut here ]------------
      WARNING: CPU: 3 PID: 5654 at include/linux/mmap_lock.h:164 find_vma+0x4e/0xb0
      Modules linked in: i915(+) vgem fuse snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio mei_hdcp x86_pkg_temp_thermal coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_intel_dspcfg snd_hda_codec snd_hwdep e1000e snd_hda_core ptp snd_pcm ttm mei_me pps_core i2c_i801 prime_numbers i2c_smbus mei [last unloaded: i915]
      CPU: 3 PID: 5654 Comm: i915_selftest Tainted: G     U            5.15.0-rc1-CI-Trybot_7984+ #1
      Hardware name: Micro-Star International Co., Ltd. MS-7B54/Z370M MORTAR (MS-7B54), BIOS 1.00 10/31/2017
      RIP: 0010:find_vma+0x4e/0xb0
      Code: de 48 89 ef e8 d3 94 fe ff 48 85 c0 74 34 48 83 c4 08 5b 5d c3 48 8d bf 28 01 00 00 be ff ff ff ff e8 d6 46 8b 00 85 c0 75 c8 <0f> 0b 48 8b 85 b8 00 00 00 48 85 c0 75 c6 48 89 ef e8 12 26 87 00
      RSP: 0018:ffffc900013df980 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: 00007f9df2b80000 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: ffffffff822e314c RDI: ffffffff8233c83f
      RBP: ffff88811bafc840 R08: ffff888107d0ddb8 R09: 00000000fffffffe
      R10: 0000000000000001 R11: 00000000ffbae7ba R12: 0000000000000000
      R13: 0000000000000000 R14: ffff88812a710000 R15: ffff888114fa42c0
      FS:  00007f9def9d4c00(0000) GS:ffff888266580000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f799627fe50 CR3: 000000011bbc2006 CR4: 00000000003706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       __igt_mmap+0xe0/0x490 [i915]
       igt_mmap+0xd2/0x160 [i915]
       ? __trace_bprintk+0x6e/0x80
       __i915_subtests.cold.7+0x42/0x92 [i915]
       ? i915_perf_selftests+0x20/0x20 [i915]
       ? __i915_nop_setup+0x10/0x10 [i915]
       __run_selftests.part.3+0x10d/0x172 [i915]
       i915_live_selftests.cold.5+0x1f/0x47 [i915]
       i915_pci_probe+0x93/0x1d0 [i915]
      
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Closes: https://gitlab.freedesktop.org/drm/intel/issues/4129
      Link: https://patchwork.freedesktop.org/patch/msgid/20210915105946.394412-1-maarten.lankhorst@linux.intel.com
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      ce079f6d
    • Joonas Lahtinen's avatar
      Merge drm/drm-next into drm-intel-gt-next · d5dd580d
      Joonas Lahtinen authored
      
      
      Close the divergence which has caused patches not to apply and
      have a solid baseline for the PXP patches that Rodrigo will send
      a topic branch PR for.
      
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      d5dd580d
    • Matt Roper's avatar
      drm/i915/dg2: Define MOCS table for DG2 · e9354051
      Matt Roper authored
      
      
      Bspec: 45101, 45427
      Cc: Ramalingam C <ramalingam.c@intel.com>
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarMatt Atwood <matthew.s.atwood@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210904003544.2422282-3-matthew.d.roper@intel.com
      e9354051
    • Lucas De Marchi's avatar
      drm/i915/xehpsdv: Define MOCS table for XeHP SDV · 50bc6486
      Lucas De Marchi authored
      
      
      Like DG1, XeHP SDV doesn't have LLC/eDRAM control values due to being a
      dgfx card. XeHP SDV adds 2 more bits: L3_GLBGO to "push the Go point to
      memory for L3 destined transaction" and L3_LKP to "enable Lookup for
      uncacheable accesses".
      
      Bspec: 45101
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
      Signed-off-by: default avatarStuart Summers <stuart.summers@intel.com>
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarClint Taylor <Clinton.A.Taylor@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210904003544.2422282-2-matthew.d.roper@intel.com
      50bc6486
    • Nathan Chancellor's avatar
      drm/i915: Enable -Wsometimes-uninitialized · 43192617
      Nathan Chancellor authored
      This warning helps catch uninitialized variables. It should have been
      enabled at the same time as commit b2423184
      
       ("drm/i915: Enable
      -Wuninitialized") but I did not realize they were disabled separately.
      Enable it now that i915 is clean so that it stays that way.
      
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210824225427.2065517-4-nathan@kernel.org
      43192617
    • Nathan Chancellor's avatar
      drm/i915/selftests: Always initialize err in igt_dmabuf_import_same_driver_lmem() · 46f20a35
      Nathan Chancellor authored
      Clang warns:
      
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:127:13: warning:
      variable 'err' is used uninitialized whenever 'if' condition is false
      [-Wsometimes-uninitialized]
              } else if (PTR_ERR(import) != -EOPNOTSUPP) {
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:138:9: note:
      uninitialized use occurs here
              return err;
                     ^~~
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:127:9: note: remove
      the 'if' if its condition is always true
              } else if (PTR_ERR(import) != -EOPNOTSUPP) {
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:95:9: note:
      initialize the variable 'err' to silence this warning
              int err;
                     ^
                      = 0
      
      The test is expected to pass if i915_gem_prime_import() returns
      -EOPNOTSUPP so initialize err to zero in this case.
      
      Fixes: cdb35d1e
      
       ("drm/i915/gem: Migrate to system at dma-buf attach time (v7)")
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
      Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210824225427.2065517-3-nathan@kernel.org
      46f20a35
    • Nathan Chancellor's avatar
      drm/i915/selftests: Do not use import_obj uninitialized · 4796054b
      Nathan Chancellor authored
      Clang warns a couple of times:
      
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:63:6: warning:
      variable 'import_obj' is used uninitialized whenever 'if' condition is
      true [-Wsometimes-uninitialized]
              if (import != &obj->base) {
                  ^~~~~~~~~~~~~~~~~~~~
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:80:22: note:
      uninitialized use occurs here
              i915_gem_object_put(import_obj);
                                  ^~~~~~~~~~
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:63:2: note: remove
      the 'if' if its condition is always false
              if (import != &obj->base) {
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c:38:46: note:
      initialize the variable 'import_obj' to silence this warning
              struct drm_i915_gem_object *obj, *import_obj;
                                                          ^
                                                           = NULL
      
      Shuffle the import_obj initialization above these if statements so that
      it is not used uninitialized.
      
      Fixes: d7b2cb38
      
       ("drm/i915/gem: Correct the locking and pin pattern for dma-buf (v8)")
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
      Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210824225427.2065517-2-nathan@kernel.org
      4796054b
  8. Sep 14, 2021