Merge "ARM: dts: msm: disable core_ctl for SDM630"
This commit is contained in:
commit
0a6a4c21ff
3 changed files with 52 additions and 1 deletions
|
@ -750,6 +750,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||||
seconds. Defaults to 10*60 = 10mins. A value of 0
|
seconds. Defaults to 10*60 = 10mins. A value of 0
|
||||||
disables the blank timer.
|
disables the blank timer.
|
||||||
|
|
||||||
|
core_ctl_disable_cpumask= [SMP]
|
||||||
|
Exempt the CPUs from being managed by core_ctl.
|
||||||
|
core_ctl operates on a cluster basis. So all the
|
||||||
|
CPUs in a given cluster must be specified to disable
|
||||||
|
core_ctl for that cluster.
|
||||||
|
|
||||||
coredump_filter=
|
coredump_filter=
|
||||||
[KNL] Change the default value for
|
[KNL] Change the default value for
|
||||||
/proc/<pid>/coredump_filter.
|
/proc/<pid>/coredump_filter.
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial0";
|
stdout-path = "serial0";
|
||||||
bootargs = "rcupdate.rcu_expedited=1";
|
bootargs = "rcupdate.rcu_expedited=1 core_ctl_disable_cpumask=0-7";
|
||||||
};
|
};
|
||||||
|
|
||||||
psci {
|
psci {
|
||||||
|
|
|
@ -653,6 +653,9 @@ int core_ctl_set_boost(bool boost)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
bool boost_state_changed = false;
|
bool boost_state_changed = false;
|
||||||
|
|
||||||
|
if (unlikely(!initialized))
|
||||||
|
return 0;
|
||||||
|
|
||||||
spin_lock_irqsave(&state_lock, flags);
|
spin_lock_irqsave(&state_lock, flags);
|
||||||
for_each_cluster(cluster, index) {
|
for_each_cluster(cluster, index) {
|
||||||
if (cluster->is_big_cluster) {
|
if (cluster->is_big_cluster) {
|
||||||
|
@ -931,6 +934,42 @@ static struct notifier_block __refdata cpu_notifier = {
|
||||||
|
|
||||||
/* ============================ init code ============================== */
|
/* ============================ init code ============================== */
|
||||||
|
|
||||||
|
static cpumask_var_t core_ctl_disable_cpumask;
|
||||||
|
static bool core_ctl_disable_cpumask_present;
|
||||||
|
|
||||||
|
static int __init core_ctl_disable_setup(char *str)
|
||||||
|
{
|
||||||
|
if (!*str)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
alloc_bootmem_cpumask_var(&core_ctl_disable_cpumask);
|
||||||
|
|
||||||
|
if (cpulist_parse(str, core_ctl_disable_cpumask) < 0) {
|
||||||
|
free_bootmem_cpumask_var(core_ctl_disable_cpumask);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
core_ctl_disable_cpumask_present = true;
|
||||||
|
pr_info("disable_cpumask=%*pbl\n",
|
||||||
|
cpumask_pr_args(core_ctl_disable_cpumask));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
early_param("core_ctl_disable_cpumask", core_ctl_disable_setup);
|
||||||
|
|
||||||
|
static bool should_skip(const struct cpumask *mask)
|
||||||
|
{
|
||||||
|
if (!core_ctl_disable_cpumask_present)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We operate on a cluster basis. Disable the core_ctl for
|
||||||
|
* a cluster, if all of it's cpus are specified in
|
||||||
|
* core_ctl_disable_cpumask
|
||||||
|
*/
|
||||||
|
return cpumask_subset(mask, core_ctl_disable_cpumask);
|
||||||
|
}
|
||||||
|
|
||||||
static struct cluster_data *find_cluster_by_first_cpu(unsigned int first_cpu)
|
static struct cluster_data *find_cluster_by_first_cpu(unsigned int first_cpu)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@ -952,6 +991,9 @@ static int cluster_init(const struct cpumask *mask)
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
|
struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
|
||||||
|
|
||||||
|
if (should_skip(mask))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (find_cluster_by_first_cpu(first_cpu))
|
if (find_cluster_by_first_cpu(first_cpu))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -1052,6 +1094,9 @@ static int __init core_ctl_init(void)
|
||||||
{
|
{
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
|
|
||||||
|
if (should_skip(cpu_possible_mask))
|
||||||
|
return 0;
|
||||||
|
|
||||||
core_ctl_check_interval = (rq_avg_period_ms - RQ_AVG_TOLERANCE)
|
core_ctl_check_interval = (rq_avg_period_ms - RQ_AVG_TOLERANCE)
|
||||||
* NSEC_PER_MSEC;
|
* NSEC_PER_MSEC;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue