----- Original Message -----
On Sat, Dec 3, 2016 at 1:59 AM, Rabin Vincent <rabin(a)rab.in>
wrote:
> 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.
Yes, mod will not work as I said earlier. Crash was exiting hence I
wanted to have quick workaround.
> So the first error should be fixed properly before attempting "mod".
What
> kernel version is this and what page size do to use?
4.4.20 kernel and page size is 16K
>
> 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
This appears to be correct info for my platform.
Thanks
If your kernel has a 16k page size and "help -m" shows 4096 as above,
then there's one major problem. The calculation of page size in mips.c
is based upon the difference between the the "swapper_pg_dir" symbol
and the next symbol above it:
crash> sym -n swapper_pg_dir
806d0000 (B) swapper_pg_dir
806d1000 (B) invalid_pte_table
crash>
What does the command above on your kernel show?
Dave
Sagar
>
> --
> Crash-utility mailing list
> Crash-utility(a)redhat.com
>
https://www.redhat.com/mailman/listinfo/crash-utility
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility