diff options
-rw-r--r-- | Documentation/feature-removal-schedule.txt | 8 | ||||
-rw-r--r-- | arch/alpha/Kconfig | 3 | ||||
-rw-r--r-- | arch/blackfin/Kconfig | 3 | ||||
-rw-r--r-- | arch/frv/Kconfig | 4 | ||||
-rw-r--r-- | arch/ia64/Kconfig | 3 | ||||
-rw-r--r-- | arch/m68knommu/Kconfig | 4 | ||||
-rw-r--r-- | arch/microblaze/Kconfig | 3 | ||||
-rw-r--r-- | arch/mips/Kconfig | 3 | ||||
-rw-r--r-- | arch/mn10300/Kconfig | 3 | ||||
-rw-r--r-- | arch/parisc/Kconfig | 4 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 4 | ||||
-rw-r--r-- | arch/score/Kconfig | 3 | ||||
-rw-r--r-- | arch/sparc/Kconfig | 4 | ||||
-rw-r--r-- | arch/tile/Kconfig | 3 | ||||
-rw-r--r-- | arch/um/Kconfig.um | 3 | ||||
-rw-r--r-- | include/linux/irqdesc.h | 14 | ||||
-rw-r--r-- | kernel/irq/Kconfig | 3 | ||||
-rw-r--r-- | kernel/irq/handle.c | 111 |
18 files changed, 0 insertions, 183 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 8c594c45b6a1..b959659c5df4 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -357,14 +357,6 @@ Who: Dave Jones <davej@redhat.com>, Matthew Garrett <mjg@redhat.com> | |||
357 | 357 | ||
358 | ----------------------------- | 358 | ----------------------------- |
359 | 359 | ||
360 | What: __do_IRQ all in one fits nothing interrupt handler | ||
361 | When: 2.6.32 | ||
362 | Why: __do_IRQ was kept for easy migration to the type flow handlers. | ||
363 | More than two years of migration time is enough. | ||
364 | Who: Thomas Gleixner <tglx@linutronix.de> | ||
365 | |||
366 | ----------------------------- | ||
367 | |||
368 | What: fakephp and associated sysfs files in /sys/bus/pci/slots/ | 360 | What: fakephp and associated sysfs files in /sys/bus/pci/slots/ |
369 | When: 2011 | 361 | When: 2011 |
370 | Why: In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to | 362 | Why: In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to |
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index fc95ee1bcf6f..943fe6930f77 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
@@ -68,9 +68,6 @@ config GENERIC_IOMAP | |||
68 | bool | 68 | bool |
69 | default n | 69 | default n |
70 | 70 | ||
71 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
72 | def_bool y | ||
73 | |||
74 | config GENERIC_HARDIRQS | 71 | config GENERIC_HARDIRQS |
75 | bool | 72 | bool |
76 | default y | 73 | default y |
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 0a221d48152d..a37b2be23f18 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -50,9 +50,6 @@ config GENERIC_HARDIRQS | |||
50 | config GENERIC_IRQ_PROBE | 50 | config GENERIC_IRQ_PROBE |
51 | def_bool y | 51 | def_bool y |
52 | 52 | ||
53 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
54 | def_bool y | ||
55 | |||
56 | config GENERIC_GPIO | 53 | config GENERIC_GPIO |
57 | def_bool y | 54 | def_bool y |
58 | 55 | ||
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig index f6bcb039cd6d..e504edeb3d84 100644 --- a/arch/frv/Kconfig +++ b/arch/frv/Kconfig | |||
@@ -33,10 +33,6 @@ config GENERIC_HARDIRQS | |||
33 | bool | 33 | bool |
34 | default y | 34 | default y |
35 | 35 | ||
36 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
37 | bool | ||
38 | default y | ||
39 | |||
40 | config TIME_LOW_RES | 36 | config TIME_LOW_RES |
41 | bool | 37 | bool |
42 | default y | 38 | default y |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index e0f5b6d7f849..be1faf991813 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -684,9 +684,6 @@ source "lib/Kconfig" | |||
684 | config GENERIC_HARDIRQS | 684 | config GENERIC_HARDIRQS |
685 | def_bool y | 685 | def_bool y |
686 | 686 | ||
687 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
688 | def_bool y | ||
689 | |||
690 | config GENERIC_IRQ_PROBE | 687 | config GENERIC_IRQ_PROBE |
691 | bool | 688 | bool |
692 | default y | 689 | default y |
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index 704e7b92334c..7379cb0ce1af 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig | |||
@@ -52,10 +52,6 @@ config GENERIC_HARDIRQS | |||
52 | bool | 52 | bool |
53 | default y | 53 | default y |
54 | 54 | ||
55 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
56 | bool | ||
57 | default y | ||
58 | |||
59 | config GENERIC_CALIBRATE_DELAY | 55 | config GENERIC_CALIBRATE_DELAY |
60 | bool | 56 | bool |
61 | default y | 57 | default y |
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 5f5018a71a3d..5a6378493797 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig | |||
@@ -52,9 +52,6 @@ config GENERIC_TIME_VSYSCALL | |||
52 | config GENERIC_CLOCKEVENTS | 52 | config GENERIC_CLOCKEVENTS |
53 | def_bool y | 53 | def_bool y |
54 | 54 | ||
55 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
56 | def_bool y | ||
57 | |||
58 | config GENERIC_GPIO | 55 | config GENERIC_GPIO |
59 | def_bool y | 56 | def_bool y |
60 | 57 | ||
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 548e6cc3bc28..f5ecc0566bc2 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -793,9 +793,6 @@ config SCHED_OMIT_FRAME_POINTER | |||
793 | bool | 793 | bool |
794 | default y | 794 | default y |
795 | 795 | ||
796 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
797 | def_bool y | ||
798 | |||
799 | # | 796 | # |
800 | # Select some configuration options automatically based on user selections. | 797 | # Select some configuration options automatically based on user selections. |
801 | # | 798 | # |
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index 8ed41cf2b08d..4638269152f6 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig | |||
@@ -34,9 +34,6 @@ config RWSEM_GENERIC_SPINLOCK | |||
34 | config RWSEM_XCHGADD_ALGORITHM | 34 | config RWSEM_XCHGADD_ALGORITHM |
35 | bool | 35 | bool |
36 | 36 | ||
37 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
38 | def_bool y | ||
39 | |||
40 | config GENERIC_CALIBRATE_DELAY | 37 | config GENERIC_CALIBRATE_DELAY |
41 | def_bool y | 38 | def_bool y |
42 | 39 | ||
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 0888675c98dd..4b94ac4dc603 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -12,7 +12,6 @@ config PARISC | |||
12 | select HAVE_IRQ_WORK | 12 | select HAVE_IRQ_WORK |
13 | select HAVE_PERF_EVENTS | 13 | select HAVE_PERF_EVENTS |
14 | select GENERIC_ATOMIC64 if !64BIT | 14 | select GENERIC_ATOMIC64 if !64BIT |
15 | select GENERIC_HARDIRQS_NO__DO_IRQ | ||
16 | help | 15 | help |
17 | The PA-RISC microprocessor is designed by Hewlett-Packard and used | 16 | The PA-RISC microprocessor is designed by Hewlett-Packard and used |
18 | in many of their workstations & servers (HP9000 700 and 800 series, | 17 | in many of their workstations & servers (HP9000 700 and 800 series, |
@@ -79,9 +78,6 @@ config IRQ_PER_CPU | |||
79 | bool | 78 | bool |
80 | default y | 79 | default y |
81 | 80 | ||
82 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
83 | def_bool y | ||
84 | |||
85 | # unless you want to implement ACPI on PA-RISC ... ;-) | 81 | # unless you want to implement ACPI on PA-RISC ... ;-) |
86 | config PM | 82 | config PM |
87 | bool | 83 | bool |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 959f38ccb9a7..e0b185dd718a 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -40,10 +40,6 @@ config GENERIC_HARDIRQS | |||
40 | bool | 40 | bool |
41 | default y | 41 | default y |
42 | 42 | ||
43 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
44 | bool | ||
45 | default y | ||
46 | |||
47 | config HAVE_SETUP_PER_CPU_AREA | 43 | config HAVE_SETUP_PER_CPU_AREA |
48 | def_bool PPC64 | 44 | def_bool PPC64 |
49 | 45 | ||
diff --git a/arch/score/Kconfig b/arch/score/Kconfig index 4293fdcb5398..4f159acfbe33 100644 --- a/arch/score/Kconfig +++ b/arch/score/Kconfig | |||
@@ -53,9 +53,6 @@ config GENERIC_CLOCKEVENTS | |||
53 | config SCHED_NO_NO_OMIT_FRAME_POINTER | 53 | config SCHED_NO_NO_OMIT_FRAME_POINTER |
54 | def_bool y | 54 | def_bool y |
55 | 55 | ||
56 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
57 | def_bool y | ||
58 | |||
59 | config GENERIC_SYSCALL_TABLE | 56 | config GENERIC_SYSCALL_TABLE |
60 | def_bool y | 57 | def_bool y |
61 | 58 | ||
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 45d9c87d083a..989bb6415ea3 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -107,10 +107,6 @@ config NEED_PER_CPU_EMBED_FIRST_CHUNK | |||
107 | config NEED_PER_CPU_PAGE_FIRST_CHUNK | 107 | config NEED_PER_CPU_PAGE_FIRST_CHUNK |
108 | def_bool y if SPARC64 | 108 | def_bool y if SPARC64 |
109 | 109 | ||
110 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
111 | bool | ||
112 | def_bool y if SPARC64 | ||
113 | |||
114 | config MMU | 110 | config MMU |
115 | bool | 111 | bool |
116 | default y | 112 | default y |
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index 4e8b82bca9e5..c16b98c2435d 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig | |||
@@ -10,9 +10,6 @@ config GENERIC_CSUM | |||
10 | config GENERIC_HARDIRQS | 10 | config GENERIC_HARDIRQS |
11 | def_bool y | 11 | def_bool y |
12 | 12 | ||
13 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
14 | def_bool y | ||
15 | |||
16 | config GENERIC_IRQ_PROBE | 13 | config GENERIC_IRQ_PROBE |
17 | def_bool y | 14 | def_bool y |
18 | 15 | ||
diff --git a/arch/um/Kconfig.um b/arch/um/Kconfig.um index f8d1d0d47fe6..90a438acbfaf 100644 --- a/arch/um/Kconfig.um +++ b/arch/um/Kconfig.um | |||
@@ -120,9 +120,6 @@ config SMP | |||
120 | 120 | ||
121 | If you don't know what to do, say N. | 121 | If you don't know what to do, say N. |
122 | 122 | ||
123 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
124 | def_bool y | ||
125 | |||
126 | config NR_CPUS | 123 | config NR_CPUS |
127 | int "Maximum number of CPUs (2-32)" | 124 | int "Maximum number of CPUs (2-32)" |
128 | range 2 32 | 125 | range 2 32 |
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index 6a64c6fa81af..c1a95b7b58de 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h | |||
@@ -101,13 +101,6 @@ static inline struct irq_desc *move_irq_desc(struct irq_desc *desc, int node) | |||
101 | #define get_irq_desc_msi(desc) ((desc)->irq_data.msi_desc) | 101 | #define get_irq_desc_msi(desc) ((desc)->irq_data.msi_desc) |
102 | 102 | ||
103 | /* | 103 | /* |
104 | * Monolithic do_IRQ implementation. | ||
105 | */ | ||
106 | #ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ | ||
107 | extern unsigned int __do_IRQ(unsigned int irq); | ||
108 | #endif | ||
109 | |||
110 | /* | ||
111 | * Architectures call this to let the generic IRQ layer | 104 | * Architectures call this to let the generic IRQ layer |
112 | * handle an interrupt. If the descriptor is attached to an | 105 | * handle an interrupt. If the descriptor is attached to an |
113 | * irqchip-style controller then we call the ->handle_irq() handler, | 106 | * irqchip-style controller then we call the ->handle_irq() handler, |
@@ -115,14 +108,7 @@ extern unsigned int __do_IRQ(unsigned int irq); | |||
115 | */ | 108 | */ |
116 | static inline void generic_handle_irq_desc(unsigned int irq, struct irq_desc *desc) | 109 | static inline void generic_handle_irq_desc(unsigned int irq, struct irq_desc *desc) |
117 | { | 110 | { |
118 | #ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ | ||
119 | desc->handle_irq(irq, desc); | 111 | desc->handle_irq(irq, desc); |
120 | #else | ||
121 | if (likely(desc->handle_irq)) | ||
122 | desc->handle_irq(irq, desc); | ||
123 | else | ||
124 | __do_IRQ(irq); | ||
125 | #endif | ||
126 | } | 112 | } |
127 | 113 | ||
128 | static inline void generic_handle_irq(unsigned int irq) | 114 | static inline void generic_handle_irq(unsigned int irq) |
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig index 31d766bf5d2e..8e42fec7686d 100644 --- a/kernel/irq/Kconfig +++ b/kernel/irq/Kconfig | |||
@@ -9,9 +9,6 @@ menu "IRQ subsystem" | |||
9 | config GENERIC_HARDIRQS | 9 | config GENERIC_HARDIRQS |
10 | def_bool y | 10 | def_bool y |
11 | 11 | ||
12 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
13 | def_bool y | ||
14 | |||
15 | # Select this to disable the deprecated stuff | 12 | # Select this to disable the deprecated stuff |
16 | config GENERIC_HARDIRQS_NO_DEPRECATED | 13 | config GENERIC_HARDIRQS_NO_DEPRECATED |
17 | def_bool n | 14 | def_bool n |
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index e2347eb63306..3540a7190122 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c | |||
@@ -118,114 +118,3 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action) | |||
118 | 118 | ||
119 | return retval; | 119 | return retval; |
120 | } | 120 | } |
121 | |||
122 | #ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ | ||
123 | |||
124 | #ifdef CONFIG_ENABLE_WARN_DEPRECATED | ||
125 | # warning __do_IRQ is deprecated. Please convert to proper flow handlers | ||
126 | #endif | ||
127 | |||
128 | /** | ||
129 | * __do_IRQ - original all in one highlevel IRQ handler | ||
130 | * @irq: the interrupt number | ||
131 | * | ||
132 | * __do_IRQ handles all normal device IRQ's (the special | ||
133 | * SMP cross-CPU interrupts have their own specific | ||
134 | * handlers). | ||
135 | * | ||
136 | * This is the original x86 implementation which is used for every | ||
137 | * interrupt type. | ||
138 | */ | ||
139 | unsigned int __do_IRQ(unsigned int irq) | ||
140 | { | ||
141 | struct irq_desc *desc = irq_to_desc(irq); | ||
142 | struct irqaction *action; | ||
143 | unsigned int status; | ||
144 | |||
145 | kstat_incr_irqs_this_cpu(irq, desc); | ||
146 | |||
147 | if (CHECK_IRQ_PER_CPU(desc->status)) { | ||
148 | irqreturn_t action_ret; | ||
149 | |||
150 | /* | ||
151 | * No locking required for CPU-local interrupts: | ||
152 | */ | ||
153 | if (desc->irq_data.chip->ack) | ||
154 | desc->irq_data.chip->ack(irq); | ||
155 | if (likely(!(desc->status & IRQ_DISABLED))) { | ||
156 | action_ret = handle_IRQ_event(irq, desc->action); | ||
157 | if (!noirqdebug) | ||
158 | note_interrupt(irq, desc, action_ret); | ||
159 | } | ||
160 | desc->irq_data.chip->end(irq); | ||
161 | return 1; | ||
162 | } | ||
163 | |||
164 | raw_spin_lock(&desc->lock); | ||
165 | if (desc->irq_data.chip->ack) | ||
166 | desc->irq_data.chip->ack(irq); | ||
167 | /* | ||
168 | * REPLAY is when Linux resends an IRQ that was dropped earlier | ||
169 | * WAITING is used by probe to mark irqs that are being tested | ||
170 | */ | ||
171 | status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING); | ||
172 | status |= IRQ_PENDING; /* we _want_ to handle it */ | ||
173 | |||
174 | /* | ||
175 | * If the IRQ is disabled for whatever reason, we cannot | ||
176 | * use the action we have. | ||
177 | */ | ||
178 | action = NULL; | ||
179 | if (likely(!(status & (IRQ_DISABLED | IRQ_INPROGRESS)))) { | ||
180 | action = desc->action; | ||
181 | status &= ~IRQ_PENDING; /* we commit to handling */ | ||
182 | status |= IRQ_INPROGRESS; /* we are handling it */ | ||
183 | } | ||
184 | desc->status = status; | ||
185 | |||
186 | /* | ||
187 | * If there is no IRQ handler or it was disabled, exit early. | ||
188 | * Since we set PENDING, if another processor is handling | ||
189 | * a different instance of this same irq, the other processor | ||
190 | * will take care of it. | ||
191 | */ | ||
192 | if (unlikely(!action)) | ||
193 | goto out; | ||
194 | |||
195 | /* | ||
196 | * Edge triggered interrupts need to remember | ||
197 | * pending events. | ||
198 | * This applies to any hw interrupts that allow a second | ||
199 | * instance of the same irq to arrive while we are in do_IRQ | ||
200 | * or in the handler. But the code here only handles the _second_ | ||
201 | * instance of the irq, not the third or fourth. So it is mostly | ||
202 | * useful for irq hardware that does not mask cleanly in an | ||
203 | * SMP environment. | ||
204 | */ | ||
205 | for (;;) { | ||
206 | irqreturn_t action_ret; | ||
207 | |||
208 | raw_spin_unlock(&desc->lock); | ||
209 | |||
210 | action_ret = handle_IRQ_event(irq, action); | ||
211 | if (!noirqdebug) | ||
212 | note_interrupt(irq, desc, action_ret); | ||
213 | |||
214 | raw_spin_lock(&desc->lock); | ||
215 | if (likely(!(desc->status & IRQ_PENDING))) | ||
216 | break; | ||
217 | desc->status &= ~IRQ_PENDING; | ||
218 | } | ||
219 | desc->status &= ~IRQ_INPROGRESS; | ||
220 | |||
221 | out: | ||
222 | /* | ||
223 | * The ->end() handler has to deal with interrupts which got | ||
224 | * disabled while the handler was running. | ||
225 | */ | ||
226 | desc->irq_data.chip->end(irq); | ||
227 | raw_spin_unlock(&desc->lock); | ||
228 | |||
229 | return 1; | ||
230 | } | ||
231 | #endif | ||