diff options
author | Venkatesh Pallipadi <venki@google.com> | 2010-12-21 20:09:00 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-01-26 06:33:20 -0500 |
commit | 4dd53d891ca46dcc1fde0376a33540d3fd83cb9a (patch) | |
tree | 9a6c242176f196c062ae76c50b0f321251900b5a /kernel | |
parent | f07333bf6ee66d9b49286cec4371cf375e745b7a (diff) |
softirqs: Free up pf flag PF_KSOFTIRQD
Cleanup patch, freeing up PF_KSOFTIRQD and use per_cpu ksoftirqd pointer
instead, as suggested by Eric Dumazet.
Tested-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Venkatesh Pallipadi <venki@google.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1292980144-28796-2-git-send-email-venki@google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched.c | 2 | ||||
-rw-r--r-- | kernel/softirq.c | 3 |
2 files changed, 2 insertions, 3 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 6820b5b3a969..8b89b3bba565 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -1880,7 +1880,7 @@ void account_system_vtime(struct task_struct *curr) | |||
1880 | */ | 1880 | */ |
1881 | if (hardirq_count()) | 1881 | if (hardirq_count()) |
1882 | __this_cpu_add(cpu_hardirq_time, delta); | 1882 | __this_cpu_add(cpu_hardirq_time, delta); |
1883 | else if (in_serving_softirq() && !(curr->flags & PF_KSOFTIRQD)) | 1883 | else if (in_serving_softirq() && curr != this_cpu_ksoftirqd()) |
1884 | __this_cpu_add(cpu_softirq_time, delta); | 1884 | __this_cpu_add(cpu_softirq_time, delta); |
1885 | 1885 | ||
1886 | irq_time_write_end(); | 1886 | irq_time_write_end(); |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 68eb5efec388..0cee50487629 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -54,7 +54,7 @@ EXPORT_SYMBOL(irq_stat); | |||
54 | 54 | ||
55 | static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp; | 55 | static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp; |
56 | 56 | ||
57 | static DEFINE_PER_CPU(struct task_struct *, ksoftirqd); | 57 | DEFINE_PER_CPU(struct task_struct *, ksoftirqd); |
58 | 58 | ||
59 | char *softirq_to_name[NR_SOFTIRQS] = { | 59 | char *softirq_to_name[NR_SOFTIRQS] = { |
60 | "HI", "TIMER", "NET_TX", "NET_RX", "BLOCK", "BLOCK_IOPOLL", | 60 | "HI", "TIMER", "NET_TX", "NET_RX", "BLOCK", "BLOCK_IOPOLL", |
@@ -721,7 +721,6 @@ static int run_ksoftirqd(void * __bind_cpu) | |||
721 | { | 721 | { |
722 | set_current_state(TASK_INTERRUPTIBLE); | 722 | set_current_state(TASK_INTERRUPTIBLE); |
723 | 723 | ||
724 | current->flags |= PF_KSOFTIRQD; | ||
725 | while (!kthread_should_stop()) { | 724 | while (!kthread_should_stop()) { |
726 | preempt_disable(); | 725 | preempt_disable(); |
727 | if (!local_softirq_pending()) { | 726 | if (!local_softirq_pending()) { |