Ralf, Thank you for your help. I'm doing MMIO, not PIO, but it looks like your assessment is still valid. I've been searching for places where ide MMIO is performed with interrupts disabled. I got excited when I found these lines in probe_hwif() of ide-probe.c: irqd = hwif->irq; if (irqd) disable_irq(hwif->irq); I was not initializing hwif->irq in my driver, so probably the interrupts were being disabled here, and subsequent lines were causing the SMP badness. I added the line "hwif->irq = 0" to my driver. Interrupts are no longer disabled here, but still I get the SMP badness. I'll keep looking for other places where the interrupts might be disabled. Does anyone know if the mips/swarm.c driver has this problem with SMP? Thanks! Bryan