Loading kernel/sched/core_ctl.c +28 −1 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ struct cluster_data { bool pending; spinlock_t pending_lock; bool is_big_cluster; bool enable; int nrrun; struct task_struct *core_ctl_thread; unsigned int first_cpu; Loading Loading @@ -247,6 +248,29 @@ static ssize_t show_is_big_cluster(const struct cluster_data *state, char *buf) return snprintf(buf, PAGE_SIZE, "%u\n", state->is_big_cluster); } static ssize_t store_enable(struct cluster_data *state, const char *buf, size_t count) { unsigned int val; bool bval; if (sscanf(buf, "%u\n", &val) != 1) return -EINVAL; bval = !!val; if (bval != state->enable) { state->enable = bval; apply_need(state); } return count; } static ssize_t show_enable(const struct cluster_data *state, char *buf) { return scnprintf(buf, PAGE_SIZE, "%u\n", state->enable); } static ssize_t show_need_cpus(const struct cluster_data *state, char *buf) { return snprintf(buf, PAGE_SIZE, "%u\n", state->need_cpus); Loading Loading @@ -377,6 +401,7 @@ core_ctl_attr_ro(need_cpus); core_ctl_attr_ro(active_cpus); core_ctl_attr_ro(global_state); core_ctl_attr_rw(not_preferred); core_ctl_attr_rw(enable); static struct attribute *default_attrs[] = { &min_cpus.attr, Loading @@ -386,6 +411,7 @@ static struct attribute *default_attrs[] = { &busy_down_thres.attr, &task_thres.attr, &is_big_cluster.attr, &enable.attr, &need_cpus.attr, &active_cpus.attr, &global_state.attr, Loading Loading @@ -529,7 +555,7 @@ static bool eval_need(struct cluster_data *cluster) spin_lock_irqsave(&state_lock, flags); if (cluster->boost) { if (cluster->boost || !cluster->enable) { need_cpus = cluster->max_cpus; } else { cluster->active_cpus = get_active_cpu_count(cluster); Loading Loading @@ -1020,6 +1046,7 @@ static int cluster_init(const struct cpumask *mask) cluster->offline_delay_ms = 100; cluster->task_thres = UINT_MAX; cluster->nrrun = cluster->num_cpus; cluster->enable = true; INIT_LIST_HEAD(&cluster->lru); spin_lock_init(&cluster->pending_lock); Loading Loading
kernel/sched/core_ctl.c +28 −1 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ struct cluster_data { bool pending; spinlock_t pending_lock; bool is_big_cluster; bool enable; int nrrun; struct task_struct *core_ctl_thread; unsigned int first_cpu; Loading Loading @@ -247,6 +248,29 @@ static ssize_t show_is_big_cluster(const struct cluster_data *state, char *buf) return snprintf(buf, PAGE_SIZE, "%u\n", state->is_big_cluster); } static ssize_t store_enable(struct cluster_data *state, const char *buf, size_t count) { unsigned int val; bool bval; if (sscanf(buf, "%u\n", &val) != 1) return -EINVAL; bval = !!val; if (bval != state->enable) { state->enable = bval; apply_need(state); } return count; } static ssize_t show_enable(const struct cluster_data *state, char *buf) { return scnprintf(buf, PAGE_SIZE, "%u\n", state->enable); } static ssize_t show_need_cpus(const struct cluster_data *state, char *buf) { return snprintf(buf, PAGE_SIZE, "%u\n", state->need_cpus); Loading Loading @@ -377,6 +401,7 @@ core_ctl_attr_ro(need_cpus); core_ctl_attr_ro(active_cpus); core_ctl_attr_ro(global_state); core_ctl_attr_rw(not_preferred); core_ctl_attr_rw(enable); static struct attribute *default_attrs[] = { &min_cpus.attr, Loading @@ -386,6 +411,7 @@ static struct attribute *default_attrs[] = { &busy_down_thres.attr, &task_thres.attr, &is_big_cluster.attr, &enable.attr, &need_cpus.attr, &active_cpus.attr, &global_state.attr, Loading Loading @@ -529,7 +555,7 @@ static bool eval_need(struct cluster_data *cluster) spin_lock_irqsave(&state_lock, flags); if (cluster->boost) { if (cluster->boost || !cluster->enable) { need_cpus = cluster->max_cpus; } else { cluster->active_cpus = get_active_cpu_count(cluster); Loading Loading @@ -1020,6 +1046,7 @@ static int cluster_init(const struct cpumask *mask) cluster->offline_delay_ms = 100; cluster->task_thres = UINT_MAX; cluster->nrrun = cluster->num_cpus; cluster->enable = true; INIT_LIST_HEAD(&cluster->lru); spin_lock_init(&cluster->pending_lock); Loading