I've attached an alternative patch: ide assumes that blk_init_queue doesn't sleep or enable interrupts. As a quick fix, make block_grow_request_list() nonblocking: both spin_lock_irqsave() and SLAB_ATOMIC allocations. Just spin_lock_irqsave() with SLAB_KERNEL allocations doesn't fix the problem. The better fix would be cleaning up init_irq() in drivers/ide/ide-probe.c, but that's something for 2.5 or someone who understand the ide code. -- Manfred