From nobody Mon Mar 23 19:50:46 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=1774283437; cv=none; d=zohomail.com; s=zohoarc; b=lH/ozNL2yKSayDLoNW9td5H+ndA9PwQoILQO7qUlE4+Ro1B6qe6R6dLfW79v02WQLD7S1Iajtnmr4aA0BcdkfbV9r+Tq5Y5J5sbVaAb0BqSyRnZBE1/VqVpQSw0Mc4buz08gJuksFNp1ttAAlbZlLm56AMQcJBzc2fqs5F9ogWI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283437; 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=4LuRVqlpFi1rpvJNwjCUxIjgt4P93RXegQDELQdKOhc=; b=cAPT1T6kEuX93kjwf+LCyJNGmDPKz1BAhk899KwOuFxaJ1khJ87IeNIcxvn58clR1ChPLCEHwr2o6jYtRJ+D0KHpZbvo43yC4zy8txo5POHeoebTjYYxID+EgSf3cHc0eYkQH0DWzLCMDbAx/+BSiAZrRL4c16QTdsXOWd+kOqw= 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 1774283437311884.7639153245983; Mon, 23 Mar 2026 09:30:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259434.1552744 (Exim 4.92) (envelope-from ) id 1w4iAX-0004tz-Ez; Mon, 23 Mar 2026 16:30:21 +0000 Received: by outflank-mailman (output) from mailman id 1259434.1552744; Mon, 23 Mar 2026 16:30:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iAX-0004ts-CC; Mon, 23 Mar 2026 16:30:21 +0000 Received: by outflank-mailman (input) for mailman id 1259434; Mon, 23 Mar 2026 16:30:19 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iAV-0004tJ-M3 for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:30:19 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w4iAV-009kq3-1e for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 17:30:19 +0100 Received: from [10.42.69.3] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c16a97-bab6-0a2a0a5309dd-0a2a4503b4ec-6 for ; Mon, 23 Mar 2026 17:30:19 +0100 Received: from [209.85.218.51] (helo=mail-ej1-f51.google.com) by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c16a9a-1947-0a2a45030019-d155da33b922-3 for ; Mon, 23 Mar 2026 17:30:18 +0100 Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b936331786dso483276166b.3 for ; Mon, 23 Mar 2026 09:30:18 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.30.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:30:09 -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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20230601 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283418; x=1774888218; 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=4LuRVqlpFi1rpvJNwjCUxIjgt4P93RXegQDELQdKOhc=; b=P+/egHRbfmt6nU4zj+dn97cFhaE4jKP/Ca4zPCD+RUKBbeneJeFBCVy+qoTESBGMSJ auf0VJTSte8coVX0LFmk0M2GwbCSE0pKWjpIfZudcEsfkvJwtq7e+vvKHPYRGPdQGCPw 6s9MGBA1anak9WuljlKAGOkO9+RjMvdJ5VmY1M+FSZxeYCK2ALYqu9mz0jJdkIT254gq UFhiMtgn0O/8M1ZkolAtJasc0xHVg+dHS4zfTz2CLuP5M9lfW2ztKVQFpzp54HjxhRPu VGbJTaUzRyJoZQ4eGsQhAbGfO0Ty5gAuyopC7z8XsfRrWG5+VbgmijLBwvllAREMUCQv MZuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283418; x=1774888218; 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=4LuRVqlpFi1rpvJNwjCUxIjgt4P93RXegQDELQdKOhc=; b=hCN3KJcCXUKl3fzBpRMbkfQAPFWZEcQuXx8ifXPxtRX31dphJs+7oXUmz2Nu8bTd+/ Jucp5rxp64l/b6BvjrOehdQKQeEWezPgJ+0mk3TeJ3DDg7ktOiFCaJU2eIXAst9oQ/SP feotIp+vaM6/sdAN+ZGqLojkinAQMbdivz8fmTC9EbF5pHXuUG+ngEbDr7GHmQ9Ds/m8 U1hgaxU1gwVEV5fONgdGsKpoannKkKdpJXZRPzBbFwWex5ltQMMuIxt6zTTtDS5zK0lG kSatX36UYnOQEWhKwWrre5mPhqqPNdgT78REmR5P6dqT2k52ZcDqlu8OWhv08rJtvzbc mKNw== X-Gm-Message-State: AOJu0YzBfUdYk8Ye5HqRFomeRc3x+yPPfKd/sGuFyU4+ILd+EnEixi3n 0rRTl8aaMn5HGsCFHwnfzhaVGK3kZvko+I9PX0ybHYrN2rbw2DvTI0cywdM6kA== X-Gm-Gg: ATEYQzzxd3lypRXP5gVTI7zItD0V586+zulx6g9/XJexak5gb7p18D7Efd11gtGxNDM dKIgrnMbaCYsAToiGT3P2Sk1Jz2xbZDFP7ZNdrHwOGnClL4HjV+fwXmMHJRTKxlwQDdbupwawvY vUgF4iR0KpTvUH2Foq8pWdtT2cxd6g3Ceb1/yvvL0KOGiaWWmhCIyChNBpXlKOauJzaYCaTE8Ts gvlCfIgaQJBATFkMI2fbi3/AzVdNh68Vym84AWmEcvysT4auHXOX3jIAnCZneADA/WZbN8rD7CN L5YZfuP4sH+AlXhOsQcCeYZa5qrnPYY0N3HcLZWz4EFZcv2y3DrQG1JrjQEX6uK6uCmH7boNama Dwfr1eBRsxsVHGiTMWEYxlKj12UEM2otwiYWDyT+eT2Yj0J2+iKFraSw+NNRDyAL8R/tpPJWOIg kZi3/vujRv7JiHa7eUxLYH/24cZNcwYW/YHUoh5gePevGyNGtXmG9LRPmykelsr6k60Q== X-Received: by 2002:a17:907:1c1f:b0:b98:3d79:40c0 with SMTP id a640c23a62f3a-b983d794e9cmr811089066b.12.1774283417745; Mon, 23 Mar 2026 09:30:17 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Alistair Francis , Connor Davis , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 01/11] xen/riscv: implement get_page_from_gfn() Date: Mon, 23 Mar 2026 17:29:42 +0100 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-33051d/1774283419-4A05C72C-5C73FF64/0/0 X-purgate-type: clean X-purgate-size: 3842 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283440367154100 Content-Type: text/plain; charset="utf-8" Provide a RISC-V implementation of get_page_from_gfn(), matching the semantics used by other architectures. For translated guests, this is implemented as a wrapper around p2m_get_page_from_gfn(). For DOMID_XEN, which is not auto-translated, provide a 1:1 RAM/MMIO mapping and perform the required validation and reference counting. The function is implemented out-of-line rather than as a static inline, to avoid header ordering issues where struct domain is incomplete when asm/p2m.h is included, leading to build failures: In file included from ./arch/riscv/include/asm/domain.h:10, from ./include/xen/domain.h:16, from ./include/xen/sched.h:11, from ./include/xen/event.h:12, from common/cpu.c:3: ./arch/riscv/include/asm/p2m.h: In function 'get_page_from_gfn': ./arch/riscv/include/asm/p2m.h:50:33: error: invalid use of undefined typ= e 'struct domain' 50 | #define p2m_get_hostp2m(d) (&(d)->arch.p2m) | ^~ ./arch/riscv/include/asm/p2m.h:180:38: note: in expansion of macro 'p2m_g= et_hostp2m' 180 | return p2m_get_page_from_gfn(p2m_get_hostp2m(d), _gfn(gfn= ), t); | ^~~~~~~~~~~~~~~ make[2]: *** [Rules.mk:253: common/cpu.o] Error 1 make[1]: *** [build.mk:72: common] Error 2 make: *** [Makefile:623: xen] Error 2 Signed-off-by: Oleksii Kurochko --- Changes in v2: - Align implemntation with Arm's get_page_from_gfn(). - Update the first comment about DOMID_XEN to mention that isn't "normal" domain instead of no-autotranslated. - Drop footer after commit message. --- xen/arch/riscv/include/asm/p2m.h | 8 ++------ xen/arch/riscv/p2m.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/= p2m.h index 60f27f9b347e..54ea67990f06 100644 --- a/xen/arch/riscv/include/asm/p2m.h +++ b/xen/arch/riscv/include/asm/p2m.h @@ -164,12 +164,8 @@ typedef unsigned int p2m_query_t; #define P2M_ALLOC (1u<<0) /* Populate PoD and paged-out entries */ #define P2M_UNSHARE (1u<<1) /* Break CoW sharing */ =20 -static inline struct page_info *get_page_from_gfn( - struct domain *d, unsigned long gfn, p2m_type_t *t, p2m_query_t q) -{ - BUG_ON("unimplemented"); - return NULL; -} +struct page_info *get_page_from_gfn(struct domain *d, unsigned long gfn, + p2m_type_t *t, p2m_query_t q); =20 static inline void memory_type_changed(struct domain *d) { diff --git a/xen/arch/riscv/p2m.c b/xen/arch/riscv/p2m.c index 89e5db606fc8..11beaeead5ac 100644 --- a/xen/arch/riscv/p2m.c +++ b/xen/arch/riscv/p2m.c @@ -1534,3 +1534,32 @@ void p2m_handle_vmenter(void) * won't be reused until need_flush is set to true. */ } + +struct page_info *get_page_from_gfn(struct domain *d, unsigned long gfn, + p2m_type_t *t, p2m_query_t q) +{ + struct page_info *page; + p2m_type_t p2mt; + + /* Special case for DOMID_XEN as it isn't "normal" domain */ + if ( likely(d !=3D dom_xen) ) + return p2m_get_page_from_gfn(p2m_get_hostp2m(d), _gfn(gfn), t); + + if ( !t ) + t =3D &p2mt; + + *t =3D p2m_invalid; + + /* DOMID_XEN sees 1-1 RAM. The p2m_type is based on the type of the pa= ge */ + page =3D mfn_to_page(_mfn(gfn)); + + if ( !mfn_valid(_mfn(gfn)) || !get_page(page, d) ) + return NULL; + + if ( page->u.inuse.type_info & PGT_writable_page ) + *t =3D p2m_ram_rw; + else + BUG_ON("unimplemented. p2m_ram_ro hasn't been introduced yet"); + + return page; +} --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283444; cv=none; d=zohomail.com; s=zohoarc; b=iDBQ6JzafIGyVGxJMJtFGdrMQGrQvmR6eEofIpFJ30SZGVHHJ9NN0PmFqAE3HvAmQZV4Soy2WhqK173rXAZwHH5Gl939JY862n/G+kjkpx+1+B+8c/viUWGu3HSdScvMFmQOHIa5MsBvU76alAzXd3GJGSAK70GOE0DuMKw/CtA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283444; 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=Z3mjawTYIGyz+a/A4MWs03CayIMQKo5R8nTd3he3QdU=; b=iQpF9iJO0k9Vi6Bz4KKi43wSF2spOPHy7arDsmuvJjPMJSWfZde21V7WhT4TYc3h/MOEzJRGA4JjWBok1YjkioWHgxA/X4clkwEm4Fa/fGpsH4u3/cP8mKXm57oFiYuexHlSHhEegxCV6Ws/szmn/74N/8oltiEn7jo2JG2hq9E= 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 1774283444880420.3668132232958; Mon, 23 Mar 2026 09:30:44 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259438.1552753 (Exim 4.92) (envelope-from ) id 1w4iAi-0005ES-Ms; Mon, 23 Mar 2026 16:30:32 +0000 Received: by outflank-mailman (output) from mailman id 1259438.1552753; Mon, 23 Mar 2026 16:30:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iAi-0005EL-JO; Mon, 23 Mar 2026 16:30:32 +0000 Received: by outflank-mailman (input) for mailman id 1259438; Mon, 23 Mar 2026 16:30:31 +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 1w4iAh-0005Bu-0d for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:30:31 +0000 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9a50b212-26d5-11f1-9ccf-f158ae23cfc8; Mon, 23 Mar 2026 17:30:28 +0100 (CET) Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b982b0889d8so51035266b.2 for ; Mon, 23 Mar 2026 09:30:28 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.30.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:30:19 -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: 9a50b212-26d5-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283428; x=1774888228; 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=Z3mjawTYIGyz+a/A4MWs03CayIMQKo5R8nTd3he3QdU=; b=ddARcxFXWI4/edkuYvzzxPzfeFuXPpfSNMNCb/whA0zH+jzmWESul/oUjkadqcuZIG wf6WhD9/E8T9eozwk2ojnvuWquVfmdFyoScrUUbrSdb4vdOjubD4K/hbUiNmll9KPTR3 PN+LJJ866LDjW/x5N+e9zxUVjyyrQSR2Eha4SfD0/1iBPZcsvmgDj3sXSqZ008TCI8Fm fSDdqMkFBQo9/GXmLhiIUfT/jGjlRdr9WFZiG37AAcZhxDe2KuGlX7FNXd3tQx+4g26J pAEZklp+Sy3X6FlaTeJdFjL3uQdJGGK/p/IO+RE+eCUUYSl5R0RUYuN8/QQRGGym2aJj ScMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283428; x=1774888228; 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=Z3mjawTYIGyz+a/A4MWs03CayIMQKo5R8nTd3he3QdU=; b=MYNpYBY2YVmuSEyj2cJJaW5ogOTKs0fF2XrFV5DU/RqH2O7jygumGeEllP2OvjjjDR rmtj1BsIPzarzgdOjK2pyPs2Njm1mrpbXdFCMjhj5jKRaoRYAHon6nQBu207zXv3aKku EfpXhVKiXvqz6d+81sx4FHgMTTHDoUpr0LSdiUja9X0dAnVfb0WgEtzBpJW4kgh1V+tc jUR87uwlk8/8KHGHSDiouD7pv9Htn8yt/ERrvMfTEqFoUKORS975vXPT++8EmhbjWzH+ BSRciWl/OZCY+lfSvzYmDzdS8bLAtffYZXgzowyNtmZKmJE1gIAU88IZwnRX/OAWrBUw yaCA== X-Gm-Message-State: AOJu0YxK+7SNWQz4Tdyc6/Cd0zwChnR6TDVNyzUQTMpRx331JyTVSKO3 xrrf3RxAEhTMW6mHdSXVAuOj7BfBW/RSlYtOdRSTKoXj64PJX5Xs7ss4igAUEg== X-Gm-Gg: ATEYQzyfi6SUmzjJPixlR27IkFRtk2oxEvlQf6ocKy7E0QZ4zualTuFEEyJSUqEHtRe H9yedyy+/Q+KvmfLji78u0JgUnAhkS9l6AguoiTvMJYSHd59leLDzPAK3qu8D1slu3xB/Bnzypl 4F8KERByAwG62OHN/pfruuPhwL0vR9gx/0AXxMuZ61XXGF6hzCUsJz3M3nUYfF58olB54SbpAVh WL2wfEcvHR3j2G6Z10HYf8XLQ0xcTAzyvhdzIjDMJbVpdGhpyilEb0SzewH3BRuhA/lkLOmko8G AMKJy3q9HEn7SGqjW5u7WTNOO67yZCxTaoQa85V4QqdMLxeQi/NYJ9lvz018WeoR7aUAr0tReOB fRbSz0VKZeYPusZc1WOULTI5JFNP/x231A1LIpeYoMtuo2TicJ2L+XkmQdqxx+sSykRxlnHbr/F sRz44wlK+r1zsGsdTMk7jHiIsqs7fmewVrZKSMOLEgtFg11q51jEAruve/MYawfwmN90Ztdm7AJ U07 X-Received: by 2002:a17:906:88f:b0:b97:eae9:d45e with SMTP id a640c23a62f3a-b982f398aacmr718179466b.50.1774283426156; Mon, 23 Mar 2026 09:30:26 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Timothy Pearson , Alistair Francis , Connor Davis Subject: [PATCH v2 02/11] xen: return proper type for guest access functions Date: Mon, 23 Mar 2026 17:29:43 +0100 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283446453154100 Content-Type: text/plain; charset="utf-8" The copy_to_guest_phys_cb function pointer declaration was based on Arm code. However, guest access functions use copy_guest(), which should return an unsigned int as it returns either 0 or len which is unsigned int, so it does not make sense to return unsigned long. Update other functions that use copy_guest() to return unsigned int, to match its return type. Also update guest access functions for other architectures, as their declarations/definitions are likely copied from the Arm implementation, so update them as well to keep everything in sync. Signed-off-by: Oleksii Kurochko --- Changes in v2: - New patch. --- xen/arch/arm/guestcopy.c | 24 +++++++++++------------ xen/arch/arm/include/asm/guest_access.h | 18 ++++++++--------- xen/arch/ppc/include/asm/guest_access.h | 10 +++++----- xen/arch/riscv/include/asm/guest_access.h | 6 +++--- xen/arch/riscv/stubs.c | 8 ++++---- xen/include/xen/fdt-domain-build.h | 8 ++++---- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c index fdb06422b8e9..11ad80320f4c 100644 --- a/xen/arch/arm/guestcopy.c +++ b/xen/arch/arm/guestcopy.c @@ -53,8 +53,8 @@ static struct page_info *translate_get_page(copy_info_t i= nfo, uint64_t addr, return page; } =20 -static unsigned long copy_guest(void *buf, uint64_t addr, unsigned int len, - copy_info_t info, unsigned int flags) +static unsigned int copy_guest(void *buf, uint64_t addr, unsigned int len, + copy_info_t info, unsigned int flags) { /* XXX needs to handle faults */ unsigned int offset =3D addr & ~PAGE_MASK; @@ -107,36 +107,36 @@ static unsigned long copy_guest(void *buf, uint64_t a= ddr, unsigned int len, return 0; } =20 -unsigned long raw_copy_to_guest(void *to, const void *from, unsigned int l= en) +unsigned int raw_copy_to_guest(void *to, const void *from, unsigned int le= n) { return copy_guest((void *)from, (vaddr_t)to, len, GVA_INFO(current), COPY_to_guest | COPY_linear); } =20 -unsigned long raw_copy_to_guest_flush_dcache(void *to, const void *from, - unsigned int len) +unsigned int raw_copy_to_guest_flush_dcache(void *to, const void *from, + unsigned int len) { return copy_guest((void *)from, (vaddr_t)to, len, GVA_INFO(current), COPY_to_guest | COPY_flush_dcache | COPY_linear); } =20 -unsigned long raw_clear_guest(void *to, unsigned int len) +unsigned int raw_clear_guest(void *to, unsigned int len) { return copy_guest(NULL, (vaddr_t)to, len, GVA_INFO(current), COPY_to_guest | COPY_linear); } =20 -unsigned long raw_copy_from_guest(void *to, const void __user *from, - unsigned int len) +unsigned int raw_copy_from_guest(void *to, const void __user *from, + unsigned int len) { return copy_guest(to, (vaddr_t)from, len, GVA_INFO(current), COPY_from_guest | COPY_linear); } =20 -unsigned long copy_to_guest_phys_flush_dcache(struct domain *d, - paddr_t gpa, - void *buf, - unsigned int len) +unsigned int copy_to_guest_phys_flush_dcache(struct domain *d, + paddr_t gpa, + void *buf, + unsigned int len) { return copy_guest(buf, gpa, len, GPA_INFO(d), COPY_to_guest | COPY_ipa | COPY_flush_dcache); diff --git a/xen/arch/arm/include/asm/guest_access.h b/xen/arch/arm/include= /asm/guest_access.h index 18c88b70d7ec..a1a4b1c36269 100644 --- a/xen/arch/arm/include/asm/guest_access.h +++ b/xen/arch/arm/include/asm/guest_access.h @@ -4,17 +4,17 @@ #include #include =20 -unsigned long raw_copy_to_guest(void *to, const void *from, unsigned int l= en); -unsigned long raw_copy_to_guest_flush_dcache(void *to, const void *from, - unsigned int len); -unsigned long raw_copy_from_guest(void *to, const void *from, unsigned int= len); -unsigned long raw_clear_guest(void *to, unsigned int len); +unsigned int raw_copy_to_guest(void *to, const void *from, unsigned int le= n); +unsigned int raw_copy_to_guest_flush_dcache(void *to, const void *from, + unsigned int len); +unsigned int raw_copy_from_guest(void *to, const void *from, unsigned int = len); +unsigned int raw_clear_guest(void *to, unsigned int len); =20 /* Copy data to guest physical address, then clean the region. */ -unsigned long copy_to_guest_phys_flush_dcache(struct domain *d, - paddr_t gpa, - void *buf, - unsigned int len); +unsigned int copy_to_guest_phys_flush_dcache(struct domain *d, + paddr_t gpa, + void *buf, + unsigned int len); =20 int access_guest_memory_by_gpa(struct domain *d, paddr_t gpa, void *buf, uint32_t size, bool is_write); diff --git a/xen/arch/ppc/include/asm/guest_access.h b/xen/arch/ppc/include= /asm/guest_access.h index 654693191106..922848032604 100644 --- a/xen/arch/ppc/include/asm/guest_access.h +++ b/xen/arch/ppc/include/asm/guest_access.h @@ -6,34 +6,34 @@ =20 /* TODO */ =20 -static inline unsigned long raw_copy_to_guest( +static inline unsigned int raw_copy_to_guest( void *to, const void *from, unsigned int len) { BUG_ON("unimplemented"); } -static inline unsigned long raw_copy_to_guest_flush_dcache( +static inline unsigned int raw_copy_to_guest_flush_dcache( void *to, const void *from, unsigned int len) { BUG_ON("unimplemented"); } -static inline unsigned long raw_copy_from_guest( +static inline unsigned int raw_copy_from_guest( void *to, const void *from, unsigned int len) { BUG_ON("unimplemented"); } -static inline unsigned long raw_clear_guest(void *to, unsigned int len) +static inline unsigned int raw_clear_guest(void *to, unsigned int len) { BUG_ON("unimplemented"); } =20 /* Copy data to guest physical address, then clean the region. */ -static inline unsigned long copy_to_guest_phys_flush_dcache( +static inline unsigned int copy_to_guest_phys_flush_dcache( struct domain *d, paddr_t gpa, void *buf, diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/inc= lude/asm/guest_access.h index 7cd51fbbdead..3f4c68e4da20 100644 --- a/xen/arch/riscv/include/asm/guest_access.h +++ b/xen/arch/riscv/include/asm/guest_access.h @@ -2,9 +2,9 @@ #ifndef ASM__RISCV__GUEST_ACCESS_H #define ASM__RISCV__GUEST_ACCESS_H =20 -unsigned long raw_copy_to_guest(void *to, const void *from, unsigned len); -unsigned long raw_copy_from_guest(void *to, const void *from, unsigned len= ); -unsigned long raw_clear_guest(void *to, unsigned int len); +unsigned int raw_copy_to_guest(void *to, const void *from, unsigned len); +unsigned int raw_copy_from_guest(void *to, const void *from, unsigned len); +unsigned int raw_clear_guest(void *to, unsigned int len); =20 #define __raw_copy_to_guest raw_copy_to_guest #define __raw_copy_from_guest raw_copy_from_guest diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c index acbb5b9123ea..d1f78b7c59fa 100644 --- a/xen/arch/riscv/stubs.c +++ b/xen/arch/riscv/stubs.c @@ -201,13 +201,13 @@ int __init parse_arch_dom0_param(const char *s, const= char *e) =20 /* guestcopy.c */ =20 -unsigned long raw_copy_to_guest(void *to, const void *from, unsigned int l= en) +unsigned int raw_copy_to_guest(void *to, const void *from, unsigned int le= n) { BUG_ON("unimplemented"); } =20 -unsigned long raw_copy_from_guest(void *to, const void __user *from, - unsigned int len) +unsigned int raw_copy_from_guest(void *to, const void __user *from, + unsigned int len) { BUG_ON("unimplemented"); } @@ -266,7 +266,7 @@ void udelay(unsigned long usecs) =20 /* guest_access.h */ =20 -static inline unsigned long raw_clear_guest(void *to, unsigned int len) +static inline unsigned int raw_clear_guest(void *to, unsigned int len) { BUG_ON("unimplemented"); } diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domai= n-build.h index 886a85381651..194d69303f56 100644 --- a/xen/include/xen/fdt-domain-build.h +++ b/xen/include/xen/fdt-domain-build.h @@ -44,10 +44,10 @@ static inline int get_allocation_size(paddr_t size) return get_order_from_bytes(size + 1) - 1; } =20 -typedef unsigned long (*copy_to_guest_phys_cb)(struct domain *d, - paddr_t gpa, - void *buf, - unsigned int len); +typedef unsigned int (*copy_to_guest_phys_cb)(struct domain *d, + paddr_t gpa, + void *buf, + unsigned int len); =20 void initrd_load(struct kernel_info *kinfo, copy_to_guest_phys_cb cb); --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283460; cv=none; d=zohomail.com; s=zohoarc; b=kZkJ4OGQO0g7+rUAifxV8ZOcBhT6r/yZIF5ZxY++AOEAAMUC/+Gtli7I3+ciYsQnpd56lhDdVi8GezWmLRPTosPRhB9V6qzto9YwTakZisk96fJ6/ti89+Rhr5Qd+Ua4MsjHt7Gj7kXDYSnnauV1dh/nIKCV13+XefD3cuFMxME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283460; 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=RkR/V7e+x0LZ5vy6oulB2qy/2ayyRS6OQM1v0e6EP4s=; b=lLmD6tKccaLWqo7h/KeTdmwatP8M1Tb+WOkq4+VPBUaJyohOOnuSVEaUvBNzyxMy3dkLAloXBMTqDgHrkRf8zOwbnuFAeksUO0ho5k+mO9ifRpDs17eB550RScuZYySRU9AgDQiI7fxefjyRvhFfYmRi4/WUkkT+Ow4hbGjjrnw= 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 17742834601045.662077406630829; Mon, 23 Mar 2026 09:31:00 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259447.1552762 (Exim 4.92) (envelope-from ) id 1w4iAv-0005k3-2S; Mon, 23 Mar 2026 16:30:45 +0000 Received: by outflank-mailman (output) from mailman id 1259447.1552762; Mon, 23 Mar 2026 16:30:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iAu-0005ju-VR; Mon, 23 Mar 2026 16:30:44 +0000 Received: by outflank-mailman (input) for mailman id 1259447; Mon, 23 Mar 2026 16:30:43 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iAt-0005jA-Kb for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:30:43 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w4iAr-005upU-Ey for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 17:30:43 +0100 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c16aa9-e002-0a2a0a5209dd-0a2a45059b5c-28 for ; Mon, 23 Mar 2026 17:30:42 +0100 Received: from [209.85.218.52] (helo=mail-ej1-f52.google.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c16ab2-5aeb-0a2a45050019-d155da34e82d-3 for ; Mon, 23 Mar 2026 17:30:42 +0100 Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b79f8f7ea43so63035366b.2 for ; Mon, 23 Mar 2026 09:30:42 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.30.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:30:32 -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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20230601 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283442; x=1774888242; 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=RkR/V7e+x0LZ5vy6oulB2qy/2ayyRS6OQM1v0e6EP4s=; b=kQONQ+ql+0NfUwfI+2YTrOyGjlQXtHKYc8N9K1vzadtKjj31evo5OpQgo/JcKqARpG aTLm5GjYzAfJEdmth0czFIWoZhUMBZJTneElC16iC8lDkZVhDtreBCEDpMc9eOaMg9Pz LZhL4Eoosw/A3PA9HO3k0aSvbBpY2X1oE0fz6T+7i+flL7YRaYYeN7AlK0hhHOwFjntb GlhuR7AfZSKkDbZ9VINyQeG7LJAb9H0nRRMLrYaZvkBVk0f6ByoexsqyKB5U8CRPArMx D9skUlQHGMDFDlIPS27u4gO6m0zagHUhaFZt3+UH+As5siZ8bKc9+T6S8t9hFCIzAdl5 LIxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283442; x=1774888242; 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=RkR/V7e+x0LZ5vy6oulB2qy/2ayyRS6OQM1v0e6EP4s=; b=r91PBURODfBE1HyXiNLoPXeYMfBHjh2MU22cFmNqRp6Kc7T6oyyb/nt56wJ2jmCFOp tPmg7aVOxjZqdP+Ipcz8xm4PW7PqEPg9EDC50GxbkUnbKb73Z5UMvcVMofce2Rg8Tjax 4A5KynHEAOWWhZ5qPGdIscSfPMHFiEq46+pvWC+Pv35Ldi1HsXCGAk09BYMHQFBGUwJ0 zN9Wb7tVJgQphCMdU8qShUP7D3Y5KFuqpEALgjbErR/KVzaRDG1FIkxa084UPD+coYeO O4z6Hl73TA49cLQg0K2PCaFsXZmZhFfCrKPDpg2tTNw8GZhFubjv5LFra6wJZHlx9QhD Qg3w== X-Gm-Message-State: AOJu0YxmW4+mRYVDNDiWVxXFbUnxshCJGDfKWtJ0Ujz06dIWdODQdQbz CozV8AolfFgg7fPSeHSqjFFqwGZp1Q4Z4VqDYMpta4CbRHcMjUhmYFA9FfHROw== X-Gm-Gg: ATEYQzzhgJzFrESC5Z5PZI9JHjEVPCYkY/iGCpGBLJUjV/x//4Kf+KN2sezilUsdJ9D Dn/rN1c1PY+czW98GDLsC8dTOzf9o2BE6OmE85GLmGLuHuq8uA2ooAQWO7swz0sUR79WnZFmv3d Zsk6VRBWQ0720Yg8uUrJMIOav2SZ7QApgrgwkuYu4yKz8jeIzdoqx2MhSDuZ6D6znd0LjAGJUQ4 MGMwBzjfp7cDcjrPkNePXBasrzPsq1x4ScXA0V/JS5EUuypdSJr7skEI8+viLdrIUZ9UYsJwx8/ AcLP6ewFKwtoCOysxld8Eqp7sUCAPeEnPaOOpfUkGuXAh+OOSe3FQcSiXUgDPCtKBKJ9tcxMC7q 1ZL4BJaWyiyd138aGe0HCHSE5rAnUMJGzEpwZSGUqJOAWt3IlES/l3u4hasxuQ1f2d9z6jrC/In icyH/qlKvYCA6ERdbtz14g492IZECGncv7hObBXymcIenPzK9Lhr9wn8NMAApAx/ya9bB8h8XCY XnE X-Received: by 2002:a17:906:37cb:b0:b93:5e04:a74b with SMTP id a640c23a62f3a-b982f39a063mr658768666b.31.1774283441888; Mon, 23 Mar 2026 09:30:41 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Alistair Francis , Connor Davis , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 03/11] xen/riscv: implement copy_to_guest_phys() Date: Mon, 23 Mar 2026 17:29:44 +0100 Message-ID: <062e50c596b9271858d2d63e101bfde5311a3817.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-c201ff/1774283442-23082488-FF239CAA/0/0 X-purgate-type: clean X-purgate-size: 6033 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283462531154100 Content-Type: text/plain; charset="utf-8" Introduce copy_to_guest_phys() for RISC-V, based on the Arm implementation. Add a generic copy_guest() helper for copying to and from guest physical (and potentially virtual addresses in the future), and implement translate_get_page() to translate a guest physical address into a struct page_info via the domain p2m. Compared to the Arm code: - Drop COPY_flush_dcache(), as no such use cases exist on RISC-V. - Do not implement the linear mapping case, which is currently unused. - Use PAGE_OFFSET() to initialize the local offset variable in copy_guest(). Signed-off-by: Oleksii Kurochko --- Changes in v2: - Use BIT() instead of open-coding. - Rename COPY_ipa to COPY_gpa. - Rename COPY_linear to COPY_gva. - Use BUG_ON(linear) instead if (lineer) + BUG_ON. - Rename arg liner to gva for translate_get_page(). - Update translate_get_page() to properly handling write argument. - Return unsigned int for copy_guest() and copy_to_guest_phys() as len function parameter is only 'unsigned int'. - Reformat function arguments for alignment --- xen/arch/riscv/Makefile | 1 + xen/arch/riscv/guestcopy.c | 116 ++++++++++++++++++++++ xen/arch/riscv/include/asm/guest_access.h | 7 ++ 3 files changed, 124 insertions(+) create mode 100644 xen/arch/riscv/guestcopy.c diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile index 6b3f3ed90bdb..6d3c822409b8 100644 --- a/xen/arch/riscv/Makefile +++ b/xen/arch/riscv/Makefile @@ -4,6 +4,7 @@ obj-y +=3D domain.o obj-$(CONFIG_EARLY_PRINTK) +=3D early_printk.o obj-y +=3D entry.o obj-$(CONFIG_HAS_EX_TABLE) +=3D extables.o +obj-y +=3D guestcopy.o obj-y +=3D imsic.o obj-y +=3D intc.o obj-y +=3D irq.o diff --git a/xen/arch/riscv/guestcopy.c b/xen/arch/riscv/guestcopy.c new file mode 100644 index 000000000000..d774a90bff92 --- /dev/null +++ b/xen/arch/riscv/guestcopy.c @@ -0,0 +1,116 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include +#include + +#include + +#define COPY_from_guest 0U +#define COPY_to_guest BIT(0, U) +#define COPY_gpa 0U +#define COPY_gva BIT(1, U) + +typedef union +{ + struct + { + struct vcpu *v; + } gva; + + struct + { + struct domain *d; + } gpa; +} copy_info_t; + +#define GVA_INFO(vcpu) ((copy_info_t) { .gva =3D { vcpu } }) +#define GPA_INFO(domain) ((copy_info_t) { .gpa =3D { domain } }) + +static struct page_info *translate_get_page(copy_info_t info, uint64_t add= r, + bool gva, bool write) +{ + p2m_type_t p2mt; + struct page_info *page; + + /* + * Not implemented yet. + * + * If gva =3D=3D true, the operation will likely require a struct vcpu + * rather than just a struct domain. For this reason copy_info_t is + * already passed here instead of only struct domain. + */ + BUG_ON(gva); + + page =3D get_page_from_gfn(info.gpa.d, paddr_to_pfn(addr), &p2mt, P2M_= ALLOC); + + if ( !page ) + return NULL; + + if ( write ? p2mt !=3D p2m_ram_rw : !p2m_is_ram(p2mt) ) + { + put_page(page); + return NULL; + } + + return page; +} + +static unsigned int copy_guest(void *buf, uint64_t addr, unsigned int len, + copy_info_t info, unsigned int flags) +{ + unsigned int offset =3D PAGE_OFFSET(addr); + + BUILD_BUG_ON((sizeof(addr)) < sizeof(vaddr_t)); + BUILD_BUG_ON((sizeof(addr)) < sizeof(paddr_t)); + + while ( len ) + { + void *p; + unsigned int size =3D min(len, (unsigned int)PAGE_SIZE - offset); + struct page_info *page; + + page =3D translate_get_page(info, addr, flags & COPY_gva, + flags & COPY_to_guest); + if ( page =3D=3D NULL ) + return len; + + p =3D __map_domain_page(page); + p +=3D offset; + if ( flags & COPY_to_guest ) + { + /* + * buf will be NULL when the caller request to zero the + * guest memory. + */ + if ( buf ) + memcpy(p, buf, size); + else + memset(p, 0, size); + } + else + memcpy(buf, p, size); + + unmap_domain_page(p - offset); + put_page(page); + len -=3D size; + buf +=3D size; + addr +=3D size; + + /* + * After the first iteration, guest virtual address is correctly + * aligned to PAGE_SIZE. + */ + offset =3D 0; + } + + return 0; +} + +unsigned int copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf, + unsigned int len) +{ + return copy_guest(buf, gpa, len, GPA_INFO(d), + COPY_to_guest | COPY_gpa); +} diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/inc= lude/asm/guest_access.h index 3f4c68e4da20..f0a42745330e 100644 --- a/xen/arch/riscv/include/asm/guest_access.h +++ b/xen/arch/riscv/include/asm/guest_access.h @@ -2,6 +2,10 @@ #ifndef ASM__RISCV__GUEST_ACCESS_H #define ASM__RISCV__GUEST_ACCESS_H =20 +#include + +struct domain; + unsigned int raw_copy_to_guest(void *to, const void *from, unsigned len); unsigned int raw_copy_from_guest(void *to, const void *from, unsigned len); unsigned int raw_clear_guest(void *to, unsigned int len); @@ -18,6 +22,9 @@ unsigned int raw_clear_guest(void *to, unsigned int len); #define guest_handle_okay(hnd, nr) (1) #define guest_handle_subrange_okay(hnd, first, last) (1) =20 +unsigned int copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf, + unsigned int len); + #endif /* ASM__RISCV__GUEST_ACCESS_H */ /* * Local variables: --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283468; cv=none; d=zohomail.com; s=zohoarc; b=LXxu0n+iFVM94F+vEeKP+Nof//tAhdRtEVKXG1WUpxQaydWS+mvYeXkpF40SsGTFpLwpItejHyBxjJyMCuEpwEgnGbG26PMQ09ayTFVnpFzDy0DEH9lSzqRiy2+8YroL5tiwnU0NjGHLYyKOBJYp6a+dImxZVHpyvKQ56jr7HVs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283468; 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=WFYQihohLvdN+/ExvCQUaHnRoG/WzCRUsmGA2ZwH768=; b=Tjke/yfpPQgHvkfTwpmMoom9FQglAm+IFrQ8kQQESPIZWg0zPaHENodGyS36QLAbqOYSIEFwh7exnRULANU72eXeJfwaYEHvn/zeSyzJiAYZ06ZlkIJkIIge8HTcYRJbnAhZfFmu9fN9QaDecAcb8VYZuAZ5wdSNBHkjPvZl1l8= 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 1774283468522448.9401918539728; Mon, 23 Mar 2026 09:31:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259452.1552771 (Exim 4.92) (envelope-from ) id 1w4iB8-0006F3-A4; Mon, 23 Mar 2026 16:30:58 +0000 Received: by outflank-mailman (output) from mailman id 1259452.1552771; Mon, 23 Mar 2026 16:30: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 1w4iB8-0006Ew-5t; Mon, 23 Mar 2026 16:30:58 +0000 Received: by outflank-mailman (input) for mailman id 1259452; Mon, 23 Mar 2026 16:30:56 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iB6-0006Dc-HE for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:30:56 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w4iB5-007jD4-TT for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 17:30:55 +0100 Received: from [10.42.69.3] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c16a97-bab6-0a2a0a5309dd-0a2a4503b4ec-44 for ; Mon, 23 Mar 2026 17:30:55 +0100 Received: from [209.85.208.49] (helo=mail-ed1-f49.google.com) by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c16abf-1947-0a2a45030019-d155d031c542-3 for ; Mon, 23 Mar 2026 17:30:55 +0100 Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-668d70fabc4so918391a12.1 for ; Mon, 23 Mar 2026 09:30:55 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.30.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:30:45 -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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20230601 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283455; x=1774888255; 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=WFYQihohLvdN+/ExvCQUaHnRoG/WzCRUsmGA2ZwH768=; b=BygPlh7JyaB2oqV1Hw5pK5nqh+z3d2fFq/BfAmHqSaQxb55iWBvP5JrKi9JlsfR035 DBFumNI0vVYr8ylPJXfEK/QCMrGIlLGbms1VVnntq91ciHT/q8v9zkbPfRPOglML9fjd EkZ7KTMtXyPr9YRbDDCn6wC5Raf4CDkZO5fWpDGbqrGVQ40c/b3fxXuZljNoFk6mJt76 G4oVasqOURMGSOuw+3GrynBhtIE4jvQfO+fdK2q+JGC51qfFH3uUC1WIGNX1Dpfrk7Go vF4igWtIo7OvwOGwf+pWVOQyGUKKOP7INkYS/g4wk59P9uE8H1ZpLWF+D4jUP6fGWWgQ TpWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283455; x=1774888255; 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=WFYQihohLvdN+/ExvCQUaHnRoG/WzCRUsmGA2ZwH768=; b=Gtv2zOWG5bfqsNTlNwUKVtEG974cUpMck18pNgIGdxybz6x4BIsPfpe5a1HcW5DHre DiF2L31WQ6HFbXs9AxvHWhNpHZ6Zeg5sOqXvXZ0/FuXnBJ7Ps3IBaBG66PTNFe4g2ETb UdAREwpja5uuJPVlpofh3kIRSFJzMw9Yo9+PqQOVn75Cyi8C2HZbmHSRHRGxyAL8ZApU npGHxehtq9QJX4XwzQRDLtXTz0r3C5dkntbI1G0B+PQ3tJWZ/olps7gXNHWOa9tk+iwR KFwdOq/g3OPouE038TVFW/zeOQJTMoMzF9hih3Qt+exLWnF4L8hpRbTsxteS5FmD89CB Io6g== X-Gm-Message-State: AOJu0YzdSnPNfyrw4iqQpRGdP1C6ugL3F1w5XI6jv19rs8rQWb1O3tfi OZUR66KsO5dD5NtNeMkk3aEkj2uptHpVyfjPCx8xQkOVCKSiOuMF6QC+LGFxtA== X-Gm-Gg: ATEYQzxUrCEKriWaeZCFeGGJNoE69PlHZtEZDZx8tyXpI0oH+s/5aZ936JHcfLTZDIG hln0cBlXiVsvA3ZfdIRuX+gc/IUb/Lk37LZvWPBS2Hwvc3d6ra7KQE3D/F0UGv2BxSzPD6iNgrf QXs8rus8M1HhwoAuNJx74fZVcnYs1feBR7gxmfKmZdSokF4vWD00g1gxj40vKN6wZWkztOFrFB9 pssaB9YYWeQTgAZEqOSrk7FKdsNdn2auYpYGjsGNQ2htx7Bj+UgqmDOCw2M7zrUykYoN5/J6Kym APmeHonTfVNnTmi16ZSGuZKjzl6ug9lAEndn04EdtMyFDoY9jqvXiGSJd+aeqbsTA2DpmvIe+mt BFb45maQ7Z1KM8o+BM6x+5LjdooC8uF/bmHBPTNm5rC6bIxCIitIJV8vUXisBisBHrUgC9Fsumq 4ItzwPESx48GqQKA/VHKK20aluqxx6caTZXfmKZHXpF0VBF7tE0ZhlM9MfddTIG+t0pw== X-Received: by 2002:a17:906:5985:b0:b98:5b2:77fe with SMTP id a640c23a62f3a-b982f21d401mr575939166b.3.1774283454732; Mon, 23 Mar 2026 09:30:54 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 04/11] xen/dom0less: rename kernel_zimage_probe() to kernel_image_probe() Date: Mon, 23 Mar 2026 17:29:45 +0100 Message-ID: <0fc8039cce1d8bcce1539e7c9ced71f2d1e85b6c.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-33051d/1774283455-4905472C-809ABE1F/0/0 X-purgate-type: clean X-purgate-size: 7643 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283469860158500 Content-Type: text/plain; charset="utf-8" The helper kernel_zimage_probe() is referenced from common code (xen/common/device-tree/kernel.c), but its name is tied to the zImage format which is specific to Arm (from architectures supported by Xen). Other architectures supported by Xen, such as RISC-V, do not use the zImage format and instead rely on other kernel image types (e.g. Image or compressed Image variants: Image.gz, etc). Using "zimage" in the name is therefore misleading in architecture-independent code. Rename kernel_zimage_probe() to kernel_image_probe() and update the associated structure field from "zimage" to "image" to reflect that the code handles generic kernel images rather than the zImage format specifically. No functional change intended. Reported-by: Jan Beulich Signed-off-by: Oleksii Kurochko --- Changes in v2: - new patch. --- xen/arch/arm/kernel.c | 48 ++++++++++++++++----------------- xen/common/device-tree/kernel.c | 2 +- xen/include/xen/fdt-kernel.h | 4 +-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c index 7544fd50a20f..3c613cdb233f 100644 --- a/xen/arch/arm/kernel.c +++ b/xen/arch/arm/kernel.c @@ -101,8 +101,8 @@ static paddr_t __init kernel_zimage_place(struct kernel= _info *info) paddr_t load_addr; =20 #ifdef CONFIG_ARM_64 - if ( (info->arch.type =3D=3D DOMAIN_64BIT) && (info->zimage.start =3D= =3D 0) ) - return mem->bank[0].start + info->zimage.text_offset; + if ( (info->arch.type =3D=3D DOMAIN_64BIT) && (info->image.start =3D= =3D 0) ) + return mem->bank[0].start + info->image.text_offset; #endif =20 /* @@ -111,19 +111,19 @@ static paddr_t __init kernel_zimage_place(struct kern= el_info *info) * and above 32MiB. Load it as high as possible within these * constraints, while also avoiding the DTB. */ - if ( info->zimage.start =3D=3D 0 ) + if ( info->image.start =3D=3D 0 ) { paddr_t load_end; =20 load_end =3D mem->bank[0].start + mem->bank[0].size; load_end =3D MIN(mem->bank[0].start + MB(128), load_end); =20 - load_addr =3D load_end - info->zimage.len; + load_addr =3D load_end - info->image.len; /* Align to 2MB */ load_addr &=3D ~((2 << 20) - 1); } else - load_addr =3D info->zimage.start; + load_addr =3D info->image.start; =20 return load_addr; } @@ -131,8 +131,8 @@ static paddr_t __init kernel_zimage_place(struct kernel= _info *info) static void __init kernel_zimage_load(struct kernel_info *info) { paddr_t load_addr =3D kernel_zimage_place(info); - paddr_t paddr =3D info->zimage.kernel_addr; - paddr_t len =3D info->zimage.len; + paddr_t paddr =3D info->image.kernel_addr; + paddr_t len =3D info->image.len; void *kernel; int rc; =20 @@ -215,7 +215,7 @@ int __init kernel_uimage_probe(struct kernel_info *info, return -EOPNOTSUPP; } =20 - info->zimage.start =3D be32_to_cpu(uimage.load); + info->image.start =3D be32_to_cpu(uimage.load); info->entry =3D be32_to_cpu(uimage.ep); =20 /* @@ -224,20 +224,20 @@ int __init kernel_uimage_probe(struct kernel_info *in= fo, * independent image. That means Xen is free to load such an image at * any valid address. */ - if ( info->zimage.start =3D=3D 0 ) + if ( info->image.start =3D=3D 0 ) printk(XENLOG_INFO "No load address provided. Xen will decide where to load it= .\n"); else printk(XENLOG_INFO "Provided load address: %"PRIpaddr" and entry address: %"PR= Ipaddr"\n", - info->zimage.start, info->entry); + info->image.start, info->entry); =20 /* * If the image supports position independent execution, then user can= not * provide an entry point as Xen will load such an image at any approp= riate * memory address. Thus, we need to return error. */ - if ( (info->zimage.start =3D=3D 0) && (info->entry !=3D 0) ) + if ( (info->image.start =3D=3D 0) && (info->entry !=3D 0) ) { printk(XENLOG_ERR "Entry point cannot be non zero for PIE image.\n"); @@ -257,13 +257,13 @@ int __init kernel_uimage_probe(struct kernel_info *in= fo, if ( rc ) return rc; =20 - info->zimage.kernel_addr =3D mod->start; - info->zimage.len =3D mod->size; + info->image.kernel_addr =3D mod->start; + info->image.len =3D mod->size; } else { - info->zimage.kernel_addr =3D addr + sizeof(uimage); - info->zimage.len =3D len; + info->image.kernel_addr =3D addr + sizeof(uimage); + info->image.len =3D len; } =20 info->load =3D kernel_zimage_load; @@ -289,7 +289,7 @@ int __init kernel_uimage_probe(struct kernel_info *info, * Thus, Xen uses uimage.load attribute to determine the load address = and * zimage.text_offset is ignored. */ - info->zimage.text_offset =3D 0; + info->image.text_offset =3D 0; #endif =20 return 0; @@ -338,10 +338,10 @@ static int __init kernel_zimage64_probe(struct kernel= _info *info, if ( (end - start) > size ) return -EINVAL; =20 - info->zimage.kernel_addr =3D addr; - info->zimage.len =3D end - start; - info->zimage.text_offset =3D zimage.text_offset; - info->zimage.start =3D 0; + info->image.kernel_addr =3D addr; + info->image.len =3D end - start; + info->image.text_offset =3D zimage.text_offset; + info->image.start =3D 0; =20 info->load =3D kernel_zimage_load; =20 @@ -389,10 +389,10 @@ static int __init kernel_zimage32_probe(struct kernel= _info *info, } } =20 - info->zimage.kernel_addr =3D addr; + info->image.kernel_addr =3D addr; =20 - info->zimage.start =3D start; - info->zimage.len =3D end - start; + info->image.start =3D start; + info->image.len =3D end - start; =20 info->load =3D kernel_zimage_load; =20 @@ -403,7 +403,7 @@ static int __init kernel_zimage32_probe(struct kernel_i= nfo *info, return 0; } =20 -int __init kernel_zimage_probe(struct kernel_info *info, paddr_t addr, +int __init kernel_image_probe(struct kernel_info *info, paddr_t addr, paddr_t size) { int rc; diff --git a/xen/common/device-tree/kernel.c b/xen/common/device-tree/kerne= l.c index 28096121a52d..cfa27464f0fc 100644 --- a/xen/common/device-tree/kernel.c +++ b/xen/common/device-tree/kernel.c @@ -235,7 +235,7 @@ int __init kernel_probe(struct kernel_info *info, if ( rc && rc !=3D -EINVAL ) return rc; =20 - rc =3D kernel_zimage_probe(info, mod->start, mod->size); + rc =3D kernel_image_probe(info, mod->start, mod->size); =20 return rc; } diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h index 33a60597bb4d..2af3bd5f0722 100644 --- a/xen/include/xen/fdt-kernel.h +++ b/xen/include/xen/fdt-kernel.h @@ -56,7 +56,7 @@ struct kernel_info { paddr_t text_offset; /* 64-bit Image only */ #endif paddr_t start; /* Must be 0 for 64-bit Image */ - } zimage; + } image; }; =20 #if __has_include() @@ -122,7 +122,7 @@ void kernel_load(struct kernel_info *info); =20 int kernel_decompress(struct boot_module *mod, uint32_t offset); =20 -int kernel_zimage_probe(struct kernel_info *info, paddr_t addr, paddr_t si= ze); +int kernel_image_probe(struct kernel_info *info, paddr_t addr, paddr_t siz= e); =20 /* * uImage isn't really used nowadays thereby leave kernel_uimage_probe() --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283481; cv=none; d=zohomail.com; s=zohoarc; b=M4g7NTxOrG5GuP7VZ0Lg+W+8TUnVgMrbi+lYVi4ix7nCAbfgyrcwIZVo/STSuwsUaM1U1ObVH7oHXfKFgXWhY2iqN1LKEx8qI5e38V4DJuy3Gb6yS19NNfIDBmOsG2/Q++VKT4hR99ZXz69KiO5gAWL8WK+R44lru4aW7mgJl6I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283481; 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=1r0zN6nVpndBbZj2EAngA6PIoeO7gCPLDD4SqQQvZ3o=; b=dq2ZpySGeMs0AgavxNHCIPK9+XiijGWAkxH3UKMsflJjEb1klmiKf9ennSSXrjbfK99C2Ks2Oh1ztCvbVaOSVrm5zKCoct/0eSJQ0bzijhtsuOxSsWZ+CjwfOSgBm2ZgdbO344rWT7gF3k9BlR93T0ak89WyNzIYIYnzz6zbiBw= 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 1774283481034758.4352004459282; Mon, 23 Mar 2026 09:31:21 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259458.1552780 (Exim 4.92) (envelope-from ) id 1w4iBG-0006j9-H2; Mon, 23 Mar 2026 16:31:06 +0000 Received: by outflank-mailman (output) from mailman id 1259458.1552780; Mon, 23 Mar 2026 16:31:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBG-0006iy-DZ; Mon, 23 Mar 2026 16:31:06 +0000 Received: by outflank-mailman (input) for mailman id 1259458; Mon, 23 Mar 2026 16:31:05 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBF-0006dN-5M for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:31:05 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w4iBC-005uwX-VW for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 17:31:04 +0100 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c16ab9-e002-0a2a0a5209dd-0a2a45089f86-26 for ; Mon, 23 Mar 2026 17:31:04 +0100 Received: from [209.85.208.49] (helo=mail-ed1-f49.google.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c16ac8-1950-0a2a45080019-d155d031c55d-3 for ; Mon, 23 Mar 2026 17:31:04 +0100 Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-668d70fabc4so918666a12.1 for ; Mon, 23 Mar 2026 09:31:04 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.30.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:30:56 -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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20230601 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283464; x=1774888264; 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=1r0zN6nVpndBbZj2EAngA6PIoeO7gCPLDD4SqQQvZ3o=; b=jqKHXS6HrPhdC9i/U5gPSuFSfO7HIaO8bY2w5nFxVk5ey3Dmti5UGPzhDBKiEH8qck U7YaYJaywuGg8dBpuY62o/JTI2mGGf13i/dVlAkOnhCyrUfqpDeelg/gOU1sFXqgf78h fGT2Kpz33UAw7rnffg7ZT/nl4hSgfQHA6rC0388RReaqEn9u3iTg1BUh4tULPGeBLdiZ 2BBS/O+XCnAIyypuZy68bV9PQKnQ17flTrXBJBDnE6xEQKHZ+S/d8H+HDLc4Uv5WrK2h qkVAUkqJrJ83xO/kvaGl53nafBaAKHrm0b4gC4KxCXvmVjy3H2Ba11s5/VjGDGCPitkT 6iYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283464; x=1774888264; 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=1r0zN6nVpndBbZj2EAngA6PIoeO7gCPLDD4SqQQvZ3o=; b=DmDBODJvJy6wu7e9ree5w/PXJZDw6EkZ4b4emkuJihM/T5N10EZt/ur2GKWLZRuSlA Ge34y+QWzjAP8NGTYIIsgC4/9aIZtAidUFKnu2qnGa7QbxbVa+zuro2BOGXlfoMLbi75 m7agUIiz1I7s2k0JNlSKwmaNviqe6T7QkUq5f4p36fHYMLuVIqzPDXmhaqtX2yoRTroz MV74ZZcj1uSGVzjRcySFFuF2ldf0Mxiuyn57FjXlsrRviLa/DfLDPt+IExJBngCT0OP9 BcTtKKSAxdiK77Nd+ifaIPaH5NTcU5t1dpvOregTvz8UTKs0p6OUFOdSXYJpR8ly9ww2 SH5Q== X-Gm-Message-State: AOJu0Yy8m0GA9Qt4GBpHnRDmvL93x5dfKP7oR0o59+9kujvitWV09WXW VAr3kYGJlD2z/7YITLu+alAXyTpY/ZKHSXYsSJiO6Ip0u7ItC+nlsUACbop81Q== X-Gm-Gg: ATEYQzxgBrOS+8nJbnkEsHSmrWUcm3E55TaXVJX8MdcKNQJZQAbnWLX6lrLq3CHbVBl qChkS1bz4G3L3W77cPXuzDrfs7QTYPbmPsUKbwYRLY7C13H9O+8FVzazBNUz4kWFice0waoBhOP NjwZxitXpqhfJ91mK7JV0Nf/pLzZDNDZfwTF1Pn8qiK7/uzbrzXKSfNVLM+uED/T2FC3fCaSe5+ 539m7eBX75xFe2ehY8X3KrTo6hivSGU+RpllOOsO9jN+LhL1cvc2efGQzvON9LXkOlzVx+Dcu0p 1uSeA+7KeY3iWauJdb3mEHIum3g83/v3MfEwnQgTQ7cMdE3F37PSQRPcD676+gNyeFbo2VMfUlu VkOkR396dadF2p0qjnyHTNR0erJeso5yphVk1XVnv7HUFdYPQK5Gt8+vf+WCkBuqpR7ESMARWb5 6NcKuQFKMeJ1ml86gq8s8l3xy3vVzKX/jbFqNM7KnW0P4RyIaMhla08RZrYXHbSO+mgQ== X-Received: by 2002:a17:907:7fa3:b0:b98:4799:e6de with SMTP id a640c23a62f3a-b984799e8afmr731143366b.48.1774283463418; Mon, 23 Mar 2026 09:31:03 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Alistair Francis , Connor Davis , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 05/11] xen/riscv: add kernel loading support Date: Mon, 23 Mar 2026 17:29:46 +0100 Message-ID: <1688c6e0e616b2d1bc1a9050d66f007e0e65d3b2.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-c1860d/1774283464-E3A9B726-99E1AC7C/0/0 X-purgate-type: clean X-purgate-size: 7282 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283482933154100 Content-Type: text/plain; charset="utf-8" Introduce support for loading a Linux kernel Image (its compressed version) on RISC-V. kernel_image_load() and place_modules() currently call panic() on failure rather than returning an error. This is because the common kernel_load() in common/device-tree/kernel.c does not expect a return code. Handling errors gracefully would require a separate refactor. The implementation is based on the Xen Arm kernel loading code. Signed-off-by: Oleksii Kurochko --- Changes in v2: - s/zimage/image as RISC-V doesn't support zImages, only Image and Image.{gz,...}. - Update the commit message. --- xen/arch/riscv/Makefile | 1 + xen/arch/riscv/include/asm/config.h | 13 +++ xen/arch/riscv/kernel.c | 158 ++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+) create mode 100644 xen/arch/riscv/kernel.c diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile index 6d3c822409b8..d90afc7ad23f 100644 --- a/xen/arch/riscv/Makefile +++ b/xen/arch/riscv/Makefile @@ -8,6 +8,7 @@ obj-y +=3D guestcopy.o obj-y +=3D imsic.o obj-y +=3D intc.o obj-y +=3D irq.o +obj-y +=3D kernel.o obj-y +=3D mm.o obj-y +=3D p2m.o obj-y +=3D paging.o diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/a= sm/config.h index 0613de008b13..fd69057826e1 100644 --- a/xen/arch/riscv/include/asm/config.h +++ b/xen/arch/riscv/include/asm/config.h @@ -151,6 +151,19 @@ extern unsigned long phys_offset; /* =3D load_start - XEN_VIRT_START */ #endif =20 +/* + * KERNEL_LOAD_ADDR_ALIGNMENT is defined based on paragraph of + * "Kernel location" of boot.rst: + * https://docs.kernel.org/arch/riscv/boot.html#kernel-location + */ +#if defined(CONFIG_RISCV_32) +#define KERNEL_LOAD_ADDR_ALIGNMENT MB(4) +#elif defined(CONFIG_RISCV_64) +#define KERNEL_LOAD_ADDR_ALIGNMENT MB(2) +#else +#error "Define KERNEL_LOAD_ADDR_ALIGNMENT" +#endif + #endif /* ASM__RISCV__CONFIG_H */ /* * Local variables: diff --git a/xen/arch/riscv/kernel.c b/xen/arch/riscv/kernel.c new file mode 100644 index 000000000000..be5b17dc22c3 --- /dev/null +++ b/xen/arch/riscv/kernel.c @@ -0,0 +1,158 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define IMAGE64_MAGIC_V2 0x05435352 /* Magic number 2, le, "RSC\x05" */ + +static void __init place_modules(struct kernel_info *info, paddr_t kernbas= e, + paddr_t kernend) +{ + const struct boot_module *mod =3D info->bd.initrd; + + const paddr_t initrd_len =3D ROUNDUP(mod ? mod->size : 0, MB(2)); + const paddr_t dtb_len =3D ROUNDUP(fdt_totalsize(info->fdt), MB(2)); + const paddr_t modsize =3D initrd_len + dtb_len; + + const paddr_t ramsize =3D info->mem.bank[0].size; + const paddr_t kernsize =3D ROUNDUP(kernend, MB(2)) - kernbase; + + if ( modsize + kernsize > ramsize ) + panic("Not enough memory in the first bank for the kernel+dtb+init= rd\n"); + + info->dtb_paddr =3D ROUNDUP(kernend, MB(2)); + + info->initrd_paddr =3D info->dtb_paddr + dtb_len; +} + +static paddr_t __init kernel_image_place(struct kernel_info *info) +{ + paddr_t load_addr; + + /* + * At the moment, RISC-V's Linux kernel should be always position + * independent based on "Per-MMU execution" of boot.rst: + * https://docs.kernel.org/arch/riscv/boot.html#pre-mmu-execution + * + * But just for the case when RISC-V's Linux kernel isn't position + * independent it is needed to take load address from + * info->image.start. + * + * If `start` is zero, the Image is position independent. */ + if ( likely(!info->image.start) ) + /* + * According to boot.rst kernel load address should be properly + * aligned: + * https://docs.kernel.org/arch/riscv/boot.html#kernel-location + */ + load_addr =3D ROUNDUP(info->mem.bank[0].start, KERNEL_LOAD_ADDR_AL= IGNMENT); + else + load_addr =3D info->image.start; + + return load_addr; +} + +static void __init kernel_image_load(struct kernel_info *info) +{ + int rc; + paddr_t load_addr =3D kernel_image_place(info); + paddr_t paddr =3D info->image.kernel_addr; + paddr_t len =3D info->image.len; + void *kernel; + + info->entry =3D load_addr; + + place_modules(info, load_addr, load_addr + len); + + printk("Loading Image from %"PRIpaddr" to %"PRIpaddr"-%"PRIpaddr"\n", + paddr, load_addr, load_addr + len); + + kernel =3D ioremap_wc(paddr, len); + + if ( !kernel ) + panic("Unable to map kernel\n"); + + /* Move kernel to proper location in guest phys map */ + rc =3D copy_to_guest_phys(info->bd.d, load_addr, kernel, len); + + if ( rc ) + panic("Unable to copy kernel to proper guest location\n"); + + iounmap(kernel); +} + +/* Check if the image is a 64-bit Image */ +static int __init kernel_image64_probe(struct kernel_info *info, + paddr_t addr, paddr_t size) +{ + /* riscv/boot-image-header.rst */ + struct { + u32 code0; /* Executable code */ + u32 code1; /* Executable code */ + u64 text_offset; /* Image load offset, little endian */ + u64 image_size; /* Effective Image size, little endian */ + u64 flags; /* kernel flags, little endian */ + u32 version; /* Version of this header */ + u32 res1; /* Reserved */ + u64 res2; /* Reserved */ + u64 magic; /* Deprecated: Magic number, little endian, "RIS= CV" */ + u32 magic2; /* Magic number 2, little endian, "RSC\x05" */ + u32 res3; /* Reserved for PE COFF offset */ + } image; + uint64_t start, end; + + if ( size < sizeof(image) ) + return -EINVAL; + + copy_from_paddr(&image, addr, sizeof(image)); + + /* Magic v1 is deprecated and may be removed. Only use v2 */ + if ( image.magic2 !=3D IMAGE64_MAGIC_V2 ) + return -EINVAL; + + /* Currently there is no length in the header, so just use the size */ + start =3D 0; + end =3D size; + + /* + * Given the above this check is a bit pointless, but leave it + * here in case someone adds a length field in the future. + */ + if ( (end - start) > size ) + return -EINVAL; + + info->image.kernel_addr =3D addr; + info->image.len =3D end - start; + info->image.text_offset =3D image.text_offset; + info->image.start =3D 0; + + info->load =3D kernel_image_load; + + return 0; +} + +int __init kernel_image_probe(struct kernel_info *info, paddr_t addr, + paddr_t size) +{ + int rc; + +#ifdef CONFIG_RISCV_64 + rc =3D kernel_image64_probe(info, addr, size); + if ( rc < 0 ) + panic("Failed to probe kernel image\n"); +#else + panic("Only RISC-V 64 is supported\n"); +#endif + + return rc; +} --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283487; cv=none; d=zohomail.com; s=zohoarc; b=CJI8oqDWJYyNg90hyGMKRJKLAt7fDS3h5BQ8+BBd0XtBHbx2e7JBp/6BATptZtW0VjrYLdsEC0vTzkEFVxASP3FalZff/Ej9RUtJrUEUqeMyVsR3DBCO+YigQxEW5q/C4RBnvsiANotHJeSbGwRfyBAnUmkdVmmwFCuV3EOUrMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283487; 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=2oiQiadx4Uzkzg4GkPGtpylDejjc26OKeIIBZzzhoMQ=; b=JYGL3MdEEQsM0Kddwx+GAxAeZGO7sLTOpshfXjWLa0s76M3dMaQGgzes9d6+vXK0RdLTNjd1C97OrkeUb36FQ+g82cHsgxkhMrFtTibGvQ9BZjMv6xpnCgo48L4f9bspdpFRhUB377hm3Xo4uWq9yvrrRhuAiNZMQms3tUWG+Rw= 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 1774283487903245.64350707752737; Mon, 23 Mar 2026 09:31:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259467.1552789 (Exim 4.92) (envelope-from ) id 1w4iBR-0007AM-SO; Mon, 23 Mar 2026 16:31:17 +0000 Received: by outflank-mailman (output) from mailman id 1259467.1552789; Mon, 23 Mar 2026 16:31:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBR-0007AF-Pb; Mon, 23 Mar 2026 16:31:17 +0000 Received: by outflank-mailman (input) for mailman id 1259467; Mon, 23 Mar 2026 16:31:15 +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 1w4iBP-0005Bu-RA for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:31:15 +0000 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id b57c5884-26d5-11f1-9ccf-f158ae23cfc8; Mon, 23 Mar 2026 17:31:14 +0100 (CET) Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-668d70fabc4so918967a12.1 for ; Mon, 23 Mar 2026 09:31:14 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.31.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:31:04 -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: b57c5884-26d5-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283473; x=1774888273; 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=2oiQiadx4Uzkzg4GkPGtpylDejjc26OKeIIBZzzhoMQ=; b=iu1ZTKd4IwRKr6sJvb1TgmxMfWaUCVfkeMp06T8bKnSxnhDGRCRZRW/xjvpFpcoSAe NSqzuNBYAmZIdlZiQAioZAxrX2JcaAxoiYUBsPHyhAEI42XtESnb4hkyUvMe+8y5qdLE 5LHOLlOJIzxwv8e2Y1/164ZU0EtjNc/6oc83DdoBW4VPiyZnWmxOSFCaoB8/OAaJXb0s XdVDuOSrHfuFgiwOita+uf++aHy7scBWYV/doaZ5lY5KiMORTpA1Na2XIqFnG8P28FGG jvA9pRECVRjVXjdxwarBDexov0qW3QJ5EWDWQmUPuWgEDNcvcuCGvvL+pVESLisnV5H+ F9zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283473; x=1774888273; 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=2oiQiadx4Uzkzg4GkPGtpylDejjc26OKeIIBZzzhoMQ=; b=O4HyYlQbRKk129hAkjmwVYC7waWCZqPMmjsdI+fpSAnjDsBPKVBZokVZwlbVwInEgG 3HMRebc+PApk7AleDq9eUQp10i/eS6uJcUT7lDDjYPXaZlakmCcrx1TnduAP1fs7ILDK /x8kTb3HjKSzQeWjn7TdiZaye7JHndQuALyvo8RVWR6j8N3D4dl4K+k+v7GgzoBebqAQ RvvEWmlJb3+PqDbLDWlKXO6g2sYc3RKIrtNZnfFXZFJf5FJ0GL0xEJ8Pz0HzEhDaSS2l F709u0hh4rCqDuupj76utxCFZ9GYb98ktDeLJ4QcJQHjfeng0MIghc/L/KzbTgApzKwZ mbUw== X-Gm-Message-State: AOJu0YyV6D54uv/gZtqUZEh2qxpkXtjeCJRaN8pV063jwN2rg/BW1APK HZd5rkis+Jb/uwKBbFMjVoT+xuYrrWENzqBXlZ+GUDHco4wKERzP+K0bzPbgSA== X-Gm-Gg: ATEYQzwLDv20xdNRRs9c5os/b2ALJRI/eXBfKkWvOrPhkvEjawrtnRf08Je4Aj1Cp8f wlCanmxIinccMSkZFpIaGUf7TriBhGIIwOQXl8MMrUZFyoAveUEZAMCvvZvMBh4uhRRRFoPwLzG MCSZVKPbWnFVSTUxLe4y74rvXpT8/w8J1H8qHOBkGIAHRV2VNXHOfN5X0hSmTd2NndTcdCmW5rF ZlsoX4FOq/2Gk7yMCIZInbUyKsMkqZReijY0BMl27jyoVbGddunOtHAKkY+mlYyEVkMNVc10GUQ TmeIdwidnoySxdcXuG9tOef8A96qxhk0+2PkafCVsuKqhun+kF04KNfU5m7WqfNx/UqYSt3mf5p Tr8xO7O9VB0U54YgGx/OBKg8OqiPHwNZHx0gjAQ16qZg6RS2SOCMH25xiJNnsChoS7dcRkJwTJe HVTIGmhjitFOPp5K/iCzu8ReOlCi3n2DtYjrqJAn7xYMQw1grrpxnu5K++4BNbgwsKpw== X-Received: by 2002:a17:907:7ba2:b0:b98:4156:8787 with SMTP id a640c23a62f3a-b9841568882mr783750666b.49.1774283473196; Mon, 23 Mar 2026 09:31:13 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 06/11] xen: move declaration of fw_unreserved_regions() to common header Date: Mon, 23 Mar 2026 17:29:47 +0100 Message-ID: <7e6cb7450372f17b00c1fd360ef1ef239a825c9e.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283489447158500 Content-Type: text/plain; charset="utf-8" Since the implementation of fw_unreserved_regions() is in common code, move its declaration to xen/bootinfo.h. Signed-off-by: Oleksii Kurochko --- Changes in v2: - Nothing changed. Only rebase. --- xen/arch/arm/include/asm/setup.h | 3 --- xen/include/xen/bootinfo.h | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/se= tup.h index 899e33925ca4..0d29b46ea52b 100644 --- a/xen/arch/arm/include/asm/setup.h +++ b/xen/arch/arm/include/asm/setup.h @@ -43,9 +43,6 @@ int acpi_make_efi_nodes(void *fdt, struct membank tbl_add= []); void create_dom0(void); =20 void discard_initial_modules(void); -void fw_unreserved_regions(paddr_t s, paddr_t e, - void (*cb)(paddr_t ps, paddr_t pe), - unsigned int first); =20 void init_pdx(void); void setup_mm(void); diff --git a/xen/include/xen/bootinfo.h b/xen/include/xen/bootinfo.h index f834f1957155..dbf492c2e36e 100644 --- a/xen/include/xen/bootinfo.h +++ b/xen/include/xen/bootinfo.h @@ -210,4 +210,8 @@ static inline struct membanks *membanks_xzalloc(unsigne= d int nr, return banks; } =20 +void fw_unreserved_regions(paddr_t s, paddr_t e, + void (*cb)(paddr_t ps, paddr_t pe), + unsigned int first); + #endif /* XEN_BOOTINFO_H */ --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283500; cv=none; d=zohomail.com; s=zohoarc; b=CNo6kkjW8nDox86WuxpHgv96xKjB4DCIcQmUCEdgUdSQpQA6v5anUz4haFxTpafoN9fX7DT6be3fb30V6uexTWmA7OV7ZIZXoMHQvcK19qLEfuq1MaVDt9NmRy519iAxUFE78mlJr5ApeAJy3s+jc7E2y1sIZSONmSEsLpWydA0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283500; 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=OUX7GrhRziDvMmFWaLMh2GDPwrEhtXaG/vycDO8shAw=; b=Exh/MDAZt+0Uf4EFYnlrzmkhItGg+x3yT338A632FB1k8MgbqUgk9/862UHdb2O1ppyrPBDuJsp9ifdAcih5ImH+szetN5/8okVCZKu3FXxLOJoaCklwfldZJVEVhzeI/cM9WEO3cAPlOnzvy0i0RFFRaWbwooXEWxEhAX0Dzas= 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 1774283500726332.3415858344639; Mon, 23 Mar 2026 09:31:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259474.1552798 (Exim 4.92) (envelope-from ) id 1w4iBa-0007bF-4M; Mon, 23 Mar 2026 16:31:26 +0000 Received: by outflank-mailman (output) from mailman id 1259474.1552798; Mon, 23 Mar 2026 16:31:26 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBZ-0007b6-Vt; Mon, 23 Mar 2026 16:31:25 +0000 Received: by outflank-mailman (input) for mailman id 1259474; Mon, 23 Mar 2026 16:31:24 +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 1w4iBY-00079z-Pr for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:31:24 +0000 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id bb69298a-26d5-11f1-b166-2bf370ae4941; Mon, 23 Mar 2026 17:31:24 +0100 (CET) Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-b98133bdc4bso522446566b.0 for ; Mon, 23 Mar 2026 09:31:24 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.31.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:31:18 -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: bb69298a-26d5-11f1-b166-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283483; x=1774888283; 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=OUX7GrhRziDvMmFWaLMh2GDPwrEhtXaG/vycDO8shAw=; b=dvBaEioFdDUTIS0NKusO4vriSn6gNLixUj0H7cm69Re7q8jIZRkgABDHF9Y7HrzZYH vFOjjl6h8ltr+ux3d//RuTt5lFWph0dbo585CvMmv5EOOUU0I4VZIO3H+CrJDysucJUq VFIkgz2Gor7wJ/YVIicyv3ZcQbPBJRxow8VFE3YvyApvV0p5lScwG2vuSFcTPPpPXuju mXrZwoBTV2ThJtBD+pZppgF07Z3SlN1B/TE9cDImhVOnqS2nyFm248aHxDWLp741mJEd mwKZR4pEIfjZ3YmBkQbdnbD185FaeX/8ysFRuzDzGRezadhd0RS3xhjMCMwfokZj/OHI 0VuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283483; x=1774888283; 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=OUX7GrhRziDvMmFWaLMh2GDPwrEhtXaG/vycDO8shAw=; b=Q2vsJo8ZKxJCt6JfaSvaNXmE7KfokSHm11sbXOJnMvGf9vBDgjcSa2SqoQU9ISPRsE JGCkXXJN5UV9mfLaqAIE7O6iv4190PIV1lgQCu7NM+8roFjOHvz6LGVI8jrqjArSlE++ uXBPKLuCY5/UEQvNPo8MxSvhDQDZD3bq9vjemdDlGXmPT50/vNqj4C/6wXNJ5GT5poRt KJdYPxWkbbFJHg1dLLDHtp5JFQe9shNiTZWU/WKh2YNyq7opMLceo4CeIvF6BFYdS79q avB5zEJ37QkzLtM9qFafGVHLbJMebstuoKeX8yW5lT86omYHgv8hSc7RnNt37w7oLNMb EW3g== X-Gm-Message-State: AOJu0YyfPKFe3n5lo4efgOsXg16mKw5OWNeV9Z3Fhe14vsJsWRHMqDkS IQGpEmntJcgumg8QclgpJtfqwUi6n0jaLqMt2szpAknwFaLoLwrIscV9yA071Q== X-Gm-Gg: ATEYQzyCVB8/D19vg6PXNVtF23Fg38qGaiMh0z82pJhBDpPxsfZy5PDNlrODU/hFNP8 JyL3Ru3a5244BPV42KtiBFux+Cyr/GkPfD+TRxJew2JuQBWvobhzfCrIZFHWSuInROojJPMyDBM O0D3TApT0dKTsNvgcDZWuRpzBRq++l+CNQnT1EeItnn5Mub239fLyRxBwj0g9P8xsYoHrAJpJIR 8gDpFTHR7NSTMjbt1G8tB5HMZA7K8t/SH6tXbUe4UmouqHRyH6TzlQIQbjoSaqAsDk56BzoNPJn WItntBRE+z/UjNICcmd2wI7qwssri3+pgH8sviDPUDBy5WoA7Wrt3JmxP1gk73Mfk7aI/XHeZEl TPh12hutrV9ZmBUHUtFiHGhtvWZjHpyoIyJs8k5e2ML/cTf4yQCc4NuEVr7mrYmb6NRxZ5105rE tzHDvTbAYnXLm6ZhQLUQFagvHi/eegVlnHWUZWBJOwUqq7uX1X7lAEP4NhAOixMRe4YA== X-Received: by 2002:a17:906:5643:b0:b98:132e:ca97 with SMTP id a640c23a62f3a-b982f37d4damr665981666b.47.1774283483001; Mon, 23 Mar 2026 09:31:23 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 07/11] xen: move domain_use_host_layout() to common code Date: Mon, 23 Mar 2026 17:29:48 +0100 Message-ID: <533d01db2b36b8357cd87e99a64a6e66dbdd1db4.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283503291154100 Content-Type: text/plain; charset="utf-8" domain_use_host_layout() is not really architecture-specific, so move it from the Arm header to the common header xen/domain.h and provide a common implementation in xen/common/domain.c. domain_use_host_layout() potentially is needed for x86 [1]. Turn the macro into a function to avoid header dependency issues. In particular, the implementation depends on paging_mode_translate(), and including xen/paging.h from xen/domain.h would introduce circular dependencies via xen/sched.h which will lead to compilation errors as implicit declaration of struct vcpu, or struct domain, or similar things declared in xen/sched.h. Adjust the implementation to take paging_mode_translate() into account so it works correctly for all architectures, including x86. Some extra details about implementation [2] and [3]. Also, inclusion of asm/p2m.h is dropped as xen/paging.h already includes it. [1] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602161038120.359= 097@ubuntu-linux-20-04-desktop/ [2] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602271742400.314= 8344@ubuntu-linux-20-04-desktop/ [3] https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2602271750190.314= 8344@ubuntu-linux-20-04-desktop/ Suggested-by: Stefano Stabellini Signed-off-by: Oleksii Kurochko --- Changes in v2: - Drop ifdef around defintion of domain_use_host_layout() as it was suggested generic version. It could be returned back when the real use case for it will appear. - Add Suggested-by: and update the commit message. - Make domain_use_host_layout() function instead of macros to avoid ciclular header dependecies. Look at more details in the commit message. --- xen/arch/arm/include/asm/domain.h | 14 -------------- xen/common/domain.c | 8 +++++++- xen/include/xen/domain.h | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/d= omain.h index 758ad807e461..1a04fe658c97 100644 --- a/xen/arch/arm/include/asm/domain.h +++ b/xen/arch/arm/include/asm/domain.h @@ -29,20 +29,6 @@ enum domain_type { #define is_64bit_domain(d) (0) #endif =20 -/* - * Is the domain using the host memory layout? - * - * Direct-mapped domain will always have the RAM mapped with GFN =3D=3D MF= N. - * To avoid any trouble finding space, it is easier to force using the - * host memory layout. - * - * The hardware domain will use the host layout regardless of - * direct-mapped because some OS may rely on a specific address ranges - * for the devices. - */ -#define domain_use_host_layout(d) (is_domain_direct_mapped(d) || \ - is_hardware_domain(d)) - struct vtimer { struct vcpu *v; int irq; diff --git a/xen/common/domain.c b/xen/common/domain.c index ab910fcf9306..87a6a17575f9 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -35,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -2544,6 +2544,12 @@ void thaw_domains(void) =20 #endif /* CONFIG_SYSTEM_SUSPEND */ =20 +bool domain_use_host_layout(struct domain *d) +{ + return is_domain_direct_mapped(d) || + (paging_mode_translate(d) && is_hardware_domain(d)); +} + /* * Local variables: * mode: C diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h index 93c0fd00c1d7..68fb1acd4083 100644 --- a/xen/include/xen/domain.h +++ b/xen/include/xen/domain.h @@ -62,6 +62,22 @@ void domid_free(domid_t domid); #define is_domain_direct_mapped(d) ((d)->cdf & CDF_directmap) #define is_domain_using_staticmem(d) ((d)->cdf & CDF_staticmem) =20 +/* + * Is the auto-translated domain using the host memory layout? + * + * domain_use_host_layout() is always False for PV guests. + * + * Direct-mapped domains (autotranslated domains with memory allocated + * contiguously and mapped 1:1 so that GFN =3D=3D MFN) are always using the + * host memory layout to avoid address clashes. + * + * The hardware domain will use the host layout (regardless of + * direct-mapped) because some OS may rely on a specific address ranges + * for the devices. PV Dom0, like any other PV guests, has + * domain_use_host_layout() returning False. + */ +bool domain_use_host_layout(struct domain *d); + /* * Arch-specifics. */ --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283508; cv=none; d=zohomail.com; s=zohoarc; b=Jca6SYY4A/gJLP0X/pbvXxBGpsK4Oaepf0A+xqICNPHhfGeCJ7//P+xysxwYFoNe1gbhAcJKYmShnvqqFDM2GrkGQ+MEL4P1F2C+E56BQBVfoRBniEMJ77t3yhKHghkKxzMdZoTpsVwkzoSlyJp8rcHnz96PHgP+GPYpeuvplyA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283508; 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=r1qaV10ihMFV1jFtGW95X77joTg/NVVxfQDdtdd2358=; b=Tfb8o53fwY0Qa/JRQnvXqOtkkZdltut0DlQBizimmxCVEunDetTUOmrEMgAqAWzbkXxg8A5o/q1CXenU3i8OkmdgIG++iBkGW8WyOsQwL2z/EZmT4eX008FkQzFrS/Duz960QZKgpnn6lNL8GQU2L/QBCgeHXidtuQ7fLCPVWPw= 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 1774283507862273.70251879100704; Mon, 23 Mar 2026 09:31:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259480.1552807 (Exim 4.92) (envelope-from ) id 1w4iBi-000849-B8; Mon, 23 Mar 2026 16:31:34 +0000 Received: by outflank-mailman (output) from mailman id 1259480.1552807; Mon, 23 Mar 2026 16:31:34 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBi-00083t-7n; Mon, 23 Mar 2026 16:31:34 +0000 Received: by outflank-mailman (input) for mailman id 1259480; Mon, 23 Mar 2026 16:31:33 +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 1w4iBh-0005Bu-Fk for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:31:33 +0000 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id bfbc9c21-26d5-11f1-9ccf-f158ae23cfc8; Mon, 23 Mar 2026 17:31:31 +0100 (CET) Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b97ba4c2be2so55769266b.1 for ; Mon, 23 Mar 2026 09:31:31 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.31.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:31:24 -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: bfbc9c21-26d5-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774283490; x=1774888290; 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=r1qaV10ihMFV1jFtGW95X77joTg/NVVxfQDdtdd2358=; b=pVjJ6K/twCoz8DZmff6UFa/z+pgdMFXpITKbM7R9D35D74XzxbC8UpcXJG30WlzvdR h9SFLNoO+xjIIuSJSzRjhgSg7eWlZaUkZ5JtLPuwfj7wSNYwNNioGYb/3hobM7+ILzqo +2R5wn3ayQK+OIhxgoRYfytvSkyfXF6hk0Yq9Gdd/MAC3SCSQPL0EX0EBa1Zjcj2KTXe jpFiQsBvnd5rKD6TKybfCRe7FNssWOJZa5WrSTLsWty/mBbt03PRPc+j1gvzCajNNg8c DJNI7bF8p4RkZqJV8Q5CtJhTwDaCXwJbJ86sLwu3U/D+RFf0uI4GN+pijC2Vk+3qePFG edCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283490; x=1774888290; 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=r1qaV10ihMFV1jFtGW95X77joTg/NVVxfQDdtdd2358=; b=aZOr5MKFWSHj0tGD3OQQdGpMlFQoXuPzhEbbes68DVlja7Oe1U4M5FE+IV3DIpoLJ5 mzfzgaBA4sZDHfvnALCD1PYBS22aTIbA3xY63jVlAdyfadbwx+FAEX4TB8U4xSC4CgDd QqmMEpnDXV1ulWlf1vbaQoyS4uiDQiQVMWArUBJZnC+a6LaxRlfbYmx/sJZB8ovtsYPz uL5fyMhikVb9R01EDYoQ0qA/t4hmCJxLvIsoKj/uVqORUKtNKxguvUK6s0SNke4v95jw 6VXj/B3tclRuar7xKrGMYns6Z4/DrgBd//sBoONUPGuFSTGJKNTvuqGNem05bGIbvY/N 4/Tw== X-Gm-Message-State: AOJu0Yx+SM05TUkSu9VSb76xMMFXusQsbia7T01XQGMbL5r9oxdUYRGc SsE+KqI9D5nJgU+xmxjKV/RCXGnG+zAnrHGCtTI2K17n2wyGZXebizjaMoiC8w== X-Gm-Gg: ATEYQzzMixmuGf4OxOLaBNh0Fzb1ljoWcnPEX1pPTMa8IDgcUtVJu41c4Qn7Ne03HdL XiRx6luMSOMLvXyULvMA9U7q9n+PLHL9StCe5Eh4yQX17Uu8Rpm9WY4xsXYMR3sEcWw0dv1Ax5f 35e+wvuT89Tr9Q/OnxtC+UB8nL1pFH+x6ywPMmnDjUBBGKFSIboMy4Y6svlvMZxzV+jMNKCbWuA KGm0C0J8Mk+l5O6qhucZgmEX5Z/No2iir+dhSvpJIBrqQmS/r+59eMB8AZ+Z7PniyAo+/S5Tb4T B5wFr1mYdjuwj6Mg1CiNjx2uZY6e1QCRNF2tuxLU1NuOfpvzkWWrbkXJNA+woZw7gjaEkU9szZz 6V4ECi96JXolBmo042RYM8bQ9qxaOyQ8/6WFNW3jEhdt6eO149unAByxL1r8zooGvvHrUuYSMEe eo5TKzGlwLyuuwkk8OowUrCl7++CDKj4YY1PDVDeN9BHm9z4pU9/VMoyMEIlMXGB7ZwQ== X-Received: by 2002:a17:907:3f20:b0:b98:53d5:9b20 with SMTP id a640c23a62f3a-b9853d5b03dmr517013766b.12.1774283490285; Mon, 23 Mar 2026 09:31:30 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Rahul Singh , Jan Beulich Subject: [PATCH v2 08/11] xen: rename p2m_ipa_bits to p2m_gpa_bits Date: Mon, 23 Mar 2026 17:29:49 +0100 Message-ID: <05365c2b70147f30fd97a2fe5b7ab66d773c0f32.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283509650158500 Content-Type: text/plain; charset="utf-8" The IPA terminology is Arm-specific, so rename p2m_ipa_bits to p2m_gpa_bits to use architecture-neutral naming. No functional changes. Reported-by: Jan Beulich --- Changes in v2: - New patch --- xen/arch/arm/domain_build.c | 12 ++++++------ xen/arch/arm/domctl.c | 2 +- xen/arch/arm/include/asm/p2m.h | 4 ++-- xen/arch/arm/mmu/p2m.c | 18 +++++++++--------- xen/arch/arm/p2m.c | 6 +++--- xen/common/device-tree/domain-build.c | 2 +- xen/drivers/passthrough/arm/ipmmu-vmsa.c | 4 ++-- xen/drivers/passthrough/arm/smmu-v3.c | 2 +- xen/drivers/passthrough/arm/smmu.c | 2 +- 9 files changed, 26 insertions(+), 26 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index e8795745ddc7..38ab41ec6b19 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -744,7 +744,7 @@ static int __init find_memory_holes(const struct kernel= _info *kinfo, =20 /* Start with maximum possible addressable physical memory range */ start =3D 0; - end =3D (1ULL << p2m_ipa_bits) - 1; + end =3D (1ULL << p2m_gpa_bits) - 1; res =3D rangeset_add_range(mem_holes, PFN_DOWN(start), PFN_DOWN(end)); if ( res ) { @@ -815,7 +815,7 @@ static int __init find_memory_holes(const struct kernel= _info *kinfo, } =20 start =3D 0; - end =3D (1ULL << p2m_ipa_bits) - 1; + end =3D (1ULL << p2m_gpa_bits) - 1; res =3D rangeset_report_ranges(mem_holes, PFN_DOWN(start), PFN_DOWN(en= d), add_ext_regions, ext_regions); if ( res ) @@ -849,7 +849,7 @@ static int __init find_domU_holes(const struct kernel_i= nfo *kinfo, =20 start =3D ROUNDUP(bankbase[i] + kinfo_mem->bank[i].size, SZ_2M); =20 - bankend =3D ~0ULL >> (64 - p2m_ipa_bits); + bankend =3D ~0ULL >> (64 - p2m_gpa_bits); bankend =3D min(bankend, bankbase[i] + banksize[i] - 1); =20 if ( bankend > start ) @@ -881,7 +881,7 @@ static int __init find_domU_holes(const struct kernel_i= nfo *kinfo, } =20 res =3D rangeset_report_ranges(mem_holes, 0, - PFN_DOWN((1ULL << p2m_ipa_bits) - 1), + PFN_DOWN((1ULL << p2m_gpa_bits) - 1), add_ext_regions, ext_regions); if ( res ) ext_regions->nr_banks =3D 0; @@ -907,7 +907,7 @@ static unsigned int __init count_ranges(struct rangeset= *r) { unsigned int cnt =3D 0; =20 - (void) rangeset_report_ranges(r, 0, PFN_DOWN((1ULL << p2m_ipa_bits) - = 1), + (void) rangeset_report_ranges(r, 0, PFN_DOWN((1ULL << p2m_gpa_bits) - = 1), count, &cnt); =20 return cnt; @@ -972,7 +972,7 @@ static int __init find_host_extended_regions(const stru= ct kernel_info *kinfo, } =20 rangeset_report_ranges(kinfo->xen_reg_assigned, 0, - PFN_DOWN((1ULL << p2m_ipa_bits) - 1), + PFN_DOWN((1ULL << p2m_gpa_bits) - 1), rangeset_to_membank, xen_reg); } =20 diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c index ad914c915f81..d8db595ab348 100644 --- a/xen/arch/arm/domctl.c +++ b/xen/arch/arm/domctl.c @@ -23,7 +23,7 @@ void arch_get_domain_info(const struct domain *d, /* All ARM domains use hardware assisted paging. */ info->flags |=3D XEN_DOMINF_hap; =20 - info->gpaddr_bits =3D p2m_ipa_bits; + info->gpaddr_bits =3D p2m_gpa_bits; } =20 static int handle_vuart_init(struct domain *d,=20 diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h index 010ce8c9ebbd..b15b57aa32bd 100644 --- a/xen/arch/arm/include/asm/p2m.h +++ b/xen/arch/arm/include/asm/p2m.h @@ -12,7 +12,7 @@ #define paddr_bits PADDR_BITS =20 /* Holds the bit size of IPAs in p2m tables. */ -extern unsigned int p2m_ipa_bits; +extern unsigned int p2m_gpa_bits; =20 #define MAX_VMID_8_BIT (1UL << 8) #define MAX_VMID_16_BIT (1UL << 16) @@ -186,7 +186,7 @@ static inline bool arch_acquire_resource_check(struct d= omain *d) } =20 /* - * Helper to restrict "p2m_ipa_bits" according the external entity + * Helper to restrict "p2m_gpa_bits" according the external entity * (e.g. IOMMU) requirements. * * Each corresponding driver should report the maximum IPA bits diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c index 51abf3504fcf..08871c61b812 100644 --- a/xen/arch/arm/mmu/p2m.c +++ b/xen/arch/arm/mmu/p2m.c @@ -1734,11 +1734,11 @@ void __init setup_virt_paging(void) } t0sz_32; #else /* - * Restrict "p2m_ipa_bits" if needed. As P2M table is always configured + * Restrict "p2m_gpa_bits" if needed. As P2M table is always configured * with IPA bits =3D=3D PA bits, compare against "pabits". */ - if ( pa_range_info[system_cpuinfo.mm64.pa_range].pabits < p2m_ipa_bits= ) - p2m_ipa_bits =3D pa_range_info[system_cpuinfo.mm64.pa_range].pabit= s; + if ( pa_range_info[system_cpuinfo.mm64.pa_range].pabits < p2m_gpa_bits= ) + p2m_gpa_bits =3D pa_range_info[system_cpuinfo.mm64.pa_range].pabit= s; =20 /* * cpu info sanitization made sure we support 16bits VMID only if all @@ -1748,10 +1748,10 @@ void __init setup_virt_paging(void) max_vmid =3D MAX_VMID_16_BIT; #endif =20 - /* Choose suitable "pa_range" according to the resulted "p2m_ipa_bits"= . */ + /* Choose suitable "pa_range" according to the resulted "p2m_gpa_bits"= . */ for ( i =3D 0; i < ARRAY_SIZE(pa_range_info); i++ ) { - if ( p2m_ipa_bits =3D=3D pa_range_info[i].pabits ) + if ( p2m_gpa_bits =3D=3D pa_range_info[i].pabits ) { pa_range =3D i; break; @@ -1760,7 +1760,7 @@ void __init setup_virt_paging(void) =20 /* Check if we found the associated entry in the array */ if ( pa_range >=3D ARRAY_SIZE(pa_range_info) || !pa_range_info[pa_rang= e].pabits ) - panic("%u-bit P2M is not supported\n", p2m_ipa_bits); + panic("%u-bit P2M is not supported\n", p2m_gpa_bits); =20 #ifdef CONFIG_ARM_64 val |=3D VTCR_PS(pa_range); @@ -1778,14 +1778,14 @@ void __init setup_virt_paging(void) p2m_root_level =3D 2 - pa_range_info[pa_range].sl0; =20 #ifdef CONFIG_ARM_64 - p2m_ipa_bits =3D 64 - pa_range_info[pa_range].t0sz; + p2m_gpa_bits =3D 64 - pa_range_info[pa_range].t0sz; #else t0sz_32.val =3D pa_range_info[pa_range].t0sz; - p2m_ipa_bits =3D 32 - t0sz_32.val; + p2m_gpa_bits =3D 32 - t0sz_32.val; #endif =20 printk("P2M: %d-bit IPA with %d-bit PA and %d-bit VMID\n", - p2m_ipa_bits, + p2m_gpa_bits, pa_range_info[pa_range].pabits, ( MAX_VMID =3D=3D MAX_VMID_16_BIT ) ? 16 : 8); =20 diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index fb03978a19af..5564e7d3c1db 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -19,7 +19,7 @@ unsigned int __read_mostly max_vmid =3D MAX_VMID_8_BIT; * Set to the maximum configured support for IPA bits, so the number of IP= A bits can be * restricted by external entity (e.g. IOMMU). */ -unsigned int __read_mostly p2m_ipa_bits =3D PADDR_BITS; +unsigned int __read_mostly p2m_gpa_bits =3D PADDR_BITS; =20 /* Unlock the flush and do a P2M TLB flush if necessary */ void p2m_write_unlock(struct p2m_domain *p2m) @@ -603,8 +603,8 @@ void __init p2m_restrict_ipa_bits(unsigned int ipa_bits) * Calculate the minimum of the maximum IPA bits that any external ent= ity * can support. */ - if ( ipa_bits < p2m_ipa_bits ) - p2m_ipa_bits =3D ipa_bits; + if ( ipa_bits < p2m_gpa_bits ) + p2m_gpa_bits =3D ipa_bits; } =20 /* diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree= /domain-build.c index 6708c9dd66e6..362da1cae780 100644 --- a/xen/common/device-tree/domain-build.c +++ b/xen/common/device-tree/domain-build.c @@ -220,7 +220,7 @@ int __init find_unallocated_memory(const struct kernel_= info *kinfo, } =20 start =3D 0; - end =3D (1ULL << p2m_ipa_bits) - 1; + end =3D (1ULL << p2m_gpa_bits) - 1; res =3D rangeset_report_ranges(unalloc_mem, PFN_DOWN(start), PFN_DOWN(= end), cb, free_regions); if ( res ) diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthr= ough/arm/ipmmu-vmsa.c index ea9fa9ddf3ce..e2b4c95dcc67 100644 --- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c +++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c @@ -575,11 +575,11 @@ static int ipmmu_domain_init_context(struct ipmmu_vms= a_domain *domain) =20 /* * TTBCR - * We use long descriptors and allocate the whole "p2m_ipa_bits" IPA s= pace + * We use long descriptors and allocate the whole "p2m_gpa_bits" IPA s= pace * to TTBR0. Use 4KB page granule. Start page table walks at first lev= el. * Always bypass stage 1 translation. */ - tsz0 =3D (64 - p2m_ipa_bits) << IMTTBCR_TSZ0_SHIFT; + tsz0 =3D (64 - p2m_gpa_bits) << IMTTBCR_TSZ0_SHIFT; ipmmu_ctx_write_root(domain, IMTTBCR, IMTTBCR_EAE | IMTTBCR_PMB | IMTTBCR_SL0_LVL_1 | tsz0); =20 diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index bf153227dbd9..9e86cd7b0ad0 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -1202,7 +1202,7 @@ static int arm_smmu_domain_finalise_s2(struct arm_smm= u_domain *smmu_domain, return -EINVAL; } =20 - vtcr->tsz =3D 64 - p2m_ipa_bits; + vtcr->tsz =3D 64 - p2m_gpa_bits; vtcr->sl =3D 2 - P2M_ROOT_LEVEL; =20 arm_lpae_s2_cfg.vttbr =3D page_to_maddr(smmu_domain->d->arch.p2m.root); diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/a= rm/smmu.c index 22d306d0cb80..fa28fd7db79c 100644 --- a/xen/drivers/passthrough/arm/smmu.c +++ b/xen/drivers/passthrough/arm/smmu.c @@ -1276,7 +1276,7 @@ static void arm_smmu_init_context_bank(struct arm_smm= u_domain *smmu_domain) * Xen: The IOMMU share the page-tables with the P2M * which may have restrict the size further. */ - reg |=3D (64 - p2m_ipa_bits) << TTBCR_T0SZ_SHIFT; + reg |=3D (64 - p2m_gpa_bits) << TTBCR_T0SZ_SHIFT; =20 switch (smmu->s2_output_size) { case 32: --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283516; cv=none; d=zohomail.com; s=zohoarc; b=NxAbzmxvUo3rJPuWKDjwpGUnn+Oz/dQQQs/KxsPPOyAssQ4MkT0I12Kqted/ZS/JYrlEEA4e+biC9wqDLm/STPA5YvLyCnkyMfKn4K893TCBaWxrNgekNCDl3A9kvATeHHkO8kQm0AbzyvBP/ITcp6IvfQ4/fYal9YUkipKoHsk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283516; 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=zE/rD5OgNgJkWO/wss6LPCSbET9QBlr+zsTkckbS38c=; b=d4bajGyojNpEZMAq/3TIWQNkcS9gZChi1NQb1InY0YuG1e3Bsv2m/cY8Gk1imMYivxPoh/EfnS5+/FXhq33/q6a5uc8YnUgc6S3yrT7MhK4b7J0mbLZ/3WzcgrFEVsOcalvm8/aZHgFMpA7ioUGfdtQykJeCGG0K81NBjV72C9c= 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 177428351622726.109817436600792; Mon, 23 Mar 2026 09:31:56 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259487.1552815 (Exim 4.92) (envelope-from ) id 1w4iBp-0008VJ-Lf; Mon, 23 Mar 2026 16:31:41 +0000 Received: by outflank-mailman (output) from mailman id 1259487.1552815; Mon, 23 Mar 2026 16:31:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBp-0008VC-If; Mon, 23 Mar 2026 16:31:41 +0000 Received: by outflank-mailman (input) for mailman id 1259487; Mon, 23 Mar 2026 16:31:40 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBo-0008TZ-JI for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:31:40 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w4iBm-005v6Z-De for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 17:31:39 +0100 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c16ae6-5cb7-0a2a0a5109dd-0a2a4501b08a-14 for ; Mon, 23 Mar 2026 17:31:39 +0100 Received: from [209.85.218.47] (helo=mail-ej1-f47.google.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c16aeb-6400-0a2a45010019-d155da2fa404-3 for ; Mon, 23 Mar 2026 17:31:39 +0100 Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b93698bb57aso836110966b.0 for ; Mon, 23 Mar 2026 09:31:39 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.31.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:31:32 -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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20230601 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283499; x=1774888299; 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=zE/rD5OgNgJkWO/wss6LPCSbET9QBlr+zsTkckbS38c=; b=VjRa8xur2kIBCZkDMDTb6+7pAb2SX5QydzqluAX+FFbmtyhsK4aEAxdiP1UvbTRx4X 1eMTMRPIckMdn7SAzUltiG2g+wCQNCFfi+xsslcaWC/Pm9twr1KdiLGho5wkN92K/TSb s5Rmv3e8CsYGpydT2TlLLxHAts+b54ovntazA6BOVILMQkURH29tqV5LTXpaKf9YbaAd mM3e4X5HkThrdoJK0by6RLO/6tRhmmiv+YVQ1dqi+RcDT90kK173RdVQGkPhT2imk4tN gj2nQoTmjgfevy1mzJRFewchpU8zU1e9mTMAECV8daDNuKMpBKBeYpfDAqwBvqPipWbD ct4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283499; x=1774888299; 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=zE/rD5OgNgJkWO/wss6LPCSbET9QBlr+zsTkckbS38c=; b=LbBg0vT4tk7aCk1Nhh++fkAEZYnLhSTJ+fQ9PPranJrR8qBwVndPd+wD3Hhwkq5Vtd XgX/4xuwLbY/qcakKttUZEmU7dncNnQr2v+2mjlHo3MhbQToo3h/Rxy0qQL7aB2Illfy 7W2YCaGKUBFW30RAeJ/URM1ZWHbLvNBiyKNcbb0u0yRRSl5TgYCWF5K8HP2nmhhv9Aqq fGLXFXdxWxANeHAS0OmUpOrqXHT81zsT6/W+0H10FjerQC3D8fPsuvBbTck+T6Be48Nw jqGHBBIJ08ngysuovFgNrjW8nnDGR82C7TsU2sy2ySGaUxB0iHZ0OTf48PpnRxpJDtEb GlxA== X-Gm-Message-State: AOJu0YzcTsFg1+o2Xv+oJpVx/NlMTJt02Jc4a9uaw/wBf3nNW+dQMMUK dfz9lYNTeXrLrsSNKsMZZ2osAEn1WwsDhQPdD6LSSmxALFTeys9GqdY3RDIDKQ== X-Gm-Gg: ATEYQzwO6gLDIBiMnSwdRr6lIY2V6cUaGy4rBgxf2ts0LXrfBGG44vRI3FUpUZtYkpI jfKs//8UsekrnUi5mA+tQK0JdaNV3dsPV+sOISQOIFvdVMA7yXoXbXZKOiq1SYYVfsML3FPswi2 M0fgKuk1fE34iMf43J5lHq+TIcT+9qnwWXHQsRPvv+jluxVcvm8vuL/Cqu08TWOSCMbbReXDnum 7zcV/uZfl8JNT7KEWE+g3RbWBsBKYvBICwv1KL7ovJnbiySSuaIc1wItD9uLZHIjd5MdThbPGML ePyj5KUcc7FpWM9Sxg9nATNabqs0YtTZl0VvwaalWP3V5I/Upomxvs3vbJpZn06tZC92/8tHxmu rIRIXY1m2bVKo0jui7ri9qufpMA77K+wXINLCcAqtln1aAJ42J4tQzKu+VXNMaj2VEARjst2Xx+ RMhC2yxhvIY3rb3F9/05An0hS+Zc6udeaUEUKWnbUGlL+oEBE5MYAtbQ9NG4wjsTH1rw== X-Received: by 2002:a17:906:7947:b0:b98:cfa:f54e with SMTP id a640c23a62f3a-b988632193dmr17738966b.12.1774283498891; Mon, 23 Mar 2026 09:31:38 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Alistair Francis , Connor Davis , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 09/11] xen/riscv: introduce p2m_gpa_bits Date: Mon, 23 Mar 2026 17:29:50 +0100 Message-ID: <775374eab7b9868b7cabe6c76fa1b7ac2f8466d8.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d62444/1774283499-8FEEADF3-39222399/0/0 X-purgate-type: clean X-purgate-size: 4473 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283517783158500 Content-Type: text/plain; charset="utf-8" p2m_gpa_bits is used by common/device-tree/domain-build.c thereby when CONFIG_DOMAIN_BUILD_HELPERS=3Dy it is necessary to have p2m_gpa_bits proper= ly defined as it is going to be used to find unused regions. Introduce default_gstage_mode to have ability to limit p2m_gpa_bits before p2m_init() is being called as it will be too late. Limit p2m_gpa_bits in guest_mm_init() as it could be that default G-stage MMU mode uses less VA wide bits than IOMMU, so p2m_gpa_bits should be restricted more so that dom0less code uses the correct GPA bits. Signed-off-by: Oleksii Kurochko --- Changes in v2: - New patch. --- xen/arch/riscv/include/asm/p2m.h | 10 ++++++++-- xen/arch/riscv/p2m.c | 34 ++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/= p2m.h index 54ea67990f06..76b30af8dacb 100644 --- a/xen/arch/riscv/include/asm/p2m.h +++ b/xen/arch/riscv/include/asm/p2m.h @@ -32,10 +32,13 @@ */ #define P2M_LEVEL_ORDER(lvl) XEN_PT_LEVEL_ORDER(lvl) =20 -#define P2M_ROOT_EXTRA_BITS(p2m, lvl) (2 * ((lvl) =3D=3D P2M_ROOT_LEVEL(p2= m))) +#define P2M_ROOT_EXTRA_BITS 2 + +#define P2M_LEVEL_EXTRA_BITS(p2m, lvl) \ + (P2M_ROOT_EXTRA_BITS * ((lvl) =3D=3D P2M_ROOT_LEVEL(p2m))) =20 #define P2M_PAGETABLE_ENTRIES(p2m, lvl) \ - (BIT(PAGETABLE_ORDER + P2M_ROOT_EXTRA_BITS(p2m, lvl), UL)) + (BIT(PAGETABLE_ORDER + P2M_LEVEL_EXTRA_BITS(p2m, lvl), UL)) =20 #define P2M_TABLE_OFFSET(p2m, lvl) (P2M_PAGETABLE_ENTRIES(p2m, lvl) - 1UL) =20 @@ -44,6 +47,9 @@ #define P2M_LEVEL_MASK(p2m, lvl) \ (P2M_TABLE_OFFSET(p2m, lvl) << P2M_GFN_LEVEL_SHIFT(lvl)) =20 +/* Holds the bit size of GPAs in p2m tables */ +extern unsigned int p2m_gpa_bits; + #define paddr_bits PADDR_BITS =20 /* Get host p2m table */ diff --git a/xen/arch/riscv/p2m.c b/xen/arch/riscv/p2m.c index 11beaeead5ac..cd682d6586c7 100644 --- a/xen/arch/riscv/p2m.c +++ b/xen/arch/riscv/p2m.c @@ -51,6 +51,24 @@ static struct gstage_mode_desc __ro_after_init max_gstag= e_mode =3D { .name =3D "Bare", }; =20 +static struct gstage_mode_desc __ro_after_init default_gstage_mode =3D { + .mode =3D HGATP_MODE_SV39X4, + .paging_levels =3D 2, + .name =3D "Sv39x4", +}; + +/* + * Set to the maximum configured support for GPA bits, so the number of GPA + * bits can be restricted by an external entity (e.g. IOMMU) and the + * restriction must happen before the call of guest_mm_init(). + * + * The widest G-stage mode defined by the RISC-V specification is Sv57x4, + * which yields 59-bit GPAs: Sv57 maps 57-bit VAs onto 56-bit PAs (PADDR_B= ITS), + * and the G-stage "x4" extension widens the address space by a further 2 = bits, + * hence PADDR_BITS + 1 + P2M_ROOT_EXTRA_BITS. + */ +unsigned int __ro_after_init p2m_gpa_bits =3D PADDR_BITS + P2M_ROOT_EXTRA_= BITS + 1; + static void p2m_free_page(struct p2m_domain *p2m, struct page_info *pg); =20 static inline void p2m_free_metadata_page(struct p2m_domain *p2m, @@ -191,8 +209,13 @@ static void __init gstage_mode_detect(void) =20 void __init guest_mm_init(void) { + unsigned int gpa_bits; + unsigned int paging_levels =3D default_gstage_mode.paging_levels; + gstage_mode_detect(); =20 + ASSERT(default_gstage_mode.paging_levels <=3D max_gstage_mode.paging_l= evels); + vmid_init(); =20 /* @@ -226,6 +249,11 @@ void __init guest_mm_init(void) * so it could be that we polluted local TLB so flush all guest TLB. */ local_hfence_gvma_all(); + + gpa_bits =3D P2M_GFN_LEVEL_SHIFT(paging_levels + 1) + P2M_ROOT_EXTRA_B= ITS; + + if ( gpa_bits < p2m_gpa_bits ) + p2m_gpa_bits =3D gpa_bits; } =20 /* @@ -363,9 +391,7 @@ int p2m_init(struct domain *d) #endif =20 /* TODO: don't hardcode used for a domain g-stage mode. */ - p2m->mode.mode =3D HGATP_MODE_SV39X4; - p2m->mode.paging_levels =3D 2; - safe_strcpy(p2m->mode.name, "Sv39x4"); + p2m->mode =3D default_gstage_mode; =20 return 0; } @@ -1304,7 +1330,7 @@ static mfn_t p2m_get_entry(struct p2m_domain *p2m, gf= n_t gfn, { unsigned int level =3D P2M_ROOT_LEVEL(p2m); unsigned int gfn_limit_bits =3D - P2M_LEVEL_ORDER(level + 1) + P2M_ROOT_EXTRA_BITS(p2m, level); + P2M_LEVEL_ORDER(level + 1) + P2M_LEVEL_EXTRA_BITS(p2m, level); pte_t entry, *table; int rc; mfn_t mfn =3D INVALID_MFN; --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283518; cv=none; d=zohomail.com; s=zohoarc; b=c1f25TGHmbtp0nsGYAJTBT8Y9tet/xRxqkM4Z/EGa6bBJQsS0EkkVJf/XSWajdwcUMGP1ndjxJdpqJWSa1TkSGU4CY8LLNgbUOUy7epsjoIIh2riCbQqzFOcKzMUrPTIgGMN3X7UM1kzOzGDV5hKnzl4bqUcysW+kZtvihtSspM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283518; h=Content-Type: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=EOnbwZsaenaHLGEXyic0HWfKV8qdUJlJbBSFmXoP4Sk=; b=E7exCVyCx8cGy6LRSNU2jpRkfhBx8CXNiOTy5SqsdMSSwTTDYdpoR+4/NqahDilhSr4MMLyBBRncMAjdM4NdkQReUQUGLX7LZY3LWZo2eoE7WjxGP6c1eksCCBOmAyGVHXGmmFY0OXGpxKbQAhRHy650u6m2egMoxiGgXhcYn4I= 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 1774283518384150.84538681491688; Mon, 23 Mar 2026 09:31:58 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259494.1552825 (Exim 4.92) (envelope-from ) id 1w4iBu-0000Vl-Tc; Mon, 23 Mar 2026 16:31:46 +0000 Received: by outflank-mailman (output) from mailman id 1259494.1552825; Mon, 23 Mar 2026 16:31:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBu-0000Ve-Qh; Mon, 23 Mar 2026 16:31:46 +0000 Received: by outflank-mailman (input) for mailman id 1259494; Mon, 23 Mar 2026 16:31:45 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iBt-0000Td-El for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:31:45 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1w4iBs-00BTb0-Qe for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 17:31:44 +0100 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69c16ac4-bab6-0a2a0a5309dd-0a2a45059858-42 for ; Mon, 23 Mar 2026 17:31:44 +0100 Received: from [209.85.218.54] (helo=mail-ej1-f54.google.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.55.2) (envelope-from ) id 69c16af0-5aeb-0a2a45050019-d155da36c08c-3 for ; Mon, 23 Mar 2026 17:31:44 +0100 Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b9795ca4e6dso669455066b.2 for ; Mon, 23 Mar 2026 09:31:44 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.31.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:31:40 -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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20230601 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283504; x=1774888304; 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=EOnbwZsaenaHLGEXyic0HWfKV8qdUJlJbBSFmXoP4Sk=; b=m+H6ifplzBgQ9/H0Ieq0R+G82U3LC+h1SOZDVVeqfKMOuEudZEIbq/9YJNfivAljHd 9WVEsMH759Q4VsR9yd32OmU53IYno8vdJQcCfUTpaqlzaa1VEe0afW5v6FNpYOij2AuH 4RbiIyhwGHRoyd/H+Yd4h0CPq+DsJgfxt/DiRXJBJvqlP9OvwqJIaOjdHqmxEX5brk1o K2OsnuoFVWEsxAnjuj/+WiOid9EDBAUTq7lWtHkZqNJ6V3L/TgqHSab/YX2hqaHaiWDT VU61K1JCnE6bV7kozvs7I+5CK0ithGuTvnCamukugUlMmDZUJw/AYucTaTLaJq5LzUWA K+oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283504; x=1774888304; 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=EOnbwZsaenaHLGEXyic0HWfKV8qdUJlJbBSFmXoP4Sk=; b=E7/W4bD790XCCGwdv4fS6Kc/XJiQCM4px0Tbb6BtCrnbnRS7C2MzCQZhN91fHK7UHX yri7mWdaRUNUcXL1Go6B6luTe2FIbFvbJaU+dEpqeJ2TXkRpqlWvz41tjXsGcoUUSMJi WiHxx/jp/Ka0PnuhAncxqsoyezlz3p7ci4C5//yaA+dHLeXmoYWjJoyqoSgPJHg6Sf2O WCP3cRpIoRLrIH7mtOVhB+QObbyRNmV6FpMmzLAjGIuOZIPiy89bLiwEXkoplmr6xuZ7 eZLqUus1YDpuXJ1HbxD0Ai4QsldsFhWk0vbxxYRnOrVehY5qHSMwQI7Ds6Y0/7TYD5nH UF8A== X-Gm-Message-State: AOJu0Yw0ZIMStjDucVlkiSuIYFw44BUe4tZ6D9h6Q6bso/6JYgFNdHyp 3U3QduD+vRYxg43hEhtSgScheuczF3/e2gl4SXLFKq4dpVXGeM2i0RKq4BbIiQ== X-Gm-Gg: ATEYQzzu2pc7VZPiruoKh6o58XyOImvJZYP4ewWB5w8uvOHXbaZmmTpy61P/xd6mpUL JNNEHaLdPqow2oF4IYglxmOIyaxWwnMf6BueGeSfFWI6QjK7xCn3V1m1CFXiO98AVmNCT49Ix37 YQX300Kq4mPia/4jzAbn7nuIjG9bp2N9uygRf5UAj60RetlWBebsfFVOpqO6K39vuo0ntJHUNvU tMusQwfpYb6A6qmL86M6amhO55kID/ErNNwkIIr4+9D4FnuSZev6wjw8u7cl4+maar+VWAqjwit Mt8UuRNTD8OGvnaD2lPJ06L1ZCrUuwm/ROvTs+kHGkYYUi7nD2cpnpp/l9MKRNOdXElXvlQA3xN dtb0nf+p7ooBeRcZHXvt1m51v/7ceKj7/MQaRKYKdGUJaBY0XLiwbNwaN1APFKUn4HyRuoXM6Hy hcneqbXZPhcuky3DyafR/sLUSPddAgf+M9PpPleJkWp1qNlEOJeoATfJ8ltEn43ZSDTw== X-Received: by 2002:a17:906:e07:b0:b96:e0b1:ccf4 with SMTP id a640c23a62f3a-b982f3976bbmr717098966b.47.1774283503806; Mon, 23 Mar 2026 09:31:43 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks Date: Mon, 23 Mar 2026 17:29:51 +0100 Message-ID: <8278256f3d270b456d19cb9891b89b88a46548a5.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-c201ff/1774283504-82F45488-BC60FBE2/0/0 X-purgate-type: clean X-purgate-size: 2333 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283519431154100 The dom0less solution uses defined RAM banks as compile-time constants, so introduce macros to describe guest RAM banks. The reason for 2 banks is that there is typically always a use case for low memory under 4 GB, but the bank under 4 GB ends up being small because there are other things under 4 GB it can conflict with (interrupt controller, PCI BARs, etc.). So a second bank is added above that MMIO region (starting at 8 GiB) to provide the remaining RAM; the gap between the two banks also exercises code paths handling discontiguous memory. For Sv32 guests (34-bit GPA, 16 GiB addressable), bank0 provides 2 GB (2=E2=80=934 GB) and the first 8 GB of bank1 (8=E2=80=9316 GB) is accessibl= e. Extended regions are useful for RISC-V: they could be used to provide a "space" for Linux to map grant mappings. Despite the fact that for every guest MMU mode the GPA could be up to 56 bits wide (except Sv32 whose GPA is 34 bits), the combined size of both banks is limited to 1018 GB as it is more than enough for most use cases. Signed-off-by: Oleksii Kurochko --- Changes in v2: - New patch. --- xen/include/public/arch-riscv.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/xen/include/public/arch-riscv.h b/xen/include/public/arch-risc= v.h index 360d8e6871ba..f14ff4c2d14e 100644 --- a/xen/include/public/arch-riscv.h +++ b/xen/include/public/arch-riscv.h @@ -50,6 +50,22 @@ typedef uint64_t xen_ulong_t; =20 #if defined(__XEN__) || defined(__XEN_TOOLS__) =20 +#define GUEST_RAM_BANKS 2 + +/* + * The way to find the extended regions (to be exposed to the guest as unu= sed + * address space) relies on the fact that the regions reserved for the RAM + * below are big enough to also accommodate such regions. + */ +#define GUEST_RAM0_BASE xen_mk_ullong(0x80000000) /* 2GB of low RAM @ 2G= B */ +#define GUEST_RAM0_SIZE xen_mk_ullong(0x80000000) + +#define GUEST_RAM1_BASE xen_mk_ullong(0x0200000000) /* 1016 GB of RAM @ = 8GB */ +#define GUEST_RAM1_SIZE xen_mk_ullong(0xFE00000000) + +#define GUEST_RAM_BANK_BASES { GUEST_RAM0_BASE, GUEST_RAM1_BASE } +#define GUEST_RAM_BANK_SIZES { GUEST_RAM0_SIZE, GUEST_RAM1_SIZE } + struct vcpu_guest_context { }; typedef struct vcpu_guest_context vcpu_guest_context_t; --=20 2.53.0 From nobody Mon Mar 23 19:50:46 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=1774283524; cv=none; d=zohomail.com; s=zohoarc; b=E35T67wFFiZZd1xL/GU5cwCiWQbBvShPGQt5k3VsspFvfDxOEsx0nb0nKyR5nCMdacW6GoXIl6iTNdd16NRniAYJnJqip57a+XrCPwt4Vc/YdlOcaYbjnqt6SHoJ9wBFqlQGuhByf5hIEckZUP+JBu9ZSmMjhkMuV5X8KUAOItE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774283524; 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=RMI2TSXemPnTPjqj7KVuKJpiKREscd9/P5Ya9QFAfVg=; b=TLtTNkEZU5vH71OF30thlftC4fg8+M9SxFtNzWTDjf5jPGux75du1/CTeMIabm/Wy11Z6XjQU1I79CSWiCghvYPxlpqkMLabeY5v8sTHvSZkcXu+/UFJVf3CJ93Bdc+taSZjz+kUSYvwMKTPaed+mqo8gd6NZLs5sbiJhzGd4JA= 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 1774283524680442.9796532959018; Mon, 23 Mar 2026 09:32:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1259498.1552834 (Exim 4.92) (envelope-from ) id 1w4iC0-0000uD-4e; Mon, 23 Mar 2026 16:31:52 +0000 Received: by outflank-mailman (output) from mailman id 1259498.1552834; Mon, 23 Mar 2026 16:31:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w4iC0-0000u6-1R; Mon, 23 Mar 2026 16:31:52 +0000 Received: by outflank-mailman (input) for mailman id 1259498; Mon, 23 Mar 2026 16:31:50 +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 1w4iBy-0005Bu-TE for xen-devel@lists.xenproject.org; Mon, 23 Mar 2026 16:31:50 +0000 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id ca65196c-26d5-11f1-9ccf-f158ae23cfc8; Mon, 23 Mar 2026 17:31:49 +0100 (CET) Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b7cf4a975d2so51729466b.2 for ; Mon, 23 Mar 2026 09:31:49 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8be14sm536248166b.17.2026.03.23.09.31.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 09:31:45 -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: ca65196c-26d5-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774283508; x=1774888308; 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=RMI2TSXemPnTPjqj7KVuKJpiKREscd9/P5Ya9QFAfVg=; b=jPYy5kxLwecoyRMJVPK+ih/GfoiAzKnSMBQAwSQA4/9L54IhqLuL37agnsldzmJtEM R/gG8lX/S9ThO/XMCm4kkOZAYcNdxsW/klSE5/YKvC3PFkwbP6BZE2//zriZsqzE3i9G 6O0ObcDiLOrw5eDtWY52xz8s40Ly1evPML1MkgNxRaTmKtiePbg1mVJ78qKE649Gk9mS iqiGtzrwrJSV0yqNz8jm1Ng4sA5hEc+8i0dMI+7CLcBumYj9cBc6axXHV2FEu+ARbu53 SU5Km7CAzXcQCXtEVr6vXtXNdLPAKiF1qYL5BR/i89hCKxY5pemyGkzAJp6u0qq/NDXK eb2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774283508; x=1774888308; 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=RMI2TSXemPnTPjqj7KVuKJpiKREscd9/P5Ya9QFAfVg=; b=XceWQfgVzLm8KlM1aZSWGqorUz9erpYYg+AusUkFPsd0UG0BMOTRP/5v2B1wrjoPQC PpO8/qceeq0/+SMCwc5Pq/r/iSjxLhni6ZzehM8lbh0v4sB09B+PTCgRCbzzzB/N7rIl st4pTUS3LKStmfYumUUDtwLk9/knX3PV6bnja7CDIpZpVXr14GqohG3RJXGmTVl7iHY0 skml3OuytqYvrnlUDZ39vWa31TI8KdBvAQtfqRdHJUubCM3JYOCSDJLRAqUzgRpM4A5U UwwZo2b2/0HR4/nobkLisMVYZgphCW76ORcVbl0Ij0LPA7d0jMXSgcPxFUB0iahSjPuZ L5PQ== X-Gm-Message-State: AOJu0Yz+4zjbc2rqpJJB7q5Ssme7ki/HUj5g9vztdtgWfXGo3LABdAnA 7EGnAhcqc11Kx+He/KQozb4D8AO47PXOtUeeoDVmoiDEwX+KpEhx27DvYXAGGA== X-Gm-Gg: ATEYQzxdBLGgEeU0NNKg4DBjWpTwnOPOK0IGf5O4Qy+V8AYiNa5cp7yF/853WeGss0e reDUzkirVnSU8DnuEcTPdfdBXuSMRY55cD1smwU0uXFXpLc0XpfDgAIHu2Qbri0Cni/eYAdd94y sHHw10cH+OVEIwhgd4bm3t33gUFLwTdvdM3glhyJhTkNEW3ldeT0u57kAuQ4RpDPelxCA+5o1gS vrZPfaHS6gwwFMpImcco7dDW9D1orAecOCVG+0uPURUDZtCPAW4ynrs4e1IyVY0KTv55q2m8vdI 6IwIht+h6HrMXKJgII7z4kai26j7NQLJ/e8LRezN5kyO3QNZOoc89gH5xMq8Auod2peMdvGIJ/4 KQFKgu2YkHlnPI2r+MsrnVdPJEasMtZZpz4yiaIM0dFqBClzV8HE0MpygZw96pD3nGkSX1d5N38 T5N54gAqb/KZZBgR5er0Wb7/S0YObgC2wUDPtLBfVTOdQT+2uW+iC/tDkw89ZwM4LlVQ== X-Received: by 2002:a17:907:174b:b0:b98:cb6:e896 with SMTP id a640c23a62f3a-b982f3df694mr736739566b.38.1774283508208; Mon, 23 Mar 2026 09:31:48 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Romain Caritey , Oleksii Kurochko , Alistair Francis , Connor Davis , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 11/11] xen/riscv: enable DOMAIN_BUILD_HELPERS Date: Mon, 23 Mar 2026 17:29:52 +0100 Message-ID: <7cd07d4faa06152795f753bd0cac69cb59e4675b.1774281309.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1774283525418154100 Content-Type: text/plain; charset="utf-8" Everything is ready to enable DOMAIN_BUILD_HELPER which are necessary for dom0less common code. So enable it. Signed-off-by: Oleksii Kurochko --- Changes in v2: - Move introduction of p2m_ipa_bits to separate patch. Also: - do rename of it to p2m_gpa_bits to follow moe arch-neutral naming. - use __ro_after_init for p2m_gpa_bits; - initialize p2m_gpa_bits in guest_mm_init and update if necessary in p2m_init(). - Move to separate patch introduction of guest banks constansts. --- xen/arch/riscv/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/xen/arch/riscv/Kconfig b/xen/arch/riscv/Kconfig index a5e87c1757f7..41426c205292 100644 --- a/xen/arch/riscv/Kconfig +++ b/xen/arch/riscv/Kconfig @@ -1,5 +1,6 @@ config RISCV def_bool y + select DOMAIN_BUILD_HELPERS select FUNCTION_ALIGNMENT_16B select GENERIC_BUG_FRAME select GENERIC_UART_INIT --=20 2.53.0