APST not working on Intel p1600x

Keith Busch kbusch at kernel.org
Thu May 22 15:07:15 PDT 2025


On Thu, May 22, 2025 at 11:20:10PM +0200, Andrea Mencarelli wrote:
> I´m reaching out for help regarding APST not working with an Intel p1600x 118GB drive.

Neat device you got there.
 
> get-feature:0x0c (Autonomous Power State Transition), Current value:0x00000001
>         Autonomous Power State Transition Enable (APSTE): Enabled
>         Auto PST Entries        .................
>         Entry[ 0]
>         .................
>         Idle Time Prior to Transition (ITPT): 0 ms
>         Idle Transition Power State   (ITPS): 0
>         .................
>         Entry[ 1]
>         .................
>         Idle Time Prior to Transition (ITPT): 0 ms
>         Idle Transition Power State   (ITPS): 0
>         .................
>         Entry[ 2]
>         .................
>         Idle Time Prior to Transition (ITPT): 0 ms
>         Idle Transition Power State   (ITPS): 0
> 
> As you can see, APST is enabled. If I understand correctly, this table should show idle times only for non-operative power state, is that correct? Or is this the first clue that something is wrong?

The driver does indeed skip operational power states from enabling the
APST feature; from nvme_configure_apst():

	if (!(ctrl->psd[state].flags & NVME_PS_FLAGS_NON_OP_STATE))
		continue;

As to why the driver does this, spec section 8.1.17.2 "Autonomous Power
State Transitions" has the answer:

	The power state to transition to shall be a non-operational
	power state

I'm not sure why the spec decided on that behavior. And it makes no
sense that a controller with only operational power states would even
advertise APST capabilities given that spec requirement.



More information about the Linux-nvme mailing list