diff --git a/kernel/sched/perf_error_detection.c b/kernel/sched/perf_error_detection.c
index f67957f40eaa39f2e2473bf83c413936b3d35533..8c308497312c911bd3d90f6be97828e1a2f60363 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");