u64 *buf, *config, period;
if (!test_bit(IBS_STARTED, pcpu->state)) {
- /* Catch spurious interrupts after stopping IBS: */
- if (!test_and_clear_bit(IBS_STOPPING, pcpu->state))
- return 0;
- rdmsrl(perf_ibs->msr, *ibs_data.regs);
- return (*ibs_data.regs & perf_ibs->valid_mask) ? 1 : 0;
+ /*
+ * Catch spurious interrupts after stopping IBS: After
+ * disabling IBS there could be still incomming NMIs
+ * with samples that even have the valid bit cleared.
+ * Mark all this NMIs as handled.
+ */
+ return test_and_clear_bit(IBS_STOPPING, pcpu->state) ? 1 : 0;
}
msr = hwc->config_base;