Message ID | 20210111212031.2422-1-vitaly.wool@konsulko.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | RISC-V: simplify BUILTIN_DTB processing | expand |
On 2021/01/12 6:21, Vitaly Wool wrote: > Provide __dtb_start as a parameter to setup_vm() in case > CONFIG_BUILTIN_DTB is true, so we don't have to duplicate > BUILTIN_DTB specific processing in MMU-enabled and MMU-disabled > versions of setup_vm(). > > Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com> > --- > arch/riscv/kernel/head.S | 4 ++++ > arch/riscv/mm/init.c | 4 ---- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S > index 16e9941900c4..f5a9bad86e58 100644 > --- a/arch/riscv/kernel/head.S > +++ b/arch/riscv/kernel/head.S > @@ -260,7 +260,11 @@ clear_bss_done: > > /* Initialize page tables and relocate to virtual addresses */ > la sp, init_thread_union + THREAD_SIZE > +#ifdef CONFIG_BUILTIN_DTB > + la a0, __dtb_start > +#else > mv a0, s1 > +#endif /* CONFIG_BUILTIN_DTB */ > call setup_vm > #ifdef CONFIG_MMU > la a0, early_pg_dir > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c > index 5b17f8d22f91..45faad7c4291 100644 > --- a/arch/riscv/mm/init.c > +++ b/arch/riscv/mm/init.c > @@ -615,11 +615,7 @@ static void __init setup_vm_final(void) > #else > asmlinkage void __init setup_vm(uintptr_t dtb_pa) > { > -#ifdef CONFIG_BUILTIN_DTB > - dtb_early_va = (void *) __dtb_start; > -#else > dtb_early_va = (void *)dtb_pa; > -#endif > dtb_early_pa = dtb_pa; > } > > Tested this with a nommu kernel on a MAIX bit board (K210 SoC). No problems detected. Tested-by: Damien Le Moal <damien.lemoal@wdc.com>
On Tue, Jan 12, 2021 at 2:51 AM Vitaly Wool <vitaly.wool@konsulko.com> wrote: > > Provide __dtb_start as a parameter to setup_vm() in case > CONFIG_BUILTIN_DTB is true, so we don't have to duplicate > BUILTIN_DTB specific processing in MMU-enabled and MMU-disabled > versions of setup_vm(). > > Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com> > --- > arch/riscv/kernel/head.S | 4 ++++ > arch/riscv/mm/init.c | 4 ---- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S > index 16e9941900c4..f5a9bad86e58 100644 > --- a/arch/riscv/kernel/head.S > +++ b/arch/riscv/kernel/head.S > @@ -260,7 +260,11 @@ clear_bss_done: > > /* Initialize page tables and relocate to virtual addresses */ > la sp, init_thread_union + THREAD_SIZE > +#ifdef CONFIG_BUILTIN_DTB > + la a0, __dtb_start > +#else > mv a0, s1 > +#endif /* CONFIG_BUILTIN_DTB */ > call setup_vm > #ifdef CONFIG_MMU > la a0, early_pg_dir > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c > index 5b17f8d22f91..45faad7c4291 100644 > --- a/arch/riscv/mm/init.c > +++ b/arch/riscv/mm/init.c > @@ -615,11 +615,7 @@ static void __init setup_vm_final(void) > #else > asmlinkage void __init setup_vm(uintptr_t dtb_pa) > { > -#ifdef CONFIG_BUILTIN_DTB > - dtb_early_va = (void *) __dtb_start; > -#else > dtb_early_va = (void *)dtb_pa; > -#endif > dtb_early_pa = dtb_pa; > } > > -- > 2.20.1 > We can avoid the early DTB mapping for MMU-enabled case when BUILTIN_DTB is enabled (same as previous discussion). Otherwise looks good to me. Reviewed-by: Anup Patel <anup@brainfault.org> Regards, Anup
On Fri, Jan 15, 2021 at 3:18 PM Vitaly Wool <vitaly.wool@konsulko.com> wrote: > > > > On Fri, 15 Jan 2021, 10:39 Anup Patel, <anup@brainfault.org> wrote: >> >> On Tue, Jan 12, 2021 at 2:51 AM Vitaly Wool <vitaly.wool@konsulko.com> wrote: >> > >> > Provide __dtb_start as a parameter to setup_vm() in case >> > CONFIG_BUILTIN_DTB is true, so we don't have to duplicate >> > BUILTIN_DTB specific processing in MMU-enabled and MMU-disabled >> > versions of setup_vm(). >> > >> > Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com> >> > --- >> > arch/riscv/kernel/head.S | 4 ++++ >> > arch/riscv/mm/init.c | 4 ---- >> > 2 files changed, 4 insertions(+), 4 deletions(-) >> > >> > diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S >> > index 16e9941900c4..f5a9bad86e58 100644 >> > --- a/arch/riscv/kernel/head.S >> > +++ b/arch/riscv/kernel/head.S >> > @@ -260,7 +260,11 @@ clear_bss_done: >> > >> > /* Initialize page tables and relocate to virtual addresses */ >> > la sp, init_thread_union + THREAD_SIZE >> > +#ifdef CONFIG_BUILTIN_DTB >> > + la a0, __dtb_start >> > +#else >> > mv a0, s1 >> > +#endif /* CONFIG_BUILTIN_DTB */ >> > call setup_vm >> > #ifdef CONFIG_MMU >> > la a0, early_pg_dir >> > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c >> > index 5b17f8d22f91..45faad7c4291 100644 >> > --- a/arch/riscv/mm/init.c >> > +++ b/arch/riscv/mm/init.c >> > @@ -615,11 +615,7 @@ static void __init setup_vm_final(void) >> > #else >> > asmlinkage void __init setup_vm(uintptr_t dtb_pa) >> > { >> > -#ifdef CONFIG_BUILTIN_DTB >> > - dtb_early_va = (void *) __dtb_start; >> > -#else >> > dtb_early_va = (void *)dtb_pa; >> > -#endif >> > dtb_early_pa = dtb_pa; >> > } >> > >> > -- >> > 2.20.1 >> > >> >> We can avoid the early DTB mapping for MMU-enabled case when >> BUILTIN_DTB is enabled (same as previous discussion). Otherwise >> looks good to me. > > > Right, but I had already submitted the patch which takes care of that, and you have reviewed it too IIRC :) Ahh, I assumed this patch is based on latest stable Linux-5.11-rcX. Either you can create a series with two patches OR you can squash this patch into your previous patch. Regards, Anup
On Fri, Jan 15, 2021 at 11:43 AM Anup Patel <anup@brainfault.org> wrote: > > On Fri, Jan 15, 2021 at 3:18 PM Vitaly Wool <vitaly.wool@konsulko.com> wrote: > > > > > > > > On Fri, 15 Jan 2021, 10:39 Anup Patel, <anup@brainfault.org> wrote: > >> > >> On Tue, Jan 12, 2021 at 2:51 AM Vitaly Wool <vitaly.wool@konsulko.com> wrote: > >> > > >> > Provide __dtb_start as a parameter to setup_vm() in case > >> > CONFIG_BUILTIN_DTB is true, so we don't have to duplicate > >> > BUILTIN_DTB specific processing in MMU-enabled and MMU-disabled > >> > versions of setup_vm(). > >> > > >> > Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com> > >> > --- > >> > arch/riscv/kernel/head.S | 4 ++++ > >> > arch/riscv/mm/init.c | 4 ---- > >> > 2 files changed, 4 insertions(+), 4 deletions(-) > >> > > >> > diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S > >> > index 16e9941900c4..f5a9bad86e58 100644 > >> > --- a/arch/riscv/kernel/head.S > >> > +++ b/arch/riscv/kernel/head.S > >> > @@ -260,7 +260,11 @@ clear_bss_done: > >> > > >> > /* Initialize page tables and relocate to virtual addresses */ > >> > la sp, init_thread_union + THREAD_SIZE > >> > +#ifdef CONFIG_BUILTIN_DTB > >> > + la a0, __dtb_start > >> > +#else > >> > mv a0, s1 > >> > +#endif /* CONFIG_BUILTIN_DTB */ > >> > call setup_vm > >> > #ifdef CONFIG_MMU > >> > la a0, early_pg_dir > >> > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c > >> > index 5b17f8d22f91..45faad7c4291 100644 > >> > --- a/arch/riscv/mm/init.c > >> > +++ b/arch/riscv/mm/init.c > >> > @@ -615,11 +615,7 @@ static void __init setup_vm_final(void) > >> > #else > >> > asmlinkage void __init setup_vm(uintptr_t dtb_pa) > >> > { > >> > -#ifdef CONFIG_BUILTIN_DTB > >> > - dtb_early_va = (void *) __dtb_start; > >> > -#else > >> > dtb_early_va = (void *)dtb_pa; > >> > -#endif > >> > dtb_early_pa = dtb_pa; > >> > } > >> > > >> > -- > >> > 2.20.1 > >> > > >> > >> We can avoid the early DTB mapping for MMU-enabled case when > >> BUILTIN_DTB is enabled (same as previous discussion). Otherwise > >> looks good to me. > > > > > > Right, but I had already submitted the patch which takes care of that, and you have reviewed it too IIRC :) > > Ahh, I assumed this patch is based on latest stable Linux-5.11-rcX. > > Either you can create a series with two patches OR you can squash this patch > into your previous patch. Fair enough, I'll come up with a new (aggregate) one. Best regards, Vitaly
diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index 16e9941900c4..f5a9bad86e58 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -260,7 +260,11 @@ clear_bss_done: /* Initialize page tables and relocate to virtual addresses */ la sp, init_thread_union + THREAD_SIZE +#ifdef CONFIG_BUILTIN_DTB + la a0, __dtb_start +#else mv a0, s1 +#endif /* CONFIG_BUILTIN_DTB */ call setup_vm #ifdef CONFIG_MMU la a0, early_pg_dir diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 5b17f8d22f91..45faad7c4291 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -615,11 +615,7 @@ static void __init setup_vm_final(void) #else asmlinkage void __init setup_vm(uintptr_t dtb_pa) { -#ifdef CONFIG_BUILTIN_DTB - dtb_early_va = (void *) __dtb_start; -#else dtb_early_va = (void *)dtb_pa; -#endif dtb_early_pa = dtb_pa; }
Provide __dtb_start as a parameter to setup_vm() in case CONFIG_BUILTIN_DTB is true, so we don't have to duplicate BUILTIN_DTB specific processing in MMU-enabled and MMU-disabled versions of setup_vm(). Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com> --- arch/riscv/kernel/head.S | 4 ++++ arch/riscv/mm/init.c | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-)