On Sun, Dec 04, 2016 at 07:10:38AM -0800, Sagar Borikar wrote:
<readmem: 806d2c68, KVADDR, "modules", 4, (FOE),
868e5ec>
<read_kdump: addr: 806d2c68 paddr: 6d2c68 cnt: 4>
read_netdump: addr: 806d2c68 paddr: 6d2c68 cnt: 4 offset: 5dac68
GETBUF(416 -> 0)
please wait... (gathering module symbol data)module: c0bc9cc0
<readmem: c0bc9cc0, KVADDR, "module struct", 416,
(ROE|Q), 86b25e0>
<readmem: 82c30000, KVADDR, "pgd page", 16384, (FOE), 948a2a0>
<read_kdump: addr: 82c30000 paddr: 2c30000 cnt: 16384>
read_netdump: addr: 82c30000 paddr: 2c30000 cnt: 16384 offset: 31f8000
<readmem: 3018000, PHYSADDR, "page table", 16384, (FOE), 948e2a8>
<read_kdump: addr: 3018000 paddr: 3018000 cnt: 16384>
read_netdump: addr: 0 paddr: 3018000 cnt: 16384 offset: 35e0000
<read_kdump: addr: c0bc9cc0 paddr: 271e9cc0 cnt: 416>
read_netdump: READ_ERROR: offset not found for paddr: 271e9cc0
crash: read error: kernel virtual address: c0bc9cc0 type: "module struct"
Here's the error. Either 271e9cc0 is a valid physical address and the dump is
incomplete, or it's not and the page table translation is returning a bogus
physical address for c0bc9cc0.
To check the page table translation, use "vtop <addr>" (example below)
to see how crash comes to its result. You'll have to then manually walk
the page tables for this particular virtual address and verify that the
correct PGD and PTE entries are being read. It could be easier if use
vmalloc_to_page() and page_address() first in your kernel to print out
the correct physical address for some known vmalloc'd address.
crash> vtop c01050c0
VIRTUAL PHYSICAL
c01050c0 71550c0
SEGMENT: ksseg
PAGE DIRECTORY: 80540000
PGD: 805400c0 => 872b0000
PTE: 072b0104 => 071545ef
PAGE: 07154000
PTE PHYSICAL FLAGS
71545ef 7154000 (PRESENT|READ|WRITE|ACCESSED|MODIFIED|GLOBAL|VALID|NO_READ|DIRTY)
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
81038e60 7154000 0 0 1 40000000