New BIOS released today ? What a surprise…
I’ve had the AGESA 1.2.0A since May on the MSI X570 board.
Nice, I’m already testing it, same BIOS settings as before, I can’t feel any difference.
What I read about is that this new BIOS helps to save power for NVME devices with a new CPPC option but I couldn’t find anything new in BIOS to change..
I am a little bit confused about the version numbers.
I have a Gigabyte X570 AORUS ULTRA board. Latest BIOS version F36 has AMD AGESA V2 1.2.0.7.
And that was relased Dec. 2022. The next beta BIOS F37B has AMD AGESA V2 1.2.0.8.
How does that compare to the version number you are seeing: 1.2.0A ?
PS
I am answering my own question 1.2.0A is the newest version and it comes after 1.2.0.8
1.2.0C is coming late this year:
For my AOURUS B550 I did a BIOS update today. The F16e uses AMD AGESA V2 1.2.0.8
No idea when the 1.2.0A should be released
I found the option…
In my PC, this new option is located at: Advanced / Onboard devices configuration.
It was originally set to Auto
.
$ sudo lspci -vv | grep 'ASPM.*abled;'
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; Disabled- CommClk+
LnkCtl: ASPM Disabled; Disabled- CommClk-
LnkCtl: ASPM Disabled; Disabled- CommClk+
LnkCtl: ASPM Disabled; Disabled- CommClk-
LnkCtl: ASPM Disabled; Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; Disabled- CommClk+
LnkCtl: ASPM Disabled; Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
Once I changed it from Auto
to L0s And L1 Entry
in BIOS:
$ sudo lspci -vv | grep 'ASPM.*abled;'
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; Disabled- CommClk+
LnkCtl: ASPM Disabled; Disabled- CommClk-
LnkCtl: ASPM L1 Enabled; Disabled- CommClk+
LnkCtl: ASPM Disabled; Disabled- CommClk-
LnkCtl: ASPM L1 Enabled; Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; Disabled- CommClk+
LnkCtl: ASPM L0s L1 Enabled; Disabled- CommClk+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
What I’m now trying to understand is the difference between these modes, and what default mode means:
$ cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave powersupersave
lspci-vvv
below showing that my NVME drives only support L1 power state.
sudo lspci -vvv
01:00.0 Non-Volatile memory controller: Sandisk Corp WD PC SN810 / Black SN850 NVMe SSD (rev 01) (prog-if 02 [NVM Express])
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
05:00.0 Non-Volatile memory controller: Sandisk Corp WD Blue SN550 NVMe SSD (rev 01) (prog-if 02 [NVM Express])
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
nvme1 has the same output of nvme0 get-feature, so I’ll omit it.
sudo nvme get-feature /dev/nvme0 -f 0x0c -H
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): 100 ms
Idle Transition Power State (ITPS): 3
.................
Entry[ 1]
.................
Idle Time Prior to Transition (ITPT): 100 ms
Idle Transition Power State (ITPS): 3
.................
Entry[ 2]
.................
Idle Time Prior to Transition (ITPT): 100 ms
Idle Transition Power State (ITPS): 3
.................
Entry[ 3]
.................
Idle Time Prior to Transition (ITPT): 2000 ms
Idle Transition Power State (ITPS): 4
$ sudo dmesg | grep ASPM
[ 0.451245] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
Edit:
Added to my kernel cmdline pcie_aspm.policy=powersupersave
and now I have:
$ cat /sys/module/pcie_aspm/parameters/policy
default performance powersave [powersupersave]
Edit2:
According to redhat’s wiki:
But they don’t mention the powersupersave option…
Links that I’m currently getting info from:
https://wiki.archlinux.org/title/Solid_state_drive/NVMe#Power_Saving_(APST)
https://wireless.wiki.kernel.org/en/users/documentation/ASPM
https://wiki.archlinux.org/title/Power_management#Active_State_Power_Management
https://access.redhat.com/discussions/1349893
https://access.redhat.com/documentation/pt-br/red_hat_enterprise_linux/7/html/power_management_guide/aspm
On my MSI board i have same CPU PCIE ASPM Mode Control
Disabled
L0s Entry
L1 Entry
L0s And L1 Entry
Auto
Mine is set to Auto.
Did you have to change the setting in the ASPM control also?
Just changed in the BIOS from Auto
to L0s And L1 Entry
.
This will enable it into default settings.
According to redhat’s wiki, default settings will let the firmware decide everything:
- default
sets PCIe link power states according to the defaults specified by the firmware on the system (for example, BIOS). This is the default state for ASPM. - powersave
sets ASPM to save power wherever possible, regardless of the cost to performance. - performance
disables ASPM to allow PCIe links to operate with maximum performance.
Unfortunately I didn’t find anything about powersupersave option yet..
I changed my kernel cmdline to use powersupersave and I’m currently testing it, everything is working fine here so far with this mode.
Okay i just tried it and i have the same.
[ricklinux@eos-kde ~]$ cat /sys/module/pcie_aspm/parameters/policy
default performance powersave [powersupersave]
Nice, so we will both be testing it, if you notice something weird let me know and vice versa.
Always good to save power, and according to what I have been reading, the performance impact shouldn’t be noticeable…
Although, I read some comments that some NICs (Network card interfaces), may get some latency when “waking up” and weird behaviors. But this is specific to some chips only.
What package did you install for the command
sudo nvme get-feature /dev/nvme0 -f 0x0c -H
#pacman -S nvme-cli
Or, the git version from AUR.
I think i had this installed once before but i accidentally wiped my system out and had to reinstall when testing. Oops!
Who never?
The command isn’t working. My drive is:
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:2 0 1000M 0 part /boot/efi
└─nvme0n1p2 259:3 0 464.8G 0 part /var/log
/var/cache
/swap
/home
/
Edit: Okay i got it:
Summary
[ricklinux@eos-kde ~]$ sudo nvme get-feature /dev/nvme0n1 -f 0x0c -H
[sudo] password for ricklinux:
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): 100 ms
Idle Transition Power State (ITPS): 3
…
Entry[ 1]
…
Idle Time Prior to Transition (ITPT): 100 ms
Idle Transition Power State (ITPS): 3
…
Entry[ 2]
…
Idle Time Prior to Transition (ITPT): 100 ms
Idle Transition Power State (ITPS): 3
…
Entry[ 3]
…
Idle Time Prior to Transition (ITPT): 2000 ms
Idle Transition Power State (ITPS): 4
…
Entry[ 4]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[ 5]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[ 6]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[ 7]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[ 8]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[ 9]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[10]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[11]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[12]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[13]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[14]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[15]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[16]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[17]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[18]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[19]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[20]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[21]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[22]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[23]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[24]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[25]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[26]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[27]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[28]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[29]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[30]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
Entry[31]
…
Idle Time Prior to Transition (ITPT): 0 ms
Idle Transition Power State (ITPS): 0
…
[ricklinux@eos-kde ~]$
You should omit n1p* part from it, these are the partitions.
So, the command should be exactly as it is in my previous post:
use sudo:
nvme get-feature /dev/nvme0 -f 0x0c -H
How do you post it that way with the drop down arrow?