Commit Graph

44 Commits

Author SHA1 Message Date
Hao Wu c018a25762 MdePkg UefiScsiLib: Raise the Tpl of async IO callback to TPL_NOTIFY
Raise the Tpl of async SCSI I/O callback function to TPL_NOTIFY to match
the behavior in ScsiDiskDxe driver.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19453 6f19259b-4bc3-4df7-8a09-765794883524
2015-12-22 13:58:09 +00:00
Hao Wu fbbb3ff3e0 MdePkg UefiScsiLib: Close event when SCSI command fails
The ScsiExecuteSCSICommand() function in ScsiBusDxe driver will not signal
the event passed from UefiScsiLib when error occurs.

In this case, UefiScsiLib should close the event passing to
ScsiExecuteSCSICommand().

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19448 6f19259b-4bc3-4df7-8a09-765794883524
2015-12-22 13:55:59 +00:00
Hao Wu 9c58193927 MdePkg UefiScsiLib: Add non-blocking support for SCSI Read/Write command
Four new functions are added to UefiScsiLib:
ScsiRead10CommandEx
ScsiWrite10CommandEx
ScsiRead16CommandEx
ScsiWrite16CommandEx

They support both blocking and non-blocking SCSI Read/Write operation
depending on the optional parameter 'Event' passed to those APIs.

When 'Event' is NULL, these four functions will call the non-EX version
couterparts to execute blocking SCSI I/O. When 'Event' is not NULL,
non-blocking I/O operation is executed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19214 6f19259b-4bc3-4df7-8a09-765794883524
2015-12-11 01:57:41 +00:00
Feng Tian d658727b50 MdePkg/UefiScsiLib: comments update to add EFI_INVALID_PARAMETER status
EFI_SCSI_IO_PROTOCOL has alignment requirement on any data buffer
used in SCSI data transfer. As a wrap of this protocol, UefiScsiLib
have same request. Adding EFI_INVALID_PARAMETER return status in
function comments to ask the caller to guarantee this alignment.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18434 6f19259b-4bc3-4df7-8a09-765794883524
2015-09-10 07:02:12 +00:00
Laszlo Ersek b04a63ac48 MdePkg: UefiScsiLib: do not encode LUN in CDB for other SCSI commands
The TEST UNIT READY, INQUIRY, MODE SENSE, REQUEST SENSE and READ CAPACITY
commands define bits [7:5] of Cdb[1] as Reserved (potentially as part of a
larger Reserved bitfield):

  Command             Reserved bitfield in Cdb[1]  SCSI spec reference
  ------------------  ---------------------------  -------------------
  TEST UNIT READY     all bits                     SPC-4 6.37
  INQUIRY             bits [7:2]                   SPC-4 6.4.1
  MODE SENSE (6)      bits [7:4]                   SPC-4 6.11.1
  MODE SENSE (10)     bits [7:5]                   SPC-4 6.12
  REQUEST SENSE       bits [7:1]                   SPC-4 6.29
  READ CAPACITY (10)  bits [7:1]                   SBC-3 5.16
  READ CAPACITY (16)  bits [7:5]                   SBC-3 5.17

Update the UefiScsiLib functions accordingly.

(In ScsiReadCapacity16Command() the LUN has not been encoded, so there we
just remove the useless ScsiIo->GetDeviceLocation() call, with its
auxiliary local variables.)

The EFI_SCSI_TARGET_MAX_BYTES and EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK macros
become unused with this patch, remove them too.

Suggested-by: Feng Tian <feng.tian@intel.com>

Contributed-under: TianoCore Contribution Agreement 1.0

Signed-off-by: Laszlo Ersek <lersek@redhat.com>

Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16455 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-28 10:24:56 +00:00
Laszlo Ersek c128d5281f MdePkg: UefiScsiLib: do not encode LUN in CDB for READ and WRITE
The "SCSI Block Commands - 2" (SBC-2) standard defines bits [7:5] of the
CDB byte 1 as Reserved, for the READ and WRITE commands.

The updated "SCSI Block Commands - 3" (SBC-3) standard defines the same
bitfield as RDPROTECT and WRPROTECT, respectively.

After reviewing the above standards, and the following commits:
- SVN r8331 (git 676e2a32),
- SVN r8334 (git 6b3ecf5c),
we've determined that UefiScsiLib is incorrect in encoding the LUN in this
bitfield for the READ and WRITE commands.

Encoding a nonzero LUN there creates unintended RDPROTECT and WRPROTECT
values, which the recipient device is required to reject if it does not
support protection information, with CHECK CONDITION, ILLEGAL REQUEST,
INVALID FIELD IN CDB:

  ScsiDiskRead10: Check Condition happened!
  ScsiDisk: Sense Key = 0x5 ASC = 0x24!
  ScsiDiskRead10: Check Condition happened!
  ScsiDisk: Sense Key = 0x5 ASC = 0x24!
  ScsiDiskRead10: Check Condition happened!
  ScsiDisk: Sense Key = 0x5 ASC = 0x24!
  ScsiDiskRead10: Check Condition happened!
  ScsiDisk: Sense Key = 0x5 ASC = 0x24!
  FatOpenDevice: read of part_lba failed Device Error

In practice this flaw breaks UefiScsiLib minimally on SCSI disks with
nonzero LUNs that are emulated by QEMU (after QEMU commit 96bdbbab, part
of v1.2.0).

RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1166971

Reported-by: Cole Robinson <crobinso@redhat.com>

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>

Suggested-by: Feng Tian <feng.tian@intel.com>

Contributed-under: TianoCore Contribution Agreement 1.0

Signed-off-by: Laszlo Ersek <lersek@redhat.com>

Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16454 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-28 10:24:41 +00:00
Tian, Feng b95eb5e097 MdePkg/UefiScsiLib: Wrong function parameter comments in UefiScsiLib. It should be the number of transferred blocks rather than block size.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Tian, Feng <feng.tian@intel.com>
Reviewed-by: Zeng, Star <star.zeng@intel.com>
Reviewed-by: Fu, Siyuan <siyuan.fu@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15492 6f19259b-4bc3-4df7-8a09-765794883524
2014-04-30 03:38:05 +00:00
niruiyu b8a62661e4 Add BlockIO revision 3 definition. Add new API ScsiInquiryCommandEx to UefiScsiLib.
Signed-off-by: niruiyu
Reviewed-by: erictian

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11691 6f19259b-4bc3-4df7-8a09-765794883524
2011-05-23 07:45:40 +00:00
myronporter 58380e9c61 Minor grammatical work--mostly adding periods. Items with ONLY period added did not have the heading date changed, but Items with content changes had heading copyright dates updated. Sending separately a list of files missing Doxygen @param and @return information. (PENDING)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10615 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-30 00:13:25 +00:00
myronporter 2fc59a003e Minor grammatical work--mostly adding periods. Items with ONLY period added did not have the heading date changed, but Items with content changes had heading copyright dates updated. Sending separately a list of files missing Doxygen @param and @return information. (PENDING)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10604 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-25 21:56:02 +00:00
li-elvin a24faca37a Add Read/Write (16) command to SCSI library.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10549 6f19259b-4bc3-4df7-8a09-765794883524
2010-05-28 06:57:15 +00:00
hhtian 19388d2960 Update the copyright notice format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10415 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-23 16:37:43 +00:00
rsun3 5fe71b5f03 Add missing parameter check ASSERTs in ScsiReadCapacity16Command() of UefiScsiLib.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8471 6f19259b-4bc3-4df7-8a09-765794883524
2009-06-05 01:41:31 +00:00
lgao4 3e0c79b57b Fix ScsiLib build break by << operator, which is replaced by LShiftU64 of BaseLib.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8363 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-21 03:26:42 +00:00
rsun3 6b3ecf5cc2 Add back logic to encode LUN in CDB for compatibility with SCSI-2 spec, although LUN encoding in CDB is changed to be reserved in SCSI-3 spec.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8334 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-19 09:07:38 +00:00
rsun3 676e2a32f9 Fix bugs in the UEFI SCSI Library.
1. LUN number should not be encoded in CDB.
2. Left shift the PageControl field by 6 bits in ScsiModeSense10Command().

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8331 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-19 05:42:37 +00:00
qhuang8 f158ee678c Fix minor coding style issue for ScsiReadCapacity16Command() API in UefiScsiLib
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8291 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-11 07:22:49 +00:00
mdkinney 5e11e7c691 Update function header description of ScsiReadCapacity16Command() in the UEFI Scsi Library
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8277 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-09 01:31:20 +00:00
qhuang8 51969ecb37 Fix several minor coding style issues.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8092 6f19259b-4bc3-4df7-8a09-765794883524
2009-04-15 14:31:45 +00:00
jji4 ccb491c862 Read-Capacity16 command added for SCSI drivers
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7999 6f19259b-4bc3-4df7-8a09-765794883524
2009-04-01 08:24:58 +00:00
klu2 070a76b193 Synchronize interface function comment from declaration in library class header file to implementation in library instance.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6957 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-10 03:28:54 +00:00
jji4 9ccbe812c5 Function comments have been checked with spec.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6840 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-04 07:15:13 +00:00
jji4 6089ba6250 Function headers checked with spec
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6710 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-24 09:15:55 +00:00
jji4 d5954c618f Code Scrub:
The code of MdePkg\Library\UefiScsiLib\ and MdePkg\Library\UefiUsbLib has been checked and modified according to MDE_Library_Spec_0.61h-4.doc.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6561 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-17 11:24:14 +00:00
qhuang8 172ea7c7ca Update for the library class renaming: ScsiLib -> UefiScsiLib
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6515 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-13 09:04:51 +00:00
qwang12 86026b9dff Fix a typo.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6356 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-31 08:19:34 +00:00
xli24 dfc5aca1ac Move definition of EFI_SCSI_TARGET_MAX_BYTES from IndustryStandard in MDE Package to UefiScsiLib.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6158 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-20 15:34:16 +00:00
klu2 ee256e2c4d Fix ECC issue.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6154 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-20 14:27:06 +00:00
eric_tian 956a6dca23 add proper modifers preceding to function arguments.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6082 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-07 09:29:24 +00:00
eric_tian b91d5eca6c sync the comments of scsilib library class with Mde Library Spec.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6081 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-07 09:23:48 +00:00
lgao4 52cd71dca9 Update UefiScsiLib to add ASSERT comments and define new macros to replace the hard code value.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5838 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-08 05:56:40 +00:00
lgao4 60c93673b3 The driver and library in MdePkg, MdeModulePkg and Nt32Pkg that don't depend on PI spec should include Uefi.h not PiDxe.h.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5758 6f19259b-4bc3-4df7-8a09-765794883524
2008-08-30 14:09:38 +00:00
yshang1 42eedea958 Code Scrub for MdePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5567 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-25 12:21:57 +00:00
yshang1 373b5cf97c Code Scrub the common includes in MdePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5493 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-16 06:31:22 +00:00
lgao4 306431f76a Fix build failure by adding DebugLib
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4752 6f19259b-4bc3-4df7-8a09-765794883524
2008-02-25 14:22:11 +00:00
lgao4 8069d49e9a update comments and add assert for these files.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4750 6f19259b-4bc3-4df7-8a09-765794883524
2008-02-25 07:01:44 +00:00
jljusten a3589760c4 edk2/MdePkg/MdePkg/Library/UefiScsiLib/UefiScsiLib.c:
edk2/MdePkg/MdePkg/Library/DxeSmbusLib/InternalSmbusLib.h:
  Fixed include filenames (case) for case-sensitive filesystems.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4264 6f19259b-4bc3-4df7-8a09-765794883524
2007-11-02 00:00:44 +00:00
xli24 ba7e162ec1 Fix a bug of ScsiWrite10Command() UefiScsiLib. After the SCSI WRITE command is executed, the output DataLength parameter should be EFI_SCSI_IO_SCSI_REQUEST_PACKET.OutTransferLength, instead of EFI_SCSI_IO_SCSI_REQUEST_PACKET.InTransferLength.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3961 6f19259b-4bc3-4df7-8a09-765794883524
2007-09-28 05:59:12 +00:00
qhuang8 c7a54f2560 Fix invalid return status to sync with newest UEFI spec 2.1
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3900 6f19259b-4bc3-4df7-8a09-765794883524
2007-09-20 09:59:05 +00:00
lgao4 d35be2a434 Sync code with MdePkg spec for Scsi library class and CustomDecompress library class.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3636 6f19259b-4bc3-4df7-8a09-765794883524
2007-08-14 07:58:32 +00:00
yshang1 581e82a1f6 Fix bugs in MdePkg for GCC build.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3345 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-19 03:18:32 +00:00
AJFISH bf231ea60e Fixed comments to follow coding standard.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3221 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-13 03:21:40 +00:00
AJFISH d5b86e43cf Removed MdePkg usage of ModuleName: in file headers
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3217 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-12 22:59:43 +00:00
klu2 a02e796b5e 1) Modify ScsiIo protocol according to UEFI specification
2) Add UefiScsiLib library instance.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2875 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-29 03:27:28 +00:00