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:
G'day Crew

On FreeBSD 15.0-CURRENT

I premise my statements that I am not a Tech Engineer or anything like that. So I probably have no idea what I am on about or am wrong - However;

Chiming in here as I've been working with a large number of different laptops on the Intel CPU and either iris xe + GPU or just Intel uhd.

What I have noticed and learned (Especially with HP laptops) there seems to be a three fold issue with a lot of acpi timeouts that may occur either in the boot or shutdown process, or otherwise the fan rotations that aren't properly managed - this is (from my observations) actually related to Intel CPUs and ACPI systems.

With regard to laptops on AMD systems - powerdxx would be your saving grace and most likely would solve the issue after a reboot post enabling. For even more effective management - setting the CPU ranges to just below the max non boost threading - this will keep your system between 35-45 degrees on idle no use and when using I'd be surprised if you got above 75 degrees at full capacity. I haven't.

With the Intel systems it's a bit more complicated - powerdxx won't work for processors that manage their thermals and threads internally (Intel's black box OS on the CPU does this) so what you need to do is reset how freeBSD catches and receives the signals - so it can manage thermals more appropriately.

Socratically I have discerned the most fool proof way (basically so far works on every laptop I've tried)

I hope this resolves whoever may be experiencing similar issues.

1. Enter BIOS

2. DISABLE Hyper threading on CPU

3. ENABLE Fan always ON

4. Save and Reboot

-- you should no longer see any acpi issues but there's more to do

5. Login to your system - be root

6. Enable powerd (not powerdxx) and set the famous standard tunable "-a hiadaptive -b adaptive" (I don't think this would be useful for a desktop but maybe try it)

7. Reboot

8. Go into your system again and login and just open any thing that would usually get the temp to rise (for me it was almost anything so I just used Firefox) and got the fans to engage their higher RPM (what I call launch mode - temp would probably need to rise to around 72 odd degrees to get the always on idle rotations to increase)

9. Reboot

10. Enter BIOS

Turn Hyper threading back ON

Turn Fan always on OFF

11. Save and Reboot


I have attached two images of two different systems one is AMD Ryzen 7 APU and one is Intel i5 Iris + GTX

These thermals are the general levels I have - I have not had the issue repeat or return on any system when doing the above

My System Monitor



Let me know how this works for your desktop. Or if I'm insane

Cheers
 

Attachments

  • PXL_20260310_210748483.RAW-01.MP.COVER.jpg
    PXL_20260310_210748483.RAW-01.MP.COVER.jpg
    883.3 KB · Views: 6
  • PXL_20260310_211914372.RAW-01.MP.COVER.jpg
    PXL_20260310_211914372.RAW-01.MP.COVER.jpg
    851.1 KB · Views: 6
Back
Top