How can I ignore kernel ACPI errors in /var/log/messages

As the title says my /var/log/messages file is filled with these messages, the machine works fine but somewhere between the kernel and firmware something is amiss.

Code:
Feb 16 03:32:07 atlas kernel: Firmware Error (ACPI): Could not resolve symbol [\_SB.PCI0.LPCB.HEC.ECAV], AE_NOT_FOUND (20201113/psargs-503)
Feb 16 03:32:07 atlas kernel: ACPI Error: Aborting method \_TZ.TZ00._TMP due to previous error (AE_NOT_FOUND) (20201113/psparse-689)

I have updated to the latest BIOS and I'm running 13.1-RELEASE-p3

Is there an ignore filter option?
 
TZ seems to suggest it's a temperature sensor, i.e. Thermal Zone. So not a critical component, that's probably why everything else works fine.

It's not uncommon there's a bug in the AML code for ACPI. Some bug that doesn't show up with the Microsoft implementation, and therefor OEMs don't bother fixing them.

Code:
OVERRIDING YOUR BIOS BYTECODE
     ACPI interprets bytecode named AML (ACPI Machine Language) provided by
     the BIOS vendor as a memory image at boot time.  Sometimes, the AML code
     contains a bug that does not appear when parsed by the Microsoft
     implementation.  FreeBSD provides a way to override it with your own AML
     code to work around or debug such problems.  Note that all AML in your
     DSDT and any SSDT tables is overridden.
acpi(4)
 
Just in case someone happens to come across this thread when searching the web for the same ACPI error messages …

In this particular case, the best and easiest way is to disable the sub-driver that tries to access the broken ACPI BIOS code. You don’t lose any functionality because it doesn’t work anyway.
According to the error messages, the affected sub-driver is the ACPI thermal driver.
Put this line in /boot/loader.conf or /boot/loader.conf.local:
Code:
debug.acpi.disabled="thermal"
Then reboot. The error messages will be gone.

If you cannot reboot right away, a quick solution is to change the sysctl hw.acpi.thermal.polling_rate. The default value is 10. The unit is seconds, so you’re getting those error messages every 10 seconds. You can increase the interval to one hour, for example, by executing this shell command as root:
Code:
sysctl hw.acpi.thermal.polling_rate=3600
It takes effect immediately, and stays in effect until reboot (unless you add an entry to /etc/sysctl.conf). The error messages will now occur only once per hour.

By the way, the functionality that you lose is to retrieve information about system temperature and fan states via ACPI. As I mentioned above, it doesn’t work anyway, so you actually don’t lose anything. You can still query the CPU temperature by other means, depending on CPU type, e.g. via the pchtherm(4) driver:
Code:
# sysctl dev.pchtherm.0.temperature
dev.pchtherm.0.temperature: 33.5C
On some systems, temperature and fan sensors are accessible via SMBus, too. There are also several packages in the ports collection for accessing these.
 
Back
Top