Re: kexec, x86: Need a new e820 type support for kexec

Baoquan He
2015-08-18T08:53:37Z

On 08/06/15 at 07:13pm, Toshi Kani wrote:
> On Thu, 2015-08-06 at 16:12 +0800, Baoquan He wrote:
> E820_PMEM cannot be emulated by the "memmap=" option. Do you have to use
> the "memmap=" options to pass the ranges for kdump kernel? If so, I'd
> rather ignore E820_PMEM and let it be passed as E820_RESERVED. The kdump
> kernel can still obtain the info from NFIT if necessary.
>
> As for the code change...
>
> > @@ -640,6 +644,8 @@ static void cmdline_add_memmap_internal(char *cmdline,
> > unsigned long startk,
> > strcat (str_mmap, "K$");
> > else if (type == RANGE_ACPI || type == RANGE_ACPI_NVS)
> > strcat (str_mmap, "K#");
> > + else if (type == RANGE_PMEM || type == RANGE_PRAM)
> > + strcat (str_mmap, "K!");
>
> It should only check with RANGE_PRAM, but I do not think this change matters
> much unless you also modify the caller cmdline_add_memmap(), which has the
> following check to skip other types. I do not think we will use legacy
> NVDIMM device as a dump device, so you may ignore RANGE_PRAM and let it be
> passed as RESERVED as well (which is likely the case I tested with).

Rethink it again, maybe it's better to pass PMEM as PRAM to kdump
kernel if user really want to use memmap way by specifying
--pass-memmap-cmdline. Then I need add the PMEM and PRAM checking here
you pointed out. Will repost with them.

>
> /* Only adding memory regions of RAM and ACPI */
> if (type != RANGE_RAM &&
> type != RANGE_ACPI &&
> type != RANGE_ACPI_NVS)
> continue;
>