APST not working on Intel p1600x

Andrea Mencarelli andrea3000 at gmail.com
Thu May 22 14:20:10 PDT 2025


Hi,

I’m reaching out for help regarding APST not working with an Intel p1600x 118GB drive.

I have a system running linux kernel v6.12.24 with 2 nvme drives:
- Samsung 980 Pro
- Intel p1600x

APST works correctly on the Samsung 980 Pro, while it doesn’t work on the Intel p1600x.

The available power states for the Intel NVME are the following:

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     5.50W       -        -    0  0  0  0     1000    4000
 1 +     4.60W       -        -    0  1  0  1     1000    4000
 2 +     3.30W       -        -    0  2  0  2     1000    4000

It supports only operative power states.

If I show the auto PST entries with this command: nvme get-feature /dev/nvme0 -f 0x0c -H
I get a table full of zeroes (I’m showing only the first few entries)

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?

I tried both setting default_ps_max_latency_us to a value larger than 5000us (ent_lat + ex_lat) and by setting force_apst=1, but the drive remains on PS0 at all times.

I can manually put the drive at PS2 with this command: nvme set-feature /dev/nvme0 -f 2 /dev/nvme0n1 -V 0x2
but I can’t get APST to work.

Do you have any suggestions on how to investigate this further and make it work?

Thank you
Regards,

Andrea


More information about the Linux-nvme mailing list