[PATCH 1/3] MIPS: Crash kernel should be able to see old memories

Huacai Chen chenhc at lemote.com
Tue Sep 22 22:58:04 EDT 2020


Hi, Baoquan,

On Wed, Sep 23, 2020 at 10:46 AM Baoquan He <bhe at redhat.com> wrote:
>
> On 09/23/20 at 10:30am, Huacai Chen wrote:
> > Kexec-tools use mem=X at Y to pass usable memories to crash kernel, but in
> > commit a94e4f24ec836c8984f83959 ("MIPS: init: Drop boot_mem_map") all
> > BIOS passed memories are removed by early_parse_mem(). I think this is
> > reasonable for a normal kernel but not for a crash kernel, because a
> > crash kernel should be able to see all old memories, even though it is
> > not supposed to use them.
>
> I am not familiar with MIPS code, but we analyze and fill memmap= to
> pass usable memory to crashkenrel in kexec-tools, do you mean you are
> specifying memmap= or mem= by hand?
Not by hand, but by code of kexec-tools via the "mem=" parameter.

As I know, kexec-tools of MIPS only use "mem=" to pass "usable"
memory, but not "visible" memory. "Visible" memory of the crash kernel
is still passed by BIOS (strictly, by the old kernel who duplicates
information from BIOS). If memblock_remove() executed here, it would
remove all "visible" memory and make "visible" memory the same as
"usable" memory, and I think this is not correct.

>
> And we don't have mem=X at Y, only mem=nn[KMG].
The relocatable kernel of MIPS is still unusable now, so MIPS should
use mem=X at Y, and the crash kernel is always different from normal
kernel.

Huacai

>
> >
> > Fixes: a94e4f24ec836c8984f83959 ("MIPS: init: Drop boot_mem_map")
> > Signed-off-by: Huacai Chen <chenhc at lemote.com>
> > ---
> >  arch/mips/kernel/setup.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
> > index 4c04a86..e2804a2 100644
> > --- a/arch/mips/kernel/setup.c
> > +++ b/arch/mips/kernel/setup.c
> > @@ -392,8 +392,10 @@ static int __init early_parse_mem(char *p)
> >        */
> >       if (usermem == 0) {
> >               usermem = 1;
> > +#ifndef CONFIG_CRASH_DUMP
> >               memblock_remove(memblock_start_of_DRAM(),
> >                       memblock_end_of_DRAM() - memblock_start_of_DRAM());
> > +#endif
> >       }
> >       start = 0;
> >       size = memparse(p, &p);
> > --
> > 2.7.0
> >
>



More information about the kexec mailing list