* [PATCH] drm/i915: Defer removing fence register tracking to rpm wakeup @ 2019-02-06 15:57 Chris Wilson 2019-02-06 17:09 ` ✓ Fi.CI.BAT: success for " Patchwork 2019-02-06 18:47 ` ✓ Fi.CI.IGT: " Patchwork 0 siblings, 2 replies; 3+ messages in thread From: Chris Wilson @ 2019-02-06 15:57 UTC (permalink / raw) To: intel-gfx Currently, we may simultaneously release the fence register from both fence_update() and i915_gem_restore_fences(). This is dangerous, so defer the bookkeeping entirely to i915_gem_restore_fences() when the device is asleep. Reported-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> --- drivers/gpu/drm/i915/i915_gem_fence_reg.c | 27 +++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_fence_reg.c b/drivers/gpu/drm/i915/i915_gem_fence_reg.c index e037e94792f3..4331dadc7000 100644 --- a/drivers/gpu/drm/i915/i915_gem_fence_reg.c +++ b/drivers/gpu/drm/i915/i915_gem_fence_reg.c @@ -240,6 +240,22 @@ static int fence_update(struct drm_i915_fence_reg *fence, i915_vma_flush_writes(old); } + /* + * We only need to update the register itself if the device is awake. + * If the device is currently powered down, we will defer the write + * to the runtime resume, see i915_gem_restore_fences(). + * + * This only works for removing the fence register, on acquisition + * the caller must hold the rpm wakeref. The fence register must + * be cleared before we can use any other fences to ensure that + * the new fences do not overlap the elided clears, confusing HW. + */ + wakeref = intel_runtime_pm_get_if_in_use(fence->i915); + if (!wakeref) { + GEM_BUG_ON(vma); + return 0; + } + if (fence->vma && fence->vma != vma) { /* Ensure that all userspace CPU access is completed before * stealing the fence. @@ -253,15 +269,7 @@ static int fence_update(struct drm_i915_fence_reg *fence, list_move(&fence->link, &fence->i915->mm.fence_list); } - /* We only need to update the register itself if the device is awake. - * If the device is currently powered down, we will defer the write - * to the runtime resume, see i915_gem_restore_fences(). - */ - wakeref = intel_runtime_pm_get_if_in_use(fence->i915); - if (wakeref) { - fence_write(fence, vma); - intel_runtime_pm_put(fence->i915, wakeref); - } + fence_write(fence, vma); if (vma) { if (fence->vma != vma) { @@ -272,6 +280,7 @@ static int fence_update(struct drm_i915_fence_reg *fence, list_move_tail(&fence->link, &fence->i915->mm.fence_list); } + intel_runtime_pm_put(fence->i915, wakeref); return 0; } -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 3+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915: Defer removing fence register tracking to rpm wakeup 2019-02-06 15:57 [PATCH] drm/i915: Defer removing fence register tracking to rpm wakeup Chris Wilson @ 2019-02-06 17:09 ` Patchwork 2019-02-06 18:47 ` ✓ Fi.CI.IGT: " Patchwork 1 sibling, 0 replies; 3+ messages in thread From: Patchwork @ 2019-02-06 17:09 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: drm/i915: Defer removing fence register tracking to rpm wakeup URL : https://patchwork.freedesktop.org/series/56291/ State : success == Summary == CI Bug Log - changes from CI_DRM_5552 -> Patchwork_12156 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/56291/revisions/1/mbox/ Known issues ------------ Here are the changes found in Patchwork_12156 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live_evict: - fi-bsw-kefka: PASS -> DMESG-WARN [fdo#107709] * igt@i915_selftest@live_execlists: - fi-apl-guc: PASS -> INCOMPLETE [fdo#103927] #### Possible fixes #### * igt@gem_exec_suspend@basic-s4-devices: - fi-blb-e6850: INCOMPLETE [fdo#107718] -> PASS * igt@kms_busy@basic-flip-b: - fi-gdg-551: FAIL [fdo#103182] -> PASS * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: FAIL [fdo#103167] -> PASS * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a: - fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +2 * igt@pm_rpm@basic-pci-d3-state: - fi-bsw-kefka: {SKIP} [fdo#109271] -> PASS * igt@pm_rpm@basic-rte: - fi-bsw-kefka: FAIL [fdo#108800] -> PASS {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#107709]: https://bugs.freedesktop.org/show_bug.cgi?id=107709 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622 [fdo#108800]: https://bugs.freedesktop.org/show_bug.cgi?id=108800 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109527]: https://bugs.freedesktop.org/show_bug.cgi?id=109527 [fdo#109567]: https://bugs.freedesktop.org/show_bug.cgi?id=109567 Participating hosts (48 -> 45) ------------------------------ Additional (2): fi-ilk-650 fi-snb-2520m Missing (5): fi-kbl-soraka fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-skl-6700hq Build changes ------------- * Linux: CI_DRM_5552 -> Patchwork_12156 CI_DRM_5552: b7cd857f32e0b1d5ea61e5eeebc0334bafb34eaa @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4812: 592b854fead32c2b0dac7198edfb9a6bffd66932 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_12156: 0e9d734de6028b9dd4ec5f38ecb9b07294ff9e4d @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 0e9d734de602 drm/i915: Defer removing fence register tracking to rpm wakeup == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12156/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 3+ messages in thread
* ✓ Fi.CI.IGT: success for drm/i915: Defer removing fence register tracking to rpm wakeup 2019-02-06 15:57 [PATCH] drm/i915: Defer removing fence register tracking to rpm wakeup Chris Wilson 2019-02-06 17:09 ` ✓ Fi.CI.BAT: success for " Patchwork @ 2019-02-06 18:47 ` Patchwork 1 sibling, 0 replies; 3+ messages in thread From: Patchwork @ 2019-02-06 18:47 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: drm/i915: Defer removing fence register tracking to rpm wakeup URL : https://patchwork.freedesktop.org/series/56291/ State : success == Summary == CI Bug Log - changes from CI_DRM_5552_full -> Patchwork_12156_full ==================================================== Summary ------- **SUCCESS** No regressions found. Known issues ------------ Here are the changes found in Patchwork_12156_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_available_modes_crc@available_mode_test_crc: - shard-apl: PASS -> FAIL [fdo#106641] - shard-glk: PASS -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a: - shard-glk: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-pageflip-hang-newfb-render-b: - shard-apl: PASS -> DMESG-WARN [fdo#107956] * igt@kms_cursor_crc@cursor-256x85-random: - shard-apl: PASS -> FAIL [fdo#103232] +4 * igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size: - shard-snb: PASS -> INCOMPLETE [fdo#105411] * igt@kms_cursor_legacy@cursor-vs-flip-atomic: - shard-hsw: PASS -> FAIL [fdo#103355] * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite: - shard-apl: PASS -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt: - shard-glk: PASS -> FAIL [fdo#103167] +1 * igt@kms_plane@pixel-format-pipe-b-planes-source-clamping: - shard-apl: PASS -> FAIL [fdo#108948] * igt@kms_plane_alpha_blend@pipe-a-alpha-transparant-fb: - shard-glk: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_multiple@atomic-pipe-b-tiling-x: - shard-apl: PASS -> FAIL [fdo#103166] +2 * igt@kms_setmode@basic: - shard-glk: NOTRUN -> FAIL [fdo#99912] #### Possible fixes #### * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-snb: INCOMPLETE [fdo#105411] -> PASS * igt@kms_cursor_crc@cursor-128x42-sliding: - shard-apl: FAIL [fdo#103232] -> PASS +1 * igt@kms_cursor_crc@cursor-256x85-random: - shard-glk: FAIL [fdo#103232] -> PASS +1 * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible: - shard-glk: FAIL [fdo#105363] -> PASS * igt@kms_flip@plain-flip-fb-recreate: - shard-kbl: DMESG-WARN [fdo#103558] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt: - shard-apl: FAIL [fdo#103167] -> PASS +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move: - shard-glk: FAIL [fdo#103167] -> PASS * igt@kms_plane@pixel-format-pipe-b-planes-source-clamping: - shard-glk: FAIL [fdo#108948] -> PASS * igt@kms_plane@plane-position-covered-pipe-c-planes: - shard-apl: FAIL [fdo#103166] -> PASS +1 * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb: - shard-glk: FAIL [fdo#108145] -> PASS * igt@kms_setmode@basic: - shard-apl: FAIL [fdo#99912] -> PASS - shard-kbl: FAIL [fdo#99912] -> PASS * igt@pm_rc6_residency@rc6-accuracy: - shard-snb: {SKIP} [fdo#109271] -> PASS #### Warnings #### * igt@i915_suspend@shrink: - shard-snb: INCOMPLETE [fdo#105411] / [fdo#106886] -> DMESG-WARN [fdo#109244] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 [fdo#103355]: https://bugs.freedesktop.org/show_bug.cgi?id=103355 [fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558 [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363 [fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411 [fdo#106641]: https://bugs.freedesktop.org/show_bug.cgi?id=106641 [fdo#106886]: https://bugs.freedesktop.org/show_bug.cgi?id=106886 [fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#108948]: https://bugs.freedesktop.org/show_bug.cgi?id=108948 [fdo#109244]: https://bugs.freedesktop.org/show_bug.cgi?id=109244 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 Participating hosts (7 -> 5) ------------------------------ Missing (2): shard-skl shard-iclb Build changes ------------- * Linux: CI_DRM_5552 -> Patchwork_12156 CI_DRM_5552: b7cd857f32e0b1d5ea61e5eeebc0334bafb34eaa @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4812: 592b854fead32c2b0dac7198edfb9a6bffd66932 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_12156: 0e9d734de6028b9dd4ec5f38ecb9b07294ff9e4d @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12156/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-02-06 18:47 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-02-06 15:57 [PATCH] drm/i915: Defer removing fence register tracking to rpm wakeup Chris Wilson 2019-02-06 17:09 ` ✓ Fi.CI.BAT: success for " Patchwork 2019-02-06 18:47 ` ✓ Fi.CI.IGT: " Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.