KVM guest with acpi installed will not shutdown

kvm-virtualization

I have KVM installed and working on my Debian 7.1 host with two Debian 7.1 guests and some Windows XP guests. When I shutdown using the command 'virsh shutdown ' or hitting the shutdown button in virt-manager the Debian guests go into pmsuspended state.

The only way I can properly shutdown is to ssh into those guests and type the 'shutdown -h now' command.

On both debian guests I have these packages installed and running:

ii  acpi                                  1.6-1                              amd64        displays information on ACPI devices
ii  acpi-fakekey                          0.140-5                            amd64        tool to generate fake key events
ii  acpi-support                          0.140-5                            all          scripts for handling many ACPI events
ii  acpi-support-base                     0.140-5                            all          scripts for handling base ACPI events such as the power button
ii  acpid                                 1:2.0.16-1+deb7u1                  amd64        Advanced Configuration and Power Interface event daemon

Here is the events of my acpid on my debian guest:

:/etc/acpi/events$ cat powerbtn-acpi-support 
event=button[ /]power
action=/etc/acpi/powerbtn-acpi-support.sh

/etc/acpi/powerbtn-acpi-support.sh

#!/bin/sh

# This script initiates a shutdown when the power putton has been
# pressed. Loosely based on the sample that ships with the acpid package.
# If the acpid sample is present as a real config file (as it was in earlier
# versions of acpid), we skip this script. (Purging and reinstalling acpid
# resolves this situation, or simply deleting /etc/acpi/events/powerbtn.)

if [ -f /etc/acpi/events/powerbtn -o -f /etc/acpi/events/powerbtn.dpkg-bak ] ; then 
    logger Acpi-support not handling power button, acpid handler exists at /etc/acpi/events/powerbtn or /etc/acpi/events/powerbtn.dpkg-bak.
    exit 0
fi

[ -e /usr/share/acpi-support/policy-funcs ] || exit 0

. /usr/share/acpi-support/policy-funcs

if CheckPolicy; then
    exit 0
fi

if [ -x /etc/acpi/powerbtn.sh ] ; then
    # Compatibility with old config script from acpid package
    /etc/acpi/powerbtn.sh
elif [ -x /etc/acpi/powerbtn.sh.dpkg-bak ] ; then
        # Compatibility with old config script from acpid package
    # which is still around because it was changed by the admin
        /etc/acpi/powerbtn.sh.dpkg-bak
else
    # Normal handling.
    /sbin/shutdown -h -P now "Power button pressed"
fi

Update

Installed a new Debian guest VM last week and it doesn't have the shutdown problem. The Debian VMs which do have the problem were moved from VirtualBox to KVM and are older installations of Debian 7.

Best Answer

I've recently solved the problem on current Ubuntu by installing acpid and editing /etc/acpi/events/powerbtn to contain action=/sbin/poweroff.

detailed instructions