From patchwork Mon Jun 3 14:59:35 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 17487 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ea0-f197.google.com (mail-ea0-f197.google.com [209.85.215.197]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 75F14238F2 for ; Mon, 3 Jun 2013 14:59:41 +0000 (UTC) Received: by mail-ea0-f197.google.com with SMTP id z7sf3504109eaf.8 for ; Mon, 03 Jun 2013 07:59:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-beenthere:x-forwarded-to:x-forwarded-for :delivered-to:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-google-group-id:list-post:list-help:list-archive:list-unsubscribe; bh=g5qJP8TGAcUcXOI+Fca8e+GxUuOJBqq2miENgnSG+Ko=; b=Yw/1UFSFiSgRTOqKK/ZtE0dwQE23139s3Lteg1FerbFYkVP3kt3yuVXz7/pvCO4Es6 dLHyZsw0TEWssRd+ipEn3BSZYfUD7LRu6KSlu6l+ZCePsL9ibyfVnjY9+9ZD8B6tu5JX UjFPoFbHDf1bazsP9iMe7lzV7GzZF/D7p2XiRKynYeiAv1SQAVjwLF88aY9dk4JwlPN/ 2xVQXZ5TKHMidomxtUdV9lHTllxyGQKGBe6obM5hX+F7CWP4/xhABlJMru52WV1kEiFu wCLCMBlGxD5DVX5gHfhwhcAuSLbWom89IxxpludlgXYeoPJkFgNvgvA9YXvw85b2fmqp sTVg== X-Received: by 10.180.189.74 with SMTP id gg10mr5051750wic.4.1370271579289; Mon, 03 Jun 2013 07:59:39 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.180.90.70 with SMTP id bu6ls847840wib.30.gmail; Mon, 03 Jun 2013 07:59:39 -0700 (PDT) X-Received: by 10.194.171.65 with SMTP id as1mr19373593wjc.40.1370271579166; Mon, 03 Jun 2013 07:59:39 -0700 (PDT) Received: from mail-ve0-x22b.google.com (mail-ve0-x22b.google.com [2607:f8b0:400c:c01::22b]) by mx.google.com with ESMTPS id hj6si17560189wjb.122.2013.06.03.07.59.38 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 03 Jun 2013 07:59:39 -0700 (PDT) Received-SPF: neutral (google.com: 2607:f8b0:400c:c01::22b is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=2607:f8b0:400c:c01::22b; Received: by mail-ve0-f171.google.com with SMTP id b10so2930808vea.30 for ; Mon, 03 Jun 2013 07:59:38 -0700 (PDT) X-Received: by 10.221.4.131 with SMTP id oc3mr16776187vcb.49.1370271577967; Mon, 03 Jun 2013 07:59:37 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patches@linaro.org Received: by 10.221.10.206 with SMTP id pb14csp81914vcb; Mon, 3 Jun 2013 07:59:37 -0700 (PDT) X-Received: by 10.180.78.10 with SMTP id x10mr13123277wiw.30.1370271576865; Mon, 03 Jun 2013 07:59:36 -0700 (PDT) Received: from mail-wi0-x229.google.com (mail-wi0-x229.google.com [2a00:1450:400c:c05::229]) by mx.google.com with ESMTPS id p10si16428103wjy.121.2013.06.03.07.59.36 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 03 Jun 2013 07:59:36 -0700 (PDT) Received-SPF: neutral (google.com: 2a00:1450:400c:c05::229 is neither permitted nor denied by best guess record for domain of daniel.lezcano@linaro.org) client-ip=2a00:1450:400c:c05::229; Received: by mail-wi0-f169.google.com with SMTP id hn14so2894557wib.2 for ; Mon, 03 Jun 2013 07:59:36 -0700 (PDT) X-Received: by 10.180.37.229 with SMTP id b5mr13117509wik.29.1370271576378; Mon, 03 Jun 2013 07:59:36 -0700 (PDT) Received: from mai.home (AToulouse-654-1-485-200.w92-146.abo.wanadoo.fr. [92.146.76.200]) by mx.google.com with ESMTPSA id b11sm23943191wiv.10.2013.06.03.07.59.34 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 03 Jun 2013 07:59:35 -0700 (PDT) From: Daniel Lezcano To: rjw@sisk.pl Cc: swarren@wwwdotorg.org, tony@atomide.com, linux-omap@vger.kernel.org, linux-pm@vger.kernel.org, patches@linaro.org, linaro-kernel@lists.linaro.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH V3] cpuidle: Improve governor Kconfig options Date: Mon, 3 Jun 2013 16:59:35 +0200 Message-Id: <1370271575-13494-1-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 1.7.9.5 X-Gm-Message-State: ALoCoQmsX9AH0WL98UoFShDvo87dF6fxIP+tOZb05BJjCAqezaFsv2QiByNOS7CBMrKDmldp77Ki X-Original-Sender: daniel.lezcano@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 2607:f8b0:400c:c01::22b 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 Precedence: list Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org List-ID: X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Each governor is suitable for different kernel configurations: the menu governor suits better for a tickless system, while the ladder governor fits better for a periodic timer tick system. The Kconfig does not allow to [un]select a governor, thus both are compiled in the kernel but the init order makes the menu governor to be the last one to be registered, so becoming the default. The only way to switch back to the ladder governor is to enable the sysfs governor switch in the kernel command line. Because it seems nobody complained about this, the menu governor is used by default most of the time on the system, having both governors is not really necessary on a tickless system but there isn't a config option to disable one or another governor. Create a submenu for cpuidle and add a label for each governor, so we can see the option in the menu config and enable/disable it. The governors will be enabled depending on the CONFIG_NO_HZ option: - If CONFIG_NO_HZ is set, then the menu governor is selected and the ladder governor is optional, defaulting to 'yes' - If CONFIG_NO_HZ is not set, then the ladder governor is selected and the menu governor is optional, defaulting to 'yes' Before this patch, the ARCH_NEEDS_CPU_IDLE_COUPLED option was wrongly not depending on the CPU_IDLE and the Kconfig for OMAP / TEGRA was not checking this dependency when setting the option. With this patch, the ARCH_NEEDS_CPU_IDLE_COUPLED has been moved under the CPU_IDLE option. The dependency has been fixed in the relevant arch's Kconfig. Signed-off-by: Daniel Lezcano --- V3: - Fixed Kconfig dependency between CPU_IDLE and ARCH_NEEDS_CPU_IDLE_COUPLED V2: - Set default values to 'yes' for the governors arch/arm/mach-omap2/Kconfig | 2 +- arch/arm/mach-tegra/Kconfig | 2 +- drivers/cpuidle/Kconfig | 16 +++++++--------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index f49cd51..831e89e 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -83,7 +83,7 @@ config ARCH_OMAP4 depends on ARCH_OMAP2PLUS depends on ARCH_MULTI_V7 select ARCH_HAS_OPP - select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP + select ARCH_NEEDS_CPU_IDLE_COUPLED if (SMP && CPU_IDLE) select ARM_CPU_SUSPEND if PM select ARM_ERRATA_720789 select ARM_GIC diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index 84d72fc..04c6221 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig @@ -23,7 +23,7 @@ menu "NVIDIA Tegra options" config ARCH_TEGRA_2x_SOC bool "Enable support for Tegra20 family" - select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP + select ARCH_NEEDS_CPU_IDLE_COUPLED if (SMP && CPU_IDLE) select ARM_ERRATA_720789 select ARM_ERRATA_754327 if SMP select ARM_ERRATA_764369 if SMP diff --git a/drivers/cpuidle/Kconfig b/drivers/cpuidle/Kconfig index c4cc27e..e997f15 100644 --- a/drivers/cpuidle/Kconfig +++ b/drivers/cpuidle/Kconfig @@ -1,7 +1,9 @@ -config CPU_IDLE +menuconfig CPU_IDLE bool "CPU idle PM support" default y if ACPI || PPC_PSERIES + select CPU_IDLE_GOV_LADDER if (!NO_HZ && !NO_HZ_IDLE) + select CPU_IDLE_GOV_MENU if (NO_HZ || NO_HZ_IDLE) help CPU idle is a generic framework for supporting software-controlled idle processor power management. It includes modular cross-platform @@ -9,9 +11,10 @@ config CPU_IDLE If you're using an ACPI-enabled platform, you should say Y here. +if CPU_IDLE + config CPU_IDLE_MULTIPLE_DRIVERS bool "Support multiple cpuidle drivers" - depends on CPU_IDLE default n help Allows the cpuidle framework to use different drivers for each CPU. @@ -19,24 +22,19 @@ config CPU_IDLE_MULTIPLE_DRIVERS states. If unsure say N. config CPU_IDLE_GOV_LADDER - bool - depends on CPU_IDLE + bool "Ladder governor (for periodic timer tick)" default y config CPU_IDLE_GOV_MENU - bool - depends on CPU_IDLE && NO_HZ + bool "Menu governor (for tickless system)" default y config ARCH_NEEDS_CPU_IDLE_COUPLED def_bool n -if CPU_IDLE - config CPU_IDLE_CALXEDA bool "CPU Idle Driver for Calxeda processors" depends on ARCH_HIGHBANK help Select this to enable cpuidle on Calxeda processors. - endif