mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/UsbMass: Revert "map -r" media change detection fix
This reverts commit a662afb5b0
.
* MdeModulePkg/UsbStorage: Fix "map -r" cannot detect media change
The above commit fixed the following issue:
When system boots to Shell without CDROM inside USB CDROM drive,
and then user inserts the CDROM with Eltorito file system,
"map -r" cannot show the new ELtorito file system.
The commit caused EFI_MEDIA_CHANGED status returned from
UsbBootDetectMedia().
But that fix exposes another issue:
When issuing ReadCapacity command to certain USB key
(Kingston DataTraveler G3 8GB) after it's hot-plugged, USB device
returns STALL error and RequestSense command returns media changed
sense data. (Most of the USB keys return SUCCESS for ReadCapacity
command after hot-plug.)
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
parent
1bc5d2b3c7
commit
19d76ae608
|
@ -2,7 +2,7 @@
|
|||
Implementation of the command set of USB Mass Storage Specification
|
||||
for Bootability, Revision 1.0.
|
||||
|
||||
Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
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
|
||||
|
@ -630,10 +630,8 @@ UsbBootGetParams (
|
|||
{
|
||||
EFI_BLOCK_IO_MEDIA *Media;
|
||||
EFI_STATUS Status;
|
||||
UINT8 CmdSet;
|
||||
|
||||
Media = &(UsbMass->BlockIoMedia);
|
||||
CmdSet = ((EFI_USB_INTERFACE_DESCRIPTOR *) (UsbMass->Context))->InterfaceSubClass;
|
||||
|
||||
Status = UsbBootInquiry (UsbMass);
|
||||
if (EFI_ERROR (Status)) {
|
||||
|
@ -668,18 +666,9 @@ UsbBootGetParams (
|
|||
Media->BlockSize = 0x0800;
|
||||
}
|
||||
|
||||
if ((UsbMass->Pdt != USB_PDT_CDROM) && (CmdSet == USB_MASS_STORE_SCSI)) {
|
||||
//
|
||||
// ModeSense is required for the device with PDT of 0x00/0x07/0x0E,
|
||||
// which is from [MassStorageBootabilitySpec-Page7].
|
||||
// ModeSense(10) is useless here, while ModeSense(6) defined in SCSI
|
||||
// could get the information of WriteProtected.
|
||||
// Since not all device support this command, so skip if fail.
|
||||
//
|
||||
UsbScsiModeSense (UsbMass);
|
||||
}
|
||||
Status = UsbBootDetectMedia (UsbMass);
|
||||
|
||||
return UsbBootReadCapacity (UsbMass);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
|
@ -710,7 +699,7 @@ UsbBootDetectMedia (
|
|||
CmdSet = ((EFI_USB_INTERFACE_DESCRIPTOR *) (UsbMass->Context))->InterfaceSubClass;
|
||||
|
||||
Status = UsbBootIsUnitReady (UsbMass);
|
||||
if (EFI_ERROR (Status)) {
|
||||
if (EFI_ERROR (Status) && (Status != EFI_MEDIA_CHANGED)) {
|
||||
goto ON_ERROR;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue