summaryrefslogtreecommitdiff
path: root/kernel/sched/cputime.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/cputime.c')
-rw-r--r--kernel/sched/cputime.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
index acde1d7c763c..692d1f888f17 100644
--- a/kernel/sched/cputime.c
+++ b/kernel/sched/cputime.c
@@ -5,7 +5,6 @@
#include <linux/static_key.h>
#include <linux/context_tracking.h>
#include "sched.h"
-#include "walt.h"
#ifdef CONFIG_IRQ_TIME_ACCOUNTING
@@ -50,10 +49,8 @@ void irqtime_account_irq(struct task_struct *curr)
unsigned long flags;
s64 delta;
int cpu;
-#ifdef CONFIG_SCHED_WALT
u64 wallclock;
bool account = true;
-#endif
if (!sched_clock_irqtime)
return;
@@ -61,10 +58,8 @@ void irqtime_account_irq(struct task_struct *curr)
local_irq_save(flags);
cpu = smp_processor_id();
-#ifdef CONFIG_SCHED_WALT
wallclock = sched_clock_cpu(cpu);
-#endif
- delta = sched_clock_cpu(cpu) - __this_cpu_read(irq_start_time);
+ delta = wallclock - __this_cpu_read(irq_start_time);
__this_cpu_add(irq_start_time, delta);
irq_time_write_begin();
@@ -78,16 +73,16 @@ void irqtime_account_irq(struct task_struct *curr)
__this_cpu_add(cpu_hardirq_time, delta);
else if (in_serving_softirq() && curr != this_cpu_ksoftirqd())
__this_cpu_add(cpu_softirq_time, delta);
-#ifdef CONFIG_SCHED_WALT
else
account = false;
-#endif
irq_time_write_end();
-#ifdef CONFIG_SCHED_WALT
+
if (account)
- walt_account_irqtime(cpu, curr, delta, wallclock);
-#endif
+ sched_account_irqtime(cpu, curr, delta, wallclock);
+ else if (curr != this_cpu_ksoftirqd())
+ sched_account_irqstart(cpu, curr, wallclock);
+
local_irq_restore(flags);
}
EXPORT_SYMBOL_GPL(irqtime_account_irq);