|
@@ -69,7 +69,7 @@ static void intel_pmu_lbr_enable(struct perf_event *event)
|
|
|
if (!x86_pmu.lbr_nr)
|
|
|
return;
|
|
|
|
|
|
- WARN_ON(cpuc->enabled);
|
|
|
+ WARN_ON_ONCE(cpuc->enabled);
|
|
|
|
|
|
/*
|
|
|
* Reset the LBR stack if this is the first LBR user or
|
|
@@ -93,9 +93,10 @@ static void intel_pmu_lbr_disable(struct perf_event *event)
|
|
|
return;
|
|
|
|
|
|
cpuc->lbr_users--;
|
|
|
-
|
|
|
BUG_ON(cpuc->lbr_users < 0);
|
|
|
- WARN_ON(cpuc->enabled);
|
|
|
+
|
|
|
+ if (cpuc->enabled && !cpuc->lbr_users)
|
|
|
+ __intel_pmu_lbr_disable();
|
|
|
}
|
|
|
|
|
|
static void intel_pmu_lbr_enable_all(void)
|