Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a28e007 authored by Olav Haugan's avatar Olav Haugan Committed by Satya Durga Srinivasu Prabhala
Browse files

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: default avatarOlav 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: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent 5d135373
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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 */