[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 02/23] xen/arm: Factor out construct_hwdom()


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Jason Andryuk <jason.andryuk@xxxxxxx>
  • Date: Thu, 6 Mar 2025 17:03:22 -0500
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=q7tJj+JfWBdt+nWeZjIonJo3rxvFv7v9MKH7jCHgkek=; b=U4mANfbnBSXMZ7SqWmjgps3gwAvdhhsLteTmFUv0FyJ1JrdS3K8O5YKKy3CUB5Hxpa4cEmdORaxf3ywYcgWPhMqpESnWTzqwVZP/C7M71/Y90lebgtu4EFQfLY4z78Gox1Z4WdaeM1ocdWNDVGPobutbcnp1s7YM9x4XEzrwN5+FvDyBooyfB9dGbtWWQOPhiQjGqdGeP95LhmjzH513v15uLfNzx894W1vz7Ova1c+x1bh3ZhsBjuZZeuydVtyrD6iCPv8XoqzGwAlC6FUJ5FLFiNTEk6LftTkxIb2I5/ifeQ/azN0zSu7Zgw2dBXqhxKU9zPj1+XJd0VQo46nU6A==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q3kh9HXqs3aLbsJPWEW2+pEOknZmI+NliByurJllSUbmXZpvz5khSM9+q/RVyh/ifju9Xwj4FksJzygBX4sgK+17b7WtPNYhsDFFrVHVp0N8Bs3sxCAdqa2+ZSN/6tzXbpEYwW2ca4f2tvLmdRqpuppclCQQ6xRNSWq6bANbfCORymJBNTZNWF20nIlrrCnMWWcNhQf9JQ7CWS1QRPlmlzUe9LkLuBBOYmaM8ESWkR6OB3fGRAe3NeDzwQZVuVjjMETuKXIunV3em/25w7efPrMZkhh/EmYt69lmh4+hiwPoS2Yb3/djNi5yKNbolpllaHPYgQGL5xyFAjvyMfuYQw==
  • Cc: Jason Andryuk <jason.andryuk@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, "Volodymyr Babchuk" <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 06 Mar 2025 22:04:00 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Factor out construct_hwdom() from construct_dom0().  This will be
re-used by the dom0less code when building a domain with the hardware
capability.

iommu_hwdom_init(d) is moved into construct_hwdom() which moves it after
kernel_probe().  kernel_probe() doesn't seem to depend on its setting.

Signed-off-by: Jason Andryuk <jason.andryuk@xxxxxxx>
---
 xen/arch/arm/domain_build.c             | 28 ++++++++++++++++---------
 xen/arch/arm/include/asm/domain_build.h |  1 +
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 6784ee6f6d..d676422496 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -2296,8 +2296,6 @@ static int __init construct_dom0(struct domain *d)
         dom0_mem = MB(512);
     }
 
-    iommu_hwdom_init(d);
-
     d->max_pages = dom0_mem >> PAGE_SHIFT;
 
     kinfo.unassigned_mem = dom0_mem;
@@ -2307,17 +2305,27 @@ static int __init construct_dom0(struct domain *d)
     if ( rc < 0 )
         return rc;
 
+    return construct_hwdom(&kinfo);
+}
+
+int __init construct_hwdom(struct kernel_info *kinfo)
+{
+    struct domain *d = kinfo->d;
+    int rc;
+
+    iommu_hwdom_init(d);
+
 #ifdef CONFIG_ARM_64
     /* type must be set before allocate_memory */
-    d->arch.type = kinfo.type;
+    d->arch.type = kinfo->type;
 #endif
-    find_gnttab_region(d, &kinfo);
+    find_gnttab_region(d, kinfo);
     if ( is_domain_direct_mapped(d) )
-        allocate_memory_11(d, &kinfo);
+        allocate_memory_11(d, kinfo);
     else
-        allocate_memory(d, &kinfo);
+        allocate_memory(d, kinfo);
 
-    rc = process_shm_chosen(d, &kinfo);
+    rc = process_shm_chosen(d, kinfo);
     if ( rc < 0 )
         return rc;
 
@@ -2332,7 +2340,7 @@ static int __init construct_dom0(struct domain *d)
 
     if ( acpi_disabled )
     {
-        rc = prepare_dtb_hwdom(d, &kinfo);
+        rc = prepare_dtb_hwdom(d, kinfo);
         if ( rc < 0 )
             return rc;
 #ifdef CONFIG_HAS_PCI
@@ -2340,12 +2348,12 @@ static int __init construct_dom0(struct domain *d)
 #endif
     }
     else
-        rc = prepare_acpi(d, &kinfo);
+        rc = prepare_acpi(d, kinfo);
 
     if ( rc < 0 )
         return rc;
 
-    return construct_domain(d, &kinfo);
+    return construct_domain(d, kinfo);
 }
 
 void __init create_dom0(void)
diff --git a/xen/arch/arm/include/asm/domain_build.h 
b/xen/arch/arm/include/asm/domain_build.h
index 5d77af2e8b..134290853c 100644
--- a/xen/arch/arm/include/asm/domain_build.h
+++ b/xen/arch/arm/include/asm/domain_build.h
@@ -13,6 +13,7 @@ bool allocate_bank_memory(struct kernel_info *kinfo, gfn_t 
sgfn,
                           paddr_t tot_size);
 void allocate_memory(struct domain *d, struct kernel_info *kinfo);
 int construct_domain(struct domain *d, struct kernel_info *kinfo);
+int construct_hwdom(struct kernel_info *kinfo);
 int domain_fdt_begin_node(void *fdt, const char *name, uint64_t unit);
 int make_chosen_node(const struct kernel_info *kinfo);
 int make_cpus_node(const struct domain *d, void *fdt);
-- 
2.48.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.