local_irq_restore(flags);
 }
 
-static struct irqaction ipi_intdesc = {
-       .handler = handle_ipi,
-       .flags = IRQF_TRIGGER_RISING,
-       .name = "ipi_handler"
-};
-
 void __init smp_prepare_boot_cpu(void)
 {
 }
 
 void start_secondary(void)
 {
-       unsigned int cpu;
        unsigned long thread_ptr;
+       unsigned int cpu, irq;
 
        /*  Calculate thread_info pointer from stack pointer  */
        __asm__ __volatile__(
 
        cpu = smp_processor_id();
 
-       setup_irq(BASE_IPI_IRQ + cpu, &ipi_intdesc);
+       irq = BASE_IPI_IRQ + cpu;
+       if (request_irq(irq, handle_ipi, IRQF_TRIGGER_RISING, "ipi_handler",
+                       NULL))
+               pr_err("Failed to request irq %u (ipi_handler)\n", irq);
 
        /*  Register the clock_event dummy  */
        setup_percpu_clockdev();
 
 void __init smp_prepare_cpus(unsigned int max_cpus)
 {
-       int i;
+       int i, irq = BASE_IPI_IRQ;
 
        /*
         * should eventually have some sort of machine
                set_cpu_present(i, true);
 
        /*  Also need to register the interrupts for IPI  */
-       if (max_cpus > 1)
-               setup_irq(BASE_IPI_IRQ, &ipi_intdesc);
+       if (max_cpus > 1) {
+               if (request_irq(irq, handle_ipi, IRQF_TRIGGER_RISING,
+                               "ipi_handler", NULL))
+                       pr_err("Failed to request irq %d (ipi_handler)\n", irq);
+       }
 }
 
 void smp_send_reschedule(int cpu)
 
        return IRQ_HANDLED;
 }
 
-/*  This should also be pulled from devtree  */
-static struct irqaction rtos_timer_intdesc = {
-       .handler = timer_interrupt,
-       .flags = IRQF_TIMER | IRQF_TRIGGER_RISING,
-       .name = "rtos_timer"
-};
-
 /*
  * time_init_deferred - called by start_kernel to set up timer/clock source
  *
 {
        struct resource *resource = NULL;
        struct clock_event_device *ce_dev = &hexagon_clockevent_dev;
+       unsigned long flag = IRQF_TIMER | IRQF_TRIGGER_RISING;
 
        ce_dev->cpumask = cpu_all_mask;
 
 #endif
 
        clockevents_register_device(ce_dev);
-       setup_irq(ce_dev->irq, &rtos_timer_intdesc);
+       if (request_irq(ce_dev->irq, timer_interrupt, flag, "rtos_timer", NULL))
+               pr_err("Failed to register rtos_timer interrupt\n");
 }
 
 void __init time_init(void)