These steps outline the transition of the Endpoint for PCI Express to the PPM L3 state:
1. The core negotiates a transition to the L23 Ready Link State upon receiving a PME_Turn_Off message from the upstream link partner.
2. Upon receiving a PME_Turn_Off message, the core initiates a handshake with the user logic through cfg_power_state_change_interrupt (see Table: Power Management Handshaking Signals ) and expects a cfg_power_state_change_ack back from the user logic.
3. 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.
4. 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.
Power-down negotiation follows these steps:
1. 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.
2. When the core receives this TLP, it asserts cfg_power_state_change_interrupt to the user application and starts polling the cfg_power_state_change_ack input.
3. 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 asserts cfg_power_state_change_ack to the core. After assertion of cfg_power_state_change_ack , the user application is committed to being turned off.
4. The core sends a PME_TO_Ack message when it detects assertion of cfg_power_state_change_ack .