Hi, Haojian We have handled ASC code 0x29 at DetectMediaParsingSenseKeys(). TestUnitReady will retry if it's that case.
So I don't understand this fix. Thanks Feng -----Original Message----- From: Haojian Zhuang [mailto:[email protected]] Sent: Friday, January 6, 2017 2:52 PM To: Tian, Feng <[email protected]>; [email protected]; [email protected]; [email protected] Cc: Haojian Zhuang <[email protected]> Subject: [PATCH 9/9] ScsiDisk: retry if device detected power failure If device detected power failure, just retry. This operation is common in linux kernel. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Haojian Zhuang <[email protected]> --- MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c index b5eff25..a7b62ec 100644 --- a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c +++ b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c @@ -2251,6 +2251,12 @@ ScsiDiskTestUnitReady ( if (SenseDataLength != 0) { *NumberOfSenseKeys = SenseDataLength / sizeof (EFI_SCSI_SENSE_DATA); *SenseDataArray = ScsiDiskDevice->SenseData; + if (((*SenseDataArray)->Sense_Key == EFI_SCSI_SK_UNIT_ATTENTION) && + ((*SenseDataArray)->Addnl_Sense_Code == 0x29) && + ((*SenseDataArray)->Addnl_Sense_Code_Qualifier == 0)) { + *NeedRetry = TRUE; + return EFI_NOT_READY; + } return EFI_SUCCESS; } -- 2.7.4 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

