diff options
Diffstat (limited to 'kernel/sched/isolation.c')
| -rw-r--r-- | kernel/sched/isolation.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c index ccb28085b114..9fcb2a695a41 100644 --- a/kernel/sched/isolation.c +++ b/kernel/sched/isolation.c @@ -22,9 +22,17 @@ EXPORT_SYMBOL_GPL(housekeeping_enabled);  int housekeeping_any_cpu(enum hk_flags flags)  { -	if (static_branch_unlikely(&housekeeping_overridden)) -		if (housekeeping_flags & flags) +	int cpu; + +	if (static_branch_unlikely(&housekeeping_overridden)) { +		if (housekeeping_flags & flags) { +			cpu = sched_numa_find_closest(housekeeping_mask, smp_processor_id()); +			if (cpu < nr_cpu_ids) +				return cpu; +  			return cpumask_any_and(housekeeping_mask, cpu_online_mask); +		} +	}  	return smp_processor_id();  }  EXPORT_SYMBOL_GPL(housekeeping_any_cpu);  |