diff options
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r-- | kernel/softirq.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c index bd89bc4eb0b9..d7837d45419e 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -3,7 +3,9 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 1992 Linus Torvalds | 4 | * Copyright (C) 1992 Linus Torvalds |
5 | * | 5 | * |
6 | * Rewritten. Old one was good in 2.2, but in 2.3 it was immoral. --ANK (990903) | 6 | * Distribute under GPLv2. |
7 | * | ||
8 | * Rewritten. Old one was good in 2.2, but in 2.3 it was immoral. --ANK (990903) | ||
7 | */ | 9 | */ |
8 | 10 | ||
9 | #include <linux/module.h> | 11 | #include <linux/module.h> |
@@ -278,9 +280,14 @@ asmlinkage void do_softirq(void) | |||
278 | */ | 280 | */ |
279 | void irq_enter(void) | 281 | void irq_enter(void) |
280 | { | 282 | { |
283 | #ifdef CONFIG_NO_HZ | ||
284 | int cpu = smp_processor_id(); | ||
285 | if (idle_cpu(cpu) && !in_interrupt()) | ||
286 | tick_nohz_stop_idle(cpu); | ||
287 | #endif | ||
281 | __irq_enter(); | 288 | __irq_enter(); |
282 | #ifdef CONFIG_NO_HZ | 289 | #ifdef CONFIG_NO_HZ |
283 | if (idle_cpu(smp_processor_id())) | 290 | if (idle_cpu(cpu)) |
284 | tick_nohz_update_jiffies(); | 291 | tick_nohz_update_jiffies(); |
285 | #endif | 292 | #endif |
286 | } | 293 | } |