Hi Bhupesh, > -----Original Message----- > From: Bhupesh Sharma <bhsha...@redhat.com> > Sent: Thursday, June 4, 2020 2:05 AM > To: Kamlakant Patel <kamlaka...@marvell.com> > Cc: linux-arm-ker...@lists.infradead.org; x...@kernel.org; Mark Rutland > <mark.rutl...@arm.com>; Kazuhito Hagio <k-ha...@ab.jp.nec.com>; Steve > Capper <steve.cap...@arm.com>; Catalin Marinas > <catalin.mari...@arm.com>; Ard Biesheuvel <ard.biesheu...@linaro.org>; > ke...@lists.infradead.org; linux-kernel@vger.kernel.org; James Morse > <james.mo...@arm.com>; Dave Anderson <ander...@redhat.com>; > bhupesh.li...@gmail.com; Will Deacon <w...@kernel.org>; Ganapatrao Kulkarni > <gkulka...@marvell.com> > Subject: [EXT] Re: [PATCH v6 2/2] arm64/crash_core: Export TCR_EL1.T1SZ in > vmcoreinfo > > External Email > > ---------------------------------------------------------------------- > Hi Kamlakant, > > Many thanks for having a look at the patchset. > > On Wed, Jun 3, 2020 at 4:50 PM Kamlakant Patel <kamlaka...@marvell.com> > wrote: > > > > Hi Bhupesh, > > > > > -----Original Message----- > > > From: kexec <kexec-boun...@lists.infradead.org> On Behalf Of Bhupesh > > > Sharma > > > Sent: Thursday, May 14, 2020 12:23 AM > > > To: linux-arm-ker...@lists.infradead.org; x...@kernel.org > > > Cc: Mark Rutland <mark.rutl...@arm.com>; Kazuhito Hagio <k- > > > ha...@ab.jp.nec.com>; Steve Capper <steve.cap...@arm.com>; Catalin > > > Marinas <catalin.mari...@arm.com>; bhsha...@redhat.com; Ard > > > Biesheuvel <ard.biesheu...@linaro.org>; ke...@lists.infradead.org; > > > linux- ker...@vger.kernel.org; James Morse <james.mo...@arm.com>; > > > Dave Anderson <ander...@redhat.com>; bhupesh.li...@gmail.com; Will > > > Deacon <w...@kernel.org> > > > Subject: [PATCH v6 2/2] arm64/crash_core: Export TCR_EL1.T1SZ in > > > vmcoreinfo > > > > > > vabits_actual variable on arm64 indicates the actual VA space size, > > > and allows a single binary to support both 48-bit and 52-bit VA spaces. > > > > > > If the ARMv8.2-LVA optional feature is present, and we are running > > > with a 64KB page size; then it is possible to use 52-bits of address > > > space for both userspace and kernel addresses. However, any kernel > > > binary that supports 52-bit must also be able to fall back to 48-bit > > > at early boot time if the hardware feature is not present. > > > > > > Since TCR_EL1.T1SZ indicates the size offset of the memory region > > > addressed by > > > TTBR1_EL1 (and hence can be used for determining the vabits_actual > > > value) it makes more sense to export the same in vmcoreinfo rather > > > than vabits_actual variable, as the name of the variable can change > > > in future kernel versions, but the architectural constructs like > > > TCR_EL1.T1SZ can be used better to indicate intended specific fields to > > > user- > space. > > > > > > User-space utilities like makedumpfile and crash-utility, need to > > > read this value from vmcoreinfo for determining if a virtual address lies > > > in the > linear map range. > > > > > > While at it also add documentation for TCR_EL1.T1SZ variable being > > > added to vmcoreinfo. > > > > > > It indicates the size offset of the memory region addressed by > > > TTBR1_EL1 > > > > > > Cc: James Morse <james.mo...@arm.com> > > > Cc: Mark Rutland <mark.rutl...@arm.com> > > > Cc: Will Deacon <w...@kernel.org> > > > Cc: Steve Capper <steve.cap...@arm.com> > > > Cc: Catalin Marinas <catalin.mari...@arm.com> > > > Cc: Ard Biesheuvel <ard.biesheu...@linaro.org> > > > Cc: Dave Anderson <ander...@redhat.com> > > > Cc: Kazuhito Hagio <k-ha...@ab.jp.nec.com> > > > Cc: linux-arm-ker...@lists.infradead.org > > > Cc: linux-kernel@vger.kernel.org > > > Cc: ke...@lists.infradead.org > > > Tested-by: John Donnelly <john.p.donne...@oracle.com> > > > Signed-off-by: Bhupesh Sharma <bhsha...@redhat.com> > > > --- > > > Documentation/admin-guide/kdump/vmcoreinfo.rst | 11 +++++++++++ > > > arch/arm64/include/asm/pgtable-hwdef.h | 1 + > > > arch/arm64/kernel/crash_core.c | 10 ++++++++++ > > > 3 files changed, 22 insertions(+) > > > > > > diff --git a/Documentation/admin-guide/kdump/vmcoreinfo.rst > > > b/Documentation/admin-guide/kdump/vmcoreinfo.rst > > > index 2a632020f809..2baad0bfb09d 100644 > > > --- a/Documentation/admin-guide/kdump/vmcoreinfo.rst > > > +++ b/Documentation/admin-guide/kdump/vmcoreinfo.rst > > > @@ -404,6 +404,17 @@ KERNELPACMASK > > > The mask to extract the Pointer Authentication Code from a kernel > > > virtual address. > > > > > > +TCR_EL1.T1SZ > > > +------------ > > > + > > > +Indicates the size offset of the memory region addressed by TTBR1_EL1. > > > +The region size is 2^(64-T1SZ) bytes. > > > + > > > +TTBR1_EL1 is the table base address register specified by ARMv8-A > > > +architecture which is used to lookup the page-tables for the > > > +Virtual addresses in the higher VA range (refer to ARMv8 ARM > > > +document for more details). > > > + > > > arm > > > === > > > > > > diff --git a/arch/arm64/include/asm/pgtable-hwdef.h > > > b/arch/arm64/include/asm/pgtable-hwdef.h > > > index 6bf5e650da78..a1861af97ac9 100644 > > > --- a/arch/arm64/include/asm/pgtable-hwdef.h > > > +++ b/arch/arm64/include/asm/pgtable-hwdef.h > > > @@ -216,6 +216,7 @@ > > > #define TCR_TxSZ(x) (TCR_T0SZ(x) | TCR_T1SZ(x)) > > > #define TCR_TxSZ_WIDTH 6 > > > #define TCR_T0SZ_MASK (((UL(1) << TCR_TxSZ_WIDTH) - 1) << > > > TCR_T0SZ_OFFSET) > > > +#define TCR_T1SZ_MASK (((UL(1) << TCR_TxSZ_WIDTH) - 1) << > > > TCR_T1SZ_OFFSET) > > > > > > #define TCR_EPD0_SHIFT 7 > > > #define TCR_EPD0_MASK (UL(1) << TCR_EPD0_SHIFT) > > > diff --git a/arch/arm64/kernel/crash_core.c > > > b/arch/arm64/kernel/crash_core.c index 1f646b07e3e9..314391a156ee > > > 100644 > > > --- a/arch/arm64/kernel/crash_core.c > > > +++ b/arch/arm64/kernel/crash_core.c > > > @@ -7,6 +7,14 @@ > > > #include <linux/crash_core.h> > > > #include <asm/cpufeature.h> > > > #include <asm/memory.h> > > > +#include <asm/pgtable-hwdef.h> > > > + > > > +static inline u64 get_tcr_el1_t1sz(void); > > > + > > > +static inline u64 get_tcr_el1_t1sz(void) { > > > + return (read_sysreg(tcr_el1) & TCR_T1SZ_MASK) >> > > > +TCR_T1SZ_OFFSET; } > > > > > > void arch_crash_save_vmcoreinfo(void) { @@ -16,6 +24,8 @@ void > > > arch_crash_save_vmcoreinfo(void) > > > kimage_voffset); > > > vmcoreinfo_append_str("NUMBER(PHYS_OFFSET)=0x%llx\n", > > > PHYS_OFFSET); > > > + vmcoreinfo_append_str("NUMBER(TCR_EL1_T1SZ)=0x%llx\n", > > > + get_tcr_el1_t1sz()); > > I tested this patch on top of upstream kernel v5.7 and I am getting "crash: > cannot determine VA_BITS_ACTUAL" error with crash tool. > > I looked into crash-utility source and it is expecting tcr_el1_t1sz not > TCR_EL1_T1SZ. > > Could you please check. > > Indeed. As per James comments on the v5 (see [1]) where he suggested > converting ttcr_el1_t1sz into TCR_EL1_T1SZ, I made the change in v6 > accordingly. > > This time I haven't sent out the v6 userspace changes > (makedumpfile/crash-utility) upstream first, since we are waiting for kernel > changes to be accepted first, as we have seen in the past that while the > userspace patches have been accepted, the kernel patches required a respin > cycle, thus leading to inconsistencies, as you also pointed out with > crash-utility. > > If you want, for your local testing, I can share my github branch where I have > kept the crash-utility v6 patchset ready. Please let me know. > > [1]. https://urldefense.proofpoint.com/v2/url?u=https- > 3A__lore.kernel.org_linuxppc-2Ddev_63d6e63c-2D7218-2Dd2dd-2D8767- > 2D4464be83603f- > 40arm.com_&d=DwIBaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=XecQZQJWhG6- > mN8sWxffFOgUXg4irGP3Sjuy6RxdacQ&m=ijR8vEafG_QGTKYX2oI- > SvfFsY4pPou6tvtrnxRoloo&s=zJmo3qbm2XfnKbrUqJPNN5o6PJqER9OzltwgS4aTa > -k&e= Thanks for clarifying. I made userspace changes accordingly and tested and it works fine. We will be wait for your userspace patch.
Tested-by: Kamlakant Patel <kamlaka...@marvell.com> Thanks, Kamlakant Patel > > Thanks, > Bhupesh > > > > > > Thanks, > > Kamlakant Patel > > > vmcoreinfo_append_str("KERNELOFFSET=%lx\n", kaslr_offset()); > > > vmcoreinfo_append_str("NUMBER(KERNELPACMASK)=0x%llx\n", > > > > > > system_supports_address_auth() ? > > > -- > > > 2.7.4 > > > > > > > > > _______________________________________________ > > > kexec mailing list > > > ke...@lists.infradead.org > > > https://urldefense.proofpoint.com/v2/url?u=http- > > > 3A__lists.infradead.org_mailman_listinfo_kexec&d=DwICAg&c=nKjWec2b6R > > > 0m > > > OyPaz7xtfQ&r=XecQZQJWhG6- > > > > mN8sWxffFOgUXg4irGP3Sjuy6RxdacQ&m=oeLdIVaWScimdfEc4dNhRI0tT24IgzG > > > 7LkpAE5P11JQ&s=LLjHpz349DuDtORX4xywCxzbGUOagoq4JXosStycqI4&e= > >