From patchwork Mon Feb 24 13:55:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 25190 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ve0-f200.google.com (mail-ve0-f200.google.com [209.85.128.200]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id ECD5320674 for ; Mon, 24 Feb 2014 13:56:13 +0000 (UTC) Received: by mail-ve0-f200.google.com with SMTP id jw12sf8595774veb.11 for ; Mon, 24 Feb 2014 05:56:13 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe; bh=TcZKiNk/rphXYGSjzXsF5aRteCfmBASH7OYbL4ipoXQ=; b=XhfgB4GMnS5onZVvEVdIbLOquJpr1nRr9fQ5IZLSE5+NMltODJYeBJ9L33ZX3da126 rBKJrWNQdB511j0mTuH4bJF4JerwOQRAv3k9kGmNSvFWx/AP1fDnNpsiDOV+Rusu0P5s asDhjcnsKyGA5marcZRoJVnJMhmYAqMlK/B/g8zMjBam22iA4xFvgbCIhoiUH40PNeVa IyKdbPMKYJ2yCvnfq6u6OO+0uIvOWfEZvaVnCk4ZgwKRBvO40ckvScs8afa1Ouvfkbn8 cjPqz4VhJc4G5fNlbCLl4pGmoFSzNd2XUgwI3kUSiFfVy/2uO0r+KybzquyweWCRCRBR iSKg== X-Gm-Message-State: ALoCoQnsUUNvnyRj8A9QuSen71mJYwgvLpRxW7EAWaRitFBfn7yqREAFzh2bjoBrijZLLLDGCLQ/ X-Received: by 10.236.133.82 with SMTP id p58mr8881657yhi.37.1393250173707; Mon, 24 Feb 2014 05:56:13 -0800 (PST) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.94.129 with SMTP id g1ls2012311qge.69.gmail; Mon, 24 Feb 2014 05:56:13 -0800 (PST) X-Received: by 10.52.121.81 with SMTP id li17mr145170vdb.66.1393250173498; Mon, 24 Feb 2014 05:56:13 -0800 (PST) Received: from mail-ve0-f172.google.com (mail-ve0-f172.google.com [209.85.128.172]) by mx.google.com with ESMTPS id a15si5850903vew.45.2014.02.24.05.56.13 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 05:56:13 -0800 (PST) Received-SPF: neutral (google.com: 209.85.128.172 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.128.172; Received: by mail-ve0-f172.google.com with SMTP id jz11so3899860veb.31 for ; Mon, 24 Feb 2014 05:56:13 -0800 (PST) X-Received: by 10.52.65.207 with SMTP id z15mr317648vds.61.1393250173372; Mon, 24 Feb 2014 05:56:13 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.174.196 with SMTP id u4csp62775vcz; Mon, 24 Feb 2014 05:56:12 -0800 (PST) X-Received: by 10.66.156.4 with SMTP id wa4mr25532495pab.49.1393250165572; Mon, 24 Feb 2014 05:56:05 -0800 (PST) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id fd10si16998031pad.196.2014.02.24.05.56.04; Mon, 24 Feb 2014 05:56:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752947AbaBXNzz (ORCPT + 26 others); Mon, 24 Feb 2014 08:55:55 -0500 Received: from mail-we0-f173.google.com ([74.125.82.173]:62430 "EHLO mail-we0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752521AbaBXNzx (ORCPT ); Mon, 24 Feb 2014 08:55:53 -0500 Received: by mail-we0-f173.google.com with SMTP id x48so4639611wes.4 for ; Mon, 24 Feb 2014 05:55:52 -0800 (PST) X-Received: by 10.180.211.239 with SMTP id nf15mr14517456wic.9.1393250152272; Mon, 24 Feb 2014 05:55:52 -0800 (PST) Received: from localhost.localdomain (AToulouse-654-1-343-25.w90-55.abo.wanadoo.fr. [90.55.62.25]) by mx.google.com with ESMTPSA id f7sm42338516wjb.7.2014.02.24.05.55.50 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 05:55:51 -0800 (PST) From: Daniel Lezcano To: mingo@kernel.org, peterz@infradead.org, tglx@linutronix.de, rjw@rjwysocki.net Cc: nicolas.pitre@linaro.org, preeti@linux.vnet.ibm.com, linux-kernel@vger.kernel.org Subject: [PATCH V2 2/5] cpuidle/idle: Move the cpuidle_idle_call function to idle.c Date: Mon, 24 Feb 2014 14:55:48 +0100 Message-Id: <1393250151-6982-2-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1393250151-6982-1-git-send-email-daniel.lezcano@linaro.org> References: <1393250151-6982-1-git-send-email-daniel.lezcano@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: daniel.lezcano@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.128.172 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , The cpuidle_idle_call does nothing more than calling the three individuals function and is no longer used by any arch specific code but only in the cpuidle framework code. We can move this function into the idle task code to ensure better proximity to the scheduler code. Signed-off-by: Daniel Lezcano Acked-by: Nicolas Pitre --- drivers/cpuidle/cpuidle.c | 39 --------------------------------------- include/linux/cpuidle.h | 2 -- kernel/sched/idle.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 41 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ Index: cpuidle-next/drivers/cpuidle/cpuidle.c =================================================================== --- cpuidle-next.orig/drivers/cpuidle/cpuidle.c +++ cpuidle-next/drivers/cpuidle/cpuidle.c @@ -185,45 +185,6 @@ void cpuidle_reflect(struct cpuidle_devi } /** - * cpuidle_idle_call - the main idle loop - * - * NOTE: no locks or semaphores should be used here - * return non-zero on failure - */ -int cpuidle_idle_call(void) -{ - struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices); - struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); - int next_state, entered_state; - - next_state = cpuidle_enabled(drv, dev); - if (next_state < 0) - return next_state; - - /* ask the governor for the next state */ - next_state = cpuidle_select(drv, dev); - - if (need_resched()) { - dev->last_residency = 0; - /* give the governor an opportunity to reflect on the outcome */ - cpuidle_reflect(dev, next_state); - local_irq_enable(); - return 0; - } - - trace_cpu_idle_rcuidle(next_state, dev->cpu); - - entered_state = cpuidle_enter(drv, dev, next_state); - - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu); - - /* give the governor an opportunity to reflect on the outcome */ - cpuidle_reflect(dev, entered_state); - - return 0; -} - -/** * cpuidle_install_idle_handler - installs the cpuidle idle loop handler */ void cpuidle_install_idle_handler(void) Index: cpuidle-next/include/linux/cpuidle.h =================================================================== --- cpuidle-next.orig/include/linux/cpuidle.h +++ cpuidle-next/include/linux/cpuidle.h @@ -128,7 +128,6 @@ extern int cpuidle_enter(struct cpuidle_ struct cpuidle_device *dev, int index); extern void cpuidle_reflect(struct cpuidle_device *dev, int index); -extern int cpuidle_idle_call(void); extern int cpuidle_register_driver(struct cpuidle_driver *drv); extern struct cpuidle_driver *cpuidle_get_driver(void); extern struct cpuidle_driver *cpuidle_driver_ref(void); @@ -160,7 +159,6 @@ static inline int cpuidle_enter(struct c struct cpuidle_device *dev, int index) {return -ENODEV; } static inline void cpuidle_reflect(struct cpuidle_device *dev, int index) { } -static inline int cpuidle_idle_call(void) { return -ENODEV; } static inline int cpuidle_register_driver(struct cpuidle_driver *drv) {return -ENODEV; } static inline struct cpuidle_driver *cpuidle_get_driver(void) {return NULL; } Index: cpuidle-next/kernel/sched/idle.c =================================================================== --- cpuidle-next.orig/kernel/sched/idle.c +++ cpuidle-next/kernel/sched/idle.c @@ -63,6 +63,52 @@ void __weak arch_cpu_idle(void) local_irq_enable(); } +#ifdef CONFIG_CPU_IDLE +/** + * cpuidle_idle_call - the main idle function + * + * NOTE: no locks or semaphores should be used here + * return non-zero on failure + */ +static int cpuidle_idle_call(void) +{ + struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices); + struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); + int next_state, entered_state; + + next_state = cpuidle_enabled(drv, dev); + if (next_state < 0) + return next_state; + + /* ask the governor for the next state */ + next_state = cpuidle_select(drv, dev); + + if (need_resched()) { + dev->last_residency = 0; + /* give the governor an opportunity to reflect on the outcome */ + cpuidle_reflect(dev, next_state); + local_irq_enable(); + return 0; + } + + trace_cpu_idle_rcuidle(next_state, dev->cpu); + + entered_state = cpuidle_enter(drv, dev, next_state); + + trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu); + + /* give the governor an opportunity to reflect on the outcome */ + cpuidle_reflect(dev, entered_state); + + return 0; +} +#else +static inline int cpuidle_idle_call(void) +{ + return -ENODEV; +} +#endif + /* * Generic idle loop implementation */