[PATCH] makedumpfile: x86: Take care of init_level4_pgt rename in kernel

Pratyush Anand panand at redhat.com
Tue Aug 1 01:18:16 PDT 2017



On Tuesday 01 August 2017 01:29 PM, Pratyush Anand wrote:
> Hi Atsushi,
> 
> Thanks for the review.
> 
> On Tuesday 01 August 2017 01:11 PM, Atsushi Kumagai wrote:
>> Hello Pratyush,
>>
>> Thanks for your work.
>>
>>> On 07/30/17 at 10:11pm, Pratyush Anand wrote:
>>>> Following commit renamed init_level4_pgt to init_top_pgt in kernel.
>>>>
>>>> commit 65ade2f872b474fa8a04c2d397783350326634e6
>>>> Author: Kirill A. Shutemov <kirill.shutemov at linux.intel.com>
>>>> Date:   Tue Jun 6 14:31:27 2017 +0300
>>>>
>>>>      x86/boot/64: Rename init_level4_pgt and early_level4_pgt
>>>>
>>>> This patch takes care of above kernel modification in makedumpfile.
>>>>
>>>> Signed-off-by: Pratyush Anand <panand at redhat.com>
>>>> ---
>>>>   makedumpfile.c | 9 ++++++++-
>>>>   1 file changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/makedumpfile.c b/makedumpfile.c
>>>> index f85003a33551..e875f4bb539e 100644
>>>> --- a/makedumpfile.c
>>>> +++ b/makedumpfile.c
>>>> @@ -1486,6 +1486,8 @@ get_symbol_info(void)
>>>>       SYMBOL_INIT(_stext, "_stext");
>>>>       SYMBOL_INIT(swapper_pg_dir, "swapper_pg_dir");
>>>>       SYMBOL_INIT(init_level4_pgt, "init_level4_pgt");
>>>> +    if (SYMBOL(init_level4_pgt) == NOT_FOUND_SYMBOL)
>>>> +        SYMBOL_INIT(init_level4_pgt, "init_top_pgt");
>>>>       SYMBOL_INIT(vmlist, "vmlist");
>>>>       SYMBOL_INIT(vmap_area_list, "vmap_area_list");
>>>>       SYMBOL_INIT(node_online_map, "node_online_map");
>>>> @@ -2104,7 +2106,10 @@ write_vmcoreinfo_data(void)
>>>>       WRITE_SYMBOL("init_uts_ns", init_uts_ns);
>>>>       WRITE_SYMBOL("_stext", _stext);
>>>>       WRITE_SYMBOL("swapper_pg_dir", swapper_pg_dir);
>>>> -    WRITE_SYMBOL("init_level4_pgt", init_level4_pgt);
>>>> +    if (SYMBOL(init_level4_pgt) == NOT_FOUND_SYMBOL)
>>>> +        WRITE_SYMBOL("init_top_pgt", init_level4_pgt);
>>>> +    else
>>>> +        WRITE_SYMBOL("init_level4_pgt", init_level4_pgt);
>>
>> Whether the source is init_level4_pgt or init_top_pgt, the value will
>> be kept as SYMBOL(init_level4_pgt), so this conditional judgment is 
>> meaningless.
> 

Probably you meant that we read old and new symbol in SYMBOL(init_level4_pgt), 
so the above if statement will always be false, right?

Hummm..in that case vmcoreinfo will have bad info.

> IIUC,we will have above if condition true for v4.13 kernel and false for older 
> kernel, right? Now, if keep the name "init_level4_pgt" in a vmcore generated 
> for v4.13, would that be good, even though that would work conceptually?
> 
> I thought that generated vmcoreinfo from vmlinux should look like as being 
> encoded into kernel, so same name of symbol as in kernel.
> 
>>
>> I think what you want to do is like commit: ed46b6ad9, but I don't want to
>> introduce a new flag every time a symbol name is changed. So how about
>> unification into "init_level4_pgt" for backward compatibility ?
>> The old name can be read in all versions of makedumpfile.
> 

Still not sure, it it will be a good idea to have  "init_level4_pgt" in newer 
generated vmcoreinfo ...

> I agree, and so I kept "init_level4_pgt" for internal usage of makedumpfile. 
> But, IMHO any output file (like generated vmcoreinfo with -g) should have 
> matching kernel symbol.

-- 
Regards
Pratyush



More information about the kexec mailing list