[Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

[Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1804588

[Impact]
On new systems that facilitate s2idle, we observed the power consumption
raises higher than long idle does during s2idle with Intel NVMe
SSDPEKKF.

Short idle: 6
Long idle: 2
S2I: 4.8

[Fix]
Windows doesn't put nvme to D3 in modern standby, 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.
So, here is what we did on the driver, 1. prevent nvme from entering D3,
2. prevent nvme from being disabled when suspending.

[Test]
Verified on the new Intel NVMe, it fixes the power consumption issue
with no regression. And the power consumption decreases to 2.8W during
s2idle.

[Regression Potential]
Low, the patches only applied to specific nvme module, and from our
test, the system is still stable.

Kai-Heng Feng (2):
  SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3
  SAUCE: nvme: add quirk to not call disable function when suspending

 drivers/nvme/host/pci.c | 2 ++
 drivers/pci/quirks.c    | 1 +
 2 files changed, 3 insertions(+)

--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[C/D/Unstable] [PATCH 1/2] SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3

Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1804588

It leads to the power consumption increases 2.8W during s2idle, while it
consumes much less idle if forbidding put Intel NVMe to D3 and before
entering S2Idle.

Windows doesn't put NVMe to D3 in Modern Standby, 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.

So, here is what we do to the driver:
- Prevent nvme from entering D3,
- Prevent nvme from being disabled when suspending.

Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 18a487236170..b4df3ab065ef 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1348,6 +1348,7 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AL, PCI_ANY_ID,
 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);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0xf1a6, quirk_no_ata_d3);
 
 /*
  * This was originally an Alpha-specific thing, but it really fits here.
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[Bionic] [PATCH 1/2] SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1804588

It leads to the power consumption increases 2.8W during s2idle, while it
consumes much less idle if forbidding put Intel NVMe to D3 and before
entering S2Idle.

Windows doesn't put NVMe to D3 in Modern Standby, 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.

So, here is what we do to the driver:
- Prevent nvme from entering D3,
- Prevent nvme from being disabled when suspending.

Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index facd0d08a380..847f5c2514fe 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1189,6 +1189,7 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AL, PCI_ANY_ID,
 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);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0xf1a6, 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.
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[C/D/Unstable] [PATCH 2/2] SAUCE: nvme: add quirk to not call disable function when suspending

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1804588

Call nvme_dev_disable() function leads to the power consumption goes up
to 2.8 Watt during suspend-to-idle, and from Intel FE, they suggest us
to use its own APST feature to do the power management during s2idle.

After D3 is diabled and nvme_dev_disable() is not called while
suspending, the power consumption drops 2.8 Watts during s2idle.

Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/nvme/host/pci.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index d5cdd2905a66..714293af7605 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -2680,6 +2680,8 @@ static const struct pci_device_id nvme_id_table[] = {
  { PCI_VDEVICE(INTEL, 0xf1a5), /* Intel 600P/P3100 */
  .driver_data = NVME_QUIRK_NO_DEEPEST_PS |
  NVME_QUIRK_MEDIUM_PRIO_SQ },
+ { PCI_VDEVICE(INTEL, 0xf1a6),
+ .driver_data = NVME_QUIRK_NO_DISABLE, },
  { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */
  .driver_data = NVME_QUIRK_IDENTIFY_CNS, },
  { PCI_DEVICE(0x1bb1, 0x0100),   /* Seagate Nytro Flash Storage */
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[Bionic] [PATCH 2/2] SAUCE: nvme: add quirk to not call disable function when suspending

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1804588

Call nvme_dev_disable() function leads to the power consumption goes up
to 2.8 Watt during suspend-to-idle, and from Intel FE, they suggest us
to use its own APST feature to do the power management during s2idle.

After D3 is diabled and nvme_dev_disable() is not called while
suspending, the power consumption drops 2.8 Watts during s2idle.

Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/nvme/host/pci.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 5f797d595e52..63e8d3010d1c 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -2697,6 +2697,8 @@ static const struct pci_device_id nvme_id_table[] = {
  { PCI_VDEVICE(INTEL, 0xf1a5), /* Intel 600P/P3100 */
  .driver_data = NVME_QUIRK_NO_DEEPEST_PS |
  NVME_QUIRK_MEDIUM_PRIO_SQ },
+ { PCI_VDEVICE(INTEL, 0xf1a6),
+ .driver_data = NVME_QUIRK_NO_DISABLE, },
  { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */
  .driver_data = NVME_QUIRK_IDENTIFY_CNS, },
  { PCI_DEVICE(0x1c58, 0x0003), /* HGST adapter */
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED[Unstable]: [Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

Seth Forshee
In reply to this post by Kai-Heng Feng
On Thu, Nov 22, 2018 at 07:15:08AM +0000, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1804588
>
> [Impact]
> On new systems that facilitate s2idle, we observed the power consumption
> raises higher than long idle does during s2idle with Intel NVMe
> SSDPEKKF.
>
> Short idle: 6
> Long idle: 2
> S2I: 4.8
>
> [Fix]
> Windows doesn't put nvme to D3 in modern standby, 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.
> So, here is what we did on the driver, 1. prevent nvme from entering D3,
> 2. prevent nvme from being disabled when suspending.
>
> [Test]
> Verified on the new Intel NVMe, it fixes the power consumption issue
> with no regression. And the power consumption decreases to 2.8W during
> s2idle.
>
> [Regression Potential]
> Low, the patches only applied to specific nvme module, and from our
> test, the system is still stable.

Applied to unstable/master, thanks!

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

AceLan Kao
In reply to this post by Kai-Heng Feng
Acked-By: AceLan Kao <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED[OEM-B]: [Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

AceLan Kao
In reply to this post by Kai-Heng Feng
Applied on oem kernel 4.15.0-1029.34

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK/cmnt: [Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

Kleber Souza
In reply to this post by Kai-Heng Feng
On 11/22/18 8:15 AM, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1804588
>
> [Impact]
> On new systems that facilitate s2idle, we observed the power consumption
> raises higher than long idle does during s2idle with Intel NVMe
> SSDPEKKF.
>
> Short idle: 6
> Long idle: 2
> S2I: 4.8
>
> [Fix]
> Windows doesn't put nvme to D3 in modern standby, 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.
> So, here is what we did on the driver, 1. prevent nvme from entering D3,
> 2. prevent nvme from being disabled when suspending.
>
> [Test]
> Verified on the new Intel NVMe, it fixes the power consumption issue
> with no regression. And the power consumption decreases to 2.8W during
> s2idle.
>
> [Regression Potential]
> Low, the patches only applied to specific nvme module, and from our
> test, the system is still stable.
>
> Kai-Heng Feng (2):
>   SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3
>   SAUCE: nvme: add quirk to not call disable function when suspending
>
>  drivers/nvme/host/pci.c | 2 ++
>  drivers/pci/quirks.c    | 1 +
>  2 files changed, 3 insertions(+)
>
Note that the correct tag for sauce patches are "UBUNTU: SAUCE:" instead
of just "SAUCE:". This can be fixed when applying the patches.


Acked-by: Kleber Sacilotto de Souza <[hidden email]>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED(B,C): [Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

Khaled Elmously
In reply to this post by Kai-Heng Feng
On 2018-11-22 07:15:08 , Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1804588
>
> [Impact]
> On new systems that facilitate s2idle, we observed the power consumption
> raises higher than long idle does during s2idle with Intel NVMe
> SSDPEKKF.
>
> Short idle: 6
> Long idle: 2
> S2I: 4.8
>
> [Fix]
> Windows doesn't put nvme to D3 in modern standby, 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.
> So, here is what we did on the driver, 1. prevent nvme from entering D3,
> 2. prevent nvme from being disabled when suspending.
>
> [Test]
> Verified on the new Intel NVMe, it fixes the power consumption issue
> with no regression. And the power consumption decreases to 2.8W during
> s2idle.
>
> [Regression Potential]
> Low, the patches only applied to specific nvme module, and from our
> test, the system is still stable.
>
> Kai-Heng Feng (2):
>   SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3
>   SAUCE: nvme: add quirk to not call disable function when suspending
>
>  drivers/nvme/host/pci.c | 2 ++
>  drivers/pci/quirks.c    | 1 +
>  2 files changed, 3 insertions(+)
>
> --
> 2.17.1
>
>
> --
> kernel-team mailing list
> [hidden email]
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: APPLIED(B,C): [Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

Stefan Bader-2
On 08.01.19 06:58, Khaled Elmously wrote:

> On 2018-11-22 07:15:08 , Kai-Heng Feng wrote:
>> BugLink: https://bugs.launchpad.net/bugs/1804588
>>
>> [Impact]
>> On new systems that facilitate s2idle, we observed the power consumption
>> raises higher than long idle does during s2idle with Intel NVMe
>> SSDPEKKF.
>>
>> Short idle: 6
>> Long idle: 2
>> S2I: 4.8
>>
>> [Fix]
>> Windows doesn't put nvme to D3 in modern standby, 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.
>> So, here is what we did on the driver, 1. prevent nvme from entering D3,
>> 2. prevent nvme from being disabled when suspending.
>>
>> [Test]
>> Verified on the new Intel NVMe, it fixes the power consumption issue
>> with no regression. And the power consumption decreases to 2.8W during
>> s2idle.
>>
>> [Regression Potential]
>> Low, the patches only applied to specific nvme module, and from our
>> test, the system is still stable.
>>
>> Kai-Heng Feng (2):
>>   SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3
>>   SAUCE: nvme: add quirk to not call disable function when suspending
>>
>>  drivers/nvme/host/pci.c | 2 ++
>>  drivers/pci/quirks.c    | 1 +
>>  2 files changed, 3 insertions(+)
>>
>> --
>> 2.17.1
>>
>>
>> --
>> kernel-team mailing list
>> [hidden email]
>> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>
Bug status does not reflect applied state.


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: APPLIED(B,C): [Resend] [SRU] [B/C/D/Unstable] [PATCH 0/2] Power consumption during s2idle is higher than long idle (Intel SSDPEKKF)

Khaled Elmously
On 2019-01-08 12:57:01 , Stefan Bader wrote:

> On 08.01.19 06:58, Khaled Elmously wrote:
> > On 2018-11-22 07:15:08 , Kai-Heng Feng wrote:
> >> BugLink: https://bugs.launchpad.net/bugs/1804588
> >>
> >> [Impact]
> >> On new systems that facilitate s2idle, we observed the power consumption
> >> raises higher than long idle does during s2idle with Intel NVMe
> >> SSDPEKKF.
> >>
> >> Short idle: 6
> >> Long idle: 2
> >> S2I: 4.8
> >>
> >> [Fix]
> >> Windows doesn't put nvme to D3 in modern standby, 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.
> >> So, here is what we did on the driver, 1. prevent nvme from entering D3,
> >> 2. prevent nvme from being disabled when suspending.
> >>
> >> [Test]
> >> Verified on the new Intel NVMe, it fixes the power consumption issue
> >> with no regression. And the power consumption decreases to 2.8W during
> >> s2idle.
> >>
> >> [Regression Potential]
> >> Low, the patches only applied to specific nvme module, and from our
> >> test, the system is still stable.
> >>
> >> Kai-Heng Feng (2):
> >>   SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3
> >>   SAUCE: nvme: add quirk to not call disable function when suspending
> >>
> >>  drivers/nvme/host/pci.c | 2 ++
> >>  drivers/pci/quirks.c    | 1 +
> >>  2 files changed, 3 insertions(+)
> >>
> >> --
> >> 2.17.1
> >>
> >>
> >> --
> >> kernel-team mailing list
> >> [hidden email]
> >> https://lists.ubuntu.com/mailman/listinfo/kernel-team
> >
> Bug status does not reflect applied state.
>
Fixed, thanks.



--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team