Bug 209789

Summary: LTR is not enabled for NVMe devices behind VMD
Product: Drivers Reporter: Kai-Heng Feng (kai.heng.feng)
Component: OtherAssignee: drivers_other
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: mainline v5.9 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg
lspci -vv
acpidump

Description Kai-Heng Feng 2020-10-21 07:57:11 UTC
Both max snoop and max non-snoop are 0 by default. Some NVMes will prevent the SoC from reaching deeper power save stats.

Do we use _DSM to find LTR?
https://lore.kernel.org/linux-pci/20201001214436.2735412-3-helgaas@kernel.org/

However, the VMD0 doesn't have _DSM. Do we use _DSM from SAT0 instead?

The hack Ubuntu kernel uses is to hardcode LTR as 3145728ns:
https://kernel.ubuntu.com/git/ubuntu/unstable.git/tree/drivers/pci/quirks.c#n5695


The 3145728ns is read from Windows. How does Windows decide the LTR value?
Comment 1 Kai-Heng Feng 2020-10-21 07:57:45 UTC
Created attachment 293105 [details]
dmesg
Comment 2 Kai-Heng Feng 2020-10-21 07:58:03 UTC
Created attachment 293107 [details]
lspci -vv
Comment 3 Kai-Heng Feng 2020-10-21 07:58:16 UTC
Created attachment 293109 [details]
acpidump
Comment 4 Kai-Heng Feng 2021-10-19 03:09:05 UTC
According to Intel, the LTR value is set by Windows driver.