spapr_iommu: Provide a function to switch a TCE table to allowing VFIO
authorDavid Gibson <david@gibson.dropbear.id.au>
Thu, 1 Oct 2015 00:46:10 +0000 (10:46 +1000)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 22 Oct 2015 23:38:10 +0000 (10:38 +1100)
commitc10325d6f9af84444120d8a6d1d59f41a282ae1b
tree12a3bbe9c2f6e536eac66058ab34e7adc9d0a6c2
parent6a81dd172cd5d03fce593741629cb4c78fff10cb
spapr_iommu: Provide a function to switch a TCE table to allowing VFIO

Because of the way non-VFIO guest IOMMU operations are KVM accelerated, not
all TCE tables (guest IOMMU contexts) can support VFIO devices.  Currently,
this is decided at creation time.

To support hotplug of VFIO devices, we need to allow a TCE table which
previously didn't allow VFIO devices to be switched so that it can.  This
patch adds an spapr_tce_set_need_vfio() function to do this, by
reallocating the table in userspace if necessary.

Currently this doesn't allow the KVM acceleration to be re-enabled if all
the VFIO devices are removed.  That's an optimization for another time.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
hw/ppc/spapr_iommu.c
include/hw/ppc/spapr.h