]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/x86/kernel/cpu/perf_event.c
perf: Drop sample rate when sampling is too slow
[karo-tx-linux.git] / arch / x86 / kernel / cpu / perf_event.c
index ab3395295224fb9a436bc8d170589dc064d87ac7..afc2413ba00c53c58e3714d0f31b325e05a973db 100644 (file)
@@ -1252,10 +1252,20 @@ void perf_events_lapic_init(void)
 static int __kprobes
 perf_event_nmi_handler(unsigned int cmd, struct pt_regs *regs)
 {
+       int ret;
+       u64 start_clock;
+       u64 finish_clock;
+
        if (!atomic_read(&active_events))
                return NMI_DONE;
 
-       return x86_pmu.handle_irq(regs);
+       start_clock = local_clock();
+       ret = x86_pmu.handle_irq(regs);
+       finish_clock = local_clock();
+
+       perf_sample_event_took(finish_clock - start_clock);
+
+       return ret;
 }
 
 struct event_constraint emptyconstraint;