[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/2] x86/trampoline: Rationalise the constants to describe the size
On Wed, Nov 13, 2024 at 10:18 AM Frediano Ziglio <frediano.ziglio@xxxxxxxxx> wrote: > > On Wed, Nov 13, 2024 at 9:31 AM Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > wrote: > > > > The logic is far more sane to follow with a total size, and the position of > > the end of the heap. Remove or fix the the remaining descriptions of how > > the > > typo: the the > > > trampoline is laid out. > > > > No functional change. The compiled binary is identical. > > > > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > > --- > > CC: Jan Beulich <JBeulich@xxxxxxxx> > > CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> > > CC: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx> > > CC: Frediano Ziglio <frediano.ziglio@xxxxxxxxx> > > CC: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx> > > --- > > xen/arch/x86/boot/head.S | 21 ++------------------- > > xen/arch/x86/boot/reloc.c | 5 ++--- > > xen/arch/x86/efi/efi-boot.h | 2 +- > > xen/arch/x86/include/asm/config.h | 5 +++-- > > xen/arch/x86/xen.lds.S | 2 +- > > 5 files changed, 9 insertions(+), 26 deletions(-) > > > > diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S > > index dcda91cfda49..b31cf83758c1 100644 > > --- a/xen/arch/x86/boot/head.S > > +++ b/xen/arch/x86/boot/head.S > > @@ -494,7 +494,7 @@ trampoline_bios_setup: > > > > 2: > > /* Reserve memory for the trampoline and the low-memory stack. */ > > - sub $((TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE)>>4),%ecx > > + sub $TRAMPOLINE_SIZE >> 4, %ecx > > > > /* From arch/x86/smpboot.c: start_eip had better be page-aligned! > > */ > > xor %cl, %cl > > @@ -525,23 +525,6 @@ trampoline_setup: > > mov %eax, sym_esi(multiboot_ptr) > > 2: > > > > - /* > > - * Now trampoline_phys points to the following structure (lowest > > address > > - * is at the bottom): > > - * > > - * +------------------------+ > > - * | TRAMPOLINE_STACK_SPACE | > > - * +------------------------+ > > - * | Data (MBI / PVH) | > > - * +- - - - - - - - - - - - + > > - * | TRAMPOLINE_SPACE | > > - * +------------------------+ > > - * > > - * Data grows downwards from the highest address of > > TRAMPOLINE_SPACE > > - * region to the end of the trampoline. The rest of > > TRAMPOLINE_SPACE is > > - * reserved for trampoline code and data. > > - */ > > - > > I fail to see a similar description somewhere now. > > > /* Interrogate CPU extended features via CPUID. */ > > mov $1, %eax > > cpuid > > @@ -713,7 +696,7 @@ trampoline_setup: > > 1: > > /* Switch to low-memory stack which lives at the end of trampoline > > region. */ > > mov sym_esi(trampoline_phys), %edi > > - lea TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE(%edi),%esp > > + lea TRAMPOLINE_SIZE(%edi), %esp > > lea trampoline_boot_cpu_entry-trampoline_start(%edi),%eax > > pushl $BOOT_CS32 > > push %eax > > diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c > > index e50e161b2740..1f47e10f7fa6 100644 > > --- a/xen/arch/x86/boot/reloc.c > > +++ b/xen/arch/x86/boot/reloc.c > > @@ -65,7 +65,7 @@ typedef struct memctx { > > /* > > * Simple bump allocator. > > * > > - * It starts from the base of the trampoline and allocates downwards. > > + * It starts from end of of the trampoline heap and allocates > > downwards. > > Nice ! > Minor typo "It starts from the end of the trampoline heap and > allocates downwards." > > > */ > > uint32_t ptr; > > } memctx; > > @@ -349,8 +349,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, > > memctx *ctx) > > /* SAF-1-safe */ > > void *reloc(uint32_t magic, uint32_t in) > > { > > - /* Get bottom-most low-memory stack address. */ > > - memctx ctx = { trampoline_phys + TRAMPOLINE_SPACE }; > > + memctx ctx = { trampoline_phys + TRAMPOLINE_HEAP_END }; > > > > switch ( magic ) > > { > > diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h > > index 7930b7c73892..9d3f2b71447e 100644 > > --- a/xen/arch/x86/efi/efi-boot.h > > +++ b/xen/arch/x86/efi/efi-boot.h > > @@ -633,7 +633,7 @@ static void __init efi_arch_memory_setup(void) > > if ( efi_enabled(EFI_LOADER) ) > > cfg.size = trampoline_end - trampoline_start; > > else > > - cfg.size = TRAMPOLINE_SPACE + TRAMPOLINE_STACK_SPACE; > > + cfg.size = TRAMPOLINE_SIZE; > > > > status = efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData, > > PFN_UP(cfg.size), &cfg.addr); > > diff --git a/xen/arch/x86/include/asm/config.h > > b/xen/arch/x86/include/asm/config.h > > index f8a5a4913b07..20141ede31a1 100644 > > --- a/xen/arch/x86/include/asm/config.h > > +++ b/xen/arch/x86/include/asm/config.h > > @@ -51,8 +51,9 @@ > > > > #define IST_SHSTK_SIZE 1024 > > > > -#define TRAMPOLINE_STACK_SPACE PAGE_SIZE > > -#define TRAMPOLINE_SPACE (KB(64) - TRAMPOLINE_STACK_SPACE) > > +/* See asm/trampoline.h */ > > I fail to see any description and need for a heap or why the size is 64kb. > There is a description about trampoline code and wakeup code but not > the fact we copy MBI data and so we need a heap. > Stack could be just due to the need of it, so implicit, heap a bit less. > > > +#define TRAMPOLINE_SIZE KB(64) > > +#define TRAMPOLINE_HEAP_END (TRAMPOLINE_SIZE - PAGE_SIZE) > > #define WAKEUP_STACK_MIN 3072 > > > > #define MBI_SPACE_MIN (2 * PAGE_SIZE) > > diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S > > index 35693f6e3380..e7d93d1f4ac3 100644 > > --- a/xen/arch/x86/xen.lds.S > > +++ b/xen/arch/x86/xen.lds.S > > @@ -410,7 +410,7 @@ ASSERT(!SIZEOF(.plt), ".plt non-empty") > > ASSERT(!SIZEOF(.rela), "leftover relocations") > > #endif > > > > -ASSERT((trampoline_end - trampoline_start) < TRAMPOLINE_SPACE - > > MBI_SPACE_MIN, > > +ASSERT((trampoline_end - trampoline_start) < TRAMPOLINE_HEAP_END - > > MBI_SPACE_MIN, > > "not enough room for trampoline and mbi data") > > ASSERT((wakeup_stack - wakeup_stack_start) >= WAKEUP_STACK_MIN, > > "wakeup stack too small") > > Code is nice, just that documentation is stated but missing in my opinion. > Hi, I realized I messed the first patch of the series, so with that, beside the small typos Reviewed-by: Frediano Ziglio <frediano.ziglio@xxxxxxxxx> Frediano
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |