Messages in this thread Patch in this message | | | Date | Tue, 24 Nov 2020 09:09:51 +0100 | From | Peter Zijlstra <> | Subject | Re: [RFC] perf/x86: Fix a warning on x86_pmu_stop() |
| |
On Tue, Nov 24, 2020 at 02:01:39PM +0900, Namhyung Kim wrote:
> Yes, it's not about __intel_pmu_pebs_event(). I'm looking at > intel_pmu_drain_pebs_nhm() specifically. There's code like > > /* log dropped samples number */ > if (error[bit]) { > perf_log_lost_samples(event, error[bit]); > > if (perf_event_account_interrupt(event)) > x86_pmu_stop(event, 0); > } > > if (counts[bit]) { > __intel_pmu_pebs_event(event, iregs, base, > top, bit, counts[bit], > setup_pebs_fixed_sample_data); > } > > There's a path to x86_pmu_stop() when an error bit is on.
That would seem to suggest you try something like this:
diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c index 31b9e58b03fe..8c6ee8be8b6e 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -1945,7 +1945,7 @@ static void intel_pmu_drain_pebs_nhm(struct pt_regs *iregs, struct perf_sample_d if (error[bit]) { perf_log_lost_samples(event, error[bit]); - if (perf_event_account_interrupt(event)) + if (iregs && perf_event_account_interrupt(event)) x86_pmu_stop(event, 0); }
| |