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