----- Original Message -----
> The VMCOREINFO is primarily there for the user-space kdump and
makedumpfile
> facilities. Crash does check it occasionally, but can't depend upon it,
> because there are too many other dumpfile formats.
That is the reason that I insist on minimizing the number of VMCOREINFO
parameters. Adding redundant ones can cause confusion in the future.
Again, there is the longstanding kdump_sub_header.phys_base interface
created by makedumpfile, in which the phys_base was a fundamental reason
for creating the kdump_sub_header to begin with. In fact, the "version 1"
of the kdump_sub_header contained just two fields, the phys_base and the
dump level.
> >
> > Using readmem() or not is a matter of implementation.
> > I think that we can use READMEM(), instead of readmem(), in
> > arm64_readme_kernel_symbol(), which is solely used, at least at the
> > moment, in arm64_calc_phys_offset().
>
> I'm sure I don't understand. Calling READMEM() as opposed to readmem()
> would require the virtual-to-physical address translation to be done
> on the "memstart_addr" symbol.
Right, but as I said,
- we've already calculated kaslr_offset with derive_kaslr_offset() called by
symtab_init(), which is prior to machdep_init(PRE_GDB).
- we can determine the *real(runtime)* virtual address of "memstart_addr" by
<vaddr> = <vaddr of memstart_addr in vmlinux> + kaslr_offset
- then we will identify the physical address by
<paddr> = <vaddr> - <kimage_voffset>
- so why cannot we call READMEM(pc->readmem) here(arm64_calc_phys_offset)
at the end of machdep_init(PRE_GDB)?
pc->readmem will be initialized definitely before any machdep_init(*).
See what I mean?
Logically, I don't see any breakage of existing APIs/assumptions.
(So I said, it is a matter of implementation.)
I understand, but I don't see the need to have a special case for arm64.
The makedumpfile/crash phys_base interface exists, so it should continue
to be used.
> > If so, what about, say, VA_BITS which will presumably be
needed as
> > VMCOREINFO later for makedumpfile but is calculated for now in
> > crash utility?
>
> Makedumpfile may require VA_BITS, but it's pretty straight forward in crash
> because we have the symbol values from the vmlinux file. That being
> the case, if it's available in VMCOREINFO, it could be used as an
> alternative for compressed kdumps or kdump ELF vmcores.
I know another example: VMCOREINFO("KERNELOFFSET"), which is actually
equal to "kaslr_offset".
It exists on x86, but is not utilized by crash util.
Right, its value is not used, but kaslr_init() does check for its existence.
> > Please don't take me wrong. I, as an author of kdump
for arm64, just want
> > to understand what parameters and why we want to have.
>
> Right, although it's going to be kind of play-as-we-go. The crash utility is
> going to require kdump-ELF and makedumpfile to offer the the things that
> it needs, but kdump-ELF/makedumpfile may have its own requirements to generate
> the things that the crash utility needs. As far as I can tell, at a minimum,
> VA_BITS, kimage_voffset and PHYS_BASE would be required.
I'm not quite sure, but do you, as a maintainer of crash, expect those
parameters to be also appended for crash?
AFAICT at the moment, kimage_voffset and PHYS_BASE would be required by crash,
i.e., whatever is required for virtual-to-physical address translation.
Dave