break;\r
}\r
\r
- DEBUG ((EFI_D_INFO, "UsbBootRequestSense: (%r) with sense key %x/%x/%x\n",\r
+ DEBUG ((EFI_D_INFO, "UsbBootRequestSense: (%r) with error code (%x) sense key %x/%x/%x\n",\r
Status,\r
+ SenseData.ErrorCode,\r
USB_BOOT_SENSE_KEY (SenseData.SenseKey),\r
SenseData.Asc,\r
SenseData.Ascq\r
);\r
\r
if (Status == EFI_TIMEOUT) {\r
- DEBUG ((EFI_D_ERROR, "UsbBootExecCmd: Timeout to Exec 0x%x Cmd\n", *(UINT8 *)Cmd));\r
+ DEBUG ((EFI_D_ERROR, "UsbBootExecCmd: %r to Exec 0x%x Cmd\n", Status, *(UINT8 *)Cmd));\r
return EFI_TIMEOUT;\r
}\r
\r
//\r
// If command execution failed, then retrieve error info via sense request.\r
//\r
+ DEBUG ((EFI_D_ERROR, "UsbBootExecCmd: %r to Exec 0x%x Cmd (Result = %x)\n", Status, *(UINT8 *)Cmd, CmdResult));\r
return UsbBootRequestSense (UsbMass);\r
}\r
\r
{\r
EFI_BLOCK_IO_MEDIA *Media;\r
EFI_STATUS Status;\r
- UINT8 CmdSet;\r
\r
Media = &(UsbMass->BlockIoMedia);\r
- CmdSet = ((EFI_USB_INTERFACE_DESCRIPTOR *) (UsbMass->Context))->InterfaceSubClass;\r
\r
Status = UsbBootInquiry (UsbMass);\r
if (EFI_ERROR (Status)) {\r
Media->BlockSize = 0x0800;\r
}\r
\r
- if ((UsbMass->Pdt != USB_PDT_CDROM) && (CmdSet == USB_MASS_STORE_SCSI)) {\r
- //\r
- // ModeSense is required for the device with PDT of 0x00/0x07/0x0E,\r
- // which is from [MassStorageBootabilitySpec-Page7].\r
- // ModeSense(10) is useless here, while ModeSense(6) defined in SCSI\r
- // could get the information of WriteProtected.\r
- // Since not all device support this command, so skip if fail.\r
- //\r
- UsbScsiModeSense (UsbMass);\r
- }\r
+ Status = UsbBootDetectMedia (UsbMass);\r
\r
- return UsbBootReadCapacity (UsbMass);\r
+ return Status;\r
}\r
\r
\r
CmdSet = ((EFI_USB_INTERFACE_DESCRIPTOR *) (UsbMass->Context))->InterfaceSubClass;\r
\r
Status = UsbBootIsUnitReady (UsbMass);\r
- if (EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) && (Status != EFI_MEDIA_CHANGED)) {\r
goto ON_ERROR;\r
}\r
\r