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

From: Sunnanyong (Nanyong Sun, Intelligent Computing Solution Development Dep)
Date: Thu Jun 17 2021 - 05:38:38 EST


On 2021/5/27 22:48, Nanyong Sun wrote:

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.

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

Long time no response.

Hi anup,

    do you agree this?