From nobody Tue Dec 16 08:36:01 2025 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=1747146594; cv=none; d=zohomail.com; s=zohoarc; b=mk8+rXWQz+H6y9AU7KZxJPGtB+RFtH/DP/1xk3nzPy1xgvnWB0MuwOXfQHqNVd3On7Hq/ki21KTUc6exeN8s+TI53jxPRn0f2Yqyj5xpE9GorIDUV2Qvq8BBS3lzKLvMSms7nzNnDiDObqdEO67OKkE7LQqRUBoO5sQ//4Niam8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747146594; 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=0mmaIut+bB6JzVtawKv0l2+/AbruT3la6NzpbEBxjqw=; b=TWJgkyMf8okILHtBRC4mWMIi0f0w2HM6AqcjeNbufDZsWEVyd37kyAt+i4c6aNbRpvGKBCuMYXIORN/zAgzn525qLfEfDfP650TL+EAAwAY0KP7XZWmarA4J4dkuV1Bx0X962w4ZMUlW2WerrJPCPk0i71r4k72qvOna7PnuNGk= 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 1747146594364530.8372480154421; Tue, 13 May 2025 07:29:54 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.982931.1369309 (Exim 4.92) (envelope-from ) id 1uEqdV-0004AB-4e; Tue, 13 May 2025 14:29:37 +0000 Received: by outflank-mailman (output) from mailman id 982931.1369309; Tue, 13 May 2025 14:29:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uEqdU-00049H-T7; Tue, 13 May 2025 14:29:36 +0000 Received: by outflank-mailman (input) for mailman id 982931; Tue, 13 May 2025 14:29:35 +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 1uEqdT-0003s1-9o for xen-devel@lists.xenproject.org; Tue, 13 May 2025 14:29:35 +0000 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [2a00:1450:4864:20::530]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id b0f338a9-3006-11f0-9eb6-5ba50f476ded; Tue, 13 May 2025 16:29:34 +0200 (CEST) Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-5f624291db6so9681958a12.3 for ; Tue, 13 May 2025 07:29:34 -0700 (PDT) Received: from fedora.. (user-109-243-64-38.play-internet.pl. [109.243.64.38]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad2197ca2b4sm778952466b.160.2025.05.13.07.29.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 May 2025 07:29: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" X-Inumbo-ID: b0f338a9-3006-11f0-9eb6-5ba50f476ded DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747146574; x=1747751374; 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=0mmaIut+bB6JzVtawKv0l2+/AbruT3la6NzpbEBxjqw=; b=LoSvhdw5nehZHzk/8Jbvg+yaSZYHJ5puIV0R+IWzpC4UF1ASRTYcLvsbR+We6J8Yew kRxEgt1UFlnbJKCfHnJnmqLralp1dlcyRiKpNnZlhOBMz/nUM1+uV22gFZjrh7ZNk74e Oh5bCZ3Y18YFnC+3zS/ElUnPBgwZggwrkZMPcNX9qsZm5XDCfKW0EcXVDZzJXKlObXYT /Bg0cxbBv9tbK4nzqJrNzZoVxdlWKk2zWaI5PpRTwVAXxFBNfNOeXAo/29uuZq3Puxqe xrU9vyu71oYAMkWvHKXXdEtudGl4uChDxOQ+BM+H7EWOlsvt5cfG6XnhlVrJZn5lIYjq S5gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747146574; x=1747751374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0mmaIut+bB6JzVtawKv0l2+/AbruT3la6NzpbEBxjqw=; b=Myx4AHioa1TR2F9vFuDgwnjAAnTcnPtPDUErRnZsBNnajLh4fHwSf7JFeABTfOp/DY gT2WD0G512lEE+Tbt5DdPKAcw+NKATfmWejgdS2KZQNJiPB9wI4zc6UTCnOH0aIPZLm0 sj+HN0GQV6TUCq8iOt26MDLOUlEGUyqEyZGWCKYjNnrZzHSOD0wsc5oxe08dPnKxvtvG 6y8YF3cPUAVn/kaOpGCQDofPF2iymRvMgHwI/VkOqJkYHmyQGsEoOvyqttpIWXZPH0uD qBXihwLhDDrz5XIfpXblmk/jz6YnlWtus4OoKsZ7fyvkhJxwTawS2AVzKRlR1FDy7i9O itag== X-Gm-Message-State: AOJu0YxhyZvAtD6ts61LAMgr68fNxwOx3Y4o/N58KIWgWahxxlajTWoF Dq4FrYiv1VyL/XXXXjuL27MAmHOkA4eg8egEh5LI2LAAD7yNrSzB0o5nxg== X-Gm-Gg: ASbGnctOwZaKI+uBxjAZbXCCgNm7+HGHO+1LEuuqbUo0BEut50puyZU1TxISCOtbbMO 0MFU61PzIPbN0TZNRtp8gvpampeuuUFD5SOdZz14khovWCINoV0PcIR9gPtGB5OxUd3lU2alowp B6v9VsD3UvQBKwf7jB/VuzbZdm4A71WxIW0pJC8lGM2e+ZuGbt5zXl02rREOfOsy93rzwmCS1hE idFIZZxKTqQZM+tpQXG+ZxWjd9PSJuE0MIU9pbZMDEmcIQuJ5O8A5VSUAhal0Jh/2Y4NDzNSwFP GyamcGo2iqULEJVXui5T/xl7NArvwKRgiF+dnKblGPfwutiZZxSYG7I/cXyQFpVgVllxf6y5BL1 mzmx7KJFZXVJ2iNz2xA== X-Google-Smtp-Source: AGHT+IEh0F5gqDJkUU+wGo+FupnzK7UMqX/dMJXfIaRgV/WqRtMGo+DSihPvLfiV3rLxnGcd9eWeTQ== X-Received: by 2002:a17:907:6d12:b0:ad2:5021:bf3c with SMTP id a640c23a62f3a-ad25021dcbcmr904419866b.52.1747146572983; Tue, 13 May 2025 07:29:32 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: 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 v1 2/3] xen/dom0less: refactor architecture-specific DomU construction Date: Tue, 13 May 2025 16:29:27 +0200 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747146595218116600 Content-Type: text/plain; charset="utf-8" Refactor construct_domU() to improve architecture separation and reduce reliance on ARM-specific logic in common code: - Drop set_domain_type() from generic code. This function is specific to ARM and serves no purpose on other architectures like RISC-V, which lack the arch.type field in kernel_info. - Introduce arch_construct_domU() to encapsulate architecture-specific DomU construction steps. - Implement arch_construct_domU() for ARM. This includes: - Setting the domain type for CONFIG_ARM64. - Handling static memory allocation if xen,static-mem is present in the device tree. - Processing static shared memory. - Move call of make_resv_memory_node() to Arm's make_arch_nodes() as this call is specific to CONFIG_STATIC_SHM which is ARM specific, at least, now. This cleanup avoids empty stubs on other architectures and moves ARM-specific logic into arch code where it belongs. Also, don't loose a return value of functions called in Arm's make_arch_nodes(). Suggested-by: Michal Orzel Signed-off-by: Oleksii Kurochko Reviewed-by: Michal Orzel Reviewed-by: Stefano Stabellini --- xen/arch/arm/dom0less-build.c | 42 +++++++++++++++++------- xen/common/device-tree/dom0less-build.c | 30 ++--------------- xen/include/asm-generic/dom0less-build.h | 3 +- 3 files changed, 36 insertions(+), 39 deletions(-) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index a49764f0ad..592173268f 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -220,9 +220,14 @@ int __init make_arch_nodes(struct kernel_info *kinfo) { int ret; =20 + ret =3D make_resv_memory_node(kinfo, GUEST_ROOT_ADDRESS_CELLS, + GUEST_ROOT_SIZE_CELLS); + if ( ret ) + return ret; + ret =3D make_psci_node(kinfo->fdt); if ( ret ) - return -EINVAL; + return ret; =20 if ( kinfo->arch.vpl011 ) { @@ -230,26 +235,41 @@ int __init make_arch_nodes(struct kernel_info *kinfo) ret =3D make_vpl011_uart_node(kinfo); #endif if ( ret ) - return -EINVAL; + return ret; } =20 return 0; } =20 -/* TODO: make arch.type generic ? */ -#ifdef CONFIG_ARM_64 -void __init set_domain_type(struct domain *d, struct kernel_info *kinfo) +int __init arch_construct_domU(struct kernel_info *kinfo, + const struct dt_device_node *node) { + int rc =3D 0; + struct domain *d =3D kinfo->d; + +#ifdef CONFIG_ARM_64 /* type must be set before allocate memory */ d->arch.type =3D kinfo->arch.type; -} -#else -void __init set_domain_type(struct domain *d, struct kernel_info *kinfo) -{ - /* Nothing to do */ -} #endif =20 + if ( !is_hardware_domain(d) ) + { + if ( dt_find_property(node, "xen,static-mem", NULL) ) + { + if ( !is_domain_direct_mapped(d) ) + allocate_static_memory(d, kinfo, node); + else + assign_static_memory_11(d, kinfo, node); + } + + rc =3D process_shm(d, kinfo, node); + if ( rc < 0 ) + return rc; + } + + return rc; +} + int __init init_vuart(struct domain *d, struct kernel_info *kinfo, const struct dt_device_node *node) { diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr= ee/dom0less-build.c index 2c56f13771..f6aabc2093 100644 --- a/xen/common/device-tree/dom0less-build.c +++ b/xen/common/device-tree/dom0less-build.c @@ -28,14 +28,6 @@ #include #include =20 -#if __has_include() -# include -#endif - -#if __has_include() -# include -#endif - #define XENSTORE_PFN_LATE_ALLOC UINT64_MAX =20 static domid_t __initdata xs_domid =3D DOMID_INVALID; @@ -507,12 +499,6 @@ static int __init prepare_dtb_domU(struct domain *d, s= truct kernel_info *kinfo) if ( ret ) goto err; =20 -#ifdef CONFIG_STATIC_SHM - ret =3D make_resv_memory_node(kinfo, addrcells, sizecells); - if ( ret ) - goto err; -#endif - /* * domain_handle_dtb_bootmodule has to be called before the rest of * the device tree is generated because it depends on the value of @@ -787,7 +773,9 @@ static int __init construct_domU(struct domain *d, if ( rc < 0 ) return rc; =20 - set_domain_type(d, &kinfo); + rc =3D arch_construct_domU(&kinfo, node); + if ( rc ) + return rc; =20 if ( is_hardware_domain(d) ) { @@ -799,18 +787,6 @@ static int __init construct_domU(struct domain *d, { if ( !dt_find_property(node, "xen,static-mem", NULL) ) allocate_memory(d, &kinfo); -#ifdef CONFIG_STATIC_MEMORY - else if ( !is_domain_direct_mapped(d) ) - allocate_static_memory(d, &kinfo, node); - else - assign_static_memory_11(d, &kinfo, node); -#endif - -#ifdef CONFIG_STATIC_SHM - rc =3D process_shm(d, &kinfo, node); - if ( rc < 0 ) - return rc; -#endif =20 rc =3D init_vuart(d, &kinfo, node); if ( rc < 0 ) diff --git a/xen/include/asm-generic/dom0less-build.h b/xen/include/asm-gen= eric/dom0less-build.h index e0ad0429ec..78142e71ca 100644 --- a/xen/include/asm-generic/dom0less-build.h +++ b/xen/include/asm-generic/dom0less-build.h @@ -56,7 +56,8 @@ int init_vuart(struct domain *d, struct kernel_info *kinf= o, int make_intc_domU_node(struct kernel_info *kinfo); int make_arch_nodes(struct kernel_info *kinfo); =20 -void set_domain_type(struct domain *d, struct kernel_info *kinfo); +int arch_construct_domU(struct kernel_info *kinfo, + const struct dt_device_node *node); =20 int init_intc_phandle(struct kernel_info *kinfo, const char *name, const int node_next, const void *pfdt); --=20 2.49.0