- 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.

svn path=/trunk/; revision=41173
This commit is contained in:
Aleksey Bragin 2009-05-28 12:13:17 +00:00
parent b231782314
commit b5000fe04d
2 changed files with 4 additions and 4 deletions

View file

@ -4305,7 +4305,7 @@ continue_err:
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 @@ make_reset:
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 @@ make_reset:
GetBaseStatus(chan, statusByte);
AtapiEnableInterrupts(deviceExtension, lChannel);
//AtapiEnableInterrupts(deviceExtension, lChannel);
WriteBuffer(chan,
(PUSHORT)Srb->Cdb,

View file

@ -1279,7 +1279,7 @@ AtapiReadChipConfig(
}
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;
}