@@ -32,6 +32,7 @@
#include "hw/hw.h"
#include "qemu/error-report.h"
#include "qemu/range.h"
+#include "sysemu/balloon.h"
#include "sysemu/kvm.h"
#include "trace.h"
#include "qapi/error.h"
@@ -1218,6 +1219,9 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as,
container->initialized = true;
+ /* vfio is currently incompatible with ballooning */
+ qemu_balloon_inhibit(true);
+
return 0;
listener_release_exit:
QLIST_REMOVE(group, container_next);
@@ -1276,6 +1280,8 @@ static void vfio_disconnect_container(VFIOGroup *group)
g_free(container);
vfio_put_address_space(space);
+
+ qemu_balloon_inhibit(false);
}
}
For all directly assigned devices and potentially some mdev devices, internal management of pinned pages is incompatible with ballooning. In the case of mdev devices, QEMU cannot know which pages the vendor driver has mapped for the device. It could be only the working set, which should never be a ballooning victim page, or it could be the entire VM address space. Until the vfio IOMMU interface can tell us more about the support for handling ballooning, assume any vfio container inhibits ballooning. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> --- hw/vfio/common.c | 6 ++++++ 1 file changed, 6 insertions(+)