All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
Cc: "Jason Andryuk" <jason.andryuk@amd.com>,
	"Juergen Gross" <jgross@suse.com>,
	"Julien Grall" <julien@xen.org>,
	"Anthony PERARD" <anthony.perard@citrix.com>,
	"Jan Beulich" <jbeulich@suse.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Roger Pau Monné" <roger.pau@citrix.com>,
	"George Dunlap" <george.dunlap@citrix.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>
Subject: [PATCH v6 0/4] x86/pvh: Support relocating dom0 kernel
Date: Wed, 27 Mar 2024 17:50:58 -0400	[thread overview]
Message-ID: <20240327215102.136001-1-jason.andryuk@amd.com> (raw)

Xen tries to load a PVH dom0 kernel at the fixed guest physical address
from the elf headers.  For Linux, this defaults to 0x1000000 (16MB), but
it can be configured.

Unfortunately there exist firmwares that have reserved regions at this
address, so Xen fails to load the dom0 kernel since it's not RAM.

The other issue is that the Linux PVH entry point is not
position-independent.  It expects to run at the compiled
CONFIG_PHYSICAL_ADDRESS.

This patch set expands the PVH dom0 builder to try to relocate the
kernel if needed and possible.  XEN_ELFNOTE_PHYS32_RELOC is added for
kernels to indicate they are relocatable and their acceptable address
range and alignment.

v6:
Choose the alignment from the Note if specified, or the Maximum PHDR
p_align value if greater than PAGE_SIZE.  Otherwise, it falls back to
the default 2MB.

Patches from v5 commited:
853c71dfbf xen/elfnote: Specify ELF Notes are x86-specific
7d8c9b4e8d libelf: Expand ELF note printing
8802230bfa Revert "xen/x86: bzImage parse kernel_alignment"

The first and second patches move MB/GB() to common-macros.h.

The third patch stores the maximum p_align value from the ELF PHDRs.

The fourth patch expands the pvh dom0 kernel placement code.

I'll post an additional patch showing the Linux changes to make PVH
relocatable.

Jason Andryuk (4):
  tools/init-xenstore-domain: Replace variable MB() usage
  tools: Move MB/GB() to common-macros.h
  libelf: Store maximum PHDR p_align
  x86/PVH: Support relocatable dom0 kernels

 tools/firmware/hvmloader/util.h         |   3 -
 tools/helpers/init-xenstore-domain.c    |  11 ++-
 tools/include/xen-tools/common-macros.h |   4 +
 tools/libs/light/libxl_internal.h       |   4 -
 xen/arch/x86/hvm/dom0_build.c           | 108 ++++++++++++++++++++++++
 xen/common/libelf/libelf-dominfo.c      |  35 ++++++++
 xen/common/libelf/libelf-loader.c       |  15 +++-
 xen/common/libelf/libelf-private.h      |   1 +
 xen/include/public/elfnote.h            |  16 +++-
 xen/include/xen/libelf.h                |   5 ++
 10 files changed, 186 insertions(+), 16 deletions(-)

-- 
2.44.0



             reply	other threads:[~2024-03-27 21:55 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-27 21:50 Jason Andryuk [this message]
2024-03-27 21:50 ` [PATCH v6 1/4] tools/init-xenstore-domain: Replace variable MB() usage Jason Andryuk
2024-04-03 12:41   ` Anthony PERARD
2024-04-03 12:51     ` Jason Andryuk
2024-04-04 10:09   ` Jan Beulich
2024-04-04 13:55     ` Jason Andryuk
2024-03-27 21:51 ` [PATCH v6 2/4] tools: Move MB/GB() to common-macros.h Jason Andryuk
2024-04-03 12:57   ` Anthony PERARD
2024-03-27 21:51 ` [PATCH v6 3/4] libelf: Store maximum PHDR p_align Jason Andryuk
2024-03-28 16:47   ` Jan Beulich
2024-03-29 14:41     ` Jason Andryuk
2024-04-02  6:44       ` Jan Beulich
2024-04-04 14:00         ` Jason Andryuk
2024-03-27 21:51 ` [PATCH v6 4/4] x86/PVH: Support relocatable dom0 kernels Jason Andryuk
2024-04-02 14:34   ` Jan Beulich
2024-04-04 14:01     ` Jason Andryuk
2024-03-27 21:55 ` [PATCH v6] RFC: x86/pvh: Make Xen PVH entrypoint PIC for x86-64 Jason Andryuk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240327215102.136001-1-jason.andryuk@amd.com \
    --to=jason.andryuk@amd.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jgross@suse.com \
    --cc=julien@xen.org \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.