From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: [RFC PATCH 3/3] vfio: Inhibit ballooning Date: Tue, 17 Jul 2018 16:47:51 -0600 Message-ID: <20180717224751.14019.95362.stgit@gimli.home> References: <20180717222721.14019.27548.stgit@gimli.home> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: qemu-devel@nongnu.org Return-path: In-Reply-To: <20180717222721.14019.27548.stgit@gimli.home> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel2=m.gmane.org@nongnu.org Sender: "Qemu-devel" List-Id: kvm.vger.kernel.org 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 --- hw/vfio/common.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/vfio/common.c b/hw/vfio/common.c index fb396cf00ac4..8124dd8df3c1 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -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); } }