]> git.proxmox.com Git - mirror_edk2.git/commitdiff
QuarkPlatformPkg/dsc/fdf: Add capsule/recovery support.
authorJiewen Yao <jiewen.yao@intel.com>
Wed, 21 Sep 2016 03:39:24 +0000 (11:39 +0800)
committerJiewen Yao <jiewen.yao@intel.com>
Tue, 8 Nov 2016 14:46:05 +0000 (22:46 +0800)
Add capsule and recovery support module in platform dsc and fdf.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Kelly Steele <kelly.steele@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Chao Zhang <chao.b.zhang@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
Tested-by: Michael Kinney <michael.d.kinney@intel.com>
QuarkPlatformPkg/Quark.dsc
QuarkPlatformPkg/Quark.fdf
QuarkPlatformPkg/QuarkMin.dsc

index d5988da25b45a9898ef59bc04249f319ed855fba..0bd9120a7fdd26882e0ebe881eeb3adad309935c 100644 (file)
@@ -39,6 +39,8 @@
   DEFINE SOURCE_DEBUG_ENABLE  = FALSE\r
   DEFINE PERFORMANCE_ENABLE   = FALSE\r
   DEFINE LOGGING              = FALSE\r
+  DEFINE CAPSULE_ENABLE       = FALSE\r
+  DEFINE RECOVERY_ENABLE      = FALSE\r
 \r
   #\r
   # Galileo board.  Options are [GEN1, GEN2]\r
   PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf\r
 !endif\r
 \r
-!if $(SECURE_BOOT_ENABLE) || $(MEASURED_BOOT_ENABLE)\r
   OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf\r
   IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf\r
   BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf\r
-!endif\r
 \r
 !if $(SECURE_BOOT_ENABLE)\r
   PlatformSecureLib|QuarkPlatformPkg/Library/PlatformSecureLib/PlatformSecureLib.inf\r
   PlatformPcieHelperLib|QuarkPlatformPkg/Library/PlatformPcieHelperLib/PlatformPcieHelperLib.inf\r
   PlatformHelperLib|QuarkPlatformPkg/Library/PlatformHelperLib/DxePlatformHelperLib.inf\r
 \r
+!if $(CAPSULE_ENABLE)\r
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf\r
+!else\r
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf\r
+!endif\r
+\r
+  EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf\r
+  FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf\r
+  IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf\r
+  PlatformFlashAccessLib|QuarkPlatformPkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLibDxe.inf\r
+\r
 [LibraryClasses.common.SEC]\r
   #\r
   # SEC specific phase\r
   PlatformHelperLib|QuarkPlatformPkg/Library/PlatformHelperLib/PeiPlatformHelperLib.inf\r
   CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf\r
   MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf\r
-!if $(SECURE_BOOT_ENABLE) || $(MEASURED_BOOT_ENABLE)\r
   BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf\r
-!endif\r
 !if $(PERFORMANCE_ENABLE)\r
   PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf\r
 !endif\r
   PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf\r
   CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf\r
   SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf\r
-!if $(SECURE_BOOT_ENABLE) || $(MEASURED_BOOT_ENABLE)\r
   BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf\r
-!endif\r
 !if $(PERFORMANCE_ENABLE)\r
   PerformanceLib|MdeModulePkg/Library/SmmPerformanceLib/SmmPerformanceLib.inf\r
 !endif\r
   BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf\r
 !endif\r
 \r
+!if $(CAPSULE_ENABLE)\r
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf\r
+!endif\r
+\r
 [LibraryClasses.IA32.UEFI_DRIVER,LibraryClasses.IA32.UEFI_APPLICATION]\r
   PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf\r
 \r
 \r
   gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand|FALSE\r
 \r
+!if $(RECOVERY_ENABLE)\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"QUARKREC.Cap"\r
+!endif\r
+\r
 [PcdsPatchableInModule]\r
   gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803000C7\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0\r
   gQuarkPlatformTokenSpaceGuid.PcdUserIsPhysicallyPresent|FALSE\r
   gQuarkPlatformTokenSpaceGuid.PcdSpiFlashDeviceSize|0\r
 \r
+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)\r
+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0xc0, 0x20, 0xaf, 0x62, 0x16, 0x70, 0x4a, 0x42, 0x9b, 0xf8, 0x9c, 0xcc, 0x86, 0x58, 0x40, 0x90}\r
+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0x59, 0x3A, 0xD8, 0x14, 0x10, 0xA8, 0x56, 0x45, 0x81, 0x92, 0x1C, 0x0A, 0x59, 0x3C, 0x06, 0x5C}\r
+!endif\r
+\r
 !if $(MEASURED_BOOT_ENABLE)\r
   #\r
   # TPM1.2      { 0x8b01e5b6, 0x4f19, 0x46e8, { 0xab, 0x93, 0x1c, 0x53, 0x67, 0x1b, 0x90, 0xcc } }\r
     !endif\r
   }\r
 \r
+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)\r
+  # FMP image decriptor\r
+  QuarkPlatformPkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf\r
+!endif\r
+\r
   #\r
   # PEI Core\r
   #\r
   #\r
   # Recovery\r
   #\r
+!if $(RECOVERY_ENABLE)\r
   QuarkSocPkg/QuarkSouthCluster/Usb/Common/Pei/UsbPei.inf\r
   MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf\r
   QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Pei/OhciPei.inf\r
   MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf\r
   FatPkg/FatPei/FatPei.inf\r
   MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf\r
+  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf {\r
+    <LibraryClasses>\r
+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf\r
+  }\r
+!endif\r
 \r
 [Components.IA32]\r
   #\r
       NULL|MdeModulePkg/Library/VarCheckPcdLib/VarCheckPcdLib.inf\r
   }\r
 \r
-  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf {\r
-    <LibraryClasses>\r
-      GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf\r
-      CapsuleLib|IntelFrameworkModulePkg/Library/DxeCapsuleLib/DxeCapsuleLib.inf\r
-  }\r
+  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
   MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf\r
   MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf\r
   PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf\r
     <LibraryClasses>\r
       UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf\r
       PlatformBootManagerLib|QuarkPlatformPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf\r
+!if $(CAPSULE_ENABLE)\r
+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf\r
+!else\r
+      FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf\r
+!endif\r
   }\r
   MdeModulePkg/Application/UiApp/UiApp.inf {\r
     <LibraryClasses>\r
       gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000\r
   }\r
 \r
+!if $(CAPSULE_ENABLE)\r
+  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf\r
+\r
+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf {\r
+    <LibraryClasses>\r
+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf\r
+  }\r
+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf {\r
+    <LibraryClasses>\r
+      FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf\r
+  }\r
+\r
+  MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf {\r
+    <LibraryClasses>\r
+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf\r
+  }\r
+!endif\r
+\r
 [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]\r
   MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096\r
index 9f51eb37479d1c10ab9036c6253669fdd680f028..19533b228153bd3a4a1250877d36f5334fc82e6f 100644 (file)
@@ -317,6 +317,11 @@ APRIORI PEI {
 ##\r
 INF  UefiCpuPkg/SecCore/SecCore.inf\r
 \r
+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)\r
+  # FMP image decriptor\r
+INF RuleOverride = FMP_IMAGE_DESC QuarkPlatformPkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf\r
+!endif\r
+\r
 INF  MdeModulePkg/Core/Pei/PeiMain.inf\r
 \r
 ##\r
@@ -347,12 +352,16 @@ INF  SecurityPkg/Tcg/TrEEConfig/TrEEConfigPei.inf
 INF  SecurityPkg/Tcg/TcgPei/TcgPei.inf\r
 !endif\r
 \r
+!if $(RECOVERY_ENABLE)\r
 FILE FV_IMAGE = 1E9D7604-EF45-46a0-BD8A-71AC78C17AC1 {\r
   SECTION PEI_DEPEX_EXP = {gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBootInRecoveryModePpiGuid}\r
   SECTION GUIDED A31280AD-481E-41B6-95E8-127F4C984779 {    # TIANO COMPRESS GUID\r
     SECTION FV_IMAGE = FVRECOVERY_COMPONENTS\r
   }\r
 }\r
+!endif\r
+\r
+!if $(RECOVERY_ENABLE)\r
 \r
 ################################################################################\r
 #\r
@@ -390,6 +399,9 @@ INF  MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf
 INF  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf\r
 INF  FatPkg/FatPei/FatPei.inf\r
 INF  MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf\r
+INF  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf\r
+\r
+!endif\r
 \r
 ################################################################################\r
 #\r
@@ -579,6 +591,25 @@ INF  SecurityPkg/Tcg/TcgDxe/TcgDxe.inf
 INF  RuleOverride = DRIVER_ACPITABLE SecurityPkg/Tcg/TcgSmm/TcgSmm.inf\r
 !endif\r
 \r
+!if $(CAPSULE_ENABLE)\r
+INF  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf\r
+INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf\r
+!endif\r
+\r
+!if $(RECOVERY_ENABLE)\r
+FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiRsa2048Sha256TestPublicKeyFileGuid) {\r
+     SECTION RAW = BaseTools/Source/Python/Rsa2048Sha256Sign/TestSigningPublicKey.bin\r
+     SECTION UI = "Rsa2048Sha256TestSigningPublicKey"\r
+     }\r
+!endif\r
+\r
+!if $(CAPSULE_ENABLE)\r
+FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiPkcs7TestPublicKeyFileGuid) {\r
+     SECTION RAW = BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer\r
+     SECTION UI = "Pkcs7TestRoot"\r
+     }\r
+!endif\r
+\r
 ################################################################################\r
 #\r
 # FV Section\r
@@ -650,6 +681,102 @@ INF  RuleOverride = TIANOCOMPRESSED ShellPkg/Application/Shell/Shell.inf
 INF  RuleOverride = TIANOCOMPRESSED PerformancePkg/Dp_App/Dp.inf\r
 !endif\r
 \r
+!if $(CAPSULE_ENABLE) || $(RECOVERY_ENABLE)\r
+\r
+[FV.CapsuleDispatchFv]\r
+FvAlignment        = 16\r
+ERASE_POLARITY     = 1\r
+MEMORY_MAPPED      = TRUE\r
+STICKY_WRITE       = TRUE\r
+LOCK_CAP           = TRUE\r
+LOCK_STATUS        = TRUE\r
+WRITE_DISABLED_CAP = TRUE\r
+WRITE_ENABLED_CAP  = TRUE\r
+WRITE_STATUS       = TRUE\r
+WRITE_LOCK_CAP     = TRUE\r
+WRITE_LOCK_STATUS  = TRUE\r
+READ_DISABLED_CAP  = TRUE\r
+READ_ENABLED_CAP   = TRUE\r
+READ_STATUS        = TRUE\r
+READ_LOCK_CAP      = TRUE\r
+READ_LOCK_STATUS   = TRUE\r
+\r
+!if $(CAPSULE_ENABLE)\r
+INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf\r
+!endif\r
+\r
+[FV.SystemFirmwareUpdateCargo]\r
+FvAlignment        = 16\r
+ERASE_POLARITY     = 1\r
+MEMORY_MAPPED      = TRUE\r
+STICKY_WRITE       = TRUE\r
+LOCK_CAP           = TRUE\r
+LOCK_STATUS        = TRUE\r
+WRITE_DISABLED_CAP = TRUE\r
+WRITE_ENABLED_CAP  = TRUE\r
+WRITE_STATUS       = TRUE\r
+WRITE_LOCK_CAP     = TRUE\r
+WRITE_LOCK_STATUS  = TRUE\r
+READ_DISABLED_CAP  = TRUE\r
+READ_ENABLED_CAP   = TRUE\r
+READ_STATUS        = TRUE\r
+READ_LOCK_CAP      = TRUE\r
+READ_LOCK_STATUS   = TRUE\r
+\r
+FILE RAW = 14D83A59-A810-4556-8192-1C0A593C065C { # PcdEdkiiSystemFirmwareFileGuid\r
+    FD = Quark\r
+  }\r
+\r
+FILE RAW = ce57b167-b0e4-41e8-a897-5f4feb781d40 { # gEdkiiSystemFmpCapsuleDriverFvFileGuid\r
+    FV = CapsuleDispatchFv\r
+  }\r
+\r
+FILE RAW = 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsuleConfigFileGuid\r
+    QuarkPlatformPkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini\r
+  }\r
+\r
+!endif\r
+\r
+!if $(CAPSULE_ENABLE)\r
+[FmpPayload.FmpPayloadSystemFirmwarePkcs7]\r
+IMAGE_HEADER_INIT_VERSION = 0x02\r
+IMAGE_TYPE_ID             = 62af20c0-7016-424a-9bf8-9ccc86584090 # PcdSystemFmpCapsuleImageTypeIdGuid\r
+IMAGE_INDEX               = 0x1\r
+HARDWARE_INSTANCE         = 0x0\r
+MONOTONIC_COUNT           = 0x2\r
+CERTIFICATE_GUID          = 4AAFD29D-68DF-49EE-8AA9-347D375665A7 # PKCS7\r
+\r
+FV = SystemFirmwareUpdateCargo\r
+\r
+[Capsule.QuarkFirmwareUpdateCapsuleFmpPkcs7]\r
+CAPSULE_GUID                = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid\r
+CAPSULE_FLAGS               = PersistAcrossReset,InitiateReset\r
+CAPSULE_HEADER_SIZE         = 0x20\r
+CAPSULE_HEADER_INIT_VERSION = 0x1\r
+\r
+FMP_PAYLOAD = FmpPayloadSystemFirmwarePkcs7\r
+!endif\r
+\r
+!if $(RECOVERY_ENABLE)\r
+[FmpPayload.FmpPayloadSystemFirmwareRsa2048]\r
+IMAGE_HEADER_INIT_VERSION = 0x02\r
+IMAGE_TYPE_ID             = 62af20c0-7016-424a-9bf8-9ccc86584090 # PcdSystemFmpCapsuleImageTypeIdGuid\r
+IMAGE_INDEX               = 0x1\r
+HARDWARE_INSTANCE         = 0x0\r
+MONOTONIC_COUNT           = 0x2\r
+CERTIFICATE_GUID          = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256\r
+\r
+FV = SystemFirmwareUpdateCargo\r
+\r
+[Capsule.QuarkRec]\r
+CAPSULE_GUID                = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid\r
+CAPSULE_FLAGS               = PersistAcrossReset,InitiateReset\r
+CAPSULE_HEADER_SIZE         = 0x20\r
+CAPSULE_HEADER_INIT_VERSION = 0x1\r
+\r
+FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048\r
+!endif\r
+\r
 ################################################################################\r
 #\r
 # Rules are use with the [FV] section's module INF type to define\r
@@ -771,3 +898,13 @@ INF  RuleOverride = TIANOCOMPRESSED PerformancePkg/Dp_App/Dp.inf
     RAW ACPI               |.acpi\r
     RAW ASL                |.aml\r
   }\r
+\r
+[Rule.Common.PEIM.FMP_IMAGE_DESC]\r
+  FILE PEIM = $(NAMED_GUID) {\r
+     RAW BIN                  |.acpi\r
+     PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+     PE32      PE32    Align=4K          $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+     UI       STRING="$(MODULE_NAME)" Optional\r
+     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+  }\r
+\r
index 1a4bd30dd331c48fd80cac32a596544113f5b6be..be85e3f19336c4d5e433d92f57ce925f67cd459f 100644 (file)
   AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf\r
 !endif\r
 \r
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf\r
+\r
   #\r
   # CPU\r
   #\r
   MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf\r
   MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf\r
   MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf\r
-  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf {\r
-    <LibraryClasses>\r
-      CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf\r
-  }\r
+  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
   MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf\r
   MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf\r
   PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf\r