Re: [PATCH -next] riscv: mm: remove redundant trampoline PGD for 64bit

From: Sunnanyong (Nanyong Sun, Intelligent Computing Solution Development Dep)
Date: Tue Jul 27 2021 - 23:10:02 EST


在 2021/6/29 21:01, Alex Ghiti 写道:

Hi Nanyong,

Le 27/05/2021 à 16:48, Nanyong Sun a écrit :
Remove redundant trampoline PGD for 64bit and add more comment
for why 32bit systems need trampoline PGD.

There was a patch and discussion similar to this,refer to
the link [1][2].

The trampoline PGD is redundant for 64bit systems because:
1. The early PGD covers the entire kernel mapping. Directly
loading early PGD can achieve the result in boot stage.
A more trampoline PGD makes code hard to understand.
2. Directly loading early PGD is safe in 64bit systems since
the kernel virtual address starts as 0xFFFFxxxxxxxxxxxx,
which has a very big gap with RAM address.It won't fall into
the corner case that 32bit system worrys.
3. Remove redundant trampoline PGD can benefit to code maintaince,
because 64bit systems have more page table levels.For example:
If we want to support SV48 which has 4 page table levels, we have
to add a trampoline_pud and insert it before trampoline_pmd.

I do agree with your last point about code maintenance and this would be a welcome improvement before I respin my sv48 series.

Some comments below though.


Reference link:
[1]https://lore.kernel.org/linux-riscv/20190325092234.5451-4-anup.patel@xxxxxxx/
[2]https://lkml.org/lkml/2019/3/28/147

Signed-off-by: Nanyong Sun <sunnanyong@xxxxxxxxxx>
---
  arch/riscv/kernel/head.S | 13 +++++++++++--
  arch/riscv/mm/init.c     | 21 +++++++--------------
  2 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
index 89cc58ab52b4..1897b17c5fcc 100644
--- a/arch/riscv/kernel/head.S
+++ b/arch/riscv/kernel/head.S
@@ -93,12 +93,18 @@ relocate:
      add a2, a2, a1
      csrw CSR_TVEC, a2

This is not needed in 64-bit then.


I'm afraid this is still needed for 64-bit, which can convert the physical address world to the virtual address world.

I also have made a experiment, it could not boot up if this is deleted.

Thanks,

Alex
.

Hi Alex,

    Very thanks for your carefully review, I have updated to version two just now : )