[Makedumpfile Patch v3 2/7] initial(): call cach_init() a bit early
Atsushi Kumagai
ats-kumagai at wm.jp.nec.com
Wed Jul 19 23:54:12 PDT 2017
>Hi Atsushi,
>
>On Wednesday 19 July 2017 01:16 PM, Atsushi Kumagai wrote:
>> Hello Pratyush,
>>
>>> Call cach_init() before get_kcore_dump_loads(), because latter uses
>>> cache_search().
>>>
>>> Call path is like this :
>>> get_kcore_dump_loads() -> process_dump_load() -> vaddr_to_paddr() ->
>>> vtop4_x86_64() -> readmem() -> cache_search()
>>
>> I found that the current cach_init() is too early, cache_init() should be
>> called after fallback_to_current_page_size() for older kernel
>> which doesn't have VMCOREINFO.
>> Could you confirm that the patch below is fine with you ?
>
>Its fine and works.
Thanks, I'll merge this fix into v1.6.2.
Regards,
Atsushi Kumagai
>>
>> Thanks,
>> Atsushi Kumagai
>>
>> From: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com>
>> Date: Wed, 19 Jul 2017 15:05:58 +0900
>> Subject: [PATCH] Fix the regression caused by moving cache_init() earlier
>>
>> info->page_size should be set before calling cache_init() since it
>> allocates some buffers based on info->page_size. However, cache_init()
>> was moved before fallback_to_current_page_size() while it set
>> info->page_size for older kernel which doesn't have VMCOREINFO.
>>
>> This patch moves cache_init() after fallback_to_current_page_size()
>> and reverts the commit: b98e6e0d2a(sadump: set info->page_size before cache_init())
>>
>> Signed-off-by: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com>
>> ---
>> makedumpfile.c | 28 ++++++++++++++++------------
>> 1 file changed, 16 insertions(+), 12 deletions(-)
>>
>> diff --git a/makedumpfile.c b/makedumpfile.c
>> index a3f0697..f85003a 100644
>> --- a/makedumpfile.c
>> +++ b/makedumpfile.c
>> @@ -3905,15 +3905,6 @@ initial(void)
>> if (!get_value_for_old_linux())
>> return FALSE;
>>
>> - if (info->flag_sadump && !set_page_size(sadump_page_size()))
>> - return FALSE;
>> -
>> - if (!is_xen_memory() && !cache_init())
>> - return FALSE;
>> -
>> - if (info->flag_mem_usage && !get_kcore_dump_loads())
>> - return FALSE;
>> -
>> if (info->flag_refiltering) {
>> if (info->flag_elf_dumpfile) {
>> MSG("'-E' option is disable, ");
>> @@ -3936,6 +3927,9 @@ initial(void)
>> return FALSE;
>> }
>>
>> + if (!set_page_size(sadump_page_size()))
>> + return FALSE;
>> +
>> if (!sadump_initialize_bitmap_memory())
>> return FALSE;
>>
>> @@ -3949,9 +3943,7 @@ initial(void)
>> * postponed until debug information becomes
>> * available.
>> */
>> -
>> - } else if (!get_phys_base())
>> - return FALSE;
>> + }
>>
>> out:
>> if (!info->page_size) {
>> @@ -3962,6 +3954,18 @@ out:
>> if (!fallback_to_current_page_size())
>> return FALSE;
>> }
>> +
>> + if (!is_xen_memory() && !cache_init())
>> + return FALSE;
>> +
>> + if (info->flag_mem_usage && !get_kcore_dump_loads())
>> + return FALSE;
>> +
>> + if (!info->flag_refiltering && !info->flag_sadump) {
>> + if (!get_phys_base())
>> + return FALSE;
>> + }
>> +
>> if (!get_max_mapnr())
>> return FALSE;
>>
>>
>
>--
>Regards
>Pratyush
More information about the kexec
mailing list