aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/softirq.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r--kernel/softirq.c9
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
54static DEFINE_PER_CPU(struct task_struct *, ksoftirqd); 54static DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
55 55
56char *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 }