diff mbox series

RISC-V: simplify BUILTIN_DTB processing

Message ID 20210111212031.2422-1-vitaly.wool@konsulko.com
State New
Headers show
Series RISC-V: simplify BUILTIN_DTB processing | expand

Commit Message

Vitaly Wool Jan. 11, 2021, 9:20 p.m. UTC
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(-)

Comments

Damien Le Moal Jan. 12, 2021, 4:56 a.m. UTC | #1
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>
Anup Patel Jan. 15, 2021, 9:39 a.m. UTC | #2
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
Anup Patel Jan. 15, 2021, 10:43 a.m. UTC | #3
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
Vitaly Wool Jan. 15, 2021, 8:18 p.m. UTC | #4
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 mbox series

Patch

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;
 }