mfp.tim_dt_a = 1;       /* Cause interrupt after first event. */
        mfp.tim_ct_a = 8;       /* Turn on event counting. */
        /* Register interrupt handler. */
-       request_irq(IRQ_MFP_TIMA, AtaInterrupt, IRQ_TYPE_SLOW, "DMA sound",
-                   AtaInterrupt);
+       if (request_irq(IRQ_MFP_TIMA, AtaInterrupt, IRQ_TYPE_SLOW, "DMA sound",
+                       AtaInterrupt))
+               return 0;
        mfp.int_en_a |= 0x20;   /* Turn interrupt on. */
        mfp.int_mk_a |= 0x20;
        return 1;
 
 static int __init Q40IrqInit(void)
 {
        /* Register interrupt handler. */
-       request_irq(Q40_IRQ_SAMPLE, Q40StereoInterrupt, 0,
-                   "DMA sound", Q40Interrupt);
+       if (request_irq(Q40_IRQ_SAMPLE, Q40StereoInterrupt, 0,
+                   "DMA sound", Q40Interrupt))
+               return 0;
 
        return(1);
 }
        u_char *start;
        u_long size;
        u_char speed;
+       int error;
 
        /* used by Q40Play() if all doubts whether there really is something
         * to be played are already wiped out.
        master_outb( 0,SAMPLE_ENABLE_REG);
        free_irq(Q40_IRQ_SAMPLE, Q40Interrupt);
        if (dmasound.soft.stereo)
-               request_irq(Q40_IRQ_SAMPLE, Q40StereoInterrupt, 0,
-                   "Q40 sound", Q40Interrupt);
+               error = request_irq(Q40_IRQ_SAMPLE, Q40StereoInterrupt, 0,
+                                   "Q40 sound", Q40Interrupt);
          else
-               request_irq(Q40_IRQ_SAMPLE, Q40MonoInterrupt, 0,
-                   "Q40 sound", Q40Interrupt);
+               error = request_irq(Q40_IRQ_SAMPLE, Q40MonoInterrupt, 0,
+                                   "Q40 sound", Q40Interrupt);
+       if (error && printk_ratelimit())
+               pr_err("Couldn't register sound interrupt\n");
 
        master_outb( speed, SAMPLE_RATE_REG);
        master_outb( 1,SAMPLE_CLEAR_REG);