public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ard Biesheuvel" <ard.biesheuvel@arm.com>
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	Liming Gao <liming.gao@intel.com>,
	Jiewen Yao <jiewen.yao@intel.com>,
	Sami Mujawar <sami.mujawar@arm.com>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>
Subject: [PATCH 0/5] StandaloneMmPkg: make StMM core relocatable
Date: Wed, 10 Jun 2020 10:17:35 +0200	[thread overview]
Message-ID: <20200610081740.54581-1-ard.biesheuvel@arm.com> (raw)

It is not always possible to deploy the standalone MM core in a way where
the runtime address is known at build time. This does not matter for most
modules, since they are relocated at dispatch time. However, for the MM
core itself, it means we need to do some extra work to relocate the image
in place if it ends up at a different offset than expected.

On AARCH64, the standalone MM stack is deployed inside a non-privileged
secure world container which only has limited control over its memory
mappings, and so we need to ensure that the executable code itself is
free of absolute quantities that need to be fixed up. This is very similar
to how shared libraries are constructed, given that pages can only be
shared between processes if they are not modified, even by the dynamic
loader. So we can use this support to emit the standaline MM core in a
way that guarantees that the executable code does not need to modify
itself (patch #4)

Patch #5 adds the actual code to perform the self relocation after the
.data section has been made writable and non-executable. Note that the
PE/COFF library code modifies the header in place, and so in the case
where we need to perform the runtime relocation, we need to remap the
header page writable and non-executable as well.

The remaining patches are optimizations and fixes I picked up along
the way.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>

Ard Biesheuvel (5):
  MdePkg/BasePrintLib: avoid absolute addresses for error strings
  StandaloneMmPkg/Core: fix bogus FV pointer in DEBUG string
  StandaloneMmPkg/Core: add missing GUID reference
  StandaloneMmPkg: generate position independent code for StMM core
  StandaloneMmPkg/StandaloneMmCoreEntryPoint: relocate StMM core on the
    fly

 StandaloneMmPkg/Core/StandaloneMmCore.inf                                               |  5 +++++
 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreEntryPoint.inf       |  3 +++
 StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoint.h                    |  2 ++
 MdePkg/Library/BasePrintLib/PrintLibInternal.c                                          |  2 +-
 StandaloneMmPkg/Core/Dispatcher.c                                                       |  2 +-
 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPermissions.c             | 11 +++++++---
 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/StandaloneMmCoreEntryPoint.c | 22 ++++++++++++++++++++
 7 files changed, 42 insertions(+), 5 deletions(-)

-- 
2.26.2


             reply	other threads:[~2020-06-10  8:17 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-10  8:17 Ard Biesheuvel [this message]
2020-06-10  8:17 ` [PATCH 1/5] MdePkg/BasePrintLib: avoid absolute addresses for error strings Ard Biesheuvel
2020-06-10  8:37   ` Ard Biesheuvel
2020-06-10 15:09     ` [edk2-devel] " Michael D Kinney
2020-06-10 16:39       ` Ard Biesheuvel
2020-06-10  8:17 ` [PATCH 2/5] StandaloneMmPkg/Core: fix bogus FV pointer in DEBUG string Ard Biesheuvel
2020-06-14 12:35   ` [edk2-devel] " Yao, Jiewen
2020-06-15 12:42     ` Sami Mujawar
2020-06-10  8:17 ` [PATCH 3/5] StandaloneMmPkg/Core: add missing GUID reference Ard Biesheuvel
2020-06-14 12:36   ` Yao, Jiewen
2020-06-15 12:49     ` [edk2-devel] " Sami Mujawar
2020-06-10  8:17 ` [PATCH 4/5] StandaloneMmPkg: generate position independent code for StMM core Ard Biesheuvel
2020-06-10 18:21   ` [edk2-devel] " Sean
2020-06-10 18:33     ` Ard Biesheuvel
2020-06-14 12:38   ` Yao, Jiewen
2020-06-10  8:17 ` [PATCH 5/5] StandaloneMmPkg/StandaloneMmCoreEntryPoint: relocate StMM core on the fly Ard Biesheuvel
2020-06-14 12:37   ` [edk2-devel] " Yao, Jiewen
2020-06-15 13:59   ` Sami Mujawar
2020-06-15 14:12     ` Ard Biesheuvel
2020-06-15 14:40       ` Sami Mujawar
2020-06-10 10:21 ` [PATCH 0/5] StandaloneMmPkg: make StMM core relocatable Ilias Apalodimas
2020-06-12  9:58 ` Ard Biesheuvel
2020-06-16 16:16 ` Ard Biesheuvel

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-list 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=20200610081740.54581-1-ard.biesheuvel@arm.com \
    --to=devel@edk2.groups.io \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox