--- linux-2.6.0-test6/drivers/cdrom/sonycd535.c.orig 2003-10-08 14:42:43.000000000 -0300 +++ linux-2.6.0-test6/drivers/cdrom/sonycd535.c 2003-10-08 16:00:09.000000000 -0300 @@ -342,13 +342,14 @@ sony_sleep(void) { if (sony535_irq_used <= 0) { /* poll */ - yield(); + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(1); } else { /* Interrupt driven */ DEFINE_WAIT(wait); - + spin_lock_irq(&sonycd535_lock); - enable_interrupts(); prepare_to_wait(&cdu535_irq_wait, &wait, TASK_INTERRUPTIBLE); + enable_interrupts(); spin_unlock_irq(&sonycd535_lock); schedule(); finish_wait(&cdu535_irq_wait, &wait);