sched/tick: Ensure timers does not get queued on isolated cpus
Timers should not be queued on isolated cpus. Instead try to find other cpus to queue timer on. Change-Id: I7a1a8aade8630226d7349cc37afd1a3abe48fc67 Signed-off-by: Olav Haugan <ohaugan@codeaurora.org> [satyap@codeaurora.org: Port to 4.19 by moving changes needed from include/linux/tick.h to include/linux/sched/isolation.h] Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
This commit is contained in:
committed by
Satya Durga Srinivasu Prabhala
parent
5d135373a7
commit
5a28e00796
@@ -27,7 +27,15 @@ extern void __init housekeeping_init(void);
|
||||
|
||||
static inline int housekeeping_any_cpu(enum hk_flags flags)
|
||||
{
|
||||
return smp_processor_id();
|
||||
cpumask_t available;
|
||||
int cpu;
|
||||
|
||||
cpumask_andnot(&available, cpu_online_mask, cpu_isolated_mask);
|
||||
cpu = cpumask_any(&available);
|
||||
if (cpu >= nr_cpu_ids)
|
||||
cpu = smp_processor_id();
|
||||
|
||||
return cpu;
|
||||
}
|
||||
|
||||
static inline const struct cpumask *housekeeping_cpumask(enum hk_flags flags)
|
||||
@@ -46,7 +54,7 @@ static inline bool housekeeping_cpu(int cpu, enum hk_flags flags)
|
||||
if (static_branch_unlikely(&housekeeping_overriden))
|
||||
return housekeeping_test_cpu(cpu, flags);
|
||||
#endif
|
||||
return true;
|
||||
return !cpu_isolated(cpu);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_SCHED_ISOLATION_H */
|
||||
|
||||
Reference in New Issue
Block a user