Slightly different design this time. As per Peter and Thomas reviews and suggestions, use the following layout:
account_softirq_enter() -> irqtime_account_irq(curr, SOFTIRQ_OFFSET); account_softirq_exit() -> irqtime_account_irq(curr, 0); account_hardirq_enter() -> irqtime_account_irq(curr, HARDIRQ_OFFSET); account_hardirq_exit() -> irqtime_account_irq(curr, 0); So now the preempt count offset is substracted in the cputime dispatch function and the resulting code is better consolidated. git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git irq/core-v3 HEAD: 24a2d6c76759bd4496cbdcd365012c821a984eec Thanks, Frederic --- Frederic Weisbecker (5): sched/cputime: Remove symbol exports from IRQ time accounting s390/vtime: Use the generic IRQ entry accounting sched/vtime: Consolidate IRQ time accounting irqtime: Move irqtime entry accounting after irq offset incrementation irq: Call tick_irq_enter() inside HARDIRQ_OFFSET arch/Kconfig | 7 +++++- arch/ia64/kernel/time.c | 20 ++++++++++++---- arch/powerpc/kernel/time.c | 56 ++++++++++++++++++++++++++++++------------- arch/s390/Kconfig | 1 + arch/s390/include/asm/vtime.h | 1 - arch/s390/kernel/vtime.c | 51 +++++++++++++++++++++++++-------------- include/linux/hardirq.h | 4 ++-- include/linux/vtime.h | 42 +++++++++++++++++++------------- kernel/sched/cputime.c | 36 +++++++++++++--------------- kernel/softirq.c | 20 +++++++--------- 10 files changed, 148 insertions(+), 90 deletions(-)