/** @file\r
Support for SCSI-2 standard\r
\r
- Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
#define EFI_SCSI_DATA_IN 0\r
#define EFI_SCSI_DATA_OUT 1\r
\r
+//\r
+// SCSI Block Command Cache Control Parameters\r
+//\r
+#define EFI_SCSI_BLOCK_FUA BIT3 ///< Force Unit Access\r
+#define EFI_SCSI_BLOCK_DPO BIT4 ///< Disable Page Out\r
+\r
//\r
// Peripheral Device Type Definitions\r
//\r
/** @file\r
UEFI SCSI Library implementation\r
\r
- Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
ZeroMem (&CommandPacket, sizeof (EFI_SCSI_IO_SCSI_REQUEST_PACKET));\r
ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_TEN);\r
\r
- CommandPacket.Timeout = Timeout;\r
- CommandPacket.OutDataBuffer = DataBuffer;\r
- CommandPacket.SenseData = SenseData;\r
- CommandPacket.OutTransferLength= *DataLength;\r
- CommandPacket.Cdb = Cdb;\r
+ CommandPacket.Timeout = Timeout;\r
+ CommandPacket.OutDataBuffer = DataBuffer;\r
+ CommandPacket.SenseData = SenseData;\r
+ CommandPacket.OutTransferLength = *DataLength;\r
+ CommandPacket.Cdb = Cdb;\r
//\r
// Fill Cdb for Write (10) Command\r
//\r
Cdb[0] = EFI_SCSI_OP_WRITE10;\r
+ Cdb[1] = EFI_SCSI_BLOCK_FUA;\r
WriteUnaligned32 ((UINT32 *)&Cdb[2], SwapBytes32 (StartLba));\r
WriteUnaligned16 ((UINT16 *)&Cdb[7], SwapBytes16 ((UINT16) SectorSize));\r
\r
// Fill Cdb for Write (16) Command\r
//\r
Cdb[0] = EFI_SCSI_OP_WRITE16;\r
+ Cdb[1] = EFI_SCSI_BLOCK_FUA;\r
WriteUnaligned64 ((UINT64 *)&Cdb[2], SwapBytes64 (StartLba));\r
WriteUnaligned32 ((UINT32 *)&Cdb[10], SwapBytes32 (SectorSize));\r
\r