]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/AcpiPlatformDxe/Qemu.c
Revert "OvmfPkg/PlatformPei: assign PciSize on both i440fx/q35 branches explicitly"
[mirror_edk2.git] / OvmfPkg / AcpiPlatformDxe / Qemu.c
index 35d667fe3aca6c63edb82a882ec645dffec6f640..f60e00f58af3b72fc153ae497a605ab8e7670cee 100644 (file)
@@ -1,17 +1,11 @@
 /** @file\r
   OVMF ACPI QEMU support\r
 \r
-  Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2008 - 2014, Intel Corporation. All rights reserved.<BR>\r
 \r
-  Copyright (C) 2012, Red Hat, Inc.\r
+  Copyright (C) 2012-2014, Red Hat, Inc.\r
 \r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -21,6 +15,7 @@
 #include <Library/QemuFwCfgLib.h>\r
 #include <Library/DxeServicesTableLib.h>\r
 #include <Library/PcdLib.h>\r
+#include <Library/OrderedCollectionLib.h>\r
 #include <IndustryStandard/Acpi.h>\r
 \r
 BOOLEAN\r
@@ -200,16 +195,20 @@ typedef struct {
 } FIRMWARE_DATA;\r
 \r
 typedef struct {\r
-  UINT8 NameOp;\r
-  UINT8 RootChar;\r
-  UINT8 NameChar[4];\r
-  UINT8 PackageOp;\r
-  UINT8 PkgLength;\r
-  UINT8 NumElements;\r
-  UINT8 DWordPrefix;\r
-  UINT8 Pm1aCntSlpTyp;\r
-  UINT8 Pm1bCntSlpTyp;\r
-  UINT8 Reserved[2];\r
+  UINT8 BytePrefix;\r
+  UINT8 ByteValue;\r
+} AML_BYTE;\r
+\r
+typedef struct {\r
+  UINT8    NameOp;\r
+  UINT8    RootChar;\r
+  UINT8    NameChar[4];\r
+  UINT8    PackageOp;\r
+  UINT8    PkgLength;\r
+  UINT8    NumElements;\r
+  AML_BYTE Pm1aCntSlpTyp;\r
+  AML_BYTE Pm1bCntSlpTyp;\r
+  AML_BYTE Reserved[2];\r
 } SYSTEM_STATE_PACKAGE;\r
 \r
 #pragma pack()\r
@@ -246,7 +245,7 @@ PopulateFwData(
       Desc = &AllDesc[CurDesc];\r
       ExclTop = Desc->BaseAddress + Desc->Length;\r
 \r
-      if (ExclTop <= BASE_4GB) {\r
+      if (ExclTop <= (UINT64) PcdGet32 (PcdOvmfFdBaseAddress)) {\r
         switch (Desc->GcdMemoryType) {\r
           case EfiGcdMemoryTypeNonExistent:\r
             break;\r
@@ -326,12 +325,14 @@ GetSuspendStates (
     '\\',                   // RootChar\r
     { '_', 'S', 'x', '_' }, // NameChar[4]\r
     0x12,                   // PackageOp\r
-    0x07,                   // PkgLength\r
-    0x01,                   // NumElements\r
-    0x0c,                   // DWordPrefix\r
-    0x00,                   // Pm1aCntSlpTyp\r
-    0x00,                   // Pm1bCntSlpTyp -- we don't support it\r
-    { 0x00, 0x00 }          // Reserved\r
+    0x0A,                   // PkgLength\r
+    0x04,                   // NumElements\r
+    { 0x0A, 0x00 },         // Pm1aCntSlpTyp\r
+    { 0x0A, 0x00 },         // Pm1bCntSlpTyp -- we don't support it\r
+    {                       // Reserved[2]\r
+      { 0x0A, 0x00 },\r
+      { 0x0A, 0x00 }\r
+    }\r
   };\r
   RETURN_STATUS                     Status;\r
   FIRMWARE_CONFIG_ITEM              FwCfgItem;\r
@@ -343,13 +344,13 @@ GetSuspendStates (
   //\r
   *SuspendToRamSize = sizeof Template;\r
   CopyMem (SuspendToRam, &Template, sizeof Template);\r
-  SuspendToRam->NameChar[2]   = '3'; // S3\r
-  SuspendToRam->Pm1aCntSlpTyp = 1;   // PIIX4: STR\r
+  SuspendToRam->NameChar[2]             = '3'; // S3\r
+  SuspendToRam->Pm1aCntSlpTyp.ByteValue = 1;   // PIIX4: STR\r
 \r
   *SuspendToDiskSize = sizeof Template;\r
   CopyMem (SuspendToDisk, &Template, sizeof Template);\r
-  SuspendToDisk->NameChar[2]   = '4'; // S4\r
-  SuspendToDisk->Pm1aCntSlpTyp = 2;   // PIIX4: POSCL\r
+  SuspendToDisk->NameChar[2]             = '4'; // S4\r
+  SuspendToDisk->Pm1aCntSlpTyp.ByteValue = 2;   // PIIX4: POSCL\r
 \r
   //\r
   // check for overrides\r
@@ -368,16 +369,20 @@ GetSuspendStates (
   // value to be written to the PM control register's SUS_TYP bits.\r
   //\r
   if (SystemStates[3] & BIT7) {\r
-    SuspendToRam->Pm1aCntSlpTyp = SystemStates[3] & (BIT2 | BIT1 | BIT0);\r
-    DEBUG ((DEBUG_INFO, "ACPI S3 value: %d\n", SuspendToRam->Pm1aCntSlpTyp));\r
+    SuspendToRam->Pm1aCntSlpTyp.ByteValue =\r
+        SystemStates[3] & (BIT2 | BIT1 | BIT0);\r
+    DEBUG ((DEBUG_INFO, "ACPI S3 value: %d\n",\r
+            SuspendToRam->Pm1aCntSlpTyp.ByteValue));\r
   } else {\r
     *SuspendToRamSize = 0;\r
     DEBUG ((DEBUG_INFO, "ACPI S3 disabled\n"));\r
   }\r
 \r
   if (SystemStates[4] & BIT7) {\r
-    SuspendToDisk->Pm1aCntSlpTyp = SystemStates[4] & (BIT2 | BIT1 | BIT0);\r
-    DEBUG ((DEBUG_INFO, "ACPI S4 value: %d\n", SuspendToDisk->Pm1aCntSlpTyp));\r
+    SuspendToDisk->Pm1aCntSlpTyp.ByteValue =\r
+        SystemStates[4] & (BIT2 | BIT1 | BIT0);\r
+    DEBUG ((DEBUG_INFO, "ACPI S4 value: %d\n",\r
+            SuspendToDisk->Pm1aCntSlpTyp.ByteValue));\r
   } else {\r
     *SuspendToDiskSize = 0;\r
     DEBUG ((DEBUG_INFO, "ACPI S4 disabled\n"));\r
@@ -504,4 +509,3 @@ QemuInstallAcpiTable (
            TableKey\r
            );\r
 }\r
-\r