diff options
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r-- | include/linux/irq.h | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index eedbb8e5e0cc..1e50c34f0062 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -430,23 +430,19 @@ extern int set_irq_msi(unsigned int irq, struct msi_desc *entry); | |||
430 | * Returns true if successful (or not required). | 430 | * Returns true if successful (or not required). |
431 | */ | 431 | */ |
432 | static inline bool alloc_desc_masks(struct irq_desc *desc, int node, | 432 | static inline bool alloc_desc_masks(struct irq_desc *desc, int node, |
433 | bool boot) | 433 | bool boot) |
434 | { | 434 | { |
435 | #ifdef CONFIG_CPUMASK_OFFSTACK | 435 | gfp_t gfp = GFP_ATOMIC; |
436 | if (boot) { | ||
437 | alloc_bootmem_cpumask_var(&desc->affinity); | ||
438 | 436 | ||
439 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 437 | if (boot) |
440 | alloc_bootmem_cpumask_var(&desc->pending_mask); | 438 | gfp = GFP_NOWAIT; |
441 | #endif | ||
442 | return true; | ||
443 | } | ||
444 | 439 | ||
445 | if (!alloc_cpumask_var_node(&desc->affinity, GFP_ATOMIC, node)) | 440 | #ifdef CONFIG_CPUMASK_OFFSTACK |
441 | if (!alloc_cpumask_var_node(&desc->affinity, gfp, node)) | ||
446 | return false; | 442 | return false; |
447 | 443 | ||
448 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 444 | #ifdef CONFIG_GENERIC_PENDING_IRQ |
449 | if (!alloc_cpumask_var_node(&desc->pending_mask, GFP_ATOMIC, node)) { | 445 | if (!alloc_cpumask_var_node(&desc->pending_mask, gfp, node)) { |
450 | free_cpumask_var(desc->affinity); | 446 | free_cpumask_var(desc->affinity); |
451 | return false; | 447 | return false; |
452 | } | 448 | } |