MdeModulePkg: ATA performance tuning.
1. Boost IDE mode boot when slave device is absent. 2. Use D2H FIS to check if the PIO OUT/DMA IN/DMA OUT transfer is finished or error happened. ATA PIO IN has special check as it may just receive PIO SETUP FIS for success case. 3. Add command status register check for IDE DMA transfer. 4. ScsiDiskReadCapacity() in ScsiDisk should return EFI_SUCCESS if SENSE Data request is success. Signed-off-by: erictian Reviewed-by: rsun3 Reviewed-by: xdu2 Reviewed-by: mdkinney git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12658 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -101,7 +101,7 @@ typedef struct {
|
||||
//
|
||||
LIST_ENTRY DeviceList;
|
||||
UINT64 OriginalPciAttributes;
|
||||
|
||||
|
||||
//
|
||||
// For AtaPassThru protocol, using the following bytes to record the previous call in
|
||||
// GetNextPort()/GetNextDevice().
|
||||
@ -1078,7 +1078,7 @@ AhciModeInitialization (
|
||||
@param[in] AtapiCommandLength The length of the atapi command.
|
||||
@param[in] AtaCommandBlock The EFI_ATA_COMMAND_BLOCK data.
|
||||
@param[in, out] AtaStatusBlock The EFI_ATA_STATUS_BLOCK data.
|
||||
@param[in] Timeout The timeout value of non data transfer.
|
||||
@param[in] Timeout The timeout value of non data transfer, uses 100ns as a unit.
|
||||
@param[in] Task Optional. Pointer to the ATA_NONBLOCK_TASK
|
||||
used by non-blocking mode.
|
||||
|
||||
@ -1118,7 +1118,7 @@ AhciNonDataTransfer (
|
||||
@param[in, out] AtaStatusBlock The EFI_ATA_STATUS_BLOCK data.
|
||||
@param[in, out] MemoryAddr The pointer to the data buffer.
|
||||
@param[in] DataCount The data count to be transferred.
|
||||
@param[in] Timeout The timeout value of non data transfer.
|
||||
@param[in] Timeout The timeout value of non data transfer, uses 100ns as a unit.
|
||||
@param[in] Task Optional. Pointer to the ATA_NONBLOCK_TASK
|
||||
used by non-blocking mode.
|
||||
|
||||
@ -1141,7 +1141,7 @@ AhciDmaTransfer (
|
||||
IN EFI_ATA_COMMAND_BLOCK *AtaCommandBlock,
|
||||
IN OUT EFI_ATA_STATUS_BLOCK *AtaStatusBlock,
|
||||
IN OUT VOID *MemoryAddr,
|
||||
IN UINTN DataCount,
|
||||
IN UINT32 DataCount,
|
||||
IN UINT64 Timeout,
|
||||
IN ATA_NONBLOCK_TASK *Task
|
||||
);
|
||||
@ -1161,7 +1161,7 @@ AhciDmaTransfer (
|
||||
@param[in, out] AtaStatusBlock The EFI_ATA_STATUS_BLOCK data.
|
||||
@param[in, out] MemoryAddr The pointer to the data buffer.
|
||||
@param[in] DataCount The data count to be transferred.
|
||||
@param[in] Timeout The timeout value of non data transfer.
|
||||
@param[in] Timeout The timeout value of non data transfer, uses 100ns as a unit.
|
||||
@param[in] Task Optional. Pointer to the ATA_NONBLOCK_TASK
|
||||
used by non-blocking mode.
|
||||
|
||||
@ -1198,7 +1198,7 @@ AhciPioTransfer (
|
||||
@param[in] AtaCommandBlock A pointer to EFI_ATA_COMMAND_BLOCK data
|
||||
structure.
|
||||
@param[in, out] AtaStatusBlock A pointer to EFI_ATA_STATUS_BLOCK data structure.
|
||||
@param[in] Timeout The time to complete the command.
|
||||
@param[in] Timeout The time to complete the command, uses 100ns as a unit.
|
||||
@param[in] Task Optional. Pointer to the ATA_NONBLOCK_TASK
|
||||
used by non-blocking mode.
|
||||
|
||||
@ -1232,7 +1232,7 @@ AtaNonDataCommandIn (
|
||||
@param[in] DataLength The length of the data.
|
||||
@param[in] AtaCommandBlock A pointer to EFI_ATA_COMMAND_BLOCK data structure.
|
||||
@param[in, out] AtaStatusBlock A pointer to EFI_ATA_STATUS_BLOCK data structure.
|
||||
@param[in] Timeout The time to complete the command.
|
||||
@param[in] Timeout The time to complete the command, uses 100ns as a unit.
|
||||
@param[in] Task Optional. Pointer to the ATA_NONBLOCK_TASK
|
||||
used by non-blocking mode.
|
||||
|
||||
@ -1270,7 +1270,7 @@ AtaUdmaInOut (
|
||||
from host to device.
|
||||
@param[in] AtaCommandBlock A pointer to EFI_ATA_COMMAND_BLOCK data structure.
|
||||
@param[in, out] AtaStatusBlock A pointer to EFI_ATA_STATUS_BLOCK data structure.
|
||||
@param[in] Timeout The time to complete the command.
|
||||
@param[in] Timeout The time to complete the command, uses 100ns as a unit.
|
||||
@param[in] Task Optional. Pointer to the ATA_NONBLOCK_TASK
|
||||
used by non-blocking mode.
|
||||
|
||||
|
Reference in New Issue
Block a user