diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/time/tick-sched.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index eb4af016ac65..5a9ff243588c 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
| @@ -365,6 +365,20 @@ void __init tick_nohz_init(void) | |||
| 365 | return; | 365 | return; |
| 366 | } | 366 | } |
| 367 | 367 | ||
| 368 | /* | ||
| 369 | * Full dynticks uses irq work to drive the tick rescheduling on safe | ||
| 370 | * locking contexts. But then we need irq work to raise its own | ||
| 371 | * interrupts to avoid circular dependency on the tick | ||
| 372 | */ | ||
| 373 | if (!arch_irq_work_has_interrupt()) { | ||
| 374 | pr_warning("NO_HZ: Can't run full dynticks because arch doesn't " | ||
| 375 | "support irq work self-IPIs\n"); | ||
| 376 | cpumask_clear(tick_nohz_full_mask); | ||
| 377 | cpumask_copy(housekeeping_mask, cpu_possible_mask); | ||
| 378 | tick_nohz_full_running = false; | ||
| 379 | return; | ||
| 380 | } | ||
| 381 | |||
| 368 | cpu = smp_processor_id(); | 382 | cpu = smp_processor_id(); |
| 369 | 383 | ||
| 370 | if (cpumask_test_cpu(cpu, tick_nohz_full_mask)) { | 384 | if (cpumask_test_cpu(cpu, tick_nohz_full_mask)) { |
