From def615dbfd1cf0f7922bbaf0fe560b8507cef416 Mon Sep 17 00:00:00 2001 From: Stefan Moll <stefan@stefaus.de> Date: Tue, 13 Sep 2022 13:17:51 +0200 Subject: [PATCH] Disable irqs on perf event creation --- kernel/sched/perf_error_detection.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/sched/perf_error_detection.c b/kernel/sched/perf_error_detection.c index f67957f40eaa..8c308497312c 100644 --- a/kernel/sched/perf_error_detection.c +++ b/kernel/sched/perf_error_detection.c @@ -14,6 +14,7 @@ * initialize perf event for new task */ int init_perf_event(struct plan_entry *plan_entry, struct perf_event **pevent){ + unsigned long irq_flags; struct perf_event_attr pe; memset(&pe, 0, sizeof(struct perf_event_attr)); @@ -32,7 +33,10 @@ int init_perf_event(struct plan_entry *plan_entry, struct perf_event **pevent){ /* Not needed on 3.2? */ // pe.wakeup_events = 1; + // disable irqs to make 'perf_event_ctx_activate' in 'kernel/events/core.c' happy + local_irq_save(irq_flags); *pevent = perf_event_create(&pe, 0, plan_entry->task_struct); + local_irq_restore(irq_flags); if (IS_ERR(pevent)) { printk(KERN_WARNING "PB ERROR INITIALISING PERF EVENT\n"); -- GitLab