From nobody Tue Apr 15 04:21:25 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1735053576; cv=none; d=zohomail.com; s=zohoarc; b=msW225qY3YNt/thsU0Yhw496eqj+0EvhlRUeYITWg0gsMxGPKUtSmziq/st5xHQN8pJ8dWvvtsuQdKdaLn6/T4MuCbFS7Ewma7nf5aVMoLGsOit/F6mpVrzdxyUrzi6I7xVazY/7k3NpIOQs/l4uB1tRdZ/Cjpb+1m7b7ZIOPtY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1735053576; h=Content-Type: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=IEgAdogEzbKyknL1BFXfkTdpSmiNeDGhUW7lvmH4k1k=; b=OL6q205tekBlm0ob308Ie0HhgXCjQk2YBCXmxHqbmo17DutnXO72+XTdhVTO49yyf2Eb1Wr9QYkSJak74mw7e6AAlcrSZwZYlfRkmpu9K5SuvYzt/jcTt/HiBPJkTlr8kaVf3dHO/mPdTIk0ZU/yQx+JSCVal2pKzxrSla2WtIA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=<clg@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1735053576125160.82635694191663; Tue, 24 Dec 2024 07:19:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tQ6e5-0007XH-8h; Tue, 24 Dec 2024 10:16:29 -0500 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 <clg@redhat.com>) id 1tQ6dz-0007IN-7Y for qemu-devel@nongnu.org; Tue, 24 Dec 2024 10:16:26 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <clg@redhat.com>) id 1tQ6dx-00045J-I2 for qemu-devel@nongnu.org; Tue, 24 Dec 2024 10:16:22 -0500 Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-518-NMO3wECEMEWt8HUqODVc0g-1; Tue, 24 Dec 2024 10:16:16 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1502019560AB; Tue, 24 Dec 2024 15:16:15 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.192.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 7F3E73000197; Tue, 24 Dec 2024 15:16:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1735053381; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IEgAdogEzbKyknL1BFXfkTdpSmiNeDGhUW7lvmH4k1k=; b=XK9vAkpWlNLk/hYSbSFWfyvmHE8sbNJceBJLMBspvhuNENBKcG6NL4llD48BNC5dUrdw7j BGnAk/C+vvCRtSoUX08JZlXC6J/DeMJOAGXN6JvUImOI73tqW6i40dnsG0P4cqol7DB3a+ UYOF3XXFE+839JjGloHTajba0qm/Mz0= X-MC-Unique: NMO3wECEMEWt8HUqODVc0g-1 X-Mimecast-MFC-AGG-ID: NMO3wECEMEWt8HUqODVc0g From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com> To: qemu-devel@nongnu.org Cc: Alex Williamson <alex.williamson@redhat.com>, Avihai Horon <avihaih@nvidia.com>, Joao Martins <joao.m.martins@oracle.com>, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com> Subject: [PULL 11/17] vfio/container: Add dirty tracking started flag Date: Tue, 24 Dec 2024 16:15:41 +0100 Message-ID: <20241224151547.386529-12-clg@redhat.com> In-Reply-To: <20241224151547.386529-1-clg@redhat.com> References: <20241224151547.386529-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 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=170.10.133.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.133, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, 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: <qemu-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1735053578377116600 From: Avihai Horon <avihaih@nvidia.com> Add a flag to VFIOContainerBase that indicates whether dirty tracking has been started for the container or not. This will be used in the following patches to allow dirty page syncs only if dirty tracking has been started. Signed-off-by: Avihai Horon <avihaih@nvidia.com> Reviewed-by: Joao Martins <joao.m.martins@oracle.com> Tested-by: Joao Martins <joao.m.martins@oracle.com> Link: https://lore.kernel.org/r/20241218134022.21264-2-avihaih@nvidia.com Signed-off-by: C=C3=A9dric Le Goater <clg@redhat.com> --- include/hw/vfio/vfio-container-base.h | 1 + hw/vfio/container-base.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/hw/vfio/vfio-container-base.h b/include/hw/vfio/vfio-c= ontainer-base.h index 62a8b60d87db263225147a21eff2ef6e21cb22df..4cff9943ab4861a25d07b5ebd12= 00509ebfab12d 100644 --- a/include/hw/vfio/vfio-container-base.h +++ b/include/hw/vfio/vfio-container-base.h @@ -44,6 +44,7 @@ typedef struct VFIOContainerBase { unsigned long pgsizes; unsigned int dma_max_mappings; bool dirty_pages_supported; + bool dirty_pages_started; /* Protected by BQL */ QLIST_HEAD(, VFIOGuestIOMMU) giommu_list; QLIST_HEAD(, VFIORamDiscardListener) vrdl_list; QLIST_ENTRY(VFIOContainerBase) next; diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 6f86c37d971ec38426dacd471bca837c0d0df806..749a3fd29dd6fc9143f14edf7e4= ac6238315fcce 100644 --- a/hw/vfio/container-base.c +++ b/hw/vfio/container-base.c @@ -64,13 +64,23 @@ int vfio_container_set_dirty_page_tracking(VFIOContaine= rBase *bcontainer, bool start, Error **errp) { VFIOIOMMUClass *vioc =3D VFIO_IOMMU_GET_CLASS(bcontainer); + int ret; =20 if (!bcontainer->dirty_pages_supported) { return 0; } =20 g_assert(vioc->set_dirty_page_tracking); - return vioc->set_dirty_page_tracking(bcontainer, start, errp); + if (bcontainer->dirty_pages_started =3D=3D start) { + return 0; + } + + ret =3D vioc->set_dirty_page_tracking(bcontainer, start, errp); + if (!ret) { + bcontainer->dirty_pages_started =3D start; + } + + return ret; } =20 int vfio_container_query_dirty_bitmap(const VFIOContainerBase *bcontainer, --=20 2.47.1