PeiFspPolicyInitLib.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. /** @file
  2. Instance of Fsp Policy Initialization Library.
  3. Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <PeiFspPolicyInitLib.h>
  7. #include <Library/SpiLib.h>
  8. VOID
  9. EFIAPI
  10. FspPolicyInitPreMem(
  11. IN FSPM_UPD *FspmUpdDataPtr
  12. );
  13. VOID *
  14. EFIAPI
  15. SiliconPolicyInitPreMem(
  16. IN OUT VOID *FspmUpd
  17. )
  18. {
  19. FspPolicyInitPreMem((FSPM_UPD *)FspmUpd);
  20. return FspmUpd;
  21. }
  22. RETURN_STATUS
  23. EFIAPI
  24. SiliconPolicyDonePreMem(
  25. IN VOID *FspmUpd
  26. )
  27. {
  28. EFI_STATUS Status;
  29. Status = SpiServiceInit();
  30. ASSERT_EFI_ERROR(Status);
  31. return RETURN_SUCCESS;
  32. }
  33. /**
  34. Performs FSP PEI Policy Pre-memory initialization.
  35. @param[in] FspmUpdDataPtr Pointer to FSPM UPD data.
  36. **/
  37. VOID
  38. EFIAPI
  39. FspPolicyInitPreMem (
  40. IN FSPM_UPD *FspmUpdDataPtr
  41. )
  42. {
  43. EFI_STATUS Status;
  44. //
  45. // SI Pei Fsp Policy Initialization
  46. //
  47. Status = PeiFspSiPolicyInitPreMem (FspmUpdDataPtr);
  48. if (EFI_ERROR (Status)) {
  49. DEBUG ((DEBUG_ERROR, "ERROR - SI Pei Fsp Policy in Pre-Memory Initialization fail, Status = %r\n", Status));
  50. }
  51. //
  52. // PCH Pei Fsp Policy Initialization
  53. //
  54. Status = PeiFspPchPolicyInitPreMem (FspmUpdDataPtr);
  55. if (EFI_ERROR (Status)) {
  56. DEBUG ((DEBUG_ERROR, "ERROR - PCH Pei Fsp Policy in Pre-Memory Initialization fail, Status = %r\n", Status));
  57. }
  58. //
  59. // Cpu Pei Fsp Policy Initialization
  60. //
  61. Status = PeiFspCpuPolicyInitPreMem (FspmUpdDataPtr);
  62. if (EFI_ERROR (Status)) {
  63. DEBUG ((DEBUG_ERROR, "ERROR - CPU Pei Fsp Policy in Pre-Memory Initialization fail, Status = %r\n", Status));
  64. }
  65. //
  66. // Security Pei Fsp Policy Initialization
  67. //
  68. Status = PeiFspSecurityPolicyInitPreMem (FspmUpdDataPtr);
  69. if (EFI_ERROR (Status)) {
  70. DEBUG ((DEBUG_ERROR, "ERROR - Security Pei Fsp Policy in Pre-Memory Initialization fail, Status = %r\n", Status));
  71. }
  72. //
  73. // ME Pei Fsp Policy Initialization
  74. //
  75. Status = PeiFspMePolicyInitPreMem (FspmUpdDataPtr);
  76. if (EFI_ERROR (Status)) {
  77. DEBUG ((DEBUG_ERROR, "ERROR - ME Pei Fsp Policy in Pre-Memory Initialization fail, Status = %r\n", Status));
  78. }
  79. //
  80. // SystemAgent Pei Fsp Policy Initialization
  81. //
  82. Status = PeiFspSaPolicyInitPreMem (FspmUpdDataPtr);
  83. if (EFI_ERROR (Status)) {
  84. DEBUG ((DEBUG_ERROR, "ERROR - SystemAgent Pei Fsp Policy in Pre-Memory Initialization fail, Status = %r\n", Status));
  85. }
  86. //
  87. // Other Upd Initialization
  88. //
  89. Status = PeiFspMiscUpdInitPreMem (FspmUpdDataPtr);
  90. }
  91. /**
  92. Performs FSP PEI Policy initialization.
  93. @param[in][out] FspsUpd Pointer UPD data region
  94. **/
  95. VOID
  96. EFIAPI
  97. FspPolicyInit (
  98. IN OUT FSPS_UPD *FspsUpd
  99. )
  100. {
  101. EFI_STATUS Status;
  102. //
  103. // SI Pei Fsp Policy Initialization
  104. //
  105. Status = PeiFspSiPolicyInit (FspsUpd);
  106. if (EFI_ERROR (Status)) {
  107. DEBUG ((DEBUG_ERROR, "ERROR - SI Pei Fsp Policy iInitialization fail, Status = %r\n", Status));
  108. }
  109. //
  110. // PCH Pei Fsp Policy Initialization
  111. //
  112. Status = PeiFspPchPolicyInit (FspsUpd);
  113. if (EFI_ERROR (Status)) {
  114. DEBUG ((DEBUG_ERROR, "ERROR - PCH Pei Fsp Policy iInitialization fail, Status = %r\n", Status));
  115. }
  116. //
  117. // ME Pei Fsp Policy Initialization
  118. //
  119. Status = PeiFspMePolicyInit (FspsUpd);
  120. if (EFI_ERROR (Status)) {
  121. DEBUG ((DEBUG_ERROR, "ERROR - ME Pei Fsp Policy Initialization fail, Status = %r\n", Status));
  122. }
  123. //
  124. // SystemAgent Pei Fsp Policy Initialization
  125. //
  126. Status = PeiFspSaPolicyInit (FspsUpd);
  127. if (EFI_ERROR (Status)) {
  128. DEBUG ((DEBUG_ERROR, "ERROR - SystemAgent Pei Fsp Policy Initialization fail, Status = %r\n", Status));
  129. }
  130. //
  131. // Cpu Pei Fsp Policy Initialization
  132. //
  133. Status = PeiFspCpuPolicyInit (FspsUpd);
  134. if (EFI_ERROR (Status)) {
  135. DEBUG ((DEBUG_ERROR, "ERROR - CPU Pei Fsp Policy Initialization fail, Status = %r\n", Status));
  136. }
  137. //
  138. // Security Pei Fsp Policy Initialization
  139. //
  140. Status = PeiFspSecurityPolicyInit(FspsUpd);
  141. if (EFI_ERROR(Status)) {
  142. DEBUG((DEBUG_ERROR, "ERROR - Security Pei Fsp Policy Initialization fail, Status = %r\n", Status));
  143. }
  144. }
  145. /**
  146. Performs silicon post-mem policy initialization.
  147. The meaning of Policy is defined by silicon code.
  148. It could be the raw data, a handle, a PPI, etc.
  149. The returned data must be used as input data for SiliconPolicyDonePostMem(),
  150. and SiliconPolicyUpdateLib.SiliconPolicyUpdatePostMem().
  151. 1) In FSP path, the input Policy should be FspsUpd.
  152. Value of FspsUpd has been initialized by FSP binary default value.
  153. Only a subset of FspsUpd needs to be updated for different silicon sku.
  154. The return data is same FspsUpd.
  155. 2) In non-FSP path, the input policy could be NULL.
  156. The return data is the initialized policy.
  157. @param[in, out] Policy Pointer to policy.
  158. @return the initialized policy.
  159. **/
  160. VOID *
  161. EFIAPI
  162. SiliconPolicyInitPostMem(
  163. IN OUT VOID *FspsUpd
  164. )
  165. {
  166. FspPolicyInit((FSPS_UPD *)FspsUpd);
  167. return FspsUpd;
  168. }
  169. /*
  170. The silicon post-mem policy is finalized.
  171. Silicon code can do initialization based upon the policy data.
  172. The input Policy must be returned by SiliconPolicyInitPostMem().
  173. @param[in] Policy Pointer to policy.
  174. @retval EFI_SUCCESS The policy is handled consumed by silicon code.
  175. */
  176. EFI_STATUS
  177. EFIAPI
  178. SiliconPolicyDonePostMem(
  179. IN OUT VOID *FspsUpd
  180. )
  181. {
  182. return EFI_SUCCESS;
  183. }