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 (as shown in the following
table) and expects a
cfg_power_state_change_ack
back 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_state
indicates non-D0.
- 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
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_interrupt
to the user application and starts polling thecfg_power_state_change_ack
input. - 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_ack
to 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 ofcfg_power_state_change_ack
.
Figure 1. Power Management Handshaking: 64-Bit