* [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code @ 2022-01-26 13:09 Jouni Högander 2022-01-26 19:26 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Jouni Högander @ 2022-01-26 13:09 UTC (permalink / raw) To: intel-gfx We should now rely on userspace doing dirtyfb. There is no need to have separate frontbuffer tracking hooks in gem code. This patch is removing all frontbuffer tracking calls from the gem code. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Jouni Högander <jouni.hogander@intel.com> --- drivers/gpu/drm/i915/display/intel_overlay.c | 2 -- drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 2 -- drivers/gpu/drm/i915/gem/i915_gem_domain.c | 5 ---- drivers/gpu/drm/i915/gem/i915_gem_object.c | 24 -------------------- drivers/gpu/drm/i915/gem/i915_gem_object.h | 16 ------------- drivers/gpu/drm/i915/gem/i915_gem_phys.c | 7 ------ drivers/gpu/drm/i915/i915_gem.c | 5 ---- 7 files changed, 61 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c index 5358f03b52db..fc2691dac278 100644 --- a/drivers/gpu/drm/i915/display/intel_overlay.c +++ b/drivers/gpu/drm/i915/display/intel_overlay.c @@ -809,8 +809,6 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, goto out_pin_section; } - i915_gem_object_flush_frontbuffer(new_bo, ORIGIN_DIRTYFB); - if (!overlay->active) { const struct intel_crtc_state *crtc_state = overlay->crtc->config; diff --git a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c index 8a248003dfae..115e6d877e38 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c @@ -20,8 +20,6 @@ static void __do_clflush(struct drm_i915_gem_object *obj) { GEM_BUG_ON(!i915_gem_object_has_pages(obj)); drm_clflush_sg(obj->mm.pages); - - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); } static void clflush_work(struct dma_fence_work *base) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c b/drivers/gpu/drm/i915/gem/i915_gem_domain.c index 26532c07d467..ab1fc2d930e1 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c @@ -63,7 +63,6 @@ flush_write_domain(struct drm_i915_gem_object *obj, unsigned int flush_domains) } spin_unlock(&obj->vma.lock); - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); break; case I915_GEM_DOMAIN_WC: @@ -615,9 +614,6 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, out_unlock: i915_gem_object_unlock(obj); - if (!err && write_domain) - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); - out: i915_gem_object_put(obj); return err; @@ -728,7 +724,6 @@ int i915_gem_object_prepare_write(struct drm_i915_gem_object *obj, } out: - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); obj->mm.dirty = true; /* return with the pages pinned */ return 0; diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c index 1a9e1f940a7d..f7ba66deb923 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c @@ -394,30 +394,6 @@ static void i915_gem_free_object(struct drm_gem_object *gem_obj) queue_delayed_work(i915->wq, &i915->mm.free_work, 0); } -void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, - enum fb_op_origin origin) -{ - struct intel_frontbuffer *front; - - front = __intel_frontbuffer_get(obj); - if (front) { - intel_frontbuffer_flush(front, origin); - intel_frontbuffer_put(front); - } -} - -void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, - enum fb_op_origin origin) -{ - struct intel_frontbuffer *front; - - front = __intel_frontbuffer_get(obj); - if (front) { - intel_frontbuffer_invalidate(front, origin); - intel_frontbuffer_put(front); - } -} - static void i915_gem_object_read_from_page_kmap(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size) { diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h index 02c37fe4a535..d7a08172b239 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h @@ -578,22 +578,6 @@ void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, enum fb_op_origin origin); -static inline void -i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, - enum fb_op_origin origin) -{ - if (unlikely(rcu_access_pointer(obj->frontbuffer))) - __i915_gem_object_flush_frontbuffer(obj, origin); -} - -static inline void -i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, - enum fb_op_origin origin) -{ - if (unlikely(rcu_access_pointer(obj->frontbuffer))) - __i915_gem_object_invalidate_frontbuffer(obj, origin); -} - int i915_gem_object_read_from_page(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size); bool i915_gem_object_is_shmem(const struct drm_i915_gem_object *obj); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_phys.c b/drivers/gpu/drm/i915/gem/i915_gem_phys.c index ca6faffcc496..e98a9884cf5a 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c @@ -151,19 +151,12 @@ int i915_gem_object_pwrite_phys(struct drm_i915_gem_object *obj, if (err) return err; - /* - * We manually control the domain here and pretend that it - * remains coherent i.e. in the GTT domain, like shmem_pwrite. - */ - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); - if (copy_from_user(vaddr, user_data, args->size)) return -EFAULT; drm_clflush_virt_range(vaddr, args->size); intel_gt_chipset_flush(to_gt(i915)); - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); return 0; } diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index e3a2c2a0e156..60838209f9cd 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -563,8 +563,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, goto out_rpm; } - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); - user_data = u64_to_user_ptr(args->data_ptr); offset = args->offset; remain = args->size; @@ -607,7 +605,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, } intel_gt_flush_ggtt_writes(ggtt->vm.gt); - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); i915_gem_gtt_cleanup(obj, &node, vma); out_rpm: @@ -694,8 +691,6 @@ i915_gem_shmem_pwrite(struct drm_i915_gem_object *obj, offset = 0; } - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); - i915_gem_object_unpin_pages(obj); return ret; -- 2.25.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-26 13:09 [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code Jouni Högander @ 2022-01-26 19:26 ` Patchwork 2022-01-26 19:56 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2022-01-26 19:26 UTC (permalink / raw) To: Jouni Högander; +Cc: intel-gfx == Series Details == Series: drm/i915: Remove all frontbuffer tracking calls from the gem code URL : https://patchwork.freedesktop.org/series/99365/ State : warning == Summary == $ dim sparse --fast origin/drm-tip Sparse version: v0.6.2 Fast mode used, each commit won't be checked separately. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-26 13:09 [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code Jouni Högander 2022-01-26 19:26 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork @ 2022-01-26 19:56 ` Patchwork 2022-01-27 0:47 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork 2022-01-27 8:20 ` [Intel-gfx] [RFC PATCH] " Maarten Lankhorst 3 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2022-01-26 19:56 UTC (permalink / raw) To: Jouni Högander; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 5663 bytes --] == Series Details == Series: drm/i915: Remove all frontbuffer tracking calls from the gem code URL : https://patchwork.freedesktop.org/series/99365/ State : success == Summary == CI Bug Log - changes from CI_DRM_11145 -> Patchwork_22113 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/index.html Participating hosts (46 -> 43) ------------------------------ Additional (1): fi-icl-u2 Missing (4): fi-ctg-p8600 fi-bsw-cyan fi-bdw-samus fi-hsw-4200u Known issues ------------ Here are the changes found in Patchwork_22113 that come from known issues: ### CI changes ### #### Possible fixes #### * boot: - fi-ilk-650: [FAIL][1] -> [PASS][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/fi-ilk-650/boot.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-ilk-650/boot.html ### IGT changes ### #### Issues hit #### * igt@amdgpu/amd_cs_nop@fork-gfx0: - fi-icl-u2: NOTRUN -> [SKIP][3] ([fdo#109315]) +17 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-icl-u2/igt@amdgpu/amd_cs_nop@fork-gfx0.html * igt@amdgpu/amd_cs_nop@nop-compute0: - fi-ilk-650: NOTRUN -> [SKIP][4] ([fdo#109271]) +39 similar issues [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-ilk-650/igt@amdgpu/amd_cs_nop@nop-compute0.html * igt@gem_exec_suspend@basic-s3: - fi-skl-6600u: NOTRUN -> [INCOMPLETE][5] ([i915#4547]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-skl-6600u/igt@gem_exec_suspend@basic-s3.html * igt@gem_huc_copy@huc-copy: - fi-icl-u2: NOTRUN -> [SKIP][6] ([i915#2190]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-icl-u2/igt@gem_huc_copy@huc-copy.html * igt@gem_lmem_swapping@parallel-random-engines: - fi-icl-u2: NOTRUN -> [SKIP][7] ([i915#4613]) +3 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-icl-u2/igt@gem_lmem_swapping@parallel-random-engines.html * igt@kms_chamelium@dp-hpd-fast: - fi-ilk-650: NOTRUN -> [SKIP][8] ([fdo#109271] / [fdo#111827]) +8 similar issues [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-ilk-650/igt@kms_chamelium@dp-hpd-fast.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-icl-u2: NOTRUN -> [SKIP][9] ([fdo#111827]) +8 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - fi-icl-u2: NOTRUN -> [SKIP][10] ([fdo#109278]) +2 similar issues [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_force_connector_basic@force-load-detect: - fi-icl-u2: NOTRUN -> [SKIP][11] ([fdo#109285]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-icl-u2/igt@kms_force_connector_basic@force-load-detect.html * igt@prime_vgem@basic-userptr: - fi-icl-u2: NOTRUN -> [SKIP][12] ([i915#3301]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-icl-u2/igt@prime_vgem@basic-userptr.html #### Possible fixes #### * igt@i915_selftest@live@hangcheck: - bat-dg1-6: [DMESG-FAIL][13] ([i915#4494]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/bat-dg1-6/igt@i915_selftest@live@hangcheck.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/bat-dg1-6/igt@i915_selftest@live@hangcheck.html * igt@kms_frontbuffer_tracking@basic: - fi-cml-u2: [DMESG-WARN][15] ([i915#4269]) -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/fi-cml-u2/igt@kms_frontbuffer_tracking@basic.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/fi-cml-u2/igt@kms_frontbuffer_tracking@basic.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190 [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301 [i915#4269]: https://gitlab.freedesktop.org/drm/intel/issues/4269 [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494 [i915#4547]: https://gitlab.freedesktop.org/drm/intel/issues/4547 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#4898]: https://gitlab.freedesktop.org/drm/intel/issues/4898 Build changes ------------- * Linux: CI_DRM_11145 -> Patchwork_22113 CI-20190529: 20190529 CI_DRM_11145: 348109d01999f0feea85e8f336dc804b782ab870 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_6335: 2b30115edd692b60d16cb10375730a87f51f0e37 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_22113: 7afc88d48e277830ae837c3da9369a2b71eeab59 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 7afc88d48e27 drm/i915: Remove all frontbuffer tracking calls from the gem code == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/index.html [-- Attachment #2: Type: text/html, Size: 6668 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-26 13:09 [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code Jouni Högander 2022-01-26 19:26 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork 2022-01-26 19:56 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork @ 2022-01-27 0:47 ` Patchwork 2022-01-27 8:20 ` [Intel-gfx] [RFC PATCH] " Maarten Lankhorst 3 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2022-01-27 0:47 UTC (permalink / raw) To: Jouni Högander; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 30288 bytes --] == Series Details == Series: drm/i915: Remove all frontbuffer tracking calls from the gem code URL : https://patchwork.freedesktop.org/series/99365/ State : failure == Summary == CI Bug Log - changes from CI_DRM_11145_full -> Patchwork_22113_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_22113_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_22113_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (10 -> 10) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_22113_full: ### IGT changes ### #### Possible regressions #### * igt@i915_pm_dc@dc5-psr: - shard-iclb: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb7/igt@i915_pm_dc@dc5-psr.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb8/igt@i915_pm_dc@dc5-psr.html - shard-tglb: [PASS][3] -> [FAIL][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-tglb5/igt@i915_pm_dc@dc5-psr.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb7/igt@i915_pm_dc@dc5-psr.html * igt@kms_plane@plane-position-hole-dpms@pipe-b-planes: - shard-tglb: [PASS][5] -> [INCOMPLETE][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-tglb1/igt@kms_plane@plane-position-hole-dpms@pipe-b-planes.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb8/igt@kms_plane@plane-position-hole-dpms@pipe-b-planes.html Known issues ------------ Here are the changes found in Patchwork_22113_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_isolation@preservation-s3@vcs0: - shard-kbl: [PASS][7] -> [DMESG-WARN][8] ([i915#180]) +3 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl3/igt@gem_ctx_isolation@preservation-s3@vcs0.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@gem_ctx_isolation@preservation-s3@vcs0.html * igt@gem_ctx_persistence@legacy-engines-queued: - shard-snb: NOTRUN -> [SKIP][9] ([fdo#109271] / [i915#1099]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-snb6/igt@gem_ctx_persistence@legacy-engines-queued.html * igt@gem_exec_balancer@parallel-keep-submit-fence: - shard-iclb: [PASS][10] -> [SKIP][11] ([i915#4525]) +1 similar issue [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb2/igt@gem_exec_balancer@parallel-keep-submit-fence.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb6/igt@gem_exec_balancer@parallel-keep-submit-fence.html * igt@gem_exec_fair@basic-none@rcs0: - shard-glk: NOTRUN -> [FAIL][12] ([i915#2842]) +1 similar issue [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@gem_exec_fair@basic-none@rcs0.html * igt@gem_exec_fair@basic-pace-solo@rcs0: - shard-iclb: NOTRUN -> [FAIL][13] ([i915#2842]) +1 similar issue [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb3/igt@gem_exec_fair@basic-pace-solo@rcs0.html - shard-tglb: NOTRUN -> [FAIL][14] ([i915#2842]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb1/igt@gem_exec_fair@basic-pace-solo@rcs0.html * igt@gem_exec_whisper@basic-normal-all: - shard-glk: [PASS][15] -> [DMESG-WARN][16] ([i915#118]) +2 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-glk2/igt@gem_exec_whisper@basic-normal-all.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk7/igt@gem_exec_whisper@basic-normal-all.html * igt@gem_exec_whisper@basic-queues-all: - shard-glk: NOTRUN -> [DMESG-WARN][17] ([i915#118]) +1 similar issue [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@gem_exec_whisper@basic-queues-all.html * igt@gem_lmem_swapping@basic: - shard-skl: NOTRUN -> [SKIP][18] ([fdo#109271] / [i915#4613]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-skl4/igt@gem_lmem_swapping@basic.html * igt@gem_lmem_swapping@parallel-random: - shard-apl: NOTRUN -> [SKIP][19] ([fdo#109271] / [i915#4613]) +1 similar issue [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@gem_lmem_swapping@parallel-random.html * igt@gem_lmem_swapping@parallel-random-verify: - shard-kbl: NOTRUN -> [SKIP][20] ([fdo#109271] / [i915#4613]) +2 similar issues [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@gem_lmem_swapping@parallel-random-verify.html * igt@gem_pwrite@basic-exhaustion: - shard-snb: NOTRUN -> [WARN][21] ([i915#2658]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-snb6/igt@gem_pwrite@basic-exhaustion.html * igt@gem_pxp@verify-pxp-execution-after-suspend-resume: - shard-iclb: NOTRUN -> [SKIP][22] ([i915#4270]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html * igt@gem_pxp@verify-pxp-key-change-after-suspend-resume: - shard-tglb: NOTRUN -> [SKIP][23] ([i915#4270]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html * igt@gem_userptr_blits@dmabuf-sync: - shard-kbl: NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#3323]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@gem_userptr_blits@dmabuf-sync.html * igt@gem_userptr_blits@input-checking: - shard-apl: NOTRUN -> [DMESG-WARN][25] ([i915#4990]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@gem_userptr_blits@input-checking.html * igt@gem_workarounds@suspend-resume-context: - shard-apl: [PASS][26] -> [DMESG-WARN][27] ([i915#180]) +1 similar issue [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-apl3/igt@gem_workarounds@suspend-resume-context.html [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl2/igt@gem_workarounds@suspend-resume-context.html * igt@gen9_exec_parse@bb-large: - shard-iclb: NOTRUN -> [SKIP][28] ([i915#2856]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@gen9_exec_parse@bb-large.html * igt@gen9_exec_parse@unaligned-jump: - shard-tglb: NOTRUN -> [SKIP][29] ([i915#2527] / [i915#2856]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@gen9_exec_parse@unaligned-jump.html * igt@i915_pm_dc@dc9-dpms: - shard-tglb: NOTRUN -> [SKIP][30] ([i915#4281]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@i915_pm_dc@dc9-dpms.html * igt@i915_pm_rc6_residency@rc6-fence: - shard-iclb: NOTRUN -> [WARN][31] ([i915#1804] / [i915#2684]) [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb3/igt@i915_pm_rc6_residency@rc6-fence.html * igt@kms_big_fb@linear-32bpp-rotate-90: - shard-tglb: NOTRUN -> [SKIP][32] ([fdo#111614]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_big_fb@linear-32bpp-rotate-90.html * igt@kms_big_fb@yf-tiled-8bpp-rotate-0: - shard-iclb: NOTRUN -> [SKIP][33] ([fdo#110723]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@kms_big_fb@yf-tiled-8bpp-rotate-0.html * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip: - shard-kbl: NOTRUN -> [SKIP][34] ([fdo#109271] / [i915#3777]) [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_ccs: - shard-tglb: NOTRUN -> [SKIP][35] ([i915#3689]) +1 similar issue [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_ccs.html * igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_mc_ccs: - shard-kbl: NOTRUN -> [SKIP][36] ([fdo#109271] / [i915#3886]) +2 similar issues [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_mc_ccs: - shard-skl: NOTRUN -> [SKIP][37] ([fdo#109271] / [i915#3886]) +2 similar issues [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-skl10/igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html - shard-apl: NOTRUN -> [SKIP][38] ([fdo#109271] / [i915#3886]) +1 similar issue [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl8/igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_mc_ccs: - shard-glk: NOTRUN -> [SKIP][39] ([fdo#109271] / [i915#3886]) +2 similar issues [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs: - shard-iclb: NOTRUN -> [SKIP][40] ([fdo#109278] / [i915#3886]) +1 similar issue [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html * igt@kms_chamelium@dp-hpd-storm-disable: - shard-glk: NOTRUN -> [SKIP][41] ([fdo#109271] / [fdo#111827]) +2 similar issues [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@kms_chamelium@dp-hpd-storm-disable.html * igt@kms_chamelium@hdmi-frame-dump: - shard-iclb: NOTRUN -> [SKIP][42] ([fdo#109284] / [fdo#111827]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb3/igt@kms_chamelium@hdmi-frame-dump.html * igt@kms_chamelium@vga-hpd: - shard-apl: NOTRUN -> [SKIP][43] ([fdo#109271] / [fdo#111827]) +6 similar issues [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@kms_chamelium@vga-hpd.html * igt@kms_chamelium@vga-hpd-for-each-pipe: - shard-kbl: NOTRUN -> [SKIP][44] ([fdo#109271] / [fdo#111827]) +6 similar issues [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@kms_chamelium@vga-hpd-for-each-pipe.html * igt@kms_color@pipe-d-ctm-0-5: - shard-skl: NOTRUN -> [SKIP][45] ([fdo#109271]) +27 similar issues [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-skl4/igt@kms_color@pipe-d-ctm-0-5.html * igt@kms_color@pipe-d-ctm-negative: - shard-iclb: NOTRUN -> [SKIP][46] ([fdo#109278] / [i915#1149]) [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb3/igt@kms_color@pipe-d-ctm-negative.html * igt@kms_color_chamelium@pipe-b-ctm-red-to-blue: - shard-tglb: NOTRUN -> [SKIP][47] ([fdo#109284] / [fdo#111827]) +3 similar issues [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_color_chamelium@pipe-b-ctm-red-to-blue.html * igt@kms_color_chamelium@pipe-c-ctm-blue-to-red: - shard-skl: NOTRUN -> [SKIP][48] ([fdo#109271] / [fdo#111827]) +1 similar issue [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-skl4/igt@kms_color_chamelium@pipe-c-ctm-blue-to-red.html * igt@kms_color_chamelium@pipe-c-ctm-limited-range: - shard-snb: NOTRUN -> [SKIP][49] ([fdo#109271] / [fdo#111827]) +1 similar issue [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-snb6/igt@kms_color_chamelium@pipe-c-ctm-limited-range.html * igt@kms_color_chamelium@pipe-d-ctm-0-75: - shard-iclb: NOTRUN -> [SKIP][50] ([fdo#109278] / [fdo#109284] / [fdo#111827]) [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@kms_color_chamelium@pipe-d-ctm-0-75.html * igt@kms_content_protection@atomic-dpms: - shard-apl: NOTRUN -> [TIMEOUT][51] ([i915#1319]) [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl8/igt@kms_content_protection@atomic-dpms.html * igt@kms_content_protection@legacy: - shard-kbl: NOTRUN -> [TIMEOUT][52] ([i915#1319]) [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@kms_content_protection@legacy.html * igt@kms_cursor_crc@pipe-b-cursor-32x10-random: - shard-kbl: NOTRUN -> [SKIP][53] ([fdo#109271]) +91 similar issues [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@kms_cursor_crc@pipe-b-cursor-32x10-random.html * igt@kms_cursor_crc@pipe-b-cursor-32x10-rapid-movement: - shard-tglb: NOTRUN -> [SKIP][54] ([i915#3359]) [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_cursor_crc@pipe-b-cursor-32x10-rapid-movement.html * igt@kms_cursor_crc@pipe-c-cursor-32x32-rapid-movement: - shard-tglb: NOTRUN -> [SKIP][55] ([i915#3319]) [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_cursor_crc@pipe-c-cursor-32x32-rapid-movement.html * igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic: - shard-tglb: NOTRUN -> [SKIP][56] ([fdo#109274] / [fdo#111825]) +1 similar issue [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html * igt@kms_cursor_legacy@pipe-d-single-bo: - shard-kbl: NOTRUN -> [SKIP][57] ([fdo#109271] / [i915#533]) +1 similar issue [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl6/igt@kms_cursor_legacy@pipe-d-single-bo.html * igt@kms_fbcon_fbt@fbc-suspend: - shard-apl: [PASS][58] -> [INCOMPLETE][59] ([i915#180] / [i915#1982]) [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-apl6/igt@kms_fbcon_fbt@fbc-suspend.html [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl6/igt@kms_fbcon_fbt@fbc-suspend.html * igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2: - shard-glk: [PASS][60] -> [FAIL][61] ([i915#79]) [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-glk1/igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2.html [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite: - shard-snb: NOTRUN -> [SKIP][62] ([fdo#109271]) +34 similar issues [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-snb6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu: - shard-iclb: NOTRUN -> [SKIP][63] ([fdo#109280]) +4 similar issues [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc: - shard-tglb: NOTRUN -> [SKIP][64] ([fdo#109280] / [fdo#111825]) +6 similar issues [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt: - shard-skl: [PASS][65] -> [DMESG-WARN][66] ([i915#1982]) [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-skl8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-skl10/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html * igt@kms_hdr@static-toggle: - shard-iclb: NOTRUN -> [SKIP][67] ([i915#1187]) [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb3/igt@kms_hdr@static-toggle.html * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-d: - shard-apl: NOTRUN -> [SKIP][68] ([fdo#109271] / [i915#533]) +1 similar issue [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-d.html * igt@kms_plane_alpha_blend@pipe-a-alpha-basic: - shard-glk: NOTRUN -> [FAIL][69] ([fdo#108145] / [i915#265]) [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@kms_plane_alpha_blend@pipe-a-alpha-basic.html * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max: - shard-kbl: NOTRUN -> [FAIL][70] ([fdo#108145] / [i915#265]) [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html * igt@kms_plane_cursor@pipe-d-viewport-size-256: - shard-glk: NOTRUN -> [SKIP][71] ([fdo#109271]) +37 similar issues [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@kms_plane_cursor@pipe-d-viewport-size-256.html * igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area: - shard-kbl: NOTRUN -> [SKIP][72] ([fdo#109271] / [i915#658]) +1 similar issue [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl3/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html - shard-tglb: NOTRUN -> [SKIP][73] ([i915#2920]) [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area: - shard-apl: NOTRUN -> [SKIP][74] ([fdo#109271] / [i915#658]) [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html * igt@kms_psr@psr2_primary_page_flip: - shard-iclb: [PASS][75] -> [SKIP][76] ([fdo#109441]) +3 similar issues [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@kms_psr@psr2_primary_page_flip.html * igt@kms_setmode@basic: - shard-glk: [PASS][77] -> [FAIL][78] ([i915#31]) [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-glk9/igt@kms_setmode@basic.html [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@kms_setmode@basic.html * igt@kms_vblank@pipe-d-ts-continuation-dpms-suspend: - shard-iclb: NOTRUN -> [SKIP][79] ([fdo#109278]) +4 similar issues [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@kms_vblank@pipe-d-ts-continuation-dpms-suspend.html * igt@kms_vblank@pipe-d-wait-forked-hang: - shard-apl: NOTRUN -> [SKIP][80] ([fdo#109271]) +86 similar issues [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@kms_vblank@pipe-d-wait-forked-hang.html * igt@kms_vblank@pipe-d-wait-idle: - shard-glk: NOTRUN -> [SKIP][81] ([fdo#109271] / [i915#533]) [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk9/igt@kms_vblank@pipe-d-wait-idle.html * igt@nouveau_crc@pipe-d-source-rg: - shard-tglb: NOTRUN -> [SKIP][82] ([i915#2530]) [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@nouveau_crc@pipe-d-source-rg.html * igt@prime_nv_api@nv_i915_import_twice_check_flink_name: - shard-tglb: NOTRUN -> [SKIP][83] ([fdo#109291]) [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@prime_nv_api@nv_i915_import_twice_check_flink_name.html * igt@prime_nv_api@nv_self_import: - shard-iclb: NOTRUN -> [SKIP][84] ([fdo#109291]) [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@prime_nv_api@nv_self_import.html * igt@sysfs_clients@fair-0: - shard-tglb: NOTRUN -> [SKIP][85] ([i915#2994]) [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@sysfs_clients@fair-0.html * igt@sysfs_clients@recycle-many: - shard-apl: NOTRUN -> [SKIP][86] ([fdo#109271] / [i915#2994]) [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@sysfs_clients@recycle-many.html - shard-kbl: NOTRUN -> [SKIP][87] ([fdo#109271] / [i915#2994]) +1 similar issue [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl6/igt@sysfs_clients@recycle-many.html #### Possible fixes #### * igt@gem_eio@unwedge-stress: - shard-tglb: [TIMEOUT][88] ([i915#3063] / [i915#3648]) -> [PASS][89] [88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-tglb6/igt@gem_eio@unwedge-stress.html [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb7/igt@gem_eio@unwedge-stress.html * igt@gem_exec_balancer@parallel-out-fence: - shard-iclb: [SKIP][90] ([i915#4525]) -> [PASS][91] +1 similar issue [90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb5/igt@gem_exec_balancer@parallel-out-fence.html [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb4/igt@gem_exec_balancer@parallel-out-fence.html * igt@gem_exec_fair@basic-none-vip@rcs0: - shard-kbl: [FAIL][92] ([i915#2842]) -> [PASS][93] +3 similar issues [92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl6/igt@gem_exec_fair@basic-none-vip@rcs0.html [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl1/igt@gem_exec_fair@basic-none-vip@rcs0.html * igt@gem_exec_fair@basic-none@vcs0: - shard-apl: [FAIL][94] ([i915#2842]) -> [PASS][95] +1 similar issue [94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-apl6/igt@gem_exec_fair@basic-none@vcs0.html [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl6/igt@gem_exec_fair@basic-none@vcs0.html * igt@gem_exec_fair@basic-pace@bcs0: - shard-iclb: [FAIL][96] ([i915#2842]) -> [PASS][97] [96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb3/igt@gem_exec_fair@basic-pace@bcs0.html [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb7/igt@gem_exec_fair@basic-pace@bcs0.html * igt@gem_exec_fair@basic-throttle@rcs0: - shard-iclb: [FAIL][98] ([i915#2849]) -> [PASS][99] [98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb1/igt@gem_exec_fair@basic-throttle@rcs0.html [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb6/igt@gem_exec_fair@basic-throttle@rcs0.html * igt@gem_exec_whisper@basic-contexts-priority: - shard-glk: [DMESG-WARN][100] ([i915#118]) -> [PASS][101] [100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-glk6/igt@gem_exec_whisper@basic-contexts-priority.html [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-glk1/igt@gem_exec_whisper@basic-contexts-priority.html * igt@gen9_exec_parse@allowed-all: - shard-kbl: [DMESG-WARN][102] ([i915#1436] / [i915#716]) -> [PASS][103] [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl1/igt@gen9_exec_parse@allowed-all.html [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@gen9_exec_parse@allowed-all.html * igt@i915_selftest@live@hangcheck: - shard-snb: [INCOMPLETE][104] ([i915#3921]) -> [PASS][105] [104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-snb6/igt@i915_selftest@live@hangcheck.html [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-snb6/igt@i915_selftest@live@hangcheck.html * igt@kms_cursor_crc@pipe-c-cursor-suspend: - shard-kbl: [DMESG-WARN][106] ([i915#180]) -> [PASS][107] +1 similar issue [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl4/igt@kms_cursor_crc@pipe-c-cursor-suspend.html [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl3/igt@kms_cursor_crc@pipe-c-cursor-suspend.html * igt@kms_dither@fb-8bpc-vs-panel-6bpc@edp-1-pipe-a: - shard-tglb: [INCOMPLETE][108] -> [PASS][109] [108]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-tglb8/igt@kms_dither@fb-8bpc-vs-panel-6bpc@edp-1-pipe-a.html [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-tglb3/igt@kms_dither@fb-8bpc-vs-panel-6bpc@edp-1-pipe-a.html * igt@kms_flip@flip-vs-suspend-interruptible@a-dp1: - shard-apl: [DMESG-WARN][110] ([i915#180]) -> [PASS][111] +3 similar issues [110]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-apl6/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-apl1/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html * igt@kms_flip@flip-vs-suspend-interruptible@c-dp1: - shard-kbl: [INCOMPLETE][112] ([i915#636]) -> [PASS][113] [112]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl3/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl6/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html #### Warnings #### * igt@i915_pm_dc@dc3co-vpb-simulation: - shard-iclb: [SKIP][114] ([i915#658]) -> [SKIP][115] ([i915#588]) [114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb7/igt@i915_pm_dc@dc3co-vpb-simulation.html [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb2/igt@i915_pm_dc@dc3co-vpb-simulation.html * igt@i915_pm_rc6_residency@rc6-idle: - shard-iclb: [WARN][116] ([i915#1804] / [i915#2684]) -> [WARN][117] ([i915#2684]) [116]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb4/igt@i915_pm_rc6_residency@rc6-idle.html [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb1/igt@i915_pm_rc6_residency@rc6-idle.html * igt@kms_psr2_su@page_flip-xrgb8888: - shard-iclb: [SKIP][118] ([fdo#109642] / [fdo#111068] / [i915#658]) -> [FAIL][119] ([i915#4148]) [118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-iclb8/igt@kms_psr2_su@page_flip-xrgb8888.html [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-iclb2/igt@kms_psr2_su@page_flip-xrgb8888.html * igt@runner@aborted: - shard-kbl: ([FAIL][120], [FAIL][121], [FAIL][122], [FAIL][123], [FAIL][124]) ([fdo#109271] / [i915#1436] / [i915#1814] / [i915#3002] / [i915#4312] / [i915#716]) -> ([FAIL][125], [FAIL][126]) ([i915#1436] / [i915#180] / [i915#3002] / [i915#4312]) [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl1/igt@runner@aborted.html [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl4/igt@runner@aborted.html [122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl3/igt@runner@aborted.html [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl6/igt@runner@aborted.html [124]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-kbl4/igt@runner@aborted.html [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@runner@aborted.html [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-kbl4/igt@runner@aborted.html - shard-skl: ([FAIL][127], [FAIL][128], [FAIL][129], [FAIL][130]) ([i915#1814] / [i915#2029] / [i915#3002] / [i915#4312]) -> ([FAIL][131], [FAIL][132]) ([i915#3002] / [i915#4312]) [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-skl2/igt@runner@aborted.html [128]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-skl9/igt@runner@aborted.html [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-skl3/igt@runner@aborted.html [130]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11145/shard-skl5/igt@runner@aborted.html [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-skl7/igt@runner@aborted.html [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/shard-skl4/igt@runner@aborted.html [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284 [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099 [i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149 [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118 [i915#1187]: https://gitlab.freedesktop.org/drm/intel/issues/1187 [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319 [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/143 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22113/index.html [-- Attachment #2: Type: text/html, Size: 37020 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-26 13:09 [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code Jouni Högander ` (2 preceding siblings ...) 2022-01-27 0:47 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork @ 2022-01-27 8:20 ` Maarten Lankhorst 2022-01-27 14:49 ` Rodrigo Vivi 2022-01-27 15:25 ` Ville Syrjälä 3 siblings, 2 replies; 9+ messages in thread From: Maarten Lankhorst @ 2022-01-27 8:20 UTC (permalink / raw) To: Jouni Högander, intel-gfx; +Cc: Daniel Vetter Op 26-01-2022 om 14:09 schreef Jouni Högander: > We should now rely on userspace doing dirtyfb. There is no > need to have separate frontbuffer tracking hooks in gem code. > > This patch is removing all frontbuffer tracking calls from the gem > code. > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Signed-off-by: Jouni Högander <jouni.hogander@intel.com> > --- > drivers/gpu/drm/i915/display/intel_overlay.c | 2 -- > drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 2 -- > drivers/gpu/drm/i915/gem/i915_gem_domain.c | 5 ---- > drivers/gpu/drm/i915/gem/i915_gem_object.c | 24 -------------------- > drivers/gpu/drm/i915/gem/i915_gem_object.h | 16 ------------- > drivers/gpu/drm/i915/gem/i915_gem_phys.c | 7 ------ > drivers/gpu/drm/i915/i915_gem.c | 5 ---- > 7 files changed, 61 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c > index 5358f03b52db..fc2691dac278 100644 > --- a/drivers/gpu/drm/i915/display/intel_overlay.c > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c > @@ -809,8 +809,6 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > goto out_pin_section; > } > > - i915_gem_object_flush_frontbuffer(new_bo, ORIGIN_DIRTYFB); > - > if (!overlay->active) { > const struct intel_crtc_state *crtc_state = > overlay->crtc->config; > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > index 8a248003dfae..115e6d877e38 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > @@ -20,8 +20,6 @@ static void __do_clflush(struct drm_i915_gem_object *obj) > { > GEM_BUG_ON(!i915_gem_object_has_pages(obj)); > drm_clflush_sg(obj->mm.pages); > - > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > } > > static void clflush_work(struct dma_fence_work *base) > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > index 26532c07d467..ab1fc2d930e1 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > @@ -63,7 +63,6 @@ flush_write_domain(struct drm_i915_gem_object *obj, unsigned int flush_domains) > } > spin_unlock(&obj->vma.lock); > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > break; > > case I915_GEM_DOMAIN_WC: > @@ -615,9 +614,6 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, > out_unlock: > i915_gem_object_unlock(obj); > > - if (!err && write_domain) > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > - > out: > i915_gem_object_put(obj); > return err; > @@ -728,7 +724,6 @@ int i915_gem_object_prepare_write(struct drm_i915_gem_object *obj, > } > > out: > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > obj->mm.dirty = true; > /* return with the pages pinned */ > return 0; > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c > index 1a9e1f940a7d..f7ba66deb923 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c > @@ -394,30 +394,6 @@ static void i915_gem_free_object(struct drm_gem_object *gem_obj) > queue_delayed_work(i915->wq, &i915->mm.free_work, 0); > } > > -void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > - enum fb_op_origin origin) > -{ > - struct intel_frontbuffer *front; > - > - front = __intel_frontbuffer_get(obj); > - if (front) { > - intel_frontbuffer_flush(front, origin); > - intel_frontbuffer_put(front); > - } > -} > - > -void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > - enum fb_op_origin origin) > -{ > - struct intel_frontbuffer *front; > - > - front = __intel_frontbuffer_get(obj); > - if (front) { > - intel_frontbuffer_invalidate(front, origin); > - intel_frontbuffer_put(front); > - } > -} > - > static void > i915_gem_object_read_from_page_kmap(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size) > { > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h > index 02c37fe4a535..d7a08172b239 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h > @@ -578,22 +578,6 @@ void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > enum fb_op_origin origin); > > -static inline void > -i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > - enum fb_op_origin origin) > -{ > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > - __i915_gem_object_flush_frontbuffer(obj, origin); > -} > - > -static inline void > -i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > - enum fb_op_origin origin) > -{ > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > - __i915_gem_object_invalidate_frontbuffer(obj, origin); > -} > - > int i915_gem_object_read_from_page(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size); > > bool i915_gem_object_is_shmem(const struct drm_i915_gem_object *obj); > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_phys.c b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > index ca6faffcc496..e98a9884cf5a 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > @@ -151,19 +151,12 @@ int i915_gem_object_pwrite_phys(struct drm_i915_gem_object *obj, > if (err) > return err; > > - /* > - * We manually control the domain here and pretend that it > - * remains coherent i.e. in the GTT domain, like shmem_pwrite. > - */ > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > - > if (copy_from_user(vaddr, user_data, args->size)) > return -EFAULT; > > drm_clflush_virt_range(vaddr, args->size); > intel_gt_chipset_flush(to_gt(i915)); > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > return 0; > } > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index e3a2c2a0e156..60838209f9cd 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -563,8 +563,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, > goto out_rpm; > } > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > - > user_data = u64_to_user_ptr(args->data_ptr); > offset = args->offset; > remain = args->size; > @@ -607,7 +605,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, > } > > intel_gt_flush_ggtt_writes(ggtt->vm.gt); > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > i915_gem_gtt_cleanup(obj, &node, vma); > out_rpm: > @@ -694,8 +691,6 @@ i915_gem_shmem_pwrite(struct drm_i915_gem_object *obj, > offset = 0; > } > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > - > i915_gem_object_unpin_pages(obj); > return ret; > We should get rid of frontbuffer tracking completely still, this should definitely happen. I've looked at it before, but at that the time we didn't do it yet. Mostly out of concerns of breaking old userspace. The people you cc'd are not part of the cc here. I added them. I see i915_pm_dc failing on dc5-psr, something to look into? Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> With the caveat that you wil need someone else to ack the changes, as the last time I proposed this, there was pushback out of fear of breaking userspace. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-27 8:20 ` [Intel-gfx] [RFC PATCH] " Maarten Lankhorst @ 2022-01-27 14:49 ` Rodrigo Vivi 2022-01-28 8:07 ` Hogander, Jouni 2022-01-27 15:25 ` Ville Syrjälä 1 sibling, 1 reply; 9+ messages in thread From: Rodrigo Vivi @ 2022-01-27 14:49 UTC (permalink / raw) To: Maarten Lankhorst, Souza, Jose; +Cc: Daniel Vetter, intel-gfx On Thu, Jan 27, 2022 at 09:20:14AM +0100, Maarten Lankhorst wrote: > Op 26-01-2022 om 14:09 schreef Jouni Högander: > > We should now rely on userspace doing dirtyfb. There is no > > need to have separate frontbuffer tracking hooks in gem code. > > > > This patch is removing all frontbuffer tracking calls from the gem > > code. > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Jani Nikula <jani.nikula@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_overlay.c | 2 -- > > drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 2 -- > > drivers/gpu/drm/i915/gem/i915_gem_domain.c | 5 ---- > > drivers/gpu/drm/i915/gem/i915_gem_object.c | 24 -------------------- > > drivers/gpu/drm/i915/gem/i915_gem_object.h | 16 ------------- > > drivers/gpu/drm/i915/gem/i915_gem_phys.c | 7 ------ > > drivers/gpu/drm/i915/i915_gem.c | 5 ---- > > 7 files changed, 61 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c > > index 5358f03b52db..fc2691dac278 100644 > > --- a/drivers/gpu/drm/i915/display/intel_overlay.c > > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c > > @@ -809,8 +809,6 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > > goto out_pin_section; > > } > > > > - i915_gem_object_flush_frontbuffer(new_bo, ORIGIN_DIRTYFB); > > - > > if (!overlay->active) { > > const struct intel_crtc_state *crtc_state = > > overlay->crtc->config; > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > index 8a248003dfae..115e6d877e38 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > @@ -20,8 +20,6 @@ static void __do_clflush(struct drm_i915_gem_object *obj) > > { > > GEM_BUG_ON(!i915_gem_object_has_pages(obj)); > > drm_clflush_sg(obj->mm.pages); > > - > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > } > > > > static void clflush_work(struct dma_fence_work *base) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > index 26532c07d467..ab1fc2d930e1 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > @@ -63,7 +63,6 @@ flush_write_domain(struct drm_i915_gem_object *obj, unsigned int flush_domains) > > } > > spin_unlock(&obj->vma.lock); > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > break; > > > > case I915_GEM_DOMAIN_WC: > > @@ -615,9 +614,6 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, > > out_unlock: > > i915_gem_object_unlock(obj); > > > > - if (!err && write_domain) > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > - > > out: > > i915_gem_object_put(obj); > > return err; > > @@ -728,7 +724,6 @@ int i915_gem_object_prepare_write(struct drm_i915_gem_object *obj, > > } > > > > out: > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > obj->mm.dirty = true; > > /* return with the pages pinned */ > > return 0; > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > index 1a9e1f940a7d..f7ba66deb923 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > @@ -394,30 +394,6 @@ static void i915_gem_free_object(struct drm_gem_object *gem_obj) > > queue_delayed_work(i915->wq, &i915->mm.free_work, 0); > > } > > > > -void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - struct intel_frontbuffer *front; > > - > > - front = __intel_frontbuffer_get(obj); > > - if (front) { > > - intel_frontbuffer_flush(front, origin); > > - intel_frontbuffer_put(front); > > - } > > -} > > - > > -void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - struct intel_frontbuffer *front; > > - > > - front = __intel_frontbuffer_get(obj); > > - if (front) { > > - intel_frontbuffer_invalidate(front, origin); > > - intel_frontbuffer_put(front); > > - } > > -} > > - > > static void > > i915_gem_object_read_from_page_kmap(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size) > > { > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > index 02c37fe4a535..d7a08172b239 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > @@ -578,22 +578,6 @@ void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > > void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > > enum fb_op_origin origin); > > > > -static inline void > > -i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > - __i915_gem_object_flush_frontbuffer(obj, origin); > > -} > > - > > -static inline void > > -i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > - __i915_gem_object_invalidate_frontbuffer(obj, origin); > > -} > > - > > int i915_gem_object_read_from_page(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size); > > > > bool i915_gem_object_is_shmem(const struct drm_i915_gem_object *obj); > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_phys.c b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > index ca6faffcc496..e98a9884cf5a 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > @@ -151,19 +151,12 @@ int i915_gem_object_pwrite_phys(struct drm_i915_gem_object *obj, > > if (err) > > return err; > > > > - /* > > - * We manually control the domain here and pretend that it > > - * remains coherent i.e. in the GTT domain, like shmem_pwrite. > > - */ > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > - > > if (copy_from_user(vaddr, user_data, args->size)) > > return -EFAULT; > > > > drm_clflush_virt_range(vaddr, args->size); > > intel_gt_chipset_flush(to_gt(i915)); > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > return 0; > > } > > > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > > index e3a2c2a0e156..60838209f9cd 100644 > > --- a/drivers/gpu/drm/i915/i915_gem.c > > +++ b/drivers/gpu/drm/i915/i915_gem.c > > @@ -563,8 +563,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, > > goto out_rpm; > > } > > > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > - > > user_data = u64_to_user_ptr(args->data_ptr); > > offset = args->offset; > > remain = args->size; > > @@ -607,7 +605,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, > > } > > > > intel_gt_flush_ggtt_writes(ggtt->vm.gt); > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > > i915_gem_gtt_cleanup(obj, &node, vma); > > out_rpm: > > @@ -694,8 +691,6 @@ i915_gem_shmem_pwrite(struct drm_i915_gem_object *obj, > > offset = 0; > > } > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > - > > i915_gem_object_unpin_pages(obj); > > return ret; > > > > We should get rid of frontbuffer tracking completely still, this should definitely happen. I've looked at it before, but at that the time we didn't do it yet. Mostly out of concerns of breaking old userspace. > > The people you cc'd are not part of the cc here. I added them. > > I see i915_pm_dc failing on dc5-psr, something to look into? probably... frontbuffer tracking was a hammer needed on bad psr corner cases :( +Jose > > Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > > With the caveat that you wil need someone else to ack the changes, as the last time I proposed this, there was pushback out of fear of breaking userspace. > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-27 14:49 ` Rodrigo Vivi @ 2022-01-28 8:07 ` Hogander, Jouni 2022-02-01 8:06 ` Hogander, Jouni 0 siblings, 1 reply; 9+ messages in thread From: Hogander, Jouni @ 2022-01-28 8:07 UTC (permalink / raw) To: Vivi, Rodrigo, maarten.lankhorst, Souza, Jose; +Cc: daniel.vetter, intel-gfx On Thu, 2022-01-27 at 09:49 -0500, Rodrigo Vivi wrote: > On Thu, Jan 27, 2022 at 09:20:14AM +0100, Maarten Lankhorst wrote: > > Op 26-01-2022 om 14:09 schreef Jouni Högander: > > > We should now rely on userspace doing dirtyfb. There is no > > > need to have separate frontbuffer tracking hooks in gem code. > > > > > > This patch is removing all frontbuffer tracking calls from the > > > gem > > > code. > > > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Cc: Jani Nikula <jani.nikula@linux.intel.com> > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com> > > > --- > > > drivers/gpu/drm/i915/display/intel_overlay.c | 2 -- > > > drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 2 -- > > > drivers/gpu/drm/i915/gem/i915_gem_domain.c | 5 ---- > > > drivers/gpu/drm/i915/gem/i915_gem_object.c | 24 -------------- > > > ------ > > > drivers/gpu/drm/i915/gem/i915_gem_object.h | 16 ------------- > > > drivers/gpu/drm/i915/gem/i915_gem_phys.c | 7 ------ > > > drivers/gpu/drm/i915/i915_gem.c | 5 ---- > > > 7 files changed, 61 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c > > > b/drivers/gpu/drm/i915/display/intel_overlay.c > > > index 5358f03b52db..fc2691dac278 100644 > > > --- a/drivers/gpu/drm/i915/display/intel_overlay.c > > > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c > > > @@ -809,8 +809,6 @@ static int intel_overlay_do_put_image(struct > > > intel_overlay *overlay, > > > goto out_pin_section; > > > } > > > > > > - i915_gem_object_flush_frontbuffer(new_bo, ORIGIN_DIRTYFB); > > > - > > > if (!overlay->active) { > > > const struct intel_crtc_state *crtc_state = > > > overlay->crtc->config; > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > index 8a248003dfae..115e6d877e38 100644 > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > @@ -20,8 +20,6 @@ static void __do_clflush(struct > > > drm_i915_gem_object *obj) > > > { > > > GEM_BUG_ON(!i915_gem_object_has_pages(obj)); > > > drm_clflush_sg(obj->mm.pages); > > > - > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > } > > > > > > static void clflush_work(struct dma_fence_work *base) > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > index 26532c07d467..ab1fc2d930e1 100644 > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > @@ -63,7 +63,6 @@ flush_write_domain(struct drm_i915_gem_object > > > *obj, unsigned int flush_domains) > > > } > > > spin_unlock(&obj->vma.lock); > > > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > break; > > > > > > case I915_GEM_DOMAIN_WC: > > > @@ -615,9 +614,6 @@ i915_gem_set_domain_ioctl(struct drm_device > > > *dev, void *data, > > > out_unlock: > > > i915_gem_object_unlock(obj); > > > > > > - if (!err && write_domain) > > > - i915_gem_object_invalidate_frontbuffer(obj, > > > ORIGIN_CPU); > > > - > > > out: > > > i915_gem_object_put(obj); > > > return err; > > > @@ -728,7 +724,6 @@ int i915_gem_object_prepare_write(struct > > > drm_i915_gem_object *obj, > > > } > > > > > > out: > > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > > obj->mm.dirty = true; > > > /* return with the pages pinned */ > > > return 0; > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > index 1a9e1f940a7d..f7ba66deb923 100644 > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > @@ -394,30 +394,6 @@ static void i915_gem_free_object(struct > > > drm_gem_object *gem_obj) > > > queue_delayed_work(i915->wq, &i915->mm.free_work, 0); > > > } > > > > > > -void __i915_gem_object_flush_frontbuffer(struct > > > drm_i915_gem_object *obj, > > > - enum fb_op_origin origin) > > > -{ > > > - struct intel_frontbuffer *front; > > > - > > > - front = __intel_frontbuffer_get(obj); > > > - if (front) { > > > - intel_frontbuffer_flush(front, origin); > > > - intel_frontbuffer_put(front); > > > - } > > > -} > > > - > > > -void __i915_gem_object_invalidate_frontbuffer(struct > > > drm_i915_gem_object *obj, > > > - enum fb_op_origin origin) > > > -{ > > > - struct intel_frontbuffer *front; > > > - > > > - front = __intel_frontbuffer_get(obj); > > > - if (front) { > > > - intel_frontbuffer_invalidate(front, origin); > > > - intel_frontbuffer_put(front); > > > - } > > > -} > > > - > > > static void > > > i915_gem_object_read_from_page_kmap(struct drm_i915_gem_object > > > *obj, u64 offset, void *dst, int size) > > > { > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > index 02c37fe4a535..d7a08172b239 100644 > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > @@ -578,22 +578,6 @@ void > > > __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object > > > *obj, > > > void __i915_gem_object_invalidate_frontbuffer(struct > > > drm_i915_gem_object *obj, > > > enum fb_op_origin > > > origin); > > > > > > -static inline void > > > -i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object > > > *obj, > > > - enum fb_op_origin origin) > > > -{ > > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > > - __i915_gem_object_flush_frontbuffer(obj, origin); > > > -} > > > - > > > -static inline void > > > -i915_gem_object_invalidate_frontbuffer(struct > > > drm_i915_gem_object *obj, > > > - enum fb_op_origin origin) > > > -{ > > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > > - __i915_gem_object_invalidate_frontbuffer(obj, origin); > > > -} > > > - > > > int i915_gem_object_read_from_page(struct drm_i915_gem_object > > > *obj, u64 offset, void *dst, int size); > > > > > > bool i915_gem_object_is_shmem(const struct drm_i915_gem_object > > > *obj); > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > index ca6faffcc496..e98a9884cf5a 100644 > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > @@ -151,19 +151,12 @@ int i915_gem_object_pwrite_phys(struct > > > drm_i915_gem_object *obj, > > > if (err) > > > return err; > > > > > > - /* > > > - * We manually control the domain here and pretend that it > > > - * remains coherent i.e. in the GTT domain, like shmem_pwrite. > > > - */ > > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > > - > > > if (copy_from_user(vaddr, user_data, args->size)) > > > return -EFAULT; > > > > > > drm_clflush_virt_range(vaddr, args->size); > > > intel_gt_chipset_flush(to_gt(i915)); > > > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > return 0; > > > } > > > > > > diff --git a/drivers/gpu/drm/i915/i915_gem.c > > > b/drivers/gpu/drm/i915/i915_gem.c > > > index e3a2c2a0e156..60838209f9cd 100644 > > > --- a/drivers/gpu/drm/i915/i915_gem.c > > > +++ b/drivers/gpu/drm/i915/i915_gem.c > > > @@ -563,8 +563,6 @@ i915_gem_gtt_pwrite_fast(struct > > > drm_i915_gem_object *obj, > > > goto out_rpm; > > > } > > > > > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > > - > > > user_data = u64_to_user_ptr(args->data_ptr); > > > offset = args->offset; > > > remain = args->size; > > > @@ -607,7 +605,6 @@ i915_gem_gtt_pwrite_fast(struct > > > drm_i915_gem_object *obj, > > > } > > > > > > intel_gt_flush_ggtt_writes(ggtt->vm.gt); > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > > > > i915_gem_gtt_cleanup(obj, &node, vma); > > > out_rpm: > > > @@ -694,8 +691,6 @@ i915_gem_shmem_pwrite(struct > > > drm_i915_gem_object *obj, > > > offset = 0; > > > } > > > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > - > > > i915_gem_object_unpin_pages(obj); > > > return ret; > > > > > > > We should get rid of frontbuffer tracking completely still, this > > should definitely happen. I've looked at it before, but at that the > > time we didn't do it yet. Mostly out of concerns of breaking old > > userspace. > > > > The people you cc'd are not part of the cc here. I added them. > > > > I see i915_pm_dc failing on dc5-psr, something to look into? > > probably... frontbuffer tracking was a hammer needed on bad psr > corner cases :( > > +Jose This is actually triggered by my patch. I can reproduce it by running same sequence of testcases as in CI. Dc5-psr alone is passing. > > > Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > > > > With the caveat that you wil need someone else to ack the changes, > > as the last time I proposed this, there was pushback out of fear of > > breaking userspace. > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-28 8:07 ` Hogander, Jouni @ 2022-02-01 8:06 ` Hogander, Jouni 0 siblings, 0 replies; 9+ messages in thread From: Hogander, Jouni @ 2022-02-01 8:06 UTC (permalink / raw) To: Vivi, Rodrigo, maarten.lankhorst, Souza, Jose; +Cc: daniel.vetter, intel-gfx On Fri, 2022-01-28 at 08:07 +0000, Hogander, Jouni wrote: > On Thu, 2022-01-27 at 09:49 -0500, Rodrigo Vivi wrote: > > On Thu, Jan 27, 2022 at 09:20:14AM +0100, Maarten Lankhorst wrote: > > > Op 26-01-2022 om 14:09 schreef Jouni Högander: > > > > We should now rely on userspace doing dirtyfb. There is no > > > > need to have separate frontbuffer tracking hooks in gem code. > > > > > > > > This patch is removing all frontbuffer tracking calls from the > > > > gem > > > > code. > > > > > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Cc: Jani Nikula <jani.nikula@linux.intel.com> > > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com> > > > > --- > > > > drivers/gpu/drm/i915/display/intel_overlay.c | 2 -- > > > > drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 2 -- > > > > drivers/gpu/drm/i915/gem/i915_gem_domain.c | 5 ---- > > > > drivers/gpu/drm/i915/gem/i915_gem_object.c | 24 ------------ > > > > -- > > > > ------ > > > > drivers/gpu/drm/i915/gem/i915_gem_object.h | 16 ------------ > > > > - > > > > drivers/gpu/drm/i915/gem/i915_gem_phys.c | 7 ------ > > > > drivers/gpu/drm/i915/i915_gem.c | 5 ---- > > > > 7 files changed, 61 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c > > > > b/drivers/gpu/drm/i915/display/intel_overlay.c > > > > index 5358f03b52db..fc2691dac278 100644 > > > > --- a/drivers/gpu/drm/i915/display/intel_overlay.c > > > > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c > > > > @@ -809,8 +809,6 @@ static int > > > > intel_overlay_do_put_image(struct > > > > intel_overlay *overlay, > > > > goto out_pin_section; > > > > } > > > > > > > > - i915_gem_object_flush_frontbuffer(new_bo, > > > > ORIGIN_DIRTYFB); > > > > - > > > > if (!overlay->active) { > > > > const struct intel_crtc_state *crtc_state = > > > > overlay->crtc->config; > > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > > b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > > index 8a248003dfae..115e6d877e38 100644 > > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > > > @@ -20,8 +20,6 @@ static void __do_clflush(struct > > > > drm_i915_gem_object *obj) > > > > { > > > > GEM_BUG_ON(!i915_gem_object_has_pages(obj)); > > > > drm_clflush_sg(obj->mm.pages); > > > > - > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > > } > > > > > > > > static void clflush_work(struct dma_fence_work *base) > > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > > b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > > index 26532c07d467..ab1fc2d930e1 100644 > > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > > > @@ -63,7 +63,6 @@ flush_write_domain(struct drm_i915_gem_object > > > > *obj, unsigned int flush_domains) > > > > } > > > > spin_unlock(&obj->vma.lock); > > > > > > > > - i915_gem_object_flush_frontbuffer(obj, > > > > ORIGIN_CPU); > > > > break; > > > > > > > > case I915_GEM_DOMAIN_WC: > > > > @@ -615,9 +614,6 @@ i915_gem_set_domain_ioctl(struct drm_device > > > > *dev, void *data, > > > > out_unlock: > > > > i915_gem_object_unlock(obj); > > > > > > > > - if (!err && write_domain) > > > > - i915_gem_object_invalidate_frontbuffer(obj, > > > > ORIGIN_CPU); > > > > - > > > > out: > > > > i915_gem_object_put(obj); > > > > return err; > > > > @@ -728,7 +724,6 @@ int i915_gem_object_prepare_write(struct > > > > drm_i915_gem_object *obj, > > > > } > > > > > > > > out: > > > > - i915_gem_object_invalidate_frontbuffer(obj, > > > > ORIGIN_CPU); > > > > obj->mm.dirty = true; > > > > /* return with the pages pinned */ > > > > return 0; > > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > > b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > > index 1a9e1f940a7d..f7ba66deb923 100644 > > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > > > @@ -394,30 +394,6 @@ static void i915_gem_free_object(struct > > > > drm_gem_object *gem_obj) > > > > queue_delayed_work(i915->wq, &i915- > > > > >mm.free_work, 0); > > > > } > > > > > > > > -void __i915_gem_object_flush_frontbuffer(struct > > > > drm_i915_gem_object *obj, > > > > - enum fb_op_origin > > > > origin) > > > > -{ > > > > - struct intel_frontbuffer *front; > > > > - > > > > - front = __intel_frontbuffer_get(obj); > > > > - if (front) { > > > > - intel_frontbuffer_flush(front, origin); > > > > - intel_frontbuffer_put(front); > > > > - } > > > > -} > > > > - > > > > -void __i915_gem_object_invalidate_frontbuffer(struct > > > > drm_i915_gem_object *obj, > > > > - enum fb_op_origin > > > > origin) > > > > -{ > > > > - struct intel_frontbuffer *front; > > > > - > > > > - front = __intel_frontbuffer_get(obj); > > > > - if (front) { > > > > - intel_frontbuffer_invalidate(front, origin); > > > > - intel_frontbuffer_put(front); > > > > - } > > > > -} > > > > - > > > > static void > > > > i915_gem_object_read_from_page_kmap(struct drm_i915_gem_object > > > > *obj, u64 offset, void *dst, int size) > > > > { > > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > > b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > > index 02c37fe4a535..d7a08172b239 100644 > > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > > > @@ -578,22 +578,6 @@ void > > > > __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object > > > > *obj, > > > > void __i915_gem_object_invalidate_frontbuffer(struct > > > > drm_i915_gem_object *obj, > > > > enum fb_op_origin > > > > origin); > > > > > > > > -static inline void > > > > -i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object > > > > *obj, > > > > - enum fb_op_origin origin) > > > > -{ > > > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > > > - __i915_gem_object_flush_frontbuffer(obj, > > > > origin); > > > > -} > > > > - > > > > -static inline void > > > > -i915_gem_object_invalidate_frontbuffer(struct > > > > drm_i915_gem_object *obj, > > > > - enum fb_op_origin > > > > origin) > > > > -{ > > > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > > > - __i915_gem_object_invalidate_frontbuffer(obj, > > > > origin); > > > > -} > > > > - > > > > int i915_gem_object_read_from_page(struct drm_i915_gem_object > > > > *obj, u64 offset, void *dst, int size); > > > > > > > > bool i915_gem_object_is_shmem(const struct drm_i915_gem_object > > > > *obj); > > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > > b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > > index ca6faffcc496..e98a9884cf5a 100644 > > > > --- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > > > @@ -151,19 +151,12 @@ int i915_gem_object_pwrite_phys(struct > > > > drm_i915_gem_object *obj, > > > > if (err) > > > > return err; > > > > > > > > - /* > > > > - * We manually control the domain here and pretend that > > > > it > > > > - * remains coherent i.e. in the GTT domain, like > > > > shmem_pwrite. > > > > - */ > > > > - i915_gem_object_invalidate_frontbuffer(obj, > > > > ORIGIN_CPU); > > > > - > > > > if (copy_from_user(vaddr, user_data, args->size)) > > > > return -EFAULT; > > > > > > > > drm_clflush_virt_range(vaddr, args->size); > > > > intel_gt_chipset_flush(to_gt(i915)); > > > > > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > > return 0; > > > > } > > > > > > > > diff --git a/drivers/gpu/drm/i915/i915_gem.c > > > > b/drivers/gpu/drm/i915/i915_gem.c > > > > index e3a2c2a0e156..60838209f9cd 100644 > > > > --- a/drivers/gpu/drm/i915/i915_gem.c > > > > +++ b/drivers/gpu/drm/i915/i915_gem.c > > > > @@ -563,8 +563,6 @@ i915_gem_gtt_pwrite_fast(struct > > > > drm_i915_gem_object *obj, > > > > goto out_rpm; > > > > } > > > > > > > > - i915_gem_object_invalidate_frontbuffer(obj, > > > > ORIGIN_CPU); > > > > - > > > > user_data = u64_to_user_ptr(args->data_ptr); > > > > offset = args->offset; > > > > remain = args->size; > > > > @@ -607,7 +605,6 @@ i915_gem_gtt_pwrite_fast(struct > > > > drm_i915_gem_object *obj, > > > > } > > > > > > > > intel_gt_flush_ggtt_writes(ggtt->vm.gt); > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > > > > > > i915_gem_gtt_cleanup(obj, &node, vma); > > > > out_rpm: > > > > @@ -694,8 +691,6 @@ i915_gem_shmem_pwrite(struct > > > > drm_i915_gem_object *obj, > > > > offset = 0; > > > > } > > > > > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > > - > > > > i915_gem_object_unpin_pages(obj); > > > > return ret; > > > > > > > > > > We should get rid of frontbuffer tracking completely still, this > > > should definitely happen. I've looked at it before, but at that > > > the > > > time we didn't do it yet. Mostly out of concerns of breaking old > > > userspace. > > > > > > The people you cc'd are not part of the cc here. I added them. > > > > > > I see i915_pm_dc failing on dc5-psr, something to look into? > > > > probably... frontbuffer tracking was a hammer needed on bad psr > > corner cases :( > > > > +Jose > > This is actually triggered by my patch. I can reproduce it by running > same sequence of testcases as in CI. Dc5-psr alone is passing. This is caused by intel_fbdev and psr code. Dc5-psr alone is passing, but if running any other testcase before, it fails. Adding sleep x in between helps. This is becuase intel_fbdev manages to execute invalidate, but it's pairing flush is not run. Letting cursor to blink once triggers flush via dirtyfb callback make dc5-psr to pass again. PSR code uses two state variables (enabled and active). If there is only invalidate without flush: PSR ends up into situation where enabled and active do not match and psr doesn't get enabled. Earlier this wasn't problem because these flush calls were scattered around in gem code and there were always at least one flush after invalidate. I prepared patch to help this: https://patchwork.freedesktop.org/patch/471633/?series=99533&rev=1 > > > > Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com > > > > > > > > > > With the caveat that you wil need someone else to ack the > > > changes, > > > as the last time I proposed this, there was pushback out of fear > > > of > > > breaking userspace. > > > BR, Jouni Högander ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code 2022-01-27 8:20 ` [Intel-gfx] [RFC PATCH] " Maarten Lankhorst 2022-01-27 14:49 ` Rodrigo Vivi @ 2022-01-27 15:25 ` Ville Syrjälä 1 sibling, 0 replies; 9+ messages in thread From: Ville Syrjälä @ 2022-01-27 15:25 UTC (permalink / raw) To: Maarten Lankhorst; +Cc: Daniel Vetter, intel-gfx, Chris Wilson On Thu, Jan 27, 2022 at 09:20:14AM +0100, Maarten Lankhorst wrote: > Op 26-01-2022 om 14:09 schreef Jouni Högander: > > We should now rely on userspace doing dirtyfb. There is no > > need to have separate frontbuffer tracking hooks in gem code. > > > > This patch is removing all frontbuffer tracking calls from the gem > > code. > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Jani Nikula <jani.nikula@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_overlay.c | 2 -- > > drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 2 -- > > drivers/gpu/drm/i915/gem/i915_gem_domain.c | 5 ---- > > drivers/gpu/drm/i915/gem/i915_gem_object.c | 24 -------------------- > > drivers/gpu/drm/i915/gem/i915_gem_object.h | 16 ------------- > > drivers/gpu/drm/i915/gem/i915_gem_phys.c | 7 ------ > > drivers/gpu/drm/i915/i915_gem.c | 5 ---- > > 7 files changed, 61 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c > > index 5358f03b52db..fc2691dac278 100644 > > --- a/drivers/gpu/drm/i915/display/intel_overlay.c > > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c > > @@ -809,8 +809,6 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > > goto out_pin_section; > > } > > > > - i915_gem_object_flush_frontbuffer(new_bo, ORIGIN_DIRTYFB); > > - > > if (!overlay->active) { > > const struct intel_crtc_state *crtc_state = > > overlay->crtc->config; > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > index 8a248003dfae..115e6d877e38 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_clflush.c > > @@ -20,8 +20,6 @@ static void __do_clflush(struct drm_i915_gem_object *obj) > > { > > GEM_BUG_ON(!i915_gem_object_has_pages(obj)); > > drm_clflush_sg(obj->mm.pages); > > - > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > } > > > > static void clflush_work(struct dma_fence_work *base) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > index 26532c07d467..ab1fc2d930e1 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c > > @@ -63,7 +63,6 @@ flush_write_domain(struct drm_i915_gem_object *obj, unsigned int flush_domains) > > } > > spin_unlock(&obj->vma.lock); > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > break; > > > > case I915_GEM_DOMAIN_WC: > > @@ -615,9 +614,6 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, > > out_unlock: > > i915_gem_object_unlock(obj); > > > > - if (!err && write_domain) > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > - > > out: > > i915_gem_object_put(obj); > > return err; > > @@ -728,7 +724,6 @@ int i915_gem_object_prepare_write(struct drm_i915_gem_object *obj, > > } > > > > out: > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > obj->mm.dirty = true; > > /* return with the pages pinned */ > > return 0; > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > index 1a9e1f940a7d..f7ba66deb923 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c > > @@ -394,30 +394,6 @@ static void i915_gem_free_object(struct drm_gem_object *gem_obj) > > queue_delayed_work(i915->wq, &i915->mm.free_work, 0); > > } > > > > -void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - struct intel_frontbuffer *front; > > - > > - front = __intel_frontbuffer_get(obj); > > - if (front) { > > - intel_frontbuffer_flush(front, origin); > > - intel_frontbuffer_put(front); > > - } > > -} > > - > > -void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - struct intel_frontbuffer *front; > > - > > - front = __intel_frontbuffer_get(obj); > > - if (front) { > > - intel_frontbuffer_invalidate(front, origin); > > - intel_frontbuffer_put(front); > > - } > > -} > > - > > static void > > i915_gem_object_read_from_page_kmap(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size) > > { > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > index 02c37fe4a535..d7a08172b239 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h > > @@ -578,22 +578,6 @@ void __i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > > void __i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > > enum fb_op_origin origin); > > > > -static inline void > > -i915_gem_object_flush_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > - __i915_gem_object_flush_frontbuffer(obj, origin); > > -} > > - > > -static inline void > > -i915_gem_object_invalidate_frontbuffer(struct drm_i915_gem_object *obj, > > - enum fb_op_origin origin) > > -{ > > - if (unlikely(rcu_access_pointer(obj->frontbuffer))) > > - __i915_gem_object_invalidate_frontbuffer(obj, origin); > > -} > > - > > int i915_gem_object_read_from_page(struct drm_i915_gem_object *obj, u64 offset, void *dst, int size); > > > > bool i915_gem_object_is_shmem(const struct drm_i915_gem_object *obj); > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_phys.c b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > index ca6faffcc496..e98a9884cf5a 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_phys.c > > @@ -151,19 +151,12 @@ int i915_gem_object_pwrite_phys(struct drm_i915_gem_object *obj, > > if (err) > > return err; > > > > - /* > > - * We manually control the domain here and pretend that it > > - * remains coherent i.e. in the GTT domain, like shmem_pwrite. > > - */ > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > - > > if (copy_from_user(vaddr, user_data, args->size)) > > return -EFAULT; > > > > drm_clflush_virt_range(vaddr, args->size); > > intel_gt_chipset_flush(to_gt(i915)); > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > return 0; > > } > > > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > > index e3a2c2a0e156..60838209f9cd 100644 > > --- a/drivers/gpu/drm/i915/i915_gem.c > > +++ b/drivers/gpu/drm/i915/i915_gem.c > > @@ -563,8 +563,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, > > goto out_rpm; > > } > > > > - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); > > - > > user_data = u64_to_user_ptr(args->data_ptr); > > offset = args->offset; > > remain = args->size; > > @@ -607,7 +605,6 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, > > } > > > > intel_gt_flush_ggtt_writes(ggtt->vm.gt); > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > > > i915_gem_gtt_cleanup(obj, &node, vma); > > out_rpm: > > @@ -694,8 +691,6 @@ i915_gem_shmem_pwrite(struct drm_i915_gem_object *obj, > > offset = 0; > > } > > > > - i915_gem_object_flush_frontbuffer(obj, ORIGIN_CPU); > > - > > i915_gem_object_unpin_pages(obj); > > return ret; > > > > We should get rid of frontbuffer tracking completely still, this should definitely happen. I've looked at it before, but at that the time we didn't do it yet. Mostly out of concerns of breaking old userspace. > > The people you cc'd are not part of the cc here. I added them. > > I see i915_pm_dc failing on dc5-psr, something to look into? > > Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > > With the caveat that you wil need someone else to ack the changes, as the last time I proposed this, there was pushback out of fear of breaking userspace. I think at the very least we'd need something along the lines of https://patchwork.freedesktop.org/series/70636/ to make intel ddx use dirtyfb when needed, and a bit of time to let it spread before we pull the trigger. Though the status quo is already broken (maybe with tearfree enabled it works, not sure) if you enable fbc since wc mmaps don't trip the hw gtt tracking and so you get all kinds of stale junk on screen. So dirtyfb also very much needed before I can enable fbc across the board (which I think we could now do otherwise). -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-02-01 8:06 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-26 13:09 [Intel-gfx] [RFC PATCH] drm/i915: Remove all frontbuffer tracking calls from the gem code Jouni Högander 2022-01-26 19:26 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork 2022-01-26 19:56 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2022-01-27 0:47 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork 2022-01-27 8:20 ` [Intel-gfx] [RFC PATCH] " Maarten Lankhorst 2022-01-27 14:49 ` Rodrigo Vivi 2022-01-28 8:07 ` Hogander, Jouni 2022-02-01 8:06 ` Hogander, Jouni 2022-01-27 15:25 ` Ville Syrjälä
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.