mbox series

[0/3,SRU,Oracular] Intel(R) PRO/1000 I219 ethernet adapter [8086:550c] may block entrance of modern standby

Message ID 20241021042358.2200586-1-vicamo.yang@canonical.com
Headers show
Series Intel(R) PRO/1000 I219 ethernet adapter [8086:550c] may block entrance of modern standby | expand

Message

You-Sheng Yang Oct. 21, 2024, 4:23 a.m. UTC
BugLink: https://bugs.launchpad.net/bugs/2081130

[Impact]

Systems with Intel(R) PRO/1000 I219 ethernet adapter [8086:550c] may block
entrance of modern standby.

[Fix]

This is a composition of multiple factors. For the e1000e driver to suspend
correctly, it takes:
* v6.12-rc1 commit [cedf233530cc3](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cedf233530cc375343c5a0b612fe94392f246c99) ("platform/x86: intel/pmc: Ignore all LTRs during suspend")
* v6.12-rc3 commit [9d9e5347b0354](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9d9e5347b035412daa844f884b94a05bac94f864) ("e1000e: change I219 (19) devices to ADP")

And there is also a problem in APIC working in deadline mode. When shutting down
the APIC timer, both APIC_LVT_MASKED and clear the counter register should be
done, and this takes:
* https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=x86/urgent&id=ffd95846c6ec6cf1f93da411ea10d504036cab42 ("x86/apic: Always explicitly disarm TSC-deadline timer")

[Test Case]

```
$ sudo cat /sys/power/suspend_stats/total_hw_sleep
0
$ sudo rtcwake -m freeze -s 120
# wait ...
$ sudo cat /sys/power/suspend_stats/total_hw_sleep
117855416
$ sudo cat /sys/kernel/debug/pmc_core/package_cstate_show
...
Package C10 : 117924661
```

[Where problems could occur]

The first part can be treated as a new hardware support. The APIC timer part is
a common issue probably tracing back to the Nehalem microm architecture. It has
been landed to x86/urgent tree and will be in v6.12-rc4. It's also cc-stabled.

[Other Info]

This is cc-stabled. We're probably going to meet it again for maybe 6.8 LTS
kernels. Before that, SRU for OEM-6.11 hardware enablement.

Vitaly Lifshits (1):
  e1000e: change I219 (19) devices to ADP

Xi Pardee (1):
  platform/x86: intel/pmc: Ignore all LTRs during suspend

Zhang Rui (1):
  UBUNTU: SAUCE: x86/apic: Always explicitly disarm TSC-deadline timer

 arch/x86/kernel/apic/apic.c                | 14 +++++-
 drivers/net/ethernet/intel/e1000e/hw.h     |  4 +-
 drivers/net/ethernet/intel/e1000e/netdev.c |  4 +-
 drivers/platform/x86/intel/pmc/core.c      | 53 ++++++++++++++++++++++
 drivers/platform/x86/intel/pmc/core.h      |  2 +
 5 files changed, 72 insertions(+), 5 deletions(-)

Comments

Guoqing Jiang Oct. 21, 2024, 6:22 a.m. UTC | #1
On 10/21/24 12:23, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/2081130
>
> [Impact]
>
> Systems with Intel(R) PRO/1000 I219 ethernet adapter [8086:550c] may block
> entrance of modern standby.
>
> [Fix]
>
> This is a composition of multiple factors. For the e1000e driver to suspend
> correctly, it takes:
> * v6.12-rc1 commit [cedf233530cc3](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cedf233530cc375343c5a0b612fe94392f246c99) ("platform/x86: intel/pmc: Ignore all LTRs during suspend")
> * v6.12-rc3 commit [9d9e5347b0354](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9d9e5347b035412daa844f884b94a05bac94f864) ("e1000e: change I219 (19) devices to ADP")
>
> And there is also a problem in APIC working in deadline mode. When shutting down
> the APIC timer, both APIC_LVT_MASKED and clear the counter register should be
> done, and this takes:
> * https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=x86/urgent&id=ffd95846c6ec6cf1f93da411ea10d504036cab42 ("x86/apic: Always explicitly disarm TSC-deadline timer")
>
> [Test Case]
>
> ```
> $ sudo cat /sys/power/suspend_stats/total_hw_sleep
> 0
> $ sudo rtcwake -m freeze -s 120
> # wait ...
> $ sudo cat /sys/power/suspend_stats/total_hw_sleep
> 117855416
> $ sudo cat /sys/kernel/debug/pmc_core/package_cstate_show
> ...
> Package C10 : 117924661
> ```
>
> [Where problems could occur]
>
> The first part can be treated as a new hardware support. The APIC timer part is
> a common issue probably tracing back to the Nehalem microm architecture. It has
> been landed to x86/urgent tree and will be in v6.12-rc4. It's also cc-stabled.
>
> [Other Info]
>
> This is cc-stabled. We're probably going to meet it again for maybe 6.8 LTS
> kernels. Before that, SRU for OEM-6.11 hardware enablement.
>
> Vitaly Lifshits (1):
>    e1000e: change I219 (19) devices to ADP
>
> Xi Pardee (1):
>    platform/x86: intel/pmc: Ignore all LTRs during suspend
>
> Zhang Rui (1):
>    UBUNTU: SAUCE: x86/apic: Always explicitly disarm TSC-deadline timer

No need to add "SAUCE" for the 3rd one since it has been merged into 
6.12-rc4.

Acked-by: Guoqing Jiang <guoqing.jiang@canonical.com>

Thanks,
Guoqing

>   arch/x86/kernel/apic/apic.c                | 14 +++++-
>   drivers/net/ethernet/intel/e1000e/hw.h     |  4 +-
>   drivers/net/ethernet/intel/e1000e/netdev.c |  4 +-
>   drivers/platform/x86/intel/pmc/core.c      | 53 ++++++++++++++++++++++
>   drivers/platform/x86/intel/pmc/core.h      |  2 +
>   5 files changed, 72 insertions(+), 5 deletions(-)
>
Jian Hui Lee Oct. 21, 2024, 8:21 a.m. UTC | #2
Acked-by: Jian Hui Lee <jianhui.lee@canonical.com>

On Mon, Oct 21, 2024 at 12:25 PM You-Sheng Yang
<vicamo.yang@canonical.com> wrote:
>
> BugLink: https://bugs.launchpad.net/bugs/2081130
>
> [Impact]
>
> Systems with Intel(R) PRO/1000 I219 ethernet adapter [8086:550c] may block
> entrance of modern standby.
>
> [Fix]
>
> This is a composition of multiple factors. For the e1000e driver to suspend
> correctly, it takes:
> * v6.12-rc1 commit [cedf233530cc3](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cedf233530cc375343c5a0b612fe94392f246c99) ("platform/x86: intel/pmc: Ignore all LTRs during suspend")
> * v6.12-rc3 commit [9d9e5347b0354](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9d9e5347b035412daa844f884b94a05bac94f864) ("e1000e: change I219 (19) devices to ADP")
>
> And there is also a problem in APIC working in deadline mode. When shutting down
> the APIC timer, both APIC_LVT_MASKED and clear the counter register should be
> done, and this takes:
> * https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=x86/urgent&id=ffd95846c6ec6cf1f93da411ea10d504036cab42 ("x86/apic: Always explicitly disarm TSC-deadline timer")
>
> [Test Case]
>
> ```
> $ sudo cat /sys/power/suspend_stats/total_hw_sleep
> 0
> $ sudo rtcwake -m freeze -s 120
> # wait ...
> $ sudo cat /sys/power/suspend_stats/total_hw_sleep
> 117855416
> $ sudo cat /sys/kernel/debug/pmc_core/package_cstate_show
> ...
> Package C10 : 117924661
> ```
>
> [Where problems could occur]
>
> The first part can be treated as a new hardware support. The APIC timer part is
> a common issue probably tracing back to the Nehalem microm architecture. It has
> been landed to x86/urgent tree and will be in v6.12-rc4. It's also cc-stabled.
>
> [Other Info]
>
> This is cc-stabled. We're probably going to meet it again for maybe 6.8 LTS
> kernels. Before that, SRU for OEM-6.11 hardware enablement.
>
> Vitaly Lifshits (1):
>   e1000e: change I219 (19) devices to ADP
>
> Xi Pardee (1):
>   platform/x86: intel/pmc: Ignore all LTRs during suspend
>
> Zhang Rui (1):
>   UBUNTU: SAUCE: x86/apic: Always explicitly disarm TSC-deadline timer
>
>  arch/x86/kernel/apic/apic.c                | 14 +++++-
>  drivers/net/ethernet/intel/e1000e/hw.h     |  4 +-
>  drivers/net/ethernet/intel/e1000e/netdev.c |  4 +-
>  drivers/platform/x86/intel/pmc/core.c      | 53 ++++++++++++++++++++++
>  drivers/platform/x86/intel/pmc/core.h      |  2 +
>  5 files changed, 72 insertions(+), 5 deletions(-)
>
> --
> 2.45.2
>
>
> --
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
Stefan Bader Oct. 25, 2024, 2:57 p.m. UTC | #3
On 21.10.24 06:23, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/2081130
> 
> [Impact]
> 
> Systems with Intel(R) PRO/1000 I219 ethernet adapter [8086:550c] may block
> entrance of modern standby.
> 
> [Fix]
> 
> This is a composition of multiple factors. For the e1000e driver to suspend
> correctly, it takes:
> * v6.12-rc1 commit [cedf233530cc3](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cedf233530cc375343c5a0b612fe94392f246c99) ("platform/x86: intel/pmc: Ignore all LTRs during suspend")
> * v6.12-rc3 commit [9d9e5347b0354](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9d9e5347b035412daa844f884b94a05bac94f864) ("e1000e: change I219 (19) devices to ADP")
> 
> And there is also a problem in APIC working in deadline mode. When shutting down
> the APIC timer, both APIC_LVT_MASKED and clear the counter register should be
> done, and this takes:
> * https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=x86/urgent&id=ffd95846c6ec6cf1f93da411ea10d504036cab42 ("x86/apic: Always explicitly disarm TSC-deadline timer")
> 
> [Test Case]
> 
> ```
> $ sudo cat /sys/power/suspend_stats/total_hw_sleep
> 0
> $ sudo rtcwake -m freeze -s 120
> # wait ...
> $ sudo cat /sys/power/suspend_stats/total_hw_sleep
> 117855416
> $ sudo cat /sys/kernel/debug/pmc_core/package_cstate_show
> ...
> Package C10 : 117924661
> ```
> 
> [Where problems could occur]
> 
> The first part can be treated as a new hardware support. The APIC timer part is
> a common issue probably tracing back to the Nehalem microm architecture. It has
> been landed to x86/urgent tree and will be in v6.12-rc4. It's also cc-stabled.
> 
> [Other Info]
> 
> This is cc-stabled. We're probably going to meet it again for maybe 6.8 LTS
> kernels. Before that, SRU for OEM-6.11 hardware enablement.
> 
> Vitaly Lifshits (1):
>    e1000e: change I219 (19) devices to ADP
> 
> Xi Pardee (1):
>    platform/x86: intel/pmc: Ignore all LTRs during suspend
> 
> Zhang Rui (1):
>    UBUNTU: SAUCE: x86/apic: Always explicitly disarm TSC-deadline timer
> 
>   arch/x86/kernel/apic/apic.c                | 14 +++++-
>   drivers/net/ethernet/intel/e1000e/hw.h     |  4 +-
>   drivers/net/ethernet/intel/e1000e/netdev.c |  4 +-
>   drivers/platform/x86/intel/pmc/core.c      | 53 ++++++++++++++++++++++
>   drivers/platform/x86/intel/pmc/core.h      |  2 +
>   5 files changed, 72 insertions(+), 5 deletions(-)
> 

Applied to oracular:linux/master-next, fixing sha1 reference and 
removing SAUCE. Thanks.

-Stefan