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=hao.a.wu@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 E5953210D8512 for ; Thu, 21 Jun 2018 19:39:01 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jun 2018 19:39:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,255,1526367600"; d="scan'208";a="239594840" Received: from shwdeopenpsi014.ccr.corp.intel.com ([10.239.9.19]) by fmsmga006.fm.intel.com with ESMTP; 21 Jun 2018 19:39:00 -0700 From: Hao Wu To: edk2-devel@lists.01.org Cc: Hao Wu , Star Zeng , Eric Dong , Ruiyu Ni , Jiewen Yao Date: Fri, 22 Jun 2018 10:38:55 +0800 Message-Id: <20180622023859.13880-1-hao.a.wu@intel.com> X-Mailer: git-send-email 2.12.0.windows.1 Subject: [PATCH v2 0/4] Add PEI BlockIo support for NVM Express devices X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jun 2018 02:39:02 -0000 The series is also available at: https://github.com/hwu25/edk2/tree/nvme_pei_blockio_v2 V2 updates: Patch 1/4: A. Remove the unnecessary input parameter 'PeiServices' from the 2 services of the EDKII PEI NVME host controller PPI. B. Fix typo of 'DevicePathLenth' to 'DevicePathLength' within the GetNvmeHcDevicePath service. C. Refine the parameter description for 'DevicePath' within the GetNvmeHcDevicePath service. Patch 2/4: A. Use CopyMem() API to perform the value assign to a structure variable B. Remove 'IPF' from the valid arch fields in the driver INF file. C. Remove the boot mode check at the driver entry point and remove the 'gEfiPeiMasterBootModePpiGuid' depex from the driver INF file. D. Enhance the debug message level used in file NvmExpressPeiBlockIo.c. DEBUG_BLKIO is used in proper places. V1 history: The series will add the PEI BlockIo support for NVM Express devices. A new EDKII PEI NVME host controller PPI will be introduced. It will provide the caller with the MMIO BAR address and the device path information of the NVM Express host controllers within system. The NvmExpressPei driver is added to comsume the EDKII PEI NVME host controller PPI and produce the BlockIo PPIs for those NVME devices. Also, FatPei driver has been updated to support the recovery from NVME devices. Tests done for the patch: (NOTE: All tests are performed with 1 NVME device attached, and 2 NVME devices attached. And all tests are performed with Vtd enabled and disabled on platform.) 1. Use the BlockIo PPIs to read and verify the data on NVME devices. 2. Recovery from NVME device test on real platform. Cc: Star Zeng Cc: Eric Dong Cc: Ruiyu Ni Cc: Jiewen Yao Hao Wu (4): MdeModulePkg: Add definitions for EDKII PEI NVME host controller PPI MdeModulePkg/NvmExpressPei: Add the NVME device PEI BlockIo support MdeModulePkg: Add GUID for recovery capsule on NVM Express devices FatPkg/FatPei: Add the recognition of recovery capsule on NVME device FatPkg/FatPei/FatLiteApi.c | 6 +- FatPkg/FatPei/FatPei.inf | 3 +- MdeModulePkg/Bus/Pci/NvmExpressPei/DmaMem.c | 249 +++++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.c | 358 ++++++++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.h | 265 +++++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.inf | 69 ++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.uni | 21 + MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiBlockIo.c | 527 ++++++++++++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiBlockIo.h | 266 +++++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiExtra.uni | 19 + MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiHci.c | 748 ++++++++++++++++++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiHci.h | 166 +++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiPassThru.c | 628 ++++++++++++++++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiPassThru.h | 107 +++ MdeModulePkg/Include/Guid/RecoveryDevice.h | 9 + MdeModulePkg/Include/Ppi/NvmExpressHostController.h | 92 +++ MdeModulePkg/MdeModulePkg.dec | 6 + MdeModulePkg/MdeModulePkg.dsc | 1 + 18 files changed, 3538 insertions(+), 2 deletions(-) create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/DmaMem.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.h create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.inf create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.uni create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiBlockIo.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiBlockIo.h create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiExtra.uni create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiHci.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiHci.h create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiPassThru.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiPassThru.h create mode 100644 MdeModulePkg/Include/Ppi/NvmExpressHostController.h -- 2.12.0.windows.1