For those with a newer laptop, in my case a Lenovo, the NEC USBv3 port is cool, unused and so far, a pain in the ease of my mobile life.
The hardware info (from lspci -nnvv) is:
`
0f:00.0 USB Controller [0c03]: NEC Corporation Device [1033:0194] (rev 03) (prog-if 30)
Subsystem: Lenovo Device [17aa:219c]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-SERR- Latency: 0, Cache Line Size: 64 bytesInterrupt: pin A routed to IRQ 18Region 0: Memory at f2200000 (64-bit, non-prefetchable) [size=8K]Capabilities: [50] Power Management version 3Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-Capabilities: [70] MSI: Enable- Count=1/8 Maskable- 64bit+Address: 0000000000000000 Data: 0000Capabilities: [90] MSI-X: Enable- Count=8 Masked-Vector table: BAR=0 offset=00001000PBA: BAR=0 offset=00001080Capabilities: [a0] Express (v2) Endpoint, MSI 00DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimitedExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+MaxPayload 128 bytes, MaxReadReq 512 bytesDevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <4us, L1 unlimitedClockPM+ Surprise- LLActRep- BwNot-LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- Retrain- CommClk+ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-DevCap2: Completion Timeout: Not Supported, TimeoutDis+DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dBTransmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-Compliance De-emphasis: -6dBLnkSta2: Current De-emphasis Level: -3.5dBCapabilities: [100] Advanced Error ReportingUESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-Capabilities: [140] Device Serial Number ff-ff-ff-ff-ff-ff-ff-ffCapabilities: [150] #18Kernel driver in use: xhci_hcdKernel modules: xhci-hcd`
Up until the 2.6.35 kernel, this had been using the kernel driver “xhci”, but in >= 2.6.35, it has been renamed “xhci_hcd”.
What does this have to do with anything? The ease of my suspending to disk. This USBv3 driver is not yet playing well with the freezing/thawing process, and will give a cryptic error in /var/log/pm-suspend.log, pointing you to line 295 of
/usr/lib${LIBSUFFIX}/pm-utils/pm-functions
. When it gets to the point of executing`echo -n "mem" > /sys/power/state`
, it returns a permission denied. Even though the contents of /sys/power/state show something like “mem disk”.So for pm-utils, if you
- go to
/etc/pm/config.d/
- create a file called “unload_modules“, with contents of
SUSPEND_MODULES="xhci xhci_hcd"
- it’s a space delimited value, so add others if you are having issues.
TA DA. now i can resume the comfort of a quick suspend and resume!
Take care,
vb