[Crash-utility] [PATCH] x86_64: Make the conversion between 4level and 5level paging automatically

Dou Liyang douly.fnst at cn.fujitsu.com
Mon Jul 9 02:53:08 UTC 2018


Dear Dave,

At 07/06/2018 09:45 PM, Dave Anderson wrote:
> 
> 
> ----- Original Message -----
>> Currently, Crash only enable support for kernel-only 5-level page tables by
>> entering the command line option "--machdep vm=5level". Since Linux 4.17,
>> the Linux kernel can be both 4level and 5level page tables. This command line
>> can't work well for this.
>>
>> Using the "pgtable_l5_enabled" got from vmcore to detect whether the kernel
>> proper for 5 level page tables automatically.
> 
> Hello Dou,
> 
> Presumably by the time arch_crash_save_vmcoreinfo calls pgtable_l5_enabled(),
> things have been initialized up appropriately, and so this should work OK for
> kdump-generated vmcores.  But have you looked into how this should be accomplished
> for for live systems?  Since kernel commit 51be1335 reverts __pgtable_l5_enabled

I tested in live system, it didn't work, need use the "--machdep
vm=5level" like before.

> from being __initdata to __ro_after_init, would it be as simple as just reading
> __pgtable_l5_enabled at POST_RELOC time?

Yes, I agree, but, how can we read the '__pgtable_l5_enabled' in
crash. Is there a ready-made interface such as symbol_value() for SYMBOL
values?

And seems read at POST_RELOC time is late, it should be earlier than
PRE_GDB.

Thanks,
	dou.

> 
> Thanks,
>    Dave
> 
>> Signed-off-by: Dou Liyang <douly.fnst at cn.fujitsu.com>
>> ---
>>   x86_64.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/x86_64.c b/x86_64.c
>> index 6d1ae2f..be6164b 100644
>> --- a/x86_64.c
>> +++ b/x86_64.c
>> @@ -203,6 +203,10 @@ x86_64_init(int when)
>>   			machdep->machspec->kernel_image_size = dtol(string, QUIET, NULL);
>>   			free(string);
>>   		}
>> +		if ((string = pc->read_vmcoreinfo("NUMBER(pgtable_l5_enabled)"))) {
>> +			machdep->flags |= VM_5LEVEL;
>> +			free(string);
>> +		}
>>   		if (SADUMP_DUMPFILE() || QEMU_MEM_DUMP_NO_VMCOREINFO() ||
>>   		    VMSS_DUMPFILE())
>>   			/* Need for calculation of kaslr_offset and phys_base */
>> --
>> 2.14.3
>>
>>
>>
>>
> 
> 
> 





More information about the Crash-utility mailing list