@@ -51,22 +51,20 @@ static struct i915_vma *create_scratch(struct intel_gt *gt)
51
51
return vma ;
52
52
}
53
53
54
- static void engine_heartbeat_disable (struct intel_engine_cs * engine ,
55
- unsigned long * saved )
54
+ static void engine_heartbeat_disable (struct intel_engine_cs * engine )
56
55
{
57
- * saved = engine -> props .heartbeat_interval_ms ;
58
56
engine -> props .heartbeat_interval_ms = 0 ;
59
57
60
58
intel_engine_pm_get (engine );
61
59
intel_engine_park_heartbeat (engine );
62
60
}
63
61
64
- static void engine_heartbeat_enable (struct intel_engine_cs * engine ,
65
- unsigned long saved )
62
+ static void engine_heartbeat_enable (struct intel_engine_cs * engine )
66
63
{
67
64
intel_engine_pm_put (engine );
68
65
69
- engine -> props .heartbeat_interval_ms = saved ;
66
+ engine -> props .heartbeat_interval_ms =
67
+ engine -> defaults .heartbeat_interval_ms ;
70
68
}
71
69
72
70
static bool is_active (struct i915_request * rq )
@@ -224,7 +222,6 @@ static int live_unlite_restore(struct intel_gt *gt, int prio)
224
222
struct intel_context * ce [2 ] = {};
225
223
struct i915_request * rq [2 ];
226
224
struct igt_live_test t ;
227
- unsigned long saved ;
228
225
int n ;
229
226
230
227
if (prio && !intel_engine_has_preemption (engine ))
@@ -237,7 +234,7 @@ static int live_unlite_restore(struct intel_gt *gt, int prio)
237
234
err = - EIO ;
238
235
break ;
239
236
}
240
- engine_heartbeat_disable (engine , & saved );
237
+ engine_heartbeat_disable (engine );
241
238
242
239
for (n = 0 ; n < ARRAY_SIZE (ce ); n ++ ) {
243
240
struct intel_context * tmp ;
@@ -345,7 +342,7 @@ static int live_unlite_restore(struct intel_gt *gt, int prio)
345
342
intel_context_put (ce [n ]);
346
343
}
347
344
348
- engine_heartbeat_enable (engine , saved );
345
+ engine_heartbeat_enable (engine );
349
346
if (igt_live_test_end (& t ))
350
347
err = - EIO ;
351
348
if (err )
@@ -466,7 +463,6 @@ static int live_hold_reset(void *arg)
466
463
467
464
for_each_engine (engine , gt , id ) {
468
465
struct intel_context * ce ;
469
- unsigned long heartbeat ;
470
466
struct i915_request * rq ;
471
467
472
468
ce = intel_context_create (engine );
@@ -475,7 +471,7 @@ static int live_hold_reset(void *arg)
475
471
break ;
476
472
}
477
473
478
- engine_heartbeat_disable (engine , & heartbeat );
474
+ engine_heartbeat_disable (engine );
479
475
480
476
rq = igt_spinner_create_request (& spin , ce , MI_ARB_CHECK );
481
477
if (IS_ERR (rq )) {
@@ -535,7 +531,7 @@ static int live_hold_reset(void *arg)
535
531
i915_request_put (rq );
536
532
537
533
out :
538
- engine_heartbeat_enable (engine , heartbeat );
534
+ engine_heartbeat_enable (engine );
539
535
intel_context_put (ce );
540
536
if (err )
541
537
break ;
@@ -580,10 +576,9 @@ static int live_error_interrupt(void *arg)
580
576
581
577
for_each_engine (engine , gt , id ) {
582
578
const struct error_phase * p ;
583
- unsigned long heartbeat ;
584
579
int err = 0 ;
585
580
586
- engine_heartbeat_disable (engine , & heartbeat );
581
+ engine_heartbeat_disable (engine );
587
582
588
583
for (p = phases ; p -> error [0 ] != GOOD ; p ++ ) {
589
584
struct i915_request * client [ARRAY_SIZE (phases -> error )];
@@ -682,7 +677,7 @@ static int live_error_interrupt(void *arg)
682
677
}
683
678
}
684
679
685
- engine_heartbeat_enable (engine , heartbeat );
680
+ engine_heartbeat_enable (engine );
686
681
if (err ) {
687
682
intel_gt_set_wedged (gt );
688
683
return err ;
@@ -895,16 +890,14 @@ static int live_timeslice_preempt(void *arg)
895
890
enum intel_engine_id id ;
896
891
897
892
for_each_engine (engine , gt , id ) {
898
- unsigned long saved ;
899
-
900
893
if (!intel_engine_has_preemption (engine ))
901
894
continue ;
902
895
903
896
memset (vaddr , 0 , PAGE_SIZE );
904
897
905
- engine_heartbeat_disable (engine , & saved );
898
+ engine_heartbeat_disable (engine );
906
899
err = slice_semaphore_queue (engine , vma , count );
907
- engine_heartbeat_enable (engine , saved );
900
+ engine_heartbeat_enable (engine );
908
901
if (err )
909
902
goto err_pin ;
910
903
@@ -1009,7 +1002,6 @@ static int live_timeslice_rewind(void *arg)
1009
1002
enum { X = 1 , Z , Y };
1010
1003
struct i915_request * rq [3 ] = {};
1011
1004
struct intel_context * ce ;
1012
- unsigned long heartbeat ;
1013
1005
unsigned long timeslice ;
1014
1006
int i , err = 0 ;
1015
1007
u32 * slot ;
@@ -1028,7 +1020,7 @@ static int live_timeslice_rewind(void *arg)
1028
1020
* Expect execution/evaluation order XZY
1029
1021
*/
1030
1022
1031
- engine_heartbeat_disable (engine , & heartbeat );
1023
+ engine_heartbeat_disable (engine );
1032
1024
timeslice = xchg (& engine -> props .timeslice_duration_ms , 1 );
1033
1025
1034
1026
slot = memset32 (engine -> status_page .addr + 1000 , 0 , 4 );
@@ -1122,7 +1114,7 @@ static int live_timeslice_rewind(void *arg)
1122
1114
wmb ();
1123
1115
1124
1116
engine -> props .timeslice_duration_ms = timeslice ;
1125
- engine_heartbeat_enable (engine , heartbeat );
1117
+ engine_heartbeat_enable (engine );
1126
1118
for (i = 0 ; i < 3 ; i ++ )
1127
1119
i915_request_put (rq [i ]);
1128
1120
if (igt_flush_test (gt -> i915 ))
@@ -1202,12 +1194,11 @@ static int live_timeslice_queue(void *arg)
1202
1194
.priority = I915_USER_PRIORITY (I915_PRIORITY_MAX ),
1203
1195
};
1204
1196
struct i915_request * rq , * nop ;
1205
- unsigned long saved ;
1206
1197
1207
1198
if (!intel_engine_has_preemption (engine ))
1208
1199
continue ;
1209
1200
1210
- engine_heartbeat_disable (engine , & saved );
1201
+ engine_heartbeat_disable (engine );
1211
1202
memset (vaddr , 0 , PAGE_SIZE );
1212
1203
1213
1204
/* ELSP[0]: semaphore wait */
@@ -1284,7 +1275,7 @@ static int live_timeslice_queue(void *arg)
1284
1275
err_rq :
1285
1276
i915_request_put (rq );
1286
1277
err_heartbeat :
1287
- engine_heartbeat_enable (engine , saved );
1278
+ engine_heartbeat_enable (engine );
1288
1279
if (err )
1289
1280
break ;
1290
1281
}
@@ -4153,7 +4144,6 @@ static int reset_virtual_engine(struct intel_gt *gt,
4153
4144
{
4154
4145
struct intel_engine_cs * engine ;
4155
4146
struct intel_context * ve ;
4156
- unsigned long * heartbeat ;
4157
4147
struct igt_spinner spin ;
4158
4148
struct i915_request * rq ;
4159
4149
unsigned int n ;
@@ -4165,23 +4155,17 @@ static int reset_virtual_engine(struct intel_gt *gt,
4165
4155
* descendents are not executed while the capture is in progress.
4166
4156
*/
4167
4157
4168
- heartbeat = kmalloc_array (nsibling , sizeof (* heartbeat ), GFP_KERNEL );
4169
- if (!heartbeat )
4158
+ if (igt_spinner_init (& spin , gt ))
4170
4159
return - ENOMEM ;
4171
4160
4172
- if (igt_spinner_init (& spin , gt )) {
4173
- err = - ENOMEM ;
4174
- goto out_free ;
4175
- }
4176
-
4177
4161
ve = intel_execlists_create_virtual (siblings , nsibling );
4178
4162
if (IS_ERR (ve )) {
4179
4163
err = PTR_ERR (ve );
4180
4164
goto out_spin ;
4181
4165
}
4182
4166
4183
4167
for (n = 0 ; n < nsibling ; n ++ )
4184
- engine_heartbeat_disable (siblings [n ], & heartbeat [ n ] );
4168
+ engine_heartbeat_disable (siblings [n ]);
4185
4169
4186
4170
rq = igt_spinner_create_request (& spin , ve , MI_ARB_CHECK );
4187
4171
if (IS_ERR (rq )) {
@@ -4252,13 +4236,11 @@ static int reset_virtual_engine(struct intel_gt *gt,
4252
4236
i915_request_put (rq );
4253
4237
out_heartbeat :
4254
4238
for (n = 0 ; n < nsibling ; n ++ )
4255
- engine_heartbeat_enable (siblings [n ], heartbeat [ n ] );
4239
+ engine_heartbeat_enable (siblings [n ]);
4256
4240
4257
4241
intel_context_put (ve );
4258
4242
out_spin :
4259
4243
igt_spinner_fini (& spin );
4260
- out_free :
4261
- kfree (heartbeat );
4262
4244
return err ;
4263
4245
}
4264
4246
@@ -4932,9 +4914,7 @@ static int live_lrc_gpr(void *arg)
4932
4914
return PTR_ERR (scratch );
4933
4915
4934
4916
for_each_engine (engine , gt , id ) {
4935
- unsigned long heartbeat ;
4936
-
4937
- engine_heartbeat_disable (engine , & heartbeat );
4917
+ engine_heartbeat_disable (engine );
4938
4918
4939
4919
err = __live_lrc_gpr (engine , scratch , false);
4940
4920
if (err )
@@ -4945,7 +4925,7 @@ static int live_lrc_gpr(void *arg)
4945
4925
goto err ;
4946
4926
4947
4927
err :
4948
- engine_heartbeat_enable (engine , heartbeat );
4928
+ engine_heartbeat_enable (engine );
4949
4929
if (igt_flush_test (gt -> i915 ))
4950
4930
err = - EIO ;
4951
4931
if (err )
@@ -5092,10 +5072,9 @@ static int live_lrc_timestamp(void *arg)
5092
5072
*/
5093
5073
5094
5074
for_each_engine (data .engine , gt , id ) {
5095
- unsigned long heartbeat ;
5096
5075
int i , err = 0 ;
5097
5076
5098
- engine_heartbeat_disable (data .engine , & heartbeat );
5077
+ engine_heartbeat_disable (data .engine );
5099
5078
5100
5079
for (i = 0 ; i < ARRAY_SIZE (data .ce ); i ++ ) {
5101
5080
struct intel_context * tmp ;
@@ -5128,7 +5107,7 @@ static int live_lrc_timestamp(void *arg)
5128
5107
}
5129
5108
5130
5109
err :
5131
- engine_heartbeat_enable (data .engine , heartbeat );
5110
+ engine_heartbeat_enable (data .engine );
5132
5111
for (i = 0 ; i < ARRAY_SIZE (data .ce ); i ++ ) {
5133
5112
if (!data .ce [i ])
5134
5113
break ;
0 commit comments