These steps outline the transition of the Endpoint for PCI Express to the PPM L3 state:
- The core negotiates a transition to the L23 Ready Link State upon receiving a PME_Turn_Off message from the upstream link partner.
- Upon receiving a PME_Turn_Off message, the core initiates a
handshake with the user logic through
cfg_power_state_change_interrupt(see the following table) and expects acfg_power_state_change_ackback from the user logic. - A successful handshake results in a transmission of the Power Management Turn-off Acknowledge (PME-turnoff_ack) Message by the core to its upstream link partner.
- The core closes all its interfaces, disables the
Physical/Data-Link/Transaction layers and is ready for removal of power
to the core.
There are two exceptions to this rule:
- The core is configured as an Endpoint and the User Configuration Space is enabled. In this situation, the user application must refrain from sending new Request TLPs if cfg_function_power_state indicates non-D0, but the user application can return Completions to Configuration transactions targeting User Configuration space.
- The core is configured as a Root Port. To be compliant in
this situation, the user application should refrain from sending new Requests if
cfg_function_power_stateindicates non-D0.
| Port Name | Direction | Description |
|---|---|---|
| cfg_power_state_change_interrupt | Output | Asserted if a power-down request TLP is received
from the upstream device. After assertion,
cfg_power_state_change_interrupt remains asserted until the user
application asserts cfg_power_state_change_ack. |
| cfg_power_state_change_ack | Input | Asserted by the user application when it is safe to power down. |
Power-down negotiation follows these steps:
- Before power and clock are turned off, the Root Complex or the Hot-Plug controller in a downstream switch issues a PME_Turn_Off broadcast message.
- When the core receives this TLP, it asserts
cfg_power_state_change_interruptto the user application and starts polling thecfg_power_state_change_ackinput. - When the user application detects the assertion of
cfg_to_turnoff, it must complete any packet in progress and stop generating any new packets. After the user application is ready to be turned off, it assertscfg_power_state_change_ackto the core. After assertion ofcfg_power_state_change_ack, the user application is committed to being turned off. - The core sends a PME_TO_Ack message when it detects
assertion of
cfg_power_state_change_ack.
Figure 1. Power Management Handshaking: 64-Bit