Hi Bhupesh, -----Original Message----- > Right now user-space tools like 'makedumpfile' and 'crash' need to rely > on a best-guess method of determining value of 'MAX_PHYSMEM_BITS' > supported by underlying kernel. > > This value is used in user-space code to calculate the bit-space > required to store a section for SPARESMEM (similar to the existing > calculation method used in the kernel implementation): > > #define SECTIONS_SHIFT (MAX_PHYSMEM_BITS - SECTION_SIZE_BITS) > > Now, regressions have been reported in user-space utilities > like 'makedumpfile' and 'crash' on arm64, with the recently added > kernel support for 52-bit physical address space, as there is > no clear method of determining this value in user-space > (other than reading kernel CONFIG flags). > > As per suggestion from makedumpfile maintainer (Kazu), it makes more > sense to append 'MAX_PHYSMEM_BITS' to vmcoreinfo in the core code itself > rather than in arch-specific code, so that the user-space code for other > archs can also benefit from this addition to the vmcoreinfo and use it > as a standard way of determining 'SECTIONS_SHIFT' value in user-land. > > A reference 'makedumpfile' implementation which reads the > 'MAX_PHYSMEM_BITS' value from vmcoreinfo in a arch-independent fashion > is available here: > > [0]. https://github.com/bhupesh-sharma/makedumpfile/blob/remove-max-phys-mem-bit-v1/arch/ppc64.c#L471 > > Cc: Boris Petkov <bp@xxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: James Morse <james.morse@xxxxxxx> > Cc: Will Deacon <will.deacon@xxxxxxx> > Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx> > Cc: Paul Mackerras <paulus@xxxxxxxxx> > Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> > Cc: Dave Anderson <anderson@xxxxxxxxxx> > Cc: Kazuhito Hagio <k-hagio@xxxxxxxxxxxxx> > Cc: x86@xxxxxxxxxx > Cc: linuxppc-dev@xxxxxxxxxxxxxxxx > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Cc: kexec@xxxxxxxxxxxxxxxxxxx > Signed-off-by: Bhupesh Sharma <bhsharma@xxxxxxxxxx> > --- > kernel/crash_core.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/crash_core.c b/kernel/crash_core.c > index 093c9f917ed0..44b90368e183 100644 > --- a/kernel/crash_core.c > +++ b/kernel/crash_core.c > @@ -467,6 +467,7 @@ static int __init crash_save_vmcoreinfo_init(void) > #define PAGE_OFFLINE_MAPCOUNT_VALUE (~PG_offline) > VMCOREINFO_NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE); > #endif > + VMCOREINFO_NUMBER(MAX_PHYSMEM_BITS); Some architectures define MAX_PHYSMEM_BITS only with CONFIG_SPARSEMEM, so we need to move this to the #ifdef section that exports some mem_section things. Thanks! Kazu > > arch_crash_save_vmcoreinfo(); > update_vmcoreinfo_note(); > -- > 2.7.4 > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec