@@ -953,9 +953,9 @@ static int i915_gpu_info_open(struct inode *inode, struct file *file)
953
953
struct i915_gpu_state * gpu ;
954
954
intel_wakeref_t wakeref ;
955
955
956
- wakeref = intel_runtime_pm_get ( i915 ) ;
957
- gpu = i915_capture_gpu_state (i915 );
958
- intel_runtime_pm_put (i915 , wakeref );
956
+ gpu = NULL ;
957
+ with_intel_runtime_pm (i915 , wakeref )
958
+ gpu = i915_capture_gpu_state (i915 );
959
959
if (IS_ERR (gpu ))
960
960
return PTR_ERR (gpu );
961
961
@@ -1287,17 +1287,15 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
1287
1287
return 0 ;
1288
1288
}
1289
1289
1290
- wakeref = intel_runtime_pm_get (dev_priv );
1290
+ with_intel_runtime_pm (dev_priv , wakeref ) {
1291
+ for_each_engine (engine , dev_priv , id ) {
1292
+ acthd [id ] = intel_engine_get_active_head (engine );
1293
+ seqno [id ] = intel_engine_get_seqno (engine );
1294
+ }
1291
1295
1292
- for_each_engine (engine , dev_priv , id ) {
1293
- acthd [id ] = intel_engine_get_active_head (engine );
1294
- seqno [id ] = intel_engine_get_seqno (engine );
1296
+ intel_engine_get_instdone (dev_priv -> engine [RCS ], & instdone );
1295
1297
}
1296
1298
1297
- intel_engine_get_instdone (dev_priv -> engine [RCS ], & instdone );
1298
-
1299
- intel_runtime_pm_put (dev_priv , wakeref );
1300
-
1301
1299
if (timer_pending (& dev_priv -> gpu_error .hangcheck_work .timer ))
1302
1300
seq_printf (m , "Hangcheck active, timer fires in %dms\n" ,
1303
1301
jiffies_to_msecs (dev_priv -> gpu_error .hangcheck_work .timer .expires -
@@ -1573,18 +1571,16 @@ static int i915_drpc_info(struct seq_file *m, void *unused)
1573
1571
{
1574
1572
struct drm_i915_private * dev_priv = node_to_i915 (m -> private );
1575
1573
intel_wakeref_t wakeref ;
1576
- int err ;
1577
-
1578
- wakeref = intel_runtime_pm_get (dev_priv );
1579
-
1580
- if (IS_VALLEYVIEW (dev_priv ) || IS_CHERRYVIEW (dev_priv ))
1581
- err = vlv_drpc_info (m );
1582
- else if (INTEL_GEN (dev_priv ) >= 6 )
1583
- err = gen6_drpc_info (m );
1584
- else
1585
- err = ironlake_drpc_info (m );
1574
+ int err = - ENODEV ;
1586
1575
1587
- intel_runtime_pm_put (dev_priv , wakeref );
1576
+ with_intel_runtime_pm (dev_priv , wakeref ) {
1577
+ if (IS_VALLEYVIEW (dev_priv ) || IS_CHERRYVIEW (dev_priv ))
1578
+ err = vlv_drpc_info (m );
1579
+ else if (INTEL_GEN (dev_priv ) >= 6 )
1580
+ err = gen6_drpc_info (m );
1581
+ else
1582
+ err = ironlake_drpc_info (m );
1583
+ }
1588
1584
1589
1585
return err ;
1590
1586
}
@@ -2068,8 +2064,7 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
2068
2064
intel_wakeref_t wakeref ;
2069
2065
struct drm_file * file ;
2070
2066
2071
- wakeref = intel_runtime_pm_get_if_in_use (dev_priv );
2072
- if (wakeref ) {
2067
+ with_intel_runtime_pm_if_in_use (dev_priv , wakeref ) {
2073
2068
if (IS_VALLEYVIEW (dev_priv ) || IS_CHERRYVIEW (dev_priv )) {
2074
2069
mutex_lock (& dev_priv -> pcu_lock );
2075
2070
act_freq = vlv_punit_read (dev_priv ,
@@ -2080,7 +2075,6 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
2080
2075
act_freq = intel_get_cagf (dev_priv ,
2081
2076
I915_READ (GEN6_RPSTAT1 ));
2082
2077
}
2083
- intel_runtime_pm_put (dev_priv , wakeref );
2084
2078
}
2085
2079
2086
2080
seq_printf (m , "RPS enabled? %d\n" , rps -> enabled );
@@ -2172,9 +2166,8 @@ static int i915_huc_load_status_info(struct seq_file *m, void *data)
2172
2166
p = drm_seq_file_printer (m );
2173
2167
intel_uc_fw_dump (& dev_priv -> huc .fw , & p );
2174
2168
2175
- wakeref = intel_runtime_pm_get (dev_priv );
2176
- seq_printf (m , "\nHuC status 0x%08x:\n" , I915_READ (HUC_STATUS2 ));
2177
- intel_runtime_pm_put (dev_priv , wakeref );
2169
+ with_intel_runtime_pm (dev_priv , wakeref )
2170
+ seq_printf (m , "\nHuC status 0x%08x:\n" , I915_READ (HUC_STATUS2 ));
2178
2171
2179
2172
return 0 ;
2180
2173
}
@@ -2184,30 +2177,30 @@ static int i915_guc_load_status_info(struct seq_file *m, void *data)
2184
2177
struct drm_i915_private * dev_priv = node_to_i915 (m -> private );
2185
2178
intel_wakeref_t wakeref ;
2186
2179
struct drm_printer p ;
2187
- u32 tmp , i ;
2188
2180
2189
2181
if (!HAS_GUC (dev_priv ))
2190
2182
return - ENODEV ;
2191
2183
2192
2184
p = drm_seq_file_printer (m );
2193
2185
intel_uc_fw_dump (& dev_priv -> guc .fw , & p );
2194
2186
2195
- wakeref = intel_runtime_pm_get (dev_priv );
2196
-
2197
- tmp = I915_READ (GUC_STATUS );
2198
-
2199
- seq_printf (m , "\nGuC status 0x%08x:\n" , tmp );
2200
- seq_printf (m , "\tBootrom status = 0x%x\n" ,
2201
- (tmp & GS_BOOTROM_MASK ) >> GS_BOOTROM_SHIFT );
2202
- seq_printf (m , "\tuKernel status = 0x%x\n" ,
2203
- (tmp & GS_UKERNEL_MASK ) >> GS_UKERNEL_SHIFT );
2204
- seq_printf (m , "\tMIA Core status = 0x%x\n" ,
2205
- (tmp & GS_MIA_MASK ) >> GS_MIA_SHIFT );
2206
- seq_puts (m , "\nScratch registers:\n" );
2207
- for (i = 0 ; i < 16 ; i ++ )
2208
- seq_printf (m , "\t%2d: \t0x%x\n" , i , I915_READ (SOFT_SCRATCH (i )));
2209
-
2210
- intel_runtime_pm_put (dev_priv , wakeref );
2187
+ with_intel_runtime_pm (dev_priv , wakeref ) {
2188
+ u32 tmp = I915_READ (GUC_STATUS );
2189
+ u32 i ;
2190
+
2191
+ seq_printf (m , "\nGuC status 0x%08x:\n" , tmp );
2192
+ seq_printf (m , "\tBootrom status = 0x%x\n" ,
2193
+ (tmp & GS_BOOTROM_MASK ) >> GS_BOOTROM_SHIFT );
2194
+ seq_printf (m , "\tuKernel status = 0x%x\n" ,
2195
+ (tmp & GS_UKERNEL_MASK ) >> GS_UKERNEL_SHIFT );
2196
+ seq_printf (m , "\tMIA Core status = 0x%x\n" ,
2197
+ (tmp & GS_MIA_MASK ) >> GS_MIA_SHIFT );
2198
+ seq_puts (m , "\nScratch registers:\n" );
2199
+ for (i = 0 ; i < 16 ; i ++ ) {
2200
+ seq_printf (m , "\t%2d: \t0x%x\n" ,
2201
+ i , I915_READ (SOFT_SCRATCH (i )));
2202
+ }
2203
+ }
2211
2204
2212
2205
return 0 ;
2213
2206
}
@@ -2680,19 +2673,14 @@ static int i915_energy_uJ(struct seq_file *m, void *data)
2680
2673
if (INTEL_GEN (dev_priv ) < 6 )
2681
2674
return - ENODEV ;
2682
2675
2683
- wakeref = intel_runtime_pm_get (dev_priv );
2684
-
2685
- if (rdmsrl_safe (MSR_RAPL_POWER_UNIT , & power )) {
2686
- intel_runtime_pm_put (dev_priv , wakeref );
2676
+ if (rdmsrl_safe (MSR_RAPL_POWER_UNIT , & power ))
2687
2677
return - ENODEV ;
2688
- }
2689
2678
2690
2679
units = (power & 0x1f00 ) >> 8 ;
2691
- power = I915_READ (MCH_SECP_NRG_STTS );
2692
- power = (1000000 * power ) >> units ; /* convert to uJ */
2693
-
2694
- intel_runtime_pm_put (dev_priv , wakeref );
2680
+ with_intel_runtime_pm (dev_priv , wakeref )
2681
+ power = I915_READ (MCH_SECP_NRG_STTS );
2695
2682
2683
+ power = (1000000 * power ) >> units ; /* convert to uJ */
2696
2684
seq_printf (m , "%llu" , power );
2697
2685
2698
2686
return 0 ;
@@ -3275,22 +3263,20 @@ static ssize_t i915_ipc_status_write(struct file *file, const char __user *ubuf,
3275
3263
struct seq_file * m = file -> private_data ;
3276
3264
struct drm_i915_private * dev_priv = m -> private ;
3277
3265
intel_wakeref_t wakeref ;
3278
- int ret ;
3279
3266
bool enable ;
3267
+ int ret ;
3280
3268
3281
3269
ret = kstrtobool_from_user (ubuf , len , & enable );
3282
3270
if (ret < 0 )
3283
3271
return ret ;
3284
3272
3285
- wakeref = intel_runtime_pm_get (dev_priv );
3286
-
3287
- if (!dev_priv -> ipc_enabled && enable )
3288
- DRM_INFO ("Enabling IPC: WM will be proper only after next commit\n" );
3289
- dev_priv -> wm .distrust_bios_wm = true;
3290
- dev_priv -> ipc_enabled = enable ;
3291
- intel_enable_ipc (dev_priv );
3292
-
3293
- intel_runtime_pm_put (dev_priv , wakeref );
3273
+ with_intel_runtime_pm (dev_priv , wakeref ) {
3274
+ if (!dev_priv -> ipc_enabled && enable )
3275
+ DRM_INFO ("Enabling IPC: WM will be proper only after next commit\n" );
3276
+ dev_priv -> wm .distrust_bios_wm = true;
3277
+ dev_priv -> ipc_enabled = enable ;
3278
+ intel_enable_ipc (dev_priv );
3279
+ }
3294
3280
3295
3281
return len ;
3296
3282
}
@@ -4130,16 +4116,13 @@ i915_cache_sharing_get(void *data, u64 *val)
4130
4116
{
4131
4117
struct drm_i915_private * dev_priv = data ;
4132
4118
intel_wakeref_t wakeref ;
4133
- u32 snpcr ;
4119
+ u32 snpcr = 0 ;
4134
4120
4135
4121
if (!(IS_GEN_RANGE (dev_priv , 6 , 7 )))
4136
4122
return - ENODEV ;
4137
4123
4138
- wakeref = intel_runtime_pm_get (dev_priv );
4139
-
4140
- snpcr = I915_READ (GEN6_MBCUNIT_SNPCR );
4141
-
4142
- intel_runtime_pm_put (dev_priv , wakeref );
4124
+ with_intel_runtime_pm (dev_priv , wakeref )
4125
+ snpcr = I915_READ (GEN6_MBCUNIT_SNPCR );
4143
4126
4144
4127
* val = (snpcr & GEN6_MBC_SNPCR_MASK ) >> GEN6_MBC_SNPCR_SHIFT ;
4145
4128
@@ -4151,24 +4134,24 @@ i915_cache_sharing_set(void *data, u64 val)
4151
4134
{
4152
4135
struct drm_i915_private * dev_priv = data ;
4153
4136
intel_wakeref_t wakeref ;
4154
- u32 snpcr ;
4155
4137
4156
4138
if (!(IS_GEN_RANGE (dev_priv , 6 , 7 )))
4157
4139
return - ENODEV ;
4158
4140
4159
4141
if (val > 3 )
4160
4142
return - EINVAL ;
4161
4143
4162
- wakeref = intel_runtime_pm_get (dev_priv );
4163
4144
DRM_DEBUG_DRIVER ("Manually setting uncore sharing to %llu\n" , val );
4145
+ with_intel_runtime_pm (dev_priv , wakeref ) {
4146
+ u32 snpcr ;
4147
+
4148
+ /* Update the cache sharing policy here as well */
4149
+ snpcr = I915_READ (GEN6_MBCUNIT_SNPCR );
4150
+ snpcr &= ~GEN6_MBC_SNPCR_MASK ;
4151
+ snpcr |= val << GEN6_MBC_SNPCR_SHIFT ;
4152
+ I915_WRITE (GEN6_MBCUNIT_SNPCR , snpcr );
4153
+ }
4164
4154
4165
- /* Update the cache sharing policy here as well */
4166
- snpcr = I915_READ (GEN6_MBCUNIT_SNPCR );
4167
- snpcr &= ~GEN6_MBC_SNPCR_MASK ;
4168
- snpcr |= (val << GEN6_MBC_SNPCR_SHIFT );
4169
- I915_WRITE (GEN6_MBCUNIT_SNPCR , snpcr );
4170
-
4171
- intel_runtime_pm_put (dev_priv , wakeref );
4172
4155
return 0 ;
4173
4156
}
4174
4157
@@ -4405,20 +4388,17 @@ static int i915_sseu_status(struct seq_file *m, void *unused)
4405
4388
sseu .max_eus_per_subslice =
4406
4389
RUNTIME_INFO (dev_priv )-> sseu .max_eus_per_subslice ;
4407
4390
4408
- wakeref = intel_runtime_pm_get (dev_priv );
4409
-
4410
- if (IS_CHERRYVIEW (dev_priv )) {
4411
- cherryview_sseu_device_status (dev_priv , & sseu );
4412
- } else if (IS_BROADWELL (dev_priv )) {
4413
- broadwell_sseu_device_status (dev_priv , & sseu );
4414
- } else if (IS_GEN (dev_priv , 9 )) {
4415
- gen9_sseu_device_status (dev_priv , & sseu );
4416
- } else if (INTEL_GEN (dev_priv ) >= 10 ) {
4417
- gen10_sseu_device_status (dev_priv , & sseu );
4391
+ with_intel_runtime_pm (dev_priv , wakeref ) {
4392
+ if (IS_CHERRYVIEW (dev_priv ))
4393
+ cherryview_sseu_device_status (dev_priv , & sseu );
4394
+ else if (IS_BROADWELL (dev_priv ))
4395
+ broadwell_sseu_device_status (dev_priv , & sseu );
4396
+ else if (IS_GEN (dev_priv , 9 ))
4397
+ gen9_sseu_device_status (dev_priv , & sseu );
4398
+ else if (INTEL_GEN (dev_priv ) >= 10 )
4399
+ gen10_sseu_device_status (dev_priv , & sseu );
4418
4400
}
4419
4401
4420
- intel_runtime_pm_put (dev_priv , wakeref );
4421
-
4422
4402
i915_print_sseu_info (m , false, & sseu );
4423
4403
4424
4404
return 0 ;
0 commit comments