aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Perret <quentin.perret@arm.com>2019-01-04 09:18:16 +0000
committerQuentin Perret <quentin.perret@arm.com>2019-01-04 09:19:03 +0000
commit9f5e7029220b853d563565c906f1f802b9288190 (patch)
tree50ab8639338bc08d8e94947e12308b4cbb07679f
parent3ed3d89a253680871c5d8aa323cebb144f69e8c3 (diff)
Revert "FROMLIST: PM / EM: Expose the Energy Model in sysfs"ASB-2019-01-05_4.19
This reverts commit b8c80a0f421142b3b410162d7ced6f32b5fd14bf. It has not been accepted upstream and is useful only for debug purpose. An alternate debugfs interface will be pushed upstream to expose the Energy Model. Android should use that too. In the meantime, it should be early enough to remove the sysfs nodes before partners start basing userspace tools on them. Bug: 120440300 Change-Id: I8a5f003550df7df9116d4735c8d9ac10ac0aa79c Signed-off-by: Quentin Perret <quentin.perret@arm.com>
-rw-r--r--include/linux/energy_model.h2
-rw-r--r--kernel/power/energy_model.c90
2 files changed, 0 insertions, 92 deletions
diff --git a/include/linux/energy_model.h b/include/linux/energy_model.h
index 55deab2b38dc..aa027f7bcb3e 100644
--- a/include/linux/energy_model.h
+++ b/include/linux/energy_model.h
@@ -27,7 +27,6 @@ struct em_cap_state {
* em_perf_domain - Performance domain
* @table: List of capacity states, in ascending order
* @nr_cap_states: Number of capacity states
- * @kobj: Kobject used to expose the domain in sysfs
* @cpus: Cpumask covering the CPUs of the domain
*
* A "performance domain" represents a group of CPUs whose performance is
@@ -38,7 +37,6 @@ struct em_cap_state {
struct em_perf_domain {
struct em_cap_state *table;
int nr_cap_states;
- struct kobject kobj;
unsigned long cpus[0];
};
diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
index 5ec376d4f2f3..d9dc2c38764a 100644
--- a/kernel/power/energy_model.c
+++ b/kernel/power/energy_model.c
@@ -23,82 +23,6 @@ static DEFINE_PER_CPU(struct em_perf_domain *, em_data);
*/
static DEFINE_MUTEX(em_pd_mutex);
-static struct kobject *em_kobject;
-
-/* Getters for the attributes of em_perf_domain objects */
-struct em_pd_attr {
- struct attribute attr;
- ssize_t (*show)(struct em_perf_domain *pd, char *buf);
- ssize_t (*store)(struct em_perf_domain *pd, const char *buf, size_t s);
-};
-
-#define EM_ATTR_LEN 13
-#define show_table_attr(_attr) \
-static ssize_t show_##_attr(struct em_perf_domain *pd, char *buf) \
-{ \
- ssize_t cnt = 0; \
- int i; \
- for (i = 0; i < pd->nr_cap_states; i++) { \
- if (cnt >= (ssize_t) (PAGE_SIZE / sizeof(char) \
- - (EM_ATTR_LEN + 2))) \
- goto out; \
- cnt += scnprintf(&buf[cnt], EM_ATTR_LEN + 1, "%lu ", \
- pd->table[i]._attr); \
- } \
-out: \
- cnt += sprintf(&buf[cnt], "\n"); \
- return cnt; \
-}
-
-show_table_attr(power);
-show_table_attr(frequency);
-show_table_attr(cost);
-
-static ssize_t show_cpus(struct em_perf_domain *pd, char *buf)
-{
- return sprintf(buf, "%*pbl\n", cpumask_pr_args(to_cpumask(pd->cpus)));
-}
-
-#define pd_attr(_name) em_pd_##_name##_attr
-#define define_pd_attr(_name) static struct em_pd_attr pd_attr(_name) = \
- __ATTR(_name, 0444, show_##_name, NULL)
-
-define_pd_attr(power);
-define_pd_attr(frequency);
-define_pd_attr(cost);
-define_pd_attr(cpus);
-
-static struct attribute *em_pd_default_attrs[] = {
- &pd_attr(power).attr,
- &pd_attr(frequency).attr,
- &pd_attr(cost).attr,
- &pd_attr(cpus).attr,
- NULL
-};
-
-#define to_pd(k) container_of(k, struct em_perf_domain, kobj)
-#define to_pd_attr(a) container_of(a, struct em_pd_attr, attr)
-
-static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
-{
- struct em_perf_domain *pd = to_pd(kobj);
- struct em_pd_attr *pd_attr = to_pd_attr(attr);
- ssize_t ret;
-
- ret = pd_attr->show(pd, buf);
-
- return ret;
-}
-
-static const struct sysfs_ops em_pd_sysfs_ops = {
- .show = show,
-};
-
-static struct kobj_type ktype_em_pd = {
- .sysfs_ops = &em_pd_sysfs_ops,
- .default_attrs = em_pd_default_attrs,
-};
-
static struct em_perf_domain *em_create_pd(cpumask_t *span, int nr_states,
struct em_data_callback *cb)
{
@@ -178,11 +102,6 @@ static struct em_perf_domain *em_create_pd(cpumask_t *span, int nr_states,
pd->nr_cap_states = nr_states;
cpumask_copy(to_cpumask(pd->cpus), span);
- ret = kobject_init_and_add(&pd->kobj, &ktype_em_pd, em_kobject,
- "pd%u", cpu);
- if (ret)
- pr_err("pd%d: failed kobject_init_and_add(): %d\n", cpu, ret);
-
return pd;
free_cs_table:
@@ -236,15 +155,6 @@ int em_register_perf_domain(cpumask_t *span, unsigned int nr_states,
*/
mutex_lock(&em_pd_mutex);
- if (!em_kobject) {
- em_kobject = kobject_create_and_add("energy_model",
- &cpu_subsys.dev_root->kobj);
- if (!em_kobject) {
- ret = -ENODEV;
- goto unlock;
- }
- }
-
for_each_cpu(cpu, span) {
/* Make sure we don't register again an existing domain. */
if (READ_ONCE(per_cpu(em_data, cpu))) {