FreeBSD 14.1 T460s doesn't Resume after Suspend

Hello!
I have been a Linux user for a few years now and recently I decided to switch to FreeBSD.
Generally I am loving it but I have one big issue. I can not use FreeBSD on my main laptop ThinkPad T460s because suspending doesn't work.

I have been trying to get it working for a few days now but with little luck.
I tried the suggested in this article https://wiki.freebsd.org/SuspendResume, and after running "acpiconf -s 3" in the vty (Alt F2 from TTY) as root the computer suspends as it did on Linux. The issue is I can't get it to wake up. I tried pressing the power button but this did nothing (it continues blinking). I need to press it for 10 continuous seconds to shut down.
When I try "sysctl debug.acpi.suspend_bounce=1" followed by "acpiconf -s 3" this is the output of dmesg:

Code:
---<<BOOT>>---
Copyright (c) 1992-2023 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 14.1-RELEASE-p5 GENERIC amd64
FreeBSD clang version 18.1.5 (https://github.com/llvm/llvm-project.git llvmorg-18.1.5-0-g617a15a9eac9)
VT(efifb): resolution 1920x1080
CPU: Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz (2800.00-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x406e3  Family=0x6  Model=0x4e  Stepping=3
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x7ffafbff<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
  AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
  AMD Features2=0x121<LAHF,ABM,Prefetch>
  Structured Extended Features=0x29c6fbf<FSGSBASE,TSCADJ,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,NFPUSG,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PROCTRACE>
  Structured Extended Features3=0xbc002e00<MCUOPT,MD_CLEAR,TSXFA,IBPB,STIBP,L1DFL,ARCH_CAP,SSBD>
  XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
  IA32_ARCH_CAPS=0xc04<RSBA>
  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
  TSC: P-state invariant, performance statistics
real memory  = 38653657088 (36863 MB)
avail memory = 37268647936 (35542 MB)
Event timer "LAPIC" quality 600
ACPI APIC Table: <LENOVO TP-N1C  >
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s) x 2 hardware threads
random: registering fast source Intel Secure Key RNG
random: fast provider: "Intel Secure Key RNG"
random: unblocking device.
ioapic0 <Version 2.0> irqs 0-119
Launching APs: 1 3 2
random: entropy device external interface
kbd1 at kbdmux0
efirtc0: <EFI Realtime Clock>
efirtc0: registered as a time-of-day clock, resolution 1.000000s
smbios0: <System Management BIOS> at iomem 0xcf05b000-0xcf05b01e
smbios0: Version: 2.8, BCD Revision: 2.8
aesni0: <AES-CBC,AES-CCM,AES-GCM,AES-ICM,AES-XTS>
acpi0: <LENOVO TP-N1C>
acpi_ec0: <Embedded Controller: GPE 0x16, ECDT> port 0x62,0x66 on acpi0
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 24000000 Hz quality 950
Event timer "HPET" frequency 24000000 Hz quality 550
Event timer "HPET1" frequency 24000000 Hz quality 440
Event timer "HPET2" frequency 24000000 Hz quality 440
Event timer "HPET3" frequency 24000000 Hz quality 440
Event timer "HPET4" frequency 24000000 Hz quality 440
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
atrtc0: registered as a time-of-day clock, resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1808-0x180b on acpi0
acpi_lid0: <Control Method Lid Switch> on acpi0
acpi_button0: <Sleep Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xe000-0xe03f mem 0xf0000000-0xf0ffffff,0xe0000000-0xefffffff irq 16 at device 2.0 on pci0
vgapci0: Boot video device
xhci0: <Intel Sunrise Point-LP USB 3.0 controller> mem 0xf1320000-0xf132ffff at device 20.0 on pci0
xhci0: 32 bytes context size, 64-bit DMA
usbus0 on xhci0
usbus0: 5.0Gbps Super Speed USB v3.0
pci0: <simple comms> at device 22.0 (no driver attached)
pcib1: <ACPI PCI-PCI bridge> at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
pci1: <unknown> at device 0.0 (no driver attached)
pcib2: <ACPI PCI-PCI bridge> at device 28.2 on pci0
pci2: <ACPI PCI bus> on pcib2
pci2: <network> at device 0.0 (no driver attached)
pcib3: <ACPI PCI-PCI bridge> at device 28.4 on pci0
pci3: <ACPI PCI bus> on pcib3
nvme0: <Generic NVMe Device> mem 0xf1000000-0xf1003fff at device 0.0 on pci3
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
pci0: <memory> at device 31.2 (no driver attached)
hdac0: <Intel Sunrise Point-LP HDA Controller> mem 0xf1340000-0xf1343fff,0xf1330000-0xf133ffff at device 31.3 on pci0
em0: <Intel(R) I219-LM SPT> mem 0xf1300000-0xf131ffff at device 31.6 on pci0
em0: EEPROM V0.13-3
em0: Using 1024 TX descriptors and 1024 RX descriptors
em0: Using an MSI interrupt
em0: Ethernet address: c8:5b:76:c8:ee:29
em0: netmap queues/slots: TX 1/1024, RX 1/1024
acpi_tz0: <Thermal Zone> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
WARNING: Device "psm" is Giant locked and may be deleted before FreeBSD 15.0.
psm0: model Synaptics Touchpad, device ID 0
battery0: <ACPI Control Method Battery> on acpi0
battery1: <ACPI Control Method Battery> on acpi0
acpi_acad0: <AC Adapter> on acpi0
orm0: <ISA Option ROM> at iomem 0xc0000-0xcffff pnpid ORM0000 on isa0
hwpstate_intel0: <Intel Speed Shift> on cpu0
hwpstate_intel1: <Intel Speed Shift> on cpu1
hwpstate_intel2: <Intel Speed Shift> on cpu2
hwpstate_intel3: <Intel Speed Shift> on cpu3
Timecounter "TSC-low" frequency 1403997484 Hz quality 1000
Timecounters tick every 1.000 msec
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
ugen0.1: <Intel XHCI root HUB> at usbus0
uhub0 on usbus0
uhub0: <Intel XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
nvme0: Allocated 64MB host memory buffer
hdacc0: <Realtek ALC293 HDA CODEC> at cad 0 on hdac0
hdaa0: <Realtek ALC293 Audio Function Group> at nid 1 on hdacc0
pcm0: <Realtek ALC293 (Analog)> at nid 20 and 26 on hdaa0
pcm1: <Realtek ALC293 (Analog)> at nid 21 and 18 on hdaa0
hdacc1: <Intel Skylake HDA CODEC> at cad 2 on hdac0
hdaa1: <Intel Skylake Audio Function Group> at nid 1 on hdacc1
pcm2: <Intel Skylake (HDMI/DP 8ch)> at nid 3 on hdaa1
nda0 at nvme0 bus 0 scbus0 target 0 lun 1
nda0: <KINGSTON SNV2S1000G CBG04418 50026B7785CB9FF2>
nda0: Serial Number 50026B7785CB9FF2
nda0: nvme version 1.4
nda0: 953869MB (1953525168 512 byte sectors)
Trying to mount root from zfs:zroot/ROOT/default []...
uhub0: 18 ports with 18 removable, self powered
Root mount waiting for: usbus0
ugen0.2: <Generic EMV Smartcard Reader> at usbus0
[drm] Got Intel graphics stolen memory base 0xda800000, size 0x2000000
drmn0: <drmn> on vgapci0
vgapci0: child drmn0 requested pci_enable_io
vgapci0: child drmn0 requested pci_enable_io
lkpi_iic0: <LinuxKPI I2C> on drmn0
iicbus0: <Philips I2C bus> on lkpi_iic0
iic0: <I2C generic I/O> on iicbus0
lkpi_iic1: <LinuxKPI I2C> on drmn0
iicbus1: <Philips I2C bus> on lkpi_iic1
iic1: <I2C generic I/O> on iicbus1
lkpi_iic2: <LinuxKPI I2C> on drmn0
iicbus2: <Philips I2C bus> on lkpi_iic2
iic2: <I2C generic I/O> on iicbus2
drmn0: successfully loaded firmware image 'i915/skl_dmc_ver1_27.bin'
drmn0: [drm] Finished loading DMC firmware i915/skl_dmc_ver1_27.bin (v1.27)
drmn0: [drm] [ENCODER:102:DDI B/PHY B] is disabled/in DSI mode with an ungated DDI clock, gate it
drmn0: [drm] [ENCODER:117:DDI C/PHY C] is disabled/in DSI mode with an ungated DDI clock, gate it
sysctl_warn_reuse: can't re-use a leaf (hw.dri.debug)!
lkpi_iic3: <LinuxKPI I2C> on drm1
iicbus3: <Philips I2C bus> on lkpi_iic3
iic3: <I2C generic I/O> on iicbus3
lkpi_iic4: <LinuxKPI I2C> on drm2
iicbus4: <Philips I2C bus> on lkpi_iic4
iic4: <I2C generic I/O> on iicbus4
lkpi_iic5: <LinuxKPI I2C> on drm4
iicbus5: <Philips I2C bus> on lkpi_iic5
iic5: <I2C generic I/O> on iicbus5
[drm] Initialized i915 1.6.0 20201103 for drmn0 on minor 0
VT: Replacing driver "efifb" with new "drmfb".
start FB_INFO:
height=1080 width=1920 depth=32
pbase=0xe0000000 vbase=0xfffff800e0000000
name=drmn0 id=i915drmfb flags=0x0 stride=7680
end FB_INFO
acpi_video0: <ACPI video extension> on vgapci0
Intel(R) Wireless WiFi based driver for FreeBSD
pchtherm0: <Skylake PCH Thermal Subsystem> mem 0xf1349000-0xf1349fff at device 20.2 on pci0
ichsmb0: <Intel Sunrise Point-LP SMBus controller> port 0xefa0-0xefbf mem 0xf134b000-0xf134b0ff at device 31.4 on pci0
smbus0: <System Management Bus> on ichsmb0
rtsx0: <2.1g Realtek RTS522A PCIe SD Card Reader> mem 0xf1200000-0xf1200fff at device 0.0 on pci1
rtsx0: A card is detected
mmc0: <MMC/SD bus> on rtsx0
mmcsd0: 1073GB <SDHC APPSD 0.0 SN 12800000 MFG 06/2022 by 0 0x0000> at mmc0 50.0MHz/4bit/2048-block
iwm0: <Intel(R) Dual Band Wireless AC 8260> mem 0xf1100000-0xf1101fff at device 0.0 on pci2
iwm0: hw rev 0x200, fw ver 22.361476.0, address 34:f3:9a:b9:d1:b5
acpi_wmi0: <ACPI-WMI mapping> on acpi0
acpi_wmi0: Embedded MOF found
ACPI: \134_SB.WMI1.WQBA: 1 arguments were passed to a non-method ACPI object (Buffer) (20221020/nsarguments-361)
acpi_wmi1: <ACPI-WMI mapping> on acpi0
acpi_wmi1: Embedded MOF found
ACPI: \134_SB.WMI2.WQBB: 1 arguments were passed to a non-method ACPI object (Buffer) (20221020/nsarguments-361)
acpi_wmi2: <ACPI-WMI mapping> on acpi0
acpi_wmi2: Embedded MOF found
ACPI: \134_SB.WMI3.WQBC: 1 arguments were passed to a non-method ACPI object (Buffer) (20221020/nsarguments-361)
hdac0: Command 0x2033b000 timeout on address 2
wlan0: Ethernet address: 34:f3:9a:b9:d1:b5
lo0: link state changed to UP
Cuse v0.1.37 @ /dev/cuse
wlan0: link state changed to UP
Security policy loaded: MAC/ntpd (mac_ntpd)
hdac0: Command 0x20170503 timeout on address 2
wlan0: link state changed to DOWN
rtsx0: Suspend
uhub0: at usbus0, port 1, addr 1 (disconnected)
ugen0.2: <Generic EMV Smartcard Reader> at usbus0 (disconnected)
uhub0: detached
vgapci0: child drmn0 requested pci_set_powerstate
pcib0: failed to set ACPI power state D2 on \134_SB_.PCI0: AE_BAD_PARAMETER
acpi0: cleared fixed power button status
vgapci0: child drmn0 requested pci_set_powerstate
vgapci0: child drmn0 requested pci_enable_io
vgapci0: child drmn0 requested pci_enable_io
rtsx0: Resume
nvme0: resubmitting queued i/o
nvme0: WRITE sqid:2 cid:0 nsid:1 lba:394813480 len:8
nvme0: WRITE sqid:2 cid:0 nsid:1 lba:411589368 len:8
nvme0: done resubmitting i/o
hdac0: Command 0x20170500 timeout on address 2
hdac0: Command 0x20270500 timeout on address 2
hdac0: Command 0x20370500 timeout on address 2
hdac0: Command 0x2033b080 timeout on address 2
hdac0: Command 0x20370100 timeout on address 2
hdac0: Command 0x20370740 timeout on address 2
hdac0: Command 0x20370883 timeout on address 2
hdac0: Command 0x203f0900 timeout on address 2
hdac0: Command 0x203f0900 timeout on address 2
hdac0: Command 0x203f2e08 timeout on address 2
hdac0: Command 0x2033b000 timeout on address 2
uhub0 on usbus0
uhub0: <Intel XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
uhub0: 18 ports with 18 removable, self powered
ugen0.2: <Generic EMV Smartcard Reader> at usbus0
wlan0: link state changed to UP

To be honest I don't understand much but I can see this error:
pcib0: failed to set ACPI power state D2 on \134_SB_.PCI0: AE_BAD_PARAMETER

Another thing I tried was follow the steps related to Suspend/Resume in this article: FreeBSD 13 on Thinkpad T460s but the steps there seem to have resolved the issue for this guy but not for me.
These are the loaded modules on my system:

Bash:
gchalakov@T460s:~ $ kldstat

Id Refs Address                Size Name
 1   76 0xffffffff80200000  1f370e8 kernel
 2    1 0xffffffff82138000   5cd608 zfs.ko
 3    1 0xffffffff82707000     77d8 cryptodev.ko
 4    1 0xffffffff837f9000   1e2228 i915kms.ko
 5    2 0xffffffff839dc000    86090 drm.ko
 6    1 0xffffffff83a63000     22b8 iic.ko
 7    2 0xffffffff83a66000     40e9 linuxkpi_video.ko
 8    3 0xffffffff83a6b000     7350 dmabuf.ko
 9    3 0xffffffff83a73000     3378 lindebugfs.ko
10    1 0xffffffff83a77000     c338 ttm.ko
11    1 0xffffffff83a84000     4388 acpi_video.ko
12    1 0xffffffff83a89000     3390 acpi_wmi.ko
13    1 0xffffffff83a8d000     3250 ichsmb.ko
14    1 0xffffffff83a91000     2178 smbus.ko
15    1 0xffffffff83a94000    93260 if_iwlwifi.ko
16    1 0xffffffff83b28000    17314 if_iwm.ko
17    1 0xffffffff83b40000     2110 pchtherm.ko
18    1 0xffffffff83b43000     d200 rtsx.ko
19    1 0xffffffff83c00000   207d80 iwm8000Cfw.ko
20    1 0xffffffff83b51000     6760 cuse.ko
21    1 0xffffffff83b58000     2a68 mac_ntpd.ko


Thanks a lot in advance!
 
Welcome to FreeBSD and the forums! You may get some help from this article (search for the section 'Suspend and Resume'). There are also updates (specifically 'UPDATE 3 – Suspend/Resume Tips') towards the end of the page.
 
Thank you all for your answers,
I tried disabling the fingerprint reader, smart card and bluetooth from the UEFI but sadly this did not resolve the issue.
From what I have seen up until now I think the most probable fix is a bios update. I saw I am running a few versions late. I will give an update once I do it.
 
Hello again,
I just updated my BIOS to the newest version available for my laptop.
Sadly this didn't resolve the issue and I am still unable to resume after a suspend.
Do you have any other suggestions how I can fix the issue?
Tanks once again!
 
Hmm, running low on ideas. Especially since it doesn't even attempt to resume.

On Linux, when you suspend, does it continuously blink? Perhaps the issue you are getting with FreeBSD is that the suspend itself doesn't complete properly.

I can't find it but there used to be a document describing a number of sysctls which disable parts of the suspend process.

Some more random stuff to try:
  • Don't load iwlwifi, it is currently quite buggy (mine panics when accessed after a resume)
  • Try with Xorg running. It sounds counter-intuitive, but often the Xorg drivers shutdown / reinitialize things
  • Don't load i915kms (Intel video driver). As a test, see if it correctly suspends now. Note, usually vesa struggles to resume but it is still a good test to narrow down if something is wrong with your graphics stack, preventing the suspend to complete.
In the article you mentioned. He suggests using the intel driver rather than modesetting. Can you try with no accelleration (try that on modesetting driver too). Remember to suspend from inside Xorg (or this won't make a difference):

Code:
# cat /usr/local/etc/X11/xorg.conf.d/video-intel.conf
Section "Device"
  Identifier      "Intel Graphics"
  Driver          "intel"
  Option "NoAccel" "true"
EndSection
 
I use XFCE4 and I have noticed different behaviors for different users.
Login user root and XFCE never sleeps.

Login user xorg and XFCE4 sleeps after 15 min.
Cannot wake it up. I use the three finger salute.
<CTL-ALT-F5> then <CTL-ALT-F9> and it wakes.
So move away from Xorg console with any other console and move back to Xorg with F9.
Waking up with Virtual Terminals.
 
Do you have any other suggestions how I can fix the issue?
Can you share the output from the following commands please?
sysctl hw.acpi.supported_sleep_state
sysctl hw.acpi.lid_switch_state
sysctl kern.vt.suspendswitch
sysctl kern.vt.deadtimer
sysctl hw.usb.no_suspend_wait
 
Can you share the output from the following commands please?
sysctl hw.acpi.supported_sleep_state
sysctl hw.acpi.lid_switch_state
sysctl kern.vt.suspendswitch
sysctl kern.vt.deadtimer
sysctl hw.usb.no_suspend_wait
Hello,
thank you for your reply! This is the output of the commands:

Bash:
root@T460s:~ # sysctl hw.acpi.supported_sleep_state
hw.acpi.supported_sleep_state: S3 S4 S5
root@T460s:~ #  sysctl hw.acpi.lid_switch_state
hw.acpi.lid_switch_state: NONE
root@T460s:~ #  sysctl kern.vt.suspendswitch
kern.vt.suspendswitch: 1
root@T460s:~ #  sysctl kern.vt.deadtimer
kern.vt.deadtimer: 15
root@T460s:~ #  sysctl hw.usb.no_suspend_wait
hw.usb.no_suspend_wait: 0
 
Thanks. The hw.acpi.supported_sleep_state MIB of S3, S4, and S5 shows a list of supported ACPI sleep states. However, it doesn't look as though you've set the lid switch state correctly, it's currently set to NONE. You can run the following command to experiment and set the value at runtime (you will need to do this as root):
Code:
# sysctl hw.acpi.lid_switch_state=S3
Try and close the laptop lid and see if that works for you. If it works you can set the value permanently by adding the value to your /etc/sysctl.conf file:
Code:
hw.acpi.lid_switch_state=S3
The following settings (which are all different to yours) have also been known to help with suspending and resuming Thinkpads:
Code:
sysctl kern.vt.suspendswitch=0 
sysctl kern.vt.deadtimer=60 
sysctl hw.usb.no_suspend_wait=1
You will need to experiment with these settings to see which ones work for you.
 
The issue might be related to the graphics driver ( i916kms.ko in this case).
gchalakov@T460s:~ $ kldstat
...
4 1 0xffffffff837f9000 1e2228 i915kms.ko
Try a lesser version of the i916kms.ko kernel module.

Probably the module was installed by installing graphics/drm-kmod meta package, which installed graphics/drm-61-kmod.

Try graphics/drm-515-kmod and graphics/drm-510-kmod.

I have a ThinkPad E15 AMD Gen3 with a 'Lucienne' GPU ( needs amdgpu.ko ). It wont resume after a suspend (lid close - hw.acpi.lid_switch_state=S3) with the graphics/drm-61-kmod amdgpu.ko module on 14.1-RELEASE, screen is black, system unresponsive.

OTOH, no problem with graphics/drm-510-kmod.
 
Back
Top