On 2023/05/28 14:43, Qiwu.Chen wrote:
Dear Mantainers,
I find there is an inevitable problem for*linux-5.x* ARM64 kdump that the error
"page excluded: kernel virtual address: xxx" will be occured when read the
address of *ext4_super_block *for ext4 filesystem in latest crash utility debugging
enviroment.
1) Here's my reproduce steps:
crash64> mount
MOUNT SUPERBLK TYPE DEVNAME DIRNAME
ffff000001e65180 ffff000001c1c000 rootfs none /
ffff00002ea66000 *ffff00000288e000 *ext4 /dev/root /
crash64> struct super_block.s_fs_info -x ffff00000288e000
s_fs_info = 0xffff000002885000,
crash64> struct ext4_sb_info.s_es -x 0xffff000002885000
s_es = 0xffff0000043c2400,
crash64> struct ext4_sb_info.s_es -x 0xffff0000043c2400
struct: page excluded: kernel virtual address: ffff0000043c2400 type:
"gdb_readmem_callback"
crash64> rd 0xffff0000043c2400
rd: page excluded: kernel virtual address: ffff0000043c2400 type: "64-bit
KVADDR"
It looks like it was just excluded by makedumpfile...
You can check the dump level with "help -D":
crash> help -D
...
dump_level: 31 (0x1f)
(DUMP_EXCLUDE_ZERO|DUMP_EXCLUDE_CACHE|DUMP_EXCLUDE_CACHE_PRI|DUMP_EXCLUDE_USER_DATA|DUMP_EXCLUDE_FREE)
It seems that it's a buffer page and can be excluded depending on
the dump level above.
struct ext4_super_block *s_es; /* Pointer to the super block in the buffer */
I can also see a similar message with a dumpfile captured by
"makedumpfile -d 31" on x86_64 though.
crash> ext4_sb_info.s_es 0xffff8f394279e000
s_es = 0xffff8f3844c37400,
crash> rd 0xffff8f3844c37400
rd: page excluded: kernel virtual address: ffff8f3844c37400 type: "64-bit
KVADDR"
Thanks,
Kazu
> crash64> kmem -p 0xffff0000043c2400
> PAGE PHYSICAL MAPPING INDEX CNT FLAGS
> *fffffc000010f080 *443c2000 ffff000002f93af0 0 2 ffff00000022036
referenced,uptodate,lru,active,private,mappedtodisk
> crash64> vtop 0xffff0000043c2400
> VIRTUAL PHYSICAL
> ffff0000043c2400 443c2400
>
> PAGE DIRECTORY: ffff80001163b000
> PGD: ffff80001163b000 => 180000007fff9803
> PUD: ffff00003fff9000 => 180000007fff8803
> PMD: ffff00003fff8108 => 180000007ffe0803
> PTE: ffff00003ffe0e10 => 680000443c2f07
> PAGE: 443c2000
>
> PTE PHYSICAL FLAGS
> 680000443c2f07 443c2000 (VALID|SHARED|AF|NG|PXN|UXN)
>
> PAGE PHYSICAL MAPPING INDEX CNT FLAGS
> fffffc000010f080 443c2000 ffff000002f93af0 0 2 ffff00000022036
referenced,uptodate,lru,active,private,mappedtodisk
>
>
> 2) Here's the kernel virtual kernel memory layout for my tested arm64 kernel
version 5.15, we can see 0xffff0000043c2400 is in the kernel linear memory region :
>
> [ 0.000000] Virtual kernel memory layout:
> [ 0.000000] modules : 0xffff800008000000 - 0xffff800010000000 ( 128 MB)
> [ 0.000000] vmalloc : 0xffff800010000000 - 0xfffffbfff0000000 (126975 GB)
> [ 0.000000] .text : 0xffff800010000000 - 0xffff8000111a0000 ( 18048 KB)
> [ 0.000000] .init : 0xffff800011640000 - 0xffff800011760000 ( 1152 KB)
> [ 0.000000] .rodata : 0xffff8000111a0000 - 0xffff800011636000 ( 4696 KB)
> [ 0.000000] .data : 0xffff800011760000 - 0xffff800011902200 ( 1673 KB)
> [ 0.000000] .bss : 0xffff800011902200 - 0xffff8000119c6fb0 ( 788 KB)
> [ 0.000000] fixed : 0xfffffbfffdbf9000 - 0xfffffbfffe000000 ( 4124 KB)
> [ 0.000000] PCI I/O : 0xfffffbfffe800000 - 0xfffffbffff800000 ( 16 MB)
> [ 0.000000] vmemmap : 0xfffffc0000000000 - 0xfffffe0000000000 ( 2048 GB
maximum)
> [ 0.000000] 0xfffffc0000000000 - 0xfffffc0001000000 ( 16 MB
actual)
> [ 0.000000] *memory : 0xffff000000000000 - 0xffff000040000000 * ( 1024 MB)
> [ 0.000000] PAGE_OFFSET : 0xffff000000000000
> [ 0.000000] KIMAGE_VADDR : 0xffff800010000000
> [ 0.000000] kimage_voffset : 0xffff7fffcfe00000
> [ 0.000000] PHYS_OFFSET : 0x40000000
> [ 0.000000] start memory : 0x40000000
>
>
> I have no idea whether this problem is something wrong with crash utility. Could
anybody please help this?
>
> Thanks
>
>
>
> --
> Crash-utility mailing list
> Crash-utility(a)redhat.com
>
https://listman.redhat.com/mailman/listinfo/crash-utility
> Contribution Guidelines:
https://github.com/crash-utility/crash/wiki