* Re: [Intel-gfx] [PATCH] drm/i915: Improve on suspend / resume time with VT-d enabled
2022-04-05 10:59 [Intel-gfx] [PATCH] drm/i915: Improve on suspend / resume time with VT-d enabled Thomas Hellström
@ 2022-04-05 12:45 ` Daniel Vetter
2022-04-05 15:07 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Daniel Vetter @ 2022-04-05 12:45 UTC (permalink / raw)
To: Thomas Hellström; +Cc: intel-gfx, matthew.auld, dri-devel
On Tue, 5 Apr 2022 at 13:00, Thomas Hellström
<thomas.hellstrom@linux.intel.com> wrote:
>
> When DMAR / VT-d is enabled, the display engine uses overfetching,
> presumably to deal with the increased latency. To avoid display engine
> errors and DMAR faults, as a workaround the GGTT is populated with scatch
> PTEs when VT-d is enabled. However starting with gen10, Write-combined
> writing of scratch PTES is no longer possible and as a result, populating
> the full GGTT with scratch PTEs like on resume becomes very slow as
> uncached access is needed.
>
> Therefore, on integrated GPUs utilize the fact that the PTEs are stored in
> stolen memory which retain content across S3 suspend. Don't clear the PTEs
> on suspend and resume. This improves on resume time with around 100 ms.
> While 100+ms might appear like a short time it's 10% to 20% of total resume
> time and important in some applications.
>
> One notable exception is Intel Rapid Start Technology which may cause
> stolen memory to be lost across what the OS percieves as S3 suspend.
> If IRST is enabled or if we can't detect whether IRST is enabled, retain
> the old workaround, clearing and re-instating PTEs.
>
> As an additional measure, if we detect that the last ggtt pte was lost
> during suspend, print a warning and re-populate the GGTT ptes
>
> On discrete GPUs, the display engine scans out from LMEM which isn't
> subject to DMAR, and presumably the workaround is therefore not needed,
> but that needs to be verified and disabling the workaround for dGPU,
> if possible, will be deferred to a follow-up patch.
>
> v2:
> - Rely on retained ptes to also speed up suspend and resume re-binding.
> - Re-build GGTT ptes if Intel rst is enabled.
> v3:
> - Re-build GGTT ptes also if we can't detect whether Intel rst is enabled,
> and if the guard page PTE and end of GGTT was lost.
>
> Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
It's not great, but I think it's better than building another
complication into our allocator just to handle this all.
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/i915/gt/intel_ggtt.c | 56 +++++++++++++++++++++++++---
> drivers/gpu/drm/i915/gt/intel_gtt.h | 20 ++++++++++
> drivers/gpu/drm/i915/i915_driver.c | 16 ++++++++
> 3 files changed, 86 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> index 04191fe2ee34..98441b1c1b75 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> @@ -23,6 +23,13 @@
> #include "intel_gtt.h"
> #include "gen8_ppgtt.h"
>
> +static inline bool suspend_retains_ptes(struct i915_address_space *vm)
> +{
> + return GRAPHICS_VER(vm->i915) >= 8 &&
> + !HAS_LMEM(vm->i915) &&
> + vm->is_ggtt;
> +}
> +
> static void i915_ggtt_color_adjust(const struct drm_mm_node *node,
> unsigned long color,
> u64 *start,
> @@ -116,6 +123,23 @@ static bool needs_idle_maps(struct drm_i915_private *i915)
> return false;
> }
>
> +/*
> + * Return the value of the last GGTT pte cast to an u64, if
> + * the system is supposed to retain ptes across resume. 0 otherwise.
> + */
> +static u64 read_last_pte(struct i915_address_space *vm)
> +{
> + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm);
> + gen8_pte_t __iomem *ptep;
> +
> + if (!suspend_retains_ptes(vm))
> + return 0;
> +
> + GEM_BUG_ON(GRAPHICS_VER(vm->i915) < 8);
> + ptep = (typeof(ptep))ggtt->gsm + (ggtt_total_entries(ggtt) - 1);
> + return readq(ptep);
> +}
> +
> /**
> * i915_ggtt_suspend_vm - Suspend the memory mappings for a GGTT or DPT VM
> * @vm: The VM to suspend the mappings for
> @@ -179,7 +203,10 @@ void i915_ggtt_suspend_vm(struct i915_address_space *vm)
> i915_gem_object_unlock(obj);
> }
>
> - vm->clear_range(vm, 0, vm->total);
> + if (!suspend_retains_ptes(vm))
> + vm->clear_range(vm, 0, vm->total);
> + else
> + i915_vm_to_ggtt(vm)->probed_pte = read_last_pte(vm);
>
> vm->skip_pte_rewrite = save_skip_rewrite;
>
> @@ -578,6 +605,8 @@ static int init_ggtt(struct i915_ggtt *ggtt)
> struct drm_mm_node *entry;
> int ret;
>
> + ggtt->pte_lost = true;
> +
> /*
> * GuC requires all resources that we're sharing with it to be placed in
> * non-WOPCM memory. If GuC is not present or not in use we still need a
> @@ -1309,11 +1338,20 @@ bool i915_ggtt_resume_vm(struct i915_address_space *vm)
> {
> struct i915_vma *vma;
> bool write_domain_objs = false;
> + bool retained_ptes;
>
> drm_WARN_ON(&vm->i915->drm, !vm->is_ggtt && !vm->is_dpt);
>
> - /* First fill our portion of the GTT with scratch pages */
> - vm->clear_range(vm, 0, vm->total);
> + /*
> + * First fill our portion of the GTT with scratch pages if
> + * they were not retained across suspend.
> + */
> + retained_ptes = suspend_retains_ptes(vm) &&
> + !i915_vm_to_ggtt(vm)->pte_lost &&
> + !GEM_WARN_ON(i915_vm_to_ggtt(vm)->probed_pte != read_last_pte(vm));
> +
> + if (!retained_ptes)
> + vm->clear_range(vm, 0, vm->total);
>
> /* clflush objects bound into the GGTT and rebind them. */
> list_for_each_entry(vma, &vm->bound_list, vm_link) {
> @@ -1322,9 +1360,10 @@ bool i915_ggtt_resume_vm(struct i915_address_space *vm)
> atomic_read(&vma->flags) & I915_VMA_BIND_MASK;
>
> GEM_BUG_ON(!was_bound);
> - vma->ops->bind_vma(vm, NULL, vma->resource,
> - obj ? obj->cache_level : 0,
> - was_bound);
> + if (!retained_ptes)
> + vma->ops->bind_vma(vm, NULL, vma->resource,
> + obj ? obj->cache_level : 0,
> + was_bound);
> if (obj) { /* only used during resume => exclusive access */
> write_domain_objs |= fetch_and_zero(&obj->write_domain);
> obj->read_domains |= I915_GEM_DOMAIN_GTT;
> @@ -1352,3 +1391,8 @@ void i915_ggtt_resume(struct i915_ggtt *ggtt)
>
> intel_ggtt_restore_fences(ggtt);
> }
> +
> +void i915_ggtt_mark_pte_lost(struct drm_i915_private *i915, bool val)
> +{
> + to_gt(i915)->ggtt->pte_lost = val;
> +}
> diff --git a/drivers/gpu/drm/i915/gt/intel_gtt.h b/drivers/gpu/drm/i915/gt/intel_gtt.h
> index 4529b5e9f6e6..7561672c4f17 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gtt.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gtt.h
> @@ -345,6 +345,15 @@ struct i915_ggtt {
>
> bool do_idle_maps;
>
> + /**
> + * Whether the system was recently restored from hibernate and
> + * thus may have lost pte content.
> + */
> + bool pte_lost;
> +
> + /** Probed pte value on suspend. Re-checked on resume. */
> + u64 probed_pte;
> +
> int mtrr;
>
> /** Bit 6 swizzling required for X tiling */
> @@ -571,6 +580,17 @@ bool i915_ggtt_resume_vm(struct i915_address_space *vm);
> void i915_ggtt_suspend(struct i915_ggtt *gtt);
> void i915_ggtt_resume(struct i915_ggtt *ggtt);
>
> +/**
> + * i915_ggtt_mark_pte_lost - Mark ggtt ptes as lost or clear such a marking
> + * @i915 The device private.
> + * @val whether the ptes should be marked as lost.
> + *
> + * In some cases pte content is retained across suspend, but typically lost
> + * across hibernate. Typically they should be marked as lost on
> + * hibernation restore and such marking cleared on suspend.
> + */
> +void i915_ggtt_mark_pte_lost(struct drm_i915_private *i915, bool val);
> +
> void
> fill_page_dma(struct drm_i915_gem_object *p, const u64 val, unsigned int count);
>
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index 64e6f76861f9..f50256e4c2d2 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -98,6 +98,9 @@
> #include "intel_region_ttm.h"
> #include "vlv_suspend.h"
>
> +/* Intel Rapid Start Technology ACPI device name */
> +static const char irst_name[] = "INT3392";
> +
> static const struct drm_driver i915_drm_driver;
>
> static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> @@ -1425,6 +1428,8 @@ static int i915_pm_suspend(struct device *kdev)
> return -ENODEV;
> }
>
> + i915_ggtt_mark_pte_lost(i915, false);
> +
> if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF)
> return 0;
>
> @@ -1477,6 +1482,14 @@ static int i915_pm_resume(struct device *kdev)
> if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF)
> return 0;
>
> + /*
> + * If IRST is enabled, or if we can't detect whether it's enabled,
> + * then we must assume we lost the GGTT page table entries, since
> + * they are not retained if IRST decided to enter S4.
> + */
> + if (!IS_ENABLED(CONFIG_ACPI) || acpi_dev_present(irst_name, NULL, -1))
> + i915_ggtt_mark_pte_lost(i915, true);
> +
> return i915_drm_resume(&i915->drm);
> }
>
> @@ -1536,6 +1549,9 @@ static int i915_pm_restore_early(struct device *kdev)
>
> static int i915_pm_restore(struct device *kdev)
> {
> + struct drm_i915_private *i915 = kdev_to_i915(kdev);
> +
> + i915_ggtt_mark_pte_lost(i915, true);
> return i915_pm_resume(kdev);
> }
>
> --
> 2.34.1
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 7+ messages in thread* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Improve on suspend / resume time with VT-d enabled
2022-04-05 10:59 [Intel-gfx] [PATCH] drm/i915: Improve on suspend / resume time with VT-d enabled Thomas Hellström
` (3 preceding siblings ...)
2022-04-05 15:37 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2022-04-05 20:07 ` Patchwork
2022-06-17 10:12 ` [Intel-gfx] [PATCH] " Matthew Auld
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-04-05 20:07 UTC (permalink / raw)
To: Thomas Hellström; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 30284 bytes --]
== Series Details ==
Series: drm/i915: Improve on suspend / resume time with VT-d enabled
URL : https://patchwork.freedesktop.org/series/102187/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_11456_full -> Patchwork_22781_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 12)
------------------------------
Missing (1): shard-dg1
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_22781_full:
### IGT changes ###
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@i915_suspend@fence-restore-tiled2untiled:
- {shard-rkl}: [PASS][1] -> [DMESG-WARN][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-rkl-1/igt@i915_suspend@fence-restore-tiled2untiled.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-rkl-5/igt@i915_suspend@fence-restore-tiled2untiled.html
Known issues
------------
Here are the changes found in Patchwork_22781_full that come from known issues:
### CI changes ###
#### Possible fixes ####
* boot:
- shard-skl: ([PASS][3], [PASS][4], [PASS][5], [PASS][6], [PASS][7], [PASS][8], [PASS][9], [PASS][10], [PASS][11], [PASS][12], [PASS][13], [PASS][14], [FAIL][15], [FAIL][16], [FAIL][17], [PASS][18], [PASS][19], [PASS][20], [PASS][21]) ([i915#5032]) -> ([PASS][22], [PASS][23], [PASS][24], [PASS][25], [PASS][26], [PASS][27], [PASS][28], [PASS][29], [PASS][30], [PASS][31], [PASS][32], [PASS][33], [PASS][34], [PASS][35], [PASS][36], [PASS][37], [PASS][38], [PASS][39], [PASS][40], [PASS][41], [PASS][42], [PASS][43])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl9/boot.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl9/boot.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl8/boot.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl8/boot.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl7/boot.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl7/boot.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl6/boot.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl6/boot.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl5/boot.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl5/boot.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl4/boot.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl4/boot.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl3/boot.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl3/boot.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl3/boot.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl1/boot.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl1/boot.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl10/boot.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl10/boot.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl9/boot.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl9/boot.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl9/boot.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl8/boot.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl8/boot.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl8/boot.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl7/boot.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl7/boot.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl6/boot.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl6/boot.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl6/boot.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl5/boot.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl4/boot.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl4/boot.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl4/boot.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl3/boot.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl3/boot.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl2/boot.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl1/boot.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl1/boot.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl10/boot.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl10/boot.html
### IGT changes ###
#### Issues hit ####
* igt@gem_ccs@ctrl-surf-copy-new-ctx:
- shard-iclb: NOTRUN -> [SKIP][44] ([i915#5327])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
* igt@gem_create@create-massive:
- shard-skl: NOTRUN -> [DMESG-WARN][45] ([i915#4991])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl10/igt@gem_create@create-massive.html
- shard-apl: NOTRUN -> [DMESG-WARN][46] ([i915#4991])
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl8/igt@gem_create@create-massive.html
* igt@gem_ctx_isolation@preservation-s3@rcs0:
- shard-apl: [PASS][47] -> [DMESG-WARN][48] ([i915#180]) +2 similar issues
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-apl6/igt@gem_ctx_isolation@preservation-s3@rcs0.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl2/igt@gem_ctx_isolation@preservation-s3@rcs0.html
* igt@gem_ctx_param@set-priority-not-supported:
- shard-iclb: NOTRUN -> [SKIP][49] ([fdo#109314])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@gem_ctx_param@set-priority-not-supported.html
* igt@gem_eio@kms:
- shard-tglb: [PASS][50] -> [FAIL][51] ([i915#232])
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-tglb7/igt@gem_eio@kms.html
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-tglb5/igt@gem_eio@kms.html
* igt@gem_exec_balancer@parallel-ordering:
- shard-iclb: NOTRUN -> [SKIP][52] ([i915#4525])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@gem_exec_balancer@parallel-ordering.html
* igt@gem_exec_capture@pi@bcs0:
- shard-skl: [PASS][53] -> [INCOMPLETE][54] ([i915#4547])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl7/igt@gem_exec_capture@pi@bcs0.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl1/igt@gem_exec_capture@pi@bcs0.html
* igt@gem_exec_fair@basic-none@vcs0:
- shard-apl: NOTRUN -> [FAIL][55] ([i915#2842])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl8/igt@gem_exec_fair@basic-none@vcs0.html
* igt@gem_exec_fair@basic-none@vcs1:
- shard-iclb: NOTRUN -> [FAIL][56] ([i915#2842])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb1/igt@gem_exec_fair@basic-none@vcs1.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-glk: [PASS][57] -> [FAIL][58] ([i915#2842])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-glk1/igt@gem_exec_fair@basic-pace-share@rcs0.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-glk5/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_fair@basic-pace-solo@rcs0:
- shard-kbl: [PASS][59] -> [FAIL][60] ([i915#2842]) +1 similar issue
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-kbl7/igt@gem_exec_fair@basic-pace-solo@rcs0.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-kbl7/igt@gem_exec_fair@basic-pace-solo@rcs0.html
* igt@gem_exec_params@rsvd2-dirt:
- shard-iclb: NOTRUN -> [SKIP][61] ([fdo#109283])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb6/igt@gem_exec_params@rsvd2-dirt.html
* igt@gem_huc_copy@huc-copy:
- shard-tglb: [PASS][62] -> [SKIP][63] ([i915#2190])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-tglb2/igt@gem_huc_copy@huc-copy.html
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-tglb7/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@heavy-random:
- shard-iclb: NOTRUN -> [SKIP][64] ([i915#4613]) +1 similar issue
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@gem_lmem_swapping@heavy-random.html
* igt@gem_lmem_swapping@heavy-verify-random:
- shard-skl: NOTRUN -> [SKIP][65] ([fdo#109271] / [i915#4613]) +4 similar issues
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl7/igt@gem_lmem_swapping@heavy-verify-random.html
- shard-apl: NOTRUN -> [SKIP][66] ([fdo#109271] / [i915#4613])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl1/igt@gem_lmem_swapping@heavy-verify-random.html
* igt@gem_pxp@create-protected-buffer:
- shard-iclb: NOTRUN -> [SKIP][67] ([i915#4270]) +2 similar issues
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@gem_pxp@create-protected-buffer.html
* igt@gem_render_copy@yf-tiled-to-vebox-linear:
- shard-iclb: NOTRUN -> [SKIP][68] ([i915#768]) +1 similar issue
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@gem_render_copy@yf-tiled-to-vebox-linear.html
* igt@gem_userptr_blits@unsync-overlap:
- shard-iclb: NOTRUN -> [SKIP][69] ([i915#3297])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@gem_userptr_blits@unsync-overlap.html
* igt@gen7_exec_parse@chained-batch:
- shard-iclb: NOTRUN -> [SKIP][70] ([fdo#109289]) +2 similar issues
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@gen7_exec_parse@chained-batch.html
* igt@gen9_exec_parse@valid-registers:
- shard-iclb: NOTRUN -> [SKIP][71] ([i915#2856]) +1 similar issue
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@gen9_exec_parse@valid-registers.html
* igt@i915_pm_dc@dc6-dpms:
- shard-skl: NOTRUN -> [FAIL][72] ([i915#454])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl8/igt@i915_pm_dc@dc6-dpms.html
* igt@i915_pm_rc6_residency@rc6-idle:
- shard-iclb: NOTRUN -> [WARN][73] ([i915#2684])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@i915_pm_rc6_residency@rc6-idle.html
* igt@i915_selftest@live@gt_pm:
- shard-skl: NOTRUN -> [DMESG-FAIL][74] ([i915#1886])
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl3/igt@i915_selftest@live@gt_pm.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-0:
- shard-iclb: NOTRUN -> [SKIP][75] ([i915#5286])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html
* igt@kms_big_fb@linear-8bpp-rotate-90:
- shard-iclb: NOTRUN -> [SKIP][76] ([fdo#110725] / [fdo#111614]) +2 similar issues
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_big_fb@linear-8bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
- shard-skl: NOTRUN -> [FAIL][77] ([i915#3743]) +3 similar issues
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl6/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
* igt@kms_big_fb@yf-tiled-64bpp-rotate-0:
- shard-iclb: NOTRUN -> [SKIP][78] ([fdo#110723])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_big_fb@yf-tiled-64bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-apl: NOTRUN -> [SKIP][79] ([fdo#109271] / [i915#3777]) +1 similar issue
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-skl: NOTRUN -> [SKIP][80] ([fdo#109271] / [i915#3777]) +7 similar issues
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs:
- shard-apl: NOTRUN -> [SKIP][81] ([fdo#109271] / [i915#3886]) +5 similar issues
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl1/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html
* igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_mc_ccs:
- shard-iclb: NOTRUN -> [SKIP][82] ([fdo#109278] / [i915#3886]) +4 similar issues
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_mc_ccs.html
* igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_mc_ccs:
- shard-skl: NOTRUN -> [SKIP][83] ([fdo#109271] / [i915#3886]) +22 similar issues
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl6/igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html
* igt@kms_ccs@pipe-c-crc-primary-rotation-180-yf_tiled_ccs:
- shard-tglb: NOTRUN -> [SKIP][84] ([fdo#111615] / [i915#3689])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-tglb2/igt@kms_ccs@pipe-c-crc-primary-rotation-180-yf_tiled_ccs.html
* igt@kms_chamelium@dp-frame-dump:
- shard-iclb: NOTRUN -> [SKIP][85] ([fdo#109284] / [fdo#111827]) +8 similar issues
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb6/igt@kms_chamelium@dp-frame-dump.html
* igt@kms_color@pipe-d-degamma:
- shard-iclb: NOTRUN -> [SKIP][86] ([fdo#109278] / [i915#1149]) +1 similar issue
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_color@pipe-d-degamma.html
* igt@kms_color_chamelium@pipe-b-ctm-max:
- shard-skl: NOTRUN -> [SKIP][87] ([fdo#109271] / [fdo#111827]) +26 similar issues
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl10/igt@kms_color_chamelium@pipe-b-ctm-max.html
* igt@kms_color_chamelium@pipe-b-gamma:
- shard-tglb: NOTRUN -> [SKIP][88] ([fdo#109284] / [fdo#111827])
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-tglb2/igt@kms_color_chamelium@pipe-b-gamma.html
* igt@kms_color_chamelium@pipe-d-ctm-0-25:
- shard-apl: NOTRUN -> [SKIP][89] ([fdo#109271] / [fdo#111827]) +7 similar issues
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl1/igt@kms_color_chamelium@pipe-d-ctm-0-25.html
* igt@kms_color_chamelium@pipe-d-ctm-negative:
- shard-iclb: NOTRUN -> [SKIP][90] ([fdo#109278] / [fdo#109284] / [fdo#111827])
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@kms_color_chamelium@pipe-d-ctm-negative.html
* igt@kms_cursor_crc@pipe-b-cursor-512x170-offscreen:
- shard-iclb: NOTRUN -> [SKIP][91] ([fdo#109278] / [fdo#109279])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@kms_cursor_crc@pipe-b-cursor-512x170-offscreen.html
* igt@kms_cursor_crc@pipe-b-cursor-max-size-onscreen:
- shard-tglb: NOTRUN -> [SKIP][92] ([i915#3359])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-tglb2/igt@kms_cursor_crc@pipe-b-cursor-max-size-onscreen.html
* igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge:
- shard-iclb: NOTRUN -> [SKIP][93] ([fdo#109278]) +25 similar issues
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge.html
* igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
- shard-iclb: NOTRUN -> [SKIP][94] ([fdo#109274] / [fdo#109278]) +2 similar issues
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-glk: [PASS][95] -> [FAIL][96] ([i915#2346])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-skl: NOTRUN -> [FAIL][97] ([i915#2346] / [i915#533])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium:
- shard-glk: NOTRUN -> [SKIP][98] ([fdo#109271]) +1 similar issue
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-glk9/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
- shard-iclb: NOTRUN -> [SKIP][99] ([i915#3528])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_draw_crc@draw-method-xrgb8888-mmap-wc-4tiled:
- shard-iclb: NOTRUN -> [SKIP][100] ([i915#5287]) +1 similar issue
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@kms_draw_crc@draw-method-xrgb8888-mmap-wc-4tiled.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2:
- shard-glk: [PASS][101] -> [FAIL][102] ([i915#79])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-glk7/igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2.html
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2.html
* igt@kms_flip@2x-flip-vs-panning-interruptible:
- shard-iclb: NOTRUN -> [SKIP][103] ([fdo#109274]) +3 similar issues
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_flip@2x-flip-vs-panning-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
- shard-iclb: NOTRUN -> [SKIP][104] ([i915#3701])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling:
- shard-iclb: NOTRUN -> [SKIP][105] ([i915#2587])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
- shard-iclb: NOTRUN -> [SKIP][106] ([fdo#109280]) +15 similar issues
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-cpu:
- shard-tglb: NOTRUN -> [SKIP][107] ([fdo#109280] / [fdo#111825]) +1 similar issue
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-tglb2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-pwrite:
- shard-apl: NOTRUN -> [SKIP][108] ([fdo#109271]) +74 similar issues
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl8/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-pwrite.html
* igt@kms_hdr@bpc-switch@bpc-switch-edp-1-pipe-a:
- shard-skl: NOTRUN -> [FAIL][109] ([i915#1188])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl9/igt@kms_hdr@bpc-switch@bpc-switch-edp-1-pipe-a.html
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-d:
- shard-skl: NOTRUN -> [SKIP][110] ([fdo#109271] / [i915#533]) +3 similar issues
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl9/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-d.html
* igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
- shard-skl: NOTRUN -> [FAIL][111] ([fdo#108145] / [i915#265]) +4 similar issues
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl7/igt@kms_plane_alpha_blend@pipe-a-alpha-7efc.html
- shard-apl: NOTRUN -> [FAIL][112] ([fdo#108145] / [i915#265])
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl1/igt@kms_plane_alpha_blend@pipe-a-alpha-7efc.html
* igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb:
- shard-skl: NOTRUN -> [FAIL][113] ([i915#265]) +1 similar issue
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl4/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html
* igt@kms_plane_lowres@pipe-b-tiling-y:
- shard-iclb: NOTRUN -> [SKIP][114] ([i915#3536])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@kms_plane_lowres@pipe-b-tiling-y.html
* igt@kms_plane_scaling@downscale-with-pixel-format-factor-0-5@pipe-c-edp-1-downscale-with-pixel-format:
- shard-iclb: [PASS][115] -> [SKIP][116] ([i915#5176]) +2 similar issues
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-iclb6/igt@kms_plane_scaling@downscale-with-pixel-format-factor-0-5@pipe-c-edp-1-downscale-with-pixel-format.html
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_plane_scaling@downscale-with-pixel-format-factor-0-5@pipe-c-edp-1-downscale-with-pixel-format.html
* igt@kms_plane_scaling@scaler-with-pixel-format-unity-scaling@pipe-b-edp-1-scaler-with-pixel-format:
- shard-iclb: [PASS][117] -> [INCOMPLETE][118] ([i915#5150] / [i915#5395])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-iclb8/igt@kms_plane_scaling@scaler-with-pixel-format-unity-scaling@pipe-b-edp-1-scaler-with-pixel-format.html
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@kms_plane_scaling@scaler-with-pixel-format-unity-scaling@pipe-b-edp-1-scaler-with-pixel-format.html
* igt@kms_psr2_sf@primary-plane-update-sf-dmg-area:
- shard-skl: NOTRUN -> [SKIP][119] ([fdo#109271] / [i915#658]) +4 similar issues
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl6/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-iclb: [PASS][120] -> [SKIP][121] ([fdo#109642] / [fdo#111068] / [i915#658])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-iclb2/igt@kms_psr2_su@frontbuffer-xrgb8888.html
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@kms_psr2_su@frontbuffer-xrgb8888.html
* igt@kms_psr@psr2_basic:
- shard-iclb: [PASS][122] -> [SKIP][123] ([fdo#109441])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-iclb2/igt@kms_psr@psr2_basic.html
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb4/igt@kms_psr@psr2_basic.html
* igt@kms_psr@psr2_cursor_render:
- shard-iclb: NOTRUN -> [SKIP][124] ([fdo#109441])
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@kms_psr@psr2_cursor_render.html
* igt@kms_scaling_modes@scaling-mode-none@edp-1-pipe-a:
- shard-skl: NOTRUN -> [SKIP][125] ([fdo#109271]) +386 similar issues
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl8/igt@kms_scaling_modes@scaling-mode-none@edp-1-pipe-a.html
* igt@kms_scaling_modes@scaling-mode-none@edp-1-pipe-c:
- shard-iclb: NOTRUN -> [SKIP][126] ([i915#5030]) +2 similar issues
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@kms_scaling_modes@scaling-mode-none@edp-1-pipe-c.html
* igt@kms_sysfs_edid_timing:
- shard-apl: NOTRUN -> [FAIL][127] ([IGT#2])
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl1/igt@kms_sysfs_edid_timing.html
- shard-skl: NOTRUN -> [FAIL][128] ([IGT#2])
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl7/igt@kms_sysfs_edid_timing.html
* igt@kms_tv_load_detect@load-detect:
- shard-iclb: NOTRUN -> [SKIP][129] ([fdo#109309])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@kms_tv_load_detect@load-detect.html
* igt@kms_vblank@pipe-b-ts-continuation-suspend:
- shard-kbl: [PASS][130] -> [INCOMPLETE][131] ([i915#2828])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-kbl3/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-kbl4/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
* igt@kms_vrr@flip-dpms:
- shard-iclb: NOTRUN -> [SKIP][132] ([fdo#109502])
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb7/igt@kms_vrr@flip-dpms.html
* igt@kms_writeback@writeback-pixel-formats:
- shard-skl: NOTRUN -> [SKIP][133] ([fdo#109271] / [i915#2437]) +1 similar issue
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl10/igt@kms_writeback@writeback-pixel-formats.html
- shard-apl: NOTRUN -> [SKIP][134] ([fdo#109271] / [i915#2437])
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl8/igt@kms_writeback@writeback-pixel-formats.html
* igt@nouveau_crc@pipe-b-source-rg:
- shard-iclb: NOTRUN -> [SKIP][135] ([i915#2530]) +2 similar issues
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb6/igt@nouveau_crc@pipe-b-source-rg.html
* igt@prime_nv_pcopy@test3_5:
- shard-iclb: NOTRUN -> [SKIP][136] ([fdo#109291])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@prime_nv_pcopy@test3_5.html
* igt@prime_vgem@basic-userptr:
- shard-iclb: NOTRUN -> [SKIP][137] ([i915#3301])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb8/igt@prime_vgem@basic-userptr.html
* igt@syncobj_timeline@transfer-timeline-point:
- shard-skl: NOTRUN -> [DMESG-FAIL][138] ([i915#5098])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl4/igt@syncobj_timeline@transfer-timeline-point.html
* igt@sysfs_clients@create:
- shard-apl: NOTRUN -> [SKIP][139] ([fdo#109271] / [i915#2994])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-apl1/igt@sysfs_clients@create.html
- shard-skl: NOTRUN -> [SKIP][140] ([fdo#109271] / [i915#2994]) +3 similar issues
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl7/igt@sysfs_clients@create.html
* igt@sysfs_clients@split-10:
- shard-iclb: NOTRUN -> [SKIP][141] ([i915#2994])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb2/igt@sysfs_clients@split-10.html
* igt@sysfs_timeslice_duration@timeout@rcs0:
- shard-skl: [PASS][142] -> [FAIL][143] ([i915#3259])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-skl1/igt@sysfs_timeslice_duration@timeout@rcs0.html
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-skl3/igt@sysfs_timeslice_duration@timeout@rcs0.html
#### Possible fixes ####
* igt@drm_read@short-buffer-nonblock:
- {shard-rkl}: [SKIP][144] ([i915#4098]) -> [PASS][145]
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-rkl-1/igt@drm_read@short-buffer-nonblock.html
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-rkl-6/igt@drm_read@short-buffer-nonblock.html
* igt@fbdev@eof:
- {shard-rkl}: ([SKIP][146], [SKIP][147]) ([i915#2582]) -> [PASS][148]
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-rkl-1/igt@fbdev@eof.html
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-rkl-4/igt@fbdev@eof.html
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-rkl-6/igt@fbdev@eof.html
* igt@gem_eio@in-flight-contexts-1us:
- shard-iclb: [TIMEOUT][149] ([i915#3070]) -> [PASS][150]
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-iclb5/igt@gem_eio@in-flight-contexts-1us.html
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-iclb3/igt@gem_eio@in-flight-contexts-1us.html
* igt@gem_exec_fair@basic-deadline:
- {shard-rkl}: [FAIL][151] ([i915#2846]) -> [PASS][152]
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/shard-rkl-6/igt@gem_exec_fair@basic-deadline.html
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/shard-rkl-5/igt@gem_exec_fair@basic-deadline.html
* igt@gem_exec_fair@basic-none-vip@rcs0:
- shard-kbl: [FAIL][153] ([i915#2842]) -> [PASS][154]
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11456/s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_22781/index.html
[-- Attachment #2: Type: text/html, Size: 33917 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [Intel-gfx] [PATCH] drm/i915: Improve on suspend / resume time with VT-d enabled
2022-04-05 10:59 [Intel-gfx] [PATCH] drm/i915: Improve on suspend / resume time with VT-d enabled Thomas Hellström
` (4 preceding siblings ...)
2022-04-05 20:07 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
@ 2022-06-17 10:12 ` Matthew Auld
5 siblings, 0 replies; 7+ messages in thread
From: Matthew Auld @ 2022-06-17 10:12 UTC (permalink / raw)
To: Thomas Hellström, intel-gfx; +Cc: dri-devel
On 05/04/2022 11:59, Thomas Hellström wrote:
> When DMAR / VT-d is enabled, the display engine uses overfetching,
> presumably to deal with the increased latency. To avoid display engine
> errors and DMAR faults, as a workaround the GGTT is populated with scatch
> PTEs when VT-d is enabled. However starting with gen10, Write-combined
> writing of scratch PTES is no longer possible and as a result, populating
> the full GGTT with scratch PTEs like on resume becomes very slow as
> uncached access is needed.
>
> Therefore, on integrated GPUs utilize the fact that the PTEs are stored in
> stolen memory which retain content across S3 suspend. Don't clear the PTEs
> on suspend and resume. This improves on resume time with around 100 ms.
> While 100+ms might appear like a short time it's 10% to 20% of total resume
> time and important in some applications.
>
> One notable exception is Intel Rapid Start Technology which may cause
> stolen memory to be lost across what the OS percieves as S3 suspend.
> If IRST is enabled or if we can't detect whether IRST is enabled, retain
> the old workaround, clearing and re-instating PTEs.
>
> As an additional measure, if we detect that the last ggtt pte was lost
> during suspend, print a warning and re-populate the GGTT ptes
>
> On discrete GPUs, the display engine scans out from LMEM which isn't
> subject to DMAR, and presumably the workaround is therefore not needed,
> but that needs to be verified and disabling the workaround for dGPU,
> if possible, will be deferred to a follow-up patch.
>
> v2:
> - Rely on retained ptes to also speed up suspend and resume re-binding.
> - Re-build GGTT ptes if Intel rst is enabled.
> v3:
> - Re-build GGTT ptes also if we can't detect whether Intel rst is enabled,
> and if the guard page PTE and end of GGTT was lost.
>
> Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_ggtt.c | 56 +++++++++++++++++++++++++---
> drivers/gpu/drm/i915/gt/intel_gtt.h | 20 ++++++++++
> drivers/gpu/drm/i915/i915_driver.c | 16 ++++++++
> 3 files changed, 86 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> index 04191fe2ee34..98441b1c1b75 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> @@ -23,6 +23,13 @@
> #include "intel_gtt.h"
> #include "gen8_ppgtt.h"
>
> +static inline bool suspend_retains_ptes(struct i915_address_space *vm)
> +{
> + return GRAPHICS_VER(vm->i915) >= 8 &&
> + !HAS_LMEM(vm->i915) &&
> + vm->is_ggtt;
> +}
> +
> static void i915_ggtt_color_adjust(const struct drm_mm_node *node,
> unsigned long color,
> u64 *start,
> @@ -116,6 +123,23 @@ static bool needs_idle_maps(struct drm_i915_private *i915)
> return false;
> }
>
> +/*
> + * Return the value of the last GGTT pte cast to an u64, if
> + * the system is supposed to retain ptes across resume. 0 otherwise.
> + */
> +static u64 read_last_pte(struct i915_address_space *vm)
> +{
> + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm);
> + gen8_pte_t __iomem *ptep;
> +
> + if (!suspend_retains_ptes(vm))
> + return 0;
> +
> + GEM_BUG_ON(GRAPHICS_VER(vm->i915) < 8);
> + ptep = (typeof(ptep))ggtt->gsm + (ggtt_total_entries(ggtt) - 1);
> + return readq(ptep);
> +}
> +
> /**
> * i915_ggtt_suspend_vm - Suspend the memory mappings for a GGTT or DPT VM
> * @vm: The VM to suspend the mappings for
> @@ -179,7 +203,10 @@ void i915_ggtt_suspend_vm(struct i915_address_space *vm)
> i915_gem_object_unlock(obj);
> }
>
> - vm->clear_range(vm, 0, vm->total);
> + if (!suspend_retains_ptes(vm))
> + vm->clear_range(vm, 0, vm->total);
> + else
> + i915_vm_to_ggtt(vm)->probed_pte = read_last_pte(vm);
>
> vm->skip_pte_rewrite = save_skip_rewrite;
>
> @@ -578,6 +605,8 @@ static int init_ggtt(struct i915_ggtt *ggtt)
> struct drm_mm_node *entry;
> int ret;
>
> + ggtt->pte_lost = true;
> +
> /*
> * GuC requires all resources that we're sharing with it to be placed in
> * non-WOPCM memory. If GuC is not present or not in use we still need a
> @@ -1309,11 +1338,20 @@ bool i915_ggtt_resume_vm(struct i915_address_space *vm)
> {
> struct i915_vma *vma;
> bool write_domain_objs = false;
> + bool retained_ptes;
>
> drm_WARN_ON(&vm->i915->drm, !vm->is_ggtt && !vm->is_dpt);
>
> - /* First fill our portion of the GTT with scratch pages */
> - vm->clear_range(vm, 0, vm->total);
> + /*
> + * First fill our portion of the GTT with scratch pages if
> + * they were not retained across suspend.
> + */
> + retained_ptes = suspend_retains_ptes(vm) &&
> + !i915_vm_to_ggtt(vm)->pte_lost &&
> + !GEM_WARN_ON(i915_vm_to_ggtt(vm)->probed_pte != read_last_pte(vm));
> +
> + if (!retained_ptes)
> + vm->clear_range(vm, 0, vm->total);
>
> /* clflush objects bound into the GGTT and rebind them. */
> list_for_each_entry(vma, &vm->bound_list, vm_link) {
> @@ -1322,9 +1360,10 @@ bool i915_ggtt_resume_vm(struct i915_address_space *vm)
> atomic_read(&vma->flags) & I915_VMA_BIND_MASK;
>
> GEM_BUG_ON(!was_bound);
> - vma->ops->bind_vma(vm, NULL, vma->resource,
> - obj ? obj->cache_level : 0,
> - was_bound);
> + if (!retained_ptes)
> + vma->ops->bind_vma(vm, NULL, vma->resource,
> + obj ? obj->cache_level : 0,
> + was_bound);
> if (obj) { /* only used during resume => exclusive access */
> write_domain_objs |= fetch_and_zero(&obj->write_domain);
> obj->read_domains |= I915_GEM_DOMAIN_GTT;
> @@ -1352,3 +1391,8 @@ void i915_ggtt_resume(struct i915_ggtt *ggtt)
>
> intel_ggtt_restore_fences(ggtt);
> }
> +
> +void i915_ggtt_mark_pte_lost(struct drm_i915_private *i915, bool val)
> +{
> + to_gt(i915)->ggtt->pte_lost = val;
> +}
> diff --git a/drivers/gpu/drm/i915/gt/intel_gtt.h b/drivers/gpu/drm/i915/gt/intel_gtt.h
> index 4529b5e9f6e6..7561672c4f17 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gtt.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gtt.h
> @@ -345,6 +345,15 @@ struct i915_ggtt {
>
> bool do_idle_maps;
>
> + /**
> + * Whether the system was recently restored from hibernate and
> + * thus may have lost pte content.
> + */
Nit: I guess that's not really proper kernel-doc. Below also.
Anyway,
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
> + bool pte_lost;
> +
> + /** Probed pte value on suspend. Re-checked on resume. */
> + u64 probed_pte;
> +
> int mtrr;
>
> /** Bit 6 swizzling required for X tiling */
> @@ -571,6 +580,17 @@ bool i915_ggtt_resume_vm(struct i915_address_space *vm);
> void i915_ggtt_suspend(struct i915_ggtt *gtt);
> void i915_ggtt_resume(struct i915_ggtt *ggtt);
>
> +/**
> + * i915_ggtt_mark_pte_lost - Mark ggtt ptes as lost or clear such a marking
> + * @i915 The device private.
> + * @val whether the ptes should be marked as lost.
> + *
> + * In some cases pte content is retained across suspend, but typically lost
> + * across hibernate. Typically they should be marked as lost on
> + * hibernation restore and such marking cleared on suspend.
> + */
> +void i915_ggtt_mark_pte_lost(struct drm_i915_private *i915, bool val);
> +
> void
> fill_page_dma(struct drm_i915_gem_object *p, const u64 val, unsigned int count);
>
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index 64e6f76861f9..f50256e4c2d2 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -98,6 +98,9 @@
> #include "intel_region_ttm.h"
> #include "vlv_suspend.h"
>
> +/* Intel Rapid Start Technology ACPI device name */
> +static const char irst_name[] = "INT3392";
> +
> static const struct drm_driver i915_drm_driver;
>
> static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
> @@ -1425,6 +1428,8 @@ static int i915_pm_suspend(struct device *kdev)
> return -ENODEV;
> }
>
> + i915_ggtt_mark_pte_lost(i915, false);
> +
> if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF)
> return 0;
>
> @@ -1477,6 +1482,14 @@ static int i915_pm_resume(struct device *kdev)
> if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF)
> return 0;
>
> + /*
> + * If IRST is enabled, or if we can't detect whether it's enabled,
> + * then we must assume we lost the GGTT page table entries, since
> + * they are not retained if IRST decided to enter S4.
> + */
> + if (!IS_ENABLED(CONFIG_ACPI) || acpi_dev_present(irst_name, NULL, -1))
> + i915_ggtt_mark_pte_lost(i915, true);
> +
> return i915_drm_resume(&i915->drm);
> }
>
> @@ -1536,6 +1549,9 @@ static int i915_pm_restore_early(struct device *kdev)
>
> static int i915_pm_restore(struct device *kdev)
> {
> + struct drm_i915_private *i915 = kdev_to_i915(kdev);
> +
> + i915_ggtt_mark_pte_lost(i915, true);
> return i915_pm_resume(kdev);
> }
>
^ permalink raw reply [flat|nested] 7+ messages in thread