[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] x86: Use low memory size directly from Multiboot
On 09.02.2022 14:12, Tu Dinh Ngoc wrote: > Previously, Xen used information from the BDA to detect the amount of > available low memory. This does not work on some scenarios such as > Coreboot, or when booting from Kexec on a UEFI system without CSM. > > Use the information directly supplied by Multiboot boot information > instead. > --- Btw - please summarize here briefly what has changed from the earlier version. As it stands your adjustment looks to take care of one third of what I did say in reply to your v1. That's not enough for a v2, or else you should have taken care of the remaining aspects verbally. Jan > --- a/xen/arch/x86/boot/head.S > +++ b/xen/arch/x86/boot/head.S > @@ -524,33 +524,23 @@ trampoline_bios_setup: > mov %ecx,%fs > mov %ecx,%gs > > - /* Set up trampoline segment 64k below EBDA */ > - movzwl 0x40e,%ecx /* EBDA segment */ > - cmp $0xa000,%ecx /* sanity check (high) */ > - jae 0f > - cmp $0x4000,%ecx /* sanity check (low) */ > - jae 1f > -0: > - movzwl 0x413,%ecx /* use base memory size on failure */ > - shl $10-4,%ecx > -1: > + /* Use lower memory size directly from Multiboot */ > + mov %edx,%ecx > /* > - * Compare the value in the BDA with the information from the > - * multiboot structure (if available) and use the smallest. > + * Old Kexec used to report the value in bytes instead of kilobytes > + * like it's supposed to, so fix that if detected. > */ > - cmp $0x100,%edx /* is the multiboot value too small? */ > - jb 2f /* if so, do not use it */ > - shl $10-4,%edx > - cmp %ecx,%edx /* compare with BDA value */ > - cmovb %edx,%ecx /* and use the smaller */ > + cmpl $640,%ecx > + jbe 1f > + shr $10,%ecx > +1: > + /* From arch/x86/smpboot.c: start_eip had better be page-aligned! */ > + shr $2,%ecx > > -2: > /* Reserve memory for the trampoline and the low-memory stack. */ > - sub $((TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE)>>4),%ecx > + sub $((TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE)>>12),%ecx > > - /* From arch/x86/smpboot.c: start_eip had better be page-aligned! */ > - xor %cl, %cl > - shl $4, %ecx > + shl $12,%ecx > mov %ecx,sym_esi(trampoline_phys) > > trampoline_setup:
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |