|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] xen/arm: Factor out construct_hwdom()
commit 659da11304665eed38a5d02ee80ed0881cb3eb9b
Author: Jason Andryuk <jason.andryuk@xxxxxxx>
AuthorDate: Mon Mar 10 09:53:51 2025 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Mar 10 09:53:51 2025 +0100
xen/arm: Factor out construct_hwdom()
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>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
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 d4570bc0b4..7cc141ef75 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);
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |