From nobody Sat Apr 11 23:04:09 2026 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1772589181; cv=none; d=zohomail.com; s=zohoarc; b=abhK6CKGNNYfgzoVLS6ATNscoGS3xVTn7BuYwFFgk7MV8W4gMsvnH6EAHJ9hb9MgYuds3SgZMnAKUeXhM2yuTpSk4uuoAAqZXdvG5y2QnUVBn7LJbHdwT7xFYiQowoRy4itzH58sP9sB9gyguCLioq68RLfFvdufNPGRXcv3OI4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772589181; 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=yxu4XRB4FitI2+AcQo8tLZ5+1Awl0R6238sOzIkA3R0=; b=ggQ05s2jb1H5kpTWlMu0i5gOpaqW6g09uH2pJiXeouFVXf2EhpX35QSz6NPhNDDuZAG2cx9fnxH5iwr0wDS7KvRrfV6G7zrvXMhv0498n0MOtWD7WEAbVh3P8QHB2kwmFN7PcM4qdYA/kHpPpxqm2hxu36/j9nYmmDaskNuBNtY= 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 1772589181149501.4540969093746; Tue, 3 Mar 2026 17:53:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxbPe-00062a-TM; Tue, 03 Mar 2026 20:52:34 -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 ) id 1vxbPb-00061e-Qc for qemu-devel@nongnu.org; Tue, 03 Mar 2026 20:52:31 -0500 Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vxbPa-0004TY-B7 for qemu-devel@nongnu.org; Tue, 03 Mar 2026 20:52:31 -0500 Received: by mail-ua1-x929.google.com with SMTP id a1e0cc1a2514c-94dd2d71231so1845191241.0 for ; Tue, 03 Mar 2026 17:52:30 -0800 (PST) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-5ff1ea1596asm18777740137.9.2026.03.03.17.52.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2026 17:52:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772589149; x=1773193949; 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=yxu4XRB4FitI2+AcQo8tLZ5+1Awl0R6238sOzIkA3R0=; b=B7uPM1ZPeWXqFA/Q4lxo2HCiiF1uTfFQwBgwNzx3INPO34CiCyHebhiSjC9vLxbhlr F8H8fYdMquRcjYpmfaz4WgeXxI+D9kIWrC3tGK9K5lEORQkqyBKUuHgCeXnT9K6p75cW 3XxE3F+fy2xoD/IdYDC9+Rq5KgQh5+Jlq/fk8Bk5Nk1F6sXxz54GEDE/9zh3IYSQnS4i IGKJvThUPxQveB1wzDTygAdWj47UBnZi2U8RcdeSbGUEqiKfIiQgNaDBvD8iYsraR6AC jiPV5cpRw8NUfkjcfyV2PXnW+FyUojeXqu3pXbXUIoS6Uqu/DKy6HGVUiPgbBgc8xPZF WCwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772589149; x=1773193949; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yxu4XRB4FitI2+AcQo8tLZ5+1Awl0R6238sOzIkA3R0=; b=tdViAwvLsEwqpspRIGsaFxPqAKtikW6TxIAVV4gj/vV2mdvNXgXtUQmNEUonuNRU2O tzPnSEO50LHxMFhPb4NRFC4u14qGTGPBXso04AENDJLOU9iqpVbBiNv4SeJyuV437wdp PDp6DZT5AVru804vto9TRFuguE6pU1y+fneNp1Sg+mU81CJn7gN+uKrXv+FCI+IEZHpV rpk/+dj83bAREEPPUyVIheNdweuqSmzvbODJACIzOx5x3nej1/+oweKLgSnCBrOnYbT8 qLOYgOe14ySAd+U3hofjJQkaZb6UCQk2agyCm7nN2dAH8Fn6OBU2NFVeRF+dA7Z2/G7C +moA== X-Gm-Message-State: AOJu0Yz0VCCJOKG6mdSvPa6QguuzA4xQqh5v7f3iWWwQeY0PR/Pqszyk Z+cvNobsh4cVjFCqRsO9Zs8SNCxFVkkWeBuGAEDVpVnDAGKGZo89R54g7535M337 X-Gm-Gg: ATEYQzyhW3e/siTfOguwOmqjxoMuSahfOJqCGRfNox4Bfzq+GhHIKXDe8Ncj916DkSg jlHko4WVawf7AmjnnBKIoB3S9XwNd6HG+AnqRl/Nbp/7++Fu++obt+dyr7rd0ayp3+Q/I2iWyun DuPrmyGOOF7aK5fr91T5Zl3rcg89T7Efyu0k7bcg77gh25ROLdi74psciIRqAqpRU5oGwFGRnU7 dLN0aiV1LHqFZ/NDWsn+g4lA+ylA2b+9dNCm+ljD8pqTuUcEpxwkXhargkKm1yQVVQwF2BIRzLo P+4Zoj7UmrZX7aHj4qkCoc8gjlK5o753eJCl1+WddpTPYgWLWiCSkV9uz32x8RID0f1K+r8sij6 LPCXM72GKToFuYqI2e2Z/eJZZuf3svori/dCnqlFHG0jOYja8cxZG5tmNV/m5yBnoqneUlX/qhC 91pxgPH8HHGR/TCtZP/hBOoZyz6zOzwTHVL6gg3w5O/RFj3OyE/UgKdJ2XvA== X-Received: by 2002:a05:6102:c09:b0:5dd:f9c2:551c with SMTP id ada2fe7eead31-5ffaaf1bf2fmr242963137.27.1772589148744; Tue, 03 Mar 2026 17:52:28 -0800 (PST) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , Paul Durrant , "Edgar E. Iglesias" Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PATCH v1 1/5] xen: mapcache: Assert mapcache existance Date: Wed, 4 Mar 2026 02:52:17 +0100 Message-ID: <20260304015222.979224-2-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260304015222.979224-1-edgar.iglesias@gmail.com> References: <20260304015222.979224-1-edgar.iglesias@gmail.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=2607:f8b0:4864:20::929; envelope-from=edgar.iglesias@gmail.com; helo=mail-ua1-x929.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, FREEMAIL_FROM=0.001, 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: qemu development 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 @gmail.com) X-ZM-MESSAGEID: 1772589184756139100 Content-Type: text/plain; charset="utf-8" From: "Edgar E. Iglesias" Assert that the mapcache was created prior to being used. Signed-off-by: Edgar E. Iglesias Reviewed-by: Stefano Stabellini --- hw/xen/xen-mapcache.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c index 11115f6084..517e5171b7 100644 --- a/hw/xen/xen-mapcache.c +++ b/hw/xen/xen-mapcache.c @@ -464,6 +464,8 @@ uint8_t *xen_map_cache(MemoryRegion *mr, MapCache *mc =3D mapcache; uint8_t *p; =20 + assert(mapcache); + if (grant) { mc =3D is_write ? mapcache_grants_rw : mapcache_grants_ro; } @@ -530,6 +532,8 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr) { ram_addr_t addr; =20 + assert(mapcache); + addr =3D xen_ram_addr_from_mapcache_single(mapcache, ptr); if (addr =3D=3D RAM_ADDR_INVALID) { addr =3D xen_ram_addr_from_mapcache_single(mapcache_grants_ro, ptr= ); @@ -652,6 +656,8 @@ static void xen_invalidate_map_cache_entry_bh(void *opa= que) =20 void coroutine_mixed_fn xen_invalidate_map_cache_entry(uint8_t *buffer) { + assert(mapcache); + if (qemu_in_coroutine()) { XenMapCacheData data =3D { .co =3D qemu_coroutine_self(), @@ -709,6 +715,8 @@ static void xen_invalidate_map_cache_single(MapCache *m= c) =20 void xen_invalidate_map_cache(void) { + assert(mapcache); + /* Flush pending AIO before destroying the mapcache */ bdrv_drain_all(); =20 @@ -776,6 +784,8 @@ uint8_t *xen_replace_cache_entry(hwaddr old_phys_addr, { uint8_t *p; =20 + assert(mapcache); + mapcache_lock(mapcache); p =3D xen_replace_cache_entry_unlocked(mapcache, old_phys_addr, new_phys_addr, size); --=20 2.43.0 From nobody Sat Apr 11 23:04:09 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1772589178; cv=none; d=zohomail.com; s=zohoarc; b=Hk6YgMpPGr8sUg+FlMdpolAjbzGZfxXs0mG30RRCfrHLeUKlbCjgdwF4CFt8FeEbWcktlKqrZQXbNsUyWbfP6jJ61QVf5vFomVwvRX+4kVvb1U32F8mdcK2kbvanSjO8dvPojBx45mElJXsL6Pi3Vl+cxaubbGpvoOjA3jjBIlk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772589178; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=N0UYcKwpR4k449Oah1OUraSH63dKX72hrhhrlbQ1drM=; b=Pemr43T38OSRbox/bvWSZSgzcPVKGo6pyrYqhuqaJ6UwRosLC7fqbmFzIQnMiWJQpFj1SzZEb/MoqRrB9uHrKmoRSXSQEokusEDbtSWNpckkkpdx4bBCWLsVdhJU1kp7sm1gtM8Wu3KXDpp+zxgkTXwiHfdRT5jdl8no2xu6dm0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1772589178450731.0334325900157; Tue, 3 Mar 2026 17:52:58 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1245074.1544449 (Exim 4.92) (envelope-from ) id 1vxbPf-0006ar-Ui; Wed, 04 Mar 2026 01:52:35 +0000 Received: by outflank-mailman (output) from mailman id 1245074.1544449; Wed, 04 Mar 2026 01:52:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vxbPf-0006ai-Qv; Wed, 04 Mar 2026 01:52:35 +0000 Received: by outflank-mailman (input) for mailman id 1245074; Wed, 04 Mar 2026 01:52:34 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vxbPe-0006Zx-QV for xen-devel@lists.xenproject.org; Wed, 04 Mar 2026 01:52:34 +0000 Received: from mail-vk1-xa31.google.com (mail-vk1-xa31.google.com [2607:f8b0:4864:20::a31]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id ce8e1000-176c-11f1-9ccf-f158ae23cfc8; Wed, 04 Mar 2026 02:52:32 +0100 (CET) Received: by mail-vk1-xa31.google.com with SMTP id 71dfb90a1353d-56a94923c0aso2075402e0c.3 for ; Tue, 03 Mar 2026 17:52:32 -0800 (PST) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56adfad07f5sm2726919e0c.10.2026.03.03.17.52.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2026 17:52:29 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ce8e1000-176c-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772589151; x=1773193951; darn=lists.xenproject.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=N0UYcKwpR4k449Oah1OUraSH63dKX72hrhhrlbQ1drM=; b=kiWJ6KCmTQu5frxZQkpJaNaIm7o+k+OMHly41K58/K2HWUtBNFu+MrqgeIHz5iq7uY RucuE9palIbk7iHreLeSTlZYMDDsgqmUCb051qmcRjwinuNGqm3Hh0QhQxLK0Dza6qmN 1fu8fyWymUnu86tm0d8NVJnmiiyDP1i2OBf9sY5PSbH919i6ni0bGGCBEPCUino1vGZf duXaqwjXi2EDaqJan3XCIFQqsX/d99RroEbLNtnlvWtBbV5PECpjjD4rVyeOKbPsHsP6 0Bix8RvTpR6swKf8eRd+1cpUmQGEVoH1mtOfLtPy1kTKOArL54HNfLCrudTfWHLy73vE h+rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772589151; x=1773193951; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=N0UYcKwpR4k449Oah1OUraSH63dKX72hrhhrlbQ1drM=; b=Lhb+WXleCDgVJYxh+pzRXa0GS+Ms4cImq6oLOS5vnMwBxnrj4JqeKxAIskssYRWEZL nnTL/HrBS5lVmJCo7JzkZypYGP9W/UgPIf/6L6zkDhaS+uALc3cebcp29koV2sxBkcPF lWeC82rbPfLBTCq3nt/+BzjuzvSTVm370fNdROoavFMFCjblXNQxRDXb2ONVs0myyjhL EdmnxYcX6m+d145vtUJjAoSSNYDlqs+w4L2ILkw9Q+mFXB1YTA0omMy0zKTwUEGvCsXg BDrqEcVGJKz+FomTzy8xw2mCVPVywUpR1HAzxt17QzMN5q1u6Pyn7ojgQD6VA1WnA+As ZBCQ== X-Forwarded-Encrypted: i=1; AJvYcCVEqpOVu4vEbA4iNDcd3QNnvvaSH3TDAkib6pMQ8Y3HkTZImXyv+RY2BA6HuaM6fT4U/pQoN+DqbgE=@lists.xenproject.org X-Gm-Message-State: AOJu0YyVmGOzZQ1M6FQM8TERPGMWy3SeBfVEbsRRmt5kAcZ4hyaGxfr/ fjvRU1RBn/2vWVOtGXdNW632h3Dgqtp/l1+cbINZ+adf+4kKBQ2HTpn6rbvRcw9U X-Gm-Gg: ATEYQzzYKXsvwy0/CSXqF7bIGgM+yi77xUXuBXFYaElNvfCmaBXXZxZFjy+Xx17sz4o rBYBt7sQXWfrMn2VmxqTxYJHr/iTg0i50AHIwICHsXLFgA8ZLZ8V4gxLFOn1HheDja06chkkLWQ WD/qQzisofSzdkl0TIqASI/jLAh9K96tjyRpRjW2t4+avHJ3lTcb6l+g7QHwdqE2wcCy3RbeAiJ D6yckUVrqp1Vl/EeCn6ThNMRiSOdZR7YLzBJQyq1IrlIDvz/cgTZI8FOi1vHE+b1fBD89JYPgM1 NHyFoZHVyWSPsrz+CXLlJyX3fXuQGp4xkfH76i4BsnkCaVxdjDIZaEAMwz/LhYjdOjP+xOtWn78 LPJh6Z9tUvc8EX0zVRYAApf8hcS9Yqp+enoBXqaFNmjLpxnC9oylrqCErKXPHJQsWmf2K5mHZjG NymRRnU5YG8YYfXNKWaIN6aAVH/t/Um5LITa2Rt6nYMxInlqnUUOtrrflXuQ== X-Received: by 2002:a05:6122:4b83:b0:566:453e:37ae with SMTP id 71dfb90a1353d-56ae778ca3emr237936e0c.13.1772589150849; Tue, 03 Mar 2026 17:52:30 -0800 (PST) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , Paul Durrant , "Edgar E. Iglesias" Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PATCH v1 2/5] xen: mapcache: Add function to check if the mapcache is enabled Date: Wed, 4 Mar 2026 02:52:18 +0100 Message-ID: <20260304015222.979224-3-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260304015222.979224-1-edgar.iglesias@gmail.com> References: <20260304015222.979224-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1772589179930139100 Content-Type: text/plain; charset="utf-8" From: "Edgar E. Iglesias" Add function to check if the mapcache is enabled. No functional change. Signed-off-by: Edgar E. Iglesias Reviewed-by: Stefano Stabellini --- hw/xen/xen-mapcache.c | 6 ++++++ hw/xen/xen_stubs.c | 5 +++++ include/system/xen-mapcache.h | 1 + 3 files changed, 12 insertions(+) diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c index 517e5171b7..a3c162cd4c 100644 --- a/hw/xen/xen-mapcache.c +++ b/hw/xen/xen-mapcache.c @@ -80,6 +80,12 @@ static MapCache *mapcache_grants_ro; static MapCache *mapcache_grants_rw; static xengnttab_handle *xen_region_gnttabdev; =20 +bool xen_map_cache_enabled(void) +{ + /* Map cache enabled implies xen_enabled(). */ + return xen_enabled() && mapcache; +} + static inline void mapcache_lock(MapCache *mc) { qemu_mutex_lock(&mc->lock); diff --git a/hw/xen/xen_stubs.c b/hw/xen/xen_stubs.c index 5e565df392..a39efb5062 100644 --- a/hw/xen/xen_stubs.c +++ b/hw/xen/xen_stubs.c @@ -29,6 +29,11 @@ bool xen_mr_is_memory(MemoryRegion *mr) g_assert_not_reached(); } =20 +bool xen_map_cache_enabled(void) +{ + return false; +} + void xen_invalidate_map_cache_entry(uint8_t *buffer) { g_assert_not_reached(); diff --git a/include/system/xen-mapcache.h b/include/system/xen-mapcache.h index fa2cff38d1..c46190dd0c 100644 --- a/include/system/xen-mapcache.h +++ b/include/system/xen-mapcache.h @@ -13,6 +13,7 @@ =20 typedef hwaddr (*phys_offset_to_gaddr_t)(hwaddr phys_offset, ram_addr_t size); +bool xen_map_cache_enabled(void); void xen_map_cache_init(phys_offset_to_gaddr_t f, void *opaque); uint8_t *xen_map_cache(MemoryRegion *mr, hwaddr phys_addr, hwaddr size, --=20 2.43.0 From nobody Sat Apr 11 23:04:09 2026 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1772589191; cv=none; d=zohomail.com; s=zohoarc; b=XEq3m3IArhbkuElKq3HcXx5WQz5sq0ff23LXHnXtXyYy470h9xnfWM4UFhRUlXptiZY6higPuuo4MRWj76kslUx6T10kkljkc6OCAEnYk7SrxkMjNiBTX7EpYllMa/l7LDT1QDUmaVUIMZQP/urUUY41FAWiH8uqzFNtFEz7Nqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772589191; 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=fdxVAJZzyfNVW1udrhdUFVJfrw+pt2l9y2/jEQPXbUc=; b=RYY0ayzErtRqOnunK7h1U0q5H6oBnlkEp0AiWKyP1qGCIiUff+dt5C+LRYzmEEQNtW9IQzwIlikMEyW1yv8A30aoZz9WH2EQtRgrY0MAIXpUsPn4t4yEPUYzWZGvYvx5QJYof7Oh95Mv2n53vD0xqjKAWg1QWfjCg7uZ9Seq4SE= 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 1772589191530904.2656090871998; Tue, 3 Mar 2026 17:53:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxbPi-000637-C5; Tue, 03 Mar 2026 20:52:38 -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 ) id 1vxbPh-00062y-4i for qemu-devel@nongnu.org; Tue, 03 Mar 2026 20:52:37 -0500 Received: from mail-vs1-xe2a.google.com ([2607:f8b0:4864:20::e2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vxbPf-0004UM-MV for qemu-devel@nongnu.org; Tue, 03 Mar 2026 20:52:36 -0500 Received: by mail-vs1-xe2a.google.com with SMTP id ada2fe7eead31-5ffa0b23a1aso250650137.3 for ; Tue, 03 Mar 2026 17:52:35 -0800 (PST) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-94df641e133sm16763221241.5.2026.03.03.17.52.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2026 17:52:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772589154; x=1773193954; 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=fdxVAJZzyfNVW1udrhdUFVJfrw+pt2l9y2/jEQPXbUc=; b=RbZQvrbyB5hHHP7v7rZRbPB16EcAfe6KYvixmS5vIsFpD8J5FCyrV2cVlzES5hJvzH EGgKZ7pOFSLtNU3SeI48L/02DeOpXTTk14pGku6j4dLWB+ZdXaAMpkYSUoC8r+9Adk8d 1fTzpseJ8KXrCZUAO4dPZl2rvdgVbX+5m3Xx/yIlI2FXxQKzRP3SjZGlue26tRI7KTCX yNJEw/+RbW5LL2HtfkIt1sjMwNNrOA4g34ewOvWaAXSeAge7OTwOyjh2TukRN65ADwE8 lthWrhcs5s84DXKtwVIiBFlwP/kp9RO0MuhEkHGc/Iklrffy/kEtL+zkW26TwKhsHMW2 9xkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772589154; x=1773193954; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fdxVAJZzyfNVW1udrhdUFVJfrw+pt2l9y2/jEQPXbUc=; b=tETsVvR8VF7eBbcUblZw6ZVMMd1ZAEhwXiA1NOPlt0kbLB1eiqTVdRKk90XfspNfQo IO7ZtoNJIg3cDe6d02QgV0vvgcUevQXptMgq1syfP6hTIBImpXlQqOVLyJBYBoQKzNo7 Vx/RBTEumnSv+gS7dzk68HgxZcPsEaixcXzFuUKKbaYw+WSHGimwkDQEx6Qw1OwCg2ge b/ICaswi6JHRHCGXAGqO7LXpbmu8fWp6QPpoDKlcATX+q5H7Dgtl9KbldcTKQ3QP7cpw T0LQ4X0epVsgD92XlLrtz4w1ncTOJcI9xAGydnS1WMNfg824JXyuS2McbEWxViPagcrY HJ7Q== X-Gm-Message-State: AOJu0YweLcr8w9G6qn9/WgM2SJChpRf5hEqCndVgvGKhXX4LMAiEcWvh RV7UCUR0J6HpxyJ9RM1NdQVSghzBfRaD3S4VdPT/3LZmif2+0g1xn69xfLPGeX2O X-Gm-Gg: ATEYQzwoyEWiwWq95s0U140Z9voLBnlAek2lNUTTWe6e7B2Jbwapyw3UB5YBfHHLL1+ 1S9V77FXA1OYQdWnmzyXWEs5K7GuRJZhO76Injrxugpn+LWVBiu8ZpDxgt1VuXbj+Y1ZBhIi7Zh QHksFXzLxnSboRcjM+FUXELInS7ZvncnfiRRW+nc6Qa7W7le6CM52GxP2tsz1aufEaPuSRrUyLH CrKJRfYk7LEzPX9bFpGboVnfmSR9HNwpSaVa7p3IWmyIcoperIrPjApjiIcM2vgBWTWkpPrKH26 x9m9HOV+fMvuGaIgDBgA20WtFCvVNIEBieiPNvKCA8gFQ5B86soWWJC0g1Cgjpdo05VhLUbdgjb FYBD84KkeXiyShcZjqOXI16NoCX0mH8mybj81vgPdI5NrZ4pcOHdZEEb1Dsx4nt/G45koDIcKSx R1M11WEtw1yoJT/AuIW0Umlivvlx66g81u+IUUVd9zo8BvqV2yBUG/E77EsQ== X-Received: by 2002:a05:6102:2922:b0:5fc:2b19:f7de with SMTP id ada2fe7eead31-5ffaae9984fmr215631137.25.1772589153980; Tue, 03 Mar 2026 17:52:33 -0800 (PST) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Paolo Bonzini , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Cc: sstabellini@kernel.org, anthony@xenproject.org, edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PATCH v1 3/5] physmem: xen: Conditionalize use of the mapcache Date: Wed, 4 Mar 2026 02:52:19 +0100 Message-ID: <20260304015222.979224-4-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260304015222.979224-1-edgar.iglesias@gmail.com> References: <20260304015222.979224-1-edgar.iglesias@gmail.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=2607:f8b0:4864:20::e2a; envelope-from=edgar.iglesias@gmail.com; helo=mail-vs1-xe2a.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, FREEMAIL_FROM=0.001, 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: qemu development 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 @gmail.com) X-ZM-MESSAGEID: 1772589193940139100 Content-Type: text/plain; charset="utf-8" From: "Edgar E. Iglesias" Conditionalize use of the mapcache. This is in preparation to optionally disable the mapcache at runtime. Signed-off-by: Edgar E. Iglesias Acked-by: Peter Xu Reviewed-by: Stefano Stabellini --- system/physmem.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/system/physmem.c b/system/physmem.c index e5ff26acec..64e6d50f8f 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -578,7 +578,8 @@ MemoryRegion *flatview_translate(FlatView *fv, hwaddr a= ddr, hwaddr *xlat, is_write, true, &as, attrs); mr =3D section.mr; =20 - if (xen_enabled() && memory_access_is_direct(mr, is_write, attrs)) { + if (xen_map_cache_enabled() && + memory_access_is_direct(mr, is_write, attrs)) { hwaddr page =3D ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - a= ddr; *plen =3D MIN(page, *plen); } @@ -2577,7 +2578,7 @@ static void reclaim_ramblock(RAMBlock *block) { if (block->flags & RAM_PREALLOC) { ; - } else if (xen_enabled()) { + } else if (xen_map_cache_enabled()) { xen_invalidate_map_cache_entry(block->host); #if !defined(_WIN32) && !defined(EMSCRIPTEN) } else if (block->fd >=3D 0) { @@ -2736,7 +2737,7 @@ static void *qemu_ram_ptr_length(RAMBlock *block, ram= _addr_t addr, len =3D *size; } =20 - if (xen_enabled() && block->host =3D=3D NULL) { + if (xen_map_cache_enabled() && block->host =3D=3D NULL) { /* We need to check if the requested address is in the RAM * because we don't want to map the entire memory in QEMU. * In that case just map the requested area. @@ -2785,7 +2786,7 @@ RAMBlock *qemu_ram_block_from_host(void *ptr, bool ro= und_offset, RAMBlock *block; uint8_t *host =3D ptr; =20 - if (xen_enabled()) { + if (xen_map_cache_enabled()) { ram_addr_t ram_addr; RCU_READ_LOCK_GUARD(); ram_addr =3D xen_ram_addr_from_mapcache(ptr); @@ -3787,7 +3788,7 @@ void address_space_unmap(AddressSpace *as, void *buff= er, hwaddr len, if (is_write) { invalidate_and_set_dirty(mr, addr1, access_len); } - if (xen_enabled()) { + if (xen_map_cache_enabled()) { xen_invalidate_map_cache_entry(buffer); } memory_region_unref(mr); @@ -3898,7 +3899,7 @@ void address_space_cache_destroy(MemoryRegionCache *c= ache) return; } =20 - if (xen_enabled()) { + if (xen_map_cache_enabled()) { xen_invalidate_map_cache_entry(cache->ptr); } memory_region_unref(cache->mrs.mr); --=20 2.43.0 From nobody Sat Apr 11 23:04:09 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1772589180; cv=none; d=zohomail.com; s=zohoarc; b=cMDXXKxHdYNSGpCeFPQfOZ7aDW9fCpW2nn9acJ4OOPLcdCx71Sg2JjVdLnGOC5alGnEvTn/Lnx6EfV5rkTYG8s74foYF+LRPxtzDdJzRwmr1PHs+dnAN4OFzy6RycZ4pYTh6hGEBV8w+73o3Bfb+hivX55WeCS9EtQY15bWJqAg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772589180; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rZOO08zLikZY030P2ehrGV6veLejKIl076oxwM9/gTs=; b=h6m4lynOX20UMRoMxtLHcM94k4DCiRUWXeKeMcBkGpK4+cfdEF6OvgpHtn3rkQIOnBjaw8HA0Sfr6m6dnZfZerlDYwc0ubnlxLCsMfa2p8wQCe/EDnkXy4tnf7cW1d20t7348ajrnccuX1OWioAgd1mJYX9K96Z5UW+X+/1fpWM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177258918040946.71620397428046; Tue, 3 Mar 2026 17:53:00 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1245076.1544470 (Exim 4.92) (envelope-from ) id 1vxbPk-00076R-JS; Wed, 04 Mar 2026 01:52:40 +0000 Received: by outflank-mailman (output) from mailman id 1245076.1544470; Wed, 04 Mar 2026 01:52:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vxbPk-00076K-DH; Wed, 04 Mar 2026 01:52:40 +0000 Received: by outflank-mailman (input) for mailman id 1245076; Wed, 04 Mar 2026 01:52:38 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vxbPi-00069T-Ld for xen-devel@lists.xenproject.org; Wed, 04 Mar 2026 01:52:38 +0000 Received: from mail-vs1-xe32.google.com (mail-vs1-xe32.google.com [2607:f8b0:4864:20::e32]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id d219c63d-176c-11f1-b164-2bf370ae4941; Wed, 04 Mar 2026 02:52:38 +0100 (CET) Received: by mail-vs1-xe32.google.com with SMTP id ada2fe7eead31-5ff1703cb9eso1668728137.3 for ; Tue, 03 Mar 2026 17:52:37 -0800 (PST) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-94df6577693sm16742382241.9.2026.03.03.17.52.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2026 17:52:35 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d219c63d-176c-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772589157; x=1773193957; darn=lists.xenproject.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=rZOO08zLikZY030P2ehrGV6veLejKIl076oxwM9/gTs=; b=eXk/08fdK1Tui/DCmFmi2fHGK0ecEBAJkf9fZhkl1StlYMNMxgHBwFl5Zh3hE+5J9K n3Axy7FwydzUkCjGruiBggDhzTwBFnX+XydUkvdMPEbTaooYHFRrCcQeS9qoE5s1wq9n VcZLo5bWtuNjuv3sm/3UurFdkkVx0eGuVJj6V4nWA5hm40Li+amUkVb/xMf/HweDevf0 T1adE0UmZsPsvl2RZMQQiKLNQ7sfMJUw/EvCbTGsbLa6TQvrHtDoRL4DS4IkTmhUPMmd QhEuw/N92QpYUxRKnrTBtuzcNE1eV7tsUoLffZh+RkkT2lXRhKlyH//IBf5FiPmMnhTH rSxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772589157; x=1773193957; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=rZOO08zLikZY030P2ehrGV6veLejKIl076oxwM9/gTs=; b=pzVvZ6lUx14VYhmPDknIA+rBv5qpbwaF5yg6DyVY2iPaE3v+bX8ASSvfnhsNwQDfwb IDP0isornjJouAwj1g1EXW5eiP3CmF4yDpxdhsfqdta7DrzS1LQG6H7BIu7BrMLEs0to rzvjKW3Oy5QwZlBWH0M9wp/yyVqWLAX7C78/CxNA9PRWI/h81hlc9syYf8Q043Z15xec l7hIo50n7zS31SQVDSasdeVr7oiH+WukaBVKqKcTG/2IuHLYzykwROZmAX91dh9ylPBx 8g1PjV5MemLeUZACjprzz4I3w8GHlGR/O3vJUDx1eoQWFV2APpDr/Uf9gftpSK4su5uU YDsg== X-Forwarded-Encrypted: i=1; AJvYcCWpCdSYjNYFtOfymWwWkoO0PRuYTEz2mXGdL9xXH/mzB6YwxiZSAxNQ0PB35gmVlL588vxvl5kKafs=@lists.xenproject.org X-Gm-Message-State: AOJu0Yz5TK0+LKbDoD07VeqXWgp5w0GxmuIkRgPB9Tk0A9MyRDjaV2Ul quEPzGVZ+lpD43e6o/LFP6ooNwrM65T9RUqzlcnuMEPmFSDYj3W26922 X-Gm-Gg: ATEYQzyKvPXp69wkaW+SZy9If/u3e1kyxj2Nz3PavIIxG6FycVm09ztBsinxHjDTp9p 2eMks7a9J1YrhOHjb2MEa5j2nuD/eCkIgOYPGgLYdbj47VYTihGGivv/7jBOsu5mtrZt4VZMdEr 4ogTgbJxMkC/ZyEuSq5ii3QGOj+Cqo7hntjTdtsCJGQlEHakUB8zV8VC7+l2Bc+BDrPwTEh5HbN fSKl4MjXNGM8LtZ2X1lFxxCLahJhzERHePF8HwaZMHO6JhN8nnoma1yEzuve/H1vJl1bhXGsFft uFT/anz47nxkKFzvZUmH7EicRJ23NI9Gg1aHMXovABZLcygwX0oNA+WNWYxR8XO+Pvu9pR65jKb k7vrvWnW+22CGuaKxpqGpdER2+XcihPFB1ljULBUFOPXJ8ApTnJFJHWuW5FioBJZOiTYhSmC7+2 ip+o1ZVDro6X7kpMCUZKZ3XiF+UFG5vGK9kiMyS+t+MIRFFYciSxTQM6Z7EA== X-Received: by 2002:a05:6102:c52:b0:5fe:13bc:f13a with SMTP id ada2fe7eead31-5ffaafb23f5mr239107137.36.1772589156590; Tue, 03 Mar 2026 17:52:36 -0800 (PST) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , Paul Durrant , "Edgar E. Iglesias" , "Michael S. Tsirkin" , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PATCH v1 4/5] hw/xen-hvm: Add a mapcache arg to xen_register_ioreq() Date: Wed, 4 Mar 2026 02:52:20 +0100 Message-ID: <20260304015222.979224-5-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260304015222.979224-1-edgar.iglesias@gmail.com> References: <20260304015222.979224-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1772589181482158500 Content-Type: text/plain; charset="utf-8" From: "Edgar E. Iglesias" Add a mapcache argument to xen_register_ioreq() allowing the caller to optionally disable the mapcache. All callers still call it with mapcache =3D true so there's no functional change yet. Signed-off-by: Edgar E. Iglesias Reviewed-by: Stefano Stabellini --- hw/i386/xen/xen-hvm.c | 2 +- hw/xen/xen-hvm-common.c | 18 ++++++++++++------ hw/xen/xen-pvh-common.c | 3 ++- include/hw/xen/xen-hvm-common.h | 3 ++- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index a6e1683885..c7bfcaae8e 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -622,7 +622,7 @@ void xen_hvm_init_pc(PCMachineState *pcms, MemoryRegion= **ram_memory) =20 xen_register_ioreq(state, max_cpus, HVM_IOREQSRV_BUFIOREQ_ATOMIC, - &xen_memory_listener); + &xen_memory_listener, true); =20 xen_is_stubdomain =3D xen_check_stubdomain(state->xenstore); =20 diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c index 59c73dfaeb..8c825588ae 100644 --- a/hw/xen/xen-hvm-common.c +++ b/hw/xen/xen-hvm-common.c @@ -473,7 +473,9 @@ static void handle_ioreq(XenIOState *state, ioreq_t *re= q) case IOREQ_TYPE_TIMEOFFSET: break; case IOREQ_TYPE_INVALIDATE: - xen_invalidate_map_cache(); + if (xen_map_cache_enabled()) { + xen_invalidate_map_cache(); + } break; case IOREQ_TYPE_PCI_CONFIG: cpu_ioreq_config(state, req); @@ -823,7 +825,8 @@ void xen_shutdown_fatal_error(const char *fmt, ...) =20 static void xen_do_ioreq_register(XenIOState *state, unsigned int max_cpus, - const MemoryListener *xen_memory_listene= r) + const MemoryListener *xen_memory_listene= r, + bool mapcache) { int i, rc; =20 @@ -874,11 +877,13 @@ static void xen_do_ioreq_register(XenIOState *state, state->bufioreq_local_port =3D rc; } /* Init RAM management */ + if (mapcache) { #ifdef XEN_COMPAT_PHYSMAP - xen_map_cache_init(xen_phys_offset_to_gaddr, state); + xen_map_cache_init(xen_phys_offset_to_gaddr, state); #else - xen_map_cache_init(NULL, state); + xen_map_cache_init(NULL, state); #endif + } =20 qemu_add_vm_change_state_handler(xen_hvm_change_state_handler, state); =20 @@ -901,7 +906,8 @@ err: =20 void xen_register_ioreq(XenIOState *state, unsigned int max_cpus, uint8_t handle_bufioreq, - const MemoryListener *xen_memory_listener) + const MemoryListener *xen_memory_listener, + bool mapcache) { int rc; =20 @@ -922,7 +928,7 @@ void xen_register_ioreq(XenIOState *state, unsigned int= max_cpus, state->has_bufioreq =3D handle_bufioreq !=3D HVM_IOREQSRV_BUFIOREQ_OFF; rc =3D xen_create_ioreq_server(xen_domid, handle_bufioreq, &state->ios= ervid); if (!rc) { - xen_do_ioreq_register(state, max_cpus, xen_memory_listener); + xen_do_ioreq_register(state, max_cpus, xen_memory_listener, mapcac= he); } else { warn_report("xen: failed to create ioreq server"); } diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index 1381310fc7..4fade017bb 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -202,7 +202,8 @@ static void xen_pvh_init(MachineState *ms) xen_pvh_init_ram(s, sysmem); xen_register_ioreq(&s->ioreq, ms->smp.max_cpus, xpc->handle_bufioreq, - &xen_memory_listener); + &xen_memory_listener, + true); =20 if (s->cfg.virtio_mmio_num) { xen_create_virtio_mmio_devices(s); diff --git a/include/hw/xen/xen-hvm-common.h b/include/hw/xen/xen-hvm-commo= n.h index e1beca062f..d177ff14ea 100644 --- a/include/hw/xen/xen-hvm-common.h +++ b/include/hw/xen/xen-hvm-common.h @@ -91,7 +91,8 @@ void xen_device_unrealize(DeviceListener *listener, Devic= eState *dev); void xen_hvm_change_state_handler(void *opaque, bool running, RunState rst= ate); void xen_register_ioreq(XenIOState *state, unsigned int max_cpus, uint8_t handle_bufioreq, - const MemoryListener *xen_memory_listener); + const MemoryListener *xen_memory_listener, + bool mapcache); =20 void cpu_ioreq_pio(ioreq_t *req); #endif /* HW_XEN_HVM_COMMON_H */ --=20 2.43.0 From nobody Sat Apr 11 23:04:09 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1772589191; cv=none; d=zohomail.com; s=zohoarc; b=Qi6oC8frNxcfpsrRD2HsMhw+l/+MkQwyhxEvnV44UBL6ZCWCcgmSkQ6F/qTtiQejHPtLNDDANVKJ8XgC51lRWSVq/cmIpiTUDLliXlGzopTzNT/tsirsjaHsWpHMlyxt/TZJERcLmmA3WrrZ+2o4BxAAXWhY+NXBihRwWYRnTPA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772589191; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EJHpqZ1+MwG7a9L0vy9H75K3KJbsmHXRI7gW76g6PSg=; b=QrR85Od+DdabdCrnyLRCSm5Yrx3esH3Ysx9maSD+3LPT2jIvmGBTkvCuDeCoFrTBeJK4vJebSkrP+whRT5VSccw6FDNXUrITVVH6NbVHFd5aiLPeA/WCPazA1YT8ZEy9VUoOIDVW2ImCS+iFnJlwiwp5O0U4ZUAP7dpQeO7xAYA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1772589191411494.56788338940373; Tue, 3 Mar 2026 17:53:11 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1245078.1544480 (Exim 4.92) (envelope-from ) id 1vxbPn-0007OM-60; Wed, 04 Mar 2026 01:52:43 +0000 Received: by outflank-mailman (output) from mailman id 1245078.1544480; Wed, 04 Mar 2026 01:52:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vxbPn-0007O6-1X; Wed, 04 Mar 2026 01:52:43 +0000 Received: by outflank-mailman (input) for mailman id 1245078; Wed, 04 Mar 2026 01:52:41 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vxbPl-0006Zx-Ks for xen-devel@lists.xenproject.org; Wed, 04 Mar 2026 01:52:41 +0000 Received: from mail-vk1-xa2e.google.com (mail-vk1-xa2e.google.com [2607:f8b0:4864:20::a2e]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id d32c1eae-176c-11f1-9ccf-f158ae23cfc8; Wed, 04 Mar 2026 02:52:39 +0100 (CET) Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-567543b8989so2639712e0c.2 for ; Tue, 03 Mar 2026 17:52:39 -0800 (PST) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56ae7a29c2esm466482e0c.7.2026.03.03.17.52.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2026 17:52:37 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d32c1eae-176c-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772589159; x=1773193959; darn=lists.xenproject.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=EJHpqZ1+MwG7a9L0vy9H75K3KJbsmHXRI7gW76g6PSg=; b=mAYm6R8oWjRsnuWOl4DBP7sOPudwDWUMllJejwXFDBR/Q3ibHyA/eLP+XQqOciQV5T exjjsg+Sp6EJf7ccf0EmA6IUh1zaedmx3zqw6prfk5mJJdCXXIeG1p/I54P7gTmlB7gr lAeDm4W/7489uVX9c2jXDuz/Jq/C4CBQ7TiG/JhYimEc9uVFdOPXYpIpn5aFero4GSn6 p9uNP0CSPe+SeI294jdX+5KwnD+ZmO7pvpaeuHVn6QeYpcjFXmid1WzosCV+sjKykBW9 WTX+7S69bAY9nWhPSHOGbYwHdxyrQxGOSa1ZhTM89TY7Mr90l1krP8zXOGe2vEL0nZzY 43lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772589159; x=1773193959; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EJHpqZ1+MwG7a9L0vy9H75K3KJbsmHXRI7gW76g6PSg=; b=qGoQ6Rzt9WG/BrT64FV4VPtaK0JF1mj1KELo9LpNTnKjwAuzhgFOIhgEiD3SqTrBwf HUcWgXCh544TuQVtyI91LZy6ebePkOh9rD5vNPibwnZTCZvuPlZrarURzBcmdPOjfDU+ zOxLn5DTet6lTXCQv8w1SXo0strWIur50YlXXckbEIKxHtMxcP6KbCS83PP6G2PMpy/F Mjf0RnbHWYO36e/zXKBLHGNFX82CO7jnHiR67g11uFrMYBIqKqHtXH90JclOp0k3GbiQ Z8G4D5z8zAxhuH2sXRDqLMue+GEajSr/r6iFk8rGoy6maWQR3/POwlWDSLqlImcXytV/ NzCg== X-Forwarded-Encrypted: i=1; AJvYcCWxhc1pf65F2dId+gclMwMXmpzMYPZTnvtC3Al6Aezd1GO8WIbqU1uO1q4xh+TSo6VLipyys3RlS5Q=@lists.xenproject.org X-Gm-Message-State: AOJu0YzsmrDe5O1vPvXRBO+Ve8cQVd08mNUf5EOP1yJi6sl7a9SNgPoX cTDjDRrq1Q/3ZJ8E5u4ti+6Hy4QMHQitohig9L+1KLlyWQG95jYdrBKy X-Gm-Gg: ATEYQzwg3aD9HPcgocmcgLFCMWd0EVktUTJvhuio5c3ldVg4Qceml4/6kUQSH8Enz8p cm3ig/4i5adrTzPJKRSGxgnK3VXE06Pm8+v3OhNjkYPyiRmbYvwco+X1EhP8qC0XkD/GBLaSjNA RI/plYwPQwQwTdAnBGQ+qPdh3n2+KbOT9r3kR+GFSbwjhHTN1j/f623d1DjYQ1K2bhk1Z7QxaV8 dJ5fI9FEyCo9U4qghnYACgzMcJksewl+Mb1FarXRVb689Rv5LlGLXWko1t8VM8Ta3bYE4ASM/FB e/yYI92TKltXO9mzIHrzlWjcVwpTbWfP/qerEBD9N9VKZMifgBZePG6StjVjycz/JTmmnzR32wv BRk8gr9gWeW1cn7fChNT2HjLAdcMWGlX3nTCDBNbFrij2mtOIOgcdxp59YbqkxD6x0vP+tb/16e b4afYegtQZZSSTuNtqeBFEOMyWi/LHqlNV2tbODCbIT7nnjdib5+VixOdTJcf2SVwK60w+ X-Received: by 2002:a05:6122:2a43:b0:55b:305b:4e47 with SMTP id 71dfb90a1353d-56ae78214b9mr229902e0c.19.1772589158517; Tue, 03 Mar 2026 17:52:38 -0800 (PST) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , Paul Durrant , "Edgar E. Iglesias" Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PATCH v1 5/5] hw/xen: xenpvh: Add prop to enable/disable the mapcache Date: Wed, 4 Mar 2026 02:52:21 +0100 Message-ID: <20260304015222.979224-6-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260304015222.979224-1-edgar.iglesias@gmail.com> References: <20260304015222.979224-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1772589194552158500 Content-Type: text/plain; charset="utf-8" From: "Edgar E. Iglesias" Add a machine property to enable/disable the mapcache. Default it to enabled for backwards compatibility. Signed-off-by: Edgar E. Iglesias Reviewed-by: Stefano Stabellini --- hw/xen/xen-pvh-common.c | 133 +++++++++++++++++++++++++++++--- include/hw/xen/xen-pvh-common.h | 2 + 2 files changed, 124 insertions(+), 11 deletions(-) diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index 4fade017bb..cca37202ff 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -29,6 +29,69 @@ static const MemoryListener xen_memory_listener =3D { .priority =3D MEMORY_LISTENER_PRIORITY_ACCEL, }; =20 +/* + * Map foreign RAM in bounded chunks so we don't build a PFN array for the + * entire guest size (which can be huge for large guests). We reserve a VA + * range once and then MAP_FIXED each chunk into place. + */ +#define XEN_PVH_MAP_CHUNK_PAGES 65535 + +static void *xen_map_guest_ram(XenPVHMachineState *s, + uint64_t addr, uint64_t size) +{ + size_t total_pages =3D size >> XC_PAGE_SHIFT; + size_t chunk_pages =3D MIN(XEN_PVH_MAP_CHUNK_PAGES, total_pages); + g_autofree xen_pfn_t *pfns =3D NULL; + void *base =3D NULL; + size_t offset; + + if (!total_pages) { + goto done; + } + + base =3D mmap(NULL, size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, = 0); + if (base =3D=3D MAP_FAILED) { + base =3D NULL; + goto done; + } + + pfns =3D g_new0(xen_pfn_t, chunk_pages); + if (!pfns) { + munmap(base, size); + base =3D NULL; + goto done; + } + + for (offset =3D 0; offset < total_pages; offset +=3D chunk_pages) { + size_t num_pages =3D MIN(chunk_pages, total_pages - offset); + void *mapped; + size_t i; + + for (i =3D 0; i < num_pages; i++) { + pfns[i] =3D (addr >> XC_PAGE_SHIFT) + offset + i; + } + + mapped =3D xenforeignmemory_map2( + xen_fmem, xen_domid, + (uint8_t *)base + (offset << XC_PAGE_SHIFT), + PROT_READ | PROT_WRITE, MAP_FIXED, + num_pages, pfns, NULL); + if (!mapped) { + munmap(base, size); + base =3D NULL; + goto done; + } + } +done: + if (!base) { + /* We can't recover from this. */ + error_report("FATAL: Failed to foreign-map %" PRIx64 " - %" PRIx64, + addr, addr + size); + exit(EXIT_FAILURE); + } + return base; +} + static void xen_pvh_init_ram(XenPVHMachineState *s, MemoryRegion *sysmem) { @@ -45,22 +108,42 @@ static void xen_pvh_init_ram(XenPVHMachineState *s, block_len =3D s->cfg.ram_high.base + ram_size[1]; } =20 - memory_region_init_ram(&xen_memory, NULL, "xen.ram", block_len, - &error_fatal); + if (s->cfg.mapcache) { + memory_region_init_ram(&xen_memory, NULL, "xen.ram", + block_len, &error_fatal); + memory_region_init_alias(&s->ram.low, NULL, "xen.ram.lo", &xen_mem= ory, + s->cfg.ram_low.base, ram_size[0]); + if (ram_size[1] > 0) { + memory_region_init_alias(&s->ram.high, NULL, "xen.ram.hi", + &xen_memory, + s->cfg.ram_high.base, ram_size[1]); + } + } else { + void *p; + + p =3D xen_map_guest_ram(s, s->cfg.ram_low.base, ram_size[0]); + memory_region_init_ram_ptr(&s->ram.low, NULL, "xen.ram.lo", + ram_size[0], p); + if (ram_size[1] > 0) { + p =3D xen_map_guest_ram(s, s->cfg.ram_high.base, ram_size[1]); + memory_region_init_ram_ptr(&s->ram.high, NULL, "xen.ram.hi", + ram_size[1], p); + } + } =20 - memory_region_init_alias(&s->ram.low, NULL, "xen.ram.lo", &xen_memory, - s->cfg.ram_low.base, ram_size[0]); + /* Map them onto QEMU's address-space. */ memory_region_add_subregion(sysmem, s->cfg.ram_low.base, &s->ram.low); if (ram_size[1] > 0) { - memory_region_init_alias(&s->ram.high, NULL, "xen.ram.hi", &xen_me= mory, - s->cfg.ram_high.base, ram_size[1]); memory_region_add_subregion(sysmem, s->cfg.ram_high.base, &s->ram.= high); } =20 - /* Setup support for grants. */ - memory_region_init_ram(&xen_grants, NULL, "xen.grants", block_len, - &error_fatal); - memory_region_add_subregion(sysmem, XEN_GRANT_ADDR_OFF, &xen_grants); + /* Grants are only supported when the mapcache is on. */ + if (s->cfg.mapcache) { + /* Setup support for grants. */ + memory_region_init_ram(&xen_grants, NULL, "xen.grants", block_len, + &error_fatal); + memory_region_add_subregion(sysmem, XEN_GRANT_ADDR_OFF, &xen_grant= s); + } } =20 static void xen_set_irq(void *opaque, int irq, int level) @@ -203,7 +286,7 @@ static void xen_pvh_init(MachineState *ms) xen_register_ioreq(&s->ioreq, ms->smp.max_cpus, xpc->handle_bufioreq, &xen_memory_listener, - true); + s->cfg.mapcache); =20 if (s->cfg.virtio_mmio_num) { xen_create_virtio_mmio_devices(s); @@ -285,6 +368,20 @@ XEN_PVH_PROP_MEMMAP(pci_ecam) XEN_PVH_PROP_MEMMAP(pci_mmio) XEN_PVH_PROP_MEMMAP(pci_mmio_high) =20 +static void xen_pvh_set_mapcache(Object *obj, bool value, Error **errp) +{ + XenPVHMachineState *xp =3D XEN_PVH_MACHINE(obj); + + xp->cfg.mapcache =3D value; +} + +static bool xen_pvh_get_mapcache(Object *obj, Error **errp) +{ + XenPVHMachineState *xp =3D XEN_PVH_MACHINE(obj); + + return xp->cfg.mapcache; +} + static void xen_pvh_set_pci_intx_irq_base(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) @@ -338,6 +435,12 @@ do { = \ OC_MEMMAP_PROP_SIZE(c, prop_name, name); \ } while (0) =20 + object_class_property_add_bool(oc, "mapcache", xen_pvh_get_mapcache, + xen_pvh_set_mapcache); + object_class_property_set_description(oc, "mapcache", + "Set on/off to enable/disable the " + "mapcache"); + /* * We provide memmap properties to allow Xen to move things to other * addresses for example when users need to accomodate the memory-map @@ -377,6 +480,13 @@ do { = \ #endif } =20 +static void xen_pvh_instance_init(Object *obj) +{ + XenPVHMachineState *xp =3D XEN_PVH_MACHINE(obj); + + xp->cfg.mapcache =3D true; +} + static void xen_pvh_class_init(ObjectClass *oc, const void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -395,6 +505,7 @@ static const TypeInfo xen_pvh_info =3D { .parent =3D TYPE_MACHINE, .abstract =3D true, .instance_size =3D sizeof(XenPVHMachineState), + .instance_init =3D xen_pvh_instance_init, .class_size =3D sizeof(XenPVHMachineClass), .class_init =3D xen_pvh_class_init, }; diff --git a/include/hw/xen/xen-pvh-common.h b/include/hw/xen/xen-pvh-commo= n.h index 0ed07c5694..0209b798f3 100644 --- a/include/hw/xen/xen-pvh-common.h +++ b/include/hw/xen/xen-pvh-common.h @@ -84,6 +84,8 @@ struct XenPVHMachineState { /* PCI */ MemMapEntry pci_ecam, pci_mmio, pci_mmio_high; uint32_t pci_intx_irq_base; + + bool mapcache; } cfg; }; =20 --=20 2.43.0