diff options
-rw-r--r-- | arch/cris/arch-v10/drivers/gpio.c | 4 | ||||
-rw-r--r-- | arch/cris/arch-v10/drivers/sync_serial.c | 4 | ||||
-rw-r--r-- | arch/cris/arch-v10/kernel/time.c | 6 | ||||
-rw-r--r-- | arch/cris/arch-v32/drivers/mach-a3/gpio.c | 2 | ||||
-rw-r--r-- | arch/cris/arch-v32/drivers/mach-fs/gpio.c | 4 | ||||
-rw-r--r-- | arch/cris/arch-v32/kernel/fasttimer.c | 2 | ||||
-rw-r--r-- | arch/cris/arch-v32/kernel/irq.c | 10 | ||||
-rw-r--r-- | arch/cris/arch-v32/kernel/smp.c | 2 | ||||
-rw-r--r-- | arch/cris/arch-v32/kernel/time.c | 6 | ||||
-rw-r--r-- | arch/cris/arch-v32/mach-a3/arbiter.c | 4 | ||||
-rw-r--r-- | arch/cris/arch-v32/mach-fs/arbiter.c | 2 | ||||
-rw-r--r-- | arch/cris/include/arch-v10/arch/irq.h | 6 | ||||
-rw-r--r-- | arch/cris/include/arch-v32/arch/irq.h | 6 | ||||
-rw-r--r-- | arch/cris/kernel/irq.c | 3 |
14 files changed, 27 insertions, 34 deletions
diff --git a/arch/cris/arch-v10/drivers/gpio.c b/arch/cris/arch-v10/drivers/gpio.c index 609d5510410e..f4374bae4fb4 100644 --- a/arch/cris/arch-v10/drivers/gpio.c +++ b/arch/cris/arch-v10/drivers/gpio.c | |||
@@ -838,13 +838,13 @@ static int __init gpio_init(void) | |||
838 | * in some tests. | 838 | * in some tests. |
839 | */ | 839 | */ |
840 | res = request_irq(TIMER0_IRQ_NBR, gpio_poll_timer_interrupt, | 840 | res = request_irq(TIMER0_IRQ_NBR, gpio_poll_timer_interrupt, |
841 | IRQF_SHARED | IRQF_DISABLED, "gpio poll", gpio_name); | 841 | IRQF_SHARED, "gpio poll", gpio_name); |
842 | if (res) { | 842 | if (res) { |
843 | printk(KERN_CRIT "err: timer0 irq for gpio\n"); | 843 | printk(KERN_CRIT "err: timer0 irq for gpio\n"); |
844 | return res; | 844 | return res; |
845 | } | 845 | } |
846 | res = request_irq(PA_IRQ_NBR, gpio_interrupt, | 846 | res = request_irq(PA_IRQ_NBR, gpio_interrupt, |
847 | IRQF_SHARED | IRQF_DISABLED, "gpio PA", gpio_name); | 847 | IRQF_SHARED, "gpio PA", gpio_name); |
848 | if (res) | 848 | if (res) |
849 | printk(KERN_CRIT "err: PA irq for gpio\n"); | 849 | printk(KERN_CRIT "err: PA irq for gpio\n"); |
850 | 850 | ||
diff --git a/arch/cris/arch-v10/drivers/sync_serial.c b/arch/cris/arch-v10/drivers/sync_serial.c index a1c498d18d31..04d39e0ca55d 100644 --- a/arch/cris/arch-v10/drivers/sync_serial.c +++ b/arch/cris/arch-v10/drivers/sync_serial.c | |||
@@ -580,7 +580,7 @@ static int sync_serial_open(struct inode *inode, struct file *file) | |||
580 | if (port == &ports[0]) { | 580 | if (port == &ports[0]) { |
581 | if (request_irq(8, | 581 | if (request_irq(8, |
582 | manual_interrupt, | 582 | manual_interrupt, |
583 | IRQF_SHARED | IRQF_DISABLED, | 583 | IRQF_SHARED, |
584 | "synchronous serial manual irq", | 584 | "synchronous serial manual irq", |
585 | &ports[0])) { | 585 | &ports[0])) { |
586 | printk(KERN_CRIT "Can't alloc " | 586 | printk(KERN_CRIT "Can't alloc " |
@@ -590,7 +590,7 @@ static int sync_serial_open(struct inode *inode, struct file *file) | |||
590 | } else if (port == &ports[1]) { | 590 | } else if (port == &ports[1]) { |
591 | if (request_irq(8, | 591 | if (request_irq(8, |
592 | manual_interrupt, | 592 | manual_interrupt, |
593 | IRQF_SHARED | IRQF_DISABLED, | 593 | IRQF_SHARED, |
594 | "synchronous serial manual irq", | 594 | "synchronous serial manual irq", |
595 | &ports[1])) { | 595 | &ports[1])) { |
596 | printk(KERN_CRIT "Can't alloc " | 596 | printk(KERN_CRIT "Can't alloc " |
diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c index fce7c541d70d..e6a722715a8d 100644 --- a/arch/cris/arch-v10/kernel/time.c +++ b/arch/cris/arch-v10/kernel/time.c | |||
@@ -178,13 +178,11 @@ timer_interrupt(int irq, void *dev_id) | |||
178 | return IRQ_HANDLED; | 178 | return IRQ_HANDLED; |
179 | } | 179 | } |
180 | 180 | ||
181 | /* timer is IRQF_SHARED so drivers can add stuff to the timer irq chain | 181 | /* timer is IRQF_SHARED so drivers can add stuff to the timer irq chain */ |
182 | * it needs to be IRQF_DISABLED to make the jiffies update work properly | ||
183 | */ | ||
184 | 182 | ||
185 | static struct irqaction irq2 = { | 183 | static struct irqaction irq2 = { |
186 | .handler = timer_interrupt, | 184 | .handler = timer_interrupt, |
187 | .flags = IRQF_SHARED | IRQF_DISABLED, | 185 | .flags = IRQF_SHARED, |
188 | .name = "timer", | 186 | .name = "timer", |
189 | }; | 187 | }; |
190 | 188 | ||
diff --git a/arch/cris/arch-v32/drivers/mach-a3/gpio.c b/arch/cris/arch-v32/drivers/mach-a3/gpio.c index 0b86deedacb9..74f9fe80940c 100644 --- a/arch/cris/arch-v32/drivers/mach-a3/gpio.c +++ b/arch/cris/arch-v32/drivers/mach-a3/gpio.c | |||
@@ -978,7 +978,7 @@ static int __init gpio_init(void) | |||
978 | CRIS_LED_DISK_WRITE(0); | 978 | CRIS_LED_DISK_WRITE(0); |
979 | 979 | ||
980 | int res2 = request_irq(GIO_INTR_VECT, gpio_interrupt, | 980 | int res2 = request_irq(GIO_INTR_VECT, gpio_interrupt, |
981 | IRQF_SHARED | IRQF_DISABLED, "gpio", &alarmlist); | 981 | IRQF_SHARED, "gpio", &alarmlist); |
982 | if (res2) { | 982 | if (res2) { |
983 | printk(KERN_ERR "err: irq for gpio\n"); | 983 | printk(KERN_ERR "err: irq for gpio\n"); |
984 | return res2; | 984 | return res2; |
diff --git a/arch/cris/arch-v32/drivers/mach-fs/gpio.c b/arch/cris/arch-v32/drivers/mach-fs/gpio.c index a2ac0917f1a6..9e54273af0ca 100644 --- a/arch/cris/arch-v32/drivers/mach-fs/gpio.c +++ b/arch/cris/arch-v32/drivers/mach-fs/gpio.c | |||
@@ -964,11 +964,11 @@ gpio_init(void) | |||
964 | * in some tests. | 964 | * in some tests. |
965 | */ | 965 | */ |
966 | if (request_irq(TIMER0_INTR_VECT, gpio_poll_timer_interrupt, | 966 | if (request_irq(TIMER0_INTR_VECT, gpio_poll_timer_interrupt, |
967 | IRQF_SHARED | IRQF_DISABLED, "gpio poll", &alarmlist)) | 967 | IRQF_SHARED, "gpio poll", &alarmlist)) |
968 | printk(KERN_ERR "timer0 irq for gpio\n"); | 968 | printk(KERN_ERR "timer0 irq for gpio\n"); |
969 | 969 | ||
970 | if (request_irq(GIO_INTR_VECT, gpio_pa_interrupt, | 970 | if (request_irq(GIO_INTR_VECT, gpio_pa_interrupt, |
971 | IRQF_SHARED | IRQF_DISABLED, "gpio PA", &alarmlist)) | 971 | IRQF_SHARED, "gpio PA", &alarmlist)) |
972 | printk(KERN_ERR "PA irq for gpio\n"); | 972 | printk(KERN_ERR "PA irq for gpio\n"); |
973 | 973 | ||
974 | #ifdef CONFIG_ETRAX_VIRTUAL_GPIO | 974 | #ifdef CONFIG_ETRAX_VIRTUAL_GPIO |
diff --git a/arch/cris/arch-v32/kernel/fasttimer.c b/arch/cris/arch-v32/kernel/fasttimer.c index f6644535b17e..b130c2c5fdd8 100644 --- a/arch/cris/arch-v32/kernel/fasttimer.c +++ b/arch/cris/arch-v32/kernel/fasttimer.c | |||
@@ -786,7 +786,7 @@ int fast_timer_init(void) | |||
786 | proc_create("fasttimer", 0, NULL, &proc_fasttimer_fops); | 786 | proc_create("fasttimer", 0, NULL, &proc_fasttimer_fops); |
787 | #endif /* PROC_FS */ | 787 | #endif /* PROC_FS */ |
788 | if (request_irq(TIMER0_INTR_VECT, timer_trig_interrupt, | 788 | if (request_irq(TIMER0_INTR_VECT, timer_trig_interrupt, |
789 | IRQF_SHARED | IRQF_DISABLED, | 789 | IRQF_SHARED, |
790 | "fast timer int", &fast_timer_list)) | 790 | "fast timer int", &fast_timer_list)) |
791 | printk(KERN_ERR "err: fasttimer irq\n"); | 791 | printk(KERN_ERR "err: fasttimer irq\n"); |
792 | fast_timer_is_init = 1; | 792 | fast_timer_is_init = 1; |
diff --git a/arch/cris/arch-v32/kernel/irq.c b/arch/cris/arch-v32/kernel/irq.c index 5ebe6e841820..25437ae28128 100644 --- a/arch/cris/arch-v32/kernel/irq.c +++ b/arch/cris/arch-v32/kernel/irq.c | |||
@@ -331,11 +331,11 @@ extern void do_IRQ(int irq, struct pt_regs * regs); | |||
331 | void | 331 | void |
332 | crisv32_do_IRQ(int irq, int block, struct pt_regs* regs) | 332 | crisv32_do_IRQ(int irq, int block, struct pt_regs* regs) |
333 | { | 333 | { |
334 | /* Interrupts that may not be moved to another CPU and | 334 | /* Interrupts that may not be moved to another CPU may |
335 | * are IRQF_DISABLED may skip blocking. This is currently | 335 | * skip blocking. This is currently only valid for the |
336 | * only valid for the timer IRQ and the IPI and is used | 336 | * timer IRQ and the IPI and is used for the timer |
337 | * for the timer interrupt to avoid watchdog starvation. | 337 | * interrupt to avoid watchdog starvation. |
338 | */ | 338 | */ |
339 | if (!block) { | 339 | if (!block) { |
340 | do_IRQ(irq, regs); | 340 | do_IRQ(irq, regs); |
341 | return; | 341 | return; |
diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c index fe8e6039db2a..0698582467ca 100644 --- a/arch/cris/arch-v32/kernel/smp.c +++ b/arch/cris/arch-v32/kernel/smp.c | |||
@@ -64,7 +64,7 @@ static irqreturn_t crisv32_ipi_interrupt(int irq, void *dev_id); | |||
64 | static int send_ipi(int vector, int wait, cpumask_t cpu_mask); | 64 | static int send_ipi(int vector, int wait, cpumask_t cpu_mask); |
65 | static struct irqaction irq_ipi = { | 65 | static struct irqaction irq_ipi = { |
66 | .handler = crisv32_ipi_interrupt, | 66 | .handler = crisv32_ipi_interrupt, |
67 | .flags = IRQF_DISABLED, | 67 | .flags = 0, |
68 | .name = "ipi", | 68 | .name = "ipi", |
69 | }; | 69 | }; |
70 | 70 | ||
diff --git a/arch/cris/arch-v32/kernel/time.c b/arch/cris/arch-v32/kernel/time.c index 8c4b45efd7b6..ee66866538f8 100644 --- a/arch/cris/arch-v32/kernel/time.c +++ b/arch/cris/arch-v32/kernel/time.c | |||
@@ -216,12 +216,10 @@ static inline irqreturn_t timer_interrupt(int irq, void *dev_id) | |||
216 | return IRQ_HANDLED; | 216 | return IRQ_HANDLED; |
217 | } | 217 | } |
218 | 218 | ||
219 | /* Timer is IRQF_SHARED so drivers can add stuff to the timer irq chain. | 219 | /* Timer is IRQF_SHARED so drivers can add stuff to the timer irq chain. */ |
220 | * It needs to be IRQF_DISABLED to make the jiffies update work properly. | ||
221 | */ | ||
222 | static struct irqaction irq_timer = { | 220 | static struct irqaction irq_timer = { |
223 | .handler = timer_interrupt, | 221 | .handler = timer_interrupt, |
224 | .flags = IRQF_SHARED | IRQF_DISABLED, | 222 | .flags = IRQF_SHARED, |
225 | .name = "timer" | 223 | .name = "timer" |
226 | }; | 224 | }; |
227 | 225 | ||
diff --git a/arch/cris/arch-v32/mach-a3/arbiter.c b/arch/cris/arch-v32/mach-a3/arbiter.c index 15f5c9de2639..ab5c421a4de8 100644 --- a/arch/cris/arch-v32/mach-a3/arbiter.c +++ b/arch/cris/arch-v32/mach-a3/arbiter.c | |||
@@ -256,11 +256,11 @@ static void crisv32_arbiter_init(void) | |||
256 | crisv32_arbiter_config(1, EXT_REGION, 0); | 256 | crisv32_arbiter_config(1, EXT_REGION, 0); |
257 | 257 | ||
258 | if (request_irq(MEMARB_FOO_INTR_VECT, crisv32_foo_arbiter_irq, | 258 | if (request_irq(MEMARB_FOO_INTR_VECT, crisv32_foo_arbiter_irq, |
259 | IRQF_DISABLED, "arbiter", NULL)) | 259 | 0, "arbiter", NULL)) |
260 | printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); | 260 | printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); |
261 | 261 | ||
262 | if (request_irq(MEMARB_BAR_INTR_VECT, crisv32_bar_arbiter_irq, | 262 | if (request_irq(MEMARB_BAR_INTR_VECT, crisv32_bar_arbiter_irq, |
263 | IRQF_DISABLED, "arbiter", NULL)) | 263 | 0, "arbiter", NULL)) |
264 | printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); | 264 | printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); |
265 | 265 | ||
266 | #ifndef CONFIG_ETRAX_KGDB | 266 | #ifndef CONFIG_ETRAX_KGDB |
diff --git a/arch/cris/arch-v32/mach-fs/arbiter.c b/arch/cris/arch-v32/mach-fs/arbiter.c index 3f8ebb5c1477..c97f4d8120f9 100644 --- a/arch/cris/arch-v32/mach-fs/arbiter.c +++ b/arch/cris/arch-v32/mach-fs/arbiter.c | |||
@@ -184,7 +184,7 @@ static void crisv32_arbiter_init(void) | |||
184 | crisv32_arbiter_config(EXT_REGION, 0); | 184 | crisv32_arbiter_config(EXT_REGION, 0); |
185 | crisv32_arbiter_config(INT_REGION, 0); | 185 | crisv32_arbiter_config(INT_REGION, 0); |
186 | 186 | ||
187 | if (request_irq(MEMARB_INTR_VECT, crisv32_arbiter_irq, IRQF_DISABLED, | 187 | if (request_irq(MEMARB_INTR_VECT, crisv32_arbiter_irq, 0, |
188 | "arbiter", NULL)) | 188 | "arbiter", NULL)) |
189 | printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); | 189 | printk(KERN_ERR "Couldn't allocate arbiter IRQ\n"); |
190 | 190 | ||
diff --git a/arch/cris/include/arch-v10/arch/irq.h b/arch/cris/include/arch-v10/arch/irq.h index ca2675ae08ed..6aecb835037d 100644 --- a/arch/cris/include/arch-v10/arch/irq.h +++ b/arch/cris/include/arch-v10/arch/irq.h | |||
@@ -141,9 +141,9 @@ __asm__ ( \ | |||
141 | * handler is run and it prioritizes the timer interrupt. However if we had BLOCK'ed | 141 | * handler is run and it prioritizes the timer interrupt. However if we had BLOCK'ed |
142 | * it here, we would not get the multiple_irq at all. | 142 | * it here, we would not get the multiple_irq at all. |
143 | * | 143 | * |
144 | * The non-blocking here is based on the knowledge that the timer interrupt is | 144 | * The non-blocking here is based on the knowledge that the timer interrupt runs |
145 | * registered as a fast interrupt (IRQF_DISABLED) so that we _know_ there will not | 145 | * with interrupts disabled, and therefore there will not be an sti() before the |
146 | * be an sti() before the timer irq handler is run to acknowledge the interrupt. | 146 | * timer irq handler is run to acknowledge the interrupt. |
147 | */ | 147 | */ |
148 | 148 | ||
149 | #define BUILD_TIMER_IRQ(nr,mask) \ | 149 | #define BUILD_TIMER_IRQ(nr,mask) \ |
diff --git a/arch/cris/include/arch-v32/arch/irq.h b/arch/cris/include/arch-v32/arch/irq.h index fe3cdd22bed4..0c1b4d3a34e7 100644 --- a/arch/cris/include/arch-v32/arch/irq.h +++ b/arch/cris/include/arch-v32/arch/irq.h | |||
@@ -102,9 +102,9 @@ __asm__ ( \ | |||
102 | * multiple_irq handler is run and it prioritizes the timer interrupt. However | 102 | * multiple_irq handler is run and it prioritizes the timer interrupt. However |
103 | * if we had BLOCK'edit here, we would not get the multiple_irq at all. | 103 | * if we had BLOCK'edit here, we would not get the multiple_irq at all. |
104 | * | 104 | * |
105 | * The non-blocking here is based on the knowledge that the timer interrupt is | 105 | * The non-blocking here is based on the knowledge that the timer interrupt runs |
106 | * registered as a fast interrupt (IRQF_DISABLED) so that we _know_ there will not | 106 | * with interrupts disabled, and therefore there will not be an sti() before the |
107 | * be an sti() before the timer irq handler is run to acknowledge the interrupt. | 107 | * timer irq handler is run to acknowledge the interrupt. |
108 | */ | 108 | */ |
109 | #define BUILD_TIMER_IRQ(nr, mask) \ | 109 | #define BUILD_TIMER_IRQ(nr, mask) \ |
110 | void IRQ_NAME(nr); \ | 110 | void IRQ_NAME(nr); \ |
diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c index d36836dbbc07..dd0be5de55d5 100644 --- a/arch/cris/kernel/irq.c +++ b/arch/cris/kernel/irq.c | |||
@@ -40,9 +40,6 @@ | |||
40 | 40 | ||
41 | /* called by the assembler IRQ entry functions defined in irq.h | 41 | /* called by the assembler IRQ entry functions defined in irq.h |
42 | * to dispatch the interrupts to registered handlers | 42 | * to dispatch the interrupts to registered handlers |
43 | * interrupts are disabled upon entry - depending on if the | ||
44 | * interrupt was registered with IRQF_DISABLED or not, interrupts | ||
45 | * are re-enabled or not. | ||
46 | */ | 43 | */ |
47 | 44 | ||
48 | asmlinkage void do_IRQ(int irq, struct pt_regs * regs) | 45 | asmlinkage void do_IRQ(int irq, struct pt_regs * regs) |