March 21, 2022

Troubleshooting Controller failure due to broken APST support

Some NVMe devices may exhibit issues related to power saving (APST). This is a known issue for Kingston A2000 [5] as of firmware S5Z42105 and has previously been reported on Samsung NVMe drives (Linux v4.10) [6][7]

A failure renders the device unusable until system reset, with kernel logs similar to:

 nvme nvme0: I/O 566 QID 7 timeout, aborting
 nvme nvme0: I/O 989 QID 1 timeout, aborting
 nvme nvme0: I/O 990 QID 1 timeout, aborting
 nvme nvme0: I/O 840 QID 6 timeout, reset controller
 nvme nvme0: I/O 24 QID 0 timeout, reset controller
 nvme nvme0: Device not ready; aborting reset, CSTS=0x1
 ...
 nvme nvme0: Device not ready; aborting reset, CSTS=0x1
 nvme nvme0: Device not ready; aborting reset, CSTS=0x1
 nvme nvme0: failed to set APST feature (-19)

As a workaround, add the kernel parameter nvme_core.default_ps_max_latency_us=0 to completely disable APST, or set a custom threshold to disable specific states.

Tango-view-refresh-red.png This article or section is out of date. Tango-view-refresh-red.png Reason: This kernel parameter may no longer be necessary with recent versions of Linux Kernel. (e.g., v4.14.221, v4.19.175, v5.4.97, v5.10.15, v5.11-rc7, and later). [8] (Discuss in Talk:Solid state drive/NVMe)

Since March 2021 a firmware update 9 from Kingston is available. As Kingston only supports Windows, downloads for Linux can be found via heise.de or github. It is expected that, as long as the kernel workaround is in place, the firmware update will not do much as the deepest powersaving states are not reached anyway.

  1. smartctl -a /dev/nvme0

Supported Power States St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat

 0 +     9.00W       -        -    0  0  0  0        0       0
 1 +     4.60W       -        -    1  1  1  1        0       0
 2 +     3.80W       -        -    2  2  2  2        0       0
 3 -   0.0450W       -        -    3  3  3  3     2000    2000
 4 -   0.0040W       -        -    4  4  4  4    15000   15000

The value passed is the maximum exit latency (Ex_Lat). For example, to disable P

Return to PmCalendar Recipe

Edit/Create Recurring Annual Events


Today Holidays Cjc

« March 2022 »

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1?

2? PmCal this is a test

3? PmCal flower festival

4? PmCal fgh

5? PmCal HUMPDAY!

6?

7? PmCal

8? PmCal Get flowers for wife for International Women's Day.

9? PmCal coucou jj

10? PmCal Testin'

11?

12? PmCal prueba more

13?

14? PmCal Pi Day

15? PmCal The Ides of March is a recurring thing.

16? PmCal

March Madness

17?

18?

19?

20?

21
Troubleshooting Controller failure due to broken APST support

22?

23?

24?

25?

26?

27?

28?

29?

30?

31?

Examples: