From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: edk2-devel@lists.01.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Laszlo Ersek <lersek@redhat.com>,
Leif Lindholm <leif.lindholm@linaro.org>,
Eric Auger <eric.auger@redhat.com>,
Andrew Jones <drjones@redhat.com>,
Philippe Mathieu-Daude <philmd@redhat.com>,
Julien Grall <julien.grall@linaro.org>
Subject: [PATCH v3 00/16] [Arm|ArmVirt|MdePkg|Embedded]Pkg: lift 40-bit IPA space limit
Date: Wed, 28 Nov 2018 15:33:41 +0100 [thread overview]
Message-ID: <20181128143357.991-1-ard.biesheuvel@linaro.org> (raw)
This v3 subsumes and/or supersedes
[PATCH v2 00/13] ArmPkg, ArmVirtPkg: lift 40-bit IPA space limit
[PATCH] MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits
[PATCH v2 0/2] ArmVirtPkg: remove high peripheral space mapping
The ArmVirtQemu targets currently limit the size of the IPA space to
40 bits because that is all what KVM supports. However, this is about
to change, and so we need to update the code if we want to ensure that
our UEFI firmware builds can keep running on systems that set values
other than 40 (which could be > 40 or < 40)
This series refactors how we handle the maximum size of the physical
address space supported by the CPU in relation with the size of UEFI's
1:1 mapping and the size of the GCD memory space map, taking the following
observations into account:
- the range of the linear mapping can be tied to whatever the CPU supports
(as long as it doesn't exceed what the architecture permits for 4k pages)
since we mostly already use the maximum of 4 levels anyway, and there is
no memory cost involved beyond that
- there is usually no point in mapping the entire address space, which does
involve a memory cost
- the GCD memory space may be required to cover more than what UEFI can
address itself, since it is the based for the UEFI memory map that is
provided to the OS
Patches #1 and #2 remove some unused code to avoid having to fix it.
Patches #3 and #4 update ArmVirtQemu and ArmVirtQemuKernel to drop the high
peripheral space mapping, and map whatever may reside there explicitly
(currently only the ECAM space in practice, but the MMIO view of the PCI
I/O space is mapped explicitly as well)
Patch #5 was sent out before individually, and sets MAX_ADDRESS to the
maximum value AArch64 can map in UEFI which runs with 4k pages.
Patch #6 adds a helper to ArmLib to read the number of supported address
bits and take this into account in the page table code (#8), which allows
PcdPrePiCpuMemorySize to assume a value that exceeds the capabilities of
the CPU.
Patch #7 is mostly a cleanup patch, to switch to the new helper added in
patch #6. No functional changes intended.
Patches #9 to #12 modify building of the CPU hob (and thus the size of the
GCD memory space) based on the CPU capabilities rather than the value of
PcdPrePiCpuMemorySize, which is dropped in the last patch.
Pacthes #13 and #14 remove some needless references to PcdPrePiCpuMemorySize
Patch #15 drops the overrides of PcdPrePiCpuMemorySize from all ArmVirtPkg
platforms.
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Eric Auger <eric.auger@redhat.com>
Cc: Andrew Jones <drjones@redhat.com>
Cc: Philippe Mathieu-Daude <philmd@redhat.com>
Cc: Julien Grall <julien.grall@linaro.org>
Ard Biesheuvel (16):
EmbeddedPkg/TemplateSec: remove unused module
EmbeddedPkg/PrePiHobLib: drop CreateHobList() from library
ArmVirtPkg/FdtPciHostBridgeLib: map ECAM and I/O spaces in GCD memory
map
ArmVirtPkg/QemuVirtMemInfoLib: remove 1:1 mapping of top of PA range
MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits
ArmPkg/ArmLib: add support for reading the max physical address space
size
ArmVirtPkg/XenVirtMemInfoLib: refactor reading of the PA space size
ArmPkg/ArmMmuLib: take the CPU supported maximum PA space into account
ArmPkg/CpuPei: base GCD memory space size on CPU's PA range
ArmPlatformPkg/PrePi: base GCD memory space size on CPU's PA range
ArmVirtPkg/PrePi: base GCD memory space size on CPU's PA range
BeagleBoardPkg/PrePi: base GCD memory space size on CPU's PA range
ArmPlatformPkg/PlatformPei: drop unused PCD references
EmbeddedPkg/PrePiLib: drop unused PCD reference
ArmVirtPkg: drop PcdPrePiCpuMemorySize assignments from all platforms
EmbeddedPkg/EmbeddedPkg.dec: drop PcdPrePiCpuMemorySize declarations
EmbeddedPkg/EmbeddedPkg.dec | 4 -
ArmVirtPkg/ArmVirt.dsc.inc | 3 -
ArmVirtPkg/ArmVirtQemu.dsc | 4 -
ArmVirtPkg/ArmVirtQemuKernel.dsc | 4 -
ArmPkg/Drivers/CpuPei/CpuPei.inf | 1 -
ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf | 3 -
ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf | 3 -
ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf | 3 -
ArmPlatformPkg/PlatformPei/PlatformPeim.inf | 3 -
ArmPlatformPkg/PrePi/PeiMPCore.inf | 1 -
ArmPlatformPkg/PrePi/PeiUniCore.inf | 1 -
.../FdtPciHostBridgeLib.inf | 1 +
.../QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf | 7 --
.../QemuVirtMemInfoPeiLib.inf | 7 --
.../XenVirtMemInfoLib/XenVirtMemInfoLib.inf | 6 --
.../PrePi/ArmVirtPrePiUniCoreRelocatable.inf | 1 -
BeagleBoardPkg/PrePi/PeiUniCore.inf | 1 -
EmbeddedPkg/Library/PrePiLib/PrePiLib.inf | 1 -
EmbeddedPkg/TemplateSec/TemplateSec.inf | 65 ----------------
ArmPkg/Include/Library/ArmLib.h | 6 ++
EmbeddedPkg/Include/Library/PrePiLib.h | 18 -----
MdePkg/Include/AArch64/ProcessorBind.h | 4 +-
ArmPkg/Drivers/CpuPei/CpuPei.c | 2 +-
.../Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 11 ++-
ArmPlatformPkg/PrePi/PrePi.c | 2 +-
.../FdtPciHostBridgeLib/FdtPciHostBridgeLib.c | 46 ++++++++++-
.../QemuVirtMemInfoLib/QemuVirtMemInfoLib.c | 25 ++----
.../XenVirtMemInfoLib/XenVirtMemInfoLib.c | 11 ++-
ArmVirtPkg/PrePi/PrePi.c | 2 +-
BeagleBoardPkg/PrePi/PrePi.c | 2 +-
EmbeddedPkg/Library/PrePiHobLib/Hob.c | 41 ----------
EmbeddedPkg/TemplateSec/TemplateSec.c | 76 -------------------
ArmPkg/Library/ArmLib/AArch64/ArmLibSupport.S | 17 +++++
ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S | 8 ++
ArmPkg/Library/ArmLib/Arm/ArmLibSupport.asm | 8 ++
.../QemuVirtMemInfoLib/AArch64/PhysAddrTop.S | 39 ----------
.../QemuVirtMemInfoLib/Arm/PhysAddrTop.S | 24 ------
.../XenVirtMemInfoLib/AArch64/PhysAddrTop.S | 39 ----------
.../XenVirtMemInfoLib/Arm/PhysAddrTop.S | 24 ------
39 files changed, 110 insertions(+), 414 deletions(-)
delete mode 100644 EmbeddedPkg/TemplateSec/TemplateSec.inf
delete mode 100644 EmbeddedPkg/TemplateSec/TemplateSec.c
delete mode 100644 ArmVirtPkg/Library/QemuVirtMemInfoLib/AArch64/PhysAddrTop.S
delete mode 100644 ArmVirtPkg/Library/QemuVirtMemInfoLib/Arm/PhysAddrTop.S
delete mode 100644 ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S
delete mode 100644 ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S
--
2.19.1
next reply other threads:[~2018-11-28 14:34 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-28 14:33 Ard Biesheuvel [this message]
2018-11-28 14:33 ` [PATCH v3 01/16] EmbeddedPkg/TemplateSec: remove unused module Ard Biesheuvel
2018-11-28 17:55 ` Laszlo Ersek
2018-11-29 15:39 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 02/16] EmbeddedPkg/PrePiHobLib: drop CreateHobList() from library Ard Biesheuvel
2018-11-28 17:58 ` Laszlo Ersek
2018-11-29 15:40 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 03/16] ArmVirtPkg/FdtPciHostBridgeLib: map ECAM and I/O spaces in GCD memory map Ard Biesheuvel
2018-11-28 18:00 ` Laszlo Ersek
2018-11-28 14:33 ` [PATCH v3 04/16] ArmVirtPkg/QemuVirtMemInfoLib: remove 1:1 mapping of top of PA range Ard Biesheuvel
2018-11-28 15:06 ` Philippe Mathieu-Daudé
2018-11-28 18:05 ` Laszlo Ersek
2018-11-28 14:33 ` [PATCH v3 05/16] MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits Ard Biesheuvel
2018-11-28 18:41 ` Laszlo Ersek
2018-11-29 10:40 ` Ard Biesheuvel
2018-11-29 11:34 ` Laszlo Ersek
2018-11-29 15:19 ` Gao, Liming
2018-11-28 14:33 ` [PATCH v3 06/16] ArmPkg/ArmLib: add support for reading the max physical address space size Ard Biesheuvel
2018-11-28 14:41 ` Philippe Mathieu-Daudé
2018-11-28 18:44 ` Laszlo Ersek
2018-11-29 15:42 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 07/16] ArmVirtPkg/XenVirtMemInfoLib: refactor reading of the PA " Ard Biesheuvel
2018-11-28 14:44 ` Philippe Mathieu-Daudé
2018-11-28 18:47 ` Laszlo Ersek
2018-11-28 14:33 ` [PATCH v3 08/16] ArmPkg/ArmMmuLib: take the CPU supported maximum PA space into account Ard Biesheuvel
2018-11-28 14:46 ` Philippe Mathieu-Daudé
2018-11-28 19:26 ` Laszlo Ersek
2018-11-29 15:43 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 09/16] ArmPkg/CpuPei: base GCD memory space size on CPU's PA range Ard Biesheuvel
2018-11-28 15:01 ` Philippe Mathieu-Daudé
2018-11-28 19:51 ` Laszlo Ersek
2018-11-29 15:43 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 10/16] ArmPlatformPkg/PrePi: " Ard Biesheuvel
2018-11-28 15:01 ` Philippe Mathieu-Daudé
2018-11-28 19:53 ` Laszlo Ersek
2018-11-29 15:44 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 11/16] ArmVirtPkg/PrePi: " Ard Biesheuvel
2018-11-28 15:02 ` Philippe Mathieu-Daudé
2018-11-28 19:52 ` Laszlo Ersek
2018-11-28 14:33 ` [PATCH v3 12/16] BeagleBoardPkg/PrePi: " Ard Biesheuvel
2018-11-28 15:02 ` Philippe Mathieu-Daudé
2018-11-28 19:53 ` Laszlo Ersek
2018-11-29 15:44 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 13/16] ArmPlatformPkg/PlatformPei: drop unused PCD references Ard Biesheuvel
2018-11-28 19:54 ` Laszlo Ersek
2018-11-29 15:45 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 14/16] EmbeddedPkg/PrePiLib: drop unused PCD reference Ard Biesheuvel
2018-11-28 19:55 ` Laszlo Ersek
2018-11-29 15:46 ` Leif Lindholm
2018-11-28 14:33 ` [PATCH v3 15/16] ArmVirtPkg: drop PcdPrePiCpuMemorySize assignments from all platforms Ard Biesheuvel
2018-11-28 19:56 ` Laszlo Ersek
2018-11-28 14:33 ` [PATCH v3 16/16] EmbeddedPkg/EmbeddedPkg.dec: drop PcdPrePiCpuMemorySize declarations Ard Biesheuvel
2018-11-28 19:57 ` Laszlo Ersek
2018-11-29 15:46 ` Leif Lindholm
2018-11-29 17:59 ` [PATCH v3 00/16] [Arm|ArmVirt|MdePkg|Embedded]Pkg: lift 40-bit IPA space limit Ard Biesheuvel
2018-11-30 21:45 ` 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=20181128143357.991-1-ard.biesheuvel@linaro.org \
--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