From patchwork Fri May 20 06:39:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 68221 Delivered-To: patch@linaro.org Received: by 10.140.92.199 with SMTP id b65csp3605895qge; Thu, 19 May 2016 23:40:25 -0700 (PDT) X-Received: by 10.98.35.15 with SMTP id j15mr2266916pfj.108.1463726425595; Thu, 19 May 2016 23:40:25 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v129si3697672pfv.13.2016.05.19.23.40.25; Thu, 19 May 2016 23:40:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-owner@vger.kernel.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753257AbcETGkS (ORCPT + 14 others); Fri, 20 May 2016 02:40:18 -0400 Received: from mail-pa0-f42.google.com ([209.85.220.42]:36515 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754826AbcETGkP (ORCPT ); Fri, 20 May 2016 02:40:15 -0400 Received: by mail-pa0-f42.google.com with SMTP id bt5so36572483pac.3 for ; Thu, 19 May 2016 23:40:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=1209QsGuhYSvfn9k+XDT04zPNCxCv9vXDzXyJHJxMEk=; b=JXmveJRQJm25bTAyRspNGIFXW6vs4pOBEKB7hABtrsaOO2vg9dz224OQj9i6Vldc5H oBPjRaCBBdGwuRKgnSdCCzlLCP1mum9PlamOksLwFUWTKznIY69RpFGMSgsHDTLPjb01 6qBRdvhmDx01n/8cyV3sKiKpVBobB9QhPZY4M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=1209QsGuhYSvfn9k+XDT04zPNCxCv9vXDzXyJHJxMEk=; b=Vq/s2GVO5qicylyIgIr3JfDz20M8CtbetduQM/PQvqWXwnp0QJv/1/e3mlJbfV7jiM z96C8vhIXyiegC+lM5hF5gTXfwKpUxBJlVJwbLIz10zLZw6fDqvHb0ka8cb1q5zzi+wZ djAHcAY88OCed4Wquqy37tCVwhH5H5NXC9WHSBMBK26RPjpNAX/ePbz5z6NgEAgr+VmZ ofxcS5AyacHhRFg7ti8IeQ20wdJWYcComyJ1JjzekRd+MYE92nrJNvG+8sn5Wn6pygAw LuR0N99b25G0EO9yRwWtAjCZDvH6dJzYT+IZw1rPAoE6lV5qOEEqFfYt2IgikMXoNnr0 IaAg== X-Gm-Message-State: AOPr4FXviTjgAKmkGQVkVwhsUkFB8/CL7wZZgRYqHRGWte2o2AflN7LvnOcAoPkqe6b0ev9V X-Received: by 10.66.127.10 with SMTP id nc10mr2239792pab.98.1463726414539; Thu, 19 May 2016 23:40:14 -0700 (PDT) Received: from localhost ([122.172.42.124]) by smtp.gmail.com with ESMTPSA id w125sm24297127pfb.53.2016.05.19.23.40.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2016 23:40:13 -0700 (PDT) From: Viresh Kumar To: Rafael Wysocki , Viresh Kumar , Ingo Molnar , Peter Zijlstra Cc: linaro-kernel@lists.linaro.org, linux-pm@vger.kernel.org, rostedt@goodmis.org, mike@android.com, toddpoynor@google.com, linux-kernel@vger.kernel.org, kandoiruchi@google.com, juri.lelli@arm.com, steve.muckle@linaro.org, vincent.guittot@linaro.org Subject: [PATCH 1/2] cpufreq: Move gov_attr_* macros to cpufreq.h Date: Fri, 20 May 2016 12:09:36 +0530 Message-Id: X-Mailer: git-send-email 2.7.1.410.g6faf27b In-Reply-To: References: In-Reply-To: References: Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org These macros can be reused by governors which don't use the common governor code present in cpufreq_governor.c and should be moved to the relevant header. Now that they are getting moved to the right header file, reuse them in schedutil governor as well (that required rename of show/store routines). Also create gov_attr_wo() macro for write-only sysfs files, this will be used by Interactive governor in a later patch. Signed-off-by: Viresh Kumar --- drivers/cpufreq/cpufreq_governor.h | 8 -------- include/linux/cpufreq.h | 12 ++++++++++++ kernel/sched/cpufreq_schedutil.c | 8 ++++---- 3 files changed, 16 insertions(+), 12 deletions(-) -- 2.7.1.410.g6faf27b -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h index ef1037e9c92b..3196ed9c1c0a 100644 --- a/drivers/cpufreq/cpufreq_governor.h +++ b/drivers/cpufreq/cpufreq_governor.h @@ -70,14 +70,6 @@ static ssize_t show_##file_name \ return sprintf(buf, "%u\n", dbs_data->file_name); \ } -#define gov_attr_ro(_name) \ -static struct governor_attr _name = \ -__ATTR(_name, 0444, show_##_name, NULL) - -#define gov_attr_rw(_name) \ -static struct governor_attr _name = \ -__ATTR(_name, 0644, show_##_name, store_##_name) - /* Common to all CPUs of a policy */ struct policy_dbs_info { struct cpufreq_policy *policy; diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index fbd696edf5bd..533490cd046d 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -504,6 +504,18 @@ struct gov_attr_set { int usage_count; }; +#define gov_attr_ro(_name) \ +static struct governor_attr _name = \ +__ATTR(_name, 0444, show_##_name, NULL) + +#define gov_attr_wo(_name) \ +static struct governor_attr _name = \ +__ATTR(_name, 0200, NULL, store_##_name) + +#define gov_attr_rw(_name) \ +static struct governor_attr _name = \ +__ATTR(_name, 0644, show_##_name, store_##_name) + /* sysfs ops for cpufreq governors */ extern const struct sysfs_ops governor_sysfs_ops; diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index 758efd7f3abe..cc77ce18e52c 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -243,15 +243,15 @@ static inline struct sugov_tunables *to_sugov_tunables(struct gov_attr_set *attr return container_of(attr_set, struct sugov_tunables, attr_set); } -static ssize_t rate_limit_us_show(struct gov_attr_set *attr_set, char *buf) +static ssize_t show_rate_limit_us(struct gov_attr_set *attr_set, char *buf) { struct sugov_tunables *tunables = to_sugov_tunables(attr_set); return sprintf(buf, "%u\n", tunables->rate_limit_us); } -static ssize_t rate_limit_us_store(struct gov_attr_set *attr_set, const char *buf, - size_t count) +static ssize_t store_rate_limit_us(struct gov_attr_set *attr_set, + const char *buf, size_t count) { struct sugov_tunables *tunables = to_sugov_tunables(attr_set); struct sugov_policy *sg_policy; @@ -268,7 +268,7 @@ static ssize_t rate_limit_us_store(struct gov_attr_set *attr_set, const char *bu return count; } -static struct governor_attr rate_limit_us = __ATTR_RW(rate_limit_us); +gov_attr_rw(rate_limit_us); static struct attribute *sugov_attributes[] = { &rate_limit_us.attr,