On 2024-11-15 08:11, Daniel P. Smith wrote:
With all the components used to construct dom0 encapsulated in struct boot_info
and struct boot_module, it is no longer necessary to pass all them as
parameters down the domain construction call chain. Change the parameter list
to pass the struct boot_info instance and the struct domain reference.
Signed-off-by: Daniel P. Smith <[email protected]>
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 3dd913bdb029..d1bdf1b14601 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -1300,16 +1301,26 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain
*d)
}
}
-int __init dom0_construct_pvh(struct domain *d, const module_t *image,
- unsigned long image_headroom,
- module_t *initrd,
- const char *cmdline)
+int __init dom0_construct_pvh(struct boot_info *bi, struct domain *d)
{
paddr_t entry, start_info;
+ struct boot_module *image;
+ struct boot_module *initrd = NULL;
+ unsigned int idx;
int rc;
printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
+ idx = first_boot_module_index(bi, BOOTMOD_KERNEL);
+ if ( idx >= bi->nr_modules )
What do you think about introducing a new define:
#define BOOTMOD_NOT_FOUND (MAX_NR_BOOTMODS + 1)
For first_boot_module_index() to return. And then:
if ( idx == BOOTMOD_NOT_FOUND )
?
Otherwise it looks good to me, and Andrew's suggestions are good as well.
Regards,
Jason
+ panic("Missing kernel boot module for %pd construction\n", d);
+
+ image = &bi->mods[idx];
+
+ idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
+ if ( idx < bi->nr_modules )
+ initrd = &bi->mods[idx];
+
if ( is_hardware_domain(d) )
{
/*
@@ -1347,8 +1358,7 @@ int __init dom0_construct_pvh(struct domain *d, const
module_t *image,