aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/gvt/aperture_gm.c8
-rw-r--r--drivers/gpu/drm/i915/gvt/gvt.h2
-rw-r--r--drivers/gpu/drm/i915/gvt/sched_policy.c2
-rw-r--r--drivers/gpu/drm/i915/gvt/scheduler.c4
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c54
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h2
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c20
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_fence_reg.c2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.c8
-rw-r--r--drivers/gpu/drm/i915/i915_gem_shrinker.c10
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c2
-rw-r--r--drivers/gpu/drm/i915/i915_perf.c4
-rw-r--r--drivers/gpu/drm/i915/i915_pmu.c6
-rw-r--r--drivers/gpu/drm/i915/i915_sysfs.c12
-rw-r--r--drivers/gpu/drm/i915/intel_display.c2
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h15
-rw-r--r--drivers/gpu/drm/i915/intel_engine_cs.c4
-rw-r--r--drivers/gpu/drm/i915/intel_fbdev.c4
-rw-r--r--drivers/gpu/drm/i915/intel_guc_log.c6
-rw-r--r--drivers/gpu/drm/i915/intel_hotplug.c2
-rw-r--r--drivers/gpu/drm/i915/intel_huc.c2
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c2
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c97
-rw-r--r--drivers/gpu/drm/i915/intel_uncore.c2
-rw-r--r--drivers/gpu/drm/i915/selftests/huge_pages.c2
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem.c10
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem_coherency.c2
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem_context.c10
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem_evict.c2
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem_gtt.c4
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem_object.c6
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_request.c8
-rw-r--r--drivers/gpu/drm/i915/selftests/intel_guc.c4
-rw-r--r--drivers/gpu/drm/i915/selftests/intel_hangcheck.c6
-rw-r--r--drivers/gpu/drm/i915/selftests/intel_lrc.c10
-rw-r--r--drivers/gpu/drm/i915/selftests/intel_workarounds.c10
37 files changed, 209 insertions, 139 deletions
diff --git a/drivers/gpu/drm/i915/gvt/aperture_gm.c b/drivers/gpu/drm/i915/gvt/aperture_gm.c
index 359d37d5c958..1fa2f65c3cd1 100644
--- a/drivers/gpu/drm/i915/gvt/aperture_gm.c
+++ b/drivers/gpu/drm/i915/gvt/aperture_gm.c
@@ -180,7 +180,7 @@ static void free_vgpu_fence(struct intel_vgpu *vgpu)
180 } 180 }
181 mutex_unlock(&dev_priv->drm.struct_mutex); 181 mutex_unlock(&dev_priv->drm.struct_mutex);
182 182
183 intel_runtime_pm_put(dev_priv); 183 intel_runtime_pm_put_unchecked(dev_priv);
184} 184}
185 185
186static int alloc_vgpu_fence(struct intel_vgpu *vgpu) 186static int alloc_vgpu_fence(struct intel_vgpu *vgpu)
@@ -206,7 +206,7 @@ static int alloc_vgpu_fence(struct intel_vgpu *vgpu)
206 _clear_vgpu_fence(vgpu); 206 _clear_vgpu_fence(vgpu);
207 207
208 mutex_unlock(&dev_priv->drm.struct_mutex); 208 mutex_unlock(&dev_priv->drm.struct_mutex);
209 intel_runtime_pm_put(dev_priv); 209 intel_runtime_pm_put_unchecked(dev_priv);
210 return 0; 210 return 0;
211out_free_fence: 211out_free_fence:
212 gvt_vgpu_err("Failed to alloc fences\n"); 212 gvt_vgpu_err("Failed to alloc fences\n");
@@ -219,7 +219,7 @@ out_free_fence:
219 vgpu->fence.regs[i] = NULL; 219 vgpu->fence.regs[i] = NULL;
220 } 220 }
221 mutex_unlock(&dev_priv->drm.struct_mutex); 221 mutex_unlock(&dev_priv->drm.struct_mutex);
222 intel_runtime_pm_put(dev_priv); 222 intel_runtime_pm_put_unchecked(dev_priv);
223 return -ENOSPC; 223 return -ENOSPC;
224} 224}
225 225
@@ -317,7 +317,7 @@ void intel_vgpu_reset_resource(struct intel_vgpu *vgpu)
317 317
318 intel_runtime_pm_get(dev_priv); 318 intel_runtime_pm_get(dev_priv);
319 _clear_vgpu_fence(vgpu); 319 _clear_vgpu_fence(vgpu);
320 intel_runtime_pm_put(dev_priv); 320 intel_runtime_pm_put_unchecked(dev_priv);
321} 321}
322 322
323/** 323/**
diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h
index b4ab1dad0143..435c746c3f73 100644
--- a/drivers/gpu/drm/i915/gvt/gvt.h
+++ b/drivers/gpu/drm/i915/gvt/gvt.h
@@ -597,7 +597,7 @@ static inline void mmio_hw_access_pre(struct drm_i915_private *dev_priv)
597 597
598static inline void mmio_hw_access_post(struct drm_i915_private *dev_priv) 598static inline void mmio_hw_access_post(struct drm_i915_private *dev_priv)
599{ 599{
600 intel_runtime_pm_put(dev_priv); 600 intel_runtime_pm_put_unchecked(dev_priv);
601} 601}
602 602
603/** 603/**
diff --git a/drivers/gpu/drm/i915/gvt/sched_policy.c b/drivers/gpu/drm/i915/gvt/sched_policy.c
index c32e7d5e8629..f04b3b965bfc 100644
--- a/drivers/gpu/drm/i915/gvt/sched_policy.c
+++ b/drivers/gpu/drm/i915/gvt/sched_policy.c
@@ -474,6 +474,6 @@ void intel_vgpu_stop_schedule(struct intel_vgpu *vgpu)
474 } 474 }
475 } 475 }
476 spin_unlock_bh(&scheduler->mmio_context_lock); 476 spin_unlock_bh(&scheduler->mmio_context_lock);
477 intel_runtime_pm_put(dev_priv); 477 intel_runtime_pm_put_unchecked(dev_priv);
478 mutex_unlock(&vgpu->gvt->sched_lock); 478 mutex_unlock(&vgpu->gvt->sched_lock);
479} 479}
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
index 1ad8c5e1455d..3816dcae2185 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -997,7 +997,7 @@ complete:
997 intel_uncore_forcewake_put(gvt->dev_priv, 997 intel_uncore_forcewake_put(gvt->dev_priv,
998 FORCEWAKE_ALL); 998 FORCEWAKE_ALL);
999 999
1000 intel_runtime_pm_put(gvt->dev_priv); 1000 intel_runtime_pm_put_unchecked(gvt->dev_priv);
1001 if (ret && (vgpu_is_vm_unhealthy(ret))) 1001 if (ret && (vgpu_is_vm_unhealthy(ret)))
1002 enter_failsafe_mode(vgpu, GVT_FAILSAFE_GUEST_ERR); 1002 enter_failsafe_mode(vgpu, GVT_FAILSAFE_GUEST_ERR);
1003 } 1003 }
@@ -1451,7 +1451,7 @@ intel_vgpu_create_workload(struct intel_vgpu *vgpu, int ring_id,
1451 mutex_lock(&dev_priv->drm.struct_mutex); 1451 mutex_lock(&dev_priv->drm.struct_mutex);
1452 ret = intel_gvt_scan_and_shadow_workload(workload); 1452 ret = intel_gvt_scan_and_shadow_workload(workload);
1453 mutex_unlock(&dev_priv->drm.struct_mutex); 1453 mutex_unlock(&dev_priv->drm.struct_mutex);
1454 intel_runtime_pm_put(dev_priv); 1454 intel_runtime_pm_put_unchecked(dev_priv);
1455 } 1455 }
1456 1456
1457 if (ret && (vgpu_is_vm_unhealthy(ret))) { 1457 if (ret && (vgpu_is_vm_unhealthy(ret))) {
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 050cf8abd426..6818079669a7 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -877,7 +877,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
877 } 877 }
878 } 878 }
879 879
880 intel_runtime_pm_put(dev_priv); 880 intel_runtime_pm_put_unchecked(dev_priv);
881 881
882 return 0; 882 return 0;
883} 883}
@@ -953,7 +953,7 @@ static int i915_gpu_info_open(struct inode *inode, struct file *file)
953 953
954 intel_runtime_pm_get(i915); 954 intel_runtime_pm_get(i915);
955 gpu = i915_capture_gpu_state(i915); 955 gpu = i915_capture_gpu_state(i915);
956 intel_runtime_pm_put(i915); 956 intel_runtime_pm_put_unchecked(i915);
957 if (IS_ERR(gpu)) 957 if (IS_ERR(gpu))
958 return PTR_ERR(gpu); 958 return PTR_ERR(gpu);
959 959
@@ -1226,7 +1226,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
1226 seq_printf(m, "Max CD clock frequency: %d kHz\n", dev_priv->max_cdclk_freq); 1226 seq_printf(m, "Max CD clock frequency: %d kHz\n", dev_priv->max_cdclk_freq);
1227 seq_printf(m, "Max pixel clock frequency: %d kHz\n", dev_priv->max_dotclk_freq); 1227 seq_printf(m, "Max pixel clock frequency: %d kHz\n", dev_priv->max_dotclk_freq);
1228 1228
1229 intel_runtime_pm_put(dev_priv); 1229 intel_runtime_pm_put_unchecked(dev_priv);
1230 return ret; 1230 return ret;
1231} 1231}
1232 1232
@@ -1292,7 +1292,7 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
1292 1292
1293 intel_engine_get_instdone(dev_priv->engine[RCS], &instdone); 1293 intel_engine_get_instdone(dev_priv->engine[RCS], &instdone);
1294 1294
1295 intel_runtime_pm_put(dev_priv); 1295 intel_runtime_pm_put_unchecked(dev_priv);
1296 1296
1297 if (timer_pending(&dev_priv->gpu_error.hangcheck_work.timer)) 1297 if (timer_pending(&dev_priv->gpu_error.hangcheck_work.timer))
1298 seq_printf(m, "Hangcheck active, timer fires in %dms\n", 1298 seq_printf(m, "Hangcheck active, timer fires in %dms\n",
@@ -1579,7 +1579,7 @@ static int i915_drpc_info(struct seq_file *m, void *unused)
1579 else 1579 else
1580 err = ironlake_drpc_info(m); 1580 err = ironlake_drpc_info(m);
1581 1581
1582 intel_runtime_pm_put(dev_priv); 1582 intel_runtime_pm_put_unchecked(dev_priv);
1583 1583
1584 return err; 1584 return err;
1585} 1585}
@@ -1632,7 +1632,7 @@ static int i915_fbc_status(struct seq_file *m, void *unused)
1632 } 1632 }
1633 1633
1634 mutex_unlock(&fbc->lock); 1634 mutex_unlock(&fbc->lock);
1635 intel_runtime_pm_put(dev_priv); 1635 intel_runtime_pm_put_unchecked(dev_priv);
1636 1636
1637 return 0; 1637 return 0;
1638} 1638}
@@ -1695,7 +1695,7 @@ static int i915_ips_status(struct seq_file *m, void *unused)
1695 seq_puts(m, "Currently: disabled\n"); 1695 seq_puts(m, "Currently: disabled\n");
1696 } 1696 }
1697 1697
1698 intel_runtime_pm_put(dev_priv); 1698 intel_runtime_pm_put_unchecked(dev_priv);
1699 1699
1700 return 0; 1700 return 0;
1701} 1701}
@@ -1723,7 +1723,7 @@ static int i915_sr_status(struct seq_file *m, void *unused)
1723 sr_enabled = I915_READ(FW_BLC_SELF_VLV) & FW_CSPWRDWNEN; 1723 sr_enabled = I915_READ(FW_BLC_SELF_VLV) & FW_CSPWRDWNEN;
1724 1724
1725 intel_display_power_put(dev_priv, POWER_DOMAIN_INIT); 1725 intel_display_power_put(dev_priv, POWER_DOMAIN_INIT);
1726 intel_runtime_pm_put(dev_priv); 1726 intel_runtime_pm_put_unchecked(dev_priv);
1727 1727
1728 seq_printf(m, "self-refresh: %s\n", enableddisabled(sr_enabled)); 1728 seq_printf(m, "self-refresh: %s\n", enableddisabled(sr_enabled));
1729 1729
@@ -1756,7 +1756,7 @@ static int i915_emon_status(struct seq_file *m, void *unused)
1756 seq_printf(m, "GFX power: %ld\n", gfx); 1756 seq_printf(m, "GFX power: %ld\n", gfx);
1757 seq_printf(m, "Total power: %ld\n", chipset + gfx); 1757 seq_printf(m, "Total power: %ld\n", chipset + gfx);
1758 1758
1759 intel_runtime_pm_put(dev_priv); 1759 intel_runtime_pm_put_unchecked(dev_priv);
1760 1760
1761 return 0; 1761 return 0;
1762} 1762}
@@ -1805,7 +1805,7 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused)
1805 mutex_unlock(&dev_priv->pcu_lock); 1805 mutex_unlock(&dev_priv->pcu_lock);
1806 1806
1807out: 1807out:
1808 intel_runtime_pm_put(dev_priv); 1808 intel_runtime_pm_put_unchecked(dev_priv);
1809 return ret; 1809 return ret;
1810} 1810}
1811 1811
@@ -2017,7 +2017,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data)
2017 if (dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) 2017 if (dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES)
2018 seq_puts(m, "L-shaped memory detected\n"); 2018 seq_puts(m, "L-shaped memory detected\n");
2019 2019
2020 intel_runtime_pm_put(dev_priv); 2020 intel_runtime_pm_put_unchecked(dev_priv);
2021 2021
2022 return 0; 2022 return 0;
2023} 2023}
@@ -2067,7 +2067,7 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
2067 act_freq = intel_get_cagf(dev_priv, 2067 act_freq = intel_get_cagf(dev_priv,
2068 I915_READ(GEN6_RPSTAT1)); 2068 I915_READ(GEN6_RPSTAT1));
2069 } 2069 }
2070 intel_runtime_pm_put(dev_priv); 2070 intel_runtime_pm_put_unchecked(dev_priv);
2071 } 2071 }
2072 2072
2073 seq_printf(m, "RPS enabled? %d\n", rps->enabled); 2073 seq_printf(m, "RPS enabled? %d\n", rps->enabled);
@@ -2160,7 +2160,7 @@ static int i915_huc_load_status_info(struct seq_file *m, void *data)
2160 2160
2161 intel_runtime_pm_get(dev_priv); 2161 intel_runtime_pm_get(dev_priv);
2162 seq_printf(m, "\nHuC status 0x%08x:\n", I915_READ(HUC_STATUS2)); 2162 seq_printf(m, "\nHuC status 0x%08x:\n", I915_READ(HUC_STATUS2));
2163 intel_runtime_pm_put(dev_priv); 2163 intel_runtime_pm_put_unchecked(dev_priv);
2164 2164
2165 return 0; 2165 return 0;
2166} 2166}
@@ -2192,7 +2192,7 @@ static int i915_guc_load_status_info(struct seq_file *m, void *data)
2192 for (i = 0; i < 16; i++) 2192 for (i = 0; i < 16; i++)
2193 seq_printf(m, "\t%2d: \t0x%x\n", i, I915_READ(SOFT_SCRATCH(i))); 2193 seq_printf(m, "\t%2d: \t0x%x\n", i, I915_READ(SOFT_SCRATCH(i)));
2194 2194
2195 intel_runtime_pm_put(dev_priv); 2195 intel_runtime_pm_put_unchecked(dev_priv);
2196 2196
2197 return 0; 2197 return 0;
2198} 2198}
@@ -2601,7 +2601,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)
2601 dev_priv->psr.last_exit); 2601 dev_priv->psr.last_exit);
2602 } 2602 }
2603 2603
2604 intel_runtime_pm_put(dev_priv); 2604 intel_runtime_pm_put_unchecked(dev_priv);
2605 return 0; 2605 return 0;
2606} 2606}
2607 2607
@@ -2632,7 +2632,7 @@ retry:
2632 drm_modeset_drop_locks(&ctx); 2632 drm_modeset_drop_locks(&ctx);
2633 drm_modeset_acquire_fini(&ctx); 2633 drm_modeset_acquire_fini(&ctx);
2634 2634
2635 intel_runtime_pm_put(dev_priv); 2635 intel_runtime_pm_put_unchecked(dev_priv);
2636 2636
2637 return ret; 2637 return ret;
2638} 2638}
@@ -2665,7 +2665,7 @@ static int i915_energy_uJ(struct seq_file *m, void *data)
2665 intel_runtime_pm_get(dev_priv); 2665 intel_runtime_pm_get(dev_priv);
2666 2666
2667 if (rdmsrl_safe(MSR_RAPL_POWER_UNIT, &power)) { 2667 if (rdmsrl_safe(MSR_RAPL_POWER_UNIT, &power)) {
2668 intel_runtime_pm_put(dev_priv); 2668 intel_runtime_pm_put_unchecked(dev_priv);
2669 return -ENODEV; 2669 return -ENODEV;
2670 } 2670 }
2671 2671
@@ -2673,7 +2673,7 @@ static int i915_energy_uJ(struct seq_file *m, void *data)
2673 power = I915_READ(MCH_SECP_NRG_STTS); 2673 power = I915_READ(MCH_SECP_NRG_STTS);
2674 power = (1000000 * power) >> units; /* convert to uJ */ 2674 power = (1000000 * power) >> units; /* convert to uJ */
2675 2675
2676 intel_runtime_pm_put(dev_priv); 2676 intel_runtime_pm_put_unchecked(dev_priv);
2677 2677
2678 seq_printf(m, "%llu", power); 2678 seq_printf(m, "%llu", power);
2679 2679
@@ -2775,7 +2775,7 @@ out:
2775 seq_printf(m, "ssp base: 0x%08x\n", I915_READ(CSR_SSP_BASE)); 2775 seq_printf(m, "ssp base: 0x%08x\n", I915_READ(CSR_SSP_BASE));
2776 seq_printf(m, "htp: 0x%08x\n", I915_READ(CSR_HTP_SKL)); 2776 seq_printf(m, "htp: 0x%08x\n", I915_READ(CSR_HTP_SKL));
2777 2777
2778 intel_runtime_pm_put(dev_priv); 2778 intel_runtime_pm_put_unchecked(dev_priv);
2779 2779
2780 return 0; 2780 return 0;
2781} 2781}
@@ -3114,7 +3114,7 @@ static int i915_display_info(struct seq_file *m, void *unused)
3114 drm_connector_list_iter_end(&conn_iter); 3114 drm_connector_list_iter_end(&conn_iter);
3115 mutex_unlock(&dev->mode_config.mutex); 3115 mutex_unlock(&dev->mode_config.mutex);
3116 3116
3117 intel_runtime_pm_put(dev_priv); 3117 intel_runtime_pm_put_unchecked(dev_priv);
3118 3118
3119 return 0; 3119 return 0;
3120} 3120}
@@ -3139,7 +3139,7 @@ static int i915_engine_info(struct seq_file *m, void *unused)
3139 for_each_engine(engine, dev_priv, id) 3139 for_each_engine(engine, dev_priv, id)
3140 intel_engine_dump(engine, &p, "%s\n", engine->name); 3140 intel_engine_dump(engine, &p, "%s\n", engine->name);
3141 3141
3142 intel_runtime_pm_put(dev_priv); 3142 intel_runtime_pm_put_unchecked(dev_priv);
3143 3143
3144 return 0; 3144 return 0;
3145} 3145}
@@ -3265,7 +3265,7 @@ static ssize_t i915_ipc_status_write(struct file *file, const char __user *ubuf,
3265 dev_priv->wm.distrust_bios_wm = true; 3265 dev_priv->wm.distrust_bios_wm = true;
3266 dev_priv->ipc_enabled = enable; 3266 dev_priv->ipc_enabled = enable;
3267 intel_enable_ipc(dev_priv); 3267 intel_enable_ipc(dev_priv);
3268 intel_runtime_pm_put(dev_priv); 3268 intel_runtime_pm_put_unchecked(dev_priv);
3269 3269
3270 return len; 3270 return len;
3271} 3271}
@@ -4090,7 +4090,7 @@ i915_drop_caches_set(void *data, u64 val)
4090 i915_gem_drain_freed_objects(i915); 4090 i915_gem_drain_freed_objects(i915);
4091 4091
4092out: 4092out:
4093 intel_runtime_pm_put(i915); 4093 intel_runtime_pm_put_unchecked(i915);
4094 4094
4095 return ret; 4095 return ret;
4096} 4096}
@@ -4112,7 +4112,7 @@ i915_cache_sharing_get(void *data, u64 *val)
4112 4112
4113 snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); 4113 snpcr = I915_READ(GEN6_MBCUNIT_SNPCR);
4114 4114
4115 intel_runtime_pm_put(dev_priv); 4115 intel_runtime_pm_put_unchecked(dev_priv);
4116 4116
4117 *val = (snpcr & GEN6_MBC_SNPCR_MASK) >> GEN6_MBC_SNPCR_SHIFT; 4117 *val = (snpcr & GEN6_MBC_SNPCR_MASK) >> GEN6_MBC_SNPCR_SHIFT;
4118 4118
@@ -4140,7 +4140,7 @@ i915_cache_sharing_set(void *data, u64 val)
4140 snpcr |= (val << GEN6_MBC_SNPCR_SHIFT); 4140 snpcr |= (val << GEN6_MBC_SNPCR_SHIFT);
4141 I915_WRITE(GEN6_MBCUNIT_SNPCR, snpcr); 4141 I915_WRITE(GEN6_MBCUNIT_SNPCR, snpcr);
4142 4142
4143 intel_runtime_pm_put(dev_priv); 4143 intel_runtime_pm_put_unchecked(dev_priv);
4144 return 0; 4144 return 0;
4145} 4145}
4146 4146
@@ -4388,7 +4388,7 @@ static int i915_sseu_status(struct seq_file *m, void *unused)
4388 gen10_sseu_device_status(dev_priv, &sseu); 4388 gen10_sseu_device_status(dev_priv, &sseu);
4389 } 4389 }
4390 4390
4391 intel_runtime_pm_put(dev_priv); 4391 intel_runtime_pm_put_unchecked(dev_priv);
4392 4392
4393 i915_print_sseu_info(m, false, &sseu); 4393 i915_print_sseu_info(m, false, &sseu);
4394 4394
@@ -4416,7 +4416,7 @@ static int i915_forcewake_release(struct inode *inode, struct file *file)
4416 return 0; 4416 return 0;
4417 4417
4418 intel_uncore_forcewake_user_put(i915); 4418 intel_uncore_forcewake_user_put(i915);
4419 intel_runtime_pm_put(i915); 4419 intel_runtime_pm_put_unchecked(i915);
4420 4420
4421 return 0; 4421 return 0;
4422} 4422}
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 7e3566a0ba72..e9c909c43759 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -131,6 +131,8 @@ bool i915_error_injected(void);
131 __i915_printk(i915, i915_error_injected() ? KERN_DEBUG : KERN_ERR, \ 131 __i915_printk(i915, i915_error_injected() ? KERN_DEBUG : KERN_ERR, \
132 fmt, ##__VA_ARGS__) 132 fmt, ##__VA_ARGS__)
133 133
134typedef depot_stack_handle_t intel_wakeref_t;
135
134enum hpd_pin { 136enum hpd_pin {
135 HPD_NONE = 0, 137 HPD_NONE = 0,
136 HPD_TV = HPD_NONE, /* TV is known to be unreliable */ 138 HPD_TV = HPD_NONE, /* TV is known to be unreliable */
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 74710e5d946e..640e6361dda3 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -175,7 +175,7 @@ static u32 __i915_gem_park(struct drm_i915_private *i915)
175 175
176 intel_display_power_put(i915, POWER_DOMAIN_GT_IRQ); 176 intel_display_power_put(i915, POWER_DOMAIN_GT_IRQ);
177 177
178 intel_runtime_pm_put(i915); 178 intel_runtime_pm_put_unchecked(i915);
179 179
180 return i915->gt.epoch; 180 return i915->gt.epoch;
181} 181}
@@ -814,7 +814,7 @@ void i915_gem_flush_ggtt_writes(struct drm_i915_private *dev_priv)
814 POSTING_READ_FW(RING_HEAD(RENDER_RING_BASE)); 814 POSTING_READ_FW(RING_HEAD(RENDER_RING_BASE));
815 815
816 spin_unlock_irq(&dev_priv->uncore.lock); 816 spin_unlock_irq(&dev_priv->uncore.lock);
817 intel_runtime_pm_put(dev_priv); 817 intel_runtime_pm_put_unchecked(dev_priv);
818} 818}
819 819
820static void 820static void
@@ -1149,7 +1149,7 @@ out_unpin:
1149 i915_vma_unpin(vma); 1149 i915_vma_unpin(vma);
1150 } 1150 }
1151out_unlock: 1151out_unlock:
1152 intel_runtime_pm_put(i915); 1152 intel_runtime_pm_put_unchecked(i915);
1153 mutex_unlock(&i915->drm.struct_mutex); 1153 mutex_unlock(&i915->drm.struct_mutex);
1154 1154
1155 return ret; 1155 return ret;
@@ -1356,7 +1356,7 @@ out_unpin:
1356 i915_vma_unpin(vma); 1356 i915_vma_unpin(vma);
1357 } 1357 }
1358out_rpm: 1358out_rpm:
1359 intel_runtime_pm_put(i915); 1359 intel_runtime_pm_put_unchecked(i915);
1360out_unlock: 1360out_unlock:
1361 mutex_unlock(&i915->drm.struct_mutex); 1361 mutex_unlock(&i915->drm.struct_mutex);
1362 return ret; 1362 return ret;
@@ -1968,7 +1968,7 @@ err_unpin:
1968err_unlock: 1968err_unlock:
1969 mutex_unlock(&dev->struct_mutex); 1969 mutex_unlock(&dev->struct_mutex);
1970err_rpm: 1970err_rpm:
1971 intel_runtime_pm_put(dev_priv); 1971 intel_runtime_pm_put_unchecked(dev_priv);
1972 i915_gem_object_unpin_pages(obj); 1972 i915_gem_object_unpin_pages(obj);
1973err: 1973err:
1974 switch (ret) { 1974 switch (ret) {
@@ -2068,7 +2068,7 @@ i915_gem_release_mmap(struct drm_i915_gem_object *obj)
2068 wmb(); 2068 wmb();
2069 2069
2070out: 2070out:
2071 intel_runtime_pm_put(i915); 2071 intel_runtime_pm_put_unchecked(i915);
2072} 2072}
2073 2073
2074void i915_gem_runtime_suspend(struct drm_i915_private *dev_priv) 2074void i915_gem_runtime_suspend(struct drm_i915_private *dev_priv)
@@ -4765,7 +4765,7 @@ static void __i915_gem_free_objects(struct drm_i915_private *i915,
4765 if (on) 4765 if (on)
4766 cond_resched(); 4766 cond_resched();
4767 } 4767 }
4768 intel_runtime_pm_put(i915); 4768 intel_runtime_pm_put_unchecked(i915);
4769} 4769}
4770 4770
4771static void i915_gem_flush_free_objects(struct drm_i915_private *i915) 4771static void i915_gem_flush_free_objects(struct drm_i915_private *i915)
@@ -4901,7 +4901,7 @@ void i915_gem_sanitize(struct drm_i915_private *i915)
4901 intel_engines_sanitize(i915, false); 4901 intel_engines_sanitize(i915, false);
4902 4902
4903 intel_uncore_forcewake_put(i915, FORCEWAKE_ALL); 4903 intel_uncore_forcewake_put(i915, FORCEWAKE_ALL);
4904 intel_runtime_pm_put(i915); 4904 intel_runtime_pm_put_unchecked(i915);
4905 4905
4906 i915_gem_contexts_lost(i915); 4906 i915_gem_contexts_lost(i915);
4907 mutex_unlock(&i915->drm.struct_mutex); 4907 mutex_unlock(&i915->drm.struct_mutex);
@@ -4965,12 +4965,12 @@ int i915_gem_suspend(struct drm_i915_private *i915)
4965 if (WARN_ON(!intel_engines_are_idle(i915))) 4965 if (WARN_ON(!intel_engines_are_idle(i915)))
4966 i915_gem_set_wedged(i915); /* no hope, discard everything */ 4966 i915_gem_set_wedged(i915); /* no hope, discard everything */
4967 4967
4968 intel_runtime_pm_put(i915); 4968 intel_runtime_pm_put_unchecked(i915);
4969 return 0; 4969 return 0;
4970 4970
4971err_unlock: 4971err_unlock:
4972 mutex_unlock(&i915->drm.struct_mutex); 4972 mutex_unlock(&i915->drm.struct_mutex);
4973 intel_runtime_pm_put(i915); 4973 intel_runtime_pm_put_unchecked(i915);
4974 return ret; 4974 return ret;
4975} 4975}
4976 4976
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index e7994505d850..c80943698ca2 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -2424,7 +2424,7 @@ err_vma:
2424 eb_release_vmas(&eb); 2424 eb_release_vmas(&eb);
2425 mutex_unlock(&dev->struct_mutex); 2425 mutex_unlock(&dev->struct_mutex);
2426err_rpm: 2426err_rpm:
2427 intel_runtime_pm_put(eb.i915); 2427 intel_runtime_pm_put_unchecked(eb.i915);
2428 i915_gem_context_put(eb.ctx); 2428 i915_gem_context_put(eb.ctx);
2429err_destroy: 2429err_destroy:
2430 eb_destroy(&eb); 2430 eb_destroy(&eb);
diff --git a/drivers/gpu/drm/i915/i915_gem_fence_reg.c b/drivers/gpu/drm/i915/i915_gem_fence_reg.c
index d67c07cdd0b8..b3391070acf7 100644
--- a/drivers/gpu/drm/i915/i915_gem_fence_reg.c
+++ b/drivers/gpu/drm/i915/i915_gem_fence_reg.c
@@ -258,7 +258,7 @@ static int fence_update(struct drm_i915_fence_reg *fence,
258 */ 258 */
259 if (intel_runtime_pm_get_if_in_use(fence->i915)) { 259 if (intel_runtime_pm_get_if_in_use(fence->i915)) {
260 fence_write(fence, vma); 260 fence_write(fence, vma);
261 intel_runtime_pm_put(fence->i915); 261 intel_runtime_pm_put_unchecked(fence->i915);
262 } 262 }
263 263
264 if (vma) { 264 if (vma) {
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index a8807fbed0aa..51f80ddd938d 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -2536,7 +2536,7 @@ static int ggtt_bind_vma(struct i915_vma *vma,
2536 2536
2537 intel_runtime_pm_get(i915); 2537 intel_runtime_pm_get(i915);
2538 vma->vm->insert_entries(vma->vm, vma, cache_level, pte_flags); 2538 vma->vm->insert_entries(vma->vm, vma, cache_level, pte_flags);
2539 intel_runtime_pm_put(i915); 2539 intel_runtime_pm_put_unchecked(i915);
2540 2540
2541 vma->page_sizes.gtt = I915_GTT_PAGE_SIZE; 2541 vma->page_sizes.gtt = I915_GTT_PAGE_SIZE;
2542 2542
@@ -2556,7 +2556,7 @@ static void ggtt_unbind_vma(struct i915_vma *vma)
2556 2556
2557 intel_runtime_pm_get(i915); 2557 intel_runtime_pm_get(i915);
2558 vma->vm->clear_range(vma->vm, vma->node.start, vma->size); 2558 vma->vm->clear_range(vma->vm, vma->node.start, vma->size);
2559 intel_runtime_pm_put(i915); 2559 intel_runtime_pm_put_unchecked(i915);
2560} 2560}
2561 2561
2562static int aliasing_gtt_bind_vma(struct i915_vma *vma, 2562static int aliasing_gtt_bind_vma(struct i915_vma *vma,
@@ -2590,7 +2590,7 @@ static int aliasing_gtt_bind_vma(struct i915_vma *vma,
2590 if (flags & I915_VMA_GLOBAL_BIND) { 2590 if (flags & I915_VMA_GLOBAL_BIND) {
2591 intel_runtime_pm_get(i915); 2591 intel_runtime_pm_get(i915);
2592 vma->vm->insert_entries(vma->vm, vma, cache_level, pte_flags); 2592 vma->vm->insert_entries(vma->vm, vma, cache_level, pte_flags);
2593 intel_runtime_pm_put(i915); 2593 intel_runtime_pm_put_unchecked(i915);
2594 } 2594 }
2595 2595
2596 return 0; 2596 return 0;
@@ -2603,7 +2603,7 @@ static void aliasing_gtt_unbind_vma(struct i915_vma *vma)
2603 if (vma->flags & I915_VMA_GLOBAL_BIND) { 2603 if (vma->flags & I915_VMA_GLOBAL_BIND) {
2604 intel_runtime_pm_get(i915); 2604 intel_runtime_pm_get(i915);
2605 vma->vm->clear_range(vma->vm, vma->node.start, vma->size); 2605 vma->vm->clear_range(vma->vm, vma->node.start, vma->size);
2606 intel_runtime_pm_put(i915); 2606 intel_runtime_pm_put_unchecked(i915);
2607 } 2607 }
2608 2608
2609 if (vma->flags & I915_VMA_LOCAL_BIND) { 2609 if (vma->flags & I915_VMA_LOCAL_BIND) {
diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
index 6cc2b964c955..2bef02d0883d 100644
--- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
@@ -265,7 +265,7 @@ i915_gem_shrink(struct drm_i915_private *i915,
265 } 265 }
266 266
267 if (flags & I915_SHRINK_BOUND) 267 if (flags & I915_SHRINK_BOUND)
268 intel_runtime_pm_put(i915); 268 intel_runtime_pm_put_unchecked(i915);
269 269
270 i915_retire_requests(i915); 270 i915_retire_requests(i915);
271 271
@@ -299,7 +299,7 @@ unsigned long i915_gem_shrink_all(struct drm_i915_private *i915)
299 I915_SHRINK_BOUND | 299 I915_SHRINK_BOUND |
300 I915_SHRINK_UNBOUND | 300 I915_SHRINK_UNBOUND |
301 I915_SHRINK_ACTIVE); 301 I915_SHRINK_ACTIVE);
302 intel_runtime_pm_put(i915); 302 intel_runtime_pm_put_unchecked(i915);
303 303
304 return freed; 304 return freed;
305} 305}
@@ -377,7 +377,7 @@ i915_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc)
377 I915_SHRINK_ACTIVE | 377 I915_SHRINK_ACTIVE |
378 I915_SHRINK_BOUND | 378 I915_SHRINK_BOUND |
379 I915_SHRINK_UNBOUND); 379 I915_SHRINK_UNBOUND);
380 intel_runtime_pm_put(i915); 380 intel_runtime_pm_put_unchecked(i915);
381 } 381 }
382 382
383 shrinker_unlock(i915, unlock); 383 shrinker_unlock(i915, unlock);
@@ -397,7 +397,7 @@ i915_gem_shrinker_oom(struct notifier_block *nb, unsigned long event, void *ptr)
397 freed_pages = i915_gem_shrink(i915, -1UL, NULL, 397 freed_pages = i915_gem_shrink(i915, -1UL, NULL,
398 I915_SHRINK_BOUND | 398 I915_SHRINK_BOUND |
399 I915_SHRINK_UNBOUND); 399 I915_SHRINK_UNBOUND);
400 intel_runtime_pm_put(i915); 400 intel_runtime_pm_put_unchecked(i915);
401 401
402 /* Because we may be allocating inside our own driver, we cannot 402 /* Because we may be allocating inside our own driver, we cannot
403 * assert that there are no objects with pinned pages that are not 403 * assert that there are no objects with pinned pages that are not
@@ -451,7 +451,7 @@ i915_gem_shrinker_vmap(struct notifier_block *nb, unsigned long event, void *ptr
451 I915_SHRINK_BOUND | 451 I915_SHRINK_BOUND |
452 I915_SHRINK_UNBOUND | 452 I915_SHRINK_UNBOUND |
453 I915_SHRINK_VMAPS); 453 I915_SHRINK_VMAPS);
454 intel_runtime_pm_put(i915); 454 intel_runtime_pm_put_unchecked(i915);
455 455
456 /* We also want to clear any cached iomaps as they wrap vmap */ 456 /* We also want to clear any cached iomaps as they wrap vmap */
457 list_for_each_entry_safe(vma, next, 457 list_for_each_entry_safe(vma, next,
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 288b0662f7b7..787a9ed1ef7d 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -3374,7 +3374,7 @@ void i915_handle_error(struct drm_i915_private *dev_priv,
3374 wake_up_all(&dev_priv->gpu_error.reset_queue); 3374 wake_up_all(&dev_priv->gpu_error.reset_queue);
3375 3375
3376out: 3376out:
3377 intel_runtime_pm_put(dev_priv); 3377 intel_runtime_pm_put_unchecked(dev_priv);
3378} 3378}
3379 3379
3380/* Called from drm generic code, passed 'crtc' which 3380/* Called from drm generic code, passed 'crtc' which
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 5b1ae5ed97b3..e4dfd1477c78 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -1365,7 +1365,7 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
1365 free_oa_buffer(dev_priv); 1365 free_oa_buffer(dev_priv);
1366 1366
1367 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); 1367 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
1368 intel_runtime_pm_put(dev_priv); 1368 intel_runtime_pm_put_unchecked(dev_priv);
1369 1369
1370 if (stream->ctx) 1370 if (stream->ctx)
1371 oa_put_render_ctx_id(stream); 1371 oa_put_render_ctx_id(stream);
@@ -2123,7 +2123,7 @@ err_oa_buf_alloc:
2123 put_oa_config(dev_priv, stream->oa_config); 2123 put_oa_config(dev_priv, stream->oa_config);
2124 2124
2125 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); 2125 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
2126 intel_runtime_pm_put(dev_priv); 2126 intel_runtime_pm_put_unchecked(dev_priv);
2127 2127
2128err_config: 2128err_config:
2129 if (stream->ctx) 2129 if (stream->ctx)
diff --git a/drivers/gpu/drm/i915/i915_pmu.c b/drivers/gpu/drm/i915/i915_pmu.c
index d6c8f8fdfda5..c99fcfce79d5 100644
--- a/drivers/gpu/drm/i915/i915_pmu.c
+++ b/drivers/gpu/drm/i915/i915_pmu.c
@@ -210,7 +210,7 @@ engines_sample(struct drm_i915_private *dev_priv, unsigned int period_ns)
210 if (fw) 210 if (fw)
211 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); 211 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
212 212
213 intel_runtime_pm_put(dev_priv); 213 intel_runtime_pm_put_unchecked(dev_priv);
214} 214}
215 215
216static void 216static void
@@ -231,7 +231,7 @@ frequency_sample(struct drm_i915_private *dev_priv, unsigned int period_ns)
231 intel_runtime_pm_get_if_in_use(dev_priv)) { 231 intel_runtime_pm_get_if_in_use(dev_priv)) {
232 val = intel_get_cagf(dev_priv, 232 val = intel_get_cagf(dev_priv,
233 I915_READ_NOTRACE(GEN6_RPSTAT1)); 233 I915_READ_NOTRACE(GEN6_RPSTAT1));
234 intel_runtime_pm_put(dev_priv); 234 intel_runtime_pm_put_unchecked(dev_priv);
235 } 235 }
236 236
237 add_sample_mult(&dev_priv->pmu.sample[__I915_SAMPLE_FREQ_ACT], 237 add_sample_mult(&dev_priv->pmu.sample[__I915_SAMPLE_FREQ_ACT],
@@ -448,7 +448,7 @@ static u64 get_rc6(struct drm_i915_private *i915)
448 448
449 if (intel_runtime_pm_get_if_in_use(i915)) { 449 if (intel_runtime_pm_get_if_in_use(i915)) {
450 val = __get_rc6(i915); 450 val = __get_rc6(i915);
451 intel_runtime_pm_put(i915); 451 intel_runtime_pm_put_unchecked(i915);
452 452
453 /* 453 /*
454 * If we are coming back from being runtime suspended we must 454 * If we are coming back from being runtime suspended we must
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index c0cfe7ae2ba5..53c20e103d56 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -46,7 +46,7 @@ static u32 calc_residency(struct drm_i915_private *dev_priv,
46 46
47 intel_runtime_pm_get(dev_priv); 47 intel_runtime_pm_get(dev_priv);
48 res = intel_rc6_residency_us(dev_priv, reg); 48 res = intel_rc6_residency_us(dev_priv, reg);
49 intel_runtime_pm_put(dev_priv); 49 intel_runtime_pm_put_unchecked(dev_priv);
50 50
51 return DIV_ROUND_CLOSEST_ULL(res, 1000); 51 return DIV_ROUND_CLOSEST_ULL(res, 1000);
52} 52}
@@ -274,7 +274,7 @@ static ssize_t gt_act_freq_mhz_show(struct device *kdev,
274 } 274 }
275 mutex_unlock(&dev_priv->pcu_lock); 275 mutex_unlock(&dev_priv->pcu_lock);
276 276
277 intel_runtime_pm_put(dev_priv); 277 intel_runtime_pm_put_unchecked(dev_priv);
278 278
279 return snprintf(buf, PAGE_SIZE, "%d\n", ret); 279 return snprintf(buf, PAGE_SIZE, "%d\n", ret);
280} 280}
@@ -371,7 +371,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev,
371 val > rps->max_freq || 371 val > rps->max_freq ||
372 val < rps->min_freq_softlimit) { 372 val < rps->min_freq_softlimit) {
373 mutex_unlock(&dev_priv->pcu_lock); 373 mutex_unlock(&dev_priv->pcu_lock);
374 intel_runtime_pm_put(dev_priv); 374 intel_runtime_pm_put_unchecked(dev_priv);
375 return -EINVAL; 375 return -EINVAL;
376 } 376 }
377 377
@@ -392,7 +392,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev,
392 392
393 mutex_unlock(&dev_priv->pcu_lock); 393 mutex_unlock(&dev_priv->pcu_lock);
394 394
395 intel_runtime_pm_put(dev_priv); 395 intel_runtime_pm_put_unchecked(dev_priv);
396 396
397 return ret ?: count; 397 return ret ?: count;
398} 398}
@@ -429,7 +429,7 @@ static ssize_t gt_min_freq_mhz_store(struct device *kdev,
429 val > rps->max_freq || 429 val > rps->max_freq ||
430 val > rps->max_freq_softlimit) { 430 val > rps->max_freq_softlimit) {
431 mutex_unlock(&dev_priv->pcu_lock); 431 mutex_unlock(&dev_priv->pcu_lock);
432 intel_runtime_pm_put(dev_priv); 432 intel_runtime_pm_put_unchecked(dev_priv);
433 return -EINVAL; 433 return -EINVAL;
434 } 434 }
435 435
@@ -446,7 +446,7 @@ static ssize_t gt_min_freq_mhz_store(struct device *kdev,
446 446
447 mutex_unlock(&dev_priv->pcu_lock); 447 mutex_unlock(&dev_priv->pcu_lock);
448 448
449 intel_runtime_pm_put(dev_priv); 449 intel_runtime_pm_put_unchecked(dev_priv);
450 450
451 return ret ?: count; 451 return ret ?: count;
452} 452}
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 1cc441f06c73..a980d5d1e601 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2101,7 +2101,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
2101err: 2101err:
2102 atomic_dec(&dev_priv->gpu_error.pending_fb_pin); 2102 atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
2103 2103
2104 intel_runtime_pm_put(dev_priv); 2104 intel_runtime_pm_put_unchecked(dev_priv);
2105 return vma; 2105 return vma;
2106} 2106}
2107 2107
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index ac513fd70315..a1e4e1033289 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -29,6 +29,7 @@
29#include <linux/i2c.h> 29#include <linux/i2c.h>
30#include <linux/hdmi.h> 30#include <linux/hdmi.h>
31#include <linux/sched/clock.h> 31#include <linux/sched/clock.h>
32#include <linux/stackdepot.h>
32#include <drm/i915_drm.h> 33#include <drm/i915_drm.h>
33#include "i915_drv.h" 34#include "i915_drv.h"
34#include <drm/drm_crtc.h> 35#include <drm/drm_crtc.h>
@@ -2182,10 +2183,16 @@ enable_rpm_wakeref_asserts(struct drm_i915_private *i915)
2182 atomic_dec(&i915->runtime_pm.wakeref_count); 2183 atomic_dec(&i915->runtime_pm.wakeref_count);
2183} 2184}
2184 2185
2185void intel_runtime_pm_get(struct drm_i915_private *i915); 2186intel_wakeref_t intel_runtime_pm_get(struct drm_i915_private *i915);
2186bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915); 2187intel_wakeref_t intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915);
2187void intel_runtime_pm_get_noresume(struct drm_i915_private *i915); 2188intel_wakeref_t intel_runtime_pm_get_noresume(struct drm_i915_private *i915);
2188void intel_runtime_pm_put(struct drm_i915_private *i915); 2189
2190void intel_runtime_pm_put_unchecked(struct drm_i915_private *i915);
2191#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
2192void intel_runtime_pm_put(struct drm_i915_private *i915, intel_wakeref_t wref);
2193#else
2194#define intel_runtime_pm_put(i915, wref) intel_runtime_pm_put_unchecked(i915)
2195#endif
2189 2196
2190#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM) 2197#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
2191void print_intel_runtime_pm_wakeref(struct drm_i915_private *i915, 2198void print_intel_runtime_pm_wakeref(struct drm_i915_private *i915,
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index 5990f8500bca..2e60463f2468 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -928,7 +928,7 @@ static bool ring_is_idle(struct intel_engine_cs *engine)
928 if (INTEL_GEN(dev_priv) > 2 && !(I915_READ_MODE(engine) & MODE_IDLE)) 928 if (INTEL_GEN(dev_priv) > 2 && !(I915_READ_MODE(engine) & MODE_IDLE))
929 idle = false; 929 idle = false;
930 930
931 intel_runtime_pm_put(dev_priv); 931 intel_runtime_pm_put_unchecked(dev_priv);
932 932
933 return idle; 933 return idle;
934} 934}
@@ -1485,7 +1485,7 @@ void intel_engine_dump(struct intel_engine_cs *engine,
1485 1485
1486 if (intel_runtime_pm_get_if_in_use(engine->i915)) { 1486 if (intel_runtime_pm_get_if_in_use(engine->i915)) {
1487 intel_engine_print_registers(engine, m); 1487 intel_engine_print_registers(engine, m);
1488 intel_runtime_pm_put(engine->i915); 1488 intel_runtime_pm_put_unchecked(engine->i915);
1489 } else { 1489 } else {
1490 drm_printf(m, "\tDevice is asleep; skipping register dump\n"); 1490 drm_printf(m, "\tDevice is asleep; skipping register dump\n");
1491 } 1491 }
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index a0c5046e170c..215e5894842d 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -276,7 +276,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
276 ifbdev->vma = vma; 276 ifbdev->vma = vma;
277 ifbdev->vma_flags = flags; 277 ifbdev->vma_flags = flags;
278 278
279 intel_runtime_pm_put(dev_priv); 279 intel_runtime_pm_put_unchecked(dev_priv);
280 mutex_unlock(&dev->struct_mutex); 280 mutex_unlock(&dev->struct_mutex);
281 vga_switcheroo_client_fb_set(pdev, info); 281 vga_switcheroo_client_fb_set(pdev, info);
282 return 0; 282 return 0;
@@ -284,7 +284,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
284out_unpin: 284out_unpin:
285 intel_unpin_fb_vma(vma, flags); 285 intel_unpin_fb_vma(vma, flags);
286out_unlock: 286out_unlock:
287 intel_runtime_pm_put(dev_priv); 287 intel_runtime_pm_put_unchecked(dev_priv);
288 mutex_unlock(&dev->struct_mutex); 288 mutex_unlock(&dev->struct_mutex);
289 return ret; 289 return ret;
290} 290}
diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
index d3ebdbc0182e..1b1581a42aa1 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.c
+++ b/drivers/gpu/drm/i915/intel_guc_log.c
@@ -445,7 +445,7 @@ static void guc_log_capture_logs(struct intel_guc_log *log)
445 */ 445 */
446 intel_runtime_pm_get(dev_priv); 446 intel_runtime_pm_get(dev_priv);
447 guc_action_flush_log_complete(guc); 447 guc_action_flush_log_complete(guc);
448 intel_runtime_pm_put(dev_priv); 448 intel_runtime_pm_put_unchecked(dev_priv);
449} 449}
450 450
451int intel_guc_log_create(struct intel_guc_log *log) 451int intel_guc_log_create(struct intel_guc_log *log)
@@ -528,7 +528,7 @@ int intel_guc_log_set_level(struct intel_guc_log *log, u32 level)
528 ret = guc_action_control_log(guc, GUC_LOG_LEVEL_IS_VERBOSE(level), 528 ret = guc_action_control_log(guc, GUC_LOG_LEVEL_IS_VERBOSE(level),
529 GUC_LOG_LEVEL_IS_ENABLED(level), 529 GUC_LOG_LEVEL_IS_ENABLED(level),
530 GUC_LOG_LEVEL_TO_VERBOSITY(level)); 530 GUC_LOG_LEVEL_TO_VERBOSITY(level));
531 intel_runtime_pm_put(dev_priv); 531 intel_runtime_pm_put_unchecked(dev_priv);
532 if (ret) { 532 if (ret) {
533 DRM_DEBUG_DRIVER("guc_log_control action failed %d\n", ret); 533 DRM_DEBUG_DRIVER("guc_log_control action failed %d\n", ret);
534 goto out_unlock; 534 goto out_unlock;
@@ -610,7 +610,7 @@ void intel_guc_log_relay_flush(struct intel_guc_log *log)
610 610
611 intel_runtime_pm_get(i915); 611 intel_runtime_pm_get(i915);
612 guc_action_flush_log(guc); 612 guc_action_flush_log(guc);
613 intel_runtime_pm_put(i915); 613 intel_runtime_pm_put_unchecked(i915);
614 614
615 /* GuC would have updated log buffer by now, so capture it */ 615 /* GuC would have updated log buffer by now, so capture it */
616 guc_log_capture_logs(log); 616 guc_log_capture_logs(log);
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index ae92d6560165..b1a9cb960ca4 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -261,7 +261,7 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work)
261 dev_priv->display.hpd_irq_setup(dev_priv); 261 dev_priv->display.hpd_irq_setup(dev_priv);
262 spin_unlock_irq(&dev_priv->irq_lock); 262 spin_unlock_irq(&dev_priv->irq_lock);
263 263
264 intel_runtime_pm_put(dev_priv); 264 intel_runtime_pm_put_unchecked(dev_priv);
265} 265}
266 266
267bool intel_encoder_hotplug(struct intel_encoder *encoder, 267bool intel_encoder_hotplug(struct intel_encoder *encoder,
diff --git a/drivers/gpu/drm/i915/intel_huc.c b/drivers/gpu/drm/i915/intel_huc.c
index bc27b691d824..c2b076e9bada 100644
--- a/drivers/gpu/drm/i915/intel_huc.c
+++ b/drivers/gpu/drm/i915/intel_huc.c
@@ -122,7 +122,7 @@ int intel_huc_check_status(struct intel_huc *huc)
122 122
123 intel_runtime_pm_get(dev_priv); 123 intel_runtime_pm_get(dev_priv);
124 status = I915_READ(HUC_STATUS2) & HUC_FW_VERIFIED; 124 status = I915_READ(HUC_STATUS2) & HUC_FW_VERIFIED;
125 intel_runtime_pm_put(dev_priv); 125 intel_runtime_pm_put_unchecked(dev_priv);
126 126
127 return status; 127 return status;
128} 128}
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index ee3e0842d542..c2b7455a023e 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -1213,7 +1213,7 @@ static int intel_backlight_device_get_brightness(struct backlight_device *bd)
1213 ret = scale_hw_to_user(connector, hw_level, bd->props.max_brightness); 1213 ret = scale_hw_to_user(connector, hw_level, bd->props.max_brightness);
1214 1214
1215 drm_modeset_unlock(&dev->mode_config.connection_mutex); 1215 drm_modeset_unlock(&dev->mode_config.connection_mutex);
1216 intel_runtime_pm_put(dev_priv); 1216 intel_runtime_pm_put_unchecked(dev_priv);
1217 1217
1218 return ret; 1218 return ret;
1219} 1219}
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 08f809371bbd..c29577d7a35a 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -94,7 +94,7 @@ static void init_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
94 spin_lock_init(&rpm->debug.lock); 94 spin_lock_init(&rpm->debug.lock);
95} 95}
96 96
97static noinline void 97static noinline depot_stack_handle_t
98track_intel_runtime_pm_wakeref(struct drm_i915_private *i915) 98track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
99{ 99{
100 struct i915_runtime_pm *rpm = &i915->runtime_pm; 100 struct i915_runtime_pm *rpm = &i915->runtime_pm;
@@ -105,11 +105,11 @@ track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
105 assert_rpm_wakelock_held(i915); 105 assert_rpm_wakelock_held(i915);
106 106
107 if (!HAS_RUNTIME_PM(i915)) 107 if (!HAS_RUNTIME_PM(i915))
108 return; 108 return -1;
109 109
110 stack = __save_depot_stack(); 110 stack = __save_depot_stack();
111 if (!stack) 111 if (!stack)
112 return; 112 return -1;
113 113
114 spin_lock_irqsave(&rpm->debug.lock, flags); 114 spin_lock_irqsave(&rpm->debug.lock, flags);
115 115
@@ -122,9 +122,57 @@ track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
122 if (stacks) { 122 if (stacks) {
123 stacks[rpm->debug.count++] = stack; 123 stacks[rpm->debug.count++] = stack;
124 rpm->debug.owners = stacks; 124 rpm->debug.owners = stacks;
125 } else {
126 stack = -1;
125 } 127 }
126 128
127 spin_unlock_irqrestore(&rpm->debug.lock, flags); 129 spin_unlock_irqrestore(&rpm->debug.lock, flags);
130
131 return stack;
132}
133
134static void cancel_intel_runtime_pm_wakeref(struct drm_i915_private *i915,
135 depot_stack_handle_t stack)
136{
137 struct i915_runtime_pm *rpm = &i915->runtime_pm;
138 unsigned long flags, n;
139 bool found = false;
140
141 if (unlikely(stack == -1))
142 return;
143
144 spin_lock_irqsave(&rpm->debug.lock, flags);
145 for (n = rpm->debug.count; n--; ) {
146 if (rpm->debug.owners[n] == stack) {
147 memmove(rpm->debug.owners + n,
148 rpm->debug.owners + n + 1,
149 (--rpm->debug.count - n) * sizeof(stack));
150 found = true;
151 break;
152 }
153 }
154 spin_unlock_irqrestore(&rpm->debug.lock, flags);
155
156 if (WARN(!found,
157 "Unmatched wakeref (tracking %lu), count %u\n",
158 rpm->debug.count, atomic_read(&rpm->wakeref_count))) {
159 char *buf;
160
161 buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
162 if (!buf)
163 return;
164
165 __print_depot_stack(stack, buf, PAGE_SIZE, 2);
166 DRM_DEBUG_DRIVER("wakeref %x from\n%s", stack, buf);
167
168 stack = READ_ONCE(rpm->debug.last_release);
169 if (stack) {
170 __print_depot_stack(stack, buf, PAGE_SIZE, 2);
171 DRM_DEBUG_DRIVER("wakeref last released at\n%s", buf);
172 }
173
174 kfree(buf);
175 }
128} 176}
129 177
130static int cmphandle(const void *_a, const void *_b) 178static int cmphandle(const void *_a, const void *_b)
@@ -249,10 +297,12 @@ static void init_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
249{ 297{
250} 298}
251 299
252static void track_intel_runtime_pm_wakeref(struct drm_i915_private *i915) 300static depot_stack_handle_t
301track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
253{ 302{
254 atomic_inc(&i915->runtime_pm.wakeref_count); 303 atomic_inc(&i915->runtime_pm.wakeref_count);
255 assert_rpm_wakelock_held(i915); 304 assert_rpm_wakelock_held(i915);
305 return -1;
256} 306}
257 307
258static void untrack_intel_runtime_pm_wakeref(struct drm_i915_private *i915) 308static void untrack_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
@@ -1852,7 +1902,7 @@ bool intel_display_power_get_if_enabled(struct drm_i915_private *dev_priv,
1852 mutex_unlock(&power_domains->lock); 1902 mutex_unlock(&power_domains->lock);
1853 1903
1854 if (!is_enabled) 1904 if (!is_enabled)
1855 intel_runtime_pm_put(dev_priv); 1905 intel_runtime_pm_put_unchecked(dev_priv);
1856 1906
1857 return is_enabled; 1907 return is_enabled;
1858} 1908}
@@ -1886,7 +1936,7 @@ void intel_display_power_put(struct drm_i915_private *dev_priv,
1886 1936
1887 mutex_unlock(&power_domains->lock); 1937 mutex_unlock(&power_domains->lock);
1888 1938
1889 intel_runtime_pm_put(dev_priv); 1939 intel_runtime_pm_put_unchecked(dev_priv);
1890} 1940}
1891 1941
1892#define I830_PIPES_POWER_DOMAINS ( \ 1942#define I830_PIPES_POWER_DOMAINS ( \
@@ -3994,7 +4044,7 @@ void intel_power_domains_init_hw(struct drm_i915_private *dev_priv, bool resume)
3994void intel_power_domains_fini_hw(struct drm_i915_private *dev_priv) 4044void intel_power_domains_fini_hw(struct drm_i915_private *dev_priv)
3995{ 4045{
3996 /* Keep the power well enabled, but cancel its rpm wakeref. */ 4046 /* Keep the power well enabled, but cancel its rpm wakeref. */
3997 intel_runtime_pm_put(dev_priv); 4047 intel_runtime_pm_put_unchecked(dev_priv);
3998 4048
3999 /* Remove the refcount we took to keep power well support disabled. */ 4049 /* Remove the refcount we took to keep power well support disabled. */
4000 if (!i915_modparams.disable_power_well) 4050 if (!i915_modparams.disable_power_well)
@@ -4207,8 +4257,10 @@ static void intel_power_domains_verify_state(struct drm_i915_private *dev_priv)
4207 * 4257 *
4208 * Any runtime pm reference obtained by this function must have a symmetric 4258 * Any runtime pm reference obtained by this function must have a symmetric
4209 * call to intel_runtime_pm_put() to release the reference again. 4259 * call to intel_runtime_pm_put() to release the reference again.
4260 *
4261 * Returns: the wakeref cookie to pass to intel_runtime_pm_put()
4210 */ 4262 */
4211void intel_runtime_pm_get(struct drm_i915_private *i915) 4263intel_wakeref_t intel_runtime_pm_get(struct drm_i915_private *i915)
4212{ 4264{
4213 struct pci_dev *pdev = i915->drm.pdev; 4265 struct pci_dev *pdev = i915->drm.pdev;
4214 struct device *kdev = &pdev->dev; 4266 struct device *kdev = &pdev->dev;
@@ -4217,7 +4269,7 @@ void intel_runtime_pm_get(struct drm_i915_private *i915)
4217 ret = pm_runtime_get_sync(kdev); 4269 ret = pm_runtime_get_sync(kdev);
4218 WARN_ONCE(ret < 0, "pm_runtime_get_sync() failed: %d\n", ret); 4270 WARN_ONCE(ret < 0, "pm_runtime_get_sync() failed: %d\n", ret);
4219 4271
4220 track_intel_runtime_pm_wakeref(i915); 4272 return track_intel_runtime_pm_wakeref(i915);
4221} 4273}
4222 4274
4223/** 4275/**
@@ -4231,9 +4283,10 @@ void intel_runtime_pm_get(struct drm_i915_private *i915)
4231 * Any runtime pm reference obtained by this function must have a symmetric 4283 * Any runtime pm reference obtained by this function must have a symmetric
4232 * call to intel_runtime_pm_put() to release the reference again. 4284 * call to intel_runtime_pm_put() to release the reference again.
4233 * 4285 *
4234 * Returns: True if the wakeref was acquired, or False otherwise. 4286 * Returns: the wakeref cookie to pass to intel_runtime_pm_put(), evaluates
4287 * as True if the wakeref was acquired, or False otherwise.
4235 */ 4288 */
4236bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915) 4289intel_wakeref_t intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915)
4237{ 4290{
4238 if (IS_ENABLED(CONFIG_PM)) { 4291 if (IS_ENABLED(CONFIG_PM)) {
4239 struct pci_dev *pdev = i915->drm.pdev; 4292 struct pci_dev *pdev = i915->drm.pdev;
@@ -4246,12 +4299,10 @@ bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915)
4246 * atm to the late/early system suspend/resume handlers. 4299 * atm to the late/early system suspend/resume handlers.
4247 */ 4300 */
4248 if (pm_runtime_get_if_in_use(kdev) <= 0) 4301 if (pm_runtime_get_if_in_use(kdev) <= 0)
4249 return false; 4302 return 0;
4250 } 4303 }
4251 4304
4252 track_intel_runtime_pm_wakeref(i915); 4305 return track_intel_runtime_pm_wakeref(i915);
4253
4254 return true;
4255} 4306}
4256 4307
4257/** 4308/**
@@ -4270,8 +4321,10 @@ bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915)
4270 * 4321 *
4271 * Any runtime pm reference obtained by this function must have a symmetric 4322 * Any runtime pm reference obtained by this function must have a symmetric
4272 * call to intel_runtime_pm_put() to release the reference again. 4323 * call to intel_runtime_pm_put() to release the reference again.
4324 *
4325 * Returns: the wakeref cookie to pass to intel_runtime_pm_put()
4273 */ 4326 */
4274void intel_runtime_pm_get_noresume(struct drm_i915_private *i915) 4327intel_wakeref_t intel_runtime_pm_get_noresume(struct drm_i915_private *i915)
4275{ 4328{
4276 struct pci_dev *pdev = i915->drm.pdev; 4329 struct pci_dev *pdev = i915->drm.pdev;
4277 struct device *kdev = &pdev->dev; 4330 struct device *kdev = &pdev->dev;
@@ -4279,7 +4332,7 @@ void intel_runtime_pm_get_noresume(struct drm_i915_private *i915)
4279 assert_rpm_wakelock_held(i915); 4332 assert_rpm_wakelock_held(i915);
4280 pm_runtime_get_noresume(kdev); 4333 pm_runtime_get_noresume(kdev);
4281 4334
4282 track_intel_runtime_pm_wakeref(i915); 4335 return track_intel_runtime_pm_wakeref(i915);
4283} 4336}
4284 4337
4285/** 4338/**
@@ -4290,7 +4343,7 @@ void intel_runtime_pm_get_noresume(struct drm_i915_private *i915)
4290 * intel_runtime_pm_get() and might power down the corresponding 4343 * intel_runtime_pm_get() and might power down the corresponding
4291 * hardware block right away if this is the last reference. 4344 * hardware block right away if this is the last reference.
4292 */ 4345 */
4293void intel_runtime_pm_put(struct drm_i915_private *i915) 4346void intel_runtime_pm_put_unchecked(struct drm_i915_private *i915)
4294{ 4347{
4295 struct pci_dev *pdev = i915->drm.pdev; 4348 struct pci_dev *pdev = i915->drm.pdev;
4296 struct device *kdev = &pdev->dev; 4349 struct device *kdev = &pdev->dev;
@@ -4301,6 +4354,14 @@ void intel_runtime_pm_put(struct drm_i915_private *i915)
4301 pm_runtime_put_autosuspend(kdev); 4354 pm_runtime_put_autosuspend(kdev);
4302} 4355}
4303 4356
4357#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
4358void intel_runtime_pm_put(struct drm_i915_private *i915, intel_wakeref_t wref)
4359{
4360 cancel_intel_runtime_pm_wakeref(i915, wref);
4361 intel_runtime_pm_put_unchecked(i915);
4362}
4363#endif
4364
4304/** 4365/**
4305 * intel_runtime_pm_enable - enable runtime pm 4366 * intel_runtime_pm_enable - enable runtime pm
4306 * @i915: i915 device instance 4367 * @i915: i915 device instance
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index fff468f17d2d..8d4c76ac0e7d 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -1709,7 +1709,7 @@ int i915_reg_read_ioctl(struct drm_device *dev,
1709 reg->val = I915_READ8(entry->offset_ldw); 1709 reg->val = I915_READ8(entry->offset_ldw);
1710 else 1710 else
1711 ret = -EINVAL; 1711 ret = -EINVAL;
1712 intel_runtime_pm_put(dev_priv); 1712 intel_runtime_pm_put_unchecked(dev_priv);
1713 1713
1714 return ret; 1714 return ret;
1715} 1715}
diff --git a/drivers/gpu/drm/i915/selftests/huge_pages.c b/drivers/gpu/drm/i915/selftests/huge_pages.c
index 6c10734e948d..a4d8b12be12c 100644
--- a/drivers/gpu/drm/i915/selftests/huge_pages.c
+++ b/drivers/gpu/drm/i915/selftests/huge_pages.c
@@ -1785,7 +1785,7 @@ int i915_gem_huge_page_live_selftests(struct drm_i915_private *dev_priv)
1785 err = i915_subtests(tests, ctx); 1785 err = i915_subtests(tests, ctx);
1786 1786
1787out_unlock: 1787out_unlock:
1788 intel_runtime_pm_put(dev_priv); 1788 intel_runtime_pm_put_unchecked(dev_priv);
1789 mutex_unlock(&dev_priv->drm.struct_mutex); 1789 mutex_unlock(&dev_priv->drm.struct_mutex);
1790 1790
1791 mock_file_free(dev_priv, file); 1791 mock_file_free(dev_priv, file);
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem.c b/drivers/gpu/drm/i915/selftests/i915_gem.c
index bdcc53e15e75..762e1a7125f5 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem.c
@@ -32,7 +32,7 @@ static int switch_to_context(struct drm_i915_private *i915,
32 i915_request_add(rq); 32 i915_request_add(rq);
33 } 33 }
34 34
35 intel_runtime_pm_put(i915); 35 intel_runtime_pm_put_unchecked(i915);
36 36
37 return err; 37 return err;
38} 38}
@@ -76,7 +76,7 @@ static void simulate_hibernate(struct drm_i915_private *i915)
76 */ 76 */
77 trash_stolen(i915); 77 trash_stolen(i915);
78 78
79 intel_runtime_pm_put(i915); 79 intel_runtime_pm_put_unchecked(i915);
80} 80}
81 81
82static int pm_prepare(struct drm_i915_private *i915) 82static int pm_prepare(struct drm_i915_private *i915)
@@ -98,7 +98,7 @@ static void pm_suspend(struct drm_i915_private *i915)
98 i915_gem_suspend_gtt_mappings(i915); 98 i915_gem_suspend_gtt_mappings(i915);
99 i915_gem_suspend_late(i915); 99 i915_gem_suspend_late(i915);
100 100
101 intel_runtime_pm_put(i915); 101 intel_runtime_pm_put_unchecked(i915);
102} 102}
103 103
104static void pm_hibernate(struct drm_i915_private *i915) 104static void pm_hibernate(struct drm_i915_private *i915)
@@ -110,7 +110,7 @@ static void pm_hibernate(struct drm_i915_private *i915)
110 i915_gem_freeze(i915); 110 i915_gem_freeze(i915);
111 i915_gem_freeze_late(i915); 111 i915_gem_freeze_late(i915);
112 112
113 intel_runtime_pm_put(i915); 113 intel_runtime_pm_put_unchecked(i915);
114} 114}
115 115
116static void pm_resume(struct drm_i915_private *i915) 116static void pm_resume(struct drm_i915_private *i915)
@@ -125,7 +125,7 @@ static void pm_resume(struct drm_i915_private *i915)
125 i915_gem_sanitize(i915); 125 i915_gem_sanitize(i915);
126 i915_gem_resume(i915); 126 i915_gem_resume(i915);
127 127
128 intel_runtime_pm_put(i915); 128 intel_runtime_pm_put_unchecked(i915);
129} 129}
130 130
131static int igt_gem_suspend(void *arg) 131static int igt_gem_suspend(void *arg)
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c
index f7392c1ffe75..eea4fc2445ae 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c
@@ -376,7 +376,7 @@ static int igt_gem_coherency(void *arg)
376 } 376 }
377 } 377 }
378unlock: 378unlock:
379 intel_runtime_pm_put(i915); 379 intel_runtime_pm_put_unchecked(i915);
380 mutex_unlock(&i915->drm.struct_mutex); 380 mutex_unlock(&i915->drm.struct_mutex);
381 kfree(offsets); 381 kfree(offsets);
382 return err; 382 return err;
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
index d00cdf3c2939..6e1a0711d201 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
@@ -243,7 +243,7 @@ static int live_nop_switch(void *arg)
243 } 243 }
244 244
245out_unlock: 245out_unlock:
246 intel_runtime_pm_put(i915); 246 intel_runtime_pm_put_unchecked(i915);
247 mutex_unlock(&i915->drm.struct_mutex); 247 mutex_unlock(&i915->drm.struct_mutex);
248 mock_file_free(i915, file); 248 mock_file_free(i915, file);
249 return err; 249 return err;
@@ -609,7 +609,7 @@ static int igt_ctx_exec(void *arg)
609 609
610 intel_runtime_pm_get(i915); 610 intel_runtime_pm_get(i915);
611 err = gpu_fill(obj, ctx, engine, dw); 611 err = gpu_fill(obj, ctx, engine, dw);
612 intel_runtime_pm_put(i915); 612 intel_runtime_pm_put_unchecked(i915);
613 if (err) { 613 if (err) {
614 pr_err("Failed to fill dword %lu [%lu/%lu] with gpu (%s) in ctx %u [full-ppgtt? %s], err=%d\n", 614 pr_err("Failed to fill dword %lu [%lu/%lu] with gpu (%s) in ctx %u [full-ppgtt? %s], err=%d\n",
615 ndwords, dw, max_dwords(obj), 615 ndwords, dw, max_dwords(obj),
@@ -715,7 +715,7 @@ static int igt_ctx_readonly(void *arg)
715 715
716 intel_runtime_pm_get(i915); 716 intel_runtime_pm_get(i915);
717 err = gpu_fill(obj, ctx, engine, dw); 717 err = gpu_fill(obj, ctx, engine, dw);
718 intel_runtime_pm_put(i915); 718 intel_runtime_pm_put_unchecked(i915);
719 if (err) { 719 if (err) {
720 pr_err("Failed to fill dword %lu [%lu/%lu] with gpu (%s) in ctx %u [full-ppgtt? %s], err=%d\n", 720 pr_err("Failed to fill dword %lu [%lu/%lu] with gpu (%s) in ctx %u [full-ppgtt? %s], err=%d\n",
721 ndwords, dw, max_dwords(obj), 721 ndwords, dw, max_dwords(obj),
@@ -1067,7 +1067,7 @@ static int igt_vm_isolation(void *arg)
1067 count, RUNTIME_INFO(i915)->num_rings); 1067 count, RUNTIME_INFO(i915)->num_rings);
1068 1068
1069out_rpm: 1069out_rpm:
1070 intel_runtime_pm_put(i915); 1070 intel_runtime_pm_put_unchecked(i915);
1071out_unlock: 1071out_unlock:
1072 if (end_live_test(&t)) 1072 if (end_live_test(&t))
1073 err = -EIO; 1073 err = -EIO;
@@ -1200,7 +1200,7 @@ out_unlock:
1200 if (igt_flush_test(i915, I915_WAIT_LOCKED)) 1200 if (igt_flush_test(i915, I915_WAIT_LOCKED))
1201 err = -EIO; 1201 err = -EIO;
1202 1202
1203 intel_runtime_pm_put(i915); 1203 intel_runtime_pm_put_unchecked(i915);
1204 mutex_unlock(&i915->drm.struct_mutex); 1204 mutex_unlock(&i915->drm.struct_mutex);
1205 1205
1206 kernel_context_close(ctx); 1206 kernel_context_close(ctx);
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
index 4365979d8222..8d22f73a9b63 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
@@ -464,7 +464,7 @@ out_locked:
464 } 464 }
465 if (drm_mm_node_allocated(&hole)) 465 if (drm_mm_node_allocated(&hole))
466 drm_mm_remove_node(&hole); 466 drm_mm_remove_node(&hole);
467 intel_runtime_pm_put(i915); 467 intel_runtime_pm_put_unchecked(i915);
468 mutex_unlock(&i915->drm.struct_mutex); 468 mutex_unlock(&i915->drm.struct_mutex);
469 469
470 return err; 470 return err;
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
index a9ed0ecc94e2..87cb0602a5fc 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
@@ -295,7 +295,7 @@ static int lowlevel_hole(struct drm_i915_private *i915,
295 295
296 intel_runtime_pm_get(i915); 296 intel_runtime_pm_get(i915);
297 vm->insert_entries(vm, &mock_vma, I915_CACHE_NONE, 0); 297 vm->insert_entries(vm, &mock_vma, I915_CACHE_NONE, 0);
298 intel_runtime_pm_put(i915); 298 intel_runtime_pm_put_unchecked(i915);
299 } 299 }
300 count = n; 300 count = n;
301 301
@@ -1216,7 +1216,7 @@ static int igt_ggtt_page(void *arg)
1216 kfree(order); 1216 kfree(order);
1217out_remove: 1217out_remove:
1218 ggtt->vm.clear_range(&ggtt->vm, tmp.start, tmp.size); 1218 ggtt->vm.clear_range(&ggtt->vm, tmp.start, tmp.size);
1219 intel_runtime_pm_put(i915); 1219 intel_runtime_pm_put_unchecked(i915);
1220 drm_mm_remove_node(&tmp); 1220 drm_mm_remove_node(&tmp);
1221out_unpin: 1221out_unpin:
1222 i915_gem_object_unpin_pages(obj); 1222 i915_gem_object_unpin_pages(obj);
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_object.c b/drivers/gpu/drm/i915/selftests/i915_gem_object.c
index be7ecb66ad11..b03890c590d7 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_object.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_object.c
@@ -444,7 +444,7 @@ next_tiling: ;
444 } 444 }
445 445
446out_unlock: 446out_unlock:
447 intel_runtime_pm_put(i915); 447 intel_runtime_pm_put_unchecked(i915);
448 mutex_unlock(&i915->drm.struct_mutex); 448 mutex_unlock(&i915->drm.struct_mutex);
449 i915_gem_object_unpin_pages(obj); 449 i915_gem_object_unpin_pages(obj);
450out: 450out:
@@ -508,7 +508,7 @@ static void disable_retire_worker(struct drm_i915_private *i915)
508 if (!i915->gt.active_requests++) { 508 if (!i915->gt.active_requests++) {
509 intel_runtime_pm_get(i915); 509 intel_runtime_pm_get(i915);
510 i915_gem_unpark(i915); 510 i915_gem_unpark(i915);
511 intel_runtime_pm_put(i915); 511 intel_runtime_pm_put_unchecked(i915);
512 } 512 }
513 mutex_unlock(&i915->drm.struct_mutex); 513 mutex_unlock(&i915->drm.struct_mutex);
514 cancel_delayed_work_sync(&i915->gt.retire_work); 514 cancel_delayed_work_sync(&i915->gt.retire_work);
@@ -590,7 +590,7 @@ static int igt_mmap_offset_exhaustion(void *arg)
590 mutex_lock(&i915->drm.struct_mutex); 590 mutex_lock(&i915->drm.struct_mutex);
591 intel_runtime_pm_get(i915); 591 intel_runtime_pm_get(i915);
592 err = make_obj_busy(obj); 592 err = make_obj_busy(obj);
593 intel_runtime_pm_put(i915); 593 intel_runtime_pm_put_unchecked(i915);
594 mutex_unlock(&i915->drm.struct_mutex); 594 mutex_unlock(&i915->drm.struct_mutex);
595 if (err) { 595 if (err) {
596 pr_err("[loop %d] Failed to busy the object\n", loop); 596 pr_err("[loop %d] Failed to busy the object\n", loop);
diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c b/drivers/gpu/drm/i915/selftests/i915_request.c
index 07e557815308..e8880cabd5c7 100644
--- a/drivers/gpu/drm/i915/selftests/i915_request.c
+++ b/drivers/gpu/drm/i915/selftests/i915_request.c
@@ -403,7 +403,7 @@ static int live_nop_request(void *arg)
403 } 403 }
404 404
405out_unlock: 405out_unlock:
406 intel_runtime_pm_put(i915); 406 intel_runtime_pm_put_unchecked(i915);
407 mutex_unlock(&i915->drm.struct_mutex); 407 mutex_unlock(&i915->drm.struct_mutex);
408 return err; 408 return err;
409} 409}
@@ -553,7 +553,7 @@ out_batch:
553 i915_vma_unpin(batch); 553 i915_vma_unpin(batch);
554 i915_vma_put(batch); 554 i915_vma_put(batch);
555out_unlock: 555out_unlock:
556 intel_runtime_pm_put(i915); 556 intel_runtime_pm_put_unchecked(i915);
557 mutex_unlock(&i915->drm.struct_mutex); 557 mutex_unlock(&i915->drm.struct_mutex);
558 return err; 558 return err;
559} 559}
@@ -731,7 +731,7 @@ out_request:
731 i915_vma_unpin(batch); 731 i915_vma_unpin(batch);
732 i915_vma_put(batch); 732 i915_vma_put(batch);
733out_unlock: 733out_unlock:
734 intel_runtime_pm_put(i915); 734 intel_runtime_pm_put_unchecked(i915);
735 mutex_unlock(&i915->drm.struct_mutex); 735 mutex_unlock(&i915->drm.struct_mutex);
736 return err; 736 return err;
737} 737}
@@ -860,7 +860,7 @@ out_request:
860 i915_request_put(request[id]); 860 i915_request_put(request[id]);
861 } 861 }
862out_unlock: 862out_unlock:
863 intel_runtime_pm_put(i915); 863 intel_runtime_pm_put_unchecked(i915);
864 mutex_unlock(&i915->drm.struct_mutex); 864 mutex_unlock(&i915->drm.struct_mutex);
865 return err; 865 return err;
866} 866}
diff --git a/drivers/gpu/drm/i915/selftests/intel_guc.c b/drivers/gpu/drm/i915/selftests/intel_guc.c
index 32cba4cae31a..3590ba3d8897 100644
--- a/drivers/gpu/drm/i915/selftests/intel_guc.c
+++ b/drivers/gpu/drm/i915/selftests/intel_guc.c
@@ -225,7 +225,7 @@ out:
225 guc_clients_create(guc); 225 guc_clients_create(guc);
226 guc_clients_enable(guc); 226 guc_clients_enable(guc);
227unlock: 227unlock:
228 intel_runtime_pm_put(dev_priv); 228 intel_runtime_pm_put_unchecked(dev_priv);
229 mutex_unlock(&dev_priv->drm.struct_mutex); 229 mutex_unlock(&dev_priv->drm.struct_mutex);
230 return err; 230 return err;
231} 231}
@@ -337,7 +337,7 @@ out:
337 guc_client_free(clients[i]); 337 guc_client_free(clients[i]);
338 } 338 }
339unlock: 339unlock:
340 intel_runtime_pm_put(dev_priv); 340 intel_runtime_pm_put_unchecked(dev_priv);
341 mutex_unlock(&dev_priv->drm.struct_mutex); 341 mutex_unlock(&dev_priv->drm.struct_mutex);
342 return err; 342 return err;
343} 343}
diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
index 797cf5e6d6d4..58cba8188bd2 100644
--- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
+++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
@@ -402,7 +402,7 @@ static int igt_wedged_reset(void *arg)
402 i915_reset(i915, ALL_ENGINES, NULL); 402 i915_reset(i915, ALL_ENGINES, NULL);
403 GEM_BUG_ON(test_bit(I915_RESET_HANDOFF, &i915->gpu_error.flags)); 403 GEM_BUG_ON(test_bit(I915_RESET_HANDOFF, &i915->gpu_error.flags));
404 404
405 intel_runtime_pm_put(i915); 405 intel_runtime_pm_put_unchecked(i915);
406 mutex_unlock(&i915->drm.struct_mutex); 406 mutex_unlock(&i915->drm.struct_mutex);
407 igt_global_reset_unlock(i915); 407 igt_global_reset_unlock(i915);
408 408
@@ -1636,7 +1636,7 @@ out:
1636 force_reset(i915); 1636 force_reset(i915);
1637 1637
1638unlock: 1638unlock:
1639 intel_runtime_pm_put(i915); 1639 intel_runtime_pm_put_unchecked(i915);
1640 mutex_unlock(&i915->drm.struct_mutex); 1640 mutex_unlock(&i915->drm.struct_mutex);
1641 igt_global_reset_unlock(i915); 1641 igt_global_reset_unlock(i915);
1642 1642
@@ -1679,7 +1679,7 @@ int intel_hangcheck_live_selftests(struct drm_i915_private *i915)
1679 mutex_unlock(&i915->drm.struct_mutex); 1679 mutex_unlock(&i915->drm.struct_mutex);
1680 1680
1681 i915_modparams.enable_hangcheck = saved_hangcheck; 1681 i915_modparams.enable_hangcheck = saved_hangcheck;
1682 intel_runtime_pm_put(i915); 1682 intel_runtime_pm_put_unchecked(i915);
1683 1683
1684 return err; 1684 return err;
1685} 1685}
diff --git a/drivers/gpu/drm/i915/selftests/intel_lrc.c b/drivers/gpu/drm/i915/selftests/intel_lrc.c
index 00caaa00f02f..ac1b18a17f3c 100644
--- a/drivers/gpu/drm/i915/selftests/intel_lrc.c
+++ b/drivers/gpu/drm/i915/selftests/intel_lrc.c
@@ -65,7 +65,7 @@ err_spin:
65 igt_spinner_fini(&spin); 65 igt_spinner_fini(&spin);
66err_unlock: 66err_unlock:
67 igt_flush_test(i915, I915_WAIT_LOCKED); 67 igt_flush_test(i915, I915_WAIT_LOCKED);
68 intel_runtime_pm_put(i915); 68 intel_runtime_pm_put_unchecked(i915);
69 mutex_unlock(&i915->drm.struct_mutex); 69 mutex_unlock(&i915->drm.struct_mutex);
70 return err; 70 return err;
71} 71}
@@ -158,7 +158,7 @@ err_spin_hi:
158 igt_spinner_fini(&spin_hi); 158 igt_spinner_fini(&spin_hi);
159err_unlock: 159err_unlock:
160 igt_flush_test(i915, I915_WAIT_LOCKED); 160 igt_flush_test(i915, I915_WAIT_LOCKED);
161 intel_runtime_pm_put(i915); 161 intel_runtime_pm_put_unchecked(i915);
162 mutex_unlock(&i915->drm.struct_mutex); 162 mutex_unlock(&i915->drm.struct_mutex);
163 return err; 163 return err;
164} 164}
@@ -251,7 +251,7 @@ err_spin_hi:
251 igt_spinner_fini(&spin_hi); 251 igt_spinner_fini(&spin_hi);
252err_unlock: 252err_unlock:
253 igt_flush_test(i915, I915_WAIT_LOCKED); 253 igt_flush_test(i915, I915_WAIT_LOCKED);
254 intel_runtime_pm_put(i915); 254 intel_runtime_pm_put_unchecked(i915);
255 mutex_unlock(&i915->drm.struct_mutex); 255 mutex_unlock(&i915->drm.struct_mutex);
256 return err; 256 return err;
257 257
@@ -374,7 +374,7 @@ err_spin_hi:
374 igt_spinner_fini(&spin_hi); 374 igt_spinner_fini(&spin_hi);
375err_unlock: 375err_unlock:
376 igt_flush_test(i915, I915_WAIT_LOCKED); 376 igt_flush_test(i915, I915_WAIT_LOCKED);
377 intel_runtime_pm_put(i915); 377 intel_runtime_pm_put_unchecked(i915);
378 mutex_unlock(&i915->drm.struct_mutex); 378 mutex_unlock(&i915->drm.struct_mutex);
379 return err; 379 return err;
380} 380}
@@ -627,7 +627,7 @@ err_ctx:
627err_batch: 627err_batch:
628 i915_gem_object_put(smoke.batch); 628 i915_gem_object_put(smoke.batch);
629err_unlock: 629err_unlock:
630 intel_runtime_pm_put(smoke.i915); 630 intel_runtime_pm_put_unchecked(smoke.i915);
631 mutex_unlock(&smoke.i915->drm.struct_mutex); 631 mutex_unlock(&smoke.i915->drm.struct_mutex);
632 kfree(smoke.contexts); 632 kfree(smoke.contexts);
633 633
diff --git a/drivers/gpu/drm/i915/selftests/intel_workarounds.c b/drivers/gpu/drm/i915/selftests/intel_workarounds.c
index 8b3f3200a3bd..b1b39c70c702 100644
--- a/drivers/gpu/drm/i915/selftests/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/selftests/intel_workarounds.c
@@ -94,7 +94,7 @@ read_nonprivs(struct i915_gem_context *ctx, struct intel_engine_cs *engine)
94 94
95 intel_runtime_pm_get(engine->i915); 95 intel_runtime_pm_get(engine->i915);
96 rq = i915_request_alloc(engine, ctx); 96 rq = i915_request_alloc(engine, ctx);
97 intel_runtime_pm_put(engine->i915); 97 intel_runtime_pm_put_unchecked(engine->i915);
98 if (IS_ERR(rq)) { 98 if (IS_ERR(rq)) {
99 err = PTR_ERR(rq); 99 err = PTR_ERR(rq);
100 goto err_pin; 100 goto err_pin;
@@ -241,7 +241,7 @@ switch_to_scratch_context(struct intel_engine_cs *engine,
241 else 241 else
242 rq = i915_request_alloc(engine, ctx); 242 rq = i915_request_alloc(engine, ctx);
243 243
244 intel_runtime_pm_put(engine->i915); 244 intel_runtime_pm_put_unchecked(engine->i915);
245 245
246 kernel_context_close(ctx); 246 kernel_context_close(ctx);
247 247
@@ -300,7 +300,7 @@ static int check_whitelist_across_reset(struct intel_engine_cs *engine,
300 300
301 intel_runtime_pm_get(i915); 301 intel_runtime_pm_get(i915);
302 err = reset(engine); 302 err = reset(engine);
303 intel_runtime_pm_put(i915); 303 intel_runtime_pm_put_unchecked(i915);
304 304
305 if (want_spin) { 305 if (want_spin) {
306 igt_spinner_end(&spin); 306 igt_spinner_end(&spin);
@@ -414,7 +414,7 @@ live_gpu_reset_gt_engine_workarounds(void *arg)
414 414
415out: 415out:
416 reference_lists_fini(i915, &lists); 416 reference_lists_fini(i915, &lists);
417 intel_runtime_pm_put(i915); 417 intel_runtime_pm_put_unchecked(i915);
418 igt_global_reset_unlock(i915); 418 igt_global_reset_unlock(i915);
419 419
420 return ok ? 0 : -ESRCH; 420 return ok ? 0 : -ESRCH;
@@ -496,7 +496,7 @@ live_engine_reset_gt_engine_workarounds(void *arg)
496 496
497err: 497err:
498 reference_lists_fini(i915, &lists); 498 reference_lists_fini(i915, &lists);
499 intel_runtime_pm_put(i915); 499 intel_runtime_pm_put_unchecked(i915);
500 igt_global_reset_unlock(i915); 500 igt_global_reset_unlock(i915);
501 kernel_context_close(ctx); 501 kernel_context_close(ctx);
502 502