From c9655468e833997fa8df7da97b59b70a21d05397 Mon Sep 17 00:00:00 2001 From: Meng-Huan Yu Date: Tue, 1 Dec 2020 11:44:41 +0800 Subject: libpayload: Provide API to expose MMU memery ranges for ARM64 Provide get_mmu_ranges() for ARM64 to let payloads could get MMU ranges for all used memory regions. BUG=b:171858277 TEST=Build in x86, arm, arm64. emerge-zork libpayload depthcharge emerge-nyan libpayload depthcharge emerge-asurada libpayload depthcharge Signed-off-by: Meng-Huan Yu Change-Id: I39b24aefc9dbe530169b272e839d0e1e7c697742 Reviewed-on: https://review.coreboot.org/c/coreboot/+/48113 Tested-by: build bot (Jenkins) Reviewed-by: Julius Werner Reviewed-by: Yu-Ping Wu --- payloads/libpayload/arch/arm64/mmu.c | 5 +++++ payloads/libpayload/include/arm64/arch/mmu.h | 8 ++++++++ 2 files changed, 13 insertions(+) (limited to 'payloads') diff --git a/payloads/libpayload/arch/arm64/mmu.c b/payloads/libpayload/arch/arm64/mmu.c index cb0081b789..bc4c233479 100644 --- a/payloads/libpayload/arch/arm64/mmu.c +++ b/payloads/libpayload/arch/arm64/mmu.c @@ -705,3 +705,8 @@ void mmu_presysinfo_enable(void) mmu_init(&usedmem_ranges); mmu_enable(); } + +const struct mmu_ranges *mmu_get_used_ranges(void) +{ + return &usedmem_ranges; +} diff --git a/payloads/libpayload/include/arm64/arch/mmu.h b/payloads/libpayload/include/arm64/arch/mmu.h index 5a1dd98a59..2b1e9e120c 100644 --- a/payloads/libpayload/include/arm64/arch/mmu.h +++ b/payloads/libpayload/include/arm64/arch/mmu.h @@ -194,4 +194,12 @@ struct mmu_memrange* mmu_init_ranges_from_sysinfo(struct memrange *cb_ranges, */ void mmu_presysinfo_memory_used(uint64_t base, uint64_t size); void mmu_presysinfo_enable(void); + +/* + * Functions for exposing the used memory ranges to payloads. The ranges contain + * all used memory ranges that are actually used by payload. i.e. _start -> _end + * in linker script, the coreboot tables and framebuffer/DMA allocated in MMU + * initialization. + */ +const struct mmu_ranges *mmu_get_used_ranges(void); #endif // __ARCH_ARM64_MMU_H__ -- cgit v1.2.3