]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c
1. Enable use-cases in PEI using SecurityPPI co-equal to the use-cases in DXE using...
[mirror_edk2.git] / MdeModulePkg / Core / Pei / Dispatcher / Dispatcher.c
index b0e4b6d12aab297cd38333f54fdb00a019737529..f4392b78ddf82466f9472866a8e881c7b63eab8b 100644 (file)
@@ -764,8 +764,14 @@ PeiDispatcher (
               //\r
               // For Fv type file, Produce new FV PPI and FV hob\r
               //\r
-              Status = ProcessFvFile (&Private->Fv[FvCount], PeimFileHandle);\r
-              AuthenticationState = 0;\r
+              Status = ProcessFvFile (Private, &Private->Fv[FvCount], PeimFileHandle);\r
+              if (Status == EFI_SUCCESS) {\r
+                //\r
+                // PEIM_STATE_NOT_DISPATCHED move to PEIM_STATE_DISPATCHED\r
+                //\r
+                Private->Fv[FvCount].PeimState[PeimCount]++;\r
+                Private->PeimDispatchOnThisPass = TRUE;\r
+              }\r
             } else {\r
               //\r
               // For PEIM driver, Load its entry point\r
@@ -777,50 +783,45 @@ PeiDispatcher (
                          &EntryPoint,\r
                          &AuthenticationState\r
                          );\r
-            }\r
-\r
-            if (Status == EFI_SUCCESS) {\r
-              //\r
-              // The PEIM has its dependencies satisfied, and its entry point\r
-              // has been found, so invoke it.\r
-              //\r
-              PERF_START (PeimFileHandle, "PEIM", NULL, 0);\r
-\r
-              ExtendedData.Handle = (EFI_HANDLE)PeimFileHandle;\r
-\r
-              REPORT_STATUS_CODE_WITH_EXTENDED_DATA (\r
-                EFI_PROGRESS_CODE,\r
-                (EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT_BEGIN),\r
-                (VOID *)(&ExtendedData),\r
-                sizeof (ExtendedData)\r
-                );\r
-\r
-              Status = VerifyPeim (Private, CoreFvHandle->FvHandle, PeimFileHandle);\r
-              if (Status != EFI_SECURITY_VIOLATION && (AuthenticationState == 0)) {\r
+              if (Status == EFI_SUCCESS) {\r
                 //\r
-                // PEIM_STATE_NOT_DISPATCHED move to PEIM_STATE_DISPATCHED\r
+                // The PEIM has its dependencies satisfied, and its entry point\r
+                // has been found, so invoke it.\r
                 //\r
-                Private->Fv[FvCount].PeimState[PeimCount]++;\r
+                PERF_START (PeimFileHandle, "PEIM", NULL, 0);\r
 \r
-                if (FvFileInfo.FileType != EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE) {\r
+                ExtendedData.Handle = (EFI_HANDLE)PeimFileHandle;\r
+\r
+                REPORT_STATUS_CODE_WITH_EXTENDED_DATA (\r
+                  EFI_PROGRESS_CODE,\r
+                  (EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT_BEGIN),\r
+                  (VOID *)(&ExtendedData),\r
+                  sizeof (ExtendedData)\r
+                  );\r
+\r
+                Status = VerifyPeim (Private, CoreFvHandle->FvHandle, PeimFileHandle, AuthenticationState);\r
+                if (Status != EFI_SECURITY_VIOLATION) {\r
+                  //\r
+                  // PEIM_STATE_NOT_DISPATCHED move to PEIM_STATE_DISPATCHED\r
+                  //\r
+                  Private->Fv[FvCount].PeimState[PeimCount]++;\r
                   //\r
                   // Call the PEIM entry point for PEIM driver\r
                   //\r
                   PeimEntryPoint = (EFI_PEIM_ENTRY_POINT2)(UINTN)EntryPoint;\r
                   PeimEntryPoint (PeimFileHandle, (const EFI_PEI_SERVICES **) PeiServices);\r
+                  Private->PeimDispatchOnThisPass = TRUE;\r
                 }\r
 \r
-                Private->PeimDispatchOnThisPass = TRUE;\r
-              }\r
-\r
-              REPORT_STATUS_CODE_WITH_EXTENDED_DATA (\r
-                EFI_PROGRESS_CODE,\r
-                (EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT_END),\r
-                (VOID *)(&ExtendedData),\r
-                sizeof (ExtendedData)\r
-                );\r
-              PERF_END (PeimFileHandle, "PEIM", NULL, 0);\r
+                REPORT_STATUS_CODE_WITH_EXTENDED_DATA (\r
+                  EFI_PROGRESS_CODE,\r
+                  (EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT_END),\r
+                  (VOID *)(&ExtendedData),\r
+                  sizeof (ExtendedData)\r
+                  );\r
+                PERF_END (PeimFileHandle, "PEIM", NULL, 0);\r
 \r
+              }\r
             }\r
 \r
             if (Private->SwitchStackSignal) {\r