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: I5d849dfd29aa5bb594454473768d7db1da258028 Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
This commit is contained in:
parent
639c8ad52d
commit
ca2c4c6518
1 changed files with 10 additions and 2 deletions
|
@ -161,7 +161,15 @@ extern void __tick_nohz_task_switch(void);
|
||||||
#else
|
#else
|
||||||
static inline int housekeeping_any_cpu(void)
|
static inline int housekeeping_any_cpu(void)
|
||||||
{
|
{
|
||||||
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 bool tick_nohz_full_enabled(void) { return false; }
|
static inline bool tick_nohz_full_enabled(void) { return false; }
|
||||||
static inline bool tick_nohz_full_cpu(int cpu) { return false; }
|
static inline bool tick_nohz_full_cpu(int cpu) { return false; }
|
||||||
|
@ -187,7 +195,7 @@ static inline bool is_housekeeping_cpu(int cpu)
|
||||||
if (tick_nohz_full_enabled())
|
if (tick_nohz_full_enabled())
|
||||||
return cpumask_test_cpu(cpu, housekeeping_mask);
|
return cpumask_test_cpu(cpu, housekeeping_mask);
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return !cpu_isolated(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void housekeeping_affine(struct task_struct *t)
|
static inline void housekeeping_affine(struct task_struct *t)
|
||||||
|
|
Loading…
Add table
Reference in a new issue