diff options
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r-- | kernel/softirq.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c index 7571bcb71be4..9f90fdc039f4 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -53,6 +53,12 @@ static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp | |||
53 | 53 | ||
54 | static DEFINE_PER_CPU(struct task_struct *, ksoftirqd); | 54 | static DEFINE_PER_CPU(struct task_struct *, ksoftirqd); |
55 | 55 | ||
56 | char *softirq_to_name[NR_SOFTIRQS] = { | ||
57 | "HI_SOFTIRQ", "TIMER_SOFTIRQ", "NET_TX_SOFTIRQ", "NET_RX_SOFTIRQ", | ||
58 | "BLOCK_SOFTIRQ", "TASKLET_SOFTIRQ", "SCHED_SOFTIRQ", "HRTIMER_SOFTIRQ", | ||
59 | "RCU_SOFTIRQ" | ||
60 | }; | ||
61 | |||
56 | /* | 62 | /* |
57 | * we cannot loop indefinitely here to avoid userspace starvation, | 63 | * we cannot loop indefinitely here to avoid userspace starvation, |
58 | * but we also don't want to introduce a worst case 1/HZ latency | 64 | * but we also don't want to introduce a worst case 1/HZ latency |
@@ -209,9 +215,10 @@ restart: | |||
209 | h->action(h); | 215 | h->action(h); |
210 | 216 | ||
211 | if (unlikely(prev_count != preempt_count())) { | 217 | if (unlikely(prev_count != preempt_count())) { |
212 | printk(KERN_ERR "huh, entered softirq %td %p" | 218 | printk(KERN_ERR "huh, entered softirq %td %s %p" |
213 | "with preempt_count %08x," | 219 | "with preempt_count %08x," |
214 | " exited with %08x?\n", h - softirq_vec, | 220 | " exited with %08x?\n", h - softirq_vec, |
221 | softirq_to_name[h - softirq_vec], | ||
215 | h->action, prev_count, preempt_count()); | 222 | h->action, prev_count, preempt_count()); |
216 | preempt_count() = prev_count; | 223 | preempt_count() = prev_count; |
217 | } | 224 | } |