Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

Advanced Power Management

VIEWS: 13 PAGES: 61

									MSI   MSI
      Micro-Star International




                                 1
            ACPI
Advanced Configuration and Power Interface




          Reporter :Wequalwu
                                             2
Contents

 ACPI Overview
 ASL (ACPI Source Language)
 ACPI Implementer in AWARD BIOS




                                   3
History of Power Management
SL technology - 1989
    First seen on the 386SL and still included in all of today’s Pentium
    and Pentium II processors
    Operating system had no idea of what the power management BIOS
    was up to.
Advanced Power Management - 1991
    Intel & Microsoft co-developed
    OS and power management BIOS could now talk to each other
    No cooperation among system components
    Add-on components do not participate in power management
ACPI (Advanced Configuration and Power Interface) - 1997
    Intel, Toshiba and Microsoft
    Open industry, all encompassing, PC hardware, operating system
    and peripheral device interface specifications
    Primary goal is to let O.S. manage all power activity
                                                                           4
ACPI Introduction
1. industry common interfaces
2. The key element in Operating System-directed
   configuration and Power Management (OSPM).
3. stretch the limits of current Plug and Play interfaces.
4. more robust, and potentially more efficient manner.
5. collection of power management BIOS code, Advanced
   Power Management (APM) application programming
   interfaces (APIs, PNPBIOS APIs, Multiprocessor
   Specification (MPS)
6. suitable to all classes of computers including (but not limited
   to) desktop, mobile, workstation, and server machines
                                                                5
  Principal Goals
1. ACPI provides OSPM with direct and exclusive control over
     the power management and motherboard device
     configuration functions of a computer. OS plays a central
     role and uses global information to optimize system
     behavior. ACPI is the key element in OSPM
2. Enable all computer systems to implement motherboard
     configuration and power management functions
3. Enhance power management functionality and robustness.
4. Facilitate and accelerate industry-wide implementation of
     power management.
5. Create a robust interface for configuring motherboard
     devices.
                                                                 6
ACPI Function
 System power management
 Device power management
 Processor power management
 Plug and Play
 System Events
 Battery management
 Thermal management
 Embedded Controller
 SMBus Controller


                               7
Seven Operation Region Types

0 – SystemMemory
1 – SystemIO
2 – PCI_Config
3 – EmbeddedControl
4 – SMBus
5 – CMOS
6 – PCIBARTarget

                           8
OSPM/ACPI Global System




                          9
ACPI run-time components
 ACPI   Tables
    Describe the interfaces to the hardware.

 ACPI   Registers
    The constrained part of the hardware interface,
    described (at least in location) by the ACPI System
    Description Tables.
 ACPI BIOS
   ACPI system firmware.The firmwares boots the machine
    and compatible with ACPI spec.

                                                          10
     ACPI Power States
Global System States
G0 -- ----Working (System Operational)
G1 -------Sleeping - no user threads, system looks off
G2/S5 --Soft Off
G3 -------Mechanical off (Physical off switch)
Device Power States
D3 - Off - Power off to device
D2 - Less power than D1 (Depends on device)
D1 - Less power than D0 (Depends on Device)
D0 - Fully-On
Processor Power States
C0 - Full power, instructions execute
C1 - Processor stopped
C2 - Processor stopped, less power than C1
C3 - Processor stopped, caches ignore snoops
Sleeping States
S0 - system Working
S1 - Low Latency Sleeping State        - Processor Context Maintained
S2 - Low Latency Sleeping State        - Processor Context Not Maintained
S3 - Low Latency Sleeping State        - DRAM still maintained
S4 - Lowest power longest wake-up - DRAM not maintained
S5 - Soft Off State
                                                                            11
System Power States




                      12
OSPM Implementations
1.Use system address map reporting interfaces. (int15h,e820h)
2.Find and consume the ACPI System Description Tables.
3.Interpret ACPI machine language (AML).
4.Enumerate and configure motherboard devices described in the ACPI Namespace.
5.Interface with the power management timer.
6.Interface with the real-time clock wake alarm.
7.Enter ACPI mode (on legacy hardware systems).
8.Implement device power management policy.
9.Implement power resource management.
10.Implement processor power states in the scheduler idle handlers.
11.Control processor and device performance states.
12.Implement the ACPI thermal model.
13.Support the ACPI Event programming model including handling SCI interrupts,
       managing fixed events, general-purpose events, embedded controller
       interrupts, and dynamic device support.
14.Support acquisition and release of the Global Lock.
15.Use the reset register to reset the system.
16.Provide APIs to influence power management policy.
17.Implement driver support for ACPI-defined devices.
18.Implement APIs supporting the system indicators.
19.Support all system states S1–S5.
                                                                            13
ACPI Hardware
   Fixed Hardware Programming Model
     Performance sensitive features
     Features that drivers require during wake
     Features that enable catastrophic OS software failure recovery
         CPU clock control
         Power management timer
            Fixed hardware registers
   Generic Hardware Programming Model
            OEM-provided AML code




                                                                       14
Generic Hardware Feature Model

       ACPI Driver
                                     Rds AML
       and AML-
                                        Code
       Interpreter
       Code

                           Control
            Events
    GP Event Status
                        Generic
        Generic Child   Control
         Event Status    Logic
      Generic Event
         Logic


                                               15
        Global States and Their Transitions
                                   Power
                                   Failure
                                                                   Modem       HDD     CDROM
                                                                    D3        D3        D3
                                                                  D2        D2        D2
                                                                D1        D1        D1
                   G3 -M e ch                                D0        D0        D0
        Legacy
                      Off                                                                    C0
                                                   ACPI
         Boot                                      Boot
      (SCI_EN=0)                                (SCI_EN=1)

                                                                                    S4BIOS_F                     BIOS
                                                                                   S4BIOS_REQ                   Routine
                    ACPI_ENABLE
                     (SCI_EN=1)
                                                                             SLP_TYPx=(S1-S4)                     S4
                                                       G0 (S0) -                   and
Le gacy                                                                          SLP_EN                         S3
                                                       Working                                                S2
                    ACPI_DISABLE                                                                             S1
                     (SCI_EN=0)

                                                                                 Wake                     G1 -
                                                                                 Ev ent
                                                                                                        Sle e ping
                                      ACPI
                                      Boot
      Legacy                       (SCI_EN=1)
       Boot
    (SCI_EN=0)                                  SLP_TYPx=S5        Performance
                                                    and                                   T hrottling
                                                                    State Px
                                                  SLP_EN
                                                     or                          C0
                                                PWRBTN_OR
                                                                                      C1
                   G2 (S5) -                                                               C2
                   Soft Off                                               CPU
                                                                                                        Cn
                                                                                                                          16
Register model
   Fixed hardware registers and Generic hardware registers
     System I/O
     System memory
     PCI configuration
     SMBus
     Embedded controller
     Functional Fixed Hardware




                                                              17
18
19
Example: PM1




               20
21
ACPI Software
ACPI uses tables to describe system information,
features, and methods for controlling features.
   RSDT--Root System Description Table.
   XSDT--Extended System Description Table.
   FADT--Fixed ACPI Description Table.
   DSDT--Differentiated System Description Table.
   FACS--Firmware ACPI Control Structure.
   SSDT--Secondary System Description Table.
   ……

                                                     22
System Description Table Architecture
                     F000:xxxx          Top Memory
                     RSD PTR            RSDT(XSDT)
                                                                  FACS
RSD PTR:Root System Description Pointer
                                                     FADT
                                                                  DSDT
RSDT:Root System Description Table
                                                 DBGP
FADT:Fixed ACPI Description Table

FACS:Fimware ACPI Control Structure                  APIC   MP(APIC)

DSDT:Differentiated System Description table
                                                     BOOT   Simple boot flag
SSDT:Secondary System Description Table
                                                     SSDT
                                                                        23
24
                                                               W6555
                                                           Acpi.asm
;Build RSD PTRtable
        ALIGN 16
        Public RSD_PTR
RSD_PTR:       db   "RSD PTR “    ;RSD PTR Signature
RSD_CKSM: db        0             ;Checksum, fill in at POST

……

RSDT_Ptr:   db      4 dup (?)     ;RSDT physical address, fill in at
  POST
RSDPTRLengthEQU     ($-RSD_PTR)



                                                                   25
……




     26
                                                         W6555
                                                     Acpitbl.asm


    ;RSDT table
RSDTtable:
    db "RSDT"           ;Signaturedb    4 dup (?)
    ……
    db 4 dup (?)        ;Pointer of FACP table
ifdef   SIMPLE_BOOT_SUPPORT
    db 4 dup (?)        ; Pointer of BOOT table
endif ;SIMPLE_BOOT_SUPPORT
ifdef Debug_port_table       ;R09
   db 4 dup (?)         ;R09 Pointer of DBGP table
endif ;Debug_port_table       ;R09


                                                              27
28
 Fixed ACPI Description
      Table (FADT)
     FADT defines various fixed hardware
ACPI information vital to an ACPI-compatible
OS, such as the base address for the
following hardware registers blocks:
PM1a_EVT_BLK, PM1b_EVT_BLK,
PM1a_CNT_BLK, PM1b_CNT_BLK……



                                               29
……




……




……
     30
                                              W6555

FACPtable:                                Acpitbl.asm
  db "FACP"               ;Signature
  ……
  db 4 dup (?)   ;Pointer of FACS table
  db 4 dup (?)   ;Pointer of DSDT table
  ……
  dd PM1a_EVT_BLK
  dd PM1b_EVT_BLK
  ……
  dd GPE0_BLK
  dd GPE1_BLK
  db PM1_EVT_LEN
  ……

                                                   31
  Firmware ACPI Control
     Structure (FACS)
   FACS is a structure in read/write
memory that the BIOS reserves for ACPI
usage.
Hardware Signature
  Used in waking from S4 state
Firmware_waking_Vector
  Physical memory address of an OS wake function
Global_lock
                                                32
                                                  W6555
                                              Acpitbl.asm



;FACS Table
FACStable:
   db "FACS"                ;Signature
   dd FACSLength ;Length
   dd 0             ;Hardware Signature
   dd 0             ;Firmware Waking Vector
   dd 0             ;Global Lock
   dd FACSFlag
   db 40 dup (0)    ;Reserved
   FACSLength EQU ($-FACStable)

                                                       33
     Differentiated System
    Description Table (DSDT)
DSDT is part of the system fixed description.

 Table header
 Data in Definition Block




                                                34
35
ASL (ACPI Source Language)
   ASL Name define
     All name are a fixed 32 bits.
     First byte is ‘A’-’Z’,’_’
     Inclusive of ‘A’-’Z’,’0’-’9’,’_’
     Name begin with ’_’ are reserved
     Name proceeded with ‘\’ refer to the root
     Name proceeded with ‘^’ refer to the parent




                                                    36
      ASL Language Grammer
   Multiple blanks are the same as one. Blank, (, ), ‘,’ and
    newline are all token separators.
   // marks the beginning of a comment, which continues
    from the // to the end of the line.
   /* marks the beginning of a comment, which continues
    from the /* to the next */.
   “” surround an ASCII string.
   Single quotes (‘ ’)Indicate constant characters.‘A’
   Numeric constants can be written in three ways: ordinary
    decimal, octal (using 0ddd) or hexadecimal, using the
    notation 0xdd.
   Nothing indicates an empty item. For example,
    { Nothing } is equivalent to {}.
                                                            37
ASL Data Type             Description
[Uninitialized]           No assigned type or value. This is the type of all control method LocalX variables and unused ArgX variables at the
                                beginning of method execution, as well as all uninitialized Package elements. Uninitialized objects must be
                                initialized (via Store or CopyObject) before they may be used as source operands in ASL expressions.
Buffer                    An array of bytes. Uninitialized elements are zero by default.
Buffer Field              Portion of a buffer created using CreateBitField, CreateByteField, CreateWordField, CreateQWordField, CreateField,
                                or returned by the Index operator.
DDB Handle                Definition block handle returned by the Load operator
Debug Object              Debug output object. Formats an object and prints it to the system debug port. Has no effect if debugging is not active.
Device                    Device or bus object
Event                     Event synchronization object
Field Unit (within an     Portion of an address space, bit-aligned and of one-bit granularity. Created using Field, BankField, or IndexField.
      Operation Region)
Integer                   An n-bit little-endian unsigned integer. In ACPI 1.0 this was at least 32-bits. In ACPI 2.0 this is at least 64.bits.
Integer Constant          Created by the ASL terms “Zero”, “One”, “Ones”, and “Revision”.
Method                    Control Method (Executable AML function)
Mutex                     Mutex synchronization object
Object Reference          Reference to an object created using the RefOf operator
Operation Region          Operation Region (A region within an Address Space)
Package                   Collection of ASL objects with a fixed number of elements (up to 255).
Power Resource            Power Resource description object
Processor                 Processor description object
String                    Null-terminated ASCII string with up to 200 characters.
Thermal Zone              Thermal Zone description object

                                                                                                                                                  38
ASL Language and Terms
DefinitionBlock(
        AMLFileName,          //StringData
        TableSignature,       //StringData
        ComplianceRevision,   //ByteConst
        OEMID,                //StringData
        TableID,              //StringData
        OEMRevision           //DWordConst
)
   {
       ObjectList
   }


                                             39
    DefinitionBlock (
                                                                             W6555
         "DSDT.AML",                                                        Dsdt.asl
H        "DSDT",
E        0x01,
A        "INTELR",                                        //OEMID
         "AWRDACPI",
D
         0x1000
         )
    {                                                     // Start of ASL File
    Scope(\_PR) {
         Processor(\_PR.CPU0,
          1,                        //processor number
B         0x4010,                   //System IO address of Pblk Registers
O         0x06                      //length in bytes of PBlk
D        ) {}
        }
Y
    ……
    Name(\_S0,Package(){0,0,0,0})   //R36
    ……
    }

                                                                                  40
Example
  // Define a control method power button
  Device(\_SB.PWRB){                    //_SB System bus scope
      Name(_HID, EISAID(“PNP0C0C”)) //_HID hardware ID
      Name(_PRW,Package(){0, 0x4}) //_PRW power resource for wake
  }
  OperationRegion(\Pho, SystemIO, 0x200, 0x1)
  Field(\Pho, ByteAcc, NoLock, WriteAsZeros){
      PBP, 1,                           // sleep/off request
      PBW, 1                            // wakeup request
  }                                     // end of power button device object
      //_Lxx /_Exx Control method executed as a result of a GPE
  Scope(\_GPE){ // Root level event handlers       //general-purpose event.
      Method(_L00){                     // uses bit 0 of GP0_STS register
             If(PBP){
             Store(One, PBP)            // clear power button status
             Notify(\_SB.PWRB, 0x80)    // Notify OS of event
             }
             IF(PBW){
             Store(One, PBW)
             Notify(\_SB.PWRB, 0x2)
             }
      }                                 // end of _L00 handler
  }                                      // end of \_GPE scope
                                                                               41
       Prepare To Sleep    Going To Sleep

            _PTS           _GTS

Wake                                        Sleep
            _WAK           _BFS

       System Wake        Back From Sleep




                                                    42
ACPI In BIOS



               43
Relative files in source code
   *.asx*.asl*.aml
     ACPITBL.EXEACPITBL.BIN
    ACPI.ASM
    ACPI.EQU
    ACPI.INC
    ACPI_CT.INC
    ACPI_IO.EQU
    ACPIPOST.ASM
    ACPITBL.ASM

   ACPILED.ASXACPILED.ASL
                                44
45
   ACPI Name space
A hierarchical tree structure in OS-controlled memory that contains named
objects. These objects may be data objects, control method objects,
bus/device package objects, and so on. The OS dynamically changes the
contents of the namespace at run-time by loading and/or unloading
definition blocks from the ACPI Tables that reside in the ACPI BIOS. All
the information in the ACPI Namespace comes from the Differentiated
System Description Table (DSDT), which contains the Differentiated
Definition Block, and one or more other definition blocks.

For all Definition Blocks, the system maintains a single hierarchical
namespace that it uses to refer to objects. All Definition Blocks load into
the same namespace.



                                                                              46
    Example ACPI NameSpace
Root

       \_PR                       – Processor Tree

       P      CPU0                – Processor 0 object

R      \PID0                      – Power resource f or IDE0

              _STA                – Method to return status of power resourse

              _ON                 – Method to turn on power resourse

              _OFF                – Method to turn of f power resourse

       \_SB                       – Sy stem bus tree

       d      PCI0                – PCI bus

                    _HID          – Dev ice ID

                    _CRS          – Current resources (PCI bus number)

              d     IDE0          – IDE0 dev ice                                         Key
                           _ADR   – PCI dev ice #, f unction #                      Package

                           _PR0   – Power resource requirements f or D0         P   Processor Object
                                                                                    Power Resource
              \_GPE               – General purpose ev ents (GP_STS)            R   Object
                    _L01          – Method to handle lev el GP_STS.1            d   Bus/Dev ice Object

                    _E02          – Method to handle edge GP_STS.2                  Data Object

                    _L03          – Method to handle lev el GP_STS.3                Control Method (AML code)
                                                                                                            47
48
49
         \_SB
           PWRB
              _HID      W6555
\_PR          _STA
\_S0       SLPB        Dsdt.asx
\_S1          _HID
\_S4          _STA
              _PRW
\_S5
           PCI0
\_PTS         _HID
\_WAK         _ADR
\_SI          _UID
  _MSG        _S3D
  _SST        _STA
              _CRS
\_GPE
              PICM
  _L05        APIC
  _L03        _PRT
  _L04        PX40
  _L0B          _ADR
  _L08        USB0
              USB1
  _L1B
              USB2
  _L0C        USB3
  _L0D        PX43
\_SB            _ADR
                SMBB
              MODM
              PMIO
              _CRS           50
      BIOS Initialization
     Boot Vector

                         Yes
   SLP_TYP=S3
        ?
          No

Initialize CPU                                       Initialize CPU
Init memory controller                               Enable Memory
Enable Memory
Init chipset


                         Yes      Restore Memory
     S4BIOS ?
                                  Image
            No

       POST

•…                                                 Call Waking Vector
•ACPI NVS
•ACPI Reclaim
•ACPI Tables
•…


  Boot OS Loader
                               Non-Volatile-Sleeping Memory(NVS)
                                                                        51
         SETUP ACPI TABLE
ACPI memory range type:
  ACPI Reclaim Memory
    Be free when finish using ACPI table
  ACPI Non-Volatile-Sleeping Memory(NVS)
    Reserved by BIOS




                                            52
Process of Setup ACPI Table
Determine the size and address of the physical
 memory.
Allocate the ACPI Reserved area at top of
 memory for ACPI NVS and ACPI Reclaim
 memory areas.
Fix up the ACPI table pointers with address
 values.
Copy FACS into NVS;copy RSET,RACP,DSDT
 into ACPI Reclaim memory area;copy RSD
 pointer into E000:F000 memory segment.
                                              53
54
                                                            W6555
                                                       E8post.asm



ifdef  ACPI_Support
       cmp     dword ptr ACPI_TABLE_FLAG[bp],0
       jz      short No_ACPI_table
       mov     di,(ACPITBL_Expand_Address+1)*4
       call    POST_decompress
       extrn SetupACPI:near
       call    SetupACPI            ;call to setup ACPI table
No_ACPI_table:
endif; ACPI_Support



                                                                55
                                                                  W6555
                                                               acpi.asm


call  SetRealModeLimit     ;Enter big real mode
F000_Call F000_Shadow_W    ;Set F000 shadow to writeable
call  GetACPIReclaimArea   ;Return EAX=physical address of reclaim
                           memory area
call   MoveACPIToReclaim   ;Move RSDT, FACP, DSDT tables to
                           reclaim area
call   GetACPINVSArea      ;Return EAX=physical address of ACPI
                           NVS area
call   MoveACPItoNVS       ;Move FACS table to NVS area.
call   FillACPIAddress               ;Fill in the pointers for all tables
call   FillACPIChecksum    ;Fill in check sum for all tables
call   SetRealModelimit    ;Leave big real mode

                                                                       56
   BOOTROM.ASM
     Detected system sleep resume state
     Enable ACPI I/O space
       Turn_On_ACPI_IO(chiprun.asm)
   ACPI.ASM
     Move codes to the top of memory,filled in all
      pointers,checksum.
     ACPI Patch (Ct_parse_AML)
        Replacesuspendtype PROC
        ModifySuspendType PROC
        ReplaceAML_String PROC

   ACPITBL.ASM
     All ACPI Tables puts here.

                                                      57
 E0post.ASM
 POST code 067h
 Setup INT15h function E820h – memory
   report
 ACPI table address & size

 E8post.ASM
 POST code 089h - SetupACPI
  ACPI Table initialize
  AML initialize
  Dynamically modify ACPI tables and AML

                                            58
ACPI_ENABLE (0A1h)
     out SMI_CMD,0A1H
      Enable SCI to transfer to ACPI mode.
     Save some chipset configuration.
ACPI_DISABLE (0A0h)
     out SMI_CMD,0A0H
      Disable SCI to transfer to Legacy mode.
     Restore original chipset configuration.
S4BIOS_REQ (0A4h)
     out SMI_CMD,0A4H
     Save system context to heardisk and put
     system state to S4.
                                                59
Questions
 How  does OS get SCI information?
 Is ACPI table dynamical created by BIOS
  Post?
 Can modify ACPI table in OS?




                                            60
THE END
 Thank you


             61

								
To top