Advanced Power Management

advertisement
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
and AMLInterpreter
Code
Rds AML
Code
Control
Events
GP Event Status
Generic Child
Event Status
Generic
Control
Logic
Generic Event
Logic
15
Global States and Their Transitions
Pow e r
Failure
Legacy
Boot
(SCI_EN=0)
Mode m
HDD
CDROM
D3
D3
D3
D2
D2
D2
D1
D1
D1
D0
D0
D0
G3 -Mech
Off
C0
ACPI
Boot
(SCI_EN=1)
BIOS
Routine
S4BIOS_F
S4BIOS_REQ
ACPI_ENABLE
(SCI_EN=1)
SLP_TYPx=(S1-S4)
and
SLP_EN
G0 (S0) Working
Legacy
S4
S3
S2
S1
ACPI_DISABLE
(SCI_EN=0)
G1 Sleeping
W ake
Event
ACPI
Boot
(SCI_EN=1)
Legacy
Boot
(SCI_EN=0)
SLP_TYPx=S5
and
SLP_EN
or
PW RBTN_OR
G2 (S5) Soft Off
Performance
State Px
Throttling
C0
C1
C2
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
RSD PTR
Top Memory
RSDT(XSDT)
FACS
RSD PTR:Root System Description Pointer
FADT
DSDT
RSDT:Root System Description Table
FADT:Fixed ACPI Description Table
FACS:Fimware ACPI Control Structure
DBGP
APIC
MP(APIC)
BOOT
Simple boot flag
DSDT:Differentiated System Description table
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_CKSM: db
0
;RSD PTR Signature
;Checksum, fill in at POST
……
RSDT_Ptr:
db
POST
RSDPTRLengthEQU
4 dup (?)
;RSDT physical address, fill in at
($-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:
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
……
Acpitbl.asm
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
Operation Region)
Portion of an address space, bit-aligned and of one-bit granularity. Created using Field, BankField, or IndexField.
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,
TableSignature,
ComplianceRevision,
OEMID,
TableID,
OEMRevision
)
//StringData
//StringData
//ByteConst
//StringData
//StringData
//DWordConst
{
ObjectList
}
39
H
E
A
D
B
O
D
Y
DefinitionBlock (
"DSDT.AML",
"DSDT",
0x01,
"INTELR",
"AWRDACPI",
0x1000
)
{
Scope(\_PR) {
Processor(\_PR.CPU0,
1,
0x4010,
0x06
) {}
}
……
Name(\_S0,Package(){0,0,0,0})
……
}
W6555
Dsdt.asl
//OEMID
// Start of ASL File
//processor number
//System IO address of Pblk Registers
//length in bytes of PBlk
//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
_PTS
Going To Sleep
_GTS
Wake
Sleep
_WAK
System Wake
_BFS
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
– Processor Tree
\_PR
P
R
– Processor 0 object
CPU0
– Pow er resource for IDE0
\PID0
_STA
– Method to return status of pow er resourse
_ON
– Method to turn on pow er resourse
_OFF
– Method to turn off pow er resourse
– System bus tree
\_SB
d
– PCI bus
PCI0
d
_HID
– Device ID
_CRS
– Current resources (PCI bus number)
IDE0
– IDE0 device
Key
_ADR
– PCI device #, function #
_PR0
– Pow er resource requirements for D0
P
Processor Object
– General purpose events (GP_STS)
R
Pow er Resource
Object
_L01
– Method to handle level GP_STS.1
d
Bus/Device Object
_E02
– Method to handle edge GP_STS.2
Data Object
_L03
– Method to handle level GP_STS.3
Control Method (AML code)
\_GPE
Package
47
48
49
\_PR
\_S0
\_S1
\_S4
\_S5
\_PTS
\_WAK
\_SI
_MSG
_SST
\_GPE
_L05
_L03
_L04
_L0B
_L08
_L1B
_L0C
_L0D
\_SB
\_SB
PWRB
_HID
_STA
SLPB
_HID
_STA
_PRW
PCI0
_HID
_ADR
_UID
_S3D
_STA
_CRS
PICM
APIC
_PRT
PX40
_ADR
USB0
USB1
USB2
USB3
PX43
_ADR
SMBB
MODM
PMIO
_CRS
W6555
Dsdt.asx
50
BIOS Initialization
Boot Vector
Yes
SLP_TYP=S3
?
No
Initialize CPU
Enable Memory
Initialize CPU
Init memory controller
Enable Memory
Init chipset
Yes
S4BIOS ?
Restore Memory
Image
No
POST
•…
•ACPI NVS
•ACPI Reclaim
•ACPI Tables
•…
Boot OS Loader
Call Waking Vector
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
F000_Call F000_Shadow_W
call
GetACPIReclaimArea
call
MoveACPIToReclaim
call
GetACPINVSArea
call
call
call
call
MoveACPItoNVS
FillACPIAddress
FillACPIChecksum
SetRealModelimit
;Enter big real mode
;Set F000 shadow to writeable
;Return EAX=physical address of reclaim
memory area
;Move RSDT, FACP, DSDT tables to
reclaim area
;Return EAX=physical address of ACPI
NVS area
;Move FACS table to NVS area.
;Fill in the pointers for all tables
;Fill in check sum for all tables
;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
Download