|
@@ -23,6 +23,7 @@
|
|
|
#include <linux/irq_work.h>
|
|
|
#include <linux/posix-timers.h>
|
|
|
#include <linux/perf_event.h>
|
|
|
+#include <linux/context_tracking.h>
|
|
|
|
|
|
#include <asm/irq_regs.h>
|
|
|
|
|
@@ -344,11 +345,16 @@ static int tick_nohz_init_all(void)
|
|
|
|
|
|
void __init tick_nohz_init(void)
|
|
|
{
|
|
|
+ int cpu;
|
|
|
+
|
|
|
if (!have_nohz_full_mask) {
|
|
|
if (tick_nohz_init_all() < 0)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ for_each_cpu(cpu, nohz_full_mask)
|
|
|
+ context_tracking_cpu_set(cpu);
|
|
|
+
|
|
|
cpu_notifier(tick_nohz_cpu_down_callback, 0);
|
|
|
cpulist_scnprintf(nohz_full_buf, sizeof(nohz_full_buf), nohz_full_mask);
|
|
|
pr_info("NO_HZ: Full dynticks CPUs: %s.\n", nohz_full_buf);
|