[1/2,SRU,B,OEM-B] SAUCE: pci: prevent sk hynix nvme from entering D3

Message ID 20181106105314.30069-2-acelan.kao@canonical.com
State New
Headers show
Series
  • Power consumption during s2idle is higher than long idle(sk hynix)
Related show

Commit Message

AceLan Kao Nov. 6, 2018, 10:53 a.m.
BugLink: https://bugs.launchpad.net/bugs/1801875

It leads to the power consumption raises to 2.2W during s2idle, while
it consumes less than 1W during long idle if put SK hynix nvme to D3
and then enter s2idle.
From SK hynix FE, MS Windows doesn't put nvme to D3, and uses its own
APST feature to do the power management.
To leverage its APST feature during s2idle, we can't disable nvme
device while suspending, too.

BTW, prevent it from entering D3 will increase the power consumtion around
0.13W ~ 0.15W during short/long idle, and the power consumption during
s2idle becomes 0.77W.

Signed-off-by: AceLan Kao <acelan.kao@canonical.com>
---
 drivers/pci/quirks.c    | 1 +
 include/linux/pci_ids.h | 2 ++
 2 files changed, 3 insertions(+)

Patch

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 3b8f64be2d96..fe4db619a24f 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1186,6 +1186,7 @@  DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AL, PCI_ANY_ID,
    occur when mode detecting */
 DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_VIA, PCI_ANY_ID,
 				PCI_CLASS_STORAGE_IDE, 8, quirk_no_ata_d3);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SK_HYNIX, 0x1527, quirk_no_ata_d3);
 
 /* This was originally an Alpha specific thing, but it really fits here.
  * The i82375 PCI/EISA bridge appears as non-classified. Fix that.
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 98d90a3d7bb2..18c706ff1449 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -3067,4 +3067,6 @@ 
 
 #define PCI_VENDOR_ID_OCZ		0x1b85
 
+#define PCI_VENDOR_ID_SK_HYNIX         0x1c5c
+
 #endif /* _LINUX_PCI_IDS_H */