From nobody Wed Nov 5 02:29:54 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1531867915615900.7097848830728; Tue, 17 Jul 2018 15:51:55 -0700 (PDT) Received: from localhost ([::1]:33776 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ffYou-00085S-Df for importer@patchew.org; Tue, 17 Jul 2018 18:51:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49443) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ffYl9-0005WI-U1 for qemu-devel@nongnu.org; Tue, 17 Jul 2018 18:47:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ffYl9-0000sv-1e for qemu-devel@nongnu.org; Tue, 17 Jul 2018 18:47:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:29272) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ffYl8-0000sJ-K3 for qemu-devel@nongnu.org; Tue, 17 Jul 2018 18:47:54 -0400 Received: from smtp.corp.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CA87B3084040; Tue, 17 Jul 2018 22:47:53 +0000 (UTC) Received: from gimli.home (ovpn-116-29.phx2.redhat.com [10.3.116.29]) by smtp.corp.redhat.com (Postfix) with ESMTP id 97C7BBD216; Tue, 17 Jul 2018 22:47:51 +0000 (UTC) From: Alex Williamson To: qemu-devel@nongnu.org Date: Tue, 17 Jul 2018 16:47:51 -0600 Message-ID: <20180717224751.14019.95362.stgit@gimli.home> In-Reply-To: <20180717222721.14019.27548.stgit@gimli.home> References: <20180717222721.14019.27548.stgit@gimli.home> User-Agent: StGit/0.18-102-gdf9f MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.84 on 10.5.11.27 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Tue, 17 Jul 2018 22:47:53 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [RFC PATCH 3/3] vfio: Inhibit ballooning X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kvm@vger.kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 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, A= ddressSpace *as, =20 container->initialized =3D true; =20 + /* 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 *grou= p) g_free(container); =20 vfio_put_address_space(space); + + qemu_balloon_inhibit(false); } } =20