From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=hao.a.wu@intel.com; receiver=edk2-devel@lists.01.org Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 9BAA6211BB8CD for ; Tue, 29 Jan 2019 05:44:31 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Jan 2019 05:44:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,537,1539673200"; d="scan'208";a="129454563" Received: from shwdeopenpsi014.ccr.corp.intel.com ([10.239.9.8]) by FMSMGA003.fm.intel.com with ESMTP; 29 Jan 2019 05:44:26 -0800 From: Hao Wu To: edk2-devel@lists.01.org Cc: Hao Wu , Jian J Wang , Ray Ni , Eric Dong , Star Zeng , Chao Zhang , Jiewen Yao Date: Tue, 29 Jan 2019 21:44:12 +0800 Message-Id: <20190129134424.5308-1-hao.a.wu@intel.com> X-Mailer: git-send-email 2.12.0.windows.1 Subject: [PATCH v1 00/12] Split the S3 PEI phase HW init codes from Opal driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jan 2019 13:44:31 -0000 The series is also available at: https://github.com/hwu25/edk2/tree/opal_remodel For the below 2 types of storage device: 1. NVM Express devices; 2. ATA hard disk devices working under AHCI mode. the OpalPassword driver supports auto-unlocking those devices during S3 resume. Current implementation of the OpalPassword driver is handling the device initialization (using boot script to restore the host controller PCI configuration space also counts) in the PEI phase during S3 resume by itself. Meanwhile, the NvmExpressPei driver in MdeModulePkg also handles the NVME device initialization during the PEI phase in order to produce the Block IO PPI. Moreover, there is a Bugzilla request (BZ-1483) for adding the Block IO PPI support for ATA device as well. So there is likely to be an PEI driver for ATA device that will handle the ATA device initialization. In order to remove code duplication, the series will split the S3 phase device initialization related codes out from the OpalPassword driver. And let the existing NvmExpressPei driver and the new AhciPei driver to handle the task. After this remodel, NvmExpressPei and AhciPei drivers will produce a PPI called Storage Security Command PPI. And the OpalPassword driver will consume this PPI to perform the device auto-unlock in S3 resume. Patch 1~4: Add the definitions of PPIs and GUIDs; Patch 5: Refinement for the NvmExpressPei driver; Patch 6~7: Update the NvmExpressPei driver to produce the PPI needed by OpalPassword; Patch 8: Add the Ahci mode ATA device support in the PEI phase, it will produce the PPI needed by OpalPassword; Patch 9~10: Refinements for the SmmLockBoxLib; Patch 11: Support LockBox enlarge for LockBoxLib API UpdateLockBox(); Patch 12: Remove the hardware initialization codes from the OpalPassword driver. And consume the SSC PPI to unlock device in S3 resume. Cc: Jian J Wang Cc: Ray Ni Cc: Eric Dong Cc: Star Zeng Cc: Chao Zhang Cc: Jiewen Yao Hao Wu (12): MdeModulePkg: Add definitions for ATA AHCI host controller PPI MdeModulePkg: Add definitions for EDKII PEI ATA PassThru PPI MdeModulePkg: Add definitions for Storage Security Command PPI MdeModulePkg: Add GUID for LockBox to save storage dev to init in S3 MdeModulePkg/NvmExpressPei: Avoid updating the module-level variable MdeModulePkg/NvmExpressPei: Add logic to produce SSC PPI MdeModulePkg/NvmExpressPei: Consume S3StorageDeviceInitList LockBox MdeModulePkg/AhciPei: Add AHCI mode ATA device support in PEI MdeModulePkg/SmmLockBoxLib: Use 'DEBUG_' prefix instead of 'EFI_D_' MdeModulePkg/SmmLockBox(PEI): Remove an ASSERT in RestoreLockBox() MdeModulePkg/SmmLockBoxLib: Support LockBox enlarge in UpdateLockBox() SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI MdeModulePkg/MdeModulePkg.dec | 12 + MdeModulePkg/MdeModulePkg.dsc | 1 + MdeModulePkg/Bus/Ata/AhciPei/AhciPei.inf | 78 + MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.inf | 18 +- SecurityPkg/Tcg/Opal/OpalPassword/OpalPasswordDxe.inf | 6 +- SecurityPkg/Tcg/Opal/OpalPassword/OpalPasswordPei.inf | 12 +- MdeModulePkg/Bus/Ata/AhciPei/AhciPei.h | 741 +++++++ MdeModulePkg/Bus/Ata/AhciPei/AhciPeiBlockIo.h | 264 +++ MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.h | 184 ++ MdeModulePkg/Bus/Ata/AhciPei/AhciPeiStorageSecurity.h | 247 +++ MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.h | 109 +- MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiHci.h | 20 +- MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiStorageSecurity.h | 247 +++ MdeModulePkg/Include/Guid/S3StorageDeviceInitList.h | 36 + MdeModulePkg/Include/Library/LockBoxLib.h | 7 +- MdeModulePkg/Include/Ppi/AtaAhciController.h | 89 + MdeModulePkg/Include/Ppi/AtaPassThru.h | 359 ++++ MdeModulePkg/Include/Ppi/StorageSecurityCommand.h | 283 +++ SecurityPkg/Tcg/Opal/OpalPassword/OpalAhciMode.h | 412 ---- SecurityPkg/Tcg/Opal/OpalPassword/OpalDriver.h | 4 +- SecurityPkg/Tcg/Opal/OpalPassword/OpalNvmeMode.h | 327 --- SecurityPkg/Tcg/Opal/OpalPassword/OpalNvmeReg.h | 815 -------- SecurityPkg/Tcg/Opal/OpalPassword/OpalPasswordCommon.h | 45 +- SecurityPkg/Tcg/Opal/OpalPassword/OpalPasswordPei.h | 106 +- MdeModulePkg/Bus/Ata/AhciPei/AhciMode.c | 2134 ++++++++++++++++++++ MdeModulePkg/Bus/Ata/AhciPei/AhciPei.c | 337 ++++ MdeModulePkg/Bus/Ata/AhciPei/AhciPeiBlockIo.c | 533 +++++ MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.c | 521 +++++ MdeModulePkg/Bus/Ata/AhciPei/AhciPeiS3.c | 131 ++ MdeModulePkg/Bus/Ata/AhciPei/AhciPeiStorageSecurity.c | 391 ++++ MdeModulePkg/Bus/Ata/AhciPei/DevicePath.c | 317 +++ MdeModulePkg/Bus/Ata/AhciPei/DmaMem.c | 270 +++ MdeModulePkg/Bus/Pci/NvmExpressPei/DevicePath.c | 317 +++ MdeModulePkg/Bus/Pci/NvmExpressPei/DmaMem.c | 153 +- MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.c | 166 +- MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiHci.c | 32 +- MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiS3.c | 106 + MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiStorageSecurity.c | 423 ++++ MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.c | 7 +- MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.c | 27 +- MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.c | 33 +- MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.c | 133 +- SecurityPkg/Tcg/Opal/OpalPassword/OpalAhciMode.c | 1282 ------------ SecurityPkg/Tcg/Opal/OpalPassword/OpalDriver.c | 408 ++-- SecurityPkg/Tcg/Opal/OpalPassword/OpalNvmeMode.c | 1823 ----------------- SecurityPkg/Tcg/Opal/OpalPassword/OpalPasswordPei.c | 757 ++----- MdeModulePkg/Bus/Ata/AhciPei/AhciPei.uni | 21 + MdeModulePkg/Bus/Ata/AhciPei/AhciPeiExtra.uni | 19 + 48 files changed, 8879 insertions(+), 5884 deletions(-) create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPei.inf create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPei.h create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiBlockIo.h create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.h create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiStorageSecurity.h create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiStorageSecurity.h create mode 100644 MdeModulePkg/Include/Guid/S3StorageDeviceInitList.h create mode 100644 MdeModulePkg/Include/Ppi/AtaAhciController.h create mode 100644 MdeModulePkg/Include/Ppi/AtaPassThru.h create mode 100644 MdeModulePkg/Include/Ppi/StorageSecurityCommand.h delete mode 100644 SecurityPkg/Tcg/Opal/OpalPassword/OpalAhciMode.h delete mode 100644 SecurityPkg/Tcg/Opal/OpalPassword/OpalNvmeMode.h delete mode 100644 SecurityPkg/Tcg/Opal/OpalPassword/OpalNvmeReg.h create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciMode.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPei.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiBlockIo.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiS3.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiStorageSecurity.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/DevicePath.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/DmaMem.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/DevicePath.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiS3.c create mode 100644 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiStorageSecurity.c delete mode 100644 SecurityPkg/Tcg/Opal/OpalPassword/OpalAhciMode.c delete mode 100644 SecurityPkg/Tcg/Opal/OpalPassword/OpalNvmeMode.c create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPei.uni create mode 100644 MdeModulePkg/Bus/Ata/AhciPei/AhciPeiExtra.uni -- 2.12.0.windows.1