[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 3/4] x86/boot: Move some settings to C
On 22.11.2024 10:33, Frediano Ziglio wrote: > Initialise multiboot_ptr and pvh_start_info_pa from C code. > > Signed-off-by: Frediano Ziglio <frediano.ziglio@xxxxxxxxx> > --- > xen/arch/x86/boot/build32.lds.S | 3 +++ > xen/arch/x86/boot/head.S | 10 -------- > xen/arch/x86/boot/reloc.c | 28 ++++++++++++++++++----- > xen/arch/x86/include/asm/guest/pvh-boot.h | 1 + > 4 files changed, 26 insertions(+), 16 deletions(-) >From the diffstat alone - is this really a win? > --- a/xen/arch/x86/boot/head.S > +++ b/xen/arch/x86/boot/head.S > @@ -517,16 +517,6 @@ trampoline_setup: > /* reloc(magic/eax, info/edx) using fastcall. */ > call reloc > > -#ifdef CONFIG_PVH_GUEST > - cmpb $0, sym_esi(pvh_boot) > - je 1f > - mov %eax, sym_esi(pvh_start_info_pa) > - jmp 2f > -#endif > -1: > - mov %eax, sym_esi(multiboot_ptr) > -2: > - > /* Interrogate CPU extended features via CPUID. */ > mov $1, %eax > cpuid > --- a/xen/arch/x86/boot/reloc.c > +++ b/xen/arch/x86/boot/reloc.c > @@ -17,13 +17,15 @@ > #include <xen/types.h> > > #include <xen/kconfig.h> > -#include <xen/multiboot.h> > #include <xen/multiboot2.h> > #include <xen/page-size.h> > +#include <xen/bug.h> > > #include <asm/trampoline.h> > +#include <asm/setup.h> > > #include <public/arch-x86/hvm/start_info.h> > +#include <asm/guest/pvh-boot.h> > > #ifdef CONFIG_VIDEO > # include "video.h" > @@ -347,27 +349,41 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, > memctx *ctx) > } > > /* SAF-1-safe */ > -void *reloc(uint32_t magic, uint32_t in) > +void reloc(uint32_t magic, uint32_t in) > { > memctx ctx = { trampoline_phys + TRAMPOLINE_HEAP_END }; > > + void *res; > + Nit: Please avoid blank lines between declarations unless the set of locals is huge, or some really need to stand out. > switch ( magic ) > { > case MULTIBOOT_BOOTLOADER_MAGIC: > - return mbi_reloc(in, &ctx); > + res = mbi_reloc(in, &ctx); > + break; > > case MULTIBOOT2_BOOTLOADER_MAGIC: > - return mbi2_reloc(in, &ctx); > + res = mbi2_reloc(in, &ctx); > + break; > > case XEN_HVM_START_MAGIC_VALUE: > if ( IS_ENABLED(CONFIG_PVH_GUEST) ) > - return pvh_info_reloc(in, &ctx); > + { > + res = pvh_info_reloc(in, &ctx); > + break; > + } > /* Fallthrough */ > > default: > /* Nothing we can do */ > - return NULL; > + res = NULL; Simply keep returning here? No need to write the NULL when the variables start out zeroed? > } > + > +#ifdef CONFIG_PVH_GUEST > + if ( pvh_boot ) > + pvh_start_info_pa = (unsigned long)res; > +#endif > + > + multiboot_ptr = (unsigned long)res; In the assembly original this is an "else" to the if(). Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |