----- Original Message ----- > Since Linux v4.1 (specifically, "MIPS: Rearrange PTE bits into fixed > positions.", commit be0c37c985eddc46d0d67543898c086f60460e2e), the PTE > bits are at fixed locations. Since these are only macros as in the > kernel, we aren't able to determine them from the vmlinux, so add an > explicit version check to handle them. Queued for crash-7.1.4: https://github.com/crash-utility/crash/commit/4602d53a0e4e01825492d1e9d02b851cb51ff98e Thanks, Dave > --- > mips.c | 43 ++++++++++++++++++++++++++----------------- > 1 file changed, 26 insertions(+), 17 deletions(-) > > diff --git a/mips.c b/mips.c > index 4b62d1e..a4fc8b6 100644 > --- a/mips.c > +++ b/mips.c > @@ -100,30 +100,39 @@ mips_cmd_mach(void) > static void > mips_init_page_flags(void) > { > - ulonglong cpu_options; > - int rixi; > ulong shift = 0; > - ulong addr; > > - addr = symbol_value("cpu_data") + > - MEMBER_OFFSET("cpuinfo_mips", "options"); > - readmem(addr, KVADDR, &cpu_options, sizeof(cpu_options), > - "cpu_data[0].options", FAULT_ON_ERROR); > + _PAGE_PRESENT = 1UL << shift++; > > - rixi = cpu_options & MIPS_CPU_RIXI; > + if (THIS_KERNEL_VERSION >= LINUX(4,1,0)) { > + _PAGE_WRITE = 1UL << shift++; > + _PAGE_ACCESSED = 1UL << shift++; > + _PAGE_MODIFIED = 1UL << shift++; > + _PAGE_NO_EXEC = 1UL << shift++; > + _PAGE_READ = _PAGE_NO_READ = 1UL << shift++; > + } else { > + ulonglong cpu_options; > + int rixi; > + ulong addr; > > - _PAGE_PRESENT = 1UL << shift++; > + addr = symbol_value("cpu_data") + > + MEMBER_OFFSET("cpuinfo_mips", "options"); > + readmem(addr, KVADDR, &cpu_options, sizeof(cpu_options), > + "cpu_data[0].options", FAULT_ON_ERROR); > > - if (!rixi) > - _PAGE_READ = 1UL << shift++; > + rixi = cpu_options & MIPS_CPU_RIXI; > > - _PAGE_WRITE = 1UL << shift++; > - _PAGE_ACCESSED = 1UL << shift++; > - _PAGE_MODIFIED = 1UL << shift++; > + if (!rixi) > + _PAGE_READ = 1UL << shift++; > > - if (rixi) { > - _PAGE_NO_EXEC = 1UL << shift++; > - _PAGE_NO_READ = 1UL << shift++; > + _PAGE_WRITE = 1UL << shift++; > + _PAGE_ACCESSED = 1UL << shift++; > + _PAGE_MODIFIED = 1UL << shift++; > + > + if (rixi) { > + _PAGE_NO_EXEC = 1UL << shift++; > + _PAGE_NO_READ = 1UL << shift++; > + } > } > > _PAGE_GLOBAL = 1UL << shift++; > -- > 1.7.10.4 > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility