diff mbox series

ACPI: EC: Use ec_no_wakeup on ThinkPad T14 Gen 5

Message ID ZnFYpWHJ5Ml724Nv@ohnotp
State New
Headers show
Series ACPI: EC: Use ec_no_wakeup on ThinkPad T14 Gen 5 | expand

Commit Message

Yutaro Ohno June 18, 2024, 9:51 a.m. UTC
On ThinkPad T14 Gen 5, EC interrupts constantly wake up the system from
s2idle, resulting in high power consumption.

This sets `acpi.ec_no_wakeup=1` to fix the high power consumption issue
in s2idle state.

Signed-off-by: Yutaro Ohno <yutaro.ono.418@gmail.com>
---
 drivers/acpi/ec.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Mark Pearson June 18, 2024, 11:28 p.m. UTC | #1
Hi Yutaro,

On Tue, Jun 18, 2024, at 5:51 AM, Yutaro Ohno wrote:
> On ThinkPad T14 Gen 5, EC interrupts constantly wake up the system from
> s2idle, resulting in high power consumption.
>
> This sets `acpi.ec_no_wakeup=1` to fix the high power consumption issue
> in s2idle state.
>
> Signed-off-by: Yutaro Ohno <yutaro.ono.418@gmail.com>
> ---
>  drivers/acpi/ec.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
> index 299ec653388c..c7d5231edca7 100644
> --- a/drivers/acpi/ec.c
> +++ b/drivers/acpi/ec.c
> @@ -2248,6 +2248,12 @@ static const struct dmi_system_id acpi_ec_no_wakeup[] = {
>  			DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Yoga 3rd"),
>  		},
>  	},
> +	{
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> +			DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad T14 Gen 5"),
> +		},
> +	},
>  	{
>  		.matches = {
>  			DMI_MATCH(DMI_SYS_VENDOR, "HP"),
> -- 
> 2.45.2

We're doing Linux enablement on the T14 G5 right now - and if this is an issue in the Lenovo FW I would rather fix it there instead of introducing a quirk into the kernel that might later need to be removed. This platform is getting full Linux support.

I'd like to collect some debug details from you (if preferred you can ping me off thread using this email address):

 - Can I get your BIOS, EC and ME versions (easiest is to get these from the BIOS setup screen - F1 during early boot)
 - Get a report from running the Intel S0ix test tool - https://github.com/intel/S0ixSelftestTool. Run it with the -S option
 - There is a known issue if the ethernet is plugged in on this system that Intel are working on - can you confirm if you're using wired networking please?
 - Do you have WWAN enabled? If you have it can you try with WWAN disabled.

I'll also highlight that Linux enablement is not complete on this platform yet, so some patience might be needed.

Thanks
Mark (Lenovo employee working on the Linux PC enablement program)
Yutaro Ohno June 20, 2024, 1:10 p.m. UTC | #2
Hi, Mark.

On Wed Jun 19, 2024 at 8:28 AM JST, Mark Pearson wrote:
> We're doing Linux enablement on the T14 G5 right now - and if this is an issue in the Lenovo FW I would rather fix it there instead of introducing a quirk into the kernel that might later need to be removed. This platform is getting full Linux support.

That sounds wonderful! I agree that my change is more of a workaround solution.

> I'd like to collect some debug details from you (if preferred you can ping me off thread using this email address):

Sure. But first, please note that my machine is AMD, not Intel.

>  - Can I get your BIOS, EC and ME versions (easiest is to get these from the BIOS setup screen - F1 during early boot)

- BIOS: R2LET23W (1.04)
- EC:   R2LHT18W (1.01)
- ME:   Not applicable, as my machine is AMD, not Intel.

>  - Get a report from running the Intel S0ix test tool - https://github.com/intel/S0ixSelftestTool. Run it with the -S option

It may not work as my machine is not Intel, but here's the output:

```
$ sudo ./s0ix-selftest-tool.sh -s

---Check S2idle path S0ix Residency---:

The system OS Kernel version is:
Linux ohnotp 6.9.5-arch1-1 #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 19:06:37 +0000 x86_64 GNU/Linux

---Check whether your system supports S0ix or not---:

Low Power S0 Idle is:1
Your system supports low power S0 idle capability.



---Check whether intel_pmc_core sysfs files exit---:
ls: cannot access '/sys/kernel/debug/pmc_core': No such file or directory

The pmc_core debug sysfs file is empty on your system.
Isolation suggestions:
Please check whether intel_pmc_core driver is loaded.


The intel_pmc_core sysfs missing will impact S0ix failure analyze.


---Judge PC10, S0ix residency available status---:
cat: /sys/kernel/debug/pmc_core/substate_residencies: No such file or directory
grep: /sys/kernel/debug/pmc_core/substate_residencies: No such file or directory
Test system does not support S0ix.y substate

The system failed to place S2idle entry command by turbostat,
please check if the suspend is failed or turbostat tool version is old
e.g. did you make turbostat tool executable or separately run S2idle command:
rtcwake -m freeze -s 15
```

Note that `turbostat` command is available and its version is `2024.04.08`.

>  - There is a known issue if the ethernet is plugged in on this system that Intel are working on - can you confirm if you're using wired networking please?

I haven't used the ethernet on my machine. It's not plugged in.

>  - Do you have WWAN enabled? If you have it can you try with WWAN disabled.

No, I don't. My machine doesn't have a WWAN module.

> I'll also highlight that Linux enablement is not complete on this platform yet, so some patience might be needed.

Sure!

Please let me know if there's anything else I can do.

Thanks,
Yutaro
Mark Pearson June 20, 2024, 3:35 p.m. UTC | #3
Hi Ohno

On Thu, Jun 20, 2024, at 9:10 AM, Yutaro Ohno wrote:
> Hi, Mark.
>
> On Wed Jun 19, 2024 at 8:28 AM JST, Mark Pearson wrote:
>> We're doing Linux enablement on the T14 G5 right now - and if this is an issue in the Lenovo FW I would rather fix it there instead of introducing a quirk into the kernel that might later need to be removed. This platform is getting full Linux support.
>
> That sounds wonderful! I agree that my change is more of a workaround solution.
>
>> I'd like to collect some debug details from you (if preferred you can ping me off thread using this email address):
>
> Sure. But first, please note that my machine is AMD, not Intel.

Ooops - my bad! Thanks for the clarification.

>
>>  - Can I get your BIOS, EC and ME versions (easiest is to get these from the BIOS setup screen - F1 during early boot)
>
> - BIOS: R2LET23W (1.04)
> - EC:   R2LHT18W (1.01)
> - ME:   Not applicable, as my machine is AMD, not Intel.
Thanks

>
>>  - Get a report from running the Intel S0ix test tool - https://github.com/intel/S0ixSelftestTool. Run it with the -S option
>
> It may not work as my machine is not Intel, but here's the output:
<snip>

Yeah - that won't work. The AMD test tool is here:
https://gitlab.freedesktop.org/drm/amd/-/blob/master/scripts/amd_s2idle.py
Can you try that please?

>
>>  - There is a known issue if the ethernet is plugged in on this system that Intel are working on - can you confirm if you're using wired networking please?
>
> I haven't used the ethernet on my machine. It's not plugged in.
>
>>  - Do you have WWAN enabled? If you have it can you try with WWAN disabled.
>
> No, I don't. My machine doesn't have a WWAN module.
>
One more question - which Wifi module do you have? The Qualcomm NCM825 Wifi7 device still has a lot of problems (it's currently the main thing gating our Linux certification of the platform).

>> I'll also highlight that Linux enablement is not complete on this platform yet, so some patience might be needed.
>
> Sure!
>
> Please let me know if there's anything else I can do.
>
Thanks for the details. I've created internal ticket LO-3140 for tracking and we'll see if we can reproduce

Mark
Yutaro Ohno June 20, 2024, 4:57 p.m. UTC | #4
On Fri Jun 21, 2024 at 12:35 AM JST, Mark Pearson wrote:
> >>  - Get a report from running the Intel S0ix test tool - https://github.com/intel/S0ixSelftestTool. Run it with the -S option
> >
> > It may not work as my machine is not Intel, but here's the output:
> <snip>
>
> Yeah - that won't work. The AMD test tool is here:
> https://gitlab.freedesktop.org/drm/amd/-/blob/master/scripts/amd_s2idle.py
> Can you try that please?

Sure. I've tried with/without the kernel parameter `acpi.ec_no_wakeup=1`.

Booting with the kernel parameter:
```
$ sudo python3 amd_s2idle.py
Location of log file (default s2idle_report-2024-06-21.txt)?
Debugging script for s2idle on AMD systems
๐Ÿ’ป LENOVO 21MCCTO1WW (ThinkPad T14 Gen 5) running BIOS 1.4 (R2LET23W (1.04 )) released 04/01/2024 and EC 1.1
๐Ÿง Arch Linux
๐Ÿง Kernel 6.9.5-arch1-1
๐Ÿ”‹ Battery BAT0 (SMP 5B11H56415) is operating at 101.22% of design
Checking prerequisites for s2idle
โœ… Logs are provided via systemd
โœ… AMD Ryzen 7 PRO 8840U w/ Radeon 780M Graphics (family 19 model 75)
โœ… SMT enabled
โœ… LPS0 _DSM enabled
โœ… ACPI FADT supports Low-power S0 idle
โœ… HSMP driver `amd_hsmp` not detected (blocked: False)
โœ… PMC driver `amd_pmc` loaded (Program 0 Firmware 76.83.0)
โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.5
โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.6
โœ… GPU driver `amdgpu` bound to 0000:c4:00.0
โœ… System is configured for s2idle
โœ… NVME KIOXIA Corporation NVMe SSD Controller XG8 is configured for s2idle in BIOS
โœ… GPIO driver `pinctrl_amd` available
๐Ÿšฆ Device firmware checks unavailable without gobject introspection
โœ… WCN6855 WLAN (fw build id WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37)
How long should suspend cycles last in seconds (default 10)?
How long to wait in between suspend cycles in seconds (default 4)?
How many suspend cycles to run (default 1)?
Started at 2024-06-21 01:05:15.386691 (cycle finish expected @ 2024-06-21 01:05:29.386714)
Results from last s2idle cycle
โ—‹ Suspend count: 1
โ—‹ Hardware sleep cycle count: 1
โ—‹ Wakeup triggered from IRQ 9: ACPI SCI
โ—‹ Woke up from IRQ 9: ACPI SCI
โ—‹ gpe07 increased from 9957 to 10219
โœ… Userspace suspended for 0:00:12.386591
โœ… In a hardware sleep state for 0:00:08.692840 (70.18%)
๐Ÿ”‹ Battery BAT0 lost 10000 ยตWh (0.02%) [Average rate 0.29W]
```

Booting without the kernel parameter:
```
$ sudo python3 ./amd_s2idle.py
Location of log file (default s2idle_report-2024-06-21.txt)?
Debugging script for s2idle on AMD systems
๐Ÿ’ป LENOVO 21MCCTO1WW (ThinkPad T14 Gen 5) running BIOS 1.4 (R2LET23W (1.04 )) released 04/01/2024 and EC 1.1
๐Ÿง Arch Linux
๐Ÿง Kernel 6.9.5-arch1-1
๐Ÿ”‹ Battery BAT0 (SMP 5B11H56415) is operating at 101.22% of design
Checking prerequisites for s2idle
โœ… Logs are provided via systemd
โœ… AMD Ryzen 7 PRO 8840U w/ Radeon 780M Graphics (family 19 model 75)
โœ… SMT enabled
โœ… LPS0 _DSM enabled
โœ… ACPI FADT supports Low-power S0 idle
โœ… HSMP driver `amd_hsmp` not detected (blocked: False)
โœ… PMC driver `amd_pmc` loaded (Program 0 Firmware 76.83.0)
โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.5
โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.6
โœ… GPU driver `amdgpu` bound to 0000:c4:00.0
โœ… System is configured for s2idle
โœ… NVME KIOXIA Corporation NVMe SSD Controller XG8 is configured for s2idle in BIOS
โœ… GPIO driver `pinctrl_amd` available
๐Ÿšฆ Device firmware checks unavailable without gobject introspection
โœ… WCN6855 WLAN (fw build id WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37)
How long should suspend cycles last in seconds (default 10)?
How long to wait in between suspend cycles in seconds (default 4)?
How many suspend cycles to run (default 1)?
Started at 2024-06-21 01:16:58.754215 (cycle finish expected @ 2024-06-21 01:17:12.754238)
Results from last s2idle cycle
โ—‹ Suspend count: 1
โ—‹ Hardware sleep cycle count: 10
โ—‹ Wakeup triggered from IRQ 9: ACPI SCI
โ—‹ Woke up from IRQ 9: ACPI SCI
โ—‹ gpe07 increased from 1823 to 2085
โœ… Userspace suspended for 0:00:12.962868
โœ… In a hardware sleep state for 0:00:01.672448 (12.90%)
๐Ÿ”‹ Battery BAT0 lost 30000 ยตWh (0.06%) [Average rate 0.83W]
```

> One more question - which Wifi module do you have? The Qualcomm NCM825 Wifi7 device still has a lot of problems (it's currently the main thing gating our Linux certification of the platform).
Mark Pearson June 20, 2024, 5:05 p.m. UTC | #5
Thanks Ohno

On Thu, Jun 20, 2024, at 12:57 PM, Yutaro Ohno wrote:
> On Fri Jun 21, 2024 at 12:35 AM JST, Mark Pearson wrote:
>> >>  - Get a report from running the Intel S0ix test tool - https://github.com/intel/S0ixSelftestTool. Run it with the -S option
>> >
>> > It may not work as my machine is not Intel, but here's the output:
>> <snip>
>>
>> Yeah - that won't work. The AMD test tool is here:
>> https://gitlab.freedesktop.org/drm/amd/-/blob/master/scripts/amd_s2idle.py
>> Can you try that please?
>
> Sure. I've tried with/without the kernel parameter `acpi.ec_no_wakeup=1`.
>
> Booting with the kernel parameter:
> ```
> $ sudo python3 amd_s2idle.py
> Location of log file (default s2idle_report-2024-06-21.txt)?
> Debugging script for s2idle on AMD systems
> ๐Ÿ’ป LENOVO 21MCCTO1WW (ThinkPad T14 Gen 5) running BIOS 1.4 (R2LET23W 
> (1.04 )) released 04/01/2024 and EC 1.1
> ๐Ÿง Arch Linux
> ๐Ÿง Kernel 6.9.5-arch1-1
> ๐Ÿ”‹ Battery BAT0 (SMP 5B11H56415) is operating at 101.22% of design
> Checking prerequisites for s2idle
> โœ… Logs are provided via systemd
> โœ… AMD Ryzen 7 PRO 8840U w/ Radeon 780M Graphics (family 19 model 75)
> โœ… SMT enabled
> โœ… LPS0 _DSM enabled
> โœ… ACPI FADT supports Low-power S0 idle
> โœ… HSMP driver `amd_hsmp` not detected (blocked: False)
> โœ… PMC driver `amd_pmc` loaded (Program 0 Firmware 76.83.0)
> โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.5
> โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.6
> โœ… GPU driver `amdgpu` bound to 0000:c4:00.0
> โœ… System is configured for s2idle
> โœ… NVME KIOXIA Corporation NVMe SSD Controller XG8 is configured for 
> s2idle in BIOS
> โœ… GPIO driver `pinctrl_amd` available
> ๐Ÿšฆ Device firmware checks unavailable without gobject introspection
> โœ… WCN6855 WLAN (fw build id 
> WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37)
> How long should suspend cycles last in seconds (default 10)?
> How long to wait in between suspend cycles in seconds (default 4)?
> How many suspend cycles to run (default 1)?
> Started at 2024-06-21 01:05:15.386691 (cycle finish expected @ 
> 2024-06-21 01:05:29.386714)
> Results from last s2idle cycle
> โ—‹ Suspend count: 1
> โ—‹ Hardware sleep cycle count: 1
> โ—‹ Wakeup triggered from IRQ 9: ACPI SCI
> โ—‹ Woke up from IRQ 9: ACPI SCI
> โ—‹ gpe07 increased from 9957 to 10219
> โœ… Userspace suspended for 0:00:12.386591
> โœ… In a hardware sleep state for 0:00:08.692840 (70.18%)
> ๐Ÿ”‹ Battery BAT0 lost 10000 ยตWh (0.02%) [Average rate 0.29W]
> ```
>
> Booting without the kernel parameter:
> ```
> $ sudo python3 ./amd_s2idle.py
> Location of log file (default s2idle_report-2024-06-21.txt)?
> Debugging script for s2idle on AMD systems
> ๐Ÿ’ป LENOVO 21MCCTO1WW (ThinkPad T14 Gen 5) running BIOS 1.4 (R2LET23W 
> (1.04 )) released 04/01/2024 and EC 1.1
> ๐Ÿง Arch Linux
> ๐Ÿง Kernel 6.9.5-arch1-1
> ๐Ÿ”‹ Battery BAT0 (SMP 5B11H56415) is operating at 101.22% of design
> Checking prerequisites for s2idle
> โœ… Logs are provided via systemd
> โœ… AMD Ryzen 7 PRO 8840U w/ Radeon 780M Graphics (family 19 model 75)
> โœ… SMT enabled
> โœ… LPS0 _DSM enabled
> โœ… ACPI FADT supports Low-power S0 idle
> โœ… HSMP driver `amd_hsmp` not detected (blocked: False)
> โœ… PMC driver `amd_pmc` loaded (Program 0 Firmware 76.83.0)
> โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.5
> โœ… USB4 driver `thunderbolt` bound to 0000:c6:00.6
> โœ… GPU driver `amdgpu` bound to 0000:c4:00.0
> โœ… System is configured for s2idle
> โœ… NVME KIOXIA Corporation NVMe SSD Controller XG8 is configured for 
> s2idle in BIOS
> โœ… GPIO driver `pinctrl_amd` available
> ๐Ÿšฆ Device firmware checks unavailable without gobject introspection
> โœ… WCN6855 WLAN (fw build id 
> WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37)
> How long should suspend cycles last in seconds (default 10)?
> How long to wait in between suspend cycles in seconds (default 4)?
> How many suspend cycles to run (default 1)?
> Started at 2024-06-21 01:16:58.754215 (cycle finish expected @ 
> 2024-06-21 01:17:12.754238)
> Results from last s2idle cycle
> โ—‹ Suspend count: 1
> โ—‹ Hardware sleep cycle count: 10
> โ—‹ Wakeup triggered from IRQ 9: ACPI SCI
> โ—‹ Woke up from IRQ 9: ACPI SCI
> โ—‹ gpe07 increased from 1823 to 2085
> โœ… Userspace suspended for 0:00:12.962868
> โœ… In a hardware sleep state for 0:00:01.672448 (12.90%)
> ๐Ÿ”‹ Battery BAT0 lost 30000 ยตWh (0.06%) [Average rate 0.83W]
> ```
>
>> One more question - which Wifi module do you have? The Qualcomm NCM825 Wifi7 device still has a lot of problems (it's currently the main thing gating our Linux certification of the platform).
>
> From `lspci`, it's the QCNFA765.
>
I'll forward these on to the FW team.
Mark
diff mbox series

Patch

diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 299ec653388c..c7d5231edca7 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -2248,6 +2248,12 @@  static const struct dmi_system_id acpi_ec_no_wakeup[] = {
 			DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Yoga 3rd"),
 		},
 	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad T14 Gen 5"),
+		},
+	},
 	{
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "HP"),