Message ID | 20241006214956.24339-40-dpsmith@apertussolutions.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Boot modules for Hyperlaunch | expand |
On 2024-10-06 17:49, Daniel P. Smith wrote: > Add a domid field to struct boot_domain to hold the assigned domain id for the > domain. During initialization, ensure all instances of struct boot_domain have > the invalid domid to ensure that the domid must be set either by convention or > configuration. > > Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
On 2024-10-06 17:49, Daniel P. Smith wrote: > Add a domid field to struct boot_domain to hold the assigned domain id for the > domain. During initialization, ensure all instances of struct boot_domain have > the invalid domid to ensure that the domid must be set either by convention or > configuration. > > Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> > --- > xen/arch/x86/include/asm/bootdomain.h | 2 ++ > xen/arch/x86/setup.c | 12 +++++++----- > 2 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h > index 4285223ac5ab..d6264d554dba 100644 > --- a/xen/arch/x86/include/asm/bootdomain.h > +++ b/xen/arch/x86/include/asm/bootdomain.h > @@ -11,6 +11,8 @@ > struct boot_module; > > struct boot_domain { > + domid_t domid; > + > struct boot_module *kernel; > struct boot_module *ramdisk; > }; Oh, you should probably move domid after the pointers to avoid a hole. Regards, Jason
On 08.10.2024 21:36, Jason Andryuk wrote: > On 2024-10-06 17:49, Daniel P. Smith wrote: >> Add a domid field to struct boot_domain to hold the assigned domain id for the >> domain. During initialization, ensure all instances of struct boot_domain have >> the invalid domid to ensure that the domid must be set either by convention or >> configuration. >> >> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> >> --- >> xen/arch/x86/include/asm/bootdomain.h | 2 ++ >> xen/arch/x86/setup.c | 12 +++++++----- >> 2 files changed, 9 insertions(+), 5 deletions(-) >> >> diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h >> index 4285223ac5ab..d6264d554dba 100644 >> --- a/xen/arch/x86/include/asm/bootdomain.h >> +++ b/xen/arch/x86/include/asm/bootdomain.h >> @@ -11,6 +11,8 @@ >> struct boot_module; >> >> struct boot_domain { >> + domid_t domid; >> + >> struct boot_module *kernel; >> struct boot_module *ramdisk; >> }; > > Oh, you should probably move domid after the pointers to avoid a hole. That would only move the hole to the end of the struct. Jan
On 10/8/24 15:36, Jason Andryuk wrote: > On 2024-10-06 17:49, Daniel P. Smith wrote: >> Add a domid field to struct boot_domain to hold the assigned domain id >> for the >> domain. During initialization, ensure all instances of struct >> boot_domain have >> the invalid domid to ensure that the domid must be set either by >> convention or >> configuration. >> >> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> >> --- >> xen/arch/x86/include/asm/bootdomain.h | 2 ++ >> xen/arch/x86/setup.c | 12 +++++++----- >> 2 files changed, 9 insertions(+), 5 deletions(-) >> >> diff --git a/xen/arch/x86/include/asm/bootdomain.h >> b/xen/arch/x86/include/asm/bootdomain.h >> index 4285223ac5ab..d6264d554dba 100644 >> --- a/xen/arch/x86/include/asm/bootdomain.h >> +++ b/xen/arch/x86/include/asm/bootdomain.h >> @@ -11,6 +11,8 @@ >> struct boot_module; >> struct boot_domain { >> + domid_t domid; >> + >> struct boot_module *kernel; >> struct boot_module *ramdisk; >> }; > > Oh, you should probably move domid after the pointers to avoid a hole. It's not a packed structure and at this point, we are not looking to make it an ABI. If the maintainers think there is a real concern here, then I can add a reserved field to fill the hole. v/r, dps
diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h index 4285223ac5ab..d6264d554dba 100644 --- a/xen/arch/x86/include/asm/bootdomain.h +++ b/xen/arch/x86/include/asm/bootdomain.h @@ -11,6 +11,8 @@ struct boot_module; struct boot_domain { + domid_t domid; + struct boot_module *kernel; struct boot_module *ramdisk; }; diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index ad4a1f473f6d..a1204b2bd594 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -318,6 +318,9 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p) bi->mods[bi->nr_modules].type = BOOTMOD_XEN; bi->mods[bi->nr_modules].flags |= BOOTMOD_FLAG_X86_CONSUMED; + for ( i = 0; i < MAX_NR_BOOTDOMS; i++ ) + bi->domains[i].domid = DOMID_INVALID; + return bi; } @@ -959,7 +962,6 @@ static struct domain *__init create_dom0(struct boot_info *bi) }; struct boot_domain *bd = &bi->domains[0]; struct domain *d; - domid_t domid; if ( opt_dom0_pvh ) { @@ -975,15 +977,15 @@ static struct domain *__init create_dom0(struct boot_info *bi) dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu; /* Create initial domain. Not d0 for pvshim. */ - domid = get_initial_domain_id(); - d = domain_create(domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged); + bd->domid = get_initial_domain_id(); + d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged); if ( IS_ERR(d) ) - panic("Error creating d%u: %ld\n", domid, PTR_ERR(d)); + panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d)); init_dom0_cpuid_policy(d); if ( alloc_dom0_vcpu0(d) == NULL ) - panic("Error creating d%uv0\n", domid); + panic("Error creating d%uv0\n", bd->domid); /* Grab the DOM0 command line. */ if ( bd->kernel->cmdline || bi->kextra )
Add a domid field to struct boot_domain to hold the assigned domain id for the domain. During initialization, ensure all instances of struct boot_domain have the invalid domid to ensure that the domid must be set either by convention or configuration. Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> --- xen/arch/x86/include/asm/bootdomain.h | 2 ++ xen/arch/x86/setup.c | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-)