lkml.org 
[lkml]   [2016]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:timers/nohz] sched/cputime: Clean up the old vtime gen irqtime accounting completely
    Commit-ID:  0cfdf9a198b0d4f5ad6c87d894db7830b796b2cc
    Gitweb: http://git.kernel.org/tip/0cfdf9a198b0d4f5ad6c87d894db7830b796b2cc
    Author: Frederic Weisbecker <fweisbec@gmail.com>
    AuthorDate: Wed, 13 Jul 2016 16:50:03 +0200
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Thu, 14 Jul 2016 10:42:35 +0200

    sched/cputime: Clean up the old vtime gen irqtime accounting completely

    Vtime generic irqtime accounting has been removed but there are a few
    remnants to clean up:

    * The vtime_accounting_cpu_enabled() check in irq entry was only used
    by CONFIG_VIRT_CPU_ACCOUNTING_GEN. We can safely remove it.

    * Without the vtime_accounting_cpu_enabled(), we no longer need to
    have a vtime_common_account_irq_enter() indirect function.

    * Move vtime_account_irq_enter() implementation under
    CONFIG_VIRT_CPU_ACCOUNTING_NATIVE which is the last user.

    * The vtime_account_user() call was only used on irq entry for
    CONFIG_VIRT_CPU_ACCOUNTING_GEN. We can remove that too.

    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Radim Krcmar <rkrcmar@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Wanpeng Li <wanpeng.li@hotmail.com>
    Link: http://lkml.kernel.org/r/1468421405-20056-4-git-send-email-fweisbec@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    include/linux/vtime.h | 11 -----------
    kernel/sched/cputime.c | 33 ++++++++++-----------------------
    2 files changed, 10 insertions(+), 34 deletions(-)

    diff --git a/include/linux/vtime.h b/include/linux/vtime.h
    index d1977d84..65aef5e 100644
    --- a/include/linux/vtime.h
    +++ b/include/linux/vtime.h
    @@ -14,18 +14,7 @@ struct task_struct;
    */
    #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
    static inline bool vtime_accounting_cpu_enabled(void) { return true; }
    -
    -#ifdef __ARCH_HAS_VTIME_ACCOUNT
    extern void vtime_account_irq_enter(struct task_struct *tsk);
    -#else
    -extern void vtime_common_account_irq_enter(struct task_struct *tsk);
    -static inline void vtime_account_irq_enter(struct task_struct *tsk)
    -{
    - if (vtime_accounting_cpu_enabled())
    - vtime_common_account_irq_enter(tsk);
    -}
    -#endif /* __ARCH_HAS_VTIME_ACCOUNT */
    -
    #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */

    #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
    diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
    index ca7e33c..16a873c 100644
    --- a/kernel/sched/cputime.c
    +++ b/kernel/sched/cputime.c
    @@ -431,6 +431,10 @@ void vtime_common_task_switch(struct task_struct *prev)
    }
    #endif

    +#endif /* CONFIG_VIRT_CPU_ACCOUNTING */
    +
    +
    +#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
    /*
    * Archs that account the whole time spent in the idle task
    * (outside irq) as idle time can rely on this and just implement
    @@ -440,33 +444,16 @@ void vtime_common_task_switch(struct task_struct *prev)
    * vtime_account().
    */
    #ifndef __ARCH_HAS_VTIME_ACCOUNT
    -void vtime_common_account_irq_enter(struct task_struct *tsk)
    +void vtime_account_irq_enter(struct task_struct *tsk)
    {
    - if (!in_interrupt()) {
    - /*
    - * If we interrupted user, context_tracking_in_user()
    - * is 1 because the context tracking don't hook
    - * on irq entry/exit. This way we know if
    - * we need to flush user time on kernel entry.
    - */
    - if (context_tracking_in_user()) {
    - vtime_account_user(tsk);
    - return;
    - }
    -
    - if (is_idle_task(tsk)) {
    - vtime_account_idle(tsk);
    - return;
    - }
    - }
    - vtime_account_system(tsk);
    + if (!in_interrupt() && is_idle_task(tsk))
    + vtime_account_idle(tsk);
    + else
    + vtime_account_system(tsk);
    }
    -EXPORT_SYMBOL_GPL(vtime_common_account_irq_enter);
    +EXPORT_SYMBOL_GPL(vtime_account_irq_enter);
    #endif /* __ARCH_HAS_VTIME_ACCOUNT */
    -#endif /* CONFIG_VIRT_CPU_ACCOUNTING */
    -

    -#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
    void task_cputime_adjusted(struct task_struct *p, cputime_t *ut, cputime_t *st)
    {
    *ut = p->utime;
    \
     
     \ /
      Last update: 2016-07-14 13:21    [W:7.616 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site