[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] x86/boot: Fix the boot time relocation calculations





On 14/06/17 11:33, Julien Grall wrote:
Hi Andrew,

On 06/12/2017 11:45 AM, Andrew Cooper wrote:
c/s b28044226e1 "x86: make Xen early boot code relocatable" introduces

     mov $sym_offs(__image_base__),%esi

to the legacy boot path.  However, this is by definition 0, which
means the
boot code only functions correctly when Xen is loaded at its preferred
physical address (2M at the time of writing).

Xen does cope if loaded at an alternative physical address, if the
MULTIBOOT2_TAG_TYPE_LOAD_BASE_ADDR tag is filled in properly.  While
recent
versions of Grub do fill this in appropriately, tboot does not.  (In
fact,
tboot loads Xen at the preferred address, but claims a load address of
8M.)

Both Multiboot 1 and 2 specify the execution environment as being
flat.  As a
result, Xen needs no help calculating the proper load address.

However, Multiboot specifies %esp as undefined.  Experimentally, using
the
entry %esp is fine, but this is certainly no guarantee.  Use a
temporary stack
in the first page of RAM, which is one of the safest areas to clobber.

Calculate the load address from %eip alone, and ignore
MULTIBOOT2_TAG_TYPE_LOAD_BASE_ADDR entirely.  This fixes legacy boot
under
various versions of tboot.

Finally, set up the stack as soon as possible, which means the BIOS
path has a
usable stack for the entirety of its duration.  Use the full available
stack
size, rather than limiting to an arbitrary 1k.  One side effect is
that the
MB2/EFI path continues to use the EFI stack until the trampoline is
entered.

Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Tested-by: Sergey Dyasli <sergey.dyasli@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Julien Grall <julien.grall@xxxxxxx>
CC: Daniel Kiper <daniel.kiper@xxxxxxxxxx>
CC: Doug Goldstein <cardoe@xxxxxxxxxx>
CC: Sergey Dyasli <sergey.dyasli@xxxxxxxxxx>

This is a regression introduced in Xen 4.9, and should therefore be
fixed.

This is touching early-boot code. I would like to wait a least a push
with this patch on staging before suggesting to push in Xen 4.9.

Release-acked-by: Julien Grall <julien.grall@xxxxxxx>


Cheers,


--
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.