American Megatrends, Inc.

ACPI

Copyright

Release Notes

© American Megatrends, Inc.


Copyright

American Megatrends, Inc.
5555 Oakbrook Parkway
Suite 200
Norcross, GA 30093 (USA)

Copyright (c) 1999-2014 American Megatrends, Inc. All Rights Reserved.

This publication contains proprietary information, which is protected by copyright. No part of this publication may be reproduced, transcribed, stored in a retrieval system, translated into any language or computer language, or transmitted in any form whatsoever without the prior written consent of the publisher, American Megatrends, Inc.

American Megatrends, Inc. retains the right to update, change, modify this publication at any time, without notice.

For Additional Information

Call American Megatrends BIOS Sales Department at 1-800-828-9264 for additional information.

Limitations of Liability

In no event shall American Megatrends be held liable for any loss, expenses, or damages of any kind whatsoever, whether direct, indirect, incidental, or consequential, arising from the design or use of this product or the support materials provided with the product.

Limited Warranty

No warranties are made, either expressed or implied, with regard to the contents of this work, its merchantability, or fitness for a particular use. American Megatrends assumes no responsibility for errors and omissions or for the uses made of the material contained herein or reader decisions based on such use.

Trademark and Copyright Acknowledgments

All product names used in this publication are for identification purposes only and are trademarks of their respective Companies.


Release Notes - NDA Required

Component Information:
Component Title: ACPI
Component Reference Name: ACPI
Component Type: eModule
Release Date: 2014-07-11
Source Control Label: 4.6.5.0_ACPI_49
Source Control Location: Alaska;$/Alaska/BIN/Modules/ACPI/Template

Dependencies
AMI_BOARD_INFO_PROTOCOL_GUID, if AmiBoardInfo_SUPPORT == 1; if AmiBoardInfo_SUPPORT == 0 - NONE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:

The purposes of ACPI module are:
· Automatically build a minimal set of ACPI tables: MADT, FACS, FACP and FPDT.
· Collect system information that used for dynamic update of DSDT (AMLUPD.ASL) and might get changed, and information needed for creation of MADT.
· Provide an interface for other drivers to add update and delete ACPI tables.
· Provide an interface for other drivers to save S3 boot script, which will be executed on S3 resume.
· Create root ACPI tables (RSDT, XSDT) and RSDT_PTR.
· Create a System Configuration Table entry with ACPI2.0 GUID. (Refer to the ACPI Specification for additional information and GUID value).
NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

Filename | Description
ACPI Board files | ProjectRoot\Board\EM\ACPI
ACPI.cif | ACPI Module cif file, containing all ACPI submodules and files
ACPI.chm | ACPI chm file, containing release notes and information about eModule
ACPIBSP.CIF | ACPI Board subcomponent cif file, containing all ACPI board-specific submodules and files
ACPI.sdl | ACPI Module SDL tokens file (modified by VeB)
ACPI.mak | ACPI Module MAK file (builds Module and all it's components)
ACPI.dxs | ACPI Driver dependency file
ACPI.sd | ACPI Driver Setup Screens definition file
ACPI.uni | ACPI Driver Setup Strings definition file (in UNICODE format)
OEM_ACPI.C | OEM Specific ACPI functions implementation.
OEM_ACPI.h | OEM Specific ACPI definitions
ASL Board files | ProjectRoot\Board\EM\ACPI
ASLBSP.CIF | Cif file containing the list of all board specific asl files
OEMRMISC.asl | OEM Specific ASL Resources definitions
OEMDSDT.asl | OEM Specific ACPI ASL Objects
ACPI Core files | ProjectRoot\Core\EM\ACPI
ACPICORE.CIF | Cif file containing the list of all ACPI core files and subcomponents
AcpiCore.c | Main ACPI Driver File. It has ACPI Driver entry point, ACPISupport Protocol and ACPITable Protocol.
AcpiCore.h | Main ACPI Driver Specific Definitions
mptable.c | MP table builder functions implementation
MpPciIrq.asm | Includes MPS related tables, generated by AMISDL
mptable.h | Header file for MP table builder
AcpiS3.h | Definitions for S3 Save\Resume Support. (left in AcpiCore component for backward computability)
AcpiSdtPrivate.h | DACPI SDT protocol Private data Definitions.
Aml.c | Generic AML Parsing functions.
AmlChild.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlNamespace.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlOption.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlString.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AcpiSdt.c | ACPI SDT protocol Implementation.
Generic ASL files | ProjectRoot\Core\EM\ACPI
ASLCORE.CIF | Cif file containing the list of all core asl files
Uart4ir.asl | Generic ASL Implementation of COM4 Device Object with IR support
Uart4.asl | Generic ASL Implementation of COM4 Device Object
Uart3ir.asl | Generic ASL Implementation of COM3 Device Object with IR support
Uart3.asl | Generic ASL Implementation of COM3 Device Object
Uart2ir.asl | Generic ASL Implementation of COM2 Device Object with IR support
Uart2.asl | Generic ASL Implementation of COM2 Device Object
Uart1ir.asl | Generic ASL Implementation of COM1 Device Object with IR support
Uart1.asl | Generic ASL Implementation of COM1 Device Object
SMB_EC.asl | Generic ACPI Embedded controller SMBus interface methods
PS2KB.asl | Generic ASL Implementation of PS2 Keyboard Device Object
PS2MS.asl | Generic ASL Implementation of PS2 Mouse Device Object
MIDI.asl | Generic ASL Implementation of MPU 401 Device Object
MAX1617R.asl | ASL interface to MAX1617 thermal sensor over SMBus. Remote sensor
MAX1617L.asl | ASL interface to MAX1617 thermal sensor over SMBus. Local sensor
MathCo.asl | Generic ASL Implementation of Math Coprocessor Device Object
IRDA.asl | Generic ASL Implementation of IR Data Access Device
Lpte.asl | Generic ASL Implementation of Parallel port LPT or ECP(Extended mode) Device Object
LM75.asl | ASL interface to LM75 thermal sensor over SMBus
GameMpu.asl | ASL Implementation of Combined Game & Midi Logical Device
game.asl | Generic ASL Implementation of Game Port Device
FDC.asl | Generic ASL Implementation of Floppy Disk Controller Device Object
CIR.asl | Generic ASL Implementation of Standalone InfraRed Device Object
RMISK.asl | Generic ASL Implementation of Legacy ISA Resource Template
AMLUPD.asl | Generic ASL Name Objects used to dynamically update System's DSDT
ASLLIB.asl | AML Libraty - Globaly used ASL Methods and Objects
OSCM.asl | Generic Implementation of _OSC ASL Method
rmisc.asl | Generic ASL Implementation of SoundBlaster compatable audio Device
PCIEACCESS.asl | Generic ASL Implementation of PCIe access routines
PCIEHP.asl | Generic ASL Implementation OF PCIe Hotplug support
RbRes.asl | Generic method to report root bridge resources.
TimeAndAlarm.asl | Sample implementation of Acpi Time and Alarm device. Porting may be needed.
Time and Alarm related | ProjectRoot\Core\EM\ACPI
AtadSmi.c | Smi handler for Acpi Time and Alarm device.
AtadSmi.h | Header file with definitions used by Smi handler for Acpi Time and Alarm device.
AtadSmi.dxs | Dependency file of Smi handler for Acpi Time and Alarm device.
AtadSmi.mak | Make file of Smi handler for Acpi Time and Alarm device.
AtadSmi.sdl | Sdl file of Smi handler for Acpi Time and Alarm device.
S3 Support related | ProjectRoot\Core\EM\S3
S3Support.CIF | S3 Suport subcomponent cif file, containing all S3 related submodules and files
S3Support.sdl | S3 Support related sdl file
S3 Save Section | ProjectRoot\Core\EM\S3
S3Save.CIF | S3 Save subcomponent cif file, containing all files related to BootScript saving
S3Save.sdl | S3 Save related sdl file
S3Save.mak | S3save Sub-Module MAK file (builds Sub-Module and all it's components)
AcpiS3Save.dxs | Dependency file for S3 BootScript Save
AcpiS3Save.c | ACPI S3 Data Save Support for DXE
BootScriptSave.c | Implementation of BootScriptSave Driver
BootScriptPrivate.h | Definitions BootScript Drivers
AcpiPeiS3Func.c | S3 Resume Support at PEI phase
SmmS3Save.dxs | Dependency file for Smm S3 Save
S3 Restore Section | ProjectRoot\Core\EM\S3
S3Restore.CIF | S3 Restore subcomponent cif file, containing all files connected with resuming from S3
S3Restore.sdl | S3 Restore related sdl file
S3Restore.mak | S3 Restore Sub-Module MAK file (builds Sub-Module and all it's components)
S3Restore.dxs | Dependency file for S3 BootScript Restore
AcpiS3Wake.asm | Low level thunk for S3 resume
S3Resume.c | ACPI S3 Resume Support DXE
AcpiPeiS3Func.c | ACPI S3 PEI support functions
AcpiPeiS3Func.h | ACPI S3 PEI support related defenitions
BootScriptExecuter.c | Implementation of BootScriptExecuter Driver
Common S3 Related Section | ProjectRoot\Include
S3Common.CIF | S3Common subcomponent cif file, containing files that are coomon for all S3 related tasks
S3SaveState.h | S3 Save State Protocol defenitions
S3SmmSaveState.h | S3 SMM Save State Protocol defenitions
Global ACPI Headers | ProjectRoot\Include
ACPI.h | Generic ACPI Definitions common for all Specs
ACPI11.h | ACPI Spec version 1.1b Support Definitions
ACPI20.h | ACPI Spec version 2.0 Support Definitions
ACPI30.h | ACPI Spec version 3.0 Support Definitions
ACPIRes.h | ACPI Resource descriptors Definitions used in AML and related functions prototypes
BootScriptCommon.h | Common Boot Script related definitions and prototypes
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-04-21
Visual eBios: RSS.5.73.0244, Dated: 2013-03-19
Compiler Tool(s): WinDDK 7600.16385.1; DDK 3790.1830
New features added in this label:
  1. NONE.
General Bug Fixes:
  1. NONE.
EIP addressed in this label:
  1. EIP 165196. Runtime attribute removed when setting AcpiGlobalVariable..
  2. EIP 175962. Memory type for AcpiGlobalVariable changed to Reserved to prevent OS from restoring it on certainer scenarios.
  3. EIP 161916. 32 bit typecasting issue fixed.
Files changed for EIP fixes:
    AcpiS3Save.c (EIP165196, EIP175962)
    BootScriptSave.c (EIP161916)
Known issues and limitations in this label:
There are changes in a usage of T_ACPI_OEM_TBL_ID and T_ACPI_OEM_ID tokens. They are a string value to be filled into ACPI table headers. If you want use spaces as leading or and trailing symbols you must surround the whole expression in '|'. For example | ABC |. This will result in the generation of a #define ACPI_OEM_ID_MAK ' ABC ' in the file Build\AcpiOemElinks.h (created by Acpi.mak file). All tables generated by the Acpi eModule will have the IDs with the values from the generated file. To see how this works, refer to the AcpiCore.c file and search for the string ACPI_OEM_ID_MAK. Some modules which submit their own ACPI tables may use the old method: CONVERT_TO_STRING(T_ACPI_OEM_ID). If they are using this method, either '|' will be included in their table's ID fields, or a build error will occur because the two additional '|' characters will make the string larger than the TableId size of 6 characters. Contact the owners of the offending modules and ask them to use ACPI_OEM_ID_MAK as it is used in AcpiCore.c.
Remaining Issues:
NONE
Unit Testing:
Installation of different OS was performed to check functionality. New FPDT table was tested by reading with RWEverything. Bug fixes confirmed in corresponding EIPs
Validation Testing:
Tested by BQA during Core validation.
Release History:
Release_48
Release_47
Release_46
Release_45

© American Megatrends Inc.


Function by File Name

AMIBIOS Function Reference

By File Name

The following is a list of the source files.
For a list in alphabetical order, see In Alphabetical Order.
For a list by segment, see By Segment.

  • ACPI.dxs
  • ACPI.mak
  • ACPI.sd
  • AcpiCore.c
  • AcpiCore.h
  • AcpiPeiS3Func.c
  • AcpiS3.h
  • AcpiS3Save.c
  • AcpiS3Save.dxs
  • AcpiS3Wake.asm
  • AcpiSdt.c
  • AcpiSdtPrivate.h
  • Aml.c
  • AmlChild.c
  • AmlNamespace.c
  • AmlOption.c
  • AmlString.c
  • asllib.asl
  • AtadSmi.c
  • AtadSmi.dxs
  • AtadSmi.h
  • AtadSmi.mak
  • BootScriptExecuter.c
  • BootScriptPrivate.h
  • BootScriptSave.c
  • MpPciIrq.asm
  • mptable.c
  • mptable.h
  • OEM_ACPI.C
  • OEM_ACPI.H
  • oemDSDT.asl
  • OEMRMISC.ASL
  • RbRes.asl
  • rmisc.asl
  • S3Restore.mak
  • S3Resume.c
  • S3Resume.dxs
  • S3Save.mak
  • SmmS3Save.dxs
Built on 17:50:25 07/10/14


ACPI.dxs

Description:
Dependency expression file for ACPI Driver.


ACPI.mak

Description:
Make file for the Acpi component


ACPI.sd

Description:
ACPI Form Template


AcpiCore.c

Description:
Main ACPI Driver File. It has ACPI Driver entry point,
ACPISupport Protocol and ACPITable Protocol.

The following functions are used in the file: AcpiCore.c.

Function | Description
AcpiInstallAcpiTable | Installs an ACPI table into the RSDT/XSDT.
AcpiNewCoreEntry | This function is ACPI driver entry point
AcpiSupportGetAcpiTable | This function returns ACPI table
AcpiSupportPublishTables | Causes one or more versions of the ACPI tables to be published in the EFI system configuration tables.
AcpiSupportSetAcpiTable | This function allows to add, remove of modify ACPI table
AcpiUninstallAcpiTable | Function allows a caller to remove an ACPI table.
AddIsoFromTbl | Allocates memory for and builds ISO entry for MADT table, based on INTERRUPT SOURCE OVERRIDE info from predifined table
BuildFacpiAll | This function allocates memory for and fills FACP table v 1.1+ with predefined values from SDL tokens
BuildFacs | Allocates ACPI NVS memory and builds FACS table from values, defined by SDL tokens
BuildFIDT | This function allocates memory for and fills FIDT struscure.
BuildFPDT | This function allocates memory for and fills FPDT struscure. It also creates Variable with the addres od S3 and Normal Boot performance srtuctures to be filled later.
BuildIoapicIosapic | This function will probe IndReg and DataReg of discovered IOxAPIC base address and allocate memory for and builds Ioapic/Iosapic entry for MADT table
BuildIoapicManualy | Allocates memory for and builds LAPIC entry for MADT table filled with Dummy information
BuildLapic | Allocates memory for and builds LAPIC entry for MADT table
BuildLapicNmiFromProtocol | Build Local Apic NMI Entries from Protocol.
BuildLapicsFromHob | Build Local Apic Entries from HOB.
BuildLapicsFromProtocol | Build Local Apic Entries from Protocol.
BuildLocalApicNmi | Allocates memory for and builds local APIC or local x2APIC NMI entry
BuildLsapic | Allocates memory for and builds LSAPIC entry for MADT table
BuildLx2Apic | Allocates memory for and builds Local x2APIC entry for MADT table
BuildMadtAll | Creates MADT entries, stores them as T_ITEM_LIST, calculates space needed, allocates memory and builds MADT table from entries
CollectAmlUpdInfo | This function will be called when ReadyToBoot event will be signaled and will update IO devices status and then update AML binary. It allso publish all ACPI tables.
DispatchSdtNotify | Checks if Notify function(s) present dispatches it.
FillAcpiStr | Copys table from position pointed by FromPtr to a position pointed by ToPtr (which is in EfiACPIReclaimMemory) and fills RSDT and XSDT pointers with ToPtr value
FindAcpiTblByHandle | Finds ACPI table by Handle and returns its entry number in gAcpiData structure
GetAcpiTable2 | Returns a requested ACPI table. The GetAcpiTable() function returns a pointer to a buffer containing the ACPI table associated with the Index that was input. The following structures are not considered elements in the list of ACPI tables: - Root System Description Pointer (RSD_PTR) - Root System Description Table (RSDT) - Extended System Description Table (XSDT) Version is updated with a bit map containing all the versions of ACPI of which the table is a member.
GetBtTable | Founds ACPI Table with defined Signature (Sig) and Version in gAcpiData structure.
GetDsdtFv | This function finds DSDT table in firmvare volume
LockLegacyRes | This function Hides Legacy Resources from OS by destroing _PRS method in each Legacy Device ASL Object in DSDT
MemCopy | This routine copies data from source to destination.
PrepareHdr1 | This function creates ACPI V1 table header with specified signature
PrepareHdr20 | This function creates ACPI table v 2.0+ header with specified signature
PublishTbl | Creates or rewrites RSDT_PTR structure and copys tables, stored in gAcpiData structure in allocated EfiACPIReclaimMemory.
UpdateAml | This function updates AML objects with values provided in ACPI_AML_UPD_INFO structure
UpdateFacp | This function Updates FACP with the new values for DSDT and Facs pointers


AcpiInstallAcpiTable in the AcpiCore.c

Function : AcpiInstallAcpiTable

File: AcpiCore.c
Description:
Installs an ACPI table into the RSDT/XSDT.
Input:
IN EFI_ACPI_TABLE_PROTOCOL *This - A pointer to a EFI_ACPI_TABLE_PROTOCOL.
IN VOID *AcpiTableBuffer - A pointer to a buffer containing the ACPI table to be installed.
IN UINTN AcpiTableBufferSize - Specifies the size, in bytes, of the AcpiTableBuffer buffer.
OUT UINTN *TableKey - Returns a key to refer to the ACPI table.
Output:
EFI_SUCCESS - Function executed successfully
EFI_INVALID_PARAMETER - Either AcpiTableBuffer is NULL, TableKey is NULL, or
AcpiTableBufferSize and the size field embedded in the ACPI
table pointed to by AcpiTableBuffer are not in sync
EFI_OUT_OF_RESOURCES - Insufficient resources exist to complete the request.


AcpiNewCoreEntry in the AcpiCore.c

Function : AcpiNewCoreEntry

File: AcpiCore.c
Description:
This function is ACPI driver entry point
Input:
IN EFI_HANDLE ImageHandle - Image handle
IN EFI_SYSTEM_TABLE *SystemTable - pointer to system table
Output:
EFI_SUCCESS - Function executed successfully, ACPI_SUPPORT_PROTOCOL installed
EFI_ABORTED - Dsdt table not found or table publishing failed
EFI_ALREADY_STARTED - driver already started
EFI_OUT_OF_RESOURCES - not enough memory to perform operation
Notes:
This function also creates ReadyToBoot event to update AML objects before booting


AcpiSupportGetAcpiTable in the AcpiCore.c

Function : AcpiSupportGetAcpiTable

File: AcpiCore.c
Description:
This function returns ACPI table
Input:
IN EFI_ACPI_SUPPORT_PROTOCOL *This - pointer to EFI_ACPI_SUPPORT_PROTOCOL instance
IN INTN Index - Index of ACPI table to return
OUT VOID **Table - Pointer where to place found table
OUT EFI_ACPI_TABLE_VERSION Version - requested ACPI table version
OUT UINTN *Handle - requested ACPI table handle
Output:
EFI_SUCCESS - Function executed successfully
EFI_OUT_OF_RESOURCES - not enough memory to allocate table
EFI_INVALID_PARAMETER - invalid EFI_ACPI_SUPPORT_PROTOCOL pointer
EFI_NOT_FOUND - requested ACPI table not found


AcpiSupportPublishTables in the AcpiCore.c

Function : AcpiSupportPublishTables

File: AcpiCore.c
Description:
Causes one or more versions of the ACPI tables to be published in
the EFI system configuration tables.
Input:
IN EFI_ACPI_SUPPORT_PROTOCOL *This - pointer to EFI_ACPI_SUPPORT_PROTOCOL instance
IN EFI_ACPI_TABLE_VERSION Version - ACPI table version
Output:
EFI_SUCCESS - Function executed successfully
EFI_ABORTED - invalid EFI_ACPI_SUPPORT_PROTOCOL pointer or
 an error occurred and the function could not complete successfully.
EFI_UNSUPPORTED - passed ACPI table version invalid


AcpiSupportSetAcpiTable in the AcpiCore.c

Function : AcpiSupportSetAcpiTable

File: AcpiCore.c
Description:
This function allows to add, remove of modify ACPI table
Input:
IN EFI_ACPI_SUPPORT_PROTOCOL *This - pointer to EFI_ACPI_SUPPORT_PROTOCOL instance
IN OPTIONAL VOID *Table - Pointer to update data. If NULL, corresponded table
             should be removed
IN BOOLEAN Checksum - if TRUE, function will recalculate checksum before adding table
IN EFI_ACPI_TABLE_VERSION Version - requested ACPI table version
IN OUT UINTN *Handle - requested ACPI table handle
Output:
EFI_SUCCESS - Function executed successfully
EFI_OUT_OF_RESOURCES - not enough memory to perform operation
EFI_INVALID_PARAMETER - invalid EFI_ACPI_SUPPORT_PROTOCOL pointer or ACPI table
           content
EFI_ABORTED - provided ACPI table already present


AcpiUninstallAcpiTable in the AcpiCore.c

Function : AcpiUninstallAcpiTable

File: AcpiCore.c
Description:
Function allows a caller to remove an ACPI table.
Input:
IN EFI_ACPI_TABLE_PROTOCOL *This - A pointer to a EFI_ACPI_TABLE_PROTOCOL.
IN UINTN *TableKey - Specifies the table to uninstall. The key was returned from
InstallAcpiTable().
Output:
EFI_SUCCESS - Function executed successfully
EFI_NOT_FOUND - TableKey does not refer to a valid key for a table entry.
EFI_OUT_OF_RESOURCES - Insufficient resources exist to complete the request.


AddIsoFromTbl in the AcpiCore.c

Function : AddIsoFromTbl

File: AcpiCore.c
Description:
Allocates memory for and builds ISO entry for MADT table, based
on INTERRUPT SOURCE OVERRIDE info from predifined table
Input:
UINTN IsoTblNumb - Number of entry in ISO table for which an entry should
             be build.
Output:
MADT_ENTRY_HEADER * - pointer to the ISO entry header for the MADT table
         if NULL - not enough memory


BuildFacpiAll in the AcpiCore.c

Function : BuildFacpiAll

File: AcpiCore.c
Description:
This function allocates memory for and fills FACP table v 1.1+ with
predefined values from SDL tokens
Input:
IN UINTN TablVer - Version of FACP table
IN OUT **ACPI_HDR TablPtr - Pointer to memory, where the FACP table will resides.
               Filled by this procedure
Output:
EFI_STATUS:
EFI_OUT_OF_RESOURCES - Memory for the table could not be allocated
EFI_SUCCESS - Table was successfully build


BuildFacs in the AcpiCore.c

Function : BuildFacs

File: AcpiCore.c
Description:
Allocates ACPI NVS memory and builds FACS table from values,
 defined by SDL tokens
Input:
none
Output:
EFI_STATUS
EFI_OUT_OF_RESOURCES - not enough memory
EFI_SUCCESS - FACS table were successfully build


BuildFIDT in the AcpiCore.c

Function : BuildFIDT

File: AcpiCore.c
Description:
This function allocates memory for and fills FIDT struscure.
Input:
IN OUT **ACPI_HDR TablPtr - Pointer to memory, where the FACP table will resides.
               Filled by this procedure
Output:
EFI_STATUS:
EFI_OUT_OF_RESOURCES - Memory for the table could not be allocated
EFI_SUCCESS - Table was successfully build


BuildFPDT in the AcpiCore.c

Function : BuildFPDT

File: AcpiCore.c
Description:
This function allocates memory for and fills FPDT struscure. It also
creates Variable with the addres od S3 and Normal Boot performance srtuctures
to be filled later.
Input:
IN UINTN TablVer - Version of FACP table
IN OUT **ACPI_HDR TablPtr - Pointer to memory, where the FACP table will resides.
               Filled by this procedure
Output:
EFI_STATUS:
EFI_OUT_OF_RESOURCES - Memory for the table could not be allocated
EFI_SUCCESS - Table was successfully build


BuildIoapicIosapic in the AcpiCore.c

Function : BuildIoapicIosapic

File: AcpiCore.c
Description:
This function will probe IndReg and DataReg of discovered IOxAPIC base address
and allocate memory for and builds Ioapic/Iosapic entry for MADT table
Input:
IN UINT64 BaseAddr - Base Addrerss where IOxApic presence detected
IN OUT UINT64 *VecBase - pointer to the System Vector Base variable that
  needs to be updated with IOAPIC.MAXREDIR# by this function
Output:
MADT_ENTRY_HEADER * - pointer to the Ioapic/Iosapi entry header for the MADT table
         if NULL - not enough memory


BuildIoapicManualy in the AcpiCore.c

Function : BuildIoapicManualy

File: AcpiCore.c
Description:
Allocates memory for and builds LAPIC entry for MADT table filled with
Dummy information
Output:
MADT_ENTRY_HEADER * - pointer to the LAPIC entry header for the MADT table
         if NULL - not enough memory


BuildLapic in the AcpiCore.c

Function : BuildLapic

File: AcpiCore.c
Description:
Allocates memory for and builds LAPIC entry for MADT table
Input:
IN CPUINFO *CpuInfo - Pointer to a block of information about cpu
               passed through cpu info HOB, if NULL - it is a
               dummy entry.
IN UINTN CpuCount - Number of the cpu
Output:
MADT_ENTRY_HEADER * - pointer to the LAPIC entry header for the MADT table
         if NULL - not enough memory


BuildLapicNmiFromProtocol in the AcpiCore.c

Function : BuildLapicNmiFromProtocol

File: AcpiCore.c
Description:
Build Local Apic NMI Entries from Protocol.
Input:
IN OUT MADT_ENTRIES *MadtTblEntries - MADT Table Entry list.
Output:
EFI_STATUS


BuildLapicsFromHob in the AcpiCore.c

Function : BuildLapicsFromHob

File: AcpiCore.c
Description:
Build Local Apic Entries from HOB.
Input:
IN UINTN TableVer - ACPI Spec. Version
IN OUT MADT_ENTRIES *MadtTblEntries - MADT Table Entry list.
Output:
EFI_STATUS
EFI_OUT_OF_RESOURCES - not enough memory
EFI_UNSUPPORTED - CPU info hob not found
EFI_INVALID_PARAMETER - invalid ACPI version
EFI_SUCCESS - MADT table were successfully build


BuildLapicsFromProtocol in the AcpiCore.c

Function : BuildLapicsFromProtocol

File: AcpiCore.c
Description:
Build Local Apic Entries from Protocol.
Input:
IN UINTN TableVer - ACPI Spec. Version
IN OUT MADT_ENTRIES *MadtTblEntries - MADT Table Entry list.
Output:
EFI_STATUS
EFI_OUT_OF_RESOURCES - not enough memory
EFI_UNSUPPORTED - CPU info hob not found
EFI_INVALID_PARAMETER - invalid ACPI version
EFI_SUCCESS - MADT table were successfully build


BuildLocalApicNmi in the AcpiCore.c

Function : BuildLocalApicNmi

File: AcpiCore.c
Description:
Allocates memory for and builds local APIC or local x2APIC NMI entry
Input:
IN UINT32 ProcessorId - MADT NMI entry processor id or UID
IN UINT8 LapicInitIn - MADT Local (x2)apic NMI Pin
IN UINT16 Flags - MADT Local (x2) apic flags
Output:
MADT_ENTRY_HEADER * - pointer to the LAPIC NMI entry header for the MADT table
         if NULL - not enough memory


BuildLsapic in the AcpiCore.c

Function : BuildLsapic

File: AcpiCore.c
Description:
Allocates memory for and builds LSAPIC entry for MADT table
Input:
IN CPUINFO *CpuInfo - Pointer to a block of information about cpu
               passed through cpu info HOB
IN UINT32  CpuCount - Number of the cpu
IN UINTN Ver - Version of MADT table
Output:
MADT_ENTRY_HEADER * - pointer to the LAPIC entry header for the MADT table
         if NULL - not enough memory


BuildLx2Apic in the AcpiCore.c

Function : BuildLx2Apic

File: AcpiCore.c
Description:
Allocates memory for and builds Local x2APIC entry for MADT table
Input:
IN UINT32 ApicId - Apic Id of processor.
IN UINT32 Uid - UID of processor.
IN UINT32 Flags - Flags of entry.
Output:
MADT_ENTRY_HEADER * - pointer to the LX2APIC entry header for the MADT table
         if NULL - not enough memory


BuildMadtAll in the AcpiCore.c

Function : BuildMadtAll

File: AcpiCore.c
Description:
Creates MADT entries, stores them as T_ITEM_LIST, calculates
 space needed, allocates memory and builds MADT table from entries
Input:
IN UINTN TablVer - ACPI Spec. Version
OUT ACPI_HDR **TablPtr - Pointer, to the MADT table, filled by this function
Output:
EFI_STATUS
EFI_OUT_OF_RESOURCES - not enough memory
EFI_UNSUPPORTED - CPU info hob not found
EFI_INVALID_PARAMETER - invalid ACPI version
EFI_SUCCESS - MADT table were successfully build


CollectAmlUpdInfo in the AcpiCore.c

Function : CollectAmlUpdInfo

File: AcpiCore.c
Description:
This function will be called when ReadyToBoot event will be signaled and
will update IO devices status and then update AML binary. It allso publish all
ACPI tables.
Input:
IN EFI_EVENT Event - signalled event
IN VOID *Context - calling context
Output:
VOID


DispatchSdtNotify in the AcpiCore.c

Function : DispatchSdtNotify

File: AcpiCore.c
Description:
Checks if Notify function(s) present dispatches it.
Input:
EFI_ACPI_SDT_HEADER *TableHeaderPtr - pointer to the ACPI Table header,
                            modifided by this function
Output:
EFI_STATAUS  - From the function dispatched.


FillAcpiStr in the AcpiCore.c

Function : FillAcpiStr

File: AcpiCore.c
Description:
Copys table from position pointed by FromPtr to a position pointed
by ToPtr (which is in EfiACPIReclaimMemory) and fills RSDT and XSDT
pointers with ToPtr value
Input:
RSDT32 *RsdtPtr - pionter to RSDT
XSDT_20 *XsdtPtr - pionter to XSDT
VOID *FromPtr - pointer to a table which should be copyed
VOID *ToPtr - pointer to EfiACPIReclaimMemory where table should be placed
Output:
UINT8* - Pointer to the next avaiable space in allocated EfiACPIReclaimMemory
        right after copyed table (alligned already)
If NUUL - Invalid parameters.


FindAcpiTblByHandle in the AcpiCore.c

Function : FindAcpiTblByHandle

File: AcpiCore.c
Description:
Finds ACPI table by Handle and returns its entry number in
gAcpiData structure
Input:
UINTN *Handle - Handle (pointer to ACPI table header)
Output:
UINTN - Entry number in gAcpiData structure
       ACPI_TABLE_NOT_FOUND if not found


GetAcpiTable2 in the AcpiCore.c

Function : GetAcpiTable2

File: AcpiCore.c
Description:
Returns a requested ACPI table.
The GetAcpiTable() function returns a pointer to a buffer containing the ACPI table associated
with the Index that was input. The following structures are not considered elements in the list of
ACPI tables:
- Root System Description Pointer (RSD_PTR)
- Root System Description Table (RSDT)
- Extended System Description Table (XSDT)
Version is updated with a bit map containing all the versions of ACPI of which the table is a
member.
Input:
Index       The zero-based index of the table to retrieve.
Table       Pointer for returning the table buffer.
Version     On return, updated with the ACPI versions to which this table belongs. Type
EFI_ACPI_TABLE_VERSION is defined in "Related Definitions" in the
EFI_ACPI_SDT_PROTOCOL.
TableKey    On return, points to the table key for the specified ACPI system definition table. This
is identical to the table key used in the EFI_ACPI_TABLE_PROTOCOL.
Output:
EFI_SUCCESS       The function completed successfully.
EFI_NOT_FOUND     The requested index is too large and a table was not found.


GetBtTable in the AcpiCore.c

Function : GetBtTable

File: AcpiCore.c
Description:
Founds ACPI Table with defined Signature (Sig) and Version in gAcpiData structure.
Input:
OUT ACPI_TBL_ITEM **TblPtr - pointer to the ACPI entrie in gAcpiData,
                            modifided by this function
IN UINT32 Sig - Signature of a table to search for
IN EFI_ACPI_TABLE_VERSION - Version of a table to be found
Output:
EFI_SUCCESS - table with corresponding signature was found
EFI_NOT_FOUND - otherwise


GetDsdtFv in the AcpiCore.c

Function : GetDsdtFv

File: AcpiCore.c
Description:
This function finds DSDT table in firmvare volume
Input:
OUT ACPI_HDR **Dsdt1 - pointer to memory where DSDT v1.1 table will be stored
OUT ACPI_HDR **Dsdt2 - pointer to memory where DSDT v2.0+ table will be stored
Output:
EFI_SUCCESS - Function executed successfully
EFI_ABORTED - ACPI storage file not found
EFI_NOT_FOUND - DSDT table not found in firmware volume


LockLegacyRes in the AcpiCore.c

Function : LockLegacyRes

File: AcpiCore.c
Description:
This function Hides Legacy Resources from OS by destroing _PRS method
in each Legacy Device ASL Object in DSDT
Input:
IN ACPI_AML_UPD_INFO *AmlUpdInfo - pointer to ACPI_AML_UPD_INFO structure
Output:
None


MemCopy in the AcpiCore.c

Function : MemCopy

File: AcpiCore.c
Description:
This routine copies data from source to destination.
Input:
fpSrc    - Pointer to the source.
fpDest   - Pointer to the destination.
wSize    - Number of bytes to copy.
Output:
None


PrepareHdr1 in the AcpiCore.c

Function : PrepareHdr1

File: AcpiCore.c
Description:
This function creates ACPI V1 table header with specified signature
Input:
IN UINT32 TblSig - ACPI table signature
IN OUT ACPI_HDR* HdrPtr - Pointer to memory, where the header should be placed
Output:
VOID
Notes:
Depends on type of memory provided, ACPI table header can be in 32 or 64 bit
format


PrepareHdr20 in the AcpiCore.c

Function : PrepareHdr20

File: AcpiCore.c
Description:
This function creates ACPI table v 2.0+ header with specified signature
Input:
IN UINT32 TblSig - ACPI table signature
IN OUT ACPI_HDR* HdrPtr - Pointer to memory, where the header should be placed
Output:
VOID


PublishTbl in the AcpiCore.c

Function : PublishTbl

File: AcpiCore.c
Description:
Creates or rewrites RSDT_PTR structure and copys tables, stored
in gAcpiData structure in allocated EfiACPIReclaimMemory.
Input:
IN UINTN RsdtBuild - if 1 - Build RSDT and copy tables of Ver 1.1
IN UINTN XsdtBuild - if 1 - Build XSDT and copy tables of Ver 2+
Output:
EFI_OUT_OF_RESOURCES - not enough memory
EFI_ABORTED - invalid parameters
EFI_SUCCESS - RSDT_PTR structure was successfully build


UpdateAml in the AcpiCore.c

Function : UpdateAml

File: AcpiCore.c
Description:
This function updates AML objects with values provided in ACPI_AML_UPD_INFO
structure
Input:
IN ACPI_AML_UPD_INFO *AmlUpdInfo - pointer to ACPI_AML_UPD_INFO structure
Output:
EFI_SUCCESS - AML objects updated successfully
EFI_ERROR - some error occured during update process


UpdateFacp in the AcpiCore.c

Function : UpdateFacp

File: AcpiCore.c
Description:
This function Updates FACP with the new values for DSDT and Facs
pointers
Input:
FACS_20* gFacs1 - Pointer to gFacs Table for V 1
FACS_20* gFacs2 - Pointer to gFacs Table for V 2 or 3
Output:
EFI_SUCCESS - Function executed successfully
EFI_ABORTED - Error
Modifies  gAcpiData


AcpiCore.h

Description:
ACPI Core Header File. Main ACPI Driver Specific Definitions.

The following tables are used in the file: AcpiCore.h.

Table | Description
ACPI_AML_RES | Structure to store System resource Information
ACPI_AML_UPD_INFO | Structure to store Aml update information
ACPI_DB | Structure for storing ACPI tables and protocols during Boottime. ACPI tables are stored in the form of T_ITEM_LIST.
ACPI_TBL_ITEM | Structure for storing pointers for ACPI tables and it's Version Member of ACPI_DB
MADT_ENTRIES | Structure for storing collected entries for MADT table before actualy building it. It is in the form of T_ITEM_LIST.
MADT_ENTRY_HEADER | Header of the entrie for MADT table.


ACPI_AML_RES in the AcpiCore.h

Table : ACPI_AML_RES

File: AcpiCore.h
Fields:

Name | Type | Description
Base | UINT64
Length | UINT64

Description:
Structure to store System resource Information


ACPI_AML_UPD_INFO in the AcpiCore.h

Table : ACPI_AML_UPD_INFO

File: AcpiCore.h
Fields:

Name | Type | Description
Dsdt1Addr | UINT64
Dsdt2Addr | UINT64
PciGap | ACPI_AML_RES | [3]
SS1 | BOOLEAN
SS2 | BOOLEAN
SS3 | BOOLEAN
SS4 | BOOLEAN
RomStart | UINT32
TopOfMemory | UINT32
SioDevStatusVar | SIO_DEV_STATUS

Description:
Structure to store Aml update information


ACPI_DB in the AcpiCore.h

Table : ACPI_DB

File: AcpiCore.h
Fields:

Type | Name | Description
UINTN | AcpiInitCount
UINTN | AcpiEntCount
ACPI_TBL_ITEM | **AcpiEntries
UINT32 | AcpiLength
EFI_ACPI_TABLE_PROTOCOL | AcpiTableProtocol
EFI_ACPI_SUPPORT_PROTOCOL | AcpiSupportProtocol
EFI_HANDLE | AcpiSupportHandle

Description:
Structure for storing ACPI tables and protocols during Boottime.
ACPI tables are stored in the form of T_ITEM_LIST.


ACPI_TBL_ITEM in the AcpiCore.h

Table : ACPI_TBL_ITEM

File: AcpiCore.h
Fields:

Type | Name | Description
ACPI_HDR | *BtHeaderPtr
EFI_ACPI_TABLE_VERSION | AcpiTblVer

Description:
Structure for storing pointers for ACPI tables and it's Version
Member of ACPI_DB


MADT_ENTRIES in the AcpiCore.h

Table : MADT_ENTRIES

File: AcpiCore.h
Fields:

Type | Name | Description
UINTN | MadtEntInitCount
UINTN | MadtEntCount
MADT_ENTRY_HEADER | **MadtEntries

Description:
Structure for storing collected entries for MADT table before
actualy building it. It is in the form of T_ITEM_LIST.


MADT_ENTRY_HEADER in the AcpiCore.h

Table : MADT_ENTRY_HEADER

File: AcpiCore.h
Fields:

Type | Name | Description
UINT8 | Type
UINT8 | Length

Description:
Header of the entrie for MADT table.


AcpiPeiS3Func.c

Description:
ACPI S3 PEI support functions

The following functions are used in the file: AcpiPeiS3Func.c.

Function | Description
GetAcpiS3Info | This function reads ACPI_VARIABLE_SET data from NVRAM and returns pointer to it


GetAcpiS3Info in the AcpiPeiS3Func.c

Function : GetAcpiS3Info

File: AcpiPeiS3Func.c
Description:
This function reads ACPI_VARIABLE_SET data from NVRAM and returns pointer to it
Input:
IN EFI_PEI_SERVICES **PeiServices - pointer to pointer to PEI services
Output:
ACPI_VARIABLE_SET* - pointer to ACPI_VARIABLE_SET structure (NULL if error occured)


AcpiS3.h

Description:
ACPI S3 data structures definitions

The following tables are used in the file: AcpiS3.h.

Table | Description
ACPI_CPU_DATA | ACPI Cpu related data
ACPI_VARIABLE_SET | The structure combine all ACPI related variables into one in order to boost performance


ACPI_CPU_DATA in the AcpiS3.h

Table : ACPI_CPU_DATA

File: AcpiS3.h
Fields:

Name | Type | Description
APState | BOOLEAN
S3BootPath | BOOLEAN
WakeUpBuffer | EFI_PHYSICAL_ADDRESS
GdtrProfile | EFI_PHYSICAL_ADDRESS
IdtrProfile | EFI_PHYSICAL_ADDRESS
CpuPrivateData | EFI_PHYSICAL_ADDRESS
StackAddress | EFI_PHYSICAL_ADDRESS
MicrocodePointerBuffer | EFI_PHYSICAL_ADDRESS
SmramBase | EFI_PHYSICAL_ADDRESS
SmmStartImageBase | EFI_PHYSICAL_ADDRESS
SmmStartImageSize | UINT32
NumberOfCpus | UINT32

Description:
ACPI Cpu related data


ACPI_VARIABLE_SET in the AcpiS3.h

Table : ACPI_VARIABLE_SET

File: AcpiS3.h
Fields:

Name | Type | Description
AcpiReservedMemoryBase | EFI_PHYSICAL_ADDRESS
AcpiReservedMemorySize | UINT32
S3ReservedLowMemoryBase | EFI_PHYSICAL_ADDRESS
AcpiBootScriptTable | EFI_PHYSICAL_ADDRESS
RuntimeScriptTableBase | EFI_PHYSICAL_ADDRESS
AcpiFacsTable | 3 | ] EFI_PHYSICAL_ADDRESS
SystemMemoryLength | UINT64
AcpiCpuData | ACPI_CPU_DATA

Description:
The structure combine all ACPI related variables into one
in order to boost performance


AcpiS3Save.c

Description:
ACPI S3 support functions

The following functions are used in the file: AcpiS3Save.c.

Function | Description
AcpiS3SaveEntryPoint | This function is ACPI S3 driver entry point
CallbackReadyToBoot | This function will be called when ReadyToBoot event will be signaled and will update data, needed for S3 resume control flow.
GetAcpiFacsTable | This function returns address of memory where FACS ACPI table resides


AcpiS3SaveEntryPoint in the AcpiS3Save.c

Function : AcpiS3SaveEntryPoint

File: AcpiS3Save.c
Description:
This function is ACPI S3 driver entry point
Input:
IN EFI_HANDLE ImageHandle - Image handle
IN EFI_SYSTEM_TABLE *SystemTable - pointer to system table
Output:
EFI_SUCCESS - Function executed successfully
Notes:
This function also creates ReadyToBoot event to save data
needed for S3 resume control flow.


CallbackReadyToBoot in the AcpiS3Save.c

Function : CallbackReadyToBoot

File: AcpiS3Save.c
Description:
This function will be called when ReadyToBoot event will be signaled and
will update data, needed for S3 resume control flow.
Input:
IN EFI_EVENT Event - signalled event
IN VOID *Context - calling context
Output:
VOID


GetAcpiFacsTable in the AcpiS3Save.c

Function : GetAcpiFacsTable

File: AcpiS3Save.c
Description:
This function returns address of memory where FACS ACPI table resides
Input:
VOID
Output:
EFI_PHYSICAL_ADDRESS - address of FACS table
Notes:
The routine may fail if the FACS table is in a different location for
ACPI 1.0 and ACPI 2.0 (e.g. 1 above 4G and 1 below 4G). WIN98 will read the
RSDT, and WINXP will read the XSDT. If the XSDT and RSDT aren't pointing to
the same tables, a S3 resume failure will occur.
Currently, the variable from Intel only supports one FACS table.


AcpiS3Save.dxs

Description:
Dependency expression for the AcpiS3Save component


AcpiS3Wake.asm

Description:
Provide the thunk S3 resume.

The following functions are used in the file: AcpiS3Wake.asm.

Function | Description
RealModeThunk | Switch to 16-bit to jump/call to an address. This may be executed in place for a jump or copied to a location if a call.


RealModeThunk in the AcpiS3Wake.asm

Function : RealModeThunk

File: AcpiS3Wake.asm
Segment: ACPI_S3_SEG
Description:
Switch to 16-bit to jump/call to an address.
This may be executed in place for a jump
or copied to a location if a call.
Input:
GdtDesc:DWORD       -- pointer descriptors with 16-bit.
JmpAddress: DWORD   -- Address to jump or call to.
IsCall:BYTE         -- TRUE - if call. FALSE - if jump.
Output:
None


AcpiSdt.c

Description:
ACPI SDT protocol Implementation.


AcpiSdtPrivate.h

Description:
ACPI SDT protocol Private data Definitions.


Aml.c

Description:
Generic AML Parsing functions.


AmlChild.c

Description:
ACPI AML Name space parsing/manipulation functions for ACPI SDT.


AmlNamespace.c

Description:
ACPI AML Name space parsing/manipulation functions for ACPI SDT.


AmlOption.c

Description:
ACPI AML Name space parsing/manipulation functions for ACPI SDT.


AmlString.c

Description:
ACPI AML Name space parsing/manipulation functions for ACPI SDT.


asllib.asl

The following functions are used in the file: asllib.asl.

Function | Description
_PIC | Interrupt mode Control method, returns current Interrupt controller mode; updated from _PIC control method OS invokes _PIC to notify ASL of current Interrupt controller mode _PIC Input arguments : 0-PIC mode (Default), 1-APIC mode
DBG8 | Logical names for Debug ports 0x80 (byte) and 0x90(word). If such debug ports exist in the System, the value, stored into the Port will be displayed to LED
DBG9 | Logical names for Debug ports 0x80 (byte) and 0x90(word). If such debug ports exist in the System, the value, stored into the Port will be displayed to LED
GPRW | Generic Wake up Control Method ("Big brother") to detect the Max Sleep State available in ASL Name scope and Return the Package compatible with _PRW format.
MCTH | Generic control Method. Used to compare two strings and return TRUE/FALSE result MCTH(Str1, Str2) - Compare Str1 and Str2.
OSFL | OSFL object is used to detect the currently running OS
WAKP | Return package for _WAK method. Contains 2 DWORDS 0 - Status 0x00000001 - wake was signaled but failed due to lack of power 0x00000002 - wake was signaled but failed due to thermal condition other bits are reserved 1 - PSS if non-zero, the effective S-state the Power Supply realy entered


_PIC in the asllib.asl

Function : _PIC

File: asllib.asl
Description:
Interrupt mode Control method, returns current Interrupt controller mode; updated from _PIC control method
OS invokes _PIC to notify ASL of current Interrupt controller mode
_PIC Input arguments : 0-PIC mode (Default), 1-APIC mode
Input:
Arg0 - Interrupt mode
Output:
Nothing


DBG8 in the asllib.asl

Function : DBG8

File: asllib.asl
Description:
Logical names for Debug ports 0x80 (byte) and 0x90(word).
If such debug ports exist in the System, the value, stored into the Port will be displayed to LED
Input:
Nothing
Output:
Nothing


DBG9 in the asllib.asl

Function : DBG9

File: asllib.asl
Description:
Logical names for Debug ports 0x80 (byte) and 0x90(word).
If such debug ports exist in the System, the value, stored into the Port will be displayed to LED
Input:
Nothing
Output:
Nothing


GPRW in the asllib.asl

Function : GPRW

File: asllib.asl
Description:
Generic Wake up Control Method ("Big brother") to detect the Max Sleep State available in ASL Name scope
and Return the Package compatible with _PRW format.
Input:
Arg0 =  bit offset within GPE register space device event will be triggered to
Arg1 =  Max Sleep state, device can resume the System from
If Arg1 = 0 , Update Arg1 with Max _Sx state enabled in the System
Output:
_PRW package


MCTH in the asllib.asl

Function : MCTH

File: asllib.asl
Description:
Generic control Method. Used to compare two strings and return TRUE/FALSE result
MCTH(Str1, Str2) - Compare Str1 and Str2.
Input:
Arg0 - str1, Arg1 - str2
Output:
string comparison result
One if Str1 == Str2
Zero if Str1 != Str2


OSFL in the asllib.asl

Function : OSFL

File: asllib.asl
Description:
OSFL object is used to detect the currently running OS
Input:
Nothing
Output:
OS type
running under 0 - Win 2000
1 - Win 98/Se
2 - Win Me
3 - Linux
        4 - WinXP
        5 - Windows Server 2003
        6 - FreeBSD
        7 - HP-UX
        8 - OpenVMS
-------------------New Values Added -----------------------------
9 - WinXP SP1
10 - WinXP SP2
11 - WinXP SP3
12 - Vista
13 - Vista SP1
14 - Win7
15 - Win8
16 - Win8.1
17..n - reserved


WAKP in the asllib.asl

Function : WAKP

File: asllib.asl
Description:
Return package for _WAK method. Contains 2 DWORDS
0 - Status
0x00000001 - wake was signaled but failed due to lack of power
0x00000002 - wake was signaled but failed due to thermal condition
other bits are reserved
1 - PSS      if non-zero, the effective S-state the Power Supply realy entered
Output:
_WAK return package


AtadSmi.c

Description:

The following functions are used in the file: AtadSmi.c.

Function | Description
AtadSmiHandler | The SMI handler for Nvram services.


AtadSmiHandler in the AtadSmi.c

Function : AtadSmiHandler

File: AtadSmi.c
Description:
The SMI handler for Nvram services.
Input:
NONE
Output:
EFI_STATUS


AtadSmi.dxs

Description:
This file is the dependency file for OemActivation module.


AtadSmi.h

Description:


AtadSmi.mak

Description:


BootScriptExecuter.c

Description:
Boot script execution support functions

The following functions are used in the file: BootScriptExecuter.c.

Function | Description
ExecuteScript |
InitBootScriptExecuter | Increase the Pci register number by a value.
PciRegAdd | Increase the Pci register number by a value.
SwitchPciCfgPpi | Serchs for PCI_CFG2_PPI with corresponding Segment


ExecuteScript in the BootScriptExecuter.c

Function : ExecuteScript

File: BootScriptExecuter.c
Description:
Input:
IN EFI_PEI_SERVICES					**PeiServices
IN EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI	*This
IN EFI_PHYSICAL_ADDRESS				Address
IN EFI_GUID							*FvFile OPTIONAL
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Locate Ppis: CpuIo PciCfg SmBus.
2. If any of the Ppis doesn't exist return EFI_UNSUPPORTED.
---Execute table Script---
3. Read Opcode type:
a. EFI_BOOT_SCRIPT_IO_WRITE_OPCODE
b. EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE
etc.
If TABLE_END_OP_CODE, return EFI_SUCCESS.
If unknown opcode return EFI_UNSUPPORTED.

4. Copy the Opcode type to its structure. Structure will be aligned.
5. If it has a buffer, get Buffer address in table.
6. Get address of in table for next Opcode.
7. Call appropriate Ppi for OpCode with parameters from the structure.

Check BootScript spec for better understanding of code.
Note for writes there are EfiBootScriptWidthUintxx,
EfiBootScriptWidthFifoUintxx, and EfiBootScriptWidthFillUintxx.
xx Denotes 8,16,32,or 64(unsupported).

8. Go to step 3.


InitBootScriptExecuter in the BootScriptExecuter.c

Function : InitBootScriptExecuter

File: BootScriptExecuter.c
Description:
Increase the Pci register number by a value.
Input:
IN EFI_FFS_FILE_HEADER	*FfsHeader
IN EFI_PEI_SERVICES		**PeiServices
Output:
EFI_STATUS
Modified:
Notes:
Here is the control flow of this function:
1. Install Boot Script Executer Ppi.
2. Return status of InstallPpi.
Referrals:
InstallPpi


PciRegAdd in the BootScriptExecuter.c

Function : PciRegAdd

File: BootScriptExecuter.c
Description:
Increase the Pci register number by a value.
Input:
IN UINT64 Address	- Pci Address
IN UINT8 ValueSize  - Add value to register.
Output:
UINT64	New Pci Address.
Notes:
Here is the control flow of this function:
1. Get extended register.
2. If extended register, increment it by ValueSize
else increment the non-extended register.
3. Return the Address.


SwitchPciCfgPpi in the BootScriptExecuter.c

Function : SwitchPciCfgPpi

File: BootScriptExecuter.c
Description:
Serchs for PCI_CFG2_PPI with corresponding Segment
Input:
IN EFI_PEI_SERVICES					**PeiServices
IN UINT16                           SegmentSwitchTo
Output:
EFI_PEI_PCI_CFG2_PPI* Pointer to Pci Cfg PPI with Segment wanted
NULL if not found


BootScriptPrivate.h

Description:
Boot script auxiliary data structures definitions

The following tables are used in the file: BootScriptPrivate.h.

Table | Description
BOOT_SCRIPT_DATA | Boot script data union
BOOT_SCRIPT_DISPATCH | Boot script dispatch Data
BOOT_SCRIPT_DISPATCH2 | Boot script Dispatch2 Data
BOOT_SCRIPT_INFORMATION | Boot script information Data
BOOT_SCRIPT_IO_POLL | Boot script Poll IO Data (PI 1.1)
BOOT_SCRIPT_LABEL | Boot script information Data
BOOT_SCRIPT_MEM_POLL | Boot script Poll memory Data (PI 1.1)
BOOT_SCRIPT_PCI_CFG2_POLL | Boot script Poll PCI Data (PI 1.1)
BOOT_SCRIPT_PCI_CFG2_READ_WRITE | Boot script Read-Write PCI Data
BOOT_SCRIPT_PCI_CFG2_WRITE | Boot script Write PCI Data
BOOT_SCRIPT_PCI_CFG_POLL | Boot script Poll PCI Data (PI 1.1)
BOOT_SCRIPT_POLL_IO | Boot script Poll IO Data
BOOT_SCRIPT_POLL_MEM | Boot script Poll memory Data
BOOT_SCRIPT_POLL_PCI | Boot script Poll PCI Data
BOOT_SCRIPT_READ_WRITE_IO | Boot script Read-Write IO Data
BOOT_SCRIPT_READ_WRITE_MEM | Boot script Read-Write memory Data
BOOT_SCRIPT_READ_WRITE_PCI | Boot script Read-Write PCI Data
BOOT_SCRIPT_SMBUS_EXECUTE | Boot script SMBUS command Data
BOOT_SCRIPT_SMBUS_EXECUTE_32 | Boot script SMBUS command Data (32 Bit)
BOOT_SCRIPT_STALL | Boot script stall Data
BOOT_SCRIPT_TABLE_END | Boot script end table marker
BOOT_SCRIPT_WRITE_IO | Boot script Write IO Data
BOOT_SCRIPT_WRITE_MEM | Boot script Write memory Data
BOOT_SCRIPT_WRITE_PCI | Boot script Write PCI Data


BOOT_SCRIPT_DATA in the BootScriptPrivate.h

Table : BOOT_SCRIPT_DATA

File: BootScriptPrivate.h
Fields:

Name | Type | Description
WrIo | BOOT_SCRIPT_WRITE_IO
RwIo | BOOT_SCRIPT_READ_WRITE_IO
PollIo | BOOT_SCRIPT_POLL_IO
WrMem | BOOT_SCRIPT_WRITE_MEM
RwMem | BOOT_SCRIPT_READ_WRITE_MEM
PollMem | BOOT_SCRIPT_POLL_MEM
WrPci | BOOT_SCRIPT_WRITE_PCI
RwPci | BOOT_SCRIPT_READ_WRITE_PCI
PollPci | BOOT_SCRIPT_POLL_PCI
ExecSmbus | BOOT_SCRIPT_SMBUS_EXECUTE
Stall | BOOT_SCRIPT_STALL
Dispatch | BOOT_SCRIPT_DISPATCH
End | BOOT_SCRIPT_TABLE_END

Description:
Boot script data union


BOOT_SCRIPT_DISPATCH in the BootScriptPrivate.h

Table : BOOT_SCRIPT_DISPATCH

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
EntryPoint | EFI_PHYSICAL_ADDRESS

Description:
Boot script dispatch Data


BOOT_SCRIPT_DISPATCH2 in the BootScriptPrivate.h

Table : BOOT_SCRIPT_DISPATCH2

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
EntryPoint | EFI_PHYSICAL_ADDRESS
Context | EFI_PHYSICAL_ADDRESS

Description:
Boot script Dispatch2 Data


BOOT_SCRIPT_INFORMATION in the BootScriptPrivate.h

Table : BOOT_SCRIPT_INFORMATION

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Size | UINT32
MessagePtr | EFI_PHYSICAL_ADDRESS

Description:
Boot script information Data


BOOT_SCRIPT_IO_POLL in the BootScriptPrivate.h

Table : BOOT_SCRIPT_IO_POLL

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Port | UINT16
Mask | UINT32
Result | UINT32

Description:
Boot script Poll IO Data (PI 1.1)


BOOT_SCRIPT_LABEL in the BootScriptPrivate.h

Table : BOOT_SCRIPT_LABEL

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Size | UINT32

Description:
Boot script information Data


BOOT_SCRIPT_MEM_POLL in the BootScriptPrivate.h

Table : BOOT_SCRIPT_MEM_POLL

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Mask | UINT64
Result | UINT64

Description:
Boot script Poll memory Data (PI 1.1)


BOOT_SCRIPT_PCI_CFG2_POLL in the BootScriptPrivate.h

Table : BOOT_SCRIPT_PCI_CFG2_POLL

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Mask | UINT64
Result | UINT64

Description:
Boot script Poll PCI Data (PI 1.1)


BOOT_SCRIPT_PCI_CFG2_READ_WRITE in the BootScriptPrivate.h

Table : BOOT_SCRIPT_PCI_CFG2_READ_WRITE

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Value | UINT64
Mask | UINT64

Description:
Boot script Read-Write PCI Data


BOOT_SCRIPT_PCI_CFG2_WRITE in the BootScriptPrivate.h

Table : BOOT_SCRIPT_PCI_CFG2_WRITE

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Count | UINT64

Description:
Boot script Write PCI Data


BOOT_SCRIPT_PCI_CFG_POLL in the BootScriptPrivate.h

Table : BOOT_SCRIPT_PCI_CFG_POLL

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Mask | UINT64
Result | UINT64

Description:
Boot script Poll PCI Data (PI 1.1)


BOOT_SCRIPT_POLL_IO in the BootScriptPrivate.h

Table : BOOT_SCRIPT_POLL_IO

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Port | UINT16
Mask | UINT32
Result | UINT32

Description:
Boot script Poll IO Data


BOOT_SCRIPT_POLL_MEM in the BootScriptPrivate.h

Table : BOOT_SCRIPT_POLL_MEM

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Mask | UINT64
Result | UINT64

Description:
Boot script Poll memory Data


BOOT_SCRIPT_POLL_PCI in the BootScriptPrivate.h

Table : BOOT_SCRIPT_POLL_PCI

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Mask | UINT64
Result | UINT64

Description:
Boot script Poll PCI Data


BOOT_SCRIPT_READ_WRITE_IO in the BootScriptPrivate.h

Table : BOOT_SCRIPT_READ_WRITE_IO

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Port | UINT16
Value | UINT32
Mask | UINT32

Description:
Boot script Read-Write IO Data


BOOT_SCRIPT_READ_WRITE_MEM in the BootScriptPrivate.h

Table : BOOT_SCRIPT_READ_WRITE_MEM

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Value | UINT64
Mask | UINT64

Description:
Boot script Read-Write memory Data


BOOT_SCRIPT_READ_WRITE_PCI in the BootScriptPrivate.h

Table : BOOT_SCRIPT_READ_WRITE_PCI

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Value | UINT64
Mask | UINT64

Description:
Boot script Read-Write PCI Data


BOOT_SCRIPT_SMBUS_EXECUTE in the BootScriptPrivate.h

Table : BOOT_SCRIPT_SMBUS_EXECUTE

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
SlaveAddress | EFI_SMBUS_DEVICE_ADDRESS
Command | EFI_SMBUS_DEVICE_COMMAND
Operation | EFI_SMBUS_OPERATION
PecCheck | BOOLEAN
Length | UINT64

Description:
Boot script SMBUS command Data


BOOT_SCRIPT_SMBUS_EXECUTE_32 in the BootScriptPrivate.h

Table : BOOT_SCRIPT_SMBUS_EXECUTE_32

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
SlaveAddress | UINT32
Command | UINT32
Operation | EFI_SMBUS_OPERATION
PecCheck | BOOLEAN
Length | UINT64

Description:
Boot script SMBUS command Data (32 Bit)


BOOT_SCRIPT_STALL in the BootScriptPrivate.h

Table : BOOT_SCRIPT_STALL

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Duration | UINT64

Description:
Boot script stall Data


BOOT_SCRIPT_TABLE_END in the BootScriptPrivate.h

Table : BOOT_SCRIPT_TABLE_END

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16

Description:
Boot script end table marker


BOOT_SCRIPT_WRITE_IO in the BootScriptPrivate.h

Table : BOOT_SCRIPT_WRITE_IO

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Port | UINT16
Count | UINT64

Description:
Boot script Write IO Data


BOOT_SCRIPT_WRITE_MEM in the BootScriptPrivate.h

Table : BOOT_SCRIPT_WRITE_MEM

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Value | UINT8
Count | UINT64

Description:
Boot script Write memory Data


BOOT_SCRIPT_WRITE_PCI in the BootScriptPrivate.h

Table : BOOT_SCRIPT_WRITE_PCI

File: BootScriptPrivate.h
Fields:

Name | Type | Description
Type | UINT16
Address | UINT64
Count | UINT64

Description:
Boot script Write PCI Data


BootScriptSave.c

Description:
Save Mem/Io/Pci/Smbus/etc into a table. The script will
be executed on a S3 resume.

The following functions are used in the file: BootScriptSave.c.

Function | Description
AllocTableEntry | Allocate Entry from table. If not enough space, create larger table and return entry.
BootScriptDispatch | Write to boot script table an Dispatch.
BootScriptIoPoll | Write to boot script table a IoPoll (OEM specific).
BootScriptIoReadWrite | Write to boot script table a IoReadWrite.
BootScriptIoWrite | Write to boot script table an IoWrite.
BootScriptMemPoll | Write to boot script table a MemPoll.
BootScriptMemReadWrite | Write to boot script table an MemReadWrite.
BootScriptMemWrite | Write to boot script table an MemWrite.
BootScriptPciPoll | Write to boot script table an PciPoll.
BootScriptPciReadWrite | Write to boot script table an PciReadWrite.
BootScriptPciWrite | Write to boot script table an PciWrite.
BootScriptSmbusExecute | Write to boot script table an SmbusExecute.
BootScriptStall | Write to boot script table an Stall.
EfiBootScriptCloseTable | Save table in runtime closing table and return pointer to table.
EfiBootScriptWrite | All boot script functions (except close table) call this function. This function passes argument list to appropriate function.
InitBootScript | Initialize table and install protocols. Called twice - in and outside SMM.
InitBootScriptDxe | Initialize table and install protocols outside SMM.
InitBootScriptSmm | Initialize table, if not done yet, and install protocols in SMM.
InitBootScriptStructure | Updates Table pointer Before each Write operation.
InsertPositionInBootScript | Found position and, based on Size, allocate space for Entry, that has to be incerted, in table based on parameters in gInsertInfo structure.
NewTable | Initialize first table.
SaveStateCompare | Compare two positions in the boot script table and return their relative position.
SaveStateDispatch2 | Write to boot script table an Dispatch2.
SaveStateInformation | Write to boot script table an Information entry.
SaveStateInsert | This function is used to store an OpCode to be replayed as part of the S3 resume boot path. The opcode is stored before (TRUE) or after (FALSE) the position in the boot script table specified by Position. If Position is NULL or points to NULL then the new opcode is inserted at the beginning of the table (if TRUE) or end of the table (if FALSE).
SaveStateIoPoll | Write to boot script table a PI 1.1 IoPoll.
SaveStateLabel | Find a label within the boot script table and, if not present, optionally create it.
SaveStateMemPoll | Write to boot script table a MemPoll (PI 1.1).
SaveStatePciCfg2Poll | Write to boot script table an PciPoll Cfg2 (PI 1.1).
SaveStatePciCfg2ReadWrite | Write to boot script table an PciReadWrite.
SaveStatePciCfg2Write | Write to boot script table an PciWrite.
SaveStatePciCfgPoll | Write to boot script table an PciPoll (PI 1.1).
SaveStateWrite | This function is used to store an OpCode to be replayed as part of the S3 resume boot path.


AllocTableEntry in the BootScriptSave.c

Function : AllocTableEntry

File: BootScriptSave.c
Description:
Allocate Entry from table. If not enough space, create
larger table and return entry.
Input:
IN UINTN Size - Size of entry to allocate in table.
Output:
VOID * - Pointer to allocated entry in table.
Notes:
Here is the control flow of this function:
1. Does the BootScript table exist. If no return 0.
2. Does table contain max entries? If so assert.
3. Enough space in the table for the boot script call? If yes, go to step 8.
---Create table---
4. Get Size of table needed for entry. (A multiple of INIT_TABLE_SIZE.)
5. Allocate new table.
6. Copy old table
7. Free old table.
8. Update gTableInfo data.
9. Adjust allocation pointer to allocate new space.
10. Return newly allocated space.


BootScriptDispatch in the BootScriptSave.c

Function : BootScriptDispatch

File: BootScriptSave.c
Description:
Write to boot script table an Dispatch.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


BootScriptIoPoll in the BootScriptSave.c

Function : BootScriptIoPoll

File: BootScriptSave.c
Description:
Write to boot script table a IoPoll (OEM specific).
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


BootScriptIoReadWrite in the BootScriptSave.c

Function : BootScriptIoReadWrite

File: BootScriptSave.c
Description:
Write to boot script table a IoReadWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Return EFI_SUCCESS.


BootScriptIoWrite in the BootScriptSave.c

Function : BootScriptIoWrite

File: BootScriptSave.c
Description:
Write to boot script table an IoWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Add data to end of fixed table.
6. Return EFI_SUCCESS.


BootScriptMemPoll in the BootScriptSave.c

Function : BootScriptMemPoll

File: BootScriptSave.c
Description:
Write to boot script table a MemPoll.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


BootScriptMemReadWrite in the BootScriptSave.c

Function : BootScriptMemReadWrite

File: BootScriptSave.c
Description:
Write to boot script table an MemReadWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Return EFI_SUCCESS.


BootScriptMemWrite in the BootScriptSave.c

Function : BootScriptMemWrite

File: BootScriptSave.c
Description:
Write to boot script table an MemWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Add data to end of fixed table.
6. Return EFI_SUCCESS.


BootScriptPciPoll in the BootScriptSave.c

Function : BootScriptPciPoll

File: BootScriptSave.c
Description:
Write to boot script table an PciPoll.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Return EFI_SUCCESS.


BootScriptPciReadWrite in the BootScriptSave.c

Function : BootScriptPciReadWrite

File: BootScriptSave.c
Description:
Write to boot script table an PciReadWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Return EFI_SUCCESS.


BootScriptPciWrite in the BootScriptSave.c

Function : BootScriptPciWrite

File: BootScriptSave.c
Description:
Write to boot script table an PciWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Add data to end of fixed table.
6. Return EFI_SUCCESS.


BootScriptSmbusExecute in the BootScriptSave.c

Function : BootScriptSmbusExecute

File: BootScriptSave.c
Description:
Write to boot script table an SmbusExecute.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


BootScriptStall in the BootScriptSave.c

Function : BootScriptStall

File: BootScriptSave.c
Description:
Write to boot script table an Stall.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


EfiBootScriptCloseTable in the BootScriptSave.c

Function : EfiBootScriptCloseTable

File: BootScriptSave.c
Description:
Save table in runtime closing table and return pointer to table.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
OUT EFI_PHYSICAL_ADDRESS			*Address
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Allocate table entry for BOOT_SCRIPT_TABLE_END. If no entry, return EFI_OUT_OF_RESOURCES.
2. Fill table.
3. Allocate space for new table in Runtime.
4. Copy table to new table.
5. Set *Address to Runtime Table.
6. Free old table.
7. Create a initial table to start over if more Scripts are added.
8. Return EFI_SUCCESS.
Referrals:


EfiBootScriptWrite in the BootScriptSave.c

Function : EfiBootScriptWrite

File: BootScriptSave.c
Description:
All boot script functions (except close table) call this function.
This function passes argument list to appropriate function.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN UINT16							OpCode
Output:
EFI_STATUS


InitBootScript in the BootScriptSave.c

Function : InitBootScript

File: BootScriptSave.c
Description:
Initialize table and install protocols.
Called twice - in and outside SMM.
Input:
IN EFI_HANDLE ImageHandle
IN EFI_SYSTEM_TABLE *SystemTable
Output:
EFI_STATUS


InitBootScriptDxe in the BootScriptSave.c

Function : InitBootScriptDxe

File: BootScriptSave.c
Description:
Initialize table and install protocols outside SMM.
Input:
IN EFI_HANDLE ImageHandle
IN EFI_SYSTEM_TABLE *SystemTable
Output:
EFI_STATUS


InitBootScriptSmm in the BootScriptSave.c

Function : InitBootScriptSmm

File: BootScriptSave.c
Description:
Initialize table, if not done yet, and install protocols in SMM.
Input:
IN EFI_HANDLE ImageHandle
IN EFI_SYSTEM_TABLE *SystemTable
Output:
EFI_STATUS


InitBootScriptStructure in the BootScriptSave.c

Function : InitBootScriptStructure

File: BootScriptSave.c
Description:
Updates Table pointer Before each Write operation.
Input:
IN UINT16 Table
Output:
EFI_SATUS	- Status of the operation.
Notes:
Return True if successful table creation, otherwise return false.
Need valid table info even if table fails, because functions may
attempt to write to the boot script without a table being created.


InsertPositionInBootScript in the BootScriptSave.c

Function : InsertPositionInBootScript

File: BootScriptSave.c
Description:
Found position and, based on Size, allocate space for Entry,
that has to be incerted, in table based on parameters in
gInsertInfo structure.
Input:
IN UINTN Size - Size of entry to allocate in table.
Output:
VOID * - Pointer to allocated entry in table.


NewTable in the BootScriptSave.c

Function : NewTable

File: BootScriptSave.c
Description:
Initialize first table.
Input:
IN UINT16 Table
Output:
BOOLEAN	- TRUE if new table created.
Notes:
Return True if successful table creation, otherwise return false.
Need valid table info even if table fails, because functions may
attempt to write to the boot script without a table being created.


SaveStateCompare in the BootScriptSave.c

Function : SaveStateCompare

File: BootScriptSave.c
Description:
Compare two positions in the boot script table and return their
relative position.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	        *This
IN EFI_S3_BOOT_SCRIPT_POSITION              Position1
IN EFI_S3_BOOT_SCRIPT_POSITION              Position2
OUT UINTN                                   *RelativePosition
Output:
EFI_STATUS


SaveStateDispatch2 in the BootScriptSave.c

Function : SaveStateDispatch2

File: BootScriptSave.c
Description:
Write to boot script table an Dispatch2.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


SaveStateInformation in the BootScriptSave.c

Function : SaveStateInformation

File: BootScriptSave.c
Description:
Write to boot script table an Information entry.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


SaveStateInsert in the BootScriptSave.c

Function : SaveStateInsert

File: BootScriptSave.c
Description:
This function is used to store an OpCode to be replayed as part
of the S3 resume boot path. The opcode is stored before (TRUE)
or after (FALSE) the position in the boot script table specified
by Position. If Position is NULL or points to NULL then the new
opcode is inserted at the beginning of the table (if TRUE) or end
of the table (if FALSE).
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN BOOLEAN                          BeforeOrAfter
IN OUT EFI_S3_BOOT_SCRIPT_POSITION  *Position OPTIONAL
IN UINT16							OpCode
Output:
EFI_STATUS


SaveStateIoPoll in the BootScriptSave.c

Function : SaveStateIoPoll

File: BootScriptSave.c
Description:
Write to boot script table a PI 1.1 IoPoll.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


SaveStateLabel in the BootScriptSave.c

Function : SaveStateLabel

File: BootScriptSave.c
Description:
Find a label within the boot script table and, if not present,
optionally create it.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN BOOLEAN                          BeforeOrAfter
IN BOOLEAN                          CreateIfNotFound
IN OUT EFI_S3_BOOT_SCRIPT_POSITION  *Position OPTIONAL
IN CONST  CHAR8                     *Label
Output:
EFI_STATUS


SaveStateMemPoll in the BootScriptSave.c

Function : SaveStateMemPoll

File: BootScriptSave.c
Description:
Write to boot script table a MemPoll (PI 1.1).
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS


SaveStatePciCfg2Poll in the BootScriptSave.c

Function : SaveStatePciCfg2Poll

File: BootScriptSave.c
Description:
Write to boot script table an PciPoll Cfg2 (PI 1.1).
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Return EFI_SUCCESS.


SaveStatePciCfg2ReadWrite in the BootScriptSave.c

Function : SaveStatePciCfg2ReadWrite

File: BootScriptSave.c
Description:
Write to boot script table an PciReadWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Return EFI_SUCCESS.


SaveStatePciCfg2Write in the BootScriptSave.c

Function : SaveStatePciCfg2Write

File: BootScriptSave.c
Description:
Write to boot script table an PciWrite.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Add data to end of fixed table.
6. Return EFI_SUCCESS.


SaveStatePciCfgPoll in the BootScriptSave.c

Function : SaveStatePciCfgPoll

File: BootScriptSave.c
Description:
Write to boot script table an PciPoll (PI 1.1).
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN va_list							arglist
Output:
EFI_STATUS
Notes:
Here is the control flow of this function:
1. Get variable argument list from stack.
2. Validate argument list. If invalid return EFI_INVALID_PARAMETER;
3. Allocate entry from table.  If no room in table, return EFI_OUT_OF_RESOURCES.
4. Fill fixed table entries.
5. Return EFI_SUCCESS.


SaveStateWrite in the BootScriptSave.c

Function : SaveStateWrite

File: BootScriptSave.c
Description:
This function is used to store an OpCode to be replayed as part
of the S3 resume boot path.
Input:
IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL	*This
IN UINT16							OpCode
Output:
EFI_STATUS


MpPciIrq.asm

Description:
This file includes MPS related tables, generated by AMISDL


mptable.c

Description:
MPS table builder functions implementation

The following functions are used in the file: mptable.c.

Function | Description
ArrangeIoApicEntries | Arranges IO APIC Entries in their ID ascending order
CollectIoApicInfo | Retreive system info about IO APIC
GetCpuInfo | Returns number of cores and threads of given CPU
GetIoApicId | Returns IO APIC ID and Pin number assosiated with given SysVectorNumber
MpsExTableAddBusHierarchyEntry | Creates Extended MPS table bus hierarchy entryies
MpsExTableAddCompatBusAddressModifierEntry | Creates Extended MPS table compatibility bus address space modifier entryies
MpsExTableAddSysAddressMapEntry | Creates Extended MPS table system address space map entryies
MpsTableAddBusEntry | Adds Bus entries to MPS table
MpsTableAddCpuEntry | Adds CPU entries to MPS table.
MpsTableAddCpuEntryByHob | Adds CPU entries to MPS table from HOB.
MpsTableAddCpuEntryByProtocol | Adds CPU entries to MPS table from protocol.
MpsTableAddExtendedTable | Adds Extended table entries to base table
MpsTableAddHeader | Creates MPS table header, allocates space and copies entire table into RuntimeServicesData memory
MpsTableAddIntAssignEntry | Adds Interrupt assignment entries to MPS table
MpsTableAddIoApicEntry | Adds IO Apic entries to MPS table
MpsTableAddLocalIntAssignEntry | Adds Local interrupt assignment entries to MPS table
MpsTableBuilderInit | MPS table builder entry point
MpsTableCreate | Allocates space and creates MPS table
MpsTableFloatPointerModify | Fills MP_FLOATING_POINTER structure with actual data and places it into F000 segment
MpsTableReadyToBootNotify | MPS table builder ReadyToBoot notification function
QueryBusInfo | Retreive system info about buses and bus ierarchy and fills BUS_INFO structure. Also creates MPS table extended entries


ArrangeIoApicEntries in the mptable.c

Function : ArrangeIoApicEntries

File: mptable.c
Description:
Arranges IO APIC Entries in their ID ascending order
Input:
VOID
Output:
VOID
Modified:
IoApicEntry
CurrentIoApicEntry


CollectIoApicInfo in the mptable.c

Function : CollectIoApicInfo

File: mptable.c
Description:
Retreive system info about IO APIC
Input:
IN OPTIONAL EFI_PCI_IO_PROTOCOL *pPciIoProtocol
IN OPTIONAL UINT32 BaseAddress - base address of IO APIC
Output:
VOID
Modified:
IoApicEntry
CurrentIoApicEntry


GetCpuInfo in the mptable.c

Function : GetCpuInfo

File: mptable.c
Description:
Returns number of cores and threads of given CPU
Input:
IN UINTN Cpu - Cpu number
OUT UINT8 *Cores - number of cores in given Cpu
OUT UINT8 *Threads - number of threads in given Cpu
Output:
EFI_SUCCESS - function executed successfully


GetIoApicId in the mptable.c

Function : GetIoApicId

File: mptable.c
Description:
Returns IO APIC ID and Pin number assosiated with given SysVectorNumber
Input:
IN UINT16   SysVectorNumber - system interrupt vector number
OUT UINT8 *IoApicId - Id of IO APIC which handles that vector
OUT UINT8 *IoApicItin - IO APIC Pin number associated with given vector number
Output:
VOID
Modified:
IoApicEntry
CurrentIoApicEntry


MpsExTableAddBusHierarchyEntry in the mptable.c

Function : MpsExTableAddBusHierarchyEntry

File: mptable.c
Description:
Creates Extended MPS table bus hierarchy entryies
Input:
VOID
Output:
VOID
Modified:
MpsExTableCurrentPointer
ExtendedTableLength


MpsExTableAddCompatBusAddressModifierEntry in the mptable.c

Function : MpsExTableAddCompatBusAddressModifierEntry

File: mptable.c
Description:
Creates Extended MPS table compatibility bus address space
modifier entryies
Input:
VOID
Output:
VOID
Modified:
MpsExTableCurrentPointer
ExtendedTableLength


MpsExTableAddSysAddressMapEntry in the mptable.c

Function : MpsExTableAddSysAddressMapEntry

File: mptable.c
Description:
Creates Extended MPS table system address space map entryies
Input:
IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *pPciRootBridgeIoProtocol
IN UINT8 BusId - PCI bus number
IN UINT8 BusAttributes - PCI bus attributes
Output:
VOID
Modified:
MpsExTableCurrentPointer
ExtendedTableLength


MpsTableAddBusEntry in the mptable.c

Function : MpsTableAddBusEntry

File: mptable.c
Description:
Adds Bus entries to MPS table
Input:
VOID
Output:
UINT16 - Number of entries added


MpsTableAddCpuEntry in the mptable.c

Function : MpsTableAddCpuEntry

File: mptable.c
Description:
Adds CPU entries to MPS table.
Input:
VOID
Output:
UINT16 - Number of entries added


MpsTableAddCpuEntryByHob in the mptable.c

Function : MpsTableAddCpuEntryByHob

File: mptable.c
Description:
Adds CPU entries to MPS table from HOB.
Input:
VOID
Output:
UINT16 - Number of entries added


MpsTableAddCpuEntryByProtocol in the mptable.c

Function : MpsTableAddCpuEntryByProtocol

File: mptable.c
Description:
Adds CPU entries to MPS table from protocol.
Input:
VOID
Output:
UINT16 - Number of entries added


MpsTableAddExtendedTable in the mptable.c

Function : MpsTableAddExtendedTable

File: mptable.c
Description:
Adds Extended table entries to base table
Input:
VOID
Output:
VOID


MpsTableAddHeader in the mptable.c

Function : MpsTableAddHeader

File: mptable.c
Description:
Creates MPS table header, allocates space and copies entire
table into RuntimeServicesData memory
Input:
VOID
Output:
EFI_SUCCESS - function executed successfully
Modified:
MpsTablePointer


MpsTableAddIntAssignEntry in the mptable.c

Function : MpsTableAddIntAssignEntry

File: mptable.c
Description:
Adds Interrupt assignment entries to MPS table
Input:
VOID
Output:
UINT16 - Number of entries added


MpsTableAddIoApicEntry in the mptable.c

Function : MpsTableAddIoApicEntry

File: mptable.c
Description:
Adds IO Apic entries to MPS table
Input:
VOID
Output:
UINT16 - Number of entries added


MpsTableAddLocalIntAssignEntry in the mptable.c

Function : MpsTableAddLocalIntAssignEntry

File: mptable.c
Description:
Adds Local interrupt assignment entries to MPS table
Input:
VOID
Output:
UINT16 - Number of entries added


MpsTableBuilderInit in the mptable.c

Function : MpsTableBuilderInit

File: mptable.c
Description:
MPS table builder entry point
Input:
IN EFI_HANDLE ImageHandle    - MPS table builder image handle
IN EFI_SYSTEM_TABLE *SystemTaple    - pointer to system table
Output:
EFI_SUCCESS    - Initialization completed successfully
EFI_ERROR      - Initialization failed
Modified:
MpsTableReadyToBootEvent


MpsTableCreate in the mptable.c

Function : MpsTableCreate

File: mptable.c
Description:
Allocates space and creates MPS table
Input:
VOID
Output:
EFI_SUCCESS    - function executed successfully
EFI_ERROR      - some error occured


MpsTableFloatPointerModify in the mptable.c

Function : MpsTableFloatPointerModify

File: mptable.c
Description:
Fills MP_FLOATING_POINTER structure with actual data
and places it into F000 segment
Input:
VOID
Output:
EFI_SUCCESS    - Pointer created and placed successfully
EFI_ERROR      - Some error occurs
Modified:
MpsTableFloatingPointer


MpsTableReadyToBootNotify in the mptable.c

Function : MpsTableReadyToBootNotify

File: mptable.c
Description:
MPS table builder ReadyToBoot notification function
Input:
IN EFI_EVENT Event      - signalled event
IN VOID *Context    - pointer to calling context
Output:
VOID


QueryBusInfo in the mptable.c

Function : QueryBusInfo

File: mptable.c
Description:
Retreive system info about buses and bus ierarchy and fills
BUS_INFO structure. Also creates MPS table extended entries
Input:
VOID
Output:
VOID
Modified:
BusEntry
MaxBusId
CurrentBusEntry
IsaBusId


mptable.h

Description:
Header file for MP table builder

The following tables are used in the file: mptable.h.

Table | Description
ACPI_ADDRESS_SPACE_DESC | This structure represents ACPI address space descriptor format as defined in ACPI specification v3.0
BUS_INFO | PCI bus description data structure
IO_APIC_DEST | Device interrupt destination description data structure
IO_APIC_INFO | IO APIC description data structure
MP_CONFIGURATION_TABLE_HEADER | This structure represents MP configuration table header format as defined in MPS specification v1.4
MP_EX_TABLE_BUS_HIERARCHY_ENTRY | This structure represents MP table bus hierarchy extended entry format as defined in MPS specification v1.4
MP_EX_TABLE_COMPAT_BUS_ADDRESS_MODIFIER_ENTRY | This structure represents MP table compatibility bus address modifier extended entry format as defined in MPS specification v1.4
MP_EX_TABLE_SYS_ADDRESS_MAP_ENTRY | This structure represents MP table system address map extended entry format as defined in MPS specification v1.4
MP_FLOATING_POINTER | This structure represents MP table floating pointer format as defined in MPS specification v1.4
MP_TABLE_BUS_ENTRY | This structure represents MP configuration table bus entry format as defined in MPS specification v1.4
MP_TABLE_CPU_ENTRY | This structure represents MP configuration table CPU entry format as defined in MPS specification v1.4
MP_TABLE_INT_ASSIGN_ENTRY | This structure represents MP configuration table interrupt assingment entry format as defined in MPS specification v1.4
MP_TABLE_IO_APIC_ENTRY | This structure represents MP configuration table IO APIC entry format as defined in MPS specification v1.4
MP_TABLE_LOCAL_INT_ASSIGN_ENTRY | This structure represents MP table local interrupt assingment entry format as defined in MPS specification v1.4
PCI_IRQ_APIC_ROUTE | PCI interrupt routing description data structure


ACPI_ADDRESS_SPACE_DESC in the mptable.h

Table : ACPI_ADDRESS_SPACE_DESC

File: mptable.h
Description:
This structure represents ACPI address space descriptor
format as defined in ACPI specification v3.0


BUS_INFO in the mptable.h

Table : BUS_INFO

File: mptable.h
Fields:

Name | Type | Description
BusId | UINT8 | Bus Id number
ParentBusId | UINT8 | Parent bus Id number
BusType | UINT8 | Bus type number
Flags | UINT8 | Bus flags

Description:
PCI bus description data structure


IO_APIC_DEST in the mptable.h

Table : IO_APIC_DEST

File: mptable.h
Fields:

Name | Type | Description
IoApicItin | UINT8 | IO APIC pin number
IoApicId | UINT8 | IO APIC Id

Description:
Device interrupt destination description data structure


IO_APIC_INFO in the mptable.h

Table : IO_APIC_INFO

File: mptable.h
Fields:

Name | Type | Description
IoApicId | UINT8 | IO APIC Id
IoApicVersion | UINT8 | IO APIC version
IoApicFlags | UINT8 | IO APIC flags
MaxRedirectionEntries | UINT8 | Max number of redirection entries supported by IO APIC
IoApicAddress | UINT32 | IO APIC address in memory

Description:
IO APIC description data structure


MP_CONFIGURATION_TABLE_HEADER in the mptable.h

Table : MP_CONFIGURATION_TABLE_HEADER

File: mptable.h
Description:
This structure represents MP configuration table header format
as defined in MPS specification v1.4


MP_EX_TABLE_BUS_HIERARCHY_ENTRY in the mptable.h

Table : MP_EX_TABLE_BUS_HIERARCHY_ENTRY

File: mptable.h
Description:
This structure represents MP table bus hierarchy extended
entry format as defined in MPS specification v1.4


MP_EX_TABLE_COMPAT_BUS_ADDRESS_MODIFIER_ENTRY in the mptable.h

Table : MP_EX_TABLE_COMPAT_BUS_ADDRESS_MODIFIER_ENTRY

File: mptable.h
Description:
This structure represents MP table compatibility bus address modifier
extended entry format as defined in MPS specification v1.4


MP_EX_TABLE_SYS_ADDRESS_MAP_ENTRY in the mptable.h

Table : MP_EX_TABLE_SYS_ADDRESS_MAP_ENTRY

File: mptable.h
Description:
This structure represents MP table system address map extended
entry format as defined in MPS specification v1.4


MP_FLOATING_POINTER in the mptable.h

Table : MP_FLOATING_POINTER

File: mptable.h
Description:
This structure represents MP table floating pointer format
as defined in MPS specification v1.4


MP_TABLE_BUS_ENTRY in the mptable.h

Table : MP_TABLE_BUS_ENTRY

File: mptable.h
Description:
This structure represents MP configuration table bus entry format
as defined in MPS specification v1.4


MP_TABLE_CPU_ENTRY in the mptable.h

Table : MP_TABLE_CPU_ENTRY

File: mptable.h
Description:
This structure represents MP configuration table CPU entry format
as defined in MPS specification v1.4


MP_TABLE_INT_ASSIGN_ENTRY in the mptable.h

Table : MP_TABLE_INT_ASSIGN_ENTRY

File: mptable.h
Description:
This structure represents MP configuration table interrupt assingment
entry format as defined in MPS specification v1.4


MP_TABLE_IO_APIC_ENTRY in the mptable.h

Table : MP_TABLE_IO_APIC_ENTRY

File: mptable.h
Description:
This structure represents MP configuration table IO APIC entry format
as defined in MPS specification v1.4


MP_TABLE_LOCAL_INT_ASSIGN_ENTRY in the mptable.h

Table : MP_TABLE_LOCAL_INT_ASSIGN_ENTRY

File: mptable.h
Description:
This structure represents MP table local interrupt assingment
entry format as defined in MPS specification v1.4


PCI_IRQ_APIC_ROUTE in the mptable.h

Table : PCI_IRQ_APIC_ROUTE

File: mptable.h
Fields:

Name | Type | Description
PciBusNumber | UINT8 | PCI bus number
DeviceNumber | UINT8 | PCI device number
Intn | IO_APIC_DEST | Interrupt destination
Reserved | UINT8

Description:
PCI interrupt routing description data structure


OEM_ACPI.C

Description:
Oem hooks used in ACPI Module

The following functions are used in the file: OEM_ACPI.C.

Function | Description
OemAcpiSetPlatformId | This function provides platform specific OEM_ID and OEM_TABLE_ID to overwrite default ACPI Table header.


OemAcpiSetPlatformId in the OEM_ACPI.C

Function : OemAcpiSetPlatformId

File: OEM_ACPI.C
Description:
This function provides platform specific OEM_ID and OEM_TABLE_ID to
overwrite default ACPI Table header.
Input:
IN OUT ACPI_HDR *AcpiHdr    - ACPI TABLE header
Output:
EFI_STATUS  EFI_SUCCESS if Values overwtitten.
EFI_INSUPPORTED if no need to change values - use default.

NOTE: UINT8 *AcpiOemId[6]; UINT8 *AcpiOemTblId[8] avoid buffer overrun!


OEM_ACPI.H

Description:
OEM specific Definitions in ACPI Module


oemDSDT.asl

The following functions are used in the file: oemDSDT.asl.

Function | Description
_PTS | METHOD IS CALLED BY OS PRIOR TO ENTER ANY SLEEP STATE
_WAK | METHOD CALLED ON WAKE UP FROM ANY SLEEP STATE


_PTS in the oemDSDT.asl

Function : _PTS

File: oemDSDT.asl
Description:
METHOD IS CALLED BY OS PRIOR TO ENTER ANY SLEEP STATE
Input:
Arg0 = Arg0 = Sleep state System about to enter
Output:
Nothing


_WAK in the oemDSDT.asl

Function : _WAK

File: oemDSDT.asl
Description:
METHOD CALLED ON WAKE UP FROM ANY SLEEP STATE
Input:
Arg0 = Sleep state System is resuming from
Output:
WAKP - return package for _WAK, 2 DWORDS


OEMRMISC.ASL

The following functions are used in the file: OEMRMISC.ASL.

Function | Description
OMSC | OEM Miscellaneous I/O and memory resources This table should contain any I/O port that is not used by a specific device but does not return FFh when read. Some examples of I/O ports that should be reserved here are: Any I/O port in the range 00 - FF that is not used by any other dev node The IRQ edge/level control ports (4D0/4D1)
RMEM | System board extension Device node for ACPI BIOS Place the device under \_SB scope, As per Msft the MEM Device is used to reserve Resources that are decoded out of PCI Bus Important consideration : Logic to reserve the memory within 0xC0000 - 0xFFFFF Extended BIOS area is based on assumption, that the BIOS Post has detected all expansion ROMs in the region and made their memory ranges shadowable ( copied to RAM at the same address, for performance reasons). The rest of the region is left non-Shadowable, hence no memory is decoded there. Such region is decoded to PCI bus (to be reserved in PCI0._CRS) Whatever memory is Shadowed, thus, decoded as non "FF"s, is required to be reserved in "SYSM" System board extension Device node, unless is not already reserved by some of PCI Device drivers. There have been observed the difference of how Win9x & Win2000 OSes deal with Expansion ROM memory. Win9x Device drivers are tend to claim its expension ROMs regions as used by the device; Win2000 never use such ROM regions for its devices. Therefore there can be different approach used for different OSes in reservation unclaimed memory in "SYSM" Device node. is forwarded to PCI Bus


OMSC in the OEMRMISC.ASL

Function : OMSC

File: OEMRMISC.ASL
Description:
OEM Miscellaneous I/O and memory resources
This table should contain any I/O port that is not used by a specific
device but does not return FFh when read.  Some examples of I/O ports
that should be reserved here are:
Any I/O port in the range 00 - FF that is not used by any other dev node
The IRQ edge/level control ports (4D0/4D1)
Input:
Nothing
Output:
_CRS buffer


RMEM in the OEMRMISC.ASL

Function : RMEM

File: OEMRMISC.ASL
Description:
System board extension Device node for ACPI BIOS
Place the device under \_SB scope, As per Msft the MEM
Device is used to reserve Resources that are decoded out of PCI Bus
Important consideration :
Logic to reserve the memory within 0xC0000 - 0xFFFFF Extended BIOS area is based on assumption, that
the BIOS Post has detected all expansion ROMs in the region and made their memory ranges
shadowable ( copied to RAM at the same address, for performance reasons). The rest of the region is left non-Shadowable,
hence no memory is decoded there. Such region is decoded to PCI bus (to be reserved in PCI0._CRS)
Whatever memory is Shadowed, thus, decoded as non "FF"s, is required to be reserved in "SYSM" System board extension Device node,
unless is not already reserved by some of PCI Device drivers. There have been observed the difference of how Win9x & Win2000
OSes deal with Expansion ROM memory. Win9x Device drivers are tend to claim its expension ROMs regions as used
by the device; Win2000 never use such ROM regions for its devices. Therefore there can be different
approach used for different OSes in reservation unclaimed memory in "SYSM" Device node.
is forwarded to PCI Bus
Input:
Nothing
Output:
_CRS buffer


RbRes.asl

Description:
PCI Root Bridge resources buffer and CRS Method
MUST be included from NB.ASL directly using "include" ASL term
Suppose to be already in ROOT BRIDGE Device ASL Scope.

NOTE: NO Porting needed


rmisc.asl

The following functions are used in the file: rmisc.asl.

Function | Description
RMSC | Chipset Miscellaneous I/O and memory resources This table should contain any I/O port that is not used by a specific device but does not return FFh when read. Some examples of I/O ports that should be reserved here are: Any I/O port in the range 00 - FF that is not used by any other dev node The IRQ edge/level control ports (4D0/4D1)


RMSC in the rmisc.asl

Function : RMSC

File: rmisc.asl
Description:
Chipset Miscellaneous I/O and memory resources
This table should contain any I/O port that is not used by a specific
device but does not return FFh when read.  Some examples of I/O ports
that should be reserved here are:
Any I/O port in the range 00 - FF that is not used by any other dev node
The IRQ edge/level control ports (4D0/4D1)
Input:
Nothing
Output:
_CRS buffer


S3Restore.mak

Description:


S3Resume.c

Description:
Restore configuration state from S3 resume.

The following functions are used in the file: S3Resume.c.

Function | Description
S3RestoreConfig | Restore configuration state from S3 resume.
S3RestoreConfig2 | Restore configuration state from S3 resume.


S3RestoreConfig in the S3Resume.c

Function : S3RestoreConfig

File: S3Resume.c
Description:
Restore configuration state from S3 resume.
Input:
EFI_PEI_SERVICES **PeiServices
Output:
EFI_STATUS


S3RestoreConfig2 in the S3Resume.c

Function : S3RestoreConfig2

File: S3Resume.c
Description:
Restore configuration state from S3 resume.
Input:
EFI_PEI_S3_RESUME2_PPI *This
Output:
EFI_STATUS


S3Resume.dxs

Description:


S3Save.mak

Description:


SmmS3Save.dxs

Description:
Dependency expression for the AcpiS3Save component


Function by Segment

By Segment

The following is a list of the segments.
For a list in alphabetical order, see In Alphabetical Order.
For a list by file name, see By File Name.

  • ACPI_S3_SEG


ACPI_S3_SEG

The following functions are used in the segment: ACPI_S3_SEG.

Function | Description
RealModeThunk | Switch to 16-bit to jump/call to an address. This may be executed in place for a jump or copied to a location if a call.


Functions in Alphabetical Order

In Alphabetical Order

The following topics provide a list in alphabetical order.
For a list by file name, see By File Name.
For a list by segment, see By Segment.

  • ?
  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • I
  • L
  • M
  • N
  • O
  • P
  • Q
  • R
  • S
  • U
  • W


Functions in Alphabetical Order

?

Function | Description
_PIC | Interrupt mode Control method, returns current Interrupt controller mode; updated from _PIC control method OS invokes _PIC to notify ASL of current Interrupt controller mode _PIC Input arguments : 0-PIC mode (Default), 1-APIC mode
_PTS | METHOD IS CALLED BY OS PRIOR TO ENTER ANY SLEEP STATE
_WAK | METHOD CALLED ON WAKE UP FROM ANY SLEEP STATE

Built on 17:50:24 07/10/14


Functions in Alphabetical Order

A

Function | Description
AcpiInstallAcpiTable | Installs an ACPI table into the RSDT/XSDT.
AcpiNewCoreEntry | This function is ACPI driver entry point
AcpiS3SaveEntryPoint | This function is ACPI S3 driver entry point
AcpiSupportGetAcpiTable | This function returns ACPI table
AcpiSupportPublishTables | Causes one or more versions of the ACPI tables to be published in the EFI system configuration tables.
AcpiSupportSetAcpiTable | This function allows to add, remove of modify ACPI table
AcpiUninstallAcpiTable | Function allows a caller to remove an ACPI table.
AddIsoFromTbl | Allocates memory for and builds ISO entry for MADT table, based on INTERRUPT SOURCE OVERRIDE info from predifined table
AllocTableEntry | Allocate Entry from table. If not enough space, create larger table and return entry.
ArrangeIoApicEntries | Arranges IO APIC Entries in their ID ascending order
AtadSmiHandler | The SMI handler for Nvram services.

Table | Description
ACPI_ADDRESS_SPACE_DESC | This structure represents ACPI address space descriptor format as defined in ACPI specification v3.0
ACPI_AML_RES | Structure to store System resource Information
ACPI_AML_UPD_INFO | Structure to store Aml update information
ACPI_CPU_DATA | ACPI Cpu related data
ACPI_DB | Structure for storing ACPI tables and protocols during Boottime. ACPI tables are stored in the form of T_ITEM_LIST.
ACPI_TBL_ITEM | Structure for storing pointers for ACPI tables and it's Version Member of ACPI_DB
ACPI_VARIABLE_SET | The structure combine all ACPI related variables into one in order to boost performance

Built on 17:50:24 07/10/14


Functions in Alphabetical Order

B

Function | Description
BootScriptDispatch | Write to boot script table an Dispatch.
BootScriptIoPoll | Write to boot script table a IoPoll (OEM specific).
BootScriptIoReadWrite | Write to boot script table a IoReadWrite.
BootScriptIoWrite | Write to boot script table an IoWrite.
BootScriptMemPoll | Write to boot script table a MemPoll.
BootScriptMemReadWrite | Write to boot script table an MemReadWrite.
BootScriptMemWrite | Write to boot script table an MemWrite.
BootScriptPciPoll | Write to boot script table an PciPoll.
BootScriptPciReadWrite | Write to boot script table an PciReadWrite.
BootScriptPciWrite | Write to boot script table an PciWrite.
BootScriptSmbusExecute | Write to boot script table an SmbusExecute.
BootScriptStall | Write to boot script table an Stall.
BuildFacpiAll | This function allocates memory for and fills FACP table v 1.1+ with predefined values from SDL tokens
BuildFacs | Allocates ACPI NVS memory and builds FACS table from values, defined by SDL tokens
BuildFIDT | This function allocates memory for and fills FIDT struscure.
BuildFPDT | This function allocates memory for and fills FPDT struscure. It also creates Variable with the addres od S3 and Normal Boot performance srtuctures to be filled later.
BuildIoapicIosapic | This function will probe IndReg and DataReg of discovered IOxAPIC base address and allocate memory for and builds Ioapic/Iosapic entry for MADT table
BuildIoapicManualy | Allocates memory for and builds LAPIC entry for MADT table filled with Dummy information
BuildLapic | Allocates memory for and builds LAPIC entry for MADT table
BuildLapicNmiFromProtocol | Build Local Apic NMI Entries from Protocol.
BuildLapicsFromHob | Build Local Apic Entries from HOB.
BuildLapicsFromProtocol | Build Local Apic Entries from Protocol.
BuildLocalApicNmi | Allocates memory for and builds local APIC or local x2APIC NMI entry
BuildLsapic | Allocates memory for and builds LSAPIC entry for MADT table
BuildLx2Apic | Allocates memory for and builds Local x2APIC entry for MADT table
BuildMadtAll | Creates MADT entries, stores them as T_ITEM_LIST, calculates space needed, allocates memory and builds MADT table from entries

Table | Description
BOOT_SCRIPT_DATA | Boot script data union
BOOT_SCRIPT_DISPATCH | Boot script dispatch Data
BOOT_SCRIPT_DISPATCH2 | Boot script Dispatch2 Data
BOOT_SCRIPT_INFORMATION | Boot script information Data
BOOT_SCRIPT_IO_POLL | Boot script Poll IO Data (PI 1.1)
BOOT_SCRIPT_LABEL | Boot script information Data
BOOT_SCRIPT_MEM_POLL | Boot script Poll memory Data (PI 1.1)
BOOT_SCRIPT_PCI_CFG2_POLL | Boot script Poll PCI Data (PI 1.1)
BOOT_SCRIPT_PCI_CFG2_READ_WRITE | Boot script Read-Write PCI Data
BOOT_SCRIPT_PCI_CFG2_WRITE | Boot script Write PCI Data
BOOT_SCRIPT_PCI_CFG_POLL | Boot script Poll PCI Data (PI 1.1)
BOOT_SCRIPT_POLL_IO | Boot script Poll IO Data
BOOT_SCRIPT_POLL_MEM | Boot script Poll memory Data
BOOT_SCRIPT_POLL_PCI | Boot script Poll PCI Data
BOOT_SCRIPT_READ_WRITE_IO | Boot script Read-Write IO Data
BOOT_SCRIPT_READ_WRITE_MEM | Boot script Read-Write memory Data
BOOT_SCRIPT_READ_WRITE_PCI | Boot script Read-Write PCI Data
BOOT_SCRIPT_SMBUS_EXECUTE | Boot script SMBUS command Data
BOOT_SCRIPT_SMBUS_EXECUTE_32 | Boot script SMBUS command Data (32 Bit)
BOOT_SCRIPT_STALL | Boot script stall Data
BOOT_SCRIPT_TABLE_END | Boot script end table marker
BOOT_SCRIPT_WRITE_IO | Boot script Write IO Data
BOOT_SCRIPT_WRITE_MEM | Boot script Write memory Data
BOOT_SCRIPT_WRITE_PCI | Boot script Write PCI Data
BUS_INFO | PCI bus description data structure

Built on 17:50:24 07/10/14


Functions in Alphabetical Order

C

Function | Description
CallbackReadyToBoot | This function will be called when ReadyToBoot event will be signaled and will update data, needed for S3 resume control flow.
CollectAmlUpdInfo | This function will be called when ReadyToBoot event will be signaled and will update IO devices status and then update AML binary. It allso publish all ACPI tables.
CollectIoApicInfo | Retreive system info about IO APIC


Functions in Alphabetical Order

D

Function | Description
DBG8 | Logical names for Debug ports 0x80 (byte) and 0x90(word). If such debug ports exist in the System, the value, stored into the Port will be displayed to LED
DBG9 | Logical names for Debug ports 0x80 (byte) and 0x90(word). If such debug ports exist in the System, the value, stored into the Port will be displayed to LED
DispatchSdtNotify | Checks if Notify function(s) present dispatches it.


Functions in Alphabetical Order

E

Function | Description
EfiBootScriptCloseTable | Save table in runtime closing table and return pointer to table.
EfiBootScriptWrite | All boot script functions (except close table) call this function. This function passes argument list to appropriate function.
ExecuteScript |


Functions in Alphabetical Order

F

Function | Description
FillAcpiStr | Copys table from position pointed by FromPtr to a position pointed by ToPtr (which is in EfiACPIReclaimMemory) and fills RSDT and XSDT pointers with ToPtr value
FindAcpiTblByHandle | Finds ACPI table by Handle and returns its entry number in gAcpiData structure


Functions in Alphabetical Order

G

Function | Description
GetAcpiFacsTable | This function returns address of memory where FACS ACPI table resides
GetAcpiS3Info | This function reads ACPI_VARIABLE_SET data from NVRAM and returns pointer to it
GetAcpiTable2 | Returns a requested ACPI table. The GetAcpiTable() function returns a pointer to a buffer containing the ACPI table associated with the Index that was input. The following structures are not considered elements in the list of ACPI tables: - Root System Description Pointer (RSD_PTR) - Root System Description Table (RSDT) - Extended System Description Table (XSDT) Version is updated with a bit map containing all the versions of ACPI of which the table is a member.
GetBtTable | Founds ACPI Table with defined Signature (Sig) and Version in gAcpiData structure.
GetCpuInfo | Returns number of cores and threads of given CPU
GetDsdtFv | This function finds DSDT table in firmvare volume
GetIoApicId | Returns IO APIC ID and Pin number assosiated with given SysVectorNumber
GPRW | Generic Wake up Control Method ("Big brother") to detect the Max Sleep State available in ASL Name scope and Return the Package compatible with _PRW format.


Functions in Alphabetical Order

I

Function | Description
InitBootScript | Initialize table and install protocols. Called twice - in and outside SMM.
InitBootScriptDxe | Initialize table and install protocols outside SMM.
InitBootScriptExecuter | Increase the Pci register number by a value.
InitBootScriptSmm | Initialize table, if not done yet, and install protocols in SMM.
InitBootScriptStructure | Updates Table pointer Before each Write operation.
InsertPositionInBootScript | Found position and, based on Size, allocate space for Entry, that has to be incerted, in table based on parameters in gInsertInfo structure.

Table | Description
IO_APIC_DEST | Device interrupt destination description data structure
IO_APIC_INFO | IO APIC description data structure


Functions in Alphabetical Order

L

Function | Description
LockLegacyRes | This function Hides Legacy Resources from OS by destroing _PRS method in each Legacy Device ASL Object in DSDT


Functions in Alphabetical Order

M

Function | Description
MCTH | Generic control Method. Used to compare two strings and return TRUE/FALSE result MCTH(Str1, Str2) - Compare Str1 and Str2.
MemCopy | This routine copies data from source to destination.
MpsExTableAddBusHierarchyEntry | Creates Extended MPS table bus hierarchy entryies
MpsExTableAddCompatBusAddressModifierEntry | Creates Extended MPS table compatibility bus address space modifier entryies
MpsExTableAddSysAddressMapEntry | Creates Extended MPS table system address space map entryies
MpsTableAddBusEntry | Adds Bus entries to MPS table
MpsTableAddCpuEntry | Adds CPU entries to MPS table.
MpsTableAddCpuEntryByHob | Adds CPU entries to MPS table from HOB.
MpsTableAddCpuEntryByProtocol | Adds CPU entries to MPS table from protocol.
MpsTableAddExtendedTable | Adds Extended table entries to base table
MpsTableAddHeader | Creates MPS table header, allocates space and copies entire table into RuntimeServicesData memory
MpsTableAddIntAssignEntry | Adds Interrupt assignment entries to MPS table
MpsTableAddIoApicEntry | Adds IO Apic entries to MPS table
MpsTableAddLocalIntAssignEntry | Adds Local interrupt assignment entries to MPS table
MpsTableBuilderInit | MPS table builder entry point
MpsTableCreate | Allocates space and creates MPS table
MpsTableFloatPointerModify | Fills MP_FLOATING_POINTER structure with actual data and places it into F000 segment
MpsTableReadyToBootNotify | MPS table builder ReadyToBoot notification function

Table | Description
MADT_ENTRIES | Structure for storing collected entries for MADT table before actualy building it. It is in the form of T_ITEM_LIST.
MADT_ENTRY_HEADER | Header of the entrie for MADT table.
MP_CONFIGURATION_TABLE_HEADER | This structure represents MP configuration table header format as defined in MPS specification v1.4
MP_EX_TABLE_BUS_HIERARCHY_ENTRY | This structure represents MP table bus hierarchy extended entry format as defined in MPS specification v1.4
MP_EX_TABLE_COMPAT_BUS_ADDRESS_MODIFIER_ENTRY | This structure represents MP table compatibility bus address modifier extended entry format as defined in MPS specification v1.4
MP_EX_TABLE_SYS_ADDRESS_MAP_ENTRY | This structure represents MP table system address map extended entry format as defined in MPS specification v1.4
MP_FLOATING_POINTER | This structure represents MP table floating pointer format as defined in MPS specification v1.4
MP_TABLE_BUS_ENTRY | This structure represents MP configuration table bus entry format as defined in MPS specification v1.4
MP_TABLE_CPU_ENTRY | This structure represents MP configuration table CPU entry format as defined in MPS specification v1.4
MP_TABLE_INT_ASSIGN_ENTRY | This structure represents MP configuration table interrupt assingment entry format as defined in MPS specification v1.4
MP_TABLE_IO_APIC_ENTRY | This structure represents MP configuration table IO APIC entry format as defined in MPS specification v1.4
MP_TABLE_LOCAL_INT_ASSIGN_ENTRY | This structure represents MP table local interrupt assingment entry format as defined in MPS specification v1.4


Functions in Alphabetical Order

N

Function | Description
NewTable | Initialize first table.


Functions in Alphabetical Order

O

Function | Description
OemAcpiSetPlatformId | This function provides platform specific OEM_ID and OEM_TABLE_ID to overwrite default ACPI Table header.
OMSC | OEM Miscellaneous I/O and memory resources This table should contain any I/O port that is not used by a specific device but does not return FFh when read. Some examples of I/O ports that should be reserved here are: Any I/O port in the range 00 - FF that is not used by any other dev node The IRQ edge/level control ports (4D0/4D1)
OSFL | OSFL object is used to detect the currently running OS


Functions in Alphabetical Order

P

Function | Description
PciRegAdd | Increase the Pci register number by a value.
PrepareHdr1 | This function creates ACPI V1 table header with specified signature
PrepareHdr20 | This function creates ACPI table v 2.0+ header with specified signature
PublishTbl | Creates or rewrites RSDT_PTR structure and copys tables, stored in gAcpiData structure in allocated EfiACPIReclaimMemory.

Table | Description
PCI_IRQ_APIC_ROUTE | PCI interrupt routing description data structure


Functions in Alphabetical Order

Q

Function | Description
QueryBusInfo | Retreive system info about buses and bus ierarchy and fills BUS_INFO structure. Also creates MPS table extended entries


Functions in Alphabetical Order

R

Function | Description
RealModeThunk | Switch to 16-bit to jump/call to an address. This may be executed in place for a jump or copied to a location if a call.
RMEM | System board extension Device node for ACPI BIOS Place the device under \_SB scope, As per Msft the MEM Device is used to reserve Resources that are decoded out of PCI Bus Important consideration : Logic to reserve the memory within 0xC0000 - 0xFFFFF Extended BIOS area is based on assumption, that the BIOS Post has detected all expansion ROMs in the region and made their memory ranges shadowable ( copied to RAM at the same address, for performance reasons). The rest of the region is left non-Shadowable, hence no memory is decoded there. Such region is decoded to PCI bus (to be reserved in PCI0._CRS) Whatever memory is Shadowed, thus, decoded as non "FF"s, is required to be reserved in "SYSM" System board extension Device node, unless is not already reserved by some of PCI Device drivers. There have been observed the difference of how Win9x & Win2000 OSes deal with Expansion ROM memory. Win9x Device drivers are tend to claim its expension ROMs regions as used by the device; Win2000 never use such ROM regions for its devices. Therefore there can be different approach used for different OSes in reservation unclaimed memory in "SYSM" Device node. is forwarded to PCI Bus
RMSC | Chipset Miscellaneous I/O and memory resources This table should contain any I/O port that is not used by a specific device but does not return FFh when read. Some examples of I/O ports that should be reserved here are: Any I/O port in the range 00 - FF that is not used by any other dev node The IRQ edge/level control ports (4D0/4D1)


Functions in Alphabetical Order

S

Function | Description
S3RestoreConfig | Restore configuration state from S3 resume.
S3RestoreConfig2 | Restore configuration state from S3 resume.
SaveStateCompare | Compare two positions in the boot script table and return their relative position.
SaveStateDispatch2 | Write to boot script table an Dispatch2.
SaveStateInformation | Write to boot script table an Information entry.
SaveStateInsert | This function is used to store an OpCode to be replayed as part of the S3 resume boot path. The opcode is stored before (TRUE) or after (FALSE) the position in the boot script table specified by Position. If Position is NULL or points to NULL then the new opcode is inserted at the beginning of the table (if TRUE) or end of the table (if FALSE).
SaveStateIoPoll | Write to boot script table a PI 1.1 IoPoll.
SaveStateLabel | Find a label within the boot script table and, if not present, optionally create it.
SaveStateMemPoll | Write to boot script table a MemPoll (PI 1.1).
SaveStatePciCfg2Poll | Write to boot script table an PciPoll Cfg2 (PI 1.1).
SaveStatePciCfg2ReadWrite | Write to boot script table an PciReadWrite.
SaveStatePciCfg2Write | Write to boot script table an PciWrite.
SaveStatePciCfgPoll | Write to boot script table an PciPoll (PI 1.1).
SaveStateWrite | This function is used to store an OpCode to be replayed as part of the S3 resume boot path.
SwitchPciCfgPpi | Serchs for PCI_CFG2_PPI with corresponding Segment


Functions in Alphabetical Order

U

Function | Description
UpdateAml | This function updates AML objects with values provided in ACPI_AML_UPD_INFO structure
UpdateFacp | This function Updates FACP with the new values for DSDT and Facs pointers


Functions in Alphabetical Order

W

Function | Description
WAKP | Return package for _WAK method. Contains 2 DWORDS 0 - Status 0x00000001 - wake was signaled but failed due to lack of power 0x00000002 - wake was signaled but failed due to thermal condition other bits are reserved 1 - PSS if non-zero, the effective S-state the Power Supply realy entered


General Information


Release Notes - NDA Required

Component Information:
Component Title: ACPI
Component Reference Name: ACPI
Component Type: eModule
Release Date: 2011-03-24
Source Control Label: 4.6.4.0_ACPI_43
Source Control Location: Alaska;$/Alaska/BIN/Modules/ACPI/Template

Dependencies
AMI_BOARD_INFO_PROTOCOL_GUID, if AmiBoardInfo_SUPPORT == 1; if AmiBoardInfo_SUPPORT == 0 - NONE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:

The purposes of ACPI module are:
· Automatically build a minimal set of ACPI tables: MADT, FACS and FACP.
· Collect system information that used for dynamic update of DSDT (AMLUPD.ASL) and might get changed, and information needed for creation of MADT.
· Provide an interface for other drivers to add update and delete ACPI tables.
· Create root ACPI tables (RSDT, XSDT) and RSDT_PTR.
· Create a System Configuration Table entry with ACPI2.0 GUID. (Refer to the ACPI Specification for additional information and GUID value).
NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

Filename | Description
ACPI Board files | ProjectRoot\Board\EM\ACPI
ACPI.cif | ACPI Module cif file, containing all ACPI submodules and files
ACPI.chm | ACPI chm file, containing release notes and information about eModule
ACPIBSP.CIF | ACPI Board subcomponent cif file, containing all ACPI board-specific submodules and files
ACPI.sdl | ACPI Module SDL tokens file (modified by VeB)
ACPI.mak | ACPI Module MAK file (builds Module and all it's components)
ACPI.dxs | ACPI Driver dependency file
ACPI.sd | ACPI Driver Setup Screens definition file
ACPI.uni | ACPI Driver Setup Strings definition file (in UNICODE format)
OEM_ACPI.C | OEM Specific ACPI functions implementation.
OEM_ACPI.h | OEM Specific ACPI definitions
ASL Board files | ProjectRoot\Board\EM\ACPI
ASLBSP.CIF | Cif file containing the list of all board specific asl files
OEMRMISC.asl | OEM Specific ASL Resources definitions
OEMDSDT.asl | OEM Specific ACPI ASL Objects
ACPI Core files | ProjectRoot\Core\EM\ACPI
ACPICORE.CIF | Cif file containing the list of all ACPI core files and subcomponents
AcpiCore.c | Main ACPI Driver File. It has ACPI Driver entry point, ACPISupport Protocol and ACPITable Protocol.
AcpiCore.h | Main ACPI Driver Specific Definitions
mptable.c | MP table builder functions implementation
MpPciIrq.asm | Includes MPS related tables, generated by AMISDL
mptable.h | Header file for MP table builder
AcpiS3.h | Definitions for S3 Save\Resume Support. (left in AcpiCore component for backward computability)
Generic ASL files | ProjectRoot\Core\EM\ACPI
ASLCORE.CIF | Cif file containing the list of all core asl files
Uart4ir.asl | Generic ASL Implementation of COM4 Device Object with IR support
Uart4.asl | Generic ASL Implementation of COM4 Device Object
Uart3ir.asl | Generic ASL Implementation of COM3 Device Object with IR support
Uart3.asl | Generic ASL Implementation of COM3 Device Object
Uart2ir.asl | Generic ASL Implementation of COM2 Device Object with IR support
Uart2.asl | Generic ASL Implementation of COM2 Device Object
Uart1ir.asl | Generic ASL Implementation of COM1 Device Object with IR support
Uart1.asl | Generic ASL Implementation of COM1 Device Object
SMB_EC.asl | Generic ACPI Embedded controller SMBus interface methods
PS2KB.asl | Generic ASL Implementation of PS2 Keyboard Device Object
PS2MS.asl | Generic ASL Implementation of PS2 Mouse Device Object
MIDI.asl | Generic ASL Implementation of MPU 401 Device Object
MAX1617R.asl | ASL interface to MAX1617 thermal sensor over SMBus. Remote sensor
MAX1617L.asl | ASL interface to MAX1617 thermal sensor over SMBus. Local sensor
MathCo.asl | Generic ASL Implementation of Math Coprocessor Device Object
IRDA.asl | Generic ASL Implementation of IR Data Access Device
Lpte.asl | Generic ASL Implementation of Parallel port LPT or ECP(Extended mode) Device Object
LM75.asl | ASL interface to LM75 thermal sensor over SMBus
GameMpu.asl | ASL Implementation of Combined Game & Midi Logical Device
game.asl | Generic ASL Implementation of Game Port Device
FDC.asl | Generic ASL Implementation of Floppy Disk Controller Device Object
CIR.asl | Generic ASL Implementation of Standalone InfraRed Device Object
RMISK.asl | Generic ASL Implementation of Legacy ISA Resource Template
AMLUPD.asl | Generic ASL Name Objects used to dynamically update System's DSDT
ASLLIB.asl | AML Libraty - Globaly used ASL Methods and Objects
OSCM.asl | Generic Implementation of _OSC ASL Method
rmisc.asl | Generic ASL Implementation of SoundBlaster compatable audio Device
PCIEACCESS.asl | Generic ASL Implementation of PCIe access routines
PCIEHP.asl | Generic ASL Implementation OF PCIe Hotplug support
RbRes.asl | Generic method to report root bridge resources.
S3 Support related | ProjectRoot\Core\EM\S3
S3Support.CIF | S3 Suport subcomponent cif file, containing all S3 related submodules and files
S3Support.sdl | S3 Support related sdl file
S3 Save Section | ProjectRoot\Core\EM\S3
S3Save.CIF | S3 Save subcomponent cif file, containing all files related to BootScript saving
S3Save.sdl | S3 Save related sdl file
S3Save.mak | S3save Sub-Module MAK file (builds Sub-Module and all it's components)
AcpiS3Save.dxs | Dependency file for S3 BootScript Save
AcpiS3Save.c | ACPI S3 Data Save Support for DXE
BootScriptSave.c | Implementation of BootScriptSave Driver
BootScriptPrivate.h | Definitions BootScript Drivers
AcpiPeiS3Func.c | S3 Resume Support at PEI phase
SmmS3Save.dxs | Dependency file for Smm S3 Save
S3 Restore Section | ProjectRoot\Core\EM\S3
S3Restore.CIF | S3 Restore subcomponent cif file, containing all files connected with resuming from S3
S3Restore.sdl | S3 Restore related sdl file
S3Restore.mak | S3 Restore Sub-Module MAK file (builds Sub-Module and all it's components)
S3Restore.dxs | Dependency file for S3 BootScript Restore
AcpiS3Wake.asm | Low level thunk for S3 resume
S3Resume.c | ACPI S3 Resume Support DXE
AcpiPeiS3Func.c | ACPI S3 PEI support functions
AcpiPeiS3Func.h | ACPI S3 PEI support related defenitions
BootScriptExecuter.c | Implementation of BootScriptExecuter Driver
Common S3 Related Section | ProjectRoot\Include
S3Common.CIF | S3Common subcomponent cif file, containing files that are coomon for all S3 related tasks
S3SaveState.h | S3 Save State Protocol defenitions
S3SmmSaveState.h | S3 SMM Save State Protocol defenitions
Global ACPI Headers | ProjectRoot\Include
ACPI.h | Generic ACPI Definitions common for all Specs
ACPI11.h | ACPI Spec version 1.1b Support Definitions
ACPI20.h | ACPI Spec version 2.0 Support Definitions
ACPI30.h | ACPI Spec version 3.0 Support Definitions
ACPIRes.h | ACPI Resource descriptors Definitions used in AML and related functions prototypes
BootScriptCommon.h | Common Boot Script related definitions and prototypes
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_34, Dated: 2010-10-06
Visual eBios: RSS.5.70.0171, Dated: 2010-10-04
Compiler Tool(s): WinDDK 7600.16385.1; DDK 3790.1830
New features added in this label:
  1. EIP 53402. S3 related functionality moved to separate module parts in ACPI eModule. PI 1.1 related features added. Improved backward computability and structure.
  2. EIP 55071. Sdl tokens are added to set set IOAPIC/IOSAPIC and LAPIC/LSAPIC revision boundary in case of non-standard (some AMD platforms) boundary.
General Bug Fixes:
  1. EIP 56178. ASSERT removed in function LockLegacyRes, fixing problem in case legacy free system (failed to find any handles that have the gEfiAmiSioProtocolGuid installed on them).
EIP addressed in this label:
  1. EIP 55030. "Breakpoint" command removed from RbRes.asl file.
Files changed for EIP fixes:

AcpiCore.c (EIP 55071, EIP 56178)
Acpi.sdl (EIP 55071)
RbRes.asl (EIP 55030)
EIP 48697 - Complete structure of the module is changed. All files affected
Known issues and limitations in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
Installation of different OS was performed to check functionality.
Validation Testing:
NONE
Release History:
4.6.4.0_ACPI_42
Fixes
  1. EIP 50019. AcpiCore.c file modified to preserve values of ACPI_IA_BOOT_ARCH flag set in sdl.
  2. EIP 48515. Dummy fra strings removed from ACPI.uni file.
  3. EIP 50325. LAPICS order fixed. Dummy entries now placed after active cores in MADT table. Token SKIP_DUMMY_LAPICS should be added to any .sdl file to force AcpiCore not to create dummy lapics entires for processors that are absent, but could be hot plugged.
  4. EIP 49202. Pointer gRsdtPtrStr typecasted to UINTN before typecasting to EFI_PHYSICAL_ADDRESS to fix hanging in AI32 mode with 4 GB of memory on some platforms.
New Features
  1. EIP 50035. #Ifdef support in ASL code generically added.
  2. EIP 49816. Function OemAcpiSetPlatformId added as eLink.
Errata & Known Issues
N/A so far.
4.6.4.0_ACPI_41
Fixes
  1. Fixed Issue when with Multiple IO APICs, upper IOAPIC's INT_IN 0 was excluded from the table.
  2. Help builder error - Function Header Fixed.
New Features
  1. EIP 46166 Added Support for Primary VGA selection on different Root Bridges.
  2. EIP 44740. Functionality to automatically Publish all tables, added on ReadyToBoot through EFI_ACPI_SUPPORT_PROTOCOL, is added.
  3. EIP 35563. "Force to ACPI ver. 1.1" ACPI setup menu (default is OFF) added. If Enabled - only Tables for ver. 1.1 will be submitted (FACP, FACS, RSDT (no XSDT), and MADT) all other tables added by means of ACPI protocols not modified.
  4. EIP 37874. ACPI_APIC_TBL token added if OFF - MADT will not created (PIC mode).
  5. EIP 39741 - If EC is present 62/66 resources will not be reported as MB.
  6. EIP 39752. Uart1.asl file modified to support Status Code in Runtime by hiding COM1 port from OS.
  7. EIP 45160. AcpiSupportSetAcpiTable function was modified to checksum table, after it was changed by OemAcpiSetPlatformId hook, if Checksum parameter of SetAcpiTable function is FALSE, but table was correctly checksumed before call to OemAcpiSetPlatformId hook.
Errata & Known Issues
N/A so far.
4.6.4.0_ACPI_40
Fixes
  1. Minor bug fix in typecasting. Some spelling issues fixed.
  2. EIP 32520. Update AML part function is changed to perform update before publishing table. Freepool assert when trying to delete old DSDT is fixed.
New Features
  1. EIP 37055. TPL check added.
  2. EIP 35099. Functionality to lock legacy resources from OS added, based on setup question. Default value controlled by DEFAULT_ACPI_LOCK_LEGACY_DEV SDL token and "OFF".
Errata & Known Issues
N/A so far.
4.6.4.0_ACPI_33_TEST
Fixes
  1. N/A so far.
New Features
  1. ACPI_BUILD_TABLES_4_0 sdl token added. When active - support for features described in specification 4.0 is on.
  2. Additional fields in FACS added.
  3. Only one FACS pointer from the FADT may be specified.
  4. Added support for x2APIC in the MADT.
  5. For other features refer to ACPI 4.0 Specification.
  6. Changes to support Multy Root resource reporting features. All PCI ROOT resource reporting features moved to PciHostBridge.c.
Errata & Known Issues
N/A so far.
Update Instructions
Upgrade ACPI Component. It is compatible with Core 4.6.3.6 or Later.
If your Project has CORE Earlier than 4.6.3.6, You need to upgrade to Core 4.6.3.6. first. Please follow instructions listed in here in "Revision History" Section or CORE CHM.
Upgrade AcpiSupport.h.
Upgrade IA32CLib.c.
Make sure that rDMA and RRIO methods defined in SB.asl (they are remouved from asllib.asl now).
Make sure each implementation of ROOT PCI Object in ASL Like "PCI0" "PCI1"(usually it is Nb.asl and Nb2.asl) must include following:
include("Core\\Em\\ACPI\\RbRes.ASL")
include("Core\\Em\\ACPI\\OSCM.ASL")

4.6.3.3_ACPI_32

Fixes
  1. Fix for EIP 26777: RSDP Revision updated with correct value.
  2. Created MP_TBL_TMP_BUFFER_SIZE SDL Token to allow changing size of MPTABLE Skratch buffer
  3. Fix for EIP 25407: 32 bit mode bug fix. If system uses more than 2G of conventional memory and project build in IA32 Mode, pointers in XSDT, that was referencing tables at address with bit 31==1, was initialized with wrong values.
  4. Fixed grammar and alignmemt in ACPI.UNI .
  5. Added Dependency in ACPI.sdl for OSCM.ASL elink. Now it depends on PCI Bus Driver version.
New Features
  1. EIP #24914 - Add local x2APIC support.
Errata & Known Issues
N/A so far.
Update Instructions
Upgrade ACPI Component. It is compatible with Core 4.6.3.3 or Later.
Some Features depend on AMI Board Info Protocol may not work untill upgrade to Core 4.6.3.6
In order to have this features working you must add AmiBoardInfo Subcomponent to your Core Module from SS:ALASKA;$/Alaska/BIN/Core\Modules/BoardInfo and AmiBoardInfo.h from SS:ALASKA;$/Alaska/BIN/Core\Include/Protocol.

4.6.3.3_ACPI_31

Fixes
  1. Fixed potencial bug in IOAPIC as PCI Device scanning.
  2. Fixed when updating DSDT table did not call OemAcpiSetPlatformId()
  3. Fixed issue EIP #21205 XP does not boot.
  4. Fixed AmiCpuInfo2 Protocol usage compatyibility issue.
  5. EIP #17903 Use AmiCpuInfo2 Protocol if available. Small bug fixes from last update.
  6. Fixed issue with PCI_BUS IOAPICs discovery (when set to ON was giving build ERROR).
  7. Fixed calling order of IOAPIC Discovery Routines. First it is called for PCI Devices to have it ENABLE all PCI residing IOAPICs.
New Features
  1. Added Generic PCI Express Access routines "PCIEACCESS.ASL" and "PCIEHP.ASL" to the Core\Em\Acpi\ASLCore.cif.
  2. Added support to use AmiBoardInfo Protocol if available, without breaking compatibiliry with previouse Core versions.
  3. Added "USE_BOARD_INFO_APIC_DATA" token to Update IOAPIC info from AmiBoardInfo Structure. Suppose to be updated by Board specific code.
  4. Added "PCI_BUS_APIC_LEAVE_ENABLE" to leave IOAPICs on PCI Bus in ENABLED state after probing.
  5. Added Second MADT Build run on READY_TO_BOOT event, to detect all IOAPICs which might be in DISABLED state at the time of FIRST RUN.
Errata & Known Issues
N/A so far.
Update Instructions
Upgrade ACPI Component. It is compatible with Core 4.6.3.3 or Later.
Some Features depend on AMI Board Info Protocol may not work untill upgrade to Core 4.6.3.6
In order to have this features working you must add AmiBoardInfo Subcomponent to your Core Module from SS:ALASKA;$/Alaska/BIN/Core\Modules/BoardInfo and AmiBoardInfo.h from SS:ALASKA;$/Alaska/BIN/Core\Include/Protocol.

4.6.3.3_ACPI_30

Was the first Label of New ACPI Module

  1. The module structure and internal implementation have been optimized (the new implementation is faster and uses less memory).
  2. Separate functions for handling of ACPI 1.0 and 2.0 tables are replaced with the common code that handles any supported version of the ACPI tables (files ACPI11.c and ACPI20.c are removed).
  3. UEFI 2.1 ACPI Table Protocol support was added.
  4. MADT and FACP bit fields specified by ACPI Specification 3.0 are added and could be ported trough SDL tokens.
  5. Automatic discovery of IO/APIC devices on the PCI bus was added.
  6. LAPIC/IOAPIC entries in MADT table are now sorted by ID (ascending order useful for multi core/tread CPUs ).
  7. SDL tokens for values, which where hard-coded previously, were added.
  8. Support for DSDT, generated and submitted by third party (not by this driver) was added.
  9. More consistent memory map. Driver uses one common buffer for all tables. Which result in only single entry in E820 function of INT15 (useful for some Linux versions, which has limitation on number of entries).
  10. Code cleaning was done. Removed almost all obsolete and not used code and tokens.

NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: ACPI
Component Reference Name: ACPI
Component Type: eModule
Release Date: 2011-07-06
Source Control Label: 4.6.4.0_ACPI_44
Source Control Location: Alaska;$/Alaska/BIN/Modules/ACPI/Template

Dependencies
AMI_BOARD_INFO_PROTOCOL_GUID, if AmiBoardInfo_SUPPORT == 1; if AmiBoardInfo_SUPPORT == 0 - NONE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:

The purposes of ACPI module are:
· Automatically build a minimal set of ACPI tables: MADT, FACS and FACP.
· Collect system information that used for dynamic update of DSDT (AMLUPD.ASL) and might get changed, and information needed for creation of MADT.
· Provide an interface for other drivers to add update and delete ACPI tables.
· Provide an interface for other drivers to save S3 boot script, which will be executed on S3 resume.
· Create root ACPI tables (RSDT, XSDT) and RSDT_PTR.
· Create a System Configuration Table entry with ACPI2.0 GUID. (Refer to the ACPI Specification for additional information and GUID value).
NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

Filename | Description
ACPI Board files | ProjectRoot\Board\EM\ACPI
ACPI.cif | ACPI Module cif file, containing all ACPI submodules and files
ACPI.chm | ACPI chm file, containing release notes and information about eModule
ACPIBSP.CIF | ACPI Board subcomponent cif file, containing all ACPI board-specific submodules and files
ACPI.sdl | ACPI Module SDL tokens file (modified by VeB)
ACPI.mak | ACPI Module MAK file (builds Module and all it's components)
ACPI.dxs | ACPI Driver dependency file
ACPI.sd | ACPI Driver Setup Screens definition file
ACPI.uni | ACPI Driver Setup Strings definition file (in UNICODE format)
OEM_ACPI.C | OEM Specific ACPI functions implementation.
OEM_ACPI.h | OEM Specific ACPI definitions
ASL Board files | ProjectRoot\Board\EM\ACPI
ASLBSP.CIF | Cif file containing the list of all board specific asl files
OEMRMISC.asl | OEM Specific ASL Resources definitions
OEMDSDT.asl | OEM Specific ACPI ASL Objects
ACPI Core files | ProjectRoot\Core\EM\ACPI
ACPICORE.CIF | Cif file containing the list of all ACPI core files and subcomponents
AcpiCore.c | Main ACPI Driver File. It has ACPI Driver entry point, ACPISupport Protocol and ACPITable Protocol.
AcpiCore.h | Main ACPI Driver Specific Definitions
mptable.c | MP table builder functions implementation
MpPciIrq.asm | Includes MPS related tables, generated by AMISDL
mptable.h | Header file for MP table builder
AcpiS3.h | Definitions for S3 Save\Resume Support. (left in AcpiCore component for backward computability)
AcpiSdtPrivate.h | DACPI SDT protocol Private data Definitions.
Aml.c | Generic AML Parsing functions.
AmlChild.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlNamespace.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlOption.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlString.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AcpiSdt.c | ACPI SDT protocol Implementation.
Generic ASL files | ProjectRoot\Core\EM\ACPI
ASLCORE.CIF | Cif file containing the list of all core asl files
Uart4ir.asl | Generic ASL Implementation of COM4 Device Object with IR support
Uart4.asl | Generic ASL Implementation of COM4 Device Object
Uart3ir.asl | Generic ASL Implementation of COM3 Device Object with IR support
Uart3.asl | Generic ASL Implementation of COM3 Device Object
Uart2ir.asl | Generic ASL Implementation of COM2 Device Object with IR support
Uart2.asl | Generic ASL Implementation of COM2 Device Object
Uart1ir.asl | Generic ASL Implementation of COM1 Device Object with IR support
Uart1.asl | Generic ASL Implementation of COM1 Device Object
SMB_EC.asl | Generic ACPI Embedded controller SMBus interface methods
PS2KB.asl | Generic ASL Implementation of PS2 Keyboard Device Object
PS2MS.asl | Generic ASL Implementation of PS2 Mouse Device Object
MIDI.asl | Generic ASL Implementation of MPU 401 Device Object
MAX1617R.asl | ASL interface to MAX1617 thermal sensor over SMBus. Remote sensor
MAX1617L.asl | ASL interface to MAX1617 thermal sensor over SMBus. Local sensor
MathCo.asl | Generic ASL Implementation of Math Coprocessor Device Object
IRDA.asl | Generic ASL Implementation of IR Data Access Device
Lpte.asl | Generic ASL Implementation of Parallel port LPT or ECP(Extended mode) Device Object
LM75.asl | ASL interface to LM75 thermal sensor over SMBus
GameMpu.asl | ASL Implementation of Combined Game & Midi Logical Device
game.asl | Generic ASL Implementation of Game Port Device
FDC.asl | Generic ASL Implementation of Floppy Disk Controller Device Object
CIR.asl | Generic ASL Implementation of Standalone InfraRed Device Object
RMISK.asl | Generic ASL Implementation of Legacy ISA Resource Template
AMLUPD.asl | Generic ASL Name Objects used to dynamically update System's DSDT
ASLLIB.asl | AML Libraty - Globaly used ASL Methods and Objects
OSCM.asl | Generic Implementation of _OSC ASL Method
rmisc.asl | Generic ASL Implementation of SoundBlaster compatable audio Device
PCIEACCESS.asl | Generic ASL Implementation of PCIe access routines
PCIEHP.asl | Generic ASL Implementation OF PCIe Hotplug support
RbRes.asl | Generic method to report root bridge resources.
S3 Support related | ProjectRoot\Core\EM\S3
S3Support.CIF | S3 Suport subcomponent cif file, containing all S3 related submodules and files
S3Support.sdl | S3 Support related sdl file
S3 Save Section | ProjectRoot\Core\EM\S3
S3Save.CIF | S3 Save subcomponent cif file, containing all files related to BootScript saving
S3Save.sdl | S3 Save related sdl file
S3Save.mak | S3save Sub-Module MAK file (builds Sub-Module and all it's components)
AcpiS3Save.dxs | Dependency file for S3 BootScript Save
AcpiS3Save.c | ACPI S3 Data Save Support for DXE
BootScriptSave.c | Implementation of BootScriptSave Driver
BootScriptPrivate.h | Definitions BootScript Drivers
AcpiPeiS3Func.c | S3 Resume Support at PEI phase
SmmS3Save.dxs | Dependency file for Smm S3 Save
S3 Restore Section | ProjectRoot\Core\EM\S3
S3Restore.CIF | S3 Restore subcomponent cif file, containing all files connected with resuming from S3
S3Restore.sdl | S3 Restore related sdl file
S3Restore.mak | S3 Restore Sub-Module MAK file (builds Sub-Module and all it's components)
S3Restore.dxs | Dependency file for S3 BootScript Restore
AcpiS3Wake.asm | Low level thunk for S3 resume
S3Resume.c | ACPI S3 Resume Support DXE
AcpiPeiS3Func.c | ACPI S3 PEI support functions
AcpiPeiS3Func.h | ACPI S3 PEI support related defenitions
BootScriptExecuter.c | Implementation of BootScriptExecuter Driver
Common S3 Related Section | ProjectRoot\Include
S3Common.CIF | S3Common subcomponent cif file, containing files that are coomon for all S3 related tasks
S3SaveState.h | S3 Save State Protocol defenitions
S3SmmSaveState.h | S3 SMM Save State Protocol defenitions
Global ACPI Headers | ProjectRoot\Include
ACPI.h | Generic ACPI Definitions common for all Specs
ACPI11.h | ACPI Spec version 1.1b Support Definitions
ACPI20.h | ACPI Spec version 2.0 Support Definitions
ACPI30.h | ACPI Spec version 3.0 Support Definitions
ACPIRes.h | ACPI Resource descriptors Definitions used in AML and related functions prototypes
BootScriptCommon.h | Common Boot Script related definitions and prototypes
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_34, Dated: 2010-10-06
Visual eBios: RSS.5.70.0171, Dated: 2010-10-04
Compiler Tool(s): WinDDK 7600.16385.1; DDK 3790.1830
New features added in this label:
  1. EIP 53334. CPU module provide NMI information if protocol available. This is to properly support x2APIC NMI structures.
  2. EIP 56650. S3 Save State Protocol and S3 Smm Save State Protocol functions added. Support for opcodes introduced in PI 1.2 added.
  3. EIP 60633. Acpi part of Microsoft OEM Activation 3.0 specification added.
  4. EIP 56526. Added ACPI Manipulation Protocol, introduced in PI 1.2 Spec Vol 5 Section 9.
General Bug Fixes:
  1. EIP 60727. Dispatch opcode realization was commented out mistakenly. Commented out code restored.
EIP addressed in this label:
  1. EIP 60634. Small change in Install table functionality.
  2. EIP 60372. Conformance change in Uninstall Table function.
  3. EIP 58481. AllocatePages used instead of AllocatePool to make AcpiMemoryBase aligned on 4KB boundary.
  4. EIP 55906. _INI Method in BOARD\EM\ACPI\oemDSDT.asl Removed.
  5. EIP 62200. Added #pragma statements to declaration of BOOT_SCRIPT_SMBUS_EXECUTE_32 and BOOT_SCRIPT_SMBUS_EXECUTE structures.
Files changed for EIP fixes:

AcpiCore.c (EIP 53334, EIP60372, EIP 60633, EIP 60634, EIP 56526, )
Acpi.sdl (EIP 60372)
AcpiS3Save.c (EIP 58481)
ACPI.mak (EIP 56526)
BootScriptPrivate.h (EIP 56650, EIP 62200)
BootScriptExecuter.c (EIP56650, EIP60727)
AcpiCore.h (EIP 56526)
OemDsdt.asl (EIP 55906)
BootScriptCommon.h, BootScriptSave.c and BootScriptSave.h (EIP 56650)
EIP 56526 - Added following files: AcpiSdtPrivate.h; Aml.c; AmlChild.c; AmlNamespace.c; AmlOption.c; AmlString.c. Protocol\AcpiSystemDescriptionTable.h.
Known issues and limitations in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
Installation of different OS was performed to check functionality. New protocols was tested during S3 resume.
Validation Testing:
NONE
Release History:
Release_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: ACPI
Component Reference Name: ACPI
Component Type: eModule
Release Date: 2011-12-30
Source Control Label: 4.6.4.0_ACPI_45
Source Control Location: Alaska;$/Alaska/BIN/Modules/ACPI/Template

Dependencies
AMI_BOARD_INFO_PROTOCOL_GUID, if AmiBoardInfo_SUPPORT == 1; if AmiBoardInfo_SUPPORT == 0 - NONE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:

The purposes of ACPI module are:
· Automatically build a minimal set of ACPI tables: MADT, FACS, FACP and FPDT.
· Collect system information that used for dynamic update of DSDT (AMLUPD.ASL) and might get changed, and information needed for creation of MADT.
· Provide an interface for other drivers to add update and delete ACPI tables.
· Provide an interface for other drivers to save S3 boot script, which will be executed on S3 resume.
· Create root ACPI tables (RSDT, XSDT) and RSDT_PTR.
· Create a System Configuration Table entry with ACPI2.0 GUID. (Refer to the ACPI Specification for additional information and GUID value).
NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

Filename | Description
ACPI Board files | ProjectRoot\Board\EM\ACPI
ACPI.cif | ACPI Module cif file, containing all ACPI submodules and files
ACPI.chm | ACPI chm file, containing release notes and information about eModule
ACPIBSP.CIF | ACPI Board subcomponent cif file, containing all ACPI board-specific submodules and files
ACPI.sdl | ACPI Module SDL tokens file (modified by VeB)
ACPI.mak | ACPI Module MAK file (builds Module and all it's components)
ACPI.dxs | ACPI Driver dependency file
ACPI.sd | ACPI Driver Setup Screens definition file
ACPI.uni | ACPI Driver Setup Strings definition file (in UNICODE format)
OEM_ACPI.C | OEM Specific ACPI functions implementation.
OEM_ACPI.h | OEM Specific ACPI definitions
ASL Board files | ProjectRoot\Board\EM\ACPI
ASLBSP.CIF | Cif file containing the list of all board specific asl files
OEMRMISC.asl | OEM Specific ASL Resources definitions
OEMDSDT.asl | OEM Specific ACPI ASL Objects
ACPI Core files | ProjectRoot\Core\EM\ACPI
ACPICORE.CIF | Cif file containing the list of all ACPI core files and subcomponents
AcpiCore.c | Main ACPI Driver File. It has ACPI Driver entry point, ACPISupport Protocol and ACPITable Protocol.
AcpiCore.h | Main ACPI Driver Specific Definitions
mptable.c | MP table builder functions implementation
MpPciIrq.asm | Includes MPS related tables, generated by AMISDL
mptable.h | Header file for MP table builder
AcpiS3.h | Definitions for S3 Save\Resume Support. (left in AcpiCore component for backward computability)
AcpiSdtPrivate.h | DACPI SDT protocol Private data Definitions.
Aml.c | Generic AML Parsing functions.
AmlChild.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlNamespace.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlOption.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlString.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AcpiSdt.c | ACPI SDT protocol Implementation.
Generic ASL files | ProjectRoot\Core\EM\ACPI
ASLCORE.CIF | Cif file containing the list of all core asl files
Uart4ir.asl | Generic ASL Implementation of COM4 Device Object with IR support
Uart4.asl | Generic ASL Implementation of COM4 Device Object
Uart3ir.asl | Generic ASL Implementation of COM3 Device Object with IR support
Uart3.asl | Generic ASL Implementation of COM3 Device Object
Uart2ir.asl | Generic ASL Implementation of COM2 Device Object with IR support
Uart2.asl | Generic ASL Implementation of COM2 Device Object
Uart1ir.asl | Generic ASL Implementation of COM1 Device Object with IR support
Uart1.asl | Generic ASL Implementation of COM1 Device Object
SMB_EC.asl | Generic ACPI Embedded controller SMBus interface methods
PS2KB.asl | Generic ASL Implementation of PS2 Keyboard Device Object
PS2MS.asl | Generic ASL Implementation of PS2 Mouse Device Object
MIDI.asl | Generic ASL Implementation of MPU 401 Device Object
MAX1617R.asl | ASL interface to MAX1617 thermal sensor over SMBus. Remote sensor
MAX1617L.asl | ASL interface to MAX1617 thermal sensor over SMBus. Local sensor
MathCo.asl | Generic ASL Implementation of Math Coprocessor Device Object
IRDA.asl | Generic ASL Implementation of IR Data Access Device
Lpte.asl | Generic ASL Implementation of Parallel port LPT or ECP(Extended mode) Device Object
LM75.asl | ASL interface to LM75 thermal sensor over SMBus
GameMpu.asl | ASL Implementation of Combined Game & Midi Logical Device
game.asl | Generic ASL Implementation of Game Port Device
FDC.asl | Generic ASL Implementation of Floppy Disk Controller Device Object
CIR.asl | Generic ASL Implementation of Standalone InfraRed Device Object
RMISK.asl | Generic ASL Implementation of Legacy ISA Resource Template
AMLUPD.asl | Generic ASL Name Objects used to dynamically update System's DSDT
ASLLIB.asl | AML Libraty - Globaly used ASL Methods and Objects
OSCM.asl | Generic Implementation of _OSC ASL Method
rmisc.asl | Generic ASL Implementation of SoundBlaster compatable audio Device
PCIEACCESS.asl | Generic ASL Implementation of PCIe access routines
PCIEHP.asl | Generic ASL Implementation OF PCIe Hotplug support
RbRes.asl | Generic method to report root bridge resources.
S3 Support related | ProjectRoot\Core\EM\S3
S3Support.CIF | S3 Suport subcomponent cif file, containing all S3 related submodules and files
S3Support.sdl | S3 Support related sdl file
S3 Save Section | ProjectRoot\Core\EM\S3
S3Save.CIF | S3 Save subcomponent cif file, containing all files related to BootScript saving
S3Save.sdl | S3 Save related sdl file
S3Save.mak | S3save Sub-Module MAK file (builds Sub-Module and all it's components)
AcpiS3Save.dxs | Dependency file for S3 BootScript Save
AcpiS3Save.c | ACPI S3 Data Save Support for DXE
BootScriptSave.c | Implementation of BootScriptSave Driver
BootScriptPrivate.h | Definitions BootScript Drivers
AcpiPeiS3Func.c | S3 Resume Support at PEI phase
SmmS3Save.dxs | Dependency file for Smm S3 Save
S3 Restore Section | ProjectRoot\Core\EM\S3
S3Restore.CIF | S3 Restore subcomponent cif file, containing all files connected with resuming from S3
S3Restore.sdl | S3 Restore related sdl file
S3Restore.mak | S3 Restore Sub-Module MAK file (builds Sub-Module and all it's components)
S3Restore.dxs | Dependency file for S3 BootScript Restore
AcpiS3Wake.asm | Low level thunk for S3 resume
S3Resume.c | ACPI S3 Resume Support DXE
AcpiPeiS3Func.c | ACPI S3 PEI support functions
AcpiPeiS3Func.h | ACPI S3 PEI support related defenitions
BootScriptExecuter.c | Implementation of BootScriptExecuter Driver
Common S3 Related Section | ProjectRoot\Include
S3Common.CIF | S3Common subcomponent cif file, containing files that are coomon for all S3 related tasks
S3SaveState.h | S3 Save State Protocol defenitions
S3SmmSaveState.h | S3 SMM Save State Protocol defenitions
Global ACPI Headers | ProjectRoot\Include
ACPI.h | Generic ACPI Definitions common for all Specs
ACPI11.h | ACPI Spec version 1.1b Support Definitions
ACPI20.h | ACPI Spec version 2.0 Support Definitions
ACPI30.h | ACPI Spec version 3.0 Support Definitions
ACPIRes.h | ACPI Resource descriptors Definitions used in AML and related functions prototypes
BootScriptCommon.h | Common Boot Script related definitions and prototypes
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_34, Dated: 2010-10-06
Visual eBios: RSS.5.70.0171, Dated: 2010-10-04
Compiler Tool(s): WinDDK 7600.16385.1; DDK 3790.1830
New features added in this label:
  1. EIP 64296. Creation of FPDT table added. Table points to structures filled with timer values on number of events.
  2. EIP 64108. ACPI eModule updated to be compliant with PI 1.2, and UEFI 2.3.1 specifications.
  3. EIP 71372. EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE added.
  4. EIP 71374. New Setup Option for S3 sleep state policy introduced.
General Bug Fixes:
  1. EIP 64420. An extra {} was removed from declarations of GUID EFI_S3_SAVE_STATE_PROTOCOL_GUID and EFI_S3_SMM_SAVE_STATE_PROTOCOL_GUID .
  2. EIP 67951. Due to bug in OEM Activation routine last table in XSDT was deleted if OEM Activation function is ON. Fixed.
  3. EIP 78247. TablePointer was updated uncorectly during CloseTable - fixed.
  4. EIP 76814. MP_TABLE_LEGACY_REGION_LOCATION = 0 causes build error. Unreferenced variable: LegacyBiosProtocol - fixed.
EIP addressed in this label:
  1. EIP 71540. Problem of "any amount of spaces in table IDs replaced with only one" addressed.
  2. EIP 76419. TPL level chang to TPL_APPLICATION removed in ACPI Table Protocol functions.
Files changed for EIP fixes:

AcpiCore.c (EIP 67951, EIP 64108, EIP 71374, EIP 71540, EIP 64296, EIP 76419)
AcpiS3Save.c (EIP 64108)
ACPI.mak (EIP 71540)
BootScriptExecuter.c (EIP 64108, EIP 71372)
BootScriptSave.c (EIP 71372, EIP 71540)
ACPI.sd and ACPI.uni (EIP 71374)
S3SaveState.h and S3SmmSaveState.h (EIP 64420)
S3Resume.c (EIP 64296, EIP 64108)
mptable.c (EIP 64108, EIP 76814)
S3Resume.dxs and AcpiPeiS3Func.c (EIP 64108)
Known issues and limitations in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
Installation of different OS was performed to check functionality. New FPDT table was tested by reading with RWEverything. Bug fixes confirmed in corresponding EIPs
Validation Testing:
Tested by BQA during Core 4.6.5.2 validation.
Release History:
Release_44

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: ACPI
Component Reference Name: ACPI
Component Type: eModule
Release Date: 2012-08-10
Source Control Label: 4.6.4.0_ACPI_46
Source Control Location: Alaska;$/Alaska/BIN/Modules/ACPI/Template

Dependencies
AMI_BOARD_INFO_PROTOCOL_GUID, if AmiBoardInfo_SUPPORT == 1; if AmiBoardInfo_SUPPORT == 0 - NONE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:

The purposes of ACPI module are:
· Automatically build a minimal set of ACPI tables: MADT, FACS, FACP and FPDT.
· Collect system information that used for dynamic update of DSDT (AMLUPD.ASL) and might get changed, and information needed for creation of MADT.
· Provide an interface for other drivers to add update and delete ACPI tables.
· Provide an interface for other drivers to save S3 boot script, which will be executed on S3 resume.
· Create root ACPI tables (RSDT, XSDT) and RSDT_PTR.
· Create a System Configuration Table entry with ACPI2.0 GUID. (Refer to the ACPI Specification for additional information and GUID value).
NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

Filename | Description
ACPI Board files | ProjectRoot\Board\EM\ACPI
ACPI.cif | ACPI Module cif file, containing all ACPI submodules and files
ACPI.chm | ACPI chm file, containing release notes and information about eModule
ACPIBSP.CIF | ACPI Board subcomponent cif file, containing all ACPI board-specific submodules and files
ACPI.sdl | ACPI Module SDL tokens file (modified by VeB)
ACPI.mak | ACPI Module MAK file (builds Module and all it's components)
ACPI.dxs | ACPI Driver dependency file
ACPI.sd | ACPI Driver Setup Screens definition file
ACPI.uni | ACPI Driver Setup Strings definition file (in UNICODE format)
OEM_ACPI.C | OEM Specific ACPI functions implementation.
OEM_ACPI.h | OEM Specific ACPI definitions
ASL Board files | ProjectRoot\Board\EM\ACPI
ASLBSP.CIF | Cif file containing the list of all board specific asl files
OEMRMISC.asl | OEM Specific ASL Resources definitions
OEMDSDT.asl | OEM Specific ACPI ASL Objects
ACPI Core files | ProjectRoot\Core\EM\ACPI
ACPICORE.CIF | Cif file containing the list of all ACPI core files and subcomponents
AcpiCore.c | Main ACPI Driver File. It has ACPI Driver entry point, ACPISupport Protocol and ACPITable Protocol.
AcpiCore.h | Main ACPI Driver Specific Definitions
mptable.c | MP table builder functions implementation
MpPciIrq.asm | Includes MPS related tables, generated by AMISDL
mptable.h | Header file for MP table builder
AcpiS3.h | Definitions for S3 Save\Resume Support. (left in AcpiCore component for backward computability)
AcpiSdtPrivate.h | DACPI SDT protocol Private data Definitions.
Aml.c | Generic AML Parsing functions.
AmlChild.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlNamespace.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlOption.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlString.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AcpiSdt.c | ACPI SDT protocol Implementation.
Generic ASL files | ProjectRoot\Core\EM\ACPI
ASLCORE.CIF | Cif file containing the list of all core asl files
Uart4ir.asl | Generic ASL Implementation of COM4 Device Object with IR support
Uart4.asl | Generic ASL Implementation of COM4 Device Object
Uart3ir.asl | Generic ASL Implementation of COM3 Device Object with IR support
Uart3.asl | Generic ASL Implementation of COM3 Device Object
Uart2ir.asl | Generic ASL Implementation of COM2 Device Object with IR support
Uart2.asl | Generic ASL Implementation of COM2 Device Object
Uart1ir.asl | Generic ASL Implementation of COM1 Device Object with IR support
Uart1.asl | Generic ASL Implementation of COM1 Device Object
SMB_EC.asl | Generic ACPI Embedded controller SMBus interface methods
PS2KB.asl | Generic ASL Implementation of PS2 Keyboard Device Object
PS2MS.asl | Generic ASL Implementation of PS2 Mouse Device Object
MIDI.asl | Generic ASL Implementation of MPU 401 Device Object
MAX1617R.asl | ASL interface to MAX1617 thermal sensor over SMBus. Remote sensor
MAX1617L.asl | ASL interface to MAX1617 thermal sensor over SMBus. Local sensor
MathCo.asl | Generic ASL Implementation of Math Coprocessor Device Object
IRDA.asl | Generic ASL Implementation of IR Data Access Device
Lpte.asl | Generic ASL Implementation of Parallel port LPT or ECP(Extended mode) Device Object
LM75.asl | ASL interface to LM75 thermal sensor over SMBus
GameMpu.asl | ASL Implementation of Combined Game & Midi Logical Device
game.asl | Generic ASL Implementation of Game Port Device
FDC.asl | Generic ASL Implementation of Floppy Disk Controller Device Object
CIR.asl | Generic ASL Implementation of Standalone InfraRed Device Object
RMISK.asl | Generic ASL Implementation of Legacy ISA Resource Template
AMLUPD.asl | Generic ASL Name Objects used to dynamically update System's DSDT
ASLLIB.asl | AML Libraty - Globaly used ASL Methods and Objects
OSCM.asl | Generic Implementation of _OSC ASL Method
rmisc.asl | Generic ASL Implementation of SoundBlaster compatable audio Device
PCIEACCESS.asl | Generic ASL Implementation of PCIe access routines
PCIEHP.asl | Generic ASL Implementation OF PCIe Hotplug support
RbRes.asl | Generic method to report root bridge resources.
S3 Support related | ProjectRoot\Core\EM\S3
S3Support.CIF | S3 Suport subcomponent cif file, containing all S3 related submodules and files
S3Support.sdl | S3 Support related sdl file
S3 Save Section | ProjectRoot\Core\EM\S3
S3Save.CIF | S3 Save subcomponent cif file, containing all files related to BootScript saving
S3Save.sdl | S3 Save related sdl file
S3Save.mak | S3save Sub-Module MAK file (builds Sub-Module and all it's components)
AcpiS3Save.dxs | Dependency file for S3 BootScript Save
AcpiS3Save.c | ACPI S3 Data Save Support for DXE
BootScriptSave.c | Implementation of BootScriptSave Driver
BootScriptPrivate.h | Definitions BootScript Drivers
AcpiPeiS3Func.c | S3 Resume Support at PEI phase
SmmS3Save.dxs | Dependency file for Smm S3 Save
S3 Restore Section | ProjectRoot\Core\EM\S3
S3Restore.CIF | S3 Restore subcomponent cif file, containing all files connected with resuming from S3
S3Restore.sdl | S3 Restore related sdl file
S3Restore.mak | S3 Restore Sub-Module MAK file (builds Sub-Module and all it's components)
S3Restore.dxs | Dependency file for S3 BootScript Restore
AcpiS3Wake.asm | Low level thunk for S3 resume
S3Resume.c | ACPI S3 Resume Support DXE
AcpiPeiS3Func.c | ACPI S3 PEI support functions
AcpiPeiS3Func.h | ACPI S3 PEI support related defenitions
BootScriptExecuter.c | Implementation of BootScriptExecuter Driver
Common S3 Related Section | ProjectRoot\Include
S3Common.CIF | S3Common subcomponent cif file, containing files that are coomon for all S3 related tasks
S3SaveState.h | S3 Save State Protocol defenitions
S3SmmSaveState.h | S3 SMM Save State Protocol defenitions
Global ACPI Headers | ProjectRoot\Include
ACPI.h | Generic ACPI Definitions common for all Specs
ACPI11.h | ACPI Spec version 1.1b Support Definitions
ACPI20.h | ACPI Spec version 2.0 Support Definitions
ACPI30.h | ACPI Spec version 3.0 Support Definitions
ACPIRes.h | ACPI Resource descriptors Definitions used in AML and related functions prototypes
BootScriptCommon.h | Common Boot Script related definitions and prototypes
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_40, Dated: 2012-07-03
Visual eBios: RSS.5.73.0239, Dated: 2012-06-21
Compiler Tool(s): WinDDK 7600.16385.1; DDK 3790.1830
New features added in this label:
  1. EIP 80854. Global _OSC control method is not available to read system wide capabilities in multiple ASL files.
  2. EIP 89379. Added token for support changing iasl compiler.
  3. EIP 88889. FACP for ver 5.0 structure added, FPDT mesurment accuracy improved.
  4. EIP 87370. Operation System Vendor String for Win8 added.
General Bug Fixes:
  1. EIP 86325. Bit 4 in IAPC_BOOT_ARCH flag now can be set by disabling PciExpNative in BIOS setup .
  2. EIP 88478. ACPI error when booting to Windows with 4G+ memory.
  3. EIP 90322. Improper guid for FPDT_Variable. EFI_GLOBAL_VARIABLE guid is changed to AMI_GLOBAL_VARIABLE_GUID defined in AmiLib.h.
  4. EIP 89643. Incorrect usage of EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST in previous Ppi descriptor entree fixed.
EIP addressed in this label:
  1. EIP 88686. Tokens for _CID and _HID added to pass the WHCK.
  2. EIP 81670. ACPI settings "goto define" added.
  3. EIP 79240. Added Variable to handle the situation when MP table created multiple times.
  4. EIP 80870. MP table entry has a zero sized Address Length - handling added.
  5. EIP 82016. In ASL macro FixedIO changed to IO.
  6. EIP 92404. ACPI method _OSI("Linux") changed.
  7. EIP 93878. T_ACPI_OEM_ID and T_ACPI_OEM_TBL_ID improved to handle multiple leading or/and trailing spaces.
Files changed for EIP fixes:
    AcpiCore.c (EIP 86325, EIP88478, EIP90322, EIP88889, EIP90322)
    ACPI.sdl (EIP 80854, EIP 89379, EIP 88686, EIP 88889)
    ACPI.sd (EIP 81670)
    ACPI.mak (EIP 93878)
    mptable.c (EIP 80870, EIP 79240)
    ps2kbd.asl (EIP 88686, EIP 82016)
    PS2ms.asl (EIP 88686)
    Fdc.asl (EIP 89379)
    asllib.asl (EIP 87370, EIP 92404)
    S3Resume.c (EIP 89643, EIP 90322, EIP 90322)
Known issues and limitations in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
Installation of different OS was performed to check functionality. New FPDT table was tested by reading with RWEverything. Bug fixes confirmed in corresponding EIPs
Validation Testing:
Tested by BQA during Core validation.
Release History:
Release_45

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: ACPI
Component Reference Name: ACPI
Component Type: eModule
Release Date: 2013-08-29
Source Control Label: 4.6.5.0_ACPI_47
Source Control Location: Alaska;$/Alaska/BIN/Modules/ACPI/Template

Dependencies
AMI_BOARD_INFO_PROTOCOL_GUID, if AmiBoardInfo_SUPPORT == 1; if AmiBoardInfo_SUPPORT == 0 - NONE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:

The purposes of ACPI module are:
· Automatically build a minimal set of ACPI tables: MADT, FACS, FACP and FPDT.
· Collect system information that used for dynamic update of DSDT (AMLUPD.ASL) and might get changed, and information needed for creation of MADT.
· Provide an interface for other drivers to add update and delete ACPI tables.
· Provide an interface for other drivers to save S3 boot script, which will be executed on S3 resume.
· Create root ACPI tables (RSDT, XSDT) and RSDT_PTR.
· Create a System Configuration Table entry with ACPI2.0 GUID. (Refer to the ACPI Specification for additional information and GUID value).
NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

Filename | Description
ACPI Board files | ProjectRoot\Board\EM\ACPI
ACPI.cif | ACPI Module cif file, containing all ACPI submodules and files
ACPI.chm | ACPI chm file, containing release notes and information about eModule
ACPIBSP.CIF | ACPI Board subcomponent cif file, containing all ACPI board-specific submodules and files
ACPI.sdl | ACPI Module SDL tokens file (modified by VeB)
ACPI.mak | ACPI Module MAK file (builds Module and all it's components)
ACPI.dxs | ACPI Driver dependency file
ACPI.sd | ACPI Driver Setup Screens definition file
ACPI.uni | ACPI Driver Setup Strings definition file (in UNICODE format)
OEM_ACPI.C | OEM Specific ACPI functions implementation.
OEM_ACPI.h | OEM Specific ACPI definitions
ASL Board files | ProjectRoot\Board\EM\ACPI
ASLBSP.CIF | Cif file containing the list of all board specific asl files
OEMRMISC.asl | OEM Specific ASL Resources definitions
OEMDSDT.asl | OEM Specific ACPI ASL Objects
ACPI Core files | ProjectRoot\Core\EM\ACPI
ACPICORE.CIF | Cif file containing the list of all ACPI core files and subcomponents
AcpiCore.c | Main ACPI Driver File. It has ACPI Driver entry point, ACPISupport Protocol and ACPITable Protocol.
AcpiCore.h | Main ACPI Driver Specific Definitions
mptable.c | MP table builder functions implementation
MpPciIrq.asm | Includes MPS related tables, generated by AMISDL
mptable.h | Header file for MP table builder
AcpiS3.h | Definitions for S3 Save\Resume Support. (left in AcpiCore component for backward computability)
AcpiSdtPrivate.h | DACPI SDT protocol Private data Definitions.
Aml.c | Generic AML Parsing functions.
AmlChild.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlNamespace.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlOption.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlString.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AcpiSdt.c | ACPI SDT protocol Implementation.
Generic ASL files | ProjectRoot\Core\EM\ACPI
ASLCORE.CIF | Cif file containing the list of all core asl files
Uart4ir.asl | Generic ASL Implementation of COM4 Device Object with IR support
Uart4.asl | Generic ASL Implementation of COM4 Device Object
Uart3ir.asl | Generic ASL Implementation of COM3 Device Object with IR support
Uart3.asl | Generic ASL Implementation of COM3 Device Object
Uart2ir.asl | Generic ASL Implementation of COM2 Device Object with IR support
Uart2.asl | Generic ASL Implementation of COM2 Device Object
Uart1ir.asl | Generic ASL Implementation of COM1 Device Object with IR support
Uart1.asl | Generic ASL Implementation of COM1 Device Object
SMB_EC.asl | Generic ACPI Embedded controller SMBus interface methods
PS2KB.asl | Generic ASL Implementation of PS2 Keyboard Device Object
PS2MS.asl | Generic ASL Implementation of PS2 Mouse Device Object
MIDI.asl | Generic ASL Implementation of MPU 401 Device Object
MAX1617R.asl | ASL interface to MAX1617 thermal sensor over SMBus. Remote sensor
MAX1617L.asl | ASL interface to MAX1617 thermal sensor over SMBus. Local sensor
MathCo.asl | Generic ASL Implementation of Math Coprocessor Device Object
IRDA.asl | Generic ASL Implementation of IR Data Access Device
Lpte.asl | Generic ASL Implementation of Parallel port LPT or ECP(Extended mode) Device Object
LM75.asl | ASL interface to LM75 thermal sensor over SMBus
GameMpu.asl | ASL Implementation of Combined Game & Midi Logical Device
game.asl | Generic ASL Implementation of Game Port Device
FDC.asl | Generic ASL Implementation of Floppy Disk Controller Device Object
CIR.asl | Generic ASL Implementation of Standalone InfraRed Device Object
RMISK.asl | Generic ASL Implementation of Legacy ISA Resource Template
AMLUPD.asl | Generic ASL Name Objects used to dynamically update System's DSDT
ASLLIB.asl | AML Libraty - Globaly used ASL Methods and Objects
OSCM.asl | Generic Implementation of _OSC ASL Method
rmisc.asl | Generic ASL Implementation of SoundBlaster compatable audio Device
PCIEACCESS.asl | Generic ASL Implementation of PCIe access routines
PCIEHP.asl | Generic ASL Implementation OF PCIe Hotplug support
RbRes.asl | Generic method to report root bridge resources.
S3 Support related | ProjectRoot\Core\EM\S3
S3Support.CIF | S3 Suport subcomponent cif file, containing all S3 related submodules and files
S3Support.sdl | S3 Support related sdl file
S3 Save Section | ProjectRoot\Core\EM\S3
S3Save.CIF | S3 Save subcomponent cif file, containing all files related to BootScript saving
S3Save.sdl | S3 Save related sdl file
S3Save.mak | S3save Sub-Module MAK file (builds Sub-Module and all it's components)
AcpiS3Save.dxs | Dependency file for S3 BootScript Save
AcpiS3Save.c | ACPI S3 Data Save Support for DXE
BootScriptSave.c | Implementation of BootScriptSave Driver
BootScriptPrivate.h | Definitions BootScript Drivers
AcpiPeiS3Func.c | S3 Resume Support at PEI phase
SmmS3Save.dxs | Dependency file for Smm S3 Save
S3 Restore Section | ProjectRoot\Core\EM\S3
S3Restore.CIF | S3 Restore subcomponent cif file, containing all files connected with resuming from S3
S3Restore.sdl | S3 Restore related sdl file
S3Restore.mak | S3 Restore Sub-Module MAK file (builds Sub-Module and all it's components)
S3Restore.dxs | Dependency file for S3 BootScript Restore
AcpiS3Wake.asm | Low level thunk for S3 resume
S3Resume.c | ACPI S3 Resume Support DXE
AcpiPeiS3Func.c | ACPI S3 PEI support functions
AcpiPeiS3Func.h | ACPI S3 PEI support related defenitions
BootScriptExecuter.c | Implementation of BootScriptExecuter Driver
Common S3 Related Section | ProjectRoot\Include
S3Common.CIF | S3Common subcomponent cif file, containing files that are coomon for all S3 related tasks
S3SaveState.h | S3 Save State Protocol defenitions
S3SmmSaveState.h | S3 SMM Save State Protocol defenitions
Global ACPI Headers | ProjectRoot\Include
ACPI.h | Generic ACPI Definitions common for all Specs
ACPI11.h | ACPI Spec version 1.1b Support Definitions
ACPI20.h | ACPI Spec version 2.0 Support Definitions
ACPI30.h | ACPI Spec version 3.0 Support Definitions
ACPIRes.h | ACPI Resource descriptors Definitions used in AML and related functions prototypes
BootScriptCommon.h | Common Boot Script related definitions and prototypes
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-04-21
Visual eBios: RSS.5.73.0244, Dated: 2013-03-19
Compiler Tool(s): WinDDK 7600.16385.1; DDK 3790.1830
New features added in this label:
  1. EIP 101547. Support for uninstalling MADT with ACPI Table Protocol.
  2. EIP 107890. Create a token that it define the Bot and Top of Io APIC address.
  3. EIP 125640. Adding Win 8.1 to the OS list in OSFL method.
General Bug Fixes:
  1. EIP 125666. Wrong typecasting in Registernotify function removed.
  2. EIP 130457. Allocating memory for DSDT always under 4 Gig to fix issue when in 1.b mode DSDT is allocated under 4 Gig.
  3. EIP 108375. In SdtOpenSdtTable function error in "if" condition after locating memory fixed.
  4. EIP 104782. Pointer to ACPI_VARIABLE_SET was not initialized in AllocTableEntry() function. Fixed.
EIP addressed in this label:
  1. EIP 109290. Minor performance issues found by CppCheck in ACPI eModule corrected.
  2. EIP 109790. Code check result - Possible Null pointer access removed.
  3. EIP 128054. USB ports are disabled after resume from S3 with special steps. Fixed by using a different type of memory for BootScript.
  4. EIP 95347. Synchronized usage of Allocate/Free memory operations on pool/page basis.
Files changed for EIP fixes:
    AcpiCore.c (EIP101547, EIP109290, EIP125666, EIP130457)
    AcpiCore.h (EIP107890)
    mptable.h (EIP107890)
    mptable.c (EIP109290)
    asllib.asl (EIP125640)
    AmlString.c (EIP109290)
    BootScriptSave.c (EIP109290, EIP109790, EIP128054, EIP95347, EIP104782)
    BootScriptExecuter.c (EIP109290)
    AcpiSdt.c (EIP108375)
Known issues and limitations in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
Installation of different OS was performed to check functionality. New FPDT table was tested by reading with RWEverything. Bug fixes confirmed in corresponding EIPs
Validation Testing:
Tested by BQA during Core validation.
Release History:
Release_46
Release_45

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: ACPI
Component Reference Name: ACPI
Component Type: eModule
Release Date: 2014-03-12
Source Control Label: 4.6.5.0_ACPI_48
Source Control Location: Alaska;$/Alaska/BIN/Modules/ACPI/Template

Dependencies
AMI_BOARD_INFO_PROTOCOL_GUID, if AmiBoardInfo_SUPPORT == 1; if AmiBoardInfo_SUPPORT == 0 - NONE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:

The purposes of ACPI module are:
· Automatically build a minimal set of ACPI tables: MADT, FACS, FACP and FPDT.
· Collect system information that used for dynamic update of DSDT (AMLUPD.ASL) and might get changed, and information needed for creation of MADT.
· Provide an interface for other drivers to add update and delete ACPI tables.
· Provide an interface for other drivers to save S3 boot script, which will be executed on S3 resume.
· Create root ACPI tables (RSDT, XSDT) and RSDT_PTR.
· Create a System Configuration Table entry with ACPI2.0 GUID. (Refer to the ACPI Specification for additional information and GUID value).
NOTE: Tables installed using ACPI Table Protocol are not visible to the ACPI Support Protocol. This is done to protect tables installed with ACPI Table Protocol from deletion and modification by the other modules.

Filename | Description
ACPI Board files | ProjectRoot\Board\EM\ACPI
ACPI.cif | ACPI Module cif file, containing all ACPI submodules and files
ACPI.chm | ACPI chm file, containing release notes and information about eModule
ACPIBSP.CIF | ACPI Board subcomponent cif file, containing all ACPI board-specific submodules and files
ACPI.sdl | ACPI Module SDL tokens file (modified by VeB)
ACPI.mak | ACPI Module MAK file (builds Module and all it's components)
ACPI.dxs | ACPI Driver dependency file
ACPI.sd | ACPI Driver Setup Screens definition file
ACPI.uni | ACPI Driver Setup Strings definition file (in UNICODE format)
OEM_ACPI.C | OEM Specific ACPI functions implementation.
OEM_ACPI.h | OEM Specific ACPI definitions
ASL Board files | ProjectRoot\Board\EM\ACPI
ASLBSP.CIF | Cif file containing the list of all board specific asl files
OEMRMISC.asl | OEM Specific ASL Resources definitions
OEMDSDT.asl | OEM Specific ACPI ASL Objects
ACPI Core files | ProjectRoot\Core\EM\ACPI
ACPICORE.CIF | Cif file containing the list of all ACPI core files and subcomponents
AcpiCore.c | Main ACPI Driver File. It has ACPI Driver entry point, ACPISupport Protocol and ACPITable Protocol.
AcpiCore.h | Main ACPI Driver Specific Definitions
mptable.c | MP table builder functions implementation
MpPciIrq.asm | Includes MPS related tables, generated by AMISDL
mptable.h | Header file for MP table builder
AcpiS3.h | Definitions for S3 Save\Resume Support. (left in AcpiCore component for backward computability)
AcpiSdtPrivate.h | DACPI SDT protocol Private data Definitions.
Aml.c | Generic AML Parsing functions.
AmlChild.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlNamespace.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlOption.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AmlString.c | ACPI AML Name space parsing/manipulation functions for ACPI SDT.
AcpiSdt.c | ACPI SDT protocol Implementation.
Generic ASL files | ProjectRoot\Core\EM\ACPI
ASLCORE.CIF | Cif file containing the list of all core asl files
Uart4ir.asl | Generic ASL Implementation of COM4 Device Object with IR support
Uart4.asl | Generic ASL Implementation of COM4 Device Object
Uart3ir.asl | Generic ASL Implementation of COM3 Device Object with IR support
Uart3.asl | Generic ASL Implementation of COM3 Device Object
Uart2ir.asl | Generic ASL Implementation of COM2 Device Object with IR support
Uart2.asl | Generic ASL Implementation of COM2 Device Object
Uart1ir.asl | Generic ASL Implementation of COM1 Device Object with IR support
Uart1.asl | Generic ASL Implementation of COM1 Device Object
SMB_EC.asl | Generic ACPI Embedded controller SMBus interface methods
PS2KB.asl | Generic ASL Implementation of PS2 Keyboard Device Object
PS2MS.asl | Generic ASL Implementation of PS2 Mouse Device Object
MIDI.asl | Generic ASL Implementation of MPU 401 Device Object
MAX1617R.asl | ASL interface to MAX1617 thermal sensor over SMBus. Remote sensor
MAX1617L.asl | ASL interface to MAX1617 thermal sensor over SMBus. Local sensor
MathCo.asl | Generic ASL Implementation of Math Coprocessor Device Object
IRDA.asl | Generic ASL Implementation of IR Data Access Device
Lpte.asl | Generic ASL Implementation of Parallel port LPT or ECP(Extended mode) Device Object
LM75.asl | ASL interface to LM75 thermal sensor over SMBus
GameMpu.asl | ASL Implementation of Combined Game & Midi Logical Device
game.asl | Generic ASL Implementation of Game Port Device
FDC.asl | Generic ASL Implementation of Floppy Disk Controller Device Object
CIR.asl | Generic ASL Implementation of Standalone InfraRed Device Object
RMISK.asl | Generic ASL Implementation of Legacy ISA Resource Template
AMLUPD.asl | Generic ASL Name Objects used to dynamically update System's DSDT
ASLLIB.asl | AML Libraty - Globaly used ASL Methods and Objects
OSCM.asl | Generic Implementation of _OSC ASL Method
rmisc.asl | Generic ASL Implementation of SoundBlaster compatable audio Device
PCIEACCESS.asl | Generic ASL Implementation of PCIe access routines
PCIEHP.asl | Generic ASL Implementation OF PCIe Hotplug support
RbRes.asl | Generic method to report root bridge resources.
TimeAndAlarm.asl | Sample implementation of Acpi Time and Alarm device. Porting may be needed.
Time and Alarm related | ProjectRoot\Core\EM\ACPI
AtadSmi.c | Smi handler for Acpi Time and Alarm device.
AtadSmi.h | Header file with definitions used by Smi handler for Acpi Time and Alarm device.
AtadSmi.dxs | Dependency file of Smi handler for Acpi Time and Alarm device.
AtadSmi.mak | Make file of Smi handler for Acpi Time and Alarm device.
AtadSmi.sdl | Sdl file of Smi handler for Acpi Time and Alarm device.
S3 Support related | ProjectRoot\Core\EM\S3
S3Support.CIF | S3 Suport subcomponent cif file, containing all S3 related submodules and files
S3Support.sdl | S3 Support related sdl file
S3 Save Section | ProjectRoot\Core\EM\S3
S3Save.CIF | S3 Save subcomponent cif file, containing all files related to BootScript saving
S3Save.sdl | S3 Save related sdl file
S3Save.mak | S3save Sub-Module MAK file (builds Sub-Module and all it's components)
AcpiS3Save.dxs | Dependency file for S3 BootScript Save
AcpiS3Save.c | ACPI S3 Data Save Support for DXE
BootScriptSave.c | Implementation of BootScriptSave Driver
BootScriptPrivate.h | Definitions BootScript Drivers
AcpiPeiS3Func.c | S3 Resume Support at PEI phase
SmmS3Save.dxs | Dependency file for Smm S3 Save
S3 Restore Section | ProjectRoot\Core\EM\S3
S3Restore.CIF | S3 Restore subcomponent cif file, containing all files connected with resuming from S3
S3Restore.sdl | S3 Restore related sdl file
S3Restore.mak | S3 Restore Sub-Module MAK file (builds Sub-Module and all it's components)
S3Restore.dxs | Dependency file for S3 BootScript Restore
AcpiS3Wake.asm | Low level thunk for S3 resume
S3Resume.c | ACPI S3 Resume Support DXE
AcpiPeiS3Func.c | ACPI S3 PEI support functions
AcpiPeiS3Func.h | ACPI S3 PEI support related defenitions
BootScriptExecuter.c | Implementation of BootScriptExecuter Driver
Common S3 Related Section | ProjectRoot\Include
S3Common.CIF | S3Common subcomponent cif file, containing files that are coomon for all S3 related tasks
S3SaveState.h | S3 Save State Protocol defenitions
S3SmmSaveState.h | S3 SMM Save State Protocol defenitions
Global ACPI Headers | ProjectRoot\Include
ACPI.h | Generic ACPI Definitions common for all Specs
ACPI11.h | ACPI Spec version 1.1b Support Definitions
ACPI20.h | ACPI Spec version 2.0 Support Definitions
ACPI30.h | ACPI Spec version 3.0 Support Definitions
ACPIRes.h | ACPI Resource descriptors Definitions used in AML and related functions prototypes
BootScriptCommon.h | Common Boot Script related definitions and prototypes
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-04-21
Visual eBios: RSS.5.73.0244, Dated: 2013-03-19
Compiler Tool(s): WinDDK 7600.16385.1; DDK 3790.1830
New features added in this label:
  1. EIP 113941. Time and Alarm ACPI device implemented.
  2. EIP 121819. Add FID acpi table.
General Bug Fixes:
  1. NONE.
EIP addressed in this label:
  1. EIP 156376. PREPARE directive is used now to guaranty that AcpiOemElinks.h will be generated as sooner than it may be included in any file.
  2. EIP 138574. Assert in LockLegacyRes removed.
  3. EIP 154308. FirmwarePerformance EFI variable, containing address of FPDT ACPI table attributes changed to Boot Time.
Files changed for EIP fixes:
    AcpiCore.c (EIP113941, EIP138574, EIP121819, EIP154308)
    AcpiCore.h (EIP121819)
    ACPI.mak (EIP156376)
    ASLCORE.CIF (EIP113941)
    ACPI.sdl (EIP113941, EIP156376)
    ACPI.cif (EIP113941)
    S3Resume.c (EIP154308)
    AtadSmi.cif, AtadSmi.sdl, AtadSmi.mak, AtadSmi.dxs, AtadSmi.h, AtadSmi.c, TimeAndAlarm.asl files added (EIP113941)
Known issues and limitations in this label:
There are changes in a usage of T_ACPI_OEM_TBL_ID and T_ACPI_OEM_ID tokens. They are a string value to be filled into ACPI table headers. If you want use spaces as leading or and trailing symbols you must surround the whole expression in '|'. For example | ABC |. This will result in the generation of a #define ACPI_OEM_ID_MAK ' ABC ' in the file Build\AcpiOemElinks.h (created by Acpi.mak file). All tables generated by the Acpi eModule will have the IDs with the values from the generated file. To see how this works, refer to the AcpiCore.c file and search for the string ACPI_OEM_ID_MAK. Some modules which submit their own ACPI tables may use the old method: CONVERT_TO_STRING(T_ACPI_OEM_ID). If they are using this method, either '|' will be included in their table's ID fields, or a build error will occur because the two additional '|' characters will make the string larger than the TableId size of 6 characters. Contact the owners of the offending modules and ask them to use ACPI_OEM_ID_MAK as it is used in AcpiCore.c.
Remaining Issues:
NONE
Unit Testing:
Installation of different OS was performed to check functionality. New FPDT table was tested by reading with RWEverything. Bug fixes confirmed in corresponding EIPs
Validation Testing:
Tested by BQA during Core validation.
Release History:
Release_47
Release_46
Release_45

© American Megatrends Inc.