From patchwork Wed Mar 5 07:18:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vincent Guittot X-Patchwork-Id: 25735 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-vc0-f199.google.com (mail-vc0-f199.google.com [209.85.220.199]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 355C120540 for ; Wed, 5 Mar 2014 07:19:25 +0000 (UTC) Received: by mail-vc0-f199.google.com with SMTP id hu8sf1448284vcb.2 for ; Tue, 04 Mar 2014 23:19:24 -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:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-unsubscribe; bh=Cs/ofQkGDsYtGQ5zLV94E5cOF4FEMnsmzYm5LmGV338=; b=UiObqAEDFCtvzjc4eyGZb1zj0+7ooW1jg/auscr7sf91A3zgL21CRrQ8qdNQBQUTb1 5krgyshOzfkPcAoPc5SmMlQCjeeXN8cPPxX/oxCM+WLBdMyQVMhhk+0aAU6fxeFgU8XB xgohS+o8H3OQBsctACW/EJVAWoXzWSMYFjyFMTm29tHNNXF/ttk8Dv2XugNJibWjyL3h El8CyNTAIs9E8Z9aH8BsiOdLt93Juy/DSZL2trcw3JB9B3JfahXCcHH4bRiFdnl+tGFb ekA6QTiqYU1JmrZ3enaIWIBSyZRvHkcC+OrpYnw1Wjpnxwpq19q5o5UCwex090fzPnPl IG0Q== X-Gm-Message-State: ALoCoQnp66KtxlivY81eOV1a6C3KX1Mnbx54kHbr9mvVDvlCrzbuQhO2akCVWE6w34j+5nTVX3Je X-Received: by 10.58.179.101 with SMTP id df5mr1945899vec.38.1394003964878; Tue, 04 Mar 2014 23:19:24 -0800 (PST) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.96.52 with SMTP id j49ls213970qge.7.gmail; Tue, 04 Mar 2014 23:19:24 -0800 (PST) X-Received: by 10.52.248.138 with SMTP id ym10mr2826777vdc.18.1394003964787; Tue, 04 Mar 2014 23:19:24 -0800 (PST) Received: from mail-ve0-f169.google.com (mail-ve0-f169.google.com [209.85.128.169]) by mx.google.com with ESMTPS id el6si452635vcb.89.2014.03.04.23.19.24 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 04 Mar 2014 23:19:24 -0800 (PST) Received-SPF: neutral (google.com: 209.85.128.169 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.169; Received: by mail-ve0-f169.google.com with SMTP id pa12so641097veb.14 for ; Tue, 04 Mar 2014 23:19:24 -0800 (PST) X-Received: by 10.58.69.111 with SMTP id d15mr3234910veu.3.1394003964718; Tue, 04 Mar 2014 23:19:24 -0800 (PST) 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.220.130.193 with SMTP id u1csp183757vcs; Tue, 4 Mar 2014 23:19:24 -0800 (PST) X-Received: by 10.66.227.104 with SMTP id rz8mr5038646pac.74.1394003962007; Tue, 04 Mar 2014 23:19:22 -0800 (PST) Received: from mail-pd0-f177.google.com (mail-pd0-f177.google.com [209.85.192.177]) by mx.google.com with ESMTPS id xz2si1395465pbb.359.2014.03.04.23.19.21 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 04 Mar 2014 23:19:22 -0800 (PST) Received-SPF: neutral (google.com: 209.85.192.177 is neither permitted nor denied by best guess record for domain of vincent.guittot@linaro.org) client-ip=209.85.192.177; Received: by mail-pd0-f177.google.com with SMTP id g10so682301pdj.36 for ; Tue, 04 Mar 2014 23:19:21 -0800 (PST) X-Received: by 10.68.102.34 with SMTP id fl2mr5102985pbb.2.1394003961514; Tue, 04 Mar 2014 23:19:21 -0800 (PST) Received: from lmenb30s.lme.st.com (z88l218.static.ctm.net. [202.175.88.218]) by mx.google.com with ESMTPSA id zc6sm9364621pab.18.2014.03.04.23.19.17 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 04 Mar 2014 23:19:20 -0800 (PST) From: Vincent Guittot To: peterz@infradead.org, mingo@kernel.org, linux-kernel@vger.kernel.org, tony.luck@intel.com, fenghua.yu@intel.com, schwidefsky@de.ibm.com, james.hogan@imgtec.com, cmetcalf@tilera.com, benh@kernel.crashing.org, linux@arm.linux.org.uk, linux-arm-kernel@lists.infradead.org Cc: dietmar.eggemann@arm.com, preeti@linux.vnet.ibm.com, linaro-kernel@lists.linaro.org, Vincent Guittot Subject: [RFC 5/6] sched: add a new SD_SHARE_POWERDOMAIN for sched_domain Date: Wed, 5 Mar 2014 15:18:25 +0800 Message-Id: <1394003906-11630-6-git-send-email-vincent.guittot@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1394003906-11630-1-git-send-email-vincent.guittot@linaro.org> References: <1394003906-11630-1-git-send-email-vincent.guittot@linaro.org> X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: vincent.guittot@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.128.169 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: , A new flag SD_SHARE_POWERDOMAIN is created to reflect whether groups of CPUs in a sched_domain level can or not reach different power state. As an example, the flag should be cleared at CPU level if groups of cores can be power gated independently. This information can be used to add load balancing level between group of CPUs than can power gate independantly. The default behavior of the scheduler is to spread tasks across CPUs and groups of CPUs so the flag is set into all sched_domains. Signed-off-by: Vincent Guittot --- include/linux/sched.h | 1 + kernel/sched/core.c | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index dbc35dd..182a080 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -861,6 +861,7 @@ enum cpu_idle_type { #define SD_BALANCE_WAKE 0x0010 /* Balance on wakeup */ #define SD_WAKE_AFFINE 0x0020 /* Wake task to waking CPU */ #define SD_SHARE_CPUPOWER 0x0080 /* Domain members share cpu power */ +#define SD_SHARE_POWERDOMAIN 0x0100 /* Domain members share power domain */ #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ #define SD_ASYM_PACKING 0x0800 /* Place busy groups earlier in the domain */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 7606de0..b28cff0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5283,7 +5283,8 @@ static int sd_degenerate(struct sched_domain *sd) SD_BALANCE_FORK | SD_BALANCE_EXEC | SD_SHARE_CPUPOWER | - SD_SHARE_PKG_RESOURCES)) { + SD_SHARE_PKG_RESOURCES | + SD_SHARE_POWERDOMAIN)) { if (sd->groups != sd->groups->next) return 0; } @@ -5314,7 +5315,8 @@ sd_parent_degenerate(struct sched_domain *sd, struct sched_domain *parent) SD_BALANCE_EXEC | SD_SHARE_CPUPOWER | SD_SHARE_PKG_RESOURCES | - SD_PREFER_SIBLING); + SD_PREFER_SIBLING | + SD_SHARE_POWERDOMAIN); if (nr_node_ids == 1) pflags &= ~SD_SERIALIZE; } @@ -5932,7 +5934,8 @@ static struct cpumask ***sched_domains_numa_masks; (SD_SHARE_CPUPOWER | \ SD_SHARE_PKG_RESOURCES | \ SD_NUMA | \ - SD_ASYM_PACKING) + SD_ASYM_PACKING | \ + SD_SHARE_POWERDOMAIN) static struct sched_domain * sd_init(struct sched_domain_topology_level *tl, int cpu)