From nobody Sat Nov 15 00:05:18 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759223819; cv=none; d=zohomail.com; s=zohoarc; b=OtST9qULSTotMXgvV07IEXJWjRvHc2wzYgrBq3FZHxyUQqyC2DwnLEv90W1clYHXbKDTbs+UYBn5yBLx0xTyDgqFhxaZ23g1EzE6EYfjyLhML230jlHjpfjFJbSt3uGHnbDyfu+d5GrNZnvuejdFa8TIl46JsOQGkm2bxSUe/zg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759223819; 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=9WFpW9ypRp+isif0eE27JaFFn5D2+mWBML36ZQI1h6A=; b=Tqi5VZ6dmrarPTGxjOlBrfPeXTqzbF3BgB3qV30cUMuqe4bf5o+uFkOa5YHhHUcK6HweD5afSezktVPCbcqBYOlUkmc9/S3V5sg1D+6lcNs+bUYm4xcsJZAq1e7n/4R/iEOVNuI5N3M+Z34VTJ3WUeoi2sg6h7bjB12SRF7x4HE= 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= (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 1759223819137374.32019734074174; Tue, 30 Sep 2025 02:16:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3WSN-0004xO-VU; Tue, 30 Sep 2025 05:15:37 -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 1v3WSF-0004sx-5N for qemu-devel@nongnu.org; Tue, 30 Sep 2025 05:15:27 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v3WS3-00017Y-9S for qemu-devel@nongnu.org; Tue, 30 Sep 2025 05:15:24 -0400 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-3f0134ccc0cso3886239f8f.1 for ; Tue, 30 Sep 2025 02:15:11 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-41f00aebdb7sm9073250f8f.57.2025.09.30.02.15.06 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 30 Sep 2025 02:15:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759223708; x=1759828508; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9WFpW9ypRp+isif0eE27JaFFn5D2+mWBML36ZQI1h6A=; b=CTi2yeuwHnV2vz9QF9g7xGar/lU5B+Pl7IMfLF53IozlBOZKIYDWkc2Hiu1rhBfDiZ Vpgdfukyza+ZG2Fv8utc4jbQk1jXBZ0oIyamjzFqlST9vvwYpZCwM+wXKfC2IIfUxr+G 3T7Zlt5+X59I97L1sUtI474IxWNClGt98NIThoXJvBDIgbOk54idjo9WufaWeTd8+ng9 grxGg+7AfLH1c8FTCHfl9VCz5zWM9sUqg/TnqQC2AzUzdmaumu6B28gX8RDqpML2G4XG lh6mX24swSK3UMnB1SHrBDnVa6lBAxDlcDdQXBO3LAKI7rJ/LKOfqb1HPMYLwqDnbn5c KU6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759223708; x=1759828508; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9WFpW9ypRp+isif0eE27JaFFn5D2+mWBML36ZQI1h6A=; b=F3yqDLmFgwg+K6nrIZqR926Mej02EPkcC/rdKLN5Hrk7HHSd8dkMdO4Y87iWv5BcW4 do/6d26On0YJ6fSRHYgU3P15VBdF/nAtiyvngZZDWo8PSUC3lF+VXCnf95s/Z2wIxbcP 6HRoejkPb094j2j8IS0wgy8UZpysqCdOJGIPVjxo0x8u5pi4cuH9DAcXtCaVV0CkO/fV XnoDjzK+uDE+IAiOGGR3oJSgSoPcI5i52hbjN3Cwei1Bt41Ku5mh97fPYZkMwefNZxUZ 22WyNyFlnnCKnfO+xgNGAo/hihVIjv2vGrp9/K2Crti/UDe3cv3tkYbGuc6RFO+g1/fj UbWg== X-Gm-Message-State: AOJu0YwKCRoNmS/rwh67OvRRCWm0xsyKVseZJBKYet0Bna+vE3mf7ZBN LoLxeYKHrXK7lGu6/b/UJkg7ctBnbrtcFcGqB7qh7t3o6SJXdmSM9rerKtl2loNm1GisLeiqRjg An4DPm3I7CA== X-Gm-Gg: ASbGncuGNZbPfFPdEfwkvQmb82112nE9mQTaEIxcaRfZH7Pbz42CH996UfHX+Rn1ujw 5jvtFedEQqHbHutaJNkSwvfvFKcGLv0FztW4I1DAdrgef+dnmHOJT5RpE/XwkqlHCLKNZEQY0ti xwpaTyUp4YrpF9GSloGHcV2Bdbj0Oys9Uw/zTgCVOOI+UJEKF1cA1plZ/NDylizTR6HJrmtRUX6 b0J+qnVjOs3X3mp3X9PRrt2SREIaGjwowHUF0f5ENmyoMttiLeZmCnmnIA8P54uTgzMyDHGwkfB kdRyoPn8wjadKXQU9QmYAWNLNsiekXFvRUz1dBg3s3RCPB2I2GycaTcrpkQtzB4MkxvQ9Sv206U +h+8is83g6nFXapJGvqZcCNsMZHU2fjC9TUZLPwaYD442r+EvfWok3Zb03JgWAJ7NwCNxqFl81g wg8ySKaJ+vT5Us6GL1BGDg4IFrYCZrGK8= X-Google-Smtp-Source: AGHT+IH9rK3GzgXLjxZvYt9xiU1DMXIbzMT3q6OC7g2eMAZBYQUcBbaIwuSBzcfSkocqMTULK+xfng== X-Received: by 2002:a05:6000:25c3:b0:3ec:6259:5096 with SMTP id ffacd0b85a97d-40e45b8770fmr15917620f8f.21.1759223707849; Tue, 30 Sep 2025 02:15:07 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Thanos Makatos , Steve Sistare , Zhenzhong Duan , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Eric Auger , Alex Williamson , Yi Liu , John Levon , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 2/3] hw/vfio: Avoid ram_addr_t in vfio_container_query_dirty_bitmap() Date: Tue, 30 Sep 2025 11:14:55 +0200 Message-ID: <20250930091456.34524-3-philmd@linaro.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250930091456.34524-1-philmd@linaro.org> References: <20250930091456.34524-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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=2a00:1450:4864:20::42e; envelope-from=philmd@linaro.org; helo=mail-wr1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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 @linaro.org) X-ZM-MESSAGEID: 1759223820752116600 The 'ram_addr_t' type is described as: a QEMU internal address space that maps guest RAM physical addresses into an intermediate address space that can map to host virtual address spaces. vfio_container_query_dirty_bitmap() doesn't expect such QEMU intermediate address, but a guest physical addresses. Use the appropriate 'hwaddr' type, rename as @translated_addr for clarity. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: C=C3=A9dric Le Goater --- include/hw/vfio/vfio-container.h | 3 ++- hw/vfio/container.c | 11 ++++++----- hw/vfio/listener.c | 12 ++++++------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/hw/vfio/vfio-container.h b/include/hw/vfio/vfio-contai= ner.h index b8fb2b8b5d7..093c360f0ee 100644 --- a/include/hw/vfio/vfio-container.h +++ b/include/hw/vfio/vfio-container.h @@ -98,7 +98,8 @@ bool vfio_container_dirty_tracking_is_started( bool vfio_container_devices_dirty_tracking_is_supported( const VFIOContainer *bcontainer); int vfio_container_query_dirty_bitmap(const VFIOContainer *bcontainer, - uint64_t iova, uint64_t size, ram_addr_t ram_addr, Error **errp); + uint64_t iova, uint64_t size, + hwaddr translated_addr, Error **errp= ); =20 GList *vfio_container_get_iova_ranges(const VFIOContainer *bcontainer); =20 diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 250b20f4245..9d694393714 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -246,7 +246,7 @@ static int vfio_container_devices_query_dirty_bitmap( =20 int vfio_container_query_dirty_bitmap(const VFIOContainer *bcontainer, uint64_t iova, uint64_t size, - ram_addr_t ram_addr, Error **errp) + hwaddr translated_addr, Error **errp) { bool all_device_dirty_tracking =3D vfio_container_devices_dirty_tracking_is_supported(bcontainer); @@ -255,7 +255,7 @@ int vfio_container_query_dirty_bitmap(const VFIOContain= er *bcontainer, int ret; =20 if (!bcontainer->dirty_pages_supported && !all_device_dirty_tracking) { - cpu_physical_memory_set_dirty_range(ram_addr, size, + cpu_physical_memory_set_dirty_range(translated_addr, size, tcg_enabled() ? DIRTY_CLIENTS_= ALL : DIRTY_CLIENTS_NOCODE); return 0; @@ -280,11 +280,12 @@ int vfio_container_query_dirty_bitmap(const VFIOConta= iner *bcontainer, goto out; } =20 - dirty_pages =3D cpu_physical_memory_set_dirty_lebitmap(vbmap.bitmap, r= am_addr, + dirty_pages =3D cpu_physical_memory_set_dirty_lebitmap(vbmap.bitmap, + translated_addr, vbmap.pages); =20 - trace_vfio_container_query_dirty_bitmap(iova, size, vbmap.size, ram_ad= dr, - dirty_pages); + trace_vfio_container_query_dirty_bitmap(iova, size, vbmap.size, + translated_addr, dirty_pages); out: g_free(vbmap.bitmap); =20 diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index 3b6f17f0c3a..4e2565905e0 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -1059,7 +1059,7 @@ static void vfio_iommu_map_dirty_notify(IOMMUNotifier= *n, IOMMUTLBEntry *iotlb) VFIOGuestIOMMU *giommu =3D gdn->giommu; VFIOContainer *bcontainer =3D giommu->bcontainer; hwaddr iova =3D iotlb->iova + giommu->iommu_offset; - ram_addr_t translated_addr; + hwaddr translated_addr; Error *local_err =3D NULL; int ret =3D -EINVAL; MemoryRegion *mr; @@ -1108,7 +1108,7 @@ static int vfio_ram_discard_query_dirty_bitmap(Memory= RegionSection *section, { const hwaddr size =3D int128_get64(section->size); const hwaddr iova =3D section->offset_within_address_space; - const ram_addr_t ram_addr =3D memory_region_get_ram_addr(section->mr) + + const hwaddr addr =3D memory_region_get_ram_addr(section->mr) + section->offset_within_region; VFIORamDiscardListener *vrdl =3D opaque; Error *local_err =3D NULL; @@ -1118,7 +1118,7 @@ static int vfio_ram_discard_query_dirty_bitmap(Memory= RegionSection *section, * Sync the whole mapped region (spanning multiple individual mappings) * in one go. */ - ret =3D vfio_container_query_dirty_bitmap(vrdl->bcontainer, iova, size= , ram_addr, + ret =3D vfio_container_query_dirty_bitmap(vrdl->bcontainer, iova, size= , addr, &local_err); if (ret) { error_report_err(local_err); @@ -1183,7 +1183,7 @@ static int vfio_sync_iommu_dirty_bitmap(VFIOContainer= *bcontainer, static int vfio_sync_dirty_bitmap(VFIOContainer *bcontainer, MemoryRegionSection *section, Error **er= rp) { - ram_addr_t ram_addr; + hwaddr addr; =20 if (memory_region_is_iommu(section->mr)) { return vfio_sync_iommu_dirty_bitmap(bcontainer, section); @@ -1198,12 +1198,12 @@ static int vfio_sync_dirty_bitmap(VFIOContainer *bc= ontainer, return ret; } =20 - ram_addr =3D memory_region_get_ram_addr(section->mr) + + addr =3D memory_region_get_ram_addr(section->mr) + section->offset_within_region; =20 return vfio_container_query_dirty_bitmap(bcontainer, REAL_HOST_PAGE_ALIGN(section->offset_within_address_spa= ce), - int128_get64(section->size), ram_addr, er= rp); + int128_get64(section->size), addr, errp); } =20 static void vfio_listener_log_sync(MemoryListener *listener, --=20 2.51.0