]> git.baikalelectronics.ru Git - kernel.git/commit
irqtime: Make accounting correct on RT
authorThomas Gleixner <tglx@linutronix.de>
Tue, 9 Mar 2021 08:55:54 +0000 (09:55 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 17 Mar 2021 15:34:09 +0000 (16:34 +0100)
commit566c08bd9023830e05b77c6a52ee53e84104e5a2
tree4fc4b1b3c04f26e5051a187da5d3c26039ecb487
parent245d034f12a63ea64ac2dd4643d3ee8984996864
irqtime: Make accounting correct on RT

vtime_account_irq and irqtime_account_irq() base checks on preempt_count()
which fails on RT because preempt_count() does not contain the softirq
accounting which is seperate on RT.

These checks do not need the full preempt count as they only operate on the
hard and softirq sections.

Use irq_count() instead which provides the correct value on both RT and non
RT kernels. The compiler is clever enough to fold the masking for !RT:

       99b: 65 8b 05 00 00 00 00  mov    %gs:0x0(%rip),%eax
 -     9a2: 25 ff ff ff 7f        and    $0x7fffffff,%eax
 +     9a2: 25 00 ff ff 00        and    $0xffff00,%eax

Reported-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Tested-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210309085727.153926793@linutronix.de
kernel/sched/cputime.c