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

  • 7010449
  • 13-Jul-2012
  • 01-Jun-2016

Environment

Hewlett Packard G7, G8 and G9 servers

Novell Open Enterprise Server 11 (OES 11) Linux
SUSE Linux Enterprise Server 11 Service Pack 1 (SLES 11 SP1)
SUSE Linux Enterprise Server 11 Service Pack 2 (SLES 11 SP2)
SUSE Linux Enterprise Server 11 Service Pack 3 (SLES 11 SP3)
SUSE Linux Enterprise Server 11 Service Pack 4 (SLES 11 SP4)
SUSE Linux Enterprise Server 12
SUSE Linux Enterprise Server 12 Service Pack 1 (SLES 12 SP1)

Situation

In /var/log/messages once or frequently the following messages appear:

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

Resolution

The messages express a disagreement between the BIOS and the kernel as far as an ACPI buffer size is concerned. This is related to power monitoring.

This is confirmed to be a BIOS issue which should be addressed by a BIOS update from the hardware vendor. Short of a BIOS update from the vendor, the easiest solution is to blacklist the acpi_power_meter kernel module. The driver doesn't work due to the wrong buffer size anyway.

# echo "blacklist acpi_power_meter" >> /etc/modprobe.d/hwmon.conf

When running SLES11 SP2, and you really want to get rid of the error messages *and* get the acpi_power_meter driver working, you will have to provide a custom ACPI table to replace the faulty one. However this is a difficult task and needs to be done for every machine. Specifically you'll have to locate method _PMM and change the definition of BUFF from Buffer (0x20) to Buffer (0x42).

Even after doing that, you will notice a new set of kernel error messages:

ACPI Error: No handler for Region [POWR] (ffff8802333da588) [IPMI] (20110413/evregion-373)
ACPI Error: Region IPMI (ID=7) has no handler (20110413/exfldio-292)
ACPI Error: Method parse/execution failed [\_SB_.PMI0._PMM] (Node ffff8802333dbce0), AE_NOT_EXIST (20110413/psparse-536)

This is caused by a missing kernel module, which was not supported before kernel package version 3.0.26-0.7.6. The required modules will not be loaded automatically, so after updating the kernel, you will also have to load them with the following commands:

# modprobe ipmi_si
# modprobe acpi_ipmi

After that, you can load the acpi_power_meter module and it should work.

Additional Information

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:
cat /sys/devices/LNXSYSTM:00/device:00/ACPI000D:00/power1_average
 will result in the mentioned kernel errors in syslog.