Messages in this thread | | | Subject | Re: [PATCH -next] riscv: mm: remove redundant trampoline PGD for 64bit | From | "Sunnanyong (Nanyong Sun, Intelligent Computing Solution Development Dep)" <> | Date | Wed, 28 Jul 2021 11:09:47 +0800 |
| |
在 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@wdc.com/ >> >> [2]https://lkml.org/lkml/2019/3/28/147 >> >> Signed-off-by: Nanyong Sun <sunnanyong@huawei.com> >> --- >> 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 : )
| |