From 24d3da32edea5e949ea49384fe03a07a08f446dc Mon Sep 17 00:00:00 2001 From: "TOIDA,Suguru" Date: Fri, 30 Nov 2018 09:18:15 +0900 Subject: [PATCH] ContiguousPTE[6/12] modify arch_get_smaller_page_size Change-Id: I4fe8c36cf9561b3ee895f29b112f0ac6f2418f5e --- arch/arm64/kernel/memory.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/memory.c b/arch/arm64/kernel/memory.c index a9ab6af7..5ac7ae70 100644 --- a/arch/arm64/kernel/memory.c +++ b/arch/arm64/kernel/memory.c @@ -2591,14 +2591,28 @@ int arch_get_smaller_page_size(void *args, size_t cursize, size_t *newsizep, /* dummy */ panic("not reached"); } - else if ((cursize > PTL3_SIZE) && CONFIG_ARM64_PGTABLE_LEVELS > 2) { + else if (CONFIG_ARM64_PGTABLE_LEVELS > 2 && + cursize > PTL3_CONT_SIZE) { + newsize = PTL3_CONT_SIZE; + p2align = PTL3_CONT_SHIFT - PTL1_SHIFT; + } + else if (CONFIG_ARM64_PGTABLE_LEVELS > 2 && + cursize > PTL3_SIZE) { newsize = PTL3_SIZE; p2align = PTL3_SHIFT - PTL1_SHIFT; } + else if (cursize > PTL2_CONT_SIZE) { + newsize = PTL2_CONT_SIZE; + p2align = PTL2_CONT_SHIFT - PTL1_SHIFT; + } else if (cursize > PTL2_SIZE) { newsize = PTL2_SIZE; p2align = PTL2_SHIFT - PTL1_SHIFT; } + else if (cursize > PTL1_CONT_SIZE) { + newsize = PTL1_CONT_SIZE; + p2align = PTL1_CONT_SHIFT - PTL1_SHIFT; + } else if (cursize > PTL1_SIZE) { newsize = PTL1_SIZE; p2align = PTL1_SHIFT - PTL1_SHIFT;