From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=star.zeng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 608BA20349DB0 for ; Mon, 13 Nov 2017 01:18:14 -0800 (PST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2017 01:22:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,388,1505804400"; d="scan'208";a="148991800" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga004.jf.intel.com with ESMTP; 13 Nov 2017 01:22:20 -0800 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 13 Nov 2017 01:22:20 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx124.amr.corp.intel.com (10.18.125.39) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 13 Nov 2017 01:22:20 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.175]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.213]) with mapi id 14.03.0319.002; Mon, 13 Nov 2017 17:22:18 +0800 From: "Zeng, Star" To: "Kinney, Michael D" , "edk2-devel@lists.01.org" CC: "Dong, Eric" , "Zeng, Star" Thread-Topic: [Patch] MdeModulePkg/UsbMassStorageDxe: Fix USB Mass Storage detection Thread-Index: AQHTWN1WDk7pFYSHTka1PiiZrEzVKKMSBWUQ Date: Mon, 13 Nov 2017 09:22:17 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103B9B4922@shsmsx102.ccr.corp.intel.com> References: <20171108220249.15404-1-michael.d.kinney@intel.com> In-Reply-To: <20171108220249.15404-1-michael.d.kinney@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] MdeModulePkg/UsbMassStorageDxe: Fix USB Mass Storage detection X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Nov 2017 09:18:15 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Mike, Have you evaluated whether the code in PeiUsbRequestSense() of PeiAtapi.c a= lso needs to be updated? Thanks, Star -----Original Message----- From: Kinney, Michael D=20 Sent: Thursday, November 9, 2017 6:03 AM To: edk2-devel@lists.01.org Cc: Zeng, Star ; Dong, Eric Subject: [Patch] MdeModulePkg/UsbMassStorageDxe: Fix USB Mass Storage detec= tion https://bugzilla.tianocore.org/show_bug.cgi?id=3D766 Update logic to not return an error from UsbBootRequestSense() if a Request= Sense command responds with no sense information. It is legal for a USB mass storage device to respond to a Request Sense com= mand with a SenseKey of USB_BOOT_SENSE_NO_SENSE and an Additional Sense Cod= e of USB_BOOT_ASC_NO_ADDITIONAL_SENSE_INFORMATION. This is described in Section 3.3 of the Universal Serial Bus Mass Storage S= pecification For Bootability: http://www.usb.org/developers/docs/devclass_docs/usb_msc_boot_1.0.pdf The previous logic returned an error of EFI_NO_RESPONSE and this caused USB= mass storage devices such as a USB floppy drive to not be detected. Cc: Star Zeng Cc: Eric Dong Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney --- MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c | 11 +++++++++-- Mde= ModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h | 9 +++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c b/MdeModu= lePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c index 0c46f888eb..2eb30f0c5f 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c @@ -2,7 +2,7 @@ Implementation of the command set of USB Mass Storage Specification for Bootability, Revision 1.0. =20 -Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made availab= le under the terms and conditions of the BSD License which accompanies thi= s distribution. The full text of the license may be found at @@ -80,7 +80,= 14 @@ UsbBootRequestSense ( switch (USB_BOOT_SENSE_KEY (SenseData.SenseKey)) { =20 case USB_BOOT_SENSE_NO_SENSE: - Status =3D EFI_NO_RESPONSE; + if (SenseData.Asc =3D=3D USB_BOOT_ASC_NO_ADDITIONAL_SENSE_INFORMATION)= { + // + // It is not an error if a device does not have additional sense inf= ormation + // + Status =3D EFI_SUCCESS; + } else { + Status =3D EFI_NO_RESPONSE; + } break; =20 case USB_BOOT_SENSE_RECOVERED: diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h b/MdeModu= lePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h index c4082558fa..13a926035c 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h @@ -2,7 +2,7 @@ Definition of the command set of USB Mass Storage Specification for Bootability, Revision 1.0. =20 -Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made availab= le under the terms and conditions of the BSD License which accompanies thi= s distribution. The full text of the license may be found at @@ -51,9 +51,= 10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR = IMPLIED. #define USB_BOOT_SENSE_VOLUME_OVERFLOW 0x0D ///< Partition overflow #define USB_BOOT_SENSE_MISCOMPARE 0x0E ///< Source data mis-match wh= ile verfying. =20 -#define USB_BOOT_ASC_NOT_READY 0x04 -#define USB_BOOT_ASC_NO_MEDIA 0x3A -#define USB_BOOT_ASC_MEDIA_CHANGE 0x28 +#define USB_BOOT_ASC_NO_ADDITIONAL_SENSE_INFORMATION 0x00 +#define USB_BOOT_ASC_NOT_READY 0x04 +#define USB_BOOT_ASC_NO_MEDIA 0x3A +#define USB_BOOT_ASC_MEDIA_CHANGE 0x28 =20 // // Supported PDT codes, or Peripheral Device Type -- 2.14.2.windows.3