Message ID | 20181128143357.991-1-ard.biesheuvel@linaro.org |
---|---|
Headers | show |
Series | Pkg: lift 40-bit IPA space limit | expand |
On Wed, 28 Nov 2018 at 15:34, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > > 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 > Thanks all for the reviews. Patches #1 .. #15 pushed as e979ea74aa14..55342094fb86 Patch #16 needs to wait until edk2-platforms is brought up to date with the removal of PcdPrePiCpuMemorySize _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On Thu, 29 Nov 2018 at 18:59, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > > On Wed, 28 Nov 2018 at 15:34, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > > > > 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 > > > > Thanks all for the reviews. > > Patches #1 .. #15 pushed as e979ea74aa14..55342094fb86 > > Patch #16 needs to wait until edk2-platforms is brought up to date > with the removal of PcdPrePiCpuMemorySize Patch #16 now merged as 55342094fb86..bcf2a9db1f8e _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel