vfio: Start improving VFIO/EEH interface

Enterprise / Virtualization / QEMU - David Gibson [gibson.dropbear.id.au] - 15 March 2016 17:55 UTC

At present the code handling IBM's Enhanced Error Handling (EEH) interface on VFIO devices operates by bypassing the usual VFIO logic with
vfio_container_ioctl(). That's a poorly designed interface with unclear semantics about exactly what can be operated on.

In particular it operates on a single vfio container internally (hence the name), but takes an address space and group id, from which it deduces the container in a rather roundabout way. groupids are something that code outside vfio shouldn't even be aware of.

This patch creates new interfaces for EEH operations. Internally we have vfio_eeh_container_op() which takes a VFIOContainer object directly. For external use we have vfio_eeh_as_ok() which determines if an AddressSpace is usable for EEH (at present this means it has a single container with exactly one group attached), and vfio_eeh_as_op() which will perform an operation on an AddressSpace in the unambiguous case, and otherwise returns an error.

This interface still isn't great, but it's enough of an improvement to allow a number of cleanups in other places.

3153119 vfio: Start improving VFIO/EEH interface
hw/vfio/common.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++++
include/hw/vfio/vfio.h | 2 +
2 files changed, 97 insertions(+)

Upstream: git.qemu.org


  • Share