History log of /device/linaro/bootloader/edk2/ArmVirtPkg/Library/ArmVirtPlatformLib/VirtMem.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
94904a84772cf4f5eeb85f6a4f8b3df790e4a5f4 27-Nov-2015 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmVirtPkg: drop ArmPlatformGlobalVariableLib dependency

Now that all PeiServicesTablePointerLib and PrePiHobListPointerLib
library dependencies in both ArmVirtQemu and ArmVirtXen are satisfied
by implementations that do not depend on ArmPlatformGlobalVariableLib,
we can remove all mention of it from the various .dsc files.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18986 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmVirtPkg/Library/ArmVirtPlatformLib/VirtMem.c
1dc3f34f61044a19573b1ecc507081bfcb075739 24-Nov-2015 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmVirtPkg/ArmVirtPlatformLib: reduce ID map size to GCD region size

The ID mapping routines on virtual platforms simply map the entire
hardware supported physical address space as device memory, and then
punch some holes for regions that need to be mapped cacheable.
On virtual platforms hosted on CPUs that support a large physical
address range, this may result in a lot of overhead, i.e., 4 KB of page
tables for each 512 GB of address space, which quickly adds up (i.e.,
2 MB for the architectural maximum of 48 bits).

Since there may be a platform specific limit to the size of the (I)PA
space that is not reflected by CPU id registers, restrict the range of
the ID mapping to gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize bits.
This makes sense by itself, since we cannot manipulate mappings above
that limit anwyay (because they are not covered by GCD), and it allows
the PCD be set to a lower value by platforms whose (I)PA space is
smaller than the hardware supported maximum.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Wei Huang <wei@redhat.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18929 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmVirtPkg/Library/ArmVirtPlatformLib/VirtMem.c
dca7f96fd246130cfa7ffa29aa81e0d956ed413b 18-Nov-2015 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmVirtPkg/ArmVirtPlatformLib: map executable NOR region as normal memory

The ARM architecture version 7 and later mandates that device mappings
have the XN (non-executable) bit set, to prevent speculative instruction
fetches from read-sensitive regions. This implies that we should not map
regions as device if we want to execute from them, so the NOR region that
contains our FD image should be mapped as normal memory instead.

The MMU code deals correctly with overlapping ARM_MEMORY_REGION_DESCRIPTOR
entries, and later entries in the array take precedence over earlier ones.
So simply add an entry to the end of the array that overrides the mapping
attributes of the FD image, wherever it resides.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18889 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmVirtPkg/Library/ArmVirtPlatformLib/VirtMem.c
7fbd1eb2312d3dfab2ac8cdfcefc234c73d8aeeb 29-May-2015 Olivier Martin <olivier.martin@arm.com> Renamed ArmPlatformPkg/ArmVirtualizationPkg into ArmVirtPkg

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Laszlo Ersek <lersek@redhat.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17537 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmVirtPkg/Library/ArmVirtPlatformLib/VirtMem.c