* [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow
@ 2023-03-04 16:17 Badal Nilawar
2023-03-04 16:30 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Badal Nilawar @ 2023-03-04 16:17 UTC (permalink / raw)
To: intel-gfx; +Cc: rodrigo.vivi
During suspend resume flow it was seen that lots forcewakes
are taken and released for media. So to avoid HANG due to MC6
entry/exit while accessing media applied Wa_14017073508 in
suspend/resume flow.
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
drivers/gpu/drm/i915/gem/i915_gem_pm.c | 6 ++++-
drivers/gpu/drm/i915/gt/intel_gt_pm.c | 32 ++++++++++++++++--------
drivers/gpu/drm/i915/gt/intel_gt_pm.h | 3 +++
drivers/gpu/drm/i915/gt/intel_gt_types.h | 1 +
drivers/gpu/drm/i915/i915_driver.c | 32 ++++++++++++++++++++++++
5 files changed, 62 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pm.c b/drivers/gpu/drm/i915/gem/i915_gem_pm.c
index 0d812f4d787d..60deac41104d 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_pm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_pm.c
@@ -160,8 +160,12 @@ void i915_gem_suspend_late(struct drm_i915_private *i915)
* machine in an unusable condition.
*/
- for_each_gt(gt, i915, i)
+ for_each_gt(gt, i915, i) {
+ /* Wa_14017073508: mtl */
+ mtl_media_busy(gt);
intel_gt_suspend_late(gt);
+ mtl_media_idle(gt);
+ }
spin_lock_irqsave(&i915->mm.obj_lock, flags);
for (phase = phases; *phase; phase++) {
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
index cef3d6f5c34e..1f3bf1cf0421 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
@@ -26,24 +26,34 @@
#define I915_GT_SUSPEND_IDLE_TIMEOUT (HZ / 2)
-static void mtl_media_busy(struct intel_gt *gt)
+void mtl_media_busy(struct intel_gt *gt)
{
/* Wa_14017073508: mtl */
- if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
+ if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
gt->type == GT_MEDIA)
- snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
- PCODE_MBOX_GT_STATE_MEDIA_BUSY,
- PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
+ if (!atomic_inc_not_zero(>->media_wakeref)) {
+ drm_err(>->i915->drm, "Media busy\n");
+ snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
+ PCODE_MBOX_GT_STATE_MEDIA_BUSY,
+ PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
+ atomic_inc(>->media_wakeref);
+ }
}
-static void mtl_media_idle(struct intel_gt *gt)
+void mtl_media_idle(struct intel_gt *gt)
{
/* Wa_14017073508: mtl */
- if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
- gt->type == GT_MEDIA)
- snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
- PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY,
- PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
+ if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
+ gt->type == GT_MEDIA) {
+ WARN_ON(atomic_read(>->media_wakeref) <= 0);
+ if (!atomic_add_unless(>->media_wakeref, -1, 1)) {
+ drm_err(>->i915->drm, "Media idle\n");
+ snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
+ PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY,
+ PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
+ atomic_dec(>->media_wakeref);
+ }
+ }
}
static void user_forcewake(struct intel_gt *gt, bool suspend)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.h b/drivers/gpu/drm/i915/gt/intel_gt_pm.h
index 6c9a46452364..43ffabf9babe 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_pm.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.h
@@ -89,4 +89,7 @@ static inline bool is_mock_gt(const struct intel_gt *gt)
return I915_SELFTEST_ONLY(gt->awake == -ENODEV);
}
+void mtl_media_busy(struct intel_gt *gt);
+void mtl_media_idle(struct intel_gt *gt);
+
#endif /* INTEL_GT_PM_H */
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h b/drivers/gpu/drm/i915/gt/intel_gt_types.h
index f08c2556aa25..321ccfef4028 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h
@@ -145,6 +145,7 @@ struct intel_gt {
struct intel_wakeref wakeref;
atomic_t user_wakeref;
+ atomic_t media_wakeref;
struct list_head closed_vma;
spinlock_t closed_lock; /* guards the list of closed_vma */
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index 8bc76dede332..c7625ea28022 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -327,6 +327,8 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
intel_gmch_bar_setup(dev_priv);
intel_device_info_runtime_init(dev_priv);
+ /* Wa_14017073508: mtl */
+ mtl_media_busy(dev_priv->media_gt);
for_each_gt(gt, dev_priv, i) {
ret = intel_gt_init_mmio(gt);
if (ret)
@@ -335,10 +337,14 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
/* As early as possible, scrub existing GPU state before clobbering */
sanitize_gpu(dev_priv);
+ /* Wa_14017073508: mtl */
+ mtl_media_idle(dev_priv->media_gt);
return 0;
err_uncore:
+ /* Wa_14017073508: mtl */
+ mtl_media_idle(dev_priv->media_gt);
intel_gmch_bar_teardown(dev_priv);
return ret;
@@ -781,6 +787,12 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret < 0)
goto out_tiles_cleanup;
+ /* Wa_14017073508: mtl */
+ if (i915->media_gt) {
+ atomic_set(&i915->media_gt->media_wakeref, 0);
+ mtl_media_busy(i915->media_gt);
+ }
+
ret = i915_driver_hw_probe(i915);
if (ret < 0)
goto out_cleanup_mmio;
@@ -838,6 +850,8 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
i915_gem_drain_freed_objects(i915);
i915_ggtt_driver_late_release(i915);
out_cleanup_mmio:
+ /* Wa_14017073508: mtl */
+ mtl_media_idle(i915->media_gt);
i915_driver_mmio_release(i915);
out_tiles_cleanup:
intel_gt_release_all(i915);
@@ -1063,6 +1077,9 @@ static int i915_drm_suspend(struct drm_device *dev)
disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
+ /* Wa_14017073508: mtl */
+ mtl_media_busy(dev_priv->media_gt);
+
/* We do a lot of poking in a lot of registers, make sure they work
* properly. */
intel_power_domains_disable(dev_priv);
@@ -1097,6 +1114,9 @@ static int i915_drm_suspend(struct drm_device *dev)
intel_dmc_suspend(dev_priv);
+ /* Wa_14017073508: mtl */
+ mtl_media_busy(dev_priv->media_gt);
+
enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
i915_gem_drain_freed_objects(dev_priv);
@@ -1197,6 +1217,9 @@ static int i915_drm_resume(struct drm_device *dev)
disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
+ /* Wa_14017073508: mtl */
+ mtl_media_busy(dev_priv->media_gt);
+
ret = i915_pcode_init(dev_priv);
if (ret)
return ret;
@@ -1260,6 +1283,9 @@ static int i915_drm_resume(struct drm_device *dev)
intel_gvt_resume(dev_priv);
+ /* Wa_14017073508: mtl */
+ mtl_media_idle(dev_priv->media_gt);
+
enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
return 0;
@@ -1319,6 +1345,9 @@ static int i915_drm_resume_early(struct drm_device *dev)
disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
+ /* Wa_14017073508: mtl */
+ mtl_media_busy(dev_priv->media_gt);
+
ret = vlv_resume_prepare(dev_priv, false);
if (ret)
drm_err(&dev_priv->drm,
@@ -1333,6 +1362,9 @@ static int i915_drm_resume_early(struct drm_device *dev)
intel_power_domains_resume(dev_priv);
+ /* Wa_14017073508: mtl */
+ mtl_media_idle(dev_priv->media_gt);
+
enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
return ret;
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow 2023-03-04 16:17 [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow Badal Nilawar @ 2023-03-04 16:30 ` Patchwork 2023-03-04 16:43 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork ` (3 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2023-03-04 16:30 UTC (permalink / raw) To: Badal Nilawar; +Cc: intel-gfx == Series Details == Series: drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow URL : https://patchwork.freedesktop.org/series/114657/ State : warning == Summary == Error: dim sparse failed 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/mtl: Extend Wa_14017073508 in suspend/resume flow 2023-03-04 16:17 [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow Badal Nilawar 2023-03-04 16:30 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork @ 2023-03-04 16:43 ` Patchwork 2023-03-06 8:33 ` [Intel-gfx] [PATCH] " Gupta, Anshuman ` (2 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2023-03-04 16:43 UTC (permalink / raw) To: Badal Nilawar; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 4780 bytes --] == Series Details == Series: drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow URL : https://patchwork.freedesktop.org/series/114657/ State : success == Summary == CI Bug Log - changes from CI_DRM_12810 -> Patchwork_114657v1 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/index.html Participating hosts (39 -> 37) ------------------------------ Missing (2): bat-adls-5 bat-dg1-6 Known issues ------------ Here are the changes found in Patchwork_114657v1 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live@slpc: - bat-rpls-2: NOTRUN -> [DMESG-FAIL][1] ([i915#6367] / [i915#7913]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-2/igt@i915_selftest@live@slpc.html - bat-rpls-1: [PASS][2] -> [DMESG-FAIL][3] ([i915#6367]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/bat-rpls-1/igt@i915_selftest@live@slpc.html [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-1/igt@i915_selftest@live@slpc.html * igt@kms_chamelium_hpd@common-hpd-after-suspend: - bat-rpls-2: NOTRUN -> [SKIP][4] ([i915#7828]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-2/igt@kms_chamelium_hpd@common-hpd-after-suspend.html - bat-rpls-1: NOTRUN -> [SKIP][5] ([i915#7828]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-1/igt@kms_chamelium_hpd@common-hpd-after-suspend.html * igt@kms_pipe_crc_basic@suspend-read-crc: - bat-rpls-1: NOTRUN -> [SKIP][6] ([i915#1845]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-1/igt@kms_pipe_crc_basic@suspend-read-crc.html - bat-rpls-2: NOTRUN -> [SKIP][7] ([i915#1845]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-2/igt@kms_pipe_crc_basic@suspend-read-crc.html #### Possible fixes #### * igt@gem_exec_suspend@basic-s3@smem: - bat-rpls-1: [ABORT][8] ([i915#6687] / [i915#7978]) -> [PASS][9] [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/bat-rpls-1/igt@gem_exec_suspend@basic-s3@smem.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-1/igt@gem_exec_suspend@basic-s3@smem.html * igt@i915_selftest@live@gt_heartbeat: - fi-apl-guc: [DMESG-FAIL][10] ([i915#5334]) -> [PASS][11] [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html * igt@i915_selftest@live@migrate: - bat-adlp-6: [DMESG-FAIL][12] ([i915#7699]) -> [PASS][13] [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/bat-adlp-6/igt@i915_selftest@live@migrate.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-adlp-6/igt@i915_selftest@live@migrate.html * igt@i915_selftest@live@requests: - bat-rpls-2: [ABORT][14] ([i915#7694] / [i915#7913] / [i915#7982]) -> [PASS][15] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/bat-rpls-2/igt@i915_selftest@live@requests.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/bat-rpls-2/igt@i915_selftest@live@requests.html [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334 [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367 [i915#6687]: https://gitlab.freedesktop.org/drm/intel/issues/6687 [i915#7694]: https://gitlab.freedesktop.org/drm/intel/issues/7694 [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913 [i915#7978]: https://gitlab.freedesktop.org/drm/intel/issues/7978 [i915#7982]: https://gitlab.freedesktop.org/drm/intel/issues/7982 Build changes ------------- * Linux: CI_DRM_12810 -> Patchwork_114657v1 CI-20190529: 20190529 CI_DRM_12810: 030c24d089b9c566f8cf9e15f49fc4e298396740 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_7180: b6b1ceb4fc4d8f83a9540e4628a6c2648514bb19 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_114657v1: 030c24d089b9c566f8cf9e15f49fc4e298396740 @ git://anongit.freedesktop.org/gfx-ci/linux ### Linux commits 6ef4d450e532 drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/index.html [-- Attachment #2: Type: text/html, Size: 5876 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow 2023-03-04 16:17 [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow Badal Nilawar 2023-03-04 16:30 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork 2023-03-04 16:43 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork @ 2023-03-06 8:33 ` Gupta, Anshuman 2023-03-06 20:20 ` Rodrigo Vivi 2023-03-06 13:34 ` Jani Nikula 2023-03-06 22:58 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork 4 siblings, 1 reply; 9+ messages in thread From: Gupta, Anshuman @ 2023-03-06 8:33 UTC (permalink / raw) To: Nilawar, Badal, intel-gfx@lists.freedesktop.org Cc: Vivi, Rodrigo, Roper, Matthew D > -----Original Message----- > From: Nilawar, Badal <badal.nilawar@intel.com> > Sent: Saturday, March 4, 2023 9:48 PM > To: intel-gfx@lists.freedesktop.org > Cc: Gupta, Anshuman <anshuman.gupta@intel.com>; Ewins, Jon > <jon.ewins@intel.com>; Belgaumkar, Vinay <vinay.belgaumkar@intel.com>; > Vivi, Rodrigo <rodrigo.vivi@intel.com> > Subject: [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume > flow > > During suspend resume flow it was seen that lots forcewakes are taken and > released for media. So to avoid HANG due to MC6 entry/exit while accessing > media applied Wa_14017073508 in suspend/resume flow. We need to fix such gaps in runtime PM as well, but that will make this WA dirty somewhat similar to other RC6 related WA on other platforms. I suggest to disable the MC6 rather on A step rather than having this form of WA. This WA is not needed on A step. @rodrigo and @matt what is you opinion here ? However some comment her to improve this patch. > > Signed-off-by: Badal Nilawar <badal.nilawar@intel.com> > --- > drivers/gpu/drm/i915/gem/i915_gem_pm.c | 6 ++++- > drivers/gpu/drm/i915/gt/intel_gt_pm.c | 32 ++++++++++++++++-------- > drivers/gpu/drm/i915/gt/intel_gt_pm.h | 3 +++ > drivers/gpu/drm/i915/gt/intel_gt_types.h | 1 + > drivers/gpu/drm/i915/i915_driver.c | 32 ++++++++++++++++++++++++ > 5 files changed, 62 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pm.c > b/drivers/gpu/drm/i915/gem/i915_gem_pm.c > index 0d812f4d787d..60deac41104d 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_pm.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_pm.c > @@ -160,8 +160,12 @@ void i915_gem_suspend_late(struct > drm_i915_private *i915) > * machine in an unusable condition. > */ > > - for_each_gt(gt, i915, i) > + for_each_gt(gt, i915, i) { > + /* Wa_14017073508: mtl */ > + mtl_media_busy(gt); Let's add these busy/idle in intel_gt_suspend_late() > intel_gt_suspend_late(gt); > + mtl_media_idle(gt); > + } > > spin_lock_irqsave(&i915->mm.obj_lock, flags); > for (phase = phases; *phase; phase++) { diff --git > a/drivers/gpu/drm/i915/gt/intel_gt_pm.c > b/drivers/gpu/drm/i915/gt/intel_gt_pm.c > index cef3d6f5c34e..1f3bf1cf0421 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c > @@ -26,24 +26,34 @@ > > #define I915_GT_SUSPEND_IDLE_TIMEOUT (HZ / 2) > > -static void mtl_media_busy(struct intel_gt *gt) > +void mtl_media_busy(struct intel_gt *gt) > { > /* Wa_14017073508: mtl */ > - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) > && > gt->type == GT_MEDIA) Let's have this in a separate patch , I believe that is already floated and ready to merge. > - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > - PCODE_MBOX_GT_STATE_MEDIA_BUSY, > - > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + if (!atomic_inc_not_zero(>->media_wakeref)) { > + drm_err(>->i915->drm, "Media busy\n"); This should not be Error message. > + snb_pcode_write_p(gt->uncore, > PCODE_MBOX_GT_STATE, > + > PCODE_MBOX_GT_STATE_MEDIA_BUSY, > + > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + atomic_inc(>->media_wakeref); > + } > } > > -static void mtl_media_idle(struct intel_gt *gt) > +void mtl_media_idle(struct intel_gt *gt) > { > /* Wa_14017073508: mtl */ > - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > - gt->type == GT_MEDIA) > - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > - > PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, > - > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) > && > + gt->type == GT_MEDIA) { > + WARN_ON(atomic_read(>->media_wakeref) <= 0); > + if (!atomic_add_unless(>->media_wakeref, -1, 1)) { > + drm_err(>->i915->drm, "Media idle\n"); Same here this can't be error message. Thanks, Anshuman Gupta. > + snb_pcode_write_p(gt->uncore, > PCODE_MBOX_GT_STATE, > + > PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, > + > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + atomic_dec(>->media_wakeref); > + } > + } > } > > static void user_forcewake(struct intel_gt *gt, bool suspend) diff --git > a/drivers/gpu/drm/i915/gt/intel_gt_pm.h > b/drivers/gpu/drm/i915/gt/intel_gt_pm.h > index 6c9a46452364..43ffabf9babe 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.h > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.h > @@ -89,4 +89,7 @@ static inline bool is_mock_gt(const struct intel_gt *gt) > return I915_SELFTEST_ONLY(gt->awake == -ENODEV); } > > +void mtl_media_busy(struct intel_gt *gt); void mtl_media_idle(struct > +intel_gt *gt); > + > #endif /* INTEL_GT_PM_H */ > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h > b/drivers/gpu/drm/i915/gt/intel_gt_types.h > index f08c2556aa25..321ccfef4028 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt_types.h > +++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h > @@ -145,6 +145,7 @@ struct intel_gt { > > struct intel_wakeref wakeref; > atomic_t user_wakeref; > + atomic_t media_wakeref; > > struct list_head closed_vma; > spinlock_t closed_lock; /* guards the list of closed_vma */ diff --git > a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c > index 8bc76dede332..c7625ea28022 100644 > --- a/drivers/gpu/drm/i915/i915_driver.c > +++ b/drivers/gpu/drm/i915/i915_driver.c > @@ -327,6 +327,8 @@ static int i915_driver_mmio_probe(struct > drm_i915_private *dev_priv) > intel_gmch_bar_setup(dev_priv); > intel_device_info_runtime_init(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > for_each_gt(gt, dev_priv, i) { > ret = intel_gt_init_mmio(gt); > if (ret) > @@ -335,10 +337,14 @@ static int i915_driver_mmio_probe(struct > drm_i915_private *dev_priv) > > /* As early as possible, scrub existing GPU state before clobbering */ > sanitize_gpu(dev_priv); > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > > return 0; > > err_uncore: > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > intel_gmch_bar_teardown(dev_priv); > > return ret; > @@ -781,6 +787,12 @@ int i915_driver_probe(struct pci_dev *pdev, const > struct pci_device_id *ent) > if (ret < 0) > goto out_tiles_cleanup; > > + /* Wa_14017073508: mtl */ > + if (i915->media_gt) { > + atomic_set(&i915->media_gt->media_wakeref, 0); > + mtl_media_busy(i915->media_gt); > + } > + > ret = i915_driver_hw_probe(i915); > if (ret < 0) > goto out_cleanup_mmio; > @@ -838,6 +850,8 @@ int i915_driver_probe(struct pci_dev *pdev, const > struct pci_device_id *ent) > i915_gem_drain_freed_objects(i915); > i915_ggtt_driver_late_release(i915); > out_cleanup_mmio: > + /* Wa_14017073508: mtl */ > + mtl_media_idle(i915->media_gt); > i915_driver_mmio_release(i915); > out_tiles_cleanup: > intel_gt_release_all(i915); > @@ -1063,6 +1077,9 @@ static int i915_drm_suspend(struct drm_device > *dev) > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > /* We do a lot of poking in a lot of registers, make sure they work > * properly. */ > intel_power_domains_disable(dev_priv); > @@ -1097,6 +1114,9 @@ static int i915_drm_suspend(struct drm_device > *dev) > > intel_dmc_suspend(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > i915_gem_drain_freed_objects(dev_priv); > @@ -1197,6 +1217,9 @@ static int i915_drm_resume(struct drm_device > *dev) > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > ret = i915_pcode_init(dev_priv); > if (ret) > return ret; > @@ -1260,6 +1283,9 @@ static int i915_drm_resume(struct drm_device > *dev) > > intel_gvt_resume(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > + > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > return 0; > @@ -1319,6 +1345,9 @@ static int i915_drm_resume_early(struct > drm_device *dev) > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > ret = vlv_resume_prepare(dev_priv, false); > if (ret) > drm_err(&dev_priv->drm, > @@ -1333,6 +1362,9 @@ static int i915_drm_resume_early(struct > drm_device *dev) > > intel_power_domains_resume(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > + > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > return ret; > -- > 2.25.1 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow 2023-03-06 8:33 ` [Intel-gfx] [PATCH] " Gupta, Anshuman @ 2023-03-06 20:20 ` Rodrigo Vivi 2023-03-07 13:44 ` Nilawar, Badal 0 siblings, 1 reply; 9+ messages in thread From: Rodrigo Vivi @ 2023-03-06 20:20 UTC (permalink / raw) To: Gupta, Anshuman; +Cc: intel-gfx@lists.freedesktop.org, Roper, Matthew D On Mon, Mar 06, 2023 at 08:33:04AM +0000, Gupta, Anshuman wrote: > > > > -----Original Message----- > > From: Nilawar, Badal <badal.nilawar@intel.com> > > Sent: Saturday, March 4, 2023 9:48 PM > > To: intel-gfx@lists.freedesktop.org > > Cc: Gupta, Anshuman <anshuman.gupta@intel.com>; Ewins, Jon > > <jon.ewins@intel.com>; Belgaumkar, Vinay <vinay.belgaumkar@intel.com>; > > Vivi, Rodrigo <rodrigo.vivi@intel.com> > > Subject: [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume > > flow > > > > During suspend resume flow it was seen that lots forcewakes are taken and > > released for media. So to avoid HANG due to MC6 entry/exit while accessing > > media applied Wa_14017073508 in suspend/resume flow. > We need to fix such gaps in runtime PM as well, but that will make this WA dirty somewhat similar to other RC6 related WA on other platforms. > I suggest to disable the MC6 rather on A step rather than having this form of WA. This WA is not needed on A step. > @rodrigo and @matt what is you opinion here ? My opinion since day-0 is that we should simply disable MC6 on A0 parts and move on with this feature only on B0. Since the beginning it was pretty clear that this workaround would get out of control and become the same as the PVC-RC6 one. > > However some comment her to improve this patch. > > > > > Signed-off-by: Badal Nilawar <badal.nilawar@intel.com> > > --- > > drivers/gpu/drm/i915/gem/i915_gem_pm.c | 6 ++++- > > drivers/gpu/drm/i915/gt/intel_gt_pm.c | 32 ++++++++++++++++-------- > > drivers/gpu/drm/i915/gt/intel_gt_pm.h | 3 +++ > > drivers/gpu/drm/i915/gt/intel_gt_types.h | 1 + > > drivers/gpu/drm/i915/i915_driver.c | 32 ++++++++++++++++++++++++ > > 5 files changed, 62 insertions(+), 12 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pm.c > > b/drivers/gpu/drm/i915/gem/i915_gem_pm.c > > index 0d812f4d787d..60deac41104d 100644 > > --- a/drivers/gpu/drm/i915/gem/i915_gem_pm.c > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_pm.c > > @@ -160,8 +160,12 @@ void i915_gem_suspend_late(struct > > drm_i915_private *i915) > > * machine in an unusable condition. > > */ > > > > - for_each_gt(gt, i915, i) > > + for_each_gt(gt, i915, i) { > > + /* Wa_14017073508: mtl */ > > + mtl_media_busy(gt); > Let's add these busy/idle in intel_gt_suspend_late() > > intel_gt_suspend_late(gt); > > + mtl_media_idle(gt); > > + } > > > > spin_lock_irqsave(&i915->mm.obj_lock, flags); > > for (phase = phases; *phase; phase++) { diff --git > > a/drivers/gpu/drm/i915/gt/intel_gt_pm.c > > b/drivers/gpu/drm/i915/gt/intel_gt_pm.c > > index cef3d6f5c34e..1f3bf1cf0421 100644 > > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c > > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c > > @@ -26,24 +26,34 @@ > > > > #define I915_GT_SUSPEND_IDLE_TIMEOUT (HZ / 2) > > > > -static void mtl_media_busy(struct intel_gt *gt) > > +void mtl_media_busy(struct intel_gt *gt) > > { > > /* Wa_14017073508: mtl */ > > - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > > + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) > > && > > gt->type == GT_MEDIA) > Let's have this in a separate patch , I believe that is already floated and ready to merge. > > - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > > - PCODE_MBOX_GT_STATE_MEDIA_BUSY, > > - > > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > > + if (!atomic_inc_not_zero(>->media_wakeref)) { > > + drm_err(>->i915->drm, "Media busy\n"); > This should not be Error message. > > + snb_pcode_write_p(gt->uncore, > > PCODE_MBOX_GT_STATE, > > + > > PCODE_MBOX_GT_STATE_MEDIA_BUSY, > > + > > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > > + atomic_inc(>->media_wakeref); > > + } > > } > > > > -static void mtl_media_idle(struct intel_gt *gt) > > +void mtl_media_idle(struct intel_gt *gt) > > { > > /* Wa_14017073508: mtl */ > > - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > > - gt->type == GT_MEDIA) > > - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > > - > > PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, > > - > > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > > + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) > > && > > + gt->type == GT_MEDIA) { > > + WARN_ON(atomic_read(>->media_wakeref) <= 0); > > + if (!atomic_add_unless(>->media_wakeref, -1, 1)) { > > + drm_err(>->i915->drm, "Media idle\n"); > Same here this can't be error message. > Thanks, > Anshuman Gupta. > > + snb_pcode_write_p(gt->uncore, > > PCODE_MBOX_GT_STATE, > > + > > PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, > > + > > PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > > + atomic_dec(>->media_wakeref); > > + } > > + } > > } > > > > static void user_forcewake(struct intel_gt *gt, bool suspend) diff --git > > a/drivers/gpu/drm/i915/gt/intel_gt_pm.h > > b/drivers/gpu/drm/i915/gt/intel_gt_pm.h > > index 6c9a46452364..43ffabf9babe 100644 > > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.h > > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.h > > @@ -89,4 +89,7 @@ static inline bool is_mock_gt(const struct intel_gt *gt) > > return I915_SELFTEST_ONLY(gt->awake == -ENODEV); } > > > > +void mtl_media_busy(struct intel_gt *gt); void mtl_media_idle(struct > > +intel_gt *gt); > > + > > #endif /* INTEL_GT_PM_H */ > > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h > > b/drivers/gpu/drm/i915/gt/intel_gt_types.h > > index f08c2556aa25..321ccfef4028 100644 > > --- a/drivers/gpu/drm/i915/gt/intel_gt_types.h > > +++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h > > @@ -145,6 +145,7 @@ struct intel_gt { > > > > struct intel_wakeref wakeref; > > atomic_t user_wakeref; > > + atomic_t media_wakeref; > > > > struct list_head closed_vma; > > spinlock_t closed_lock; /* guards the list of closed_vma */ diff --git > > a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c > > index 8bc76dede332..c7625ea28022 100644 > > --- a/drivers/gpu/drm/i915/i915_driver.c > > +++ b/drivers/gpu/drm/i915/i915_driver.c > > @@ -327,6 +327,8 @@ static int i915_driver_mmio_probe(struct > > drm_i915_private *dev_priv) > > intel_gmch_bar_setup(dev_priv); > > intel_device_info_runtime_init(dev_priv); > > > > + /* Wa_14017073508: mtl */ > > + mtl_media_busy(dev_priv->media_gt); > > for_each_gt(gt, dev_priv, i) { > > ret = intel_gt_init_mmio(gt); > > if (ret) > > @@ -335,10 +337,14 @@ static int i915_driver_mmio_probe(struct > > drm_i915_private *dev_priv) > > > > /* As early as possible, scrub existing GPU state before clobbering */ > > sanitize_gpu(dev_priv); > > + /* Wa_14017073508: mtl */ > > + mtl_media_idle(dev_priv->media_gt); > > > > return 0; > > > > err_uncore: > > + /* Wa_14017073508: mtl */ > > + mtl_media_idle(dev_priv->media_gt); > > intel_gmch_bar_teardown(dev_priv); > > > > return ret; > > @@ -781,6 +787,12 @@ int i915_driver_probe(struct pci_dev *pdev, const > > struct pci_device_id *ent) > > if (ret < 0) > > goto out_tiles_cleanup; > > > > + /* Wa_14017073508: mtl */ > > + if (i915->media_gt) { > > + atomic_set(&i915->media_gt->media_wakeref, 0); > > + mtl_media_busy(i915->media_gt); > > + } > > + > > ret = i915_driver_hw_probe(i915); > > if (ret < 0) > > goto out_cleanup_mmio; > > @@ -838,6 +850,8 @@ int i915_driver_probe(struct pci_dev *pdev, const > > struct pci_device_id *ent) > > i915_gem_drain_freed_objects(i915); > > i915_ggtt_driver_late_release(i915); > > out_cleanup_mmio: > > + /* Wa_14017073508: mtl */ > > + mtl_media_idle(i915->media_gt); > > i915_driver_mmio_release(i915); > > out_tiles_cleanup: > > intel_gt_release_all(i915); > > @@ -1063,6 +1077,9 @@ static int i915_drm_suspend(struct drm_device > > *dev) > > > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > > > + /* Wa_14017073508: mtl */ > > + mtl_media_busy(dev_priv->media_gt); > > + > > /* We do a lot of poking in a lot of registers, make sure they work > > * properly. */ > > intel_power_domains_disable(dev_priv); > > @@ -1097,6 +1114,9 @@ static int i915_drm_suspend(struct drm_device > > *dev) > > > > intel_dmc_suspend(dev_priv); > > > > + /* Wa_14017073508: mtl */ > > + mtl_media_busy(dev_priv->media_gt); > > + > > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > > > i915_gem_drain_freed_objects(dev_priv); > > @@ -1197,6 +1217,9 @@ static int i915_drm_resume(struct drm_device > > *dev) > > > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > > > + /* Wa_14017073508: mtl */ > > + mtl_media_busy(dev_priv->media_gt); > > + > > ret = i915_pcode_init(dev_priv); > > if (ret) > > return ret; > > @@ -1260,6 +1283,9 @@ static int i915_drm_resume(struct drm_device > > *dev) > > > > intel_gvt_resume(dev_priv); > > > > + /* Wa_14017073508: mtl */ > > + mtl_media_idle(dev_priv->media_gt); > > + > > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > > > return 0; > > @@ -1319,6 +1345,9 @@ static int i915_drm_resume_early(struct > > drm_device *dev) > > > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > > > + /* Wa_14017073508: mtl */ > > + mtl_media_busy(dev_priv->media_gt); > > + > > ret = vlv_resume_prepare(dev_priv, false); > > if (ret) > > drm_err(&dev_priv->drm, > > @@ -1333,6 +1362,9 @@ static int i915_drm_resume_early(struct > > drm_device *dev) > > > > intel_power_domains_resume(dev_priv); > > > > + /* Wa_14017073508: mtl */ > > + mtl_media_idle(dev_priv->media_gt); > > + > > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > > > return ret; > > -- > > 2.25.1 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow 2023-03-06 20:20 ` Rodrigo Vivi @ 2023-03-07 13:44 ` Nilawar, Badal 0 siblings, 0 replies; 9+ messages in thread From: Nilawar, Badal @ 2023-03-07 13:44 UTC (permalink / raw) To: Rodrigo Vivi, Gupta, Anshuman Cc: intel-gfx@lists.freedesktop.org, Roper, Matthew D On 07-03-2023 01:50, Rodrigo Vivi wrote: > On Mon, Mar 06, 2023 at 08:33:04AM +0000, Gupta, Anshuman wrote: >> >> >>> -----Original Message----- >>> From: Nilawar, Badal <badal.nilawar@intel.com> >>> Sent: Saturday, March 4, 2023 9:48 PM >>> To: intel-gfx@lists.freedesktop.org >>> Cc: Gupta, Anshuman <anshuman.gupta@intel.com>; Ewins, Jon >>> <jon.ewins@intel.com>; Belgaumkar, Vinay <vinay.belgaumkar@intel.com>; >>> Vivi, Rodrigo <rodrigo.vivi@intel.com> >>> Subject: [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume >>> flow >>> >>> During suspend resume flow it was seen that lots forcewakes are taken and >>> released for media. So to avoid HANG due to MC6 entry/exit while accessing >>> media applied Wa_14017073508 in suspend/resume flow. >> We need to fix such gaps in runtime PM as well, but that will make this WA dirty somewhat similar to other RC6 related WA on other platforms. >> I suggest to disable the MC6 rather on A step rather than having this form of WA. This WA is not needed on A step. >> @rodrigo and @matt what is you opinion here ? > > My opinion since day-0 is that we should simply disable MC6 on A0 parts > and move on with this feature only on B0. Since the beginning it was > pretty clear that this workaround would get out of control and become > the same as the PVC-RC6 one. Thanks for your opinion Rodrigo. I will disable MC6 and send the patch. Regards, Badal Nilawar > >> >> However some comment her to improve this patch. >> >>> >>> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com> >>> --- >>> drivers/gpu/drm/i915/gem/i915_gem_pm.c | 6 ++++- >>> drivers/gpu/drm/i915/gt/intel_gt_pm.c | 32 ++++++++++++++++-------- >>> drivers/gpu/drm/i915/gt/intel_gt_pm.h | 3 +++ >>> drivers/gpu/drm/i915/gt/intel_gt_types.h | 1 + >>> drivers/gpu/drm/i915/i915_driver.c | 32 ++++++++++++++++++++++++ >>> 5 files changed, 62 insertions(+), 12 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pm.c >>> b/drivers/gpu/drm/i915/gem/i915_gem_pm.c >>> index 0d812f4d787d..60deac41104d 100644 >>> --- a/drivers/gpu/drm/i915/gem/i915_gem_pm.c >>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_pm.c >>> @@ -160,8 +160,12 @@ void i915_gem_suspend_late(struct >>> drm_i915_private *i915) >>> * machine in an unusable condition. >>> */ >>> >>> - for_each_gt(gt, i915, i) >>> + for_each_gt(gt, i915, i) { >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_busy(gt); >> Let's add these busy/idle in intel_gt_suspend_late() >>> intel_gt_suspend_late(gt); >>> + mtl_media_idle(gt); >>> + } >>> >>> spin_lock_irqsave(&i915->mm.obj_lock, flags); >>> for (phase = phases; *phase; phase++) { diff --git >>> a/drivers/gpu/drm/i915/gt/intel_gt_pm.c >>> b/drivers/gpu/drm/i915/gt/intel_gt_pm.c >>> index cef3d6f5c34e..1f3bf1cf0421 100644 >>> --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c >>> +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c >>> @@ -26,24 +26,34 @@ >>> >>> #define I915_GT_SUSPEND_IDLE_TIMEOUT (HZ / 2) >>> >>> -static void mtl_media_busy(struct intel_gt *gt) >>> +void mtl_media_busy(struct intel_gt *gt) >>> { >>> /* Wa_14017073508: mtl */ >>> - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && >>> + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) >>> && >>> gt->type == GT_MEDIA) >> Let's have this in a separate patch , I believe that is already floated and ready to merge. >>> - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, >>> - PCODE_MBOX_GT_STATE_MEDIA_BUSY, >>> - >>> PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); >>> + if (!atomic_inc_not_zero(>->media_wakeref)) { >>> + drm_err(>->i915->drm, "Media busy\n"); >> This should not be Error message. >>> + snb_pcode_write_p(gt->uncore, >>> PCODE_MBOX_GT_STATE, >>> + >>> PCODE_MBOX_GT_STATE_MEDIA_BUSY, >>> + >>> PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); >>> + atomic_inc(>->media_wakeref); >>> + } >>> } >>> >>> -static void mtl_media_idle(struct intel_gt *gt) >>> +void mtl_media_idle(struct intel_gt *gt) >>> { >>> /* Wa_14017073508: mtl */ >>> - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && >>> - gt->type == GT_MEDIA) >>> - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, >>> - >>> PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, >>> - >>> PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); >>> + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) >>> && >>> + gt->type == GT_MEDIA) { >>> + WARN_ON(atomic_read(>->media_wakeref) <= 0); >>> + if (!atomic_add_unless(>->media_wakeref, -1, 1)) { >>> + drm_err(>->i915->drm, "Media idle\n"); >> Same here this can't be error message. >> Thanks, >> Anshuman Gupta. >>> + snb_pcode_write_p(gt->uncore, >>> PCODE_MBOX_GT_STATE, >>> + >>> PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, >>> + >>> PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); >>> + atomic_dec(>->media_wakeref); >>> + } >>> + } >>> } >>> >>> static void user_forcewake(struct intel_gt *gt, bool suspend) diff --git >>> a/drivers/gpu/drm/i915/gt/intel_gt_pm.h >>> b/drivers/gpu/drm/i915/gt/intel_gt_pm.h >>> index 6c9a46452364..43ffabf9babe 100644 >>> --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.h >>> +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.h >>> @@ -89,4 +89,7 @@ static inline bool is_mock_gt(const struct intel_gt *gt) >>> return I915_SELFTEST_ONLY(gt->awake == -ENODEV); } >>> >>> +void mtl_media_busy(struct intel_gt *gt); void mtl_media_idle(struct >>> +intel_gt *gt); >>> + >>> #endif /* INTEL_GT_PM_H */ >>> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h >>> b/drivers/gpu/drm/i915/gt/intel_gt_types.h >>> index f08c2556aa25..321ccfef4028 100644 >>> --- a/drivers/gpu/drm/i915/gt/intel_gt_types.h >>> +++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h >>> @@ -145,6 +145,7 @@ struct intel_gt { >>> >>> struct intel_wakeref wakeref; >>> atomic_t user_wakeref; >>> + atomic_t media_wakeref; >>> >>> struct list_head closed_vma; >>> spinlock_t closed_lock; /* guards the list of closed_vma */ diff --git >>> a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c >>> index 8bc76dede332..c7625ea28022 100644 >>> --- a/drivers/gpu/drm/i915/i915_driver.c >>> +++ b/drivers/gpu/drm/i915/i915_driver.c >>> @@ -327,6 +327,8 @@ static int i915_driver_mmio_probe(struct >>> drm_i915_private *dev_priv) >>> intel_gmch_bar_setup(dev_priv); >>> intel_device_info_runtime_init(dev_priv); >>> >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_busy(dev_priv->media_gt); >>> for_each_gt(gt, dev_priv, i) { >>> ret = intel_gt_init_mmio(gt); >>> if (ret) >>> @@ -335,10 +337,14 @@ static int i915_driver_mmio_probe(struct >>> drm_i915_private *dev_priv) >>> >>> /* As early as possible, scrub existing GPU state before clobbering */ >>> sanitize_gpu(dev_priv); >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_idle(dev_priv->media_gt); >>> >>> return 0; >>> >>> err_uncore: >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_idle(dev_priv->media_gt); >>> intel_gmch_bar_teardown(dev_priv); >>> >>> return ret; >>> @@ -781,6 +787,12 @@ int i915_driver_probe(struct pci_dev *pdev, const >>> struct pci_device_id *ent) >>> if (ret < 0) >>> goto out_tiles_cleanup; >>> >>> + /* Wa_14017073508: mtl */ >>> + if (i915->media_gt) { >>> + atomic_set(&i915->media_gt->media_wakeref, 0); >>> + mtl_media_busy(i915->media_gt); >>> + } >>> + >>> ret = i915_driver_hw_probe(i915); >>> if (ret < 0) >>> goto out_cleanup_mmio; >>> @@ -838,6 +850,8 @@ int i915_driver_probe(struct pci_dev *pdev, const >>> struct pci_device_id *ent) >>> i915_gem_drain_freed_objects(i915); >>> i915_ggtt_driver_late_release(i915); >>> out_cleanup_mmio: >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_idle(i915->media_gt); >>> i915_driver_mmio_release(i915); >>> out_tiles_cleanup: >>> intel_gt_release_all(i915); >>> @@ -1063,6 +1077,9 @@ static int i915_drm_suspend(struct drm_device >>> *dev) >>> >>> disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); >>> >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_busy(dev_priv->media_gt); >>> + >>> /* We do a lot of poking in a lot of registers, make sure they work >>> * properly. */ >>> intel_power_domains_disable(dev_priv); >>> @@ -1097,6 +1114,9 @@ static int i915_drm_suspend(struct drm_device >>> *dev) >>> >>> intel_dmc_suspend(dev_priv); >>> >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_busy(dev_priv->media_gt); >>> + >>> enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); >>> >>> i915_gem_drain_freed_objects(dev_priv); >>> @@ -1197,6 +1217,9 @@ static int i915_drm_resume(struct drm_device >>> *dev) >>> >>> disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); >>> >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_busy(dev_priv->media_gt); >>> + >>> ret = i915_pcode_init(dev_priv); >>> if (ret) >>> return ret; >>> @@ -1260,6 +1283,9 @@ static int i915_drm_resume(struct drm_device >>> *dev) >>> >>> intel_gvt_resume(dev_priv); >>> >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_idle(dev_priv->media_gt); >>> + >>> enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); >>> >>> return 0; >>> @@ -1319,6 +1345,9 @@ static int i915_drm_resume_early(struct >>> drm_device *dev) >>> >>> disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); >>> >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_busy(dev_priv->media_gt); >>> + >>> ret = vlv_resume_prepare(dev_priv, false); >>> if (ret) >>> drm_err(&dev_priv->drm, >>> @@ -1333,6 +1362,9 @@ static int i915_drm_resume_early(struct >>> drm_device *dev) >>> >>> intel_power_domains_resume(dev_priv); >>> >>> + /* Wa_14017073508: mtl */ >>> + mtl_media_idle(dev_priv->media_gt); >>> + >>> enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); >>> >>> return ret; >>> -- >>> 2.25.1 >> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow 2023-03-04 16:17 [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow Badal Nilawar ` (2 preceding siblings ...) 2023-03-06 8:33 ` [Intel-gfx] [PATCH] " Gupta, Anshuman @ 2023-03-06 13:34 ` Jani Nikula 2023-03-06 22:58 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork 4 siblings, 0 replies; 9+ messages in thread From: Jani Nikula @ 2023-03-06 13:34 UTC (permalink / raw) To: Badal Nilawar, intel-gfx; +Cc: rodrigo.vivi On Sat, 04 Mar 2023, Badal Nilawar <badal.nilawar@intel.com> wrote: > During suspend resume flow it was seen that lots forcewakes > are taken and released for media. So to avoid HANG due to MC6 > entry/exit while accessing media applied Wa_14017073508 in > suspend/resume flow. > > Signed-off-by: Badal Nilawar <badal.nilawar@intel.com> > --- > drivers/gpu/drm/i915/gem/i915_gem_pm.c | 6 ++++- > drivers/gpu/drm/i915/gt/intel_gt_pm.c | 32 ++++++++++++++++-------- > drivers/gpu/drm/i915/gt/intel_gt_pm.h | 3 +++ > drivers/gpu/drm/i915/gt/intel_gt_types.h | 1 + > drivers/gpu/drm/i915/i915_driver.c | 32 ++++++++++++++++++++++++ > 5 files changed, 62 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pm.c b/drivers/gpu/drm/i915/gem/i915_gem_pm.c > index 0d812f4d787d..60deac41104d 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_pm.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_pm.c > @@ -160,8 +160,12 @@ void i915_gem_suspend_late(struct drm_i915_private *i915) > * machine in an unusable condition. > */ > > - for_each_gt(gt, i915, i) > + for_each_gt(gt, i915, i) { > + /* Wa_14017073508: mtl */ > + mtl_media_busy(gt); > intel_gt_suspend_late(gt); > + mtl_media_idle(gt); > + } > > spin_lock_irqsave(&i915->mm.obj_lock, flags); > for (phase = phases; *phase; phase++) { > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c > index cef3d6f5c34e..1f3bf1cf0421 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c > @@ -26,24 +26,34 @@ > > #define I915_GT_SUSPEND_IDLE_TIMEOUT (HZ / 2) > > -static void mtl_media_busy(struct intel_gt *gt) > +void mtl_media_busy(struct intel_gt *gt) > { > /* Wa_14017073508: mtl */ > - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > gt->type == GT_MEDIA) > - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > - PCODE_MBOX_GT_STATE_MEDIA_BUSY, > - PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + if (!atomic_inc_not_zero(>->media_wakeref)) { > + drm_err(>->i915->drm, "Media busy\n"); > + snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > + PCODE_MBOX_GT_STATE_MEDIA_BUSY, > + PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + atomic_inc(>->media_wakeref); > + } > } > > -static void mtl_media_idle(struct intel_gt *gt) > +void mtl_media_idle(struct intel_gt *gt) > { > /* Wa_14017073508: mtl */ > - if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > - gt->type == GT_MEDIA) > - snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > - PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, > - PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) && > + gt->type == GT_MEDIA) { > + WARN_ON(atomic_read(>->media_wakeref) <= 0); > + if (!atomic_add_unless(>->media_wakeref, -1, 1)) { > + drm_err(>->i915->drm, "Media idle\n"); > + snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE, > + PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY, > + PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0); > + atomic_dec(>->media_wakeref); > + } > + } > } > > static void user_forcewake(struct intel_gt *gt, bool suspend) > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.h b/drivers/gpu/drm/i915/gt/intel_gt_pm.h > index 6c9a46452364..43ffabf9babe 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.h > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.h > @@ -89,4 +89,7 @@ static inline bool is_mock_gt(const struct intel_gt *gt) > return I915_SELFTEST_ONLY(gt->awake == -ENODEV); > } > > +void mtl_media_busy(struct intel_gt *gt); > +void mtl_media_idle(struct intel_gt *gt); > + > #endif /* INTEL_GT_PM_H */ > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h b/drivers/gpu/drm/i915/gt/intel_gt_types.h > index f08c2556aa25..321ccfef4028 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt_types.h > +++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h > @@ -145,6 +145,7 @@ struct intel_gt { > > struct intel_wakeref wakeref; > atomic_t user_wakeref; > + atomic_t media_wakeref; > > struct list_head closed_vma; > spinlock_t closed_lock; /* guards the list of closed_vma */ > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c > index 8bc76dede332..c7625ea28022 100644 > --- a/drivers/gpu/drm/i915/i915_driver.c > +++ b/drivers/gpu/drm/i915/i915_driver.c > @@ -327,6 +327,8 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv) > intel_gmch_bar_setup(dev_priv); > intel_device_info_runtime_init(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); i915_driver.c is one of the highest level files in the driver, and details like this just don't belong here, at all. BR, Jani. > for_each_gt(gt, dev_priv, i) { > ret = intel_gt_init_mmio(gt); > if (ret) > @@ -335,10 +337,14 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv) > > /* As early as possible, scrub existing GPU state before clobbering */ > sanitize_gpu(dev_priv); > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > > return 0; > > err_uncore: > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > intel_gmch_bar_teardown(dev_priv); > > return ret; > @@ -781,6 +787,12 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > if (ret < 0) > goto out_tiles_cleanup; > > + /* Wa_14017073508: mtl */ > + if (i915->media_gt) { > + atomic_set(&i915->media_gt->media_wakeref, 0); > + mtl_media_busy(i915->media_gt); > + } > + > ret = i915_driver_hw_probe(i915); > if (ret < 0) > goto out_cleanup_mmio; > @@ -838,6 +850,8 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > i915_gem_drain_freed_objects(i915); > i915_ggtt_driver_late_release(i915); > out_cleanup_mmio: > + /* Wa_14017073508: mtl */ > + mtl_media_idle(i915->media_gt); > i915_driver_mmio_release(i915); > out_tiles_cleanup: > intel_gt_release_all(i915); > @@ -1063,6 +1077,9 @@ static int i915_drm_suspend(struct drm_device *dev) > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > /* We do a lot of poking in a lot of registers, make sure they work > * properly. */ > intel_power_domains_disable(dev_priv); > @@ -1097,6 +1114,9 @@ static int i915_drm_suspend(struct drm_device *dev) > > intel_dmc_suspend(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > i915_gem_drain_freed_objects(dev_priv); > @@ -1197,6 +1217,9 @@ static int i915_drm_resume(struct drm_device *dev) > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > ret = i915_pcode_init(dev_priv); > if (ret) > return ret; > @@ -1260,6 +1283,9 @@ static int i915_drm_resume(struct drm_device *dev) > > intel_gvt_resume(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > + > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > return 0; > @@ -1319,6 +1345,9 @@ static int i915_drm_resume_early(struct drm_device *dev) > > disable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > + /* Wa_14017073508: mtl */ > + mtl_media_busy(dev_priv->media_gt); > + > ret = vlv_resume_prepare(dev_priv, false); > if (ret) > drm_err(&dev_priv->drm, > @@ -1333,6 +1362,9 @@ static int i915_drm_resume_early(struct drm_device *dev) > > intel_power_domains_resume(dev_priv); > > + /* Wa_14017073508: mtl */ > + mtl_media_idle(dev_priv->media_gt); > + > enable_rpm_wakeref_asserts(&dev_priv->runtime_pm); > > return ret; -- Jani Nikula, Intel Open Source Graphics Center ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow 2023-03-04 16:17 [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow Badal Nilawar ` (3 preceding siblings ...) 2023-03-06 13:34 ` Jani Nikula @ 2023-03-06 22:58 ` Patchwork 4 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2023-03-06 22:58 UTC (permalink / raw) To: Badal Nilawar; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 19702 bytes --] == Series Details == Series: drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow URL : https://patchwork.freedesktop.org/series/114657/ State : success == Summary == CI Bug Log - changes from CI_DRM_12810_full -> Patchwork_114657v1_full ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (9 -> 9) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in Patchwork_114657v1_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_fair@basic-none-rrul@rcs0: - shard-glk: NOTRUN -> [FAIL][1] ([i915#2842]) +1 similar issue [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk8/igt@gem_exec_fair@basic-none-rrul@rcs0.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-apl: NOTRUN -> [FAIL][2] ([i915#2842]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl3/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@gem_lmem_swapping@random-engines: - shard-glk: NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#4613]) +3 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk8/igt@gem_lmem_swapping@random-engines.html * igt@gem_lmem_swapping@smem-oom: - shard-apl: NOTRUN -> [SKIP][4] ([fdo#109271] / [i915#4613]) +5 similar issues [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl3/igt@gem_lmem_swapping@smem-oom.html * igt@gem_render_copy@x-tiled-to-vebox-yf-tiled: - shard-apl: NOTRUN -> [SKIP][5] ([fdo#109271]) +250 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl2/igt@gem_render_copy@x-tiled-to-vebox-yf-tiled.html * igt@gem_userptr_blits@dmabuf-sync: - shard-glk: NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#3323]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk7/igt@gem_userptr_blits@dmabuf-sync.html * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp: - shard-apl: NOTRUN -> [SKIP][7] ([fdo#109271] / [i915#1937]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl2/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp.html * igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc: - shard-apl: NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#3886]) +8 similar issues [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl1/igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc.html * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc: - shard-glk: NOTRUN -> [SKIP][9] ([fdo#109271] / [i915#3886]) +11 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk8/igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html * igt@kms_content_protection@atomic@pipe-a-dp-1: - shard-apl: NOTRUN -> [TIMEOUT][10] ([i915#7173]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl2/igt@kms_content_protection@atomic@pipe-a-dp-1.html * igt@kms_content_protection@uevent@pipe-a-dp-1: - shard-apl: NOTRUN -> [FAIL][11] ([i915#1339]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl2/igt@kms_content_protection@uevent@pipe-a-dp-1.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-glk: [PASS][12] -> [FAIL][13] ([i915#2346]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html - shard-apl: [PASS][14] -> [FAIL][15] ([i915#2346]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt: - shard-glk: NOTRUN -> [SKIP][16] ([fdo#109271]) +207 similar issues [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt.html * igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1: - shard-glk: NOTRUN -> [FAIL][17] ([i915#7862]) +1 similar issue [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk7/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html * igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-dp-1: - shard-apl: NOTRUN -> [FAIL][18] ([i915#4573]) +3 similar issues [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl2/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-dp-1.html * igt@kms_plane_alpha_blend@constant-alpha-max@pipe-c-hdmi-a-1: - shard-glk: NOTRUN -> [FAIL][19] ([i915#4573]) +3 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk5/igt@kms_plane_alpha_blend@constant-alpha-max@pipe-c-hdmi-a-1.html * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-1: - shard-snb: NOTRUN -> [SKIP][20] ([fdo#109271]) +7 similar issues [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-snb1/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-1.html * igt@kms_psr2_sf@overlay-plane-move-continuous-sf: - shard-apl: NOTRUN -> [SKIP][21] ([fdo#109271] / [i915#658]) +4 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl1/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-glk: NOTRUN -> [SKIP][22] ([fdo#109271] / [i915#658]) +2 similar issues [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk7/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_writeback@writeback-check-output: - shard-apl: NOTRUN -> [SKIP][23] ([fdo#109271] / [i915#2437]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl1/igt@kms_writeback@writeback-check-output.html * igt@kms_writeback@writeback-pixel-formats: - shard-glk: NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#2437]) +1 similar issue [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-glk5/igt@kms_writeback@writeback-pixel-formats.html #### Possible fixes #### * igt@gem_eio@hibernate: - {shard-dg1}: [ABORT][25] ([i915#7975]) -> [PASS][26] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-dg1-14/igt@gem_eio@hibernate.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-dg1-17/igt@gem_eio@hibernate.html * igt@gem_exec_reloc@basic-gtt-wc-noreloc: - {shard-rkl}: [SKIP][27] ([i915#3281]) -> [PASS][28] +2 similar issues [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-rkl-4/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html * igt@gem_pwrite_snooped: - {shard-rkl}: [SKIP][29] ([i915#3282]) -> [PASS][30] +1 similar issue [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-rkl-4/igt@gem_pwrite_snooped.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-rkl-5/igt@gem_pwrite_snooped.html * igt@gen9_exec_parse@basic-rejected: - {shard-rkl}: [SKIP][31] ([i915#2527]) -> [PASS][32] [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-rkl-4/igt@gen9_exec_parse@basic-rejected.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-rkl-5/igt@gen9_exec_parse@basic-rejected.html * igt@i915_pm_dc@dc9-dpms: - {shard-tglu}: [SKIP][33] ([i915#4281]) -> [PASS][34] [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-tglu-6/igt@i915_pm_dc@dc9-dpms.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-tglu-4/igt@i915_pm_dc@dc9-dpms.html * igt@i915_pm_rps@engine-order: - shard-apl: [FAIL][35] ([i915#6537]) -> [PASS][36] [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-apl3/igt@i915_pm_rps@engine-order.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-apl2/igt@i915_pm_rps@engine-order.html * igt@kms_cursor_legacy@cursor-vs-flip-varying-size: - {shard-tglu}: [SKIP][37] ([i915#1845]) -> [PASS][38] +1 similar issue [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-tglu-6/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-tglu-4/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html * igt@kms_frontbuffer_tracking@fbc-1p-indfb-fliptrack-mmap-gtt: - {shard-tglu}: [SKIP][39] ([i915#1849]) -> [PASS][40] +6 similar issues [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-indfb-fliptrack-mmap-gtt.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-tglu-4/igt@kms_frontbuffer_tracking@fbc-1p-indfb-fliptrack-mmap-gtt.html * igt@kms_universal_plane@universal-plane-pipe-d-functional: - {shard-tglu}: [SKIP][41] ([fdo#109274]) -> [PASS][42] +1 similar issue [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-tglu-6/igt@kms_universal_plane@universal-plane-pipe-d-functional.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-tglu-1/igt@kms_universal_plane@universal-plane-pipe-d-functional.html * igt@kms_vblank@pipe-a-query-idle-hang: - {shard-tglu}: [SKIP][43] ([i915#1845] / [i915#7651]) -> [PASS][44] +19 similar issues [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-tglu-6/igt@kms_vblank@pipe-a-query-idle-hang.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-tglu-4/igt@kms_vblank@pipe-a-query-idle-hang.html * igt@sysfs_heartbeat_interval@precise@vcs1: - {shard-dg1}: [FAIL][45] ([i915#1755]) -> [PASS][46] [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12810/shard-dg1-17/igt@sysfs_heartbeat_interval@precise@vcs1.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/shard-dg1-15/igt@sysfs_heartbeat_interval@precise@vcs1.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#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291 [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189 [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614 [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257 [i915#1339]: https://gitlab.freedesktop.org/drm/intel/issues/1339 [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397 [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755 [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839 [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849 [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937 [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190 [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346 [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433 [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434 [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437 [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527 [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575 [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587 [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672 [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280 [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284 [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842 [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856 [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282 [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297 [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318 [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323 [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359 [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361 [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458 [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539 [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546 [i915#3547]: https://gitlab.freedesktop.org/drm/intel/issues/3547 [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555 [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637 [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638 [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689 [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708 [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742 [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840 [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886 [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070 [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077 [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083 [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098 [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103 [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212 [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213 [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215 [i915#426]: https://gitlab.freedesktop.org/drm/intel/issues/426 [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270 [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281 [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433 [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349 [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525 [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538 [i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771 [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812 [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833 [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852 [i915#4879]: https://gitlab.freedesktop.org/drm/intel/issues/4879 [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881 [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176 [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235 [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286 [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289 [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325 [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533 [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439 [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461 [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563 [i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723 [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095 [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230 [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247 [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248 [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268 [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433 [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524 [i915#6537]: https://gitlab.freedesktop.org/drm/intel/issues/6537 [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658 [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621 [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768 [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944 [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953 [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116 [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118 [i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173 [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561 [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651 [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697 [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#7862]: https://gitlab.freedesktop.org/drm/intel/issues/7862 [i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949 [i915#7957]: https://gitlab.freedesktop.org/drm/intel/issues/7957 [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975 [i915#8152]: https://gitlab.freedesktop.org/drm/intel/issues/8152 [i915#8154]: https://gitlab.freedesktop.org/drm/intel/issues/8154 [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228 Build changes ------------- * Linux: CI_DRM_12810 -> Patchwork_114657v1 CI-20190529: 20190529 CI_DRM_12810: 030c24d089b9c566f8cf9e15f49fc4e298396740 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_7180: b6b1ceb4fc4d8f83a9540e4628a6c2648514bb19 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_114657v1: 030c24d089b9c566f8cf9e15f49fc4e298396740 @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114657v1/index.html [-- Attachment #2: Type: text/html, Size: 15934 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow
@ 2023-03-05 22:37 kernel test robot
0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2023-03-05 22:37 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall, Elena Reshetova
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20230304161749.1420224-1-badal.nilawar@intel.com>
References: <20230304161749.1420224-1-badal.nilawar@intel.com>
TO: Badal Nilawar <badal.nilawar@intel.com>
TO: intel-gfx@lists.freedesktop.org
CC: rodrigo.vivi@intel.com
Hi Badal,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on drm-tip/drm-tip]
url: https://github.com/intel-lab-lkp/linux/commits/Badal-Nilawar/drm-i915-mtl-Extend-Wa_14017073508-in-suspend-resume-flow/20230305-001604
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link: https://lore.kernel.org/r/20230304161749.1420224-1-badal.nilawar%40intel.com
patch subject: [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow
:::::: branch date: 30 hours ago
:::::: commit date: 30 hours ago
config: x86_64-randconfig-c002 (https://download.01.org/0day-ci/archive/20230306/202303060604.JmbyHTX7-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Link: https://lore.kernel.org/r/202303060604.JmbyHTX7-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/gt/intel_gt_pm.c:49:50-51: atomic_add_unless
vim +49 drivers/gpu/drm/i915/gt/intel_gt_pm.c
8f70f1ec587da0 Badal Nilawar 2022-11-04 42
e49da7f17006c4 Badal Nilawar 2023-03-04 43 void mtl_media_idle(struct intel_gt *gt)
8f70f1ec587da0 Badal Nilawar 2022-11-04 44 {
8f70f1ec587da0 Badal Nilawar 2022-11-04 45 /* Wa_14017073508: mtl */
e49da7f17006c4 Badal Nilawar 2023-03-04 46 if (gt && IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
e49da7f17006c4 Badal Nilawar 2023-03-04 47 gt->type == GT_MEDIA) {
e49da7f17006c4 Badal Nilawar 2023-03-04 48 WARN_ON(atomic_read(>->media_wakeref) <= 0);
e49da7f17006c4 Badal Nilawar 2023-03-04 @49 if (!atomic_add_unless(>->media_wakeref, -1, 1)) {
e49da7f17006c4 Badal Nilawar 2023-03-04 50 drm_err(>->i915->drm, "Media idle\n");
8f70f1ec587da0 Badal Nilawar 2022-11-04 51 snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
8f70f1ec587da0 Badal Nilawar 2022-11-04 52 PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY,
8f70f1ec587da0 Badal Nilawar 2022-11-04 53 PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
e49da7f17006c4 Badal Nilawar 2023-03-04 54 atomic_dec(>->media_wakeref);
e49da7f17006c4 Badal Nilawar 2023-03-04 55 }
e49da7f17006c4 Badal Nilawar 2023-03-04 56 }
8f70f1ec587da0 Badal Nilawar 2022-11-04 57 }
8f70f1ec587da0 Badal Nilawar 2022-11-04 58
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 9+ messages in threadend of thread, other threads:[~2023-03-07 13:44 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-03-04 16:17 [Intel-gfx] [PATCH] drm/i915/mtl: Extend Wa_14017073508 in suspend/resume flow Badal Nilawar 2023-03-04 16:30 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork 2023-03-04 16:43 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2023-03-06 8:33 ` [Intel-gfx] [PATCH] " Gupta, Anshuman 2023-03-06 20:20 ` Rodrigo Vivi 2023-03-07 13:44 ` Nilawar, Badal 2023-03-06 13:34 ` Jani Nikula 2023-03-06 22:58 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork -- strict thread matches above, loose matches on Subject: below -- 2023-03-05 22:37 [Intel-gfx] [PATCH] " kernel test robot
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.