Re: [PATCH] ppc64: do page traversal if vmemmap_list not populated

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello lijiang,

On Mon, Sep 18, 2023 at 07:34:04PM +0800, lijiang wrote:
> Hi, Aditya
> Thank you for the patch.
> 
> On Mon, Sep 11, 2023 at 8:00 PM <crash-utility-request@xxxxxxxxxx> wrote:
> 
> > ...
> >
> > Currently 'crash-tool' fails on vmcore collected on upstream kernel on
> > PowerPC64 with the error:
> >
> >     crash: invalid kernel virtual address: 0  type: "first list entry
> >
> > Presently the address translation for vmemmap addresses is done using
> > the vmemmap_list. But with the below commit in Linux, vmemmap_list can
> > be empty, in case of Radix MMU on PowerPC64
> >
> >     368a0590d954: (powerpc/book3s64/vmemmap: switch radix to use a
> >     different vmemmap handling function)
> >
> > In case vmemmap_list is empty, then it's head is NULL, which crash tries
> > to access and fails due to accessing NULL.
> >
> > Instead of depending on 'vmemmap_list' for address translation for
> > vmemmap addresses, do a kernel pagetable walk to get the physical
> > address associated with given virtual address
> >
> > Reviewed-by: Hari Bathini <hbathini@xxxxxxxxxxxxx>
> > Signed-off-by: Aditya Gupta <adityag@xxxxxxxxxxxxx>
> >
> > ---
> >
> > Testing
> > =======
> >
> > Git tree with patch applied:
> > https://github.com/adi-g15-ibm/crash/tree/bugzilla-203296-list-v1
> >
> > This can be tested with '/proc/vmcore' as the vmcore, since makedumpfile
> >
> 
> Can you help to describe in detail how to reproduce this issue? Or does
> this require any kernel configs to be enabled first?  I did not reproduce
> the current issue with '/proc/kcore' or vmcore(via cp).
> 
> Test kernel commit: ce9ecca0238b ("Linux 6.6-rc2")
> 
> # ./crash /home/linux/vmlinux

Thanks for testing it.

This issue occurs only in case of Radix MMU.

Overall, these are all the requirements:
1. Upstream linux (master branch) (your commit will also work, ce9ecca0238b)
2. 'CONFIG_PPC_BOOK3S_64' should be 'y' in kernel config (this should be there
   in default configs)
3. Check in dmesg of the crashed kernel, if it prints 'hash-mmu' or
   'radix-mmu'. It should be 'radix-mmu'.

I guess, the system that was crashed might be using 'hash-mmu'.
 
> also fails in absence of 'vmemmap_list' in upstream linux

Yes, it will fail in Hash MMU case, as we depend on 'vmemmap_list' in that case,
as the virtual to physical address mapping is not available in page table, in
case of Hash-MMU.

Only in radix MMU case, it will still work, even if 'vmemmap_list' is removed,
since we have the mappings in kernel page table, which is used by this patch.

Let me know if the issue still doesn't reproduce even after using a system with
Radix MMU.

Thanks,
- Aditya Gupta

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux