Remove cpu arg from cpu_raise_irq
Subsystems (3)
PATCH 1/1 Remove cpu arg from cpu_raise_irq
Linus, please apply. Names changed as discussed.
Name: Remove CPU arg from softirq functions
Author: Rusty Russell
Status: Tested on 2.5.74
Depends: Percpu/ksoftirqd_percpu.patch.gz
D: The function cpu_raise_softirq() takes a softirq number, and a cpu number,
D: but cannot be used with cpu != smp_processor_id(), because there's no
D: locking around the pending softirq lists. Since noone does this, remove
D: that arg.
D:
D: As per Linus' suggestion, names changed:
D: raise_softirq(int nr)
D: cpu_raise_softirq(int cpu, int nr) -> raise_softirq_irqoff(int nr)
D: __cpu_raise_softirq(int cpu, int nr) -> __raise_softirq_irqoff(int nr)
drivers/scsi/scsi.c +1 -1
@@ -582,7 +582,7 @@ void scsi_done(struct scsi_cmnd *cmd)local_irq_save (flags); cpu =smp_processor_id ();list_add_tail (&cmd->eh_entry, &done_q[cpu]); -cpu_raise_softirq (cpu,SCSI_SOFTIRQ ); +raise_softirq_irqoff (SCSI_SOFTIRQ );local_irq_restore (flags); }
include/linux/interrupt.h +2 -2
@@ -94,8 +94,8 @@ struct softirq_action asmlinkage void do_softirq(void);extern void open_softirq (int nr,void (*action)(struct softirq_action *),void *data);extern void softirq_init (void ); -#define __cpu_raise_softirq (cpu, nr) do { softirq_pending(cpu) |= 1UL << (nr); } while (0) -extern void FASTCALL (cpu_raise_softirq (unsigned int cpu,unsigned int nr)); +#define __raise_softirq_irqoff (nr) do { local_softirq_pending() |= 1UL << (nr); } while (0) +extern void FASTCALL (raise_softirq_irqoff (unsigned int nr));extern void FASTCALL (raise_softirq (unsigned int nr));#ifndef invoke_softirq
include/linux/netdevice.h +4 -4
@@ -561,7 +561,7 @@ static inline void __netif_schedule(stru cpu =smp_processor_id (); dev->next_sched = softnet_data[cpu].output_queue; softnet_data[cpu].output_queue = dev; -cpu_raise_softirq (cpu,NET_TX_SOFTIRQ ); +raise_softirq_irqoff (NET_TX_SOFTIRQ );local_irq_restore (flags); } }
@@ -612,7 +612,7 @@ static inline void dev_kfree_skb_irq(str cpu =smp_processor_id (); skb->next = softnet_data[cpu].completion_queue; softnet_data[cpu].completion_queue = skb; -cpu_raise_softirq (cpu,NET_TX_SOFTIRQ ); +raise_softirq_irqoff (NET_TX_SOFTIRQ );local_irq_restore (flags); } }
@@ -779,7 +779,7 @@ static inline void __netif_rx_schedule(s dev->quota += dev->weight; else dev->quota = dev->weight; -__cpu_raise_softirq (cpu,NET_RX_SOFTIRQ ); +__raise_softirq_irqoff (NET_RX_SOFTIRQ );local_irq_restore (flags); }
@@ -805,7 +805,7 @@ static inline int netif_rx_reschedule(stlocal_irq_save (flags); cpu =smp_processor_id ();list_add_tail (&dev->poll_list, &softnet_data[cpu].poll_list); -__cpu_raise_softirq (cpu,NET_RX_SOFTIRQ ); +__raise_softirq_irqoff (NET_RX_SOFTIRQ );local_irq_restore (flags);return 1 ; }
kernel/ksyms.c +1 -1
@@ -586,7 +586,7 @@ EXPORT_SYMBOL(tasklet_kill);EXPORT_SYMBOL (do_softirq);EXPORT_SYMBOL (raise_softirq);EXPORT_SYMBOL (open_softirq); -EXPORT_SYMBOL (cpu_raise_softirq); +EXPORT_SYMBOL (raise_softirq_irqoff);EXPORT_SYMBOL (__tasklet_schedule);EXPORT_SYMBOL (__tasklet_hi_schedule);
kernel/softirq.c +7 -7
@@ -121,9 +121,9 @@ EXPORT_SYMBOL(local_bh_enable);/* * This function must run with irqs disabled! */ -inline void cpu_raise_softirq (unsigned int cpu,unsigned int nr) +inline void raise_softirq_irqoff (unsigned int nr) { -__cpu_raise_softirq (cpu, nr); +__raise_softirq_irqoff (nr);/* * If we're in an interrupt or softirq, we're done
@@ -143,7 +143,7 @@ void raise_softirq(unsigned int nr)unsigned long flags;local_irq_save (flags); -cpu_raise_softirq (smp_processor_id (), nr); +raise_softirq_irqoff (nr);local_irq_restore (flags); }
@@ -172,7 +172,7 @@ void __tasklet_schedule(struct tasklet_slocal_irq_save (flags); t->next =__get_cpu_var (tasklet_vec).list;__get_cpu_var (tasklet_vec).list = t; -cpu_raise_softirq (smp_processor_id (),TASKLET_SOFTIRQ ); +raise_softirq_irqoff (TASKLET_SOFTIRQ );local_irq_restore (flags); }
@@ -183,7 +183,7 @@ void __tasklet_hi_schedule(struct tasklelocal_irq_save (flags); t->next =__get_cpu_var (tasklet_hi_vec).list;__get_cpu_var (tasklet_hi_vec).list = t; -cpu_raise_softirq (smp_processor_id (),HI_SOFTIRQ ); +raise_softirq_irqoff (HI_SOFTIRQ );local_irq_restore (flags); }
@@ -215,7 +215,7 @@ static void tasklet_action(struct softirlocal_irq_disable (); t->next =__get_cpu_var (tasklet_vec).list;__get_cpu_var (tasklet_vec).list = t; -__cpu_raise_softirq (smp_processor_id (),TASKLET_SOFTIRQ ); +__raise_softirq_irqoff (TASKLET_SOFTIRQ );local_irq_enable (); } }
@@ -248,7 +248,7 @@ static void tasklet_hi_action(struct soflocal_irq_disable (); t->next =__get_cpu_var (tasklet_hi_vec).list;__get_cpu_var (tasklet_hi_vec).list = t; -__cpu_raise_softirq (smp_processor_id (),HI_SOFTIRQ ); +__raise_softirq_irqoff (HI_SOFTIRQ );local_irq_enable (); } }
net/core/dev.c +1 -1
@@ -1712,7 +1712,7 @@ out: softnet_break: netdev_rx_stat[this_cpu].time_squeeze++; -__cpu_raise_softirq (this_cpu,NET_RX_SOFTIRQ ); +__raise_softirq_irqoff (NET_RX_SOFTIRQ ); goto out; }
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.