alpha: Replace setup_irq() by request_irq()
authorafzal mohammed <afzal.mohd.ma@gmail.com>
Fri, 27 Mar 2020 16:09:01 +0000 (21:39 +0530)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 29 Mar 2020 19:03:41 +0000 (21:03 +0200)
request_irq() is preferred over setup_irq(). Invocations of setup_irq()
occur after memory allocators are ready.

setup_irq() was required in older kernels as the memory allocator was not
available during early boot.

Hence replace setup_irq() by request_irq().

Signed-off-by: afzal mohammed <afzal.mohd.ma@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Matt Turner <mattst88@gmail.com>
Link: https://lkml.kernel.org/r/51f8ae7da9f47a23596388141933efa2bdef317b.1585320721.git.afzal.mohd.ma@gmail.com
14 files changed:
arch/alpha/kernel/irq_alpha.c
arch/alpha/kernel/irq_i8259.c
arch/alpha/kernel/irq_impl.h
arch/alpha/kernel/irq_pyxis.c
arch/alpha/kernel/sys_alcor.c
arch/alpha/kernel/sys_cabriolet.c
arch/alpha/kernel/sys_eb64p.c
arch/alpha/kernel/sys_marvel.c
arch/alpha/kernel/sys_miata.c
arch/alpha/kernel/sys_ruffian.c
arch/alpha/kernel/sys_rx164.c
arch/alpha/kernel/sys_sx164.c
arch/alpha/kernel/sys_wildfire.c
arch/alpha/kernel/time.c

index da3e10d5f7fe522d614f92d0fcc6e50140ecad39..d17e44c99df9b8bde5c157b76318c565a62b9253 100644 (file)
@@ -213,32 +213,13 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr,
  * The special RTC interrupt type.  The interrupt itself was
  * processed by PALcode, and comes in via entInt vector 1.
  */
-
-struct irqaction timer_irqaction = {
-       .handler        = rtc_timer_interrupt,
-       .name           = "timer",
-};
-
 void __init
-init_rtc_irq(void)
+init_rtc_irq(irq_handler_t handler)
 {
        irq_set_chip_and_handler_name(RTC_IRQ, &dummy_irq_chip,
                                      handle_percpu_irq, "RTC");
-       setup_irq(RTC_IRQ, &timer_irqaction);
+       if (!handler)
+               handler = rtc_timer_interrupt;
+       if (request_irq(RTC_IRQ, handler, 0, "timer", NULL))
+               pr_err("Failed to register timer interrupt\n");
 }
-
-/* Dummy irqactions.  */
-struct irqaction isa_cascade_irqaction = {
-       .handler        = no_action,
-       .name           = "isa-cascade"
-};
-
-struct irqaction timer_cascade_irqaction = {
-       .handler        = no_action,
-       .name           = "timer-cascade"
-};
-
-struct irqaction halt_switch_irqaction = {
-       .handler        = no_action,
-       .name           = "halt-switch"
-};
index 5d54c076a8ae8347d5b1d6589d3314750cb36b84..1dcf0d9038fdeb88b715ff576357db68b44f92cd 100644 (file)
@@ -82,11 +82,6 @@ struct irq_chip i8259a_irq_type = {
 void __init
 init_i8259a_irqs(void)
 {
-       static struct irqaction cascade = {
-               .handler        = no_action,
-               .name           = "cascade",
-       };
-
        long i;
 
        outb(0xff, 0x21);       /* mask all of 8259A-1 */
@@ -96,7 +91,8 @@ init_i8259a_irqs(void)
                irq_set_chip_and_handler(i, &i8259a_irq_type, handle_level_irq);
        }
 
-       setup_irq(2, &cascade);
+       if (request_irq(2, no_action, 0, "cascade", NULL))
+               pr_err("Failed to request irq 2 (cascade)\n");
 }
 
 
index 16f2b0276f3a9f7b8b7b8c23df03a8fc65fe9925..fbf21892e66de09b423886c21f74164382f7333b 100644 (file)
@@ -21,14 +21,9 @@ extern void isa_no_iack_sc_device_interrupt(unsigned long);
 extern void srm_device_interrupt(unsigned long);
 extern void pyxis_device_interrupt(unsigned long);
 
-extern struct irqaction timer_irqaction;
-extern struct irqaction isa_cascade_irqaction;
-extern struct irqaction timer_cascade_irqaction;
-extern struct irqaction halt_switch_irqaction;
-
 extern void init_srm_irqs(long, unsigned long);
 extern void init_pyxis_irqs(unsigned long);
-extern void init_rtc_irq(void);
+extern void init_rtc_irq(irq_handler_t  handler);
 
 extern void common_init_isa_dma(void);
 
index a968b10e687d58c42b1ff77da4f3a4f2b60eed86..27070b5bd33efad2afcae2a9241a1098db07024d 100644 (file)
@@ -107,5 +107,6 @@ init_pyxis_irqs(unsigned long ignore_mask)
                irq_set_status_flags(i, IRQ_LEVEL);
        }
 
-       setup_irq(16+7, &isa_cascade_irqaction);
+       if (request_irq(16 + 7, no_action, 0, "isa-cascade", NULL))
+               pr_err("Failed to register isa-cascade interrupt\n");
 }
index e56efd5b855fed163d93d96a7ed5b2c4c5a5b361..ce5430056f65f9d1fec882f2cc413c743cc72790 100644 (file)
@@ -133,7 +133,8 @@ alcor_init_irq(void)
        init_i8259a_irqs();
        common_init_isa_dma();
 
-       setup_irq(16+31, &isa_cascade_irqaction);
+       if (request_irq(16 + 31, no_action, 0, "isa-cascade", NULL))
+               pr_err("Failed to register isa-cascade interrupt\n");
 }
 
 
index 10bc46a4ec40b29fb2207d77f572dc6779d40dc0..0aa6a27d0e2f8ca5da9b15bb04a7b8e732ee5978 100644 (file)
@@ -112,7 +112,8 @@ common_init_irq(void (*srm_dev_int)(unsigned long v))
        }
 
        common_init_isa_dma();
-       setup_irq(16+4, &isa_cascade_irqaction);
+       if (request_irq(16 + 4, no_action, 0, "isa-cascade", NULL))
+               pr_err("Failed to register isa-cascade interrupt\n");
 }
 
 #ifndef CONFIG_ALPHA_PC164
index 5251937ec1b469129ae16088c57248846482d61e..1cdfe55fb98735d5b18b57614027a5c9d9e44dbc 100644 (file)
@@ -123,7 +123,8 @@ eb64p_init_irq(void)
        }
 
        common_init_isa_dma();
-       setup_irq(16+5, &isa_cascade_irqaction);
+       if (request_irq(16 + 5, no_action, 0, "isa-cascade", NULL))
+               pr_err("Failed to register isa-cascade interrupt\n");
 }
 
 /*
index 8d34cf6e002a057cd4571eb4e6257fcca695a8e9..533899a4a1a1daf21329b8963b2e6977759d8a25 100644 (file)
@@ -397,7 +397,7 @@ marvel_init_pci(void)
 static void __init
 marvel_init_rtc(void)
 {
-       init_rtc_irq();
+       init_rtc_irq(NULL);
 }
 
 static void
index 6fa07dc5339d2c70f4c969d7a77bc7246772a49b..702292af2225d571952cb30d09d66cb908bad37f 100644 (file)
@@ -81,8 +81,10 @@ miata_init_irq(void)
        init_pyxis_irqs(0x63b0000);
 
        common_init_isa_dma();
-       setup_irq(16+2, &halt_switch_irqaction);        /* SRM only? */
-       setup_irq(16+6, &timer_cascade_irqaction);
+       if (request_irq(16 + 2, no_action, 0, "halt-switch", NULL))
+               pr_err("Failed to register halt-switch interrupt\n");
+       if (request_irq(16 + 6, no_action, 0, "timer-cascade", NULL))
+               pr_err("Failed to register timer-cascade interrupt\n");
 }
 
 
index 07830cccabf995b098f203e90ec5728f9e39b62e..d3307401196029b012959884b7b4e295911ef641 100644 (file)
@@ -82,7 +82,8 @@ ruffian_init_rtc(void)
        outb(0x31, 0x42);
        outb(0x13, 0x42);
 
-       setup_irq(0, &timer_irqaction);
+       if (request_irq(0, rtc_timer_interrupt, 0, "timer", NULL))
+               pr_err("Failed to request irq 0 (timer)\n");
 }
 
 static void
index a3db719d3c3873d788f42b50d6ba03367f5ae134..4d85eaeb44aa49dfd104d69860df21777d47d520 100644 (file)
@@ -106,7 +106,8 @@ rx164_init_irq(void)
        init_i8259a_irqs();
        common_init_isa_dma();
 
-       setup_irq(16+20, &isa_cascade_irqaction);
+       if (request_irq(16 + 20, no_action, 0, "isa-cascade", NULL))
+               pr_err("Failed to register isa-cascade interrupt\n");
 }
 
 
index 1ec638a2746a055ea6ca6d0560b035b727c19f1e..17cc203176c803d22209a39f244bc8967d954539 100644 (file)
@@ -54,7 +54,8 @@ sx164_init_irq(void)
        else
                init_pyxis_irqs(0xff00003f0000UL);
 
-       setup_irq(16+6, &timer_cascade_irqaction);
+       if (request_irq(16 + 6, no_action, 0, "timer-cascade", NULL))
+               pr_err("Failed to register timer-cascade interrupt\n");
 }
 
 /*
index 8e64052811abc7701a89e56ac7fb660a84096729..2191bde161fdef2d1a017edfcac7650a6c61a467 100644 (file)
@@ -156,10 +156,6 @@ static void __init
 wildfire_init_irq_per_pca(int qbbno, int pcano)
 {
        int i, irq_bias;
-       static struct irqaction isa_enable = {
-               .handler        = no_action,
-               .name           = "isa_enable",
-       };
 
        irq_bias = qbbno * (WILDFIRE_PCA_PER_QBB * WILDFIRE_IRQ_PER_PCA)
                 + pcano * WILDFIRE_IRQ_PER_PCA;
@@ -198,7 +194,8 @@ wildfire_init_irq_per_pca(int qbbno, int pcano)
                irq_set_status_flags(i + irq_bias, IRQ_LEVEL);
        }
 
-       setup_irq(32+irq_bias, &isa_enable);
+       if (request_irq(32 + irq_bias, no_action, 0, "isa_enable", NULL))
+               pr_err("Failed to register isa_enable interrupt\n");
 }
 
 static void __init
index 0069360697eeac6c0bb1362f0cf48cb81dbd859a..4d01c392ab143dbc208bed47186cfdeaba954c95 100644 (file)
@@ -242,7 +242,7 @@ common_init_rtc(void)
        outb(0x31, 0x42);
        outb(0x13, 0x42);
 
-       init_rtc_irq();
+       init_rtc_irq(NULL);
 }
 
 \f
@@ -396,9 +396,7 @@ time_init(void)
        if (alpha_using_qemu) {
                clocksource_register_hz(&qemu_cs, NSEC_PER_SEC);
                init_qemu_clockevent();
-
-               timer_irqaction.handler = qemu_timer_interrupt;
-               init_rtc_irq();
+               init_rtc_irq(qemu_timer_interrupt);
                return;
        }