On 2/13/2019 1:22 PM, James Morse wrote: > Hi guys, > > On 13/02/2019 11:15, Dave Young wrote: > > On 02/12/19 at 11:03pm, Kazuhito Hagio wrote: > >> On 2/12/2019 2:59 PM, Bhupesh Sharma wrote: > >>> BTW, in the makedumpfile enablement patch thread for ARMv8.2 LVA > >>> (which I sent out for 52-bit User space VA enablement) (see [0]), Kazu > >>> mentioned that the changes look necessary. > >>> > >>> [0]. http://lists.infradead.org/pipermail/kexec/2019-February/022431.html > >> > >>>>> The increased 'PTRS_PER_PGD' value for such cases needs to be then > >>>>> calculated as is done by the underlying kernel > > Aha! Nothing to do with which-bits-are-pfn in the tables... > > You need to know if the top level PGD is 512bytes or bigger. As we use a > kmem-cache the adjacent data could be some else's page tables. > > Is this really a problem though? You can't pull the user-space pgd pointers out > of no-where, you must have walked some task_struct and struct_mm's to find them. > In which case you would have the VMAs on hand to tell you if its in the mapped > user range. > > It would be good to avoid putting something arch-specific in here if we can at > all help it. > > > >>>>> (see > >>>>> 'arch/arm64/include/asm/pgtable-hwdef.h' for details): > >>>>> > >>>>> #define PTRS_PER_PGD (1 << (MAX_USER_VA_BITS - PGDIR_SHIFT)) > >> > >> Yes, this is the reason why makedumpfile needs the MAX_USER_VA_BITS. > >> It is used for pgd_index() also in makedumpfile to walk page tables. > >> > >> /* to find an entry in a page-table-directory */ > >> #define pgd_index(addr) (((addr) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1)) > > > > Since Dave mentioned crash tool does not need it, but crash should also > > travel the pg tables. The crash utility is always invoked with vmlinux, so it can read the vabits_user variable directly from vmcore, but makedumpfile can not. > > If this is really necessary it would be good to describe what will > > happen without the patch, eg. some user visible error from an actual test etc. > > Yes please, it would really help if there was a specific example we could discuss. With 52-bit user space and 48-bit kernel space configuration, makedumpfile will not be able to convert a virtual kernel address to a physical address, and fail to capture a dumpfile, because the pgd_index() will return a wrong index. But I don't have any suitable test system on hand, so have not tried the kernel configuration actually. If found, I'll try. Bhupesh, do you have any test result? Thanks, Kazu > > > Thanks, > > James _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec