diff options
Diffstat (limited to 'kernel/irq/manage.c')
| -rw-r--r-- | kernel/irq/manage.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index c498a1b8c621..7fd891c3a33d 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -635,6 +635,18 @@ int request_irq(unsigned int irq, irq_handler_t handler, | |||
| 635 | struct irq_desc *desc; | 635 | struct irq_desc *desc; |
| 636 | int retval; | 636 | int retval; |
| 637 | 637 | ||
| 638 | /* | ||
| 639 | * handle_IRQ_event() always ignores IRQF_DISABLED except for | ||
| 640 | * the _first_ irqaction (sigh). That can cause oopsing, but | ||
| 641 | * the behavior is classified as "will not fix" so we need to | ||
| 642 | * start nudging drivers away from using that idiom. | ||
| 643 | */ | ||
| 644 | if ((irqflags & (IRQF_SHARED|IRQF_DISABLED)) | ||
| 645 | == (IRQF_SHARED|IRQF_DISABLED)) | ||
| 646 | pr_warning("IRQ %d/%s: IRQF_DISABLED is not " | ||
| 647 | "guaranteed on shared IRQs\n", | ||
| 648 | irq, devname); | ||
| 649 | |||
| 638 | #ifdef CONFIG_LOCKDEP | 650 | #ifdef CONFIG_LOCKDEP |
| 639 | /* | 651 | /* |
| 640 | * Lockdep wants atomic interrupt handlers: | 652 | * Lockdep wants atomic interrupt handlers: |
