diff options
Diffstat (limited to 'include/linux/interrupt.h')
| -rw-r--r-- | include/linux/interrupt.h | 40 | 
1 files changed, 39 insertions, 1 deletions
| diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index c7bfac1c4a7b..051c85032f48 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -203,7 +203,40 @@ static inline int check_wakeup_irqs(void) { return 0; }  extern cpumask_var_t irq_default_affinity; -extern int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask); +/* Internal implementation. Use the helpers below */ +extern int __irq_set_affinity(unsigned int irq, const struct cpumask *cpumask, +			      bool force); + +/** + * irq_set_affinity - Set the irq affinity of a given irq + * @irq:	Interrupt to set affinity + * @cpumask:	cpumask + * + * Fails if cpumask does not contain an online CPU + */ +static inline int +irq_set_affinity(unsigned int irq, const struct cpumask *cpumask) +{ +	return __irq_set_affinity(irq, cpumask, false); +} + +/** + * irq_force_affinity - Force the irq affinity of a given irq + * @irq:	Interrupt to set affinity + * @cpumask:	cpumask + * + * Same as irq_set_affinity, but without checking the mask against + * online cpus. + * + * Solely for low level cpu hotplug code, where we need to make per + * cpu interrupts affine before the cpu becomes online. + */ +static inline int +irq_force_affinity(unsigned int irq, const struct cpumask *cpumask) +{ +	return __irq_set_affinity(irq, cpumask, true); +} +  extern int irq_can_set_affinity(unsigned int irq);  extern int irq_select_affinity(unsigned int irq); @@ -239,6 +272,11 @@ static inline int irq_set_affinity(unsigned int irq, const struct cpumask *m)  	return -EINVAL;  } +static inline int irq_force_affinity(unsigned int irq, const struct cpumask *cpumask) +{ +	return 0; +} +  static inline int irq_can_set_affinity(unsigned int irq)  {  	return 0; | 

