diff mbox series

ppc64: add mmu information to vmcoreinfo

Message ID 20231023072612.50874-1-adityag@linux.ibm.com (mailing list archive)
State Accepted
Commit 36e826b568e412f61d68fedc02a67b4d8b7583cc
Headers show
Series ppc64: add mmu information to vmcoreinfo | expand

Checks

Context Check Description
snowpatch_ozlabs/github-powerpc_ppctests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_selftests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_sparse success Successfully ran 4 jobs.
snowpatch_ozlabs/github-powerpc_clang success Successfully ran 6 jobs.
snowpatch_ozlabs/github-powerpc_kernel_qemu success Successfully ran 23 jobs.

Commit Message

Aditya Gupta Oct. 23, 2023, 7:26 a.m. UTC
Since below commit, address mapping for vmemmap has changed for Radix
MMU, where address mapping is stored in kernel page table itself,
instead of earlier used 'vmemmap_list'.

    commit 368a0590d954 ("powerpc/book3s64/vmemmap: switch radix to use
    a different vmemmap handling function")

Hence with upstream kernel, in case of Radix MMU, makedumpfile fails to do
address translation for vmemmap addresses, as it depended on vmemmap_list,
which can now be empty.

While fixing the address translation in makedumpfile, it was identified
that currently makedumpfile cannot distinguish between Hash MMU and
Radix MMU, unless VMLINUX is passed with -x flag to makedumpfile.
And hence fails to assign offsets and shifts correctly (such as in L4 to
PGDIR offset calculation in makedumpfile).

For getting the MMU, makedumpfile uses `cur_cpu_spec.mmu_features`.

Add `cur_cpu_spec` symbol and offset of `mmu_features` in the
`cpu_spec` struct, to VMCOREINFO, so that makedumpfile can assign the
offsets correctly, without needing a VMLINUX.

Also, even along with `cur_cpu_spec->mmu_features` makedumpfile has to
depend on the 'MMU_FTR_TYPE_RADIX' flag in mmu_features, implying kernel
developers need to be cautious of changes to 'MMU_FTR_*' defines.

A more stable approach was suggested in the below thread by contributors:
https://lore.kernel.org/linuxppc-dev/20230920105706.853626-1-adityag@linux.ibm.com/

The suggestion was to add whether 'RADIX_MMU' is enabled in vmcoreinfo

This patch also implements the suggestion, by adding 'RADIX_MMU' in
vmcoreinfo, which makedumpfile can use to get whether the crashed system
had RADIX MMU (in which case 'NUMBER(RADIX_MMU)=1') or not (in which
case 'NUMBER(RADIX_MMU)=0')

Fixes: 368a0590d954 ("powerpc/book3s64/vmemmap: switch radix to use a different vmemmap handling function")
Reported-by: Sachin Sant <sachinp@linux.ibm.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
---
 arch/powerpc/kexec/core.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Michael Ellerman Oct. 27, 2023, 9:59 a.m. UTC | #1
On Mon, 23 Oct 2023 12:56:12 +0530, Aditya Gupta wrote:
> Since below commit, address mapping for vmemmap has changed for Radix
> MMU, where address mapping is stored in kernel page table itself,
> instead of earlier used 'vmemmap_list'.
> 
>     commit 368a0590d954 ("powerpc/book3s64/vmemmap: switch radix to use
>     a different vmemmap handling function")
> 
> [...]

Applied to powerpc/next.

[1/1] ppc64: add mmu information to vmcoreinfo
      https://git.kernel.org/powerpc/c/36e826b568e412f61d68fedc02a67b4d8b7583cc

cheers
Aditya Gupta Oct. 27, 2023, 5:51 p.m. UTC | #2
On Fri, Oct 27, 2023 at 08:59:56PM +1100, Michael Ellerman wrote:
> On Mon, 23 Oct 2023 12:56:12 +0530, Aditya Gupta wrote:
> > Since below commit, address mapping for vmemmap has changed for Radix
> > MMU, where address mapping is stored in kernel page table itself,
> > instead of earlier used 'vmemmap_list'.
> > 
> >     commit 368a0590d954 ("powerpc/book3s64/vmemmap: switch radix to use
> >     a different vmemmap handling function")
> > 
> > [...]
> 
> Applied to powerpc/next.
> 
> [1/1] ppc64: add mmu information to vmcoreinfo
>       https://git.kernel.org/powerpc/c/36e826b568e412f61d68fedc02a67b4d8b7583cc
> 
> cheers

Thank you for the update.
Aditya Gupta Oct. 27, 2023, 6:11 p.m. UTC | #3
On Fri, Oct 27, 2023 at 08:59:56PM +1100, Michael Ellerman wrote:
> On Mon, 23 Oct 2023 12:56:12 +0530, Aditya Gupta wrote:
> > Since below commit, address mapping for vmemmap has changed for Radix
> > MMU, where address mapping is stored in kernel page table itself,
> > instead of earlier used 'vmemmap_list'.
> > 
> >     commit 368a0590d954 ("powerpc/book3s64/vmemmap: switch radix to use
> >     a different vmemmap handling function")
> > 
> > [...]
> 
> Applied to powerpc/next.
> 
> [1/1] ppc64: add mmu information to vmcoreinfo
>       https://git.kernel.org/powerpc/c/36e826b568e412f61d68fedc02a67b4d8b7583cc
> 
> cheers

Thank you.
diff mbox series

Patch

diff --git a/arch/powerpc/kexec/core.c b/arch/powerpc/kexec/core.c
index de64c7962991..005269ac3244 100644
--- a/arch/powerpc/kexec/core.c
+++ b/arch/powerpc/kexec/core.c
@@ -74,6 +74,9 @@  void arch_crash_save_vmcoreinfo(void)
 	VMCOREINFO_STRUCT_SIZE(mmu_psize_def);
 	VMCOREINFO_OFFSET(mmu_psize_def, shift);
 #endif
+	VMCOREINFO_SYMBOL(cur_cpu_spec);
+	VMCOREINFO_OFFSET(cpu_spec, mmu_features);
+	vmcoreinfo_append_str("NUMBER(RADIX_MMU)=%d\n", early_radix_enabled());
 	vmcoreinfo_append_str("KERNELOFFSET=%lx\n", kaslr_offset());
 }