Linux

How to Fix “ACPI Error: SMBus/IPMI/GenericSerialBus write requires Buffer of length 66”

Kernel log flooded with ACPI AE_AML_BUFFER_LIMIT errors from _PMM on HP servers? It's the acpi_power_meter driver. Unload it and blacklist it to stop the noise.

The kernel log of a Linux server, often an HP ProLiant, fills up with errors like these every few seconds:

kernel: ACPI Error: SMBus/IPMI/GenericSerialBus write requires Buffer of length 66, found length 32 (20180531/exfield-393)
kernel: ACPI Error: Method parse/execution failed \_SB.PMI0._PMM, AE_AML_BUFFER_LIMIT (20180531/psparse-516)
kernel: ACPI Error: AE_AML_BUFFER_LIMIT, Evaluating _PMM (20180531/power_meter-338)

The server keeps working; the messages are noise. This guide explains where they come from and how to stop them.

Quick answer

The errors come from the acpi_power_meter kernel driver. As root, unload it now and stop it from loading at boot:

modprobe -r acpi_power_meter
echo "blacklist acpi_power_meter" > /etc/modprobe.d/acpi_power_meter.conf

The messages stop at once and stay gone after a reboot.

What you need: root access. This works on AlmaLinux, Rocky Linux, CloudLinux, RHEL, Debian and Ubuntu.

Why it happens

acpi_power_meter is a kernel driver that reads the server's power use through the ACPI power meter interface that the firmware (BIOS) provides. Linux kernel The _PMM in the error is the firmware method that returns the current power reading, and power_meter in the last line is that driver.

On some servers, the firmware's power meter method talks to the management controller (IPMI) with a message buffer of the wrong size: 32 bytes where the kernel expects 66. The kernel rejects it, logs an error, and tries again on its next reading, so the message repeats.

It is a mismatch between the firmware and the kernel, not a hardware fault. The server's power supplies, disks and the IPMI/iLO controller are fine.

Step 1: Check that this driver is the cause

Make sure the errors mention _PMM or power_meter, and that the driver is loaded:

dmesg | grep -E '_PMM|power_meter' | tail -3
lsmod | grep acpi_power_meter

If lsmod prints an acpi_power_meter line, continue.

Step 2: Unload the driver

modprobe -r acpi_power_meter

Watch the log for a minute. No new _PMM errors should appear:

dmesg -w | grep -E '_PMM|power_meter'

Press Ctrl+C to stop watching.

Step 3: Keep it from loading at boot

Create a file in /etc/modprobe.d/ that blacklists the driver:

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

blacklist tells the system not to load the driver automatically for the hardware it detects. modprobe.d The file name does not matter as long as it ends in .conf; a separate file is easy to find and remove later.

Reboot when it suits you, then confirm the driver stayed off:

lsmod | grep acpi_power_meter

No output means it worked.

What you lose

Without the driver, Linux cannot read the server's power use through ACPI, so tools that read power values under /sys/class/hwmon/ (some monitoring agents do) get nothing from it. Linux kernel You can still see power use in the server's management interface, such as HP iLO or Dell iDRAC.

Better long-term fixes

  • Update the server's firmware (BIOS/UEFI and iLO). The vendor may have fixed the power meter method.
  • Update the kernel. Newer kernels may handle the buffer differently.

After either update, you can test by removing the blacklist file, loading the driver with modprobe acpi_power_meter, and watching the log again.

Undo

To bring the driver back:

rm /etc/modprobe.d/acpi_power_meter.conf
modprobe acpi_power_meter

Sources

  1. Linux kernel documentation: Kernel driver power_meter
  2. modprobe.d(5) manual page

Written by Tharanga. Commands and procedures depend on your system and software version.

How we approach technical guides →
FOLLOW THE THREAD

Keep exploring

All guides
Linux1 min read

How to Check Disk Space in Linux

See how much disk space is free on a Linux server and find the folders using the most space, with two beginner-friendly commands: df and du.