2

I am seeking advice regarding proper kernel command line options and/or BIOS settings for a Supermicro X10DAL-i system (with dual Xeon CPUs) for proper suspend-to-RAM under recent Linux kernels. I am currently running this kernel:

Linux 4.17.2-1-ARCH #1 SMP PREEMPT Sat Jun 16 11:08:59 UTC 2018 x86_64 GNU/Linux

On my other computers, suspend-to-RAM "just works" with Linux. However, on this system, it would not resume after being suspended overnight. My guess is that the system entered a sleep state that is "too deep". I am not using hibernate or suspend-hybrid. I only want to suspend to RAM.

In an earlier test of suspend, the system did resume after a few minutes of being suspended. All I had to do was hit any key on the keyboard. But after being suspended overnight, it was not responsive. I briefly pushed the power button. In response to that, the fans turned on and I thought the system might resume, but it did not. I was not able to access it via console or SSH.

The only difference between this system and my other systems which will suspend and resume is the motherboard (and it has more RAM). On all my systems I am using systemd, systemd-boot and UEFI. I am running KDE. I have an nvidia GPU with the proprietary driver. My other system with the same GPU and driver suspends and resumes properly.

I tested suspend on this system using both KDE's menu option (suspend) and with systemd suspend. As I mentioned, those short tests appeared to work. But it would not resume from an overnight suspend.

The BIOS displays the brand American Megatrends Inc. I see options to change CPU P State, CPU HWPM State and CPU C State along with other options. I am not familiar with any of these options and currently they are all set to default values (i.e., the overriding "Power Technology" setting is set to "Energy Efficient" which apparently manages all these settings automatically.)

My question is which settings should I try to get suspend to ram working in recent Linux versions?

Here are the final log entries as the system went into suspend to ram mode:

Jun 26 23:20:26 X10DALi systemd[1]: Starting system activity accounting tool...
Jun 26 23:20:26 X10DALi systemd[1]: Started system activity accounting tool.
Jun 26 23:30:26 X10DALi systemd[1]: Starting system activity accounting tool...
Jun 26 23:30:26 X10DALi systemd[1]: Started system activity accounting tool.
Jun 26 23:32:16 X10DALi NetworkManager[997]: <info>  [1530070336.6408] manager: sleep: sleep requested (sleeping: no  enabled: yes)
Jun 26 23:32:16 X10DALi NetworkManager[997]: <info>  [1530070336.6413] manager: NetworkManager state is now ASLEEP
Jun 26 23:32:17 X10DALi systemd[1]: Reached target Sleep.
Jun 26 23:32:17 X10DALi systemd[1]: Starting Suspend...
Jun 26 23:32:17 X10DALi systemd-sleep[10662]: Suspending system...
Jun 26 23:32:17 X10DALi kernel: PM: suspend entry (deep)

I am curious about the line with "systemd-sleep" because the only 4 systemd power saving states I'm familiar with are:

  • suspend (which is what I used)
  • hibernate
  • hybrid-sleep
  • suspend-then-hibernate

There are no journal entries for this boot after the above. I had to reboot the system (hard power reset) to get it to "wake up".

This might be relevant:

I do have the package [upower][1] installed (Version: 0.99.7-1). (It was installed as a dependency of kdelibs.) I have not changed any settings in /etc/UPower/UPower.conf and because this is a desktop system, I'm not sure upower is relevant.

cat /sys/power/disk

[platform] shutdown reboot suspend test_resume 

cat /sys/power/state

freeze mem disk

cat /proc/acpi/wakeup

Device  S-state   Status   Sysfs node
IP2P      S3    *disabled
EHC1      S4    *enabled   pci:0000:00:1d.0
EHC2      S4    *enabled   pci:0000:00:1a.0
RP01      S4    *disabled  pci:0000:00:1c.0
PXSX      S4    *disabled
RP02      S4    *disabled
PXSX      S4    *disabled
RP03      S4    *disabled  pci:0000:00:1c.2
PXSX      S4    *enabled   pci:0000:04:00.0
RP04      S4    *disabled  pci:0000:00:1c.3
PXSX      S4    *enabled   pci:0000:05:00.0
RP05      S4    *disabled
PXSX      S4    *disabled
RP06      S4    *disabled
PXSX      S4    *disabled
RP07      S4    *disabled
PXSX      S4    *disabled
RP08      S4    *disabled
PXSX      S4    *disabled
BR1A      S4    *disabled  pci:0000:00:01.0
PXSX      S4    *disabled
BR1B      S4    *disabled
PXSX      S4    *disabled
BR2A      S4    *disabled
PXSX      S4    *disabled
BR2B      S4    *disabled
PXSX      S4    *disabled
BR2C      S4    *disabled
PXSX      S4    *disabled
BR2D      S4    *disabled
PXSX      S4    *disabled
BR3A      S4    *disabled  pci:0000:00:03.0
PXSX      S4    *disabled
BR3B      S4    *disabled
PXSX      S4    *disabled
BR3C      S4    *disabled
PXSX      S4    *disabled
BR3D      S4    *disabled
PXSX      S4    *disabled
XHCI      S4    *enabled   pci:0000:00:14.0
QRP0      S4    *disabled
PXSX      S4    *disabled
QR1A      S4    *disabled
PXSX      S4    *disabled
QR1B      S4    *disabled
PXSX      S4    *disabled
QR2A      S4    *disabled  pci:0000:80:02.0
PXSX      S4    *disabled
QR2B      S4    *disabled
PXSX      S4    *disabled
QR2C      S4    *disabled
PXSX      S4    *disabled
QR2D      S4    *disabled  pci:0000:80:02.3
PXSX      S4    *disabled
QR3A      S4    *disabled
PXSX      S4    *disabled
QR3B      S4    *disabled
PXSX      S4    *disabled
QR3C      S4    *disabled
PXSX      S4    *disabled
QR3D      S4    *disabled
PXSX      S4    *disabled
RRP0      S4    *disabled
PXSX      S4    *disabled
RR1A      S4    *disabled
PXSX      S4    *disabled
RR1B      S4    *disabled
PXSX      S4    *disabled
RR2A      S4    *disabled
PXSX      S4    *disabled
RR2B      S4    *disabled
PXSX      S4    *disabled
RR2C      S4    *disabled
PXSX      S4    *disabled
RR2D      S4    *disabled
PXSX      S4    *disabled
RR3A      S4    *disabled
PXSX      S4    *disabled
RR3B      S4    *disabled
PXSX      S4    *disabled
RR3C      S4    *disabled
PXSX      S4    *disabled
RR3D      S4    *disabled
PXSX      S4    *disabled
SRP0      S4    *disabled
PXSX      S4    *disabled
SR1A      S4    *disabled
PXSX      S4    *disabled
SR1B      S4    *disabled
PXSX      S4    *disabled
SR2A      S4    *disabled
PXSX      S4    *disabled
SR2B      S4    *disabled
PXSX      S4    *disabled
SR2C      S4    *disabled
PXSX      S4    *disabled
SR2D      S4    *disabled
PXSX      S4    *disabled
SR3A      S4    *disabled
PXSX      S4    *disabled
SR3B      S4    *disabled
PXSX      S4    *disabled
SR3C      S4    *disabled
PXSX      S4    *disabled
SR3D      S4    *disabled
PXSX      S4    *disabled

I do not have a /etc/systemd/sleep.conf file (or any sleep.conf.d files).

UPDATE: I am adding more info:

dmesg | grep idle

[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370452778343963 ns
[    0.000000]  RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484882848 ns
[    0.019999] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x1fa2b80c9f8, max_idle_ns: 440795260495 ns
[    0.064738] process: using mwait in idle threads
[    1.178343] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370867519511994 ns
[    1.180025] cpuidle: using governor ladder
[    1.180037] cpuidle: using governor menu
[   17.698747] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[   18.097294] intel_idle: MWAIT substates: 0x2120
[   18.097295] intel_idle: v0.4.1 model 0x4F
[   18.099136] intel_idle: lapic_timer_reliable_states 0xffffffff
[   19.090095] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fa3704c1a9, max_idle_ns: 440795296692 ns

CPU: 2x Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz

Supermicro suggested these BIOS settings:

Advanced Power Management Configuration ->  Power Technology Select Custom to customize system power settings
CPU C State Control:  choose the options are C0/1 state, C2 state, C6 (non-Retention) state, and C6 (Retention) state.
  • First you may want to try turning off deep sleep states in the BIOS setup and see if any of them help. A call, ticket or email to Supermicro may help as well. – ajeh Jun 27 '18 at 19:43
  • I did get a reply from Supermicro. I updated my question. At the end of the day I will boot into the BIOS, change the settings as suggested and try another overnight suspend. – MountainX Jun 27 '18 at 20:22
1

I had to limit the CPU C-states to the C2 level in order to get my system to resume from suspend-to-ram. That's the general take-away.

Specifically, in regard to the Supermicro X10DAL with Xeon E5-2630 v4 CPU's, make sure you are running Supermicro BIOS 3.0a or later. Boot into the BIOS and go to Advanced > CPU Configuration > Advanced Power Management COnfiguration. Set Power Technology to Custom. Set CPU C State Control to C2.

My system will now suspend and resume using either systemd suspend or via DE suspend commands.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.