sPAPR: Implement EEH RTAS calls
commitee954280da8d9ea7afd28b4c288da15fb8b4efca
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Fri, 20 Feb 2015 04:58:52 +0000 (20 15:58 +1100)
committerAlexander Graf <agraf@suse.de>
Mon, 9 Mar 2015 14:00:08 +0000 (9 15:00 +0100)
treeea712f94e24f1f3a97727eb23aa3cfd5c86fe7e8
parentd7586dc426472b5ad0f5c01b5c7c551eeb5a6003
sPAPR: Implement EEH RTAS calls

The emulation for EEH RTAS requests from guest isn't covered
by QEMU yet and the patch implements them.

The patch defines constants used by EEH RTAS calls and adds
callbacks sPAPRPHBClass::{eeh_set_option, eeh_get_state, eeh_reset,
eeh_configure}, which are going to be used as follows:

  * RTAS calls are received in spapr_pci.c, sanity check is done
    there.
  * RTAS handlers handle what they can. If there is something it
    cannot handle and the corresponding sPAPRPHBClass callback is
    defined, it is called.
  * Those callbacks are only implemented for VFIO now. They do ioctl()
    to the IOMMU container fd to complete the calls. Error codes from
    that ioctl() are transferred back to the guest.

[aik: defined RTAS tokens for EEH RTAS calls]
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
hw/ppc/spapr_pci.c
include/hw/pci-host/spapr.h
include/hw/ppc/spapr.h