@@ -305,17 +305,11 @@ static enum hrtimer_restart uncore_pmu_hrtimer(struct hrtimer *hrtimer)
305
305
{
306
306
struct intel_uncore_box * box ;
307
307
struct perf_event * event ;
308
- unsigned long flags ;
309
308
int bit ;
310
309
311
310
box = container_of (hrtimer , struct intel_uncore_box , hrtimer );
312
311
if (!box -> n_active || box -> cpu != smp_processor_id ())
313
312
return HRTIMER_NORESTART ;
314
- /*
315
- * disable local interrupt to prevent uncore_pmu_event_start/stop
316
- * to interrupt the update process
317
- */
318
- local_irq_save (flags );
319
313
320
314
/*
321
315
* handle boxes with an active event list as opposed to active
@@ -328,16 +322,14 @@ static enum hrtimer_restart uncore_pmu_hrtimer(struct hrtimer *hrtimer)
328
322
for_each_set_bit (bit , box -> active_mask , UNCORE_PMC_IDX_MAX )
329
323
uncore_perf_event_update (box , box -> events [bit ]);
330
324
331
- local_irq_restore (flags );
332
-
333
325
hrtimer_forward_now (hrtimer , ns_to_ktime (box -> hrtimer_duration ));
334
326
return HRTIMER_RESTART ;
335
327
}
336
328
337
329
void uncore_pmu_start_hrtimer (struct intel_uncore_box * box )
338
330
{
339
331
hrtimer_start (& box -> hrtimer , ns_to_ktime (box -> hrtimer_duration ),
340
- HRTIMER_MODE_REL_PINNED );
332
+ HRTIMER_MODE_REL_PINNED_HARD );
341
333
}
342
334
343
335
void uncore_pmu_cancel_hrtimer (struct intel_uncore_box * box )
@@ -347,7 +339,7 @@ void uncore_pmu_cancel_hrtimer(struct intel_uncore_box *box)
347
339
348
340
static void uncore_pmu_init_hrtimer (struct intel_uncore_box * box )
349
341
{
350
- hrtimer_setup (& box -> hrtimer , uncore_pmu_hrtimer , CLOCK_MONOTONIC , HRTIMER_MODE_REL );
342
+ hrtimer_setup (& box -> hrtimer , uncore_pmu_hrtimer , CLOCK_MONOTONIC , HRTIMER_MODE_REL_HARD );
351
343
}
352
344
353
345
static struct intel_uncore_box * uncore_alloc_box (struct intel_uncore_type * type ,
0 commit comments