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 |
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)) { >
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)) { > > > > > >
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 ?
在 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 --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)) {
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(+)