pseries: Implement qemu initiated shutdowns using EPOW events
authorDavid Gibson <david@gibson.dropbear.id.au>
Mon, 8 Oct 2012 18:17:39 +0000 (18:17 +0000)
committerAlexander Graf <agraf@suse.de>
Mon, 29 Oct 2012 10:45:54 +0000 (11:45 +0100)
commit74d042e5cec78090194669a8a4417c0a49d46a3d
treee9d2a888f96dde333e160ea3b5a587634a12f2e6
parent1bfb37d1e077705de14f0f7fdc7b21749dbe4bc9
pseries: Implement qemu initiated shutdowns using EPOW events

At present, using 'system_powerdown' from the monitor or otherwise
instructing qemu to (cleanly) shut down a pseries guest will not work,
because we did not have a method of signalling the shutdown request to the
guest.

PAPR does include a usable mechanism for this, though it is rather more
involved than the equivalent on x86.  This involves sending an EPOW
(Environmental and POwer Warning) event through the PAPR event and error
logging mechanism, which also has a number of other functions.

This patch implements just enough of the event/error logging functionality
to be able to send a shutdown event to the guest.  At least with modern
guest kernels and a userspace that is up and running, this means that
system_powerdown from the qemu monitor should now work correctly on pseries
guests.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
hw/ppc/Makefile.objs
hw/spapr.c
hw/spapr.h
hw/spapr_events.c [new file with mode: 0644]