From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web08.12716.1632611149834054906 for ; Sat, 25 Sep 2021 16:05:50 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: guo.dong@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10118"; a="285311470" X-IronPort-AV: E=Sophos;i="5.85,322,1624345200"; d="scan'208";a="285311470" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2021 16:05:49 -0700 X-IronPort-AV: E=Sophos;i="5.85,322,1624345200"; d="scan'208";a="586418270" Received: from gdong1-mobl1.amr.corp.intel.com ([10.255.67.241]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2021 16:05:48 -0700 From: "Guo Dong" To: devel@edk2.groups.io Cc: ray.ni@intel.com, maurice.ma@intel.com, benjamin.you@intel.com, Guo Dong Subject: [`edk2-devel][PATCH 0/8] Add SMM variable support for UEFI payload Date: Sat, 25 Sep 2021 16:05:22 -0700 Message-Id: <20210925230530.861-1-guo.dong@intel.com> X-Mailer: git-send-email 2.32.0.windows.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Guo Dong https://bugzilla.tianocore.org/show_bug.cgi?id=3084 Currently UEFI payload uses emulated variable driver. So it could not support secureboot and measured boot since both need NV variable support. EDKII already has SMM modules and variable modules. And modern Intel platform supports SPI flash hardware sequence to operate flash. So it is possible to have a common SPI module for Intel platforms. This patch enhances UEFI payload to support SMM variable with a common SPI library for Intel platforms. To avoid impact existing usage, all the new modules are included under SMM_ENABLE and VARIABLE_SUPPORT and by default SMM variable is not be enabled. SMM variable could be enabled only when UNIVERSAL_PAYLOAD is set since non-universal payload need update ParseLib to provide SMM variable related infromation which is not in the plan. Signed-off-by: Guo Dong Guo Dong (8): UefiPayloadPkg: Add a common SmmAccessDxe module UefiPayloadPkg: Add a common SMM control Runtime DXE module UefiPayloadPkg: Add bootloader SMM support module UefiPayloadPkg: Add SpiFlashLib UefiPayloadPkg: Add FlashDeviceLib UefiPayloadPkg: Add a common FVB SMM module UefiPayloadPkg: Add a SMM dispatch module UefiPayloadPkg: Add SMM support and SMM variable support UefiPayloadPkg/BlSupportSmm/BlSupportSmm.c | 409 +++++++ UefiPayloadPkg/BlSupportSmm/BlSupportSmm.h | 41 + UefiPayloadPkg/BlSupportSmm/BlSupportSmm.inf | 49 + UefiPayloadPkg/FvbRuntimeDxe/FvbInfo.c | 143 +++ UefiPayloadPkg/FvbRuntimeDxe/FvbService.c | 1085 +++++++++++++++++ UefiPayloadPkg/FvbRuntimeDxe/FvbService.h | 187 +++ UefiPayloadPkg/FvbRuntimeDxe/FvbServiceSmm.c | 139 +++ UefiPayloadPkg/FvbRuntimeDxe/FvbSmm.inf | 71 ++ UefiPayloadPkg/FvbRuntimeDxe/FvbSmmCommon.h | 69 ++ .../Include/Guid/NvVariableInfoGuid.h | 30 + .../Include/Guid/SmmRegisterInfoGuid.h | 48 + .../Include/Guid/SmmS3CommunicationInfoGuid.h | 54 + .../Include/Guid/SpiFlashInfoGuid.h | 38 + .../Include/Library/FlashDeviceLib.h | 108 ++ UefiPayloadPkg/Include/Library/SpiFlashLib.h | 215 ++++ .../Library/FlashDeviceLib/FlashDeviceLib.c | 165 +++ .../Library/FlashDeviceLib/FlashDeviceLib.inf | 38 + UefiPayloadPkg/Library/SpiFlashLib/PchSpi.c | 180 +++ UefiPayloadPkg/Library/SpiFlashLib/RegsSpi.h | 129 ++ .../Library/SpiFlashLib/SpiCommon.h | 208 ++++ .../Library/SpiFlashLib/SpiFlashLib.c | 857 +++++++++++++ .../Library/SpiFlashLib/SpiFlashLib.inf | 47 + .../PchSmiDispatchSmm/PchSmiDispatchSmm.c | 455 +++++++ .../PchSmiDispatchSmm/PchSmiDispatchSmm.h | 39 + .../PchSmiDispatchSmm/PchSmiDispatchSmm.inf | 51 + UefiPayloadPkg/SmmAccessDxe/SmmAccessDxe.c | 254 ++++ UefiPayloadPkg/SmmAccessDxe/SmmAccessDxe.h | 38 + UefiPayloadPkg/SmmAccessDxe/SmmAccessDxe.inf | 51 + .../SmmControlRuntimeDxe.c | 252 ++++ .../SmmControlRuntimeDxe.inf | 50 + UefiPayloadPkg/UefiPayloadPkg.dec | 10 + UefiPayloadPkg/UefiPayloadPkg.dsc | 101 +- UefiPayloadPkg/UefiPayloadPkg.fdf | 38 +- 33 files changed, 5638 insertions(+), 11 deletions(-) create mode 100644 UefiPayloadPkg/BlSupportSmm/BlSupportSmm.c create mode 100644 UefiPayloadPkg/BlSupportSmm/BlSupportSmm.h create mode 100644 UefiPayloadPkg/BlSupportSmm/BlSupportSmm.inf create mode 100644 UefiPayloadPkg/FvbRuntimeDxe/FvbInfo.c create mode 100644 UefiPayloadPkg/FvbRuntimeDxe/FvbService.c create mode 100644 UefiPayloadPkg/FvbRuntimeDxe/FvbService.h create mode 100644 UefiPayloadPkg/FvbRuntimeDxe/FvbServiceSmm.c create mode 100644 UefiPayloadPkg/FvbRuntimeDxe/FvbSmm.inf create mode 100644 UefiPayloadPkg/FvbRuntimeDxe/FvbSmmCommon.h create mode 100644 UefiPayloadPkg/Include/Guid/NvVariableInfoGuid.h create mode 100644 UefiPayloadPkg/Include/Guid/SmmRegisterInfoGuid.h create mode 100644 UefiPayloadPkg/Include/Guid/SmmS3CommunicationInfoGuid.h create mode 100644 UefiPayloadPkg/Include/Guid/SpiFlashInfoGuid.h create mode 100644 UefiPayloadPkg/Include/Library/FlashDeviceLib.h create mode 100644 UefiPayloadPkg/Include/Library/SpiFlashLib.h create mode 100644 UefiPayloadPkg/Library/FlashDeviceLib/FlashDeviceLib.c create mode 100644 UefiPayloadPkg/Library/FlashDeviceLib/FlashDeviceLib.inf create mode 100644 UefiPayloadPkg/Library/SpiFlashLib/PchSpi.c create mode 100644 UefiPayloadPkg/Library/SpiFlashLib/RegsSpi.h create mode 100644 UefiPayloadPkg/Library/SpiFlashLib/SpiCommon.h create mode 100644 UefiPayloadPkg/Library/SpiFlashLib/SpiFlashLib.c create mode 100644 UefiPayloadPkg/Library/SpiFlashLib/SpiFlashLib.inf create mode 100644 UefiPayloadPkg/PchSmiDispatchSmm/PchSmiDispatchSmm.c create mode 100644 UefiPayloadPkg/PchSmiDispatchSmm/PchSmiDispatchSmm.h create mode 100644 UefiPayloadPkg/PchSmiDispatchSmm/PchSmiDispatchSmm.inf create mode 100644 UefiPayloadPkg/SmmAccessDxe/SmmAccessDxe.c create mode 100644 UefiPayloadPkg/SmmAccessDxe/SmmAccessDxe.h create mode 100644 UefiPayloadPkg/SmmAccessDxe/SmmAccessDxe.inf create mode 100644 UefiPayloadPkg/SmmControlRuntimeDxe/SmmControlRuntimeDxe.c create mode 100644 UefiPayloadPkg/SmmControlRuntimeDxe/SmmControlRuntimeDxe.inf -- 2.32.0.windows.2