Messages in this thread | | | Date | Sat, 6 Mar 2021 21:13:43 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH] tasklet: Remove tasklet_kill_immediate |
| |
On Sat, Mar 06, 2021 at 01:36:58PM -0800, Davidlohr Bueso wrote: > Ever since RCU was converted to softirq, it has no users. > > Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
That was a long time ago...
Acked-by: Paul E. McKenney <paulmck@kernel.org>
> --- > include/linux/interrupt.h | 1 - > kernel/softirq.c | 32 -------------------------------- > 2 files changed, 33 deletions(-) > > diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h > index 967e25767153..36a2ac6baf9a 100644 > --- a/include/linux/interrupt.h > +++ b/include/linux/interrupt.h > @@ -712,7 +712,6 @@ static inline void tasklet_enable(struct tasklet_struct *t) > } > > extern void tasklet_kill(struct tasklet_struct *t); > -extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu); > extern void tasklet_init(struct tasklet_struct *t, > void (*func)(unsigned long), unsigned long data); > extern void tasklet_setup(struct tasklet_struct *t, > diff --git a/kernel/softirq.c b/kernel/softirq.c > index 9908ec4a9bfe..8b44ab9a2f69 100644 > --- a/kernel/softirq.c > +++ b/kernel/softirq.c > @@ -658,38 +658,6 @@ static void run_ksoftirqd(unsigned int cpu) > } > > #ifdef CONFIG_HOTPLUG_CPU > -/* > - * tasklet_kill_immediate is called to remove a tasklet which can already be > - * scheduled for execution on @cpu. > - * > - * Unlike tasklet_kill, this function removes the tasklet > - * _immediately_, even if the tasklet is in TASKLET_STATE_SCHED state. > - * > - * When this function is called, @cpu must be in the CPU_DEAD state. > - */ > -void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu) > -{ > - struct tasklet_struct **i; > - > - BUG_ON(cpu_online(cpu)); > - BUG_ON(test_bit(TASKLET_STATE_RUN, &t->state)); > - > - if (!test_bit(TASKLET_STATE_SCHED, &t->state)) > - return; > - > - /* CPU is dead, so no lock needed. */ > - for (i = &per_cpu(tasklet_vec, cpu).head; *i; i = &(*i)->next) { > - if (*i == t) { > - *i = t->next; > - /* If this was the tail element, move the tail ptr */ > - if (*i == NULL) > - per_cpu(tasklet_vec, cpu).tail = i; > - return; > - } > - } > - BUG(); > -} > - > static int takeover_tasklets(unsigned int cpu) > { > /* CPU is dead, so no lock needed. */ > -- > 2.26.2 >
| |