Message ID | 20241006214956.24339-41-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 container for the "cooked" command line for a domain. > > Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> > --- > xen/arch/x86/include/asm/bootdomain.h | 4 ++++ > xen/arch/x86/setup.c | 18 ++++++++---------- > 2 files changed, 12 insertions(+), 10 deletions(-) > > diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h > index d6264d554dba..00f7d9267965 100644 > --- a/xen/arch/x86/include/asm/bootdomain.h > +++ b/xen/arch/x86/include/asm/bootdomain.h > @@ -8,9 +8,13 @@ > #ifndef __XEN_X86_BOOTDOMAIN_H__ > #define __XEN_X86_BOOTDOMAIN_H__ > > +#include <public/xen.h> > + > struct boot_module; > > struct boot_domain { > + char cmdline[MAX_GUEST_CMDLINE]; > + 1024 bytes for just dom0 isn't too much. But when hyperlaunch has 64 boot_domains, that's a good bit more. But I suppose it isn't too much RAM for a modern system. This is __initdata, so it increases the binary size. I just want to highlight this in case others want to chime in. The code changes seem fine. Regards, Jason
On 10/8/24 16:05, Jason Andryuk wrote: > On 2024-10-06 17:49, Daniel P. Smith wrote: >> Add a container for the "cooked" command line for a domain. >> >> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> >> --- >> xen/arch/x86/include/asm/bootdomain.h | 4 ++++ >> xen/arch/x86/setup.c | 18 ++++++++---------- >> 2 files changed, 12 insertions(+), 10 deletions(-) >> >> diff --git a/xen/arch/x86/include/asm/bootdomain.h >> b/xen/arch/x86/include/asm/bootdomain.h >> index d6264d554dba..00f7d9267965 100644 >> --- a/xen/arch/x86/include/asm/bootdomain.h >> +++ b/xen/arch/x86/include/asm/bootdomain.h >> @@ -8,9 +8,13 @@ >> #ifndef __XEN_X86_BOOTDOMAIN_H__ >> #define __XEN_X86_BOOTDOMAIN_H__ >> +#include <public/xen.h> >> + >> struct boot_module; >> struct boot_domain { >> + char cmdline[MAX_GUEST_CMDLINE]; >> + > > 1024 bytes for just dom0 isn't too much. But when hyperlaunch has 64 > boot_domains, that's a good bit more. But I suppose it isn't too much > RAM for a modern system. This is __initdata, so it increases the binary > size. I just want to highlight this in case others want to chime in. I would prefer to leave it in the __initdata for now to avoid dealing with dynamic memory at this time. Later, if a need to optimize for binary size, then options could be explored. > The code changes seem fine. R-b then? v/r dps
diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h index d6264d554dba..00f7d9267965 100644 --- a/xen/arch/x86/include/asm/bootdomain.h +++ b/xen/arch/x86/include/asm/bootdomain.h @@ -8,9 +8,13 @@ #ifndef __XEN_X86_BOOTDOMAIN_H__ #define __XEN_X86_BOOTDOMAIN_H__ +#include <public/xen.h> + struct boot_module; struct boot_domain { + char cmdline[MAX_GUEST_CMDLINE]; + domid_t domid; struct boot_module *kernel; diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index a1204b2bd594..f250638edf09 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -947,8 +947,6 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li static struct domain *__init create_dom0(struct boot_info *bi) { - static char __initdata cmdline[MAX_GUEST_CMDLINE]; - struct xen_domctl_createdomain dom0_cfg = { .flags = IS_ENABLED(CONFIG_TBOOT) ? XEN_DOMCTL_CDF_s3_integrity : 0, .max_evtchn_port = -1, @@ -991,17 +989,17 @@ static struct domain *__init create_dom0(struct boot_info *bi) if ( bd->kernel->cmdline || bi->kextra ) { if ( bd->kernel->cmdline ) - safe_strcpy(cmdline, cmdline_cook( + safe_strcpy(bd->cmdline, cmdline_cook( __va((unsigned long)bd->kernel->cmdline), bi->loader)); if ( bi->kextra ) /* kextra always includes exactly one leading space. */ - safe_strcat(cmdline, bi->kextra); + safe_strcat(bd->cmdline, bi->kextra); /* Append any extra parameters. */ - if ( skip_ioapic_setup && !strstr(cmdline, "noapic") ) - safe_strcat(cmdline, " noapic"); + if ( skip_ioapic_setup && !strstr(bd->cmdline, "noapic") ) + safe_strcat(bd->cmdline, " noapic"); if ( (strlen(acpi_param) == 0) && acpi_disabled ) { @@ -1009,14 +1007,14 @@ static struct domain *__init create_dom0(struct boot_info *bi) safe_strcpy(acpi_param, "off"); } - if ( (strlen(acpi_param) != 0) && !strstr(cmdline, "acpi=") ) + if ( (strlen(acpi_param) != 0) && !strstr(bd->cmdline, "acpi=") ) { - safe_strcat(cmdline, " acpi="); - safe_strcat(cmdline, acpi_param); + safe_strcat(bd->cmdline, " acpi="); + safe_strcat(bd->cmdline, acpi_param); } } - if ( construct_dom0(d, bd->kernel, bd->ramdisk, cmdline) != 0 ) + if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 ) panic("Could not construct domain 0\n"); return d;
Add a container for the "cooked" command line for a domain. Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> --- xen/arch/x86/include/asm/bootdomain.h | 4 ++++ xen/arch/x86/setup.c | 18 ++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-)