patch-2.3.41 linux/drivers/block/ide.c

Next file: linux/drivers/block/ll_rw_blk.c
Previous file: linux/drivers/block/ide-tape.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.40/linux/drivers/block/ide.c linux/drivers/block/ide.c
@@ -655,14 +655,17 @@
 
 static void pre_reset (ide_drive_t *drive)
 {
+	if (drive->driver != NULL)
+		DRIVER(drive)->pre_reset(drive);
+
 	if (!drive->keep_settings) {
-		drive->unmask = 0;
-		drive->io_32bit = 0;
-		if (drive->using_dma)
+		if (drive->using_dma) {
 			(void) HWIF(drive)->dmaproc(ide_dma_off, drive);
+		} else {
+			drive->unmask = 0;
+			drive->io_32bit = 0;
+		}
 	}
-	if (drive->driver != NULL)
-		DRIVER(drive)->pre_reset(drive);
 }
 
 /*
@@ -901,7 +904,7 @@
 			try_to_flush_leftover_data(drive);
 	}
 	if (GET_STAT() & (BUSY_STAT|DRQ_STAT))
-		rq->errors |= ERROR_RESET;	/* Mmmm.. timing problem */
+		OUT_BYTE(WIN_IDLEIMMEDIATE,IDE_COMMAND_REG);	/* force an abort */
 
 	if (rq->errors >= ERROR_MAX) {
 		if (drive->driver != NULL)
@@ -1825,7 +1828,7 @@
 	revalidate_drives();
 #ifdef CONFIG_KMOD
 	if (!found && type == IDE_PROBE_MODULE)
-		(void) request_module("ide-probe");
+		(void) request_module("ide-probe-mod");
 #endif /* CONFIG_KMOD */
 }
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)