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 <[email protected]> > Cc: Ingo Molnar <[email protected]> > Cc: Thomas Gleixner <[email protected]> > Cc: James Morse <[email protected]> > Cc: Will Deacon <[email protected]> > Cc: Michael Ellerman <[email protected]> > Cc: Paul Mackerras <[email protected]> > Cc: Benjamin Herrenschmidt <[email protected]> > Cc: Dave Anderson <[email protected]> > Cc: Kazuhito Hagio <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Signed-off-by: Bhupesh Sharma <[email protected]> > --- > 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 >
