Loading kernel/sched/core_ctl.c +9 −0 Original line number Diff line number Diff line Loading @@ -911,6 +911,7 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) unsigned long flags; unsigned int num_cpus = cluster->num_cpus; unsigned int nr_isolated = 0; bool first_pass = cluster->nr_not_preferred_cpus; /* * Protect against entry being removed (and added at tail) by other Loading Loading @@ -956,6 +957,7 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) cluster->nr_isolated_cpus += nr_isolated; spin_unlock_irqrestore(&state_lock, flags); again: /* * If the number of active CPUs is within the limits, then * don't force isolation of any busy CPUs. Loading @@ -975,6 +977,9 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) if (cluster->active_cpus <= cluster->max_cpus) break; if (first_pass && !c->not_preferred) continue; spin_unlock_irqrestore(&state_lock, flags); pr_debug("Trying to isolate CPU%u\n", c->cpu); Loading @@ -991,6 +996,10 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) cluster->nr_isolated_cpus += nr_isolated; spin_unlock_irqrestore(&state_lock, flags); if (first_pass && cluster->active_cpus > cluster->max_cpus) { first_pass = false; goto again; } } static void __try_to_unisolate(struct cluster_data *cluster, Loading kernel/sched/cpupri.c +2 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,8 @@ int cpupri_find(struct cpupri *cp, struct task_struct *p, if (lowest_mask) { cpumask_and(lowest_mask, &p->cpus_allowed, vec->mask); cpumask_andnot(lowest_mask, lowest_mask, cpu_isolated_mask); if (drop_nopreempts) drop_nopreempt_cpus(lowest_mask); /* Loading Loading
kernel/sched/core_ctl.c +9 −0 Original line number Diff line number Diff line Loading @@ -911,6 +911,7 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) unsigned long flags; unsigned int num_cpus = cluster->num_cpus; unsigned int nr_isolated = 0; bool first_pass = cluster->nr_not_preferred_cpus; /* * Protect against entry being removed (and added at tail) by other Loading Loading @@ -956,6 +957,7 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) cluster->nr_isolated_cpus += nr_isolated; spin_unlock_irqrestore(&state_lock, flags); again: /* * If the number of active CPUs is within the limits, then * don't force isolation of any busy CPUs. Loading @@ -975,6 +977,9 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) if (cluster->active_cpus <= cluster->max_cpus) break; if (first_pass && !c->not_preferred) continue; spin_unlock_irqrestore(&state_lock, flags); pr_debug("Trying to isolate CPU%u\n", c->cpu); Loading @@ -991,6 +996,10 @@ static void try_to_isolate(struct cluster_data *cluster, unsigned int need) cluster->nr_isolated_cpus += nr_isolated; spin_unlock_irqrestore(&state_lock, flags); if (first_pass && cluster->active_cpus > cluster->max_cpus) { first_pass = false; goto again; } } static void __try_to_unisolate(struct cluster_data *cluster, Loading
kernel/sched/cpupri.c +2 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,8 @@ int cpupri_find(struct cpupri *cp, struct task_struct *p, if (lowest_mask) { cpumask_and(lowest_mask, &p->cpus_allowed, vec->mask); cpumask_andnot(lowest_mask, lowest_mask, cpu_isolated_mask); if (drop_nopreempts) drop_nopreempt_cpus(lowest_mask); /* Loading