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 | } |
