aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/gvt/cmd_parser.c2
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c3
-rw-r--r--drivers/gpu/drm/i915/i915_gem_userptr.c6
-rw-r--r--drivers/gpu/drm/i915/intel_breadcrumbs.c1
-rw-r--r--drivers/gpu/drm/i915/intel_uncore.c13
-rw-r--r--drivers/gpu/drm/i915/intel_uncore.h1
6 files changed, 23 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c
index 701a3c6f1669..85d4c57870fb 100644
--- a/drivers/gpu/drm/i915/gvt/cmd_parser.c
+++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c
@@ -1628,7 +1628,7 @@ static int perform_bb_shadow(struct parser_exec_state *s)
1628 struct intel_shadow_bb_entry *entry_obj; 1628 struct intel_shadow_bb_entry *entry_obj;
1629 struct intel_vgpu *vgpu = s->vgpu; 1629 struct intel_vgpu *vgpu = s->vgpu;
1630 unsigned long gma = 0; 1630 unsigned long gma = 0;
1631 uint32_t bb_size; 1631 int bb_size;
1632 void *dst = NULL; 1632 void *dst = NULL;
1633 int ret = 0; 1633 int ret = 0;
1634 1634
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 3db5851756f0..7d9b07df32fa 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1714,6 +1714,7 @@ static int i915_drm_resume(struct drm_device *dev)
1714 intel_guc_resume(dev_priv); 1714 intel_guc_resume(dev_priv);
1715 1715
1716 intel_modeset_init_hw(dev); 1716 intel_modeset_init_hw(dev);
1717 intel_init_clock_gating(dev_priv);
1717 1718
1718 spin_lock_irq(&dev_priv->irq_lock); 1719 spin_lock_irq(&dev_priv->irq_lock);
1719 if (dev_priv->display.hpd_irq_setup) 1720 if (dev_priv->display.hpd_irq_setup)
@@ -2618,6 +2619,8 @@ static int intel_runtime_resume(struct device *kdev)
2618 ret = vlv_resume_prepare(dev_priv, true); 2619 ret = vlv_resume_prepare(dev_priv, true);
2619 } 2620 }
2620 2621
2622 intel_uncore_runtime_resume(dev_priv);
2623
2621 /* 2624 /*
2622 * No point of rolling back things in case of an error, as the best 2625 * No point of rolling back things in case of an error, as the best
2623 * we can do is to hope that things will still work (and disable RPM). 2626 * we can do is to hope that things will still work (and disable RPM).
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
index e26b23171b56..ccde12d9e5f5 100644
--- a/drivers/gpu/drm/i915/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
@@ -172,7 +172,9 @@ i915_mmu_notifier_create(struct mm_struct *mm)
172 spin_lock_init(&mn->lock); 172 spin_lock_init(&mn->lock);
173 mn->mn.ops = &i915_gem_userptr_notifier; 173 mn->mn.ops = &i915_gem_userptr_notifier;
174 mn->objects = RB_ROOT_CACHED; 174 mn->objects = RB_ROOT_CACHED;
175 mn->wq = alloc_workqueue("i915-userptr-release", WQ_UNBOUND, 0); 175 mn->wq = alloc_workqueue("i915-userptr-release",
176 WQ_UNBOUND | WQ_MEM_RECLAIM,
177 0);
176 if (mn->wq == NULL) { 178 if (mn->wq == NULL) {
177 kfree(mn); 179 kfree(mn);
178 return ERR_PTR(-ENOMEM); 180 return ERR_PTR(-ENOMEM);
@@ -827,7 +829,7 @@ int i915_gem_init_userptr(struct drm_i915_private *dev_priv)
827 829
828 dev_priv->mm.userptr_wq = 830 dev_priv->mm.userptr_wq =
829 alloc_workqueue("i915-userptr-acquire", 831 alloc_workqueue("i915-userptr-acquire",
830 WQ_HIGHPRI | WQ_MEM_RECLAIM, 832 WQ_HIGHPRI | WQ_UNBOUND,
831 0); 833 0);
832 if (!dev_priv->mm.userptr_wq) 834 if (!dev_priv->mm.userptr_wq)
833 return -ENOMEM; 835 return -ENOMEM;
diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c b/drivers/gpu/drm/i915/intel_breadcrumbs.c
index 48e1ba01ccf8..5f8b9f1f40f1 100644
--- a/drivers/gpu/drm/i915/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c
@@ -517,6 +517,7 @@ static void __intel_engine_remove_wait(struct intel_engine_cs *engine,
517 517
518 GEM_BUG_ON(RB_EMPTY_NODE(&wait->node)); 518 GEM_BUG_ON(RB_EMPTY_NODE(&wait->node));
519 rb_erase(&wait->node, &b->waiters); 519 rb_erase(&wait->node, &b->waiters);
520 RB_CLEAR_NODE(&wait->node);
520 521
521out: 522out:
522 GEM_BUG_ON(b->irq_wait == wait); 523 GEM_BUG_ON(b->irq_wait == wait);
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 20e3c65c0999..8c2ce81f01c2 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -434,6 +434,12 @@ void intel_uncore_resume_early(struct drm_i915_private *dev_priv)
434 i915_check_and_clear_faults(dev_priv); 434 i915_check_and_clear_faults(dev_priv);
435} 435}
436 436
437void intel_uncore_runtime_resume(struct drm_i915_private *dev_priv)
438{
439 iosf_mbi_register_pmic_bus_access_notifier(
440 &dev_priv->uncore.pmic_bus_access_nb);
441}
442
437void intel_uncore_sanitize(struct drm_i915_private *dev_priv) 443void intel_uncore_sanitize(struct drm_i915_private *dev_priv)
438{ 444{
439 i915_modparams.enable_rc6 = 445 i915_modparams.enable_rc6 =
@@ -1240,8 +1246,15 @@ static int i915_pmic_bus_access_notifier(struct notifier_block *nb,
1240 * bus, which will be busy after this notification, leading to: 1246 * bus, which will be busy after this notification, leading to:
1241 * "render: timed out waiting for forcewake ack request." 1247 * "render: timed out waiting for forcewake ack request."
1242 * errors. 1248 * errors.
1249 *
1250 * The notifier is unregistered during intel_runtime_suspend(),
1251 * so it's ok to access the HW here without holding a RPM
1252 * wake reference -> disable wakeref asserts for the time of
1253 * the access.
1243 */ 1254 */
1255 disable_rpm_wakeref_asserts(dev_priv);
1244 intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL); 1256 intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
1257 enable_rpm_wakeref_asserts(dev_priv);
1245 break; 1258 break;
1246 case MBI_PMIC_BUS_ACCESS_END: 1259 case MBI_PMIC_BUS_ACCESS_END:
1247 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); 1260 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
diff --git a/drivers/gpu/drm/i915/intel_uncore.h b/drivers/gpu/drm/i915/intel_uncore.h
index 582771251b57..9ce079b5dd0d 100644
--- a/drivers/gpu/drm/i915/intel_uncore.h
+++ b/drivers/gpu/drm/i915/intel_uncore.h
@@ -134,6 +134,7 @@ bool intel_uncore_arm_unclaimed_mmio_detection(struct drm_i915_private *dev_priv
134void intel_uncore_fini(struct drm_i915_private *dev_priv); 134void intel_uncore_fini(struct drm_i915_private *dev_priv);
135void intel_uncore_suspend(struct drm_i915_private *dev_priv); 135void intel_uncore_suspend(struct drm_i915_private *dev_priv);
136void intel_uncore_resume_early(struct drm_i915_private *dev_priv); 136void intel_uncore_resume_early(struct drm_i915_private *dev_priv);
137void intel_uncore_runtime_resume(struct drm_i915_private *dev_priv);
137 138
138u64 intel_uncore_edram_size(struct drm_i915_private *dev_priv); 139u64 intel_uncore_edram_size(struct drm_i915_private *dev_priv);
139void assert_forcewakes_inactive(struct drm_i915_private *dev_priv); 140void assert_forcewakes_inactive(struct drm_i915_private *dev_priv);