|
@@ -1901,11 +1901,12 @@ static void __perf_event_read(void *info)
|
|
|
return;
|
|
|
|
|
|
raw_spin_lock(&ctx->lock);
|
|
|
- update_context_time(ctx);
|
|
|
+ if (ctx->is_active)
|
|
|
+ update_context_time(ctx);
|
|
|
update_event_times(event);
|
|
|
+ if (event->state == PERF_EVENT_STATE_ACTIVE)
|
|
|
+ event->pmu->read(event);
|
|
|
raw_spin_unlock(&ctx->lock);
|
|
|
-
|
|
|
- event->pmu->read(event);
|
|
|
}
|
|
|
|
|
|
static inline u64 perf_event_count(struct perf_event *event)
|