From nobody Sat Apr 11 21:31:22 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=1773038714; cv=none; d=zohomail.com; s=zohoarc; b=abT3TpY3RNimtFwSZHC/LemJh/lJRmcnLsKANvuSU744bcHO23aIt7KXgF41luXbVBP1goFPghn2XRKXtNTh7x7ChLGfMFv84L9PwmM0mi6LcqxWaVIRQfPmNNziZUZxGFOfv2k95FsT1dS9hIajYkuHnSYTN4LYfn/Prx623mk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773038714; 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=mAku/l+conV0dggG+e6fwfk6f4KYUT5yoO6o2dEMQkk=; b=Ef+y6bZtAOORzKkagGcXXl/isGibS1ZOBECtAZmxheFnlktRxyqDUjSUNyo22y/0X8p/EfDkpH+aMNdTgpTnSDa+K6xX7wS5t4sWBjrJwgVghUrISIG2JaGrkTXnYwjUsijbgPjfZKncFCW0pZCrWeFDAtP58FdDY4BzBetNyl0= 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 1773038714815281.90974141025924; Sun, 8 Mar 2026 23:45:14 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249072.1546584 (Exim 4.92) (envelope-from ) id 1vzUMB-0005Xc-4h; Mon, 09 Mar 2026 06:44:47 +0000 Received: by outflank-mailman (output) from mailman id 1249072.1546584; Mon, 09 Mar 2026 06:44:47 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzUMB-0005XV-0x; Mon, 09 Mar 2026 06:44:47 +0000 Received: by outflank-mailman (input) for mailman id 1249072; Mon, 09 Mar 2026 06:44:45 +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 1vzUM9-0005KI-60 for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 06:44:45 +0000 Received: from mail-vk1-xa2e.google.com (mail-vk1-xa2e.google.com [2607:f8b0:4864:20::a2e]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 747b748a-1b83-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 07:44:44 +0100 (CET) Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-56aff27dfebso2857451e0c.1 for ; Sun, 08 Mar 2026 23:44:44 -0700 (PDT) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56b0f889ed2sm7456162e0c.13.2026.03.08.23.44.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Mar 2026 23:44:41 -0700 (PDT) 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: 747b748a-1b83-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773038683; x=1773643483; 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=mAku/l+conV0dggG+e6fwfk6f4KYUT5yoO6o2dEMQkk=; b=ifaCFTUoh0bWUgGGEo59P3yNBaR0u2d9CU1x9N8zlxiBFQAyfvwmi985O6VHwJb32q 8yxh4chSBmhgGbgGwi5GnGtI8LeDHn99VVHsUX0/jmsgPXmlKTF32OnQL2xh58G0JREX xYBdp4ezxsHeipxqB8usIQMK56YtoQFqTLFufREAD7Ew3mCw3qKAzxzQtsvTyxQCNsep NcnZ+jFrE6Szq2w4y+yEF0UERAdgCSmus7F2E0j/tGSuAYhBRWJ36jdhdqG9IJq2xSSO YNsfDQMUnhNUqMga14kZ4zYL3502KdiDVsIQcK9UgsKxP5eTfMzL+LiK3TdSOWdoJfZM n5IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773038683; x=1773643483; 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=mAku/l+conV0dggG+e6fwfk6f4KYUT5yoO6o2dEMQkk=; b=eQqAZ+KiuTwY1uur9OqXH3uF+KBREmOTxjdgKgyxHtS6YcndQHEteFXZ8zGq+SBxRZ 0/7U9UaFYmQEyJeLziKP+ihQA03pC7fsDMJ1zjTSHujVYzacnTtL4beqmFTkBE79xniz cuYndfln8znfmGyDLLEBf2DWyAdYOtjw/4NR4E9t96hTF9D9HWtU9AiotsxSY1Qrj8I8 Yr1rVZe2sBFkjpNJ3OfME14NggB9KlG93+HaewF7J6TW+yensbWkA+t5O0e+2GhzHxx7 ebBs88vNaw5v6JruJ4y7TFEg9t68oqv4O/7GsRXzxc3WIA5yCgWfaxb3oeuCljTWGUFu jRHQ== X-Forwarded-Encrypted: i=1; AJvYcCWHggVAHUAFGnhGl7LrR2Xy0cciFFG6AQVF41frHPh1TpgwLRkhKPtNRQ9foJeQc7XWY09LmhobwBE=@lists.xenproject.org X-Gm-Message-State: AOJu0Ywm4GAErjMy9KNsSMRtdaQeBAG+d7EXeRiwnCC3tNtE5654bDrP ra9g5qhDaoOnEs+J3aV8S97lKoJkAUE0HWRvOHRAaBkwuL1ayRl2ykI8 X-Gm-Gg: ATEYQzxBNhLBscHLsZ/G5eeWI9rUoaNVzbVQs+9ZkHOWGG0cfr841DZhZmXZqaznH0x LggYIolVBZxO/89DMZMbhmVBeNf7ovWuG4rl81clX9FOPqlOKY+tAIfTYB/WDohKC/VAXI7iqPu iDQqi9rljxPAQWo11w8ANIqjFtssunB/ihJgmLvmiOqWS0gA5WTIryNIRdceVVO//RREACye1z6 VPt/OoxHmZE0ASZhaxq+D2ziaAfrrcrZJk/5ohBEELCWEu8ll/gDQ/X6UFZ1jfP03VaJzbVsQbc pTY0AL0EdXKuPOQbznFNlzpQOIfiGw3Bv293OJqAWpVZGXoH+PokgEhdliYEfkpADxCH0dkduqr 41muaSpVb6Tro0Cmmb7VqCyIa2g1sQ1b26lZiizJPunHzFdI3OyhvIIa4ZzBF4UF6qVlle+vfgp NsFRL74B3j5sFutLXfePz8HK03SvvH27/wSzXVKg478e/bPrwvpLWmRueGAIe/6hH/t/07 X-Received: by 2002:a05:6122:e46e:b0:567:433b:e903 with SMTP id 71dfb90a1353d-56b07d79ffcmr4232283e0c.6.1773038682868; Sun, 08 Mar 2026 23:44:42 -0700 (PDT) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , "Edgar E. Iglesias" Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PULL v1 1/5] xen: mapcache: Assert mapcache existance Date: Mon, 9 Mar 2026 07:44:31 +0100 Message-ID: <20260309064436.51860-2-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260309064436.51860-1-edgar.iglesias@gmail.com> References: <20260309064436.51860-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773038716653154100 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 21:31:22 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=1773038725; cv=none; d=zohomail.com; s=zohoarc; b=P1kE78bLHv8CROsozjajBfcg0/990hjeKDWzhm8ahgyg12dbk2ZSwBlcNkP0C6kte0N5jRxxRqPaEfkcXMTRkoYFwGAvOOYpTVQb/iKah3HntQgzG5sSXKIIxB8J694021VAImJstS4RzLLyAI7SdNW8PiRqQSNQxSgBIWMphAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773038725; 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=xgO9zG7fMna9CoPh8ghnxcTLAQlMFEOZkqL0utLfYyE=; b=gDAuprqcxOjGcX11tyzjiUzZVE4XzGV8TLP1pbQlNR/B7uR406yR8XhDFDD1vYFziowYh8/hT39X/eFyl579j/24GOKXWE25w9U3+8pd+3cJKtVSr/hJbLPmwO3NbHVdbfq/us0M9EXlxUBLcuQesuqiS6zjZ87NVOtTV1mrOog= 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 177303872539788.81319034397563; Sun, 8 Mar 2026 23:45:25 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249073.1546592 (Exim 4.92) (envelope-from ) id 1vzUMD-0005kp-A0; Mon, 09 Mar 2026 06:44:49 +0000 Received: by outflank-mailman (output) from mailman id 1249073.1546592; Mon, 09 Mar 2026 06:44:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzUMD-0005ki-7K; Mon, 09 Mar 2026 06:44:49 +0000 Received: by outflank-mailman (input) for mailman id 1249073; Mon, 09 Mar 2026 06:44:47 +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 1vzUMB-0005KI-SB for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 06:44:47 +0000 Received: from mail-vk1-xa2a.google.com (mail-vk1-xa2a.google.com [2607:f8b0:4864:20::a2a]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 764f911f-1b83-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 07:44:47 +0100 (CET) Received: by mail-vk1-xa2a.google.com with SMTP id 71dfb90a1353d-56afafef7aeso3209087e0c.3 for ; Sun, 08 Mar 2026 23:44:47 -0700 (PDT) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-5ffe8922cdfsm8333849137.5.2026.03.08.23.44.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Mar 2026 23:44:44 -0700 (PDT) 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: 764f911f-1b83-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773038686; x=1773643486; 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=xgO9zG7fMna9CoPh8ghnxcTLAQlMFEOZkqL0utLfYyE=; b=ENpG5V5usi1dQDsSbkonf3DtNFki4VYUf8duZcAKBOGI1W+/hpmf8RIdgKSlgUOc+I KHt+8MSMlTqcyJZ203F3eUaJvoJKmilORXBcZC9qHyH7ExDhM0/7k4X/TQextuc52yic 3geaiCqD6Qh6sObjfdJ7yc4l+Cm2dzcqOJ+BEO2Na9IE5+kuZdAnkH9lXYIgp/j06u9Q r+IKlIpOgp1NUGjbuBuyEc9GLUn/TuOSNBpLyGpmsVC1UUWxTal2TbFz8gmvBB6uedY1 cRPqPrWcSxrjKLSeJESxJuGJIn94BcVY5+tHhOvXjFahBX8oKrUe1Er9KE3RlPicubpb Bm5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773038686; x=1773643486; 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=xgO9zG7fMna9CoPh8ghnxcTLAQlMFEOZkqL0utLfYyE=; b=jPQKXiqiIjLK6re0Ji0NSMQ2Ev9yuIJPs8K8pV16r+HoMitIOCP5lgGNYOQo1L5yvh LwK46gtkBwvQi8siScsng/4/II167B7GbQck22bZ59gYEsGN7ZN45KlYQagiT161hxi7 jKkZkBBRj9r85f+fXZI1UjclMiyH4vJc0YEd5tvCZpJGle5Vu2kae5wxwkG8cYePhjsd r296/z5rPpBUSbiX197iPLnTCrolnl6vKc+AG8KDCUx2m1+Gpglsx4PSwznDrGqLMOh7 6gA9uV4PWaLbMNYp9EeNkpnZGHKgmfPcXjrg86fRjivIvvAzISeiK9kmuBFwlow9nL88 WMbQ== X-Forwarded-Encrypted: i=1; AJvYcCXiok5T6AQCmyMKO1x+yRDeh6IkAK8tgoZx47+Qxg+hTYeMB4J3Gzvsr05IgAg/hzlrObxIStsS8JI=@lists.xenproject.org X-Gm-Message-State: AOJu0YyUeG6ezip/TSSlmgFThW1cNYouyAX5uvExPOJYHU27jrjnZ6C9 Oo/aplumbPVL/RnMnxjHjuHDD8ZVPJ8ZO1BxrfU+CMjyytb7JUnWmkyU X-Gm-Gg: ATEYQzzZLQ6kIZsrTf+KlsMgHNzNd/z8mm7INEwOxv832s4dGQZqxlFj/PEQgsbbd+P 4fXLi3mmqyvXa68OicLK+kalCHmMkArVHjbJNeMM9K+1HuMgdmF4MJMhs4SdN2Of5ekT+VDLryS SsHMMhps77A95JilTM0MEgeo96sXWpAJAWAdUEVFDyFkpIa5B29jv0C5ccH8FBYv5b8buWlgX2w tikdx8ZpNG2ledDYgSXOfjHePgV1TQgYENnh6r/gaN3JvNw835aU++v6lSEF7N2SjhkNe+d2gxF 029wjg6TiAGzxZ4jB4Pt+2KEBkyyH0fqys55sfg7OwmVk/wviHxlzO/SnJW/5ZE4gtYCnvYjw1u KSJUu2ZV7Rq/V7xCD4xjb+RWw7flY8RyKRJ7KyKlmPO/A6mMsjTsdWPw6Zc322xVFjZh/YYeiB1 kWjQsfRVGl6LHqJApOdKurt5oYuQHvJYcJjQsNkFSF/hNHZy/iC3QaS2x5qcmWmfLFqqOR X-Received: by 2002:a05:6102:c86:b0:5ff:a606:3cfc with SMTP id ada2fe7eead31-5ffe61248dfmr4759508137.21.1773038685979; Sun, 08 Mar 2026 23:44:45 -0700 (PDT) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , "Edgar E. Iglesias" Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PULL v1 2/5] xen: mapcache: Add function to check if the mapcache is enabled Date: Mon, 9 Mar 2026 07:44:32 +0100 Message-ID: <20260309064436.51860-3-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260309064436.51860-1-edgar.iglesias@gmail.com> References: <20260309064436.51860-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773038726697154100 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 21:31:22 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=1773038717; cv=none; d=zohomail.com; s=zohoarc; b=jP29kg60BVnn1ldjMrGRoregoWhuLytaOX2HmtO3xCVvJGwRb0qE1q+rbdnWDEUrnc14kRpuFgOxSj5xTkBVz3C0+VrkNWj5jP+p4vRiS0hRr/3Ab3a15S3wzSS+pahef/2SSX2qP/NAtFA4Q0NxnEIYPEDCVyvLIFR2XW8ghXU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773038717; 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=a2tMEsPmEaiHyXknwk29SjcZVAaayzKi1p57s2lEHB0=; b=n3oWWDUarExHRgeCGWYUDDGzMZeWBYJuRqMtFnpq/XTFgv6Y0limGLongmBGShoVT/7Rd/L5cxwLayTQNYvTMzTbgv75J2JSXSmZT9ny8T+ivpgad0ZiktfyWqc6NKr12/Umcy5pqxoeOUkvDtYllgMUar1IGL2l03giKEcUr38= 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 1773038717166505.3006425638307; Sun, 8 Mar 2026 23:45:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249074.1546601 (Exim 4.92) (envelope-from ) id 1vzUMF-0005z4-He; Mon, 09 Mar 2026 06:44:51 +0000 Received: by outflank-mailman (output) from mailman id 1249074.1546601; Mon, 09 Mar 2026 06:44:51 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzUMF-0005yt-EL; Mon, 09 Mar 2026 06:44:51 +0000 Received: by outflank-mailman (input) for mailman id 1249074; Mon, 09 Mar 2026 06:44:50 +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 1vzUME-0005KI-QK for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 06:44:50 +0000 Received: from mail-vk1-xa36.google.com (mail-vk1-xa36.google.com [2607:f8b0:4864:20::a36]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7811c53a-1b83-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 07:44:50 +0100 (CET) Received: by mail-vk1-xa36.google.com with SMTP id 71dfb90a1353d-56affe9f4c4so1330781e0c.2 for ; Sun, 08 Mar 2026 23:44:50 -0700 (PDT) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56b09a2614fsm9529782e0c.7.2026.03.08.23.44.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Mar 2026 23:44:47 -0700 (PDT) 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: 7811c53a-1b83-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773038689; x=1773643489; 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=a2tMEsPmEaiHyXknwk29SjcZVAaayzKi1p57s2lEHB0=; b=mW5Pe+2jWCfCSoNVatxLSZaJ4edjNDz9JE8VMdeodAgPrMiiGgrpOGwnVkBHtJfhGn salNlGFW3yF8gOnoJG03fXmP/n16y63jTxl5qPeQLYqoVRFlM3TblWZvCCB+owUz563E atgBH9HmnhY9WYHvSIwOYQlPSsXCxv1EkOIj/z14laDo2Eh7vtjXECO3hQPe0zgchsK0 JSyxjMCEU0KPn+dDMhjvqYuywFElO68PmLnkBW6OM073Ab41mwAC+Dq6TTZtKZ5bNbrE xuG6vM+rFn3kbnZdxiyofHN80aQPFhTGD7qwjgMCH56CvJJ0p8Adm5tHnizITFmuIA77 s0uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773038689; x=1773643489; 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=a2tMEsPmEaiHyXknwk29SjcZVAaayzKi1p57s2lEHB0=; b=D0pWStxgUu9g+wry4OsbfrP8BCaHNt+oTKB7phyWzKVeMOis0FRCgC/5H1VRiw+mjd ZiWlNtleV7xqXINxn3DTf+cjVbDJvVok8IROvG+gH00vRRa0HqX0Fh5hv8H8iX4yY6Rc KdRCUG5i2x0UJnlcdRtQnHtztSJjC41F/2EvcsHfAcHFM8wmmTHUk9sUDEL/+672ayNb mnJ54OdQKLk5IHr/berroeJDsq9l0pUGJtmJM1Ae/KL7R8wWs3RrIPPgNaHWk8bSIJwd rG7MrjTLIMFBbh8pIRTFMHQTxBT3elWQwrYgQCcK9ftL6xrv4Kho8diUEbQ4IvG0eVtr +syw== X-Forwarded-Encrypted: i=1; AJvYcCXq/OYY8LNVgV8zHWXZvU01H0A0b4LvG6Tb56MDHL8bdlGQgpJI6zhjfriO6DRX96RIan3xTXzmcyk=@lists.xenproject.org X-Gm-Message-State: AOJu0YzN8uKH6bQhTNnC1L2+ht0JXPZSm9Kq64WBemGznABQfmVUWgPz KgvV5a3DsuVsb7pRamhjNyFIV/XDt7smT/e8hYwRv13eG7pAD7o/Wssd X-Gm-Gg: ATEYQzzi66KKtoVwWhmVLr9c4hDa7Bw2YM9ccz3VWtKLBcXGgnbHZDCaeBu+2Xr6nhn Pw/AD9WK+MFUq+arl2sfPIio3MwYECt8D+zsWNbCM8EvrIMOdmVw4og8YzYGZFGyLAyLaM+0Xp4 ZUPOFuK8xfQKUjEPj7SWsKGxupqjjoqr+HEYXugYA1pNXdZsY9yfYJFZ+tkVEMO78BmTE+QSyGV 5Ah638bOSOZh2X0qK07auFzXa4ekw7+NE/77s6MMbWuaf3etwTPlHbtJcBz2e6q0aiNIDUFJqAD 7d9cF4pzGnDRrTLEDXfowfuWDFGCdDU9wk0Dm5EfaNx1/1ch7CME+kdDwiSYUVPM9IDeCwdkqoV GVLXQINlRsJ+d2lxSqBEGb3qXhm088WYRi8mTchBsVRstdM5K4VaH30bYG6tKwYG7GZEaiWE/3y AqcZpPRvgvlAiyTmTbPyP3fbU22nfpNnJoFz7ZYeX6Oqt44+uDgjbt1OXISg== X-Received: by 2002:a05:6122:1350:b0:566:36e7:8934 with SMTP id 71dfb90a1353d-56b07e8b7dcmr3378593e0c.16.1773038688827; Sun, 08 Mar 2026 23:44:48 -0700 (PDT) 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: [PULL v1 3/5] physmem: xen: Conditionalize use of the mapcache Date: Mon, 9 Mar 2026 07:44:33 +0100 Message-ID: <20260309064436.51860-4-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260309064436.51860-1-edgar.iglesias@gmail.com> References: <20260309064436.51860-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773038718550154100 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 | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/system/physmem.c b/system/physmem.c index e5ff26acec..7eecd81877 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -578,7 +578,9 @@ 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)) { + /* mapcache: Next page may be unmapped or in a different bucket/VA= . */ hwaddr page =3D ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - a= ddr; *plen =3D MIN(page, *plen); } @@ -2577,7 +2579,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 +2738,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 +2787,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 +3789,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 +3900,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 21:31:22 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=1773038719; cv=none; d=zohomail.com; s=zohoarc; b=QqrZ/EmIjoYnREhKKJNnZzaBqgqK3jfKVIYEz9Vv5okV3i5yi73etYLcDOWTLW8FYp1MJrN2XqdTFwbY4Qn6DvuQMVdCOi79DktI4lwRB+wYvfzzDJ4zWvlwOX1CXYe0CoWC2NSFmod1q82yePu89TBNzn9nC36zfX69zZP+ajo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773038719; 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=WJrq6QMWPG9vMn/f3A1Ji6UEIjqvYTStXL9SXKLYoe4=; b=faP0pD8Of//+d5m739NnrQOJTf2Eamup9e9fHGt4VYGniAeRvezSsSqYzZashqwKRBij5xuaHuGgtydgJHpLVpmx3r1T4/ViEcAie0w/yLM0U135mOr0d5WejnAPxlOlipxDU2hU2D69uCRv9Ohe3lIv51PnJ/UxduEkCPY45Jo= 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 1773038719153570.5833788747359; Sun, 8 Mar 2026 23:45:19 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249075.1546610 (Exim 4.92) (envelope-from ) id 1vzUMK-0006I3-OZ; Mon, 09 Mar 2026 06:44:56 +0000 Received: by outflank-mailman (output) from mailman id 1249075.1546610; Mon, 09 Mar 2026 06:44:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzUMK-0006Ho-Lb; Mon, 09 Mar 2026 06:44:56 +0000 Received: by outflank-mailman (input) for mailman id 1249075; Mon, 09 Mar 2026 06:44:56 +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 1vzUMK-0006FY-60 for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 06:44:56 +0000 Received: from mail-vk1-xa2b.google.com (mail-vk1-xa2b.google.com [2607:f8b0:4864:20::a2b]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 79d54920-1b83-11f1-9ccf-f158ae23cfc8; Mon, 09 Mar 2026 07:44:53 +0100 (CET) Received: by mail-vk1-xa2b.google.com with SMTP id 71dfb90a1353d-56a9076813bso4437617e0c.3 for ; Sun, 08 Mar 2026 23:44:53 -0700 (PDT) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-94ea681505csm1360097241.4.2026.03.08.23.44.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Mar 2026 23:44:51 -0700 (PDT) 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: 79d54920-1b83-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773038692; x=1773643492; 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=WJrq6QMWPG9vMn/f3A1Ji6UEIjqvYTStXL9SXKLYoe4=; b=DMapLI2G3W9Xev1kUbEqF0oz8j/q+p9Tyhdi80uZy1cjI1I9NrzPtDu4jICJB5/kAZ qSGUn63UYBWM4PuIXzjwA0IlU5iI/3jwV1pHZssWripLyWJOAkB3bVH4YlP5TE55PEqU q+8EhpJKPGrx2sSyovdhMJFjapo/dOsqWQhBDksZJkc01Kd2ywd5uAvnTcrSp7GX94Y9 0n5ngYOGcdsF07R+NvrvnHqAFDUfMT8SNkCpi+IKhlPxAOjMc6mHerpfXZcZqtUOd0Z+ pvBQQlV5YhvzRpVPt2W/PfzFupOOHOLAYLqJ6ZILHp5wuVpn912FnoXWF6WHShpOKv3X kSUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773038692; x=1773643492; 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=WJrq6QMWPG9vMn/f3A1Ji6UEIjqvYTStXL9SXKLYoe4=; b=r9KZut7wqK80hgQ7BchUwbqYh853RHGyjO3nnB1tEz5ccscmYHx7DXECzIgS1RoJX3 pLDkPvP2+hV8N4kMNi2yiqZB8LetUHGcb22dXFTs7GEVx2xGwALhtgBIfj5fEWNfo3PX T6Lp2UQ5IKg8LM+cA5gLvdgGbycwqk//lrInwwYpHPuRsoAZYeidZB0t1aIrUDTC7kRH 2RFsSHfBnqO+ELgpGsqAnb6KuiNFwUuXWMirchMXlAtyR7vHfMRY5Gd4rf33rRAk3zmH JcfbRHkIgN+zCyrAsO2hJyF1G47D63sgqx3Y6mbAQGcXi1oImApHdRdEXoMyUougdyqe faKQ== X-Forwarded-Encrypted: i=1; AJvYcCXOw8cqfqAf9G9mf+a3zuF/523x3+eRMoVxpKDBOmiEMWqHzu/VqWhMo9i0SFJpCb7PnDBF9R6pheM=@lists.xenproject.org X-Gm-Message-State: AOJu0YwYeFKGcJJRkW0GTTLEcfSbqRhIUSsBbINE5pF1k+BssTTGkutp DXX/cOYzOg182VHXn8/8dC1PGTg4k/I5LiuI+d6qtnO+rHTPjYuCX0Z+ X-Gm-Gg: ATEYQzxitIfrxITDaVxrpOIihnmfZe/V27UdGwGsa6Im8OL1scMRT3XskGYCrLhecYh YG3p37dlUXwYS7hwLm619f1Z5B7/XWD9n6DO/pCJo6d94Vf0kAk84Hpnx3GH6KzoI4IC4Le7jfY 6vl905a3DGF31JQGT6zf0pw67s7pF+e689kTsgoaeTabSMdFqTCYjkACzpjgavh7zIvDgWueDOS EJkKXCCD6NfpJXD5h124Ps1YG7x3zOO5mYUsGcVcTs1xbJ43rliHZWAWnALCBN7QvXuJEtm7fgS KwWkp5XM9T0wrUxVEtiWLtyPiMM/94yowEynECfR1d8Kjq4wdML5xC6dtuYbmZ9CWjmtXo7Kwh1 6az+TCJknng/Ptcz19MSB3y32MUfspnjbluWL0GIRaJkKGdhKcaKFTyvKn5VqMp873gmw9byPvb D/HiaPXycZalT/NfWzqkzExs5NtwU7V5GRCXIH8X9OO0HxaSd5BbSPaclzcQ== X-Received: by 2002:a05:6122:1d4e:b0:559:58a5:f6cc with SMTP id 71dfb90a1353d-56b07d19f27mr3622628e0c.4.1773038691781; Sun, 08 Mar 2026 23:44:51 -0700 (PDT) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , "Edgar E. Iglesias" , Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PULL v1 4/5] hw/xen-hvm: Add a mapcache arg to xen_register_ioreq() Date: Mon, 9 Mar 2026 07:44:34 +0100 Message-ID: <20260309064436.51860-5-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260309064436.51860-1-edgar.iglesias@gmail.com> References: <20260309064436.51860-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773038720669158500 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 21:31:22 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=1773038720; cv=none; d=zohomail.com; s=zohoarc; b=A4JRNSyjRE5w67AjrxQiXJEAx/BgzeZdYgLAGsuYb4+dH0NwQc+ciSkEANolupuyOnbZyLGYR6k9S85PYjcfs8wU5wyPjHytKwKmXjB+51esGuCCDN9G25mXIUNbNdrYg8f81aEwYPnchbUK4cdiw8pWkY5G3OU5ltlpEVmaHPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773038720; 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=OcNC0yip2XrDmFo80yDxRtX2oleYkrUeo7InlE7zv9I=; b=NJsluYDYD3xyB21e55JGHD8EVIZsCvJpEksZOa5Q1bOSfQAjQ3/x7wfyh3/+31bUteyIfBWXS+H79MoZmXwr3tyLcDgfLy3WRumYMJcPZw3TZL69prXPXfWC0yzzTQogXUDERYGbqkB3eD+TmIb3Ukqz7XD7geucafOvyy/ifVE= 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 1773038720335634.3292999587145; Sun, 8 Mar 2026 23:45:20 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249077.1546619 (Exim 4.92) (envelope-from ) id 1vzUMM-0006XK-85; Mon, 09 Mar 2026 06:44:58 +0000 Received: by outflank-mailman (output) from mailman id 1249077.1546619; Mon, 09 Mar 2026 06:44:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzUMM-0006X6-39; Mon, 09 Mar 2026 06:44:58 +0000 Received: by outflank-mailman (input) for mailman id 1249077; Mon, 09 Mar 2026 06:44:56 +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 1vzUMK-0005KI-Ot for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 06:44:56 +0000 Received: from mail-vk1-xa2a.google.com (mail-vk1-xa2a.google.com [2607:f8b0:4864:20::a2a]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7bbb3518-1b83-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 07:44:56 +0100 (CET) Received: by mail-vk1-xa2a.google.com with SMTP id 71dfb90a1353d-56b17c0223bso628832e0c.1 for ; Sun, 08 Mar 2026 23:44:56 -0700 (PDT) Received: from gmail.com (ip190-5-140-138.intercom.com.sv. [190.5.140.138]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56b0f889ed2sm7456276e0c.13.2026.03.08.23.44.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Mar 2026 23:44:54 -0700 (PDT) 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: 7bbb3518-1b83-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773038695; x=1773643495; 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=OcNC0yip2XrDmFo80yDxRtX2oleYkrUeo7InlE7zv9I=; b=LOU2YxLCDKLnQ2zAkCvHD/pWl1L/yiN5wh/KZrOhuosRRV6Dlk06GcFyFuKxi9uY4G BtEd4+CCF/iCRgqR6//5255EdBWolK3+U+JefJ2xd+z1u5qAlt7kBE4BLTxzNWaXf1UR +aCVzd7YKJTb4dxSG0ELron77q58brXjkThM1/c6z1p7zKvlIGbjI1LP/cF8IwuZ8u1Y VNiFzwuYLY/MBLMjDi3SKMBoqMj17EsTVr2grb/v02t0yHOItL1NmHwHgu9tzngk/mOj ZaQ1mcxFxJ64rNRRPteW6vNs9igfsagsYHr6hXYhb+TEc8l6wggexPJwLzGDz04UhXAm LhHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773038695; x=1773643495; 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=OcNC0yip2XrDmFo80yDxRtX2oleYkrUeo7InlE7zv9I=; b=lFycrzStSpHtu6QESel7ijcs69+6UobIFBI9FRRMrGDKIkO/2tafy/e/QqPmd4yOEA 2KAV8okzNuZkz01SnYIdEe2xOENADMcy2EBaSIc12WSsbz5NR8HzS1Y2mrDCGnjoeNht 0FAw3RSVenQd3gGj+HveYxM9shNDZ974bJn5W4So+aqYQ1ctntFVYG0bZEHeckhbA8aM TkybhhOUOn2EaHTMvt9w1kh78RVh1BRTx0PrS+OLgqhFvnNEnOmjvVUBSxOUi65FkAZD dddyvjNt9NOGt63Xa2PHjJxmDyQUHfbLIBmZyWpytnPJdij4E+PpHxMkedMD1eAWBGuF AHhA== X-Forwarded-Encrypted: i=1; AJvYcCV5tqO9ECmP7BG5DFNlRKMP7Ewg9W9nz9kQflEVfNom8DvqjPFtDjW7sb8NkYg7ng6y7saOzbamtX0=@lists.xenproject.org X-Gm-Message-State: AOJu0Yz+GwncYEgp9VPlIxwkm10wTTP8Nz0Zn9RVaUF0sBDGje4lzcsi ZHt37xGSjicPiff7AjrrmKD8qJcDMyVwjNPWSxe+UOzbAQCk9cGiQtnhv63/akyJ X-Gm-Gg: ATEYQzxZmSMI3j8BrIi3r6zbT77SuvXDGuF+teBXjYj8Pf/33t9gBQqkiiPUQ5jOuei omrGDh/EaLxLc3WkKYI0m8gJhyRi3MSWUIRPyjKuX4uur4zOSObeJbo+fPyGWUSRY72p4pAW9mV SX2jKsY/5TSU2br6d+MhjB++IIaWwYwsOlSHaXzfRl3pFzcTE2a2fbXDH+orbZ0PSAzhYCQ+KC5 BpnYttgCBP2+3B7mk/JpMkzVcLhZzw/eGeBkV01bjLH2wmv4f/r7LwrUzl0JTRbcD4DwmCqMd0b ADMg4Z+o03hsUdrs1gWdma/GvWrPrhds0w7UdyAIxalExCKoWPY0R8Akft+Xz8chbIPHmHHsH6M rBFyqgnUHQ7Vj7CmZmQiEPnJbqsyOD8F3V8QDhApkhlVpbHL0LF2VTyHb5DJey3G96NVynVNbHO 5BZnecX9UnvG9afU3pmIv+gq5/0iXxt/s4ixOemZVa2yyz6FUHyxPcdQrLTw== X-Received: by 2002:a05:6122:1c0a:b0:567:4722:66a3 with SMTP id 71dfb90a1353d-56b07da5535mr3763057e0c.8.1773038695019; Sun, 08 Mar 2026 23:44:55 -0700 (PDT) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, Stefano Stabellini , Anthony PERARD , "Edgar E. Iglesias" Cc: edgar.iglesias@amd.com, xen-devel@lists.xenproject.org Subject: [PULL v1 5/5] hw/xen: xenpvh: Add prop to enable/disable the mapcache Date: Mon, 9 Mar 2026 07:44:35 +0100 Message-ID: <20260309064436.51860-6-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260309064436.51860-1-edgar.iglesias@gmail.com> References: <20260309064436.51860-1-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773038722813154100 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