From: Michael Wang <[email protected]>

Add the facility for user to configure the dynamical domain flags and
enable/disable it.

Signed-off-by: Michael Wang <[email protected]>
---
 kernel/cpuset.c |   85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 066c61c..5ff649d 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1506,6 +1506,17 @@ typedef enum {
        FILE_MEM_HARDWALL,
        FILE_SCHED_LOAD_BALANCE,
        FILE_SCHED_RELAX_DOMAIN_LEVEL,
+#ifdef CONFIG_SCHED_SMT
+       FILE_SCHED_SMT_DDF,
+#endif
+#ifdef CONFIG_SCHED_MC
+       FILE_SCHED_MC_DDF,
+#endif
+#ifdef CONFIG_SCHED_BOOK
+       FILE_SCHED_BOOK_DDF,
+#endif
+       FILE_SCHED_CPU_DDF,
+       FILE_SCHED_ENABLE_DDF,
        FILE_MEMORY_PRESSURE_ENABLED,
        FILE_MEMORY_PRESSURE,
        FILE_SPREAD_PAGE,
@@ -1549,6 +1560,27 @@ static int cpuset_write_u64(struct cgroup *cgrp, struct 
cftype *cft, u64 val)
        case FILE_SPREAD_SLAB:
                retval = update_flag(CS_SPREAD_SLAB, cs, val);
                break;
+#ifdef CONFIG_SCHED_SMT
+       case FILE_SCHED_SMT_DDF:
+               retval = update_ddf(SMT_DDF, cs, val);
+               break;
+#endif
+#ifdef CONFIG_SCHED_MC
+       case FILE_SCHED_MC_DDF:
+               retval = update_ddf(MC_DDF, cs, val);
+               break;
+#endif
+#ifdef CONFIG_SCHED_BOOK
+       case FILE_SCHED_BOOK_DDF:
+               retval = update_ddf(BOOK_DDF, cs, val);
+               break;
+#endif
+       case FILE_SCHED_CPU_DDF:
+               retval = update_ddf(CPU_DDF, cs, val);
+               break;
+       case FILE_SCHED_ENABLE_DDF:
+               retval = enable_ddf(cs, val);
+               break;
        default:
                retval = -EINVAL;
                break;
@@ -1708,6 +1740,22 @@ static u64 cpuset_read_u64(struct cgroup *cont, struct 
cftype *cft)
                return is_spread_page(cs);
        case FILE_SPREAD_SLAB:
                return is_spread_slab(cs);
+#ifdef CONFIG_SCHED_SMT
+       case FILE_SCHED_SMT_DDF:
+               return cs->ddf[SMT_DDF];
+#endif
+#ifdef CONFIG_SCHED_MC
+       case FILE_SCHED_MC_DDF:
+               return cs->ddf[MC_DDF];
+#endif
+#ifdef CONFIG_SCHED_BOOK
+       case FILE_SCHED_BOOK_DDF:
+               return cs->ddf[BOOK_DDF];
+#endif
+       case FILE_SCHED_CPU_DDF:
+               return cs->ddf[CPU_DDF];
+       case FILE_SCHED_ENABLE_DDF:
+               return cs->enable_ddf;
        default:
                BUG();
        }
@@ -1788,6 +1836,43 @@ static struct cftype files[] = {
                .private = FILE_SCHED_RELAX_DOMAIN_LEVEL,
        },
 
+#ifdef CONFIG_SCHED_SMT
+       {
+               .name = "sched_smt_domain_flag",
+               .read_u64 = cpuset_read_u64,
+               .write_u64 = cpuset_write_u64,
+               .private = FILE_SCHED_SMT_DDF,
+       },
+#endif
+#ifdef CONFIG_SCHED_MC
+       {
+               .name = "sched_mc_domain_flag",
+               .read_u64 = cpuset_read_u64,
+               .write_u64 = cpuset_write_u64,
+               .private = FILE_SCHED_MC_DDF,
+       },
+#endif
+#ifdef CONFIG_SCHED_BOOK
+       {
+               .name = "sched_book_domain_flag",
+               .read_u64 = cpuset_read_u64,
+               .write_u64 = cpuset_write_u64,
+               .private = FILE_SCHED_BOOK_DDF,
+       },
+#endif
+       {
+               .name = "sched_cpu_domain_flag",
+               .read_u64 = cpuset_read_u64,
+               .write_u64 = cpuset_write_u64,
+               .private = FILE_SCHED_CPU_DDF,
+       },
+       {
+               .name = "sched_enable_domain_flag",
+               .read_u64 = cpuset_read_u64,
+               .write_u64 = cpuset_write_u64,
+               .private = FILE_SCHED_ENABLE_DDF,
+       },
+
        {
                .name = "memory_migrate",
                .read_u64 = cpuset_read_u64,
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to