PeiReportFvLib.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /** @file
  2. Source code file for Report Firmware Volume (FV) library
  3. Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <Base.h>
  7. #include <Library/BaseMemoryLib.h>
  8. #include <Library/DebugLib.h>
  9. #include <Library/HobLib.h>
  10. #include <Library/PeiServicesLib.h>
  11. #include <Library/ReportFvLib.h>
  12. #include <Guid/FirmwareFileSystem2.h>
  13. #include <Ppi/FirmwareVolumeInfo.h>
  14. #include <Library/IoLib.h>
  15. #include <Register/X58Ich10.h>
  16. EFI_STATUS
  17. PeiFvInitialization(
  18. VOID
  19. );
  20. VOID
  21. ReportPreMemFv (
  22. VOID
  23. )
  24. {
  25. if (IoBitFieldRead16(ICH10_PMBASE_IO + 4, 10, 12) != 0x5) { // not S3 resume
  26. PeiFvInitialization();
  27. }
  28. DEBUG ((DEBUG_INFO, "Install FlashFvSecurity - 0x%x, 0x%x\n", PcdGet32 (PcdFlashFvSecurityBase), PcdGet32 (PcdFlashFvSecuritySize)));
  29. PeiServicesInstallFvInfo2Ppi (
  30. &(((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFlashFvSecurityBase))->FileSystemGuid),
  31. (VOID *) (UINTN) PcdGet32 (PcdFlashFvSecurityBase),
  32. PcdGet32 (PcdFlashFvSecuritySize),
  33. NULL,
  34. NULL,
  35. 0
  36. );
  37. DEBUG ((DEBUG_INFO, "Install FlashFvAdvanced - 0x%x, 0x%x\n", PcdGet32 (PcdFlashFvAdvancedBase), PcdGet32 (PcdFlashFvAdvancedSize)));
  38. PeiServicesInstallFvInfo2Ppi (
  39. &(((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFlashFvAdvancedBase))->FileSystemGuid),
  40. (VOID *) (UINTN) PcdGet32 (PcdFlashFvAdvancedBase),
  41. PcdGet32 (PcdFlashFvAdvancedSize),
  42. NULL,
  43. NULL,
  44. 0
  45. );
  46. }
  47. VOID
  48. ReportPostMemFv (
  49. VOID
  50. )
  51. {
  52. EFI_STATUS Status;
  53. EFI_BOOT_MODE BootMode;
  54. Status = PeiServicesGetBootMode (&BootMode);
  55. ASSERT_EFI_ERROR (Status);
  56. ///
  57. /// Build HOB for DXE
  58. ///
  59. if (BootMode == BOOT_IN_RECOVERY_MODE) {
  60. ///
  61. /// Prepare the recovery service
  62. ///
  63. } else {
  64. DEBUG ((DEBUG_INFO, "Install FlashFvPostMemory - 0x%x, 0x%x\n", PcdGet32 (PcdFlashFvPostMemoryBase), PcdGet32 (PcdFlashFvPostMemorySize)));
  65. PeiServicesInstallFvInfo2Ppi (
  66. &(((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFlashFvPostMemoryBase))->FileSystemGuid),
  67. (VOID *) (UINTN) PcdGet32 (PcdFlashFvPostMemoryBase),
  68. PcdGet32 (PcdFlashFvPostMemorySize),
  69. NULL,
  70. NULL,
  71. 0
  72. );
  73. DEBUG ((DEBUG_INFO, "Install FlashFvUefiBoot - 0x%x, 0x%x\n", PcdGet32 (PcdFlashFvUefiBootBase), PcdGet32 (PcdFlashFvUefiBootSize)));
  74. PeiServicesInstallFvInfo2Ppi (
  75. &(((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFlashFvUefiBootBase))->FileSystemGuid),
  76. (VOID *) (UINTN) PcdGet32 (PcdFlashFvUefiBootBase),
  77. PcdGet32 (PcdFlashFvUefiBootSize),
  78. NULL,
  79. NULL,
  80. 0
  81. );
  82. DEBUG ((DEBUG_INFO, "Install FlashFvOsBoot - 0x%x, 0x%x\n", PcdGet32 (PcdFlashFvOsBootBase), PcdGet32 (PcdFlashFvOsBootSize)));
  83. PeiServicesInstallFvInfo2Ppi (
  84. &(((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFlashFvOsBootBase))->FileSystemGuid),
  85. (VOID *) (UINTN) PcdGet32 (PcdFlashFvOsBootBase),
  86. PcdGet32 (PcdFlashFvOsBootSize),
  87. NULL,
  88. NULL,
  89. 0
  90. );
  91. }
  92. //
  93. // Report resource HOB for flash FV
  94. //
  95. BuildResourceDescriptorHob (
  96. EFI_RESOURCE_MEMORY_MAPPED_IO,
  97. (EFI_RESOURCE_ATTRIBUTE_PRESENT |
  98. EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
  99. EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE),
  100. (UINTN) PcdGet32 (PcdFlashAreaBaseAddress),
  101. (UINTN) PcdGet32 (PcdFlashAreaSize)
  102. );
  103. BuildMemoryAllocationHob (
  104. (UINTN) PcdGet32 (PcdFlashAreaBaseAddress),
  105. (UINTN) PcdGet32 (PcdFlashAreaSize),
  106. EfiMemoryMappedIO
  107. );
  108. }