From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH for-xen-4.5 v3 07/16] x86: Move boot_loader_name from mbi to boot_info Date: Thu, 9 Oct 2014 11:53:25 +0100 Message-ID: <54366925.2010107@citrix.com> References: <1412790736-28915-1-git-send-email-daniel.kiper@oracle.com> <1412790736-28915-8-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XcBLh-0002Mc-CZ for xen-devel@lists.xenproject.org; Thu, 09 Oct 2014 10:53:33 +0000 In-Reply-To: <1412790736-28915-8-git-send-email-daniel.kiper@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Daniel Kiper , xen-devel@lists.xenproject.org Cc: jgross@suse.com, keir@xen.org, ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com, ross.philipson@citrix.com, roy.franz@linaro.org, ning.sun@intel.com, jbeulich@suse.com, qiaowei.ren@intel.com, richard.l.maliszewski@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org On 08/10/14 18:52, Daniel Kiper wrote: > Signed-off-by: Daniel Kiper > --- > xen/arch/x86/boot_info.c | 11 ++++++----- > xen/arch/x86/efi/efi-boot.h | 3 +-- > xen/arch/x86/setup.c | 13 +++++-------- > xen/common/efi/runtime.c | 1 + > xen/include/asm-x86/boot_info.h | 3 +++ > 5 files changed, 16 insertions(+), 15 deletions(-) > > diff --git a/xen/arch/x86/boot_info.c b/xen/arch/x86/boot_info.c > index 83bd255..5851123 100644 > --- a/xen/arch/x86/boot_info.c > +++ b/xen/arch/x86/boot_info.c > @@ -27,6 +27,7 @@ > static multiboot_info_t __read_mostly mbi; > > static boot_info_t __read_mostly boot_info_mb = { > + .boot_loader_name = "UNKNOWN", > .warn_msg = NULL, > .err_msg = NULL > }; > @@ -39,11 +40,6 @@ unsigned long __init __init_mbi(u32 mbd_pa) > > enable_exception_support(); > > - if ( mbd->boot_loader_name ) { > - mbi.flags = MBI_LOADERNAME; > - mbi.boot_loader_name = mbd->boot_loader_name; > - } > - > if ( mbd->cmdline ) { > mbi.flags |= MBI_CMDLINE; > mbi.cmdline = mbd->cmdline; > @@ -66,5 +62,10 @@ unsigned long __init __init_mbi(u32 mbd_pa) > > paddr_t __init __init_boot_info(u32 mbd_pa) > { > + mbd_t *mbd = __va(mbd_pa); > + > + if ( mbd->boot_loader_name ) > + boot_info_mb.boot_loader_name = __va(mbd->boot_loader_name); > + > return __pa(&boot_info_mb); > } > diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h > index 6d7c222..29504e9 100644 > --- a/xen/arch/x86/efi/efi-boot.h > +++ b/xen/arch/x86/efi/efi-boot.h > @@ -11,7 +11,7 @@ > > static struct file __initdata ucode; > static multiboot_info_t __initdata mbi = { > - .flags = MBI_MODULES | MBI_LOADERNAME > + .flags = MBI_MODULES > }; > static module_t __initdata mb_modules[3]; > > @@ -310,7 +310,6 @@ static void __init efi_arch_handle_cmdline(CHAR16 *image_name, > * These must not be initialized statically, since the value must > * not get relocated when processing base relocations later. > */ > - mbi.boot_loader_name = (long)"EFI"; > mbi.mods_addr = (long)mb_modules; > } > > diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c > index d2a1450..c4642f3 100644 > --- a/xen/arch/x86/setup.c > +++ b/xen/arch/x86/setup.c > @@ -554,7 +554,7 @@ void __init enable_exception_support(void) > void __init noreturn __start_xen(unsigned long mbi_p, paddr_t boot_info_pa) > { > char *memmap_type = NULL; > - char *cmdline, *kextra, *loader; > + char *cmdline, *kextra; > unsigned int initrdidx, domcr_flags = DOMCRF_s3_integrity; > multiboot_info_t *mbi = __va(mbi_p); > module_t *mod = (module_t *)__va(mbi->mods_addr); > @@ -578,13 +578,10 @@ void __init noreturn __start_xen(unsigned long mbi_p, paddr_t boot_info_pa) > /* Exception support was enabled before __start_xen() call. */ > } > > - loader = (mbi->flags & MBI_LOADERNAME) > - ? (char *)__va(mbi->boot_loader_name) : "unknown"; > - > /* Parse the command-line options. */ > cmdline = cmdline_cook((mbi->flags & MBI_CMDLINE) ? > __va(mbi->cmdline) : NULL, > - loader); > + boot_info->boot_loader_name); > if ( (kextra = strstr(cmdline, " -- ")) != NULL ) > { > /* > @@ -624,7 +621,7 @@ void __init noreturn __start_xen(unsigned long mbi_p, paddr_t boot_info_pa) > if ( boot_info->warn_msg ) > printk(boot_info->warn_msg); > > - printk("Bootloader: %s\n", loader); > + printk("Bootloader: %s\n", boot_info->boot_loader_name); > > printk("Command line: %s\n", cmdline); > > @@ -698,7 +695,7 @@ void __init noreturn __start_xen(unsigned long mbi_p, paddr_t boot_info_pa) > l3_bootmap[l3_table_offset(BOOTSTRAP_MAP_BASE)] = > l3e_from_paddr(__pa(l2_bootmap), __PAGE_HYPERVISOR); > > - memmap_type = loader; > + memmap_type = boot_info->boot_loader_name; > } > else if ( e820_raw_nr != 0 ) > { > @@ -1380,7 +1377,7 @@ void __init noreturn __start_xen(unsigned long mbi_p, paddr_t boot_info_pa) > { > static char __initdata dom0_cmdline[MAX_GUEST_CMDLINE]; > > - cmdline = cmdline_cook(cmdline, loader); > + cmdline = cmdline_cook(cmdline, boot_info->boot_loader_name); > safe_strcpy(dom0_cmdline, cmdline); > > if ( kextra != NULL ) > diff --git a/xen/common/efi/runtime.c b/xen/common/efi/runtime.c > index eb0acae..7846b2b 100644 > --- a/xen/common/efi/runtime.c > +++ b/xen/common/efi/runtime.c > @@ -54,6 +54,7 @@ const struct efi_pci_rom *__read_mostly efi_pci_roms; > > #ifndef CONFIG_ARM /* TODO - disabled until implemented on ARM */ > boot_info_t __read_mostly boot_info_efi = { > + .boot_loader_name = "EFI", > .warn_msg = NULL, > .err_msg = NULL > }; > diff --git a/xen/include/asm-x86/boot_info.h b/xen/include/asm-x86/boot_info.h > index 9ff3c0f..58a4cb6 100644 > --- a/xen/include/asm-x86/boot_info.h > +++ b/xen/include/asm-x86/boot_info.h > @@ -29,6 +29,9 @@ > * are compatible as much as possible with relevant EFI/ACPI types. > */ > typedef struct { > + /* Boot loader name. */ > + char *boot_loader_name; > + const char *loader_name; No need to have boot twice. ~Andrew > /* > * Info about warning occurred during boot_info initialization. > * NULL if everything went OK.