I have recently sent a kernel patch upstream to add 'TCR_EL1.T1SZ' to vmcoreinfo for arm64 (see [0]), instead of VA_BITS_ACTUAL. 'crash' can read the 'TCR_EL1.T1SZ' value from vmcoreinfo [which indicates the size offset of the memory region addressed by TTBR1_EL1] and hence can be used for determining the vabits_actual value. [0].http://lists.infradead.org/pipermail/kexec/2019-November/023962.html Cc: Dave Anderson <anderson@xxxxxxxxxx> Cc: AKASHI Takahiro <takahiro.akashi@xxxxxxxxxx> Cc: Prabhakar Kushwaha <prabhakar.pkin@xxxxxxxxx> Cc: crash-utility@xxxxxxxxxx Signed-off-by: Bhupesh Sharma <bhsharma@xxxxxxxxxx> --- arm64.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/arm64.c b/arm64.c index af7147d24e20..083491331985 100644 --- a/arm64.c +++ b/arm64.c @@ -3856,8 +3856,17 @@ arm64_calc_VA_BITS(void) } else if (ACTIVE()) error(FATAL, "cannot determine VA_BITS_ACTUAL: please use /proc/kcore\n"); else { - if ((string = pc->read_vmcoreinfo("NUMBER(VA_BITS_ACTUAL)"))) { - value = atol(string); + if ((string = pc->read_vmcoreinfo("NUMBER(tcr_el1_t1sz)"))) { + /* See ARMv8 ARM for the description of + * TCR_EL1.T1SZ and how it can be used + * to calculate the vabits_actual + * supported by underlying kernel. + * + * Basically: + * vabits_actual = 64 - T1SZ; + */ + value = 64 - strtoll(string, NULL, 0); + fprintf(fp, "vmcoreinfo : vabits_actual: %ld\n", value); free(string); machdep->machspec->VA_BITS_ACTUAL = value; machdep->machspec->VA_BITS = value; -- 2.7.4 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility