Attention is currently required from: Julius Werner.
Yu-Ping Wu has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/83652?usp=email )
Change subject: arch/arm64/armv8/mmu: Improve log format ......................................................................
arch/arm64/armv8/mmu: Improve log format
When using format string with "%p", "(nil)" will be printed for address 0. To improve readability of the printed addresses in the log, change the format to "0x%013lx", so that the length of the printed addresses will be consistent.
In addition, print the level of the translation table when setting up a new table.
Example log:
Backing address range [0x0000000000000:0x1000000000000) with new L0 ... Mapping address range [0x0000000000000:0x0000200000000) as ... Backing address range [0x0000000000000:0x0008000000000) with new L1 ... Mapping address range [0x0000000100000:0x0000000130000) as ... Backing address range [0x0000000000000:0x0000040000000) with new L2 Backing address range [0x0000000000000:0x0000000200000) with new L3 Mapping address range [0x0000000107000:0x0000000108000) as ... Mapping address range [0x0000000200000:0x0000000300000) as ... Backing address range [0x0000000000000:0x0000000200000) with new L3 ...
BUG=none TEST=emerge-geralt coreboot BRANCH=none
Change-Id: Ib29c201e1b096b9c7cd750d2541923616bc858ac Signed-off-by: Yu-Ping Wu yupingso@chromium.org --- M src/arch/arm64/armv8/mmu.c 1 file changed, 30 insertions(+), 5 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/52/83652/1
diff --git a/src/arch/arm64/armv8/mmu.c b/src/arch/arm64/armv8/mmu.c index 0f84146..65d0f92 100644 --- a/src/arch/arm64/armv8/mmu.c +++ b/src/arch/arm64/armv8/mmu.c @@ -11,6 +11,9 @@ #include <arch/mmu.h> #include <console/console.h>
+/* 12 hex digits (48 bits VA) plus 1 for exclusive upper bound. */ +#define ADDR_FMT "0x%013lx" + /* This just caches the next free table slot (okay to do since they fill up from * bottom to top and can never be freed up again). It will reset to its initial * value on stage transition, so we still need to check it for UNUSED_DESC. */ @@ -54,6 +57,25 @@ return attr; }
+/* Func : table_level_name + * Desc : Get the descriptions table level name from the given size. + */ +static const char *table_level_name(size_t xlat_size) +{ + switch (xlat_size) { + case L0_XLAT_SIZE: + return "L0"; + case L1_XLAT_SIZE: + return "L1"; + case L2_XLAT_SIZE: + return "L2"; + case L3_XLAT_SIZE: + return "L3"; + default: + return ""; + } +} + /* Func : setup_new_table * Desc : Get next free table from TTB and set it up to match old parent entry. */ @@ -66,9 +88,12 @@ }
void *frame_base = (void *)(desc & XLAT_ADDR_MASK); - printk(BIOS_DEBUG, "Backing address range [%p:%p) with new page" - " table @%p\n", frame_base, frame_base + - (xlat_size << BITS_RESOLVED_PER_LVL), next_free_table); + const char *level_name = table_level_name(xlat_size); + printk(BIOS_DEBUG, + "Backing address range [" ADDR_FMT ":" ADDR_FMT ") with new %s table @%p\n", + (uintptr_t)frame_base, + (uintptr_t)frame_base + (xlat_size << BITS_RESOLVED_PER_LVL), + level_name, next_free_table);
if (!desc) { memset(next_free_table, 0, GRANULE_SIZE); @@ -213,8 +238,8 @@ uint64_t base_addr = (uintptr_t)start; uint64_t temp_size = size;
- printk(BIOS_INFO, "Mapping address range [%p:%p) as ", - start, start + size); + printk(BIOS_INFO, "Mapping address range [" ADDR_FMT ":" ADDR_FMT ") as ", + (uintptr_t)start, (uintptr_t)start + size); print_tag(BIOS_INFO, tag);
sanity_check(base_addr, temp_size);