Lenovo ThinkCentre M90q Gen 2 - ACPI issue (hangup)

On my ThinkCentre everything works without issues, until the temperature goes over ~60°

Then, CPU fan stops for couple of seconds and starts blowing at full speed. While temperature
is decreasing (down to under 40°) fans continue to blow and after 2-4 minutes computer hangs and
only hard reboot can bring it back to life.

During this period of 2-4 minutes, log is filled with error messages :

AcpiOsExecute: failed to enqueue task, consider increasing the debug.acpi.max_tasks tunable
ACPI Error: AE_NO_MEMORY, Unable to queue handler for GPE 24 - event disabled (20201113/evgpe-1049)
ACPI Error: AE_NO_MEMORY, Unable to queue handler for GPE 24 - event disabledAcpiOsExecute: failed to enqueue task, consider increasing the debug.acpi.max_tasks tunable
(20201113/evgpe-1049)

I did try to increase the debug.acpi.max_tasks tunable up to 4096 but it did not help to resolve the issue.

The latest BIOS (12/15/2022, ver, M3JKT38A) has been installed.

All details about the computer (acpidump, devinfo, sysctl, dmesg, dmidecode) are in attached files.
 

Attachments

Last edited:
On my ThinkCentre everything works without issues, until the temperature goes over ~60°

How high does it ever go?

Then, CPU fan stop for couple of seconds and then start blowing at full speed. While temperature is decreasing (down to under 40°) fans continue to blow and after 2-4 minutes computer hangs and
only hard reboot can bring it back to life.

Seems it's shifting to _AC0 (fastest fan) state, which should work up to 82.1C, but it's not shifting back to _AC1 once again below 55.1°C ?

I'd probably post this - with excellent detail BTW - to the freebsd-acpi@ list (after subscribing probably) assuming a likely ACPI issue, bearing in mind that I'm just guessing from many years ago :)

During this period of 2-4 minutes, log is filled with error messages :

AcpiOsExecute: failed to enqueue task, consider increasing the debug.acpi.max_tasks tunable
ACPI Error: AE_NO_MEMORY, Unable to queue handler for GPE 24 - event disabled (20201113/evgpe-1049
...


I did try to increase the debug.acpi.max_tasks tunable up to 4096 but it did not help to resolve the issue.

I suspect any size will only fill up if it's rejecting tasks, perhaps to do with _AC0.

Code:
hw.acpi.thermal.tz0._TSP: -1
hw.acpi.thermal.tz0._TC2: -1
hw.acpi.thermal.tz0._TC1: -1
hw.acpi.thermal.tz0._ACx: 82.1C 55.1C 50.1C 45.1C 40.1C -1 -1 -1 -1 -1
hw.acpi.thermal.tz0._CRT: 105.1C
hw.acpi.thermal.tz0._HOT: -1
hw.acpi.thermal.tz0._PSV: -1
hw.acpi.thermal.tz0.thermal_flags: 0
hw.acpi.thermal.tz0.passive_cooling: 0
hw.acpi.thermal.tz0.active: 4
hw.acpi.thermal.tz0.temperature: 44.1C
hw.acpi.thermal.user_override: 0
hw.acpi.thermal.polling_rate: 10
hw.acpi.thermal.min_runtime: 0

All details about the computer (acpidump, devinfo, sysctl, dmesg) are in attached files.

Couple of obs:

If you don't have the latest BIOS, start there. (i.e. is 20201113 the BIOS date?)

> hw.acpi.cpu.cx_lowest: C1

C8 will run cooler, especially on relatively idle cpus, and with the firepower you have should be unnoticeable.

Consider running coretemp ?

Oh, just noticed:

<118>Thu Feb 2 12:44:51 CET 2023
<118>Feb 2 12:45:35 <auth.notice> xxxx dbus-daemon[1987]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.18" (uid=1001 pid=2278 comm="/usr/local/lib/libexec/org_kde_powerdevil") interface="org.freedesktop.ConsoleKit.Manager" member="CanSuspendThenHibernate" error name="(unset)" requested_reply="0" destination="org.freedesktop.ConsoleKit" (uid=0 pid=2178 comm="/usr/local/sbin/console-kit-daemon --no-daemon")
acpi_tz0: switched from _AC4 to _AC3: 46.1C

I hope KDE powerdevil is not messing with temperature control, but is turned OFF?

Are you running powerd{,++}? If not, why not?

cheers, Ian
 
While working this out, you may find it useful to try limiting temperature with sysutils/powerdxx as shown here, esp. post #17:

At a guess, limiting below that _AC0 temp. of 82.1°C ?
 
How high does it ever go?
I never saw it higher then 79°C but most probably is as you said, once 82.1°C reached,
fans go to full speed and (almost) never come back to normal speed. Almost because,
it already hapend to come back to normal, _AC3 / _AC4 speed.

Temperature on the other hand should not be the issue. When the machine freezes,
CPU temperature is around 40°C

Seems it's shifting to _AC0 (fastest fan) state, which should work up to 82.1C, but it's not shifting back to _AC1 once again below 55.1°C ?
That seems to be the case, indeed.

Couple of obs:

If you don't have the latest BIOS, start there. (i.e. is 20201113 the BIOS date?)
I do have the latest BIOS version (12/15/2022).

> hw.acpi.cpu.cx_lowest: C1

C8 will run cooler, especially on relatively idle cpus, and with the firepower you have should be unnoticeable.
I've tried to go with C3 (C3 handles deeper states then C3) but system becomes quite sluggish.
I've did monitor the power consumption and temperature, the difference is not staggering.

Consider running coretemp ?

I did try with coretemp, and the temperature difference between ACPI and coretemp is interesting :

dev.cpu.0.coretemp.delta: 50
dev.cpu.0.temperature: 50.0C
dev.cpu.1.coretemp.delta: 51
dev.cpu.1.temperature: 49.0C
dev.cpu.2.coretemp.delta: 51
dev.cpu.2.temperature: 49.0C
dev.cpu.3.coretemp.delta: 50
dev.cpu.3.temperature: 50.0C
dev.cpu.4.coretemp.delta: 50
dev.cpu.4.temperature: 50.0C
dev.cpu.5.coretemp.delta: 51
dev.cpu.5.temperature: 49.0C
dev.cpu.6.coretemp.delta: 50
dev.cpu.6.temperature: 50.0C
dev.cpu.7.coretemp.delta: 48
dev.cpu.7.temperature: 52.0C
dev.cpu.8.coretemp.delta: 52
dev.cpu.8.temperature: 48.0C
dev.cpu.9.coretemp.delta: 50
dev.cpu.9.temperature: 50.0C
dev.cpu.10.coretemp.delta: 49
dev.cpu.10.temperature: 51.0C
dev.cpu.11.coretemp.delta: 42
dev.cpu.11.temperature: 58.0C

hw.acpi.thermal.tz0.temperature: 48.1C


Oh, just noticed:

<118>Thu Feb 2 12:44:51 CET 2023
<118>Feb 2 12:45:35 <auth.notice> xxxx dbus-daemon[1987]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.18" (uid=1001 pid=2278 comm="/usr/local/lib/libexec/org_kde_powerdevil") interface="org.freedesktop.ConsoleKit.Manager" member="CanSuspendThenHibernate" error name="(unset)" requested_reply="0" destination="org.freedesktop.ConsoleKit" (uid=0 pid=2178 comm="/usr/local/sbin/console-kit-daemon --no-daemon")
acpi_tz0: switched from _AC4 to _AC3: 46.1C

I hope KDE powerdevil is not messing with temperature control, but is turned OFF?

Are you running powerd{,++}? If not, why not?

cheers, Ian

I really think the issue is on the BIOS / ACPI side, as the temperature is not high
when is crashes. And also the kernel messages storm does indicate the ACPI issue.

Thank you for you thoughts and your feedback.

P.S.
powerd{xx|++} is managing the CPU freq. As said, that would probably not resolve the issue.

 
Last edited:
I am having similar problem and so far BIOS updates have not resolved it. The only way this Lenovo M90q Gen 2 is stable is when fans run at full speed. Mine is with i9 CPU which is quite power hungry.

CPU: 11th Gen Intel(R) Core(TM) i9-11900 @ 2.50GHz (2496.00-MHz K8-class CPU)

Was an solution to this issue found ever?
 
Upgrade to FreeBSD-14 resolved the issue. Since, never had any issue with heating or hangs.
I was hopeful this might help. Upgraded to 14.1, then 14.2 .. nothing changes. There is something wrong with the power management of these machines and the way FreeBSD handles it. There is no issue with Ubuntu for example.

PS: I have had some improvement by disabling hwpstate_intel alltogether by setting hint.hwpstate_intel.0.disabled=1 in /boot/loader.conf. This switches to EST.

est0: <Enhanced SpeedStep Frequency Control> on cpu0

However, after a day intensive compiling and temperature of dev.cpu.0 varying between 60 and 87 degrees Celsius it hanged again. Setting performance_cpu_freq="2500" in /etc/rc.conf gave me CPU temperatures below 60 degrees at all times, fans never turn on high (like on Ubuntu). As far as I understand this effectively disables Turbo Boost. So far, so good. My CPU reports:

dev.cpu.0.freq_levels: 2501/65000 2500/65000 2400/61690 2300/58444 2100/52138 2000/49078 1900/46088 1800/43148 1600/37449 1500/34688 1400/31992 1300/29346 1200/26759 1000/21753 900/19334 800/16975

Without that later setting, it would sit at 2501, which is 2500 with Turbo Boost enabled.
It might be hwpstate_intel on these CPUs is poorly implemented, but this is just a guess. I could never make it work stable no matter what adjustments.
 
Last edited:
Back
Top