In the last month or so I've found that suspend is failing on my Dell XPS 15 9550 laptop. The log below indicates there's a problem with the brcmfmac driver for the Broadcom WiFi chip.
Sep 13 13:30:58 archlinux kernel: PM: suspend entry (deep)
Sep 13 13:30:58 archlinux kernel: PM: Syncing filesystems ... done.
Sep 13 13:30:59 archlinux kernel: rfkill: input handler enabled
Sep 13 13:31:02 archlinux kernel: Freezing user space processes ... (elapsed 0.002 seconds) done.
Sep 13 13:31:02 archlinux kernel: OOM killer disabled.
Sep 13 13:31:02 archlinux kernel: Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
Sep 13 13:31:02 archlinux kernel: Suspending console(s) (use no_console_suspend to debug)
Sep 13 13:31:02 archlinux kernel: brcmfmac: brcmf_pcie_pm_enter_D3: Timeout on response for entering D3 substate
Sep 13 13:31:02 archlinux kernel: pci_pm_suspend(): brcmf_pcie_pm_enter_D3+0x0/0x150 [brcmfmac] returns -5
Sep 13 13:31:02 archlinux kernel: dpm_run_callback(): pci_pm_suspend+0x0/0x120 returns -5
Sep 13 13:31:02 archlinux kernel: PM: Device 0000:02:00.0 failed to suspend async: error -5
Sep 13 13:31:02 archlinux kernel: PM: Some devices failed to suspend, or early wake event detected
Sep 13 13:31:02 archlinux kernel: ata2: SATA link down (SStatus 4 SControl 300)
Sep 13 13:31:02 archlinux kernel: OOM killer enabled.
Sep 13 13:31:02 archlinux kernel: Restarting tasks ... done.
Sep 13 13:31:02 archlinux kernel: PM: suspend exit
Sep 13 13:31:02 archlinux kernel: PM: suspend entry (s2idle)
Sep 13 13:31:02 archlinux kernel: PM: Syncing filesystems ... done.
Sep 13 13:31:06 archlinux kernel: Freezing user space processes ... (elapsed 0.009 seconds) done.
Sep 13 13:31:06 archlinux kernel: OOM killer disabled.
Sep 13 13:31:06 archlinux kernel: Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
Sep 13 13:31:06 archlinux kernel: Suspending console(s) (use no_console_suspend to debug)
Sep 13 13:31:06 archlinux kernel: brcmfmac: brcmf_pcie_pm_enter_D3: Timeout on response for entering D3 substate
Sep 13 13:31:06 archlinux kernel: pci_pm_suspend(): brcmf_pcie_pm_enter_D3+0x0/0x150 [brcmfmac] returns -5
Sep 13 13:31:06 archlinux kernel: dpm_run_callback(): pci_pm_suspend+0x0/0x120 returns -5
Sep 13 13:31:06 archlinux kernel: PM: Device 0000:02:00.0 failed to suspend async: error -5
Sep 13 13:31:06 archlinux kernel: PM: Some devices failed to suspend, or early wake event detected
Sep 13 13:31:06 archlinux kernel: OOM killer enabled.
Sep 13 13:31:06 archlinux kernel: Restarting tasks ... done.
Sep 13 13:31:06 archlinux kernel: PM: suspend exit
Sep 13 13:31:06 archlinux kernel: ata2: SATA link down (SStatus 4 SControl 300)
Sep 13 13:31:07 archlinux kernel: rfkill: input handler disabled
Sep 13 13:31:07 archlinux kernel: IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
Sep 13 13:31:07 archlinux kernel: IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
Sep 13 13:31:07 archlinux kernel: IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
Sep 13 13:31:07 archlinux kernel: rfkill: input handler enabled
Sep 13 13:31:14 archlinux kernel: IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready
Sep 13 13:31:14 archlinux kernel: brcmfmac: brcmf_inetaddr_changed: fail to get arp ip table err:-52
Sep 13 13:31:26 archlinux kernel: audit: type=1006 audit(1536841886.008:5): pid=18633 uid=0 old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=4 res=1
Sep 13 13:31:27 archlinux kernel: rfkill: input handler disabled
If I have the time, I'll have a look at the linux-firmware package's changes over the last few months, but if anyone has advice or a solution, I'd greatly appreciate it.
EDIT: I tried force-restarting the brcmfmac module before suspending, and the suspend worked; however, after a reboot, this method has no effect.
]]>