From c6e797aedafc09b241339587116f3fe51c41131a Mon Sep 17 00:00:00 2001 From: erictian Date: Tue, 19 Oct 2010 02:55:16 +0000 Subject: [PATCH] return EFI_DEVICE_ERROR if the Status value is not EFI_SUCCESS. it's because BlockIo.Reset() only has two possible values: EFI_SUCCESS and EFI_DEVICE_ERROR according to UEFI2.3 spec git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10956 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c | 6 +++++- MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c | 10 ++++++++++ MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c | 6 +++--- MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c | 4 ++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c index dc5c980ee9..9bf0a61a5a 100644 --- a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c +++ b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c @@ -4,7 +4,7 @@ This file implements protocol interfaces: Driver Binding protocol, Block IO protocol and DiskInfo protocol. - Copyright (c) 2009, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -773,6 +773,10 @@ AtaBlockIoReset ( Status = ResetAtaDevice (AtaDevice); + if (EFI_ERROR (Status)) { + Status = EFI_DEVICE_ERROR; + } + gBS->RestoreTPL (OldTpl); return Status; } diff --git a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c index c1d96b936e..3f6963ef19 100644 --- a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c +++ b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c @@ -398,12 +398,22 @@ ScsiDiskReset ( Status = ScsiDiskDevice->ScsiIo->ResetDevice (ScsiDiskDevice->ScsiIo); + if (EFI_ERROR (Status)) { + Status = EFI_DEVICE_ERROR; + goto Done; + } + if (!ExtendedVerification) { goto Done; } Status = ScsiDiskDevice->ScsiIo->ResetBus (ScsiDiskDevice->ScsiIo); + if (EFI_ERROR (Status)) { + Status = EFI_DEVICE_ERROR; + goto Done; + } + Done: gBS->RestoreTPL (OldTpl); return Status; diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c index 9871d9359d..efb06a073c 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c @@ -2,7 +2,7 @@ Implementation of the USB mass storage Bulk-Only Transport protocol, according to USB Mass Storage Class Bulk-Only Transport, Revision 1.0. -Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.
+Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -484,7 +484,7 @@ UsbBotResetDevice ( // Status = UsbBot->UsbIo->UsbPortReset (UsbBot->UsbIo); if (EFI_ERROR (Status)) { - return Status; + return EFI_DEVICE_ERROR; } } @@ -510,7 +510,7 @@ UsbBotResetDevice ( ); if (EFI_ERROR (Status)) { - return Status; + return EFI_DEVICE_ERROR; } // diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c index f9c56e24e8..b0ee6d56bf 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c @@ -4,7 +4,7 @@ Notice: it is being obsoleted by the standard body in favor of the BOT (Bulk-Only Transport). -Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.
+Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -575,7 +575,7 @@ UsbCbiResetDevice ( // Status = UsbCbiSendCommand (UsbCbi, ResetCmd, USB_CBI_RESET_CMD_LEN, Timeout); if (EFI_ERROR (Status)) { - return Status; + return EFI_DEVICE_ERROR; } //