Author: fireball Date: Thu May 28 16:13:17 2009 New Revision: 41173
URL: http://svn.reactos.org/svn/reactos?rev=41173&view=rev Log: - Increase waiting time for DRQ removal inside AtapiInterrupt twice. - Don't disable/enable IDE controller interrupts in AtapiSendCommand. This confuses Virtual Box's controller (it consumes one interrupt without ever emitting it) and thus sending any ATAPI command fails. - Turn off ATAPI DMA raw read support by default. It seems to be incompatible with (at least) Virtual Box IDE controller. See issue #3645 for more details.
Modified: trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp trunk/reactos/drivers/storage/ide/uniata/id_init.cpp
Modified: trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/ide/uniata/... ============================================================================== --- trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp [iso-8859-1] Thu May 28 16:13:17 2009 @@ -4305,7 +4305,7 @@ for (k = atapiDev ? 0 : 200; k; k--) { GetStatus(chan, statusByte); if (!(statusByte & IDE_STATUS_DRQ)) { - AtapiStallExecution(50); + AtapiStallExecution(100); } else { break; } @@ -6365,7 +6365,7 @@ InterlockedExchange(&(chan->CheckIntr), CHECK_INTR_IDLE);
- AtapiDisableInterrupts(deviceExtension, lChannel); + //AtapiDisableInterrupts(deviceExtension, lChannel);
// Write ATAPI packet command. AtapiWritePort1(chan, IDX_IO1_o_Command, IDE_COMMAND_ATAPI_PACKET); @@ -6400,7 +6400,7 @@
GetBaseStatus(chan, statusByte);
- AtapiEnableInterrupts(deviceExtension, lChannel); + //AtapiEnableInterrupts(deviceExtension, lChannel);
WriteBuffer(chan, (PUSHORT)Srb->Cdb,
Modified: trunk/reactos/drivers/storage/ide/uniata/id_init.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/ide/uniata/... ============================================================================== --- trunk/reactos/drivers/storage/ide/uniata/id_init.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/ide/uniata/id_init.cpp [iso-8859-1] Thu May 28 16:13:17 2009 @@ -1279,7 +1279,7 @@ } deviceExtension->opt_AtapiDmaZeroTransfer = FALSE; deviceExtension->opt_AtapiDmaControlCmd = FALSE; - deviceExtension->opt_AtapiDmaRawRead = TRUE; + deviceExtension->opt_AtapiDmaRawRead = FALSE;//TRUE; // Disabling that for VirtualBox deviceExtension->opt_AtapiDmaReadWrite = TRUE; }