Commit 6932bf37bed45ce8ed531928b1b0f98162fe6df6
1 parent
e58aa3d2d0
Exists in
master
and in
4 other branches
genirq: Remove IRQF_DISABLED from core code
Remove all code which is related to IRQF_DISABLED from the core kernel code. IRQF_DISABLED still exists as a flag, but becomes a NOOP and will be removed after a grace period. That way we can easily revert to the previous behaviour by just restoring the core code. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Miller <davem@davemloft.net> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Linus Torvalds <torvalds@osdl.org> LKML-Reference: <20100326000405.991244690@linutronix.de>
Showing 3 changed files with 9 additions and 31 deletions Side-by-side Diff
Documentation/feature-removal-schedule.txt
... | ... | @@ -589,4 +589,11 @@ |
589 | 589 | Generally invoked by accident today. |
590 | 590 | Seen as doing more harm than good. |
591 | 591 | Who: Len Brown <len.brown@intel.com> |
592 | + | |
593 | +---------------------------- | |
594 | + | |
595 | +What: IRQF_DISABLED | |
596 | +When: 2.6.36 | |
597 | +Why: The flag is a NOOP as we run interrupt handlers with interrupts disabled | |
598 | +Who: Thomas Gleixner <tglx@linutronix.de> |
include/linux/interrupt.h
... | ... | @@ -39,7 +39,8 @@ |
39 | 39 | * These flags used only by the kernel as part of the |
40 | 40 | * irq handling routines. |
41 | 41 | * |
42 | - * IRQF_DISABLED - keep irqs disabled when calling the action handler | |
42 | + * IRQF_DISABLED - keep irqs disabled when calling the action handler. | |
43 | + * DEPRECATED. This flag is a NOOP and scheduled to be removed | |
43 | 44 | * IRQF_SAMPLE_RANDOM - irq is used to feed the random generator |
44 | 45 | * IRQF_SHARED - allow sharing the irq among several devices |
45 | 46 | * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur |
kernel/irq/manage.c
... | ... | @@ -757,16 +757,6 @@ |
757 | 757 | if (new->flags & IRQF_ONESHOT) |
758 | 758 | desc->status |= IRQ_ONESHOT; |
759 | 759 | |
760 | - /* | |
761 | - * Force MSI interrupts to run with interrupts | |
762 | - * disabled. The multi vector cards can cause stack | |
763 | - * overflows due to nested interrupts when enough of | |
764 | - * them are directed to a core and fire at the same | |
765 | - * time. | |
766 | - */ | |
767 | - if (desc->msi_desc) | |
768 | - new->flags |= IRQF_DISABLED; | |
769 | - | |
770 | 760 | if (!(desc->status & IRQ_NOAUTOEN)) { |
771 | 761 | desc->depth = 0; |
772 | 762 | desc->status &= ~IRQ_DISABLED; |
... | ... | @@ -1027,7 +1017,6 @@ |
1027 | 1017 | * Flags: |
1028 | 1018 | * |
1029 | 1019 | * IRQF_SHARED Interrupt is shared |
1030 | - * IRQF_DISABLED Disable local interrupts while processing | |
1031 | 1020 | * IRQF_SAMPLE_RANDOM The interrupt can be used for entropy |
1032 | 1021 | * IRQF_TRIGGER_* Specify active edge(s) or level |
1033 | 1022 | * |
... | ... | @@ -1040,25 +1029,6 @@ |
1040 | 1029 | struct irq_desc *desc; |
1041 | 1030 | int retval; |
1042 | 1031 | |
1043 | - /* | |
1044 | - * handle_IRQ_event() always ignores IRQF_DISABLED except for | |
1045 | - * the _first_ irqaction (sigh). That can cause oopsing, but | |
1046 | - * the behavior is classified as "will not fix" so we need to | |
1047 | - * start nudging drivers away from using that idiom. | |
1048 | - */ | |
1049 | - if ((irqflags & (IRQF_SHARED|IRQF_DISABLED)) == | |
1050 | - (IRQF_SHARED|IRQF_DISABLED)) { | |
1051 | - pr_warning( | |
1052 | - "IRQ %d/%s: IRQF_DISABLED is not guaranteed on shared IRQs\n", | |
1053 | - irq, devname); | |
1054 | - } | |
1055 | - | |
1056 | -#ifdef CONFIG_LOCKDEP | |
1057 | - /* | |
1058 | - * Lockdep wants atomic interrupt handlers: | |
1059 | - */ | |
1060 | - irqflags |= IRQF_DISABLED; | |
1061 | -#endif | |
1062 | 1032 | /* |
1063 | 1033 | * Sanity-check: shared interrupts must pass in a real dev-ID, |
1064 | 1034 | * otherwise we'll have trouble later trying to figure out |