From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754123AbcIBODi (ORCPT ); Fri, 2 Sep 2016 10:03:38 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:36073 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932172AbcIBOD1 (ORCPT ); Fri, 2 Sep 2016 10:03:27 -0400 From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Paolo Bonzini , Peter Zijlstra , Wanpeng Li , Eric Dumazet , Ingo Molnar , Mike Galbraith , Rik van Riel Subject: [PATCH 5/5] irqtime: Consolidate irqtime flushing code Date: Fri, 2 Sep 2016 16:03:05 +0200 Message-Id: <1472824985-22947-6-git-send-email-fweisbec@gmail.com> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1472824985-22947-1-git-send-email-fweisbec@gmail.com> References: <1472824985-22947-1-git-send-email-fweisbec@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The code performing irqtime nsecs stats flushing to kcpustat is roughly the same for hardirq and softirq. So lets consolidate that common code. Cc: Rik van Riel Cc: Paolo Bonzini Cc: Wanpeng Li Cc: Mike Galbraith Cc: Peter Zijlstra Cc: Ingo Molnar Cc: Eric Dumazet Signed-off-by: Frederic Weisbecker --- kernel/sched/cputime.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c index f51c9a9..f8de5d3 100644 --- a/kernel/sched/cputime.c +++ b/kernel/sched/cputime.c @@ -70,32 +70,28 @@ void irqtime_account_irq(struct task_struct *curr) } EXPORT_SYMBOL_GPL(irqtime_account_irq); -static cputime_t irqtime_account_hi_update(cputime_t maxtime) +static cputime_t irqtime_account_update(u64 irqtime, int idx, cputime_t maxtime) { u64 *cpustat = kcpustat_this_cpu->cpustat; cputime_t irq_cputime; - u64 nsecs; - nsecs = __this_cpu_read(cpu_irqtime.hardirq_time); - irq_cputime = nsecs_to_cputime64(nsecs) - cpustat[CPUTIME_IRQ]; + irq_cputime = nsecs_to_cputime64(irqtime) - cpustat[idx]; irq_cputime = min(irq_cputime, maxtime); - cpustat[CPUTIME_IRQ] += irq_cputime; + cpustat[idx] += irq_cputime; return irq_cputime; } +static cputime_t irqtime_account_hi_update(cputime_t maxtime) +{ + return irqtime_account_update(__this_cpu_read(cpu_irqtime.hardirq_time), + CPUTIME_IRQ, maxtime); +} + static cputime_t irqtime_account_si_update(cputime_t maxtime) { - u64 *cpustat = kcpustat_this_cpu->cpustat; - cputime_t softirq_cputime; - u64 nsecs; - - nsecs = __this_cpu_read(cpu_irqtime.softirq_time); - softirq_cputime = nsecs_to_cputime64(nsecs) - cpustat[CPUTIME_SOFTIRQ]; - softirq_cputime = min(softirq_cputime, maxtime); - cpustat[CPUTIME_SOFTIRQ] += softirq_cputime; - - return softirq_cputime; + return irqtime_account_update(__this_cpu_read(cpu_irqtime.softirq_time), + CPUTIME_SOFTIRQ, maxtime); } #else /* CONFIG_IRQ_TIME_ACCOUNTING */ -- 2.7.0