|
@@ -369,18 +369,15 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
|
|
|
* but for some reason these don't work at
|
|
|
* this point (lost interrupt).
|
|
|
*/
|
|
|
- /*
|
|
|
- * Select the drive, and issue the SETFEATURES command
|
|
|
- */
|
|
|
- disable_irq_nosync(hwif->irq);
|
|
|
-
|
|
|
+
|
|
|
/*
|
|
|
* FIXME: we race against the running IRQ here if
|
|
|
* this is called from non IRQ context. If we use
|
|
|
* disable_irq() we hang on the error path. Work
|
|
|
* is needed.
|
|
|
*/
|
|
|
-
|
|
|
+ disable_irq_nosync(hwif->irq);
|
|
|
+
|
|
|
udelay(1);
|
|
|
SELECT_DRIVE(drive);
|
|
|
SELECT_MASK(drive, 1);
|