From nobody Sun Sep 28 17:40:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1757471988; cv=none; d=zohomail.com; s=zohoarc; b=XpblvvcJPo49ss8jPMCZebrgaxLLmBtjPKgIMcELVUQzH8op4l8CjIz0yq7wx7tOhvahTIbzi+obfBFE/B8hqKLY2nFt4jBoLg9our2Uo7VrGtB2LoWr3X/Bgvd2VoYc8ywjiBSHwiHKlOvmn9vlWc192qPNEksADi38Z2fLipw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757471988; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0ktra5W9Ln75xvJRQfliltuS8C1E/vosyRtFuDwRWZI=; b=JCYJ9vyBaS34jBgezCJBHMLmwh5npiZWs31Qs3u7FyCWzXFTC7lV5mMy7n7WIKd/24Xq+0D0VvVsGNRXxLTPnFgi9T5wNW1JtIT4VR6BL6HNSgcmReQnpC5XN1OUvF7drmm5Z1UEp+Ojps6e0D3Ybqc2ojA6fJQ68+UXNKCpcGk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757471988085307.53090916721555; Tue, 9 Sep 2025 19:39:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uwAid-00070C-4I; Tue, 09 Sep 2025 22:37:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uwAiZ-0006zs-Ol for qemu-devel@nongnu.org; Tue, 09 Sep 2025 22:37:55 -0400 Received: from mgamail.intel.com ([192.198.163.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uwAiP-0005gB-JW for qemu-devel@nongnu.org; Tue, 09 Sep 2025 22:37:55 -0400 Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2025 19:37:37 -0700 Received: from unknown (HELO gnr-sp-2s-612.sh.intel.com) ([10.112.230.229]) by fmviesa002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2025 19:37:34 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1757471865; x=1789007865; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mQiyyT422oTCwhFWFR51BUCTzu/XqXJsSl9tJ8GNNIU=; b=MLuI/CkepmyJsVwvu9SgzFcuiiKeXdBWhDdWMfEviCk9329ZUsp7TzbB BYw2t82WacZ3yLYmmrQkB2y75yW8Y5m2I4jFBXLn+k00V7MjHFJb2DKMa qXkBhLcufbIT2OWoN62/d4qxY1FSdGQiE6ZrTm66lM2eidhzimsqdLJJt qBmLjph0FrDbWJfvNm2byWoRt70RTcJD1QEDH36FJOPOGLZuPwiqEKuHl AVq2b9ybf8sxL8zZdJoRUrAKJhsIUC2vz2GemtBnFr8l42lUczygx+nGz E54Xj0NDSnreQEXQiFqFWKC0Go0gVggyKsExcotqgiN78H03Gqzc9rc4I Q==; X-CSE-ConnectionGUID: Gx91fnUqSvyeiXvKNk/y5w== X-CSE-MsgGUID: YG7Qi/RUSpKmK2Yfobdq7w== X-IronPort-AV: E=McAfee;i="6800,10657,11548"; a="62402795" X-IronPort-AV: E=Sophos;i="6.18,253,1751266800"; d="scan'208";a="62402795" X-CSE-ConnectionGUID: 36X9HAdyTACBq/aJyKqQ2A== X-CSE-MsgGUID: XsxdeO6gQb+hBUZjF96CBQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.18,253,1751266800"; d="scan'208";a="196930562" From: Zhenzhong Duan To: qemu-devel@nongnu.org Cc: alex.williamson@redhat.com, clg@redhat.com, mst@redhat.com, jasowang@redhat.com, yi.l.liu@intel.com, clement.mathieu--drif@eviden.com, eric.auger@redhat.com, joao.m.martins@oracle.com, avihaih@nvidia.com, xudong.hao@intel.com, giovanni.cabiddu@intel.com, mark.gross@intel.com, arjan.van.de.ven@intel.com, Zhenzhong Duan Subject: [PATCH 2/5] vfio/iommufd: Query dirty bitmap before DMA unmap Date: Tue, 9 Sep 2025 22:36:58 -0400 Message-ID: <20250910023701.244356-3-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250910023701.244356-1-zhenzhong.duan@intel.com> References: <20250910023701.244356-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.198.163.13; envelope-from=zhenzhong.duan@intel.com; helo=mgamail.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1757471991180116600 Content-Type: text/plain; charset="utf-8" When a existing mapping is unmapped, there could already be dirty bits which need to be recorded before unmap. If query dirty bitmap fails, we still need to do unmapping or else there is stale mapping and it's risky to guest. Co-developed-by: Joao Martins Signed-off-by: Joao Martins Signed-off-by: Zhenzhong Duan Tested-by: Xudong Hao Tested-by: Giovannio Cabiddu --- hw/vfio/iommufd.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index b5d6e54c45..0057488ce9 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -73,7 +73,13 @@ static int iommufd_cdev_unmap_one(const VFIOContainerBas= e *bcontainer, if (iotlb && vfio_container_dirty_tracking_is_started(bcontainer)) { if (!vfio_container_devices_dirty_tracking_is_supported(bcontainer= ) && bcontainer->dirty_pages_supported) { - /* TODO: query dirty bitmap before DMA unmap */ + ret =3D vfio_container_query_dirty_bitmap(bcontainer, iova, si= ze, + iotlb->translated_addr, + &local_err); + if (ret) { + error_report_err(local_err); + } + /* Unmap stale mapping even if query dirty bitmap fails */ return iommufd_backend_unmap_dma(be, ioas_id, iova, size); } =20 --=20 2.47.1