Frequent ACPI errors starting with SMBus or IPMI write requires Buffer of length 42



The Issue:

The output of the dmesg command contains the following errors:

ACPI Error: SMBus or IPMI write requires Buffer of length 42, found length 20 (20090903/exfield-286)
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PMI0._PMM] (Node f704cba8), AE_AML_BUFFER_LIMIT
ACPI Exception: AE_AML_BUFFER_LIMIT, Evaluating _PMM (20090903/power_meter-341)

Environment:

  • CentOS 6.5
  • ACPI
  • HP ProLiant DL360 G7 / HP DL380p G8

 

It seams that a number of people are having this issue using several flavors of linux including Redhat, CentOS, Ubuntu, Debian and SUSE on HP ProLiant Servers.

The message is generated every 5 minutes filling up the message log file.

As reported the problem originates from lm-sensors trying to read values from the power meter sensor but failing because HP has ignored the spec for this method, so the recommendation is that the error can be safely ignored.

Root Cause:

HP’s \SB._OSC method violates the ACPI spec. \SB._OSC is documented as taking an 8-byte argument, while the HP firmware is attempting to interpret it as a 12-byte one. HP have ignored the spec for this method and implemented their own as part of the Processor Clocking Control specification. We can’t work around this without risking breaking spec-compliant machines. Nothing will actually be broken as a result of this error.

Solution:

Reproducing the error is important to be able to find a solution.

To reproduce the issue on affected HW one should find a valid device by:

find /sys/devices/LNXSYSTM\:00/ |grep ACPI000D

then trying to read out the power average: (path listed from the command above)

cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI000D:00/power1_average

will result in the mentioned kernel errors in syslog.

The sensor affected can be found by:

#sensors

acpitz-virtual-0
Adapter: Virtual device
temp1: +8.3°C (crit = +31.3°C)

power_meter-acpi-0
Adapter: ACPI interface
power1: 0.00 W (interval = 300.00 s)

Editing the sensors config file in the /etc directory and ignoring this particular reading will remove the errors from the messages log file.

#nano /etc/sensors3.conf

go to the bottom of the file and add type:

chip “power_meter-acpi-0”
ignore power1

then reboot.

References:

https://access.redhat.com/solutions/48109

http://www.novell.com/support/kb/doc.php?id=7010449

http://forums.opensuse.org/showthread.php/495337-Kernel-error-with-ACPI

http://www.rootathome.de/smbus-or-ipmi-write-requires-buffer-of-length-66-found-length-32/