summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Poirier <mathieu.poirier@linaro.org>2017-07-19 14:43:03 -0600
committerMathieu Poirier <mathieu.poirier@linaro.org>2018-02-13 09:30:17 -0700
commit9d6fed8706ca6d594ca85e77180329cb16e2adc1 (patch)
treedc6ba07bb274bfd1324bc27814917479a8a9929c
parent7928b2cbe55b2a410a0f5c1f154610059c57b1b2 (diff)
sched/topology: Add 'doms_debug' proc entry
-rw-r--r--kernel/sched/topology.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
index 519b024f4e94..8010c2974d30 100644
--- a/kernel/sched/topology.c
+++ b/kernel/sched/topology.c
@@ -5,6 +5,8 @@
#include <linux/sched.h>
#include <linux/mutex.h>
#include <linux/sched/isolation.h>
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
#include "sched.h"
@@ -1930,3 +1932,59 @@ match2:
mutex_unlock(&sched_domains_mutex);
}
+static int doms_debug_show(struct seq_file *seq, void *v)
+{
+ int i, cpu;
+ struct root_domain *rd;
+ struct rq *rq;
+ struct cpumask default_rd_span;
+
+ cpumask_and(&default_rd_span,
+ def_root_domain.span, cpu_active_mask);
+
+ seq_printf(seq, "def_root_domain: %*pbl\n",
+ cpumask_pr_args(&default_rd_span));
+
+ for (i = 0; i < ndoms_cur; i++) {
+ cpu = cpumask_first(doms_cur[i]);
+ if (cpu >= nr_cpu_ids) {
+ seq_printf(seq, "doms_cur[%d]: empty\n", i);
+ continue;
+ }
+
+ rq = cpu_rq(cpu);
+ rd = rq->rd;
+ seq_printf(seq, "doms_cur[%d]: %*pbl rd->span: %*pbl (%c)\n",
+ i, cpumask_pr_args(doms_cur[i]),
+ cpumask_pr_args(rd->span),
+ rd == &def_root_domain ? 'd' : 'n');
+ }
+
+ return 0;
+}
+
+static int doms_debug_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, doms_debug_show, NULL);
+}
+
+static const struct file_operations doms_debug_fops = {
+ .open = doms_debug_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
+
+static int __init init_doms_debug_procfs(void)
+{
+ struct proc_dir_entry *pe;
+
+ pe = proc_create("doms_debug", 0444, NULL, &doms_debug_fops);
+ if (!pe)
+ return -ENOMEM;
+
+ return 0;
+}
+
+__initcall(init_doms_debug_procfs);
+