1

I've installed a Samsung Pro 960 SSD, which is an NVMe M.2 Gen 3.0 x 4 Solid State Drive but in Ubuntu 16.04 it freezes trying to suspend and resume. It works ok in Windows 10.

lsblk information

$ lsdrv
NAME        FSTYPE LABEL            MOUNTPOINT   SIZE MODEL
sda                                            931.5G HGST HTS721010A9
├─sda4      ntfs   WINRETOOLS                    450M 
├─sda2                                           128M 
├─sda5      ntfs   Image                        11.4G 
├─sda3      ntfs   HGST_Win10       /mnt/d       919G 
└─sda1      vfat   ESP                           500M 
nvme0n1                                          477G Samsung SSD 960 PRO 512GB 
├─nvme0n1p5 ext4   NVMe_Ubuntu_16.0 /           44.6G 
├─nvme0n1p3                                       16M 
├─nvme0n1p1 ntfs                                 450M 
├─nvme0n1p6 swap   Linux Swap       [SWAP]       7.9G 
├─nvme0n1p4 ntfs   NVMe_Win10       /mnt/c     414.9G 
├─nvme0n1p2 vfat                    /boot/efi     99M 
└─nvme0n1p7 ntfs   Shared_WSL+Linux /mnt/e         9G 

lspci information

$ lspci
00:00.0 Host bridge: Intel Corporation Sky Lake Host Bridge/DRAM Registers (rev 07)
00:01.0 PCI bridge: Intel Corporation Sky Lake PCIe Controller (x16) (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 07)
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #6 (rev f1)
00:1c.6 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #7 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #9 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31)
00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
01:00.0 3D controller: NVIDIA Corporation GM204M [GeForce GTX 970M] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GM204 High Definition Audio Controller (rev a1)
02:00.0 PCI bridge: Intel Corporation Device 1576
03:00.0 PCI bridge: Intel Corporation Device 1576
03:01.0 PCI bridge: Intel Corporation Device 1576
03:02.0 PCI bridge: Intel Corporation Device 1576
39:00.0 USB controller: Intel Corporation Device 15b5
3b:00.0 Ethernet controller: Qualcomm Atheros Killer E2400 Gigabit Ethernet Controller (rev 10)
3c:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
3d:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01)
3e:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a804

2 Answers 2

2

NVMe SSD suspend/resume is a know bug

This problem has been reported on Launchpad and ArchLinux. The solution is to edit /etc/default/grub with sudo powers and find the line:

GRUB_CMDLINE_LINUX_DEFAULT="quiet kaslr acpiphp.disable=1 pcie_aspm=off nloglevel=3 udev.log-priority=3"

Your options will be different but add the option acpiphp.disable=1 between the double quotes.

Save the file and run sudo update-grub

Reboot and then suspend and resume will work, unless it's a different problem.

What does acpiphp.disable=1 do?

According to the kernel developer in 2013 this disables ACPI hot-plugging. However that doesn't mean hot-plugging is disabled on your machine. For example, replugging the USB cord to your Android phone brings up Nautilus to view files as it should. Also power cycling a second TV connected to your laptop via USB-C ThunderBolt 3 to Displayport to HDMI adapter reorganizes windows across workspaces as it should.

3
  • OMG. Thank you so much this seems to be a perfect workaround! I can now really use my laptop. Please fix the typo in the property name. It should be "acpiphp.disable" like you have in the sample grub line. Apr 3, 2018 at 2:35
  • For this workaround to work for me, I also had to add the pcie_aspm=off option
    – Aposhian
    Sep 10, 2020 at 19:38
  • @Aposhian My current line reads: GRUB_CMDLINE_LINUX_DEFAULT="noplymouth loglevel=3 fastboot acpiphp.disable=1 pcie_aspm=force vt.handoff=7 i915.fastboot=1 nopti nospectre_v2 nospec mem_sleep_default=deep nouveau.nomodeset=0" but I have had more aggressive lines in the past like: #GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=0 vga=current udev.log-priority=3 fastboot kaslr acpiphp.disable=1 i915.enable_rc6=0 i915.enable_psr=0 i915.preliminary_hw_support=1 i915.enable_hd_vgaarb=1 intel_idle.max_cstate=1 i915.enable_guc_loading=1 i915.enable_guc_submission pcie_aspm=force vt.handoff=7" Sep 11, 2020 at 0:07
1

A patch https://patchwork.kernel.org/patch/10212201/ is going to fix this issue properly, it should be backported to older kernels too, so hopefully going forward your NVMe drives won't require any workarounds, it should also fix USB-C detection too

4
  • Thank you. I got that same link emailed to me 15 minutes ago because I was subscribed to the bug report at: bugs.launchpad.net/ubuntu/+source/linux/+bug/1655100 Feb 12, 2018 at 11:30
  • If you find any other bugzilla's or users with the same issue, please spread the word Feb 13, 2018 at 12:37
  • Of course. Sharing information and helping each other is the philosophy in the Ubu-Universe. Feb 13, 2018 at 12:40
  • Finding the root cause and avoiding workarounds is the Gentoo philosophy 😜 (sorry couldn't resist) Feb 14, 2018 at 14:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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