[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: find a better location for the real-mode trampoline
>>> On 30.11.12 at 09:33, "Jan Beulich" <JBeulich@xxxxxxxx> wrote: >>>> On 29.11.12 at 18:34, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: >> On some machines, the location at 0x40e does not point to the beginning >> of the EBDA. Rather, it points to the beginning of the BIOS-reserved >> area of the EBDA, while the option ROMs place their data below that >> segment. >> >> For this reason, 0x413 is actually a better source than 0x40e to get >> the location of the real-mode trampoline. But it is even better to >> fetch the information from the multiboot structure, where the boot >> loader has placed the data for us already. > > I think if anything we really should make this a minimum calculation > of all three (sanity checked) values, rather than throwing the other > sources out. It's just not certain enough that we can trust all > multiboot implementations. I never saw a response from you on this one - were you intending to follow up, or did you (silently) expect us to sort this out? Jan > Of course, ideally we'd consult the memory map, but the E820 one > is unavailable at that point (and getting at it would create a > chicken-and-egg problem). > > Jan > >> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> >> --- >> xen/arch/x86/boot/head.S | 21 ++++++++++++--------- >> 1 file changed, 12 insertions(+), 9 deletions(-) >> >> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S >> index 7efa155..1790462 100644 >> --- a/xen/arch/x86/boot/head.S >> +++ b/xen/arch/x86/boot/head.S >> @@ -78,16 +78,19 @@ __start: >> cmp $0x2BADB002,%eax >> jne not_multiboot >> >> - /* Set up trampoline segment 64k below EBDA */ >> - movzwl 0x40e,%eax /* EBDA segment */ >> - cmp $0xa000,%eax /* sanity check (high) */ >> - jae 0f >> - cmp $0x4000,%eax /* sanity check (low) */ >> - jae 1f >> -0: >> - movzwl 0x413,%eax /* use base memory size on failure */ >> - shl $10-4,%eax >> + /* Set up trampoline segment just below end of base memory. >> + * Prefer to get this information from the multiboot >> + * structure, if available. >> + */ >> + mov 4(%ebx),%eax /* kb of low memory */ >> + testb $1,(%ebx) /* test MBI_MEMLIMITS */ >> + jnz 1f >> + >> + movzwl 0x413,%eax /* base memory size in kb */ >> 1: >> + shl $10-4,%eax /* convert to a segment number */ >> + >> + /* Reserve 64kb for the trampoline */ >> sub $0x1000,%eax >> >> /* From arch/x86/smpboot.c: start_eip had better be page-aligned! */ >> -- >> 1.8.0 >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@xxxxxxxxxxxxx >> http://lists.xen.org/xen-devel > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |