]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add PcdDxeIplSupportUefiDecompress usage into DxeIpl to save space
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 27 Apr 2009 18:26:15 +0000 (18:26 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 27 Apr 2009 18:26:15 +0000 (18:26 +0000)
if UEFI decompression is not needed to find the DXE Core.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8190 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
MdeModulePkg/Core/DxeIplPeim/DxeLoad.c

index 7b8bffcd8c799b05d4c70398eabfa64e7606a1db..6e2eab8a04a279611bd237142535df0b009dd7d0 100644 (file)
@@ -91,6 +91,9 @@
 [FeaturePcd.IA32]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode\r
 \r
+[FeaturePcd.common]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress\r
+\r
 [FixedPcd.common]\r
   gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValuePeiHandoffToDxe\r
 \r
index fc485b9d24c37767411c46b7431ed430628ff755..e756f0ba584d6322ea0bd6d3ea6f1316a761c1f0 100644 (file)
@@ -586,58 +586,62 @@ Decompress (
   //\r
   switch (CompressionSection->CompressionType) {\r
   case EFI_STANDARD_COMPRESSION:\r
-    //\r
-    // Load EFI standard compression.\r
-    // For compressed data, decompress them to destination buffer.\r
-    //\r
-    Status = UefiDecompressGetInfo (\r
-               (UINT8 *) ((EFI_COMPRESSION_SECTION *) Section + 1),\r
-               (UINT32) SectionLength - sizeof (EFI_COMPRESSION_SECTION),\r
-               (UINT32 *) &DstBufferSize,\r
-               &ScratchBufferSize\r
-               );\r
-    if (EFI_ERROR (Status)) {\r
+    if (FeaturePcdGet(PcdDxeIplSupportUefiDecompress)) {\r
       //\r
-      // GetInfo failed\r
+      // Load EFI standard compression.\r
+      // For compressed data, decompress them to destination buffer.\r
       //\r
-      DEBUG ((DEBUG_ERROR, "Decompress GetInfo Failed - %r\n", Status));\r
-      return EFI_NOT_FOUND;\r
-    }\r
-    //\r
-    // Allocate scratch buffer\r
-    //\r
-    ScratchBuffer = AllocatePages (EFI_SIZE_TO_PAGES (ScratchBufferSize));\r
-    if (ScratchBuffer == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-    //\r
-    // Allocate destination buffer, extra one page for adjustment \r
-    //\r
-    DstBuffer = AllocatePages (EFI_SIZE_TO_PAGES (DstBufferSize) + 1);\r
-    if (DstBuffer == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-    //\r
-    // DstBuffer still is one section. Adjust DstBuffer offset, skip EFI section header\r
-    // to make section data at page alignment.\r
-    //\r
-    DstBuffer = DstBuffer + EFI_PAGE_SIZE - sizeof (EFI_COMMON_SECTION_HEADER);\r
-    //\r
-    // Call decompress function\r
-    //\r
-    Status = UefiDecompress (\r
-                (CHAR8 *) ((EFI_COMPRESSION_SECTION *) Section + 1),\r
-                DstBuffer,\r
-                ScratchBuffer\r
-                );\r
-    if (EFI_ERROR (Status)) {\r
+      Status = UefiDecompressGetInfo (\r
+                 (UINT8 *) ((EFI_COMPRESSION_SECTION *) Section + 1),\r
+                 (UINT32) SectionLength - sizeof (EFI_COMPRESSION_SECTION),\r
+                 (UINT32 *) &DstBufferSize,\r
+                 &ScratchBufferSize\r
+                 );\r
+      if (EFI_ERROR (Status)) {\r
+        //\r
+        // GetInfo failed\r
+        //\r
+        DEBUG ((DEBUG_ERROR, "Decompress GetInfo Failed - %r\n", Status));\r
+        return EFI_NOT_FOUND;\r
+      }\r
+      //\r
+      // Allocate scratch buffer\r
+      //\r
+      ScratchBuffer = AllocatePages (EFI_SIZE_TO_PAGES (ScratchBufferSize));\r
+      if (ScratchBuffer == NULL) {\r
+        return EFI_OUT_OF_RESOURCES;\r
+      }\r
+      //\r
+      // Allocate destination buffer, extra one page for adjustment \r
+      //\r
+      DstBuffer = AllocatePages (EFI_SIZE_TO_PAGES (DstBufferSize) + 1);\r
+      if (DstBuffer == NULL) {\r
+        return EFI_OUT_OF_RESOURCES;\r
+      }\r
+      //\r
+      // DstBuffer still is one section. Adjust DstBuffer offset, skip EFI section header\r
+      // to make section data at page alignment.\r
       //\r
-      // Decompress failed\r
+      DstBuffer = DstBuffer + EFI_PAGE_SIZE - sizeof (EFI_COMMON_SECTION_HEADER);\r
       //\r
-      DEBUG ((DEBUG_ERROR, "Decompress Failed - %r\n", Status));\r
+      // Call decompress function\r
+      //\r
+      Status = UefiDecompress (\r
+                  (CHAR8 *) ((EFI_COMPRESSION_SECTION *) Section + 1),\r
+                  DstBuffer,\r
+                  ScratchBuffer\r
+                  );\r
+      if (EFI_ERROR (Status)) {\r
+        //\r
+        // Decompress failed\r
+        //\r
+        DEBUG ((DEBUG_ERROR, "Decompress Failed - %r\n", Status));\r
+        return EFI_NOT_FOUND;\r
+      }\r
+      break;\r
+    } else {\r
       return EFI_NOT_FOUND;\r
     }\r
-    break;\r
 \r
   case EFI_NOT_COMPRESSED:\r
     //\r