-----Original Message----- > Hi Lianbo, > > Thanks for your review. > > Cc Kazu, do you prefer to send out V9 immediately? Or wait for a days? I'm asking Bhupesh whether he can review, but you don't need to update this immediately, I think. It's ok after some more review. Thanks, Kazu > > Thanks, > Pingfan > On Sun, Jun 13, 2021 at 12:39 PM lijiang <lijiang@xxxxxxxxxx> wrote: > > > > Hi, Pingfan. > > Thank you for the update. > > On Wed, Jun 9, 2021 at 9:51 AM Pingfan Liu <piliu@xxxxxxxxxx> wrote: > > > > > > At present, we have the following important changes for arm64 memory > > > layout: > > > > > > -1. redesigned ARM64 kernel virtual memory layout and associated KASLR > > > support that was introduced in Linux 4.6. And NEW_VMEMMAP is used to > > > flag it. > > > -2. memory layout flipped just right before introducing 52-bits kernel. > > > -3. introducing of vabits_actual and phyvirt_offset in kernel > > > -4. removing phyvirt_offset. > > > > > > These changes have effects on PTOV()/VTOP() formula. So introducing a > > > dedicate field mmlayout_flags to record it. > > > > > > Among above, 2 and 3 are introduced closely, and are not distinguished > > > in current implement. And this patch also keep this practice and use > > > vabits_actual as a hint to flag mem flipped. > > > > > > Signed-off-by: Pingfan Liu <piliu@xxxxxxxxxx> > > > Cc: HAGIO KAZUHITO <k-hagio-ab@xxxxxxx> > > > Cc: Lianbo Jiang <lijiang@xxxxxxxxxx> > > > Cc: Bhupesh Sharma <bhupesh.sharma@xxxxxxxxxx> > > > To: crash-utility@xxxxxxxxxx > > > --- > > > arm64.c | 11 +++++++++++ > > > defs.h | 3 +++ > > > 2 files changed, 14 insertions(+) > > > > > > diff --git a/arm64.c b/arm64.c > > > index 8934961..98138b2 100644 > > > --- a/arm64.c > > > +++ b/arm64.c > > > @@ -560,6 +560,10 @@ arm64_dump_machdep_table(ulong arg) > > > fprintf(fp, "%sMACHDEP_BT_TEXT", others++ ? "|" : ""); > > > if (machdep->flags & NEW_VMEMMAP) > > > fprintf(fp, "%sNEW_VMEMMAP", others++ ? "|" : ""); > > > + if (machdep->flags & FLIPPED_VM) > > > + fprintf(fp, "%sFLIPPED_VM", others++ ? "|" : ""); > > > + if (machdep->flags & HAS_PHYSVIRT_OFFSET) > > > + fprintf(fp, "%sHAS_PHYSVIRT_OFFSET", others++ ? "|" : ""); > > > fprintf(fp, ")\n"); > > > > > > fprintf(fp, " kvbase: %lx\n", machdep->kvbase); > > > @@ -994,6 +998,7 @@ arm64_calc_physvirt_offset(void) > > > if (READMEM(pc->mfd, &physvirt_offset, sizeof(physvirt_offset), > > > sp->value, sp->value - > > > machdep->machspec->kimage_voffset) > 0) { > > > + machdep->flags |= HAS_PHYSVIRT_OFFSET; > > > ms->physvirt_offset = physvirt_offset; > > > } > > > } > > > @@ -3923,6 +3928,7 @@ arm64_calc_VA_BITS(void) > > > if (kernel_symbol_exists("vabits_actual")) { > > > if (pc->flags & PROC_KCORE) { > > > vabits_actual = symbol_value_from_proc_kallsyms("vabits_actual"); > > > + machdep->flags |= FLIPPED_VM; > > > if ((vabits_actual != BADVAL) && (READMEM(pc->mfd, &value, sizeof(ulong), > > > vabits_actual, KCORE_USE_VADDR) > 0)) { > > > if (CRASHDEBUG(1)) > > > @@ -3953,6 +3959,11 @@ arm64_calc_VA_BITS(void) > > > machdep->machspec->VA_BITS_ACTUAL = value; > > > machdep->machspec->VA_BITS = value; > > > machdep->machspec->VA_START = > _VA_START(machdep->machspec->VA_BITS_ACTUAL); > > > + /* > > > + * The mm flip commit is introduced before 52-bits VA, which is before > the > > > + * commit to export NUMBER(TCR_EL1_T1SZ) > > > + */ > > > + machdep->flags |= FLIPPED_VM; > > > } else if (machdep->machspec->VA_BITS_ACTUAL) { > > > machdep->machspec->VA_BITS = machdep->machspec->VA_BITS_ACTUAL; > > > machdep->machspec->VA_START = > _VA_START(machdep->machspec->VA_BITS_ACTUAL); > > > diff --git a/defs.h b/defs.h > > > index 396d61a..24d41e7 100644 > > > --- a/defs.h > > > +++ b/defs.h > > > @@ -3208,6 +3208,8 @@ typedef signed int s32; > > > #define NEW_VMEMMAP (0x80) > > > #define VM_L4_4K (0x100) > > > #define UNW_4_14 (0x200) > > > +#define FLIPPED_VM (0x400) > > > +#define HAS_PHYSVIRT_OFFSET (0x800) > > > > > > /* > > > * Get kimage_voffset from /dev/crash > > > @@ -3290,6 +3292,7 @@ struct arm64_pt_regs { > > > struct machine_specific { > > > ulong flags; > > > ulong userspace_top; > > > + ulong mmlayout_flags; > > > > The above variable should be removed, and the patch log also needs to > > be updated. > > > > Thanks. > > Lianbo > > > > > ulong page_offset; > > > ulong vmalloc_start_addr; > > > ulong vmalloc_end; > > > -- > > > 2.29.2 > > > > > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/crash-utility