diff mbox series

[4/5] riscv: Add modules to virtual kernel memory layout dump

Message ID 20220717101323.370245-5-xianting.tian@linux.alibaba.com (mailing list archive)
State New, archived
Headers show
Series Fixups to work with crash tool | expand

Commit Message

Xianting Tian July 17, 2022, 10:13 a.m. UTC
Modules always live before the kernel, MODULES_END is fixed but
MODULES_VADDR isn't fixed, it depends on the kernel size.
Let's add it to virtual kernel memory layout dump.

As MODULES is only defined for CONFIG_64BIT, so we dump it when
CONFIG_64BIT=y.

eg,
MODULES_VADDR - MODULES_END
0xffffffff01133000 - 0xffffffff80000000

Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com>
---
 arch/riscv/mm/init.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Heiko Stübner July 22, 2022, 7:24 a.m. UTC | #1
Am Sonntag, 17. Juli 2022, 12:13:22 CEST schrieb Xianting Tian:
> Modules always live before the kernel, MODULES_END is fixed but
> MODULES_VADDR isn't fixed, it depends on the kernel size.
> Let's add it to virtual kernel memory layout dump.
> 
> As MODULES is only defined for CONFIG_64BIT, so we dump it when
> CONFIG_64BIT=y.
> 
> eg,
> MODULES_VADDR - MODULES_END
> 0xffffffff01133000 - 0xffffffff80000000
> 
> Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com>

I'm still not sure if it would be better to define MODULES_* constants
even on 32bit (with their VMALLOC_START etc values) and prevent
needing the CONFIG_64BIT ifdef, but that's for others to decide :-)

The below also looks good, so
Reviewed-by: Heiko Stuebner <heiko@sntech.de>

> ---
>  arch/riscv/mm/init.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
> index d466ec670e1f..2c4a64e97aec 100644
> --- a/arch/riscv/mm/init.c
> +++ b/arch/riscv/mm/init.c
> @@ -135,6 +135,10 @@ static void __init print_vm_layout(void)
>  		(unsigned long)VMEMMAP_END);
>  	print_ml("vmalloc", (unsigned long)VMALLOC_START,
>  		(unsigned long)VMALLOC_END);
> +#ifdef CONFIG_64BIT
> +	print_ml("modules", (unsigned long)MODULES_VADDR,
> +		(unsigned long)MODULES_END);
> +#endif
>  	print_ml("lowmem", (unsigned long)PAGE_OFFSET,
>  		(unsigned long)high_memory);
>  	if (IS_ENABLED(CONFIG_64BIT)) {
>
Guo Ren July 22, 2022, 7:51 a.m. UTC | #2
On Fri, Jul 22, 2022 at 3:24 PM Heiko Stübner <heiko@sntech.de> wrote:
>
> Am Sonntag, 17. Juli 2022, 12:13:22 CEST schrieb Xianting Tian:
> > Modules always live before the kernel, MODULES_END is fixed but
> > MODULES_VADDR isn't fixed, it depends on the kernel size.
> > Let's add it to virtual kernel memory layout dump.
> >
> > As MODULES is only defined for CONFIG_64BIT, so we dump it when
> > CONFIG_64BIT=y.
> >
> > eg,
> > MODULES_VADDR - MODULES_END
> > 0xffffffff01133000 - 0xffffffff80000000
> >
> > Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com>
>
> I'm still not sure if it would be better to define MODULES_* constants
> even on 32bit (with their VMALLOC_START etc values) and prevent
> needing the CONFIG_64BIT ifdef, but that's for others to decide :-)
There is no MODULES_VADDR for 32-bit, because it reuses vmalloc area.

We should print MODULES_VADDR here to make people clear to know.

Reviewed-by: Guo Ren <guoren@kernel.org>

>
> The below also looks good, so
> Reviewed-by: Heiko Stuebner <heiko@sntech.de>
>
> > ---
> >  arch/riscv/mm/init.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
> > index d466ec670e1f..2c4a64e97aec 100644
> > --- a/arch/riscv/mm/init.c
> > +++ b/arch/riscv/mm/init.c
> > @@ -135,6 +135,10 @@ static void __init print_vm_layout(void)
> >               (unsigned long)VMEMMAP_END);
> >       print_ml("vmalloc", (unsigned long)VMALLOC_START,
> >               (unsigned long)VMALLOC_END);
> > +#ifdef CONFIG_64BIT
> > +     print_ml("modules", (unsigned long)MODULES_VADDR,
> > +             (unsigned long)MODULES_END);
> > +#endif
> >       print_ml("lowmem", (unsigned long)PAGE_OFFSET,
> >               (unsigned long)high_memory);
> >       if (IS_ENABLED(CONFIG_64BIT)) {
> >
>
>
>
>
Andreas Schwab July 22, 2022, 10:10 a.m. UTC | #3
On Jul 17 2022, Xianting Tian wrote:

> diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
> index d466ec670e1f..2c4a64e97aec 100644
> --- a/arch/riscv/mm/init.c
> +++ b/arch/riscv/mm/init.c
> @@ -135,6 +135,10 @@ static void __init print_vm_layout(void)
>  		(unsigned long)VMEMMAP_END);
>  	print_ml("vmalloc", (unsigned long)VMALLOC_START,
>  		(unsigned long)VMALLOC_END);
> +#ifdef CONFIG_64BIT
> +	print_ml("modules", (unsigned long)MODULES_VADDR,
> +		(unsigned long)MODULES_END);

#ifdef MODULES_VADDR ?
Xianting Tian July 22, 2022, 12:49 p.m. UTC | #4
在 2022/7/22 下午6:10, Andreas Schwab 写道:
> On Jul 17 2022, Xianting Tian wrote:
>
>> diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
>> index d466ec670e1f..2c4a64e97aec 100644
>> --- a/arch/riscv/mm/init.c
>> +++ b/arch/riscv/mm/init.c
>> @@ -135,6 +135,10 @@ static void __init print_vm_layout(void)
>>   		(unsigned long)VMEMMAP_END);
>>   	print_ml("vmalloc", (unsigned long)VMALLOC_START,
>>   		(unsigned long)VMALLOC_END);
>> +#ifdef CONFIG_64BIT
>> +	print_ml("modules", (unsigned long)MODULES_VADDR,
>> +		(unsigned long)MODULES_END);
> #ifdef MODULES_VADDR ?
Maybe CONFIG_64BIT is better, it shows more infos(64bit defined, 32bit 
not). If use MODULES_VADD, people may doubt which conditions 
MODULES_VADD is not defined?
>
diff mbox series

Patch

diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
index d466ec670e1f..2c4a64e97aec 100644
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@ -135,6 +135,10 @@  static void __init print_vm_layout(void)
 		(unsigned long)VMEMMAP_END);
 	print_ml("vmalloc", (unsigned long)VMALLOC_START,
 		(unsigned long)VMALLOC_END);
+#ifdef CONFIG_64BIT
+	print_ml("modules", (unsigned long)MODULES_VADDR,
+		(unsigned long)MODULES_END);
+#endif
 	print_ml("lowmem", (unsigned long)PAGE_OFFSET,
 		(unsigned long)high_memory);
 	if (IS_ENABLED(CONFIG_64BIT)) {