Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb7c20fd authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "sched: fix softirq time accounting"

parents d1d4ca7a 914d0858
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ enum cpu_usage_stat {

struct kernel_cpustat {
	u64 cpustat[NR_STATS];
	u64 softirq_no_ksoftirqd;
};

struct kernel_stat {
+8 −1
Original line number Diff line number Diff line
@@ -84,12 +84,19 @@ EXPORT_SYMBOL_GPL(irqtime_account_irq);
static cputime_t irqtime_account_update(u64 irqtime, int idx, cputime_t maxtime)
{
	u64 *cpustat = kcpustat_this_cpu->cpustat;
	u64 base = cpustat[idx];
	cputime_t irq_cputime;

	irq_cputime = nsecs_to_cputime64(irqtime) - cpustat[idx];
	if (idx == CPUTIME_SOFTIRQ)
		base = kcpustat_this_cpu->softirq_no_ksoftirqd;

	irq_cputime = nsecs_to_cputime64(irqtime) - base;
	irq_cputime = min(irq_cputime, maxtime);
	cpustat[idx] += irq_cputime;

	if (idx == CPUTIME_SOFTIRQ)
		kcpustat_this_cpu->softirq_no_ksoftirqd += irq_cputime;

	return irq_cputime;
}