[Crash-utility] kernel module parsing failure - mips

Rabin Vincent rabin at rab.in
Sat Dec 3 09:59:51 UTC 2016


On Fri, Dec 02, 2016 at 04:06:20PM -0800, Sagar Borikar wrote:
> With 7.1.7, crash is working for MIPS when all drivers are embedded
> inside kernel.
> When I make the driver loadable and panic the kernel, crash doesn't
> locate some symbols correctly.
> 
> please wait... (gathering module symbol data)
> crash: invalid size request: 0  type: "pgd page"
> 
> debugged further and find  that PGD_ORDER provides incorrect number
> due to which the PGD_SIZE macro results in 0.
> 
> Just for fun, I replaced PGD_ORDER with 0(I know its incorrect) and it
> went ahead but couldn't run "mod" command successfully as it threw
> following error
> 
> crash> mod
> mod: cannot access vmalloc'd module memory

In order to access vmalloc'd memory we need interpret the page tables
correctly.  This isn't needed when the modules are built in since then
the memory will be in the direct-mapped kseg0 segment.  So the "mod"
failure is just a consequence of replacing PGD_ORDER with 0.

So the first error should be fixed properly before attempting "mod".  What
kernel version is this and what page size do to use?  

Try running the "help -m" and "mach" commands (you can skip module loading with
--no_modules to get to the crash> prompt) and check if the values for the
various page table sizes and bits match what your kernel is using.

 crash> help -m
 ...
           pagesize: 4096
          pageshift: 12
           pagemask: fffffffffffff000
         pageoffset: fff
        pgdir_shift: 22
       ptrs_per_pgd: 1024
       ptrs_per_pte: 1024
 ...


 crash-mips> mach
           PAGE SIZE: 4096
 
       _PAGE_PRESENT: 00000001
          _PAGE_READ: 00000002
         _PAGE_WRITE: 00000004
      _PAGE_ACCESSED: 00000008
      _PAGE_MODIFIED: 00000010
        _PAGE_GLOBAL: 00000020
         _PAGE_VALID: 00000040
         _PAGE_DIRTY: 00000080




More information about the Crash-utility mailing list