Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
jljusten 304606c0b6 OvmfPkg: upgrade the FADT to ACPI 2.0 without functional changes
This conversion cannot be split very well into smaller patches. Comparing
version 1 and version 2 (modulo the header fields):

> --- EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE
> +++ EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE
> @@ -1,14 +1,14 @@
>    EFI_ACPI_DESCRIPTION_HEADER             Header;
>    UINT32                                  FirmwareCtrl;
>    UINT32                                  Dsdt;
> -  UINT8                                   IntModel;
> -  UINT8                                   Reserved1;
> +  UINT8                                   Reserved0;
> +  UINT8                                   PreferredPmProfile;

The INT_MODEL field was present in ACPI 1.0, but eliminated in 2.0.
According to the spec, "platforms should set this field to zero but field
values of one are also allowed to maintain compatibility with ACPI 1.0".
We're setting it to zero.

About Preferred_PM_Profile (taking the place of an 1.0 reserved field),
the specification says:

  This field is set by the OEM to convey the preferred power management
  profile to OSPM. OSPM can use this field to set default power management
  policy parameters during OS installation.

>From <MdePkg/Include/IndustryStandard/Acpi20.h>:

  #define EFI_ACPI_2_0_PM_PROFILE_UNSPECIFIED         0
  #define EFI_ACPI_2_0_PM_PROFILE_DESKTOP             1
  #define EFI_ACPI_2_0_PM_PROFILE_MOBILE              2
  #define EFI_ACPI_2_0_PM_PROFILE_WORKSTATION         3
  #define EFI_ACPI_2_0_PM_PROFILE_ENTERPRISE_SERVER   4
  #define EFI_ACPI_2_0_PM_PROFILE_SOHO_SERVER         5
  #define EFI_ACPI_2_0_PM_PROFILE_APPLIANCE_PC        6

For a virtual machine, "unspecified" is the best choice.

>    UINT16                                  SciInt;
>    UINT32                                  SmiCmd;
>    UINT8                                   AcpiEnable;
>    UINT8                                   AcpiDisable;
>    UINT8                                   S4BiosReq;
> -  UINT8                                   Reserved2;
> +  UINT8                                   PstateCnt;

We've been already treating this field as PSTATE_CNT. No change in value.

>    UINT32                                  Pm1aEvtBlk;
>    UINT32                                  Pm1bEvtBlk;
>    UINT32                                  Pm1aCntBlk;
> @@ -20,11 +20,11 @@
>    UINT8                                   Pm1EvtLen;
>    UINT8                                   Pm1CntLen;
>    UINT8                                   Pm2CntLen;
> -  UINT8                                   PmTmLen;
> +  UINT8                                   PmTmrLen;

(Field renaming artifact.)

>    UINT8                                   Gpe0BlkLen;
>    UINT8                                   Gpe1BlkLen;
>    UINT8                                   Gpe1Base;
> -  UINT8                                   Reserved3;
> +  UINT8                                   CstCnt;

We've been already treating this field as CST_CNT. No change in value.

>    UINT16                                  PLvl2Lat;
>    UINT16                                  PLvl3Lat;
>    UINT16                                  FlushSize;
> @@ -34,7 +34,19 @@
>    UINT8                                   DayAlrm;
>    UINT8                                   MonAlrm;
>    UINT8                                   Century;
> -  UINT8                                   Reserved4;
> -  UINT8                                   Reserved5;
> -  UINT8                                   Reserved6;
> +  UINT16                                  IaPcBootArch;
> +  UINT8                                   Reserved1;

The first two octets are now merged into a 16-bit short; otherwise we've
been treating those as boot architecture flags already (see SVN rev
13615). No change in value.

>    UINT32                                  Flags;

The fixed feature flags are not modified, only the macro names (expanding
to identical values) are updated to ACPI 2.0.

The following fields are all new in ACPI 2.0:

> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
> +  UINT8                                   ResetValue;

We don't claim support for the reset register yet.

> +  UINT8                                   Reserved2[3];
> +  UINT64                                  XFirmwareCtrl;
> +  UINT64                                  XDsdt;

The 64-bit physical addresses for the FACS and the DSDT are automatically
filled at installation time, see AddTableToList() and DeleteTable() in
"MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c".

> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
> +  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;

We specify the extended addresses for the required and supported PM1a
Event & Control, PM Timer, and GPE0 Register Blocks, and zero the rest, in
accordance with the ACPI 1.0 fields.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14155 6f19259b-4bc3-4df7-8a09-765794883524
2013-03-04 17:37:47 +00:00
AppPkg - For writing sin_port, htons() must be used. 2013-02-08 21:34:26 +00:00
ArmPkg ArmPkg/CompilerIntrinsicsLib: Add missing __aeabi_llsl and __aeabi_llsr for GCC 2013-01-28 11:40:04 +00:00
ArmPlatformPkg ArmPlatformPkg/PL031RealTimeClockLib: Set PL031_{TimeZone,Daylight} UEFI variables as local 2013-01-28 11:59:37 +00:00
BaseTools Roll back the changes for BaseTools 2012-06-25 02:24:12 +00:00
BeagleBoardPkg BeagleBoardPkg/BeagleBoardPkg.dsc: Removing no more valid comment 2013-02-19 22:53:48 +00:00
Conf Adding top-level Conf directory for next generation of EDK II build infrastructure tools. 2007-06-20 19:33:23 +00:00
CryptoPkg 1. Enable the whole X509v3 extension checking. 2012-12-28 01:20:57 +00:00
DuetPkg Add missing braces around initializer. 2012-10-11 02:15:23 +00:00
EdkCompatibilityPkg Save/Restore missing volatile registers (XMM0-5) save/restore in Page Fault handler. 2012-11-28 04:49:48 +00:00
EdkShellBinPkg EdkShellBinPkg: Added ARM Binaries 2012-09-27 15:20:41 +00:00
EdkShellPkg EdkShellPkg: Added new patch to support EFI Shell project revision 61 2012-09-27 15:23:33 +00:00
EmbeddedPkg ARM Packages: Fixed line endings 2013-01-25 11:28:06 +00:00
EmulatorPkg Update to build with 10.8 OS X Frameworks. This is a Mac only change. 2012-12-22 00:47:17 +00:00
FatBinPkg FatBinPkg: Added ARM Binaries 2012-09-27 15:25:52 +00:00
IntelFrameworkModulePkg Refine the code to avoid error report. 2013-02-21 05:54:24 +00:00
IntelFrameworkPkg Add ASSERT() for BitField operations to make sure the input value is valid. 2012-12-25 02:29:46 +00:00
MdeModulePkg Not close gEfiEndOfDxeEventGroupGuid event in ReadyToLock event notify because PI spec doesn't say gEfiEndOfDxeEventGroupGuid must be notified before ReadyToLock event. 2013-03-04 03:36:58 +00:00
MdePkg Fix CpuIdEx.asm to return correct ECX/EDX value. 2013-02-17 06:35:08 +00:00
NetworkPkg Remove the useless goto statements in PXE driver. 2013-02-20 08:20:14 +00:00
Nt32Pkg Change the type of NotifyHandle from EFI_HANDLE to VOID * for SimpleTextInEx protocol. 2012-07-30 03:50:42 +00:00
Omap35xxPkg ARM Packages: Fixed line endings 2013-01-25 11:28:06 +00:00
OptionRomPkg Contributed-under: TianoCore Contribution Agreement 1.0 2013-02-27 22:33:09 +00:00
OvmfPkg OvmfPkg: upgrade the FADT to ACPI 2.0 without functional changes 2013-03-04 17:37:47 +00:00
PcAtChipsetPkg Raise TPL to high to disable CPU interrupt before 8259 legacy base vector is changed, then restore TPL level at last when 8259 initialization is done. 2012-10-31 08:58:27 +00:00
PerformancePkg Fixed build failed. 2012-05-31 08:35:48 +00:00
SecurityPkg Update the DxeImageVerificationLib to support for Authenticode-signed UEFI images with multiple signatures. 2013-02-21 05:00:21 +00:00
ShellBinPkg ShellBinPkg: Added ARM Binaries 2012-09-27 15:28:54 +00:00
ShellPkg ShellPkg : Check pointer before dereferencing 2013-02-22 18:20:55 +00:00
SourceLevelDebugPkg Use ResetSystemLib NULL instance to remove dependency on PcAtChipsetPkg from SourceLevelDebugPKg. 2013-02-04 08:12:45 +00:00
StdLib Otherwise gcc can default to the "sysv_abi" (as opposed to the "ms_abi") calling convention on X64, causing problems like <http://sourceforge.net/mailarchive/message.php?msg_id=30356166>. 2013-02-27 22:15:36 +00:00
StdLibPrivateInternalFiles StdLib: Add internal use only header for interactive I/O. 2012-12-11 21:03:57 +00:00
UefiCpuPkg Fix build issue on DDK3790 tool chain. 2013-02-05 01:35:29 +00:00
UnixPkg UnixPkg: Mark as deprecated (replaced by EmulatorPkg) 2012-10-05 07:05:54 +00:00
BuildNotes2.txt Update EDKII BuildNotes to say the default tool chain tag is VS2008 instead of VS2005 2011-12-14 06:15:48 +00:00
edksetup.bat Added VS2010 support in edksetup script. 2012-04-10 07:45:35 +00:00
edksetup.sh Correct copyright year 2011-02-16 12:21:31 +00:00