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

[Xen-devel] [PATCH v6 00/15] x86: multiboot2 protocol support


I am sending sixth version of multiboot2 protocol support for
legacy BIOS and EFI platforms. This patch series release contains
fixes for all known issues except one. During last review Jan
pointed out that there is no memory size check for trampoline
region returned by efi_multiboot2(). I investigated this issue
and neighborhood quite deeply. Unfortunately I discovered a lot
of similar issues in original early assembly code which does low
memory allocations. E.g. there are a few arbitrary size checks
without any explanations why this figures not another. Additionally,
they take only into consideration area for trampoline though low
memory is used for stack and boot data storage. I do not mention
that there is no hard check which would fail if there is insufficient
low memory, etc. So, I am going to describe all issues in separate
thread (probably tomorrow) and hammer out relevant solutions. Probably
relevant patches with fixes should be applied before this series but
maybe not. Anyway, I hope that fixes for above described issues will
have no big impact on this patch series. That is why I decided to post
it without fixing low memory allocation issues. This way review can
be done in parallel with discussion about possible fixes.

The final goal is xen.efi binary file which could be loaded by EFI
loader, multiboot (v1) protocol (only on legacy BIOS platforms) and
multiboot2 protocol. This way we will have:
  - smaller Xen code base,
  - one code base for xen.gz and xen.efi,
  - one build method for xen.gz and xen.efi;
    xen.efi will be extracted from xen(-syms)
    file using objcopy or special custom tool,
  - xen.efi build will not so strongly depend
    on a given GCC and binutils version.

Here is short list of changes since v5:
  - new patches: 01, 11, 12, 14,
  - changed patches: 02, 04-10, 13.

I hope that (at least some) features provided by this patch series
will be included in Xen 4.8 release in one way or another.

If you are not interested in this patch series at all please
drop me a line and I will remove you from distribution list.


 .gitignore                        |    5 +-
 xen/arch/x86/Makefile             |    8 +-
 xen/arch/x86/Rules.mk             |    4 +
 xen/arch/x86/boot/Makefile        |   12 +-
 xen/arch/x86/boot/build32.mk      |    2 +
 xen/arch/x86/boot/cmdline.S       |  367 
 xen/arch/x86/boot/cmdline.c       |  339 
 xen/arch/x86/boot/defs.h          |   52 ++++++++
 xen/arch/x86/boot/edd.S           |    3 -
 xen/arch/x86/boot/head.S          |  536 
 xen/arch/x86/boot/reloc.c         |  223 +++++++++++++++++++++++++++-------
 xen/arch/x86/boot/trampoline.S    |   21 +++-
 xen/arch/x86/boot/video.S         |    7 --
 xen/arch/x86/boot/wakeup.S        |    4 +-
 xen/arch/x86/boot/x86_64.S        |   44 +++----
 xen/arch/x86/dmi_scan.c           |    4 +-
 xen/arch/x86/domain_page.c        |    2 +-
 xen/arch/x86/efi/Makefile         |   12 +-
 xen/arch/x86/efi/efi-boot.h       |   60 ++++++++--
 xen/arch/x86/efi/stub.c           |   46 ++++++-
 xen/arch/x86/mpparse.c            |    4 +-
 xen/arch/x86/setup.c              |   36 +++---
 xen/arch/x86/shutdown.c           |    5 +-
 xen/arch/x86/time.c               |    2 +-
 xen/arch/x86/x86_64/asm-offsets.c |   15 +++
 xen/arch/x86/xen.lds.S            |   10 +-
 xen/common/efi/boot.c             |   68 ++++++++++-
 xen/common/efi/runtime.c          |   23 +++-
 xen/common/version.c              |    2 +-
 xen/drivers/acpi/osl.c            |    2 +-
 xen/include/asm-x86/page.h        |    2 +-
 xen/include/xen/efi.h             |    9 +-
 xen/include/xen/multiboot2.h      |  182 ++++++++++++++++++++++++++++
 33 files changed, 1543 insertions(+), 568 deletions(-)

Daniel Kiper (15):
      x86: properly calculate ELF end of image address
      x86/boot/reloc: create generic alloc and copy functions
      x86/boot/reloc: rename some variables and rearrange code a bit
      x86: add multiboot2 protocol support
      efi: create efi_enabled()
      x86: allow EFI reboot method neither on EFI platforms...
      efi: build xen.gz with EFI code
      x86/efi: create new early memory allocator
      x86: add multiboot2 protocol support for EFI platforms
      x86/boot: implement early command line parser in C
      x86: change default load address from 1 MiB to 2 MiB
      x86/setup: use XEN_IMG_OFFSET instead of...
      x86: make Xen early boot code relocatable
      x86/boot: rename sym_phys() to sym_offs()
      x86: add multiboot2 protocol support for relocatable images

Xen-devel mailing list



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